@lorikeetai/node-sdk 1.8.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (572) hide show
  1. package/CHANGELOG.md +38 -787
  2. package/README.md +114 -44
  3. package/api-promise.d.mts +2 -0
  4. package/api-promise.d.mts.map +1 -0
  5. package/api-promise.d.ts +2 -0
  6. package/api-promise.d.ts.map +1 -0
  7. package/api-promise.js +6 -0
  8. package/api-promise.js.map +1 -0
  9. package/api-promise.mjs +2 -0
  10. package/api-promise.mjs.map +1 -0
  11. package/bin/cli +53 -0
  12. package/bin/migration-config.json +50 -0
  13. package/client.d.mts +197 -0
  14. package/client.d.mts.map +1 -0
  15. package/client.d.ts +197 -0
  16. package/client.d.ts.map +1 -0
  17. package/client.js +504 -0
  18. package/client.js.map +1 -0
  19. package/client.mjs +500 -0
  20. package/client.mjs.map +1 -0
  21. package/core/api-promise.d.mts +46 -0
  22. package/core/api-promise.d.mts.map +1 -0
  23. package/core/api-promise.d.ts +46 -0
  24. package/core/api-promise.d.ts.map +1 -0
  25. package/core/api-promise.js +74 -0
  26. package/core/api-promise.js.map +1 -0
  27. package/core/api-promise.mjs +70 -0
  28. package/core/api-promise.mjs.map +1 -0
  29. package/core/error.d.mts +46 -0
  30. package/core/error.d.mts.map +1 -0
  31. package/core/error.d.ts +46 -0
  32. package/core/error.d.ts.map +1 -0
  33. package/core/error.js +113 -0
  34. package/core/error.js.map +1 -0
  35. package/core/error.mjs +97 -0
  36. package/core/error.mjs.map +1 -0
  37. package/core/resource.d.mts +6 -0
  38. package/core/resource.d.mts.map +1 -0
  39. package/core/resource.d.ts +6 -0
  40. package/core/resource.d.ts.map +1 -0
  41. package/core/resource.js +11 -0
  42. package/core/resource.js.map +1 -0
  43. package/core/resource.mjs +7 -0
  44. package/core/resource.mjs.map +1 -0
  45. package/core/uploads.d.mts +3 -0
  46. package/core/uploads.d.mts.map +1 -0
  47. package/core/uploads.d.ts +3 -0
  48. package/core/uploads.d.ts.map +1 -0
  49. package/core/uploads.js +6 -0
  50. package/core/uploads.js.map +1 -0
  51. package/core/uploads.mjs +2 -0
  52. package/core/uploads.mjs.map +1 -0
  53. package/error.d.mts +2 -0
  54. package/error.d.mts.map +1 -0
  55. package/error.d.ts +1 -46
  56. package/error.d.ts.map +1 -1
  57. package/error.js +3 -110
  58. package/error.js.map +1 -1
  59. package/error.mjs +1 -96
  60. package/error.mjs.map +1 -1
  61. package/index.d.mts +7 -131
  62. package/index.d.mts.map +1 -0
  63. package/index.d.ts +6 -130
  64. package/index.d.ts.map +1 -1
  65. package/index.js +14 -142
  66. package/index.js.map +1 -1
  67. package/index.mjs +6 -114
  68. package/index.mjs.map +1 -1
  69. package/internal/builtin-types.d.mts +73 -0
  70. package/internal/builtin-types.d.mts.map +1 -0
  71. package/internal/builtin-types.d.ts +73 -0
  72. package/internal/builtin-types.d.ts.map +1 -0
  73. package/internal/builtin-types.js +4 -0
  74. package/internal/builtin-types.js.map +1 -0
  75. package/internal/builtin-types.mjs +3 -0
  76. package/internal/builtin-types.mjs.map +1 -0
  77. package/internal/detect-platform.d.mts +15 -0
  78. package/internal/detect-platform.d.mts.map +1 -0
  79. package/internal/detect-platform.d.ts +15 -0
  80. package/internal/detect-platform.d.ts.map +1 -0
  81. package/internal/detect-platform.js +162 -0
  82. package/internal/detect-platform.js.map +1 -0
  83. package/internal/detect-platform.mjs +157 -0
  84. package/internal/detect-platform.mjs.map +1 -0
  85. package/internal/errors.d.mts +3 -0
  86. package/internal/errors.d.mts.map +1 -0
  87. package/internal/errors.d.ts +3 -0
  88. package/internal/errors.d.ts.map +1 -0
  89. package/internal/errors.js +41 -0
  90. package/internal/errors.js.map +1 -0
  91. package/internal/errors.mjs +36 -0
  92. package/internal/errors.mjs.map +1 -0
  93. package/internal/headers.d.mts +20 -0
  94. package/internal/headers.d.mts.map +1 -0
  95. package/internal/headers.d.ts +20 -0
  96. package/internal/headers.d.ts.map +1 -0
  97. package/internal/headers.js +79 -0
  98. package/internal/headers.js.map +1 -0
  99. package/internal/headers.mjs +74 -0
  100. package/internal/headers.mjs.map +1 -0
  101. package/internal/parse.d.mts +12 -0
  102. package/internal/parse.d.mts.map +1 -0
  103. package/internal/parse.d.ts +12 -0
  104. package/internal/parse.d.ts.map +1 -0
  105. package/internal/parse.js +40 -0
  106. package/internal/parse.js.map +1 -0
  107. package/internal/parse.mjs +37 -0
  108. package/internal/parse.mjs.map +1 -0
  109. package/internal/request-options.d.mts +75 -0
  110. package/internal/request-options.d.mts.map +1 -0
  111. package/internal/request-options.d.ts +75 -0
  112. package/internal/request-options.d.ts.map +1 -0
  113. package/internal/request-options.js +14 -0
  114. package/internal/request-options.js.map +1 -0
  115. package/internal/request-options.mjs +10 -0
  116. package/internal/request-options.mjs.map +1 -0
  117. package/internal/shim-types.d.mts +17 -0
  118. package/internal/shim-types.d.mts.map +1 -0
  119. package/internal/shim-types.d.ts +17 -0
  120. package/internal/shim-types.d.ts.map +1 -0
  121. package/internal/shim-types.js +4 -0
  122. package/internal/shim-types.js.map +1 -0
  123. package/internal/shim-types.mjs +3 -0
  124. package/internal/shim-types.mjs.map +1 -0
  125. package/internal/shims.d.mts +20 -0
  126. package/internal/shims.d.mts.map +1 -0
  127. package/internal/shims.d.ts +20 -0
  128. package/internal/shims.d.ts.map +1 -0
  129. package/internal/shims.js +92 -0
  130. package/internal/shims.js.map +1 -0
  131. package/internal/shims.mjs +85 -0
  132. package/internal/shims.mjs.map +1 -0
  133. package/internal/to-file.d.mts +45 -0
  134. package/internal/to-file.d.mts.map +1 -0
  135. package/internal/to-file.d.ts +45 -0
  136. package/internal/to-file.d.ts.map +1 -0
  137. package/internal/to-file.js +92 -0
  138. package/internal/to-file.js.map +1 -0
  139. package/internal/to-file.mjs +89 -0
  140. package/internal/to-file.mjs.map +1 -0
  141. package/internal/tslib.js +81 -0
  142. package/internal/tslib.mjs +17 -0
  143. package/internal/types.d.mts +69 -0
  144. package/internal/types.d.mts.map +1 -0
  145. package/internal/types.d.ts +69 -0
  146. package/internal/types.d.ts.map +1 -0
  147. package/internal/types.js +4 -0
  148. package/internal/types.js.map +1 -0
  149. package/internal/types.mjs +3 -0
  150. package/internal/types.mjs.map +1 -0
  151. package/internal/uploads.d.mts +42 -0
  152. package/internal/uploads.d.mts.map +1 -0
  153. package/internal/uploads.d.ts +42 -0
  154. package/internal/uploads.d.ts.map +1 -0
  155. package/internal/uploads.js +141 -0
  156. package/internal/uploads.js.map +1 -0
  157. package/internal/uploads.mjs +131 -0
  158. package/internal/uploads.mjs.map +1 -0
  159. package/internal/utils/base64.d.mts +3 -0
  160. package/internal/utils/base64.d.mts.map +1 -0
  161. package/internal/utils/base64.d.ts +3 -0
  162. package/internal/utils/base64.d.ts.map +1 -0
  163. package/internal/utils/base64.js +38 -0
  164. package/internal/utils/base64.js.map +1 -0
  165. package/internal/utils/base64.mjs +33 -0
  166. package/internal/utils/base64.mjs.map +1 -0
  167. package/internal/utils/bytes.d.mts +4 -0
  168. package/internal/utils/bytes.d.mts.map +1 -0
  169. package/internal/utils/bytes.d.ts +4 -0
  170. package/internal/utils/bytes.d.ts.map +1 -0
  171. package/internal/utils/bytes.js +31 -0
  172. package/internal/utils/bytes.js.map +1 -0
  173. package/internal/utils/bytes.mjs +26 -0
  174. package/internal/utils/bytes.mjs.map +1 -0
  175. package/internal/utils/env.d.mts +9 -0
  176. package/internal/utils/env.d.mts.map +1 -0
  177. package/internal/utils/env.d.ts +9 -0
  178. package/internal/utils/env.d.ts.map +1 -0
  179. package/internal/utils/env.js +22 -0
  180. package/internal/utils/env.js.map +1 -0
  181. package/internal/utils/env.mjs +18 -0
  182. package/internal/utils/env.mjs.map +1 -0
  183. package/internal/utils/log.d.mts +37 -0
  184. package/internal/utils/log.d.mts.map +1 -0
  185. package/internal/utils/log.d.ts +37 -0
  186. package/internal/utils/log.d.ts.map +1 -0
  187. package/internal/utils/log.js +86 -0
  188. package/internal/utils/log.js.map +1 -0
  189. package/internal/utils/log.mjs +80 -0
  190. package/internal/utils/log.mjs.map +1 -0
  191. package/internal/utils/path.d.mts +15 -0
  192. package/internal/utils/path.d.mts.map +1 -0
  193. package/internal/utils/path.d.ts +15 -0
  194. package/internal/utils/path.d.ts.map +1 -0
  195. package/internal/utils/path.js +79 -0
  196. package/internal/utils/path.js.map +1 -0
  197. package/internal/utils/path.mjs +74 -0
  198. package/internal/utils/path.mjs.map +1 -0
  199. package/internal/utils/sleep.d.mts +2 -0
  200. package/internal/utils/sleep.d.mts.map +1 -0
  201. package/internal/utils/sleep.d.ts +2 -0
  202. package/internal/utils/sleep.d.ts.map +1 -0
  203. package/internal/utils/sleep.js +7 -0
  204. package/internal/utils/sleep.js.map +1 -0
  205. package/internal/utils/sleep.mjs +3 -0
  206. package/internal/utils/sleep.mjs.map +1 -0
  207. package/internal/utils/uuid.d.mts +5 -0
  208. package/internal/utils/uuid.d.mts.map +1 -0
  209. package/internal/utils/uuid.d.ts +5 -0
  210. package/internal/utils/uuid.d.ts.map +1 -0
  211. package/internal/utils/uuid.js +19 -0
  212. package/internal/utils/uuid.js.map +1 -0
  213. package/internal/utils/uuid.mjs +15 -0
  214. package/internal/utils/uuid.mjs.map +1 -0
  215. package/internal/utils/values.d.mts +18 -0
  216. package/internal/utils/values.d.mts.map +1 -0
  217. package/internal/utils/values.d.ts +18 -0
  218. package/internal/utils/values.d.ts.map +1 -0
  219. package/internal/utils/values.js +112 -0
  220. package/internal/utils/values.js.map +1 -0
  221. package/internal/utils/values.mjs +94 -0
  222. package/internal/utils/values.mjs.map +1 -0
  223. package/internal/utils.d.mts +7 -0
  224. package/internal/utils.d.mts.map +1 -0
  225. package/internal/utils.d.ts +7 -0
  226. package/internal/utils.d.ts.map +1 -0
  227. package/internal/utils.js +11 -0
  228. package/internal/utils.js.map +1 -0
  229. package/internal/utils.mjs +8 -0
  230. package/internal/utils.mjs.map +1 -0
  231. package/lib/generate-signature.d.mts +7 -0
  232. package/lib/generate-signature.d.mts.map +1 -0
  233. package/lib/generate-signature.d.ts +1 -1
  234. package/lib/generate-signature.d.ts.map +1 -1
  235. package/lib/generate-signature.js +3 -3
  236. package/lib/generate-signature.js.map +1 -1
  237. package/lib/generate-signature.mjs +1 -1
  238. package/lib/generate-signature.mjs.map +1 -1
  239. package/lib/poll-until.d.mts +20 -0
  240. package/lib/poll-until.d.mts.map +1 -0
  241. package/lib/poll-until.d.ts.map +1 -1
  242. package/lib/promise.d.mts +55 -0
  243. package/lib/promise.d.mts.map +1 -0
  244. package/package.json +125 -74
  245. package/resource.d.mts +2 -0
  246. package/resource.d.mts.map +1 -0
  247. package/resource.d.ts +1 -5
  248. package/resource.d.ts.map +1 -1
  249. package/resource.js +3 -8
  250. package/resource.js.map +1 -1
  251. package/resource.mjs +1 -6
  252. package/resource.mjs.map +1 -1
  253. package/resources/api-keys.d.mts +130 -0
  254. package/resources/api-keys.d.mts.map +1 -0
  255. package/resources/api-keys.d.ts +7 -6
  256. package/resources/api-keys.d.ts.map +1 -1
  257. package/resources/api-keys.js +6 -4
  258. package/resources/api-keys.js.map +1 -1
  259. package/resources/api-keys.mjs +6 -4
  260. package/resources/api-keys.mjs.map +1 -1
  261. package/resources/conversation/chat.d.mts +312 -0
  262. package/resources/conversation/chat.d.mts.map +1 -0
  263. package/resources/conversation/chat.d.ts +45 -77
  264. package/resources/conversation/chat.d.ts.map +1 -1
  265. package/resources/conversation/chat.js +14 -48
  266. package/resources/conversation/chat.js.map +1 -1
  267. package/resources/conversation/chat.mjs +14 -48
  268. package/resources/conversation/chat.mjs.map +1 -1
  269. package/resources/conversation/conversation.d.mts +77 -0
  270. package/resources/conversation/conversation.d.mts.map +1 -0
  271. package/resources/conversation/conversation.d.ts +1 -1
  272. package/resources/conversation/conversation.d.ts.map +1 -1
  273. package/resources/conversation/conversation.js +5 -27
  274. package/resources/conversation/conversation.js.map +1 -1
  275. package/resources/conversation/conversation.mjs +1 -1
  276. package/resources/conversation/email.d.mts +257 -0
  277. package/resources/conversation/email.d.mts.map +1 -0
  278. package/resources/conversation/email.d.ts +10 -8
  279. package/resources/conversation/email.d.ts.map +1 -1
  280. package/resources/conversation/email.js +6 -6
  281. package/resources/conversation/email.js.map +1 -1
  282. package/resources/conversation/email.mjs +6 -6
  283. package/resources/conversation/email.mjs.map +1 -1
  284. package/resources/conversation/index.d.mts +5 -0
  285. package/resources/conversation/index.d.mts.map +1 -0
  286. package/resources/conversation/index.d.ts +1 -1
  287. package/resources/conversation/index.d.ts.map +1 -1
  288. package/resources/conversation/index.js.map +1 -1
  289. package/resources/conversation/index.mjs.map +1 -1
  290. package/resources/conversation/voice.d.mts +45 -0
  291. package/resources/conversation/voice.d.mts.map +1 -0
  292. package/resources/conversation/voice.d.ts +4 -3
  293. package/resources/conversation/voice.d.ts.map +1 -1
  294. package/resources/conversation/voice.js +3 -2
  295. package/resources/conversation/voice.js.map +1 -1
  296. package/resources/conversation/voice.mjs +3 -2
  297. package/resources/conversation/voice.mjs.map +1 -1
  298. package/resources/conversation.d.mts +2 -0
  299. package/resources/conversation.d.mts.map +1 -0
  300. package/resources/conversation.d.ts.map +1 -1
  301. package/resources/conversation.js +2 -15
  302. package/resources/conversation.js.map +1 -1
  303. package/resources/customer/customer.d.mts +333 -0
  304. package/resources/customer/customer.d.mts.map +1 -0
  305. package/resources/customer/customer.d.ts +7 -7
  306. package/resources/customer/customer.d.ts.map +1 -1
  307. package/resources/customer/customer.js +12 -31
  308. package/resources/customer/customer.js.map +1 -1
  309. package/resources/customer/customer.mjs +9 -6
  310. package/resources/customer/customer.mjs.map +1 -1
  311. package/resources/customer/index.d.mts +4 -0
  312. package/resources/customer/index.d.mts.map +1 -0
  313. package/resources/customer/index.d.ts.map +1 -1
  314. package/resources/customer/profile.d.mts +30 -0
  315. package/resources/customer/profile.d.mts.map +1 -0
  316. package/resources/customer/profile.d.ts +4 -3
  317. package/resources/customer/profile.d.ts.map +1 -1
  318. package/resources/customer/profile.js +3 -2
  319. package/resources/customer/profile.js.map +1 -1
  320. package/resources/customer/profile.mjs +3 -2
  321. package/resources/customer/profile.mjs.map +1 -1
  322. package/resources/customer/remote.d.mts +164 -0
  323. package/resources/customer/remote.d.mts.map +1 -0
  324. package/resources/customer/remote.d.ts +5 -4
  325. package/resources/customer/remote.d.ts.map +1 -1
  326. package/resources/customer/remote.js +6 -5
  327. package/resources/customer/remote.js.map +1 -1
  328. package/resources/customer/remote.mjs +6 -5
  329. package/resources/customer/remote.mjs.map +1 -1
  330. package/resources/customer.d.mts +2 -0
  331. package/resources/customer.d.mts.map +1 -0
  332. package/resources/customer.d.ts.map +1 -1
  333. package/resources/customer.js +2 -15
  334. package/resources/customer.js.map +1 -1
  335. package/resources/index.d.mts +5 -0
  336. package/resources/index.d.mts.map +1 -0
  337. package/resources/index.d.ts +1 -1
  338. package/resources/index.d.ts.map +1 -1
  339. package/resources/index.js.map +1 -1
  340. package/resources/index.mjs.map +1 -1
  341. package/resources/ingest.d.mts +27 -0
  342. package/resources/ingest.d.mts.map +1 -0
  343. package/resources/ingest.d.ts +12 -6
  344. package/resources/ingest.d.ts.map +1 -1
  345. package/resources/ingest.js +11 -8
  346. package/resources/ingest.js.map +1 -1
  347. package/resources/ingest.mjs +11 -8
  348. package/resources/ingest.mjs.map +1 -1
  349. package/resources.d.mts +2 -0
  350. package/resources.d.mts.map +1 -0
  351. package/resources.d.ts.map +1 -1
  352. package/resources.js +2 -15
  353. package/resources.js.map +1 -1
  354. package/src/api-promise.ts +2 -0
  355. package/src/client.ts +835 -0
  356. package/src/core/README.md +3 -0
  357. package/src/core/api-promise.ts +92 -0
  358. package/src/core/error.ts +130 -0
  359. package/src/core/resource.ts +11 -0
  360. package/src/core/uploads.ts +2 -0
  361. package/src/error.ts +2 -130
  362. package/src/index.ts +6 -275
  363. package/src/internal/README.md +3 -0
  364. package/src/internal/builtin-types.ts +93 -0
  365. package/src/internal/detect-platform.ts +196 -0
  366. package/src/internal/errors.ts +33 -0
  367. package/src/internal/headers.ts +97 -0
  368. package/src/internal/parse.ts +56 -0
  369. package/src/internal/request-options.ts +91 -0
  370. package/src/internal/shim-types.ts +26 -0
  371. package/src/internal/shims.ts +107 -0
  372. package/src/internal/to-file.ts +156 -0
  373. package/src/internal/types.ts +95 -0
  374. package/src/internal/uploads.ts +187 -0
  375. package/src/internal/utils/base64.ts +40 -0
  376. package/src/internal/utils/bytes.ts +32 -0
  377. package/src/internal/utils/env.ts +18 -0
  378. package/src/internal/utils/log.ts +127 -0
  379. package/src/internal/utils/path.ts +88 -0
  380. package/src/internal/utils/sleep.ts +3 -0
  381. package/src/internal/utils/uuid.ts +17 -0
  382. package/src/internal/utils/values.ts +105 -0
  383. package/src/internal/utils.ts +8 -0
  384. package/src/lib/generate-signature.ts +2 -2
  385. package/src/resource.ts +2 -11
  386. package/src/resources/api-keys.ts +12 -9
  387. package/src/resources/conversation/chat.ts +60 -95
  388. package/src/resources/conversation/conversation.ts +1 -1
  389. package/src/resources/conversation/email.ts +13 -12
  390. package/src/resources/conversation/index.ts +5 -0
  391. package/src/resources/conversation/voice.ts +6 -4
  392. package/src/resources/customer/customer.ts +12 -16
  393. package/src/resources/customer/profile.ts +6 -8
  394. package/src/resources/customer/remote.ts +10 -8
  395. package/src/resources/index.ts +1 -1
  396. package/src/resources/ingest.ts +23 -17
  397. package/src/tsconfig.json +2 -2
  398. package/src/uploads.ts +2 -256
  399. package/src/version.ts +1 -1
  400. package/uploads.d.mts +2 -0
  401. package/uploads.d.mts.map +1 -0
  402. package/uploads.d.ts +1 -74
  403. package/uploads.d.ts.map +1 -1
  404. package/uploads.js +3 -167
  405. package/uploads.js.map +1 -1
  406. package/uploads.mjs +1 -156
  407. package/uploads.mjs.map +1 -1
  408. package/version.d.mts +2 -0
  409. package/version.d.mts.map +1 -0
  410. package/version.d.ts +1 -1
  411. package/version.js +1 -1
  412. package/version.mjs +1 -1
  413. package/_shims/MultipartBody.d.ts +0 -9
  414. package/_shims/MultipartBody.d.ts.map +0 -1
  415. package/_shims/MultipartBody.js +0 -16
  416. package/_shims/MultipartBody.js.map +0 -1
  417. package/_shims/MultipartBody.mjs +0 -12
  418. package/_shims/MultipartBody.mjs.map +0 -1
  419. package/_shims/README.md +0 -46
  420. package/_shims/auto/runtime-bun.d.ts +0 -5
  421. package/_shims/auto/runtime-bun.d.ts.map +0 -1
  422. package/_shims/auto/runtime-bun.js +0 -21
  423. package/_shims/auto/runtime-bun.js.map +0 -1
  424. package/_shims/auto/runtime-bun.mjs +0 -2
  425. package/_shims/auto/runtime-bun.mjs.map +0 -1
  426. package/_shims/auto/runtime-node.d.ts +0 -5
  427. package/_shims/auto/runtime-node.d.ts.map +0 -1
  428. package/_shims/auto/runtime-node.js +0 -21
  429. package/_shims/auto/runtime-node.js.map +0 -1
  430. package/_shims/auto/runtime-node.mjs +0 -2
  431. package/_shims/auto/runtime-node.mjs.map +0 -1
  432. package/_shims/auto/runtime.d.ts +0 -5
  433. package/_shims/auto/runtime.d.ts.map +0 -1
  434. package/_shims/auto/runtime.js +0 -21
  435. package/_shims/auto/runtime.js.map +0 -1
  436. package/_shims/auto/runtime.mjs +0 -2
  437. package/_shims/auto/runtime.mjs.map +0 -1
  438. package/_shims/auto/types-node.d.ts +0 -5
  439. package/_shims/auto/types-node.d.ts.map +0 -1
  440. package/_shims/auto/types-node.js +0 -21
  441. package/_shims/auto/types-node.js.map +0 -1
  442. package/_shims/auto/types-node.mjs +0 -2
  443. package/_shims/auto/types-node.mjs.map +0 -1
  444. package/_shims/auto/types.d.ts +0 -101
  445. package/_shims/auto/types.js +0 -3
  446. package/_shims/auto/types.mjs +0 -3
  447. package/_shims/bun-runtime.d.ts +0 -6
  448. package/_shims/bun-runtime.d.ts.map +0 -1
  449. package/_shims/bun-runtime.js +0 -13
  450. package/_shims/bun-runtime.js.map +0 -1
  451. package/_shims/bun-runtime.mjs +0 -10
  452. package/_shims/bun-runtime.mjs.map +0 -1
  453. package/_shims/index.d.ts +0 -83
  454. package/_shims/index.js +0 -17
  455. package/_shims/index.mjs +0 -11
  456. package/_shims/manual-types.d.ts +0 -12
  457. package/_shims/manual-types.js +0 -3
  458. package/_shims/manual-types.mjs +0 -3
  459. package/_shims/node-runtime.d.ts +0 -3
  460. package/_shims/node-runtime.d.ts.map +0 -1
  461. package/_shims/node-runtime.js +0 -88
  462. package/_shims/node-runtime.js.map +0 -1
  463. package/_shims/node-runtime.mjs +0 -56
  464. package/_shims/node-runtime.mjs.map +0 -1
  465. package/_shims/node-types.d.ts +0 -42
  466. package/_shims/node-types.js +0 -3
  467. package/_shims/node-types.mjs +0 -3
  468. package/_shims/registry.d.ts +0 -37
  469. package/_shims/registry.d.ts.map +0 -1
  470. package/_shims/registry.js +0 -41
  471. package/_shims/registry.js.map +0 -1
  472. package/_shims/registry.mjs +0 -37
  473. package/_shims/registry.mjs.map +0 -1
  474. package/_shims/web-runtime.d.ts +0 -5
  475. package/_shims/web-runtime.d.ts.map +0 -1
  476. package/_shims/web-runtime.js +0 -77
  477. package/_shims/web-runtime.js.map +0 -1
  478. package/_shims/web-runtime.mjs +0 -71
  479. package/_shims/web-runtime.mjs.map +0 -1
  480. package/_shims/web-types.d.ts +0 -83
  481. package/_shims/web-types.js +0 -3
  482. package/_shims/web-types.mjs +0 -3
  483. package/core.d.ts +0 -253
  484. package/core.d.ts.map +0 -1
  485. package/core.js +0 -929
  486. package/core.js.map +0 -1
  487. package/core.mjs +0 -897
  488. package/core.mjs.map +0 -1
  489. package/internal/qs/formats.d.ts +0 -6
  490. package/internal/qs/formats.d.ts.map +0 -1
  491. package/internal/qs/formats.js +0 -11
  492. package/internal/qs/formats.js.map +0 -1
  493. package/internal/qs/formats.mjs +0 -8
  494. package/internal/qs/formats.mjs.map +0 -1
  495. package/internal/qs/index.d.ts +0 -10
  496. package/internal/qs/index.d.ts.map +0 -1
  497. package/internal/qs/index.js +0 -14
  498. package/internal/qs/index.js.map +0 -1
  499. package/internal/qs/index.mjs +0 -10
  500. package/internal/qs/index.mjs.map +0 -1
  501. package/internal/qs/stringify.d.ts +0 -3
  502. package/internal/qs/stringify.d.ts.map +0 -1
  503. package/internal/qs/stringify.js +0 -279
  504. package/internal/qs/stringify.js.map +0 -1
  505. package/internal/qs/stringify.mjs +0 -276
  506. package/internal/qs/stringify.mjs.map +0 -1
  507. package/internal/qs/types.d.ts +0 -57
  508. package/internal/qs/types.d.ts.map +0 -1
  509. package/internal/qs/types.js +0 -3
  510. package/internal/qs/types.js.map +0 -1
  511. package/internal/qs/types.mjs +0 -2
  512. package/internal/qs/types.mjs.map +0 -1
  513. package/internal/qs/utils.d.ts +0 -14
  514. package/internal/qs/utils.d.ts.map +0 -1
  515. package/internal/qs/utils.js +0 -229
  516. package/internal/qs/utils.js.map +0 -1
  517. package/internal/qs/utils.mjs +0 -217
  518. package/internal/qs/utils.mjs.map +0 -1
  519. package/resources/ticket.d.ts +0 -14
  520. package/resources/ticket.d.ts.map +0 -1
  521. package/resources/ticket.js +0 -16
  522. package/resources/ticket.js.map +0 -1
  523. package/resources/ticket.mjs +0 -12
  524. package/resources/ticket.mjs.map +0 -1
  525. package/shims/node.d.ts +0 -26
  526. package/shims/node.d.ts.map +0 -1
  527. package/shims/node.js +0 -6
  528. package/shims/node.js.map +0 -1
  529. package/shims/node.mjs +0 -4
  530. package/shims/node.mjs.map +0 -1
  531. package/shims/web.d.ts +0 -26
  532. package/shims/web.d.ts.map +0 -1
  533. package/shims/web.js +0 -6
  534. package/shims/web.js.map +0 -1
  535. package/shims/web.mjs +0 -4
  536. package/shims/web.mjs.map +0 -1
  537. package/src/_shims/MultipartBody.ts +0 -9
  538. package/src/_shims/README.md +0 -46
  539. package/src/_shims/auto/runtime-bun.ts +0 -4
  540. package/src/_shims/auto/runtime-node.ts +0 -4
  541. package/src/_shims/auto/runtime.ts +0 -4
  542. package/src/_shims/auto/types-node.ts +0 -4
  543. package/src/_shims/auto/types.d.ts +0 -101
  544. package/src/_shims/auto/types.js +0 -3
  545. package/src/_shims/auto/types.mjs +0 -3
  546. package/src/_shims/bun-runtime.ts +0 -14
  547. package/src/_shims/index.d.ts +0 -83
  548. package/src/_shims/index.js +0 -17
  549. package/src/_shims/index.mjs +0 -11
  550. package/src/_shims/manual-types.d.ts +0 -12
  551. package/src/_shims/manual-types.js +0 -3
  552. package/src/_shims/manual-types.mjs +0 -3
  553. package/src/_shims/node-runtime.ts +0 -81
  554. package/src/_shims/node-types.d.ts +0 -42
  555. package/src/_shims/node-types.js +0 -3
  556. package/src/_shims/node-types.mjs +0 -3
  557. package/src/_shims/registry.ts +0 -67
  558. package/src/_shims/web-runtime.ts +0 -103
  559. package/src/_shims/web-types.d.ts +0 -83
  560. package/src/_shims/web-types.js +0 -3
  561. package/src/_shims/web-types.mjs +0 -3
  562. package/src/core.ts +0 -1242
  563. package/src/internal/qs/LICENSE.md +0 -13
  564. package/src/internal/qs/README.md +0 -3
  565. package/src/internal/qs/formats.ts +0 -9
  566. package/src/internal/qs/index.ts +0 -13
  567. package/src/internal/qs/stringify.ts +0 -388
  568. package/src/internal/qs/types.ts +0 -71
  569. package/src/internal/qs/utils.ts +0 -265
  570. package/src/resources/ticket.ts +0 -30
  571. package/src/shims/node.ts +0 -50
  572. package/src/shims/web.ts +0 -50
