Skip to content

Releases: jerome-benoit/sap-ai-provider

v4.7.1 - Bug Fixes & Improvements

05 Jun 16:23
3cbdbbd

Choose a tag to compare

Release Date: 2026-06-05
Type: Patch - Bug Fixes & Improvements


Summary

Adds orchestration fallback module configuration support, aligns document grounding and content filtering examples with the SAP AI SDK 2.11 surface, corrects SAP SDK authentication architecture documentation, and includes dependency maintenance updates since v4.7.0.

Quality: 1285/1285 tests passing | All quality gates passed

Installation:

  • V3: npm install @jerome-benoit/sap-ai-provider@4.7.1
  • V2: npm install @jerome-benoit/sap-ai-provider-v2@4.7.1

Improvements

Orchestration Configuration

  • feat(orchestration): Support fallbackModuleConfigs as ordered fallback OrchestrationModuleConfig entries for locally built orchestration configurations
    • The provider sends the primary prompt module configuration first, followed by fallback entries in user-provided order
    • fallbackModuleConfigs are treated as Orchestration-only settings and are rejected when Foundation Models API is selected
    • When orchestrationConfigRef is set, fallbackModuleConfigs are ignored with the same warning flow as other local module settings because the stored configuration owns the module list

Bug Fixes

Examples

  • fix(examples): Align document grounding placeholders with SAP AI SDK semantics
    • Grounding placeholders.input and providerOptions['sap-ai'].placeholderValues now use bare names such as groundingRequest
    • SAP template syntax such as {{?groundingRequest}} and {{?groundingOutput}} is kept only in prompt text
  • fix(examples): Harden SAP API error parsing in content filtering and document grounding examples
    • Malformed or non-JSON APICallError.responseBody no longer throws a secondary error from the example catch handler

Documentation

  • fix(docs): Correct architecture documentation to reflect SAP AI SDK / SAP Cloud SDK credential discovery, token acquisition, token caching, and token refresh responsibilities
  • fix(docs): Replace unsafe empty-catch error parsing snippet with guarded SAP response-body parsing in the API reference

Documentation

  • Documented fallbackModuleConfigs in settings, API-specific options, and orchestrationConfigRef ignored-module behavior
  • Added a content filtering example entry and linked it from README / API reference
  • Documented Orchestration API file-part conversion behavior and Anthropic prompt-cache usage caveats
  • Refreshed document grounding snippets to use SAP AI SDK 2.11 placeholder naming consistently

Testing

  • Added validation coverage for fallbackModuleConfigs as an Orchestration-only option
  • Added API-switching coverage for fallbackModuleConfigs conflicts when switching from Orchestration to Foundation Models
  • Added runtime warning coverage for fallbackModuleConfigs ignored by orchestrationConfigRef

