@tiny-fish/sdk 0.0.5 → 0.0.7

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 (56) hide show
  1. package/README.md +231 -206
  2. package/dist/_utils/client.d.ts +14 -9
  3. package/dist/_utils/client.d.ts.map +1 -1
  4. package/dist/_utils/client.js +93 -41
  5. package/dist/_utils/client.js.map +1 -1
  6. package/dist/agent/index.d.ts +3 -3
  7. package/dist/agent/index.d.ts.map +1 -1
  8. package/dist/agent/index.js +39 -65
  9. package/dist/agent/index.js.map +1 -1
  10. package/dist/agent/types.d.ts +258 -127
  11. package/dist/agent/types.d.ts.map +1 -1
  12. package/dist/agent/types.js +133 -41
  13. package/dist/agent/types.js.map +1 -1
  14. package/dist/browser/index.d.ts +16 -0
  15. package/dist/browser/index.d.ts.map +1 -0
  16. package/dist/browser/index.js +29 -0
  17. package/dist/browser/index.js.map +1 -0
  18. package/dist/browser/types.d.ts +17 -0
  19. package/dist/browser/types.d.ts.map +1 -0
  20. package/dist/browser/types.js +15 -0
  21. package/dist/browser/types.js.map +1 -0
  22. package/dist/client.d.ts +6 -0
  23. package/dist/client.d.ts.map +1 -1
  24. package/dist/client.js +9 -0
  25. package/dist/client.js.map +1 -1
  26. package/dist/fetch/index.d.ts +10 -0
  27. package/dist/fetch/index.d.ts.map +1 -0
  28. package/dist/fetch/index.js +37 -0
  29. package/dist/fetch/index.js.map +1 -0
  30. package/dist/fetch/types.d.ts +176 -0
  31. package/dist/fetch/types.d.ts.map +1 -0
  32. package/dist/fetch/types.js +69 -0
  33. package/dist/fetch/types.js.map +1 -0
  34. package/dist/index.d.ts +9 -3
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +8 -2
  37. package/dist/index.js.map +1 -1
  38. package/dist/runs/index.d.ts +1 -1
  39. package/dist/runs/index.d.ts.map +1 -1
  40. package/dist/runs/index.js +25 -16
  41. package/dist/runs/index.js.map +1 -1
  42. package/dist/runs/types.d.ts +114 -66
  43. package/dist/runs/types.d.ts.map +1 -1
  44. package/dist/runs/types.js +48 -6
  45. package/dist/runs/types.js.map +1 -1
  46. package/dist/search/index.d.ts +10 -0
  47. package/dist/search/index.d.ts.map +1 -0
  48. package/dist/search/index.js +29 -0
  49. package/dist/search/index.js.map +1 -0
  50. package/dist/search/types.d.ts +34 -0
  51. package/dist/search/types.d.ts.map +1 -0
  52. package/dist/search/types.js +25 -0
  53. package/dist/search/types.js.map +1 -0
  54. package/dist/version.d.ts +1 -1
  55. package/dist/version.js +1 -1
  56. package/package.json +3 -2
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import { SDKError } from "../_utils/errors.js";
5
5
  import { APIResource } from "../_utils/resource.js";
6
+ import { runListParamsSchema, runListResponseSchema, runSchema, } from "./types.js";
6
7
  /** Retrieve and list automation runs. */
