@tiny-fish/sdk 0.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 (62) hide show
  1. package/README.md +5 -0
  2. package/dist/_utils/client.d.ts +40 -0
  3. package/dist/_utils/client.d.ts.map +1 -0
  4. package/dist/_utils/client.js +168 -0
  5. package/dist/_utils/client.js.map +1 -0
  6. package/dist/_utils/errors.d.ts +109 -0
  7. package/dist/_utils/errors.d.ts.map +1 -0
  8. package/dist/_utils/errors.js +123 -0
  9. package/dist/_utils/errors.js.map +1 -0
  10. package/dist/_utils/index.d.ts +15 -0
  11. package/dist/_utils/index.d.ts.map +1 -0
  12. package/dist/_utils/index.js +14 -0
  13. package/dist/_utils/index.js.map +1 -0
  14. package/dist/_utils/resource.d.ts +6 -0
  15. package/dist/_utils/resource.d.ts.map +1 -0
  16. package/dist/_utils/resource.js +7 -0
  17. package/dist/_utils/resource.js.map +1 -0
  18. package/dist/_utils/sse.d.ts +15 -0
  19. package/dist/_utils/sse.d.ts.map +1 -0
  20. package/dist/_utils/sse.js +62 -0
  21. package/dist/_utils/sse.js.map +1 -0
  22. package/dist/agent/index.d.ts +47 -0
  23. package/dist/agent/index.d.ts.map +1 -0
  24. package/dist/agent/index.js +168 -0
  25. package/dist/agent/index.js.map +1 -0
  26. package/dist/agent/types.d.ts +163 -0
  27. package/dist/agent/types.d.ts.map +1 -0
  28. package/dist/agent/types.js +61 -0
  29. package/dist/agent/types.js.map +1 -0
  30. package/dist/client.d.ts +13 -0
  31. package/dist/client.d.ts.map +1 -0
  32. package/dist/client.js +16 -0
  33. package/dist/client.js.map +1 -0
  34. package/dist/index.d.ts +13 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +15 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/runs/index.d.ts +25 -0
  39. package/dist/runs/index.d.ts.map +1 -0
  40. package/dist/runs/index.js +47 -0
  41. package/dist/runs/index.js.map +1 -0
  42. package/dist/runs/types.d.ts +75 -0
  43. package/dist/runs/types.d.ts.map +1 -0
  44. package/dist/runs/types.js +10 -0
  45. package/dist/runs/types.js.map +1 -0
  46. package/dist/version.d.ts +2 -0
  47. package/dist/version.d.ts.map +1 -0
  48. package/dist/version.js +3 -0
  49. package/dist/version.js.map +1 -0
  50. package/package.json +43 -0
  51. package/src/_utils/client.ts +219 -0
  52. package/src/_utils/errors.ts +153 -0
  53. package/src/_utils/index.ts +31 -0
  54. package/src/_utils/resource.ts +9 -0
  55. package/src/_utils/sse.ts +72 -0
  56. package/src/agent/index.ts +210 -0
  57. package/src/agent/types.ts +190 -0
  58. package/src/client.ts +19 -0
  59. package/src/index.ts +64 -0
  60. package/src/runs/index.ts +47 -0
  61. package/src/runs/types.ts +81 -0
  62. package/src/version.ts +2 -0
