@particle-academy/prism 0.0.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 (447) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +155 -0
  3. package/dist/audio/pending-request.d.ts +37 -0
  4. package/dist/audio/pending-request.d.ts.map +1 -0
  5. package/dist/audio/pending-request.js +91 -0
  6. package/dist/audio/pending-request.js.map +1 -0
  7. package/dist/audio/request.d.ts +37 -0
  8. package/dist/audio/request.d.ts.map +1 -0
  9. package/dist/audio/request.js +50 -0
  10. package/dist/audio/request.js.map +1 -0
  11. package/dist/audio/response.d.ts +24 -0
  12. package/dist/audio/response.d.ts.map +1 -0
  13. package/dist/audio/response.js +36 -0
  14. package/dist/audio/response.js.map +1 -0
  15. package/dist/batch/batch-job.d.ts +91 -0
  16. package/dist/batch/batch-job.d.ts.map +1 -0
  17. package/dist/batch/batch-job.js +156 -0
  18. package/dist/batch/batch-job.js.map +1 -0
  19. package/dist/batch/pending-request.d.ts +29 -0
  20. package/dist/batch/pending-request.d.ts.map +1 -0
  21. package/dist/batch/pending-request.js +73 -0
  22. package/dist/batch/pending-request.js.map +1 -0
  23. package/dist/batch/request.d.ts +73 -0
  24. package/dist/batch/request.d.ts.map +1 -0
  25. package/dist/batch/request.js +79 -0
  26. package/dist/batch/request.js.map +1 -0
  27. package/dist/embeddings/pending-request.d.ts +38 -0
  28. package/dist/embeddings/pending-request.d.ts.map +1 -0
  29. package/dist/embeddings/pending-request.js +86 -0
  30. package/dist/embeddings/pending-request.js.map +1 -0
  31. package/dist/embeddings/request.d.ts +27 -0
  32. package/dist/embeddings/request.d.ts.map +1 -0
  33. package/dist/embeddings/request.js +38 -0
  34. package/dist/embeddings/request.js.map +1 -0
  35. package/dist/embeddings/response.d.ts +19 -0
  36. package/dist/embeddings/response.d.ts.map +1 -0
  37. package/dist/embeddings/response.js +21 -0
  38. package/dist/embeddings/response.js.map +1 -0
  39. package/dist/enums.d.ts +52 -0
  40. package/dist/enums.d.ts.map +1 -0
  41. package/dist/enums.js +69 -0
  42. package/dist/enums.js.map +1 -0
  43. package/dist/errors.d.ts +119 -0
  44. package/dist/errors.d.ts.map +1 -0
  45. package/dist/errors.js +115 -0
  46. package/dist/errors.js.map +1 -0
  47. package/dist/files/file-data.d.ts +53 -0
  48. package/dist/files/file-data.d.ts.map +1 -0
  49. package/dist/files/file-data.js +79 -0
  50. package/dist/files/file-data.js.map +1 -0
  51. package/dist/files/pending-request.d.ts +38 -0
  52. package/dist/files/pending-request.d.ts.map +1 -0
  53. package/dist/files/pending-request.js +96 -0
  54. package/dist/files/pending-request.js.map +1 -0
  55. package/dist/files/request.d.ts +77 -0
  56. package/dist/files/request.d.ts.map +1 -0
  57. package/dist/files/request.js +81 -0
  58. package/dist/files/request.js.map +1 -0
  59. package/dist/fim/pending-request.d.ts +31 -0
  60. package/dist/fim/pending-request.d.ts.map +1 -0
  61. package/dist/fim/pending-request.js +89 -0
  62. package/dist/fim/pending-request.js.map +1 -0
  63. package/dist/fim/request.d.ts +39 -0
  64. package/dist/fim/request.d.ts.map +1 -0
  65. package/dist/fim/request.js +65 -0
  66. package/dist/fim/request.js.map +1 -0
  67. package/dist/fim/response.d.ts +21 -0
  68. package/dist/fim/response.d.ts.map +1 -0
  69. package/dist/fim/response.js +30 -0
  70. package/dist/fim/response.js.map +1 -0
  71. package/dist/http/header-names.d.ts +36 -0
  72. package/dist/http/header-names.d.ts.map +1 -0
  73. package/dist/http/header-names.js +44 -0
  74. package/dist/http/header-names.js.map +1 -0
  75. package/dist/http/transport.d.ts +94 -0
  76. package/dist/http/transport.d.ts.map +1 -0
  77. package/dist/http/transport.js +131 -0
  78. package/dist/http/transport.js.map +1 -0
  79. package/dist/images/pending-request.d.ts +30 -0
  80. package/dist/images/pending-request.d.ts.map +1 -0
  81. package/dist/images/pending-request.js +66 -0
  82. package/dist/images/pending-request.js.map +1 -0
  83. package/dist/images/request.d.ts +19 -0
  84. package/dist/images/request.d.ts.map +1 -0
  85. package/dist/images/request.js +30 -0
  86. package/dist/images/request.js.map +1 -0
  87. package/dist/images/response.d.ts +29 -0
  88. package/dist/images/response.d.ts.map +1 -0
  89. package/dist/images/response.js +34 -0
  90. package/dist/images/response.js.map +1 -0
  91. package/dist/index.d.ts +108 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/index.js +84 -0
  94. package/dist/index.js.map +1 -0
  95. package/dist/internal/filters.d.ts +40 -0
  96. package/dist/internal/filters.d.ts.map +1 -0
  97. package/dist/internal/filters.js +83 -0
  98. package/dist/internal/filters.js.map +1 -0
  99. package/dist/json.d.ts +41 -0
  100. package/dist/json.d.ts.map +1 -0
  101. package/dist/json.js +75 -0
  102. package/dist/json.js.map +1 -0
  103. package/dist/moderation/pending-request.d.ts +24 -0
  104. package/dist/moderation/pending-request.d.ts.map +1 -0
  105. package/dist/moderation/pending-request.js +60 -0
  106. package/dist/moderation/pending-request.js.map +1 -0
  107. package/dist/moderation/request.d.ts +20 -0
  108. package/dist/moderation/request.d.ts.map +1 -0
  109. package/dist/moderation/request.js +31 -0
  110. package/dist/moderation/request.js.map +1 -0
  111. package/dist/moderation/response.d.ts +26 -0
  112. package/dist/moderation/response.d.ts.map +1 -0
  113. package/dist/moderation/response.js +34 -0
  114. package/dist/moderation/response.js.map +1 -0
  115. package/dist/prism.d.ts +43 -0
  116. package/dist/prism.d.ts.map +1 -0
  117. package/dist/prism.js +79 -0
  118. package/dist/prism.js.map +1 -0
  119. package/dist/providers/anthropic/anthropic.d.ts +67 -0
  120. package/dist/providers/anthropic/anthropic.d.ts.map +1 -0
  121. package/dist/providers/anthropic/anthropic.js +172 -0
  122. package/dist/providers/anthropic/anthropic.js.map +1 -0
  123. package/dist/providers/anthropic/build-request-body.d.ts +15 -0
  124. package/dist/providers/anthropic/build-request-body.d.ts.map +1 -0
  125. package/dist/providers/anthropic/build-request-body.js +51 -0
  126. package/dist/providers/anthropic/build-request-body.js.map +1 -0
  127. package/dist/providers/anthropic/maps/finish-reason-map.d.ts +14 -0
  128. package/dist/providers/anthropic/maps/finish-reason-map.d.ts.map +1 -0
  129. package/dist/providers/anthropic/maps/finish-reason-map.js +30 -0
  130. package/dist/providers/anthropic/maps/finish-reason-map.js.map +1 -0
  131. package/dist/providers/anthropic/maps/media-map.d.ts +25 -0
  132. package/dist/providers/anthropic/maps/media-map.d.ts.map +1 -0
  133. package/dist/providers/anthropic/maps/media-map.js +87 -0
  134. package/dist/providers/anthropic/maps/media-map.js.map +1 -0
  135. package/dist/providers/anthropic/maps/message-map.d.ts +31 -0
  136. package/dist/providers/anthropic/maps/message-map.d.ts.map +1 -0
  137. package/dist/providers/anthropic/maps/message-map.js +121 -0
  138. package/dist/providers/anthropic/maps/message-map.js.map +1 -0
  139. package/dist/providers/anthropic/maps/tool-choice-map.d.ts +11 -0
  140. package/dist/providers/anthropic/maps/tool-choice-map.d.ts.map +1 -0
  141. package/dist/providers/anthropic/maps/tool-choice-map.js +25 -0
  142. package/dist/providers/anthropic/maps/tool-choice-map.js.map +1 -0
  143. package/dist/providers/anthropic/maps/tool-map.d.ts +14 -0
  144. package/dist/providers/anthropic/maps/tool-map.d.ts.map +1 -0
  145. package/dist/providers/anthropic/maps/tool-map.js +22 -0
  146. package/dist/providers/anthropic/maps/tool-map.js.map +1 -0
  147. package/dist/providers/anthropic/parse-response.d.ts +21 -0
  148. package/dist/providers/anthropic/parse-response.d.ts.map +1 -0
  149. package/dist/providers/anthropic/parse-response.js +109 -0
  150. package/dist/providers/anthropic/parse-response.js.map +1 -0
  151. package/dist/providers/anthropic/rate-limits.d.ts +4 -0
  152. package/dist/providers/anthropic/rate-limits.d.ts.map +1 -0
  153. package/dist/providers/anthropic/rate-limits.js +47 -0
  154. package/dist/providers/anthropic/rate-limits.js.map +1 -0
  155. package/dist/providers/anthropic/stream-events.d.ts +27 -0
  156. package/dist/providers/anthropic/stream-events.d.ts.map +1 -0
  157. package/dist/providers/anthropic/stream-events.js +147 -0
  158. package/dist/providers/anthropic/stream-events.js.map +1 -0
  159. package/dist/providers/mistral/build-request-body.d.ts +32 -0
  160. package/dist/providers/mistral/build-request-body.d.ts.map +1 -0
  161. package/dist/providers/mistral/build-request-body.js +69 -0
  162. package/dist/providers/mistral/build-request-body.js.map +1 -0
  163. package/dist/providers/mistral/embeddings.d.ts +14 -0
  164. package/dist/providers/mistral/embeddings.d.ts.map +1 -0
  165. package/dist/providers/mistral/embeddings.js +41 -0
  166. package/dist/providers/mistral/embeddings.js.map +1 -0
  167. package/dist/providers/mistral/fim.d.ts +32 -0
  168. package/dist/providers/mistral/fim.d.ts.map +1 -0
  169. package/dist/providers/mistral/fim.js +70 -0
  170. package/dist/providers/mistral/fim.js.map +1 -0
  171. package/dist/providers/mistral/maps/finish-reason-map.d.ts +15 -0
  172. package/dist/providers/mistral/maps/finish-reason-map.d.ts.map +1 -0
  173. package/dist/providers/mistral/maps/finish-reason-map.js +32 -0
  174. package/dist/providers/mistral/maps/finish-reason-map.js.map +1 -0
  175. package/dist/providers/mistral/maps/media-map.d.ts +24 -0
  176. package/dist/providers/mistral/maps/media-map.d.ts.map +1 -0
  177. package/dist/providers/mistral/maps/media-map.js +41 -0
  178. package/dist/providers/mistral/maps/media-map.js.map +1 -0
  179. package/dist/providers/mistral/maps/message-map.d.ts +20 -0
  180. package/dist/providers/mistral/maps/message-map.d.ts.map +1 -0
  181. package/dist/providers/mistral/maps/message-map.js +83 -0
  182. package/dist/providers/mistral/maps/message-map.js.map +1 -0
  183. package/dist/providers/mistral/maps/tool-choice-map.d.ts +12 -0
  184. package/dist/providers/mistral/maps/tool-choice-map.d.ts.map +1 -0
  185. package/dist/providers/mistral/maps/tool-choice-map.js +25 -0
  186. package/dist/providers/mistral/maps/tool-choice-map.js.map +1 -0
  187. package/dist/providers/mistral/maps/tool-map.d.ts +15 -0
  188. package/dist/providers/mistral/maps/tool-map.d.ts.map +1 -0
  189. package/dist/providers/mistral/maps/tool-map.js +26 -0
  190. package/dist/providers/mistral/maps/tool-map.js.map +1 -0
  191. package/dist/providers/mistral/mistral.d.ts +90 -0
  192. package/dist/providers/mistral/mistral.d.ts.map +1 -0
  193. package/dist/providers/mistral/mistral.js +210 -0
  194. package/dist/providers/mistral/mistral.js.map +1 -0
  195. package/dist/providers/mistral/parse-response.d.ts +35 -0
  196. package/dist/providers/mistral/parse-response.d.ts.map +1 -0
  197. package/dist/providers/mistral/parse-response.js +114 -0
  198. package/dist/providers/mistral/parse-response.js.map +1 -0
  199. package/dist/providers/mistral/rate-limits.d.ts +24 -0
  200. package/dist/providers/mistral/rate-limits.d.ts.map +1 -0
  201. package/dist/providers/mistral/rate-limits.js +55 -0
  202. package/dist/providers/mistral/rate-limits.js.map +1 -0
  203. package/dist/providers/mistral/stream-events.d.ts +29 -0
  204. package/dist/providers/mistral/stream-events.d.ts.map +1 -0
  205. package/dist/providers/mistral/stream-events.js +142 -0
  206. package/dist/providers/mistral/stream-events.js.map +1 -0
  207. package/dist/providers/openai/audio.d.ts +16 -0
  208. package/dist/providers/openai/audio.d.ts.map +1 -0
  209. package/dist/providers/openai/audio.js +105 -0
  210. package/dist/providers/openai/audio.js.map +1 -0
  211. package/dist/providers/openai/batch.d.ts +29 -0
  212. package/dist/providers/openai/batch.d.ts.map +1 -0
  213. package/dist/providers/openai/batch.js +181 -0
  214. package/dist/providers/openai/batch.js.map +1 -0
  215. package/dist/providers/openai/build-request-body.d.ts +25 -0
  216. package/dist/providers/openai/build-request-body.d.ts.map +1 -0
  217. package/dist/providers/openai/build-request-body.js +66 -0
  218. package/dist/providers/openai/build-request-body.js.map +1 -0
  219. package/dist/providers/openai/build-structured-body.d.ts +16 -0
  220. package/dist/providers/openai/build-structured-body.d.ts.map +1 -0
  221. package/dist/providers/openai/build-structured-body.js +47 -0
  222. package/dist/providers/openai/build-structured-body.js.map +1 -0
  223. package/dist/providers/openai/embeddings.d.ts +6 -0
  224. package/dist/providers/openai/embeddings.d.ts.map +1 -0
  225. package/dist/providers/openai/embeddings.js +61 -0
  226. package/dist/providers/openai/embeddings.js.map +1 -0
  227. package/dist/providers/openai/files.d.ts +16 -0
  228. package/dist/providers/openai/files.d.ts.map +1 -0
  229. package/dist/providers/openai/files.js +80 -0
  230. package/dist/providers/openai/files.js.map +1 -0
  231. package/dist/providers/openai/images.d.ts +6 -0
  232. package/dist/providers/openai/images.d.ts.map +1 -0
  233. package/dist/providers/openai/images.js +55 -0
  234. package/dist/providers/openai/images.js.map +1 -0
  235. package/dist/providers/openai/maps/finish-reason-map.d.ts +21 -0
  236. package/dist/providers/openai/maps/finish-reason-map.d.ts.map +1 -0
  237. package/dist/providers/openai/maps/finish-reason-map.js +56 -0
  238. package/dist/providers/openai/maps/finish-reason-map.js.map +1 -0
  239. package/dist/providers/openai/maps/media-map.d.ts +25 -0
  240. package/dist/providers/openai/maps/media-map.d.ts.map +1 -0
  241. package/dist/providers/openai/maps/media-map.js +53 -0
  242. package/dist/providers/openai/maps/media-map.js.map +1 -0
  243. package/dist/providers/openai/maps/message-map.d.ts +21 -0
  244. package/dist/providers/openai/maps/message-map.d.ts.map +1 -0
  245. package/dist/providers/openai/maps/message-map.js +128 -0
  246. package/dist/providers/openai/maps/message-map.js.map +1 -0
  247. package/dist/providers/openai/maps/tool-choice-map.d.ts +14 -0
  248. package/dist/providers/openai/maps/tool-choice-map.d.ts.map +1 -0
  249. package/dist/providers/openai/maps/tool-choice-map.js +27 -0
  250. package/dist/providers/openai/maps/tool-choice-map.js.map +1 -0
  251. package/dist/providers/openai/maps/tool-map.d.ts +16 -0
  252. package/dist/providers/openai/maps/tool-map.d.ts.map +1 -0
  253. package/dist/providers/openai/maps/tool-map.js +34 -0
  254. package/dist/providers/openai/maps/tool-map.js.map +1 -0
  255. package/dist/providers/openai/moderation.d.ts +6 -0
  256. package/dist/providers/openai/moderation.d.ts.map +1 -0
  257. package/dist/providers/openai/moderation.js +26 -0
  258. package/dist/providers/openai/moderation.js.map +1 -0
  259. package/dist/providers/openai/openai.d.ts +103 -0
  260. package/dist/providers/openai/openai.d.ts.map +1 -0
  261. package/dist/providers/openai/openai.js +385 -0
  262. package/dist/providers/openai/openai.js.map +1 -0
  263. package/dist/providers/openai/parse-response.d.ts +21 -0
  264. package/dist/providers/openai/parse-response.d.ts.map +1 -0
  265. package/dist/providers/openai/parse-response.js +114 -0
  266. package/dist/providers/openai/parse-response.js.map +1 -0
  267. package/dist/providers/openai/rate-limits.d.ts +4 -0
  268. package/dist/providers/openai/rate-limits.d.ts.map +1 -0
  269. package/dist/providers/openai/rate-limits.js +47 -0
  270. package/dist/providers/openai/rate-limits.js.map +1 -0
  271. package/dist/providers/openai/stream-events.d.ts +13 -0
  272. package/dist/providers/openai/stream-events.d.ts.map +1 -0
  273. package/dist/providers/openai/stream-events.js +79 -0
  274. package/dist/providers/openai/stream-events.js.map +1 -0
  275. package/dist/providers/openai/structured-mode-resolver.d.ts +3 -0
  276. package/dist/providers/openai/structured-mode-resolver.d.ts.map +1 -0
  277. package/dist/providers/openai/structured-mode-resolver.js +41 -0
  278. package/dist/providers/openai/structured-mode-resolver.js.map +1 -0
  279. package/dist/providers/provider.d.ts +55 -0
  280. package/dist/providers/provider.d.ts.map +1 -0
  281. package/dist/providers/provider.js +73 -0
  282. package/dist/providers/provider.js.map +1 -0
  283. package/dist/providers/registry.d.ts +10 -0
  284. package/dist/providers/registry.d.ts.map +1 -0
  285. package/dist/providers/registry.js +27 -0
  286. package/dist/providers/registry.js.map +1 -0
  287. package/dist/providers/support/media.d.ts +16 -0
  288. package/dist/providers/support/media.d.ts.map +1 -0
  289. package/dist/providers/support/media.js +26 -0
  290. package/dist/providers/support/media.js.map +1 -0
  291. package/dist/schema/index.d.ts +114 -0
  292. package/dist/schema/index.d.ts.map +1 -0
  293. package/dist/schema/index.js +192 -0
  294. package/dist/schema/index.js.map +1 -0
  295. package/dist/streaming/events.d.ts +90 -0
  296. package/dist/streaming/events.d.ts.map +1 -0
  297. package/dist/streaming/events.js +152 -0
  298. package/dist/streaming/events.js.map +1 -0
  299. package/dist/streaming/sse.d.ts +17 -0
  300. package/dist/streaming/sse.d.ts.map +1 -0
  301. package/dist/streaming/sse.js +50 -0
  302. package/dist/streaming/sse.js.map +1 -0
  303. package/dist/structured/extract.d.ts +23 -0
  304. package/dist/structured/extract.d.ts.map +1 -0
  305. package/dist/structured/extract.js +43 -0
  306. package/dist/structured/extract.js.map +1 -0
  307. package/dist/structured/from-text.d.ts +16 -0
  308. package/dist/structured/from-text.d.ts.map +1 -0
  309. package/dist/structured/from-text.js +27 -0
  310. package/dist/structured/from-text.js.map +1 -0
  311. package/dist/structured/pending-request.d.ts +28 -0
  312. package/dist/structured/pending-request.d.ts.map +1 -0
  313. package/dist/structured/pending-request.js +48 -0
  314. package/dist/structured/pending-request.js.map +1 -0
  315. package/dist/structured/request.d.ts +28 -0
  316. package/dist/structured/request.d.ts.map +1 -0
  317. package/dist/structured/request.js +31 -0
  318. package/dist/structured/request.js.map +1 -0
  319. package/dist/structured/response.d.ts +44 -0
  320. package/dist/structured/response.d.ts.map +1 -0
  321. package/dist/structured/response.js +49 -0
  322. package/dist/structured/response.js.map +1 -0
  323. package/dist/text/pending-request.d.ts +77 -0
  324. package/dist/text/pending-request.d.ts.map +1 -0
  325. package/dist/text/pending-request.js +189 -0
  326. package/dist/text/pending-request.js.map +1 -0
  327. package/dist/text/request.d.ts +62 -0
  328. package/dist/text/request.d.ts.map +1 -0
  329. package/dist/text/request.js +117 -0
  330. package/dist/text/request.js.map +1 -0
  331. package/dist/text/response-builder.d.ts +16 -0
  332. package/dist/text/response-builder.d.ts.map +1 -0
  333. package/dist/text/response-builder.js +52 -0
  334. package/dist/text/response-builder.js.map +1 -0
  335. package/dist/text/response.d.ts +36 -0
  336. package/dist/text/response.d.ts.map +1 -0
  337. package/dist/text/response.js +40 -0
  338. package/dist/text/response.js.map +1 -0
  339. package/dist/text/step.d.ts +41 -0
  340. package/dist/text/step.d.ts.map +1 -0
  341. package/dist/text/step.js +46 -0
  342. package/dist/text/step.js.map +1 -0
  343. package/dist/tool.d.ts +34 -0
  344. package/dist/tool.d.ts.map +1 -0
  345. package/dist/tool.js +86 -0
  346. package/dist/tool.js.map +1 -0
  347. package/dist/value-objects/artifact.d.ts +14 -0
  348. package/dist/value-objects/artifact.d.ts.map +1 -0
  349. package/dist/value-objects/artifact.js +32 -0
  350. package/dist/value-objects/artifact.js.map +1 -0
  351. package/dist/value-objects/embedding.d.ts +24 -0
  352. package/dist/value-objects/embedding.d.ts.map +1 -0
  353. package/dist/value-objects/embedding.js +29 -0
  354. package/dist/value-objects/embedding.js.map +1 -0
  355. package/dist/value-objects/embeddings-usage.d.ts +16 -0
  356. package/dist/value-objects/embeddings-usage.d.ts.map +1 -0
  357. package/dist/value-objects/embeddings-usage.js +19 -0
  358. package/dist/value-objects/embeddings-usage.js.map +1 -0
  359. package/dist/value-objects/generated-audio.d.ts +20 -0
  360. package/dist/value-objects/generated-audio.d.ts.map +1 -0
  361. package/dist/value-objects/generated-audio.js +23 -0
  362. package/dist/value-objects/generated-audio.js.map +1 -0
  363. package/dist/value-objects/generated-image.d.ts +36 -0
  364. package/dist/value-objects/generated-image.d.ts.map +1 -0
  365. package/dist/value-objects/generated-image.js +35 -0
  366. package/dist/value-objects/generated-image.js.map +1 -0
  367. package/dist/value-objects/index.d.ts +13 -0
  368. package/dist/value-objects/index.d.ts.map +1 -0
  369. package/dist/value-objects/index.js +10 -0
  370. package/dist/value-objects/index.js.map +1 -0
  371. package/dist/value-objects/media/audio.d.ts +8 -0
  372. package/dist/value-objects/media/audio.d.ts.map +1 -0
  373. package/dist/value-objects/media/audio.js +9 -0
  374. package/dist/value-objects/media/audio.js.map +1 -0
  375. package/dist/value-objects/media/document.d.ts +44 -0
  376. package/dist/value-objects/media/document.d.ts.map +1 -0
  377. package/dist/value-objects/media/document.js +75 -0
  378. package/dist/value-objects/media/document.js.map +1 -0
  379. package/dist/value-objects/media/image.d.ts +13 -0
  380. package/dist/value-objects/media/image.d.ts.map +1 -0
  381. package/dist/value-objects/media/image.js +14 -0
  382. package/dist/value-objects/media/image.js.map +1 -0
  383. package/dist/value-objects/media/media.d.ts +119 -0
  384. package/dist/value-objects/media/media.d.ts.map +1 -0
  385. package/dist/value-objects/media/media.js +267 -0
  386. package/dist/value-objects/media/media.js.map +1 -0
  387. package/dist/value-objects/media/part.d.ts +25 -0
  388. package/dist/value-objects/media/part.d.ts.map +1 -0
  389. package/dist/value-objects/media/part.js +41 -0
  390. package/dist/value-objects/media/part.js.map +1 -0
  391. package/dist/value-objects/media/text.d.ts +24 -0
  392. package/dist/value-objects/media/text.d.ts.map +1 -0
  393. package/dist/value-objects/media/text.js +33 -0
  394. package/dist/value-objects/media/text.js.map +1 -0
  395. package/dist/value-objects/media/video.d.ts +7 -0
  396. package/dist/value-objects/media/video.d.ts.map +1 -0
  397. package/dist/value-objects/media/video.js +8 -0
  398. package/dist/value-objects/media/video.js.map +1 -0
  399. package/dist/value-objects/messages/assistant-message.d.ts +26 -0
  400. package/dist/value-objects/messages/assistant-message.d.ts.map +1 -0
  401. package/dist/value-objects/messages/assistant-message.js +37 -0
  402. package/dist/value-objects/messages/assistant-message.js.map +1 -0
  403. package/dist/value-objects/messages/index.d.ts +27 -0
  404. package/dist/value-objects/messages/index.d.ts.map +1 -0
  405. package/dist/value-objects/messages/index.js +32 -0
  406. package/dist/value-objects/messages/index.js.map +1 -0
  407. package/dist/value-objects/messages/system-message.d.ts +9 -0
  408. package/dist/value-objects/messages/system-message.d.ts.map +1 -0
  409. package/dist/value-objects/messages/system-message.js +17 -0
  410. package/dist/value-objects/messages/system-message.js.map +1 -0
  411. package/dist/value-objects/messages/tool-result-message.d.ts +14 -0
  412. package/dist/value-objects/messages/tool-result-message.d.ts.map +1 -0
  413. package/dist/value-objects/messages/tool-result-message.js +26 -0
  414. package/dist/value-objects/messages/tool-result-message.js.map +1 -0
  415. package/dist/value-objects/messages/user-message.d.ts +47 -0
  416. package/dist/value-objects/messages/user-message.d.ts.map +1 -0
  417. package/dist/value-objects/messages/user-message.js +87 -0
  418. package/dist/value-objects/messages/user-message.js.map +1 -0
  419. package/dist/value-objects/meta.d.ts +12 -0
  420. package/dist/value-objects/meta.d.ts.map +1 -0
  421. package/dist/value-objects/meta.js +28 -0
  422. package/dist/value-objects/meta.js.map +1 -0
  423. package/dist/value-objects/moderation-result.d.ts +20 -0
  424. package/dist/value-objects/moderation-result.d.ts.map +1 -0
  425. package/dist/value-objects/moderation-result.js +64 -0
  426. package/dist/value-objects/moderation-result.js.map +1 -0
  427. package/dist/value-objects/provider-rate-limit.d.ts +11 -0
  428. package/dist/value-objects/provider-rate-limit.d.ts.map +1 -0
  429. package/dist/value-objects/provider-rate-limit.js +34 -0
  430. package/dist/value-objects/provider-rate-limit.js.map +1 -0
  431. package/dist/value-objects/provider-tool.d.ts +19 -0
  432. package/dist/value-objects/provider-tool.d.ts.map +1 -0
  433. package/dist/value-objects/provider-tool.js +31 -0
  434. package/dist/value-objects/provider-tool.js.map +1 -0
  435. package/dist/value-objects/tool-call.d.ts +29 -0
  436. package/dist/value-objects/tool-call.d.ts.map +1 -0
  437. package/dist/value-objects/tool-call.js +112 -0
  438. package/dist/value-objects/tool-call.js.map +1 -0
  439. package/dist/value-objects/tool-result.d.ts +25 -0
  440. package/dist/value-objects/tool-result.d.ts.map +1 -0
  441. package/dist/value-objects/tool-result.js +45 -0
  442. package/dist/value-objects/tool-result.js.map +1 -0
  443. package/dist/value-objects/usage.d.ts +13 -0
  444. package/dist/value-objects/usage.d.ts.map +1 -0
  445. package/dist/value-objects/usage.js +31 -0
  446. package/dist/value-objects/usage.js.map +1 -0
  447. package/package.json +46 -0