7
8
  export class RunsResource extends APIResource {
8
9
  /**
@@ -17,7 +18,8 @@ export class RunsResource extends APIResource {
17
18
  if (typeof runId !== "string" || !runId.trim()) {
18
19
  throw new SDKError("run_id must be a non-empty string");
19
20
  }
20
- return this._client.get(`/v1/runs/${encodeURIComponent(runId)}`);
21
+ const response = await this._client.get(`/v1/runs/${encodeURIComponent(runId)}`);
22
+ return runSchema.parse(response);
21
23
  }
22
24
  /**
23
25
  * List automation runs, with optional filtering and pagination.
@@ -26,23 +28,30 @@ export class RunsResource extends APIResource {
26
28
  * and pagination info (total count, next cursor).
27
29
  */
28
30
  async list(params = {}) {
31
+ const parsed = runListParamsSchema.safeParse(params);
32
+ if (!parsed.success) {
33
+ const issue = parsed.error.issues[0];
34
+ throw new SDKError(issue?.message ?? "Invalid run list request");
35
+ }
36
+ const validParams = parsed.data;
29
37
  const queryParams = {};
30
- if (params.cursor !== undefined)
31
- queryParams["cursor"] = params.cursor;
32
- if (params.limit !== undefined)
33
- queryParams["limit"] = params.limit;
34
- if (params.status !== undefined)
35
- queryParams["status"] = params.status;
36
- if (params.goal !== undefined)
37
- queryParams["goal"] = params.goal;
38
- if (params.created_after !== undefined)
39
- queryParams["created_after"] = params.created_after;
40
- if (params.created_before !== undefined)
41
- queryParams["created_before"] = params.created_before;
42
- if (params.sort_direction !== undefined)
43
- queryParams["sort_direction"] = params.sort_direction;
38
+ if (validParams.cursor !== undefined)
39
+ queryParams["cursor"] = validParams.cursor;
40
+ if (validParams.limit !== undefined)
41
+ queryParams["limit"] = validParams.limit;
42
+ if (validParams.status !== undefined)
43
+ queryParams["status"] = validParams.status;
44
+ if (validParams.goal !== undefined)
45
+ queryParams["goal"] = validParams.goal;
46
+ if (validParams.created_after !== undefined)
47
+ queryParams["created_after"] = validParams.created_after;
48
+ if (validParams.created_before !== undefined)
49
+ queryParams["created_before"] = validParams.created_before;
50
+ if (validParams.sort_direction !== undefined)
51
+ queryParams["sort_direction"] = validParams.sort_direction;
44
52
  const hasParams = Object.keys(queryParams).length > 0;
45
- return this._client.get("/v1/runs", hasParams ? { params: queryParams } : undefined);
53
+ const response = await this._client.get("/v1/runs", hasParams ? { params: queryParams } : undefined);
54
+ return runListResponseSchema.parse(response);
46
55
  }
47
56
  }
48
57
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runs/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,yCAAyC;AACzC,MAAM,OAAO,YAAa,SAAQ,WAAW;IAC5C;;;;;;;OAOG;IACH,KAAK,CAAC,GAAG,CAAC,KAAa;QACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAChD,MAAM,IAAI,QAAQ,CAAC,mCAAmC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAM,YAAY,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,SAAwB,EAAE;QACpC,MAAM,WAAW,GAA8C,EAAE,CAAC;QAClE,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;YAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QACvE,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;YAAE,WAAW,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QACpE,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;YAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QACvE,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;YAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;QACjE,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS;YAAE,WAAW,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC;QAC5F,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS;YAAE,WAAW,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC;QAC/F,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS;YAAE,WAAW,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC;QAE/F,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CACtB,UAAU,EACV,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAC/C,CAAC;IACH,CAAC;CACD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runs/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAIN,mBAAmB,EACnB,qBAAqB,EACrB,SAAS,GACT,MAAM,YAAY,CAAC;AAEpB,yCAAyC;AACzC,MAAM,OAAO,YAAa,SAAQ,WAAW;IAC5C;;;;;;;OAOG;IACH,KAAK,CAAC,GAAG,CAAC,KAAa;QACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAChD,MAAM,IAAI,QAAQ,CAAC,mCAAmC,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjF,OAAO,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,SAAwB,EAAE;QACpC,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,IAAI,0BAA0B,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC;QAChC,MAAM,WAAW,GAA8C,EAAE,CAAC;QAClE,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS;YAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC;QACjF,IAAI,WAAW,CAAC,KAAK,KAAK,SAAS;YAAE,WAAW,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC;QAC9E,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS;YAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC;QACjF,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS;YAAE,WAAW,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC;QAC3E,IAAI,WAAW,CAAC,aAAa,KAAK,SAAS;YAC1C,WAAW,CAAC,eAAe,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC;QAC1D,IAAI,WAAW,CAAC,cAAc,KAAK,SAAS;YAC3C,WAAW,CAAC,gBAAgB,CAAC,GAAG,WAAW,CAAC,cAAc,CAAC;QAC5D,IAAI,WAAW,CAAC,cAAc,KAAK,SAAS;YAC3C,WAAW,CAAC,gBAAgB,CAAC,GAAG,WAAW,CAAC,cAAc,CAAC;QAE5D,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CACtC,UAAU,EACV,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAC/C,CAAC;QACF,OAAO,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;CACD"}
@@ -1,75 +1,123 @@
1
1
  /**
2
- * Runs management request/response types.
2
+ * Runs management request/response types and schemas.
3
3
  */
