@tambo-ai/typescript-sdk 0.31.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 (291) hide show
  1. package/CHANGELOG.md +389 -0
  2. package/LICENSE +201 -0
  3. package/README.md +434 -0
  4. package/_shims/MultipartBody.d.ts +9 -0
  5. package/_shims/MultipartBody.d.ts.map +1 -0
  6. package/_shims/MultipartBody.js +16 -0
  7. package/_shims/MultipartBody.js.map +1 -0
  8. package/_shims/MultipartBody.mjs +12 -0
  9. package/_shims/MultipartBody.mjs.map +1 -0
  10. package/_shims/README.md +46 -0
  11. package/_shims/auto/runtime-bun.d.ts +5 -0
  12. package/_shims/auto/runtime-bun.d.ts.map +1 -0
  13. package/_shims/auto/runtime-bun.js +21 -0
  14. package/_shims/auto/runtime-bun.js.map +1 -0
  15. package/_shims/auto/runtime-bun.mjs +2 -0
  16. package/_shims/auto/runtime-bun.mjs.map +1 -0
  17. package/_shims/auto/runtime-node.d.ts +5 -0
  18. package/_shims/auto/runtime-node.d.ts.map +1 -0
  19. package/_shims/auto/runtime-node.js +21 -0
  20. package/_shims/auto/runtime-node.js.map +1 -0
  21. package/_shims/auto/runtime-node.mjs +2 -0
  22. package/_shims/auto/runtime-node.mjs.map +1 -0
  23. package/_shims/auto/runtime.d.ts +5 -0
  24. package/_shims/auto/runtime.d.ts.map +1 -0
  25. package/_shims/auto/runtime.js +21 -0
  26. package/_shims/auto/runtime.js.map +1 -0
  27. package/_shims/auto/runtime.mjs +2 -0
  28. package/_shims/auto/runtime.mjs.map +1 -0
  29. package/_shims/auto/types-node.d.ts +5 -0
  30. package/_shims/auto/types-node.d.ts.map +1 -0
  31. package/_shims/auto/types-node.js +21 -0
  32. package/_shims/auto/types-node.js.map +1 -0
  33. package/_shims/auto/types-node.mjs +2 -0
  34. package/_shims/auto/types-node.mjs.map +1 -0
  35. package/_shims/auto/types.d.ts +101 -0
  36. package/_shims/auto/types.js +3 -0
  37. package/_shims/auto/types.mjs +3 -0
  38. package/_shims/bun-runtime.d.ts +6 -0
  39. package/_shims/bun-runtime.d.ts.map +1 -0
  40. package/_shims/bun-runtime.js +14 -0
  41. package/_shims/bun-runtime.js.map +1 -0
  42. package/_shims/bun-runtime.mjs +10 -0
  43. package/_shims/bun-runtime.mjs.map +1 -0
  44. package/_shims/index.d.ts +81 -0
  45. package/_shims/index.js +13 -0
  46. package/_shims/index.mjs +7 -0
  47. package/_shims/manual-types.d.ts +12 -0
  48. package/_shims/manual-types.js +3 -0
  49. package/_shims/manual-types.mjs +3 -0
  50. package/_shims/node-runtime.d.ts +3 -0
  51. package/_shims/node-runtime.d.ts.map +1 -0
  52. package/_shims/node-runtime.js +89 -0
  53. package/_shims/node-runtime.js.map +1 -0
  54. package/_shims/node-runtime.mjs +56 -0
  55. package/_shims/node-runtime.mjs.map +1 -0
  56. package/_shims/node-types.d.ts +42 -0
  57. package/_shims/node-types.js +3 -0
  58. package/_shims/node-types.mjs +3 -0
  59. package/_shims/registry.d.ts +37 -0
  60. package/_shims/registry.d.ts.map +1 -0
  61. package/_shims/registry.js +41 -0
  62. package/_shims/registry.js.map +1 -0
  63. package/_shims/registry.mjs +37 -0
  64. package/_shims/registry.mjs.map +1 -0
  65. package/_shims/web-runtime.d.ts +5 -0
  66. package/_shims/web-runtime.d.ts.map +1 -0
  67. package/_shims/web-runtime.js +78 -0
  68. package/_shims/web-runtime.js.map +1 -0
  69. package/_shims/web-runtime.mjs +71 -0
  70. package/_shims/web-runtime.mjs.map +1 -0
  71. package/_shims/web-types.d.ts +83 -0
  72. package/_shims/web-types.js +3 -0
  73. package/_shims/web-types.mjs +3 -0
  74. package/core.d.ts +241 -0
  75. package/core.d.ts.map +1 -0
  76. package/core.js +914 -0
  77. package/core.js.map +1 -0
  78. package/core.mjs +882 -0
  79. package/core.mjs.map +1 -0
  80. package/error.d.ts +47 -0
  81. package/error.d.ts.map +1 -0
  82. package/error.js +113 -0
  83. package/error.js.map +1 -0
  84. package/error.mjs +97 -0
  85. package/error.mjs.map +1 -0
  86. package/index.d.mts +124 -0
  87. package/index.d.ts +124 -0
  88. package/index.d.ts.map +1 -0
  89. package/index.js +140 -0
  90. package/index.js.map +1 -0
  91. package/index.mjs +94 -0
  92. package/index.mjs.map +1 -0
  93. package/lib/advance-stream.d.ts +5 -0
  94. package/lib/advance-stream.d.ts.map +1 -0
  95. package/lib/advance-stream.js +35 -0
  96. package/lib/advance-stream.js.map +1 -0
  97. package/lib/advance-stream.mjs +31 -0
  98. package/lib/advance-stream.mjs.map +1 -0
  99. package/lib/streaming-components.d.ts +7 -0
  100. package/lib/streaming-components.d.ts.map +1 -0
  101. package/lib/streaming-components.js +48 -0
  102. package/lib/streaming-components.js.map +1 -0
  103. package/lib/streaming-components.mjs +43 -0
  104. package/lib/streaming-components.mjs.map +1 -0
  105. package/package.json +122 -0
  106. package/pagination.d.ts +20 -0
  107. package/pagination.d.ts.map +1 -0
  108. package/pagination.js +46 -0
  109. package/pagination.js.map +1 -0
  110. package/pagination.mjs +42 -0
  111. package/pagination.mjs.map +1 -0
  112. package/resource.d.ts +6 -0
  113. package/resource.d.ts.map +1 -0
  114. package/resource.js +11 -0
  115. package/resource.js.map +1 -0
  116. package/resource.mjs +7 -0
  117. package/resource.mjs.map +1 -0
  118. package/resources/beta/beta.d.ts +22 -0
  119. package/resources/beta/beta.d.ts.map +1 -0
  120. package/resources/beta/beta.js +52 -0
  121. package/resources/beta/beta.js.map +1 -0
  122. package/resources/beta/beta.mjs +25 -0
  123. package/resources/beta/beta.mjs.map +1 -0
  124. package/resources/beta/components.d.ts +44 -0
  125. package/resources/beta/components.d.ts.map +1 -0
  126. package/resources/beta/components.js +29 -0
  127. package/resources/beta/components.js.map +1 -0
  128. package/resources/beta/components.mjs +25 -0
  129. package/resources/beta/components.mjs.map +1 -0
  130. package/resources/beta/index.d.ts +6 -0
  131. package/resources/beta/index.d.ts.map +1 -0
  132. package/resources/beta/index.js +16 -0
  133. package/resources/beta/index.js.map +1 -0
  134. package/resources/beta/index.mjs +7 -0
  135. package/resources/beta/index.mjs.map +1 -0
  136. package/resources/beta/projects/api-key.d.ts +24 -0
  137. package/resources/beta/projects/api-key.d.ts.map +1 -0
  138. package/resources/beta/projects/api-key.js +18 -0
  139. package/resources/beta/projects/api-key.js.map +1 -0
  140. package/resources/beta/projects/api-key.mjs +14 -0
  141. package/resources/beta/projects/api-key.mjs.map +1 -0
  142. package/resources/beta/projects/index.d.ts +5 -0
  143. package/resources/beta/projects/index.d.ts.map +1 -0
  144. package/resources/beta/projects/index.js +13 -0
  145. package/resources/beta/projects/index.js.map +1 -0
  146. package/resources/beta/projects/index.mjs +6 -0
  147. package/resources/beta/projects/index.mjs.map +1 -0
  148. package/resources/beta/projects/projects.d.ts +52 -0
  149. package/resources/beta/projects/projects.d.ts.map +1 -0
  150. package/resources/beta/projects/projects.js +62 -0
  151. package/resources/beta/projects/projects.js.map +1 -0
  152. package/resources/beta/projects/projects.mjs +35 -0
  153. package/resources/beta/projects/projects.mjs.map +1 -0
  154. package/resources/beta/projects/provider-key.d.ts +34 -0
  155. package/resources/beta/projects/provider-key.d.ts.map +1 -0
  156. package/resources/beta/projects/provider-key.js +18 -0
  157. package/resources/beta/projects/provider-key.js.map +1 -0
  158. package/resources/beta/projects/provider-key.mjs +14 -0
  159. package/resources/beta/projects/provider-key.mjs.map +1 -0
  160. package/resources/beta/projects/user.d.ts +17 -0
  161. package/resources/beta/projects/user.d.ts.map +1 -0
  162. package/resources/beta/projects/user.js +12 -0
  163. package/resources/beta/projects/user.js.map +1 -0
  164. package/resources/beta/projects/user.mjs +8 -0
  165. package/resources/beta/projects/user.mjs.map +1 -0
  166. package/resources/beta/registry.d.ts +10 -0
  167. package/resources/beta/registry.d.ts.map +1 -0
  168. package/resources/beta/registry.js +12 -0
  169. package/resources/beta/registry.js.map +1 -0
  170. package/resources/beta/registry.mjs +8 -0
  171. package/resources/beta/registry.mjs.map +1 -0
  172. package/resources/beta/threads/index.d.ts +4 -0
  173. package/resources/beta/threads/index.d.ts.map +1 -0
  174. package/resources/beta/threads/index.js +12 -0
  175. package/resources/beta/threads/index.js.map +1 -0
  176. package/resources/beta/threads/index.mjs +5 -0
  177. package/resources/beta/threads/index.mjs.map +1 -0
  178. package/resources/beta/threads/messages.d.ts +42 -0
  179. package/resources/beta/threads/messages.d.ts.map +1 -0
  180. package/resources/beta/threads/messages.js +28 -0
  181. package/resources/beta/threads/messages.js.map +1 -0
  182. package/resources/beta/threads/messages.mjs +24 -0
  183. package/resources/beta/threads/messages.mjs.map +1 -0
  184. package/resources/beta/threads/suggestions.d.ts +55 -0
  185. package/resources/beta/threads/suggestions.d.ts.map +1 -0
  186. package/resources/beta/threads/suggestions.js +21 -0
  187. package/resources/beta/threads/suggestions.js.map +1 -0
  188. package/resources/beta/threads/suggestions.mjs +17 -0
  189. package/resources/beta/threads/suggestions.mjs.map +1 -0
  190. package/resources/beta/threads/threads.d.ts +161 -0
  191. package/resources/beta/threads/threads.d.ts.map +1 -0
  192. package/resources/beta/threads/threads.js +79 -0
  193. package/resources/beta/threads/threads.js.map +1 -0
  194. package/resources/beta/threads/threads.mjs +51 -0
  195. package/resources/beta/threads/threads.mjs.map +1 -0
  196. package/resources/components.d.ts +57 -0
  197. package/resources/components.d.ts.map +1 -0
  198. package/resources/components.js +15 -0
  199. package/resources/components.js.map +1 -0
  200. package/resources/components.mjs +11 -0
  201. package/resources/components.mjs.map +1 -0
  202. package/resources/index.d.ts +4 -0
  203. package/resources/index.d.ts.map +1 -0
  204. package/resources/index.js +24 -0
  205. package/resources/index.js.map +1 -0
  206. package/resources/index.mjs +5 -0
  207. package/resources/index.mjs.map +1 -0
  208. package/resources/shared.d.ts +38 -0
  209. package/resources/shared.d.ts.map +1 -0
  210. package/resources/shared.js +4 -0
  211. package/resources/shared.js.map +1 -0
  212. package/resources/shared.mjs +3 -0
  213. package/resources/shared.mjs.map +1 -0
  214. package/shims/node.d.ts +30 -0
  215. package/shims/node.d.ts.map +1 -0
  216. package/shims/node.js +31 -0
  217. package/shims/node.js.map +1 -0
  218. package/shims/node.mjs +5 -0
  219. package/shims/node.mjs.map +1 -0
  220. package/shims/web.d.ts +26 -0
  221. package/shims/web.d.ts.map +1 -0
  222. package/shims/web.js +31 -0
  223. package/shims/web.js.map +1 -0
  224. package/shims/web.mjs +5 -0
  225. package/shims/web.mjs.map +1 -0
  226. package/src/_shims/MultipartBody.ts +9 -0
  227. package/src/_shims/README.md +46 -0
  228. package/src/_shims/auto/runtime-bun.ts +4 -0
  229. package/src/_shims/auto/runtime-node.ts +4 -0
  230. package/src/_shims/auto/runtime.ts +4 -0
  231. package/src/_shims/auto/types-node.ts +4 -0
  232. package/src/_shims/auto/types.d.ts +101 -0
  233. package/src/_shims/auto/types.js +3 -0
  234. package/src/_shims/auto/types.mjs +3 -0
  235. package/src/_shims/bun-runtime.ts +14 -0
  236. package/src/_shims/index.d.ts +81 -0
  237. package/src/_shims/index.js +13 -0
  238. package/src/_shims/index.mjs +7 -0
  239. package/src/_shims/manual-types.d.ts +12 -0
  240. package/src/_shims/manual-types.js +3 -0
  241. package/src/_shims/manual-types.mjs +3 -0
  242. package/src/_shims/node-runtime.ts +81 -0
  243. package/src/_shims/node-types.d.ts +42 -0
  244. package/src/_shims/node-types.js +3 -0
  245. package/src/_shims/node-types.mjs +3 -0
  246. package/src/_shims/registry.ts +67 -0
  247. package/src/_shims/web-runtime.ts +103 -0
  248. package/src/_shims/web-types.d.ts +83 -0
  249. package/src/_shims/web-types.js +3 -0
  250. package/src/_shims/web-types.mjs +3 -0
  251. package/src/core.ts +1208 -0
  252. package/src/error.ts +130 -0
  253. package/src/index.ts +229 -0
  254. package/src/lib/.keep +4 -0
  255. package/src/lib/advance-stream.ts +47 -0
  256. package/src/lib/streaming-components.ts +71 -0
  257. package/src/pagination.ts +73 -0
  258. package/src/resource.ts +11 -0
  259. package/src/resources/beta/beta.ts +96 -0
  260. package/src/resources/beta/components.ts +97 -0
  261. package/src/resources/beta/index.ts +38 -0
  262. package/src/resources/beta/projects/api-key.ts +48 -0
  263. package/src/resources/beta/projects/index.ts +26 -0
  264. package/src/resources/beta/projects/projects.ts +121 -0
  265. package/src/resources/beta/projects/provider-key.ts +71 -0
  266. package/src/resources/beta/projects/user.ts +26 -0
  267. package/src/resources/beta/registry.ts +16 -0
  268. package/src/resources/beta/threads/index.ts +32 -0
  269. package/src/resources/beta/threads/messages.ts +100 -0
  270. package/src/resources/beta/threads/suggestions.ts +89 -0
  271. package/src/resources/beta/threads/threads.ts +379 -0
  272. package/src/resources/components.ts +105 -0
  273. package/src/resources/index.ts +12 -0
  274. package/src/resources/shared.ts +59 -0
  275. package/src/shims/node.ts +50 -0
  276. package/src/shims/web.ts +50 -0
  277. package/src/tsconfig.json +16 -0
  278. package/src/uploads.ts +255 -0
  279. package/src/version.ts +1 -0
  280. package/uploads.d.ts +75 -0
  281. package/uploads.d.ts.map +1 -0
  282. package/uploads.js +171 -0
  283. package/uploads.js.map +1 -0
  284. package/uploads.mjs +158 -0
  285. package/uploads.mjs.map +1 -0
  286. package/version.d.ts +2 -0
  287. package/version.d.ts.map +1 -0
  288. package/version.js +5 -0
  289. package/version.js.map +1 -0
  290. package/version.mjs +2 -0
  291. package/version.mjs.map +1 -0
