@tabstack/sdk 1.0.0 → 1.0.5

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 (101) hide show
  1. package/LICENSE +22 -11
  2. package/README.md +17 -44
  3. package/dist/cjs/{automate.d.ts → agent.d.ts} +10 -10
  4. package/dist/cjs/agent.d.ts.map +1 -0
  5. package/dist/cjs/{automate.js → agent.js} +11 -11
  6. package/dist/cjs/agent.js.map +1 -0
  7. package/dist/cjs/agent.test.d.ts +5 -0
  8. package/dist/cjs/agent.test.d.ts.map +1 -0
  9. package/dist/cjs/{automate.test.js → agent.test.js} +32 -32
  10. package/dist/cjs/agent.test.js.map +1 -0
  11. package/dist/cjs/client.d.ts +13 -13
  12. package/dist/cjs/client.d.ts.map +1 -1
  13. package/dist/cjs/client.js +12 -12
  14. package/dist/cjs/client.js.map +1 -1
  15. package/dist/cjs/client.test.d.ts +1 -1
  16. package/dist/cjs/client.test.js +50 -51
  17. package/dist/cjs/client.test.js.map +1 -1
  18. package/dist/cjs/exceptions.d.ts +9 -9
  19. package/dist/cjs/exceptions.js +13 -13
  20. package/dist/cjs/exceptions.test.js +30 -30
  21. package/dist/cjs/extract.d.ts +2 -57
  22. package/dist/cjs/extract.d.ts.map +1 -1
  23. package/dist/cjs/extract.js +2 -60
  24. package/dist/cjs/extract.js.map +1 -1
  25. package/dist/cjs/extract.test.js +0 -114
  26. package/dist/cjs/extract.test.js.map +1 -1
  27. package/dist/cjs/generate.d.ts +1 -1
  28. package/dist/cjs/generate.js +1 -1
  29. package/dist/cjs/index.d.ts +9 -9
  30. package/dist/cjs/index.d.ts.map +1 -1
  31. package/dist/cjs/index.js +9 -9
  32. package/dist/cjs/index.js.map +1 -1
  33. package/dist/cjs/types.d.ts +1 -1
  34. package/dist/cjs/types.js +1 -1
  35. package/dist/cjs/util/http.d.ts +1 -1
  36. package/dist/cjs/util/http.js +4 -4
  37. package/dist/cjs/util/http.test.js +5 -5
  38. package/dist/esm/{automate.d.ts → agent.d.ts} +10 -10
  39. package/dist/esm/agent.d.ts.map +1 -0
  40. package/dist/esm/{automate.js → agent.js} +9 -9
  41. package/dist/esm/agent.js.map +1 -0
  42. package/dist/esm/agent.test.d.ts +5 -0
  43. package/dist/esm/agent.test.d.ts.map +1 -0
  44. package/dist/esm/{automate.test.js → agent.test.js} +32 -32
  45. package/dist/esm/agent.test.js.map +1 -0
  46. package/dist/esm/client.d.ts +13 -13
  47. package/dist/esm/client.d.ts.map +1 -1
  48. package/dist/esm/client.js +10 -10
  49. package/dist/esm/client.js.map +1 -1
  50. package/dist/esm/client.test.d.ts +1 -1
  51. package/dist/esm/client.test.js +51 -52
  52. package/dist/esm/client.test.js.map +1 -1
  53. package/dist/esm/exceptions.d.ts +9 -9
  54. package/dist/esm/exceptions.js +11 -11
  55. package/dist/esm/exceptions.test.js +31 -31
  56. package/dist/esm/extract.d.ts +2 -57
  57. package/dist/esm/extract.d.ts.map +1 -1
  58. package/dist/esm/extract.js +2 -60
  59. package/dist/esm/extract.js.map +1 -1
  60. package/dist/esm/extract.test.js +0 -114
  61. package/dist/esm/extract.test.js.map +1 -1
  62. package/dist/esm/generate.d.ts +1 -1
  63. package/dist/esm/generate.js +1 -1
  64. package/dist/esm/index.d.ts +9 -9
  65. package/dist/esm/index.d.ts.map +1 -1
  66. package/dist/esm/index.js +7 -7
  67. package/dist/esm/index.js.map +1 -1
  68. package/dist/esm/types.d.ts +1 -1
  69. package/dist/esm/types.js +1 -1
  70. package/dist/esm/util/http.d.ts +1 -1
  71. package/dist/esm/util/http.js +5 -5
  72. package/dist/esm/util/http.test.js +6 -6
  73. package/dist/types/{automate.d.ts → agent.d.ts} +10 -10
  74. package/dist/types/agent.d.ts.map +1 -0
  75. package/dist/types/agent.test.d.ts +5 -0
  76. package/dist/types/agent.test.d.ts.map +1 -0
  77. package/dist/types/client.d.ts +13 -13
  78. package/dist/types/client.d.ts.map +1 -1
  79. package/dist/types/client.test.d.ts +1 -1
  80. package/dist/types/exceptions.d.ts +9 -9
  81. package/dist/types/extract.d.ts +2 -57
  82. package/dist/types/extract.d.ts.map +1 -1
  83. package/dist/types/generate.d.ts +1 -1
  84. package/dist/types/index.d.ts +9 -9
  85. package/dist/types/index.d.ts.map +1 -1
  86. package/dist/types/types.d.ts +1 -1
  87. package/dist/types/util/http.d.ts +1 -1
  88. package/package.json +5 -5
  89. package/dist/cjs/automate.d.ts.map +0 -1
  90. package/dist/cjs/automate.js.map +0 -1
  91. package/dist/cjs/automate.test.d.ts +0 -5
  92. package/dist/cjs/automate.test.d.ts.map +0 -1
  93. package/dist/cjs/automate.test.js.map +0 -1
  94. package/dist/esm/automate.d.ts.map +0 -1
  95. package/dist/esm/automate.js.map +0 -1
  96. package/dist/esm/automate.test.d.ts +0 -5
  97. package/dist/esm/automate.test.d.ts.map +0 -1
  98. package/dist/esm/automate.test.js.map +0 -1
  99. package/dist/types/automate.d.ts.map +0 -1
  100. package/dist/types/automate.test.d.ts +0 -5
  101. package/dist/types/automate.test.d.ts.map +0 -1