4
- import type { RunError, RunStatus } from "../agent/types.js";
4
+ import { z } from "zod";
5
5
  /** Sort order for list queries. */
6
- export declare enum SortDirection {
7
- ASC = "asc",
8
- DESC = "desc"
9
- }
6
+ export declare const SortDirection: {
7
+ readonly ASC: "asc";
8
+ readonly DESC: "desc";
9
+ };
10
+ export declare const sortDirectionSchema: z.ZodEnum<{
11
+ readonly ASC: "asc";
12
+ readonly DESC: "desc";
13
+ }>;
14
+ export type SortDirection = z.infer<typeof sortDirectionSchema>;
10
15
  /** Browser configuration used for a run. */
11
- export interface BrowserConfig {
12
- /** Whether proxy was enabled. */
13
- proxy_enabled: boolean | null;
14
- /** Country code for proxy. */
15
- proxy_country_code: string | null;
16
- }
16
+ export declare const browserConfigSchema: z.ZodObject<{
17
+ proxy_enabled: z.ZodNullable<z.ZodBoolean>;
18
+ proxy_country_code: z.ZodNullable<z.ZodString>;
19
+ }, z.core.$strip>;
20
+ export type BrowserConfig = z.infer<typeof browserConfigSchema>;
17
21
  /** A single automation run with full details. */
18
- export interface Run {
19
- /** Unique identifier for the run. */
20
- run_id: string;
21
- /** Current status of the run. */
22
- status: RunStatus;
23
- /** Natural language goal for this automation run. */
24
- goal: string;
25
- /** ISO 8601 timestamp when run was created. */
26
- created_at: string;
27
- /** ISO 8601 timestamp when run started executing. */
28
- started_at: string | null;
29
- /** ISO 8601 timestamp when run finished executing. */
30
- finished_at: string | null;
31
- /** Number of steps taken during the automation. */
32
- num_of_steps: number;
33
- /** Extracted data from the automation run. `null` if not completed or failed. */
34
- result: Record<string, unknown> | null;
35
- /** Error details. `null` if the run succeeded or is still running. */
36
- error: RunError | null;
37
- /** URL to watch live browser session (available while running). */
38
- streaming_url: string | null;
39
- /** Browser configuration used for the run. */
40
- browser_config: BrowserConfig | null;
41
- }
22
+ export declare const runSchema: z.ZodObject<{
23
+ run_id: z.ZodString;
24
+ status: z.ZodEnum<{
25
+ readonly PENDING: "PENDING";
26
+ readonly RUNNING: "RUNNING";
27
+ readonly COMPLETED: "COMPLETED";
28
+ readonly FAILED: "FAILED";
29
+ readonly CANCELLED: "CANCELLED";
30
+ }>;
31
+ goal: z.ZodString;
32
+ created_at: z.ZodString;
33
+ started_at: z.ZodNullable<z.ZodString>;
34
+ finished_at: z.ZodNullable<z.ZodString>;
35
+ num_of_steps: z.ZodNullable<z.ZodNumber>;
36
+ result: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
37
+ error: z.ZodNullable<z.ZodObject<{
38
+ message: z.ZodString;
39
+ category: z.ZodEnum<{
40
+ readonly SYSTEM_FAILURE: "SYSTEM_FAILURE";
41
+ readonly AGENT_FAILURE: "AGENT_FAILURE";
42
+ readonly UNKNOWN: "UNKNOWN";
43
+ }>;
44
+ retry_after: z.ZodNullable<z.ZodNumber>;
45
+ help_url: z.ZodOptional<z.ZodString>;
46
+ help_message: z.ZodOptional<z.ZodString>;
47
+ }, z.core.$strip>>;
48
+ streaming_url: z.ZodNullable<z.ZodString>;
49
+ browser_config: z.ZodNullable<z.ZodObject<{
50
+ proxy_enabled: z.ZodNullable<z.ZodBoolean>;
51
+ proxy_country_code: z.ZodNullable<z.ZodString>;
52
+ }, z.core.$strip>>;
53
+ }, z.core.$strip>;
54
+ export type Run = z.infer<typeof runSchema>;
42
55
  /** Pagination metadata for list responses. */
