@jerome-benoit/sap-ai-provider 4.6.5 → 4.6.6

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 (21) hide show
  1. package/dist/{chunk-RIDFTJHB.js → chunk-26WNWERS.js} +5 -5
  2. package/dist/chunk-26WNWERS.js.map +1 -0
  3. package/dist/{chunk-IW3HT2O2.js → chunk-NXIKTWY3.js} +3 -3
  4. package/dist/{chunk-MUVZG52Z.js → chunk-OQIELEJP.js} +2 -2
  5. package/dist/{chunk-DVRCVX3D.js → chunk-SWBHSRPT.js} +2 -2
  6. package/dist/{foundation-models-embedding-model-strategy-LVCLPX77.js → foundation-models-embedding-model-strategy-FVVUOPNF.js} +4 -4
  7. package/dist/{foundation-models-language-model-strategy-PZMQYE3T.js → foundation-models-language-model-strategy-WNNDNZNZ.js} +4 -4
  8. package/dist/index.cjs +3 -3
  9. package/dist/index.cjs.map +1 -1
  10. package/dist/index.js +5 -5
  11. package/dist/{orchestration-embedding-model-strategy-SJ6AR4CA.js → orchestration-embedding-model-strategy-HV7ACKOY.js} +4 -4
  12. package/dist/{orchestration-language-model-strategy-B36B6QYQ.js → orchestration-language-model-strategy-GIWRWQNG.js} +4 -4
  13. package/package.json +1 -1
  14. package/dist/chunk-RIDFTJHB.js.map +0 -1
  15. /package/dist/{chunk-IW3HT2O2.js.map → chunk-NXIKTWY3.js.map} +0 -0
  16. /package/dist/{chunk-MUVZG52Z.js.map → chunk-OQIELEJP.js.map} +0 -0
  17. /package/dist/{chunk-DVRCVX3D.js.map → chunk-SWBHSRPT.js.map} +0 -0
  18. /package/dist/{foundation-models-embedding-model-strategy-LVCLPX77.js.map → foundation-models-embedding-model-strategy-FVVUOPNF.js.map} +0 -0
  19. /package/dist/{foundation-models-language-model-strategy-PZMQYE3T.js.map → foundation-models-language-model-strategy-WNNDNZNZ.js.map} +0 -0
  20. /package/dist/{orchestration-embedding-model-strategy-SJ6AR4CA.js.map → orchestration-embedding-model-strategy-HV7ACKOY.js.map} +0 -0
  21. /package/dist/{orchestration-language-model-strategy-B36B6QYQ.js.map → orchestration-language-model-strategy-GIWRWQNG.js.map} +0 -0
@@ -9,7 +9,7 @@ import {
9
9
  createAISDKRequestBodySummary,
10
10
  createStreamTransformer,
11
11
  mapToolChoice
12
- } from "./chunk-MUVZG52Z.js";
12
+ } from "./chunk-OQIELEJP.js";
13
13
  import {
14
14
  VERSION,
15
15
  convertToAISDKError,
@@ -17,7 +17,7 @@ import {
17
17
  isPrefillError,
18
18
  normalizeHeaders,
19
19
  sapAILanguageModelProviderOptions
20
- } from "./chunk-DVRCVX3D.js";
20
+ } from "./chunk-SWBHSRPT.js";
21
21
 
22
22
  // src/base-language-model-strategy.ts
23
23
  import { parseProviderOptions } from "@ai-sdk/provider-utils";