package/dist/cjs/index.js CHANGED
@@ -1,15 +1,15 @@
1
1
  "use strict";
2
2
  /**
3
- * TABStack AI TypeScript/JavaScript SDK
3
+ * Tabstack TypeScript/JavaScript SDK
4
4
  *
5
- * This SDK provides a TypeScript/JavaScript interface to the TABStack AI API for web
5
+ * This SDK provides a TypeScript/JavaScript interface to the Tabstack API for web
6
6
  * content extraction, AI-powered content generation, and browser automation.
7
7
  *
8
8
  * @example
9
9
  * ```typescript
10
- * import { TABStack } from '@tabstack/sdk';
10
+ * import { Tabstack } from '@tabstack/sdk';
11
11
  *
12
- * const tabs = new TABStack({
12
+ * const tabs = new Tabstack({
13
13
  * apiKey: process.env.TABSTACK_API_KEY!
14
14
  * });
15
15
  *
@@ -42,17 +42,17 @@
42
42
  * @packageDocumentation
43
43
  */
44
44
  Object.defineProperty(exports, "__esModule", { value: true });
45
- exports.APIError = exports.ServiceUnavailableError = exports.ServerError = exports.InvalidURLError = exports.UnauthorizedError = exports.BadRequestError = exports.TABStackError = exports.EventData = exports.AutomateEvent = exports.JsonResponse = exports.MarkdownResponse = exports.Metadata = exports.Automate = exports.Generate = exports.Extract = exports.TABStack = void 0;
45
+ exports.APIError = exports.ServiceUnavailableError = exports.ServerError = exports.InvalidURLError = exports.UnauthorizedError = exports.BadRequestError = exports.TabstackError = exports.EventData = exports.AutomateEvent = exports.JsonResponse = exports.MarkdownResponse = exports.Metadata = exports.Agent = exports.Generate = exports.Extract = exports.Tabstack = void 0;
46
46
  // Main client
47
47
  var client_1 = require("./client");
48
- Object.defineProperty(exports, "TABStack", { enumerable: true, get: function () { return client_1.TABStack; } });
48
+ Object.defineProperty(exports, "Tabstack", { enumerable: true, get: function () { return client_1.Tabstack; } });
49
49
  // Operators
50
50
  var extract_1 = require("./extract");
51
51
  Object.defineProperty(exports, "Extract", { enumerable: true, get: function () { return extract_1.Extract; } });
52
52
  var generate_1 = require("./generate");
53
53
  Object.defineProperty(exports, "Generate", { enumerable: true, get: function () { return generate_1.Generate; } });