43
- export interface PaginationInfo {
44
- /** Total number of runs matching the current filters. */
45
- total: number;
46
- /** Whether there are more results after this page. */
47
- has_more: boolean;
48
- /** Cursor for fetching next page. `null` if no more results. */
49
- next_cursor: string | null;
50
- }
56
+ export declare const paginationInfoSchema: z.ZodObject<{
57
+ total: z.ZodNumber;
58
+ has_more: z.ZodBoolean;
59
+ next_cursor: z.ZodNullable<z.ZodString>;
60
+ }, z.core.$strip>;
61
+ export type PaginationInfo = z.infer<typeof paginationInfoSchema>;
51
62
  /** Paginated list of automation runs. */
52
- export interface RunListResponse {
53
- /** Array of runs. */
54
- data: Run[];
55
- /** Pagination information. */
56
- pagination: PaginationInfo;
57
- }
63
+ export declare const runListResponseSchema: z.ZodObject<{
64
+ data: z.ZodArray<z.ZodObject<{
65
+ run_id: z.ZodString;
66
+ status: z.ZodEnum<{
67
+ readonly PENDING: "PENDING";
68
+ readonly RUNNING: "RUNNING";
69
+ readonly COMPLETED: "COMPLETED";
70
+ readonly FAILED: "FAILED";
71
+ readonly CANCELLED: "CANCELLED";
72
+ }>;
73
+ goal: z.ZodString;
74
+ created_at: z.ZodString;
75
+ started_at: z.ZodNullable<z.ZodString>;
76
+ finished_at: z.ZodNullable<z.ZodString>;
77
+ num_of_steps: z.ZodNullable<z.ZodNumber>;
78
+ result: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
79
+ error: z.ZodNullable<z.ZodObject<{
80
+ message: z.ZodString;
81
+ category: z.ZodEnum<{
82
+ readonly SYSTEM_FAILURE: "SYSTEM_FAILURE";
83
+ readonly AGENT_FAILURE: "AGENT_FAILURE";
84
+ readonly UNKNOWN: "UNKNOWN";
85
+ }>;
86
+ retry_after: z.ZodNullable<z.ZodNumber>;
87
+ help_url: z.ZodOptional<z.ZodString>;
88
+ help_message: z.ZodOptional<z.ZodString>;
89
+ }, z.core.$strip>>;
90
+ streaming_url: z.ZodNullable<z.ZodString>;
91
+ browser_config: z.ZodNullable<z.ZodObject<{
92
+ proxy_enabled: z.ZodNullable<z.ZodBoolean>;
93
+ proxy_country_code: z.ZodNullable<z.ZodString>;
94
+ }, z.core.$strip>>;
95
+ }, z.core.$strip>>;
96
+ pagination: z.ZodObject<{
97
+ total: z.ZodNumber;
98
+ has_more: z.ZodBoolean;
99
+ next_cursor: z.ZodNullable<z.ZodString>;
100
+ }, z.core.$strip>;
101
+ }, z.core.$strip>;
102
+ export type RunListResponse = z.infer<typeof runListResponseSchema>;
58
103
  /** Parameters for listing runs. */
