donobu 1.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/dist/apis/SpecialFlowsApi.d.ts +5 -2
  2. package/dist/apis/SpecialFlowsApi.js +46 -25
  3. package/dist/apis/SpecialFlowsApi.js.map +1 -1
  4. package/dist/assets/control-panel.js +16 -1
  5. package/dist/assets/generated/parameter-schemas.json +340 -94
  6. package/dist/assets/generated/version +1 -1
  7. package/dist/clients/AnthropicGptClient.js +1 -1
  8. package/dist/clients/AnthropicGptClient.js.map +1 -1
  9. package/dist/clients/GoogleGptClient.js +1 -1
  10. package/dist/clients/GoogleGptClient.js.map +1 -1
  11. package/dist/clients/OpenAiGptClient.js +1 -1
  12. package/dist/clients/OpenAiGptClient.js.map +1 -1
  13. package/dist/clients/VercelAiGptClient.d.ts +26 -0
  14. package/dist/clients/VercelAiGptClient.js +231 -0
  15. package/dist/clients/VercelAiGptClient.js.map +1 -0
  16. package/dist/envVars.d.ts +76 -0
  17. package/dist/envVars.js +80 -0
  18. package/dist/envVars.js.map +1 -0
  19. package/dist/esm/apis/SpecialFlowsApi.d.ts +5 -2
  20. package/dist/esm/apis/SpecialFlowsApi.js +46 -25
  21. package/dist/esm/apis/SpecialFlowsApi.js.map +1 -1
  22. package/dist/esm/assets/control-panel.js +16 -1
  23. package/dist/esm/assets/generated/parameter-schemas.json +340 -94
  24. package/dist/esm/assets/generated/version +1 -1
  25. package/dist/esm/clients/AnthropicGptClient.js +1 -1
  26. package/dist/esm/clients/AnthropicGptClient.js.map +1 -1
  27. package/dist/esm/clients/GoogleGptClient.js +1 -1
  28. package/dist/esm/clients/GoogleGptClient.js.map +1 -1
  29. package/dist/esm/clients/OpenAiGptClient.js +1 -1
  30. package/dist/esm/clients/OpenAiGptClient.js.map +1 -1
  31. package/dist/esm/clients/VercelAiGptClient.d.ts +26 -0
  32. package/dist/esm/clients/VercelAiGptClient.js +231 -0
  33. package/dist/esm/clients/VercelAiGptClient.js.map +1 -0
  34. package/dist/esm/envVars.d.ts +76 -0
  35. package/dist/esm/envVars.js +80 -0
  36. package/dist/esm/envVars.js.map +1 -0
  37. package/dist/esm/main.js +2 -2
  38. package/dist/esm/main.js.map +1 -1
  39. package/dist/esm/managers/AdminApiController.js +1 -1
  40. package/dist/esm/managers/AdminApiController.js.map +1 -1
  41. package/dist/esm/managers/AgentsManager.js +2 -1
  42. package/dist/esm/managers/AgentsManager.js.map +1 -1
  43. package/dist/esm/managers/CodeGenerator.d.ts +17 -0
  44. package/dist/esm/managers/CodeGenerator.js +258 -0
  45. package/dist/esm/managers/CodeGenerator.js.map +1 -0
  46. package/dist/esm/managers/DonobuFlow.d.ts +4 -4
  47. package/dist/esm/managers/DonobuFlow.js +73 -71
  48. package/dist/esm/managers/DonobuFlow.js.map +1 -1
  49. package/dist/esm/managers/DonobuFlowsManager.d.ts +3 -6
  50. package/dist/esm/managers/DonobuFlowsManager.js +38 -175
  51. package/dist/esm/managers/DonobuFlowsManager.js.map +1 -1
  52. package/dist/esm/managers/GptConfigsManager.d.ts +1 -1
  53. package/dist/esm/managers/GptConfigsManager.js +45 -25
  54. package/dist/esm/managers/GptConfigsManager.js.map +1 -1
  55. package/dist/esm/managers/ToolManager.d.ts +0 -5
  56. package/dist/esm/managers/ToolManager.js +3 -68
  57. package/dist/esm/managers/ToolManager.js.map +1 -1
  58. package/dist/esm/models/BrowserConfig.d.ts +65 -0
  59. package/dist/esm/models/BrowserConfig.js +4 -0
  60. package/dist/esm/models/BrowserConfig.js.map +1 -0
  61. package/dist/esm/models/BrowserFramework.d.ts +31 -4
  62. package/dist/esm/models/BrowserFramework.js +125 -7
  63. package/dist/esm/models/BrowserFramework.js.map +1 -1
  64. package/dist/esm/models/BrowserStateFlowReference.js +1 -0
  65. package/dist/esm/models/BrowserStateFlowReference.js.map +1 -1
  66. package/dist/esm/models/CreateDonobuFlow.d.ts +2 -27
  67. package/dist/esm/models/FlowMetadata.d.ts +6 -19
  68. package/dist/esm/models/FlowMetadata.js +1 -0
  69. package/dist/esm/models/FlowMetadata.js.map +1 -1
  70. package/dist/esm/models/GptConfig.d.ts +6 -1
  71. package/dist/esm/persistence/DonobuSqliteDb.js +75 -0
  72. package/dist/esm/persistence/DonobuSqliteDb.js.map +1 -1
  73. package/dist/esm/persistence/FlowsPersistenceFactoryImpl.d.ts +0 -4
  74. package/dist/esm/persistence/FlowsPersistenceFactoryImpl.js +5 -8
  75. package/dist/esm/persistence/FlowsPersistenceFactoryImpl.js.map +1 -1
  76. package/dist/esm/test.d.ts +12 -8
  77. package/dist/esm/test.js +52 -39
  78. package/dist/esm/test.js.map +1 -1
  79. package/dist/esm/tools/AssertPageTextTool.d.ts +19 -0
  80. package/dist/esm/tools/AssertPageTextTool.js +42 -0
  81. package/dist/esm/tools/AssertPageTextTool.js.map +1 -0
  82. package/dist/esm/tools/AssertTextVisibility.d.ts +19 -0
  83. package/dist/esm/tools/AssertTextVisibility.js +32 -0
  84. package/dist/esm/tools/AssertTextVisibility.js.map +1 -0
  85. package/dist/esm/tools/ExtractPublicFacebookEntityDataTool.js +33 -16
  86. package/dist/esm/tools/ExtractPublicFacebookEntityDataTool.js.map +1 -1
  87. package/dist/esm/utils/MiscUtils.js +2 -1
  88. package/dist/esm/utils/MiscUtils.js.map +1 -1
  89. package/dist/esm/utils/PlaywrightUtils.js +1 -2
  90. package/dist/esm/utils/PlaywrightUtils.js.map +1 -1
  91. package/dist/main.js +2 -2
  92. package/dist/main.js.map +1 -1
  93. package/dist/managers/AdminApiController.js +1 -1
  94. package/dist/managers/AdminApiController.js.map +1 -1
  95. package/dist/managers/AgentsManager.js +2 -1
  96. package/dist/managers/AgentsManager.js.map +1 -1
  97. package/dist/managers/CodeGenerator.d.ts +17 -0
  98. package/dist/managers/CodeGenerator.js +258 -0
  99. package/dist/managers/CodeGenerator.js.map +1 -0
  100. package/dist/managers/DonobuFlow.d.ts +4 -4
  101. package/dist/managers/DonobuFlow.js +73 -71
  102. package/dist/managers/DonobuFlow.js.map +1 -1
  103. package/dist/managers/DonobuFlowsManager.d.ts +3 -6
  104. package/dist/managers/DonobuFlowsManager.js +38 -175
  105. package/dist/managers/DonobuFlowsManager.js.map +1 -1
  106. package/dist/managers/GptConfigsManager.d.ts +1 -1
  107. package/dist/managers/GptConfigsManager.js +45 -25
  108. package/dist/managers/GptConfigsManager.js.map +1 -1
  109. package/dist/managers/ToolManager.d.ts +0 -5
  110. package/dist/managers/ToolManager.js +3 -68
  111. package/dist/managers/ToolManager.js.map +1 -1
  112. package/dist/models/BrowserConfig.d.ts +65 -0
  113. package/dist/models/BrowserConfig.js +4 -0
  114. package/dist/models/BrowserConfig.js.map +1 -0
  115. package/dist/models/BrowserFramework.d.ts +31 -4
  116. package/dist/models/BrowserFramework.js +125 -7
  117. package/dist/models/BrowserFramework.js.map +1 -1
  118. package/dist/models/BrowserStateFlowReference.js +1 -0
  119. package/dist/models/BrowserStateFlowReference.js.map +1 -1
  120. package/dist/models/CreateDonobuFlow.d.ts +2 -27
  121. package/dist/models/FlowMetadata.d.ts +6 -19
  122. package/dist/models/FlowMetadata.js +1 -0
  123. package/dist/models/FlowMetadata.js.map +1 -1
  124. package/dist/models/GptConfig.d.ts +6 -1
  125. package/dist/persistence/DonobuSqliteDb.js +75 -0
  126. package/dist/persistence/DonobuSqliteDb.js.map +1 -1
  127. package/dist/persistence/FlowsPersistenceFactoryImpl.d.ts +0 -4
  128. package/dist/persistence/FlowsPersistenceFactoryImpl.js +5 -8
  129. package/dist/persistence/FlowsPersistenceFactoryImpl.js.map +1 -1
  130. package/dist/test.d.ts +12 -8
  131. package/dist/test.js +52 -39
  132. package/dist/test.js.map +1 -1
  133. package/dist/tools/AssertPageTextTool.d.ts +19 -0
  134. package/dist/tools/AssertPageTextTool.js +42 -0
  135. package/dist/tools/AssertPageTextTool.js.map +1 -0
  136. package/dist/tools/AssertTextVisibility.d.ts +19 -0
  137. package/dist/tools/AssertTextVisibility.js +32 -0
  138. package/dist/tools/AssertTextVisibility.js.map +1 -0
  139. package/dist/tools/ExtractPublicFacebookEntityDataTool.js +33 -16
  140. package/dist/tools/ExtractPublicFacebookEntityDataTool.js.map +1 -1
  141. package/dist/utils/MiscUtils.js +2 -1
  142. package/dist/utils/MiscUtils.js.map +1 -1
  143. package/dist/utils/PlaywrightUtils.js +1 -2
  144. package/dist/utils/PlaywrightUtils.js.map +1 -1
  145. package/package.json +7 -5