54
- var automate_1 = require("./automate");
55
- Object.defineProperty(exports, "Automate", { enumerable: true, get: function () { return automate_1.Automate; } });
54
+ var agent_1 = require("./agent");
55
+ Object.defineProperty(exports, "Agent", { enumerable: true, get: function () { return agent_1.Agent; } });
56
56
  // Response types
57
57
  var types_1 = require("./types");
58
58
  Object.defineProperty(exports, "Metadata", { enumerable: true, get: function () { return types_1.Metadata; } });
@@ -62,7 +62,7 @@ Object.defineProperty(exports, "AutomateEvent", { enumerable: true, get: functio
62
62
  Object.defineProperty(exports, "EventData", { enumerable: true, get: function () { return types_1.EventData; } });
63
63
  // Exceptions
64
64
  var exceptions_1 = require("./exceptions");
65
- Object.defineProperty(exports, "TABStackError", { enumerable: true, get: function () { return exceptions_1.TABStackError; } });
65
+ Object.defineProperty(exports, "TabstackError", { enumerable: true, get: function () { return exceptions_1.TabstackError; } });
66
66
  Object.defineProperty(exports, "BadRequestError", { enumerable: true, get: function () { return exceptions_1.BadRequestError; } });
67
67
  Object.defineProperty(exports, "UnauthorizedError", { enumerable: true, get: function () { return exceptions_1.UnauthorizedError; } });
68
68
  Object.defineProperty(exports, "InvalidURLError", { enumerable: true, get: function () { return exceptions_1.InvalidURLError; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;;;AAEH,cAAc;AACd,mCAAqD;AAA5C,kGAAA,QAAQ,OAAA;AAEjB,YAAY;AACZ,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAChB,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AAEjB,iBAAiB;AACjB,iCAOiB;AANf,iGAAA,QAAQ,OAAA;AAER,yGAAA,gBAAgB,OAAA;AAChB,qGAAA,YAAY,OAAA;AACZ,sGAAA,aAAa,OAAA;AACb,kGAAA,SAAS,OAAA;AAGX,aAAa;AACb,2CAQsB;AAPpB,2GAAA,aAAa,OAAA;AACb,6GAAA,eAAe,OAAA;AACf,+GAAA,iBAAiB,OAAA;AACjB,6GAAA,eAAe,OAAA;AACf,yGAAA,WAAW,OAAA;AACX,qHAAA,uBAAuB,OAAA;AACvB,sGAAA,QAAQ,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;;;AAEH,cAAc;AACd,mCAAqD;AAA5C,kGAAA,QAAQ,OAAA;AAEjB,YAAY;AACZ,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAChB,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AAEd,iBAAiB;AACjB,iCAOiB;AANf,iGAAA,QAAQ,OAAA;AAER,yGAAA,gBAAgB,OAAA;AAChB,qGAAA,YAAY,OAAA;AACZ,sGAAA,aAAa,OAAA;AACb,kGAAA,SAAS,OAAA;AAGX,aAAa;AACb,2CAQsB;AAPpB,2GAAA,aAAa,OAAA;AACb,6GAAA,eAAe,OAAA;AACf,+GAAA,iBAAiB,OAAA;AACjB,6GAAA,eAAe,OAAA;AACf,yGAAA,WAAW,OAAA;AACX,qHAAA,uBAAuB,OAAA;AACvB,sGAAA,QAAQ,OAAA"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Type definitions and response models for TABStack AI SDK
2
+ * Type definitions and response models for Tabstack SDK
3
3
  */
4
4
  /**
5
5
  * Metadata extracted from a web page
package/dist/cjs/types.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * Type definitions and response models for TABStack AI SDK
3
+ * Type definitions and response models for Tabstack SDK
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.AutomateEvent = exports.EventData = exports.JsonResponse = exports.MarkdownResponse = exports.Metadata = void 0;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Internal HTTP client for TABStack AI SDK
2
+ * Internal HTTP client for Tabstack SDK
3
3
  */
4
4
  export interface HTTPClientOptions {
5
5
  apiKey: string;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * Internal HTTP client for TABStack AI SDK
3
+ * Internal HTTP client for Tabstack SDK
4
4
  */
5
5
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
6
  if (k2 === undefined) k2 = k;
@@ -124,12 +124,12 @@ class HTTPClient {
124
124
  resolve(parsed);
125
125
  }
126
126
  catch {
127
- reject(new exceptions_1.TABStackError('Failed to parse response JSON'));
127
+ reject(new exceptions_1.TabstackError('Failed to parse response JSON'));
128
128
  }
129
129
  });
130
130
  });
131
131
  req.on('error', (error) => {
132
- reject(new exceptions_1.TABStackError(`Request failed: ${error.message}`));
132
+ reject(new exceptions_1.TabstackError(`Request failed: ${error.message}`));
133
133
  });
134
134
  req.write(body);
135
135
  req.end();
@@ -173,7 +173,7 @@ class HTTPClient {
173
173
  resolve(response);
174
174
  });
175
175
  req.on('error', (error) => {
176
- reject(new exceptions_1.TABStackError(`Request failed: ${error.message}`));
176
+ reject(new exceptions_1.TabstackError(`Request failed: ${error.message}`));
177
177
  });
178
178
  req.write(body);
179
179
  req.end();
@@ -102,13 +102,13 @@ describe('HTTPClient', () => {
102
102
  (0, nock_1.default)(baseURL).post('/test').reply(500, '');
103
103
  await expect(client.post('/test')).rejects.toThrow(exceptions_1.ServerError);
104
104
  });
105
- it('should throw TABStackError on malformed JSON response', async () => {
105
+ it('should throw TabstackError on malformed JSON response', async () => {
106
106
  (0, nock_1.default)(baseURL).post('/test').reply(200, 'invalid json{{{');
107
- await expect(client.post('/test')).rejects.toThrow(exceptions_1.TABStackError);
107
+ await expect(client.post('/test')).rejects.toThrow(exceptions_1.TabstackError);
108
108
  });
109
- it('should throw TABStackError on network error', async () => {
109
+ it('should throw TabstackError on network error', async () => {
110
110
  (0, nock_1.default)(baseURL).post('/test').replyWithError('Network error');
111
- await expect(client.post('/test')).rejects.toThrow(exceptions_1.TABStackError);
111
+ await expect(client.post('/test')).rejects.toThrow(exceptions_1.TabstackError);
112
112
  });
113
113
  it('should handle query parameters in path', async () => {
114
114
  (0, nock_1.default)(baseURL).post('/test?param=value').reply(200, { success: true });
@@ -196,7 +196,7 @@ describe('HTTPClient', () => {
196
196
  const generator = client.postStream('/stream');
197
197
  await expect(generator.next()).rejects.toThrow(exceptions_1.ServerError);
198
198
  });
199
- it('should throw TABStackError on network error during stream', async () => {
199
+ it('should throw TabstackError on network error during stream', async () => {
200
200
  (0, nock_1.default)(baseURL).post('/stream').replyWithError('Connection failed');
201
201
  const generator = client.postStream('/stream');
202
202
  const error = await generator.next().catch((e) => e);
@@ -1,9 +1,9 @@
1
1
  /**
2
- * Automate operator for TABStack AI SDK
2
+ * Agent client for Tabstack SDK
3
3
  */
4
4
  import { HTTPClient } from './util/http';
5
5
  import { AutomateEvent } from './types';
6
- export interface AutomateExecuteOptions {
6
+ export interface AutomateOptions {
7
7
  url?: string;
8
8
  data?: Record<string, unknown>;
9
9
  guardrails?: string;
@@ -11,13 +11,13 @@ export interface AutomateExecuteOptions {
11
11
  maxValidationAttempts?: number;
12
12
  }
13
13
  /**
14
- * Automate operator for AI-powered web automation
14
+ * Agent client for AI-powered web automation
15
15
  *
16
16
  * This class provides methods for executing complex web automation tasks using
17
17
  * natural language instructions. The automation runs in a browser and streams
18
18
  * real-time progress updates.
19
19
  */
20
- export declare class Automate {
20
+ export declare class Agent {
21
21
  private httpClient;
22
22
  constructor(httpClient: HTTPClient);
23
23
  /**
@@ -53,7 +53,7 @@ export declare class Automate {
53
53
  * @example
54
54
  * Extract GitHub trending repositories:
55
55
  * ```typescript
56
- * for await (const event of tabs.automate.execute(
56
+ * for await (const event of tabs.agent.automate(
57
57
  * 'Find the top 3 trending repositories and extract their names, descriptions, and star counts',
58
58
  * {
59
59
  * url: 'https://github.com/trending',
@@ -75,7 +75,7 @@ export declare class Automate {
75
75
  * @example
76
76
  * Scrape product information:
77
77
  * ```typescript
78
- * for await (const event of tabs.automate.execute(
78
+ * for await (const event of tabs.agent.automate(
79
79
  * 'Find the product name, price, and availability status',
80
80
  * {
81
81
  * url: 'https://example-store.com/product/wireless-headphones',
@@ -95,7 +95,7 @@ export declare class Automate {
95
95
  * @example
96
96
  * Fill out contact form:
97
97
  * ```typescript
98
- * for await (const event of tabs.automate.execute(
98
+ * for await (const event of tabs.agent.automate(
99
99
  * 'Submit the contact form with my information',
100
100
  * {
101
101
  * url: 'https://company.com/contact',
@@ -119,7 +119,7 @@ export declare class Automate {
119
119
  * @example
120
120
  * Handle all event types:
121
121
  * ```typescript
122
- * for await (const event of tabs.automate.execute(
122
+ * for await (const event of tabs.agent.automate(
123
123
  * 'Research TypeScript frameworks and compare them',
124
124
  * { url: 'https://www.npmjs.com' }
125
125
  * )) {
@@ -147,10 +147,10 @@ export declare class Automate {
147
147
  * }
148
148
  * ```
149
149
  */
150
- execute(task: string, options?: AutomateExecuteOptions): AsyncGenerator<AutomateEvent, void, undefined>;
150
+ automate(task: string, options?: AutomateOptions): AsyncGenerator<AutomateEvent, void, undefined>;
151
151
  /**
152
152
  * Parse SSE event data
153
153
  */
154
154
  private parseEvent;
155
155
  }
156
- //# sourceMappingURL=automate.d.ts.map
156
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/agent.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;GAMG;AACH,qBAAa,KAAK;IACJ,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8HG;IACI,QAAQ,CACb,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,eAAe,GACxB,cAAc,CAAC,aAAa,EAAE,IAAI,EAAE,SAAS,CAAC;IAkDjD;;OAEG;IACH,OAAO,CAAC,UAAU;CASnB"}
@@ -1,15 +1,15 @@
1
1
  /**
2
- * Automate operator for TABStack AI SDK
2
+ * Agent client for Tabstack SDK
3
3
  */
4
4
  import { AutomateEvent } from './types.js';
5
5
  /**
6
- * Automate operator for AI-powered web automation
6
+ * Agent client for AI-powered web automation
7
7
  *
8
8
  * This class provides methods for executing complex web automation tasks using
9
9
  * natural language instructions. The automation runs in a browser and streams
10
10
  * real-time progress updates.
11
11
  */
12
- export class Automate {
12
+ export class Agent {
13
13
  constructor(httpClient) {
14
14
  this.httpClient = httpClient;
15
15
  }
@@ -46,7 +46,7 @@ export class Automate {
46
46
  * @example
47
47
  * Extract GitHub trending repositories:
48
48
  * ```typescript
49
- * for await (const event of tabs.automate.execute(
49
+ * for await (const event of tabs.agent.automate(
50
50
  * 'Find the top 3 trending repositories and extract their names, descriptions, and star counts',
51
51
  * {
52
52
  * url: 'https://github.com/trending',
@@ -68,7 +68,7 @@ export class Automate {
68
68
  * @example
69
69
  * Scrape product information:
70
70
  * ```typescript
71
- * for await (const event of tabs.automate.execute(
71
+ * for await (const event of tabs.agent.automate(
72
72
  * 'Find the product name, price, and availability status',
73
73
  * {
74
74
  * url: 'https://example-store.com/product/wireless-headphones',
@@ -88,7 +88,7 @@ export class Automate {
88
88
  * @example
89
89
  * Fill out contact form:
90
90
  * ```typescript
91
- * for await (const event of tabs.automate.execute(
91
+ * for await (const event of tabs.agent.automate(
92
92
  * 'Submit the contact form with my information',
93
93
  * {
94
94
  * url: 'https://company.com/contact',
@@ -112,7 +112,7 @@ export class Automate {
112
112
  * @example
113
113
  * Handle all event types:
114
114
  * ```typescript
115
- * for await (const event of tabs.automate.execute(
115
+ * for await (const event of tabs.agent.automate(
116
116
  * 'Research TypeScript frameworks and compare them',
117
117
  * { url: 'https://www.npmjs.com' }
118
118
  * )) {
@@ -140,7 +140,7 @@ export class Automate {
140
140
  * }
141
141
  * ```
142
142
  */
143
- async *execute(task, options) {
143
+ async *automate(task, options) {
144
144
  const requestData = {
145
145
  task,
146
146
  maxIterations: options?.maxIterations ?? 50,
@@ -204,4 +204,4 @@ export class Automate {
204
204
  }
205
205
  }
206
206
  }
207
- //# sourceMappingURL=automate.js.map
207
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for Agent
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=agent.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.test.d.ts","sourceRoot":"","sources":["../../src/agent.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,17 +1,17 @@
1
1
  /**
2
- * Tests for Automate operator
2
+ * Tests for Agent
3
3
  */
4
4
  // @ts-nocheck
5
- import { Automate } from './automate.js';
5
+ import { Agent } from './agent.js';
6
6
  import { HTTPClient } from './util/http.js';
7
7
  // Mock HTTPClient
8
8
  jest.mock('./util/http');
9
- describe('Automate', () => {
10
- let automate;
9
+ describe('Agent', () => {
10
+ let agent;
11
11
  let mockHttpClient;
12
12
  beforeEach(() => {
13
13
  mockHttpClient = new HTTPClient({ apiKey: 'test-key' });
14
- automate = new Automate(mockHttpClient);
14
+ agent = new Agent(mockHttpClient);
15
15
  });
16
16
  afterEach(() => {
17
17
  jest.clearAllMocks();
@@ -22,7 +22,7 @@ describe('Automate', () => {
22
22
  yield line;
23
23
  }
24
24
  }
25
- describe('execute', () => {
25
+ describe('automate', () => {
26
26
  it('should execute task with minimal options', async () => {
27
27
  const sseLines = [
28
28
  'event: start',
@@ -34,7 +34,7 @@ describe('Automate', () => {
34
34
  ];
35
35
  mockHttpClient.postStream = jest.fn().mockReturnValue(streamLines(sseLines));
36
36
  const events = [];
37
- for await (const event of automate.execute('Test task')) {
37
+ for await (const event of agent.automate('Test task')) {
38
38
  events.push(event);
39
39
  }
40
40
  expect(mockHttpClient.postStream).toHaveBeenCalledWith('v1/automate', {
@@ -50,7 +50,7 @@ describe('Automate', () => {
50
50
  const sseLines = ['event: start', 'data: {}', ''];
51
51
  mockHttpClient.postStream = jest.fn().mockReturnValue(streamLines(sseLines));
52
52
  const events = [];
53
- for await (const event of automate.execute('Test task', {
53
+ for await (const event of agent.automate('Test task', {
54
54
  url: 'https://example.com',
55
55
  })) {
56
56
  events.push(event);
@@ -67,7 +67,7 @@ describe('Automate', () => {
67
67
  mockHttpClient.postStream = jest.fn().mockReturnValue(streamLines(sseLines));
68
68
  const data = { name: 'John', email: 'john@example.com' };
69
69
  const events = [];
70
- for await (const event of automate.execute('Fill form', { data })) {
70
+ for await (const event of agent.automate('Fill form', { data })) {
71
71
  events.push(event);
72
72
  }
73
73
  expect(mockHttpClient.postStream).toHaveBeenCalledWith('v1/automate', {
@@ -81,7 +81,7 @@ describe('Automate', () => {
81
81
  const sseLines = ['event: start', 'data: {}', ''];
82
82
  mockHttpClient.postStream = jest.fn().mockReturnValue(streamLines(sseLines));
83
83
  const events = [];
84
- for await (const event of automate.execute('Browse site', {
84
+ for await (const event of agent.automate('Browse site', {
85
85
  guardrails: 'read only, no modifications',
86
86
  })) {
87
87
  events.push(event);
@@ -97,7 +97,7 @@ describe('Automate', () => {
97
97
  const sseLines = ['event: start', 'data: {}', ''];
98
98
  mockHttpClient.postStream = jest.fn().mockReturnValue(streamLines(sseLines));
99
99
  const events = [];
100
- for await (const event of automate.execute('Test task', { maxIterations: 100 })) {
100
+ for await (const event of agent.automate('Test task', { maxIterations: 100 })) {
101
101
  events.push(event);
102
102
  }
103
103
  expect(mockHttpClient.postStream).toHaveBeenCalledWith('v1/automate', {
@@ -110,7 +110,7 @@ describe('Automate', () => {
110
110
  const sseLines = ['event: start', 'data: {}', ''];
111
111
  mockHttpClient.postStream = jest.fn().mockReturnValue(streamLines(sseLines));
112
112
  const events = [];
113
- for await (const event of automate.execute('Test task', { maxValidationAttempts: 5 })) {
113
+ for await (const event of agent.automate('Test task', { maxValidationAttempts: 5 })) {
114
114
  events.push(event);
115
115
  }
116
116
  expect(mockHttpClient.postStream).toHaveBeenCalledWith('v1/automate', {
@@ -123,7 +123,7 @@ describe('Automate', () => {
123
123
  const sseLines = ['event: start', 'data: {}', ''];
124
124
  mockHttpClient.postStream = jest.fn().mockReturnValue(streamLines(sseLines));
125
125
  const events = [];
126
- for await (const event of automate.execute('Complete task', {
126
+ for await (const event of agent.automate('Complete task', {
127
127
  url: 'https://example.com',
128
128
  data: { key: 'value' },
129
129
  guardrails: 'safe mode',
@@ -147,7 +147,7 @@ describe('Automate', () => {
147
147
  const sseLines = ['event: start', 'data: {"message":"Started"}', ''];
148
148
  mockHttpClient.postStream = jest.fn().mockReturnValue(streamLines(sseLines));
149
149
  const events = [];
150
- for await (const event of automate.execute('Task')) {
150
+ for await (const event of agent.automate('Task')) {
151
151
  events.push(event);
152
152
  }
153
153
  expect(events).toHaveLength(1);
@@ -168,7 +168,7 @@ describe('Automate', () => {
168
168
  ];
169
169
  mockHttpClient.postStream = jest.fn().mockReturnValue(streamLines(sseLines));
170
170
  const events = [];
171
- for await (const event of automate.execute('Task')) {
171
+ for await (const event of agent.automate('Task')) {
172
172
  events.push(event);
173
173
  }
174
174
  expect(events).toHaveLength(3);
@@ -187,7 +187,7 @@ describe('Automate', () => {
187
187
  ];
188
188
  mockHttpClient.postStream = jest.fn().mockReturnValue(streamLines(sseLines));
189
189
  const events = [];
190
- for await (const event of automate.execute('Task')) {
190
+ for await (const event of agent.automate('Task')) {
191
191
  events.push(event);
192
192
  }
193
193
  expect(events).toHaveLength(1);
@@ -200,7 +200,7 @@ describe('Automate', () => {
200
200
  const sseLines = ['event: start', 'data: {"message":"Started"}'];
201
201
  mockHttpClient.postStream = jest.fn().mockReturnValue(streamLines(sseLines));
202
202
  const events = [];
203
- for await (const event of automate.execute('Task')) {
203
+ for await (const event of agent.automate('Task')) {
204
204
  events.push(event);
205
205
  }
206
206
  // Should still yield the last event even without trailing empty line
@@ -211,7 +211,7 @@ describe('Automate', () => {
211
211
  const sseLines = ['event: start ', 'data: {"message":"Test"} ', ''];
212
212
  mockHttpClient.postStream = jest.fn().mockReturnValue(streamLines(sseLines));
213
213
  const events = [];
214
- for await (const event of automate.execute('Task')) {
214
+ for await (const event of agent.automate('Task')) {
215
215
  events.push(event);
216
216
  }
217
217
  expect(events).toHaveLength(1);
@@ -222,7 +222,7 @@ describe('Automate', () => {
222
222
  const sseLines = ['event: start', '', 'data: {"message":"Test"}', '', ''];
223
223
  mockHttpClient.postStream = jest.fn().mockReturnValue(streamLines(sseLines));
224
224
  const events = [];
225
- for await (const event of automate.execute('Task')) {
225
+ for await (const event of agent.automate('Task')) {
226
226
  events.push(event);
227
227
  }
228
228
  expect(events).toHaveLength(1);
@@ -251,7 +251,7 @@ describe('Automate', () => {
251
251
  });
252
252
  mockHttpClient.postStream = jest.fn().mockReturnValue(streamLines(sseLines));
253
253
  const events = [];
254
- for await (const event of automate.execute('Task')) {
254
+ for await (const event of agent.automate('Task')) {
255
255
  events.push(event);
256
256
  }
257
257
  expect(events).toHaveLength(eventTypes.length);
@@ -269,7 +269,7 @@ describe('Automate', () => {
269
269
  ];
270
270
  mockHttpClient.postStream = jest.fn().mockReturnValue(streamLines(sseLines));
271
271
  const events = [];
272
- for await (const event of automate.execute('Task')) {
272
+ for await (const event of agent.automate('Task')) {
273
273
  events.push(event);
274
274
  }
275
275
  expect(events[0].data.get('extractedData')).toEqual({ title: 'Test', count: 42 });
@@ -278,7 +278,7 @@ describe('Automate', () => {
278
278
  const sseLines = ['event: error', 'data: Invalid JSON {{{', ''];
279
279
  mockHttpClient.postStream = jest.fn().mockReturnValue(streamLines(sseLines));
280
280
  const events = [];
281
- for await (const event of automate.execute('Task')) {
281
+ for await (const event of agent.automate('Task')) {
282
282
  events.push(event);
283
283
  }
284
284
  expect(events[0].type).toBe('error');
@@ -288,7 +288,7 @@ describe('Automate', () => {
288
288
  const sseLines = ['event: start', 'data: ', ''];
289
289
  mockHttpClient.postStream = jest.fn().mockReturnValue(streamLines(sseLines));
290
290
  const events = [];
291
- for await (const event of automate.execute('Task')) {
291
+ for await (const event of agent.automate('Task')) {
292
292
  events.push(event);
293
293
  }
294
294
  expect(events).toHaveLength(1);
@@ -307,7 +307,7 @@ describe('Automate', () => {
307
307
  const sseLines = ['event: agent:extracted', `data: ${JSON.stringify(complexData)}`, ''];
308
308
  mockHttpClient.postStream = jest.fn().mockReturnValue(streamLines(sseLines));
309
309
  const events = [];
310
- for await (const event of automate.execute('Task')) {
310
+ for await (const event of agent.automate('Task')) {
311
311
  events.push(event);
312
312
  }
313
313
  expect(events[0].data.get('result')).toEqual(complexData.result);
@@ -322,7 +322,7 @@ describe('Automate', () => {
322
322
  ];
323
323
  mockHttpClient.postStream = jest.fn().mockReturnValue(streamLines(sseLines));
324
324
  const events = [];
325
- for await (const event of automate.execute('Task')) {
325
+ for await (const event of agent.automate('Task')) {
326
326
  events.push(event);
327
327
  }
328
328
  expect(events[0].data.get('url')).toBe('https://example.com');
@@ -332,7 +332,7 @@ describe('Automate', () => {
332
332
  const sseLines = ['event: start', 'data: {"message":"Test"}', ''];
333
333
  mockHttpClient.postStream = jest.fn().mockReturnValue(streamLines(sseLines));
334
334
  const events = [];
335
- for await (const event of automate.execute('Task')) {
335
+ for await (const event of agent.automate('Task')) {
336
336
  events.push(event);
337
337
  }
338
338
  expect(events[0].data.get('nonexistent')).toBeUndefined();
@@ -346,7 +346,7 @@ describe('Automate', () => {
346
346
  ];
347
347
  mockHttpClient.postStream = jest.fn().mockReturnValue(streamLines(sseLines));
348
348
  const events = [];
349
- for await (const event of automate.execute('Task')) {
349
+ for await (const event of agent.automate('Task')) {
350
350
  events.push(event);
351
351
  }
352
352
  const raw = events[0].data.getRaw();
@@ -381,7 +381,7 @@ describe('Automate', () => {
381
381
  ];
382
382
  mockHttpClient.postStream = jest.fn().mockReturnValue(streamLines(sseLines));
383
383
  const events = [];
384
- for await (const event of automate.execute('Extract data', {
384
+ for await (const event of agent.automate('Extract data', {
385
385
  url: 'https://example.com',
386
386
  })) {
387
387
  events.push(event);
@@ -402,7 +402,7 @@ describe('Automate', () => {
402
402
  ];
403
403
  mockHttpClient.postStream = jest.fn().mockReturnValue(streamLines(sseLines));
404
404
  const events = [];
405
- for await (const event of automate.execute('Task')) {
405
+ for await (const event of agent.automate('Task')) {
406
406
  events.push(event);
407
407
  }
408
408
  expect(events).toHaveLength(2);
@@ -420,7 +420,7 @@ describe('Automate', () => {
420
420
  ];
421
421
  mockHttpClient.postStream = jest.fn().mockReturnValue(streamLines(sseLines));
422
422
  const events = [];
423
- for await (const event of automate.execute('Task', { maxIterations: 10 })) {
423
+ for await (const event of agent.automate('Task', { maxIterations: 10 })) {
424
424
  events.push(event);
425
425
  }
426
426
  expect(events).toHaveLength(2);
@@ -431,9 +431,9 @@ describe('Automate', () => {
431
431
  mockHttpClient.postStream = jest.fn().mockImplementation(async function* () {
432
432
  throw error;
433
433
  });
434
- const generator = automate.execute('Task');
434
+ const generator = agent.automate('Task');
435
435
  await expect(generator.next()).rejects.toThrow('Stream error');
436
436
  });
437
437
  });
438
438
  });
439
- //# sourceMappingURL=automate.test.js.map
439
+ //# sourceMappingURL=agent.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.test.js","sourceRoot":"","sources":["../../src/agent.test.ts"],"names":[],"mappings":"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"}