59
- export interface RunListParams {
60
- /** Pagination cursor from a previous response's `next_cursor` field. */
61
- cursor?: string;
62
- /** Maximum number of runs to return. */
63
- limit?: number;
64
- /** Filter by run status. */
65
- status?: RunStatus;
66
- /** Filter by goal text. */
67
- goal?: string;
68
- /** Filter runs created after this ISO timestamp. */
69
- created_after?: string;
70
- /** Filter runs created before this ISO timestamp. */
71
- created_before?: string;
72
- /** Sort order — `"asc"` or `"desc"`. */
73
- sort_direction?: SortDirection;
74
- }
104
+ export declare const runListParamsSchema: z.ZodObject<{
105
+ cursor: z.ZodOptional<z.ZodString>;
106
+ limit: z.ZodOptional<z.ZodNumber>;
107
+ status: z.ZodOptional<z.ZodEnum<{
108
+ readonly PENDING: "PENDING";
109
+ readonly RUNNING: "RUNNING";
110
+ readonly COMPLETED: "COMPLETED";
111
+ readonly FAILED: "FAILED";
112
+ readonly CANCELLED: "CANCELLED";
113
+ }>>;
114
+ goal: z.ZodOptional<z.ZodString>;
115
+ created_after: z.ZodOptional<z.ZodString>;
116
+ created_before: z.ZodOptional<z.ZodString>;
117
+ sort_direction: z.ZodOptional<z.ZodEnum<{
118
+ readonly ASC: "asc";
119
+ readonly DESC: "desc";
120
+ }>>;
121
+ }, z.core.$strict>;
122
+ export type RunListParams = z.infer<typeof runListParamsSchema>;
75
123
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runs/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE7D,mCAAmC;AACnC,oBAAY,aAAa;IACxB,GAAG,QAAQ;IACX,IAAI,SAAS;CACb;AAED,4CAA4C;AAC5C,MAAM,WAAW,aAAa;IAC7B,iCAAiC;IACjC,aAAa,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,8BAA8B;IAC9B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,iDAAiD;AACjD,MAAM,WAAW,GAAG;IACnB,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,MAAM,EAAE,SAAS,CAAC;IAClB,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,sDAAsD;IACtD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,mDAAmD;IACnD,YAAY,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACvC,sEAAsE;IACtE,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;IACvB,mEAAmE;IACnE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,8CAA8C;IAC9C,cAAc,EAAE,aAAa,GAAG,IAAI,CAAC;CACrC;AAED,8CAA8C;AAC9C,MAAM,WAAW,cAAc;IAC9B,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,QAAQ,EAAE,OAAO,CAAC;IAClB,gEAAgE;IAChE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,yCAAyC;AACzC,MAAM,WAAW,eAAe;IAC/B,qBAAqB;IACrB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,8BAA8B;IAC9B,UAAU,EAAE,cAAc,CAAC;CAC3B;AAED,mCAAmC;AACnC,MAAM,WAAW,aAAa;IAC7B,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,2BAA2B;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,cAAc,CAAC,EAAE,aAAa,CAAC;CAC/B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runs/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,mCAAmC;AACnC,eAAO,MAAM,aAAa;;;CAGhB,CAAC;AACX,eAAO,MAAM,mBAAmB;;;EAAwB,CAAC;AACzD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,4CAA4C;AAC5C,eAAO,MAAM,mBAAmB;;;iBAG9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,iDAAiD;AACjD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAYpB,CAAC;AACH,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAE5C,8CAA8C;AAC9C,eAAO,MAAM,oBAAoB;;;;iBAI/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,yCAAyC;AACzC,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,mCAAmC;AACnC,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;kBAQ9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -1,10 +1,52 @@
1
1
  /**
2
- * Runs management request/response types.
2
+ * Runs management request/response types and schemas.
3
3
  */
4
+ import { z } from "zod";
5
+ import { runErrorSchema, runStatusSchema } from "../agent/types.js";
4
6
  /** Sort order for list queries. */