@@ -1,7 +1,4 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.ToolManager = void 0;
7
4
  const Logger_1 = require("../utils/Logger");
@@ -44,7 +41,7 @@ const WaitTool_1 = require("../tools/WaitTool");
44
41
  const HoverOverElementTool_1 = require("../tools/HoverOverElementTool");
45
42
  const DetectBrokenLinksTool_1 = require("../tools/DetectBrokenLinksTool");
46
43
  const JsonUtils_1 = require("../utils/JsonUtils");
47
- const json5_1 = __importDefault(require("json5"));
44
+ const AssertPageTextTool_1 = require("../tools/AssertPageTextTool");
48
45
  /**
49
46
  * Manages calls to a given list of tools.
50
47
  */
@@ -54,6 +51,7 @@ class ToolManager {
54
51
  static ALL_TOOLS = [
55
52
  new AnalyzePageTextTool_1.AnalyzePageTextTool(),
56
53
  new AssertTool_1.AssertTool(),
54
+ new AssertPageTextTool_1.AssertPageTextTool(),
57
55
  new CreateBrowserCookieReportTool_1.CreateBrowserCookieReportTool(),
58
56
  new ChangeWebBrowserTabTool_1.ChangeWebBrowserTabTool(),
59
57
  new ChooseSelectOptionTool_1.ChooseSelectOptionTool(),
@@ -92,6 +90,7 @@ class ToolManager {
92
90
  static DEFAULT_TOOLS = [
93
91
  new AnalyzePageTextTool_1.AnalyzePageTextTool(),
94
92
  new AssertTool_1.AssertTool(),
93
+ new AssertPageTextTool_1.AssertPageTextTool(),
95
94
  new CreateBrowserCookieReportTool_1.CreateBrowserCookieReportTool(),
96
95
  new ChangeWebBrowserTabTool_1.ChangeWebBrowserTabTool(),
97
96
  new ChooseSelectOptionTool_1.ChooseSelectOptionTool(),
@@ -195,70 +194,6 @@ class ToolManager {
195
194
  throw error;
196
195
  }
197
196
  }
198
- /**
199
- * Maps a proposed Donobu tool call to valid NodeJS Playwright code that uses
200
- * the `DonobuExtendedPage` extension.
201
- */
202
- convertToPlaywrightCode(proposedToolCall) {
203
- const rawParams = JsonUtils_1.JsonUtils.objectToJson(proposedToolCall.parameters);
204
- const rationale = rawParams.rationale
205
- ? '// ' + rawParams.rationale + '\n'
206
- : '';
207
- // Delete fields that should not be directly mapped.
208
- delete rawParams.rationale;
209
- delete rawParams.whyThisAnnotation;
210
- delete rawParams.annotation;
211
- const hasNonEmptyParameters = Object.keys(rawParams).length > 0;
212
- // Used JSON5 to stringify instead of JSON so that object properties do not
213
- // get double-quoted (this makes the code look more natural for NodeJS).
214
- const serializedParams = json5_1.default.stringify(rawParams, null, 2);
215
- switch (proposedToolCall.name) {
216
- case AssertTool_1.AssertTool.NAME: {
217
- return `${rationale}await page.visuallyAssert(${serializedParams});`;
218
- }
219
- case ChangeWebBrowserTabTool_1.ChangeWebBrowserTabTool.NAME: {
220
- return `${rationale}page = page.context().pages().find((tab) => tab.url() === '${rawParams.tabUrl}');`;
221
- }
222
- case ChooseSelectOptionTool_1.ChooseSelectOptionTool.NAME: {
223
- return `${rationale}await page.chooseSelectOption(${serializedParams});`;
224
- }
225
- case ClickTool_1.ClickTool.NAME: {
226
- return `${rationale}await page.clickElement(${serializedParams});`;
227
- }
228
- case GoForwardOrBackTool_1.GoForwardOrBackTool.NAME:
229
- if (rawParams.direction === 'FORWARD') {
230
- return `${rationale}await page.goForward();`;
231
- }
232
- else if (rawParams.direction === 'BACK') {
233
- return `${rationale}await page.goBack();`;
234
- }
235
- else {
236
- throw new Error(`Invalid ${GoForwardOrBackTool_1.GoForwardOrBackTool.NAME} params: ${serializedParams}`);
237
- }
238
- case GoToWebpageTool_1.GoToWebpageTool.NAME:
239
- return `${rationale}await page.goto('${rawParams.url}');`;
240
- case ReloadPageTool_1.ReloadPageTool.NAME:
241
- return `${rationale}await page.reload();`;
242
- case ScrollPageTool_1.ScrollPageTool.NAME:
243
- return `${rationale}await page.scroll(${serializedParams});`;
244
- // The following tools can be mapped directly.
245
- case CreateBrowserCookieReportTool_1.CreateBrowserCookieReportTool.NAME:
246
- case DetectBrokenLinksTool_1.DetectBrokenLinksTool.NAME:
247
- case HoverOverElementTool_1.HoverOverElementTool.NAME:
248
- case InputRandomizedEmailAddressTool_1.InputRandomizedEmailAddressTool.NAME:
249
- case InputTextTool_1.InputTextTool.NAME:
250
- case PressKeyTool_1.PressKeyTool.NAME:
251
- case RunAccessibilityTestTool_1.RunAccessibilityTestTool.NAME: {
252
- return `${rationale}await page.${proposedToolCall.name}(${hasNonEmptyParameters ? serializedParams : ''});`;
253
- }
254
- default:
255
- const toolName = proposedToolCall.name;
256
- const toolCallScript = hasNonEmptyParameters
257
- ? `${rationale}await page.run('${toolName}', ${serializedParams});`
258
- : `${rationale}await page.run('${toolName}');`;
259
- return toolCallScript;
260
- }
261
- }
262
197
  }
263
198
  exports.ToolManager = ToolManager;
264
199
  //# sourceMappingURL=ToolManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToolManager.js","sourceRoot":"","sources":["../../src/managers/ToolManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ToolManager.js","sourceRoot":"","sources":["../../src/managers/ToolManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { BrowserStateFlowReference } from './BrowserStateFlowReference';
2
+ /**
3
+ * Broadly follows the HTTP body fields described in...
4
+ * https://docs.browserbase.com/reference/api/create-a-session
5
+ */
6
+ export type BrowserBaseSessionArgs = {
7
+ /**
8
+ * If the project ID contains "${env.VARIABLE_NAME}", then it will be expanded
9
+ * to the value of the specified environment variable.
10
+ */
11
+ readonly projectId: string;
12
+ readonly extensionId?: string;
13
+ readonly browserSettings?: {
14
+ readonly context?: {
15
+ readonly id: string;
16
+ };
17
+ readonly extensionId?: string;
18
+ readonly viewport?: {
19
+ readonly width: number;
20
+ readonly height: number;
21
+ };
22
+ readonly blockAds?: boolean;
23
+ readonly solveCaptchas?: boolean;
24
+ readonly advancedStealth?: boolean;
25
+ };
26
+ /**
27
+ * Duration in seconds after which the session will automatically end.
28
+ */
29
+ readonly timeout?: number;
30
+ readonly proxies?: boolean;
31
+ readonly region?: string;
32
+ readonly userMetadata?: Record<string, string>;
33
+ };
34
+ export type BrowserConfig = {
35
+ /**
36
+ * When starting the flow, initialize the browser state from the given flow
37
+ * by its ID or name.
38
+ **/
39
+ readonly initialState?: BrowserStateFlowReference;
40
+ /** If set to true, saves the browser state at the end of the flow. */
41
+ readonly persistState?: boolean;
42
+ readonly using: {
43
+ readonly type: 'device';
44
+ /**
45
+ * The name of the device to run the flow with. See `devices.json` for details.
46
+ * If not specified, defaults to 'Desktop Chromium'.
47
+ */
48
+ readonly deviceName?: string;
49
+ /**
50
+ * If true, will not open a real browser window to perform the flow.
51
+ */
52
+ readonly headless?: boolean;
53
+ } | {
54
+ readonly type: 'remoteInstance';
55
+ /**
56
+ * The URL of a remote browser instance to connect to using the Chrome DevTools
57
+ * Protocol (CDP). If the URL contains "${env.VARIABLE_NAME}", then it will be
58
+ * expanded to the value of the specified environment variable.
59
+ */
60
+ readonly url: string;
61
+ } | {
62
+ readonly type: 'browserBase';
63
+ readonly sessionArgs: BrowserBaseSessionArgs;
64
+ };
65
+ };
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // src/models/BrowserConfig.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=BrowserConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserConfig.js","sourceRoot":"","sources":["../../src/models/BrowserConfig.ts"],"names":[],"mappings":";AAAA,8BAA8B"}
@@ -1,29 +1,56 @@
1
1
  import { Browser, BrowserContext } from 'playwright';
2
2
  import { BrowserStorageState } from '../models/BrowserState';
3
+ import { BrowserConfig } from './BrowserConfig';
3
4
  export declare class BrowserFramework {
5
+ readonly browserConfig: BrowserConfig;
4
6
  readonly browser: Browser;
5
7
  readonly browserContext: BrowserContext;
8
+ private readonly browserBaseData?;
9
+ private static readonly DEFAULT_DEVICE_NAME;
6
10
  private static readonly DEVICES;
7
- constructor(browser: Browser, browserContext: BrowserContext);
11
+ private constructor();
12
+ /**
13
+ * Closes the browser and browser context. If the browser is a BrowserBase
14
+ * instance, it will also release the session.
15
+ */
16
+ close(): Promise<void>;
8
17
  /**
9
18
  * Returns the list of supported devices by name. These values can be passed as a deviceName to
10
19
  * the {@link forDevice} function.
11
20
  */
12
21
  static supportedDevicesNames(): string[];
22
+ static create(browserConfig: BrowserConfig, outputDir: string, storageState?: BrowserStorageState): Promise<BrowserFramework>;
13
23
  /**
14
24
  * Connects to an existing Chromium browser using the Chrome DevTools Protocol (CDP) at the given
15
25
  * URL. If the URL contains "${env.VARIABLE_NAME}", then it will be expanded to the value of the
16
26
  * specified environment variable.
17
27
  */
18
- static forRemoteBrowser(remoteBrowserInstanceUrl: string, outputDir: string, storageState?: BrowserStorageState): Promise<BrowserFramework>;
28
+ private static forRemoteBrowser;
19
29
  /**
20
30
  * If {@link storageState} is present, must be an object conforming to what is returned by
21
31
  * {@link BrowserContext.storageState()}.
22
32
  */
23
- static forDevice(deviceName: string, headless: boolean, outputDir: string, storageState?: BrowserStorageState): Promise<BrowserFramework>;
33
+ private static forDevice;
34
+ /**
35
+ * Creates a BrowserBase session. If the project ID
36
+ * contains "${env.VARIABLE_NAME}", then it will be expanded to the value of
37
+ * the specified environment variable. Using this method requires the
38
+ * BROWSERBASE_API_KEY environment variable to be set.
39
+ *
40
+ * The returned browserBaseData object conforms to the response of the session
41
+ * creation API endpoint. See...
42
+ * https://docs.browserbase.com/reference/api/create-a-session#response-id
43
+ */
44
+ private static forBrowserBase;
45
+ /**
46
+ * Establishes a BrowserBase session. The returned structure matches the
47
+ * response structore from the BrowserBase session API. See...
48
+ * https://docs.browserbase.com/reference/api/create-a-session#response-id
49
+ */
50
+ private static establishBrowserBaseSession;
24
51
  private static forDeviceWithType;
25
52
  private static browserFramework;
26
- private static expandEnvVariablesInUrl;
53
+ private static expandEnvVariables;
27
54
  /**
28
55
  * Loads all the pre-canned browser device configurations from the local
29
56
  * filesystem.
@@ -9,18 +9,62 @@ const puppeteer_extra_plugin_stealth_1 = __importDefault(require("puppeteer-extr
9
9
  const JsonUtils_1 = require("../utils/JsonUtils");
10
10
  const InvalidParamValueException_1 = require("../exceptions/InvalidParamValueException");
11
11
  const path_1 = __importDefault(require("path"));
12
+ const envVars_1 = require("../envVars");
13
+ const Logger_1 = require("../utils/Logger");
12
14
  class BrowserFramework {
15
+ browserConfig;
13
16
  browser;
14
17
  browserContext;
18
+ browserBaseData;
19
+ static DEFAULT_DEVICE_NAME = 'Desktop Chromium';
15
20
  static {
16
21
  playwright_extra_1.firefox.use((0, puppeteer_extra_plugin_stealth_1.default)());
17
22
  playwright_extra_1.chromium.use((0, puppeteer_extra_plugin_stealth_1.default)());
18
23
  playwright_extra_1.webkit.use((0, puppeteer_extra_plugin_stealth_1.default)());
19
24
  }
20
25
  static DEVICES = BrowserFramework.getDevices();
21
- constructor(browser, browserContext) {
26
+ constructor(browserConfig, browser, browserContext, browserBaseData) {
27
+ this.browserConfig = browserConfig;
22
28
  this.browser = browser;
23
29
  this.browserContext = browserContext;
30
+ this.browserBaseData = browserBaseData;
31
+ }
32
+ /**
33
+ * Closes the browser and browser context. If the browser is a BrowserBase
34
+ * instance, it will also release the session.
35
+ */
36
+ async close() {
37
+ try {
38
+ await this.browserContext.close();
39
+ }
40
+ catch (_error) {
41
+ // Ignore, the browser context may have already been closed and that is fine.
42
+ }
43
+ try {
44
+ await this.browser.close();
45
+ }
46
+ catch (_error) {
47
+ // Ignore, the browser may have already been closed and that is fine.
48
+ }
49
+ if (this.browserConfig.using.type === 'browserBase' &&
50
+ this.browserBaseData) {
51
+ const password = process.env[envVars_1.ENV_VAR_NAMES.BROWSERBASE_API_KEY] ?? '';
52
+ const options = {
53
+ method: 'POST',
54
+ headers: {
55
+ 'X-BB-API-Key': password,
56
+ 'Content-Type': 'application/json',
57
+ },
58
+ body: `{"projectId":"${this.browserBaseData.projectId}","status":"REQUEST_RELEASE"}`,
59
+ };
60
+ try {
61
+ await fetch(`https://api.browserbase.com/v1/sessions/${this.browserBaseData.id}`, options);
62
+ }
63
+ catch (error) {
64
+ // Ignore, BrowserBase sessions expire automatically anyway.
65
+ Logger_1.Logger.appLogger.warn('Failed to release BrowserBase session', error);
66
+ }
67
+ }
24
68
  }
25
69
  /**
26
70
  * Returns the list of supported devices by name. These values can be passed as a deviceName to
@@ -29,13 +73,34 @@ class BrowserFramework {
29
73
  static supportedDevicesNames() {
30
74
  return [...BrowserFramework.DEVICES.keys()].reverse();
31
75
  }
76
+ static async create(browserConfig, outputDir, storageState) {
77
+ const type = browserConfig.using.type;
78
+ switch (type) {
79
+ case 'device': {
80
+ const { browser, browserContext } = await BrowserFramework.forDevice(browserConfig.using.deviceName ??
81
+ BrowserFramework.DEFAULT_DEVICE_NAME, browserConfig.using.headless ?? false, outputDir, storageState);
82
+ return new BrowserFramework(browserConfig, browser, browserContext);
83
+ }
84
+ case 'remoteInstance': {
85
+ const { browser, browserContext } = await BrowserFramework.forRemoteBrowser(browserConfig.using.url, outputDir, storageState);
86
+ return new BrowserFramework(browserConfig, browser, browserContext);
87
+ }
88
+ case 'browserBase': {
89
+ const { browser, browserContext, browserBaseData } = await BrowserFramework.forBrowserBase(browserConfig.using.sessionArgs, outputDir, storageState);
90
+ return new BrowserFramework(browserConfig, browser, browserContext, browserBaseData);
91
+ }
92
+ default: {
93
+ throw new InvalidParamValueException_1.InvalidParamValueException('type', type);
94
+ }
95
+ }
96
+ }
32
97
  /**
33
98
  * Connects to an existing Chromium browser using the Chrome DevTools Protocol (CDP) at the given
34
99
  * URL. If the URL contains "${env.VARIABLE_NAME}", then it will be expanded to the value of the
35
100
  * specified environment variable.
36
101
  */
37
102
  static async forRemoteBrowser(remoteBrowserInstanceUrl, outputDir, storageState) {
38
- const expandedUrl = this.expandEnvVariablesInUrl(remoteBrowserInstanceUrl);
103
+ const expandedUrl = this.expandEnvVariables(remoteBrowserInstanceUrl);
39
104
  try {
40
105
  const browser = await playwright_extra_1.chromium.connectOverCDP(expandedUrl);
41
106
  const contextOptions = {
@@ -44,7 +109,10 @@ class BrowserFramework {
44
109
  if (storageState) {
45
110
  contextOptions.storageState = storageState;
46
111
  }
47
- return new BrowserFramework(browser, await browser.newContext(contextOptions));
112
+ return {
113
+ browser: browser,
114
+ browserContext: await browser.newContext(contextOptions),
115
+ };
48
116
  }
49
117
  catch (_) {
50
118
  throw new InvalidParamValueException_1.InvalidParamValueException('remoteBrowserInstanceUrl', remoteBrowserInstanceUrl);
@@ -63,6 +131,56 @@ class BrowserFramework {
63
131
  throw new InvalidParamValueException_1.InvalidParamValueException('deviceName', deviceName);
64
132
  }
65
133
  }
134
+ /**
135
+ * Creates a BrowserBase session. If the project ID
136
+ * contains "${env.VARIABLE_NAME}", then it will be expanded to the value of
137
+ * the specified environment variable. Using this method requires the
138
+ * BROWSERBASE_API_KEY environment variable to be set.
139
+ *
140
+ * The returned browserBaseData object conforms to the response of the session
141
+ * creation API endpoint. See...
142
+ * https://docs.browserbase.com/reference/api/create-a-session#response-id
143
+ */
144
+ static async forBrowserBase(sessionArgs, outputDir, storageState) {
145
+ const browserBaseData = await BrowserFramework.establishBrowserBaseSession(sessionArgs);
146
+ const browser = await playwright_extra_1.chromium.connectOverCDP(browserBaseData.connectUrl);
147
+ const contextOptions = {
148
+ recordVideo: { dir: outputDir },
149
+ };
150
+ if (storageState) {
151
+ contextOptions.storageState = storageState;
152
+ }
153
+ return {
154
+ browser: browser,
155
+ browserContext: await browser.newContext(contextOptions),
156
+ browserBaseData: browserBaseData,
157
+ };
158
+ }
159
+ /**
160
+ * Establishes a BrowserBase session. The returned structure matches the
161
+ * response structore from the BrowserBase session API. See...
162
+ * https://docs.browserbase.com/reference/api/create-a-session#response-id
163
+ */
164
+ static async establishBrowserBaseSession(sessionArgs) {
165
+ const expandedSessionArgs = {
166
+ ...sessionArgs,
167
+ projectId: this.expandEnvVariables(sessionArgs.projectId),
168
+ };
169
+ const password = process.env[envVars_1.ENV_VAR_NAMES.BROWSERBASE_API_KEY];
170
+ if (!password) {
171
+ throw new InvalidParamValueException_1.InvalidParamValueException(envVars_1.ENV_VAR_NAMES.BROWSERBASE_API_KEY, null);
172
+ }
173
+ const options = {
174
+ method: 'POST',
175
+ headers: { 'X-BB-API-Key': password, 'Content-Type': 'application/json' },
176
+ body: JSON.stringify(expandedSessionArgs),
177
+ };
178
+ const browserBaseData = await fetch('https://api.browserbase.com/v1/sessions', options).then((response) => response.json());
179
+ if (browserBaseData.error) {
180
+ throw new InvalidParamValueException_1.InvalidParamValueException(envVars_1.ENV_VAR_NAMES.BROWSERBASE_API_KEY, '(redacted)', `${browserBaseData.error}: ${browserBaseData.message}`);
181
+ }
182
+ return browserBaseData;
183
+ }
66
184
  static async forDeviceWithType(deviceName, browserType, headless, outputDir, storageState) {
67
185
  const device = BrowserFramework.DEVICES.get(deviceName);
68
186
  if (device) {
@@ -126,17 +244,17 @@ class BrowserFramework {
126
244
  throw new InvalidParamValueException_1.InvalidParamValueException('browserType', browserType);
127
245
  }
128
246
  try {
129
- const context = await browser.newContext(contextOptions);
130
- return new BrowserFramework(browser, context);
247
+ const browserContext = await browser.newContext(contextOptions);
248
+ return { browser, browserContext };
131
249
  }
132
250
  catch (error) {
133
251
  await browser.close();
134
252
  throw error;
135
253
  }
136
254
  }
137
- static expandEnvVariablesInUrl(url) {
255
+ static expandEnvVariables(str) {
138
256
  const pattern = /\${env\.(\w+)}/g;
139
- return url.replace(pattern, (_, envVarName) => {
257
+ return str.replace(pattern, (_, envVarName) => {
140
258
  const envVarValue = process.env[envVarName];
141
259
  if (!envVarValue) {
142
260
  throw new InvalidParamValueException_1.InvalidParamValueException(envVarName, null);
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserFramework.js","sourceRoot":"","sources":["../../src/models/BrowserFramework.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BrowserFramework.js","sourceRoot":"","sources":["../../src/models/BrowserFramework.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  "use strict";
2
+ // src/models/BrowserStateFlowReference.ts
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  //# sourceMappingURL=BrowserStateFlowReference.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserStateFlowReference.js","sourceRoot":"","sources":["../../src/models/BrowserStateFlowReference.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"BrowserStateFlowReference.js","sourceRoot":"","sources":["../../src/models/BrowserStateFlowReference.ts"],"names":[],"mappings":";AAAA,0CAA0C"}
@@ -2,7 +2,7 @@ import { CustomTool } from './CustomTool';
2
2
  import { ProposedToolCall } from './ProposedToolCall';
3
3
  import { RunMode } from './FlowMetadata';
4
4
  import { JSONSchema7 } from 'json-schema';
5
- import { BrowserStateFlowReference } from './BrowserStateFlowReference';
5
+ import { BrowserConfig } from './BrowserConfig';
6
6
  /**
7
7
  * This is the expected payload for a request to create a new DonobuFlow flow.
8
8
  */
@@ -16,38 +16,13 @@ export type CreateDonobuFlow = {
16
16
  readonly overallObjective?: string;
17
17
  /** The name for this flow; if present, must be fewer than 256 characters. */
18
18
  readonly name?: string;
19
- /**
20
- * When starting the flow, initialize the browser state from the given flow
21
- * by its ID or name.
22
- **/
23
- readonly initialBrowserState?: BrowserStateFlowReference;
24
- /** If set to true, saves the browser state at the end of the flow. */
25
- readonly persistBrowserState?: boolean;
26
- /**
27
- * The name of the device to run the flow with. See `devices.json` for details.
28
- * If not specified, defaults to DonobuFlowsManager.DEFAULT_DEVICE_NAME unless
29
- * remoteBrowserInstanceUrl is specified. If this is non-null, then
30
- * remoteBrowserInstanceUrl must be null.
31
- */
32
- readonly deviceName?: string;
33
- /**
34
- * The URL of a remote browser instance to connect to using the Chrome DevTools
35
- * Protocol (CDP). If this is non-null, then deviceName must be null. If the URL
36
- * contains "${env.VARIABLE_NAME}", then it will be expanded to the value of the
37
- * specified environment variable.
38
- */
39
- readonly remoteBrowserInstanceUrl?: string;
19
+ readonly browser?: BrowserConfig;
40
20
  /**
41
21
  * The URL to HTTP POST to when the flow completes. The body will contain a
42
22
  * JSON object with single field, "id", of which is the ID of the flow that
43
23
  * completed.
44
24
  */
45
25
  readonly callbackUrl?: string;
46
- /**
47
- * If true, will not open a real browser window to perform the flow.
48
- * If remoteBrowserInstanceUrl is non-null, this parameter is ignored.
49
- */
50
- readonly headless?: boolean;
51
26
  /**
52
27
  * Custom tools to enable for this flow. Any tools specified here will be
53
28
  * implicitly added to allowedTools.
@@ -1,6 +1,6 @@
1
1
  import { CustomTool } from './CustomTool';
2
- import { BrowserStateFlowReference } from './BrowserStateFlowReference';
3
2
  import { JSONSchema7 } from 'json-schema';
3
+ import { BrowserConfig } from './BrowserConfig';
4
4
  /**
5
5
  * Metadata type of the details/status/state of a Donobu flow.
6
6
  */
@@ -11,16 +11,16 @@ export type FlowMetadata = {
11
11
  readonly name: string | null;
12
12
  /** The version of Donobu that created the flow. */
13
13
  readonly createdWithDonobuVersion: string;
14
- /** The source of the initial browser state. */
15
- readonly initialBrowserState: BrowserStateFlowReference | null;
16
- /** If true, will persist the final browser state when the flow completes. */
17
- readonly persistBrowserState: boolean | null;
14
+ /**
15
+ * The configuration of the browser to use for the flow.
16
+ */
17
+ readonly browser: BrowserConfig;
18
18
  /** The name of the specific GPT configuration used for the flow. */
19
19
  readonly gptConfigName: string | null;
20
20
  /**
21
21
  * If true, means that the `gptConfigName` was explicitly overwritten when the
22
22
  * flow was created.
23
- **/
23
+ */
24
24
  readonly hasGptConfigNameOverride: boolean;
25
25
  /** Custom tools available for the flow. */
26
26
  readonly customTools: CustomTool[] | null;
@@ -30,25 +30,12 @@ export type FlowMetadata = {
30
30
  runMode: RunMode;
31
31
  /** Set to true if the in-browser control panel should be enabled. */
32
32
  isControlPanelEnabled: boolean;
33
- /**
34
- * The name of the device to use for the flow.
35
- * If non-null, remoteBrowserInstanceUrl must be null
36
- */
37
- readonly deviceName: string | null;
38
- /**
39
- * The URL of a remote browser instance to connect to using Chrome DevTools Protocol (CDP).
40
- * If non-null, deviceName must be null. URLs containing "${env.VARIABLE_NAME}" will be
41
- * expanded to the value of the specified environment variable.
42
- */
43
- readonly remoteBrowserInstanceUrl: string | null;
44
33
  /**
45
34
  * The URL to HTTP POST to when the flow completes. The
46
35
  * body will contain a JSON object with single field, "id", of which is
47
36
  * the ID of the flow that completed.
48
37
  */
49
38
  readonly callbackUrl: string | null;
50
- /** If true, a real browser window was not used to perform the flow. */
51
- readonly headless: boolean;
52
39
  /** The website URL to start the flow at. */
53
40
  readonly targetWebsite: string;
54
41
  /** The overall objective to pursue. */
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ // src/models/FlowMetadata.ts
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.RunMode = exports.isComplete = exports.State = void 0;
4
5
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"FlowMetadata.js","sourceRoot":"","sources":["../../src/models/FlowMetadata.ts"],"names":[],"mappings":";;;AA+GA;;GAEG;AACH,IAAY,KAUX;AAVD,WAAY,KAAK;IACf,gCAAuB,CAAA;IACvB,sCAA6B,CAAA;IAC7B,sEAA6D,CAAA;IAC7D,4EAAmE,CAAA;IACnE,0BAAiB,CAAA;IACjB,8BAAqB,CAAA;IACrB,0CAAiC,CAAA;IACjC,0BAAiB,CAAA;IACjB,4BAAmB,CAAA;AACrB,CAAC,EAVW,KAAK,qBAAL,KAAK,QAUhB;AAED;;;;;GAKG;AACI,MAAM,UAAU,GAAG,CAAC,KAAY,EAAW,EAAE;IAClD,OAAO,KAAK,KAAK,KAAK,CAAC,MAAM,IAAI,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC;AAC3D,CAAC,CAAC;AAFW,QAAA,UAAU,cAErB;AAEF;;GAEG;AACH,IAAY,OAgBX;AAhBD,WAAY,OAAO;IACjB;;;OAGG;IACH,oCAAyB,CAAA;IACzB;;;OAGG;IACH,gCAAqB,CAAA;IACrB;;;OAGG;IACH,0CAA+B,CAAA;AACjC,CAAC,EAhBW,OAAO,uBAAP,OAAO,QAgBlB"}
1
+ {"version":3,"file":"FlowMetadata.js","sourceRoot":"","sources":["../../src/models/FlowMetadata.ts"],"names":[],"mappings":";AAAA,6BAA6B;;;AAgG7B;;GAEG;AACH,IAAY,KAUX;AAVD,WAAY,KAAK;IACf,gCAAuB,CAAA;IACvB,sCAA6B,CAAA;IAC7B,sEAA6D,CAAA;IAC7D,4EAAmE,CAAA;IACnE,0BAAiB,CAAA;IACjB,8BAAqB,CAAA;IACrB,0CAAiC,CAAA;IACjC,0BAAiB,CAAA;IACjB,4BAAmB,CAAA;AACrB,CAAC,EAVW,KAAK,qBAAL,KAAK,QAUhB;AAED;;;;;GAKG;AACI,MAAM,UAAU,GAAG,CAAC,KAAY,EAAW,EAAE;IAClD,OAAO,KAAK,KAAK,KAAK,CAAC,MAAM,IAAI,KAAK,KAAK,KAAK,CAAC,OAAO,CAAC;AAC3D,CAAC,CAAC;AAFW,QAAA,UAAU,cAErB;AAEF;;GAEG;AACH,IAAY,OAgBX;AAhBD,WAAY,OAAO;IACjB;;;OAGG;IACH,oCAAyB,CAAA;IACzB;;;OAGG;IACH,gCAAqB,CAAA;IACrB;;;OAGG;IACH,0CAA+B,CAAA;AACjC,CAAC,EAhBW,OAAO,uBAAP,OAAO,QAgBlB"}
@@ -29,10 +29,15 @@ export type LlamaLocalConfig = {
29
29
  export type LlamaHuggingFaceConfig = {
30
30
  type: 'LLAMA_HUGGING_FACE';
31
31
  };
32
+ export type VercelAiConfig = {
33
+ type: 'VERCEL_AI';
34
+ provider: string;
35
+ modelName: string;
36
+ };
32
37
  /**
33
38
  * A resource structure that can be used to establish connectivity with a
34
39
  * particular GPT platform and model. If there are an 'apiKey', and/or a
35
40
  * `secretAccessKey` fields, they will be redacted before being returned
36
41
  * through the API.
37
42
  */
38
- export type GptConfig = AnthropicConfig | AnthropicAwsBedrockConfig | GoogleGeminiConfig | OpenApiConfig | OpenApiAzureConfig | LlamaLocalConfig | LlamaHuggingFaceConfig;
43
+ export type GptConfig = AnthropicConfig | AnthropicAwsBedrockConfig | GoogleGeminiConfig | OpenApiConfig | OpenApiAzureConfig | LlamaLocalConfig | LlamaHuggingFaceConfig | VercelAiConfig;