@arizeai/phoenix-client 0.0.1 → 1.0.1

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 (525) hide show
  1. package/README.md +136 -7
  2. package/dist/esm/__generated__/api/v1.d.ts +743 -12
  3. package/dist/esm/__generated__/api/v1.d.ts.map +1 -1
  4. package/dist/esm/client.d.ts +9 -2
  5. package/dist/esm/client.d.ts.map +1 -1
  6. package/dist/esm/client.js +3 -2
  7. package/dist/esm/client.js.map +1 -1
  8. package/dist/esm/config.d.ts.map +1 -1
  9. package/dist/esm/config.js +11 -1
  10. package/dist/esm/config.js.map +1 -1
  11. package/dist/esm/experiments/runExperiment.d.ts +35 -8
  12. package/dist/esm/experiments/runExperiment.d.ts.map +1 -1
  13. package/dist/esm/experiments/runExperiment.js +29 -39
  14. package/dist/esm/experiments/runExperiment.js.map +1 -1
  15. package/dist/esm/index.d.ts +0 -1
  16. package/dist/esm/index.d.ts.map +1 -1
  17. package/dist/esm/index.js +0 -1
  18. package/dist/esm/index.js.map +1 -1
  19. package/dist/esm/prompts/constants.d.ts +6 -0
  20. package/dist/esm/prompts/constants.d.ts.map +1 -0
  21. package/dist/esm/prompts/constants.js +10 -0
  22. package/dist/esm/prompts/constants.js.map +1 -0
  23. package/dist/esm/prompts/createPrompt.d.ts +65 -0
  24. package/dist/esm/prompts/createPrompt.d.ts.map +1 -0
  25. package/dist/esm/prompts/createPrompt.js +95 -0
  26. package/dist/esm/prompts/createPrompt.js.map +1 -0
  27. package/dist/esm/prompts/getPrompt.d.ts +16 -0
  28. package/dist/esm/prompts/getPrompt.d.ts.map +1 -0
  29. package/dist/esm/prompts/getPrompt.js +11 -0
  30. package/dist/esm/prompts/getPrompt.js.map +1 -0
  31. package/dist/esm/prompts/index.d.ts +4 -0
  32. package/dist/esm/prompts/index.d.ts.map +1 -0
  33. package/dist/esm/prompts/index.js +4 -0
  34. package/dist/esm/prompts/index.js.map +1 -0
  35. package/dist/esm/prompts/sdks/constants.d.ts +6 -0
  36. package/dist/esm/prompts/sdks/constants.d.ts.map +1 -0
  37. package/dist/esm/prompts/sdks/constants.js +6 -0
  38. package/dist/esm/prompts/sdks/constants.js.map +1 -0
  39. package/dist/esm/prompts/sdks/index.d.ts +2 -0
  40. package/dist/esm/prompts/sdks/index.d.ts.map +1 -0
  41. package/dist/esm/prompts/sdks/index.js +2 -0
  42. package/dist/esm/prompts/sdks/index.js.map +1 -0
  43. package/dist/esm/prompts/sdks/toAI.d.ts +12 -0
  44. package/dist/esm/prompts/sdks/toAI.d.ts.map +1 -0
  45. package/dist/esm/prompts/sdks/toAI.js +70 -0
  46. package/dist/esm/prompts/sdks/toAI.js.map +1 -0
  47. package/dist/esm/prompts/sdks/toAnthropic.d.ts +9 -0
  48. package/dist/esm/prompts/sdks/toAnthropic.d.ts.map +1 -0
  49. package/dist/esm/prompts/sdks/toAnthropic.js +69 -0
  50. package/dist/esm/prompts/sdks/toAnthropic.js.map +1 -0
  51. package/dist/esm/prompts/sdks/toOpenAI.d.ts +11 -0
  52. package/dist/esm/prompts/sdks/toOpenAI.d.ts.map +1 -0
  53. package/dist/esm/prompts/sdks/toOpenAI.js +77 -0
  54. package/dist/esm/prompts/sdks/toOpenAI.js.map +1 -0
  55. package/dist/esm/prompts/sdks/toSDK.d.ts +47 -0
  56. package/dist/esm/prompts/sdks/toSDK.d.ts.map +1 -0
  57. package/dist/esm/prompts/sdks/toSDK.js +44 -0
  58. package/dist/esm/prompts/sdks/toSDK.js.map +1 -0
  59. package/dist/esm/prompts/sdks/types.d.ts +28 -0
  60. package/dist/esm/prompts/sdks/types.d.ts.map +1 -0
  61. package/dist/esm/prompts/sdks/types.js +2 -0
  62. package/dist/esm/prompts/sdks/types.js.map +1 -0
  63. package/dist/esm/schemas/jsonLiteralSchema.d.ts +17 -0
  64. package/dist/esm/schemas/jsonLiteralSchema.d.ts.map +1 -0
  65. package/dist/esm/schemas/jsonLiteralSchema.js +16 -0
  66. package/dist/esm/schemas/jsonLiteralSchema.js.map +1 -0
  67. package/dist/esm/schemas/jsonSchema.d.ts +132 -0
  68. package/dist/esm/schemas/jsonSchema.d.ts.map +1 -0
  69. package/dist/esm/schemas/jsonSchema.js +42 -0
  70. package/dist/esm/schemas/jsonSchema.js.map +1 -0
  71. package/dist/esm/schemas/llm/anthropic/converters.d.ts +1497 -0
  72. package/dist/esm/schemas/llm/anthropic/converters.d.ts.map +1 -0
  73. package/dist/esm/schemas/llm/anthropic/converters.js +123 -0
  74. package/dist/esm/schemas/llm/anthropic/converters.js.map +1 -0
  75. package/dist/esm/schemas/llm/anthropic/messagePartSchemas.d.ts +264 -0
  76. package/dist/esm/schemas/llm/anthropic/messagePartSchemas.d.ts.map +1 -0
  77. package/dist/esm/schemas/llm/anthropic/messagePartSchemas.js +36 -0
  78. package/dist/esm/schemas/llm/anthropic/messagePartSchemas.js.map +1 -0
  79. package/dist/esm/schemas/llm/anthropic/messageSchemas.d.ts +795 -0
  80. package/dist/esm/schemas/llm/anthropic/messageSchemas.d.ts.map +1 -0
  81. package/dist/esm/schemas/llm/anthropic/messageSchemas.js +23 -0
  82. package/dist/esm/schemas/llm/anthropic/messageSchemas.js.map +1 -0
  83. package/dist/esm/schemas/llm/anthropic/toolCallSchemas.d.ts +48 -0
  84. package/dist/esm/schemas/llm/anthropic/toolCallSchemas.d.ts.map +1 -0
  85. package/dist/esm/schemas/llm/anthropic/toolCallSchemas.js +27 -0
  86. package/dist/esm/schemas/llm/anthropic/toolCallSchemas.js.map +1 -0
  87. package/dist/esm/schemas/llm/anthropic/toolChoiceSchemas.d.ts +30 -0
  88. package/dist/esm/schemas/llm/anthropic/toolChoiceSchemas.d.ts.map +1 -0
  89. package/dist/esm/schemas/llm/anthropic/toolChoiceSchemas.js +19 -0
  90. package/dist/esm/schemas/llm/anthropic/toolChoiceSchemas.js.map +1 -0
  91. package/dist/esm/schemas/llm/anthropic/toolSchemas.d.ts +191 -0
  92. package/dist/esm/schemas/llm/anthropic/toolSchemas.d.ts.map +1 -0
  93. package/dist/esm/schemas/llm/anthropic/toolSchemas.js +31 -0
  94. package/dist/esm/schemas/llm/anthropic/toolSchemas.js.map +1 -0
  95. package/dist/esm/schemas/llm/constants.d.ts +9110 -0
  96. package/dist/esm/schemas/llm/constants.d.ts.map +1 -0
  97. package/dist/esm/schemas/llm/constants.js +128 -0
  98. package/dist/esm/schemas/llm/constants.js.map +1 -0
  99. package/dist/esm/schemas/llm/converters.d.ts +36472 -0
  100. package/dist/esm/schemas/llm/converters.d.ts.map +1 -0
  101. package/dist/esm/schemas/llm/converters.js +308 -0
  102. package/dist/esm/schemas/llm/converters.js.map +1 -0
  103. package/dist/esm/schemas/llm/openai/converters.d.ts +5199 -0
  104. package/dist/esm/schemas/llm/openai/converters.d.ts.map +1 -0
  105. package/dist/esm/schemas/llm/openai/converters.js +323 -0
  106. package/dist/esm/schemas/llm/openai/converters.js.map +1 -0
  107. package/dist/esm/schemas/llm/openai/messagePartSchemas.d.ts +64 -0
  108. package/dist/esm/schemas/llm/openai/messagePartSchemas.d.ts.map +1 -0
  109. package/dist/esm/schemas/llm/openai/messagePartSchemas.js +21 -0
  110. package/dist/esm/schemas/llm/openai/messagePartSchemas.js.map +1 -0
  111. package/dist/esm/schemas/llm/openai/messageSchemas.d.ts +733 -0
  112. package/dist/esm/schemas/llm/openai/messageSchemas.d.ts.map +1 -0
  113. package/dist/esm/schemas/llm/openai/messageSchemas.js +67 -0
  114. package/dist/esm/schemas/llm/openai/messageSchemas.js.map +1 -0
  115. package/dist/esm/schemas/llm/openai/responseFormatSchema.d.ts +233 -0
  116. package/dist/esm/schemas/llm/openai/responseFormatSchema.d.ts.map +1 -0
  117. package/dist/esm/schemas/llm/openai/responseFormatSchema.js +19 -0
  118. package/dist/esm/schemas/llm/openai/responseFormatSchema.js.map +1 -0
  119. package/dist/esm/schemas/llm/openai/toolCallSchemas.d.ts +95 -0
  120. package/dist/esm/schemas/llm/openai/toolCallSchemas.d.ts.map +1 -0
  121. package/dist/esm/schemas/llm/openai/toolCallSchemas.js +40 -0
  122. package/dist/esm/schemas/llm/openai/toolCallSchemas.js.map +1 -0
  123. package/dist/esm/schemas/llm/openai/toolChoiceSchemas.d.ts +28 -0
  124. package/dist/esm/schemas/llm/openai/toolChoiceSchemas.d.ts.map +1 -0
  125. package/dist/esm/schemas/llm/openai/toolChoiceSchemas.js +16 -0
  126. package/dist/esm/schemas/llm/openai/toolChoiceSchemas.js.map +1 -0
  127. package/dist/esm/schemas/llm/openai/toolSchemas.d.ts +1282 -0
  128. package/dist/esm/schemas/llm/openai/toolSchemas.d.ts.map +1 -0
  129. package/dist/esm/schemas/llm/openai/toolSchemas.js +62 -0
  130. package/dist/esm/schemas/llm/openai/toolSchemas.js.map +1 -0
  131. package/dist/esm/schemas/llm/phoenixPrompt/converters.d.ts +847 -0
  132. package/dist/esm/schemas/llm/phoenixPrompt/converters.d.ts.map +1 -0
  133. package/dist/esm/schemas/llm/phoenixPrompt/converters.js +130 -0
  134. package/dist/esm/schemas/llm/phoenixPrompt/converters.js.map +1 -0
  135. package/dist/esm/schemas/llm/phoenixPrompt/messagePartSchemas.d.ts +128 -0
  136. package/dist/esm/schemas/llm/phoenixPrompt/messagePartSchemas.d.ts.map +1 -0
  137. package/dist/esm/schemas/llm/phoenixPrompt/messagePartSchemas.js +60 -0
  138. package/dist/esm/schemas/llm/phoenixPrompt/messagePartSchemas.js.map +1 -0
  139. package/dist/esm/schemas/llm/phoenixPrompt/messageSchemas.d.ts +196 -0
  140. package/dist/esm/schemas/llm/phoenixPrompt/messageSchemas.d.ts.map +1 -0
  141. package/dist/esm/schemas/llm/phoenixPrompt/messageSchemas.js +23 -0
  142. package/dist/esm/schemas/llm/phoenixPrompt/messageSchemas.js.map +1 -0
  143. package/dist/esm/schemas/llm/phoenixPrompt/responseFormatSchema.d.ts +41 -0
  144. package/dist/esm/schemas/llm/phoenixPrompt/responseFormatSchema.d.ts.map +1 -0
  145. package/dist/esm/schemas/llm/phoenixPrompt/responseFormatSchema.js +15 -0
  146. package/dist/esm/schemas/llm/phoenixPrompt/responseFormatSchema.js.map +1 -0
  147. package/dist/esm/schemas/llm/phoenixPrompt/toolCallSchemas.d.ts +36 -0
  148. package/dist/esm/schemas/llm/phoenixPrompt/toolCallSchemas.d.ts.map +1 -0
  149. package/dist/esm/schemas/llm/phoenixPrompt/toolCallSchemas.js +3 -0
  150. package/dist/esm/schemas/llm/phoenixPrompt/toolCallSchemas.js.map +1 -0
  151. package/dist/esm/schemas/llm/phoenixPrompt/toolChoiceSchemas.d.ts +34 -0
  152. package/dist/esm/schemas/llm/phoenixPrompt/toolChoiceSchemas.d.ts.map +1 -0
  153. package/dist/esm/schemas/llm/phoenixPrompt/toolChoiceSchemas.js +21 -0
  154. package/dist/esm/schemas/llm/phoenixPrompt/toolChoiceSchemas.js.map +1 -0
  155. package/dist/esm/schemas/llm/phoenixPrompt/toolSchemas.d.ts +41 -0
  156. package/dist/esm/schemas/llm/phoenixPrompt/toolSchemas.d.ts.map +1 -0
  157. package/dist/esm/schemas/llm/phoenixPrompt/toolSchemas.js +15 -0
  158. package/dist/esm/schemas/llm/phoenixPrompt/toolSchemas.js.map +1 -0
  159. package/dist/esm/schemas/llm/schemas.d.ts +2777 -0
  160. package/dist/esm/schemas/llm/schemas.d.ts.map +1 -0
  161. package/dist/esm/schemas/llm/schemas.js +77 -0
  162. package/dist/esm/schemas/llm/schemas.js.map +1 -0
  163. package/dist/esm/schemas/llm/types.d.ts +130 -0
  164. package/dist/esm/schemas/llm/types.d.ts.map +1 -0
  165. package/dist/esm/schemas/llm/types.js +2 -0
  166. package/dist/esm/schemas/llm/types.js.map +1 -0
  167. package/dist/esm/schemas/llm/utils.d.ts +25 -0
  168. package/dist/esm/schemas/llm/utils.d.ts.map +1 -0
  169. package/dist/esm/schemas/llm/utils.js +181 -0
  170. package/dist/esm/schemas/llm/utils.js.map +1 -0
  171. package/dist/esm/schemas/llm/vercel/messagePartSchemas.d.ts +114 -0
  172. package/dist/esm/schemas/llm/vercel/messagePartSchemas.d.ts.map +1 -0
  173. package/dist/esm/schemas/llm/vercel/messagePartSchemas.js +35 -0
  174. package/dist/esm/schemas/llm/vercel/messagePartSchemas.js.map +1 -0
  175. package/dist/esm/schemas/llm/vercel/messageSchemas.d.ts +142 -0
  176. package/dist/esm/schemas/llm/vercel/messageSchemas.d.ts.map +1 -0
  177. package/dist/esm/schemas/llm/vercel/messageSchemas.js +42 -0
  178. package/dist/esm/schemas/llm/vercel/messageSchemas.js.map +1 -0
  179. package/dist/esm/schemas/llm/vercel/toolChoiceSchemas.d.ts +16 -0
  180. package/dist/esm/schemas/llm/vercel/toolChoiceSchemas.d.ts.map +1 -0
  181. package/dist/esm/schemas/llm/vercel/toolChoiceSchemas.js +14 -0
  182. package/dist/esm/schemas/llm/vercel/toolChoiceSchemas.js.map +1 -0
  183. package/dist/esm/schemas/llm/vercel/toolSchemas.d.ts +42 -0
  184. package/dist/esm/schemas/llm/vercel/toolSchemas.d.ts.map +1 -0
  185. package/dist/esm/schemas/llm/vercel/toolSchemas.js +17 -0
  186. package/dist/esm/schemas/llm/vercel/toolSchemas.js.map +1 -0
  187. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  188. package/dist/esm/types/core.d.ts +8 -0
  189. package/dist/esm/types/core.d.ts.map +1 -1
  190. package/dist/esm/types/logger.d.ts +6 -0
  191. package/dist/esm/types/logger.d.ts.map +1 -0
  192. package/dist/esm/types/logger.js +2 -0
  193. package/dist/esm/types/logger.js.map +1 -0
  194. package/dist/esm/types/prompts.d.ts +107 -0
  195. package/dist/esm/types/prompts.d.ts.map +1 -0
  196. package/dist/esm/types/prompts.js +2 -0
  197. package/dist/esm/types/prompts.js.map +1 -0
  198. package/dist/esm/utils/assertUnreachable.d.ts +8 -0
  199. package/dist/esm/utils/assertUnreachable.d.ts.map +1 -0
  200. package/dist/esm/utils/assertUnreachable.js +10 -0
  201. package/dist/esm/utils/assertUnreachable.js.map +1 -0
  202. package/dist/esm/utils/formatPromptMessages.d.ts +26 -0
  203. package/dist/esm/utils/formatPromptMessages.d.ts.map +1 -0
  204. package/dist/esm/utils/formatPromptMessages.js +64 -0
  205. package/dist/esm/utils/formatPromptMessages.js.map +1 -0
  206. package/dist/esm/utils/getDatasetLike.d.ts +22 -0
  207. package/dist/esm/utils/getDatasetLike.d.ts.map +1 -0
  208. package/dist/esm/utils/getDatasetLike.js +37 -0
  209. package/dist/esm/utils/getDatasetLike.js.map +1 -0
  210. package/dist/esm/utils/getPromptVersionLike.d.ts +29 -0
  211. package/dist/esm/utils/getPromptVersionLike.d.ts.map +1 -0
  212. package/dist/esm/utils/getPromptVersionLike.js +50 -0
  213. package/dist/esm/utils/getPromptVersionLike.js.map +1 -0
  214. package/dist/esm/utils/isObject.d.ts +5 -0
  215. package/dist/esm/utils/isObject.d.ts.map +1 -0
  216. package/dist/esm/utils/isObject.js +7 -0
  217. package/dist/esm/utils/isObject.js.map +1 -0
  218. package/dist/esm/utils/noopLogger.d.ts +9 -0
  219. package/dist/esm/utils/noopLogger.d.ts.map +1 -0
  220. package/dist/esm/utils/noopLogger.js +9 -0
  221. package/dist/esm/utils/noopLogger.js.map +1 -0
  222. package/dist/esm/utils/safelyParseJSON.d.ts +14 -0
  223. package/dist/esm/utils/safelyParseJSON.d.ts.map +1 -0
  224. package/dist/esm/utils/safelyParseJSON.js +15 -0
  225. package/dist/esm/utils/safelyParseJSON.js.map +1 -0
  226. package/dist/esm/utils/safelyStringifyJSON.d.ts +14 -0
  227. package/dist/esm/utils/safelyStringifyJSON.d.ts.map +1 -0
  228. package/dist/esm/utils/safelyStringifyJSON.js +15 -0
  229. package/dist/esm/utils/safelyStringifyJSON.js.map +1 -0
  230. package/dist/esm/utils/schemaMatches.d.ts +17 -0
  231. package/dist/esm/utils/schemaMatches.d.ts.map +1 -0
  232. package/dist/esm/utils/schemaMatches.js +9 -0
  233. package/dist/esm/utils/schemaMatches.js.map +1 -0
  234. package/dist/src/__generated__/api/v1.d.ts +743 -12
  235. package/dist/src/__generated__/api/v1.d.ts.map +1 -1
  236. package/dist/src/client.d.ts +9 -2
  237. package/dist/src/client.d.ts.map +1 -1
  238. package/dist/src/client.js +3 -2
  239. package/dist/src/client.js.map +1 -1
  240. package/dist/src/config.d.ts.map +1 -1
  241. package/dist/src/config.js +9 -1
  242. package/dist/src/config.js.map +1 -1
  243. package/dist/src/experiments/runExperiment.d.ts +35 -8
  244. package/dist/src/experiments/runExperiment.d.ts.map +1 -1
  245. package/dist/src/experiments/runExperiment.js +29 -34
  246. package/dist/src/experiments/runExperiment.js.map +1 -1
  247. package/dist/src/index.d.ts +0 -1
  248. package/dist/src/index.d.ts.map +1 -1
  249. package/dist/src/index.js +0 -1
  250. package/dist/src/index.js.map +1 -1
  251. package/dist/src/prompts/constants.d.ts +6 -0
  252. package/dist/src/prompts/constants.d.ts.map +1 -0
  253. package/dist/src/prompts/constants.js +13 -0
  254. package/dist/src/prompts/constants.js.map +1 -0
  255. package/dist/src/prompts/createPrompt.d.ts +65 -0
  256. package/dist/src/prompts/createPrompt.d.ts.map +1 -0
  257. package/dist/src/prompts/createPrompt.js +123 -0
  258. package/dist/src/prompts/createPrompt.js.map +1 -0
  259. package/dist/src/prompts/getPrompt.d.ts +16 -0
  260. package/dist/src/prompts/getPrompt.d.ts.map +1 -0
  261. package/dist/src/prompts/getPrompt.js +25 -0
  262. package/dist/src/prompts/getPrompt.js.map +1 -0
  263. package/dist/src/prompts/index.d.ts +4 -0
  264. package/dist/src/prompts/index.d.ts.map +1 -0
  265. package/dist/src/prompts/index.js +20 -0
  266. package/dist/src/prompts/index.js.map +1 -0
  267. package/dist/src/prompts/sdks/constants.d.ts +6 -0
  268. package/dist/src/prompts/sdks/constants.d.ts.map +1 -0
  269. package/dist/src/prompts/sdks/constants.js +9 -0
  270. package/dist/src/prompts/sdks/constants.js.map +1 -0
  271. package/dist/src/prompts/sdks/index.d.ts +2 -0
  272. package/dist/src/prompts/sdks/index.d.ts.map +1 -0
  273. package/dist/src/prompts/sdks/index.js +18 -0
  274. package/dist/src/prompts/sdks/index.js.map +1 -0
  275. package/dist/src/prompts/sdks/toAI.d.ts +12 -0
  276. package/dist/src/prompts/sdks/toAI.d.ts.map +1 -0
  277. package/dist/src/prompts/sdks/toAI.js +75 -0
  278. package/dist/src/prompts/sdks/toAI.js.map +1 -0
  279. package/dist/src/prompts/sdks/toAnthropic.d.ts +9 -0
  280. package/dist/src/prompts/sdks/toAnthropic.d.ts.map +1 -0
  281. package/dist/src/prompts/sdks/toAnthropic.js +71 -0
  282. package/dist/src/prompts/sdks/toAnthropic.js.map +1 -0
  283. package/dist/src/prompts/sdks/toOpenAI.d.ts +11 -0
  284. package/dist/src/prompts/sdks/toOpenAI.d.ts.map +1 -0
  285. package/dist/src/prompts/sdks/toOpenAI.js +78 -0
  286. package/dist/src/prompts/sdks/toOpenAI.js.map +1 -0
  287. package/dist/src/prompts/sdks/toSDK.d.ts +47 -0
  288. package/dist/src/prompts/sdks/toSDK.d.ts.map +1 -0
  289. package/dist/src/prompts/sdks/toSDK.js +63 -0
  290. package/dist/src/prompts/sdks/toSDK.js.map +1 -0
  291. package/dist/src/prompts/sdks/types.d.ts +28 -0
  292. package/dist/src/prompts/sdks/types.d.ts.map +1 -0
  293. package/dist/src/prompts/sdks/types.js +3 -0
  294. package/dist/src/prompts/sdks/types.js.map +1 -0
  295. package/dist/src/schemas/jsonLiteralSchema.d.ts +17 -0
  296. package/dist/src/schemas/jsonLiteralSchema.d.ts.map +1 -0
  297. package/dist/src/schemas/jsonLiteralSchema.js +22 -0
  298. package/dist/src/schemas/jsonLiteralSchema.js.map +1 -0
  299. package/dist/src/schemas/jsonSchema.d.ts +132 -0
  300. package/dist/src/schemas/jsonSchema.d.ts.map +1 -0
  301. package/dist/src/schemas/jsonSchema.js +48 -0
  302. package/dist/src/schemas/jsonSchema.js.map +1 -0
  303. package/dist/src/schemas/llm/anthropic/converters.d.ts +1497 -0
  304. package/dist/src/schemas/llm/anthropic/converters.d.ts.map +1 -0
  305. package/dist/src/schemas/llm/anthropic/converters.js +132 -0
  306. package/dist/src/schemas/llm/anthropic/converters.js.map +1 -0
  307. package/dist/src/schemas/llm/anthropic/messagePartSchemas.d.ts +264 -0
  308. package/dist/src/schemas/llm/anthropic/messagePartSchemas.d.ts.map +1 -0
  309. package/dist/src/schemas/llm/anthropic/messagePartSchemas.js +42 -0
  310. package/dist/src/schemas/llm/anthropic/messagePartSchemas.js.map +1 -0
  311. package/dist/src/schemas/llm/anthropic/messageSchemas.d.ts +795 -0
  312. package/dist/src/schemas/llm/anthropic/messageSchemas.d.ts.map +1 -0
  313. package/dist/src/schemas/llm/anthropic/messageSchemas.js +29 -0
  314. package/dist/src/schemas/llm/anthropic/messageSchemas.js.map +1 -0
  315. package/dist/src/schemas/llm/anthropic/toolCallSchemas.d.ts +48 -0
  316. package/dist/src/schemas/llm/anthropic/toolCallSchemas.d.ts.map +1 -0
  317. package/dist/src/schemas/llm/anthropic/toolCallSchemas.js +34 -0
  318. package/dist/src/schemas/llm/anthropic/toolCallSchemas.js.map +1 -0
  319. package/dist/src/schemas/llm/anthropic/toolChoiceSchemas.d.ts +30 -0
  320. package/dist/src/schemas/llm/anthropic/toolChoiceSchemas.d.ts.map +1 -0
  321. package/dist/src/schemas/llm/anthropic/toolChoiceSchemas.js +25 -0
  322. package/dist/src/schemas/llm/anthropic/toolChoiceSchemas.js.map +1 -0
  323. package/dist/src/schemas/llm/anthropic/toolSchemas.d.ts +191 -0
  324. package/dist/src/schemas/llm/anthropic/toolSchemas.d.ts.map +1 -0
  325. package/dist/src/schemas/llm/anthropic/toolSchemas.js +38 -0
  326. package/dist/src/schemas/llm/anthropic/toolSchemas.js.map +1 -0
  327. package/dist/src/schemas/llm/constants.d.ts +9110 -0
  328. package/dist/src/schemas/llm/constants.d.ts.map +1 -0
  329. package/dist/src/schemas/llm/constants.js +131 -0
  330. package/dist/src/schemas/llm/constants.js.map +1 -0
  331. package/dist/src/schemas/llm/converters.d.ts +36472 -0
  332. package/dist/src/schemas/llm/converters.d.ts.map +1 -0
  333. package/dist/src/schemas/llm/converters.js +330 -0
  334. package/dist/src/schemas/llm/converters.js.map +1 -0
  335. package/dist/src/schemas/llm/openai/converters.d.ts +5199 -0
  336. package/dist/src/schemas/llm/openai/converters.d.ts.map +1 -0
  337. package/dist/src/schemas/llm/openai/converters.js +333 -0
  338. package/dist/src/schemas/llm/openai/converters.js.map +1 -0
  339. package/dist/src/schemas/llm/openai/messagePartSchemas.d.ts +64 -0
  340. package/dist/src/schemas/llm/openai/messagePartSchemas.d.ts.map +1 -0
  341. package/dist/src/schemas/llm/openai/messagePartSchemas.js +27 -0
  342. package/dist/src/schemas/llm/openai/messagePartSchemas.js.map +1 -0
  343. package/dist/src/schemas/llm/openai/messageSchemas.d.ts +733 -0
  344. package/dist/src/schemas/llm/openai/messageSchemas.d.ts.map +1 -0
  345. package/dist/src/schemas/llm/openai/messageSchemas.js +73 -0
  346. package/dist/src/schemas/llm/openai/messageSchemas.js.map +1 -0
  347. package/dist/src/schemas/llm/openai/responseFormatSchema.d.ts +233 -0
  348. package/dist/src/schemas/llm/openai/responseFormatSchema.d.ts.map +1 -0
  349. package/dist/src/schemas/llm/openai/responseFormatSchema.js +25 -0
  350. package/dist/src/schemas/llm/openai/responseFormatSchema.js.map +1 -0
  351. package/dist/src/schemas/llm/openai/toolCallSchemas.d.ts +95 -0
  352. package/dist/src/schemas/llm/openai/toolCallSchemas.d.ts.map +1 -0
  353. package/dist/src/schemas/llm/openai/toolCallSchemas.js +47 -0
  354. package/dist/src/schemas/llm/openai/toolCallSchemas.js.map +1 -0
  355. package/dist/src/schemas/llm/openai/toolChoiceSchemas.d.ts +28 -0
  356. package/dist/src/schemas/llm/openai/toolChoiceSchemas.d.ts.map +1 -0
  357. package/dist/src/schemas/llm/openai/toolChoiceSchemas.js +22 -0
  358. package/dist/src/schemas/llm/openai/toolChoiceSchemas.js.map +1 -0
  359. package/dist/src/schemas/llm/openai/toolSchemas.d.ts +1282 -0
  360. package/dist/src/schemas/llm/openai/toolSchemas.d.ts.map +1 -0
  361. package/dist/src/schemas/llm/openai/toolSchemas.js +69 -0
  362. package/dist/src/schemas/llm/openai/toolSchemas.js.map +1 -0
  363. package/dist/src/schemas/llm/phoenixPrompt/converters.d.ts +847 -0
  364. package/dist/src/schemas/llm/phoenixPrompt/converters.d.ts.map +1 -0
  365. package/dist/src/schemas/llm/phoenixPrompt/converters.js +133 -0
  366. package/dist/src/schemas/llm/phoenixPrompt/converters.js.map +1 -0
  367. package/dist/src/schemas/llm/phoenixPrompt/messagePartSchemas.d.ts +128 -0
  368. package/dist/src/schemas/llm/phoenixPrompt/messagePartSchemas.d.ts.map +1 -0
  369. package/dist/src/schemas/llm/phoenixPrompt/messagePartSchemas.js +71 -0
  370. package/dist/src/schemas/llm/phoenixPrompt/messagePartSchemas.js.map +1 -0
  371. package/dist/src/schemas/llm/phoenixPrompt/messageSchemas.d.ts +196 -0
  372. package/dist/src/schemas/llm/phoenixPrompt/messageSchemas.d.ts.map +1 -0
  373. package/dist/src/schemas/llm/phoenixPrompt/messageSchemas.js +29 -0
  374. package/dist/src/schemas/llm/phoenixPrompt/messageSchemas.js.map +1 -0
  375. package/dist/src/schemas/llm/phoenixPrompt/responseFormatSchema.d.ts +41 -0
  376. package/dist/src/schemas/llm/phoenixPrompt/responseFormatSchema.d.ts.map +1 -0
  377. package/dist/src/schemas/llm/phoenixPrompt/responseFormatSchema.js +21 -0
  378. package/dist/src/schemas/llm/phoenixPrompt/responseFormatSchema.js.map +1 -0
  379. package/dist/src/schemas/llm/phoenixPrompt/toolCallSchemas.d.ts +36 -0
  380. package/dist/src/schemas/llm/phoenixPrompt/toolCallSchemas.d.ts.map +1 -0
  381. package/dist/src/schemas/llm/phoenixPrompt/toolCallSchemas.js +6 -0
  382. package/dist/src/schemas/llm/phoenixPrompt/toolCallSchemas.js.map +1 -0
  383. package/dist/src/schemas/llm/phoenixPrompt/toolChoiceSchemas.d.ts +34 -0
  384. package/dist/src/schemas/llm/phoenixPrompt/toolChoiceSchemas.d.ts.map +1 -0
  385. package/dist/src/schemas/llm/phoenixPrompt/toolChoiceSchemas.js +27 -0
  386. package/dist/src/schemas/llm/phoenixPrompt/toolChoiceSchemas.js.map +1 -0
  387. package/dist/src/schemas/llm/phoenixPrompt/toolSchemas.d.ts +41 -0
  388. package/dist/src/schemas/llm/phoenixPrompt/toolSchemas.d.ts.map +1 -0
  389. package/dist/src/schemas/llm/phoenixPrompt/toolSchemas.js +21 -0
  390. package/dist/src/schemas/llm/phoenixPrompt/toolSchemas.js.map +1 -0
  391. package/dist/src/schemas/llm/schemas.d.ts +2777 -0
  392. package/dist/src/schemas/llm/schemas.d.ts.map +1 -0
  393. package/dist/src/schemas/llm/schemas.js +83 -0
  394. package/dist/src/schemas/llm/schemas.js.map +1 -0
  395. package/dist/src/schemas/llm/types.d.ts +130 -0
  396. package/dist/src/schemas/llm/types.d.ts.map +1 -0
  397. package/dist/src/schemas/llm/types.js +3 -0
  398. package/dist/src/schemas/llm/types.js.map +1 -0
  399. package/dist/src/schemas/llm/utils.d.ts +25 -0
  400. package/dist/src/schemas/llm/utils.d.ts.map +1 -0
  401. package/dist/src/schemas/llm/utils.js +192 -0
  402. package/dist/src/schemas/llm/utils.js.map +1 -0
  403. package/dist/src/schemas/llm/vercel/messagePartSchemas.d.ts +114 -0
  404. package/dist/src/schemas/llm/vercel/messagePartSchemas.d.ts.map +1 -0
  405. package/dist/src/schemas/llm/vercel/messagePartSchemas.js +41 -0
  406. package/dist/src/schemas/llm/vercel/messagePartSchemas.js.map +1 -0
  407. package/dist/src/schemas/llm/vercel/messageSchemas.d.ts +142 -0
  408. package/dist/src/schemas/llm/vercel/messageSchemas.d.ts.map +1 -0
  409. package/dist/src/schemas/llm/vercel/messageSchemas.js +48 -0
  410. package/dist/src/schemas/llm/vercel/messageSchemas.js.map +1 -0
  411. package/dist/src/schemas/llm/vercel/toolChoiceSchemas.d.ts +16 -0
  412. package/dist/src/schemas/llm/vercel/toolChoiceSchemas.d.ts.map +1 -0
  413. package/dist/src/schemas/llm/vercel/toolChoiceSchemas.js +20 -0
  414. package/dist/src/schemas/llm/vercel/toolChoiceSchemas.js.map +1 -0
  415. package/dist/src/schemas/llm/vercel/toolSchemas.d.ts +42 -0
  416. package/dist/src/schemas/llm/vercel/toolSchemas.d.ts.map +1 -0
  417. package/dist/src/schemas/llm/vercel/toolSchemas.js +20 -0
  418. package/dist/src/schemas/llm/vercel/toolSchemas.js.map +1 -0
  419. package/dist/src/types/core.d.ts +8 -0
  420. package/dist/src/types/core.d.ts.map +1 -1
  421. package/dist/src/types/logger.d.ts +6 -0
  422. package/dist/src/types/logger.d.ts.map +1 -0
  423. package/dist/src/types/logger.js +3 -0
  424. package/dist/src/types/logger.js.map +1 -0
  425. package/dist/src/types/prompts.d.ts +107 -0
  426. package/dist/src/types/prompts.d.ts.map +1 -0
  427. package/dist/src/types/prompts.js +3 -0
  428. package/dist/src/types/prompts.js.map +1 -0
  429. package/dist/src/utils/assertUnreachable.d.ts +8 -0
  430. package/dist/src/utils/assertUnreachable.d.ts.map +1 -0
  431. package/dist/src/utils/assertUnreachable.js +13 -0
  432. package/dist/src/utils/assertUnreachable.js.map +1 -0
  433. package/dist/src/utils/formatPromptMessages.d.ts +26 -0
  434. package/dist/src/utils/formatPromptMessages.d.ts.map +1 -0
  435. package/dist/src/utils/formatPromptMessages.js +61 -0
  436. package/dist/src/utils/formatPromptMessages.js.map +1 -0
  437. package/dist/src/utils/getDatasetLike.d.ts +22 -0
  438. package/dist/src/utils/getDatasetLike.d.ts.map +1 -0
  439. package/dist/src/utils/getDatasetLike.js +47 -0
  440. package/dist/src/utils/getDatasetLike.js.map +1 -0
  441. package/dist/src/utils/getPromptVersionLike.d.ts +29 -0
  442. package/dist/src/utils/getPromptVersionLike.d.ts.map +1 -0
  443. package/dist/src/utils/getPromptVersionLike.js +68 -0
  444. package/dist/src/utils/getPromptVersionLike.js.map +1 -0
  445. package/dist/src/utils/isObject.d.ts +5 -0
  446. package/dist/src/utils/isObject.d.ts.map +1 -0
  447. package/dist/src/utils/isObject.js +10 -0
  448. package/dist/src/utils/isObject.js.map +1 -0
  449. package/dist/src/utils/noopLogger.d.ts +9 -0
  450. package/dist/src/utils/noopLogger.d.ts.map +1 -0
  451. package/dist/src/utils/noopLogger.js +12 -0
  452. package/dist/src/utils/noopLogger.js.map +1 -0
  453. package/dist/src/utils/safelyParseJSON.d.ts +14 -0
  454. package/dist/src/utils/safelyParseJSON.d.ts.map +1 -0
  455. package/dist/src/utils/safelyParseJSON.js +18 -0
  456. package/dist/src/utils/safelyParseJSON.js.map +1 -0
  457. package/dist/src/utils/safelyStringifyJSON.d.ts +14 -0
  458. package/dist/src/utils/safelyStringifyJSON.d.ts.map +1 -0
  459. package/dist/src/utils/safelyStringifyJSON.js +18 -0
  460. package/dist/src/utils/safelyStringifyJSON.js.map +1 -0
  461. package/dist/src/utils/schemaMatches.d.ts +17 -0
  462. package/dist/src/utils/schemaMatches.d.ts.map +1 -0
  463. package/dist/src/utils/schemaMatches.js +13 -0
  464. package/dist/src/utils/schemaMatches.js.map +1 -0
  465. package/dist/tsconfig.tsbuildinfo +1 -1
  466. package/package.json +32 -5
  467. package/src/__generated__/api/v1.ts +743 -12
  468. package/src/client.ts +9 -2
  469. package/src/config.ts +12 -1
  470. package/src/experiments/runExperiment.ts +54 -53
  471. package/src/index.ts +0 -2
  472. package/src/prompts/constants.ts +11 -0
  473. package/src/prompts/createPrompt.ts +181 -0
  474. package/src/prompts/getPrompt.ts +26 -0
  475. package/src/prompts/index.ts +3 -0
  476. package/src/prompts/sdks/constants.ts +10 -0
  477. package/src/prompts/sdks/index.ts +1 -0
  478. package/src/prompts/sdks/toAI.ts +106 -0
  479. package/src/prompts/sdks/toAnthropic.ts +98 -0
  480. package/src/prompts/sdks/toOpenAI.ts +115 -0
  481. package/src/prompts/sdks/toSDK.ts +81 -0
  482. package/src/prompts/sdks/types.ts +28 -0
  483. package/src/schemas/jsonLiteralSchema.ts +24 -0
  484. package/src/schemas/jsonSchema.ts +47 -0
  485. package/src/schemas/llm/anthropic/converters.ts +172 -0
  486. package/src/schemas/llm/anthropic/messagePartSchemas.ts +53 -0
  487. package/src/schemas/llm/anthropic/messageSchemas.ts +34 -0
  488. package/src/schemas/llm/anthropic/toolCallSchemas.ts +34 -0
  489. package/src/schemas/llm/anthropic/toolChoiceSchemas.ts +21 -0
  490. package/src/schemas/llm/anthropic/toolSchemas.ts +41 -0
  491. package/src/schemas/llm/constants.ts +157 -0
  492. package/src/schemas/llm/converters.ts +503 -0
  493. package/src/schemas/llm/openai/converters.ts +400 -0
  494. package/src/schemas/llm/openai/messagePartSchemas.ts +30 -0
  495. package/src/schemas/llm/openai/messageSchemas.ts +78 -0
  496. package/src/schemas/llm/openai/responseFormatSchema.ts +22 -0
  497. package/src/schemas/llm/openai/toolCallSchemas.ts +58 -0
  498. package/src/schemas/llm/openai/toolChoiceSchemas.ts +18 -0
  499. package/src/schemas/llm/openai/toolSchemas.ts +74 -0
  500. package/src/schemas/llm/phoenixPrompt/converters.ts +178 -0
  501. package/src/schemas/llm/phoenixPrompt/messagePartSchemas.ts +95 -0
  502. package/src/schemas/llm/phoenixPrompt/messageSchemas.ts +34 -0
  503. package/src/schemas/llm/phoenixPrompt/responseFormatSchema.ts +21 -0
  504. package/src/schemas/llm/phoenixPrompt/toolCallSchemas.ts +7 -0
  505. package/src/schemas/llm/phoenixPrompt/toolChoiceSchemas.ts +26 -0
  506. package/src/schemas/llm/phoenixPrompt/toolSchemas.ts +20 -0
  507. package/src/schemas/llm/schemas.ts +94 -0
  508. package/src/schemas/llm/types.ts +162 -0
  509. package/src/schemas/llm/utils.ts +265 -0
  510. package/src/schemas/llm/vercel/messagePartSchemas.ts +54 -0
  511. package/src/schemas/llm/vercel/messageSchemas.ts +54 -0
  512. package/src/schemas/llm/vercel/toolChoiceSchemas.ts +16 -0
  513. package/src/schemas/llm/vercel/toolSchemas.ts +21 -0
  514. package/src/types/core.ts +9 -0
  515. package/src/types/logger.ts +5 -0
  516. package/src/types/prompts.ts +151 -0
  517. package/src/utils/assertUnreachable.ts +9 -0
  518. package/src/utils/formatPromptMessages.ts +79 -0
  519. package/src/utils/getDatasetLike.ts +52 -0
  520. package/src/utils/getPromptVersionLike.ts +73 -0
  521. package/src/utils/isObject.ts +6 -0
  522. package/src/utils/noopLogger.ts +10 -0
  523. package/src/utils/safelyParseJSON.ts +13 -0
  524. package/src/utils/safelyStringifyJSON.ts +15 -0
  525. package/src/utils/schemaMatches.ts +29 -0
