@fractaal/pi-ai 1.4.1 → 1.6.0

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 (261) hide show
  1. package/README.md +50 -34
  2. package/dist/api/anthropic-messages.d.ts.map +1 -1
  3. package/dist/api/anthropic-messages.js +224 -27
  4. package/dist/api/anthropic-messages.js.map +1 -1
  5. package/dist/api/azure-openai-responses.js +1 -1
  6. package/dist/api/azure-openai-responses.js.map +1 -1
  7. package/dist/api/bedrock-converse-stream.d.ts.map +1 -1
  8. package/dist/api/bedrock-converse-stream.js +54 -25
  9. package/dist/api/bedrock-converse-stream.js.map +1 -1
  10. package/dist/api/bedrock-converse-stream.lazy.d.ts +7 -0
  11. package/dist/api/bedrock-converse-stream.lazy.d.ts.map +1 -1
  12. package/dist/api/bedrock-converse-stream.lazy.js +18 -5
  13. package/dist/api/bedrock-converse-stream.lazy.js.map +1 -1
  14. package/dist/api/constrained-sampling.d.ts +4 -0
  15. package/dist/api/constrained-sampling.d.ts.map +1 -1
  16. package/dist/api/constrained-sampling.js +18 -0
  17. package/dist/api/constrained-sampling.js.map +1 -1
  18. package/dist/api/lazy.d.ts +1 -1
  19. package/dist/api/lazy.d.ts.map +1 -1
  20. package/dist/api/lazy.js +9 -8
  21. package/dist/api/lazy.js.map +1 -1
  22. package/dist/api/openai-codex-responses.d.ts.map +1 -1
  23. package/dist/api/openai-codex-responses.js +7 -3
  24. package/dist/api/openai-codex-responses.js.map +1 -1
  25. package/dist/api/openai-completions.d.ts +2 -1
  26. package/dist/api/openai-completions.d.ts.map +1 -1
  27. package/dist/api/openai-completions.js +10 -3
  28. package/dist/api/openai-completions.js.map +1 -1
  29. package/dist/api/openai-responses.d.ts.map +1 -1
  30. package/dist/api/openai-responses.js +4 -2
  31. package/dist/api/openai-responses.js.map +1 -1
  32. package/dist/api/pi-messages.d.ts.map +1 -1
  33. package/dist/api/pi-messages.js +9 -0
  34. package/dist/api/pi-messages.js.map +1 -1
  35. package/dist/api/simple-options.d.ts +1 -0
  36. package/dist/api/simple-options.d.ts.map +1 -1
  37. package/dist/api/simple-options.js +16 -2
  38. package/dist/api/simple-options.js.map +1 -1
  39. package/dist/auth/oauth/github-copilot.d.ts.map +1 -1
  40. package/dist/auth/oauth/github-copilot.js +4 -11
  41. package/dist/auth/oauth/github-copilot.js.map +1 -1
  42. package/dist/auth/oauth/kimi-coding.d.ts.map +1 -1
  43. package/dist/auth/oauth/kimi-coding.js +4 -22
  44. package/dist/auth/oauth/kimi-coding.js.map +1 -1
  45. package/dist/auth/oauth/load.d.ts.map +1 -1
  46. package/dist/auth/oauth/load.js +5 -2
  47. package/dist/auth/oauth/load.js.map +1 -1
  48. package/dist/auth/oauth/meta.d.ts.map +1 -1
  49. package/dist/auth/oauth/meta.js +1 -14
  50. package/dist/auth/oauth/meta.js.map +1 -1
  51. package/dist/auth/oauth/radius.d.ts.map +1 -1
  52. package/dist/auth/oauth/radius.js +9 -3
  53. package/dist/auth/oauth/radius.js.map +1 -1
  54. package/dist/auth/oauth/trusted-url.d.ts +7 -0
  55. package/dist/auth/oauth/trusted-url.d.ts.map +1 -0
  56. package/dist/auth/oauth/trusted-url.js +12 -0
  57. package/dist/auth/oauth/trusted-url.js.map +1 -0
  58. package/dist/cli.js +6 -2
  59. package/dist/cli.js.map +1 -1
  60. package/dist/env-api-keys.d.ts.map +1 -1
  61. package/dist/env-api-keys.js +1 -0
  62. package/dist/env-api-keys.js.map +1 -1
  63. package/dist/index.d.ts +1 -3
  64. package/dist/index.d.ts.map +1 -1
  65. package/dist/index.js +1 -2
  66. package/dist/index.js.map +1 -1
  67. package/dist/lazy-bedrock-provider.d.ts +10 -0
  68. package/dist/lazy-bedrock-provider.d.ts.map +1 -0
  69. package/dist/lazy-bedrock-provider.js +13 -0
  70. package/dist/lazy-bedrock-provider.js.map +1 -0
  71. package/dist/lazy-oauth.d.ts +10 -0
  72. package/dist/lazy-oauth.d.ts.map +1 -0
  73. package/dist/lazy-oauth.js +23 -0
  74. package/dist/lazy-oauth.js.map +1 -0
  75. package/dist/models.d.ts.map +1 -1
  76. package/dist/models.generated.d.ts +4 -0
  77. package/dist/models.generated.d.ts.map +1 -1
  78. package/dist/models.generated.js +5 -1
  79. package/dist/models.generated.js.map +1 -1
  80. package/dist/models.js +8 -8
  81. package/dist/models.js.map +1 -1
  82. package/dist/providers/all.d.ts.map +1 -1
  83. package/dist/providers/all.js +2 -0
  84. package/dist/providers/all.js.map +1 -1
  85. package/dist/providers/amazon-bedrock.models.js +1 -1
  86. package/dist/providers/amazon-bedrock.models.js.map +1 -1
  87. package/dist/providers/ant-ling.models.js +1 -1
  88. package/dist/providers/ant-ling.models.js.map +1 -1
  89. package/dist/providers/anthropic.models.js +1 -1
  90. package/dist/providers/anthropic.models.js.map +1 -1
  91. package/dist/providers/azure.models.js +1 -1
  92. package/dist/providers/azure.models.js.map +1 -1
  93. package/dist/providers/baseten.models.js +1 -1
  94. package/dist/providers/baseten.models.js.map +1 -1
  95. package/dist/providers/cerebras.models.js +1 -1
  96. package/dist/providers/cerebras.models.js.map +1 -1
  97. package/dist/providers/cloudflare-ai-gateway.models.js +1 -1
  98. package/dist/providers/cloudflare-ai-gateway.models.js.map +1 -1
  99. package/dist/providers/cloudflare-workers-ai.models.js +1 -1
  100. package/dist/providers/cloudflare-workers-ai.models.js.map +1 -1
  101. package/dist/providers/compat-schema.d.ts +441 -456
  102. package/dist/providers/compat-schema.d.ts.map +1 -1
  103. package/dist/providers/compat-schema.js +163 -112
  104. package/dist/providers/compat-schema.js.map +1 -1
  105. package/dist/providers/data/.manifest.json +1 -1
  106. package/dist/providers/data/amazon-bedrock.json +1 -1
  107. package/dist/providers/data/anthropic.json +1 -1
  108. package/dist/providers/data/azure.json +1 -1
  109. package/dist/providers/data/baseten.json +1 -1
  110. package/dist/providers/data/cloudflare-ai-gateway.json +1 -1
  111. package/dist/providers/data/cloudflare-workers-ai.json +1 -1
  112. package/dist/providers/data/fireworks.json +1 -1
  113. package/dist/providers/data/github-copilot.json +1 -1
  114. package/dist/providers/data/google-vertex.json +1 -1
  115. package/dist/providers/data/google.json +1 -1
  116. package/dist/providers/data/huggingface.json +1 -1
  117. package/dist/providers/data/kimi-coding.json +1 -1
  118. package/dist/providers/data/mistral.json +1 -1
  119. package/dist/providers/data/nvidia.json +1 -1
  120. package/dist/providers/data/openai-codex.json +1 -1
  121. package/dist/providers/data/openai.json +1 -1
  122. package/dist/providers/data/opencode-go.json +1 -1
  123. package/dist/providers/data/opencode.json +1 -1
  124. package/dist/providers/data/openrouter.json +1 -1
  125. package/dist/providers/data/qwen-token-plan-cn.json +1 -1
  126. package/dist/providers/data/qwen-token-plan-individual-cn.json +1 -0
  127. package/dist/providers/data/qwen-token-plan-individual.json +1 -1
  128. package/dist/providers/data/qwen-token-plan.json +1 -1
  129. package/dist/providers/data/radius.json +1 -1
  130. package/dist/providers/data/together.json +1 -1
  131. package/dist/providers/data/vercel-ai-gateway.json +1 -1
  132. package/dist/providers/data/xai.json +1 -1
  133. package/dist/providers/data/xiaomi-token-plan-ams.json +1 -1
  134. package/dist/providers/data/xiaomi-token-plan-cn.json +1 -1
  135. package/dist/providers/data/xiaomi-token-plan-sgp.json +1 -1
  136. package/dist/providers/data/xiaomi.json +1 -1
  137. package/dist/providers/data/zai-coding-cn.json +1 -1
  138. package/dist/providers/data/zai.json +1 -1
  139. package/dist/providers/deepseek.models.js +1 -1
  140. package/dist/providers/deepseek.models.js.map +1 -1
  141. package/dist/providers/fireworks.models.js +1 -1
  142. package/dist/providers/fireworks.models.js.map +1 -1
  143. package/dist/providers/github-copilot.d.ts +3 -1
  144. package/dist/providers/github-copilot.d.ts.map +1 -1
  145. package/dist/providers/github-copilot.js +13 -2
  146. package/dist/providers/github-copilot.js.map +1 -1
  147. package/dist/providers/github-copilot.models.js +1 -1
  148. package/dist/providers/github-copilot.models.js.map +1 -1
  149. package/dist/providers/google-vertex.models.js +1 -1
  150. package/dist/providers/google-vertex.models.js.map +1 -1
  151. package/dist/providers/google.models.js +1 -1
  152. package/dist/providers/google.models.js.map +1 -1
  153. package/dist/providers/groq.models.js +1 -1
  154. package/dist/providers/groq.models.js.map +1 -1
  155. package/dist/providers/huggingface.models.js +1 -1
  156. package/dist/providers/huggingface.models.js.map +1 -1
  157. package/dist/providers/kimi-coding.models.js +1 -1
  158. package/dist/providers/kimi-coding.models.js.map +1 -1
  159. package/dist/providers/meta.models.js +1 -1
  160. package/dist/providers/meta.models.js.map +1 -1
  161. package/dist/providers/minimax-cn.models.js +1 -1
  162. package/dist/providers/minimax-cn.models.js.map +1 -1
  163. package/dist/providers/minimax.models.js +1 -1
  164. package/dist/providers/minimax.models.js.map +1 -1
  165. package/dist/providers/mistral.models.js +1 -1
  166. package/dist/providers/mistral.models.js.map +1 -1
  167. package/dist/providers/model-schema.d.ts +65 -65
  168. package/dist/providers/model-schema.d.ts.map +1 -1
  169. package/dist/providers/model-schema.js +41 -30
  170. package/dist/providers/model-schema.js.map +1 -1
  171. package/dist/providers/moonshotai-cn.models.js +1 -1
  172. package/dist/providers/moonshotai-cn.models.js.map +1 -1
  173. package/dist/providers/moonshotai.models.js +1 -1
  174. package/dist/providers/moonshotai.models.js.map +1 -1
  175. package/dist/providers/nvidia.models.js +1 -1
  176. package/dist/providers/nvidia.models.js.map +1 -1
  177. package/dist/providers/openai-codex-catalog.d.ts.map +1 -1
  178. package/dist/providers/openai-codex-catalog.js +44 -44
  179. package/dist/providers/openai-codex-catalog.js.map +1 -1
  180. package/dist/providers/openai-codex.models.js +1 -1
  181. package/dist/providers/openai-codex.models.js.map +1 -1
  182. package/dist/providers/openai.models.js +1 -1
  183. package/dist/providers/openai.models.js.map +1 -1
  184. package/dist/providers/opencode-go.models.js +1 -1
  185. package/dist/providers/opencode-go.models.js.map +1 -1
  186. package/dist/providers/opencode.js +1 -1
  187. package/dist/providers/opencode.js.map +1 -1
  188. package/dist/providers/opencode.models.js +1 -1
  189. package/dist/providers/opencode.models.js.map +1 -1
  190. package/dist/providers/openrouter.models.js +1 -1
  191. package/dist/providers/openrouter.models.js.map +1 -1
  192. package/dist/providers/qwen-token-plan-cn.models.js +1 -1
  193. package/dist/providers/qwen-token-plan-cn.models.js.map +1 -1
  194. package/dist/providers/qwen-token-plan-individual-cn.d.ts +3 -0
  195. package/dist/providers/qwen-token-plan-individual-cn.d.ts.map +1 -0
  196. package/dist/providers/qwen-token-plan-individual-cn.js +15 -0
  197. package/dist/providers/qwen-token-plan-individual-cn.js.map +1 -0
  198. package/dist/providers/qwen-token-plan-individual-cn.models.d.ts +6 -0
  199. package/dist/providers/qwen-token-plan-individual-cn.models.d.ts.map +1 -0
  200. package/dist/providers/qwen-token-plan-individual-cn.models.js +8 -0
  201. package/dist/providers/qwen-token-plan-individual-cn.models.js.map +1 -0
  202. package/dist/providers/qwen-token-plan-individual.models.js +1 -1
  203. package/dist/providers/qwen-token-plan-individual.models.js.map +1 -1
  204. package/dist/providers/qwen-token-plan.models.js +1 -1
  205. package/dist/providers/qwen-token-plan.models.js.map +1 -1
  206. package/dist/providers/radius.models.js +1 -1
  207. package/dist/providers/radius.models.js.map +1 -1
  208. package/dist/providers/schema-builders.d.ts +10 -0
  209. package/dist/providers/schema-builders.d.ts.map +1 -0
  210. package/dist/providers/schema-builders.js +18 -0
  211. package/dist/providers/schema-builders.js.map +1 -0
  212. package/dist/providers/together.models.js +1 -1
  213. package/dist/providers/together.models.js.map +1 -1
  214. package/dist/providers/typesafe.models.js +1 -1
  215. package/dist/providers/typesafe.models.js.map +1 -1
  216. package/dist/providers/vercel-ai-gateway.models.js +1 -1
  217. package/dist/providers/vercel-ai-gateway.models.js.map +1 -1
  218. package/dist/providers/xai.models.js +1 -1
  219. package/dist/providers/xai.models.js.map +1 -1
  220. package/dist/providers/xiaomi-token-plan-ams.models.js +1 -1
  221. package/dist/providers/xiaomi-token-plan-ams.models.js.map +1 -1
  222. package/dist/providers/xiaomi-token-plan-cn.models.js +1 -1
  223. package/dist/providers/xiaomi-token-plan-cn.models.js.map +1 -1
  224. package/dist/providers/xiaomi-token-plan-sgp.models.js +1 -1
  225. package/dist/providers/xiaomi-token-plan-sgp.models.js.map +1 -1
  226. package/dist/providers/xiaomi.models.js +1 -1
  227. package/dist/providers/xiaomi.models.js.map +1 -1
  228. package/dist/providers/zai-coding-cn.models.js +1 -1
  229. package/dist/providers/zai-coding-cn.models.js.map +1 -1
  230. package/dist/providers/zai.models.js +1 -1
  231. package/dist/providers/zai.models.js.map +1 -1
  232. package/dist/types.d.ts +13 -3
  233. package/dist/types.d.ts.map +1 -1
  234. package/dist/types.js.map +1 -1
  235. package/dist/utils/error-body.d.ts +8 -0
  236. package/dist/utils/error-body.d.ts.map +1 -1
  237. package/dist/utils/error-body.js +28 -1
  238. package/dist/utils/error-body.js.map +1 -1
  239. package/dist/utils/overflow.d.ts.map +1 -1
  240. package/dist/utils/overflow.js +2 -0
  241. package/dist/utils/overflow.js.map +1 -1
  242. package/dist/utils/retry.d.ts.map +1 -1
  243. package/dist/utils/retry.js +3 -0
  244. package/dist/utils/retry.js.map +1 -1
  245. package/dist/utils/{typebox-helpers.d.ts → string-enum.d.ts} +5 -5
  246. package/dist/utils/string-enum.d.ts.map +1 -0
  247. package/dist/utils/{typebox-helpers.js → string-enum.js} +5 -6
  248. package/dist/utils/string-enum.js.map +1 -0
  249. package/dist/utils/transcript.d.ts +1 -1
  250. package/dist/utils/transcript.js +1 -1
  251. package/dist/utils/transcript.js.map +1 -1
  252. package/dist/utils/validation.d.ts +5 -3
  253. package/dist/utils/validation.d.ts.map +1 -1
  254. package/dist/utils/validation.js +25 -446
  255. package/dist/utils/validation.js.map +1 -1
  256. package/dist/utils/version.d.ts +1 -1
  257. package/dist/utils/version.js +1 -1
  258. package/dist/utils/version.js.map +1 -1
  259. package/package.json +18 -9
  260. package/dist/utils/typebox-helpers.d.ts.map +0 -1
  261. package/dist/utils/typebox-helpers.js.map +0 -1
