@truefoundry/trueforge-core 0.0.0 → 0.1.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 (575) hide show
  1. package/LICENSE +21 -0
  2. package/dist/agent-session/ITurnResourceResolver.d.ts +69 -0
  3. package/dist/agent-session/ITurnResourceResolver.d.ts.map +1 -0
  4. package/dist/agent-session/ITurnResourceResolver.js +19 -0
  5. package/dist/agent-session/ITurnResourceResolver.js.map +1 -0
  6. package/dist/agent-session/ITurnResourceResolver.mjs +1 -0
  7. package/dist/agent-session/ITurnResourceResolver.mjs.map +1 -0
  8. package/dist/agent-session/SessionHandle.d.ts +81 -0
  9. package/dist/agent-session/SessionHandle.d.ts.map +1 -0
  10. package/dist/agent-session/SessionHandle.js +392 -0
  11. package/dist/agent-session/SessionHandle.js.map +1 -0
  12. package/dist/agent-session/SessionHandle.mjs +371 -0
  13. package/dist/agent-session/SessionHandle.mjs.map +1 -0
  14. package/dist/agent-session/Sessions.d.ts +25 -0
  15. package/dist/agent-session/Sessions.d.ts.map +1 -0
  16. package/dist/agent-session/Sessions.js +71 -0
  17. package/dist/agent-session/Sessions.js.map +1 -0
  18. package/dist/agent-session/Sessions.mjs +46 -0
  19. package/dist/agent-session/Sessions.mjs.map +1 -0
  20. package/dist/agent-session/TurnHandle.d.ts +88 -0
  21. package/dist/agent-session/TurnHandle.d.ts.map +1 -0
  22. package/dist/agent-session/TurnHandle.js +490 -0
  23. package/dist/agent-session/TurnHandle.js.map +1 -0
  24. package/dist/agent-session/TurnHandle.mjs +469 -0
  25. package/dist/agent-session/TurnHandle.mjs.map +1 -0
  26. package/dist/agent-session/TurnResourceResolver.d.ts +154 -0
  27. package/dist/agent-session/TurnResourceResolver.d.ts.map +1 -0
  28. package/dist/agent-session/TurnResourceResolver.js +178 -0
  29. package/dist/agent-session/TurnResourceResolver.js.map +1 -0
  30. package/dist/agent-session/TurnResourceResolver.mjs +153 -0
  31. package/dist/agent-session/TurnResourceResolver.mjs.map +1 -0
  32. package/dist/agent-session/builtinsFromSpec.d.ts +19 -0
  33. package/dist/agent-session/builtinsFromSpec.d.ts.map +1 -0
  34. package/dist/agent-session/builtinsFromSpec.js +73 -0
  35. package/dist/agent-session/builtinsFromSpec.js.map +1 -0
  36. package/dist/agent-session/builtinsFromSpec.mjs +48 -0
  37. package/dist/agent-session/builtinsFromSpec.mjs.map +1 -0
  38. package/dist/agent-session/index.d.ts +29 -0
  39. package/dist/agent-session/index.d.ts.map +1 -0
  40. package/dist/agent-session/index.js +117 -0
  41. package/dist/agent-session/index.js.map +1 -0
  42. package/dist/agent-session/index.mjs +84 -0
  43. package/dist/agent-session/index.mjs.map +1 -0
  44. package/dist/agent-session/models/SessionRecord.d.ts +34 -0
  45. package/dist/agent-session/models/SessionRecord.d.ts.map +1 -0
  46. package/dist/agent-session/models/SessionRecord.js +19 -0
  47. package/dist/agent-session/models/SessionRecord.js.map +1 -0
  48. package/dist/agent-session/models/SessionRecord.mjs +1 -0
  49. package/dist/agent-session/models/SessionRecord.mjs.map +1 -0
  50. package/dist/agent-session/models/TurnRecord.d.ts +37 -0
  51. package/dist/agent-session/models/TurnRecord.d.ts.map +1 -0
  52. package/dist/agent-session/models/TurnRecord.js +31 -0
  53. package/dist/agent-session/models/TurnRecord.js.map +1 -0
  54. package/dist/agent-session/models/TurnRecord.mjs +6 -0
  55. package/dist/agent-session/models/TurnRecord.mjs.map +1 -0
  56. package/dist/agent-session/schemas/agentSpec.d.ts +142 -0
  57. package/dist/agent-session/schemas/agentSpec.d.ts.map +1 -0
  58. package/dist/agent-session/schemas/agentSpec.js +170 -0
  59. package/dist/agent-session/schemas/agentSpec.js.map +1 -0
  60. package/dist/agent-session/schemas/agentSpec.mjs +154 -0
  61. package/dist/agent-session/schemas/agentSpec.mjs.map +1 -0
  62. package/dist/agent-session/schemas/events.d.ts +1037 -0
  63. package/dist/agent-session/schemas/events.d.ts.map +1 -0
  64. package/dist/agent-session/schemas/events.js +80 -0
  65. package/dist/agent-session/schemas/events.js.map +1 -0
  66. package/dist/agent-session/schemas/events.mjs +69 -0
  67. package/dist/agent-session/schemas/events.mjs.map +1 -0
  68. package/dist/agent-session/schemas/pagination.d.ts +9 -0
  69. package/dist/agent-session/schemas/pagination.d.ts.map +1 -0
  70. package/dist/agent-session/schemas/pagination.js +36 -0
  71. package/dist/agent-session/schemas/pagination.js.map +1 -0
  72. package/dist/agent-session/schemas/pagination.mjs +11 -0
  73. package/dist/agent-session/schemas/pagination.mjs.map +1 -0
  74. package/dist/agent-session/schemas/session.d.ts +319 -0
  75. package/dist/agent-session/schemas/session.d.ts.map +1 -0
  76. package/dist/agent-session/schemas/session.js +58 -0
  77. package/dist/agent-session/schemas/session.js.map +1 -0
  78. package/dist/agent-session/schemas/session.mjs +30 -0
  79. package/dist/agent-session/schemas/session.mjs.map +1 -0
  80. package/dist/agent-session/schemas/turn.d.ts +494 -0
  81. package/dist/agent-session/schemas/turn.d.ts.map +1 -0
  82. package/dist/agent-session/schemas/turn.js +131 -0
  83. package/dist/agent-session/schemas/turn.js.map +1 -0
  84. package/dist/agent-session/schemas/turn.mjs +102 -0
  85. package/dist/agent-session/schemas/turn.mjs.map +1 -0
  86. package/dist/agent-session/store/ISessionStore.d.ts +310 -0
  87. package/dist/agent-session/store/ISessionStore.d.ts.map +1 -0
  88. package/dist/agent-session/store/ISessionStore.js +19 -0
  89. package/dist/agent-session/store/ISessionStore.js.map +1 -0
  90. package/dist/agent-session/store/ISessionStore.mjs +1 -0
  91. package/dist/agent-session/store/ISessionStore.mjs.map +1 -0
  92. package/dist/agent-session/store/InMemorySessionStore.d.ts +55 -0
  93. package/dist/agent-session/store/InMemorySessionStore.d.ts.map +1 -0
  94. package/dist/agent-session/store/InMemorySessionStore.js +475 -0
  95. package/dist/agent-session/store/InMemorySessionStore.js.map +1 -0
  96. package/dist/agent-session/store/InMemorySessionStore.mjs +461 -0
  97. package/dist/agent-session/store/InMemorySessionStore.mjs.map +1 -0
  98. package/dist/agent-session/store/OffsetPageToken.d.ts +13 -0
  99. package/dist/agent-session/store/OffsetPageToken.d.ts.map +1 -0
  100. package/dist/agent-session/store/OffsetPageToken.js +60 -0
  101. package/dist/agent-session/store/OffsetPageToken.js.map +1 -0
  102. package/dist/agent-session/store/OffsetPageToken.mjs +32 -0
  103. package/dist/agent-session/store/OffsetPageToken.mjs.map +1 -0
  104. package/dist/agent-session/store/PageToken.d.ts +4 -0
  105. package/dist/agent-session/store/PageToken.d.ts.map +1 -0
  106. package/dist/agent-session/store/PageToken.js +45 -0
  107. package/dist/agent-session/store/PageToken.js.map +1 -0
  108. package/dist/agent-session/store/PageToken.mjs +19 -0
  109. package/dist/agent-session/store/PageToken.mjs.map +1 -0
  110. package/dist/agent-session/store/SessionEventPageToken.d.ts +14 -0
  111. package/dist/agent-session/store/SessionEventPageToken.d.ts.map +1 -0
  112. package/dist/agent-session/store/SessionEventPageToken.js +70 -0
  113. package/dist/agent-session/store/SessionEventPageToken.js.map +1 -0
  114. package/dist/agent-session/store/SessionEventPageToken.mjs +42 -0
  115. package/dist/agent-session/store/SessionEventPageToken.mjs.map +1 -0
  116. package/dist/agent-session/store/SessionListPageToken.d.ts +24 -0
  117. package/dist/agent-session/store/SessionListPageToken.d.ts.map +1 -0
  118. package/dist/agent-session/store/SessionListPageToken.js +66 -0
  119. package/dist/agent-session/store/SessionListPageToken.js.map +1 -0
  120. package/dist/agent-session/store/SessionListPageToken.mjs +38 -0
  121. package/dist/agent-session/store/SessionListPageToken.mjs.map +1 -0
  122. package/dist/agent-session/store/SessionStoreErrors.d.ts +43 -0
  123. package/dist/agent-session/store/SessionStoreErrors.d.ts.map +1 -0
  124. package/dist/agent-session/store/SessionStoreErrors.js +126 -0
  125. package/dist/agent-session/store/SessionStoreErrors.js.map +1 -0
  126. package/dist/agent-session/store/SessionStoreErrors.mjs +92 -0
  127. package/dist/agent-session/store/SessionStoreErrors.mjs.map +1 -0
  128. package/dist/agent-session/store/assertCreateTurnThreadDelta.d.ts +18 -0
  129. package/dist/agent-session/store/assertCreateTurnThreadDelta.d.ts.map +1 -0
  130. package/dist/agent-session/store/assertCreateTurnThreadDelta.js +67 -0
  131. package/dist/agent-session/store/assertCreateTurnThreadDelta.js.map +1 -0
  132. package/dist/agent-session/store/assertCreateTurnThreadDelta.mjs +42 -0
  133. package/dist/agent-session/store/assertCreateTurnThreadDelta.mjs.map +1 -0
  134. package/dist/core/InstructionBuilder.d.ts +71 -0
  135. package/dist/core/InstructionBuilder.d.ts.map +1 -0
  136. package/dist/core/InstructionBuilder.js +95 -0
  137. package/dist/core/InstructionBuilder.js.map +1 -0
  138. package/dist/core/InstructionBuilder.mjs +69 -0
  139. package/dist/core/InstructionBuilder.mjs.map +1 -0
  140. package/dist/core/capabilities/AgentCapability.d.ts +32 -0
  141. package/dist/core/capabilities/AgentCapability.d.ts.map +1 -0
  142. package/dist/core/capabilities/AgentCapability.js +19 -0
  143. package/dist/core/capabilities/AgentCapability.js.map +1 -0
  144. package/dist/core/capabilities/AgentCapability.mjs +1 -0
  145. package/dist/core/capabilities/AgentCapability.mjs.map +1 -0
  146. package/dist/core/capabilities/AgentContextProcessor.d.ts +30 -0
  147. package/dist/core/capabilities/AgentContextProcessor.d.ts.map +1 -0
  148. package/dist/core/capabilities/AgentContextProcessor.js +19 -0
  149. package/dist/core/capabilities/AgentContextProcessor.js.map +1 -0
  150. package/dist/core/capabilities/AgentContextProcessor.mjs +1 -0
  151. package/dist/core/capabilities/AgentContextProcessor.mjs.map +1 -0
  152. package/dist/core/capabilities/ToolResponseProcessor.d.ts +12 -0
  153. package/dist/core/capabilities/ToolResponseProcessor.d.ts.map +1 -0
  154. package/dist/core/capabilities/ToolResponseProcessor.js +19 -0
  155. package/dist/core/capabilities/ToolResponseProcessor.js.map +1 -0
  156. package/dist/core/capabilities/ToolResponseProcessor.mjs +1 -0
  157. package/dist/core/capabilities/ToolResponseProcessor.mjs.map +1 -0
  158. package/dist/core/capabilities/builtins/AskUserQuestion.d.ts +11 -0
  159. package/dist/core/capabilities/builtins/AskUserQuestion.d.ts.map +1 -0
  160. package/dist/core/capabilities/builtins/AskUserQuestion.js +90 -0
  161. package/dist/core/capabilities/builtins/AskUserQuestion.js.map +1 -0
  162. package/dist/core/capabilities/builtins/AskUserQuestion.mjs +64 -0
  163. package/dist/core/capabilities/builtins/AskUserQuestion.mjs.map +1 -0
  164. package/dist/core/capabilities/builtins/ContextCompaction.d.ts +23 -0
  165. package/dist/core/capabilities/builtins/ContextCompaction.d.ts.map +1 -0
  166. package/dist/core/capabilities/builtins/ContextCompaction.js +235 -0
  167. package/dist/core/capabilities/builtins/ContextCompaction.js.map +1 -0
  168. package/dist/core/capabilities/builtins/ContextCompaction.mjs +208 -0
  169. package/dist/core/capabilities/builtins/ContextCompaction.mjs.map +1 -0
  170. package/dist/core/capabilities/builtins/CurrentDateTime.d.ts +17 -0
  171. package/dist/core/capabilities/builtins/CurrentDateTime.d.ts.map +1 -0
  172. package/dist/core/capabilities/builtins/CurrentDateTime.js +75 -0
  173. package/dist/core/capabilities/builtins/CurrentDateTime.js.map +1 -0
  174. package/dist/core/capabilities/builtins/CurrentDateTime.mjs +47 -0
  175. package/dist/core/capabilities/builtins/CurrentDateTime.mjs.map +1 -0
  176. package/dist/core/capabilities/builtins/DynamicSubAgents.d.ts +39 -0
  177. package/dist/core/capabilities/builtins/DynamicSubAgents.d.ts.map +1 -0
  178. package/dist/core/capabilities/builtins/DynamicSubAgents.js +176 -0
  179. package/dist/core/capabilities/builtins/DynamicSubAgents.js.map +1 -0
  180. package/dist/core/capabilities/builtins/DynamicSubAgents.mjs +134 -0
  181. package/dist/core/capabilities/builtins/DynamicSubAgents.mjs.map +1 -0
  182. package/dist/core/capabilities/builtins/LargeToolResponse.d.ts +40 -0
  183. package/dist/core/capabilities/builtins/LargeToolResponse.d.ts.map +1 -0
  184. package/dist/core/capabilities/builtins/LargeToolResponse.js +225 -0
  185. package/dist/core/capabilities/builtins/LargeToolResponse.js.map +1 -0
  186. package/dist/core/capabilities/builtins/LargeToolResponse.mjs +186 -0
  187. package/dist/core/capabilities/builtins/LargeToolResponse.mjs.map +1 -0
  188. package/dist/core/capabilities/builtins/OpenUI.d.ts +31 -0
  189. package/dist/core/capabilities/builtins/OpenUI.d.ts.map +1 -0
  190. package/dist/core/capabilities/builtins/OpenUI.js +376 -0
  191. package/dist/core/capabilities/builtins/OpenUI.js.map +1 -0
  192. package/dist/core/capabilities/builtins/OpenUI.mjs +326 -0
  193. package/dist/core/capabilities/builtins/OpenUI.mjs.map +1 -0
  194. package/dist/core/errors.d.ts +33 -0
  195. package/dist/core/errors.d.ts.map +1 -0
  196. package/dist/core/errors.js +88 -0
  197. package/dist/core/errors.js.map +1 -0
  198. package/dist/core/errors.mjs +57 -0
  199. package/dist/core/errors.mjs.map +1 -0
  200. package/dist/core/events/PassthroughEvents.d.ts +30 -0
  201. package/dist/core/events/PassthroughEvents.d.ts.map +1 -0
  202. package/dist/core/events/PassthroughEvents.js +19 -0
  203. package/dist/core/events/PassthroughEvents.js.map +1 -0
  204. package/dist/core/events/PassthroughEvents.mjs +1 -0
  205. package/dist/core/events/PassthroughEvents.mjs.map +1 -0
  206. package/dist/core/events/schema.d.ts +1103 -0
  207. package/dist/core/events/schema.d.ts.map +1 -0
  208. package/dist/core/events/schema.js +337 -0
  209. package/dist/core/events/schema.js.map +1 -0
  210. package/dist/core/events/schema.mjs +283 -0
  211. package/dist/core/events/schema.mjs.map +1 -0
  212. package/dist/core/index.d.ts +66 -0
  213. package/dist/core/index.d.ts.map +1 -0
  214. package/dist/core/index.js +234 -0
  215. package/dist/core/index.js.map +1 -0
  216. package/dist/core/index.mjs +166 -0
  217. package/dist/core/index.mjs.map +1 -0
  218. package/dist/core/llm/ILLM.d.ts +15 -0
  219. package/dist/core/llm/ILLM.d.ts.map +1 -0
  220. package/dist/core/llm/ILLM.js +19 -0
  221. package/dist/core/llm/ILLM.js.map +1 -0
  222. package/dist/core/llm/ILLM.mjs +1 -0
  223. package/dist/core/llm/ILLM.mjs.map +1 -0
  224. package/dist/core/llm/LLMTypes.d.ts +369 -0
  225. package/dist/core/llm/LLMTypes.d.ts.map +1 -0
  226. package/dist/core/llm/LLMTypes.js +170 -0
  227. package/dist/core/llm/LLMTypes.js.map +1 -0
  228. package/dist/core/llm/LLMTypes.mjs +133 -0
  229. package/dist/core/llm/LLMTypes.mjs.map +1 -0
  230. package/dist/core/llm/VercelAILLM.d.ts +229 -0
  231. package/dist/core/llm/VercelAILLM.d.ts.map +1 -0
  232. package/dist/core/llm/VercelAILLM.js +1037 -0
  233. package/dist/core/llm/VercelAILLM.js.map +1 -0
  234. package/dist/core/llm/VercelAILLM.mjs +993 -0
  235. package/dist/core/llm/VercelAILLM.mjs.map +1 -0
  236. package/dist/core/llm/openaiSchemas.d.ts +190 -0
  237. package/dist/core/llm/openaiSchemas.d.ts.map +1 -0
  238. package/dist/core/llm/openaiSchemas.js +144 -0
  239. package/dist/core/llm/openaiSchemas.js.map +1 -0
  240. package/dist/core/llm/openaiSchemas.mjs +107 -0
  241. package/dist/core/llm/openaiSchemas.mjs.map +1 -0
  242. package/dist/core/llm/responseFormat.d.ts +25 -0
  243. package/dist/core/llm/responseFormat.d.ts.map +1 -0
  244. package/dist/core/llm/responseFormat.js +58 -0
  245. package/dist/core/llm/responseFormat.js.map +1 -0
  246. package/dist/core/llm/responseFormat.mjs +32 -0
  247. package/dist/core/llm/responseFormat.mjs.map +1 -0
  248. package/dist/core/llm/toOpenAIChatMessage.d.ts +11 -0
  249. package/dist/core/llm/toOpenAIChatMessage.d.ts.map +1 -0
  250. package/dist/core/llm/toOpenAIChatMessage.js +95 -0
  251. package/dist/core/llm/toOpenAIChatMessage.js.map +1 -0
  252. package/dist/core/llm/toOpenAIChatMessage.mjs +70 -0
  253. package/dist/core/llm/toOpenAIChatMessage.mjs.map +1 -0
  254. package/dist/core/llm/usage.d.ts +4 -0
  255. package/dist/core/llm/usage.d.ts.map +1 -0
  256. package/dist/core/llm/usage.js +52 -0
  257. package/dist/core/llm/usage.js.map +1 -0
  258. package/dist/core/llm/usage.mjs +26 -0
  259. package/dist/core/llm/usage.mjs.map +1 -0
  260. package/dist/core/mcp/ClientSideTool.d.ts +10 -0
  261. package/dist/core/mcp/ClientSideTool.d.ts.map +1 -0
  262. package/dist/core/mcp/ClientSideTool.js +56 -0
  263. package/dist/core/mcp/ClientSideTool.js.map +1 -0
  264. package/dist/core/mcp/ClientSideTool.mjs +31 -0
  265. package/dist/core/mcp/ClientSideTool.mjs.map +1 -0
  266. package/dist/core/mcp/IMCPServer.d.ts +78 -0
  267. package/dist/core/mcp/IMCPServer.d.ts.map +1 -0
  268. package/dist/core/mcp/IMCPServer.js +63 -0
  269. package/dist/core/mcp/IMCPServer.js.map +1 -0
  270. package/dist/core/mcp/IMCPServer.mjs +33 -0
  271. package/dist/core/mcp/IMCPServer.mjs.map +1 -0
  272. package/dist/core/mcp/LocalToolMCP.d.ts +39 -0
  273. package/dist/core/mcp/LocalToolMCP.d.ts.map +1 -0
  274. package/dist/core/mcp/LocalToolMCP.js +121 -0
  275. package/dist/core/mcp/LocalToolMCP.js.map +1 -0
  276. package/dist/core/mcp/LocalToolMCP.mjs +98 -0
  277. package/dist/core/mcp/LocalToolMCP.mjs.map +1 -0
  278. package/dist/core/mcp/RemoteMCP.d.ts +67 -0
  279. package/dist/core/mcp/RemoteMCP.d.ts.map +1 -0
  280. package/dist/core/mcp/RemoteMCP.js +244 -0
  281. package/dist/core/mcp/RemoteMCP.js.map +1 -0
  282. package/dist/core/mcp/RemoteMCP.mjs +222 -0
  283. package/dist/core/mcp/RemoteMCP.mjs.map +1 -0
  284. package/dist/core/mcp/ToolSelectorPolicy.d.ts +52 -0
  285. package/dist/core/mcp/ToolSelectorPolicy.d.ts.map +1 -0
  286. package/dist/core/mcp/ToolSelectorPolicy.js +108 -0
  287. package/dist/core/mcp/ToolSelectorPolicy.js.map +1 -0
  288. package/dist/core/mcp/ToolSelectorPolicy.mjs +90 -0
  289. package/dist/core/mcp/ToolSelectorPolicy.mjs.map +1 -0
  290. package/dist/core/mcp/ToolSet.d.ts +31 -0
  291. package/dist/core/mcp/ToolSet.d.ts.map +1 -0
  292. package/dist/core/mcp/ToolSet.js +119 -0
  293. package/dist/core/mcp/ToolSet.js.map +1 -0
  294. package/dist/core/mcp/ToolSet.mjs +98 -0
  295. package/dist/core/mcp/ToolSet.mjs.map +1 -0
  296. package/dist/core/mcp/convertMCPServers.d.ts +22 -0
  297. package/dist/core/mcp/convertMCPServers.d.ts.map +1 -0
  298. package/dist/core/mcp/convertMCPServers.js +89 -0
  299. package/dist/core/mcp/convertMCPServers.js.map +1 -0
  300. package/dist/core/mcp/convertMCPServers.mjs +64 -0
  301. package/dist/core/mcp/convertMCPServers.mjs.map +1 -0
  302. package/dist/core/mcp/executeToolCalls.d.ts +31 -0
  303. package/dist/core/mcp/executeToolCalls.d.ts.map +1 -0
  304. package/dist/core/mcp/executeToolCalls.js +168 -0
  305. package/dist/core/mcp/executeToolCalls.js.map +1 -0
  306. package/dist/core/mcp/executeToolCalls.mjs +149 -0
  307. package/dist/core/mcp/executeToolCalls.mjs.map +1 -0
  308. package/dist/core/mcp/pagination.d.ts +11 -0
  309. package/dist/core/mcp/pagination.d.ts.map +1 -0
  310. package/dist/core/mcp/pagination.js +49 -0
  311. package/dist/core/mcp/pagination.js.map +1 -0
  312. package/dist/core/mcp/pagination.mjs +24 -0
  313. package/dist/core/mcp/pagination.mjs.map +1 -0
  314. package/dist/core/mcp/remoteMcpClient.d.ts +36 -0
  315. package/dist/core/mcp/remoteMcpClient.d.ts.map +1 -0
  316. package/dist/core/mcp/remoteMcpClient.js +138 -0
  317. package/dist/core/mcp/remoteMcpClient.js.map +1 -0
  318. package/dist/core/mcp/remoteMcpClient.mjs +112 -0
  319. package/dist/core/mcp/remoteMcpClient.mjs.map +1 -0
  320. package/dist/core/mcp/toolNames.d.ts +6 -0
  321. package/dist/core/mcp/toolNames.d.ts.map +1 -0
  322. package/dist/core/mcp/toolNames.js +59 -0
  323. package/dist/core/mcp/toolNames.js.map +1 -0
  324. package/dist/core/mcp/toolNames.mjs +33 -0
  325. package/dist/core/mcp/toolNames.mjs.map +1 -0
  326. package/dist/core/mcp/toolSelectors.d.ts +28 -0
  327. package/dist/core/mcp/toolSelectors.d.ts.map +1 -0
  328. package/dist/core/mcp/toolSelectors.js +113 -0
  329. package/dist/core/mcp/toolSelectors.js.map +1 -0
  330. package/dist/core/mcp/toolSelectors.mjs +78 -0
  331. package/dist/core/mcp/toolSelectors.mjs.map +1 -0
  332. package/dist/core/runtime/AgentDefinition.d.ts +23 -0
  333. package/dist/core/runtime/AgentDefinition.d.ts.map +1 -0
  334. package/dist/core/runtime/AgentDefinition.js +19 -0
  335. package/dist/core/runtime/AgentDefinition.js.map +1 -0
  336. package/dist/core/runtime/AgentDefinition.mjs +1 -0
  337. package/dist/core/runtime/AgentDefinition.mjs.map +1 -0
  338. package/dist/core/runtime/AgentThread.d.ts +64 -0
  339. package/dist/core/runtime/AgentThread.d.ts.map +1 -0
  340. package/dist/core/runtime/AgentThread.js +1067 -0
  341. package/dist/core/runtime/AgentThread.js.map +1 -0
  342. package/dist/core/runtime/AgentThread.mjs +1064 -0
  343. package/dist/core/runtime/AgentThread.mjs.map +1 -0
  344. package/dist/core/runtime/AgentThread.types.d.ts +123 -0
  345. package/dist/core/runtime/AgentThread.types.d.ts.map +1 -0
  346. package/dist/core/runtime/AgentThread.types.js +46 -0
  347. package/dist/core/runtime/AgentThread.types.js.map +1 -0
  348. package/dist/core/runtime/AgentThread.types.mjs +20 -0
  349. package/dist/core/runtime/AgentThread.types.mjs.map +1 -0
  350. package/dist/core/runtime/AgentThreadOrchestrator.d.ts +35 -0
  351. package/dist/core/runtime/AgentThreadOrchestrator.d.ts.map +1 -0
  352. package/dist/core/runtime/AgentThreadOrchestrator.js +433 -0
  353. package/dist/core/runtime/AgentThreadOrchestrator.js.map +1 -0
  354. package/dist/core/runtime/AgentThreadOrchestrator.mjs +418 -0
  355. package/dist/core/runtime/AgentThreadOrchestrator.mjs.map +1 -0
  356. package/dist/core/runtime/CreateDynamicSubAgentThread.d.ts +11 -0
  357. package/dist/core/runtime/CreateDynamicSubAgentThread.d.ts.map +1 -0
  358. package/dist/core/runtime/CreateDynamicSubAgentThread.js +19 -0
  359. package/dist/core/runtime/CreateDynamicSubAgentThread.js.map +1 -0
  360. package/dist/core/runtime/CreateDynamicSubAgentThread.mjs +1 -0
  361. package/dist/core/runtime/CreateDynamicSubAgentThread.mjs.map +1 -0
  362. package/dist/core/runtime/DeferredTool.d.ts +34 -0
  363. package/dist/core/runtime/DeferredTool.d.ts.map +1 -0
  364. package/dist/core/runtime/DeferredTool.js +321 -0
  365. package/dist/core/runtime/DeferredTool.js.map +1 -0
  366. package/dist/core/runtime/DeferredTool.mjs +287 -0
  367. package/dist/core/runtime/DeferredTool.mjs.map +1 -0
  368. package/dist/core/runtime/OpenToolCallCloser.d.ts +21 -0
  369. package/dist/core/runtime/OpenToolCallCloser.d.ts.map +1 -0
  370. package/dist/core/runtime/OpenToolCallCloser.js +92 -0
  371. package/dist/core/runtime/OpenToolCallCloser.js.map +1 -0
  372. package/dist/core/runtime/OpenToolCallCloser.mjs +66 -0
  373. package/dist/core/runtime/OpenToolCallCloser.mjs.map +1 -0
  374. package/dist/core/runtime/UserInputMessage.d.ts +16 -0
  375. package/dist/core/runtime/UserInputMessage.d.ts.map +1 -0
  376. package/dist/core/runtime/UserInputMessage.js +183 -0
  377. package/dist/core/runtime/UserInputMessage.js.map +1 -0
  378. package/dist/core/runtime/UserInputMessage.mjs +157 -0
  379. package/dist/core/runtime/UserInputMessage.mjs.map +1 -0
  380. package/dist/core/runtime/contextUsage.d.ts +17 -0
  381. package/dist/core/runtime/contextUsage.d.ts.map +1 -0
  382. package/dist/core/runtime/contextUsage.js +56 -0
  383. package/dist/core/runtime/contextUsage.js.map +1 -0
  384. package/dist/core/runtime/contextUsage.mjs +28 -0
  385. package/dist/core/runtime/contextUsage.mjs.map +1 -0
  386. package/dist/core/runtime/contextUtils.d.ts +30 -0
  387. package/dist/core/runtime/contextUtils.d.ts.map +1 -0
  388. package/dist/core/runtime/contextUtils.js +198 -0
  389. package/dist/core/runtime/contextUtils.js.map +1 -0
  390. package/dist/core/runtime/contextUtils.mjs +148 -0
  391. package/dist/core/runtime/contextUtils.mjs.map +1 -0
  392. package/dist/core/runtime/metrics.d.ts +22 -0
  393. package/dist/core/runtime/metrics.d.ts.map +1 -0
  394. package/dist/core/runtime/metrics.js +89 -0
  395. package/dist/core/runtime/metrics.js.map +1 -0
  396. package/dist/core/runtime/metrics.mjs +61 -0
  397. package/dist/core/runtime/metrics.mjs.map +1 -0
  398. package/dist/core/sandbox/Sandbox.d.ts +119 -0
  399. package/dist/core/sandbox/Sandbox.d.ts.map +1 -0
  400. package/dist/core/sandbox/Sandbox.js +556 -0
  401. package/dist/core/sandbox/Sandbox.js.map +1 -0
  402. package/dist/core/sandbox/Sandbox.mjs +520 -0
  403. package/dist/core/sandbox/Sandbox.mjs.map +1 -0
  404. package/dist/core/sandbox/SandboxErrors.d.ts +30 -0
  405. package/dist/core/sandbox/SandboxErrors.d.ts.map +1 -0
  406. package/dist/core/sandbox/SandboxErrors.js +102 -0
  407. package/dist/core/sandbox/SandboxErrors.js.map +1 -0
  408. package/dist/core/sandbox/SandboxErrors.mjs +71 -0
  409. package/dist/core/sandbox/SandboxErrors.mjs.map +1 -0
  410. package/dist/core/sandbox/codeMode/CodeModeDispatcher.d.ts +29 -0
  411. package/dist/core/sandbox/codeMode/CodeModeDispatcher.d.ts.map +1 -0
  412. package/dist/core/sandbox/codeMode/CodeModeDispatcher.js +128 -0
  413. package/dist/core/sandbox/codeMode/CodeModeDispatcher.js.map +1 -0
  414. package/dist/core/sandbox/codeMode/CodeModeDispatcher.mjs +107 -0
  415. package/dist/core/sandbox/codeMode/CodeModeDispatcher.mjs.map +1 -0
  416. package/dist/core/sandbox/codeMode/CodeModeTransport.d.ts +21 -0
  417. package/dist/core/sandbox/codeMode/CodeModeTransport.d.ts.map +1 -0
  418. package/dist/core/sandbox/codeMode/CodeModeTransport.js +19 -0
  419. package/dist/core/sandbox/codeMode/CodeModeTransport.js.map +1 -0
  420. package/dist/core/sandbox/codeMode/CodeModeTransport.mjs +1 -0
  421. package/dist/core/sandbox/codeMode/CodeModeTransport.mjs.map +1 -0
  422. package/dist/core/sandbox/codeMode/nats/CodeModeNatsTransport.d.ts +34 -0
  423. package/dist/core/sandbox/codeMode/nats/CodeModeNatsTransport.d.ts.map +1 -0
  424. package/dist/core/sandbox/codeMode/nats/CodeModeNatsTransport.js +187 -0
  425. package/dist/core/sandbox/codeMode/nats/CodeModeNatsTransport.js.map +1 -0
  426. package/dist/core/sandbox/codeMode/nats/CodeModeNatsTransport.mjs +162 -0
  427. package/dist/core/sandbox/codeMode/nats/CodeModeNatsTransport.mjs.map +1 -0
  428. package/dist/core/sandbox/codeMode/types.d.ts +34 -0
  429. package/dist/core/sandbox/codeMode/types.d.ts.map +1 -0
  430. package/dist/core/sandbox/codeMode/types.js +59 -0
  431. package/dist/core/sandbox/codeMode/types.js.map +1 -0
  432. package/dist/core/sandbox/codeMode/types.mjs +32 -0
  433. package/dist/core/sandbox/codeMode/types.mjs.map +1 -0
  434. package/dist/core/sandbox/constants.d.ts +10 -0
  435. package/dist/core/sandbox/constants.d.ts.map +1 -0
  436. package/dist/core/sandbox/constants.js +37 -0
  437. package/dist/core/sandbox/constants.js.map +1 -0
  438. package/dist/core/sandbox/constants.mjs +10 -0
  439. package/dist/core/sandbox/constants.mjs.map +1 -0
  440. package/dist/core/sandbox/provider/DaytonaProvider.d.ts +81 -0
  441. package/dist/core/sandbox/provider/DaytonaProvider.d.ts.map +1 -0
  442. package/dist/core/sandbox/provider/DaytonaProvider.js +353 -0
  443. package/dist/core/sandbox/provider/DaytonaProvider.js.map +1 -0
  444. package/dist/core/sandbox/provider/DaytonaProvider.mjs +333 -0
  445. package/dist/core/sandbox/provider/DaytonaProvider.mjs.map +1 -0
  446. package/dist/core/sandbox/provider/Provider.d.ts +84 -0
  447. package/dist/core/sandbox/provider/Provider.d.ts.map +1 -0
  448. package/dist/core/sandbox/provider/Provider.js +43 -0
  449. package/dist/core/sandbox/provider/Provider.js.map +1 -0
  450. package/dist/core/sandbox/provider/Provider.mjs +17 -0
  451. package/dist/core/sandbox/provider/Provider.mjs.map +1 -0
  452. package/dist/core/sandbox/provider/TFYSandboxProvider.d.ts +42 -0
  453. package/dist/core/sandbox/provider/TFYSandboxProvider.d.ts.map +1 -0
  454. package/dist/core/sandbox/provider/TFYSandboxProvider.js +186 -0
  455. package/dist/core/sandbox/provider/TFYSandboxProvider.js.map +1 -0
  456. package/dist/core/sandbox/provider/TFYSandboxProvider.mjs +153 -0
  457. package/dist/core/sandbox/provider/TFYSandboxProvider.mjs.map +1 -0
  458. package/dist/core/sandbox/sandboxImage.d.ts +6 -0
  459. package/dist/core/sandbox/sandboxImage.d.ts.map +1 -0
  460. package/dist/core/sandbox/sandboxImage.js +31 -0
  461. package/dist/core/sandbox/sandboxImage.js.map +1 -0
  462. package/dist/core/sandbox/sandboxImage.mjs +6 -0
  463. package/dist/core/sandbox/sandboxImage.mjs.map +1 -0
  464. package/dist/core/sandbox/sandboxScripts.gen.d.ts +5 -0
  465. package/dist/core/sandbox/sandboxScripts.gen.d.ts.map +1 -0
  466. package/dist/core/sandbox/sandboxScripts.gen.js +343 -0
  467. package/dist/core/sandbox/sandboxScripts.gen.js.map +1 -0
  468. package/dist/core/sandbox/sandboxScripts.gen.mjs +318 -0
  469. package/dist/core/sandbox/sandboxScripts.gen.mjs.map +1 -0
  470. package/dist/core/sandbox/skills/ISkillMounter.d.ts +7 -0
  471. package/dist/core/sandbox/skills/ISkillMounter.d.ts.map +1 -0
  472. package/dist/core/sandbox/skills/ISkillMounter.js +19 -0
  473. package/dist/core/sandbox/skills/ISkillMounter.js.map +1 -0
  474. package/dist/core/sandbox/skills/ISkillMounter.mjs +1 -0
  475. package/dist/core/sandbox/skills/ISkillMounter.mjs.map +1 -0
  476. package/dist/core/sandbox/skills/SkillMounter.d.ts +17 -0
  477. package/dist/core/sandbox/skills/SkillMounter.d.ts.map +1 -0
  478. package/dist/core/sandbox/skills/SkillMounter.js +73 -0
  479. package/dist/core/sandbox/skills/SkillMounter.js.map +1 -0
  480. package/dist/core/sandbox/skills/SkillMounter.mjs +48 -0
  481. package/dist/core/sandbox/skills/SkillMounter.mjs.map +1 -0
  482. package/dist/core/sandbox/skills/constants.d.ts +10 -0
  483. package/dist/core/sandbox/skills/constants.d.ts.map +1 -0
  484. package/dist/core/sandbox/skills/constants.js +56 -0
  485. package/dist/core/sandbox/skills/constants.js.map +1 -0
  486. package/dist/core/sandbox/skills/constants.mjs +28 -0
  487. package/dist/core/sandbox/skills/constants.mjs.map +1 -0
  488. package/dist/core/sandbox/skills/index.d.ts +5 -0
  489. package/dist/core/sandbox/skills/index.d.ts.map +1 -0
  490. package/dist/core/sandbox/skills/index.js +40 -0
  491. package/dist/core/sandbox/skills/index.js.map +1 -0
  492. package/dist/core/sandbox/skills/index.mjs +11 -0
  493. package/dist/core/sandbox/skills/index.mjs.map +1 -0
  494. package/dist/core/tracing/AgentTracing.d.ts +38 -0
  495. package/dist/core/tracing/AgentTracing.d.ts.map +1 -0
  496. package/dist/core/tracing/AgentTracing.js +19 -0
  497. package/dist/core/tracing/AgentTracing.js.map +1 -0
  498. package/dist/core/tracing/AgentTracing.mjs +1 -0
  499. package/dist/core/tracing/AgentTracing.mjs.map +1 -0
  500. package/dist/core/tracing/NoopAgentTracing.d.ts +3 -0
  501. package/dist/core/tracing/NoopAgentTracing.d.ts.map +1 -0
  502. package/dist/core/tracing/NoopAgentTracing.js +79 -0
  503. package/dist/core/tracing/NoopAgentTracing.js.map +1 -0
  504. package/dist/core/tracing/NoopAgentTracing.mjs +54 -0
  505. package/dist/core/tracing/NoopAgentTracing.mjs.map +1 -0
  506. package/dist/core/util/abort.d.ts +2 -0
  507. package/dist/core/util/abort.d.ts.map +1 -0
  508. package/dist/core/util/abort.js +38 -0
  509. package/dist/core/util/abort.js.map +1 -0
  510. package/dist/core/util/abort.mjs +13 -0
  511. package/dist/core/util/abort.mjs.map +1 -0
  512. package/dist/core/util/errorLogFields.d.ts +11 -0
  513. package/dist/core/util/errorLogFields.d.ts.map +1 -0
  514. package/dist/core/util/errorLogFields.js +72 -0
  515. package/dist/core/util/errorLogFields.js.map +1 -0
  516. package/dist/core/util/errorLogFields.mjs +46 -0
  517. package/dist/core/util/errorLogFields.mjs.map +1 -0
  518. package/dist/core/util/promiseUtils.d.ts +7 -0
  519. package/dist/core/util/promiseUtils.d.ts.map +1 -0
  520. package/dist/core/util/promiseUtils.js +82 -0
  521. package/dist/core/util/promiseUtils.js.map +1 -0
  522. package/dist/core/util/promiseUtils.mjs +55 -0
  523. package/dist/core/util/promiseUtils.mjs.map +1 -0
  524. package/dist/index.d.ts +7 -0
  525. package/dist/index.d.ts.map +1 -0
  526. package/dist/index.js +44 -0
  527. package/dist/index.js.map +1 -0
  528. package/dist/index.mjs +8 -0
  529. package/dist/index.mjs.map +1 -0
  530. package/dist/package.json +3 -0
  531. package/dist/request-reply/client.d.ts +21 -0
  532. package/dist/request-reply/client.d.ts.map +1 -0
  533. package/dist/request-reply/client.js +92 -0
  534. package/dist/request-reply/client.js.map +1 -0
  535. package/dist/request-reply/client.mjs +67 -0
  536. package/dist/request-reply/client.mjs.map +1 -0
  537. package/dist/request-reply/errors.d.ts +23 -0
  538. package/dist/request-reply/errors.d.ts.map +1 -0
  539. package/dist/request-reply/errors.js +66 -0
  540. package/dist/request-reply/errors.js.map +1 -0
  541. package/dist/request-reply/errors.mjs +39 -0
  542. package/dist/request-reply/errors.mjs.map +1 -0
  543. package/dist/request-reply/executor.d.ts +70 -0
  544. package/dist/request-reply/executor.d.ts.map +1 -0
  545. package/dist/request-reply/executor.js +267 -0
  546. package/dist/request-reply/executor.js.map +1 -0
  547. package/dist/request-reply/executor.mjs +232 -0
  548. package/dist/request-reply/executor.mjs.map +1 -0
  549. package/dist/request-reply/index.d.ts +16 -0
  550. package/dist/request-reply/index.d.ts.map +1 -0
  551. package/dist/request-reply/index.js +47 -0
  552. package/dist/request-reply/index.js.map +1 -0
  553. package/dist/request-reply/index.mjs +16 -0
  554. package/dist/request-reply/index.mjs.map +1 -0
  555. package/dist/request-reply/router.d.ts +20 -0
  556. package/dist/request-reply/router.d.ts.map +1 -0
  557. package/dist/request-reply/router.js +55 -0
  558. package/dist/request-reply/router.js.map +1 -0
  559. package/dist/request-reply/router.mjs +30 -0
  560. package/dist/request-reply/router.mjs.map +1 -0
  561. package/dist/request-reply/types.d.ts +25 -0
  562. package/dist/request-reply/types.d.ts.map +1 -0
  563. package/dist/request-reply/types.js +54 -0
  564. package/dist/request-reply/types.js.map +1 -0
  565. package/dist/request-reply/types.mjs +28 -0
  566. package/dist/request-reply/types.mjs.map +1 -0
  567. package/dist/request-reply/utils.d.ts +9 -0
  568. package/dist/request-reply/utils.d.ts.map +1 -0
  569. package/dist/request-reply/utils.js +51 -0
  570. package/dist/request-reply/utils.js.map +1 -0
  571. package/dist/request-reply/utils.mjs +22 -0
  572. package/dist/request-reply/utils.mjs.map +1 -0
  573. package/package.json +127 -6
  574. package/README.md +0 -4
  575. package/index.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/llm/VercelAILLM.ts"],"sourcesContent":["import { createAlibaba } from '@ai-sdk/alibaba';\nimport { createAnthropic } from '@ai-sdk/anthropic';\nimport { createGoogle } from '@ai-sdk/google';\nimport type { MoonshotAIProviderOptions } from '@ai-sdk/moonshotai';\nimport { createMoonshotAI } from '@ai-sdk/moonshotai';\nimport type { OpenAIResponsesProviderOptions } from '@ai-sdk/openai';\nimport { createOpenAI } from '@ai-sdk/openai';\nimport type { OpenAICompatibleProviderOptions } from '@ai-sdk/openai-compatible';\nimport { createOpenAICompatible } from '@ai-sdk/openai-compatible';\nimport type { JSONObject } from '@ai-sdk/provider';\nimport type { ProviderOptions, ReasoningPart } from '@ai-sdk/provider-utils';\nimport type {\n AssistantContent,\n CallWarning,\n FilePart,\n FinishReason,\n JSONValue,\n LanguageModel,\n LanguageModelCallOptions,\n ModelMessage,\n ProviderMetadata,\n TextPart,\n TextStreamPart,\n ToolCallPart,\n ToolContent,\n ToolSet,\n UserContent,\n} from 'ai';\nimport { APICallError, jsonSchema, Output, streamText } from 'ai';\nimport type {\n ChatCompletionContentPart,\n ChatCompletionCreateParamsStreaming,\n ChatCompletionMessageParam,\n ChatCompletionTool,\n} from 'openai/resources/chat';\nimport type { Logger } from 'winston';\nimport { describeUnknownError, extractErrorLogFields } from '../util/errorLogFields';\nimport type { ILLM, LLMCreateParams, LLMCreateParamsStreaming } from './ILLM';\nimport {\n type CompletionUsage,\n type ExtendedChatCompletionChunk,\n getEmptyUsage,\n type RawAssistantMessage,\n type RawAssistantMessageWithUsage,\n type ThinkingBlock,\n} from './LLMTypes';\n\n// ---------------------------------------------------------------------------\n// Public config\n// ---------------------------------------------------------------------------\n\n/**\n * Providers with a case in {@link buildLanguageModel}. Canonical: the server derives the provider\n * types it will configure from this, so anything it accepts has an adapter behind it.\n */\nexport const VERCEL_AI_PROVIDER_NAMES = [\n 'openai',\n 'anthropic',\n 'google-gemini',\n 'fireworks',\n 'zai',\n 'moonshot',\n 'alibaba',\n 'together',\n 'custom',\n] as const;\n\nexport type VercelAIProviderName = (typeof VERCEL_AI_PROVIDER_NAMES)[number];\n\n/**\n * Adapter-facing config, camelCase throughout. Callers translate from the snake_case wire and\n * storage shapes, which stay as they are because they are the published contract.\n */\nexport interface VercelAIProviderConfig {\n /** Adapter discriminator plus configured resource name (source `type/name/...`). */\n provider: {\n type: VercelAIProviderName;\n name: string;\n };\n /** Provider-facing model identifier and configured model name. */\n model: {\n id: string;\n name: string;\n };\n /** Display name / alias, used for logs and chunk labels. */\n name: string;\n /** Optional base URL override. Explicitly includes `undefined` for Zod-derived type compat. */\n baseUrl?: string | undefined;\n apiKey: string;\n headers: Record<string, string>;\n}\n\nexport interface VercelAILLMConfig {\n providerConfig: VercelAIProviderConfig;\n logger: Logger;\n signal?: AbortSignal;\n}\n\n// ---------------------------------------------------------------------------\n// Shared predicates\n// ---------------------------------------------------------------------------\n\n/** Narrows to an indexable record. */\nfunction isPlainObject(v: unknown): v is Record<string, unknown> {\n return typeof v === 'object' && v !== null && !Array.isArray(v);\n}\n\n/** OpenAI SDK v7 unions function + custom tools; harness only emits function tools. */\nfunction isFunctionTool(tool: ChatCompletionTool): tool is Extract<ChatCompletionTool, { type: 'function' }> {\n return tool.type === 'function';\n}\n\n/** OpenAI SDK v7 unions function + custom tool calls; harness only consumes function calls. */\nfunction isFunctionToolCall<T extends { type: string }>(toolCall: T): toolCall is Extract<T, { type: 'function' }> {\n return toolCall.type === 'function';\n}\n\n// ---------------------------------------------------------------------------\n// Model construction\n// ---------------------------------------------------------------------------\n\n/**\n * Shared by every OpenAI-compatible provider, which differ only by endpoint. The provider type\n * doubles as the `providerOptions` key. Fireworks, Together and Z AI stay here rather than on their\n * own packages: those drop `json_schema`, and Fireworks also clamps efforts its models do accept.\n * TODO: move Z AI to @ai-sdk/zai once https://github.com/vercel/ai/pull/17340 ships.\n */\nfunction compatibleModel(config: VercelAIProviderConfig): LanguageModel {\n const { provider, model, apiKey, headers, baseUrl } = config;\n if (baseUrl === undefined) {\n throw new Error(`Provider \"${provider.type}\" requires a baseUrl`);\n }\n const client = createOpenAICompatible({\n name: provider.type,\n baseURL: baseUrl,\n apiKey,\n // Without this the adapter silently downgrades json_schema to a schema-less json_object.\n supportsStructuredOutputs: true,\n // These endpoints omit token counts from streamed responses unless asked.\n includeUsage: true,\n ...(Object.keys(headers).length > 0 ? { headers } : {}),\n });\n return client(model.id);\n}\n\nexport function buildLanguageModel(config: VercelAIProviderConfig): LanguageModel {\n const { provider, model, baseUrl, apiKey, headers } = config;\n const extraHeaders = Object.keys(headers).length > 0 ? headers : undefined;\n\n switch (provider.type) {\n case 'openai': {\n const client = createOpenAI({\n apiKey,\n ...(baseUrl !== undefined ? { baseURL: baseUrl } : {}),\n ...(extraHeaders !== undefined ? { headers: extraHeaders } : {}),\n });\n return client.responses(model.id);\n }\n case 'anthropic': {\n const client = createAnthropic({\n apiKey,\n ...(baseUrl !== undefined ? { baseURL: baseUrl } : {}),\n ...(extraHeaders !== undefined ? { headers: extraHeaders } : {}),\n });\n return client(model.id);\n }\n case 'google-gemini': {\n const client = createGoogle({\n apiKey,\n ...(baseUrl !== undefined ? { baseURL: baseUrl } : {}),\n ...(extraHeaders !== undefined ? { headers: extraHeaders } : {}),\n });\n return client(model.id);\n }\n case 'moonshot': {\n const client = createMoonshotAI({\n apiKey,\n ...(baseUrl !== undefined ? { baseURL: baseUrl } : {}),\n ...(extraHeaders !== undefined ? { headers: extraHeaders } : {}),\n });\n return client(model.id);\n }\n case 'alibaba': {\n // Endpoints are workspace-scoped, so the package default would address the wrong tenant.\n if (baseUrl === undefined) {\n throw new Error(`Provider \"alibaba\" requires a baseUrl`);\n }\n const client = createAlibaba({\n apiKey,\n baseURL: baseUrl,\n ...(extraHeaders !== undefined ? { headers: extraHeaders } : {}),\n });\n return client(model.id);\n }\n case 'fireworks':\n case 'zai':\n case 'together':\n case 'custom': {\n return compatibleModel(config);\n }\n default: {\n const _exhaustive: never = provider.type;\n throw new Error(`Unknown provider \"${String(_exhaustive)}\"`);\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Reasoning effort\n// ---------------------------------------------------------------------------\n\n/**\n * The cross-provider `streamText({ reasoning })` setting, distinct from `providerOptions`. Derived\n * from the SDK's own type rather than mirrored by hand.\n */\ntype ReasoningLevel = NonNullable<LanguageModelCallOptions['reasoning']>;\n\nconst COMMON_REASONING_LEVELS = [\n 'none',\n 'minimal',\n 'low',\n 'medium',\n 'high',\n 'xhigh',\n] as const satisfies readonly ReasoningLevel[];\n\nconst VERCEL_AI_REASONING_LEVELS = [\n 'provider-default',\n ...COMMON_REASONING_LEVELS,\n] as const satisfies readonly ReasoningLevel[];\n\n// Fails if any union member is missing.\ntrue satisfies Exclude<ReasoningLevel, (typeof VERCEL_AI_REASONING_LEVELS)[number]> extends never ? true : never;\n\nfunction isReasoningLevel(v: string): v is ReasoningLevel {\n return VERCEL_AI_REASONING_LEVELS.some(level => level === v);\n}\n\n/**\n * Efforts the SDK's union cannot express. `xhigh` is its ceiling, so `max` rides in as `xhigh`;\n * Anthropic's adapter raises that back, and {@link maxEffortOption} covers the rest.\n * Keys here must also appear in {@link SUPPORTED_REASONING_EFFORTS}.\n */\nconst EFFORT_ALIASES: Readonly<Record<string, ReasoningLevel>> = { max: 'xhigh' };\n\n/** What a model may advertise in `reasoning_efforts`; anything else resolves to the provider default. */\nexport const SUPPORTED_REASONING_EFFORTS = [...COMMON_REASONING_LEVELS, 'max'] as const;\n\n/**\n * The effort travels on the top-level `reasoning` setting, which each adapter translates per model:\n * an effort string for OpenAI-shaped APIs, a thinking shape for Anthropic, a level or budget for\n * Gemini. A reasoning `providerOptions` entry replaces that path rather than merging with it.\n */\nexport function toReasoningLevel(reasoningEffort: string | undefined): ReasoningLevel | undefined {\n if (reasoningEffort === undefined) {\n return undefined;\n }\n const aliased = EFFORT_ALIASES[reasoningEffort];\n if (aliased !== undefined) {\n return aliased;\n }\n return isReasoningLevel(reasoningEffort) ? reasoningEffort : undefined;\n}\n\n/**\n * `max` needs each adapter's own option, which wins over the top-level setting; the callers below\n * say why. The intersection resolves to `'max'`, so a package dropping it breaks the build.\n */\ntype MaxEffortOption = Pick<OpenAIResponsesProviderOptions, 'reasoningEffort'> &\n Pick<OpenAICompatibleProviderOptions, 'reasoningEffort'> &\n Pick<MoonshotAIProviderOptions, 'reasoningEffort'>;\n\nfunction maxEffortOption(reasoningEffort: string | undefined): MaxEffortOption {\n return reasoningEffort === 'max' ? { reasoningEffort: 'max' } : {};\n}\n\n// ---------------------------------------------------------------------------\n// Structured output\n// ---------------------------------------------------------------------------\n\n/**\n * Kept as plain data rather than an SDK `Output` instance, since `Output` isn't a nameable\n * exported type from `ai` — see `buildOutput`.\n */\nexport type StructuredOutputSpec =\n | { mode: 'text' }\n | { mode: 'json' }\n | {\n mode: 'json_schema';\n schema: Record<string, unknown>;\n name: string;\n description: string | undefined;\n /** Mirrors `response_format.json_schema.strict`; consumed by `buildProviderOptions`. */\n strict: boolean | undefined;\n };\n\n/** Converts an OpenAI-format `response_format` into a normalized `StructuredOutputSpec`. */\nexport function toStructuredOutputSpec(\n responseFormat: ChatCompletionCreateParamsStreaming['response_format'],\n): StructuredOutputSpec {\n if (responseFormat === undefined || responseFormat.type === 'text') {\n return { mode: 'text' };\n }\n if (responseFormat.type === 'json_object') {\n return { mode: 'json' };\n }\n const { json_schema } = responseFormat;\n return {\n mode: 'json_schema',\n schema: json_schema.schema ?? { type: 'object', properties: {} },\n name: json_schema.name,\n description: json_schema.description,\n strict: json_schema.strict ?? undefined,\n };\n}\n\n/** Not exported: `Output`'s type isn't nameable outside `ai`, so a return type can't be declared. */\nfunction buildOutput(spec: StructuredOutputSpec) {\n switch (spec.mode) {\n case 'text':\n return undefined;\n case 'json':\n return Output.json();\n case 'json_schema':\n return Output.object({\n schema: jsonSchema(spec.schema),\n name: spec.name,\n ...(spec.description !== undefined ? { description: spec.description } : {}),\n });\n default: {\n const _exhaustive: never = spec;\n throw new Error(`Unknown structured output mode: ${JSON.stringify(_exhaustive)}`);\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Provider options\n// ---------------------------------------------------------------------------\n\n/** `rawBody` is a parsed JSON request body, so any value present is a valid JSONValue. */\nfunction readBodyField({ rawBody, key }: { rawBody: unknown; key: string }): JSONValue | undefined {\n const val: unknown = Reflect.get(Object(rawBody), key);\n return val !== undefined ? (val as JSONValue) : undefined;\n}\n\nfunction openaiProviderOptions({\n rawBody,\n strictJsonSchema,\n reasoningEffort,\n}: {\n rawBody: unknown;\n strictJsonSchema: boolean | undefined;\n reasoningEffort: string | undefined;\n}): JSONObject {\n const serviceTier = readBodyField({ rawBody, key: 'service_tier' });\n const user = readBodyField({ rawBody, key: 'user' });\n const promptCacheKey = readBodyField({ rawBody, key: 'prompt_cache_key' });\n const parallelToolCalls = readBodyField({ rawBody, key: 'parallel_tool_calls' });\n const reasoningSummary = readBodyField({ rawBody, key: 'reasoning_summary' });\n // No server-side storage, and request the encrypted reasoning token so replay stays stateless.\n return {\n store: false,\n include: ['reasoning.encrypted_content'],\n reasoningSummary: 'auto',\n // gpt-5.6 serves both xhigh and max, so the aliased top-level level asks for one rung less.\n ...maxEffortOption(reasoningEffort),\n ...(reasoningSummary !== undefined ? { reasoningSummary } : {}),\n ...(strictJsonSchema !== undefined ? { strictJsonSchema } : {}),\n ...(serviceTier !== undefined ? { serviceTier } : {}),\n ...(user !== undefined ? { user } : {}),\n ...(promptCacheKey !== undefined ? { promptCacheKey } : {}),\n ...(parallelToolCalls !== undefined ? { parallelToolCalls } : {}),\n };\n}\n\n/**\n * Forwards but never pins `thinking` and `effort`: both replace the adapter's per-model resolution\n * and no single value fits every model. This is the caller's only route to disabling thinking, or to\n * the `display: 'summarized'` that makes Claude 5 return reasoning text instead of an empty block.\n *\n * Prompt caching defaults on: Anthropic bills a write once, then cheaper reads on stable prefixes\n * (system / tools / early messages). Callers can override via `cache_control` in the request body.\n */\nfunction anthropicProviderOptions(rawBody: unknown): JSONObject | undefined {\n const cacheControl = readBodyField({ rawBody, key: 'cache_control' }) ?? { type: 'ephemeral' };\n const disableParallelToolUse = readBodyField({ rawBody, key: 'disable_parallel_tool_use' });\n const thinking = readBodyField({ rawBody, key: 'thinking' });\n const effort = readBodyField({ rawBody, key: 'effort' });\n const opts: JSONObject = {\n cacheControl,\n ...(disableParallelToolUse !== undefined ? { disableParallelToolUse } : {}),\n ...(thinking !== undefined ? { thinking } : {}),\n ...(effort !== undefined ? { effort } : {}),\n };\n return opts;\n}\n\n/**\n * Gemini returns thought summaries only when `includeThoughts` is set, and `@ai-sdk/google` omits it\n * — without this the model bills reasoning tokens and returns none. The effort itself rides in the\n * top-level `reasoning` setting. An explicit `thinking_config` in the request body wins.\n */\nfunction googleGeminiThinkingConfig({\n rawBody,\n reasoningRequested,\n}: {\n rawBody: unknown;\n reasoningRequested: boolean;\n}): JSONValue | undefined {\n const fromBody = readBodyField({ rawBody, key: 'thinking_config' });\n if (!reasoningRequested) {\n return fromBody;\n }\n if (typeof fromBody === 'object' && fromBody !== null && !Array.isArray(fromBody)) {\n return { includeThoughts: true, ...fromBody };\n }\n return { includeThoughts: true };\n}\n\nfunction googleGeminiProviderOptions({\n rawBody,\n reasoningRequested,\n}: {\n rawBody: unknown;\n reasoningRequested: boolean;\n}): JSONObject | undefined {\n const safetySettings = readBodyField({ rawBody, key: 'safety_settings' });\n const thinkingConfig = googleGeminiThinkingConfig({ rawBody, reasoningRequested });\n const cachedContent = readBodyField({ rawBody, key: 'cached_content' });\n const opts: JSONObject = {\n ...(safetySettings !== undefined ? { safetySettings } : {}),\n ...(thinkingConfig !== undefined ? { thinkingConfig } : {}),\n ...(cachedContent !== undefined ? { cachedContent } : {}),\n };\n return Object.keys(opts).length > 0 ? opts : undefined;\n}\n\n/**\n * `thinking` and `reasoning_history` are forwarded but never pinned: they are the caller's route to\n * turning thinking off, or to replaying it verbatim.\n */\nfunction moonshotProviderOptions({\n rawBody,\n reasoningEffort,\n}: {\n rawBody: unknown;\n reasoningEffort: string | undefined;\n}): JSONObject | undefined {\n const thinking = readBodyField({ rawBody, key: 'thinking' });\n const reasoningHistory = readBodyField({ rawBody, key: 'reasoning_history' });\n const opts: JSONObject = {\n // Moonshot's own ceiling is `max`; the aliased `xhigh` is not one of its levels.\n ...maxEffortOption(reasoningEffort),\n ...(thinking !== undefined ? { thinking } : {}),\n ...(reasoningHistory !== undefined ? { reasoningHistory } : {}),\n };\n return Object.keys(opts).length > 0 ? opts : undefined;\n}\n\n/** Qwen resolves the top-level effort into a thinking budget; these override that resolution. */\nfunction alibabaProviderOptions(rawBody: unknown): JSONObject | undefined {\n const enableThinking = readBodyField({ rawBody, key: 'enable_thinking' });\n const thinkingBudget = readBodyField({ rawBody, key: 'thinking_budget' });\n const parallelToolCalls = readBodyField({ rawBody, key: 'parallel_tool_calls' });\n const opts: JSONObject = {\n ...(enableThinking !== undefined ? { enableThinking } : {}),\n ...(thinkingBudget !== undefined ? { thinkingBudget } : {}),\n ...(parallelToolCalls !== undefined ? { parallelToolCalls } : {}),\n };\n return Object.keys(opts).length > 0 ? opts : undefined;\n}\n\n/**\n * The adapter copies options outside its own schema into the body under the same key, so these are\n * wire names, not camelCase. Unvalidated: a field the endpoint rejects fails loudly.\n */\nconst COMPATIBLE_BODY_FIELDS = [\n 'service_tier',\n 'user',\n 'prompt_cache_key',\n 'parallel_tool_calls',\n 'thinking',\n 'thinking_budget',\n 'enable_thinking',\n 'reasoning_history',\n] as const;\n\nfunction compatibleProviderOptions({\n strictJsonSchema,\n reasoningEffort,\n rawBody,\n}: {\n strictJsonSchema: boolean | undefined;\n reasoningEffort: string | undefined;\n rawBody: unknown;\n}): JSONObject | undefined {\n const forwarded: JSONObject = Object.fromEntries(\n COMPATIBLE_BODY_FIELDS.flatMap(key => {\n const value = readBodyField({ rawBody, key });\n return value === undefined ? [] : [[key, value] as const];\n }),\n );\n const opts: JSONObject = {\n // These endpoints discard an effort they do not recognise, and `xhigh` is one of those.\n ...maxEffortOption(reasoningEffort),\n ...forwarded,\n ...(strictJsonSchema !== undefined ? { strictJsonSchema } : {}),\n };\n return Object.keys(opts).length > 0 ? opts : undefined;\n}\n\n/**\n * Provider-specific fields in `rawBody` (`cache_control`, `service_tier`, `safety_settings`, …)\n * are forwarded by snake_case key with no validation.\n */\nexport function buildProviderOptions({\n config,\n reasoningEffort,\n structuredOutputSpec,\n rawBody,\n}: {\n config: VercelAIProviderConfig;\n /** The requested effort, which rides in the top-level `reasoning` setting for every provider. */\n reasoningEffort: string | undefined;\n structuredOutputSpec: StructuredOutputSpec;\n rawBody: unknown;\n}): ProviderOptions {\n const strictJsonSchema = structuredOutputSpec.mode === 'json_schema' ? structuredOutputSpec.strict : undefined;\n if (config.provider.type === 'openai') {\n return { openai: openaiProviderOptions({ rawBody, strictJsonSchema, reasoningEffort }) };\n } else if (config.provider.type === 'anthropic') {\n const anthropic = anthropicProviderOptions(rawBody);\n return anthropic !== undefined ? { anthropic } : {};\n } else if (config.provider.type === 'google-gemini') {\n const google = googleGeminiProviderOptions({ rawBody, reasoningRequested: reasoningEffort !== undefined });\n return google !== undefined ? { google } : {};\n } else if (config.provider.type === 'moonshot') {\n // The package names its options key after itself, not after the provider.\n const moonshotai = moonshotProviderOptions({ rawBody, reasoningEffort });\n return moonshotai !== undefined ? { moonshotai } : {};\n } else if (config.provider.type === 'alibaba') {\n const alibaba = alibabaProviderOptions(rawBody);\n return alibaba !== undefined ? { alibaba } : {};\n } else {\n // The remaining providers all share the compatible adapter, which reads its options from a key\n // matching the `name` it was built with — the provider type itself.\n const compatible = compatibleProviderOptions({ strictJsonSchema, reasoningEffort, rawBody });\n return compatible !== undefined ? { [config.provider.type]: compatible } : {};\n }\n}\n\n// ---------------------------------------------------------------------------\n// Request conversion (OpenAI → SDK)\n// ---------------------------------------------------------------------------\n\n/** Prefers `max_completion_tokens`, falling back to the deprecated `max_tokens`. */\nexport function resolveMaxOutputTokens(\n body: Pick<ChatCompletionCreateParamsStreaming, 'max_completion_tokens'>,\n): number | undefined {\n const limit: unknown = body.max_completion_tokens ?? Reflect.get(body, 'max_tokens');\n return typeof limit === 'number' ? limit : undefined;\n}\n\n/** Parses the MIME type from a data URI (`data:<mime>;base64,...`). */\nexport function parseMimeFromDataUri(uri: string): string | undefined {\n const match = /^data:([^;,]+)/.exec(uri);\n return match?.[1];\n}\n\n/** Returns `undefined` for parts with no inline data, e.g. `file_id` only. */\nexport function toFilePart(file: {\n file_data?: string | undefined;\n filename?: string | undefined;\n}): FilePart | undefined {\n const { file_data, filename } = file;\n if (!file_data) return undefined;\n const mediaType = parseMimeFromDataUri(file_data) ?? 'application/octet-stream';\n return {\n type: 'file',\n data: file_data,\n mediaType,\n ...(filename !== undefined ? { filename } : {}),\n };\n}\n\n/** Converts a user content array from OpenAI format to Vercel AI SDK UserContent. */\nexport function toUserContent(content: string | ChatCompletionContentPart[]): UserContent {\n if (typeof content === 'string') {\n return content;\n }\n const parts: UserContent = [];\n for (const part of content) {\n if (part.type === 'text') {\n parts.push({ type: 'text', text: part.text });\n continue;\n }\n if (part.type === 'image_url') {\n // ImagePart is deprecated in favour of FilePart.\n const url = part.image_url.url;\n const mediaType = parseMimeFromDataUri(url) ?? 'image/*';\n parts.push({ type: 'file', data: url, mediaType });\n continue;\n }\n if (part.type === 'file') {\n const filePart = toFilePart(part.file);\n if (filePart !== undefined) {\n parts.push(filePart);\n }\n // file_id-only parts are unsupported (require server-side lookup); skip.\n continue;\n }\n // input_audio — not universally supported across providers; omit.\n }\n return parts;\n}\n\n/**\n * Converts an assistant message to the SDK shape for multi-turn replay.\n *\n * Each adapter reads its reasoning-replay token from a different key, and a mismatch fails\n * silently: the adapter drops the reasoning part and the model loses its chain.\n * - `'openai'` → `openai.reasoningEncryptedContent`\n * - `'anthropic'` → `anthropic.signature`\n * - `'google-gemini'` → per-tool-call `google.thoughtSignature`, no standalone reasoning block\n * - `'custom'` → OpenAI-compatible ignores providerOptions, so the token has nowhere to go\n *\n * Signatures attach when `source` (`type/name/model`) matches both provider type and\n * provider name. Missing/foreign source → reasoning text only.\n */\nexport function toAssistantModelMessage({\n msg,\n provider,\n providerName,\n logger,\n}: {\n msg: Extract<ChatCompletionMessageParam, { role: 'assistant' }>;\n provider: VercelAIProviderName;\n /** Configured provider resource name. */\n providerName: string;\n logger?: Logger | undefined;\n}): ModelMessage {\n const parts: AssistantContent = [];\n\n // `thinking_blocks` / `source` are attached at runtime by AgentThread and absent from the OpenAI SDK type.\n const rawThinking: unknown = Reflect.get(msg, 'thinking_blocks');\n const attachSignature = shouldAttachReasoningSignature({\n source: Reflect.get(msg, 'source'),\n provider,\n providerName,\n logger,\n });\n // Alibaba appends replayed thinking to the visible answer, and Qwen signs nothing to preserve.\n if (Array.isArray(rawThinking) && provider !== 'alibaba') {\n // Widen any[] → unknown[] so the in-guards below narrow safely.\n const blocks: unknown[] = rawThinking;\n for (const tb of blocks) {\n if (\n typeof tb === 'object' &&\n tb !== null &&\n 'type' in tb &&\n 'thinking' in tb &&\n tb.type === 'thinking' &&\n typeof tb.thinking === 'string'\n ) {\n const signature = 'signature' in tb && typeof tb.signature === 'string' ? tb.signature : undefined;\n let reasoningProviderOptions: ProviderOptions | undefined;\n if (signature !== undefined && attachSignature) {\n if (provider === 'openai') {\n reasoningProviderOptions = { openai: { reasoningEncryptedContent: signature } };\n } else if (provider === 'anthropic') {\n reasoningProviderOptions = { anthropic: { signature } };\n }\n }\n const reasoningPart: ReasoningPart = {\n type: 'reasoning',\n text: tb.thinking,\n ...(reasoningProviderOptions !== undefined ? { providerOptions: reasoningProviderOptions } : {}),\n };\n parts.push(reasoningPart);\n }\n }\n }\n\n const rawContent = msg.content;\n if (rawContent) {\n const text =\n typeof rawContent === 'string'\n ? rawContent\n : rawContent\n .filter((p): p is { type: 'text'; text: string } => p.type === 'text')\n .map(p => p.text)\n .join('');\n if (text) {\n const textPart: TextPart = { type: 'text', text };\n parts.push(textPart);\n }\n }\n\n if (msg.tool_calls?.length) {\n for (const tc of msg.tool_calls) {\n if (!isFunctionToolCall(tc)) {\n continue;\n }\n let input: Record<string, unknown> = {};\n try {\n const parsed: unknown = JSON.parse(tc.function.arguments);\n if (isPlainObject(parsed)) {\n input = parsed;\n }\n } catch {\n // malformed arguments — leave empty record\n }\n const rawProviderFields: unknown = Reflect.get(tc, 'provider_specific_fields');\n const thoughtSignature =\n isPlainObject(rawProviderFields) && typeof rawProviderFields['thought_signature'] === 'string'\n ? rawProviderFields['thought_signature']\n : undefined;\n const toolCallPart: ToolCallPart = {\n type: 'tool-call',\n toolCallId: tc.id,\n toolName: tc.function.name,\n input,\n ...(thoughtSignature !== undefined\n ? { providerOptions: { google: { thoughtSignature } } satisfies ProviderOptions }\n : {}),\n };\n parts.push(toolCallPart);\n }\n }\n\n return {\n role: 'assistant',\n content: parts.length > 0 ? parts : [{ type: 'text', text: '' }],\n };\n}\n\n/** Parse `provider_type/provider_name/model_name`. */\nfunction parseAssistantMessageSource(\n source: string,\n): { providerType: string; providerName: string; modelName: string } | undefined {\n const [providerType, providerName, modelName, ...rest] = source.split('/');\n if (rest.length > 0 || !providerType || !providerName || !modelName) {\n return undefined;\n }\n return { providerType, providerName, modelName };\n}\n\n/** Attach when both provider type and configured provider name match `source`. */\nexport function shouldAttachReasoningSignature({\n source,\n provider,\n providerName,\n logger,\n}: {\n source: unknown;\n provider: VercelAIProviderName;\n providerName: string;\n logger?: Logger | undefined;\n}): boolean {\n if (source === undefined) {\n return false;\n }\n if (typeof source !== 'string') {\n logger?.warn('Ignoring non-string assistant message source; skipping reasoning signature replay', { source });\n return false;\n }\n const parsed = parseAssistantMessageSource(source);\n if (parsed === undefined) {\n logger?.warn('Ignoring malformed assistant message source; skipping reasoning signature replay', { source });\n return false;\n }\n return parsed.providerType === provider && parsed.providerName === providerName;\n}\n\nexport interface ConvertedMessages {\n instructions: string | undefined;\n messages: ModelMessage[];\n}\n\n/**\n * System messages are extracted into `instructions`, since SDK v7 no longer accepts\n * `{ role: 'system' }` in the messages array. The toolCallId → toolName lookup is built first\n * because tool result messages carry only the id.\n */\nexport function convertMessages({\n messages,\n provider,\n providerName,\n logger,\n}: {\n messages: ChatCompletionMessageParam[];\n provider: VercelAIProviderName;\n providerName: string;\n logger?: Logger | undefined;\n}): ConvertedMessages {\n const toolNameById = new Map<string, string>();\n for (const msg of messages) {\n if (msg.role === 'assistant' && msg.tool_calls) {\n for (const tc of msg.tool_calls) {\n if (!isFunctionToolCall(tc)) {\n continue;\n }\n toolNameById.set(tc.id, tc.function.name);\n }\n }\n }\n\n const systemParts: string[] = [];\n const result: ModelMessage[] = [];\n for (const msg of messages) {\n if (msg.role === 'system') {\n const content = typeof msg.content === 'string' ? msg.content : msg.content.map(p => p.text).join('');\n systemParts.push(content);\n continue;\n }\n if (msg.role === 'user') {\n result.push({ role: 'user', content: toUserContent(msg.content) });\n continue;\n }\n if (msg.role === 'assistant') {\n result.push(toAssistantModelMessage({ msg, provider, providerName, logger }));\n continue;\n }\n if (msg.role === 'tool') {\n const toolName = toolNameById.get(msg.tool_call_id) ?? '';\n const toolContent: ToolContent = [\n {\n type: 'tool-result',\n toolCallId: msg.tool_call_id,\n toolName,\n output: {\n type: 'text',\n value: typeof msg.content === 'string' ? msg.content : JSON.stringify(msg.content),\n },\n },\n ];\n result.push({ role: 'tool', content: toolContent });\n continue;\n }\n // 'developer' / 'function' roles — not used in the harness pipeline; skip.\n }\n return { instructions: systemParts.length > 0 ? systemParts.join('\\n\\n') : undefined, messages: result };\n}\n\n/** Converts OpenAI tool definitions to the Vercel AI SDK ToolSet. */\nexport function convertTools(tools: ChatCompletionTool[] | undefined): ToolSet | undefined {\n if (!tools?.length) {\n return undefined;\n }\n const toolSet: ToolSet = {};\n for (const t of tools) {\n if (!isFunctionTool(t)) {\n continue;\n }\n toolSet[t.function.name] = {\n inputSchema: jsonSchema(t.function.parameters ?? { type: 'object', properties: {} }),\n ...(t.function.description !== undefined ? { description: t.function.description } : {}),\n };\n }\n return Object.keys(toolSet).length > 0 ? toolSet : undefined;\n}\n\n// ---------------------------------------------------------------------------\n// streamText args\n// ---------------------------------------------------------------------------\n\n/**\n * Pure-data subset of `streamText(...)`'s call args. Uses `?` rather than this file's usual\n * explicit `| undefined`, to match `streamText`'s own signature under `exactOptionalPropertyTypes`.\n */\nexport type StreamTextArgs = LanguageModelCallOptions & {\n model: LanguageModel;\n instructions?: string;\n messages: ModelMessage[];\n tools?: ToolSet;\n providerOptions?: ProviderOptions;\n abortSignal?: AbortSignal;\n maxRetries: number;\n};\n\n/**\n * Exported so the final wiring is unit-testable: a value computed correctly but never spread into\n * this object would pass every sub-function test. `output` is excluded and spread by the caller,\n * since its unnameable type would make this function's return type unnameable too.\n */\nexport function buildStreamTextArgs(input: {\n model: LanguageModel;\n instructions: string | undefined;\n messages: ModelMessage[];\n tools: ToolSet | undefined;\n reasoning: ReasoningLevel | undefined;\n providerOptions: ProviderOptions;\n maxOutputTokens: number | undefined;\n temperature: number | null | undefined;\n topP: number | null | undefined;\n topK: number | null | undefined;\n presencePenalty: number | null | undefined;\n frequencyPenalty: number | null | undefined;\n stopSequences: string[] | null | undefined;\n seed: number | null | undefined;\n abortSignal: AbortSignal | undefined;\n}): StreamTextArgs {\n const {\n model,\n instructions,\n messages,\n tools,\n reasoning,\n providerOptions,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n presencePenalty,\n frequencyPenalty,\n stopSequences,\n seed,\n abortSignal,\n } = input;\n return {\n model,\n ...(instructions !== undefined ? { instructions } : {}),\n messages,\n ...(tools !== undefined ? { tools } : {}),\n ...(reasoning !== undefined ? { reasoning } : {}),\n ...(maxOutputTokens !== undefined ? { maxOutputTokens } : {}),\n ...(temperature != null ? { temperature } : {}),\n ...(topP != null ? { topP } : {}),\n ...(topK != null ? { topK } : {}),\n ...(presencePenalty != null ? { presencePenalty } : {}),\n ...(frequencyPenalty != null ? { frequencyPenalty } : {}),\n ...(stopSequences != null ? { stopSequences } : {}),\n ...(seed != null ? { seed } : {}),\n ...(Object.keys(providerOptions).length > 0 ? { providerOptions } : {}),\n ...(abortSignal !== undefined ? { abortSignal } : {}),\n maxRetries: 0,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Stream mapping (SDK → harness chunks)\n// ---------------------------------------------------------------------------\n\n/** Maps Vercel AI SDK LanguageModelUsage → harness CompletionUsage. */\nexport function normalizeUsage(usage: {\n inputTokens: number | undefined;\n outputTokens: number | undefined;\n inputTokenDetails: {\n cacheReadTokens: number | undefined;\n cacheWriteTokens: number | undefined;\n noCacheTokens: number | undefined;\n };\n outputTokenDetails: {\n reasoningTokens: number | undefined;\n textTokens: number | undefined;\n };\n // LanguageModelUsage.raw: AI SDK has no cost field; extras like gateway costInUSD live here.\n raw?: JSONObject;\n}): CompletionUsage {\n const input = usage.inputTokens ?? 0;\n const output = usage.outputTokens ?? 0;\n const costInUsd = usage.raw?.['costInUSD'];\n return {\n input_tokens: input,\n output_tokens: output,\n total_tokens: input + output,\n cache_read_tokens: usage.inputTokenDetails.cacheReadTokens ?? undefined,\n cache_write_tokens: usage.inputTokenDetails.cacheWriteTokens ?? undefined,\n reasoning_tokens: usage.outputTokenDetails.reasoningTokens ?? undefined,\n cost_in_usd: typeof costInUsd === 'number' && costInUsd >= 0 ? costInUsd : undefined,\n };\n}\n\n/**\n * Prefer AI SDK `APICallError` (`message` / `statusCode`):\n * https://ai-sdk.dev/docs/reference/ai-sdk-errors/ai-api-call-error#properties\n * Fallback is required because stream `error` parts are typed `unknown` (not only\n * `APICallError`) — plain objects would otherwise stringify to \"[object Object]\".\n */\nexport function describeStreamError(raw: unknown): string {\n if (APICallError.isInstance(raw)) {\n if (raw.statusCode != null) {\n return `Request failed (${String(raw.statusCode)}): ${raw.message}`;\n }\n return raw.message;\n }\n return describeUnknownError(raw);\n}\n\nexport function toStreamError(raw: unknown): Error {\n if (raw instanceof Error) return raw;\n return new Error(describeStreamError(raw), { cause: raw });\n}\n\nexport function mapFinishReason(reason: FinishReason): RawAssistantMessageWithUsage['finish_reason'] {\n switch (reason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'tool-calls':\n return 'tool_calls';\n case 'content-filter':\n return 'content_filter';\n // No harness equivalent for these — fall back to 'stop'.\n case 'error':\n case 'other':\n return 'stop';\n default: {\n const _exhaustive: never = reason;\n throw new Error(`Unknown finish reason: ${String(_exhaustive)}`);\n }\n }\n}\n\ninterface ToolCallState {\n index: number;\n id: string;\n name: string;\n arguments: string;\n /** Gemini `thoughtSignature` from `providerMetadata.google` on the `tool-input-start` part. */\n thoughtSignature: string | undefined;\n}\n\n/**\n * Copies the reasoning-replay token onto the block, scanning every provider namespace since only\n * the active one is populated. Providers disagree on where it arrives: OpenAI attaches it to\n * `reasoning-end`, Anthropic to a text-less `reasoning-delta`. Missing either silently loses the\n * chain, since unsigned thinking blocks are dropped on replay.\n */\nfunction applyReasoningSignature({\n block,\n providerMetadata,\n}: {\n block: ThinkingBlock;\n providerMetadata: ProviderMetadata | undefined;\n}): void {\n if (providerMetadata === undefined) {\n return;\n }\n for (const meta of Object.values(providerMetadata)) {\n if ('reasoningEncryptedContent' in meta && typeof meta['reasoningEncryptedContent'] === 'string') {\n block.signature = meta['reasoningEncryptedContent'];\n return;\n }\n if ('signature' in meta && typeof meta['signature'] === 'string') {\n block.signature = meta['signature'];\n return;\n }\n }\n}\n\n/**\n * Which reasoning item a stream part belongs to. OpenAI is alone in splitting one item across\n * several parts, so elsewhere this is absent and every part stands on its own.\n */\nfunction reasoningItemId(providerMetadata: ProviderMetadata | undefined): string | undefined {\n if (providerMetadata === undefined) {\n return undefined;\n }\n for (const meta of Object.values(providerMetadata)) {\n if ('itemId' in meta && typeof meta['itemId'] === 'string') {\n return meta['itemId'];\n }\n }\n return undefined;\n}\n\n/**\n * Where the SDK reports what it changed about our request: an effort a model cannot honour and so\n * was coerced, a setting the provider ignored. Nothing else surfaces these.\n */\nexport function describeCallWarning(warning: CallWarning): string {\n switch (warning.type) {\n case 'unsupported':\n case 'compatibility':\n return warning.details !== undefined\n ? `${warning.type}: ${warning.feature} (${warning.details})`\n : `${warning.type}: ${warning.feature}`;\n case 'deprecated':\n return `deprecated: ${warning.setting} - ${warning.message}`;\n case 'other':\n return `other: ${warning.message}`;\n default: {\n const _exhaustive: never = warning;\n throw new Error(`Unknown call warning: ${JSON.stringify(_exhaustive)}`);\n }\n }\n}\n\n/** Synthetic chunk fields shared by every chunk emitted for a single stream. */\ninterface ChunkMeta {\n id: string;\n created: number;\n model: string;\n}\n\n/**\n * Converts an SDK stream into harness chunks, returning the aggregated assistant message.\n * Takes a plain `AsyncIterable` so hand-built fixtures work in tests.\n */\nexport async function* mapStreamToChunks({\n stream,\n chunkMeta,\n}: {\n stream: AsyncIterable<TextStreamPart<ToolSet>>;\n chunkMeta: ChunkMeta;\n}): AsyncGenerator<ExtendedChatCompletionChunk, RawAssistantMessageWithUsage, unknown> {\n const makeBase = (): Omit<ExtendedChatCompletionChunk, 'choices' | 'usage'> => ({\n id: chunkMeta.id,\n object: 'chat.completion.chunk' as const,\n created: chunkMeta.created,\n model: chunkMeta.model,\n });\n\n const toolCallStates = new Map<string, ToolCallState>();\n let nextToolIndex = 0;\n let accumulatedText = '';\n const accumulatedThinking: ThinkingBlock[] = [];\n const thinkingByReasoningItem = new Map<string, ThinkingBlock>();\n let currentThinkingBlock: ThinkingBlock | null = null;\n\n /**\n * The block this reasoning part belongs to: the one already open for its item, or a new one.\n *\n * OpenAI streams a single reasoning item as several summary parts, and hands every part the one\n * token that identifies the item. A block per part would therefore replay that item once per\n * part, every copy presenting the same token with a different piece of the reasoning. Grouping by\n * item keeps one block per token, which is the only shape the provider can be replayed.\n */\n const openThinkingBlock = (providerMetadata: ProviderMetadata | undefined): ThinkingBlock => {\n const itemId = reasoningItemId(providerMetadata);\n const started = itemId !== undefined ? thinkingByReasoningItem.get(itemId) : undefined;\n if (started !== undefined) {\n // Each part is its own titled paragraph, and a part can be empty.\n if (started.thinking.length > 0) {\n started.thinking += '\\n\\n';\n }\n return started;\n }\n const block: ThinkingBlock = { type: 'thinking', thinking: '' };\n accumulatedThinking.push(block);\n if (itemId !== undefined) {\n thinkingByReasoningItem.set(itemId, block);\n }\n return block;\n };\n let finalUsage: CompletionUsage = getEmptyUsage();\n let finalFinishReason: RawAssistantMessageWithUsage['finish_reason'] = 'stop';\n\n for await (const part of stream) {\n switch (part.type) {\n case 'text-delta': {\n accumulatedText += part.text;\n yield {\n ...makeBase(),\n choices: [\n {\n index: 0,\n delta: { content: part.text, role: 'assistant' },\n finish_reason: null,\n logprobs: null,\n },\n ],\n };\n break;\n }\n\n case 'reasoning-start': {\n currentThinkingBlock = openThinkingBlock(part.providerMetadata);\n break;\n }\n\n case 'reasoning-delta': {\n // A delta with no preceding `reasoning-start` would otherwise drop the block and its\n // signature, breaking replay while the text still streams out.\n currentThinkingBlock ??= openThinkingBlock(part.providerMetadata);\n currentThinkingBlock.thinking += part.text;\n applyReasoningSignature({ block: currentThinkingBlock, providerMetadata: part.providerMetadata });\n yield {\n ...makeBase(),\n choices: [\n {\n index: 0,\n delta: {\n thinking_blocks: [{ type: 'thinking', thinking: part.text }],\n reasoning_content: part.text,\n } satisfies ExtendedChatCompletionChunk['choices'][0]['delta'],\n finish_reason: null,\n logprobs: null,\n },\n ],\n };\n break;\n }\n\n case 'reasoning-end': {\n if (currentThinkingBlock !== null) {\n applyReasoningSignature({ block: currentThinkingBlock, providerMetadata: part.providerMetadata });\n }\n currentThinkingBlock = null;\n break;\n }\n\n case 'tool-input-start': {\n const idx = nextToolIndex++;\n // Gemini's replay token arrives here, and only here, for thinking models.\n const googleMeta = part.providerMetadata?.['google'];\n const thoughtSignature =\n googleMeta !== undefined && typeof googleMeta['thoughtSignature'] === 'string'\n ? googleMeta['thoughtSignature']\n : undefined;\n toolCallStates.set(part.id, {\n index: idx,\n id: part.id,\n name: part.toolName,\n arguments: '',\n thoughtSignature,\n });\n yield {\n ...makeBase(),\n choices: [\n {\n index: 0,\n delta: {\n tool_calls: [\n {\n index: idx,\n id: part.id,\n type: 'function',\n function: { name: part.toolName, arguments: '' },\n },\n ],\n },\n finish_reason: null,\n logprobs: null,\n },\n ],\n };\n break;\n }\n\n case 'tool-input-delta': {\n const state = toolCallStates.get(part.id);\n // With no matching `tool-input-start` there is no index to attribute this to; emitting it\n // anyway would append the arguments to an unrelated tool call.\n if (state === undefined) {\n break;\n }\n state.arguments += part.delta;\n yield {\n ...makeBase(),\n choices: [\n {\n index: 0,\n delta: {\n tool_calls: [{ index: state.index, function: { arguments: part.delta } }],\n },\n finish_reason: null,\n logprobs: null,\n },\n ],\n };\n break;\n }\n\n case 'finish-step': {\n finalUsage = normalizeUsage(part.usage);\n finalFinishReason = mapFinishReason(part.finishReason);\n yield {\n ...makeBase(),\n choices: [\n {\n index: 0,\n delta: {},\n finish_reason: finalFinishReason,\n logprobs: null,\n },\n ],\n usage: finalUsage,\n };\n break;\n }\n\n case 'error': {\n const raw = part.error;\n const message = describeStreamError(raw);\n // Preserve the original stream error as cause; toast/turn use .message only.\n const cause = raw instanceof Error ? raw : new Error(message);\n throw new Error(message, { cause });\n }\n\n case 'abort': {\n const aborted = new Error('LLM stream aborted');\n aborted.name = 'AbortError';\n throw aborted;\n }\n\n case 'start':\n case 'text-start':\n case 'text-end':\n case 'custom':\n case 'tool-input-end':\n case 'source':\n case 'file':\n case 'reasoning-file':\n case 'tool-call':\n case 'tool-result':\n case 'tool-error':\n case 'tool-output-denied':\n case 'tool-approval-request':\n case 'tool-approval-response':\n case 'start-step':\n case 'finish':\n case 'raw':\n // Structural/bookkeeping events — no harness chunk is emitted for these.\n break;\n\n default: {\n const _exhaustive: never = part;\n throw new Error(`Unknown stream part type: ${JSON.stringify(_exhaustive)}`);\n }\n }\n }\n\n const toolCalls = [...toolCallStates.values()]\n .sort((a, b) => a.index - b.index)\n .map(tc => ({\n id: tc.id,\n type: 'function' as const,\n function: { name: tc.name, arguments: tc.arguments },\n ...(tc.thoughtSignature !== undefined\n ? { provider_specific_fields: { thought_signature: tc.thoughtSignature } }\n : {}),\n }));\n\n const output: RawAssistantMessage = {\n role: 'assistant',\n content: accumulatedText || null,\n ...(accumulatedThinking.length > 0 ? { thinking_blocks: accumulatedThinking } : {}),\n ...(toolCalls.length > 0 ? { tool_calls: toolCalls } : {}),\n };\n\n return { usage: finalUsage, output, finish_reason: finalFinishReason };\n}\n\n// ---------------------------------------------------------------------------\n// VercelAILLM\n// ---------------------------------------------------------------------------\n\n/** ILLM implementation backed by Vercel AI SDK, supporting multiple LLM providers. */\nexport class VercelAILLM implements ILLM {\n private readonly config: VercelAILLMConfig;\n private readonly logger: Logger;\n private readonly signal: AbortSignal | undefined;\n\n constructor(config: VercelAILLMConfig) {\n this.config = config;\n this.logger = config.logger;\n this.signal = config.signal;\n }\n\n async *create(\n body: LLMCreateParamsStreaming,\n ): AsyncGenerator<ExtendedChatCompletionChunk, RawAssistantMessageWithUsage, unknown> {\n const { providerConfig } = this.config;\n const languageModel = buildLanguageModel(providerConfig);\n const { provider, model } = providerConfig;\n\n const { instructions, messages } = convertMessages({\n messages: body.messages,\n provider: provider.type,\n providerName: provider.name,\n logger: this.logger,\n });\n const tools = convertTools(body.tools ?? undefined);\n const structuredOutputSpec = toStructuredOutputSpec(body.response_format);\n const output = buildOutput(structuredOutputSpec);\n\n // reasoning_effort is injected by AgentThread via Object.assign; not in the SDK type.\n const rawReasoningEffort: unknown = Reflect.get(body, 'reasoning_effort');\n const reasoningEffort = typeof rawReasoningEffort === 'string' ? rawReasoningEffort : undefined;\n const providerOptions = buildProviderOptions({\n config: providerConfig,\n reasoningEffort,\n structuredOutputSpec,\n rawBody: body,\n });\n const reasoning = toReasoningLevel(reasoningEffort);\n\n // top_k is injected by AgentThread via Object.assign; not in the SDK type.\n const rawTopK: unknown = Reflect.get(body, 'top_k');\n // seed is still accepted by providers but marked @deprecated on the OpenAI request type.\n const rawSeed: unknown = Reflect.get(body, 'seed');\n const streamTextArgs = buildStreamTextArgs({\n model: languageModel,\n instructions,\n messages,\n tools,\n reasoning,\n providerOptions,\n maxOutputTokens: resolveMaxOutputTokens(body),\n temperature: body.temperature,\n topP: body.top_p,\n topK: typeof rawTopK === 'number' ? rawTopK : null,\n presencePenalty: body.presence_penalty,\n frequencyPenalty: body.frequency_penalty,\n stopSequences: typeof body.stop === 'string' ? [body.stop] : (body.stop ?? null),\n seed: typeof rawSeed === 'number' ? rawSeed : null,\n abortSignal: this.signal,\n });\n\n let streamResult;\n try {\n streamResult = streamText({\n ...streamTextArgs,\n ...(output !== undefined ? { output } : {}),\n });\n } catch (error) {\n if (this.signal?.aborted) {\n this.logger.debug('LLM call aborted', extractErrorLogFields(error));\n } else {\n this.logger.error('Error creating streaming chat completion', extractErrorLogFields(error));\n }\n throw toStreamError(error);\n }\n\n // Detached: warnings resolve at stream start, and a pending or rejected promise must never\n // stall the stream. Stream failures are reported by the error paths below.\n void streamResult.warnings.then(\n warnings => {\n if (warnings !== undefined && warnings.length > 0) {\n this.logger.warn('Provider adjusted the request', {\n model: providerConfig.name,\n warnings: warnings.map(describeCallWarning),\n });\n }\n },\n (reason: unknown) => {\n // Rejects with the same failure the stream throws, which the error paths below already log.\n this.logger.debug('Provider warnings unavailable', extractErrorLogFields(reason));\n },\n );\n\n // Synthetic chunk fields; id is unique per stream instance.\n // Label chunks with the display name — model.id is the wire id.\n const chunkMeta: ChunkMeta = {\n id: `vc-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 7)}`,\n created: Math.floor(Date.now() / 1000),\n model: providerConfig.name,\n };\n\n try {\n const result = yield* mapStreamToChunks({ stream: streamResult.stream, chunkMeta });\n result.output.source = `${provider.type}/${provider.name}/${model.name}`;\n return result;\n } catch (error) {\n if (this.signal?.aborted) {\n this.logger.debug('LLM stream aborted', extractErrorLogFields(error));\n } else {\n this.logger.error('Error reading LLM stream', extractErrorLogFields(error));\n }\n throw toStreamError(error);\n }\n }\n\n async createNonStream(body: LLMCreateParams): Promise<RawAssistantMessageWithUsage> {\n // Drain the streaming generator — reuses the same accumulation and error handling path.\n const llmStream = this.create({ ...body, stream: true });\n let result = await llmStream.next();\n while (!result.done) {\n result = await llmStream.next();\n }\n return result.value;\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,190 @@