@@ -0,0 +1,157 @@
1
+ import { z } from "zod";
2
+ import { PromptProviderSDKs } from "../../types/prompts";
3
+ import {
4
+ anthropicMessagePartToOpenAI,
5
+ anthropicMessageToOpenAI,
6
+ anthropicToolCallToOpenAI,
7
+ anthropicToolChoiceToOpenAI,
8
+ anthropicToolDefinitionToOpenAI,
9
+ } from "./anthropic/converters";
10
+ import {
11
+ openAIChatPartToAnthropic,
12
+ openAIMessageToVercelAI,
13
+ openAIMessageToAnthropic,
14
+ openAIMessageToPhoenixPrompt,
15
+ openAIToolCallToAnthropic,
16
+ openAIToolChoiceToAnthropic,
17
+ openAIToolChoiceToVercelAI,
18
+ openAIToolDefinitionToAnthropic,
19
+ openAIToolDefinitionToVercelAI,
20
+ } from "./openai/converters";
21
+ import {
22
+ phoenixResponseFormatToOpenAI,
23
+ phoenixToolChoiceToOpenAI,
24
+ phoenixToolDefinitionToOpenAI,
25
+ phoenixMessagePartToOpenAI,
26
+ phoenixMessageToOpenAI,
27
+ phoenixToolCallToOpenAI,
28
+ } from "./phoenixPrompt/converters";
29
+ import { makeSDKConverters } from "./utils";
30
+ import { openAIMessageSchema } from "./openai/messageSchemas";
31
+ import {
32
+ vercelAIChatPartSchema,
33
+ vercelAIChatPartToolCallSchema,
34
+ } from "./vercel/messagePartSchemas";
35
+ import { openaiChatPartSchema } from "./openai/messagePartSchemas";
36
+ import { openAIToolChoiceSchema } from "./openai/toolChoiceSchemas";
37
+ import { openAIToolCallSchema } from "./openai/toolCallSchemas";
38
+ import { openAIToolDefinitionSchema } from "./openai/toolSchemas";
39
+ import { openaiResponseFormatSchema } from "./openai/responseFormatSchema";
40
+
41
+ export const SDKProviderIdMap: Record<PromptProviderSDKs, string> = {
42
+ OPENAI: "openai",
43
+ AZURE_OPENAI: "azure-openai",
44
+ ANTHROPIC: "anthropic",
45
+ PHOENIX: "phoenix",
46
+ VERCEL_AI: "ai",
47
+ };
48
+
49
+ const OPENAI = makeSDKConverters({
50
+ messages: {
51
+ toOpenAI: openAIMessageSchema,
52
+ fromOpenAI: openAIMessageSchema,
53
+ },
54
+ messageParts: {
55
+ toOpenAI: openaiChatPartSchema,
56
+ fromOpenAI: openaiChatPartSchema,
57
+ },
58
+ toolChoices: {
59
+ toOpenAI: openAIToolChoiceSchema,
60
+ fromOpenAI: openAIToolChoiceSchema,
61
+ },
62
+ toolCalls: {
63
+ toOpenAI: openAIToolCallSchema,
64
+ fromOpenAI: openAIToolCallSchema,
65
+ },
66
+ toolDefinitions: {
67
+ toOpenAI: openAIToolDefinitionSchema,
68
+ fromOpenAI: openAIToolDefinitionSchema,
69
+ },
70
+ responseFormat: {
71
+ toOpenAI: openaiResponseFormatSchema,
72
+ fromOpenAI: openaiResponseFormatSchema,
73
+ },
74
+ });
75
+
76
+ /**
77
+ * SDK Provider Converter Map
78
+ *
79
+ * This map contains the converters for each SDK provider.
80
+ *
81
+ * If a "from" direction is not supported for a particular provider, you can set the schema to `z.unknown()`,
82
+ * passing contents directly through, but forcing the caller to handle the unknown type.
83
+ */
84
+ export const SDKProviderConverterMap = {
85
+ OPENAI,
86
+ AZURE_OPENAI: OPENAI,
87
+ ANTHROPIC: makeSDKConverters({
88
+ messages: {
89
+ toOpenAI: anthropicMessageToOpenAI,
90
+ fromOpenAI: openAIMessageToAnthropic,
91
+ },
92
+ messageParts: {
93
+ toOpenAI: anthropicMessagePartToOpenAI,
94
+ fromOpenAI: openAIChatPartToAnthropic,
95
+ },
96
+ toolChoices: {
97
+ toOpenAI: anthropicToolChoiceToOpenAI,
98
+ fromOpenAI: openAIToolChoiceToAnthropic,
99
+ },
100
+ toolCalls: {
101
+ toOpenAI: anthropicToolCallToOpenAI,
102
+ fromOpenAI: openAIToolCallToAnthropic,
103
+ },
104
+ toolDefinitions: {
105
+ toOpenAI: anthropicToolDefinitionToOpenAI,
106
+ fromOpenAI: openAIToolDefinitionToAnthropic,
107
+ },
108
+ }),
109
+ PHOENIX: makeSDKConverters({
110
+ messages: {
111
+ toOpenAI: phoenixMessageToOpenAI,
112
+ fromOpenAI: openAIMessageToPhoenixPrompt,
113
+ },
114
+ messageParts: {
115
+ toOpenAI: phoenixMessagePartToOpenAI,
116
+ fromOpenAI: z.unknown(),
117
+ },
118
+ toolChoices: {
119
+ toOpenAI: phoenixToolChoiceToOpenAI,
120
+ fromOpenAI: z.unknown(),
121
+ },
122
+ toolCalls: {
123
+ toOpenAI: phoenixToolCallToOpenAI,
124
+ fromOpenAI: z.unknown(),
125
+ },
126
+ toolDefinitions: {
127
+ toOpenAI: phoenixToolDefinitionToOpenAI,
128
+ fromOpenAI: z.unknown(),
129
+ },
130
+ responseFormat: {
131
+ toOpenAI: phoenixResponseFormatToOpenAI,
132
+ fromOpenAI: z.unknown(),
133
+ },
134
+ }),
135
+ VERCEL_AI: makeSDKConverters({
136
+ messages: {
137
+ toOpenAI: openAIMessageSchema,
138
+ fromOpenAI: openAIMessageToVercelAI,
139
+ },
140
+ messageParts: {
141
+ fromOpenAI: vercelAIChatPartSchema,
142
+ toOpenAI: openaiChatPartSchema,
143
+ },
144
+ toolChoices: {
145
+ toOpenAI: openAIToolChoiceSchema,
146
+ fromOpenAI: openAIToolChoiceToVercelAI,
147
+ },
148
+ toolCalls: {
149
+ toOpenAI: openAIToolCallSchema,
150
+ fromOpenAI: vercelAIChatPartToolCallSchema,
151
+ },
152
+ toolDefinitions: {
153
+ toOpenAI: openAIToolDefinitionSchema,
154
+ fromOpenAI: openAIToolDefinitionToVercelAI,
155
+ },
156
+ }),
157
+ } satisfies Record<PromptProviderSDKs, unknown>;
@@ -0,0 +1,503 @@
1
+ import z from "zod";
2
+
3
+ import { assertUnreachable } from "../../utils/assertUnreachable";
4
+ import { safelyParseJSON } from "../../utils/safelyParseJSON";
5
+ import { JSONLiteral } from "../jsonLiteralSchema";
6
+ import { OpenAIChatPart } from "./openai/messagePartSchemas";
7
+ import { OpenAIMessage } from "./openai/messageSchemas";
8
+ import { OpenAIToolCall } from "./openai/toolCallSchemas";
9
+ import { OpenaiToolChoice } from "./openai/toolChoiceSchemas";
10
+ import { OpenAIToolDefinition } from "./openai/toolSchemas";
11
+ import { toolCallHeuristicSchema } from "./schemas";
12
+ import { SDKProviderConverterMap } from "./constants";
13
+ import { LLMMessagePart, PromptSDKFormat } from "./types";
14
+ import {
15
+ detectMessagePartProvider,
16
+ detectMessageProvider,
17
+ detectToolCallProvider,
18
+ detectToolChoiceProvider,
19
+ detectToolDefinitionProvider,
20
+ } from "./utils";
21
+ import invariant from "tiny-invariant";
22
+
23
+ export const safelyConvertMessageToProvider = <
24
+ TargetProviderSDK extends NonNullable<PromptSDKFormat>,
25
+ >({
26
+ message,
27
+ targetProvider,
28
+ }: {
29
+ message: unknown;
30
+ targetProvider: TargetProviderSDK;
31
+ }) => {
32
+ try {
33
+ // convert incoming message to OpenAI format
34
+ const openAIMessage = toOpenAIMessage(message);
35
+ invariant(
36
+ openAIMessage != null,
37
+ `Could not convert message to ${targetProvider} format`
38
+ );
39
+ // convert the OpenAI format to the target provider format
40
+ return fromOpenAIMessage({ message: openAIMessage, targetProvider });
41
+ } catch (e) {
42
+ return null;
43
+ }
44
+ };
45
+
46
+ export const safelyConvertToolCallToProvider = <
47
+ TargetProviderSDK extends NonNullable<PromptSDKFormat>,
48
+ >({
49
+ toolCall,
50
+ targetProvider,
51
+ }: {
52
+ toolCall: unknown;
53
+ targetProvider: TargetProviderSDK;
54
+ }) => {
55
+ try {
56
+ // convert incoming tool call to OpenAI format
57
+ const openAIToolCall = toOpenAIToolCall(toolCall);
58
+ invariant(
59
+ openAIToolCall != null,
60
+ `Could not convert tool call to ${targetProvider} format`
61
+ );
62
+ // convert the OpenAI format to the target provider format
63
+ return fromOpenAIToolCall({
64
+ toolCall: openAIToolCall,
65
+ targetProvider,
66
+ });
67
+ } catch (e) {
68
+ return null;
69
+ }
70
+ };
71
+
72
+ export const safelyConvertToolDefinitionToProvider = <
73
+ TargetProviderSDK extends NonNullable<PromptSDKFormat>,
74
+ >({
75
+ toolDefinition,
76
+ targetProvider,
77
+ }: {
78
+ toolDefinition: unknown;
79
+ targetProvider: TargetProviderSDK;
80
+ }) => {
81
+ try {
82
+ // convert incoming tool definition to OpenAI format
83
+ const openAIToolDefinition = toOpenAIToolDefinition(toolDefinition);
84
+ invariant(
85
+ openAIToolDefinition != null,
86
+ `Could not convert tool definition to ${targetProvider} format`
87
+ );
88
+ // convert the OpenAI format to the target provider format
89
+ return fromOpenAIToolDefinition({
90
+ toolDefinition: openAIToolDefinition,
91
+ targetProvider,
92
+ });
93
+ } catch (e) {
94
+ return null;
95
+ }
96
+ };
97
+
98
+ export const safelyConvertToolChoiceToProvider = <
99
+ TargetProviderSDK extends NonNullable<PromptSDKFormat>,
100
+ >({
101
+ toolChoice,
102
+ targetProvider,
103
+ }: {
104
+ toolChoice: unknown;
105
+ targetProvider: TargetProviderSDK;
106
+ }) => {
107
+ try {
108
+ // convert incoming tool choice to OpenAI format
109
+ const openAIToolChoice = toOpenAIToolChoice(toolChoice);
110
+ invariant(
111
+ openAIToolChoice != null,
112
+ `Could not convert tool choice to ${targetProvider} format`
113
+ );
114
+ // convert the OpenAI format to the target provider format
115
+ return fromOpenAIToolChoice({
116
+ toolChoice: openAIToolChoice,
117
+ targetProvider,
118
+ });
119
+ } catch (e) {
120
+ return null;
121
+ }
122
+ };
123
+
124
+ export const toOpenAIChatPart = (
125
+ part: LLMMessagePart
126
+ ): OpenAIChatPart | null => {
127
+ const { provider, validatedMessage } = detectMessagePartProvider(part);
128
+ switch (provider) {
129
+ case "AZURE_OPENAI":
130
+ case "OPENAI":
131
+ return validatedMessage;
132
+ case "ANTHROPIC":
133
+ return SDKProviderConverterMap.ANTHROPIC.messageParts.toOpenAI.parse(
134
+ validatedMessage
135
+ );
136
+ case "PHOENIX":
137
+ return SDKProviderConverterMap.PHOENIX.messageParts.toOpenAI.parse(
138
+ validatedMessage
139
+ );
140
+ case "VERCEL_AI":
141
+ return SDKProviderConverterMap.VERCEL_AI.messageParts.toOpenAI.parse(
142
+ validatedMessage
143
+ );
144
+ case null:
145
+ return null;
146
+ default:
147
+ return assertUnreachable(provider);
148
+ }
149
+ };
150
+
151
+ /**
152
+ * Convert from any message format to OpenAI format if possible
153
+ */
154
+ export const toOpenAIMessage = (message: unknown): OpenAIMessage | null => {
155
+ const { provider, validatedMessage } = detectMessageProvider(message);
156
+ switch (provider) {
157
+ case "AZURE_OPENAI":
158
+ case "OPENAI":
159
+ return validatedMessage as OpenAIMessage;
160
+ case "ANTHROPIC":
161
+ return SDKProviderConverterMap.ANTHROPIC.messages.toOpenAI.parse(
162
+ validatedMessage
163
+ );
164
+ case "PHOENIX":
165
+ return SDKProviderConverterMap.PHOENIX.messages.toOpenAI.parse(
166
+ validatedMessage
167
+ );
168
+ case "VERCEL_AI":
169
+ return SDKProviderConverterMap.VERCEL_AI.messages.toOpenAI.parse(
170
+ validatedMessage
171
+ );
172
+ case null:
173
+ return null;
174
+ default:
175
+ return assertUnreachable(provider);
176
+ }
177
+ };
178
+
179
+ /**
180
+ * Convert from OpenAI message format to any other format
181
+ */
182
+ export const fromOpenAIMessage = <
183
+ TargetProviderSDK extends NonNullable<PromptSDKFormat>,
184
+ >({
185
+ message,
186
+ targetProvider,
187
+ }: {
188
+ message: OpenAIMessage;
189
+ targetProvider: TargetProviderSDK;
190
+ }): z.infer<
191
+ (typeof SDKProviderConverterMap)[TargetProviderSDK]["messages"]["fromOpenAI"]
192
+ > => {
193
+ switch (targetProvider) {
194
+ case "AZURE_OPENAI":
195
+ case "OPENAI":
196
+ return SDKProviderConverterMap.OPENAI.messages.fromOpenAI.parse(message);
197
+ case "ANTHROPIC":
198
+ return SDKProviderConverterMap.ANTHROPIC.messages.fromOpenAI.parse(
199
+ message
200
+ );
201
+ case "PHOENIX":
202
+ return SDKProviderConverterMap.PHOENIX.messages.fromOpenAI.parse(message);
203
+ case "VERCEL_AI":
204
+ return SDKProviderConverterMap.VERCEL_AI.messages.fromOpenAI.parse(
205
+ message
206
+ );
207
+ default:
208
+ return assertUnreachable(targetProvider);
209
+ }
210
+ };
211
+
212
+ /**
213
+ * Converts a tool call to the OpenAI format if possible
214
+ * @param toolCall a tool call from an unknown LlmProvider
215
+ * @returns the tool call parsed to the OpenAI format
216
+ */
217
+ export const toOpenAIToolCall = (
218
+ maybeToolCall: unknown
219
+ ): OpenAIToolCall | null => {
220
+ const { provider, validatedToolCall } = detectToolCallProvider(maybeToolCall);
221
+ switch (provider) {
222
+ case "AZURE_OPENAI":
223
+ case "OPENAI":
224
+ return validatedToolCall;
225
+ case "ANTHROPIC":
226
+ return SDKProviderConverterMap.ANTHROPIC.toolCalls.toOpenAI.parse(
227
+ validatedToolCall
228
+ );
229
+ case "PHOENIX":
230
+ return SDKProviderConverterMap.PHOENIX.toolCalls.toOpenAI.parse(
231
+ validatedToolCall
232
+ );
233
+ case "VERCEL_AI":
234
+ return SDKProviderConverterMap.VERCEL_AI.toolCalls.toOpenAI.parse(
235
+ validatedToolCall
236
+ );
237
+ case null:
238
+ return null;
239
+ default:
240
+ return assertUnreachable(provider);
241
+ }
242
+ };
243
+
244
+ /**
245
+ * Converts a tool call to a target provider format
246
+ * @param toolCall the tool call to convert
247
+ * @param targetProvider the provider to convert the tool call to
248
+ * @returns the tool call in the target provider format
249
+ */
250
+ export const fromOpenAIToolCall = <
251
+ TargetProviderSDK extends NonNullable<PromptSDKFormat>,
252
+ >({
253
+ toolCall,
254
+ targetProvider,
255
+ }: {
256
+ toolCall: OpenAIToolCall;
257
+ targetProvider: TargetProviderSDK;
258
+ }): z.infer<
259
+ (typeof SDKProviderConverterMap)[TargetProviderSDK]["toolCalls"]["fromOpenAI"]
260
+ > => {
261
+ switch (targetProvider) {
262
+ case "AZURE_OPENAI":
263
+ case "OPENAI":
264
+ return SDKProviderConverterMap.OPENAI.toolCalls.fromOpenAI.parse(
265
+ toolCall
266
+ );
267
+ case "ANTHROPIC":
268
+ return SDKProviderConverterMap.ANTHROPIC.toolCalls.fromOpenAI.parse(
269
+ toolCall
270
+ );
271
+ case "PHOENIX":
272
+ return SDKProviderConverterMap.PHOENIX.toolCalls.fromOpenAI.parse(
273
+ toolCall
274
+ );
275
+ case "VERCEL_AI":
276
+ return SDKProviderConverterMap.VERCEL_AI.toolCalls.fromOpenAI.parse(
277
+ toolCall
278
+ );
279
+ default:
280
+ assertUnreachable(targetProvider);
281
+ }
282
+ };
283
+
284
+ /**
285
+ * Converts a tool choice to the OpenAI format
286
+ * @param toolChoice a tool choice from an unknown LlmProvider
287
+ * @returns the tool choice parsed to the OpenAI format
288
+ */
289
+ export const toOpenAIToolChoice = (
290
+ toolChoice: unknown
291
+ ): OpenaiToolChoice | null => {
292
+ const { provider, toolChoice: validatedToolChoice } =
293
+ detectToolChoiceProvider(toolChoice);
294
+ if (provider == null || validatedToolChoice == null) {
295
+ throw new Error("Could not detect provider of tool choice");
296
+ }
297
+ switch (provider) {
298
+ case "AZURE_OPENAI":
299
+ case "OPENAI":
300
+ return validatedToolChoice;
301
+ case "ANTHROPIC":
302
+ return SDKProviderConverterMap.ANTHROPIC.toolChoices.toOpenAI.parse(
303
+ validatedToolChoice
304
+ );
305
+ case "PHOENIX":
306
+ return SDKProviderConverterMap.PHOENIX.toolChoices.toOpenAI.parse(
307
+ validatedToolChoice
308
+ );
309
+ case "VERCEL_AI":
310
+ return SDKProviderConverterMap.VERCEL_AI.toolChoices.toOpenAI.parse(
311
+ validatedToolChoice
312
+ );
313
+ default:
314
+ assertUnreachable(provider);
315
+ }
316
+ };
317
+
318
+ /**
319
+ * Converts a tool call to a target provider format
320
+ * @param toolCall the tool call to convert
321
+ * @param targetProvider the provider to convert the tool call to
322
+ * @returns the tool call in the target provider format
323
+ */
324
+ export const fromOpenAIToolChoice = <
325
+ TargetProviderSDK extends NonNullable<PromptSDKFormat>,
326
+ >({
327
+ toolChoice,
328
+ targetProvider,
329
+ }: {
330
+ toolChoice: OpenaiToolChoice;
331
+ targetProvider: TargetProviderSDK;
332
+ }): z.infer<
333
+ (typeof SDKProviderConverterMap)[TargetProviderSDK]["toolChoices"]["fromOpenAI"]
334
+ > => {
335
+ switch (targetProvider) {
336
+ case "AZURE_OPENAI":
337
+ case "OPENAI":
338
+ return SDKProviderConverterMap.OPENAI.toolChoices.fromOpenAI.parse(
339
+ toolChoice
340
+ );
341
+ case "ANTHROPIC":
342
+ return SDKProviderConverterMap.ANTHROPIC.toolChoices.fromOpenAI.parse(
343
+ toolChoice
344
+ );
345
+ case "PHOENIX":
346
+ return SDKProviderConverterMap.PHOENIX.toolChoices.fromOpenAI.parse(
347
+ toolChoice
348
+ );
349
+ case "VERCEL_AI":
350
+ return SDKProviderConverterMap.VERCEL_AI.toolChoices.fromOpenAI.parse(
351
+ toolChoice
352
+ );
353
+ default:
354
+ assertUnreachable(targetProvider);
355
+ }
356
+ };
357
+
358
+ /**
359
+ * Convert from any tool call format to OpenAI format if possible
360
+ */
361
+ export const toOpenAIToolDefinition = (
362
+ toolDefinition: unknown
363
+ ): OpenAIToolDefinition | null => {
364
+ const { provider, validatedToolDefinition } =
365
+ detectToolDefinitionProvider(toolDefinition);
366
+ switch (provider) {
367
+ case "AZURE_OPENAI":
368
+ case "OPENAI":
369
+ return SDKProviderConverterMap.OPENAI.toolDefinitions.toOpenAI.parse(
370
+ validatedToolDefinition
371
+ );
372
+ case "ANTHROPIC":
373
+ return SDKProviderConverterMap.ANTHROPIC.toolDefinitions.toOpenAI.parse(
374
+ validatedToolDefinition
375
+ );
376
+ case "PHOENIX":
377
+ return SDKProviderConverterMap.PHOENIX.toolDefinitions.toOpenAI.parse(
378
+ validatedToolDefinition
379
+ );
380
+ case "VERCEL_AI":
381
+ return SDKProviderConverterMap.VERCEL_AI.toolDefinitions.toOpenAI.parse(
382
+ validatedToolDefinition
383
+ );
384
+ case null:
385
+ return null;
386
+ default:
387
+ assertUnreachable(provider);
388
+ }
389
+ };
390
+
391
+ /**
392
+ * Convert from OpenAI tool call format to any other format
393
+ */
394
+ export const fromOpenAIToolDefinition = <
395
+ TargetProviderSDK extends NonNullable<PromptSDKFormat>,
396
+ >({
397
+ toolDefinition,
398
+ targetProvider,
399
+ }: {
400
+ toolDefinition: OpenAIToolDefinition;
401
+ targetProvider: TargetProviderSDK;
402
+ }): z.infer<
403
+ (typeof SDKProviderConverterMap)[TargetProviderSDK]["toolDefinitions"]["fromOpenAI"]
404
+ > => {
405
+ switch (targetProvider) {
406
+ case "AZURE_OPENAI":
407
+ case "OPENAI":
408
+ return SDKProviderConverterMap.OPENAI.toolDefinitions.fromOpenAI.parse(
409
+ toolDefinition
410
+ );
411
+ case "ANTHROPIC":
412
+ return SDKProviderConverterMap.ANTHROPIC.toolDefinitions.fromOpenAI.parse(
413
+ toolDefinition
414
+ );
415
+ case "PHOENIX":
416
+ return SDKProviderConverterMap.PHOENIX.toolDefinitions.fromOpenAI.parse(
417
+ toolDefinition
418
+ );
419
+ case "VERCEL_AI":
420
+ return SDKProviderConverterMap.VERCEL_AI.toolDefinitions.fromOpenAI.parse(
421
+ toolDefinition
422
+ );
423
+ default:
424
+ assertUnreachable(targetProvider);
425
+ }
426
+ };
427
+
428
+ export function findToolCallId(maybeToolCall: unknown): string | null {
429
+ let subject = maybeToolCall;
430
+ if (typeof maybeToolCall === "string") {
431
+ const parsed = safelyParseJSON(maybeToolCall);
432
+ subject = parsed.json;
433
+ }
434
+ const toolCall = toOpenAIToolCall(subject);
435
+
436
+ if (toolCall) {
437
+ return toolCall.id;
438
+ }
439
+
440
+ // we don't have first class support for the incoming tool call
441
+ // try some heuristics to find the id
442
+ const heuristic = toolCallHeuristicSchema.safeParse(subject);
443
+ if (heuristic.success) {
444
+ return heuristic.data.id ?? heuristic.data.name ?? null;
445
+ }
446
+
447
+ return null;
448
+ }
449
+
450
+ export function findToolCallName(maybeToolCall: unknown): string | null {
451
+ let subject = maybeToolCall;
452
+ if (typeof maybeToolCall === "string") {
453
+ const parsed = safelyParseJSON(maybeToolCall);
454
+ subject = parsed.json;
455
+ }
456
+
457
+ const toolCall = toOpenAIToolCall(subject);
458
+
459
+ if (toolCall) {
460
+ return toolCall.function.name;
461
+ }
462
+
463
+ // we don't have first class support for the incoming tool call
464
+ // try some heuristics to find the name
465
+ const heuristic = toolCallHeuristicSchema.safeParse(subject);
466
+ if (heuristic.success) {
467
+ return (
468
+ heuristic.data.function?.name ??
469
+ heuristic.data.name ??
470
+ // fallback to id if we don't have a name
471
+ heuristic.data.id ??
472
+ null
473
+ );
474
+ }
475
+
476
+ return null;
477
+ }
478
+
479
+ export function findToolCallArguments(
480
+ maybeToolCall: unknown
481
+ ): JSONLiteral | null {
482
+ let subject = maybeToolCall;
483
+ if (typeof maybeToolCall === "string") {
484
+ const parsed = safelyParseJSON(maybeToolCall);
485
+ subject = parsed.json;
486
+ }
487
+ const toolCall = toOpenAIToolCall(subject);
488
+ if (toolCall) {
489
+ return toolCall.function.arguments as JSONLiteral;
490
+ }
491
+
492
+ // we don't have first class support for the incoming tool call
493
+ // try some heuristics to find the arguments
494
+ const heuristic = toolCallHeuristicSchema.safeParse(subject);
495
+ if (heuristic.success) {
496
+ return (
497
+ ((heuristic.data.arguments ??
498
+ heuristic.data.function?.arguments) as JSONLiteral) ?? null
499
+ );
500
+ }
501
+
502
+ return null;
503
+ }