@arizeai/phoenix-client 5.2.0 → 5.3.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 (448) hide show
  1. package/dist/esm/__generated__/api/v1.d.ts +321 -9
  2. package/dist/esm/__generated__/api/v1.d.ts.map +1 -1
  3. package/dist/esm/client.d.ts +2 -2
  4. package/dist/esm/client.d.ts.map +1 -1
  5. package/dist/esm/client.js +1 -1
  6. package/dist/esm/client.js.map +1 -1
  7. package/dist/esm/datasets/appendDatasetExamples.d.ts +1 -1
  8. package/dist/esm/datasets/appendDatasetExamples.d.ts.map +1 -1
  9. package/dist/esm/datasets/appendDatasetExamples.js +1 -1
  10. package/dist/esm/datasets/appendDatasetExamples.js.map +1 -1
  11. package/dist/esm/datasets/createDataset.d.ts.map +1 -1
  12. package/dist/esm/datasets/createDataset.js.map +1 -1
  13. package/dist/esm/datasets/createOrGetDataset.d.ts.map +1 -1
  14. package/dist/esm/datasets/createOrGetDataset.js.map +1 -1
  15. package/dist/esm/datasets/getDataset.d.ts +1 -1
  16. package/dist/esm/datasets/getDataset.d.ts.map +1 -1
  17. package/dist/esm/datasets/getDataset.js.map +1 -1
  18. package/dist/esm/datasets/getDatasetExamples.d.ts +1 -1
  19. package/dist/esm/datasets/getDatasetExamples.d.ts.map +1 -1
  20. package/dist/esm/datasets/getDatasetExamples.js +1 -1
  21. package/dist/esm/datasets/getDatasetExamples.js.map +1 -1
  22. package/dist/esm/datasets/getDatasetInfo.d.ts +1 -1
  23. package/dist/esm/datasets/getDatasetInfo.d.ts.map +1 -1
  24. package/dist/esm/datasets/getDatasetInfo.js +1 -1
  25. package/dist/esm/datasets/getDatasetInfo.js.map +1 -1
  26. package/dist/esm/datasets/listDatasets.d.ts +1 -1
  27. package/dist/esm/datasets/listDatasets.d.ts.map +1 -1
  28. package/dist/esm/datasets/listDatasets.js.map +1 -1
  29. package/dist/esm/experiments/createExperiment.d.ts +39 -0
  30. package/dist/esm/experiments/createExperiment.d.ts.map +1 -0
  31. package/dist/esm/experiments/createExperiment.js +43 -0
  32. package/dist/esm/experiments/createExperiment.js.map +1 -0
  33. package/dist/esm/experiments/deleteExperiment.d.ts +36 -0
  34. package/dist/esm/experiments/deleteExperiment.d.ts.map +1 -0
  35. package/dist/esm/experiments/deleteExperiment.js +49 -0
  36. package/dist/esm/experiments/deleteExperiment.js.map +1 -0
  37. package/dist/esm/experiments/getExperiment.d.ts.map +1 -1
  38. package/dist/esm/experiments/getExperiment.js.map +1 -1
  39. package/dist/esm/experiments/getExperimentInfo.d.ts.map +1 -1
  40. package/dist/esm/experiments/getExperimentInfo.js +10 -3
  41. package/dist/esm/experiments/getExperimentInfo.js.map +1 -1
  42. package/dist/esm/experiments/getExperimentRuns.d.ts.map +1 -1
  43. package/dist/esm/experiments/getExperimentRuns.js.map +1 -1
  44. package/dist/esm/experiments/index.d.ts +5 -0
  45. package/dist/esm/experiments/index.d.ts.map +1 -1
  46. package/dist/esm/experiments/index.js +5 -0
  47. package/dist/esm/experiments/index.js.map +1 -1
  48. package/dist/esm/experiments/listExperiments.d.ts +29 -0
  49. package/dist/esm/experiments/listExperiments.d.ts.map +1 -0
  50. package/dist/esm/experiments/listExperiments.js +59 -0
  51. package/dist/esm/experiments/listExperiments.js.map +1 -0
  52. package/dist/esm/experiments/resumeEvaluation.d.ts +105 -0
  53. package/dist/esm/experiments/resumeEvaluation.d.ts.map +1 -0
  54. package/dist/esm/experiments/resumeEvaluation.js +558 -0
  55. package/dist/esm/experiments/resumeEvaluation.js.map +1 -0
  56. package/dist/esm/experiments/resumeExperiment.d.ts +102 -0
  57. package/dist/esm/experiments/resumeExperiment.d.ts.map +1 -0
  58. package/dist/esm/experiments/resumeExperiment.js +517 -0
  59. package/dist/esm/experiments/resumeExperiment.js.map +1 -0
  60. package/dist/esm/experiments/runExperiment.d.ts +2 -2
  61. package/dist/esm/experiments/runExperiment.d.ts.map +1 -1
  62. package/dist/esm/experiments/runExperiment.js +35 -9
  63. package/dist/esm/experiments/runExperiment.js.map +1 -1
  64. package/dist/esm/prompts/createPrompt.d.ts +20 -2
  65. package/dist/esm/prompts/createPrompt.d.ts.map +1 -1
  66. package/dist/esm/prompts/createPrompt.js +14 -1
  67. package/dist/esm/prompts/createPrompt.js.map +1 -1
  68. package/dist/esm/prompts/sdks/toAI.d.ts +2 -2
  69. package/dist/esm/prompts/sdks/toAI.d.ts.map +1 -1
  70. package/dist/esm/prompts/sdks/toAI.js +1 -1
  71. package/dist/esm/prompts/sdks/toAI.js.map +1 -1
  72. package/dist/esm/prompts/sdks/toAnthropic.d.ts +1 -1
  73. package/dist/esm/prompts/sdks/toAnthropic.d.ts.map +1 -1
  74. package/dist/esm/prompts/sdks/toAnthropic.js +1 -1
  75. package/dist/esm/prompts/sdks/toAnthropic.js.map +1 -1
  76. package/dist/esm/prompts/sdks/toOpenAI.d.ts +1 -1
  77. package/dist/esm/prompts/sdks/toOpenAI.d.ts.map +1 -1
  78. package/dist/esm/prompts/sdks/toOpenAI.js +2 -2
  79. package/dist/esm/prompts/sdks/toOpenAI.js.map +1 -1
  80. package/dist/esm/prompts/sdks/toSDK.d.ts +1 -1
  81. package/dist/esm/prompts/sdks/toSDK.d.ts.map +1 -1
  82. package/dist/esm/prompts/sdks/toSDK.js +2 -2
  83. package/dist/esm/prompts/sdks/toSDK.js.map +1 -1
  84. package/dist/esm/prompts/sdks/types.d.ts.map +1 -1
  85. package/dist/esm/schemas/llm/anthropic/converters.d.ts.map +1 -1
  86. package/dist/esm/schemas/llm/anthropic/converters.js +2 -2
  87. package/dist/esm/schemas/llm/anthropic/converters.js.map +1 -1
  88. package/dist/esm/schemas/llm/anthropic/messagePartSchemas.d.ts.map +1 -1
  89. package/dist/esm/schemas/llm/anthropic/messagePartSchemas.js +1 -1
  90. package/dist/esm/schemas/llm/anthropic/messagePartSchemas.js.map +1 -1
  91. package/dist/esm/schemas/llm/anthropic/messageSchemas.d.ts.map +1 -1
  92. package/dist/esm/schemas/llm/anthropic/messageSchemas.js +1 -1
  93. package/dist/esm/schemas/llm/anthropic/messageSchemas.js.map +1 -1
  94. package/dist/esm/schemas/llm/anthropic/toolCallSchemas.d.ts.map +1 -1
  95. package/dist/esm/schemas/llm/anthropic/toolCallSchemas.js +1 -1
  96. package/dist/esm/schemas/llm/anthropic/toolCallSchemas.js.map +1 -1
  97. package/dist/esm/schemas/llm/anthropic/toolSchemas.d.ts.map +1 -1
  98. package/dist/esm/schemas/llm/anthropic/toolSchemas.js +1 -1
  99. package/dist/esm/schemas/llm/anthropic/toolSchemas.js.map +1 -1
  100. package/dist/esm/schemas/llm/constants.d.ts +9 -9
  101. package/dist/esm/schemas/llm/constants.d.ts.map +1 -1
  102. package/dist/esm/schemas/llm/constants.js +8 -8
  103. package/dist/esm/schemas/llm/constants.js.map +1 -1
  104. package/dist/esm/schemas/llm/converters.d.ts +33 -33
  105. package/dist/esm/schemas/llm/converters.d.ts.map +1 -1
  106. package/dist/esm/schemas/llm/converters.js +1 -1
  107. package/dist/esm/schemas/llm/converters.js.map +1 -1
  108. package/dist/esm/schemas/llm/openai/converters.d.ts +2 -2
  109. package/dist/esm/schemas/llm/openai/converters.d.ts.map +1 -1
  110. package/dist/esm/schemas/llm/openai/converters.js +3 -3
  111. package/dist/esm/schemas/llm/openai/converters.js.map +1 -1
  112. package/dist/esm/schemas/llm/openai/messageSchemas.d.ts.map +1 -1
  113. package/dist/esm/schemas/llm/openai/messageSchemas.js +2 -2
  114. package/dist/esm/schemas/llm/openai/messageSchemas.js.map +1 -1
  115. package/dist/esm/schemas/llm/openai/responseFormatSchema.d.ts.map +1 -1
  116. package/dist/esm/schemas/llm/openai/responseFormatSchema.js +1 -1
  117. package/dist/esm/schemas/llm/openai/responseFormatSchema.js.map +1 -1
  118. package/dist/esm/schemas/llm/openai/toolSchemas.d.ts.map +1 -1
  119. package/dist/esm/schemas/llm/openai/toolSchemas.js +1 -1
  120. package/dist/esm/schemas/llm/openai/toolSchemas.js.map +1 -1
  121. package/dist/esm/schemas/llm/phoenixPrompt/converters.d.ts.map +1 -1
  122. package/dist/esm/schemas/llm/phoenixPrompt/converters.js +5 -5
  123. package/dist/esm/schemas/llm/phoenixPrompt/converters.js.map +1 -1
  124. package/dist/esm/schemas/llm/phoenixPrompt/messagePartSchemas.d.ts.map +1 -1
  125. package/dist/esm/schemas/llm/phoenixPrompt/messagePartSchemas.js +1 -1
  126. package/dist/esm/schemas/llm/phoenixPrompt/messagePartSchemas.js.map +1 -1
  127. package/dist/esm/schemas/llm/phoenixPrompt/messageSchemas.d.ts.map +1 -1
  128. package/dist/esm/schemas/llm/phoenixPrompt/messageSchemas.js +2 -2
  129. package/dist/esm/schemas/llm/phoenixPrompt/messageSchemas.js.map +1 -1
  130. package/dist/esm/schemas/llm/phoenixPrompt/responseFormatSchema.d.ts.map +1 -1
  131. package/dist/esm/schemas/llm/phoenixPrompt/responseFormatSchema.js +1 -1
  132. package/dist/esm/schemas/llm/phoenixPrompt/responseFormatSchema.js.map +1 -1
  133. package/dist/esm/schemas/llm/phoenixPrompt/toolCallSchemas.d.ts.map +1 -1
  134. package/dist/esm/schemas/llm/phoenixPrompt/toolCallSchemas.js.map +1 -1
  135. package/dist/esm/schemas/llm/phoenixPrompt/toolChoiceSchemas.d.ts.map +1 -1
  136. package/dist/esm/schemas/llm/phoenixPrompt/toolChoiceSchemas.js +1 -1
  137. package/dist/esm/schemas/llm/phoenixPrompt/toolChoiceSchemas.js.map +1 -1
  138. package/dist/esm/schemas/llm/phoenixPrompt/toolSchemas.d.ts.map +1 -1
  139. package/dist/esm/schemas/llm/phoenixPrompt/toolSchemas.js +1 -1
  140. package/dist/esm/schemas/llm/phoenixPrompt/toolSchemas.js.map +1 -1
  141. package/dist/esm/schemas/llm/schemas.d.ts +12 -12
  142. package/dist/esm/schemas/llm/schemas.d.ts.map +1 -1
  143. package/dist/esm/schemas/llm/schemas.js +8 -8
  144. package/dist/esm/schemas/llm/schemas.js.map +1 -1
  145. package/dist/esm/schemas/llm/types.d.ts +14 -14
  146. package/dist/esm/schemas/llm/types.d.ts.map +1 -1
  147. package/dist/esm/schemas/llm/utils.d.ts.map +1 -1
  148. package/dist/esm/schemas/llm/utils.js +8 -8
  149. package/dist/esm/schemas/llm/utils.js.map +1 -1
  150. package/dist/esm/schemas/llm/vercel/messagePartSchemas.d.ts +8 -8
  151. package/dist/esm/schemas/llm/vercel/messagePartSchemas.d.ts.map +1 -1
  152. package/dist/esm/schemas/llm/vercel/messagePartSchemas.js +1 -1
  153. package/dist/esm/schemas/llm/vercel/messagePartSchemas.js.map +1 -1
  154. package/dist/esm/schemas/llm/vercel/messageSchemas.d.ts +8 -8
  155. package/dist/esm/schemas/llm/vercel/messageSchemas.d.ts.map +1 -1
  156. package/dist/esm/schemas/llm/vercel/messageSchemas.js +1 -1
  157. package/dist/esm/schemas/llm/vercel/messageSchemas.js.map +1 -1
  158. package/dist/esm/sessions/addSessionAnnotation.d.ts.map +1 -1
  159. package/dist/esm/sessions/addSessionAnnotation.js.map +1 -1
  160. package/dist/esm/sessions/logSessionAnnotations.d.ts.map +1 -1
  161. package/dist/esm/sessions/logSessionAnnotations.js.map +1 -1
  162. package/dist/esm/spans/addDocumentAnnotation.d.ts.map +1 -1
  163. package/dist/esm/spans/addDocumentAnnotation.js.map +1 -1
  164. package/dist/esm/spans/addSpanAnnotation.d.ts.map +1 -1
  165. package/dist/esm/spans/addSpanAnnotation.js.map +1 -1
  166. package/dist/esm/spans/getSpanAnnotations.d.ts +1 -1
  167. package/dist/esm/spans/getSpanAnnotations.d.ts.map +1 -1
  168. package/dist/esm/spans/getSpanAnnotations.js.map +1 -1
  169. package/dist/esm/spans/getSpans.d.ts +1 -1
  170. package/dist/esm/spans/getSpans.d.ts.map +1 -1
  171. package/dist/esm/spans/getSpans.js.map +1 -1
  172. package/dist/esm/spans/logDocumentAnnotations.d.ts.map +1 -1
  173. package/dist/esm/spans/logDocumentAnnotations.js.map +1 -1
  174. package/dist/esm/spans/logSpanAnnotations.d.ts.map +1 -1
  175. package/dist/esm/spans/logSpanAnnotations.js.map +1 -1
  176. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  177. package/dist/esm/types/experiments.d.ts +60 -3
  178. package/dist/esm/types/experiments.d.ts.map +1 -1
  179. package/dist/esm/utils/channel.d.ts +229 -0
  180. package/dist/esm/utils/channel.d.ts.map +1 -0
  181. package/dist/esm/utils/channel.js +352 -0
  182. package/dist/esm/utils/channel.js.map +1 -0
  183. package/dist/esm/utils/formatPromptMessages.d.ts.map +1 -1
  184. package/dist/esm/utils/formatPromptMessages.js +1 -1
  185. package/dist/esm/utils/formatPromptMessages.js.map +1 -1
  186. package/dist/esm/utils/getPromptBySelector.d.ts +1 -1
  187. package/dist/esm/utils/getPromptBySelector.d.ts.map +1 -1
  188. package/dist/esm/utils/getPromptBySelector.js +1 -1
  189. package/dist/esm/utils/getPromptBySelector.js.map +1 -1
  190. package/dist/esm/utils/isHttpError.d.ts +21 -0
  191. package/dist/esm/utils/isHttpError.d.ts.map +1 -0
  192. package/dist/esm/utils/isHttpError.js +33 -0
  193. package/dist/esm/utils/isHttpError.js.map +1 -0
  194. package/dist/src/__generated__/api/v1.d.ts +321 -9
  195. package/dist/src/__generated__/api/v1.d.ts.map +1 -1
  196. package/dist/src/client.d.ts +2 -2
  197. package/dist/src/client.d.ts.map +1 -1
  198. package/dist/src/client.js +1 -1
  199. package/dist/src/client.js.map +1 -1
  200. package/dist/src/datasets/appendDatasetExamples.d.ts +1 -1
  201. package/dist/src/datasets/appendDatasetExamples.d.ts.map +1 -1
  202. package/dist/src/datasets/appendDatasetExamples.js +1 -1
  203. package/dist/src/datasets/appendDatasetExamples.js.map +1 -1
  204. package/dist/src/datasets/createDataset.d.ts.map +1 -1
  205. package/dist/src/datasets/createDataset.js.map +1 -1
  206. package/dist/src/datasets/createOrGetDataset.d.ts.map +1 -1
  207. package/dist/src/datasets/createOrGetDataset.js.map +1 -1
  208. package/dist/src/datasets/getDataset.d.ts +1 -1
  209. package/dist/src/datasets/getDataset.d.ts.map +1 -1
  210. package/dist/src/datasets/getDataset.js.map +1 -1
  211. package/dist/src/datasets/getDatasetExamples.d.ts +1 -1
  212. package/dist/src/datasets/getDatasetExamples.d.ts.map +1 -1
  213. package/dist/src/datasets/getDatasetExamples.js +1 -1
  214. package/dist/src/datasets/getDatasetExamples.js.map +1 -1
  215. package/dist/src/datasets/getDatasetInfo.d.ts +1 -1
  216. package/dist/src/datasets/getDatasetInfo.d.ts.map +1 -1
  217. package/dist/src/datasets/getDatasetInfo.js +1 -1
  218. package/dist/src/datasets/getDatasetInfo.js.map +1 -1
  219. package/dist/src/datasets/listDatasets.d.ts +1 -1
  220. package/dist/src/datasets/listDatasets.d.ts.map +1 -1
  221. package/dist/src/datasets/listDatasets.js.map +1 -1
  222. package/dist/src/experiments/createExperiment.d.ts +39 -0
  223. package/dist/src/experiments/createExperiment.d.ts.map +1 -0
  224. package/dist/src/experiments/createExperiment.js +43 -0
  225. package/dist/src/experiments/createExperiment.js.map +1 -0
  226. package/dist/src/experiments/deleteExperiment.d.ts +36 -0
  227. package/dist/src/experiments/deleteExperiment.d.ts.map +1 -0
  228. package/dist/src/experiments/deleteExperiment.js +52 -0
  229. package/dist/src/experiments/deleteExperiment.js.map +1 -0
  230. package/dist/src/experiments/getExperiment.d.ts.map +1 -1
  231. package/dist/src/experiments/getExperiment.js.map +1 -1
  232. package/dist/src/experiments/getExperimentInfo.d.ts.map +1 -1
  233. package/dist/src/experiments/getExperimentInfo.js +10 -3
  234. package/dist/src/experiments/getExperimentInfo.js.map +1 -1
  235. package/dist/src/experiments/getExperimentRuns.d.ts.map +1 -1
  236. package/dist/src/experiments/getExperimentRuns.js.map +1 -1
  237. package/dist/src/experiments/index.d.ts +5 -0
  238. package/dist/src/experiments/index.d.ts.map +1 -1
  239. package/dist/src/experiments/index.js +5 -0
  240. package/dist/src/experiments/index.js.map +1 -1
  241. package/dist/src/experiments/listExperiments.d.ts +29 -0
  242. package/dist/src/experiments/listExperiments.d.ts.map +1 -0
  243. package/dist/src/experiments/listExperiments.js +66 -0
  244. package/dist/src/experiments/listExperiments.js.map +1 -0
  245. package/dist/src/experiments/resumeEvaluation.d.ts +105 -0
  246. package/dist/src/experiments/resumeEvaluation.d.ts.map +1 -0
  247. package/dist/src/experiments/resumeEvaluation.js +584 -0
  248. package/dist/src/experiments/resumeEvaluation.js.map +1 -0
  249. package/dist/src/experiments/resumeExperiment.d.ts +102 -0
  250. package/dist/src/experiments/resumeExperiment.d.ts.map +1 -0
  251. package/dist/src/experiments/resumeExperiment.js +540 -0
  252. package/dist/src/experiments/resumeExperiment.js.map +1 -0
  253. package/dist/src/experiments/runExperiment.d.ts +2 -2
  254. package/dist/src/experiments/runExperiment.d.ts.map +1 -1
  255. package/dist/src/experiments/runExperiment.js +34 -8
  256. package/dist/src/experiments/runExperiment.js.map +1 -1
  257. package/dist/src/prompts/createPrompt.d.ts +20 -2
  258. package/dist/src/prompts/createPrompt.d.ts.map +1 -1
  259. package/dist/src/prompts/createPrompt.js +14 -1
  260. package/dist/src/prompts/createPrompt.js.map +1 -1
  261. package/dist/src/prompts/sdks/toAI.d.ts +2 -2
  262. package/dist/src/prompts/sdks/toAI.d.ts.map +1 -1
  263. package/dist/src/prompts/sdks/toAI.js +1 -1
  264. package/dist/src/prompts/sdks/toAI.js.map +1 -1
  265. package/dist/src/prompts/sdks/toAnthropic.d.ts +1 -1
  266. package/dist/src/prompts/sdks/toAnthropic.d.ts.map +1 -1
  267. package/dist/src/prompts/sdks/toAnthropic.js +1 -1
  268. package/dist/src/prompts/sdks/toAnthropic.js.map +1 -1
  269. package/dist/src/prompts/sdks/toOpenAI.d.ts +1 -1
  270. package/dist/src/prompts/sdks/toOpenAI.d.ts.map +1 -1
  271. package/dist/src/prompts/sdks/toOpenAI.js +2 -2
  272. package/dist/src/prompts/sdks/toOpenAI.js.map +1 -1
  273. package/dist/src/prompts/sdks/toSDK.d.ts +1 -1
  274. package/dist/src/prompts/sdks/toSDK.d.ts.map +1 -1
  275. package/dist/src/prompts/sdks/toSDK.js +2 -2
  276. package/dist/src/prompts/sdks/toSDK.js.map +1 -1
  277. package/dist/src/prompts/sdks/types.d.ts.map +1 -1
  278. package/dist/src/schemas/llm/anthropic/converters.d.ts.map +1 -1
  279. package/dist/src/schemas/llm/anthropic/converters.js +2 -2
  280. package/dist/src/schemas/llm/anthropic/converters.js.map +1 -1
  281. package/dist/src/schemas/llm/anthropic/messagePartSchemas.d.ts.map +1 -1
  282. package/dist/src/schemas/llm/anthropic/messagePartSchemas.js +1 -1
  283. package/dist/src/schemas/llm/anthropic/messagePartSchemas.js.map +1 -1
  284. package/dist/src/schemas/llm/anthropic/messageSchemas.d.ts.map +1 -1
  285. package/dist/src/schemas/llm/anthropic/messageSchemas.js +1 -1
  286. package/dist/src/schemas/llm/anthropic/messageSchemas.js.map +1 -1
  287. package/dist/src/schemas/llm/anthropic/toolCallSchemas.d.ts.map +1 -1
  288. package/dist/src/schemas/llm/anthropic/toolCallSchemas.js +1 -1
  289. package/dist/src/schemas/llm/anthropic/toolCallSchemas.js.map +1 -1
  290. package/dist/src/schemas/llm/anthropic/toolSchemas.d.ts.map +1 -1
  291. package/dist/src/schemas/llm/anthropic/toolSchemas.js +1 -1
  292. package/dist/src/schemas/llm/anthropic/toolSchemas.js.map +1 -1
  293. package/dist/src/schemas/llm/constants.d.ts +9 -9
  294. package/dist/src/schemas/llm/constants.d.ts.map +1 -1
  295. package/dist/src/schemas/llm/constants.js +12 -12
  296. package/dist/src/schemas/llm/constants.js.map +1 -1
  297. package/dist/src/schemas/llm/converters.d.ts +33 -33
  298. package/dist/src/schemas/llm/converters.d.ts.map +1 -1
  299. package/dist/src/schemas/llm/converters.js +1 -1
  300. package/dist/src/schemas/llm/converters.js.map +1 -1
  301. package/dist/src/schemas/llm/openai/converters.d.ts +2 -2
  302. package/dist/src/schemas/llm/openai/converters.d.ts.map +1 -1
  303. package/dist/src/schemas/llm/openai/converters.js +8 -8
  304. package/dist/src/schemas/llm/openai/converters.js.map +1 -1
  305. package/dist/src/schemas/llm/openai/messageSchemas.d.ts.map +1 -1
  306. package/dist/src/schemas/llm/openai/messageSchemas.js +2 -2
  307. package/dist/src/schemas/llm/openai/messageSchemas.js.map +1 -1
  308. package/dist/src/schemas/llm/openai/responseFormatSchema.d.ts.map +1 -1
  309. package/dist/src/schemas/llm/openai/responseFormatSchema.js +1 -1
  310. package/dist/src/schemas/llm/openai/responseFormatSchema.js.map +1 -1
  311. package/dist/src/schemas/llm/openai/toolSchemas.d.ts.map +1 -1
  312. package/dist/src/schemas/llm/openai/toolSchemas.js +1 -1
  313. package/dist/src/schemas/llm/openai/toolSchemas.js.map +1 -1
  314. package/dist/src/schemas/llm/phoenixPrompt/converters.d.ts.map +1 -1
  315. package/dist/src/schemas/llm/phoenixPrompt/converters.js +5 -5
  316. package/dist/src/schemas/llm/phoenixPrompt/converters.js.map +1 -1
  317. package/dist/src/schemas/llm/phoenixPrompt/messagePartSchemas.d.ts.map +1 -1
  318. package/dist/src/schemas/llm/phoenixPrompt/messagePartSchemas.js +1 -1
  319. package/dist/src/schemas/llm/phoenixPrompt/messagePartSchemas.js.map +1 -1
  320. package/dist/src/schemas/llm/phoenixPrompt/messageSchemas.d.ts.map +1 -1
  321. package/dist/src/schemas/llm/phoenixPrompt/messageSchemas.js +2 -2
  322. package/dist/src/schemas/llm/phoenixPrompt/messageSchemas.js.map +1 -1
  323. package/dist/src/schemas/llm/phoenixPrompt/responseFormatSchema.d.ts.map +1 -1
  324. package/dist/src/schemas/llm/phoenixPrompt/responseFormatSchema.js +1 -1
  325. package/dist/src/schemas/llm/phoenixPrompt/responseFormatSchema.js.map +1 -1
  326. package/dist/src/schemas/llm/phoenixPrompt/toolCallSchemas.d.ts.map +1 -1
  327. package/dist/src/schemas/llm/phoenixPrompt/toolCallSchemas.js.map +1 -1
  328. package/dist/src/schemas/llm/phoenixPrompt/toolChoiceSchemas.d.ts.map +1 -1
  329. package/dist/src/schemas/llm/phoenixPrompt/toolChoiceSchemas.js +1 -1
  330. package/dist/src/schemas/llm/phoenixPrompt/toolChoiceSchemas.js.map +1 -1
  331. package/dist/src/schemas/llm/phoenixPrompt/toolSchemas.d.ts.map +1 -1
  332. package/dist/src/schemas/llm/phoenixPrompt/toolSchemas.js +1 -1
  333. package/dist/src/schemas/llm/phoenixPrompt/toolSchemas.js.map +1 -1
  334. package/dist/src/schemas/llm/schemas.d.ts +12 -12
  335. package/dist/src/schemas/llm/schemas.d.ts.map +1 -1
  336. package/dist/src/schemas/llm/schemas.js +16 -16
  337. package/dist/src/schemas/llm/schemas.js.map +1 -1
  338. package/dist/src/schemas/llm/types.d.ts +14 -14
  339. package/dist/src/schemas/llm/types.d.ts.map +1 -1
  340. package/dist/src/schemas/llm/utils.d.ts.map +1 -1
  341. package/dist/src/schemas/llm/utils.js +19 -19
  342. package/dist/src/schemas/llm/utils.js.map +1 -1
  343. package/dist/src/schemas/llm/vercel/messagePartSchemas.d.ts +8 -8
  344. package/dist/src/schemas/llm/vercel/messagePartSchemas.d.ts.map +1 -1
  345. package/dist/src/schemas/llm/vercel/messagePartSchemas.js +1 -1
  346. package/dist/src/schemas/llm/vercel/messagePartSchemas.js.map +1 -1
  347. package/dist/src/schemas/llm/vercel/messageSchemas.d.ts +8 -8
  348. package/dist/src/schemas/llm/vercel/messageSchemas.d.ts.map +1 -1
  349. package/dist/src/schemas/llm/vercel/messageSchemas.js +1 -1
  350. package/dist/src/schemas/llm/vercel/messageSchemas.js.map +1 -1
  351. package/dist/src/sessions/addSessionAnnotation.d.ts.map +1 -1
  352. package/dist/src/sessions/addSessionAnnotation.js.map +1 -1
  353. package/dist/src/sessions/logSessionAnnotations.d.ts.map +1 -1
  354. package/dist/src/sessions/logSessionAnnotations.js.map +1 -1
  355. package/dist/src/spans/addDocumentAnnotation.d.ts.map +1 -1
  356. package/dist/src/spans/addDocumentAnnotation.js.map +1 -1
  357. package/dist/src/spans/addSpanAnnotation.d.ts.map +1 -1
  358. package/dist/src/spans/addSpanAnnotation.js.map +1 -1
  359. package/dist/src/spans/getSpanAnnotations.d.ts +1 -1
  360. package/dist/src/spans/getSpanAnnotations.d.ts.map +1 -1
  361. package/dist/src/spans/getSpanAnnotations.js.map +1 -1
  362. package/dist/src/spans/getSpans.d.ts +1 -1
  363. package/dist/src/spans/getSpans.d.ts.map +1 -1
  364. package/dist/src/spans/getSpans.js.map +1 -1
  365. package/dist/src/spans/logDocumentAnnotations.d.ts.map +1 -1
  366. package/dist/src/spans/logDocumentAnnotations.js.map +1 -1
  367. package/dist/src/spans/logSpanAnnotations.d.ts.map +1 -1
  368. package/dist/src/spans/logSpanAnnotations.js.map +1 -1
  369. package/dist/src/types/experiments.d.ts +60 -3
  370. package/dist/src/types/experiments.d.ts.map +1 -1
  371. package/dist/src/utils/channel.d.ts +229 -0
  372. package/dist/src/utils/channel.d.ts.map +1 -0
  373. package/dist/src/utils/channel.js +385 -0
  374. package/dist/src/utils/channel.js.map +1 -0
  375. package/dist/src/utils/formatPromptMessages.d.ts.map +1 -1
  376. package/dist/src/utils/formatPromptMessages.js +1 -1
  377. package/dist/src/utils/formatPromptMessages.js.map +1 -1
  378. package/dist/src/utils/getPromptBySelector.d.ts +1 -1
  379. package/dist/src/utils/getPromptBySelector.d.ts.map +1 -1
  380. package/dist/src/utils/getPromptBySelector.js +1 -1
  381. package/dist/src/utils/getPromptBySelector.js.map +1 -1
  382. package/dist/src/utils/isHttpError.d.ts +21 -0
  383. package/dist/src/utils/isHttpError.d.ts.map +1 -0
  384. package/dist/src/utils/isHttpError.js +37 -0
  385. package/dist/src/utils/isHttpError.js.map +1 -0
  386. package/dist/tsconfig.tsbuildinfo +1 -1
  387. package/package.json +3 -3
  388. package/src/__generated__/api/v1.ts +321 -9
  389. package/src/client.ts +6 -5
  390. package/src/datasets/appendDatasetExamples.ts +4 -2
  391. package/src/datasets/createDataset.ts +1 -0
  392. package/src/datasets/createOrGetDataset.ts +2 -1
  393. package/src/datasets/getDataset.ts +2 -1
  394. package/src/datasets/getDatasetExamples.ts +4 -2
  395. package/src/datasets/getDatasetInfo.ts +4 -2
  396. package/src/datasets/listDatasets.ts +2 -1
  397. package/src/experiments/createExperiment.ts +90 -0
  398. package/src/experiments/deleteExperiment.ts +67 -0
  399. package/src/experiments/getExperiment.ts +1 -0
  400. package/src/experiments/getExperimentInfo.ts +11 -3
  401. package/src/experiments/getExperimentRuns.ts +3 -2
  402. package/src/experiments/index.ts +5 -0
  403. package/src/experiments/listExperiments.ts +83 -0
  404. package/src/experiments/resumeEvaluation.ts +799 -0
  405. package/src/experiments/resumeExperiment.ts +742 -0
  406. package/src/experiments/runExperiment.ts +55 -25
  407. package/src/prompts/createPrompt.ts +27 -9
  408. package/src/prompts/sdks/toAI.ts +6 -4
  409. package/src/prompts/sdks/toAnthropic.ts +7 -6
  410. package/src/prompts/sdks/toOpenAI.ts +10 -9
  411. package/src/prompts/sdks/toSDK.ts +5 -3
  412. package/src/prompts/sdks/types.ts +1 -0
  413. package/src/schemas/llm/anthropic/converters.ts +9 -7
  414. package/src/schemas/llm/anthropic/messagePartSchemas.ts +2 -1
  415. package/src/schemas/llm/anthropic/messageSchemas.ts +2 -2
  416. package/src/schemas/llm/anthropic/toolCallSchemas.ts +2 -1
  417. package/src/schemas/llm/anthropic/toolSchemas.ts +2 -1
  418. package/src/schemas/llm/constants.ts +14 -12
  419. package/src/schemas/llm/converters.ts +4 -3
  420. package/src/schemas/llm/openai/converters.ts +15 -13
  421. package/src/schemas/llm/openai/messageSchemas.ts +3 -3
  422. package/src/schemas/llm/openai/responseFormatSchema.ts +2 -1
  423. package/src/schemas/llm/openai/toolSchemas.ts +2 -1
  424. package/src/schemas/llm/phoenixPrompt/converters.ts +11 -10
  425. package/src/schemas/llm/phoenixPrompt/messagePartSchemas.ts +3 -2
  426. package/src/schemas/llm/phoenixPrompt/messageSchemas.ts +4 -3
  427. package/src/schemas/llm/phoenixPrompt/responseFormatSchema.ts +3 -2
  428. package/src/schemas/llm/phoenixPrompt/toolCallSchemas.ts +2 -2
  429. package/src/schemas/llm/phoenixPrompt/toolChoiceSchemas.ts +3 -2
  430. package/src/schemas/llm/phoenixPrompt/toolSchemas.ts +3 -2
  431. package/src/schemas/llm/schemas.ts +9 -8
  432. package/src/schemas/llm/types.ts +17 -16
  433. package/src/schemas/llm/utils.ts +14 -12
  434. package/src/schemas/llm/vercel/messagePartSchemas.ts +2 -1
  435. package/src/schemas/llm/vercel/messageSchemas.ts +2 -2
  436. package/src/sessions/addSessionAnnotation.ts +1 -0
  437. package/src/sessions/logSessionAnnotations.ts +1 -0
  438. package/src/spans/addDocumentAnnotation.ts +1 -0
  439. package/src/spans/addSpanAnnotation.ts +1 -0
  440. package/src/spans/getSpanAnnotations.ts +1 -1
  441. package/src/spans/getSpans.ts +1 -1
  442. package/src/spans/logDocumentAnnotations.ts +1 -0
  443. package/src/spans/logSpanAnnotations.ts +1 -0
  444. package/src/types/experiments.ts +62 -3
  445. package/src/utils/channel.ts +397 -0
  446. package/src/utils/formatPromptMessages.ts +4 -3
  447. package/src/utils/getPromptBySelector.ts +4 -3
  448. package/src/utils/isHttpError.ts +45 -0
