@@ -1805,7 +1805,7 @@ describe("ProviderTransform.message - strip openai metadata when store=false", (
18051805 headers : { } ,
18061806 } as any
18071807
1808- test ( "preserves itemId and reasoningEncryptedContent when store=false" , ( ) => {
1808+ test ( "strips OpenAI itemId and preserves reasoningEncryptedContent when store=false" , ( ) => {
18091809 const msgs = [
18101810 {
18111811 role : "assistant" ,
@@ -1836,11 +1836,12 @@ describe("ProviderTransform.message - strip openai metadata when store=false", (
18361836 const result = ProviderTransform . message ( msgs , openaiModel , { store : false } ) as any [ ]
18371837
18381838 expect ( result ) . toHaveLength ( 1 )
1839- expect ( result [ 0 ] . content [ 0 ] . providerOptions ?. openai ?. itemId ) . toBe ( "rs_123" )
1840- expect ( result [ 0 ] . content [ 1 ] . providerOptions ?. openai ?. itemId ) . toBe ( "msg_456" )
1839+ expect ( result [ 0 ] . content [ 0 ] . providerOptions ?. openai ?. itemId ) . toBeUndefined ( )
1840+ expect ( result [ 0 ] . content [ 0 ] . providerOptions ?. openai ?. reasoningEncryptedContent ) . toBe ( "encrypted" )
1841+ expect ( result [ 0 ] . content [ 1 ] . providerOptions ?. openai ?. itemId ) . toBeUndefined ( )
18411842 } )
18421843
1843- test ( "preserves itemId and reasoningEncryptedContent when store=false even when not openai " , ( ) => {
1844+ test ( "uses the SDK package namespace rather than provider ID " , ( ) => {
18441845 const zenModel = {
18451846 ...openaiModel ,
18461847 providerID : "zen" ,
@@ -1875,11 +1876,12 @@ describe("ProviderTransform.message - strip openai metadata when store=false", (
18751876 const result = ProviderTransform . message ( msgs , zenModel , { store : false } ) as any [ ]
18761877
18771878 expect ( result ) . toHaveLength ( 1 )
1878- expect ( result [ 0 ] . content [ 0 ] . providerOptions ?. openai ?. itemId ) . toBe ( "rs_123" )
1879- expect ( result [ 0 ] . content [ 1 ] . providerOptions ?. openai ?. itemId ) . toBe ( "msg_456" )
1879+ expect ( result [ 0 ] . content [ 0 ] . providerOptions ?. openai ?. itemId ) . toBeUndefined ( )
1880+ expect ( result [ 0 ] . content [ 0 ] . providerOptions ?. openai ?. reasoningEncryptedContent ) . toBe ( "encrypted" )
1881+ expect ( result [ 0 ] . content [ 1 ] . providerOptions ?. openai ?. itemId ) . toBeUndefined ( )
18801882 } )
18811883
1882- test ( "preserves other openai options including itemId " , ( ) => {
1884+ test ( "preserves other OpenAI options" , ( ) => {
18831885 const msgs = [
18841886 {
18851887 role : "assistant" ,
@@ -1900,10 +1902,77 @@ describe("ProviderTransform.message - strip openai metadata when store=false", (
19001902
19011903 const result = ProviderTransform . message ( msgs , openaiModel , { store : false } ) as any [ ]
19021904
1903- expect ( result [ 0 ] . content [ 0 ] . providerOptions ?. openai ?. itemId ) . toBe ( "msg_123" )
1905+ expect ( result [ 0 ] . content [ 0 ] . providerOptions ?. openai ?. itemId ) . toBeUndefined ( )
19041906 expect ( result [ 0 ] . content [ 0 ] . providerOptions ?. openai ?. otherOption ) . toBe ( "value" )
19051907 } )
19061908
1909+ test ( "strips Azure itemId from the Azure namespace" , ( ) => {
1910+ const azureModel = {
1911+ ...openaiModel ,
1912+ providerID : "azure" ,
1913+ api : {
1914+ id : "gpt-5" ,
1915+ url : "https://example.openai.azure.com" ,
1916+ npm : "@ai-sdk/azure" ,
1917+ } ,
1918+ }
1919+ const msgs = [
1920+ {
1921+ role : "assistant" ,
1922+ content : [
1923+ {
1924+ type : "text" ,
1925+ text : "Hello" ,
1926+ providerOptions : {
1927+ azure : { itemId : "msg_123" , otherOption : "value" } ,
1928+ openai : { itemId : "msg_openai" } ,
1929+ } ,
1930+ } ,
1931+ ] ,
1932+ } ,
1933+ ] as any [ ]
1934+
1935+ const result = ProviderTransform . message ( msgs , azureModel , { store : false } ) as any [ ]
1936+
1937+ expect ( result [ 0 ] . content [ 0 ] . providerOptions ?. azure ?. itemId ) . toBeUndefined ( )
1938+ expect ( result [ 0 ] . content [ 0 ] . providerOptions ?. azure ?. otherOption ) . toBe ( "value" )
1939+ expect ( result [ 0 ] . content [ 0 ] . providerOptions ?. openai ?. itemId ) . toBe ( "msg_openai" )
1940+ } )
1941+
1942+ test ( "strips Bedrock Mantle itemId from the OpenAI namespace" , ( ) => {
1943+ const mantleModel = {
1944+ ...openaiModel ,
1945+ providerID : "amazon-bedrock" ,
1946+ api : {
1947+ id : "openai.gpt-5.5" ,
1948+ url : "https://bedrock-mantle.us-east-2.api.aws/openai/v1" ,
1949+ npm : "@ai-sdk/amazon-bedrock/mantle" ,
1950+ } ,
1951+ }
1952+ const msgs = [
1953+ {
1954+ role : "assistant" ,
1955+ providerOptions : { openai : { itemId : "msg_root" , otherOption : "root-value" } } ,
1956+ content : [
1957+ {
1958+ type : "reasoning" ,
1959+ text : "thinking..." ,
1960+ providerOptions : {
1961+ openai : { itemId : "rs_123" , reasoningEncryptedContent : "encrypted" } ,
1962+ } ,
1963+ } ,
1964+ ] ,
1965+ } ,
1966+ ] as any [ ]
1967+
1968+ const result = ProviderTransform . message ( msgs , mantleModel , { store : false } ) as any [ ]
1969+
1970+ expect ( result [ 0 ] . providerOptions ?. openai ?. itemId ) . toBeUndefined ( )
1971+ expect ( result [ 0 ] . providerOptions ?. openai ?. otherOption ) . toBe ( "root-value" )
1972+ expect ( result [ 0 ] . content [ 0 ] . providerOptions ?. openai ?. itemId ) . toBeUndefined ( )
1973+ expect ( result [ 0 ] . content [ 0 ] . providerOptions ?. openai ?. reasoningEncryptedContent ) . toBe ( "encrypted" )
1974+ } )
1975+
19071976 test ( "preserves metadata for openai package when store is true" , ( ) => {
19081977 const msgs = [
19091978 {
0 commit comments