1
+ /**
2
+ * Canonical OpenAI wire schemas with OpenAPI component names.
3
+ * Nested composites are rebuilt from decorated leaves so `$ref`s are preserved.
4
+ */
5
+ import { z } from '@hono/zod-openapi';
6
+ export declare const ChatCompletionContentPartTextSchema: z.ZodObject<{
7
+ type: z.ZodLiteral<"text">;
8
+ text: z.ZodString;
9
+ }, z.core.$strip>;
10
+ export declare const ChatCompletionContentPartRefusalSchema: z.ZodObject<{
11
+ type: z.ZodLiteral<"refusal">;
12
+ refusal: z.ZodString;
13
+ }, z.core.$strip>;
14
+ export declare const ChatCompletionContentPartImageSchema: z.ZodObject<{
15
+ type: z.ZodLiteral<"image_url">;
16
+ image_url: z.ZodObject<{
17
+ url: z.ZodString;
18
+ detail: z.ZodOptional<z.ZodEnum<{
19
+ auto: "auto";
20
+ high: "high";
21
+ low: "low";
22
+ }>>;
23
+ }, z.core.$strip>;
24
+ }, z.core.$strip>;
25
+ export declare const ChatCompletionContentPartInputAudioSchema: z.ZodObject<{
26
+ type: z.ZodLiteral<"input_audio">;
27
+ input_audio: z.ZodObject<{
28
+ data: z.ZodString;
29
+ format: z.ZodEnum<{
30
+ mp3: "mp3";
31
+ wav: "wav";
32
+ }>;
33
+ }, z.core.$strip>;
34
+ }, z.core.$strip>;
35
+ export declare const ChatCompletionContentPartFileSchema: z.ZodObject<{
36
+ type: z.ZodLiteral<"file">;
37
+ file: z.ZodObject<{
38
+ file_data: z.ZodOptional<z.ZodString>;
39
+ file_id: z.ZodOptional<z.ZodString>;
40
+ filename: z.ZodOptional<z.ZodString>;
41
+ }, z.core.$strip>;
42
+ }, z.core.$strip>;
43
+ export declare const ChatCompletionContentPartSchema: z.ZodUnion<readonly [z.ZodObject<{
44
+ type: z.ZodLiteral<"text">;
45
+ text: z.ZodString;
46
+ }, z.core.$strip>, z.ZodObject<{
47
+ type: z.ZodLiteral<"image_url">;
48
+ image_url: z.ZodObject<{
49
+ url: z.ZodString;
50
+ detail: z.ZodOptional<z.ZodEnum<{
51
+ auto: "auto";
52
+ high: "high";
53
+ low: "low";
54
+ }>>;
55
+ }, z.core.$strip>;
56
+ }, z.core.$strip>, z.ZodObject<{
57
+ type: z.ZodLiteral<"input_audio">;
58
+ input_audio: z.ZodObject<{
59
+ data: z.ZodString;
60
+ format: z.ZodEnum<{
61
+ mp3: "mp3";
62
+ wav: "wav";
63
+ }>;
64
+ }, z.core.$strip>;
65
+ }, z.core.$strip>, z.ZodObject<{
66
+ type: z.ZodLiteral<"file">;
67
+ file: z.ZodObject<{
68
+ file_data: z.ZodOptional<z.ZodString>;
69
+ file_id: z.ZodOptional<z.ZodString>;
70
+ filename: z.ZodOptional<z.ZodString>;
71
+ }, z.core.$strip>;
72
+ }, z.core.$strip>]>;
73
+ export declare const ChatCompletionMessageToolCallSchema: z.ZodObject<{
74
+ id: z.ZodString;
75
+ type: z.ZodLiteral<"function">;
76
+ function: z.ZodObject<{
77
+ name: z.ZodString;
78
+ arguments: z.ZodString;
79
+ }, z.core.$strip>;
80
+ }, z.core.$strip>;
81
+ export declare const ChatCompletionChunkDeltaToolCallSchema: z.ZodObject<{
82
+ index: z.ZodNumber;
83
+ id: z.ZodOptional<z.ZodString>;
84
+ type: z.ZodOptional<z.ZodLiteral<"function">>;
85
+ function: z.ZodOptional<z.ZodObject<{
86
+ name: z.ZodOptional<z.ZodString>;
87
+ arguments: z.ZodOptional<z.ZodString>;
88
+ }, z.core.$strip>>;
89
+ }, z.core.$strip>;
90
+ export declare const ChatCompletionChunkDeltaSchema: z.ZodObject<{
91
+ content: z.ZodOptional<z.ZodNullable<z.ZodString>>;
92
+ refusal: z.ZodOptional<z.ZodNullable<z.ZodString>>;
93
+ role: z.ZodOptional<z.ZodEnum<{
94
+ assistant: "assistant";
95
+ developer: "developer";
96
+ system: "system";
97
+ tool: "tool";
98
+ user: "user";
99
+ }>>;
100
+ function_call: z.ZodOptional<z.ZodObject<{
101
+ name: z.ZodOptional<z.ZodString>;
102
+ arguments: z.ZodOptional<z.ZodString>;
103
+ }, z.core.$strip>>;
104
+ tool_calls: z.ZodOptional<z.ZodArray<z.ZodObject<{
105
+ index: z.ZodNumber;
106
+ id: z.ZodOptional<z.ZodString>;
107
+ type: z.ZodOptional<z.ZodLiteral<"function">>;
108
+ function: z.ZodOptional<z.ZodObject<{
109
+ name: z.ZodOptional<z.ZodString>;
110
+ arguments: z.ZodOptional<z.ZodString>;
111
+ }, z.core.$strip>>;
112
+ }, z.core.$strip>>>;
113
+ }, z.core.$strip>;
114
+ export declare const ChatCompletionAssistantMessageParamSchema: z.ZodObject<{
115
+ role: z.ZodLiteral<"assistant">;
116
+ audio: z.ZodOptional<z.ZodNullable<z.ZodObject<{
117
+ id: z.ZodString;
118
+ }, z.core.$strip>>>;
119
+ content: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
120
+ type: z.ZodLiteral<"text">;
121
+ text: z.ZodString;
122
+ }, z.core.$strip>, z.ZodObject<{
123
+ type: z.ZodLiteral<"refusal">;
124
+ refusal: z.ZodString;
125
+ }, z.core.$strip>]>>]>>>;
126
+ function_call: z.ZodOptional<z.ZodNullable<z.ZodObject<{
127
+ name: z.ZodString;
128
+ arguments: z.ZodString;
129
+ }, z.core.$strip>>>;
130
+ name: z.ZodOptional<z.ZodString>;
131
+ refusal: z.ZodOptional<z.ZodNullable<z.ZodString>>;
132
+ tool_calls: z.ZodOptional<z.ZodArray<z.ZodObject<{
133
+ id: z.ZodString;
134
+ type: z.ZodLiteral<"function">;
135
+ function: z.ZodObject<{
136
+ name: z.ZodString;
137
+ arguments: z.ZodString;
138
+ }, z.core.$strip>;
139
+ }, z.core.$strip>>>;
140
+ }, z.core.$strip>;
141
+ export declare const ChatCompletionToolMessageParamSchema: z.ZodObject<{
142
+ role: z.ZodLiteral<"tool">;
143
+ tool_call_id: z.ZodString;
144
+ content: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodObject<{
145
+ type: z.ZodLiteral<"text">;
146
+ text: z.ZodString;
147
+ }, z.core.$strip>>]>;
148
+ }, z.core.$strip>;
149
+ export declare const ChatCompletionUserMessageParamSchema: z.ZodObject<{
150
+ role: z.ZodLiteral<"user">;
151
+ content: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
152
+ type: z.ZodLiteral<"text">;
153
+ text: z.ZodString;
154
+ }, z.core.$strip>, z.ZodObject<{
155
+ type: z.ZodLiteral<"image_url">;
156
+ image_url: z.ZodObject<{
157
+ url: z.ZodString;
158
+ detail: z.ZodOptional<z.ZodEnum<{
159
+ auto: "auto";
160
+ high: "high";
161
+ low: "low";
162
+ }>>;
163
+ }, z.core.$strip>;
164
+ }, z.core.$strip>, z.ZodObject<{
165
+ type: z.ZodLiteral<"input_audio">;
166
+ input_audio: z.ZodObject<{
167
+ data: z.ZodString;
168
+ format: z.ZodEnum<{
169
+ mp3: "mp3";
170
+ wav: "wav";
171
+ }>;
172
+ }, z.core.$strip>;
173
+ }, z.core.$strip>, z.ZodObject<{
174
+ type: z.ZodLiteral<"file">;
175
+ file: z.ZodObject<{
176
+ file_data: z.ZodOptional<z.ZodString>;
177
+ file_id: z.ZodOptional<z.ZodString>;
178
+ filename: z.ZodOptional<z.ZodString>;
179
+ }, z.core.$strip>;
180
+ }, z.core.$strip>]>>]>;
181
+ name: z.ZodOptional<z.ZodString>;
182
+ }, z.core.$strip>;
183
+ export declare const ChatCompletionChunkFinishReasonSchema: z.ZodEnum<{
184
+ content_filter: "content_filter";
185
+ function_call: "function_call";
186
+ length: "length";
187
+ stop: "stop";
188
+ tool_calls: "tool_calls";
189
+ }>;
190
+ //# sourceMappingURL=openaiSchemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openaiSchemas.d.ts","sourceRoot":"","sources":["../../../src/core/llm/openaiSchemas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAEtC,eAAO,MAAM,mCAAmC;;;iBAKL,CAAC;AAE5C,eAAO,MAAM,sCAAsC;;;iBAKL,CAAC;AAE/C,eAAO,MAAM,oCAAoC;;;;;;;;;;iBAQL,CAAC;AAE7C,eAAO,MAAM,yCAAyC;;;;;;;;;iBAQL,CAAC;AAElD,eAAO,MAAM,mCAAmC;;;;;;;iBASL,CAAC;AAG5C,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAK1C,CAAC;AAEH,eAAO,MAAM,mCAAmC;;;;;;;iBASL,CAAC;AAE5C,eAAO,MAAM,sCAAsC;;;;;;;;iBAYL,CAAC;AAE/C,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;iBAgBL,CAAC;AAEvC,eAAO,MAAM,yCAAyC;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6BL,CAAC;AAGlD,eAAO,MAAM,oCAAoC;;;;;;;iBAML,CAAC;AAE7C,eAAO,MAAM,oCAAoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQL,CAAC;AAE7C,eAAO,MAAM,qCAAqC;;;;;;EAGL,CAAC"}
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/core/llm/openaiSchemas.ts
21
+ var openaiSchemas_exports = {};
22
+ __export(openaiSchemas_exports, {
23
+ ChatCompletionAssistantMessageParamSchema: () => ChatCompletionAssistantMessageParamSchema,
24
+ ChatCompletionChunkDeltaSchema: () => ChatCompletionChunkDeltaSchema,
25
+ ChatCompletionChunkDeltaToolCallSchema: () => ChatCompletionChunkDeltaToolCallSchema,
26
+ ChatCompletionChunkFinishReasonSchema: () => ChatCompletionChunkFinishReasonSchema,
27
+ ChatCompletionContentPartFileSchema: () => ChatCompletionContentPartFileSchema,
28
+ ChatCompletionContentPartImageSchema: () => ChatCompletionContentPartImageSchema,
29
+ ChatCompletionContentPartInputAudioSchema: () => ChatCompletionContentPartInputAudioSchema,
30
+ ChatCompletionContentPartRefusalSchema: () => ChatCompletionContentPartRefusalSchema,
31
+ ChatCompletionContentPartSchema: () => ChatCompletionContentPartSchema,
32
+ ChatCompletionContentPartTextSchema: () => ChatCompletionContentPartTextSchema,
33
+ ChatCompletionMessageToolCallSchema: () => ChatCompletionMessageToolCallSchema,
34
+ ChatCompletionToolMessageParamSchema: () => ChatCompletionToolMessageParamSchema,
35
+ ChatCompletionUserMessageParamSchema: () => ChatCompletionUserMessageParamSchema
36
+ });
37
+ module.exports = __toCommonJS(openaiSchemas_exports);
38
+ var import_zod_openapi = require("@hono/zod-openapi");
39
+ var ChatCompletionContentPartTextSchema = import_zod_openapi.z.object({
40
+ type: import_zod_openapi.z.literal("text").describe("Text content part."),
41
+ text: import_zod_openapi.z.string().describe("Plain-text content.")
42
+ }).openapi("ChatCompletionContentPartText");
43
+ var ChatCompletionContentPartRefusalSchema = import_zod_openapi.z.object({
44
+ type: import_zod_openapi.z.literal("refusal").describe("Model refusal content part."),
45
+ refusal: import_zod_openapi.z.string().describe("Refusal message text.")
46
+ }).openapi("ChatCompletionContentPartRefusal");
47
+ var ChatCompletionContentPartImageSchema = import_zod_openapi.z.object({
48
+ type: import_zod_openapi.z.literal("image_url").describe("Image URL content part."),
49
+ image_url: import_zod_openapi.z.object({
50
+ url: import_zod_openapi.z.string().describe("Image URL or data URI."),
51
+ detail: import_zod_openapi.z.enum(["auto", "low", "high"]).optional().describe("Optional image detail level.")
52
+ })
53
+ }).openapi("ChatCompletionContentPartImage");
54
+ var ChatCompletionContentPartInputAudioSchema = import_zod_openapi.z.object({
55
+ type: import_zod_openapi.z.literal("input_audio").describe("Input audio content part."),
56
+ input_audio: import_zod_openapi.z.object({
57
+ data: import_zod_openapi.z.string().describe("Base64-encoded audio data."),
58
+ format: import_zod_openapi.z.enum(["wav", "mp3"]).describe("Audio encoding format.")
59
+ })
60
+ }).openapi("ChatCompletionContentPartInputAudio");
61
+ var ChatCompletionContentPartFileSchema = import_zod_openapi.z.object({
62
+ type: import_zod_openapi.z.literal("file").describe("File content part."),
63
+ file: import_zod_openapi.z.object({
64
+ file_data: import_zod_openapi.z.string().optional().describe("Optional base64 file payload."),
65
+ file_id: import_zod_openapi.z.string().optional().describe("Optional provider file id."),
66
+ filename: import_zod_openapi.z.string().optional().describe("Optional filename.")
67
+ })
68
+ }).openapi("ChatCompletionContentPartFile");
69
+ var ChatCompletionContentPartSchema = import_zod_openapi.z.union([
70
+ ChatCompletionContentPartTextSchema,
71
+ ChatCompletionContentPartImageSchema,
72
+ ChatCompletionContentPartInputAudioSchema,
73
+ ChatCompletionContentPartFileSchema
74
+ ]);
75
+ var ChatCompletionMessageToolCallSchema = import_zod_openapi.z.object({
76
+ id: import_zod_openapi.z.string().describe("Tool call id."),
77
+ type: import_zod_openapi.z.literal("function").describe("Tool call type."),
78
+ function: import_zod_openapi.z.object({
79
+ name: import_zod_openapi.z.string().describe("Function/tool name."),
80
+ arguments: import_zod_openapi.z.string().describe("JSON-encoded function arguments string.")
81
+ })
82
+ }).openapi("ChatCompletionMessageToolCall");
83
+ var ChatCompletionChunkDeltaToolCallSchema = import_zod_openapi.z.object({
84
+ index: import_zod_openapi.z.number().int().nonnegative().describe("Index of this tool call in the streaming delta array."),
85
+ id: import_zod_openapi.z.string().optional().describe("Tool call id (may arrive across multiple deltas)."),
86
+ type: import_zod_openapi.z.literal("function").optional().describe("Tool call type when present on this delta."),
87
+ function: import_zod_openapi.z.object({
88
+ name: import_zod_openapi.z.string().optional().describe("Partial or complete function name."),
89
+ arguments: import_zod_openapi.z.string().optional().describe("Partial or complete JSON arguments string.")
90
+ }).optional()
91
+ }).openapi("ChatCompletionChunkDeltaToolCall");
92
+ var ChatCompletionChunkDeltaSchema = import_zod_openapi.z.object({
93
+ content: import_zod_openapi.z.string().nullable().optional().describe("Incremental assistant text content."),
94
+ refusal: import_zod_openapi.z.string().nullable().optional().describe("Incremental refusal text when present."),
95
+ role: import_zod_openapi.z.enum(["developer", "system", "user", "assistant", "tool"]).optional().describe("Role when set on the delta."),
96
+ function_call: import_zod_openapi.z.object({
97
+ name: import_zod_openapi.z.string().optional().describe("Legacy function-call name fragment."),
98
+ arguments: import_zod_openapi.z.string().optional().describe("Legacy function-call arguments fragment.")
99
+ }).optional(),
100
+ tool_calls: import_zod_openapi.z.array(ChatCompletionChunkDeltaToolCallSchema).optional().describe("Incremental tool-call deltas.")
101
+ }).openapi("ChatCompletionChunkDelta");
102
+ var ChatCompletionAssistantMessageParamSchema = import_zod_openapi.z.object({
103
+ role: import_zod_openapi.z.literal("assistant").describe("Assistant message role."),
104
+ audio: import_zod_openapi.z.object({ id: import_zod_openapi.z.string().describe("Provider audio id.") }).nullable().optional(),
105
+ content: import_zod_openapi.z.union([
106
+ import_zod_openapi.z.string(),
107
+ import_zod_openapi.z.array(import_zod_openapi.z.union([ChatCompletionContentPartTextSchema, ChatCompletionContentPartRefusalSchema]))
108
+ ]).nullable().optional().describe("Assistant message content as text or content parts."),
109
+ function_call: import_zod_openapi.z.object({
110
+ name: import_zod_openapi.z.string().describe("Legacy function name."),
111
+ arguments: import_zod_openapi.z.string().describe("Legacy function arguments JSON string.")
112
+ }).nullable().optional(),
113
+ name: import_zod_openapi.z.string().optional().describe("Optional participant name."),
114
+ refusal: import_zod_openapi.z.string().nullable().optional().describe("Optional refusal text."),
115
+ tool_calls: import_zod_openapi.z.array(ChatCompletionMessageToolCallSchema).optional().describe("Tool calls requested by the assistant.")
116
+ }).openapi("ChatCompletionAssistantMessageParam");
117
+ var ChatCompletionToolMessageParamSchema = import_zod_openapi.z.object({
118
+ role: import_zod_openapi.z.literal("tool").describe("Tool message role."),
119
+ tool_call_id: import_zod_openapi.z.string().describe("Id of the tool call this message responds to."),
120
+ content: import_zod_openapi.z.union([import_zod_openapi.z.string(), import_zod_openapi.z.array(ChatCompletionContentPartTextSchema)]).describe("Tool result content.")
121
+ }).openapi("ChatCompletionToolMessageParam");
122
+ var ChatCompletionUserMessageParamSchema = import_zod_openapi.z.object({
123
+ role: import_zod_openapi.z.literal("user").describe("User message role."),
124
+ content: import_zod_openapi.z.union([import_zod_openapi.z.string(), import_zod_openapi.z.array(ChatCompletionContentPartSchema)]).describe("User message content as text or content parts."),
125
+ name: import_zod_openapi.z.string().optional().describe("Optional participant name.")
126
+ }).openapi("ChatCompletionUserMessageParam");
127
+ var ChatCompletionChunkFinishReasonSchema = import_zod_openapi.z.enum(["stop", "length", "tool_calls", "content_filter", "function_call"]).describe("Why the model stopped generating.").openapi("ChatCompletionChunkFinishReason");
128
+ // Annotate the CommonJS export names for ESM import in node:
129
+ 0 && (module.exports = {
130
+ ChatCompletionAssistantMessageParamSchema,
131
+ ChatCompletionChunkDeltaSchema,
132
+ ChatCompletionChunkDeltaToolCallSchema,
133
+ ChatCompletionChunkFinishReasonSchema,
134
+ ChatCompletionContentPartFileSchema,
135
+ ChatCompletionContentPartImageSchema,
136
+ ChatCompletionContentPartInputAudioSchema,
137
+ ChatCompletionContentPartRefusalSchema,
138
+ ChatCompletionContentPartSchema,
139
+ ChatCompletionContentPartTextSchema,
140
+ ChatCompletionMessageToolCallSchema,
141
+ ChatCompletionToolMessageParamSchema,
142
+ ChatCompletionUserMessageParamSchema
143
+ });
144
+ //# sourceMappingURL=openaiSchemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/llm/openaiSchemas.ts"],"sourcesContent":["/**\n * Canonical OpenAI wire schemas with OpenAPI component names.\n * Nested composites are rebuilt from decorated leaves so `$ref`s are preserved.\n */\nimport { z } from '@hono/zod-openapi';\n\nexport const ChatCompletionContentPartTextSchema = z\n .object({\n type: z.literal('text').describe('Text content part.'),\n text: z.string().describe('Plain-text content.'),\n })\n .openapi('ChatCompletionContentPartText');\n\nexport const ChatCompletionContentPartRefusalSchema = z\n .object({\n type: z.literal('refusal').describe('Model refusal content part.'),\n refusal: z.string().describe('Refusal message text.'),\n })\n .openapi('ChatCompletionContentPartRefusal');\n\nexport const ChatCompletionContentPartImageSchema = z\n .object({\n type: z.literal('image_url').describe('Image URL content part.'),\n image_url: z.object({\n url: z.string().describe('Image URL or data URI.'),\n detail: z.enum(['auto', 'low', 'high']).optional().describe('Optional image detail level.'),\n }),\n })\n .openapi('ChatCompletionContentPartImage');\n\nexport const ChatCompletionContentPartInputAudioSchema = z\n .object({\n type: z.literal('input_audio').describe('Input audio content part.'),\n input_audio: z.object({\n data: z.string().describe('Base64-encoded audio data.'),\n format: z.enum(['wav', 'mp3']).describe('Audio encoding format.'),\n }),\n })\n .openapi('ChatCompletionContentPartInputAudio');\n\nexport const ChatCompletionContentPartFileSchema = z\n .object({\n type: z.literal('file').describe('File content part.'),\n file: z.object({\n file_data: z.string().optional().describe('Optional base64 file payload.'),\n file_id: z.string().optional().describe('Optional provider file id.'),\n filename: z.string().optional().describe('Optional filename.'),\n }),\n })\n .openapi('ChatCompletionContentPartFile');\n\n// User-message content parts (matches OpenAI's `ChatCompletionContentPart`).\nexport const ChatCompletionContentPartSchema = z.union([\n ChatCompletionContentPartTextSchema,\n ChatCompletionContentPartImageSchema,\n ChatCompletionContentPartInputAudioSchema,\n ChatCompletionContentPartFileSchema,\n]);\n\nexport const ChatCompletionMessageToolCallSchema = z\n .object({\n id: z.string().describe('Tool call id.'),\n type: z.literal('function').describe('Tool call type.'),\n function: z.object({\n name: z.string().describe('Function/tool name.'),\n arguments: z.string().describe('JSON-encoded function arguments string.'),\n }),\n })\n .openapi('ChatCompletionMessageToolCall');\n\nexport const ChatCompletionChunkDeltaToolCallSchema = z\n .object({\n index: z.number().int().nonnegative().describe('Index of this tool call in the streaming delta array.'),\n id: z.string().optional().describe('Tool call id (may arrive across multiple deltas).'),\n type: z.literal('function').optional().describe('Tool call type when present on this delta.'),\n function: z\n .object({\n name: z.string().optional().describe('Partial or complete function name.'),\n arguments: z.string().optional().describe('Partial or complete JSON arguments string.'),\n })\n .optional(),\n })\n .openapi('ChatCompletionChunkDeltaToolCall');\n\nexport const ChatCompletionChunkDeltaSchema = z\n .object({\n content: z.string().nullable().optional().describe('Incremental assistant text content.'),\n refusal: z.string().nullable().optional().describe('Incremental refusal text when present.'),\n role: z\n .enum(['developer', 'system', 'user', 'assistant', 'tool'])\n .optional()\n .describe('Role when set on the delta.'),\n function_call: z\n .object({\n name: z.string().optional().describe('Legacy function-call name fragment.'),\n arguments: z.string().optional().describe('Legacy function-call arguments fragment.'),\n })\n .optional(),\n tool_calls: z.array(ChatCompletionChunkDeltaToolCallSchema).optional().describe('Incremental tool-call deltas.'),\n })\n .openapi('ChatCompletionChunkDelta');\n\nexport const ChatCompletionAssistantMessageParamSchema = z\n .object({\n role: z.literal('assistant').describe('Assistant message role.'),\n audio: z\n .object({ id: z.string().describe('Provider audio id.') })\n .nullable()\n .optional(),\n content: z\n .union([\n z.string(),\n z.array(z.union([ChatCompletionContentPartTextSchema, ChatCompletionContentPartRefusalSchema])),\n ])\n .nullable()\n .optional()\n .describe('Assistant message content as text or content parts.'),\n function_call: z\n .object({\n name: z.string().describe('Legacy function name.'),\n arguments: z.string().describe('Legacy function arguments JSON string.'),\n })\n .nullable()\n .optional(),\n name: z.string().optional().describe('Optional participant name.'),\n refusal: z.string().nullable().optional().describe('Optional refusal text.'),\n tool_calls: z\n .array(ChatCompletionMessageToolCallSchema)\n .optional()\n .describe('Tool calls requested by the assistant.'),\n })\n .openapi('ChatCompletionAssistantMessageParam');\n\n// `content` is wider here than in our pipeline; `LLMToolMessageSchema` narrows it to string.\nexport const ChatCompletionToolMessageParamSchema = z\n .object({\n role: z.literal('tool').describe('Tool message role.'),\n tool_call_id: z.string().describe('Id of the tool call this message responds to.'),\n content: z.union([z.string(), z.array(ChatCompletionContentPartTextSchema)]).describe('Tool result content.'),\n })\n .openapi('ChatCompletionToolMessageParam');\n\nexport const ChatCompletionUserMessageParamSchema = z\n .object({\n role: z.literal('user').describe('User message role.'),\n content: z\n .union([z.string(), z.array(ChatCompletionContentPartSchema)])\n .describe('User message content as text or content parts.'),\n name: z.string().optional().describe('Optional participant name.'),\n })\n .openapi('ChatCompletionUserMessageParam');\n\nexport const ChatCompletionChunkFinishReasonSchema = z\n .enum(['stop', 'length', 'tool_calls', 'content_filter', 'function_call'])\n .describe('Why the model stopped generating.')\n .openapi('ChatCompletionChunkFinishReason');\n"],"mappings":"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","names":[]}