5
- export var SortDirection;
6
- (function (SortDirection) {
7
- SortDirection["ASC"] = "asc";
8
- SortDirection["DESC"] = "desc";
9
- })(SortDirection || (SortDirection = {}));
7
+ export const SortDirection = {
8
+ ASC: "asc",
9
+ DESC: "desc",
10
+ };
11
+ export const sortDirectionSchema = z.enum(SortDirection);
12
+ /** Browser configuration used for a run. */
13
+ export const browserConfigSchema = z.object({
14
+ proxy_enabled: z.boolean().nullable(),
15
+ proxy_country_code: z.string().nullable(),
16
+ });
17
+ /** A single automation run with full details. */
18
+ export const runSchema = z.object({
19
+ run_id: z.string(),
20
+ status: runStatusSchema,
21
+ goal: z.string(),
22
+ created_at: z.string(),
23
+ started_at: z.string().nullable(),
24
+ finished_at: z.string().nullable(),
25
+ num_of_steps: z.number().nullable(),
26
+ result: z.record(z.string(), z.unknown()).nullable(),
27
+ error: runErrorSchema.nullable(),
28
+ streaming_url: z.string().nullable(),
29
+ browser_config: browserConfigSchema.nullable(),
30
+ });
31
+ /** Pagination metadata for list responses. */
32
+ export const paginationInfoSchema = z.object({
33
+ total: z.number(),
34
+ has_more: z.boolean(),
35
+ next_cursor: z.string().nullable(),
36
+ });
37
+ /** Paginated list of automation runs. */
38
+ export const runListResponseSchema = z.object({
39
+ data: z.array(runSchema),
40
+ pagination: paginationInfoSchema,
41
+ });
42
+ /** Parameters for listing runs. */
43
+ export const runListParamsSchema = z.strictObject({
44
+ cursor: z.string().optional(),
45
+ limit: z.number().optional(),
46
+ status: runStatusSchema.optional(),
47
+ goal: z.string().optional(),
48
+ created_after: z.string().optional(),
49
+ created_before: z.string().optional(),
50
+ sort_direction: sortDirectionSchema.optional(),
51
+ });
10
52
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/runs/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,mCAAmC;AACnC,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACxB,4BAAW,CAAA;IACX,8BAAa,CAAA;AACd,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/runs/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpE,mCAAmC;AACnC,MAAM,CAAC,MAAM,aAAa,GAAG;IAC5B,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;CACH,CAAC;AACX,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAGzD,4CAA4C;AAC5C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACrC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAC;AAGH,iDAAiD;AACjD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,MAAM,EAAE,eAAe;IACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpD,KAAK,EAAE,cAAc,CAAC,QAAQ,EAAE;IAChC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,cAAc,EAAE,mBAAmB,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC;AAGH,8CAA8C;AAC9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;IACrB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAGH,yCAAyC;AACzC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;IACxB,UAAU,EAAE,oBAAoB;CAChC,CAAC,CAAC;AAGH,mCAAmC;AACnC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,YAAY,CAAC;IACjD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,MAAM,EAAE,eAAe,CAAC,QAAQ,EAAE;IAClC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,cAAc,EAAE,mBAAmB,CAAC,QAAQ,EAAE;CAC9C,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Search API resource.
3
+ */
4
+ import { APIResource } from "../_utils/resource.js";
5
+ import { type SearchQueryParams, type SearchQueryResponse } from "./types.js";
6
+ /** Query the Search API. */
7
+ export declare class SearchResource extends APIResource {
8
+ query(params: SearchQueryParams): Promise<SearchQueryResponse>;
9
+ }
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/search/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EAGxB,MAAM,YAAY,CAAC;AAEpB,4BAA4B;AAC5B,qBAAa,cAAe,SAAQ,WAAW;IACxC,KAAK,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAmBpE"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Search API resource.
3
+ */
4
+ import { SDKError } from "../_utils/errors.js";
5
+ import { APIResource } from "../_utils/resource.js";
6
+ import { searchQueryParamsSchema, searchQueryResponseSchema, } from "./types.js";
7
+ /** Query the Search API. */
8
+ export class SearchResource extends APIResource {
9
+ async query(params) {
10
+ const parsed = searchQueryParamsSchema.safeParse(params);
11
+ if (!parsed.success) {
12
+ const issue = parsed.error.issues[0];
13
+ throw new SDKError(issue?.message ?? "Invalid search request");
14
+ }
15
+ const validParams = parsed.data;
16
+ const queryParams = {
17
+ query: validParams.query,
18
+ };
19
+ if (validParams.location !== undefined)
20
+ queryParams["location"] = validParams.location;
21
+ if (validParams.language !== undefined)
22
+ queryParams["language"] = validParams.language;
23
+ const response = await this._client.get("/v1/search", {
24
+ params: queryParams,
25
+ });
26
+ return searchQueryResponseSchema.parse(response);
27
+ }
28
+ }
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/search/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAGN,uBAAuB,EACvB,yBAAyB,GACzB,MAAM,YAAY,CAAC;AAEpB,4BAA4B;AAC5B,MAAM,OAAO,cAAe,SAAQ,WAAW;IAC9C,KAAK,CAAC,KAAK,CAAC,MAAyB;QACpC,MAAM,MAAM,GAAG,uBAAuB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,IAAI,wBAAwB,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC;QAEhC,MAAM,WAAW,GAA8C;YAC9D,KAAK,EAAE,WAAW,CAAC,KAAK;SACxB,CAAC;QACF,IAAI,WAAW,CAAC,QAAQ,KAAK,SAAS;YAAE,WAAW,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC;QACvF,IAAI,WAAW,CAAC,QAAQ,KAAK,SAAS;YAAE,WAAW,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC;QAEvF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE;YACrD,MAAM,EAAE,WAAW;SACnB,CAAC,CAAC;QACH,OAAO,yBAAyB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;CACD"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Search API request/response types and schemas.
3
+ */
4
+ import { z } from "zod";
5
+ /** Parameters for `search.query(...)`. */
6
+ export declare const searchQueryParamsSchema: z.ZodObject<{
7
+ query: z.ZodString;
8
+ location: z.ZodOptional<z.ZodString>;
9
+ language: z.ZodOptional<z.ZodString>;
10
+ }, z.core.$strict>;
11
+ export type SearchQueryParams = z.infer<typeof searchQueryParamsSchema>;
12
+ /** A single search result item. */
13
+ export declare const searchResultSchema: z.ZodObject<{
14
+ position: z.ZodNumber;
15
+ site_name: z.ZodString;
16
+ snippet: z.ZodString;
17
+ title: z.ZodString;
18
+ url: z.ZodString;
19
+ }, z.core.$strip>;
20
+ export type SearchResult = z.infer<typeof searchResultSchema>;
21
+ /** Public response for `GET /v1/search`. */
22
+ export declare const searchQueryResponseSchema: z.ZodObject<{
23
+ query: z.ZodString;
24
+ results: z.ZodArray<z.ZodObject<{
25
+ position: z.ZodNumber;
26
+ site_name: z.ZodString;
27
+ snippet: z.ZodString;
28
+ title: z.ZodString;
29
+ url: z.ZodString;
30
+ }, z.core.$strip>>;
31
+ total_results: z.ZodNumber;
32
+ }, z.core.$strip>;
33
+ export type SearchQueryResponse = z.infer<typeof searchQueryResponseSchema>;
34
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/search/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,0CAA0C;AAC1C,eAAO,MAAM,uBAAuB;;;;kBAIlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,mCAAmC;AACnC,eAAO,MAAM,kBAAkB;;;;;;iBAM7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,4CAA4C;AAC5C,eAAO,MAAM,yBAAyB;;;;;;;;;;iBAIpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Search API request/response types and schemas.
3
+ */
4
+ import { z } from "zod";
5
+ /** Parameters for `search.query(...)`. */
6
+ export const searchQueryParamsSchema = z.strictObject({
7
+ query: z.string().trim().min(1, "query must be a non-empty string"),
8
+ location: z.string().optional(),
9
+ language: z.string().optional(),
10
+ });
11
+ /** A single search result item. */
12
+ export const searchResultSchema = z.object({
13
+ position: z.number(),
14
+ site_name: z.string(),
15
+ snippet: z.string(),
16
+ title: z.string(),
17
+ url: z.string(),
18
+ });
19
+ /** Public response for `GET /v1/search`. */
20
+ export const searchQueryResponseSchema = z.object({
21
+ query: z.string(),
22
+ results: z.array(searchResultSchema),
23
+ total_results: z.number(),
24
+ });
25
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/search/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,0CAA0C;AAC1C,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,YAAY,CAAC;IACrD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,kCAAkC,CAAC;IACnE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAGH,mCAAmC;AACnC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;CACf,CAAC,CAAC;AAGH,4CAA4C;AAC5C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;IACpC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;CACzB,CAAC,CAAC"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.0.5";
1
+ export declare const VERSION = "0.0.7";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  // Auto-generated by scripts/generate-version.ts — do not edit manually.
2
- export const VERSION = "0.0.5";
2
+ export const VERSION = "0.0.7";
3
3
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tiny-fish/sdk",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "description": "TinyFish TypeScript SDK — State-of-the-art web agents in an API",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -33,7 +33,8 @@
33
33
  "typescript": "^5"
34
34
  },
35
35
  "dependencies": {
36
- "p-retry": "^7.1.1"
36
+ "p-retry": "^7.1.1",
37
+ "zod": "^4.3.6"
37
38
  },
38
39
  "publishConfig": {
39
40
  "registry": "https://registry.npmjs.org/",