modelmix 2.2.8 → 2.3.8

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 (542) hide show
  1. package/README.md +19 -6
  2. package/demo/demo.mjs +24 -16
  3. package/demo/lmstudio.mjs +1 -1
  4. package/demo/node_modules/.package-lock.json +0 -47
  5. package/demo/package-lock.json +1 -50
  6. package/demo/package.json +1 -3
  7. package/demo/prompt.md +25 -0
  8. package/demo/stream.mjs +3 -3
  9. package/index.js +88 -2
  10. package/package.json +4 -2
  11. package/demo/node_modules/debug/LICENSE +0 -20
  12. package/demo/node_modules/debug/README.md +0 -481
  13. package/demo/node_modules/debug/node_modules/ms/index.js +0 -162
  14. package/demo/node_modules/debug/node_modules/ms/license.md +0 -21
  15. package/demo/node_modules/debug/node_modules/ms/package.json +0 -37
  16. package/demo/node_modules/debug/node_modules/ms/readme.md +0 -60
  17. package/demo/node_modules/debug/package.json +0 -59
  18. package/demo/node_modules/debug/src/browser.js +0 -269
  19. package/demo/node_modules/debug/src/common.js +0 -274
  20. package/demo/node_modules/debug/src/index.js +0 -10
  21. package/demo/node_modules/debug/src/node.js +0 -263
  22. package/demo/node_modules/lemonlog/README.md +0 -133
  23. package/demo/node_modules/lemonlog/demo/demo.js +0 -31
  24. package/demo/node_modules/lemonlog/index.js +0 -94
  25. package/demo/node_modules/lemonlog/package.json +0 -31
  26. package/demo/node_modules/openai/CHANGELOG.md +0 -1176
  27. package/demo/node_modules/openai/LICENSE +0 -201
  28. package/demo/node_modules/openai/README.md +0 -616
  29. package/demo/node_modules/openai/_shims/MultipartBody.d.ts +0 -9
  30. package/demo/node_modules/openai/_shims/MultipartBody.d.ts.map +0 -1
  31. package/demo/node_modules/openai/_shims/MultipartBody.js +0 -16
  32. package/demo/node_modules/openai/_shims/MultipartBody.js.map +0 -1
  33. package/demo/node_modules/openai/_shims/MultipartBody.mjs +0 -12
  34. package/demo/node_modules/openai/_shims/MultipartBody.mjs.map +0 -1
  35. package/demo/node_modules/openai/_shims/README.md +0 -46
  36. package/demo/node_modules/openai/_shims/auto/runtime-bun.d.ts +0 -5
  37. package/demo/node_modules/openai/_shims/auto/runtime-bun.d.ts.map +0 -1
  38. package/demo/node_modules/openai/_shims/auto/runtime-bun.js +0 -21
  39. package/demo/node_modules/openai/_shims/auto/runtime-bun.js.map +0 -1
  40. package/demo/node_modules/openai/_shims/auto/runtime-bun.mjs +0 -2
  41. package/demo/node_modules/openai/_shims/auto/runtime-bun.mjs.map +0 -1
  42. package/demo/node_modules/openai/_shims/auto/runtime-node.d.ts +0 -5
  43. package/demo/node_modules/openai/_shims/auto/runtime-node.d.ts.map +0 -1
  44. package/demo/node_modules/openai/_shims/auto/runtime-node.js +0 -21
  45. package/demo/node_modules/openai/_shims/auto/runtime-node.js.map +0 -1
  46. package/demo/node_modules/openai/_shims/auto/runtime-node.mjs +0 -2
  47. package/demo/node_modules/openai/_shims/auto/runtime-node.mjs.map +0 -1
  48. package/demo/node_modules/openai/_shims/auto/runtime.d.ts +0 -5
  49. package/demo/node_modules/openai/_shims/auto/runtime.d.ts.map +0 -1
  50. package/demo/node_modules/openai/_shims/auto/runtime.js +0 -21
  51. package/demo/node_modules/openai/_shims/auto/runtime.js.map +0 -1
  52. package/demo/node_modules/openai/_shims/auto/runtime.mjs +0 -2
  53. package/demo/node_modules/openai/_shims/auto/runtime.mjs.map +0 -1
  54. package/demo/node_modules/openai/_shims/auto/types-node.d.ts +0 -5
  55. package/demo/node_modules/openai/_shims/auto/types-node.d.ts.map +0 -1
  56. package/demo/node_modules/openai/_shims/auto/types-node.js +0 -21
  57. package/demo/node_modules/openai/_shims/auto/types-node.js.map +0 -1
  58. package/demo/node_modules/openai/_shims/auto/types-node.mjs +0 -2
  59. package/demo/node_modules/openai/_shims/auto/types-node.mjs.map +0 -1
  60. package/demo/node_modules/openai/_shims/auto/types.d.ts +0 -101
  61. package/demo/node_modules/openai/_shims/auto/types.js +0 -3
  62. package/demo/node_modules/openai/_shims/auto/types.mjs +0 -3
  63. package/demo/node_modules/openai/_shims/bun-runtime.d.ts +0 -6
  64. package/demo/node_modules/openai/_shims/bun-runtime.d.ts.map +0 -1
  65. package/demo/node_modules/openai/_shims/bun-runtime.js +0 -14
  66. package/demo/node_modules/openai/_shims/bun-runtime.js.map +0 -1
  67. package/demo/node_modules/openai/_shims/bun-runtime.mjs +0 -10
  68. package/demo/node_modules/openai/_shims/bun-runtime.mjs.map +0 -1
  69. package/demo/node_modules/openai/_shims/index.d.ts +0 -81
  70. package/demo/node_modules/openai/_shims/index.js +0 -13
  71. package/demo/node_modules/openai/_shims/index.mjs +0 -7
  72. package/demo/node_modules/openai/_shims/manual-types.d.ts +0 -12
  73. package/demo/node_modules/openai/_shims/manual-types.js +0 -3
  74. package/demo/node_modules/openai/_shims/manual-types.mjs +0 -3
  75. package/demo/node_modules/openai/_shims/node-runtime.d.ts +0 -3
  76. package/demo/node_modules/openai/_shims/node-runtime.d.ts.map +0 -1
  77. package/demo/node_modules/openai/_shims/node-runtime.js +0 -90
  78. package/demo/node_modules/openai/_shims/node-runtime.js.map +0 -1
  79. package/demo/node_modules/openai/_shims/node-runtime.mjs +0 -56
  80. package/demo/node_modules/openai/_shims/node-runtime.mjs.map +0 -1
  81. package/demo/node_modules/openai/_shims/node-types.d.ts +0 -42
  82. package/demo/node_modules/openai/_shims/node-types.js +0 -3
  83. package/demo/node_modules/openai/_shims/node-types.mjs +0 -3
  84. package/demo/node_modules/openai/_shims/registry.d.ts +0 -37
  85. package/demo/node_modules/openai/_shims/registry.d.ts.map +0 -1
  86. package/demo/node_modules/openai/_shims/registry.js +0 -41
  87. package/demo/node_modules/openai/_shims/registry.js.map +0 -1
  88. package/demo/node_modules/openai/_shims/registry.mjs +0 -37
  89. package/demo/node_modules/openai/_shims/registry.mjs.map +0 -1
  90. package/demo/node_modules/openai/_shims/web-runtime.d.ts +0 -5
  91. package/demo/node_modules/openai/_shims/web-runtime.d.ts.map +0 -1
  92. package/demo/node_modules/openai/_shims/web-runtime.js +0 -78
  93. package/demo/node_modules/openai/_shims/web-runtime.js.map +0 -1
  94. package/demo/node_modules/openai/_shims/web-runtime.mjs +0 -71
  95. package/demo/node_modules/openai/_shims/web-runtime.mjs.map +0 -1
  96. package/demo/node_modules/openai/_shims/web-types.d.ts +0 -83
  97. package/demo/node_modules/openai/_shims/web-types.js +0 -3
  98. package/demo/node_modules/openai/_shims/web-types.mjs +0 -3
  99. package/demo/node_modules/openai/bin/cli +0 -49
  100. package/demo/node_modules/openai/core.d.ts +0 -239
  101. package/demo/node_modules/openai/core.d.ts.map +0 -1
  102. package/demo/node_modules/openai/core.js +0 -879
  103. package/demo/node_modules/openai/core.js.map +0 -1
  104. package/demo/node_modules/openai/core.mjs +0 -848
  105. package/demo/node_modules/openai/core.mjs.map +0 -1
  106. package/demo/node_modules/openai/error.d.ts +0 -57
  107. package/demo/node_modules/openai/error.d.ts.map +0 -1
  108. package/demo/node_modules/openai/error.js +0 -148
  109. package/demo/node_modules/openai/error.js.map +0 -1
  110. package/demo/node_modules/openai/error.mjs +0 -132
  111. package/demo/node_modules/openai/error.mjs.map +0 -1
  112. package/demo/node_modules/openai/index.d.mts +0 -267
  113. package/demo/node_modules/openai/index.d.ts +0 -267
  114. package/demo/node_modules/openai/index.d.ts.map +0 -1
  115. package/demo/node_modules/openai/index.js +0 -262
  116. package/demo/node_modules/openai/index.js.map +0 -1
  117. package/demo/node_modules/openai/index.mjs +0 -232
  118. package/demo/node_modules/openai/index.mjs.map +0 -1
  119. package/demo/node_modules/openai/lib/AbstractAssistantStreamRunner.d.ts +0 -74
  120. package/demo/node_modules/openai/lib/AbstractAssistantStreamRunner.d.ts.map +0 -1
  121. package/demo/node_modules/openai/lib/AbstractAssistantStreamRunner.js +0 -246
  122. package/demo/node_modules/openai/lib/AbstractAssistantStreamRunner.js.map +0 -1
  123. package/demo/node_modules/openai/lib/AbstractAssistantStreamRunner.mjs +0 -242
  124. package/demo/node_modules/openai/lib/AbstractAssistantStreamRunner.mjs.map +0 -1
  125. package/demo/node_modules/openai/lib/AbstractChatCompletionRunner.d.ts +0 -114
  126. package/demo/node_modules/openai/lib/AbstractChatCompletionRunner.d.ts.map +0 -1
  127. package/demo/node_modules/openai/lib/AbstractChatCompletionRunner.js +0 -519
  128. package/demo/node_modules/openai/lib/AbstractChatCompletionRunner.js.map +0 -1
  129. package/demo/node_modules/openai/lib/AbstractChatCompletionRunner.mjs +0 -515
  130. package/demo/node_modules/openai/lib/AbstractChatCompletionRunner.mjs.map +0 -1
  131. package/demo/node_modules/openai/lib/AssistantStream.d.ts +0 -58
  132. package/demo/node_modules/openai/lib/AssistantStream.d.ts.map +0 -1
  133. package/demo/node_modules/openai/lib/AssistantStream.js +0 -548
  134. package/demo/node_modules/openai/lib/AssistantStream.js.map +0 -1
  135. package/demo/node_modules/openai/lib/AssistantStream.mjs +0 -521
  136. package/demo/node_modules/openai/lib/AssistantStream.mjs.map +0 -1
  137. package/demo/node_modules/openai/lib/ChatCompletionRunFunctions.test.d.ts +0 -2
  138. package/demo/node_modules/openai/lib/ChatCompletionRunFunctions.test.d.ts.map +0 -1
  139. package/demo/node_modules/openai/lib/ChatCompletionRunFunctions.test.js +0 -2177
  140. package/demo/node_modules/openai/lib/ChatCompletionRunFunctions.test.js.map +0 -1
  141. package/demo/node_modules/openai/lib/ChatCompletionRunFunctions.test.mjs +0 -2172
  142. package/demo/node_modules/openai/lib/ChatCompletionRunFunctions.test.mjs.map +0 -1
  143. package/demo/node_modules/openai/lib/ChatCompletionRunner.d.ts +0 -19
  144. package/demo/node_modules/openai/lib/ChatCompletionRunner.d.ts.map +0 -1
  145. package/demo/node_modules/openai/lib/ChatCompletionRunner.js +0 -34
  146. package/demo/node_modules/openai/lib/ChatCompletionRunner.js.map +0 -1
  147. package/demo/node_modules/openai/lib/ChatCompletionRunner.mjs +0 -30
  148. package/demo/node_modules/openai/lib/ChatCompletionRunner.mjs.map +0 -1
  149. package/demo/node_modules/openai/lib/ChatCompletionStream.d.ts +0 -149
  150. package/demo/node_modules/openai/lib/ChatCompletionStream.d.ts.map +0 -1
  151. package/demo/node_modules/openai/lib/ChatCompletionStream.js +0 -312
  152. package/demo/node_modules/openai/lib/ChatCompletionStream.js.map +0 -1
  153. package/demo/node_modules/openai/lib/ChatCompletionStream.mjs +0 -308
  154. package/demo/node_modules/openai/lib/ChatCompletionStream.mjs.map +0 -1
  155. package/demo/node_modules/openai/lib/ChatCompletionStreamingRunner.d.ts +0 -22
  156. package/demo/node_modules/openai/lib/ChatCompletionStreamingRunner.d.ts.map +0 -1
  157. package/demo/node_modules/openai/lib/ChatCompletionStreamingRunner.js +0 -32
  158. package/demo/node_modules/openai/lib/ChatCompletionStreamingRunner.js.map +0 -1
  159. package/demo/node_modules/openai/lib/ChatCompletionStreamingRunner.mjs +0 -28
  160. package/demo/node_modules/openai/lib/ChatCompletionStreamingRunner.mjs.map +0 -1
  161. package/demo/node_modules/openai/lib/RunnableFunction.d.ts +0 -95
  162. package/demo/node_modules/openai/lib/RunnableFunction.d.ts.map +0 -1
  163. package/demo/node_modules/openai/lib/RunnableFunction.js +0 -35
  164. package/demo/node_modules/openai/lib/RunnableFunction.js.map +0 -1
  165. package/demo/node_modules/openai/lib/RunnableFunction.mjs +0 -29
  166. package/demo/node_modules/openai/lib/RunnableFunction.mjs.map +0 -1
  167. package/demo/node_modules/openai/lib/Util.d.ts +0 -5
  168. package/demo/node_modules/openai/lib/Util.d.ts.map +0 -1
  169. package/demo/node_modules/openai/lib/Util.js +0 -26
  170. package/demo/node_modules/openai/lib/Util.js.map +0 -1
  171. package/demo/node_modules/openai/lib/Util.mjs +0 -22
  172. package/demo/node_modules/openai/lib/Util.mjs.map +0 -1
  173. package/demo/node_modules/openai/lib/chatCompletionUtils.d.ts +0 -6
  174. package/demo/node_modules/openai/lib/chatCompletionUtils.d.ts.map +0 -1
  175. package/demo/node_modules/openai/lib/chatCompletionUtils.js +0 -20
  176. package/demo/node_modules/openai/lib/chatCompletionUtils.js.map +0 -1
  177. package/demo/node_modules/openai/lib/chatCompletionUtils.mjs +0 -13
  178. package/demo/node_modules/openai/lib/chatCompletionUtils.mjs.map +0 -1
  179. package/demo/node_modules/openai/lib/jsonschema.d.ts +0 -106
  180. package/demo/node_modules/openai/lib/jsonschema.d.ts.map +0 -1
  181. package/demo/node_modules/openai/lib/jsonschema.js +0 -11
  182. package/demo/node_modules/openai/lib/jsonschema.js.map +0 -1
  183. package/demo/node_modules/openai/lib/jsonschema.mjs +0 -10
  184. package/demo/node_modules/openai/lib/jsonschema.mjs.map +0 -1
  185. package/demo/node_modules/openai/package.json +0 -105
  186. package/demo/node_modules/openai/pagination.d.ts +0 -37
  187. package/demo/node_modules/openai/pagination.d.ts.map +0 -1
  188. package/demo/node_modules/openai/pagination.js +0 -64
  189. package/demo/node_modules/openai/pagination.js.map +0 -1
  190. package/demo/node_modules/openai/pagination.mjs +0 -59
  191. package/demo/node_modules/openai/pagination.mjs.map +0 -1
  192. package/demo/node_modules/openai/resource.d.ts +0 -6
  193. package/demo/node_modules/openai/resource.d.ts.map +0 -1
  194. package/demo/node_modules/openai/resource.js +0 -11
  195. package/demo/node_modules/openai/resource.js.map +0 -1
  196. package/demo/node_modules/openai/resource.mjs +0 -7
  197. package/demo/node_modules/openai/resource.mjs.map +0 -1
  198. package/demo/node_modules/openai/resources/audio/audio.d.ts +0 -20
  199. package/demo/node_modules/openai/resources/audio/audio.d.ts.map +0 -1
  200. package/demo/node_modules/openai/resources/audio/audio.js +0 -46
  201. package/demo/node_modules/openai/resources/audio/audio.js.map +0 -1
  202. package/demo/node_modules/openai/resources/audio/audio.mjs +0 -19
  203. package/demo/node_modules/openai/resources/audio/audio.mjs.map +0 -1
  204. package/demo/node_modules/openai/resources/audio/index.d.ts +0 -5
  205. package/demo/node_modules/openai/resources/audio/index.d.ts.map +0 -1
  206. package/demo/node_modules/openai/resources/audio/index.js +0 -13
  207. package/demo/node_modules/openai/resources/audio/index.js.map +0 -1
  208. package/demo/node_modules/openai/resources/audio/index.mjs +0 -6
  209. package/demo/node_modules/openai/resources/audio/index.mjs.map +0 -1
  210. package/demo/node_modules/openai/resources/audio/speech.d.ts +0 -42
  211. package/demo/node_modules/openai/resources/audio/speech.d.ts.map +0 -1
  212. package/demo/node_modules/openai/resources/audio/speech.js +0 -17
  213. package/demo/node_modules/openai/resources/audio/speech.js.map +0 -1
  214. package/demo/node_modules/openai/resources/audio/speech.mjs +0 -13
  215. package/demo/node_modules/openai/resources/audio/speech.mjs.map +0 -1
  216. package/demo/node_modules/openai/resources/audio/transcriptions.d.ts +0 -71
  217. package/demo/node_modules/openai/resources/audio/transcriptions.d.ts.map +0 -1
  218. package/demo/node_modules/openai/resources/audio/transcriptions.js +0 -18
  219. package/demo/node_modules/openai/resources/audio/transcriptions.js.map +0 -1
  220. package/demo/node_modules/openai/resources/audio/transcriptions.mjs +0 -14
  221. package/demo/node_modules/openai/resources/audio/transcriptions.mjs.map +0 -1
  222. package/demo/node_modules/openai/resources/audio/translations.d.ts +0 -50
  223. package/demo/node_modules/openai/resources/audio/translations.d.ts.map +0 -1
  224. package/demo/node_modules/openai/resources/audio/translations.js +0 -18
  225. package/demo/node_modules/openai/resources/audio/translations.js.map +0 -1
  226. package/demo/node_modules/openai/resources/audio/translations.mjs +0 -14
  227. package/demo/node_modules/openai/resources/audio/translations.mjs.map +0 -1
  228. package/demo/node_modules/openai/resources/batches.d.ts +0 -189
  229. package/demo/node_modules/openai/resources/batches.d.ts.map +0 -1
  230. package/demo/node_modules/openai/resources/batches.js +0 -65
  231. package/demo/node_modules/openai/resources/batches.js.map +0 -1
  232. package/demo/node_modules/openai/resources/batches.mjs +0 -37
  233. package/demo/node_modules/openai/resources/batches.mjs.map +0 -1
  234. package/demo/node_modules/openai/resources/beta/assistants.d.ts +0 -1048
  235. package/demo/node_modules/openai/resources/beta/assistants.d.ts.map +0 -1
  236. package/demo/node_modules/openai/resources/beta/assistants.js +0 -89
  237. package/demo/node_modules/openai/resources/beta/assistants.js.map +0 -1
  238. package/demo/node_modules/openai/resources/beta/assistants.mjs +0 -61
  239. package/demo/node_modules/openai/resources/beta/assistants.mjs.map +0 -1
  240. package/demo/node_modules/openai/resources/beta/beta.d.ts +0 -53
  241. package/demo/node_modules/openai/resources/beta/beta.d.ts.map +0 -1
  242. package/demo/node_modules/openai/resources/beta/beta.js +0 -51
  243. package/demo/node_modules/openai/resources/beta/beta.js.map +0 -1
  244. package/demo/node_modules/openai/resources/beta/beta.mjs +0 -24
  245. package/demo/node_modules/openai/resources/beta/beta.mjs.map +0 -1
  246. package/demo/node_modules/openai/resources/beta/chat/chat.d.ts +0 -9
  247. package/demo/node_modules/openai/resources/beta/chat/chat.d.ts.map +0 -1
  248. package/demo/node_modules/openai/resources/beta/chat/chat.js +0 -40
  249. package/demo/node_modules/openai/resources/beta/chat/chat.js.map +0 -1
  250. package/demo/node_modules/openai/resources/beta/chat/chat.mjs +0 -13
  251. package/demo/node_modules/openai/resources/beta/chat/chat.mjs.map +0 -1
  252. package/demo/node_modules/openai/resources/beta/chat/completions.d.ts +0 -37
  253. package/demo/node_modules/openai/resources/beta/chat/completions.d.ts.map +0 -1
  254. package/demo/node_modules/openai/resources/beta/chat/completions.js +0 -39
  255. package/demo/node_modules/openai/resources/beta/chat/completions.js.map +0 -1
  256. package/demo/node_modules/openai/resources/beta/chat/completions.mjs +0 -30
  257. package/demo/node_modules/openai/resources/beta/chat/completions.mjs.map +0 -1
  258. package/demo/node_modules/openai/resources/beta/chat/index.d.ts +0 -3
  259. package/demo/node_modules/openai/resources/beta/chat/index.d.ts.map +0 -1
  260. package/demo/node_modules/openai/resources/beta/chat/index.js +0 -9
  261. package/demo/node_modules/openai/resources/beta/chat/index.js.map +0 -1
  262. package/demo/node_modules/openai/resources/beta/chat/index.mjs +0 -4
  263. package/demo/node_modules/openai/resources/beta/chat/index.mjs.map +0 -1
  264. package/demo/node_modules/openai/resources/beta/index.d.ts +0 -6
  265. package/demo/node_modules/openai/resources/beta/index.d.ts.map +0 -1
  266. package/demo/node_modules/openai/resources/beta/index.js +0 -17
  267. package/demo/node_modules/openai/resources/beta/index.js.map +0 -1
  268. package/demo/node_modules/openai/resources/beta/index.mjs +0 -7
  269. package/demo/node_modules/openai/resources/beta/index.mjs.map +0 -1
  270. package/demo/node_modules/openai/resources/beta/threads/index.d.ts +0 -4
  271. package/demo/node_modules/openai/resources/beta/threads/index.d.ts.map +0 -1
  272. package/demo/node_modules/openai/resources/beta/threads/index.js +0 -13
  273. package/demo/node_modules/openai/resources/beta/threads/index.js.map +0 -1
  274. package/demo/node_modules/openai/resources/beta/threads/index.mjs +0 -5
  275. package/demo/node_modules/openai/resources/beta/threads/index.mjs.map +0 -1
  276. package/demo/node_modules/openai/resources/beta/threads/messages.d.ts +0 -552
  277. package/demo/node_modules/openai/resources/beta/threads/messages.d.ts.map +0 -1
  278. package/demo/node_modules/openai/resources/beta/threads/messages.js +0 -89
  279. package/demo/node_modules/openai/resources/beta/threads/messages.js.map +0 -1
  280. package/demo/node_modules/openai/resources/beta/threads/messages.mjs +0 -61
  281. package/demo/node_modules/openai/resources/beta/threads/messages.mjs.map +0 -1
  282. package/demo/node_modules/openai/resources/beta/threads/runs/index.d.ts +0 -3
  283. package/demo/node_modules/openai/resources/beta/threads/runs/index.d.ts.map +0 -1
  284. package/demo/node_modules/openai/resources/beta/threads/runs/index.js +0 -11
  285. package/demo/node_modules/openai/resources/beta/threads/runs/index.js.map +0 -1
  286. package/demo/node_modules/openai/resources/beta/threads/runs/index.mjs +0 -4
  287. package/demo/node_modules/openai/resources/beta/threads/runs/index.mjs.map +0 -1
  288. package/demo/node_modules/openai/resources/beta/threads/runs/runs.d.ts +0 -1194
  289. package/demo/node_modules/openai/resources/beta/threads/runs/runs.d.ts.map +0 -1
  290. package/demo/node_modules/openai/resources/beta/threads/runs/runs.js +0 -190
  291. package/demo/node_modules/openai/resources/beta/threads/runs/runs.js.map +0 -1
  292. package/demo/node_modules/openai/resources/beta/threads/runs/runs.mjs +0 -162
  293. package/demo/node_modules/openai/resources/beta/threads/runs/runs.mjs.map +0 -1
  294. package/demo/node_modules/openai/resources/beta/threads/runs/steps.d.ts +0 -520
  295. package/demo/node_modules/openai/resources/beta/threads/runs/steps.d.ts.map +0 -1
  296. package/demo/node_modules/openai/resources/beta/threads/runs/steps.js +0 -60
  297. package/demo/node_modules/openai/resources/beta/threads/runs/steps.js.map +0 -1
  298. package/demo/node_modules/openai/resources/beta/threads/runs/steps.mjs +0 -32
  299. package/demo/node_modules/openai/resources/beta/threads/runs/steps.mjs.map +0 -1
  300. package/demo/node_modules/openai/resources/beta/threads/threads.d.ts +0 -1240
  301. package/demo/node_modules/openai/resources/beta/threads/threads.d.ts.map +0 -1
  302. package/demo/node_modules/openai/resources/beta/threads/threads.js +0 -108
  303. package/demo/node_modules/openai/resources/beta/threads/threads.js.map +0 -1
  304. package/demo/node_modules/openai/resources/beta/threads/threads.mjs +0 -81
  305. package/demo/node_modules/openai/resources/beta/threads/threads.mjs.map +0 -1
  306. package/demo/node_modules/openai/resources/beta/vector-stores/file-batches.d.ts +0 -142
  307. package/demo/node_modules/openai/resources/beta/vector-stores/file-batches.d.ts.map +0 -1
  308. package/demo/node_modules/openai/resources/beta/vector-stores/file-batches.js +0 -129
  309. package/demo/node_modules/openai/resources/beta/vector-stores/file-batches.js.map +0 -1
  310. package/demo/node_modules/openai/resources/beta/vector-stores/file-batches.mjs +0 -125
  311. package/demo/node_modules/openai/resources/beta/vector-stores/file-batches.mjs.map +0 -1
  312. package/demo/node_modules/openai/resources/beta/vector-stores/files.d.ts +0 -154
  313. package/demo/node_modules/openai/resources/beta/vector-stores/files.d.ts.map +0 -1
  314. package/demo/node_modules/openai/resources/beta/vector-stores/files.js +0 -149
  315. package/demo/node_modules/openai/resources/beta/vector-stores/files.js.map +0 -1
  316. package/demo/node_modules/openai/resources/beta/vector-stores/files.mjs +0 -121
  317. package/demo/node_modules/openai/resources/beta/vector-stores/files.mjs.map +0 -1
  318. package/demo/node_modules/openai/resources/beta/vector-stores/index.d.ts +0 -4
  319. package/demo/node_modules/openai/resources/beta/vector-stores/index.d.ts.map +0 -1
  320. package/demo/node_modules/openai/resources/beta/vector-stores/index.js +0 -13
  321. package/demo/node_modules/openai/resources/beta/vector-stores/index.js.map +0 -1
  322. package/demo/node_modules/openai/resources/beta/vector-stores/index.mjs +0 -5
  323. package/demo/node_modules/openai/resources/beta/vector-stores/index.mjs.map +0 -1
  324. package/demo/node_modules/openai/resources/beta/vector-stores/vector-stores.d.ts +0 -233
  325. package/demo/node_modules/openai/resources/beta/vector-stores/vector-stores.d.ts.map +0 -1
  326. package/demo/node_modules/openai/resources/beta/vector-stores/vector-stores.js +0 -99
  327. package/demo/node_modules/openai/resources/beta/vector-stores/vector-stores.js.map +0 -1
  328. package/demo/node_modules/openai/resources/beta/vector-stores/vector-stores.mjs +0 -71
  329. package/demo/node_modules/openai/resources/beta/vector-stores/vector-stores.mjs.map +0 -1
  330. package/demo/node_modules/openai/resources/chat/chat.d.ts +0 -42
  331. package/demo/node_modules/openai/resources/chat/chat.d.ts.map +0 -1
  332. package/demo/node_modules/openai/resources/chat/chat.js +0 -40
  333. package/demo/node_modules/openai/resources/chat/chat.js.map +0 -1
  334. package/demo/node_modules/openai/resources/chat/chat.mjs +0 -13
  335. package/demo/node_modules/openai/resources/chat/chat.mjs.map +0 -1
  336. package/demo/node_modules/openai/resources/chat/completions.d.ts +0 -845
  337. package/demo/node_modules/openai/resources/chat/completions.d.ts.map +0 -1
  338. package/demo/node_modules/openai/resources/chat/completions.js +0 -14
  339. package/demo/node_modules/openai/resources/chat/completions.js.map +0 -1
  340. package/demo/node_modules/openai/resources/chat/completions.mjs +0 -10
  341. package/demo/node_modules/openai/resources/chat/completions.mjs.map +0 -1
  342. package/demo/node_modules/openai/resources/chat/index.d.ts +0 -3
  343. package/demo/node_modules/openai/resources/chat/index.d.ts.map +0 -1
  344. package/demo/node_modules/openai/resources/chat/index.js +0 -9
  345. package/demo/node_modules/openai/resources/chat/index.js.map +0 -1
  346. package/demo/node_modules/openai/resources/chat/index.mjs +0 -4
  347. package/demo/node_modules/openai/resources/chat/index.mjs.map +0 -1
  348. package/demo/node_modules/openai/resources/completions.d.ts +0 -272
  349. package/demo/node_modules/openai/resources/completions.d.ts.map +0 -1
  350. package/demo/node_modules/openai/resources/completions.js +0 -14
  351. package/demo/node_modules/openai/resources/completions.js.map +0 -1
  352. package/demo/node_modules/openai/resources/completions.mjs +0 -10
  353. package/demo/node_modules/openai/resources/completions.mjs.map +0 -1
  354. package/demo/node_modules/openai/resources/embeddings.d.ts +0 -103
  355. package/demo/node_modules/openai/resources/embeddings.d.ts.map +0 -1
  356. package/demo/node_modules/openai/resources/embeddings.js +0 -17
  357. package/demo/node_modules/openai/resources/embeddings.js.map +0 -1
  358. package/demo/node_modules/openai/resources/embeddings.mjs +0 -13
  359. package/demo/node_modules/openai/resources/embeddings.mjs.map +0 -1
  360. package/demo/node_modules/openai/resources/files.d.ts +0 -140
  361. package/demo/node_modules/openai/resources/files.d.ts.map +0 -1
  362. package/demo/node_modules/openai/resources/files.js +0 -120
  363. package/demo/node_modules/openai/resources/files.js.map +0 -1
  364. package/demo/node_modules/openai/resources/files.mjs +0 -92
  365. package/demo/node_modules/openai/resources/files.mjs.map +0 -1
  366. package/demo/node_modules/openai/resources/fine-tuning/fine-tuning.d.ts +0 -19
  367. package/demo/node_modules/openai/resources/fine-tuning/fine-tuning.d.ts.map +0 -1
  368. package/demo/node_modules/openai/resources/fine-tuning/fine-tuning.js +0 -42
  369. package/demo/node_modules/openai/resources/fine-tuning/fine-tuning.js.map +0 -1
  370. package/demo/node_modules/openai/resources/fine-tuning/fine-tuning.mjs +0 -15
  371. package/demo/node_modules/openai/resources/fine-tuning/fine-tuning.mjs.map +0 -1
  372. package/demo/node_modules/openai/resources/fine-tuning/index.d.ts +0 -3
  373. package/demo/node_modules/openai/resources/fine-tuning/index.d.ts.map +0 -1
  374. package/demo/node_modules/openai/resources/fine-tuning/index.js +0 -11
  375. package/demo/node_modules/openai/resources/fine-tuning/index.js.map +0 -1
  376. package/demo/node_modules/openai/resources/fine-tuning/index.mjs +0 -4
  377. package/demo/node_modules/openai/resources/fine-tuning/index.mjs.map +0 -1
  378. package/demo/node_modules/openai/resources/fine-tuning/jobs/checkpoints.d.ts +0 -69
  379. package/demo/node_modules/openai/resources/fine-tuning/jobs/checkpoints.d.ts.map +0 -1
  380. package/demo/node_modules/openai/resources/fine-tuning/jobs/checkpoints.js +0 -47
  381. package/demo/node_modules/openai/resources/fine-tuning/jobs/checkpoints.js.map +0 -1
  382. package/demo/node_modules/openai/resources/fine-tuning/jobs/checkpoints.mjs +0 -19
  383. package/demo/node_modules/openai/resources/fine-tuning/jobs/checkpoints.mjs.map +0 -1
  384. package/demo/node_modules/openai/resources/fine-tuning/jobs/index.d.ts +0 -3
  385. package/demo/node_modules/openai/resources/fine-tuning/jobs/index.d.ts.map +0 -1
  386. package/demo/node_modules/openai/resources/fine-tuning/jobs/index.js +0 -12
  387. package/demo/node_modules/openai/resources/fine-tuning/jobs/index.js.map +0 -1
  388. package/demo/node_modules/openai/resources/fine-tuning/jobs/index.mjs +0 -4
  389. package/demo/node_modules/openai/resources/fine-tuning/jobs/index.mjs.map +0 -1
  390. package/demo/node_modules/openai/resources/fine-tuning/jobs/jobs.d.ts +0 -362
  391. package/demo/node_modules/openai/resources/fine-tuning/jobs/jobs.d.ts.map +0 -1
  392. package/demo/node_modules/openai/resources/fine-tuning/jobs/jobs.js +0 -93
  393. package/demo/node_modules/openai/resources/fine-tuning/jobs/jobs.js.map +0 -1
  394. package/demo/node_modules/openai/resources/fine-tuning/jobs/jobs.mjs +0 -64
  395. package/demo/node_modules/openai/resources/fine-tuning/jobs/jobs.mjs.map +0 -1
  396. package/demo/node_modules/openai/resources/images.d.ts +0 -174
  397. package/demo/node_modules/openai/resources/images.d.ts.map +0 -1
  398. package/demo/node_modules/openai/resources/images.js +0 -30
  399. package/demo/node_modules/openai/resources/images.js.map +0 -1
  400. package/demo/node_modules/openai/resources/images.mjs +0 -26
  401. package/demo/node_modules/openai/resources/images.mjs.map +0 -1
  402. package/demo/node_modules/openai/resources/index.d.ts +0 -13
  403. package/demo/node_modules/openai/resources/index.d.ts.map +0 -1
  404. package/demo/node_modules/openai/resources/index.js +0 -44
  405. package/demo/node_modules/openai/resources/index.js.map +0 -1
  406. package/demo/node_modules/openai/resources/index.mjs +0 -14
  407. package/demo/node_modules/openai/resources/index.mjs.map +0 -1
  408. package/demo/node_modules/openai/resources/models.d.ts +0 -58
  409. package/demo/node_modules/openai/resources/models.d.ts.map +0 -1
  410. package/demo/node_modules/openai/resources/models.js +0 -64
  411. package/demo/node_modules/openai/resources/models.js.map +0 -1
  412. package/demo/node_modules/openai/resources/models.mjs +0 -36
  413. package/demo/node_modules/openai/resources/models.mjs.map +0 -1
  414. package/demo/node_modules/openai/resources/moderations.d.ts +0 -176
  415. package/demo/node_modules/openai/resources/moderations.d.ts.map +0 -1
  416. package/demo/node_modules/openai/resources/moderations.js +0 -17
  417. package/demo/node_modules/openai/resources/moderations.js.map +0 -1
  418. package/demo/node_modules/openai/resources/moderations.mjs +0 -13
  419. package/demo/node_modules/openai/resources/moderations.mjs.map +0 -1
  420. package/demo/node_modules/openai/resources/shared.d.ts +0 -39
  421. package/demo/node_modules/openai/resources/shared.d.ts.map +0 -1
  422. package/demo/node_modules/openai/resources/shared.js +0 -4
  423. package/demo/node_modules/openai/resources/shared.js.map +0 -1
  424. package/demo/node_modules/openai/resources/shared.mjs +0 -3
  425. package/demo/node_modules/openai/resources/shared.mjs.map +0 -1
  426. package/demo/node_modules/openai/shims/node.d.ts +0 -29
  427. package/demo/node_modules/openai/shims/node.d.ts.map +0 -1
  428. package/demo/node_modules/openai/shims/node.js +0 -31
  429. package/demo/node_modules/openai/shims/node.js.map +0 -1
  430. package/demo/node_modules/openai/shims/node.mjs +0 -5
  431. package/demo/node_modules/openai/shims/node.mjs.map +0 -1
  432. package/demo/node_modules/openai/shims/web.d.ts +0 -26
  433. package/demo/node_modules/openai/shims/web.d.ts.map +0 -1
  434. package/demo/node_modules/openai/shims/web.js +0 -31
  435. package/demo/node_modules/openai/shims/web.js.map +0 -1
  436. package/demo/node_modules/openai/shims/web.mjs +0 -5
  437. package/demo/node_modules/openai/shims/web.mjs.map +0 -1
  438. package/demo/node_modules/openai/src/_shims/MultipartBody.ts +0 -9
  439. package/demo/node_modules/openai/src/_shims/README.md +0 -46
  440. package/demo/node_modules/openai/src/_shims/auto/runtime-bun.ts +0 -4
  441. package/demo/node_modules/openai/src/_shims/auto/runtime-node.ts +0 -4
  442. package/demo/node_modules/openai/src/_shims/auto/runtime.ts +0 -4
  443. package/demo/node_modules/openai/src/_shims/auto/types-node.ts +0 -4
  444. package/demo/node_modules/openai/src/_shims/auto/types.d.ts +0 -101
  445. package/demo/node_modules/openai/src/_shims/auto/types.js +0 -3
  446. package/demo/node_modules/openai/src/_shims/auto/types.mjs +0 -3
  447. package/demo/node_modules/openai/src/_shims/bun-runtime.ts +0 -14
  448. package/demo/node_modules/openai/src/_shims/index.d.ts +0 -81
  449. package/demo/node_modules/openai/src/_shims/index.js +0 -13
  450. package/demo/node_modules/openai/src/_shims/index.mjs +0 -7
  451. package/demo/node_modules/openai/src/_shims/manual-types.d.ts +0 -12
  452. package/demo/node_modules/openai/src/_shims/manual-types.js +0 -3
  453. package/demo/node_modules/openai/src/_shims/manual-types.mjs +0 -3
  454. package/demo/node_modules/openai/src/_shims/node-runtime.ts +0 -83
  455. package/demo/node_modules/openai/src/_shims/node-types.d.ts +0 -42
  456. package/demo/node_modules/openai/src/_shims/node-types.js +0 -3
  457. package/demo/node_modules/openai/src/_shims/node-types.mjs +0 -3
  458. package/demo/node_modules/openai/src/_shims/registry.ts +0 -65
  459. package/demo/node_modules/openai/src/_shims/web-runtime.ts +0 -103
  460. package/demo/node_modules/openai/src/_shims/web-types.d.ts +0 -83
  461. package/demo/node_modules/openai/src/_shims/web-types.js +0 -3
  462. package/demo/node_modules/openai/src/_shims/web-types.mjs +0 -3
  463. package/demo/node_modules/openai/src/core.ts +0 -1162
  464. package/demo/node_modules/openai/src/error.ts +0 -158
  465. package/demo/node_modules/openai/src/index.ts +0 -502
  466. package/demo/node_modules/openai/src/lib/.keep +0 -4
  467. package/demo/node_modules/openai/src/lib/AbstractAssistantStreamRunner.ts +0 -340
  468. package/demo/node_modules/openai/src/lib/AbstractChatCompletionRunner.ts +0 -682
  469. package/demo/node_modules/openai/src/lib/AssistantStream.ts +0 -723
  470. package/demo/node_modules/openai/src/lib/ChatCompletionRunFunctions.test.ts +0 -2328
  471. package/demo/node_modules/openai/src/lib/ChatCompletionRunner.ts +0 -68
  472. package/demo/node_modules/openai/src/lib/ChatCompletionStream.ts +0 -494
  473. package/demo/node_modules/openai/src/lib/ChatCompletionStreamingRunner.ts +0 -68
  474. package/demo/node_modules/openai/src/lib/RunnableFunction.ts +0 -134
  475. package/demo/node_modules/openai/src/lib/Util.ts +0 -23
  476. package/demo/node_modules/openai/src/lib/chatCompletionUtils.ts +0 -28
  477. package/demo/node_modules/openai/src/lib/jsonschema.ts +0 -148
  478. package/demo/node_modules/openai/src/pagination.ts +0 -98
  479. package/demo/node_modules/openai/src/resource.ts +0 -11
  480. package/demo/node_modules/openai/src/resources/audio/audio.ts +0 -23
  481. package/demo/node_modules/openai/src/resources/audio/index.ts +0 -6
  482. package/demo/node_modules/openai/src/resources/audio/speech.ts +0 -52
  483. package/demo/node_modules/openai/src/resources/audio/transcriptions.ts +0 -84
  484. package/demo/node_modules/openai/src/resources/audio/translations.ts +0 -61
  485. package/demo/node_modules/openai/src/resources/batches.ts +0 -252
  486. package/demo/node_modules/openai/src/resources/beta/assistants.ts +0 -1315
  487. package/demo/node_modules/openai/src/resources/beta/beta.ts +0 -56
  488. package/demo/node_modules/openai/src/resources/beta/chat/chat.ts +0 -12
  489. package/demo/node_modules/openai/src/resources/beta/chat/completions.ts +0 -106
  490. package/demo/node_modules/openai/src/resources/beta/chat/index.ts +0 -4
  491. package/demo/node_modules/openai/src/resources/beta/index.ts +0 -48
  492. package/demo/node_modules/openai/src/resources/beta/threads/index.ts +0 -72
  493. package/demo/node_modules/openai/src/resources/beta/threads/messages.ts +0 -706
  494. package/demo/node_modules/openai/src/resources/beta/threads/runs/index.ts +0 -44
  495. package/demo/node_modules/openai/src/resources/beta/threads/runs/runs.ts +0 -1627
  496. package/demo/node_modules/openai/src/resources/beta/threads/runs/steps.ts +0 -641
  497. package/demo/node_modules/openai/src/resources/beta/threads/threads.ts +0 -1536
  498. package/demo/node_modules/openai/src/resources/beta/vector-stores/file-batches.ts +0 -293
  499. package/demo/node_modules/openai/src/resources/beta/vector-stores/files.ts +0 -284
  500. package/demo/node_modules/openai/src/resources/beta/vector-stores/index.ts +0 -25
  501. package/demo/node_modules/openai/src/resources/beta/vector-stores/vector-stores.ts +0 -318
  502. package/demo/node_modules/openai/src/resources/chat/chat.ts +0 -67
  503. package/demo/node_modules/openai/src/resources/chat/completions.ts +0 -996
  504. package/demo/node_modules/openai/src/resources/chat/index.ts +0 -33
  505. package/demo/node_modules/openai/src/resources/completions.ts +0 -329
  506. package/demo/node_modules/openai/src/resources/embeddings.ts +0 -125
  507. package/demo/node_modules/openai/src/resources/files.ts +0 -214
  508. package/demo/node_modules/openai/src/resources/fine-tuning/fine-tuning.ts +0 -22
  509. package/demo/node_modules/openai/src/resources/fine-tuning/index.ts +0 -16
  510. package/demo/node_modules/openai/src/resources/fine-tuning/jobs/checkpoints.ts +0 -108
  511. package/demo/node_modules/openai/src/resources/fine-tuning/jobs/index.ts +0 -21
  512. package/demo/node_modules/openai/src/resources/fine-tuning/jobs/jobs.ts +0 -458
  513. package/demo/node_modules/openai/src/resources/images.ts +0 -215
  514. package/demo/node_modules/openai/src/resources/index.ts +0 -45
  515. package/demo/node_modules/openai/src/resources/models.ts +0 -76
  516. package/demo/node_modules/openai/src/resources/moderations.ts +0 -214
  517. package/demo/node_modules/openai/src/resources/shared.ts +0 -47
  518. package/demo/node_modules/openai/src/shims/node.ts +0 -50
  519. package/demo/node_modules/openai/src/shims/web.ts +0 -50
  520. package/demo/node_modules/openai/src/streaming.ts +0 -508
  521. package/demo/node_modules/openai/src/tsconfig.json +0 -11
  522. package/demo/node_modules/openai/src/uploads.ts +0 -248
  523. package/demo/node_modules/openai/src/version.ts +0 -1
  524. package/demo/node_modules/openai/streaming.d.ts +0 -41
  525. package/demo/node_modules/openai/streaming.d.ts.map +0 -1
  526. package/demo/node_modules/openai/streaming.js +0 -433
  527. package/demo/node_modules/openai/streaming.js.map +0 -1
  528. package/demo/node_modules/openai/streaming.mjs +0 -426
  529. package/demo/node_modules/openai/streaming.mjs.map +0 -1
  530. package/demo/node_modules/openai/uploads.d.ts +0 -75
  531. package/demo/node_modules/openai/uploads.d.ts.map +0 -1
  532. package/demo/node_modules/openai/uploads.js +0 -165
  533. package/demo/node_modules/openai/uploads.js.map +0 -1
  534. package/demo/node_modules/openai/uploads.mjs +0 -152
  535. package/demo/node_modules/openai/uploads.mjs.map +0 -1
  536. package/demo/node_modules/openai/version.d.ts +0 -2
  537. package/demo/node_modules/openai/version.d.ts.map +0 -1
  538. package/demo/node_modules/openai/version.js +0 -5
  539. package/demo/node_modules/openai/version.js.map +0 -1
  540. package/demo/node_modules/openai/version.mjs +0 -2
  541. package/demo/node_modules/openai/version.mjs.map +0 -1
  542. package/demo/watson.png +0 -0