@@ -0,0 +1,397 @@
1
+ /**
2
+ * A bounded, buffered CSP channel implementation for TypeScript.
3
+ *
4
+ * Implements the Producer-Consumer pattern with automatic backpressure via
5
+ * blocking send/receive semantics. Based on Communicating Sequential Processes (Hoare, 1978).
6
+ *
7
+ * Properties:
8
+ * - Bounded buffer: O(capacity) memory usage
9
+ * - Blocking send: Blocks when buffer is full
10
+ * - Blocking receive: Blocks when buffer is empty
11
+ * - Graceful shutdown: Close drains buffer before terminating
12
+ *
13
+ * Performance Characteristics:
14
+ * - send(): O(R) where R = pending receivers (typically 0-10)
15
+ * - receive(): O(B + S) where B = buffer size, S = pending senders
16
+ * - Uses Array.shift() which is O(n) but acceptable for small queues
17
+ * - Same complexity trade-off as async.queue, p-limit, and similar libraries
18
+ * - For typical usage (buffer < 100, queues < 10), overhead is negligible (<10ms per 5000 operations)
19
+ *
20
+ * Note: Could be optimized to O(1) with linked list or circular buffer, but current
21
+ * implementation prioritizes simplicity and is comparable to standard JS libraries.
22
+ *
23
+ * Deadlock Prevention:
24
+ * JavaScript channels use cooperative blocking via Promises, not true thread blocking.
25
+ * Deadlocks are rare but possible in certain patterns:
26
+ *
27
+ * ❌ AVOID: Sequential operations on unbuffered channels
28
+ * ```typescript
29
+ * const ch = new Channel<number>(0);
30
+ * await ch.send(1); // Blocks forever - no receiver started
31
+ * await ch.receive(); // Never reached
32
+ * ```
33
+ *
34
+ * ❌ AVOID: Circular dependencies between channels
35
+ * ```typescript
36
+ * const ch1 = new Channel(0);
37
+ * const ch2 = new Channel(0);
38
+ * // Task 1: await ch1.send() → await ch2.receive()
39
+ * // Task 2: await ch2.send() → await ch1.receive()
40
+ * // Both block on send, never reach receive
41
+ * ```
42
+ *
43
+ * ✅ SAFE: Concurrent start with buffered channels (recommended pattern)
44
+ * ```typescript
45
+ * const ch = new Channel<number>(); // Default (10) is safe
46
+ *
47
+ * // Start producer immediately
48
+ * const producer = (async () => {
49
+ * for (let i = 0; i < 100; i++) {
50
+ * await ch.send(i);
51
+ * }
52
+ * ch.close(); // Always close in finally block
53
+ * })();
54
+ *
55
+ * // Start consumers immediately
56
+ * const consumers = Array.from({ length: 5 }, async () => {
57
+ * for await (const value of ch) {
58
+ * await processValue(value);
59
+ * }
60
+ * });
61
+ *
62
+ * // Wait for all to complete
63
+ * await Promise.all([producer, ...consumers]);
64
+ * ```
65
+ *
66
+ * Best Practices:
67
+ * 1. Use default capacity or higher (10+) for production - provides safety and throughput
68
+ * 2. Always close() channels in a finally block to prevent hanging operations
69
+ * 3. Start producers and consumers concurrently, not sequentially
70
+ * 4. Use for-await loops for automatic cleanup on close
71
+ * 5. Avoid circular dependencies between channels
72
+ * 6. Handle errors in workers so they don't crash and leave channel blocked
73
+ * 7. Only use unbuffered (capacity=0) when you need strict happens-before guarantees
74
+ *
75
+ * @see https://en.wikipedia.org/wiki/Communicating_sequential_processes
76
+ *
77
+ * @template T The type of values sent through the channel
78
+ *
79
+ * @example Safe Producer-Consumer Pattern
80
+ * ```typescript
81
+ * // Default capacity (10) is safe for most cases
82
+ * const ch = new Channel<number>(); // or explicit: new Channel<number>(50)
83
+ *
84
+ * // Producer with proper cleanup
85
+ * const producer = (async () => {
86
+ * try {
87
+ * for (let i = 0; i < 100; i++) {
88
+ * await ch.send(i); // Blocks if buffer full (backpressure)
89
+ * }
90
+ * } finally {
91
+ * ch.close(); // Guaranteed cleanup
92
+ * }
93
+ * })();
94
+ *
95
+ * // Multiple consumers
96
+ * const consumers = Array.from({ length: 3 }, async () => {
97
+ * for await (const value of ch) {
98
+ * console.log(value);
99
+ * }
100
+ * });
101
+ *
102
+ * await Promise.all([producer, ...consumers]);
103
+ * ```
104
+ *
105
+ * @example Unbuffered Channel (Rendezvous)
106
+ * ```typescript
107
+ * const ch = new Channel<number>(0); // Unbuffered - use with care!
108
+ *
109
+ * // Must start both operations before awaiting
110
+ * const sendPromise = ch.send(42); // Starts but doesn't block caller yet
111
+ * const value = await ch.receive(); // Unblocks the sender
112
+ * await sendPromise; // Now safe to await
113
+ * ```
114
+ */
115
+
116
+ /**
117
+ * Internal type for blocked senders waiting to deliver values
118
+ */
119
+ interface Sender<T> {
120
+ readonly value: T;
121
+ readonly resolve: () => void;
122
+ readonly reject: (error: Error) => void;
123
+ }
124
+
125
+ /**
126
+ * Internal type for blocked receivers waiting for values
127
+ */
128
+ interface Receiver<T> {
129
+ readonly resolve: (value: T | typeof CLOSED) => void;
130
+ readonly reject: (error: Error) => void;
131
+ }
132
+
133
+ /**
134
+ * Custom error class for channel operations
135
+ */
136
+ export class ChannelError extends Error {
137
+ constructor(message: string, options?: ErrorOptions) {
138
+ super(message, options);
139
+ this.name = "ChannelError";
140
+ }
141
+ }
142
+
143
+ /**
144
+ * Error messages for channel operations
145
+ */
146
+ const ERRORS = {
147
+ SEND_TO_CLOSED: "Cannot send to closed channel",
148
+ CLOSED_WHILE_BLOCKED: "Channel closed while send was blocked",
149
+ NEGATIVE_CAPACITY: "Channel capacity must be non-negative",
150
+ } as const satisfies Record<string, string>;
151
+
152
+ export class Channel<T> {
153
+ #buffer: T[] = [];
154
+ #sendQueue: Sender<T>[] = [];
155
+ #receiveQueue: Receiver<T>[] = [];
156
+ #closed = false;
157
+ readonly #capacity: number;
158
+
159
+ /**
160
+ * Create a new channel with the specified buffer capacity.
161
+ *
162
+ * @param capacity - Buffer size (default: 10)
163
+ * - 0: Unbuffered/rendezvous channel - strict synchronization, higher deadlock risk.
164
+ * Use only when you need guaranteed happens-before ordering.
165
+ * - 1-100: Buffered channel - recommended for production use.
166
+ * - Higher values: Better throughput but more memory usage.
167
+ *
168
+ * @example
169
+ * ```typescript
170
+ * // Default buffered (safe for most cases)
171
+ * const ch1 = new Channel<number>();
172
+ *
173
+ * // Explicit buffer size (production pattern)
174
+ * const ch2 = new Channel<number>(50);
175
+ *
176
+ * // Unbuffered (advanced - strict synchronization)
177
+ * const ch3 = new Channel<number>(0);
178
+ * ```
179
+ */
180
+ constructor(capacity: number = 10) {
181
+ if (capacity < 0) {
182
+ throw new ChannelError(ERRORS.NEGATIVE_CAPACITY);
183
+ }
184
+ this.#capacity = capacity;
185
+ }
186
+
187
+ /**
188
+ * Send a value to the channel
189
+ * Blocks if the buffer is full until space is available
190
+ *
191
+ * @param value - The value to send
192
+ * @throws {ChannelError} If channel is closed
193
+ */
194
+ async send(value: T): Promise<void> {
195
+ if (this.#closed) {
196
+ throw new ChannelError(ERRORS.SEND_TO_CLOSED);
197
+ }
198
+
199
+ // Direct delivery to waiting receiver
200
+ const receiver = this.#receiveQueue.shift();
201
+ if (receiver) {
202
+ receiver.resolve(value);
203
+ return;
204
+ }
205
+
206
+ // Add to buffer if space available
207
+ if (this.#buffer.length < this.#capacity) {
208
+ this.#buffer.push(value);
209
+ return;
210
+ }
211
+
212
+ // Block until space available
213
+ return new Promise<void>((resolve, reject) => {
214
+ this.#sendQueue.push({ value, resolve, reject });
215
+ });
216
+ }
217
+
218
+ /**
219
+ * Receive a value from the channel
220
+ * Blocks if no value is available until one arrives
221
+ *
222
+ * @returns The received value, or CLOSED symbol if channel is closed and empty
223
+ */
224
+ async receive(): Promise<T | typeof CLOSED> {
225
+ // Drain buffer first
226
+ if (this.#buffer.length > 0) {
227
+ const value = this.#buffer.shift()!;
228
+
229
+ // Unblock a waiting sender
230
+ const sender = this.#sendQueue.shift();
231
+ if (sender) {
232
+ this.#buffer.push(sender.value);
233
+ sender.resolve();
234
+ }
235
+
236
+ return value;
237
+ }
238
+
239
+ // Direct handoff from waiting sender (critical for unbuffered channels)
240
+ const sender = this.#sendQueue.shift();
241
+ if (sender) {
242
+ sender.resolve();
243
+ return sender.value;
244
+ }
245
+
246
+ // Channel closed and empty
247
+ if (this.#closed) {
248
+ return CLOSED;
249
+ }
250
+
251
+ // Block until value available
252
+ return new Promise<T | typeof CLOSED>((resolve, reject) => {
253
+ this.#receiveQueue.push({ resolve, reject });
254
+ });
255
+ }
256
+
257
+ /**
258
+ * Try to receive a value without blocking
259
+ * Returns immediately with value or undefined if channel is empty
260
+ *
261
+ * @returns The received value, CLOSED if channel is closed, or undefined if empty
262
+ *
263
+ * @example
264
+ * ```typescript
265
+ * const ch = new Channel<number>(10);
266
+ * await ch.send(42);
267
+ *
268
+ * const value = ch.tryReceive();
269
+ * if (value !== undefined && value !== CLOSED) {
270
+ * console.log("Got:", value);
271
+ * }
272
+ * ```
273
+ */
274
+ tryReceive(): T | typeof CLOSED | undefined {
275
+ // Drain buffer first
276
+ if (this.#buffer.length > 0) {
277
+ const value = this.#buffer.shift()!;
278
+
279
+ // Unblock a waiting sender
280
+ const sender = this.#sendQueue.shift();
281
+ if (sender) {
282
+ this.#buffer.push(sender.value);
283
+ sender.resolve();
284
+ }
285
+
286
+ return value;
287
+ }
288
+
289
+ // Direct handoff from waiting sender
290
+ const sender = this.#sendQueue.shift();
291
+ if (sender) {
292
+ sender.resolve();
293
+ return sender.value;
294
+ }
295
+
296
+ // Channel closed and empty
297
+ if (this.#closed) {
298
+ return CLOSED;
299
+ }
300
+
301
+ // Channel empty but not closed
302
+ return undefined;
303
+ }
304
+
305
+ /**
306
+ * Close the channel
307
+ * No more sends allowed, but remaining values can be received
308
+ */
309
+ close(): void {
310
+ if (this.#closed) return;
311
+ this.#closed = true;
312
+
313
+ // Resolve all blocked receivers
314
+ for (const receiver of this.#receiveQueue) {
315
+ receiver.resolve(CLOSED);
316
+ }
317
+ this.#receiveQueue = [];
318
+
319
+ // Reject all blocked senders
320
+ const error = new ChannelError(ERRORS.CLOSED_WHILE_BLOCKED);
321
+ for (const sender of this.#sendQueue) {
322
+ sender.reject(error);
323
+ }
324
+ this.#sendQueue = [];
325
+ }
326
+
327
+ /**
328
+ * Check if channel is closed
329
+ */
330
+ get isClosed(): boolean {
331
+ return this.#closed;
332
+ }
333
+
334
+ /**
335
+ * Get current buffer length
336
+ */
337
+ get length(): number {
338
+ return this.#buffer.length;
339
+ }
340
+
341
+ /**
342
+ * Get the channel's capacity
343
+ */
344
+ get capacity(): number {
345
+ return this.#capacity;
346
+ }
347
+
348
+ /**
349
+ * Get the number of blocked senders waiting
350
+ */
351
+ get pendingSends(): number {
352
+ return this.#sendQueue.length;
353
+ }
354
+
355
+ /**
356
+ * Get the number of blocked receivers waiting
357
+ */
358
+ get pendingReceives(): number {
359
+ return this.#receiveQueue.length;
360
+ }
361
+
362
+ /**
363
+ * Async iterator support for for-await-of loops
364
+ */
365
+ async *[Symbol.asyncIterator](): AsyncIterableIterator<T> {
366
+ while (true) {
367
+ const value = await this.receive();
368
+ if (value === CLOSED) return;
369
+ yield value;
370
+ }
371
+ }
372
+ }
373
+
374
+ /**
375
+ * Special symbol to indicate channel is closed
376
+ */
377
+ export const CLOSED = Symbol("CLOSED");
378
+
379
+ /**
380
+ * Type guard to check if a value is the CLOSED symbol
381
+ *
382
+ * @param value - Value to check
383
+ * @returns true if value is CLOSED symbol
384
+ *
385
+ * @example
386
+ * ```typescript
387
+ * const value = await ch.receive();
388
+ * if (isClosed(value)) {
389
+ * console.log("Channel is closed");
390
+ * } else {
391
+ * console.log("Got value:", value);
392
+ * }
393
+ * ```
394
+ */
395
+ export function isClosed<T>(value: T | typeof CLOSED): value is typeof CLOSED {
396
+ return value === CLOSED;
397
+ }
@@ -1,10 +1,11 @@
1
1
  import { Variables } from "../prompts/sdks/types";
2
- import { PromptChatMessage, PromptTemplateFormat } from "../types/prompts";
3
- import { assertUnreachable } from "./assertUnreachable";
4
2
  import {
5
- TextPart,
6
3
  asTextPart,
4
+ TextPart,
7
5
  } from "../schemas/llm/phoenixPrompt/messagePartSchemas";
6
+ import { PromptChatMessage, PromptTemplateFormat } from "../types/prompts";
7
+
8
+ import { assertUnreachable } from "./assertUnreachable";
8
9
 
9
10
  /**
10
11
  * Format a list of prompt messages
@@ -1,7 +1,8 @@
1
- import invariant from "tiny-invariant";
2
- import { PromptSelector } from "../types/prompts";
3
- import { ClientFn } from "../types/core";
4
1
  import { createClient } from "../client";
2
+ import { ClientFn } from "../types/core";
3
+ import { PromptSelector } from "../types/prompts";
4
+
5
+ import invariant from "tiny-invariant";
5
6
 
6
7
  /**
7
8
  * Parameters for the getPromptBySelector function
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Type guard to check if an error is an HTTP error with a response status code.
3
+ * This safely narrows the type without unsafe type assertions.
4
+ *
5
+ * @param error - The error to check
6
+ * @returns True if the error has a response.status property
7
+ */
8
+ export function isHttpError(
9
+ error: unknown
10
+ ): error is { response: { status: number } } {
11
+ if (typeof error !== "object" || error === null) {
12
+ return false;
13
+ }
14
+
15
+ if (!("response" in error)) {
16
+ return false;
17
+ }
18
+
19
+ const errorWithResponse = error as { response: unknown };
20
+
21
+ if (
22
+ typeof errorWithResponse.response !== "object" ||
23
+ errorWithResponse.response === null
24
+ ) {
25
+ return false;
26
+ }
27
+
28
+ const response = errorWithResponse.response as Record<string, unknown>;
29
+
30
+ return "status" in response && typeof response.status === "number";
31
+ }
32
+
33
+ /**
34
+ * Safely checks if an error is an HTTP error with a specific status code.
35
+ *
36
+ * @param error - The error to check
37
+ * @param statusCode - The status code to check for
38
+ * @returns True if the error has the specified status code
39
+ */
40
+ export function isHttpErrorWithStatus(
41
+ error: unknown,
42
+ statusCode: number
43
+ ): boolean {
44
+ return isHttpError(error) && error.response.status === statusCode;
45
+ }