Dependency Updates

  • chore(deps): Update all non-major dependencies (#136, #137, #138)
  • chore(deps): Lock file maintenance (#139)
  • chore(sandcastle): Install Codex CLI in the sandcastle Docker image
  • chore(deps): Update @ai-hero/sandcastle to ^0.6.6 and drop patch-package

Quality Assurance

  • ✅ TypeScript strict mode: 0 errors
  • ✅ ESLint: 0 errors / 0 warnings
  • ✅ Tests: 1285/1285 passing (100%)
  • ✅ Build V3: ESM + CJS + DTS verified
  • ✅ Build V2: ESM + CJS + DTS verified
  • ✅ Node.js + Edge runtime tests passing

Installation

# V3 Package (LanguageModelV3/EmbeddingModelV3)
npm install @jerome-benoit/sap-ai-provider@^4.7.1 ai

# V2 Package (LanguageModelV2/EmbeddingModelV2)
npm install @jerome-benoit/sap-ai-provider-v2@^4.7.1 ai

Compatibility: Node.js 20+, AI SDK 5.0+ / 6.0+


Full Changelog: v4.7.0...v4.7.1

v4.7.0 - New Features & Improvements

28 May 16:44
a7980b8

Choose a tag to compare

Release Date: 2026-05-28
Type: Minor - New Features & Improvements


Summary

Integrates the @sap-ai-sdk 2.10 → 2.11 surface: Anthropic prompt caching end-to-end, unified requestId resolution across language and embedding paths, expanded SDK 2.11 token-usage details via usage.raw, deprecation warning for the legacy masking_providers shape, and Foundation Models stream metadata parity. Also extracts the stream transformer into a dedicated module and integrates autofix.ci for PR formatting.

Quality: 1282/1282 tests passing | All quality gates passed

Installation:

  • V3: npm install @jerome-benoit/sap-ai-provider@4.7.0
  • V2: npm install @jerome-benoit/sap-ai-provider-v2@4.7.0

Features

Message Content

  • feat(messages): Forward Anthropic cacheControl on user / system / assistant text / tool-result message parts and tool definitions (#132, closes #133)
    • Per-part providerOptions['sap-ai'].cacheControl honored by the orchestration API; Foundation Models ignores it
    • Surfaced via the SAP envelope cache_control field on the matching SDK shapes

Response Metadata

  • feat(strategy): Unify providerMetadata.requestId source across language and embedding paths via shared extractMetadata hook on BaseLanguageModelStrategy (#132)
  • feat(orchestration): Surface Anthropic cacheUsage (ephemeral_5m_input_tokens, ephemeral_1h_input_tokens) on doGenerate and stream finish (#132)
  • feat(embeddings): Surface request id and response headers via providerMetadata (#132, closes #71)
  • feat(foundation-models): Surface request id and response headers in stream and generate paths (#132, closes #73)
  • feat(strategy-utils): Map tool_use and guardrail_intervened raw finish reasons to tool-calls / content-filter (#132)

Usage Details

  • feat(strategy-utils): Surface SDK 2.11 token detail fields (audio, accepted-prediction, rejected-prediction) via usage.raw when the SDK reports fields not represented in inputTokens / outputTokens (#132)
    • Preserved on stream finish events (parity with doGenerate)

Embedding Masking

  • feat(validation): Warn when settings.masking uses the deprecated masking_providers shape (removal date 2027-03-20) (#132)
    • Emitted on both LM and embedding orchestration paths via shared validateMaskingProvidersDeprecation
  • feat(settings): Accept the new SDK 2.11 masking.providers shape alongside the deprecated form (#132)

Bug Fixes

Streaming

  • fix(stream-transformer): Preserve usage.raw on stream finish (was silently dropped) (#132)
  • fix(streaming): Symmetrize stream finish providerMetadata with doGenerate (cacheUsage, requestId, intermediateFailures) (#132)

Serialization & Error Handling

  • fix(strategy-utils): Preserve bigint payloads in sanitizeAsJSON* helpers via decimal-string replacer (#132)
  • fix(error): Handle Web Headers instances in normalizeHeaders via instanceof + forEach; lower-case keys for case-insensitive lookup (#132)

Improvements

Workflow Consistency

  • feat(ci): Integrate autofix.ci for automatic formatting fixes on PRs (#113, resolves #108)
  • chore(automation): Integrate sandcastle for automated maintenance workflows (#104, #111, #121)

Lint Pipeline

  • chore: Add lefthook for pre-commit and pre-push git hooks

Refactoring

Code Organization

  • refactor(streaming): Extract stream transformer into dedicated src/stream-transformer.ts module with tighter type safety and error handling
  • refactor(messages): Extract wrapAsTextContent helper and cache the parsePartProviderOptions closure (#132)

Code Architecture

  • refactor(strategy): Introduce extractMetadata hook on BaseLanguageModelStrategy and resolveWarnings hook on BaseEmbeddingModelStrategy (#132)

Strategy Utilities

  • refactor(strategy-utils): Extract extractCompletionId, computeNoCache, and parseSAPPartProviderOptions helpers (#132)

Code Quality

  • refactor(validation): Rename pushDeprecatedMaskingProvidersWarning to validateMaskingProvidersDeprecation and widen signature to { masking?: unknown } (#132)

Documentation

  • Documented Anthropic prompt caching surface — input shape, supported parts (user / system / assistant / tool-result / tool definition), and example
  • Documented providerMetadata field semantics including "unknown" finishReason fallback and cacheUsage zero-key preservation
  • Refreshed capability / requestId / cacheUsage / embedding / cacheControl sections in API_REFERENCE.md
  • Renamed LICENSE.md to LICENSE and aligned with the official Apache 2.0 text (#131)

Internal

  • chore: Add Zed editor project settings
  • revert: Remove invalid workflows permission

Dependency Updates

  • chore(deps): Update Node.js to v24.16.0 (#128)
  • chore(deps): Update @ai-hero/sandcastle to ^0.6.5 (#115, #126, #134)
  • chore(deps): Update eslint to ^10.4.0 (#120)
  • chore(deps): Update eslint-plugin-jsdoc to v63 (#127)
  • chore(deps): Update tsx to ^4.22.1 (#122)
  • fix(deps): Update all non-major dependencies (#112, #116, #130)
  • chore(deps): Update all non-major dependencies (#118, #119, #124, #125)
  • chore(deps): Lock file maintenance (#105, #117, #123, #129)

Quality Assurance

  • ✅ TypeScript strict mode: 0 errors
  • ✅ ESLint: 0 errors / 0 warnings
  • ✅ Tests: 1282/1282 passing (100%)
  • ✅ Build V3: ESM + CJS + DTS verified
  • ✅ Build V2: ESM + CJS + DTS verified
  • ✅ Node.js + Edge runtime tests passing

Installation

# V3 Package (LanguageModelV3/EmbeddingModelV3)
npm install @jerome-benoit/sap-ai-provider@^4.7.0 ai

# V2 Package (LanguageModelV2/EmbeddingModelV2)
npm install @jerome-benoit/sap-ai-provider-v2@^4.7.0 ai

Compatibility: Node.js 20+, AI SDK 5.0+ / 6.0+


Full Changelog: v4.6.9...v4.7.0

v4.6.9 - Bug Fixes

03 May 16:31
a39faeb

Choose a tag to compare

Release Date: 2026-05-03
Type: Patch - Bug Fixes


Summary

Fix streaming tool call ID mismatch on Gemini-on-Vertex where tool-input-start was emitted with a placeholder ID before the real ID arrived, violating the Vercel AI SDK v3 stream contract.

Quality: 1128/1128 tests passing | All quality gates passed

Installation:

  • V3: npm install @jerome-benoit/sap-ai-provider@4.6.9
  • V2: npm install @jerome-benoit/sap-ai-provider-v2@4.6.9

Bug Fixes

Streaming

  • fix(streaming): Defer tool-input-start until real tool call ID is available (#103)
    • When Gemini-on-Vertex splits function.name and id across separate chunks, tool-input-start was emitted with placeholder tool_0 causing ID mismatch with subsequent tool-input-delta events
    • ToolCallInProgress.id is now string | undefined — no placeholder IDs
    • tool-input-start gates on both toolName AND id being non-empty strings
    • ID is immutable once set (first real value wins)
    • Buffered arguments replayed as tool-input-delta after deferred start emission
    • Fallback UUID generated in flush/finishReason paths when API never provides an ID
    • Extracted emitToolInputStart helper to prevent drift between 3 emission sites

Refactoring

Code Organization

  • refactor(tests): Use function overloads for getLastEmbedCallForApi

Internal

  • fix(lint): Suppress false-positive jsdoc/require-jsdoc on function overload implementation
  • fix(lint): Resolve all ESLint no-unnecessary-type-assertion errors
  • chore: Update openspec skills and add package-lock.json to .opencode/.gitignore
  • chore: Replace agent instruction indirections with symlinks to canonical source
  • chore: Update package-lock.json (uuid 11.1.0 → 11.1.1)
  • chore(docs): Remove stale DEBUG env var reference and update openspec source structure
  • docs: Harmonize agent instructions with actual project state
  • docs: Remove redundant SAP SDKs line in openspec config

Dependency Updates

  • fix(deps): Update dependency zod to ^4.4.2 (#102)
  • fix(deps): Update all non-major dependencies (#101)
  • fix(deps): Update all non-major dependencies (#100)
  • fix(deps): Update all non-major dependencies (#95)
  • chore(deps): Update all non-major dependencies (#98)
  • chore(deps): Update dependency typescript-eslint to ^8.59.0 (#97)
  • chore(deps): Lock file maintenance (#99)
  • chore(deps): Lock file maintenance (#96)
  • chore(deps): Update all non-major dependencies (#94)
  • chore(deps): Update dependency typescript-eslint to ^8.58.2 (#92)
  • chore(deps): Lock file maintenance (#91)
  • chore(deps): Update all non-major dependencies (#90)
  • chore(deps): Update all non-major dependencies (#89)
  • chore(deps): Update all non-major dependencies (#88)

Quality Assurance

  • ✅ TypeScript strict mode: 0 errors
  • ✅ ESLint: 0 errors, 0 warnings
  • ✅ Tests: 1128/1128 passing (100%)
  • ✅ Build V3: ESM + CJS + DTS verified
  • ✅ Build V2: ESM + CJS + DTS verified
  • ✅ Node.js + Edge runtime tests passing

Installation

# V3 Package (LanguageModelV3/EmbeddingModelV3)
npm install @jerome-benoit/sap-ai-provider@^4.6.9 ai

# V2 Package (LanguageModelV2/EmbeddingModelV2)
npm install @jerome-benoit/sap-ai-provider-v2@^4.6.9 ai

Compatibility: Node.js 20+, AI SDK 5.0+ / 6.0+


Full Changelog: v4.6.8...v4.6.9

v4.6.8 - Bug Fixes

07 Apr 21:31
0cd58f0

Choose a tag to compare

Release Date: 2026-04-07
Type: Patch - Bug Fixes


Summary

Dependency maintenance release with non-major dependency updates and lock file synchronization.

Quality: 1122/1122 tests passing | All quality gates passed

Installation:

  • V3: npm install @jerome-benoit/sap-ai-provider@4.6.8
  • V2: npm install @jerome-benoit/sap-ai-provider-v2@4.6.8

Dependency Updates

  • fix(deps): Update all non-major dependencies (#84)
  • fix(deps): Update all non-major dependencies (#86)
  • chore(deps): Update dependency typescript to v6 (#76)
  • chore(deps): Update dependency vitest to ^4.1.3 (#87)
  • chore(deps): Update dependency typescript-eslint to ^8.58.0 (#82)
  • chore(deps): Update all non-major dependencies (#83)
  • chore(deps): Lock file maintenance (#81, #85)
  • chore: Lock file maintenance

Quality Assurance

  • ✅ TypeScript strict mode: 0 errors
  • ✅ ESLint: 0 errors, 0 warnings
  • ✅ Tests: 1122/1122 passing (100%)
  • ✅ Build V3: ESM + CJS + DTS verified
  • ✅ Build V2: ESM + CJS + DTS verified
  • ✅ Node.js + Edge runtime tests passing

Installation

# V3 Package (LanguageModelV3/EmbeddingModelV3)
npm install @jerome-benoit/sap-ai-provider@^4.6.8 ai

# V2 Package (LanguageModelV2/EmbeddingModelV2)
npm install @jerome-benoit/sap-ai-provider-v2@^4.6.8 ai

Compatibility: Node.js 20+, AI SDK 5.0+ / 6.0+


Full Changelog: v4.6.7...v4.6.8

v4.6.7 - Bug Fixes

29 Mar 20:04
5452898

Choose a tag to compare

Release Date: 2026-03-29
Type: Patch - Bug Fixes


Summary

Remove suppressPrefillErrors feature that caused infinite agent loops. Keep all unrelated error handling improvements from v4.6.3–v4.6.6.

Quality: 1122/1122 tests passing | All quality gates passed

Installation:

  • V3: npm install @jerome-benoit/sap-ai-provider@4.6.7
  • V2: npm install @jerome-benoit/sap-ai-provider-v2@4.6.7

Bug Fixes

Serialization & Error Handling

  • fix(error): Remove suppressPrefillErrors feature
    • The prefill retry stripped the model's previous response (not a prefill hint), causing the agent to lose context and loop indefinitely
    • Models that reject assistant message prefill now surface the error directly to callers

Quality Assurance

  • ✅ TypeScript strict mode: 0 errors
  • ✅ ESLint: 0 errors, 0 warnings
  • ✅ Tests: 1122/1122 passing (100%)
  • ✅ Build V3: ESM + CJS + DTS verified
  • ✅ Build V2: ESM + CJS + DTS verified
  • ✅ Node.js + Edge runtime tests passing

Installation

# V3 Package (LanguageModelV3/EmbeddingModelV3)
npm install @jerome-benoit/sap-ai-provider@^4.6.7 ai

# V2 Package (LanguageModelV2/EmbeddingModelV2)
npm install @jerome-benoit/sap-ai-provider-v2@^4.6.7 ai

Compatibility: Node.js 20+, AI SDK 5.0+ / 6.0+


Full Changelog: v4.6.6...v4.6.7

v4.6.6 - Bug Fixes

29 Mar 18:27
f8d8063

Choose a tag to compare

Release Date: 2026-03-29
Type: Patch - Bug Fixes


Summary

Fix prefill retry that was blocked for agent prompts ending with tool results. The user-tail guard required stripped prompts to end with role: "user", which prevented retry for the common agent pattern [..., assistant (tool calls), tool (result), assistant (prefill)].

Quality: 1154/1154 tests passing | All quality gates passed

Installation:

  • V3: npm install @jerome-benoit/sap-ai-provider@4.6.6
  • V2: npm install @jerome-benoit/sap-ai-provider-v2@4.6.6

Bug Fixes

Serialization & Error Handling

  • fix(retry): Remove overly restrictive user-tail guard from prefill retry
    • The guard retryPrompt.at(-1)?.role === "user" blocked retry when the stripped prompt ended with tool role (common agent pattern with tool calling)
    • Replaced with retryPrompt.length > 0 — only guard against empty prompts
    • If the backend still rejects the stripped prompt, the error propagates normally

Quality Assurance

  • ✅ TypeScript strict mode: 0 errors
  • ✅ ESLint: 0 errors, 0 warnings
  • ✅ Tests: 1154/1154 passing (100%)
  • ✅ Build V3: ESM + CJS + DTS verified
  • ✅ Build V2: ESM + CJS + DTS verified
  • ✅ Node.js + Edge runtime tests passing

Installation

# V3 Package (LanguageModelV3/EmbeddingModelV3)
npm install @jerome-benoit/sap-ai-provider@^4.6.6 ai

# V2 Package (LanguageModelV2/EmbeddingModelV2)
npm install @jerome-benoit/sap-ai-provider-v2@^4.6.6 ai

Compatibility: Node.js 20+, AI SDK 5.0+ / 6.0+


Full Changelog: v4.6.5...v4.6.6

v4.6.5 - Bug Fixes

29 Mar 18:06
f181c3d

Choose a tag to compare

Release Date: 2026-03-29
Type: Patch - Bug Fixes


Summary

Fix cross-API error handling for Foundation Models (Azure OpenAI) errors where code: null caused incorrect status code classification and HTTP status fallback.

Quality: 1154/1154 tests passing | All quality gates passed

Installation:

  • V3: npm install @jerome-benoit/sap-ai-provider@4.6.5
  • V2: npm install @jerome-benoit/sap-ai-provider-v2@4.6.5

Bug Fixes

Serialization & Error Handling

  • fix(error): Handle Azure OpenAI error format (code: null) in structured error type guard
    • Azure OpenAI returns code: null in error responses, which the type guard rejected (typeof null !== "number")
    • Accept code as number or nullish — getStatusCodeFromSAPError already handles null via its falsy check
    • Affects both Orchestration and Foundation Models APIs
  • fix(error): Use HTTP status code from Axios response as fallback when error body code is nullish
    • Previously, code: null defaulted to status 500 (retryable) even when the actual HTTP response was 400 (non-retryable)
    • convertToAISDKError now passes axiosError.response.status to convertSAPErrorToAPICallError as fallback

Refactoring

Code Quality

  • refactor(error): Rename isOrchestrationErrorResponse/findOrchestrationErrorResponse to isStructuredErrorResponse/findStructuredErrorResponse to reflect cross-API scope
  • refactor(test): Align test describe names with function renames (structured error conversion, structured error responses)
  • refactor(test): Add missing isRetryable assertions and negative test for string code values

Quality Assurance

  • ✅ TypeScript strict mode: 0 errors
  • ✅ ESLint: 0 errors, 0 warnings
  • ✅ Tests: 1154/1154 passing (100%)
  • ✅ Build V3: ESM + CJS + DTS verified
  • ✅ Build V2: ESM + CJS + DTS verified
  • ✅ Node.js + Edge runtime tests passing

Installation

# V3 Package (LanguageModelV3/EmbeddingModelV3)
npm install @jerome-benoit/sap-ai-provider@^4.6.5 ai

# V2 Package (LanguageModelV2/EmbeddingModelV2)
npm install @jerome-benoit/sap-ai-provider-v2@^4.6.5 ai

Compatibility: Node.js 20+, AI SDK 5.0+ / 6.0+


Full Changelog: v4.6.4...v4.6.5

v4.6.4 - Bug Fixes

29 Mar 17:30
8fc9177

Choose a tag to compare

Release Date: 2026-03-29
Type: Patch - Bug Fixes


Summary

Fix error message extraction from Axios errors wrapped in ErrorWithCause. This was preventing suppressPrefillErrors retry and degrading all error classification for HTTP errors from SAP AI Core.

Quality: 1151/1151 tests passing | All quality gates passed

Installation:

  • V3: npm install @jerome-benoit/sap-ai-provider@4.6.4
  • V2: npm install @jerome-benoit/sap-ai-provider-v2@4.6.4

Bug Fixes

Serialization & Error Handling

  • fix(error): Extract OrchestrationErrorResponse from axiosError.response.data in findOrchestrationErrorResponse
    • The SAP AI SDK wraps HTTP errors as ErrorWithCause → Axios error, with the structured error body in response.data
    • findOrchestrationErrorResponse was only checking the root error object and message string — never response.data
    • This caused isPrefillError to always return false for real backend errors (the prefill message was invisible)
    • Also improves all error classification: convertToAISDKError now extracts the real SAP error message instead of the generic Axios "Request failed with status code 400."

Refactoring

Code Quality

  • refactor(test): Harmonize expectations across sap-ai-error.test.ts
    • Add missing isRetryable assertions in convertSAPErrorToAPICallError tests
    • Move isPrefillError to top-level describe (independent export)
    • Use as APICallError cast pattern consistently in convertToAISDKError section
    • Add fallback test for non-orchestration Axios data in ErrorWithCause

Quality Assurance

  • ✅ TypeScript strict mode: 0 errors
  • ✅ ESLint: 0 errors, 0 warnings
  • ✅ Tests: 1151/1151 passing (100%)
  • ✅ Build V3: ESM + CJS + DTS verified
  • ✅ Build V2: ESM + CJS + DTS verified
  • ✅ Node.js + Edge runtime tests passing

Installation

# V3 Package (LanguageModelV3/EmbeddingModelV3)
npm install @jerome-benoit/sap-ai-provider@^4.6.4 ai

# V2 Package (LanguageModelV2/EmbeddingModelV2)
npm install @jerome-benoit/sap-ai-provider-v2@^4.6.4 ai

Compatibility: Node.js 20+, AI SDK 5.0+ / 6.0+


Full Changelog: v4.6.3...v4.6.4

v4.6.3 - New Features & Improvements

29 Mar 16:42
381b690

Choose a tag to compare

Release Date: 2026-03-29
Type: Patch - New Features & Improvements


Summary

Add suppressPrefillErrors setting (default: true) for silent retry when LLM backends reject assistant message prefill, plus error handling improvements and dependency updates.

Quality: 1150/1150 tests passing | All quality gates passed

Installation:

  • V3: npm install @jerome-benoit/sap-ai-provider@4.6.3
  • V2: npm install @jerome-benoit/sap-ai-provider-v2@4.6.3

Features

Serialization & Error Handling

  • feat(error-handling): Add suppressPrefillErrors setting for silent retry without assistant prefill (#80)
    • Default true: automatically retries when backend rejects trailing assistant messages
    • Strips all trailing assistant messages and verifies prompt ends with user before retry
    • Case-insensitive detection with dual keywords (PREFILL_ERROR_KEYWORDS)
    • Opt out with suppressPrefillErrors: false at model settings level

Bug Fixes

Serialization & Error Handling

  • fix(lint): Remove unnecessary type arguments causing circular ESLint fixes
  • fix(build): Conditionally suppress baseUrl deprecation for TS 6.0 DTS builds (tsup#1388)
  • fix(renovate): Add npmInstallTwice to fix lockfile sync on major bumps

Refactoring

Code Organization

  • refactor(error): Extract getRootError() helper to deduplicate error chain traversal (4 occurrences → 1)
  • refactor(error): Extract extractSAPErrorMessage(), findOrchestrationErrorResponse(), extractErrorFields() helpers

Documentation

  • Add suppressPrefillErrors to API_REFERENCE.md settings tables and type definitions

Platform Updates

Node.js Version

  • chore(deps): Update Node.js to v24.14.1 (#77)

Internal

  • chore(renovate): Switch postUpdateOptions to npmDedupe

Dependency Updates

  • chore(deps): Update all non-major dependencies to ^4.1.2 (#79)
  • chore(deps): Update dependency eslint-plugin-jsdoc to ^62.8.1 (#78)
  • chore(deps): Update all non-major dependencies (#75)
  • chore(deps): Lock file maintenance (#74)
  • chore(deps): Lock file maintenance

Quality Assurance

  • ✅ TypeScript strict mode: 0 errors
  • ✅ ESLint: 0 errors, 0 warnings
  • ✅ Tests: 1150/1150 passing (100%)
  • ✅ Build V3: ESM + CJS + DTS verified
  • ✅ Build V2: ESM + CJS + DTS verified
  • ✅ Node.js + Edge runtime tests passing

Installation

# V3 Package (LanguageModelV3/EmbeddingModelV3)
npm install @jerome-benoit/sap-ai-provider@^4.6.3 ai

# V2 Package (LanguageModelV2/EmbeddingModelV2)
npm install @jerome-benoit/sap-ai-provider-v2@^4.6.3 ai

Compatibility: Node.js 20+, AI SDK 5.0+ / 6.0+


Full Changelog: v4.6.2...v4.6.3

v4.6.2 - Improvements

22 Mar 13:49
8ab7394

Choose a tag to compare

Release Date: 2026-03-22
Type: Patch - Improvements


Summary

Propagate filename from file parts to SAP SDK FileContent and align SDKCitation type with the full SAP SDK Citation schema.

Quality: 1118/1118 tests passing | All quality gates passed

Installation:

  • V3: npm install @jerome-benoit/sap-ai-provider@4.6.2
  • V2: npm install @jerome-benoit/sap-ai-provider-v2@4.6.2

Features

File Content

  • feat(messages): Propagate filename from Vercel AI SDK FilePart to SAP SDK FileContent
    • Passes through the optional filename field for non-image file uploads, enabling server-side file identification

Bug Fixes

Type Alignment

  • fix(types): Align SDKCitation with SAP SDK Citation type
    • Add missing start_index and end_index optional fields to match the full schema from @sap-ai-sdk/orchestration

Quality Assurance

  • ✅ TypeScript strict mode: 0 errors
  • ✅ ESLint: 0 errors, 0 warnings
  • ✅ Tests: 1118/1118 passing (100%)
  • ✅ Build V3: ESM + CJS + DTS verified
  • ✅ Build V2: ESM + CJS + DTS verified
  • ✅ Node.js + Edge runtime tests passing

Installation

# V3 Package (LanguageModelV3/EmbeddingModelV3)
npm install @jerome-benoit/sap-ai-provider@^4.6.2 ai

# V2 Package (LanguageModelV2/EmbeddingModelV2)
npm install @jerome-benoit/sap-ai-provider-v2@^4.6.2 ai

Compatibility: Node.js 20+, AI SDK 5.0+ / 6.0+


Full Changelog: v4.6.1...v4.6.2