@@ -1,682 +0,0 @@
1
- import * as Core from "../core";
2
- import { type CompletionUsage } from "../resources/completions";
3
- import {
4
- type Completions,
5
- type ChatCompletion,
6
- type ChatCompletionMessage,
7
- type ChatCompletionMessageParam,
8
- type ChatCompletionCreateParams,
9
- type ChatCompletionTool,
10
- } from "../resources/chat/completions";
11
- import { APIUserAbortError, OpenAIError } from "../error";
12
- import {
13
- type RunnableFunction,
14
- isRunnableFunctionWithParse,
15
- type BaseFunctionsArgs,
16
- } from './RunnableFunction';
17
- import { ChatCompletionFunctionRunnerParams, ChatCompletionToolRunnerParams } from './ChatCompletionRunner';
18
- import {
19
- ChatCompletionStreamingFunctionRunnerParams,
20
- ChatCompletionStreamingToolRunnerParams,
21
- } from './ChatCompletionStreamingRunner';
22
- import { isAssistantMessage, isFunctionMessage, isToolMessage } from './chatCompletionUtils';
23
-
24
- const DEFAULT_MAX_CHAT_COMPLETIONS = 10;
25
- export interface RunnerOptions extends Core.RequestOptions {
26
- /** How many requests to make before canceling. Default 10. */
27
- maxChatCompletions?: number;
28
- }
29
-
30
- export abstract class AbstractChatCompletionRunner<
31
- Events extends CustomEvents<any> = AbstractChatCompletionRunnerEvents,
32
- > {
33
- controller: AbortController = new AbortController();
34
-
35
- #connectedPromise: Promise<void>;
36
- #resolveConnectedPromise: () => void = () => {};
37
- #rejectConnectedPromise: (error: OpenAIError) => void = () => {};
38
-
39
- #endPromise: Promise<void>;
40
- #resolveEndPromise: () => void = () => {};
41
- #rejectEndPromise: (error: OpenAIError) => void = () => {};
42
-
43
- #listeners: { [Event in keyof Events]?: ListenersForEvent<Events, Event> } = {};
44
-
45
- protected _chatCompletions: ChatCompletion[] = [];
46
- messages: ChatCompletionMessageParam[] = [];
47
-
48
- #ended = false;
49
- #errored = false;
50
- #aborted = false;
51
- #catchingPromiseCreated = false;
52
-
53
- constructor() {
54
- this.#connectedPromise = new Promise<void>((resolve, reject) => {
55
- this.#resolveConnectedPromise = resolve;
56
- this.#rejectConnectedPromise = reject;
57
- });
58
-
59
- this.#endPromise = new Promise<void>((resolve, reject) => {
60
- this.#resolveEndPromise = resolve;
61
- this.#rejectEndPromise = reject;
62
- });
63
-
64
- // Don't let these promises cause unhandled rejection errors.
65
- // we will manually cause an unhandled rejection error later
66
- // if the user hasn't registered any error listener or called
67
- // any promise-returning method.
68
- this.#connectedPromise.catch(() => {});
69
- this.#endPromise.catch(() => {});
70
- }
71
-
72
- protected _run(executor: () => Promise<any>) {
73
- // Unfortunately if we call `executor()` immediately we get runtime errors about
74
- // references to `this` before the `super()` constructor call returns.
75
- setTimeout(() => {
76
- executor().then(() => {
77
- this._emitFinal();
78
- this._emit('end');
79
- }, this.#handleError);
80
- }, 0);
81
- }
82
-
83
- protected _addChatCompletion(chatCompletion: ChatCompletion): ChatCompletion {
84
- this._chatCompletions.push(chatCompletion);
85
- this._emit('chatCompletion', chatCompletion);
86
- const message = chatCompletion.choices[0]?.message;
87
- if (message) this._addMessage(message as ChatCompletionMessageParam);
88
- return chatCompletion;
89
- }
90
-
91
- protected _addMessage(message: ChatCompletionMessageParam, emit = true) {
92
- if (!('content' in message)) message.content = null;
93
-
94
- this.messages.push(message);
95
-
96
- if (emit) {
97
- this._emit('message', message);
98
- if ((isFunctionMessage(message) || isToolMessage(message)) && message.content) {
99
- // Note, this assumes that {role: 'tool', content: …} is always the result of a call of tool of type=function.
100
- this._emit('functionCallResult', message.content as string);
101
- } else if (isAssistantMessage(message) && message.function_call) {
102
- this._emit('functionCall', message.function_call);
103
- } else if (isAssistantMessage(message) && message.tool_calls) {
104
- for (const tool_call of message.tool_calls) {
105
- if (tool_call.type === 'function') {
106
- this._emit('functionCall', tool_call.function);
107
- }
108
- }
109
- }
110
- }
111
- }
112
-
113
- protected _connected() {
114
- if (this.ended) return;
115
- this.#resolveConnectedPromise();
116
- this._emit('connect');
117
- }
118
-
119
- get ended(): boolean {
120
- return this.#ended;
121
- }
122
-
123
- get errored(): boolean {
124
- return this.#errored;
125
- }
126
-
127
- get aborted(): boolean {
128
- return this.#aborted;
129
- }
130
-
131
- abort() {
132
- this.controller.abort();
133
- }
134
-
135
- /**
136
- * Adds the listener function to the end of the listeners array for the event.
137
- * No checks are made to see if the listener has already been added. Multiple calls passing
138
- * the same combination of event and listener will result in the listener being added, and
139
- * called, multiple times.
140
- * @returns this ChatCompletionStream, so that calls can be chained
141
- */
142
- on<Event extends keyof Events>(event: Event, listener: ListenerForEvent<Events, Event>): this {
143
- const listeners: ListenersForEvent<Events, Event> =
144
- this.#listeners[event] || (this.#listeners[event] = []);
145
- listeners.push({ listener });
146
- return this;
147
- }
148
-
149
- /**
150
- * Removes the specified listener from the listener array for the event.
151
- * off() will remove, at most, one instance of a listener from the listener array. If any single
152
- * listener has been added multiple times to the listener array for the specified event, then
153
- * off() must be called multiple times to remove each instance.
154
- * @returns this ChatCompletionStream, so that calls can be chained
155
- */
156
- off<Event extends keyof Events>(event: Event, listener: ListenerForEvent<Events, Event>): this {
157
- const listeners = this.#listeners[event];
158
- if (!listeners) return this;
159
- const index = listeners.findIndex((l) => l.listener === listener);
160
- if (index >= 0) listeners.splice(index, 1);
161
- return this;
162
- }
163
-
164
- /**
165
- * Adds a one-time listener function for the event. The next time the event is triggered,
166
- * this listener is removed and then invoked.
167
- * @returns this ChatCompletionStream, so that calls can be chained
168
- */
169
- once<Event extends keyof Events>(event: Event, listener: ListenerForEvent<Events, Event>): this {
170
- const listeners: ListenersForEvent<Events, Event> =
171
- this.#listeners[event] || (this.#listeners[event] = []);
172
- listeners.push({ listener, once: true });
173
- return this;
174
- }
175
-
176
- /**
177
- * This is similar to `.once()`, but returns a Promise that resolves the next time
178
- * the event is triggered, instead of calling a listener callback.
179
- * @returns a Promise that resolves the next time given event is triggered,
180
- * or rejects if an error is emitted. (If you request the 'error' event,
181
- * returns a promise that resolves with the error).
182
- *
183
- * Example:
184
- *
185
- * const message = await stream.emitted('message') // rejects if the stream errors
186
- */
187
- emitted<Event extends keyof Events>(
188
- event: Event,
189
- ): Promise<
190
- EventParameters<Events, Event> extends [infer Param] ? Param
191
- : EventParameters<Events, Event> extends [] ? void
192
- : EventParameters<Events, Event>
193
- > {
194
- return new Promise((resolve, reject) => {
195
- this.#catchingPromiseCreated = true;
196
- if (event !== 'error') this.once('error', reject);
197
- this.once(event, resolve as any);
198
- });
199
- }
200
-
201
- async done(): Promise<void> {
202
- this.#catchingPromiseCreated = true;
203
- await this.#endPromise;
204
- }
205
-
206
- /**
207
- * @returns a promise that resolves with the final ChatCompletion, or rejects
208
- * if an error occurred or the stream ended prematurely without producing a ChatCompletion.
209
- */
210
- async finalChatCompletion(): Promise<ChatCompletion> {
211
- await this.done();
212
- const completion = this._chatCompletions[this._chatCompletions.length - 1];
213
- if (!completion) throw new OpenAIError('stream ended without producing a ChatCompletion');
214
- return completion;
215
- }
216
-
217
- #getFinalContent(): string | null {
218
- return this.#getFinalMessage().content ?? null;
219
- }
220
-
221
- /**
222
- * @returns a promise that resolves with the content of the final ChatCompletionMessage, or rejects
223
- * if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.
224
- */
225
- async finalContent(): Promise<string | null> {
226
- await this.done();
227
- return this.#getFinalContent();
228
- }
229
-
230
- #getFinalMessage(): ChatCompletionMessage {
231
- let i = this.messages.length;
232
- while (i-- > 0) {
233
- const message = this.messages[i];
234
- if (isAssistantMessage(message)) {
235
- return { ...message, content: message.content ?? null };
236
- }
237
- }
238
- throw new OpenAIError('stream ended without producing a ChatCompletionMessage with role=assistant');
239
- }
240
-
241
- /**
242
- * @returns a promise that resolves with the the final assistant ChatCompletionMessage response,
243
- * or rejects if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.
244
- */
245
- async finalMessage(): Promise<ChatCompletionMessage> {
246
- await this.done();
247
- return this.#getFinalMessage();
248
- }
249
-
250
- #getFinalFunctionCall(): ChatCompletionMessage.FunctionCall | undefined {
251
- for (let i = this.messages.length - 1; i >= 0; i--) {
252
- const message = this.messages[i];
253
- if (isAssistantMessage(message) && message?.function_call) {
254
- return message.function_call;
255
- }
256
- if (isAssistantMessage(message) && message?.tool_calls?.length) {
257
- return message.tool_calls.at(-1)?.function;
258
- }
259
- }
260
-
261
- return;
262
- }
263
-
264
- /**
265
- * @returns a promise that resolves with the content of the final FunctionCall, or rejects
266
- * if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.
267
- */
268
- async finalFunctionCall(): Promise<ChatCompletionMessage.FunctionCall | undefined> {
269
- await this.done();
270
- return this.#getFinalFunctionCall();
271
- }
272
-
273
- #getFinalFunctionCallResult(): string | undefined {
274
- for (let i = this.messages.length - 1; i >= 0; i--) {
275
- const message = this.messages[i];
276
- if (isFunctionMessage(message) && message.content != null) {
277
- return message.content;
278
- }
279
- if (
280
- isToolMessage(message) &&
281
- message.content != null &&
282
- this.messages.some(
283
- (x) =>
284
- x.role === 'assistant' &&
285
- x.tool_calls?.some((y) => y.type === 'function' && y.id === message.tool_call_id),
286
- )
287
- ) {
288
- return message.content;
289
- }
290
- }
291
-
292
- return;
293
- }
294
-
295
- async finalFunctionCallResult(): Promise<string | undefined> {
296
- await this.done();
297
- return this.#getFinalFunctionCallResult();
298
- }
299
-
300
- #calculateTotalUsage(): CompletionUsage {
301
- const total: CompletionUsage = {
302
- completion_tokens: 0,
303
- prompt_tokens: 0,
304
- total_tokens: 0,
305
- };
306
- for (const { usage } of this._chatCompletions) {
307
- if (usage) {
308
- total.completion_tokens += usage.completion_tokens;
309
- total.prompt_tokens += usage.prompt_tokens;
310
- total.total_tokens += usage.total_tokens;
311
- }
312
- }
313
- return total;
314
- }
315
-
316
- async totalUsage(): Promise<CompletionUsage> {
317
- await this.done();
318
- return this.#calculateTotalUsage();
319
- }
320
-
321
- allChatCompletions(): ChatCompletion[] {
322
- return [...this._chatCompletions];
323
- }
324
-
325
- #handleError = (error: unknown) => {
326
- this.#errored = true;
327
- if (error instanceof Error && error.name === 'AbortError') {
328
- error = new APIUserAbortError();
329
- }
330
- if (error instanceof APIUserAbortError) {
331
- this.#aborted = true;
332
- return this._emit('abort', error);
333
- }
334
- if (error instanceof OpenAIError) {
335
- return this._emit('error', error);
336
- }
337
- if (error instanceof Error) {
338
- const openAIError: OpenAIError = new OpenAIError(error.message);
339
- // @ts-ignore
340
- openAIError.cause = error;
341
- return this._emit('error', openAIError);
342
- }
343
- return this._emit('error', new OpenAIError(String(error)));
344
- };
345
-
346
- protected _emit<Event extends keyof Events>(event: Event, ...args: EventParameters<Events, Event>) {
347
- // make sure we don't emit any events after end
348
- if (this.#ended) {
349
- return;
350
- }
351
-
352
- if (event === 'end') {
353
- this.#ended = true;
354
- this.#resolveEndPromise();
355
- }
356
-
357
- const listeners: ListenersForEvent<Events, Event> | undefined = this.#listeners[event];
358
- if (listeners) {
359
- this.#listeners[event] = listeners.filter((l) => !l.once) as any;
360
- listeners.forEach(({ listener }: any) => listener(...args));
361
- }
362
-
363
- if (event === 'abort') {
364
- const error = args[0] as APIUserAbortError;
365
- if (!this.#catchingPromiseCreated && !listeners?.length) {
366
- Promise.reject(error);
367
- }
368
- this.#rejectConnectedPromise(error);
369
- this.#rejectEndPromise(error);
370
- this._emit('end');
371
- return;
372
- }
373
-
374
- if (event === 'error') {
375
- // NOTE: _emit('error', error) should only be called from #handleError().
376
-
377
- const error = args[0] as OpenAIError;
378
- if (!this.#catchingPromiseCreated && !listeners?.length) {
379
- // Trigger an unhandled rejection if the user hasn't registered any error handlers.
380
- // If you are seeing stack traces here, make sure to handle errors via either:
381
- // - runner.on('error', () => ...)
382
- // - await runner.done()
383
- // - await runner.finalChatCompletion()
384
- // - etc.
385
- Promise.reject(error);
386
- }
387
- this.#rejectConnectedPromise(error);
388
- this.#rejectEndPromise(error);
389
- this._emit('end');
390
- }
391
- }
392
-
393
- protected _emitFinal() {
394
- const completion = this._chatCompletions[this._chatCompletions.length - 1];
395
- if (completion) this._emit('finalChatCompletion', completion);
396
- const finalMessage = this.#getFinalMessage();
397
- if (finalMessage) this._emit('finalMessage', finalMessage);
398
- const finalContent = this.#getFinalContent();
399
- if (finalContent) this._emit('finalContent', finalContent);
400
-
401
- const finalFunctionCall = this.#getFinalFunctionCall();
402
- if (finalFunctionCall) this._emit('finalFunctionCall', finalFunctionCall);
403
-
404
- const finalFunctionCallResult = this.#getFinalFunctionCallResult();
405
- if (finalFunctionCallResult != null) this._emit('finalFunctionCallResult', finalFunctionCallResult);
406
-
407
- if (this._chatCompletions.some((c) => c.usage)) {
408
- this._emit('totalUsage', this.#calculateTotalUsage());
409
- }
410
- }
411
-
412
- #validateParams(params: ChatCompletionCreateParams): void {
413
- if (params.n != null && params.n > 1) {
414
- throw new OpenAIError(
415
- 'ChatCompletion convenience helpers only support n=1 at this time. To use n>1, please use chat.completions.create() directly.',
416
- );
417
- }
418
- }
419
-
420
- protected async _createChatCompletion(
421
- completions: Completions,
422
- params: ChatCompletionCreateParams,
423
- options?: Core.RequestOptions,
424
- ): Promise<ChatCompletion> {
425
- const signal = options?.signal;
426
- if (signal) {
427
- if (signal.aborted) this.controller.abort();
428
- signal.addEventListener('abort', () => this.controller.abort());
429
- }
430
- this.#validateParams(params);
431
-
432
- const chatCompletion = await completions.create(
433
- { ...params, stream: false },
434
- { ...options, signal: this.controller.signal },
435
- );
436
- this._connected();
437
- return this._addChatCompletion(chatCompletion);
438
- }
439
-
440
- protected async _runChatCompletion(
441
- completions: Completions,
442
- params: ChatCompletionCreateParams,
443
- options?: Core.RequestOptions,
444
- ): Promise<ChatCompletion> {
445
- for (const message of params.messages) {
446
- this._addMessage(message, false);
447
- }
448
- return await this._createChatCompletion(completions, params, options);
449
- }
450
-
451
- protected async _runFunctions<FunctionsArgs extends BaseFunctionsArgs>(
452
- completions: Completions,
453
- params:
454
- | ChatCompletionFunctionRunnerParams<FunctionsArgs>
455
- | ChatCompletionStreamingFunctionRunnerParams<FunctionsArgs>,
456
- options?: RunnerOptions,
457
- ) {
458
- const role = 'function' as const;
459
- const { function_call = 'auto', stream, ...restParams } = params;
460
- const singleFunctionToCall = typeof function_call !== 'string' && function_call?.name;
461
- const { maxChatCompletions = DEFAULT_MAX_CHAT_COMPLETIONS } = options || {};
462
-
463
- const functionsByName: Record<string, RunnableFunction<any>> = {};
464
- for (const f of params.functions) {
465
- functionsByName[f.name || f.function.name] = f;
466
- }
467
-
468
- const functions: ChatCompletionCreateParams.Function[] = params.functions.map(
469
- (f): ChatCompletionCreateParams.Function => ({
470
- name: f.name || f.function.name,
471
- parameters: f.parameters as Record<string, unknown>,
472
- description: f.description,
473
- }),
474
- );
475
-
476
- for (const message of params.messages) {
477
- this._addMessage(message, false);
478
- }
479
-
480
- for (let i = 0; i < maxChatCompletions; ++i) {
481
- const chatCompletion: ChatCompletion = await this._createChatCompletion(
482
- completions,
483
- {
484
- ...restParams,
485
- function_call,
486
- functions,
487
- messages: [...this.messages],
488
- },
489
- options,
490
- );
491
- const message = chatCompletion.choices[0]?.message;
492
- if (!message) {
493
- throw new OpenAIError(`missing message in ChatCompletion response`);
494
- }
495
- if (!message.function_call) return;
496
- const { name, arguments: args } = message.function_call;
497
- const fn = functionsByName[name];
498
- if (!fn) {
499
- const content = `Invalid function_call: ${JSON.stringify(name)}. Available options are: ${functions
500
- .map((f) => JSON.stringify(f.name))
501
- .join(', ')}. Please try again`;
502
-
503
- this._addMessage({ role, name, content });
504
- continue;
505
- } else if (singleFunctionToCall && singleFunctionToCall !== name) {
506
- const content = `Invalid function_call: ${JSON.stringify(name)}. ${JSON.stringify(
507
- singleFunctionToCall,
508
- )} requested. Please try again`;
509
-
510
- this._addMessage({ role, name, content });
511
- continue;
512
- }
513
-
514
- let parsed;
515
- try {
516
- parsed = isRunnableFunctionWithParse(fn) ? await fn.parse(args) : args;
517
- } catch (error) {
518
- this._addMessage({
519
- role,
520
- name,
521
- content: error instanceof Error ? error.message : String(error),
522
- });
523
- continue;
524
- }
525
-
526
- // @ts-expect-error it can't rule out `never` type.
527
- const rawContent = await fn.function(parsed, this);
528
- const content = this.#stringifyFunctionCallResult(rawContent);
529
-
530
- this._addMessage({ role, name, content });
531
-
532
- if (singleFunctionToCall) return;
533
- }
534
- }
535
-
536
- protected async _runTools<FunctionsArgs extends BaseFunctionsArgs>(
537
- completions: Completions,
538
- params:
539
- | ChatCompletionToolRunnerParams<FunctionsArgs>
540
- | ChatCompletionStreamingToolRunnerParams<FunctionsArgs>,
541
- options?: RunnerOptions,
542
- ) {
543
- const role = 'tool' as const;
544
- const { tool_choice = 'auto', stream, ...restParams } = params;
545
- const singleFunctionToCall = typeof tool_choice !== 'string' && tool_choice?.function?.name;
546
- const { maxChatCompletions = DEFAULT_MAX_CHAT_COMPLETIONS } = options || {};
547
-
548
- const functionsByName: Record<string, RunnableFunction<any>> = {};
549
- for (const f of params.tools) {
550
- if (f.type === 'function') {
551
- functionsByName[f.function.name || f.function.function.name] = f.function;
552
- }
553
- }
554
-
555
- const tools: ChatCompletionTool[] =
556
- 'tools' in params ?
557
- params.tools.map((t) =>
558
- t.type === 'function' ?
559
- {
560
- type: 'function',
561
- function: {
562
- name: t.function.name || t.function.function.name,
563
- parameters: t.function.parameters as Record<string, unknown>,
564
- description: t.function.description,
565
- },
566
- }
567
- : (t as unknown as ChatCompletionTool),
568
- )
569
- : (undefined as any);
570
-
571
- for (const message of params.messages) {
572
- this._addMessage(message, false);
573
- }
574
-
575
- for (let i = 0; i < maxChatCompletions; ++i) {
576
- const chatCompletion: ChatCompletion = await this._createChatCompletion(
577
- completions,
578
- {
579
- ...restParams,
580
- tool_choice,
581
- tools,
582
- messages: [...this.messages],
583
- },
584
- options,
585
- );
586
- const message = chatCompletion.choices[0]?.message;
587
- if (!message) {
588
- throw new OpenAIError(`missing message in ChatCompletion response`);
589
- }
590
- if (!message.tool_calls) {
591
- return;
592
- }
593
-
594
- for (const tool_call of message.tool_calls) {
595
- if (tool_call.type !== 'function') continue;
596
- const tool_call_id = tool_call.id;
597
- const { name, arguments: args } = tool_call.function;
598
- const fn = functionsByName[name];
599
-
600
- if (!fn) {
601
- const content = `Invalid tool_call: ${JSON.stringify(name)}. Available options are: ${tools
602
- .map((f) => JSON.stringify(f.function.name))
603
- .join(', ')}. Please try again`;
604
-
605
- this._addMessage({ role, tool_call_id, content });
606
- continue;
607
- } else if (singleFunctionToCall && singleFunctionToCall !== name) {
608
- const content = `Invalid tool_call: ${JSON.stringify(name)}. ${JSON.stringify(
609
- singleFunctionToCall,
610
- )} requested. Please try again`;
611
-
612
- this._addMessage({ role, tool_call_id, content });
613
- continue;
614
- }
615
-
616
- let parsed;
617
- try {
618
- parsed = isRunnableFunctionWithParse(fn) ? await fn.parse(args) : args;
619
- } catch (error) {
620
- const content = error instanceof Error ? error.message : String(error);
621
- this._addMessage({ role, tool_call_id, content });
622
- continue;
623
- }
624
-
625
- // @ts-expect-error it can't rule out `never` type.
626
- const rawContent = await fn.function(parsed, this);
627
- const content = this.#stringifyFunctionCallResult(rawContent);
628
- this._addMessage({ role, tool_call_id, content });
629
-
630
- if (singleFunctionToCall) {
631
- return;
632
- }
633
- }
634
- }
635
-
636
- return;
637
- }
638
-
639
- #stringifyFunctionCallResult(rawContent: unknown): string {
640
- return (
641
- typeof rawContent === 'string' ? rawContent
642
- : rawContent === undefined ? 'undefined'
643
- : JSON.stringify(rawContent)
644
- );
645
- }
646
- }
647
-
648
- type CustomEvents<Event extends string> = {
649
- [k in Event]: k extends keyof AbstractChatCompletionRunnerEvents ? AbstractChatCompletionRunnerEvents[k]
650
- : (...args: any[]) => void;
651
- };
652
-
653
- type ListenerForEvent<Events extends CustomEvents<any>, Event extends keyof Events> = Event extends (
654
- keyof AbstractChatCompletionRunnerEvents
655
- ) ?
656
- AbstractChatCompletionRunnerEvents[Event]
657
- : Events[Event];
658
-
659
- type ListenersForEvent<Events extends CustomEvents<any>, Event extends keyof Events> = Array<{
660
- listener: ListenerForEvent<Events, Event>;
661
- once?: boolean;
662
- }>;
663
- type EventParameters<Events extends CustomEvents<any>, Event extends keyof Events> = Parameters<
664
- ListenerForEvent<Events, Event>
665
- >;
666
-
667
- export interface AbstractChatCompletionRunnerEvents {
668
- connect: () => void;
669
- functionCall: (functionCall: ChatCompletionMessage.FunctionCall) => void;
670
- message: (message: ChatCompletionMessageParam) => void;
671
- chatCompletion: (completion: ChatCompletion) => void;
672
- finalContent: (contentSnapshot: string) => void;
673
- finalMessage: (message: ChatCompletionMessageParam) => void;
674
- finalChatCompletion: (completion: ChatCompletion) => void;
675
- finalFunctionCall: (functionCall: ChatCompletionMessage.FunctionCall) => void;
676
- functionCallResult: (content: string) => void;
677
- finalFunctionCallResult: (content: string) => void;
678
- error: (error: OpenAIError) => void;
679
- abort: (error: APIUserAbortError) => void;
680
- end: () => void;
681
- totalUsage: (usage: CompletionUsage) => void;
682
- }