ai 1.1.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/LICENSE +10 -24
  2. package/dist/ai-stream.d.ts +18 -0
  3. package/dist/ai-stream.js +132 -0
  4. package/dist/ai-stream.mjs +13 -0
  5. package/dist/anthropic-stream.d.ts +5 -0
  6. package/dist/anthropic-stream.js +133 -0
  7. package/dist/anthropic-stream.mjs +8 -0
  8. package/dist/chunk-265FSSO4.mjs +91 -0
  9. package/dist/chunk-2L3ZO4UM.mjs +45 -0
  10. package/dist/chunk-GT4HKF2X.mjs +33 -0
  11. package/dist/chunk-JGDC3BXD.mjs +22 -0
  12. package/dist/chunk-NK2CVBLI.mjs +38 -0
  13. package/dist/chunk-PEYAHBDF.mjs +43 -0
  14. package/dist/chunk-TJMME6CL.mjs +24 -0
  15. package/dist/huggingface-stream.d.ts +5 -0
  16. package/dist/huggingface-stream.js +121 -0
  17. package/dist/huggingface-stream.mjs +8 -0
  18. package/dist/index.d.ts +131 -0
  19. package/dist/index.js +278 -0
  20. package/dist/index.mjs +35 -0
  21. package/dist/index.test.d.ts +2 -0
  22. package/dist/index.test.js +12 -0
  23. package/dist/index.test.mjs +10 -0
  24. package/dist/langchain-stream.d.ts +12 -0
  25. package/dist/langchain-stream.js +102 -0
  26. package/dist/langchain-stream.mjs +8 -0
  27. package/dist/openai-stream.d.ts +5 -0
  28. package/dist/openai-stream.js +144 -0
  29. package/dist/openai-stream.mjs +8 -0
  30. package/dist/streaming-text-response.d.ts +17 -0
  31. package/dist/streaming-text-response.js +75 -0
  32. package/dist/streaming-text-response.mjs +9 -0
  33. package/package.json +78 -29
  34. package/react/dist/chunk-5PP6W52J.mjs +202 -0
  35. package/react/dist/chunk-6EH3SWMP.mjs +55 -0
  36. package/react/dist/chunk-PW6HSU2N.mjs +154 -0
  37. package/react/dist/index.d.ts +3 -0
  38. package/react/dist/index.js +424 -0
  39. package/react/dist/index.mjs +12 -0
  40. package/react/dist/types-f862f74a.d.ts +123 -0
  41. package/react/dist/use-chat.d.ts +42 -0
  42. package/react/dist/use-chat.js +276 -0
  43. package/react/dist/use-chat.mjs +8 -0
  44. package/react/dist/use-completion.d.ts +47 -0
  45. package/react/dist/use-completion.js +229 -0
  46. package/react/dist/use-completion.mjs +8 -0
  47. package/svelte/dist/chunk-6USBQIV6.mjs +177 -0
  48. package/svelte/dist/chunk-BQ64GHZ3.mjs +136 -0
  49. package/svelte/dist/chunk-CENOSGDG.mjs +493 -0
  50. package/svelte/dist/index.d.ts +4 -0
  51. package/svelte/dist/index.js +808 -0
  52. package/svelte/dist/index.mjs +11 -0
  53. package/svelte/dist/types-f862f74a.d.ts +123 -0
  54. package/svelte/dist/use-chat.d.ts +39 -0
  55. package/svelte/dist/use-chat.js +680 -0
  56. package/svelte/dist/use-chat.mjs +7 -0
  57. package/svelte/dist/use-completion.d.ts +38 -0
  58. package/svelte/dist/use-completion.js +640 -0
  59. package/svelte/dist/use-completion.mjs +7 -0
  60. package/.npmignore +0 -15
  61. package/.travis.yml +0 -4
  62. package/README.md +0 -21
  63. package/bin/ai.js +0 -22
  64. package/index.js +0 -37
  65. package/node_modules/request/.npmignore +0 -2
  66. package/node_modules/request/.travis.yml +0 -12
  67. package/node_modules/request/CHANGELOG.md +0 -954
  68. package/node_modules/request/LICENSE +0 -55
  69. package/node_modules/request/README.md +0 -421
  70. package/node_modules/request/index.js +0 -166
  71. package/node_modules/request/lib/cookies.js +0 -40
  72. package/node_modules/request/lib/copy.js +0 -8
  73. package/node_modules/request/lib/debug.js +0 -7
  74. package/node_modules/request/lib/getSafe.js +0 -34
  75. package/node_modules/request/lib/optional.js +0 -5
  76. package/node_modules/request/node_modules/aws-sign2/LICENSE +0 -55
  77. package/node_modules/request/node_modules/aws-sign2/README.md +0 -4
  78. package/node_modules/request/node_modules/aws-sign2/index.js +0 -202
  79. package/node_modules/request/node_modules/aws-sign2/package.json +0 -47
  80. package/node_modules/request/node_modules/forever-agent/LICENSE +0 -55
  81. package/node_modules/request/node_modules/forever-agent/README.md +0 -4
  82. package/node_modules/request/node_modules/forever-agent/index.js +0 -119
  83. package/node_modules/request/node_modules/forever-agent/package.json +0 -46
  84. package/node_modules/request/node_modules/form-data/License +0 -19
  85. package/node_modules/request/node_modules/form-data/Readme.md +0 -175
  86. package/node_modules/request/node_modules/form-data/lib/form_data.js +0 -351
  87. package/node_modules/request/node_modules/form-data/node_modules/async/.travis.yml +0 -3
  88. package/node_modules/request/node_modules/form-data/node_modules/async/LICENSE +0 -19
  89. package/node_modules/request/node_modules/form-data/node_modules/async/README.md +0 -1646
  90. package/node_modules/request/node_modules/form-data/node_modules/async/component.json +0 -11
  91. package/node_modules/request/node_modules/form-data/node_modules/async/lib/async.js +0 -1123
  92. package/node_modules/request/node_modules/form-data/node_modules/async/package.json +0 -60
  93. package/node_modules/request/node_modules/form-data/node_modules/combined-stream/License +0 -19
  94. package/node_modules/request/node_modules/form-data/node_modules/combined-stream/Readme.md +0 -132
  95. package/node_modules/request/node_modules/form-data/node_modules/combined-stream/lib/combined_stream.js +0 -186
  96. package/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/.npmignore +0 -2
  97. package/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/License +0 -19
  98. package/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Makefile +0 -7
  99. package/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/Readme.md +0 -154
  100. package/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/lib/delayed_stream.js +0 -99
  101. package/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/package.json +0 -42
  102. package/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/common.js +0 -6
  103. package/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-http-upload.js +0 -38
  104. package/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-auto-pause.js +0 -21
  105. package/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream-pause.js +0 -14
  106. package/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-delayed-stream.js +0 -48
  107. package/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-handle-source-errors.js +0 -15
  108. package/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-max-data-size.js +0 -18
  109. package/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-pipe-resumes.js +0 -13
  110. package/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/integration/test-proxy-readable.js +0 -13
  111. package/node_modules/request/node_modules/form-data/node_modules/combined-stream/node_modules/delayed-stream/test/run.js +0 -7
  112. package/node_modules/request/node_modules/form-data/node_modules/combined-stream/package.json +0 -61
  113. package/node_modules/request/node_modules/form-data/node_modules/mime/LICENSE +0 -19
  114. package/node_modules/request/node_modules/form-data/node_modules/mime/README.md +0 -66
  115. package/node_modules/request/node_modules/form-data/node_modules/mime/mime.js +0 -114
  116. package/node_modules/request/node_modules/form-data/node_modules/mime/package.json +0 -59
  117. package/node_modules/request/node_modules/form-data/node_modules/mime/test.js +0 -84
  118. package/node_modules/request/node_modules/form-data/node_modules/mime/types/mime.types +0 -1588
  119. package/node_modules/request/node_modules/form-data/node_modules/mime/types/node.types +0 -77
  120. package/node_modules/request/node_modules/form-data/package.json +0 -80
  121. package/node_modules/request/node_modules/hawk/.npmignore +0 -18
  122. package/node_modules/request/node_modules/hawk/.travis.yml +0 -5
  123. package/node_modules/request/node_modules/hawk/LICENSE +0 -24
  124. package/node_modules/request/node_modules/hawk/Makefile +0 -10
  125. package/node_modules/request/node_modules/hawk/README.md +0 -625
  126. package/node_modules/request/node_modules/hawk/example/usage.js +0 -78
  127. package/node_modules/request/node_modules/hawk/images/hawk.png +0 -0
  128. package/node_modules/request/node_modules/hawk/images/logo.png +0 -0
  129. package/node_modules/request/node_modules/hawk/index.js +0 -1
  130. package/node_modules/request/node_modules/hawk/lib/browser.js +0 -507
  131. package/node_modules/request/node_modules/hawk/lib/client.js +0 -371
  132. package/node_modules/request/node_modules/hawk/lib/crypto.js +0 -118
  133. package/node_modules/request/node_modules/hawk/lib/index.js +0 -15
  134. package/node_modules/request/node_modules/hawk/lib/server.js +0 -523
  135. package/node_modules/request/node_modules/hawk/lib/utils.js +0 -183
  136. package/node_modules/request/node_modules/hawk/node_modules/boom/.npmignore +0 -18
  137. package/node_modules/request/node_modules/hawk/node_modules/boom/.travis.yml +0 -5
  138. package/node_modules/request/node_modules/hawk/node_modules/boom/LICENSE +0 -24
  139. package/node_modules/request/node_modules/hawk/node_modules/boom/Makefile +0 -11
  140. package/node_modules/request/node_modules/hawk/node_modules/boom/README.md +0 -6
  141. package/node_modules/request/node_modules/hawk/node_modules/boom/images/boom.png +0 -0
  142. package/node_modules/request/node_modules/hawk/node_modules/boom/index.js +0 -1
  143. package/node_modules/request/node_modules/hawk/node_modules/boom/lib/index.js +0 -207
  144. package/node_modules/request/node_modules/hawk/node_modules/boom/package.json +0 -64
  145. package/node_modules/request/node_modules/hawk/node_modules/boom/test/index.js +0 -245
  146. package/node_modules/request/node_modules/hawk/node_modules/cryptiles/.npmignore +0 -18
  147. package/node_modules/request/node_modules/hawk/node_modules/cryptiles/.travis.yml +0 -5
  148. package/node_modules/request/node_modules/hawk/node_modules/cryptiles/LICENSE +0 -24
  149. package/node_modules/request/node_modules/hawk/node_modules/cryptiles/Makefile +0 -11
  150. package/node_modules/request/node_modules/hawk/node_modules/cryptiles/README.md +0 -6
  151. package/node_modules/request/node_modules/hawk/node_modules/cryptiles/index.js +0 -1
  152. package/node_modules/request/node_modules/hawk/node_modules/cryptiles/lib/index.js +0 -68
  153. package/node_modules/request/node_modules/hawk/node_modules/cryptiles/package.json +0 -65
  154. package/node_modules/request/node_modules/hawk/node_modules/cryptiles/test/index.js +0 -101
  155. package/node_modules/request/node_modules/hawk/node_modules/hoek/.npmignore +0 -18
  156. package/node_modules/request/node_modules/hawk/node_modules/hoek/.travis.yml +0 -5
  157. package/node_modules/request/node_modules/hawk/node_modules/hoek/LICENSE +0 -33
  158. package/node_modules/request/node_modules/hawk/node_modules/hoek/Makefile +0 -10
  159. package/node_modules/request/node_modules/hawk/node_modules/hoek/README.md +0 -436
  160. package/node_modules/request/node_modules/hawk/node_modules/hoek/images/hoek.png +0 -0
  161. package/node_modules/request/node_modules/hawk/node_modules/hoek/index.js +0 -1
  162. package/node_modules/request/node_modules/hawk/node_modules/hoek/lib/escape.js +0 -132
  163. package/node_modules/request/node_modules/hawk/node_modules/hoek/lib/index.js +0 -585
  164. package/node_modules/request/node_modules/hawk/node_modules/hoek/package.json +0 -70
  165. package/node_modules/request/node_modules/hawk/node_modules/hoek/test/escaper.js +0 -86
  166. package/node_modules/request/node_modules/hawk/node_modules/hoek/test/index.js +0 -1078
  167. package/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test1.js +0 -1
  168. package/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test2.js +0 -1
  169. package/node_modules/request/node_modules/hawk/node_modules/hoek/test/modules/test3.js +0 -1
  170. package/node_modules/request/node_modules/hawk/node_modules/sntp/.npmignore +0 -18
  171. package/node_modules/request/node_modules/hawk/node_modules/sntp/.travis.yml +0 -5
  172. package/node_modules/request/node_modules/hawk/node_modules/sntp/LICENSE +0 -24
  173. package/node_modules/request/node_modules/hawk/node_modules/sntp/Makefile +0 -11
  174. package/node_modules/request/node_modules/hawk/node_modules/sntp/README.md +0 -68
  175. package/node_modules/request/node_modules/hawk/node_modules/sntp/examples/offset.js +0 -16
  176. package/node_modules/request/node_modules/hawk/node_modules/sntp/examples/time.js +0 -25
  177. package/node_modules/request/node_modules/hawk/node_modules/sntp/index.js +0 -1
  178. package/node_modules/request/node_modules/hawk/node_modules/sntp/lib/index.js +0 -409
  179. package/node_modules/request/node_modules/hawk/node_modules/sntp/package.json +0 -65
  180. package/node_modules/request/node_modules/hawk/node_modules/sntp/test/index.js +0 -359
  181. package/node_modules/request/node_modules/hawk/package.json +0 -70
  182. package/node_modules/request/node_modules/hawk/test/browser.js +0 -817
  183. package/node_modules/request/node_modules/hawk/test/client.js +0 -206
  184. package/node_modules/request/node_modules/hawk/test/crypto.js +0 -86
  185. package/node_modules/request/node_modules/hawk/test/index.js +0 -316
  186. package/node_modules/request/node_modules/hawk/test/message.js +0 -246
  187. package/node_modules/request/node_modules/hawk/test/readme.js +0 -98
  188. package/node_modules/request/node_modules/hawk/test/server.js +0 -686
  189. package/node_modules/request/node_modules/hawk/test/uri.js +0 -456
  190. package/node_modules/request/node_modules/hawk/test/utils.js +0 -120
  191. package/node_modules/request/node_modules/http-signature/.dir-locals.el +0 -6
  192. package/node_modules/request/node_modules/http-signature/.npmignore +0 -7
  193. package/node_modules/request/node_modules/http-signature/LICENSE +0 -18
  194. package/node_modules/request/node_modules/http-signature/README.md +0 -75
  195. package/node_modules/request/node_modules/http-signature/http_signing.md +0 -296
  196. package/node_modules/request/node_modules/http-signature/lib/index.js +0 -25
  197. package/node_modules/request/node_modules/http-signature/lib/parser.js +0 -304
  198. package/node_modules/request/node_modules/http-signature/lib/signer.js +0 -179
  199. package/node_modules/request/node_modules/http-signature/lib/util.js +0 -249
  200. package/node_modules/request/node_modules/http-signature/lib/verify.js +0 -42
  201. package/node_modules/request/node_modules/http-signature/node_modules/asn1/.npmignore +0 -2
  202. package/node_modules/request/node_modules/http-signature/node_modules/asn1/LICENSE +0 -19
  203. package/node_modules/request/node_modules/http-signature/node_modules/asn1/README.md +0 -50
  204. package/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/errors.js +0 -13
  205. package/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/index.js +0 -27
  206. package/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/reader.js +0 -267
  207. package/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/types.js +0 -36
  208. package/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/ber/writer.js +0 -317
  209. package/node_modules/request/node_modules/http-signature/node_modules/asn1/lib/index.js +0 -20
  210. package/node_modules/request/node_modules/http-signature/node_modules/asn1/package.json +0 -63
  211. package/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/reader.test.js +0 -172
  212. package/node_modules/request/node_modules/http-signature/node_modules/asn1/tst/ber/writer.test.js +0 -296
  213. package/node_modules/request/node_modules/http-signature/node_modules/assert-plus/README.md +0 -126
  214. package/node_modules/request/node_modules/http-signature/node_modules/assert-plus/assert.js +0 -196
  215. package/node_modules/request/node_modules/http-signature/node_modules/assert-plus/package.json +0 -38
  216. package/node_modules/request/node_modules/http-signature/node_modules/ctype/CHANGELOG +0 -71
  217. package/node_modules/request/node_modules/http-signature/node_modules/ctype/LICENSE +0 -24
  218. package/node_modules/request/node_modules/http-signature/node_modules/ctype/README +0 -82
  219. package/node_modules/request/node_modules/http-signature/node_modules/ctype/README.old +0 -298
  220. package/node_modules/request/node_modules/http-signature/node_modules/ctype/ctf.js +0 -245
  221. package/node_modules/request/node_modules/http-signature/node_modules/ctype/ctio.js +0 -1485
  222. package/node_modules/request/node_modules/http-signature/node_modules/ctype/ctype.js +0 -944
  223. package/node_modules/request/node_modules/http-signature/node_modules/ctype/man/man3ctype/ctio.3ctype +0 -241
  224. package/node_modules/request/node_modules/http-signature/node_modules/ctype/package.json +0 -36
  225. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsl.conf +0 -129
  226. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tools/jsstyle +0 -839
  227. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/float.json +0 -13
  228. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/int.json +0 -13
  229. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/psinfo.json +0 -104
  230. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/struct.json +0 -19
  231. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.fail.js +0 -39
  232. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.float.js +0 -14
  233. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.int.js +0 -14
  234. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.psinfo.js +0 -17
  235. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.struct.js +0 -18
  236. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/tst.typedef.js +0 -15
  237. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctf/typedef.json +0 -14
  238. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.rfloat.js +0 -767
  239. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/float/tst.wfloat.js +0 -753
  240. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.64.js +0 -638
  241. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.rint.js +0 -101
  242. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wbounds.js +0 -53
  243. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/int/tst.wint.js +0 -92
  244. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.64.js +0 -451
  245. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.roundtrip.js +0 -81
  246. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.ruint.js +0 -95
  247. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctio/uint/tst.wuint.js +0 -156
  248. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicr.js +0 -50
  249. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.basicw.js +0 -44
  250. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.char.js +0 -42
  251. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.endian.js +0 -45
  252. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.oldwrite.js +0 -28
  253. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.readSize.js +0 -128
  254. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.structw.js +0 -28
  255. package/node_modules/request/node_modules/http-signature/node_modules/ctype/tst/ctype/tst.writeStruct.js +0 -31
  256. package/node_modules/request/node_modules/http-signature/package.json +0 -54
  257. package/node_modules/request/node_modules/json-stringify-safe/LICENSE +0 -27
  258. package/node_modules/request/node_modules/json-stringify-safe/README.md +0 -49
  259. package/node_modules/request/node_modules/json-stringify-safe/package.json +0 -51
  260. package/node_modules/request/node_modules/json-stringify-safe/stringify.js +0 -39
  261. package/node_modules/request/node_modules/json-stringify-safe/test.js +0 -128
  262. package/node_modules/request/node_modules/mime-types/.npmignore +0 -14
  263. package/node_modules/request/node_modules/mime-types/.travis.yml +0 -12
  264. package/node_modules/request/node_modules/mime-types/LICENSE +0 -22
  265. package/node_modules/request/node_modules/mime-types/Makefile +0 -9
  266. package/node_modules/request/node_modules/mime-types/README.md +0 -101
  267. package/node_modules/request/node_modules/mime-types/SOURCES.md +0 -17
  268. package/node_modules/request/node_modules/mime-types/component.json +0 -16
  269. package/node_modules/request/node_modules/mime-types/lib/custom.json +0 -27
  270. package/node_modules/request/node_modules/mime-types/lib/index.js +0 -75
  271. package/node_modules/request/node_modules/mime-types/lib/mime.json +0 -3317
  272. package/node_modules/request/node_modules/mime-types/lib/node.json +0 -55
  273. package/node_modules/request/node_modules/mime-types/package.json +0 -69
  274. package/node_modules/request/node_modules/node-uuid/.npmignore +0 -2
  275. package/node_modules/request/node_modules/node-uuid/LICENSE.md +0 -2
  276. package/node_modules/request/node_modules/node-uuid/README.md +0 -207
  277. package/node_modules/request/node_modules/node-uuid/benchmark/README.md +0 -53
  278. package/node_modules/request/node_modules/node-uuid/benchmark/bench.gnu +0 -174
  279. package/node_modules/request/node_modules/node-uuid/benchmark/bench.sh +0 -34
  280. package/node_modules/request/node_modules/node-uuid/benchmark/benchmark-native.c +0 -34
  281. package/node_modules/request/node_modules/node-uuid/benchmark/benchmark.js +0 -84
  282. package/node_modules/request/node_modules/node-uuid/component.json +0 -18
  283. package/node_modules/request/node_modules/node-uuid/package.json +0 -54
  284. package/node_modules/request/node_modules/node-uuid/test/compare_v1.js +0 -63
  285. package/node_modules/request/node_modules/node-uuid/test/test.html +0 -17
  286. package/node_modules/request/node_modules/node-uuid/test/test.js +0 -228
  287. package/node_modules/request/node_modules/node-uuid/uuid.js +0 -245
  288. package/node_modules/request/node_modules/oauth-sign/LICENSE +0 -55
  289. package/node_modules/request/node_modules/oauth-sign/README.md +0 -4
  290. package/node_modules/request/node_modules/oauth-sign/index.js +0 -43
  291. package/node_modules/request/node_modules/oauth-sign/package.json +0 -49
  292. package/node_modules/request/node_modules/oauth-sign/test.js +0 -49
  293. package/node_modules/request/node_modules/qs/.jshintignore +0 -1
  294. package/node_modules/request/node_modules/qs/.jshintrc +0 -10
  295. package/node_modules/request/node_modules/qs/.npmignore +0 -18
  296. package/node_modules/request/node_modules/qs/.travis.yml +0 -4
  297. package/node_modules/request/node_modules/qs/LICENSE +0 -28
  298. package/node_modules/request/node_modules/qs/Makefile +0 -8
  299. package/node_modules/request/node_modules/qs/Readme.md +0 -120
  300. package/node_modules/request/node_modules/qs/index.js +0 -1
  301. package/node_modules/request/node_modules/qs/lib/index.js +0 -15
  302. package/node_modules/request/node_modules/qs/lib/parse.js +0 -151
  303. package/node_modules/request/node_modules/qs/lib/stringify.js +0 -52
  304. package/node_modules/request/node_modules/qs/lib/utils.js +0 -131
  305. package/node_modules/request/node_modules/qs/package.json +0 -61
  306. package/node_modules/request/node_modules/qs/test/parse.js +0 -236
  307. package/node_modules/request/node_modules/qs/test/stringify.js +0 -123
  308. package/node_modules/request/node_modules/stringstream/.npmignore +0 -15
  309. package/node_modules/request/node_modules/stringstream/.travis.yml +0 -4
  310. package/node_modules/request/node_modules/stringstream/LICENSE.txt +0 -4
  311. package/node_modules/request/node_modules/stringstream/README.md +0 -38
  312. package/node_modules/request/node_modules/stringstream/example.js +0 -27
  313. package/node_modules/request/node_modules/stringstream/package.json +0 -48
  314. package/node_modules/request/node_modules/stringstream/stringstream.js +0 -102
  315. package/node_modules/request/node_modules/tough-cookie/.jshintrc +0 -70
  316. package/node_modules/request/node_modules/tough-cookie/.npmignore +0 -3
  317. package/node_modules/request/node_modules/tough-cookie/.travis.yml +0 -8
  318. package/node_modules/request/node_modules/tough-cookie/LICENSE +0 -78
  319. package/node_modules/request/node_modules/tough-cookie/README.md +0 -412
  320. package/node_modules/request/node_modules/tough-cookie/generate-pubsuffix.js +0 -239
  321. package/node_modules/request/node_modules/tough-cookie/lib/cookie.js +0 -1107
  322. package/node_modules/request/node_modules/tough-cookie/lib/memstore.js +0 -123
  323. package/node_modules/request/node_modules/tough-cookie/lib/pubsuffix.js +0 -69
  324. package/node_modules/request/node_modules/tough-cookie/lib/store.js +0 -37
  325. package/node_modules/request/node_modules/tough-cookie/node_modules/punycode/LICENSE-MIT.txt +0 -20
  326. package/node_modules/request/node_modules/tough-cookie/node_modules/punycode/README.md +0 -176
  327. package/node_modules/request/node_modules/tough-cookie/node_modules/punycode/package.json +0 -87
  328. package/node_modules/request/node_modules/tough-cookie/node_modules/punycode/punycode.js +0 -528
  329. package/node_modules/request/node_modules/tough-cookie/package.json +0 -67
  330. package/node_modules/request/node_modules/tough-cookie/public-suffix.txt +0 -5229
  331. package/node_modules/request/node_modules/tough-cookie/test.js +0 -1625
  332. package/node_modules/request/node_modules/tunnel-agent/.jshintrc +0 -5
  333. package/node_modules/request/node_modules/tunnel-agent/LICENSE +0 -55
  334. package/node_modules/request/node_modules/tunnel-agent/README.md +0 -4
  335. package/node_modules/request/node_modules/tunnel-agent/index.js +0 -236
  336. package/node_modules/request/node_modules/tunnel-agent/package.json +0 -46
  337. package/node_modules/request/package.json +0 -77
  338. package/node_modules/request/request.js +0 -1428
  339. package/test/fixtures/github-response.json +0 -1367
  340. package/test/index.js +0 -55
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var __async = (__this, __arguments, generator) => {
20
+ return new Promise((resolve, reject) => {
21
+ var fulfilled = (value) => {
22
+ try {
23
+ step(generator.next(value));
24
+ } catch (e) {
25
+ reject(e);
26
+ }
27
+ };
28
+ var rejected = (value) => {
29
+ try {
30
+ step(generator.throw(value));
31
+ } catch (e) {
32
+ reject(e);
33
+ }
34
+ };
35
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
36
+ step((generator = generator.apply(__this, __arguments)).next());
37
+ });
38
+ };
39
+
40
+ // streams/langchain-stream.ts
41
+ var langchain_stream_exports = {};
42
+ __export(langchain_stream_exports, {
43
+ LangChainStream: () => LangChainStream
44
+ });
45
+ module.exports = __toCommonJS(langchain_stream_exports);
46
+
47
+ // streams/ai-stream.ts
48
+ var import_eventsource_parser = require("eventsource-parser");
49
+ function createCallbacksTransformer(callbacks) {
50
+ const encoder = new TextEncoder();
51
+ let fullResponse = "";
52
+ const { onStart, onToken, onCompletion } = callbacks || {};
53
+ return new TransformStream({
54
+ start() {
55
+ return __async(this, null, function* () {
56
+ if (onStart)
57
+ yield onStart();
58
+ });
59
+ },
60
+ transform(message, controller) {
61
+ return __async(this, null, function* () {
62
+ controller.enqueue(encoder.encode(message));
63
+ if (onToken)
64
+ yield onToken(message);
65
+ if (onCompletion)
66
+ fullResponse += message;
67
+ });
68
+ },
69
+ flush() {
70
+ return __async(this, null, function* () {
71
+ yield onCompletion == null ? void 0 : onCompletion(fullResponse);
72
+ });
73
+ }
74
+ });
75
+ }
76
+
77
+ // streams/langchain-stream.ts
78
+ function LangChainStream(callbacks) {
79
+ const stream = new TransformStream();
80
+ const writer = stream.writable.getWriter();
81
+ return {
82
+ stream: stream.readable.pipeThrough(createCallbacksTransformer(callbacks)),
83
+ handlers: {
84
+ handleLLMNewToken: (token) => __async(this, null, function* () {
85
+ yield writer.ready;
86
+ yield writer.write(token);
87
+ }),
88
+ handleChainEnd: () => __async(this, null, function* () {
89
+ yield writer.ready;
90
+ yield writer.close();
91
+ }),
92
+ handleLLMError: (e) => __async(this, null, function* () {
93
+ yield writer.ready;
94
+ yield writer.abort(e);
95
+ })
96
+ }
97
+ };
98
+ }
99
+ // Annotate the CommonJS export names for ESM import in node:
100
+ 0 && (module.exports = {
101
+ LangChainStream
102
+ });
@@ -0,0 +1,8 @@
1
+ import {
2
+ LangChainStream
3
+ } from "./chunk-GT4HKF2X.mjs";
4
+ import "./chunk-265FSSO4.mjs";
5
+ import "./chunk-2L3ZO4UM.mjs";
6
+ export {
7
+ LangChainStream
8
+ };
@@ -0,0 +1,5 @@
1
+ import { AIStreamCallbacks } from './ai-stream.js';
2
+
3
+ declare function OpenAIStream(res: Response, cb?: AIStreamCallbacks): ReadableStream;
4
+
5
+ export { OpenAIStream };
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var __async = (__this, __arguments, generator) => {
20
+ return new Promise((resolve, reject) => {
21
+ var fulfilled = (value) => {
22
+ try {
23
+ step(generator.next(value));
24
+ } catch (e) {
25
+ reject(e);
26
+ }
27
+ };
28
+ var rejected = (value) => {
29
+ try {
30
+ step(generator.throw(value));
31
+ } catch (e) {
32
+ reject(e);
33
+ }
34
+ };
35
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
36
+ step((generator = generator.apply(__this, __arguments)).next());
37
+ });
38
+ };
39
+
40
+ // streams/openai-stream.ts
41
+ var openai_stream_exports = {};
42
+ __export(openai_stream_exports, {
43
+ OpenAIStream: () => OpenAIStream
44
+ });
45
+ module.exports = __toCommonJS(openai_stream_exports);
46
+
47
+ // streams/ai-stream.ts
48
+ var import_eventsource_parser = require("eventsource-parser");
49
+ function createEventStreamTransformer(customParser) {
50
+ const decoder = new TextDecoder();
51
+ let parser;
52
+ return new TransformStream({
53
+ start(controller) {
54
+ return __async(this, null, function* () {
55
+ function onParse(event) {
56
+ if (event.type === "event") {
57
+ const data = event.data;
58
+ if (data === "[DONE]") {
59
+ controller.terminate();
60
+ return;
61
+ }
62
+ const message = customParser(data);
63
+ if (message)
64
+ controller.enqueue(message);
65
+ }
66
+ }
67
+ parser = (0, import_eventsource_parser.createParser)(onParse);
68
+ });
69
+ },
70
+ transform(chunk) {
71
+ parser.feed(decoder.decode(chunk));
72
+ }
73
+ });
74
+ }
75
+ function createCallbacksTransformer(callbacks) {
76
+ const encoder = new TextEncoder();
77
+ let fullResponse = "";
78
+ const { onStart, onToken, onCompletion } = callbacks || {};
79
+ return new TransformStream({
80
+ start() {
81
+ return __async(this, null, function* () {
82
+ if (onStart)
83
+ yield onStart();
84
+ });
85
+ },
86
+ transform(message, controller) {
87
+ return __async(this, null, function* () {
88
+ controller.enqueue(encoder.encode(message));
89
+ if (onToken)
90
+ yield onToken(message);
91
+ if (onCompletion)
92
+ fullResponse += message;
93
+ });
94
+ },
95
+ flush() {
96
+ return __async(this, null, function* () {
97
+ yield onCompletion == null ? void 0 : onCompletion(fullResponse);
98
+ });
99
+ }
100
+ });
101
+ }
102
+ function trimStartOfStreamHelper() {
103
+ let start = true;
104
+ return (text) => {
105
+ if (start)
106
+ text = text.trimStart();
107
+ if (text)
108
+ start = false;
109
+ return text;
110
+ };
111
+ }
112
+ function AIStream(res, customParser, callbacks) {
113
+ if (!res.ok) {
114
+ throw new Error(
115
+ `Failed to convert the response to stream. Received status code: ${res.status}.`
116
+ );
117
+ }
118
+ const stream = res.body || new ReadableStream({
119
+ start(controller) {
120
+ controller.close();
121
+ }
122
+ });
123
+ return stream.pipeThrough(createEventStreamTransformer(customParser)).pipeThrough(createCallbacksTransformer(callbacks));
124
+ }
125
+
126
+ // streams/openai-stream.ts
127
+ function parseOpenAIStream() {
128
+ const trimStartOfStream = trimStartOfStreamHelper();
129
+ return (data) => {
130
+ var _a, _b, _c, _d, _e;
131
+ const json = JSON.parse(data);
132
+ const text = trimStartOfStream(
133
+ (_e = (_d = (_b = (_a = json.choices[0]) == null ? void 0 : _a.delta) == null ? void 0 : _b.content) != null ? _d : (_c = json.choices[0]) == null ? void 0 : _c.text) != null ? _e : ""
134
+ );
135
+ return text;
136
+ };
137
+ }
138
+ function OpenAIStream(res, cb) {
139
+ return AIStream(res, parseOpenAIStream(), cb);
140
+ }
141
+ // Annotate the CommonJS export names for ESM import in node:
142
+ 0 && (module.exports = {
143
+ OpenAIStream
144
+ });
@@ -0,0 +1,8 @@
1
+ import {
2
+ OpenAIStream
3
+ } from "./chunk-TJMME6CL.mjs";
4
+ import "./chunk-265FSSO4.mjs";
5
+ import "./chunk-2L3ZO4UM.mjs";
6
+ export {
7
+ OpenAIStream
8
+ };
@@ -0,0 +1,17 @@
1
+ import { ServerResponse } from 'node:http';
2
+
3
+ /**
4
+ * A utility class for streaming text responses.
5
+ */
6
+ declare class StreamingTextResponse extends Response {
7
+ constructor(res: ReadableStream, init?: ResponseInit);
8
+ }
9
+ /**
10
+ * A utility function to stream a ReadableStream to a Node.js response-like object.
11
+ */
12
+ declare function streamToResponse(res: ReadableStream, response: ServerResponse, init?: {
13
+ headers?: Record<string, string>;
14
+ status?: number;
15
+ }): void;
16
+
17
+ export { StreamingTextResponse, streamToResponse };
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
10
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
+ var __spreadValues = (a, b) => {
12
+ for (var prop in b || (b = {}))
13
+ if (__hasOwnProp.call(b, prop))
14
+ __defNormalProp(a, prop, b[prop]);
15
+ if (__getOwnPropSymbols)
16
+ for (var prop of __getOwnPropSymbols(b)) {
17
+ if (__propIsEnum.call(b, prop))
18
+ __defNormalProp(a, prop, b[prop]);
19
+ }
20
+ return a;
21
+ };
22
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
23
+ var __export = (target, all) => {
24
+ for (var name in all)
25
+ __defProp(target, name, { get: all[name], enumerable: true });
26
+ };
27
+ var __copyProps = (to, from, except, desc) => {
28
+ if (from && typeof from === "object" || typeof from === "function") {
29
+ for (let key of __getOwnPropNames(from))
30
+ if (!__hasOwnProp.call(to, key) && key !== except)
31
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
32
+ }
33
+ return to;
34
+ };
35
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
36
+
37
+ // streams/streaming-text-response.ts
38
+ var streaming_text_response_exports = {};
39
+ __export(streaming_text_response_exports, {
40
+ StreamingTextResponse: () => StreamingTextResponse,
41
+ streamToResponse: () => streamToResponse
42
+ });
43
+ module.exports = __toCommonJS(streaming_text_response_exports);
44
+ var StreamingTextResponse = class extends Response {
45
+ constructor(res, init) {
46
+ super(res, __spreadProps(__spreadValues({}, init), {
47
+ status: 200,
48
+ headers: __spreadValues({
49
+ "Content-Type": "text/plain; charset=utf-8"
50
+ }, init == null ? void 0 : init.headers)
51
+ }));
52
+ }
53
+ };
54
+ function streamToResponse(res, response, init) {
55
+ response.writeHead((init == null ? void 0 : init.status) || 200, __spreadValues({
56
+ "Content-Type": "text/plain; charset=utf-8"
57
+ }, init == null ? void 0 : init.headers));
58
+ const reader = res.getReader();
59
+ function read() {
60
+ reader.read().then(({ done, value }) => {
61
+ if (done) {
62
+ response.end();
63
+ return;
64
+ }
65
+ response.write(value);
66
+ read();
67
+ });
68
+ }
69
+ read();
70
+ }
71
+ // Annotate the CommonJS export names for ESM import in node:
72
+ 0 && (module.exports = {
73
+ StreamingTextResponse,
74
+ streamToResponse
75
+ });
@@ -0,0 +1,9 @@
1
+ import {
2
+ StreamingTextResponse,
3
+ streamToResponse
4
+ } from "./chunk-NK2CVBLI.mjs";
5
+ import "./chunk-2L3ZO4UM.mjs";
6
+ export {
7
+ StreamingTextResponse,
8
+ streamToResponse
9
+ };
package/package.json CHANGED
@@ -1,37 +1,86 @@
1
1
  {
2
2
  "name": "ai",
3
- "version": "1.1.0",
4
- "description": "I'm helping you finding abandoned issues in your project",
5
- "main": "index.js",
6
- "bin": "./bin/ai.js",
7
- "preferGlobal": true,
3
+ "version": "2.0.1",
4
+ "license": "Apache-2.0",
5
+ "sideEffects": false,
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.mjs",
8
+ "types": "./dist/index.d.ts",
9
+ "files": [
10
+ "dist/**/*",
11
+ "react/dist/**/*",
12
+ "svelte/dist/**/*"
13
+ ],
14
+ "exports": {
15
+ "./package.json": "./package.json",
16
+ ".": {
17
+ "types": "./dist/index.d.ts",
18
+ "import": "./dist/index.mjs",
19
+ "module": "./dist/index.mjs",
20
+ "require": "./dist/index.js"
21
+ },
22
+ "./react": {
23
+ "types": "./react/dist/index.d.ts",
24
+ "import": "./react/dist/index.mjs",
25
+ "module": "./react/dist/index.mjs",
26
+ "require": "./react/dist/index.js"
27
+ },
28
+ "./svelte": {
29
+ "types": "./svelte/dist/index.d.ts",
30
+ "import": "./svelte/dist/index.mjs",
31
+ "module": "./svelte/dist/index.mjs",
32
+ "require": "./svelte/dist/index.js"
33
+ }
34
+ },
35
+ "jest": {
36
+ "preset": "ts-jest",
37
+ "testEnvironment": "node"
38
+ },
8
39
  "dependencies": {
9
- "request": "~2.40.0"
40
+ "eventsource-parser": "1.0.0",
41
+ "nanoid": "^3.3.6",
42
+ "sswr": "^1.10.0",
43
+ "swr": "2.1.5"
10
44
  },
11
45
  "devDependencies": {
12
- "hock": "~0.2.4",
13
- "tap": "~0.4.8"
46
+ "@edge-runtime/jest-environment": "1.1.0-beta.31",
47
+ "@types/jest": "29.2.0",
48
+ "@types/node": "^17.0.12",
49
+ "@types/react": "^18.2.0",
50
+ "@types/react-dom": "^18.2.0",
51
+ "eslint": "^7.32.0",
52
+ "jest": "29.2.1",
53
+ "ts-jest": "29.0.3",
54
+ "tsup": "^6.7.0",
55
+ "typescript": "^4.5.3",
56
+ "@vercel/ai-tsconfig": "0.0.0",
57
+ "eslint-config-vercel-ai": "0.0.0"
58
+ },
59
+ "peerDependencies": {
60
+ "react": "^18.0.0",
61
+ "svelte": "^3.29.0"
62
+ },
63
+ "peerDependenciesMeta": {
64
+ "react": {
65
+ "optional": true
66
+ },
67
+ "svelte": {
68
+ "optional": true
69
+ }
70
+ },
71
+ "engines": {
72
+ "node": ">=14.6"
73
+ },
74
+ "publishConfig": {
75
+ "access": "public"
14
76
  },
15
- "bundleDependencies": [
16
- "request"
17
- ],
18
77
  "scripts": {
19
- "test": "tap test/*.js"
20
- },
21
- "repository": {
22
- "type": "git",
23
- "url": "git://github.com/robertkowalski/ai.git"
24
- },
25
- "homepage": "https://github.com/robertkowalski/ai",
26
- "keywords": [
27
- "support,",
28
- "github,",
29
- "issues,",
30
- "abandoned"
31
- ],
32
- "author": "Robert Kowalski <rok@kowalski.gd>",
33
- "license": "BSD-2-Clause",
34
- "bugs": {
35
- "url": "https://github.com/robertkowalski/ai/issues"
78
+ "build": "tsup",
79
+ "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist && rm -rf react/dist && rm -rf svelte/dist",
80
+ "dev": "tsup --watch",
81
+ "lint": "eslint \"./**/*.ts*\"",
82
+ "type-check": "tsc --noEmit",
83
+ "prettier-check": "prettier --check \"./**/*.ts*\"",
84
+ "test": "jest --env @edge-runtime/jest-environment .test.ts && jest --env node .test.ts"
36
85
  }
37
- }
86
+ }
@@ -0,0 +1,202 @@
1
+ 'use client'
2
+ import {
3
+ __async,
4
+ __spreadValues,
5
+ decodeAIStreamChunk,
6
+ nanoid
7
+ } from "./chunk-6EH3SWMP.mjs";
8
+
9
+ // react/use-chat.ts
10
+ import { useCallback, useId, useRef, useEffect, useState } from "react";
11
+ import useSWRMutation from "swr/mutation";
12
+ import useSWR from "swr";
13
+ function useChat({
14
+ api = "/api/chat",
15
+ id,
16
+ initialMessages = [],
17
+ initialInput = "",
18
+ sendExtraMessageFields,
19
+ onResponse,
20
+ onFinish,
21
+ onError,
22
+ headers,
23
+ body
24
+ } = {}) {
25
+ const hookId = useId();
26
+ const chatId = id || hookId;
27
+ const { data, mutate } = useSWR([api, chatId], null, {
28
+ fallbackData: initialMessages
29
+ });
30
+ const messages = data;
31
+ const messagesRef = useRef(messages);
32
+ useEffect(() => {
33
+ messagesRef.current = messages;
34
+ }, [messages]);
35
+ const abortControllerRef = useRef(null);
36
+ const extraMetadataRef = useRef({
37
+ headers,
38
+ body
39
+ });
40
+ useEffect(() => {
41
+ extraMetadataRef.current = {
42
+ headers,
43
+ body
44
+ };
45
+ }, [headers, body]);
46
+ const { error, trigger, isMutating } = useSWRMutation(
47
+ [api, chatId],
48
+ (_0, _1) => __async(this, [_0, _1], function* (_, { arg: messagesSnapshot }) {
49
+ try {
50
+ const abortController = new AbortController();
51
+ abortControllerRef.current = abortController;
52
+ const previousMessages = messagesRef.current;
53
+ mutate(messagesSnapshot, false);
54
+ const res = yield fetch(api, {
55
+ method: "POST",
56
+ body: JSON.stringify(__spreadValues({
57
+ messages: sendExtraMessageFields ? messagesSnapshot : messagesSnapshot.map(({ role, content }) => ({
58
+ role,
59
+ content
60
+ }))
61
+ }, extraMetadataRef.current.body)),
62
+ headers: extraMetadataRef.current.headers || {},
63
+ signal: abortController.signal
64
+ }).catch((err) => {
65
+ mutate(previousMessages, false);
66
+ throw err;
67
+ });
68
+ if (onResponse) {
69
+ try {
70
+ yield onResponse(res);
71
+ } catch (err) {
72
+ throw err;
73
+ }
74
+ }
75
+ if (!res.ok) {
76
+ mutate(previousMessages, false);
77
+ throw new Error(
78
+ (yield res.text()) || "Failed to fetch the chat response."
79
+ );
80
+ }
81
+ if (!res.body) {
82
+ throw new Error("The response body is empty.");
83
+ }
84
+ let result = "";
85
+ const createdAt = /* @__PURE__ */ new Date();
86
+ const replyId = nanoid();
87
+ const reader = res.body.getReader();
88
+ while (true) {
89
+ const { done, value } = yield reader.read();
90
+ if (done) {
91
+ break;
92
+ }
93
+ result += decodeAIStreamChunk(value);
94
+ mutate(
95
+ [
96
+ ...messagesSnapshot,
97
+ {
98
+ id: replyId,
99
+ createdAt,
100
+ content: result,
101
+ role: "assistant"
102
+ }
103
+ ],
104
+ false
105
+ );
106
+ if (abortControllerRef.current === null) {
107
+ reader.cancel();
108
+ break;
109
+ }
110
+ }
111
+ if (onFinish) {
112
+ onFinish({
113
+ id: replyId,
114
+ createdAt,
115
+ content: result,
116
+ role: "assistant"
117
+ });
118
+ }
119
+ abortControllerRef.current = null;
120
+ return result;
121
+ } catch (err) {
122
+ if (err.name === "AbortError") {
123
+ abortControllerRef.current = null;
124
+ return null;
125
+ }
126
+ if (onError && err instanceof Error) {
127
+ onError(err);
128
+ }
129
+ throw err;
130
+ }
131
+ }),
132
+ {
133
+ populateCache: false,
134
+ revalidate: false
135
+ }
136
+ );
137
+ const append = useCallback(
138
+ (message) => __async(this, null, function* () {
139
+ if (!message.id) {
140
+ message.id = nanoid();
141
+ }
142
+ return trigger(messagesRef.current.concat(message));
143
+ }),
144
+ [trigger]
145
+ );
146
+ const reload = useCallback(() => __async(this, null, function* () {
147
+ if (messagesRef.current.length === 0)
148
+ return null;
149
+ const lastMessage = messagesRef.current[messagesRef.current.length - 1];
150
+ if (lastMessage.role === "assistant") {
151
+ return trigger(messagesRef.current.slice(0, -1));
152
+ }
153
+ return trigger(messagesRef.current);
154
+ }), [trigger]);
155
+ const stop = useCallback(() => {
156
+ if (abortControllerRef.current) {
157
+ abortControllerRef.current.abort();
158
+ abortControllerRef.current = null;
159
+ }
160
+ }, []);
161
+ const setMessages = useCallback(
162
+ (messages2) => {
163
+ mutate(messages2, false);
164
+ messagesRef.current = messages2;
165
+ },
166
+ [mutate]
167
+ );
168
+ const [input, setInput] = useState(initialInput);
169
+ const handleSubmit = useCallback(
170
+ (e) => {
171
+ e.preventDefault();
172
+ if (!input)
173
+ return;
174
+ append({
175
+ content: input,
176
+ role: "user"
177
+ });
178
+ setInput("");
179
+ },
180
+ [input, append]
181
+ );
182
+ const handleInputChange = (e) => {
183
+ setInput(e.target.value);
184
+ };
185
+ return {
186
+ messages,
187
+ error,
188
+ append,
189
+ reload,
190
+ stop,
191
+ setMessages,
192
+ input,
193
+ setInput,
194
+ handleInputChange,
195
+ handleSubmit,
196
+ isLoading: isMutating
197
+ };
198
+ }
199
+
200
+ export {
201
+ useChat
202
+ };