@@ -61,7 +61,7 @@ var BaseLanguageModelStrategy = class {
61
61
  } catch (error) {
62
62
  if (this.shouldRetryWithoutPrefill(error, settings, options)) {
63
63
  const retryPrompt = this.stripTrailingAssistantMessages(options.prompt);
64
- if (retryPrompt.length > 0 && retryPrompt.at(-1)?.role === "user") {
64
+ if (retryPrompt.length > 0) {
65
65
  return this.doGenerate(config, settings, {
66
66
  ...options,
67
67
  prompt: retryPrompt
@@ -119,7 +119,7 @@ var BaseLanguageModelStrategy = class {
119
119
  } catch (error) {
120
120
  if (this.shouldRetryWithoutPrefill(error, settings, options)) {
121
121
  const retryPrompt = this.stripTrailingAssistantMessages(options.prompt);
122
- if (retryPrompt.length > 0 && retryPrompt.at(-1)?.role === "user") {
122
+ if (retryPrompt.length > 0) {
123
123
  return this.doStream(config, settings, {
124
124
  ...options,
125
125
  prompt: retryPrompt
@@ -232,4 +232,4 @@ var BaseLanguageModelStrategy = class {
232
232
  export {
233
233
  BaseLanguageModelStrategy
234
234
  };
235
- //# sourceMappingURL=chunk-RIDFTJHB.js.map
235
+ //# sourceMappingURL=chunk-26WNWERS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/base-language-model-strategy.ts"],"sourcesContent":["/** Base class for language model strategies using the Template Method pattern. */\nimport type {\n LanguageModelV3CallOptions,\n LanguageModelV3GenerateResult,\n LanguageModelV3StreamResult,\n SharedV3Warning,\n} from \"@ai-sdk/provider\";\nimport type { ChatMessage } from \"@sap-ai-sdk/orchestration\";\n\nimport { parseProviderOptions } from \"@ai-sdk/provider-utils\";\n\nimport type { SAPAIModelSettings } from \"./sap-ai-settings.js\";\nimport type { LanguageModelAPIStrategy, LanguageModelStrategyConfig } from \"./sap-ai-strategy.js\";\n\nimport { convertToSAPMessages } from \"./convert-to-sap-messages.js\";\nimport { convertToAISDKError, isPrefillError, normalizeHeaders } from \"./sap-ai-error.js\";\nimport { getProviderName, sapAILanguageModelProviderOptions } from \"./sap-ai-provider-options.js\";\nimport {\n buildGenerateResult,\n buildModelParams,\n createAISDKRequestBodySummary,\n createStreamTransformer,\n mapToolChoice,\n type ParamMapping,\n type SAPToolChoice,\n type SDKCitation,\n type SDKResponse,\n type SDKStreamChunk,\n type SDKTokenUsage,\n StreamIdGenerator,\n} from \"./strategy-utils.js\";\nimport { VERSION } from \"./version.js\";\n\n/**\n * Result of building common parts for a language model request.\n * @template TMessages - The message array type (e.g., `ChatMessage[]`, `AzureOpenAiChatCompletionRequestMessage[]`)\n * @template TToolChoice - The tool choice type (e.g., `SAPToolChoice`)\n * @internal\n */\nexport interface CommonBuildResult<TMessages extends unknown[] = unknown[], TToolChoice = unknown> {\n readonly messages: TMessages;\n readonly modelParams: Record<string, unknown>;\n readonly providerName: string;\n readonly sapOptions: Record<string, unknown> | undefined;\n readonly toolChoice: TToolChoice;\n readonly warnings: SharedV3Warning[];\n}\n\n/**\n * Stream response shape returned by executeStreamCall.\n * @internal\n */\nexport interface StreamCallResponse {\n readonly getCitations?: () => SDKCitation[] | undefined;\n readonly getFinishReason: () => null | string | undefined;\n readonly getIntermediateFailures?: () => undefined | unknown[];\n readonly getTokenUsage: () => null | SDKTokenUsage | undefined;\n readonly responseHeaders?: Record<string, string>;\n /** Server-provided completion ID extracted from _data, if available. */\n readonly responseId?: string;\n readonly stream: AsyncIterable<SDKStreamChunk>;\n}\n\n/**\n * Abstract base class for language model strategies using the Template Method pattern.\n * @template TClient - The SDK client type (e.g., AzureOpenAiChatClient, OrchestrationClient).\n * @template TRequest - The API request type (e.g., AzureOpenAiChatCompletionParameters).\n * @template TSettings - The model settings type extending SAPAIModelSettings.\n * @internal\n */\nexport abstract class BaseLanguageModelStrategy<\n TClient,\n TRequest,\n TSettings extends SAPAIModelSettings = SAPAIModelSettings,\n> implements LanguageModelAPIStrategy<TSettings> {\n /**\n * Common parameter mappings for language model APIs.\n * @internal\n */\n static readonly COMMON_PARAM_MAPPINGS: readonly ParamMapping[] = [\n { camelCaseKey: \"maxTokens\", optionKey: \"maxOutputTokens\", outputKey: \"max_tokens\" },\n { camelCaseKey: \"temperature\", optionKey: \"temperature\", outputKey: \"temperature\" },\n { camelCaseKey: \"topP\", optionKey: \"topP\", outputKey: \"top_p\" },\n {\n camelCaseKey: \"frequencyPenalty\",\n optionKey: \"frequencyPenalty\",\n outputKey: \"frequency_penalty\",\n },\n {\n camelCaseKey: \"presencePenalty\",\n optionKey: \"presencePenalty\",\n outputKey: \"presence_penalty\",\n },\n { camelCaseKey: \"seed\", optionKey: \"seed\", outputKey: \"seed\" },\n { camelCaseKey: \"parallel_tool_calls\", outputKey: \"parallel_tool_calls\" },\n ] as const;\n\n async doGenerate(\n config: LanguageModelStrategyConfig,\n settings: TSettings,\n options: LanguageModelV3CallOptions,\n ): Promise<LanguageModelV3GenerateResult> {\n try {\n const commonParts = await this.buildCommonParts(config, settings, options);\n const { request, warnings } = this.buildRequest(config, settings, options, commonParts);\n\n const client = this.createClient(config, settings, commonParts);\n\n const response = await this.executeApiCall(client, request, options.abortSignal ?? undefined);\n\n return buildGenerateResult({\n modelId: config.modelId,\n providerName: commonParts.providerName,\n requestBody: request,\n response,\n responseHeaders: normalizeHeaders(response.rawResponse.headers),\n version: VERSION,\n warnings: [...commonParts.warnings, ...warnings],\n });\n } catch (error) {\n if (this.shouldRetryWithoutPrefill(error, settings, options)) {\n const retryPrompt = this.stripTrailingAssistantMessages(options.prompt);\n if (retryPrompt.length > 0) {\n return this.doGenerate(config, settings, {\n ...options,\n prompt: retryPrompt,\n });\n }\n }\n throw convertToAISDKError(error, {\n operation: \"doGenerate\",\n requestBody: createAISDKRequestBodySummary(options),\n url: this.getUrl(),\n });\n }\n }\n\n async doStream(\n config: LanguageModelStrategyConfig,\n settings: TSettings,\n options: LanguageModelV3CallOptions,\n ): Promise<LanguageModelV3StreamResult> {\n try {\n const commonParts = await this.buildCommonParts(config, settings, options);\n const { request, warnings } = this.buildRequest(config, settings, options, commonParts);\n\n const client = this.createClient(config, settings, commonParts);\n\n const streamResponse = await this.executeStreamCall(\n client,\n request,\n options.abortSignal ?? undefined,\n settings,\n );\n\n const idGenerator = new StreamIdGenerator();\n const responseId = streamResponse.responseId ?? idGenerator.generateResponseId();\n\n const streamWarnings = this.collectStreamWarnings(settings, commonParts.sapOptions);\n\n const transformedStream = createStreamTransformer({\n convertToAISDKError,\n idGenerator,\n includeRawChunks: options.includeRawChunks ?? false,\n modelId: config.modelId,\n options,\n providerName: commonParts.providerName,\n responseHeaders: streamResponse.responseHeaders,\n responseId,\n sdkStream: streamResponse.stream,\n streamResponseGetCitations: streamResponse.getCitations,\n streamResponseGetFinishReason: streamResponse.getFinishReason,\n streamResponseGetIntermediateFailures: streamResponse.getIntermediateFailures,\n streamResponseGetTokenUsage: streamResponse.getTokenUsage,\n url: this.getUrl(),\n version: VERSION,\n warnings: [...commonParts.warnings, ...warnings, ...streamWarnings],\n });\n\n return {\n request: {\n body: request,\n },\n response: {\n headers: streamResponse.responseHeaders,\n },\n stream: transformedStream,\n };\n } catch (error) {\n if (this.shouldRetryWithoutPrefill(error, settings, options)) {\n const retryPrompt = this.stripTrailingAssistantMessages(options.prompt);\n if (retryPrompt.length > 0) {\n return this.doStream(config, settings, {\n ...options,\n prompt: retryPrompt,\n });\n }\n }\n throw convertToAISDKError(error, {\n operation: \"doStream\",\n requestBody: createAISDKRequestBodySummary(options),\n url: this.getUrl(),\n });\n }\n }\n\n /**\n * Builds common parts shared between doGenerate and doStream.\n * @param config - Strategy configuration.\n * @param settings - Model settings.\n * @param options - AI SDK call options.\n * @returns Common build result with typed messages and tool choice.\n * @internal\n */\n protected async buildCommonParts(\n config: LanguageModelStrategyConfig,\n settings: TSettings,\n options: LanguageModelV3CallOptions,\n ): Promise<CommonBuildResult<ChatMessage[], SAPToolChoice | undefined>> {\n const providerName = getProviderName(config.provider);\n\n const sapOptions = await parseProviderOptions({\n provider: providerName,\n providerOptions: options.providerOptions,\n schema: sapAILanguageModelProviderOptions,\n });\n\n const warnings: SharedV3Warning[] = [];\n\n const messages = convertToSAPMessages(options.prompt, {\n escapeTemplatePlaceholders: this.getEscapeTemplatePlaceholders(sapOptions, settings),\n includeReasoning: this.getIncludeReasoning(sapOptions, settings),\n });\n\n const { modelParams, warnings: paramWarnings } = buildModelParams({\n options,\n paramMappings: this.getParamMappings(),\n providerModelParams: sapOptions?.modelParams as Record<string, unknown> | undefined,\n settingsModelParams: settings.modelParams as Record<string, unknown> | undefined,\n });\n warnings.push(...paramWarnings);\n\n const toolChoice = mapToolChoice(options.toolChoice);\n\n return {\n messages,\n modelParams,\n providerName,\n sapOptions,\n toolChoice,\n warnings,\n };\n }\n\n /**\n * Builds the API-specific request body.\n * @param config - Strategy configuration.\n * @param settings - Model settings.\n * @param options - AI SDK call options.\n * @param commonParts - Common build result from base class.\n * @returns Request body and accumulated warnings.\n * @internal\n */\n protected abstract buildRequest(\n config: LanguageModelStrategyConfig,\n settings: TSettings,\n options: LanguageModelV3CallOptions,\n commonParts: CommonBuildResult<ChatMessage[], SAPToolChoice | undefined>,\n ): { readonly request: TRequest; readonly warnings: SharedV3Warning[] };\n\n /**\n * Collects stream-specific warnings.\n * Override in subclasses to add API-specific streaming warnings.\n * @param _settings - Model settings (unused in base implementation).\n * @param _sapOptions - Provider options (unused in base implementation).\n * @returns Array of warnings for streaming operations.\n * @internal\n */\n protected collectStreamWarnings(\n _settings: TSettings,\n _sapOptions?: Record<string, unknown>,\n ): SharedV3Warning[] {\n return [];\n }\n\n /**\n * Creates the appropriate SDK client for this API.\n * @param config - Strategy configuration.\n * @param settings - Model settings.\n * @param commonParts - Common build result (messages, options, etc.).\n * @returns SDK client instance.\n * @internal\n */\n protected abstract createClient(\n config: LanguageModelStrategyConfig,\n settings: TSettings,\n commonParts: CommonBuildResult<ChatMessage[], SAPToolChoice | undefined>,\n ): TClient;\n\n /**\n * Executes the non-streaming API call.\n * @param client - SDK client instance.\n * @param request - Request body.\n * @param abortSignal - Optional abort signal.\n * @returns SDK response.\n * @internal\n */\n protected abstract executeApiCall(\n client: TClient,\n request: TRequest,\n abortSignal: AbortSignal | undefined,\n ): Promise<SDKResponse>;\n\n /**\n * Executes the streaming API call.\n * @param client - SDK client instance.\n * @param request - Request body.\n * @param abortSignal - Optional abort signal.\n * @param settings - Model settings for API-specific stream options.\n * @returns Stream response with accessors.\n * @internal\n */\n protected abstract executeStreamCall(\n client: TClient,\n request: TRequest,\n abortSignal: AbortSignal | undefined,\n settings: TSettings,\n ): Promise<StreamCallResponse>;\n\n /**\n * Returns whether to escape template placeholders for this API.\n * @param _sapOptions - Parsed provider options (unused in base implementation).\n * @param _settings - Model settings (unused in base implementation).\n * @returns false by default; Orchestration strategy overrides to return true.\n * @internal\n */\n protected getEscapeTemplatePlaceholders(\n _sapOptions: Record<string, unknown> | undefined,\n _settings: TSettings,\n ): boolean {\n return false;\n }\n\n /**\n * Returns whether to include reasoning in the response.\n * @param sapOptions - Parsed provider options.\n * @param settings - Model settings.\n * @returns Whether to include reasoning (checks sapOptions then settings, defaults to false).\n * @internal\n */\n protected getIncludeReasoning(\n sapOptions: Record<string, unknown> | undefined,\n settings: TSettings,\n ): boolean {\n return (\n (sapOptions?.includeReasoning as boolean | undefined) ??\n (settings as SAPAIModelSettings & { includeReasoning?: boolean }).includeReasoning ??\n false\n );\n }\n\n /**\n * Returns the parameter mappings specific to this API strategy.\n * @returns Array of parameter mappings.\n * @internal\n */\n protected abstract getParamMappings(): readonly ParamMapping[];\n\n /**\n * Returns the URL identifier for this API (used in error messages).\n * @returns URL string identifier.\n * @internal\n */\n protected abstract getUrl(): string;\n\n /**\n * Checks whether a prefill error should trigger a retry without trailing assistant messages.\n * @param error - Caught error from API call.\n * @param settings - Model settings.\n * @param options - Call options containing the prompt.\n * @returns Whether the request should be retried without trailing assistant messages.\n * @internal\n */\n private shouldRetryWithoutPrefill(\n error: unknown,\n settings: TSettings,\n options: LanguageModelV3CallOptions,\n ): boolean {\n const suppress =\n (settings as SAPAIModelSettings & { suppressPrefillErrors?: boolean })\n .suppressPrefillErrors ?? true;\n return (\n suppress &&\n isPrefillError(error) &&\n options.prompt.length > 0 &&\n options.prompt.at(-1)?.role === \"assistant\"\n );\n }\n\n /**\n * Strips all trailing assistant messages from a prompt for prefill retry.\n * Removes all (not just the last) to guarantee the retry cannot re-trigger.\n * @param prompt - Original prompt array.\n * @returns Prompt with trailing assistant messages removed.\n * @internal\n */\n private stripTrailingAssistantMessages(\n prompt: LanguageModelV3CallOptions[\"prompt\"],\n ): LanguageModelV3CallOptions[\"prompt\"] {\n let end = prompt.length;\n while (end > 0 && prompt[end - 1]?.role === \"assistant\") {\n end--;\n }\n return prompt.slice(0, end);\n }\n}\n"],"mappings":"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","names":[]}
@@ -2,12 +2,12 @@ import {createRequire as __createRequire} from 'module';var require=__createRequ
2
2
  import {
3
3
  buildEmbeddingResult,
4
4
  prepareEmbeddingCall
5
- } from "./chunk-MUVZG52Z.js";
5
+ } from "./chunk-OQIELEJP.js";
6
6
  import {
7
7
  VERSION,
8
8
  convertToAISDKError,
9
9
  deepMerge
10
- } from "./chunk-DVRCVX3D.js";
10
+ } from "./chunk-SWBHSRPT.js";
11
11
 
12
12
  // src/base-embedding-model-strategy.ts
13
13
  var BaseEmbeddingModelStrategy = class {
@@ -58,4 +58,4 @@ var BaseEmbeddingModelStrategy = class {
58
58
  export {
59
59
  BaseEmbeddingModelStrategy
60
60
  };
61
- //# sourceMappingURL=chunk-IW3HT2O2.js.map
61
+ //# sourceMappingURL=chunk-NXIKTWY3.js.map
@@ -4,7 +4,7 @@ import {
4
4
  getProviderName,
5
5
  sapAIEmbeddingProviderOptions,
6
6
  validateModelParamsWithWarnings
7
- } from "./chunk-DVRCVX3D.js";
7
+ } from "./chunk-SWBHSRPT.js";
8
8
 
9
9
  // src/strategy-utils.ts
10
10
  import { TooManyEmbeddingValuesForCallError } from "@ai-sdk/provider";
@@ -682,4 +682,4 @@ export {
682
682
  normalizeEmbedding,
683
683
  prepareEmbeddingCall
684
684
  };
685
- //# sourceMappingURL=chunk-MUVZG52Z.js.map
685
+ //# sourceMappingURL=chunk-OQIELEJP.js.map
@@ -30415,7 +30415,7 @@ function tryExtractSAPErrorFromMessage(message) {
30415
30415
  }
30416
30416
 
30417
30417
  // src/version.ts
30418
- var VERSION = true ? "4.6.5" : "0.0.0-test";
30418
+ var VERSION = true ? "4.6.6" : "0.0.0-test";
30419
30419
 
30420
30420
  export {
30421
30421
  __toESM,
@@ -30469,4 +30469,4 @@ mime-types/index.js:
30469
30469
  axios/dist/node/axios.cjs:
30470
30470
  (*! Axios v1.14.0 Copyright (c) 2026 Matt Zabriskie and contributors *)
30471
30471
  */
30472
- //# sourceMappingURL=chunk-DVRCVX3D.js.map
30472
+ //# sourceMappingURL=chunk-SWBHSRPT.js.map
@@ -1,13 +1,13 @@
1
1
  import {createRequire as __createRequire} from 'module';var require=__createRequire(import.meta.url);
2
2
  import {
3
3
  BaseEmbeddingModelStrategy
4
- } from "./chunk-IW3HT2O2.js";
4
+ } from "./chunk-NXIKTWY3.js";
5
5
  import {
6
6
  buildModelDeployment,
7
7
  hasKeys,
8
8
  normalizeEmbedding
9
- } from "./chunk-MUVZG52Z.js";
10
- import "./chunk-DVRCVX3D.js";
9
+ } from "./chunk-OQIELEJP.js";
10
+ import "./chunk-SWBHSRPT.js";
11
11
 
12
12
  // src/foundation-models-embedding-model-strategy.ts
13
13
  var FoundationModelsEmbeddingModelStrategy = class extends BaseEmbeddingModelStrategy {
@@ -51,4 +51,4 @@ var FoundationModelsEmbeddingModelStrategy = class extends BaseEmbeddingModelStr
51
51
  export {
52
52
  FoundationModelsEmbeddingModelStrategy
53
53
  };
54
- //# sourceMappingURL=foundation-models-embedding-model-strategy-LVCLPX77.js.map
54
+ //# sourceMappingURL=foundation-models-embedding-model-strategy-FVVUOPNF.js.map
@@ -1,16 +1,16 @@
1
1
  import {createRequire as __createRequire} from 'module';var require=__createRequire(import.meta.url);
2
2
  import {
3
3
  BaseLanguageModelStrategy
4
- } from "./chunk-RIDFTJHB.js";
4
+ } from "./chunk-26WNWERS.js";
5
5
  import "./chunk-IIBSUXGT.js";
6
6
  import {
7
7
  buildModelDeployment,
8
8
  convertResponseFormat,
9
9
  convertToolsToSAPFormat
10
- } from "./chunk-MUVZG52Z.js";
10
+ } from "./chunk-OQIELEJP.js";
11
11
  import {
12
12
  normalizeHeaders
13
- } from "./chunk-DVRCVX3D.js";
13
+ } from "./chunk-SWBHSRPT.js";
14
14
 
15
15
  // src/foundation-models-language-model-strategy.ts
16
16
  var FOUNDATION_MODELS_PARAM_MAPPINGS = [
@@ -89,4 +89,4 @@ var FoundationModelsLanguageModelStrategy = class extends BaseLanguageModelStrat
89
89
  export {
90
90
  FoundationModelsLanguageModelStrategy
91
91
  };
92
- //# sourceMappingURL=foundation-models-language-model-strategy-PZMQYE3T.js.map
92
+ //# sourceMappingURL=foundation-models-language-model-strategy-WNNDNZNZ.js.map
package/dist/index.cjs CHANGED
@@ -31301,7 +31301,7 @@ var VERSION;
31301
31301
  var init_version = __esm({
31302
31302
  "src/version.ts"() {
31303
31303
  "use strict";
31304
- VERSION = true ? "4.6.5" : "0.0.0-test";
31304
+ VERSION = true ? "4.6.6" : "0.0.0-test";
31305
31305
  }
31306
31306
  });
31307
31307
 
@@ -31518,7 +31518,7 @@ var init_base_language_model_strategy = __esm({
31518
31518
  } catch (error) {
31519
31519
  if (this.shouldRetryWithoutPrefill(error, settings, options)) {
31520
31520
  const retryPrompt = this.stripTrailingAssistantMessages(options.prompt);
31521
- if (retryPrompt.length > 0 && retryPrompt.at(-1)?.role === "user") {
31521
+ if (retryPrompt.length > 0) {
31522
31522
  return this.doGenerate(config, settings, {
31523
31523
  ...options,
31524
31524
  prompt: retryPrompt
@@ -31576,7 +31576,7 @@ var init_base_language_model_strategy = __esm({
31576
31576
  } catch (error) {
31577
31577
  if (this.shouldRetryWithoutPrefill(error, settings, options)) {
31578
31578
  const retryPrompt = this.stripTrailingAssistantMessages(options.prompt);
31579
- if (retryPrompt.length > 0 && retryPrompt.at(-1)?.role === "user") {
31579
+ if (retryPrompt.length > 0) {
31580
31580
  return this.doStream(config, settings, {
31581
31581
  ...options,
31582
31582
  prompt: retryPrompt