package/README.md ADDED
@@ -0,0 +1,5 @@
1
+ # TinyFish TypeScript SDK
2
+
3
+ State-of-the-art web agents in an API.
4
+
5
+ > Currently this SDK is still being built. Discuss with @simantak-dabhade
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Base HTTP client — handles auth, headers, retries, and error mapping.
3
+ */
4
+ export interface ClientOptions {
5
+ apiKey?: string;
6
+ baseURL?: string;
7
+ timeout?: number;
8
+ maxRetries?: number;
9
+ }
10
+ export declare class BaseClient {
11
+ readonly apiKey: string;
12
+ readonly baseURL: string;
13
+ readonly timeout: number;
14
+ readonly maxRetries: number;
15
+ constructor(options?: ClientOptions);
16
+ protected _buildHeaders(): Record<string, string>;
17
+ /**
18
+ * Core request method with retry and error mapping.
19
+ * All public methods (get, post, postStream) delegate here.
20
+ */
21
+ private _request;
22
+ /**
23
+ * Extracts a human-readable error message from the response body.
24
+ * Tries JSON body → error.message → message, falls back to text, then HTTP status.
25
+ * Matches Python SDK's _parse_error_message.
26
+ */
27
+ private _parseErrorMessage;
28
+ /** Maps HTTP status codes to typed error classes. Matches Python SDK's _make_status_error. */
29
+ private _makeStatusError;
30
+ get<T>(path: string, options?: {
31
+ params?: Record<string, string | number | boolean | undefined>;
32
+ }): Promise<T>;
33
+ post<T>(path: string, options?: {
34
+ json?: unknown;
35
+ }): Promise<T>;
36
+ postStream(path: string, options?: {
37
+ json?: unknown;
38
+ }): Promise<ReadableStream<string>>;
39
+ }
40
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/_utils/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqBH,MAAM,WAAW,aAAa;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD,qBAAa,UAAU;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,OAAO,GAAE,aAAkB;IAcvC,SAAS,CAAC,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IASjD;;;OAGG;YACW,QAAQ;IAsDtB;;;;OAIG;YACW,kBAAkB;IAuBhC,8FAA8F;YAChF,gBAAgB;IAmCxB,GAAG,CAAC,CAAC,EACV,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAA;KAAE,GAC1E,OAAO,CAAC,CAAC,CAAC;IAgBP,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IAK/D,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;CAS7F"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Base HTTP client — handles auth, headers, retries, and error mapping.
3
+ */
4
+ import pRetry, { AbortError } from "p-retry";
5
+ import { VERSION } from "../version.js";
6
+ import { APIConnectionError, APIStatusError, APITimeoutError, AuthenticationError, BadRequestError, ConflictError, InternalServerError, NotFoundError, PermissionDeniedError, RateLimitError, RequestTimeoutError, SDKError, UnprocessableEntityError, } from "./errors.js";
7
+ const DEFAULT_BASE_URL = "https://agent.tinyfish.ai";
8
+ const DEFAULT_TIMEOUT = 600_000; // 10 minutes, matches Python SDK
9
+ const DEFAULT_MAX_RETRIES = 2;
10
+ export class BaseClient {
11
+ apiKey;
12
+ baseURL;
13
+ timeout;
14
+ maxRetries;
15
+ constructor(options = {}) {
16
+ const apiKey = options.apiKey ?? process.env["TINYFISH_API_KEY"];
17
+ if (!apiKey) {
18
+ throw new SDKError("Missing API key. Pass `apiKey` to the constructor or set the TINYFISH_API_KEY environment variable.");
19
+ }
20
+ this.apiKey = apiKey;
21
+ this.baseURL = options.baseURL ?? DEFAULT_BASE_URL;
22
+ this.timeout = options.timeout ?? DEFAULT_TIMEOUT;
23
+ this.maxRetries = options.maxRetries ?? DEFAULT_MAX_RETRIES;
24
+ }
25
+ _buildHeaders() {
26
+ return {
27
+ "X-API-Key": this.apiKey,
28
+ "Content-Type": "application/json",
29
+ Accept: "application/json",
30
+ "User-Agent": `tinyfish-typescript/${VERSION}`,
31
+ };
32
+ }
33
+ /**
34
+ * Core request method with retry and error mapping.
35
+ * All public methods (get, post, postStream) delegate here.
36
+ */
37
+ async _request(method, path, body) {
38
+ const url = `${this.baseURL}${path}`;
39
+ const headers = this._buildHeaders();
40
+ return pRetry(async () => {
41
+ try {
42
+ const response = await fetch(url, {
43
+ method,
44
+ headers,
45
+ body: body !== undefined ? JSON.stringify(body) : undefined,
46
+ signal: AbortSignal.timeout(this.timeout),
47
+ });
48
+ if (response.ok) {
49
+ return response;
50
+ }
51
+ const sdkError = await this._makeStatusError(response);
52
+ // Non-retryable status codes abort immediately
53
+ const status = response.status;
54
+ if (status !== 408 && status !== 429 && status < 500) {
55
+ throw new AbortError(sdkError);
56
+ }
57
+ // Retryable — let p-retry handle backoff
58
+ throw sdkError;
59
+ }
60
+ catch (error) {
61
+ // Re-throw AbortError and SDK errors as-is
62
+ if (error instanceof AbortError || error instanceof SDKError) {
63
+ throw error;
64
+ }
65
+ // AbortSignal.timeout throws a DOMException with name "TimeoutError"
66
+ if (error instanceof DOMException && error.name === "TimeoutError") {
67
+ throw new APITimeoutError(`Request timed out after ${this.timeout}ms`);
68
+ }
69
+ // Network failures (DNS, refused, etc.)
70
+ throw new APIConnectionError(error instanceof Error ? error.message : "Connection failed");
71
+ }
72
+ }, {
73
+ retries: this.maxRetries,
74
+ minTimeout: 500,
75
+ maxTimeout: 8_000,
76
+ factor: 2,
77
+ });
78
+ }
79
+ /**
80
+ * Extracts a human-readable error message from the response body.
81
+ * Tries JSON body → error.message → message, falls back to text, then HTTP status.
82
+ * Matches Python SDK's _parse_error_message.
83
+ */
84
+ async _parseErrorMessage(response) {
85
+ try {
86
+ const text = await response.text();
87
+ try {
88
+ const body = JSON.parse(text);
89
+ const errorObj = body?.["error"];
90
+ const msg = errorObj?.["message"] ?? body?.["message"];
91
+ if (typeof msg === "string" && msg.length > 0) {
92
+ return msg;
93
+ }
94
+ }
95
+ catch {
96
+ // Not JSON — fall through to use raw text
97
+ }
98
+ if (text.length > 0) {
99
+ return text;
100
+ }
101
+ }
102
+ catch {
103
+ // Body read failed entirely
104
+ }
105
+ return `HTTP ${response.status}`;
106
+ }
107
+ /** Maps HTTP status codes to typed error classes. Matches Python SDK's _make_status_error. */
108
+ async _makeStatusError(response) {
109
+ const msg = await this._parseErrorMessage(response);
110
+ const opts = { response };
111
+ switch (response.status) {
112
+ case 400:
113
+ return new BadRequestError(msg, opts);
114
+ case 401:
115
+ return new AuthenticationError(msg, opts);
116
+ case 403:
117
+ return new PermissionDeniedError(msg, opts);
118
+ case 404:
119
+ return new NotFoundError(msg, opts);
120
+ case 408:
121
+ return new RequestTimeoutError(msg, opts);
122
+ case 409:
123
+ return new ConflictError(msg, opts);
124
+ case 422:
125
+ return new UnprocessableEntityError(msg, opts);
126
+ case 429:
127
+ return new RateLimitError(msg, opts);
128
+ default:
129
+ if (response.status >= 500) {
130
+ return new InternalServerError(msg, {
131
+ response,
132
+ statusCode: response.status,
133
+ });
134
+ }
135
+ return new APIStatusError(msg, {
136
+ response,
137
+ statusCode: response.status,
138
+ });
139
+ }
140
+ }
141
+ async get(path, options) {
142
+ let url = path;
143
+ if (options?.params) {
144
+ const filtered = {};
145
+ for (const [key, value] of Object.entries(options.params)) {
146
+ if (value !== undefined) {
147
+ filtered[key] = String(value);
148
+ }
149
+ }
150
+ const searchParams = new URLSearchParams(filtered);
151
+ url = `${path}?${searchParams.toString()}`;
152
+ }
153
+ const response = await this._request("GET", url);
154
+ return (await response.json());
155
+ }
156
+ async post(path, options) {
157
+ const response = await this._request("POST", path, options?.json);
158
+ return (await response.json());
159
+ }
160
+ async postStream(path, options) {
161
+ const response = await this._request("POST", path, options?.json);
162
+ if (!response.body) {
163
+ throw new SDKError("Response body is null — server did not return a stream");
164
+ }
165
+ return response.body.pipeThrough(new TextDecoderStream());
166
+ }
167
+ }
168
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/_utils/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EACN,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EACnB,QAAQ,EACR,wBAAwB,GACxB,MAAM,aAAa,CAAC;AASrB,MAAM,gBAAgB,GAAG,2BAA2B,CAAC;AACrD,MAAM,eAAe,GAAG,OAAO,CAAC,CAAC,iCAAiC;AAClE,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B,MAAM,OAAO,UAAU;IACb,MAAM,CAAS;IACf,OAAO,CAAS;IAChB,OAAO,CAAS;IAChB,UAAU,CAAS;IAE5B,YAAY,UAAyB,EAAE;QACtC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,IAAI,QAAQ,CACjB,qGAAqG,CACrG,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,gBAAgB,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC;QAClD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,mBAAmB,CAAC;IAC7D,CAAC;IAES,aAAa;QACtB,OAAO;YACN,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,kBAAkB;YAC1B,YAAY,EAAE,uBAAuB,OAAO,EAAE;SAC9C,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,QAAQ,CAAC,MAAc,EAAE,IAAY,EAAE,IAAc;QAClE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAErC,OAAO,MAAM,CACZ,KAAK,IAAI,EAAE;YACV,IAAI,CAAC;gBACJ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;oBACjC,MAAM;oBACN,OAAO;oBACP,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;oBAC3D,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;iBACzC,CAAC,CAAC;gBAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,OAAO,QAAQ,CAAC;gBACjB,CAAC;gBAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;gBAEvD,+CAA+C;gBAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;gBAC/B,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;oBACtD,MAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAChC,CAAC;gBAED,yCAAyC;gBACzC,MAAM,QAAQ,CAAC;YAChB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,2CAA2C;gBAC3C,IAAI,KAAK,YAAY,UAAU,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;oBAC9D,MAAM,KAAK,CAAC;gBACb,CAAC;gBAED,qEAAqE;gBACrE,IAAI,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oBACpE,MAAM,IAAI,eAAe,CAAC,2BAA2B,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;gBACxE,CAAC;gBAED,wCAAwC;gBACxC,MAAM,IAAI,kBAAkB,CAC3B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAC5D,CAAC;YACH,CAAC;QACF,CAAC,EACD;YACC,OAAO,EAAE,IAAI,CAAC,UAAU;YACxB,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,CAAC;SACT,CACD,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,kBAAkB,CAAC,QAAkB;QAClD,IAAI,CAAC;YACJ,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC;gBACJ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA+C,CAAC;gBAC5E,MAAM,QAAQ,GAAG,IAAI,EAAE,CAAC,OAAO,CAA+C,CAAC;gBAC/E,MAAM,GAAG,GAAI,QAAQ,EAAE,CAAC,SAAS,CAAY,IAAK,IAAI,EAAE,CAAC,SAAS,CAAY,CAAC;gBAC/E,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/C,OAAO,GAAG,CAAC;gBACZ,CAAC;YACF,CAAC;YAAC,MAAM,CAAC;gBACR,0CAA0C;YAC3C,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAC;YACb,CAAC;QACF,CAAC;QAAC,MAAM,CAAC;YACR,4BAA4B;QAC7B,CAAC;QAED,OAAO,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;IAClC,CAAC;IAED,8FAA8F;IACtF,KAAK,CAAC,gBAAgB,CAAC,QAAkB;QAChD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,EAAE,QAAQ,EAAE,CAAC;QAE1B,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;YACzB,KAAK,GAAG;gBACP,OAAO,IAAI,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACvC,KAAK,GAAG;gBACP,OAAO,IAAI,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC3C,KAAK,GAAG;gBACP,OAAO,IAAI,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC7C,KAAK,GAAG;gBACP,OAAO,IAAI,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACrC,KAAK,GAAG;gBACP,OAAO,IAAI,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC3C,KAAK,GAAG;gBACP,OAAO,IAAI,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACrC,KAAK,GAAG;gBACP,OAAO,IAAI,wBAAwB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAChD,KAAK,GAAG;gBACP,OAAO,IAAI,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACtC;gBACC,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;oBAC5B,OAAO,IAAI,mBAAmB,CAAC,GAAG,EAAE;wBACnC,QAAQ;wBACR,UAAU,EAAE,QAAQ,CAAC,MAAM;qBAC3B,CAAC,CAAC;gBACJ,CAAC;gBACD,OAAO,IAAI,cAAc,CAAC,GAAG,EAAE;oBAC9B,QAAQ;oBACR,UAAU,EAAE,QAAQ,CAAC,MAAM;iBAC3B,CAAC,CAAC;QACL,CAAC;IACF,CAAC;IAED,KAAK,CAAC,GAAG,CACR,IAAY,EACZ,OAA4E;QAE5E,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YACrB,MAAM,QAAQ,GAA2B,EAAE,CAAC;YAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACzB,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/B,CAAC;YACF,CAAC;YACD,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC;YACnD,GAAG,GAAG,GAAG,IAAI,IAAI,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC5C,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjD,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,IAAI,CAAI,IAAY,EAAE,OAA4B;QACvD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAClE,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,OAA4B;QAC1D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAElE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpB,MAAM,IAAI,QAAQ,CAAC,wDAAwD,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC;IAC3D,CAAC;CACD"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Exception hierarchy for SDK errors.
3
+ *
4
+ * Hierarchy:
5
+ * SDKError
6
+ * +- SSEParseError
7
+ * +- APIError
8
+ * +- APIConnectionError
9
+ * | +- APITimeoutError
10
+ * +- APIStatusError
11
+ * +- BadRequestError (400)
12
+ * +- AuthenticationError (401)
13
+ * +- PermissionDeniedError (403)
14
+ * +- NotFoundError (404)
15
+ * +- RequestTimeoutError (408)
16
+ * +- ConflictError (409)
17
+ * +- UnprocessableEntityError (422)
18
+ * +- RateLimitError (429)
19
+ * +- InternalServerError (500+)
20
+ */
21
+ export declare class SDKError extends Error {
22
+ constructor(message: string);
23
+ }
24
+ export declare class SSEParseError extends SDKError {
25
+ readonly line: string;
26
+ constructor(message: string, line: string);
27
+ }
28
+ export declare class APIError extends SDKError {
29
+ readonly request: Request | undefined;
30
+ readonly response: Response | undefined;
31
+ constructor(message: string, options?: {
32
+ request?: Request | undefined;
33
+ response?: Response | undefined;
34
+ });
35
+ }
36
+ export declare class APIConnectionError extends APIError {
37
+ constructor(message: string, options?: {
38
+ request?: Request | undefined;
39
+ });
40
+ }
41
+ export declare class APITimeoutError extends APIConnectionError {
42
+ constructor(message: string, options?: {
43
+ request?: Request | undefined;
44
+ });
45
+ }
46
+ export declare class APIStatusError extends APIError {
47
+ readonly statusCode: number;
48
+ constructor(message: string, options: {
49
+ response: Response;
50
+ statusCode: number;
51
+ request?: Request | undefined;
52
+ });
53
+ }
54
+ export declare class BadRequestError extends APIStatusError {
55
+ constructor(message: string, options: {
56
+ response: Response;
57
+ request?: Request | undefined;
58
+ });
59
+ }
60
+ export declare class AuthenticationError extends APIStatusError {
61
+ constructor(message: string, options: {
62
+ response: Response;
63
+ request?: Request | undefined;
64
+ });
65
+ }
66
+ export declare class PermissionDeniedError extends APIStatusError {
67
+ constructor(message: string, options: {
68
+ response: Response;
69
+ request?: Request | undefined;
70
+ });
71
+ }
72
+ export declare class NotFoundError extends APIStatusError {
73
+ constructor(message: string, options: {
74
+ response: Response;
75
+ request?: Request | undefined;
76
+ });
77
+ }
78
+ export declare class RequestTimeoutError extends APIStatusError {
79
+ constructor(message: string, options: {
80
+ response: Response;
81
+ request?: Request | undefined;
82
+ });
83
+ }
84
+ export declare class ConflictError extends APIStatusError {
85
+ constructor(message: string, options: {
86
+ response: Response;
87
+ request?: Request | undefined;
88
+ });
89
+ }
90
+ export declare class UnprocessableEntityError extends APIStatusError {
91
+ constructor(message: string, options: {
92
+ response: Response;
93
+ request?: Request | undefined;
94
+ });
95
+ }
96
+ export declare class RateLimitError extends APIStatusError {
97
+ constructor(message: string, options: {
98
+ response: Response;
99
+ request?: Request | undefined;
100
+ });
101
+ }
102
+ export declare class InternalServerError extends APIStatusError {
103
+ constructor(message: string, options: {
104
+ response: Response;
105
+ statusCode?: number | undefined;
106
+ request?: Request | undefined;
107
+ });
108
+ }
109
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/_utils/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Exception hierarchy for SDK errors.
3
+ *
4
+ * Hierarchy:
5
+ * SDKError
6
+ * +- SSEParseError
7
+ * +- APIError
8
+ * +- APIConnectionError
9
+ * | +- APITimeoutError
10
+ * +- APIStatusError
11
+ * +- BadRequestError (400)
12
+ * +- AuthenticationError (401)
13
+ * +- PermissionDeniedError (403)
14
+ * +- NotFoundError (404)
15
+ * +- RequestTimeoutError (408)
16
+ * +- ConflictError (409)
17
+ * +- UnprocessableEntityError (422)
18
+ * +- RateLimitError (429)
19
+ * +- InternalServerError (500+)
20
+ */
21
+ export class SDKError extends Error {
22
+ constructor(message) {
23
+ super(message);
24
+ this.name = "SDKError";
25
+ }
26
+ }
27
+ export class SSEParseError extends SDKError {
28
+ line;
29
+ constructor(message, line) {
30
+ super(message);
31
+ this.name = "SSEParseError";
32
+ this.line = line;
33
+ }
34
+ }
35
+ export class APIError extends SDKError {
36
+ request;
37
+ response;
38
+ constructor(message, options) {
39
+ super(message);
40
+ this.name = "APIError";
41
+ this.request = options?.request;
42
+ this.response = options?.response;
43
+ }
44
+ }
45
+ export class APIConnectionError extends APIError {
46
+ constructor(message, options) {
47
+ super(message, options);
48
+ this.name = "APIConnectionError";
49
+ }
50
+ }
51
+ export class APITimeoutError extends APIConnectionError {
52
+ constructor(message, options) {
53
+ super(message, options);
54
+ this.name = "APITimeoutError";
55
+ }
56
+ }
57
+ export class APIStatusError extends APIError {
58
+ statusCode;
59
+ constructor(message, options) {
60
+ super(message, { request: options.request, response: options.response });
61
+ this.name = "APIStatusError";
62
+ this.statusCode = options.statusCode;
63
+ }
64
+ }
65
+ export class BadRequestError extends APIStatusError {
66
+ constructor(message, options) {
67
+ super(message, { ...options, statusCode: 400 });
68
+ this.name = "BadRequestError";
69
+ }
70
+ }
71
+ export class AuthenticationError extends APIStatusError {
72
+ constructor(message, options) {
73
+ super(message, { ...options, statusCode: 401 });
74
+ this.name = "AuthenticationError";
75
+ }
76
+ }
77
+ export class PermissionDeniedError extends APIStatusError {
78
+ constructor(message, options) {
79
+ super(message, { ...options, statusCode: 403 });
80
+ this.name = "PermissionDeniedError";
81
+ }
82
+ }
83
+ export class NotFoundError extends APIStatusError {
84
+ constructor(message, options) {
85
+ super(message, { ...options, statusCode: 404 });
86
+ this.name = "NotFoundError";
87
+ }
88
+ }
89
+ export class RequestTimeoutError extends APIStatusError {
90
+ constructor(message, options) {
91
+ super(message, { ...options, statusCode: 408 });
92
+ this.name = "RequestTimeoutError";
93
+ }
94
+ }
95
+ export class ConflictError extends APIStatusError {
96
+ constructor(message, options) {
97
+ super(message, { ...options, statusCode: 409 });
98
+ this.name = "ConflictError";
99
+ }
100
+ }
101
+ export class UnprocessableEntityError extends APIStatusError {
102
+ constructor(message, options) {
103
+ super(message, { ...options, statusCode: 422 });
104
+ this.name = "UnprocessableEntityError";
105
+ }
106
+ }
107
+ export class RateLimitError extends APIStatusError {
108
+ constructor(message, options) {
109
+ super(message, { ...options, statusCode: 429 });
110
+ this.name = "RateLimitError";
111
+ }
112
+ }
113
+ export class InternalServerError extends APIStatusError {
114
+ constructor(message, options) {
115
+ super(message, {
116
+ response: options.response,
117
+ statusCode: options.statusCode ?? 500,
118
+ request: options.request,
119
+ });
120
+ this.name = "InternalServerError";
121
+ }
122
+ }
123
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/_utils/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Reusable SDK foundation.
3
+ *
4
+ * Provides base classes for building HTTP API SDKs:
5
+ * - Client: HTTP client with auth and request plumbing
6
+ * - Resource: Base class for API resource groupings
7
+ * - Errors: Complete error hierarchy
8
+ * - SSE: Server-sent events parser
9
+ */
10
+ export { BaseClient } from "./client.js";
11
+ export type { ClientOptions } from "./client.js";
12
+ export { APIResource } from "./resource.js";
13
+ export { parseSSEStream } from "./sse.js";
14
+ export { SDKError, SSEParseError, APIError, APIConnectionError, APITimeoutError, APIStatusError, BadRequestError, AuthenticationError, PermissionDeniedError, NotFoundError, RequestTimeoutError, ConflictError, UnprocessableEntityError, RateLimitError, InternalServerError, } from "./errors.js";
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/_utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EACN,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,mBAAmB,GACnB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Reusable SDK foundation.
3
+ *
4
+ * Provides base classes for building HTTP API SDKs:
5
+ * - Client: HTTP client with auth and request plumbing
6
+ * - Resource: Base class for API resource groupings
7
+ * - Errors: Complete error hierarchy
8
+ * - SSE: Server-sent events parser
9
+ */
10
+ export { BaseClient } from "./client.js";
11
+ export { APIResource } from "./resource.js";
12
+ export { parseSSEStream } from "./sse.js";
13
+ export { SDKError, SSEParseError, APIError, APIConnectionError, APITimeoutError, APIStatusError, BadRequestError, AuthenticationError, PermissionDeniedError, NotFoundError, RequestTimeoutError, ConflictError, UnprocessableEntityError, RateLimitError, InternalServerError, } from "./errors.js";
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/_utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EACN,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,mBAAmB,GACnB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { BaseClient } from "./client.js";
2
+ export declare class APIResource {
3
+ protected _client: BaseClient;
4
+ constructor(client: BaseClient);
5
+ }
6
+ //# sourceMappingURL=resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/_utils/resource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,qBAAa,WAAW;IACvB,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC;gBAElB,MAAM,EAAE,UAAU;CAG9B"}
@@ -0,0 +1,7 @@
1
+ export class APIResource {
2
+ _client;
3
+ constructor(client) {
4
+ this._client = client;
5
+ }
6
+ }
7
+ //# sourceMappingURL=resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../src/_utils/resource.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,WAAW;IACb,OAAO,CAAa;IAE9B,YAAY,MAAkB;QAC7B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACvB,CAAC;CACD"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * SSE line-stream parser.
3
+ * Converts a ReadableStream of text chunks into parsed JSON event objects.
4
+ */
5
+ /**
6
+ * Parse an SSE text stream into JSON event objects.
7
+ *
8
+ * Mirrors Python SDK's `parse_sse_line_stream`:
9
+ * - Strips each line
10
+ * - Skips empty lines and comment lines (`:` prefix)
11
+ * - Extracts `data:` payloads and parses as JSON
12
+ * - Ignores `event:`, `id:`, `retry:` lines
13
+ */
14
+ export declare function parseSSEStream(stream: ReadableStream<string>): AsyncGenerator<Record<string, unknown>>;
15
+ //# sourceMappingURL=sse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/_utils/sse.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmCH;;;;;;;;GAQG;AACH,wBAAuB,cAAc,CACpC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,GAC5B,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAsBzC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * SSE line-stream parser.
3
+ * Converts a ReadableStream of text chunks into parsed JSON event objects.
4
+ */
5
+ import { SSEParseError } from "./errors.js";
6
+ const DATA_PREFIX = "data:";
7
+ /** Split a ReadableStream<string> of arbitrary text chunks into lines. */
8
+ async function* splitLines(stream) {
9
+ const reader = stream.getReader();
10
+ let buffer = "";
11
+ try {
12
+ while (true) {
13
+ const { done, value } = await reader.read();
14
+ if (done)
15
+ break;
16
+ buffer += value;
17
+ const lines = buffer.split("\n");
18
+ // Last element is either empty (if chunk ended with \n) or a partial line
19
+ buffer = lines.pop() ?? "";
20
+ for (const line of lines) {
21
+ yield line;
22
+ }
23
+ }
24
+ // Flush any remaining partial line
25
+ if (buffer.length > 0) {
26
+ yield buffer;
27
+ }
28
+ }
29
+ finally {
30
+ reader.releaseLock();
31
+ }
32
+ }
33
+ /**
34
+ * Parse an SSE text stream into JSON event objects.
35
+ *
36
+ * Mirrors Python SDK's `parse_sse_line_stream`:
37
+ * - Strips each line
38
+ * - Skips empty lines and comment lines (`:` prefix)
39
+ * - Extracts `data:` payloads and parses as JSON
40
+ * - Ignores `event:`, `id:`, `retry:` lines
41
+ */
42
+ export async function* parseSSEStream(stream) {
43
+ for await (const rawLine of splitLines(stream)) {
44
+ const line = rawLine.trim();
45
+ // Skip empty lines and comments
46
+ if (!line || line.startsWith(":")) {
47
+ continue;
48
+ }
49
+ // Parse data lines
50
+ if (line.startsWith(DATA_PREFIX)) {
51
+ const dataStr = line.slice(DATA_PREFIX.length).trim();
52
+ try {
53
+ yield JSON.parse(dataStr);
54
+ }
55
+ catch {
56
+ throw new SSEParseError("Malformed JSON in SSE event", line);
57
+ }
58
+ }
59
+ // Ignore event:, id:, retry: lines
60
+ }
61
+ }
62
+ //# sourceMappingURL=sse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/_utils/sse.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,GAAG,OAAO,CAAC;AAE5B,0EAA0E;AAC1E,KAAK,SAAS,CAAC,CAAC,UAAU,CAAC,MAA8B;IACxD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;IAClC,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,IAAI,CAAC;QACJ,OAAO,IAAI,EAAE,CAAC;YACb,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI;gBAAE,MAAM;YAEhB,MAAM,IAAI,KAAK,CAAC;YAChB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjC,0EAA0E;YAC1E,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBAC1B,MAAM,IAAI,CAAC;YACZ,CAAC;QACF,CAAC;QAED,mCAAmC;QACnC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,MAAM,CAAC;QACd,CAAC;IACF,CAAC;YAAS,CAAC;QACV,MAAM,CAAC,WAAW,EAAE,CAAC;IACtB,CAAC;AACF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,cAAc,CACpC,MAA8B;IAE9B,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAE5B,gCAAgC;QAChC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,SAAS;QACV,CAAC;QAED,mBAAmB;QACnB,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YAEtD,IAAI,CAAC;gBACJ,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;YACtD,CAAC;YAAC,MAAM,CAAC;gBACR,MAAM,IAAI,aAAa,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAC;YAC9D,CAAC;QACF,CAAC;QAED,mCAAmC;IACpC,CAAC;AACF,CAAC"}