@@ -0,0 +1,267 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { extname } from 'node:path';
3
+ import { PrismError } from '../../errors.js';
4
+ /**
5
+ * A binary payload, however it was given to us.
6
+ *
7
+ * One type behind five ways of naming the same bytes — a url, a base64 string,
8
+ * a local file, raw content, or a provider-side file id. Subclasses add nothing
9
+ * but a name; `Image` and `Audio` differ in what a provider does with them, not
10
+ * in what they are.
11
+ *
12
+ * The alternative was three standalone classes each restating url / base64 /
13
+ * mimeType, which is how a package ends up with three subtly different answers
14
+ * to "is this a file". `GeneratedImage` was the first of those and is now
15
+ * `Image`'s sibling under this base.
16
+ *
17
+ * TWO DELIBERATE DIVERGENCES FROM THE REFERENCE, both recorded in the port gaps
18
+ * register:
19
+ *
20
+ * - `fromStoragePath` is absent. It resolves through Laravel's filesystem, and
21
+ * there is no equivalent here to resolve through.
22
+ * - A url is NEVER fetched implicitly. The reference reads url content on
23
+ * demand inside `rawContent()`, so touching a property performs an outbound
24
+ * request; here `fetch()` is explicit and separate. A value object that
25
+ * reaches the network when you read it turns a stored locator into a request
26
+ * at replay time, which is the exact hazard prism-harness documents about
27
+ * replaying threads.
28
+ */
29
+ export class Media {
30
+ url;
31
+ #base64;
32
+ #mimeType;
33
+ #rawContent = null;
34
+ #localPath = null;
35
+ #fileId = null;
36
+ #filename = null;
37
+ constructor(url = null, base64 = null, mimeType = null) {
38
+ this.url = url;
39
+ this.#base64 = base64;
40
+ this.#mimeType = mimeType;
41
+ }
42
+ static fromFileId(fileId) {
43
+ const media = new this();
44
+ media.setFileId(fileId);
45
+ return media;
46
+ }
47
+ static fromUrl(url, mimeType = null) {
48
+ const media = new this(url);
49
+ if (mimeType !== null) {
50
+ media.setMimeType(mimeType);
51
+ }
52
+ return media;
53
+ }
54
+ static fromBase64(base64, mimeType = null) {
55
+ return new this(null, base64, mimeType);
56
+ }
57
+ static fromRawContent(content, mimeType = null) {
58
+ const media = new this();
59
+ media.setRawContent(content, mimeType);
60
+ return media;
61
+ }
62
+ /**
63
+ * Read a file from disk.
64
+ *
65
+ * Refuses an EMPTY file, matching the reference. A zero-byte upload is almost
66
+ * always a mistake upstream, and a provider's error for it is far less useful
67
+ * than one naming the path.
68
+ */
69
+ static fromLocalPath(path, mimeType = null) {
70
+ let content;
71
+ try {
72
+ // Same reason as base64 decoding: a plain Uint8Array, not a Buffer.
73
+ content = Uint8Array.from(readFileSync(path));
74
+ }
75
+ catch (cause) {
76
+ throw PrismError.unreadableMediaFile(path, cause);
77
+ }
78
+ if (content.byteLength === 0) {
79
+ throw PrismError.unreadableMediaFile(path, new Error('the file is empty'));
80
+ }
81
+ const media = new this();
82
+ media.setRawContent(content, mimeType ?? guessMimeType(path));
83
+ media.setLocalPath(path);
84
+ return media;
85
+ }
86
+ /** Alias, matching the reference's spelling. */
87
+ static fromPath(path) {
88
+ return this.fromLocalPath.call(this, path);
89
+ }
90
+ /** Name this payload for a provider that wants a filename. */
91
+ as(name) {
92
+ this.#filename = name;
93
+ return this;
94
+ }
95
+ filename() {
96
+ return this.#filename;
97
+ }
98
+ fileId() {
99
+ return this.#fileId;
100
+ }
101
+ localPath() {
102
+ return this.#localPath;
103
+ }
104
+ isFileId() {
105
+ return this.#fileId !== null;
106
+ }
107
+ isFile() {
108
+ return this.#localPath !== null;
109
+ }
110
+ isUrl() {
111
+ return this.url !== null;
112
+ }
113
+ hasBase64() {
114
+ return this.#base64 !== null || this.#rawContent !== null;
115
+ }
116
+ hasMimeType() {
117
+ return this.#mimeType !== null;
118
+ }
119
+ hasRawContent() {
120
+ return this.#rawContent !== null;
121
+ }
122
+ mimeType() {
123
+ return this.#mimeType;
124
+ }
125
+ rawContent() {
126
+ if (this.#rawContent !== null) {
127
+ return this.#rawContent;
128
+ }
129
+ if (this.#base64 !== null) {
130
+ // Copied into a plain Uint8Array rather than handed out as a Buffer.
131
+ // Buffer is a Uint8Array subclass, so returning one satisfies the type
132
+ // while leaking a Node-specific value that serialises differently — it
133
+ // JSON-encodes as `{type:'Buffer',data:[…]}`, which is not what a caller
134
+ // reading a `Uint8Array` expects to persist.
135
+ return Uint8Array.from(Buffer.from(this.#base64, 'base64'));
136
+ }
137
+ // A url is NOT fetched here. See the class docblock.
138
+ return null;
139
+ }
140
+ /**
141
+ * The payload as base64, or null when only a url or file id is known.
142
+ *
143
+ * Computed once and kept, because encoding a large file on every access is a
144
+ * cost a caller cannot see.
145
+ */
146
+ base64() {
147
+ if (this.#base64 !== null) {
148
+ return this.#base64;
149
+ }
150
+ if (this.#rawContent === null) {
151
+ return null;
152
+ }
153
+ this.#base64 = Buffer.from(this.#rawContent).toString('base64');
154
+ return this.#base64;
155
+ }
156
+ /**
157
+ * Fetch a url's bytes into this payload. EXPLICIT, never automatic.
158
+ *
159
+ * Separate from `rawContent()` so that reading a property never performs an
160
+ * outbound request — a stored locator becoming a request the moment something
161
+ * replays it is the hazard, not the fetch itself.
162
+ */
163
+ async fetch() {
164
+ if (this.url === null) {
165
+ throw PrismError.unfetchableMedia('this payload has no url');
166
+ }
167
+ const response = await globalThis.fetch(this.url);
168
+ if (!response.ok) {
169
+ throw PrismError.unfetchableMedia(`${this.url} responded ${response.status}`);
170
+ }
171
+ this.setRawContent(new Uint8Array(await response.arrayBuffer()), this.#mimeType ?? response.headers.get('content-type'));
172
+ return this;
173
+ }
174
+ /**
175
+ * The serialized form.
176
+ *
177
+ * `base64()`, not the base64 FIELD: a payload built from raw content or from
178
+ * a local file has bytes and an empty `#base64` until something asks for it,
179
+ * so reading the field would serialize a full image as `base64: null` and the
180
+ * round trip would silently return an empty one. Encoding here costs one pass
181
+ * over bytes the caller has already decided to persist.
182
+ */
183
+ toObject() {
184
+ return {
185
+ kind: this.kind,
186
+ url: this.url,
187
+ base64: this.base64(),
188
+ mime_type: this.#mimeType,
189
+ file_id: this.#fileId,
190
+ filename: this.#filename,
191
+ };
192
+ }
193
+ /**
194
+ * Put a serialized payload's fields back on a fresh instance.
195
+ *
196
+ * Protected and static so each subclass's own `fromObject` can call it
197
+ * without every one of them restating the five keys — and without the
198
+ * setters becoming public, which would make a value object mutable from
199
+ * anywhere for the sake of one code path.
200
+ *
201
+ * The local path is NOT restored: it names a file on the machine that
202
+ * serialized this, and a path that resolves to a different file elsewhere is
203
+ * worse than no path at all. The bytes travel as base64 instead.
204
+ */
205
+ static restoreInto(media, object) {
206
+ if (typeof object.file_id === 'string') {
207
+ media.setFileId(object.file_id);
208
+ }
209
+ if (typeof object.filename === 'string') {
210
+ media.as(object.filename);
211
+ }
212
+ return media;
213
+ }
214
+ /** The url, base64 and mime type a serialized payload carries, as constructor arguments. */
215
+ static constructorArgs(object) {
216
+ return [
217
+ typeof object.url === 'string' ? object.url : null,
218
+ typeof object.base64 === 'string' ? object.base64 : null,
219
+ typeof object.mime_type === 'string' ? object.mime_type : null,
220
+ ];
221
+ }
222
+ setRawContent(content, mimeType) {
223
+ this.#rawContent = content;
224
+ if (mimeType !== null) {
225
+ this.#mimeType = mimeType;
226
+ }
227
+ }
228
+ setMimeType(mimeType) {
229
+ this.#mimeType = mimeType;
230
+ }
231
+ setLocalPath(path) {
232
+ this.#localPath = path;
233
+ }
234
+ setFileId(fileId) {
235
+ this.#fileId = fileId;
236
+ }
237
+ }
238
+ /**
239
+ * Mime type from the file extension.
240
+ *
241
+ * The reference sniffs the CONTENT with finfo. Node has no equivalent without a
242
+ * dependency, and this package takes none — so the extension is the guess, and
243
+ * an unknown one returns null rather than a plausible default. `application/
244
+ * octet-stream` would be accepted by a provider and then rejected as the wrong
245
+ * kind of file, which is a worse failure than being asked for the type.
246
+ */
247
+ const MIME_TYPES = {
248
+ '.png': 'image/png',
249
+ '.jpg': 'image/jpeg',
250
+ '.jpeg': 'image/jpeg',
251
+ '.gif': 'image/gif',
252
+ '.webp': 'image/webp',
253
+ '.pdf': 'application/pdf',
254
+ '.txt': 'text/plain',
255
+ '.md': 'text/markdown',
256
+ '.mp3': 'audio/mpeg',
257
+ '.mp4': 'video/mp4',
258
+ '.wav': 'audio/wav',
259
+ '.webm': 'audio/webm',
260
+ '.ogg': 'audio/ogg',
261
+ '.flac': 'audio/flac',
262
+ '.m4a': 'audio/mp4',
263
+ };
264
+ export function guessMimeType(path) {
265
+ return MIME_TYPES[extname(path).toLowerCase()] ?? null;
266
+ }
267
+ //# sourceMappingURL=media.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/value-objects/media/media.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { JsonObject } from '../../json.js';
2
+ import type { Media } from './media.js';
3
+ import { Text } from './text.js';
4
+ /**
5
+ * One part of a user turn: text, or a payload.
6
+ *
7
+ * `Media` rather than the four subclasses by name, so a payload type added
8
+ * later is a part without this union having to be edited to allow it.
9
+ */
10
+ export type MessagePart = Text | Media;
11
+ /**
12
+ * Rebuild a part from its serialized form.
13
+ *
14
+ * NO `kind` MEANS TEXT. That is the specified form rather than a tolerated one:
15
+ * a text part serializes as `{ text }` in this port, in `prism-py` and in the
16
+ * PHP reference alike, pinned by the conformance corpus — see {@link Text}. So
17
+ * every user message any consumer has already stored reads back unchanged, and
18
+ * a discriminator is only ever needed to tell the payload kinds apart from each
19
+ * other, which is the one thing their keys cannot do (an image, an audio file
20
+ * and a video serialize identically).
21
+ *
22
+ * @throws PrismError code `unknown_message_type`
23
+ */
24
+ export declare function partFromObject(object: JsonObject): MessagePart;
25
+ //# sourceMappingURL=part.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"part.d.ts","sourceRoot":"","sources":["../../../src/value-objects/media/part.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAKhD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,KAAK,CAAC;AAEvC;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,CAqB9D"}
@@ -0,0 +1,41 @@
1
+ import { PrismError } from '../../errors.js';
2
+ import { Audio } from './audio.js';
3
+ import { Document } from './document.js';
4
+ import { Image } from './image.js';
5
+ import { Text } from './text.js';
6
+ import { Video } from './video.js';
7
+ /**
8
+ * Rebuild a part from its serialized form.
9
+ *
10
+ * NO `kind` MEANS TEXT. That is the specified form rather than a tolerated one:
11
+ * a text part serializes as `{ text }` in this port, in `prism-py` and in the
12
+ * PHP reference alike, pinned by the conformance corpus — see {@link Text}. So
13
+ * every user message any consumer has already stored reads back unchanged, and
14
+ * a discriminator is only ever needed to tell the payload kinds apart from each
15
+ * other, which is the one thing their keys cannot do (an image, an audio file
16
+ * and a video serialize identically).
17
+ *
18
+ * @throws PrismError code `unknown_message_type`
19
+ */
20
+ export function partFromObject(object) {
21
+ switch (object.kind) {
22
+ case 'text':
23
+ return Text.fromObject(object);
24
+ case 'image':
25
+ return Image.fromObject(object);
26
+ case 'document':
27
+ return Document.fromObject(object);
28
+ case 'audio':
29
+ return Audio.fromObject(object);
30
+ case 'video':
31
+ return Video.fromObject(object);
32
+ case undefined:
33
+ if (typeof object.text === 'string') {
34
+ return Text.fromObject(object);
35
+ }
36
+ throw PrismError.unknownMessageType(`media part ${JSON.stringify(object)} (no \`kind\`, and no text to fall back to)`);
37
+ default:
38
+ throw PrismError.unknownMessageType(`media part of kind ${JSON.stringify(object.kind)}`);
39
+ }
40
+ }
41
+ //# sourceMappingURL=part.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"part.js","sourceRoot":"","sources":["../../../src/value-objects/media/part.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAUnC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAC,MAAkB;IAC/C,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,MAAM;YACT,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACjC,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,UAAU;YACb,OAAO,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACrC,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,SAAS;YACZ,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACpC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC;YAED,MAAM,UAAU,CAAC,kBAAkB,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,6CAA6C,CAAC,CAAC;QACzH;YACE,MAAM,UAAU,CAAC,kBAAkB,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7F,CAAC;AACH,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { JsonObject } from '../../json.js';
2
+ /**
3
+ * A plain-text part of a user message.
4
+ *
5
+ * SERIALIZES AS `{ text }` AND NOTHING ELSE — no `kind` discriminator, unlike
6
+ * every other part. That asymmetry is deliberate and load-bearing: the
7
+ * conformance corpus pins this exact form (`rtp-0001`, and every row of
8
+ * `openai-text-response`), and the PHP reference emits it too, so a text part
9
+ * is one of the few places all three implementations are byte-identical.
10
+ * Adding a key for symmetry would take both ports out of parity with the
11
+ * reference on the only part type the reference can currently produce, and
12
+ * would make every message a consumer has already stored unreadable.
13
+ *
14
+ * A part carrying no `kind` therefore MEANS text, which is what
15
+ * {@link partFromObject} relies on.
16
+ */
17
+ export declare class Text {
18
+ readonly text: string;
19
+ readonly kind: "text";
20
+ constructor(text: string);
21
+ toObject(): JsonObject;
22
+ static fromObject(object: JsonObject): Text;
23
+ }
24
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/value-objects/media/text.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,IAAI;IAGH,QAAQ,CAAC,IAAI,EAAE,MAAM;IAFjC,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAU;gBAEX,IAAI,EAAE,MAAM;IAEjC,QAAQ,IAAI,UAAU;IAItB,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;CAO5C"}
@@ -0,0 +1,33 @@
1
+ import { PrismError } from '../../errors.js';
2
+ /**
3
+ * A plain-text part of a user message.
4
+ *
5
+ * SERIALIZES AS `{ text }` AND NOTHING ELSE — no `kind` discriminator, unlike
6
+ * every other part. That asymmetry is deliberate and load-bearing: the
7
+ * conformance corpus pins this exact form (`rtp-0001`, and every row of
8
+ * `openai-text-response`), and the PHP reference emits it too, so a text part
9
+ * is one of the few places all three implementations are byte-identical.
10
+ * Adding a key for symmetry would take both ports out of parity with the
11
+ * reference on the only part type the reference can currently produce, and
12
+ * would make every message a consumer has already stored unreadable.
13
+ *
14
+ * A part carrying no `kind` therefore MEANS text, which is what
15
+ * {@link partFromObject} relies on.
16
+ */
17
+ export class Text {
18
+ text;
19
+ kind = 'text';
20
+ constructor(text) {
21
+ this.text = text;
22
+ }
23
+ toObject() {
24
+ return { text: this.text };
25
+ }
26
+ static fromObject(object) {
27
+ if (typeof object.text !== 'string') {
28
+ throw PrismError.unknownMessageType(`media part ${JSON.stringify(object)} (a text part needs a string \`text\`)`);
29
+ }
30
+ return new Text(object.text);
31
+ }
32
+ }
33
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/value-objects/media/text.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,IAAI;IAGM;IAFZ,IAAI,GAAG,MAAe,CAAC;IAEhC,YAAqB,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAAG,CAAC;IAErC,QAAQ;QACN,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,MAAkB;QAClC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,UAAU,CAAC,kBAAkB,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC;QACpH,CAAC;QAED,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import type { JsonObject } from '../../json.js';
2
+ import { Media } from './media.js';
3
+ export declare class Video extends Media {
4
+ readonly kind: "video";
5
+ static fromObject(object: JsonObject): Video;
6
+ }
7
+ //# sourceMappingURL=video.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../../src/value-objects/media/video.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,qBAAa,KAAM,SAAQ,KAAK;IAC9B,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IAEjC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,KAAK;CAG7C"}
@@ -0,0 +1,8 @@
1
+ import { Media } from './media.js';
2
+ export class Video extends Media {
3
+ kind = 'video';
4
+ static fromObject(object) {
5
+ return Video.restoreInto(new Video(...Video.constructorArgs(object)), object);
6
+ }
7
+ }
8
+ //# sourceMappingURL=video.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video.js","sourceRoot":"","sources":["../../../src/value-objects/media/video.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,OAAO,KAAM,SAAQ,KAAK;IACrB,IAAI,GAAG,OAAgB,CAAC;IAEjC,MAAM,CAAC,UAAU,CAAC,MAAkB;QAClC,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAChF,CAAC;CACF"}
@@ -0,0 +1,26 @@
1
+ import type { JsonObject } from '../../json.js';
2
+ import { ToolCall } from '../tool-call.js';
3
+ export declare class AssistantMessage {
4
+ readonly content: string;
5
+ readonly toolCalls: readonly ToolCall[];
6
+ readonly additionalContent: Readonly<JsonObject>;
7
+ /**
8
+ * Approval requests are carried verbatim rather than modelled: the approval
9
+ * feature is not part of this port, but dropping the key would change what
10
+ * `toObject()` emits relative to the reference, so it round-trips as raw
11
+ * JSON instead.
12
+ */
13
+ readonly toolApprovalRequests: readonly JsonObject[];
14
+ readonly type: "assistant";
15
+ constructor(content: string, toolCalls?: readonly ToolCall[], additionalContent?: Readonly<JsonObject>,
16
+ /**
17
+ * Approval requests are carried verbatim rather than modelled: the approval
18
+ * feature is not part of this port, but dropping the key would change what
19
+ * `toObject()` emits relative to the reference, so it round-trips as raw
20
+ * JSON instead.
21
+ */
22
+ toolApprovalRequests?: readonly JsonObject[]);
23
+ toObject(): JsonObject;
24
+ static fromObject(object: JsonObject): AssistantMessage;
25
+ }
26
+ //# sourceMappingURL=assistant-message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assistant-message.d.ts","sourceRoot":"","sources":["../../../src/value-objects/messages/assistant-message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,qBAAa,gBAAgB;IAIzB,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE;IACvC,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,CAAC,UAAU,CAAC;IAChD;;;;;OAKG;IACH,QAAQ,CAAC,oBAAoB,EAAE,SAAS,UAAU,EAAE;IAZtD,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAU;gBAG1B,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,SAAS,QAAQ,EAAO,EACnC,iBAAiB,GAAE,QAAQ,CAAC,UAAU,CAAM;IACrD;;;;;OAKG;IACM,oBAAoB,GAAE,SAAS,UAAU,EAAO;IAG3D,QAAQ,IAAI,UAAU;IAUtB,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,gBAAgB;CAUxD"}
@@ -0,0 +1,37 @@
1
+ import { isJsonObject } from '../../json.js';
2
+ import { ToolCall } from '../tool-call.js';
3
+ export class AssistantMessage {
4
+ content;
5
+ toolCalls;
6
+ additionalContent;
7
+ toolApprovalRequests;
8
+ type = 'assistant';
9
+ constructor(content, toolCalls = [], additionalContent = {},
10
+ /**
11
+ * Approval requests are carried verbatim rather than modelled: the approval
12
+ * feature is not part of this port, but dropping the key would change what
13
+ * `toObject()` emits relative to the reference, so it round-trips as raw
14
+ * JSON instead.
15
+ */
16
+ toolApprovalRequests = []) {
17
+ this.content = content;
18
+ this.toolCalls = toolCalls;
19
+ this.additionalContent = additionalContent;
20
+ this.toolApprovalRequests = toolApprovalRequests;
21
+ }
22
+ toObject() {
23
+ return {
24
+ type: 'assistant',
25
+ content: this.content,
26
+ tool_calls: this.toolCalls.map((toolCall) => toolCall.toObject()),
27
+ additional_content: { ...this.additionalContent },
28
+ tool_approval_requests: this.toolApprovalRequests.map((request) => ({ ...request })),
29
+ };
30
+ }
31
+ static fromObject(object) {
32
+ return new AssistantMessage(typeof object.content === 'string' ? object.content : '', (Array.isArray(object.tool_calls) ? object.tool_calls : [])
33
+ .filter(isJsonObject)
34
+ .map((toolCall) => ToolCall.fromObject(toolCall)), isJsonObject(object.additional_content) ? object.additional_content : {}, (Array.isArray(object.tool_approval_requests) ? object.tool_approval_requests : []).filter(isJsonObject));
35
+ }
36
+ }
37
+ //# sourceMappingURL=assistant-message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assistant-message.js","sourceRoot":"","sources":["../../../src/value-objects/messages/assistant-message.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,MAAM,OAAO,gBAAgB;IAIhB;IACA;IACA;IAOA;IAZF,IAAI,GAAG,WAAoB,CAAC;IAErC,YACW,OAAe,EACf,YAAiC,EAAE,EACnC,oBAA0C,EAAE;IACrD;;;;;OAKG;IACM,uBAA8C,EAAE;QAThD,YAAO,GAAP,OAAO,CAAQ;QACf,cAAS,GAAT,SAAS,CAA0B;QACnC,sBAAiB,GAAjB,iBAAiB,CAA2B;QAO5C,yBAAoB,GAApB,oBAAoB,CAA4B;IACxD,CAAC;IAEJ,QAAQ;QACN,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACjE,kBAAkB,EAAE,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE;YACjD,sBAAsB,EAAE,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;SACrF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,MAAkB;QAClC,OAAO,IAAI,gBAAgB,CACzB,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EACxD,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;aACxD,MAAM,CAAC,YAAY,CAAC;aACpB,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EACnD,YAAY,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,EACxE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CACzG,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,27 @@
1
+ import type { JsonObject } from '../../json.js';
2
+ import { AssistantMessage } from './assistant-message.js';
3
+ import { SystemMessage } from './system-message.js';
4
+ import { ToolResultMessage } from './tool-result-message.js';
5
+ import { UserMessage } from './user-message.js';
6
+ export { AssistantMessage } from './assistant-message.js';
7
+ export { SystemMessage } from './system-message.js';
8
+ export { ToolResultMessage } from './tool-result-message.js';
9
+ export { UserMessage } from './user-message.js';
10
+ /**
11
+ * The message union, discriminated on `type`.
12
+ *
13
+ * `type` is the same string each message's `toObject()` emits, so the
14
+ * discriminant and the serialized form cannot drift apart.
15
+ */
16
+ export type Message = UserMessage | AssistantMessage | SystemMessage | ToolResultMessage;
17
+ export type MessageType = Message['type'];
18
+ /**
19
+ * Rebuild a message from its serialized form.
20
+ *
21
+ * The reference package has `toArray()` and no counterpart, which left every
22
+ * consumer to invent its own. This is the counterpart.
23
+ *
24
+ * @throws PrismError code `unknown_message_type`
25
+ */
26
+ export declare function messageFromObject(object: JsonObject): Message;
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/value-objects/messages/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GAAG,WAAW,GAAG,gBAAgB,GAAG,aAAa,GAAG,iBAAiB,CAAC;AAEzF,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAE1C;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAa7D"}
@@ -0,0 +1,32 @@
1
+ import { PrismError } from '../../errors.js';
2
+ import { AssistantMessage } from './assistant-message.js';
3
+ import { SystemMessage } from './system-message.js';
4
+ import { ToolResultMessage } from './tool-result-message.js';
5
+ import { UserMessage } from './user-message.js';
6
+ export { AssistantMessage } from './assistant-message.js';
7
+ export { SystemMessage } from './system-message.js';
8
+ export { ToolResultMessage } from './tool-result-message.js';
9
+ export { UserMessage } from './user-message.js';
10
+ /**
11
+ * Rebuild a message from its serialized form.
12
+ *
13
+ * The reference package has `toArray()` and no counterpart, which left every
14
+ * consumer to invent its own. This is the counterpart.
15
+ *
16
+ * @throws PrismError code `unknown_message_type`
17
+ */
18
+ export function messageFromObject(object) {
19
+ switch (object.type) {
20
+ case 'user':
21
+ return UserMessage.fromObject(object);
22
+ case 'assistant':
23
+ return AssistantMessage.fromObject(object);
24
+ case 'system':
25
+ return SystemMessage.fromObject(object);
26
+ case 'tool_result':
27
+ return ToolResultMessage.fromObject(object);
28
+ default:
29
+ throw PrismError.unknownMessageType(String(object.type));
30
+ }
31
+ }
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/value-objects/messages/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAYhD;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAkB;IAClD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,MAAM;YACT,OAAO,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxC,KAAK,WAAW;YACd,OAAO,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC7C,KAAK,QAAQ;YACX,OAAO,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC1C,KAAK,aAAa;YAChB,OAAO,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9C;YACE,MAAM,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { JsonObject } from '../../json.js';
2
+ export declare class SystemMessage {
3
+ readonly content: string;
4
+ readonly type: "system";
5
+ constructor(content: string);
6
+ toObject(): JsonObject;
7
+ static fromObject(object: JsonObject): SystemMessage;
8
+ }
9
+ //# sourceMappingURL=system-message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-message.d.ts","sourceRoot":"","sources":["../../../src/value-objects/messages/system-message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,qBAAa,aAAa;IAGZ,QAAQ,CAAC,OAAO,EAAE,MAAM;IAFpC,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;gBAEb,OAAO,EAAE,MAAM;IAEpC,QAAQ,IAAI,UAAU;IAOtB,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,aAAa;CAGrD"}
@@ -0,0 +1,17 @@
1
+ export class SystemMessage {
2
+ content;
3
+ type = 'system';
4
+ constructor(content) {
5
+ this.content = content;
6
+ }
7
+ toObject() {
8
+ return {
9
+ type: 'system',
10
+ content: this.content,
11
+ };
12
+ }
13
+ static fromObject(object) {
14
+ return new SystemMessage(typeof object.content === 'string' ? object.content : '');
15
+ }
16
+ }
17
+ //# sourceMappingURL=system-message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-message.js","sourceRoot":"","sources":["../../../src/value-objects/messages/system-message.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;IAGH;IAFZ,IAAI,GAAG,QAAiB,CAAC;IAElC,YAAqB,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAAG,CAAC;IAExC,QAAQ;QACN,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,MAAkB;QAClC,OAAO,IAAI,aAAa,CAAC,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;CACF"}
@@ -0,0 +1,14 @@
1
+ import type { JsonObject } from '../../json.js';
2
+ import { ToolResult } from '../tool-result.js';
3
+ export declare class ToolResultMessage {
4
+ readonly toolResults: readonly ToolResult[];
5
+ /** Carried verbatim; see the note on `AssistantMessage.toolApprovalRequests`. */
6
+ readonly toolApprovalResponses: readonly JsonObject[];
7
+ readonly type: "tool_result";
8
+ constructor(toolResults?: readonly ToolResult[],
9
+ /** Carried verbatim; see the note on `AssistantMessage.toolApprovalRequests`. */
10
+ toolApprovalResponses?: readonly JsonObject[]);
11
+ toObject(): JsonObject;
12
+ static fromObject(object: JsonObject): ToolResultMessage;
13
+ }
14
+ //# sourceMappingURL=tool-result-message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-result-message.d.ts","sourceRoot":"","sources":["../../../src/value-objects/messages/tool-result-message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,qBAAa,iBAAiB;IAI1B,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE;IAC3C,iFAAiF;IACjF,QAAQ,CAAC,qBAAqB,EAAE,SAAS,UAAU,EAAE;IALvD,QAAQ,CAAC,IAAI,EAAG,aAAa,CAAU;gBAG5B,WAAW,GAAE,SAAS,UAAU,EAAO;IAChD,iFAAiF;IACxE,qBAAqB,GAAE,SAAS,UAAU,EAAO;IAG5D,QAAQ,IAAI,UAAU;IAQtB,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,iBAAiB;CAQzD"}