@@ -11,8 +11,9 @@ export interface OpenAICompletionsOptions extends StreamOptions {
11
11
  export interface ConvertCompletionsMessagesOptions {
12
12
  grammarToolInputProperties?: ReadonlyMap<string, string>;
13
13
  }
14
- type ResolvedOpenAICompletionsCompat = Omit<Required<OpenAICompletionsCompat>, "cacheControlFormat" | "supportsThinkingTokenBudget" | "thinkingTokenBudgetField" | "supportsMidConvoSystemMessages" | "supportsMidConvoToolAdditions" | "vllmPriority"> & {
14
+ type ResolvedOpenAICompletionsCompat = Omit<Required<OpenAICompletionsCompat>, "cacheControlFormat" | "supportsThinkingTokenBudget" | "promptCacheKeyMode" | "thinkingTokenBudgetField" | "supportsMidConvoSystemMessages" | "supportsMidConvoToolAdditions" | "vllmPriority"> & {
15
15
  cacheControlFormat?: OpenAICompletionsCompat["cacheControlFormat"];
16
+ promptCacheKeyMode?: OpenAICompletionsCompat["promptCacheKeyMode"];
16
17
  supportsThinkingTokenBudget?: OpenAICompletionsCompat["supportsThinkingTokenBudget"];
17
18
  thinkingTokenBudgetField?: OpenAICompletionsCompat["thinkingTokenBudgetField"];
18
19
  supportsMidConvoSystemMessages?: OpenAICompletionsCompat["supportsMidConvoSystemMessages"];
@@ -1 +1 @@
1
- {"version":3,"file":"openai-completions.d.ts","sourceRoot":"","sources":["../../src/api/openai-completions.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,EAOX,0BAA0B,EAI1B,MAAM,sCAAsC,CAAC;AAE9C,OAAO,KAAK,EAOX,KAAK,EACL,uBAAuB,EAGvB,mBAAmB,EAEnB,cAAc,EACd,aAAa,EAEb,eAAe,EAMf,MAAM,aAAa,CAAC;AAgBrB,OAAO,EAIN,KAAK,iBAAiB,EACtB,MAAM,wBAAwB,CAAC;AAsGhC,MAAM,WAAW,wBAAyB,SAAQ,aAAa;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,8BAA8B,CAAC;IACpE,eAAe,CAAC,EAAE,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;IAC1E,2KAA2K;IAC3K,eAAe,CAAC,EAAE,eAAe,CAAC;CAClC;AAED,MAAM,WAAW,iCAAiC;IACjD,0BAA0B,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzD;AAOD,KAAK,+BAA+B,GAAG,IAAI,CAC1C,QAAQ,CAAC,uBAAuB,CAAC,EAC/B,oBAAoB,GACpB,6BAA6B,GAC7B,0BAA0B,GAC1B,gCAAgC,GAChC,+BAA+B,GAC/B,cAAc,CAChB,GAAG;IACH,kBAAkB,CAAC,EAAE,uBAAuB,CAAC,oBAAoB,CAAC,CAAC;IACnE,2BAA2B,CAAC,EAAE,uBAAuB,CAAC,6BAA6B,CAAC,CAAC;IACrF,wBAAwB,CAAC,EAAE,uBAAuB,CAAC,0BAA0B,CAAC,CAAC;IAC/E,8BAA8B,CAAC,EAAE,uBAAuB,CAAC,gCAAgC,CAAC,CAAC;IAC3F,6BAA6B,CAAC,EAAE,uBAAuB,CAAC,+BAA+B,CAAC,CAAC;IACzF,YAAY,CAAC,EAAE,uBAAuB,CAAC,cAAc,CAAC,CAAC;CACvD,CAAC;AAuHF,eAAO,MAAM,MAAM,EAAE,cAAc,CAAC,oBAAoB,EAAE,wBAAwB,CAsZjF,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,oBAAoB,EAAE,mBAAmB,CAmBlF,CAAC;AAybF,wBAAgB,eAAe,CAC9B,KAAK,EAAE,KAAK,CAAC,oBAAoB,CAAC,EAClC,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,+BAA+B,EACvC,OAAO,CAAC,EAAE,iCAAiC,GACzC,0BAA0B,EAAE,CA8R9B"}
1
+ {"version":3,"file":"openai-completions.d.ts","sourceRoot":"","sources":["../../src/api/openai-completions.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,EAOX,0BAA0B,EAI1B,MAAM,sCAAsC,CAAC;AAE9C,OAAO,KAAK,EAOX,KAAK,EACL,uBAAuB,EAGvB,mBAAmB,EAEnB,cAAc,EACd,aAAa,EAEb,eAAe,EAMf,MAAM,aAAa,CAAC;AAgBrB,OAAO,EAIN,KAAK,iBAAiB,EACtB,MAAM,wBAAwB,CAAC;AAsGhC,MAAM,WAAW,wBAAyB,SAAQ,aAAa;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,8BAA8B,CAAC;IACpE,eAAe,CAAC,EAAE,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;IAC1E,2KAA2K;IAC3K,eAAe,CAAC,EAAE,eAAe,CAAC;CAClC;AAED,MAAM,WAAW,iCAAiC;IACjD,0BAA0B,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzD;AAOD,KAAK,+BAA+B,GAAG,IAAI,CAC1C,QAAQ,CAAC,uBAAuB,CAAC,EAC/B,oBAAoB,GACpB,6BAA6B,GAC7B,oBAAoB,GACpB,0BAA0B,GAC1B,gCAAgC,GAChC,+BAA+B,GAC/B,cAAc,CAChB,GAAG;IACH,kBAAkB,CAAC,EAAE,uBAAuB,CAAC,oBAAoB,CAAC,CAAC;IACnE,kBAAkB,CAAC,EAAE,uBAAuB,CAAC,oBAAoB,CAAC,CAAC;IACnE,2BAA2B,CAAC,EAAE,uBAAuB,CAAC,6BAA6B,CAAC,CAAC;IACrF,wBAAwB,CAAC,EAAE,uBAAuB,CAAC,0BAA0B,CAAC,CAAC;IAC/E,8BAA8B,CAAC,EAAE,uBAAuB,CAAC,gCAAgC,CAAC,CAAC;IAC3F,6BAA6B,CAAC,EAAE,uBAAuB,CAAC,+BAA+B,CAAC,CAAC;IACzF,YAAY,CAAC,EAAE,uBAAuB,CAAC,cAAc,CAAC,CAAC;CACvD,CAAC;AAuHF,eAAO,MAAM,MAAM,EAAE,cAAc,CAAC,oBAAoB,EAAE,wBAAwB,CAsZjF,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,oBAAoB,EAAE,mBAAmB,CAmBlF,CAAC;AA8bF,wBAAgB,eAAe,CAC9B,KAAK,EAAE,KAAK,CAAC,oBAAoB,CAAC,EAClC,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,+BAA+B,EACvC,OAAO,CAAC,EAAE,iCAAiC,GACzC,0BAA0B,EAAE,CA8R9B"}
@@ -555,12 +555,16 @@ function buildParams(model, context, options, compat = getCompat(model), cacheRe
555
555
  grammarToolInputProperties,
556
556
  });
557
557
  const cacheControl = getCompatCacheControl(compat, cacheRetention);
558
+ const promptCacheKeyMode = compat.promptCacheKeyMode ?? "auto";
559
+ const supportsPromptCacheKey = promptCacheKeyMode === "enabled" ||
560
+ (promptCacheKeyMode === "auto" &&
561
+ (model.baseUrl.includes("api.openai.com") ||
562
+ (cacheRetention === "long" && compat.supportsLongCacheRetention)));
558
563
  const params = {
559
564
  model: model.id,
560
565
  messages,
561
566
  stream: true,
562
- prompt_cache_key: (model.baseUrl.includes("api.openai.com") && cacheRetention !== "none") ||
563
- (cacheRetention === "long" && compat.supportsLongCacheRetention)
567
+ prompt_cache_key: cacheRetention !== "none" && supportsPromptCacheKey
564
568
  ? clampOpenAIPromptCacheKey(options?.sessionId)
565
569
  : undefined,
566
570
  prompt_cache_retention: cacheRetention === "long" && compat.supportsLongCacheRetention ? "24h" : undefined,
@@ -950,7 +954,7 @@ export function convertMessages(model, context, compat, options) {
950
954
  // Some providers don't accept null content, use empty string instead
951
955
  const assistantMsg = {
952
956
  role: "assistant",
953
- content: compat.requiresAssistantAfterToolResult ? "" : null,
957
+ content: compat.requiresAssistantAfterToolResult || compat.requiresNonNullAssistantContent ? "" : null,
954
958
  };
955
959
  const assistantTextParts = msg.content
956
960
  .filter(isTextContentBlock)
@@ -1264,6 +1268,7 @@ function detectCompat(model) {
1264
1268
  maxTokensField: useMaxTokens ? "max_tokens" : "max_completion_tokens",
1265
1269
  requiresToolResultName: false,
1266
1270
  requiresAssistantAfterToolResult: false,
1271
+ requiresNonNullAssistantContent: false,
1267
1272
  requiresThinkingAsText: false,
1268
1273
  requiresReasoningContentOnAssistantMessages: isDeepSeek,
1269
1274
  thinkingFormat: isDeepSeek
@@ -1316,6 +1321,7 @@ function getCompat(model) {
1316
1321
  maxTokensField: model.compat.maxTokensField ?? detected.maxTokensField,
1317
1322
  requiresToolResultName: model.compat.requiresToolResultName ?? detected.requiresToolResultName,
1318
1323
  requiresAssistantAfterToolResult: model.compat.requiresAssistantAfterToolResult ?? detected.requiresAssistantAfterToolResult,
1324
+ requiresNonNullAssistantContent: model.compat.requiresNonNullAssistantContent ?? detected.requiresNonNullAssistantContent,
1319
1325
  requiresThinkingAsText: model.compat.requiresThinkingAsText ?? detected.requiresThinkingAsText,
1320
1326
  requiresReasoningContentOnAssistantMessages: model.compat.requiresReasoningContentOnAssistantMessages ??
1321
1327
  detected.requiresReasoningContentOnAssistantMessages,
@@ -1335,6 +1341,7 @@ function getCompat(model) {
1335
1341
  sendSessionAffinityHeaders: model.compat.sendSessionAffinityHeaders ?? detected.sendSessionAffinityHeaders,
1336
1342
  sessionAffinityFormat: model.compat.sessionAffinityFormat ?? detected.sessionAffinityFormat,
1337
1343
  supportsLongCacheRetention: model.compat.supportsLongCacheRetention ?? detected.supportsLongCacheRetention,
1344
+ promptCacheKeyMode: model.compat.promptCacheKeyMode,
1338
1345
  vllmPriority: model.compat.vllmPriority,
1339
1346
  };
1340
1347
  }