package/src/error.ts ADDED
@@ -0,0 +1,130 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ import { castToError, Headers } from './core';
4
+
5
+ export class TamboAIError extends Error {}
6
+
7
+ export class APIError<
8
+ TStatus extends number | undefined = number | undefined,
9
+ THeaders extends Headers | undefined = Headers | undefined,
10
+ TError extends Object | undefined = Object | undefined,
11
+ > extends TamboAIError {
12
+ /** HTTP status for the response that caused the error */
13
+ readonly status: TStatus;
14
+ /** HTTP headers for the response that caused the error */
15
+ readonly headers: THeaders;
16
+ /** JSON body of the response that caused the error */
17
+ readonly error: TError;
18
+
19
+ constructor(status: TStatus, error: TError, message: string | undefined, headers: THeaders) {
20
+ super(`${APIError.makeMessage(status, error, message)}`);
21
+ this.status = status;
22
+ this.headers = headers;
23
+ this.error = error;
24
+ }
25
+
26
+ private static makeMessage(status: number | undefined, error: any, message: string | undefined) {
27
+ const msg =
28
+ error?.message ?
29
+ typeof error.message === 'string' ?
30
+ error.message
31
+ : JSON.stringify(error.message)
32
+ : error ? JSON.stringify(error)
33
+ : message;
34
+
35
+ if (status && msg) {
36
+ return `${status} ${msg}`;
37
+ }
38
+ if (status) {
39
+ return `${status} status code (no body)`;
40
+ }
41
+ if (msg) {
42
+ return msg;
43
+ }
44
+ return '(no status code or body)';
45
+ }
46
+
47
+ static generate(
48
+ status: number | undefined,
49
+ errorResponse: Object | undefined,
50
+ message: string | undefined,
51
+ headers: Headers | undefined,
52
+ ): APIError {
53
+ if (!status || !headers) {
54
+ return new APIConnectionError({ message, cause: castToError(errorResponse) });
55
+ }
56
+
57
+ const error = errorResponse as Record<string, any>;
58
+
59
+ if (status === 400) {
60
+ return new BadRequestError(status, error, message, headers);
61
+ }
62
+
63
+ if (status === 401) {
64
+ return new AuthenticationError(status, error, message, headers);
65
+ }
66
+
67
+ if (status === 403) {
68
+ return new PermissionDeniedError(status, error, message, headers);
69
+ }
70
+
71
+ if (status === 404) {
72
+ return new NotFoundError(status, error, message, headers);
73
+ }
74
+
75
+ if (status === 409) {
76
+ return new ConflictError(status, error, message, headers);
77
+ }
78
+
79
+ if (status === 422) {
80
+ return new UnprocessableEntityError(status, error, message, headers);
81
+ }
82
+
83
+ if (status === 429) {
84
+ return new RateLimitError(status, error, message, headers);
85
+ }
86
+
87
+ if (status >= 500) {
88
+ return new InternalServerError(status, error, message, headers);
89
+ }
90
+
91
+ return new APIError(status, error, message, headers);
92
+ }
93
+ }
94
+
95
+ export class APIUserAbortError extends APIError<undefined, undefined, undefined> {
96
+ constructor({ message }: { message?: string } = {}) {
97
+ super(undefined, undefined, message || 'Request was aborted.', undefined);
98
+ }
99
+ }
100
+
101
+ export class APIConnectionError extends APIError<undefined, undefined, undefined> {
102
+ constructor({ message, cause }: { message?: string | undefined; cause?: Error | undefined }) {
103
+ super(undefined, undefined, message || 'Connection error.', undefined);
104
+ // in some environments the 'cause' property is already declared
105
+ // @ts-ignore
106
+ if (cause) this.cause = cause;
107
+ }
108
+ }
109
+
110
+ export class APIConnectionTimeoutError extends APIConnectionError {
111
+ constructor({ message }: { message?: string } = {}) {
112
+ super({ message: message ?? 'Request timed out.' });
113
+ }
114
+ }
115
+
116
+ export class BadRequestError extends APIError<400, Headers> {}
117
+
118
+ export class AuthenticationError extends APIError<401, Headers> {}
119
+
120
+ export class PermissionDeniedError extends APIError<403, Headers> {}
121
+
122
+ export class NotFoundError extends APIError<404, Headers> {}
123
+
124
+ export class ConflictError extends APIError<409, Headers> {}
125
+
126
+ export class UnprocessableEntityError extends APIError<422, Headers> {}
127
+
128
+ export class RateLimitError extends APIError<429, Headers> {}
129
+
130
+ export class InternalServerError extends APIError<number, Headers> {}
package/src/index.ts ADDED
@@ -0,0 +1,229 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ import { type Agent } from './_shims/index';
4
+ import * as Core from './core';
5
+ import * as Errors from './error';
6
+ import * as Pagination from './pagination';
7
+ import { type OffsetAndLimitParams, OffsetAndLimitResponse } from './pagination';
8
+ import * as Uploads from './uploads';
9
+ import * as API from './resources/index';
10
+ import {
11
+ ComponentGenerateParams,
12
+ ComponentGenerateResponse,
13
+ ComponentHydrateParams,
14
+ ComponentHydrateResponse,
15
+ Components,
16
+ LegacyChatMessage,
17
+ } from './resources/components';
18
+ import { Beta } from './resources/beta/beta';
19
+
20
+ export interface ClientOptions {
21
+ /**
22
+ * API key used for authentication
23
+ */
24
+ apiKey?: string | null | undefined;
25
+
26
+ /**
27
+ * Override the default base URL for the API, e.g., "https://api.example.com/v2/"
28
+ *
29
+ * Defaults to process.env['TAMBO_AI_BASE_URL'].
30
+ */
31
+ baseURL?: string | null | undefined;
32
+
33
+ /**
34
+ * The maximum amount of time (in milliseconds) that the client should wait for a response
35
+ * from the server before timing out a single request.
36
+ *
37
+ * Note that request timeouts are retried by default, so in a worst-case scenario you may wait
38
+ * much longer than this timeout before the promise succeeds or fails.
39
+ */
40
+ timeout?: number | undefined;
41
+
42
+ /**
43
+ * An HTTP agent used to manage HTTP(S) connections.
44
+ *
45
+ * If not provided, an agent will be constructed by default in the Node.js environment,
46
+ * otherwise no agent is used.
47
+ */
48
+ httpAgent?: Agent | undefined;
49
+
50
+ /**
51
+ * Specify a custom `fetch` function implementation.
52
+ *
53
+ * If not provided, we use `node-fetch` on Node.js and otherwise expect that `fetch` is
54
+ * defined globally.
55
+ */
56
+ fetch?: Core.Fetch | undefined;
57
+
58
+ /**
59
+ * The maximum number of times that the client will retry a request in case of a
60
+ * temporary failure, like a network error or a 5XX error from the server.
61
+ *
62
+ * @default 0
63
+ */
64
+ maxRetries?: number | undefined;
65
+
66
+ /**
67
+ * Default headers to include with every request to the API.
68
+ *
69
+ * These can be removed in individual requests by explicitly setting the
70
+ * header to `undefined` or `null` in request options.
71
+ */
72
+ defaultHeaders?: Core.Headers | undefined;
73
+
74
+ /**
75
+ * Default query parameters to include with every request to the API.
76
+ *
77
+ * These can be removed in individual requests by explicitly setting the
78
+ * param to `undefined` in request options.
79
+ */
80
+ defaultQuery?: Core.DefaultQuery | undefined;
81
+ }
82
+
83
+ /**
84
+ * API Client for interfacing with the Tambo AI API.
85
+ */
86
+ export class TamboAI extends Core.APIClient {
87
+ apiKey: string | null;
88
+
89
+ private _options: ClientOptions;
90
+
91
+ /**
92
+ * API Client for interfacing with the Tambo AI API.
93
+ *
94
+ * @param {string | null | undefined} [opts.apiKey=process.env['TAMBO_API_KEY'] ?? null]
95
+ * @param {string} [opts.baseURL=process.env['TAMBO_AI_BASE_URL']] - Override the default base URL for the API.
96
+ * @param {number} [opts.timeout=1 minute] - The maximum amount of time (in milliseconds) the client will wait for a response before timing out.
97
+ * @param {number} [opts.httpAgent] - An HTTP agent used to manage HTTP(s) connections.
98
+ * @param {Core.Fetch} [opts.fetch] - Specify a custom `fetch` function implementation.
99
+ * @param {number} [opts.maxRetries=0] - The maximum number of times the client will retry a request.
100
+ * @param {Core.Headers} opts.defaultHeaders - Default headers to include with every request to the API.
101
+ * @param {Core.DefaultQuery} opts.defaultQuery - Default query parameters to include with every request to the API.
102
+ */
103
+ constructor({
104
+ baseURL = Core.readEnv('TAMBO_AI_BASE_URL'),
105
+ apiKey = Core.readEnv('TAMBO_API_KEY') ?? null,
106
+ ...opts
107
+ }: ClientOptions = {}) {
108
+ const options: ClientOptions = {
109
+ apiKey,
110
+ ...opts,
111
+ baseURL,
112
+ };
113
+
114
+ super({
115
+ baseURL: options.baseURL!,
116
+ timeout: options.timeout ?? 60000 /* 1 minute */,
117
+ httpAgent: options.httpAgent,
118
+ maxRetries: options.maxRetries,
119
+ fetch: options.fetch,
120
+ });
121
+
122
+ this._options = options;
123
+
124
+ this.apiKey = apiKey;
125
+ }
126
+
127
+ components: API.Components = new API.Components(this);
128
+ beta: API.Beta = new API.Beta(this);
129
+
130
+ protected override defaultQuery(): Core.DefaultQuery | undefined {
131
+ return this._options.defaultQuery;
132
+ }
133
+
134
+ protected override defaultHeaders(opts: Core.FinalRequestOptions): Core.Headers {
135
+ return {
136
+ ...super.defaultHeaders(opts),
137
+ ...this._options.defaultHeaders,
138
+ };
139
+ }
140
+
141
+ protected override validateHeaders(headers: Core.Headers, customHeaders: Core.Headers) {
142
+ if (this.apiKey && headers['x-api-key']) {
143
+ return;
144
+ }
145
+ if (customHeaders['x-api-key'] === null) {
146
+ return;
147
+ }
148
+
149
+ throw new Error(
150
+ 'Could not resolve authentication method. Expected the apiKey to be set. Or for the "x-api-key" headers to be explicitly omitted',
151
+ );
152
+ }
153
+
154
+ protected override authHeaders(opts: Core.FinalRequestOptions): Core.Headers {
155
+ if (this.apiKey == null) {
156
+ return {};
157
+ }
158
+ return { 'x-api-key': this.apiKey };
159
+ }
160
+
161
+ static TamboAI = this;
162
+ static DEFAULT_TIMEOUT = 60000; // 1 minute
163
+
164
+ static TamboAIError = Errors.TamboAIError;
165
+ static APIError = Errors.APIError;
166
+ static APIConnectionError = Errors.APIConnectionError;
167
+ static APIConnectionTimeoutError = Errors.APIConnectionTimeoutError;
168
+ static APIUserAbortError = Errors.APIUserAbortError;
169
+ static NotFoundError = Errors.NotFoundError;
170
+ static ConflictError = Errors.ConflictError;
171
+ static RateLimitError = Errors.RateLimitError;
172
+ static BadRequestError = Errors.BadRequestError;
173
+ static AuthenticationError = Errors.AuthenticationError;
174
+ static InternalServerError = Errors.InternalServerError;
175
+ static PermissionDeniedError = Errors.PermissionDeniedError;
176
+ static UnprocessableEntityError = Errors.UnprocessableEntityError;
177
+
178
+ static toFile = Uploads.toFile;
179
+ static fileFromPath = Uploads.fileFromPath;
180
+ }
181
+
182
+ TamboAI.Components = Components;
183
+ TamboAI.Beta = Beta;
184
+ export declare namespace TamboAI {
185
+ export type RequestOptions = Core.RequestOptions;
186
+
187
+ export import OffsetAndLimit = Pagination.OffsetAndLimit;
188
+ export {
189
+ type OffsetAndLimitParams as OffsetAndLimitParams,
190
+ type OffsetAndLimitResponse as OffsetAndLimitResponse,
191
+ };
192
+
193
+ export {
194
+ Components as Components,
195
+ type LegacyChatMessage as LegacyChatMessage,
196
+ type ComponentGenerateResponse as ComponentGenerateResponse,
197
+ type ComponentHydrateResponse as ComponentHydrateResponse,
198
+ type ComponentGenerateParams as ComponentGenerateParams,
199
+ type ComponentHydrateParams as ComponentHydrateParams,
200
+ };
201
+
202
+ export { Beta as Beta };
203
+
204
+ export type AvailableComponent = API.AvailableComponent;
205
+ export type ComponentContextToolMetadata = API.ComponentContextToolMetadata;
206
+ export type ToolCallRequest = API.ToolCallRequest;
207
+ export type ToolParameters = API.ToolParameters;
208
+ }
209
+
210
+ export { toFile, fileFromPath } from './uploads';
211
+ export {
212
+ TamboAIError,
213
+ APIError,
214
+ APIConnectionError,
215
+ APIConnectionTimeoutError,
216
+ APIUserAbortError,
217
+ NotFoundError,
218
+ ConflictError,
219
+ RateLimitError,
220
+ BadRequestError,
221
+ AuthenticationError,
222
+ InternalServerError,
223
+ PermissionDeniedError,
224
+ UnprocessableEntityError,
225
+ } from './error';
226
+
227
+ export default TamboAI;
228
+ export { generateStream, hydrateStream } from './lib/streaming-components';
229
+ export { advanceStream } from './lib/advance-stream';
package/src/lib/.keep ADDED
@@ -0,0 +1,4 @@
1
+ File generated from our OpenAPI spec by Stainless.
2
+
3
+ This directory can be used to store custom files to expand the SDK.
4
+ It is ignored by Stainless code generation and its content (other than this keep file) won't be touched.
@@ -0,0 +1,47 @@
1
+ import { Response } from 'node-fetch';
2
+ import TamboAI from '..';
3
+ import * as Core from '../core';
4
+ import { ThreadAdvanceParams, ThreadAdvanceResponse } from '../resources/beta';
5
+
6
+ export async function advanceStream(
7
+ client: TamboAI,
8
+ body: ThreadAdvanceParams,
9
+ threadId?: string,
10
+ options?: Core.RequestOptions,
11
+ ): Promise<AsyncIterable<ThreadAdvanceResponse>> {
12
+ const responsePromise: Core.APIPromise<ThreadAdvanceResponse> = client.post(
13
+ `/threads${threadId ? `/${threadId}` : ''}/advancestream`,
14
+ {
15
+ body,
16
+ ...options,
17
+ headers: {
18
+ ...options?.headers,
19
+ Accept: 'text/event-stream',
20
+ },
21
+ },
22
+ );
23
+ const response = await responsePromise.asResponse();
24
+
25
+ return handleStreamResponse<ThreadAdvanceResponse>(response);
26
+ }
27
+
28
+ async function* handleStreamResponse<T>(response: Response): AsyncIterable<T> {
29
+ const decoder = new TextDecoder();
30
+ for await (const chunk of response.body) {
31
+ const text = decoder.decode(chunk as Uint8Array);
32
+
33
+ //handle server-combined events
34
+ const messages = text.split('\n').filter((msg) => msg.trim());
35
+
36
+ for (const msg of messages) {
37
+ if (msg === 'data: DONE') {
38
+ continue;
39
+ }
40
+ const jsonStr = msg.startsWith('data: ') ? msg.slice(6) : msg;
41
+ if (!jsonStr) {
42
+ continue;
43
+ }
44
+ yield JSON.parse(jsonStr) as T;
45
+ }
46
+ }
47
+ }
@@ -0,0 +1,71 @@
1
+ import { Response } from 'node-fetch';
2
+ import { type TamboAI } from '..';
3
+ import * as Core from '../core';
4
+ import { Components as BetaComponents } from '../resources/beta/components';
5
+ import { Components as BaseComponents } from '../resources/components';
6
+
7
+ export async function generateStream(
8
+ client: TamboAI,
9
+ body: BaseComponents.ComponentGenerateParams | BetaComponents.ComponentGenerateParams,
10
+ options?: Core.RequestOptions,
11
+ ): Promise<
12
+ AsyncIterable<BaseComponents.ComponentGenerateResponse | BetaComponents.ComponentGenerateResponse>
13
+ > {
14
+ const responsePromise: Core.APIPromise<
15
+ BaseComponents.ComponentGenerateResponse | BetaComponents.ComponentGenerateResponse
16
+ > = client.post('/components/generatestream', {
17
+ body,
18
+ ...options,
19
+ headers: {
20
+ ...options?.headers,
21
+ Accept: 'text/event-stream',
22
+ },
23
+ });
24
+ const response = await responsePromise.asResponse();
25
+
26
+ return handleStreamResponse<
27
+ BaseComponents.ComponentGenerateResponse | BetaComponents.ComponentGenerateResponse
28
+ >(response);
29
+ }
30
+
31
+ export async function hydrateStream(
32
+ client: TamboAI,
33
+ body: BaseComponents.ComponentHydrateParams | BetaComponents.ComponentHydrateParams,
34
+ options?: Core.RequestOptions,
35
+ ): Promise<AsyncIterable<BaseComponents.ComponentHydrateResponse | BetaComponents.ComponentHydrateResponse>> {
36
+ const responsePromise: Core.APIPromise<
37
+ BaseComponents.ComponentHydrateResponse | BetaComponents.ComponentHydrateResponse
38
+ > = client.post('/components/hydratestream', {
39
+ body,
40
+ ...options,
41
+ headers: {
42
+ ...options?.headers,
43
+ Accept: 'text/event-stream',
44
+ },
45
+ });
46
+ const response = await responsePromise.asResponse();
47
+ return handleStreamResponse<
48
+ BaseComponents.ComponentHydrateResponse | BetaComponents.ComponentHydrateResponse
49
+ >(response);
50
+ }
51
+
52
+ async function* handleStreamResponse<T>(response: Response): AsyncIterable<T> {
53
+ const decoder = new TextDecoder();
54
+ for await (const chunk of response.body) {
55
+ const text = decoder.decode(chunk as Uint8Array);
56
+
57
+ //handle server-combined events
58
+ const messages = text.split('\n').filter((msg) => msg.trim());
59
+
60
+ for (const msg of messages) {
61
+ if (msg === 'data: DONE') {
62
+ continue;
63
+ }
64
+ const jsonStr = msg.startsWith('data: ') ? msg.slice(6) : msg;
65
+ if (!jsonStr) {
66
+ continue;
67
+ }
68
+ yield JSON.parse(jsonStr) as T;
69
+ }
70
+ }
71
+ }
@@ -0,0 +1,73 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ import { AbstractPage, Response, APIClient, FinalRequestOptions, PageInfo } from './core';
4
+
5
+ export interface OffsetAndLimitResponse<Item> {
6
+ items: Array<Item>;
7
+
8
+ total: number;
9
+
10
+ count: number;
11
+ }
12
+
13
+ export interface OffsetAndLimitParams {
14
+ offset?: number;
15
+
16
+ limit?: number;
17
+ }
18
+
19
+ export class OffsetAndLimit<Item> extends AbstractPage<Item> implements OffsetAndLimitResponse<Item> {
20
+ items: Array<Item>;
21
+
22
+ total: number;
23
+
24
+ count: number;
25
+
26
+ constructor(
27
+ client: APIClient,
28
+ response: Response,
29
+ body: OffsetAndLimitResponse<Item>,
30
+ options: FinalRequestOptions,
31
+ ) {
32
+ super(client, response, body, options);
33
+
34
+ this.items = body.items || [];
35
+ this.total = body.total || 0;
36
+ this.count = body.count || 0;
37
+ }
38
+
39
+ getPaginatedItems(): Item[] {
40
+ return this.items ?? [];
41
+ }
42
+
43
+ // @deprecated Please use `nextPageInfo()` instead
44
+ nextPageParams(): Partial<OffsetAndLimitParams> | null {
45
+ const info = this.nextPageInfo();
46
+ if (!info) return null;
47
+ if ('params' in info) return info.params;
48
+ const params = Object.fromEntries(info.url.searchParams);
49
+ if (!Object.keys(params).length) return null;
50
+ return params;
51
+ }
52
+
53
+ nextPageInfo(): PageInfo | null {
54
+ const offset = (this.options.query as OffsetAndLimitParams).offset ?? 0;
55
+ if (!offset) {
56
+ return null;
57
+ }
58
+
59
+ const length = this.getPaginatedItems().length;
60
+ const currentCount = offset + length;
61
+
62
+ const totalCount = this.total;
63
+ if (!totalCount) {
64
+ return null;
65
+ }
66
+
67
+ if (currentCount < totalCount) {
68
+ return { params: { offset: currentCount } };
69
+ }
70
+
71
+ return null;
72
+ }
73
+ }
@@ -0,0 +1,11 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ import type { TamboAI } from './index';
4
+
5
+ export class APIResource {
6
+ protected _client: TamboAI;
7
+
8
+ constructor(client: TamboAI) {
9
+ this._client = client;
10
+ }
11
+ }
@@ -0,0 +1,96 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ import { APIResource } from '../../resource';
4
+ import * as ComponentsAPI from './components';
5
+ import {
6
+ ComponentGenerateParams,
7
+ ComponentGenerateResponse,
8
+ ComponentGenerateStreamParams,
9
+ ComponentHydrateParams,
10
+ ComponentHydrateResponse,
11
+ ComponentHydrateStreamParams,
12
+ Components,
13
+ } from './components';
14
+ import * as RegistryAPI from './registry';
15
+ import { Registry, RegistryRetrieveResponse } from './registry';
16
+ import * as ProjectsAPI from './projects/projects';
17
+ import {
18
+ ProjectCreateParams,
19
+ ProjectCreateResponse,
20
+ ProjectDeleteResponse,
21
+ ProjectGetCurrentResponse,
22
+ ProjectRetrieveResponse,
23
+ ProjectUpdateParams,
24
+ ProjectUpdateResponse,
25
+ Projects,
26
+ } from './projects/projects';
27
+ import * as ThreadsAPI from './threads/threads';
28
+ import {
29
+ ChatCompletionContentPart,
30
+ Thread,
31
+ ThreadAdvanceByIDParams,
32
+ ThreadAdvanceByIDResponse,
33
+ ThreadAdvanceParams,
34
+ ThreadAdvanceResponse,
35
+ ThreadCreateParams,
36
+ ThreadListParams,
37
+ ThreadMessage,
38
+ ThreadRetrieveResponse,
39
+ ThreadUpdateParams,
40
+ Threads,
41
+ ThreadsOffsetAndLimit,
42
+ } from './threads/threads';
43
+
44
+ export class Beta extends APIResource {
45
+ components: ComponentsAPI.Components = new ComponentsAPI.Components(this._client);
46
+ registry: RegistryAPI.Registry = new RegistryAPI.Registry(this._client);
47
+ projects: ProjectsAPI.Projects = new ProjectsAPI.Projects(this._client);
48
+ threads: ThreadsAPI.Threads = new ThreadsAPI.Threads(this._client);
49
+ }
50
+
51
+ Beta.Components = Components;
52
+ Beta.Registry = Registry;
53
+ Beta.Projects = Projects;
54
+ Beta.Threads = Threads;
55
+ Beta.ThreadsOffsetAndLimit = ThreadsOffsetAndLimit;
56
+
57
+ export declare namespace Beta {
58
+ export {
59
+ Components as Components,
60
+ type ComponentGenerateResponse as ComponentGenerateResponse,
61
+ type ComponentHydrateResponse as ComponentHydrateResponse,
62
+ type ComponentGenerateParams as ComponentGenerateParams,
63
+ type ComponentGenerateStreamParams as ComponentGenerateStreamParams,
64
+ type ComponentHydrateParams as ComponentHydrateParams,
65
+ type ComponentHydrateStreamParams as ComponentHydrateStreamParams,
66
+ };
67
+
68
+ export { Registry as Registry, type RegistryRetrieveResponse as RegistryRetrieveResponse };
69
+
70
+ export {
71
+ Projects as Projects,
72
+ type ProjectCreateResponse as ProjectCreateResponse,
73
+ type ProjectRetrieveResponse as ProjectRetrieveResponse,
74
+ type ProjectUpdateResponse as ProjectUpdateResponse,
75
+ type ProjectDeleteResponse as ProjectDeleteResponse,
76
+ type ProjectGetCurrentResponse as ProjectGetCurrentResponse,
77
+ type ProjectCreateParams as ProjectCreateParams,
78
+ type ProjectUpdateParams as ProjectUpdateParams,
79
+ };
80
+
81
+ export {
82
+ Threads as Threads,
83
+ type ChatCompletionContentPart as ChatCompletionContentPart,
84
+ type Thread as Thread,
85
+ type ThreadMessage as ThreadMessage,
86
+ type ThreadRetrieveResponse as ThreadRetrieveResponse,
87
+ type ThreadAdvanceResponse as ThreadAdvanceResponse,
88
+ type ThreadAdvanceByIDResponse as ThreadAdvanceByIDResponse,
89
+ ThreadsOffsetAndLimit as ThreadsOffsetAndLimit,
90
+ type ThreadCreateParams as ThreadCreateParams,
91
+ type ThreadUpdateParams as ThreadUpdateParams,
92
+ type ThreadListParams as ThreadListParams,
93
+ type ThreadAdvanceParams as ThreadAdvanceParams,
94
+ type ThreadAdvanceByIDParams as ThreadAdvanceByIDParams,
95
+ };
96
+ }