@@ -0,0 +1,127 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ import { hasOwn } from './values';
4
+ import { type Lorikeet } from '../../client';
5
+ import { RequestOptions } from '../request-options';
6
+
7
+ type LogFn = (message: string, ...rest: unknown[]) => void;
8
+ export type Logger = {
9
+ error: LogFn;
10
+ warn: LogFn;
11
+ info: LogFn;
12
+ debug: LogFn;
13
+ };
14
+ export type LogLevel = 'off' | 'error' | 'warn' | 'info' | 'debug';
15
+
16
+ const levelNumbers = {
17
+ off: 0,
18
+ error: 200,
19
+ warn: 300,
20
+ info: 400,
21
+ debug: 500,
22
+ };
23
+
24
+ export const parseLogLevel = (
25
+ maybeLevel: string | undefined,
26
+ sourceName: string,
27
+ client: Lorikeet,
28
+ ): LogLevel | undefined => {
29
+ if (!maybeLevel) {
30
+ return undefined;
31
+ }
32
+ if (hasOwn(levelNumbers, maybeLevel)) {
33
+ return maybeLevel;
34
+ }
35
+ loggerFor(client).warn(
36
+ `${sourceName} was set to ${JSON.stringify(maybeLevel)}, expected one of ${JSON.stringify(
37
+ Object.keys(levelNumbers),
38
+ )}`,
39
+ );
40
+ return undefined;
41
+ };
42
+
43
+ function noop() {}
44
+
45
+ function makeLogFn(fnLevel: keyof Logger, logger: Logger | undefined, logLevel: LogLevel) {
46
+ if (!logger || levelNumbers[fnLevel] > levelNumbers[logLevel]) {
47
+ return noop;
48
+ } else {
49
+ // Don't wrap logger functions, we want the stacktrace intact!
50
+ return logger[fnLevel].bind(logger);
51
+ }
52
+ }
53
+
54
+ const noopLogger = {
55
+ error: noop,
56
+ warn: noop,
57
+ info: noop,
58
+ debug: noop,
59
+ };
60
+
61
+ let cachedLoggers = /* @__PURE__ */ new WeakMap<Logger, [LogLevel, Logger]>();
62
+
63
+ export function loggerFor(client: Lorikeet): Logger {
64
+ const logger = client.logger;
65
+ const logLevel = client.logLevel ?? 'off';
66
+ if (!logger) {
67
+ return noopLogger;
68
+ }
69
+
70
+ const cachedLogger = cachedLoggers.get(logger);
71
+ if (cachedLogger && cachedLogger[0] === logLevel) {
72
+ return cachedLogger[1];
73
+ }
74
+
75
+ const levelLogger = {
76
+ error: makeLogFn('error', logger, logLevel),
77
+ warn: makeLogFn('warn', logger, logLevel),
78
+ info: makeLogFn('info', logger, logLevel),
79
+ debug: makeLogFn('debug', logger, logLevel),
80
+ };
81
+
82
+ cachedLoggers.set(logger, [logLevel, levelLogger]);
83
+
84
+ return levelLogger;
85
+ }
86
+
87
+ export const formatRequestDetails = (details: {
88
+ options?: RequestOptions | undefined;
89
+ headers?: Headers | Record<string, string> | undefined;
90
+ retryOfRequestLogID?: string | undefined;
91
+ retryOf?: string | undefined;
92
+ url?: string | undefined;
93
+ status?: number | undefined;
94
+ method?: string | undefined;
95
+ durationMs?: number | undefined;
96
+ message?: unknown;
97
+ body?: unknown;
98
+ }) => {
99
+ if (details.options) {
100
+ details.options = { ...details.options };
101
+ delete details.options['headers']; // redundant + leaks internals
102
+ }
103
+ if (details.headers) {
104
+ details.headers = Object.fromEntries(
105
+ (details.headers instanceof Headers ? [...details.headers] : Object.entries(details.headers)).map(
106
+ ([name, value]) => [
107
+ name,
108
+ (
109
+ name.toLowerCase() === 'authorization' ||
110
+ name.toLowerCase() === 'x-lorikeet-signature' ||
111
+ name.toLowerCase() === 'cookie' ||
112
+ name.toLowerCase() === 'set-cookie'
113
+ ) ?
114
+ '***'
115
+ : value,
116
+ ],
117
+ ),
118
+ );
119
+ }
120
+ if ('retryOfRequestLogID' in details) {
121
+ if (details.retryOfRequestLogID) {
122
+ details.retryOf = details.retryOfRequestLogID;
123
+ }
124
+ delete details.retryOfRequestLogID;
125
+ }
126
+ return details;
127
+ };
@@ -0,0 +1,88 @@
1
+ import { LorikeetError } from '../../core/error';
2
+
3
+ /**
4
+ * Percent-encode everything that isn't safe to have in a path without encoding safe chars.
5
+ *
6
+ * Taken from https://datatracker.ietf.org/doc/html/rfc3986#section-3.3:
7
+ * > unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
8
+ * > sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="
9
+ * > pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
10
+ */
11
+ export function encodeURIPath(str: string) {
12
+ return str.replace(/[^A-Za-z0-9\-._~!$&'()*+,;=:@]+/g, encodeURIComponent);
13
+ }
14
+
15
+ const EMPTY = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.create(null));
16
+
17
+ export const createPathTagFunction = (pathEncoder = encodeURIPath) =>
18
+ function path(statics: readonly string[], ...params: readonly unknown[]): string {
19
+ // If there are no params, no processing is needed.
20
+ if (statics.length === 1) return statics[0]!;
21
+
22
+ let postPath = false;
23
+ const invalidSegments = [];
24
+ const path = statics.reduce((previousValue, currentValue, index) => {
25
+ if (/[?#]/.test(currentValue)) {
26
+ postPath = true;
27
+ }
28
+ const value = params[index];
29
+ let encoded = (postPath ? encodeURIComponent : pathEncoder)('' + value);
30
+ if (
31
+ index !== params.length &&
32
+ (value == null ||
33
+ (typeof value === 'object' &&
34
+ // handle values from other realms
35
+ value.toString ===
36
+ Object.getPrototypeOf(Object.getPrototypeOf((value as any).hasOwnProperty ?? EMPTY) ?? EMPTY)
37
+ ?.toString))
38
+ ) {
39
+ encoded = value + '';
40
+ invalidSegments.push({
41
+ start: previousValue.length + currentValue.length,
42
+ length: encoded.length,
43
+ error: `Value of type ${Object.prototype.toString
44
+ .call(value)
45
+ .slice(8, -1)} is not a valid path parameter`,
46
+ });
47
+ }
48
+ return previousValue + currentValue + (index === params.length ? '' : encoded);
49
+ }, '');
50
+
51
+ const pathOnly = path.split(/[?#]/, 1)[0]!;
52
+ const invalidSegmentPattern = /(?<=^|\/)(?:\.|%2e){1,2}(?=\/|$)/gi;
53
+ let match;
54
+
55
+ // Find all invalid segments
56
+ while ((match = invalidSegmentPattern.exec(pathOnly)) !== null) {
57
+ invalidSegments.push({
58
+ start: match.index,
59
+ length: match[0].length,
60
+ error: `Value "${match[0]}" can\'t be safely passed as a path parameter`,
61
+ });
62
+ }
63
+
64
+ invalidSegments.sort((a, b) => a.start - b.start);
65
+
66
+ if (invalidSegments.length > 0) {
67
+ let lastEnd = 0;
68
+ const underline = invalidSegments.reduce((acc, segment) => {
69
+ const spaces = ' '.repeat(segment.start - lastEnd);
70
+ const arrows = '^'.repeat(segment.length);
71
+ lastEnd = segment.start + segment.length;
72
+ return acc + spaces + arrows;
73
+ }, '');
74
+
75
+ throw new LorikeetError(
76
+ `Path parameters result in path with invalid segments:\n${invalidSegments
77
+ .map((e) => e.error)
78
+ .join('\n')}\n${path}\n${underline}`,
79
+ );
80
+ }
81
+
82
+ return path;
83
+ };
84
+
85
+ /**
86
+ * URI-encodes path params and ensures no unsafe /./ or /../ path segments are introduced.
87
+ */
88
+ export const path = /* @__PURE__ */ createPathTagFunction(encodeURIPath);
@@ -0,0 +1,3 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ export const sleep = (ms: number) => new Promise<void>((resolve) => setTimeout(resolve, ms));
@@ -0,0 +1,17 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ /**
4
+ * https://stackoverflow.com/a/2117523
5
+ */
6
+ export let uuid4 = function () {
7
+ const { crypto } = globalThis as any;
8
+ if (crypto?.randomUUID) {
9
+ uuid4 = crypto.randomUUID.bind(crypto);
10
+ return crypto.randomUUID();
11
+ }
12
+ const u8 = new Uint8Array(1);
13
+ const randomByte = crypto ? () => crypto.getRandomValues(u8)[0]! : () => (Math.random() * 0xff) & 0xff;
14
+ return '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, (c) =>
15
+ (+c ^ (randomByte() & (15 >> (+c / 4)))).toString(16),
16
+ );
17
+ };
@@ -0,0 +1,105 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ import { LorikeetError } from '../../core/error';
4
+
5
+ // https://url.spec.whatwg.org/#url-scheme-string
6
+ const startsWithSchemeRegexp = /^[a-z][a-z0-9+.-]*:/i;
7
+
8
+ export const isAbsoluteURL = (url: string): boolean => {
9
+ return startsWithSchemeRegexp.test(url);
10
+ };
11
+
12
+ export let isArray = (val: unknown): val is unknown[] => ((isArray = Array.isArray), isArray(val));
13
+ export let isReadonlyArray = isArray as (val: unknown) => val is readonly unknown[];
14
+
15
+ /** Returns an object if the given value isn't an object, otherwise returns as-is */
16
+ export function maybeObj(x: unknown): object {
17
+ if (typeof x !== 'object') {
18
+ return {};
19
+ }
20
+
21
+ return x ?? {};
22
+ }
23
+
24
+ // https://stackoverflow.com/a/34491287
25
+ export function isEmptyObj(obj: Object | null | undefined): boolean {
26
+ if (!obj) return true;
27
+ for (const _k in obj) return false;
28
+ return true;
29
+ }
30
+
31
+ // https://eslint.org/docs/latest/rules/no-prototype-builtins
32
+ export function hasOwn<T extends object = object>(obj: T, key: PropertyKey): key is keyof T {
33
+ return Object.prototype.hasOwnProperty.call(obj, key);
34
+ }
35
+
36
+ export function isObj(obj: unknown): obj is Record<string, unknown> {
37
+ return obj != null && typeof obj === 'object' && !Array.isArray(obj);
38
+ }
39
+
40
+ export const ensurePresent = <T>(value: T | null | undefined): T => {
41
+ if (value == null) {
42
+ throw new LorikeetError(`Expected a value to be given but received ${value} instead.`);
43
+ }
44
+
45
+ return value;
46
+ };
47
+
48
+ export const validatePositiveInteger = (name: string, n: unknown): number => {
49
+ if (typeof n !== 'number' || !Number.isInteger(n)) {
50
+ throw new LorikeetError(`${name} must be an integer`);
51
+ }
52
+ if (n < 0) {
53
+ throw new LorikeetError(`${name} must be a positive integer`);
54
+ }
55
+ return n;
56
+ };
57
+
58
+ export const coerceInteger = (value: unknown): number => {
59
+ if (typeof value === 'number') return Math.round(value);
60
+ if (typeof value === 'string') return parseInt(value, 10);
61
+
62
+ throw new LorikeetError(`Could not coerce ${value} (type: ${typeof value}) into a number`);
63
+ };
64
+
65
+ export const coerceFloat = (value: unknown): number => {
66
+ if (typeof value === 'number') return value;
67
+ if (typeof value === 'string') return parseFloat(value);
68
+
69
+ throw new LorikeetError(`Could not coerce ${value} (type: ${typeof value}) into a number`);
70
+ };
71
+
72
+ export const coerceBoolean = (value: unknown): boolean => {
73
+ if (typeof value === 'boolean') return value;
74
+ if (typeof value === 'string') return value === 'true';
75
+ return Boolean(value);
76
+ };
77
+
78
+ export const maybeCoerceInteger = (value: unknown): number | undefined => {
79
+ if (value == null) {
80
+ return undefined;
81
+ }
82
+ return coerceInteger(value);
83
+ };
84
+
85
+ export const maybeCoerceFloat = (value: unknown): number | undefined => {
86
+ if (value == null) {
87
+ return undefined;
88
+ }
89
+ return coerceFloat(value);
90
+ };
91
+
92
+ export const maybeCoerceBoolean = (value: unknown): boolean | undefined => {
93
+ if (value == null) {
94
+ return undefined;
95
+ }
96
+ return coerceBoolean(value);
97
+ };
98
+
99
+ export const safeJSON = (text: string) => {
100
+ try {
101
+ return JSON.parse(text);
102
+ } catch (err) {
103
+ return undefined;
104
+ }
105
+ };
@@ -0,0 +1,8 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ export * from './utils/values';
4
+ export * from './utils/base64';
5
+ export * from './utils/env';
6
+ export * from './utils/log';
7
+ export * from './utils/uuid';
8
+ export * from './utils/sleep';
@@ -1,11 +1,11 @@
1
- import { createHmac } from 'crypto';
1
+ import { createHmac } from 'node:crypto';
2
2
 
3
3
  /**
4
4
  * Generate a signature for a given payload using a secret key.
5
5
  *
6
6
  * @param payload - The payload to sign - If no payload is provided, the signature will be generated for an empty string.
7
7
  */
8
- export function generateSignature(payload: Buffer | string | undefined, secret: string) {
8
+ export function generateSignature(payload: Buffer | Uint8Array | string | undefined, secret: string) {
9
9
  if (!payload) {
10
10
  return createHmac('sha256', secret).digest('base64').replace(/\+/g, '-').replace(/\//g, '_');
11
11
  }
package/src/resource.ts CHANGED
@@ -1,11 +1,2 @@
1
- // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
-
3
- import type { Lorikeet } from './index';
4
-
5
- export abstract class APIResource {
6
- protected _client: Lorikeet;
7
-
8
- constructor(client: Lorikeet) {
9
- this._client = client;
10
- }
11
- }
1
+ /** @deprecated Import from ./core/resource instead */
2
+ export * from './core/resource';
@@ -1,7 +1,10 @@
1
1
  // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
- import { APIResource } from '../resource';
4
- import * as Core from '../core';
3
+ import { APIResource } from '../core/resource';
4
+ import { APIPromise } from '../core/api-promise';
5
+ import { buildHeaders } from '../internal/headers';
6
+ import { RequestOptions } from '../internal/request-options';
7
+ import { path } from '../internal/utils/path';
5
8
 
6
9
  export class APIKeys extends APIResource {
7
10
  /**
@@ -13,7 +16,7 @@ export class APIKeys extends APIResource {
13
16
  * const apiKey = await client.apiKeys.create();
14
17
  * ```
15
18
  */
16
- create(body: APIKeyCreateParams, options?: Core.RequestOptions): Core.APIPromise<APIKeyCreateResponse> {
19
+ create(body: APIKeyCreateParams, options?: RequestOptions): APIPromise<APIKeyCreateResponse> {
17
20
  return this._client.post('/v1/api-keys', { body, ...options });
18
21
  }
19
22
 
@@ -25,7 +28,7 @@ export class APIKeys extends APIResource {
25
28
  * const apiKeys = await client.apiKeys.list();
26
29
  * ```
27
30
  */
28
- list(options?: Core.RequestOptions): Core.APIPromise<APIKeyListResponse> {
31
+ list(options?: RequestOptions): APIPromise<APIKeyListResponse> {
29
32
  return this._client.get('/v1/api-keys', options);
30
33
  }
31
34
 
@@ -39,10 +42,10 @@ export class APIKeys extends APIResource {
39
42
  * );
40
43
  * ```
41
44
  */
42
- delete(id: string, options?: Core.RequestOptions): Core.APIPromise<void> {
43
- return this._client.delete(`/v1/api-keys/${id}`, {
45
+ delete(id: string, options?: RequestOptions): APIPromise<void> {
46
+ return this._client.delete(path`/v1/api-keys/${id}`, {
44
47
  ...options,
45
- headers: { Accept: '*/*', ...options?.headers },
48
+ headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),
46
49
  });
47
50
  }
48
51
 
@@ -56,8 +59,8 @@ export class APIKeys extends APIResource {
56
59
  * );
57
60
  * ```
58
61
  */
59
- get(id: string, options?: Core.RequestOptions): Core.APIPromise<APIKeyGetResponse> {
60
- return this._client.get(`/v1/api-keys/${id}`, options);
62
+ get(id: string, options?: RequestOptions): APIPromise<APIKeyGetResponse> {
63
+ return this._client.get(path`/v1/api-keys/${id}`, options);
61
64
  }
62
65
  }
63
66
 
@@ -1,28 +1,14 @@
1
1
  // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
- import { APIResource } from '../../resource';
4
- import * as Core from '../../core';
5
- import { pollUntil } from "../../lib/poll-until";
3
+ import { APIResource } from '../../core/resource';
6
4
  import * as ConversationAPI from './conversation';
5
+ import { APIPromise } from '../../core/api-promise';
6
+ import { RequestOptions } from '../../internal/request-options';
7
+ import { pollUntil } from '../../lib/poll-until';
8
+ import { DeferredAsyncIterable } from '../../lib/promise';
7
9
  import { EventSource } from 'eventsource';
8
- import { DeferredAsyncIterable } from "../../lib/promise";
9
10
 
10
11
  export class Chat extends APIResource {
11
- /**
12
- * __chat.generate__
13
- *
14
- * Generate a chat message for a conversation. This endpoint will return immediately, polling will be required to get the response.
15
- *
16
- * The `latestMessageType` field in the response can be used to determine if the response is ready.
17
- *
18
- * If the `latestMessageType` is `BOT_RESPONSE`, the response is ready.
19
- * For a more ergonomic way to poll, use the `message` method.
20
- *
21
- * ** WARNING ** This endpoint is not idempotent. If you call it multiple times, you will generate multiple messages.
22
- *
23
- * @see {@link Chat.message}
24
- */
25
-
26
12
  /**
27
13
  * @example
28
14
  * ```ts
@@ -39,16 +25,10 @@ export class Chat extends APIResource {
39
25
  * });
40
26
  * ```
41
27
  */
42
- generate(body: ChatGenerateParams, options?: Core.RequestOptions): Core.APIPromise<ChatGenerateResponse> {
28
+ generate(body: ChatGenerateParams, options?: RequestOptions): APIPromise<ChatGenerateResponse> {
43
29
  return this._client.post('/v1/conversation/chat/message', { body, ...options });
44
30
  }
45
31
 
46
- /**
47
- * __chat.get__
48
- *
49
- * Returns a chat message for a conversation. This endpoint will return the latest state of the conversation.
50
- */
51
-
52
32
  /**
53
33
  * @example
54
34
  * ```ts
@@ -57,20 +37,10 @@ export class Chat extends APIResource {
57
37
  * });
58
38
  * ```
59
39
  */
60
- get(query: ChatGetParams, options?: Core.RequestOptions): Core.APIPromise<ChatGetResponse> {
40
+ get(query: ChatGetParams, options?: RequestOptions): APIPromise<ChatGetResponse> {
61
41
  return this._client.get('/v1/conversation/chat/message', { query, ...options });
62
42
  }
63
43
 
64
- /**
65
- * __chat.start__
66
- *
67
- * Start a chat conversation. This endpoint will return immediately.
68
- *
69
- * The `conversationId` field in the response can be used to generate messages.
70
- *
71
- * ** WARNING ** This endpoint is not idempotent. If you call it multiple times, you will generate multiple conversations.
72
- */
73
-
74
44
  /**
75
45
  * @example
76
46
  * ```ts
@@ -80,36 +50,34 @@ export class Chat extends APIResource {
80
50
  * });
81
51
  * ```
82
52
  */
83
- start(body: ChatStartParams, options?: Core.RequestOptions): Core.APIPromise<ChatStartResponse> {
53
+ start(body: ChatStartParams, options?: RequestOptions): APIPromise<ChatStartResponse> {
84
54
  return this._client.post('/v1/conversation/chat/create', { body, ...options });
85
55
  }
86
56
 
87
57
  /**
88
- * Returns a chat message for a conversation. This endpoint will poll until a response is ready.
58
+ * Send a message and poll until a response is ready.
89
59
  *
90
- * When it return the response is the latest message type that is of type `BOT_RESPONSE`.
91
- *
92
- * @see {@link Chat.poll}
60
+ * This is a convenience wrapper that calls {@link Chat.generate} then {@link Chat.poll}.
93
61
  */
94
- message(body: ChatGenerateParams, options?: Core.RequestOptions): Core.APIPromise<ChatGetResponse> {
62
+ message(body: ChatGenerateParams, options?: RequestOptions): APIPromise<ChatGetResponse> {
95
63
  return this.generate(body, options).then((response) =>
96
64
  this.poll({ conversationId: response.conversationId }, options),
97
- ) as Core.APIPromise<ChatGetResponse>;
65
+ ) as APIPromise<ChatGetResponse>;
98
66
  }
99
67
 
100
68
  /**
101
- * __chat.poll__
69
+ * Poll until the conversation has a bot response ready.
102
70
  *
103
- * Polls until it returns a BOT chat message for a conversation.
71
+ * Stops when `latestMessageType` is `BOT_RESPONSE` or `PENDING_RESPONSE`,
72
+ * or when `status` is `Escalated` or `Error`.
104
73
  */
105
- poll(query: ChatGetParams, options?: Core.RequestOptions): Core.APIPromise<ChatGetResponse> {
74
+ poll(query: ChatGetParams, options?: RequestOptions): APIPromise<ChatGetResponse> {
106
75
  return pollUntil<ChatGetResponse>(
107
76
  () => this._client.get('/v1/conversation/chat/message', { query, ...options }),
108
77
  {
109
78
  timeout: options?.timeout || 180_000,
110
79
  interval: 2_000,
111
80
  condition: (conversation) => {
112
- // Don't poll if the conversation is escalated or in error
113
81
  if (conversation.status === 'Escalated' || conversation.status === 'Error') {
114
82
  return true;
115
83
  }
@@ -124,23 +92,18 @@ export class Chat extends APIResource {
124
92
  return false;
125
93
  },
126
94
  },
127
- ) as Core.APIPromise<ChatGetResponse>;
95
+ ) as APIPromise<ChatGetResponse>;
128
96
  }
129
97
 
130
98
  /**
131
- * __chat.streamUpdates__
132
- *
133
99
  * Create a persistent stream of updates for a conversation.
134
- * Responses from the bot will arrive as events. Consuming clients must aggregate multiple chunks
135
- * into a single message based on the messageId field. Note that new messages may arrive without
136
- * new user messages, this update stream is open indefinitely and does not automatically close - avoid
100
+ *
101
+ * Responses from the bot will arrive as events. Consuming clients must aggregate
102
+ * multiple chunks into a single message based on the `messageId` field.
103
+ *
104
+ * This stream is open indefinitely and does not automatically close — avoid
137
105
  * blocking other operations while listening to events from this generator.
138
106
  *
139
- * @param params.conversationId - Conversation/ticket ID to subscribe to.
140
- * @returns AsyncGenerator<ChatStreamEvent> a generator that emits response events as they arrive.
141
- */
142
-
143
- /**
144
107
  * @example
145
108
  * ```ts
146
109
  * for await (const evt of client.conversation.chat.streamUpdates({ conversationId: 'abc123' })) {
@@ -152,7 +115,7 @@ export class Chat extends APIResource {
152
115
  const queries = new URLSearchParams();
153
116
  queries.set('sseMessageTypes', 'new-message,message-chunk,message-complete');
154
117
  queries.set('ticketMessageTypes', 'BOT_RESPONSE');
155
- const url = `/v1/ticket/sse/${params.conversationId}?${queries.toString()}`;
118
+ const url = `${this._client.baseURL}/v1/ticket/sse/${params.conversationId}?${queries.toString()}`;
156
119
  const eventSource = new EventSource(url);
157
120
  const output = new DeferredAsyncIterable<ChatStreamEvent>();
158
121
 
@@ -193,41 +156,6 @@ export class Chat extends APIResource {
193
156
  }
194
157
  }
195
158
 
196
- /**
197
- * Signal that a new response message has been created and new chunks
198
- * for this response for the messageId will follow.
199
- */
200
- export interface ChatStreamNewMessageEvent {
201
- type: 'new-message';
202
- // ISO 8601 timestamp of when the message was created
203
- createdAt: string;
204
- messageId: string;
205
- // The initial content of the message, likely empty until the first chunk arrives
206
- content: string;
207
- }
208
-
209
- /**
210
- * A chunk of text response for the message with the given messageId.
211
- */
212
- export interface ChatStreamMessageChunkEvent {
213
- type: 'message-chunk';
214
- contentDelta: string;
215
- messageId: string;
216
- }
217
-
218
- /**
219
- * All chunks for a message have been received and no more chunks will follow for this message.
220
- */
221
- export interface ChatStreamMessageCompleteEvent {
222
- type: 'message-complete';
223
- messageId: string;
224
- }
225
-
226
- export type ChatStreamEvent =
227
- | ChatStreamNewMessageEvent
228
- | ChatStreamMessageChunkEvent
229
- | ChatStreamMessageCompleteEvent;
230
-
231
159
  export interface ChatGenerateResponse {
232
160
  /**
233
161
  * The ID of the conversation
@@ -480,6 +408,39 @@ export interface ChatStreamParams {
480
408
  conversationId: string;
481
409
  }
482
410
 
411
+ /**
412
+ * Signal that a new response message has been created and new chunks
413
+ * for this response for the messageId will follow.
414
+ */
415
+ export interface ChatStreamNewMessageEvent {
416
+ type: 'new-message';
417
+ createdAt: string;
418
+ messageId: string;
419
+ content: string;
420
+ }
421
+
422
+ /**
423
+ * A chunk of text response for the message with the given messageId.
424
+ */
425
+ export interface ChatStreamMessageChunkEvent {
426
+ type: 'message-chunk';
427
+ contentDelta: string;
428
+ messageId: string;
429
+ }
430
+
431
+ /**
432
+ * All chunks for a message have been received and no more chunks will follow for this message.
433
+ */
434
+ export interface ChatStreamMessageCompleteEvent {
435
+ type: 'message-complete';
436
+ messageId: string;
437
+ }
438
+
439
+ export type ChatStreamEvent =
440
+ | ChatStreamNewMessageEvent
441
+ | ChatStreamMessageChunkEvent
442
+ | ChatStreamMessageCompleteEvent;
443
+
483
444
  export declare namespace Chat {
484
445
  export {
485
446
  type ChatGenerateResponse as ChatGenerateResponse,
@@ -489,5 +450,9 @@ export declare namespace Chat {
489
450
  type ChatGetParams as ChatGetParams,
490
451
  type ChatStartParams as ChatStartParams,
491
452
  type ChatStreamParams as ChatStreamParams,
453
+ type ChatStreamEvent as ChatStreamEvent,
454
+ type ChatStreamNewMessageEvent as ChatStreamNewMessageEvent,
455
+ type ChatStreamMessageChunkEvent as ChatStreamMessageChunkEvent,
456
+ type ChatStreamMessageCompleteEvent as ChatStreamMessageCompleteEvent,
492
457
  };
493
458
  }