donobu 2.52.0 → 3.0.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 (60) hide show
  1. package/README.md +100 -100
  2. package/dist/assets/generated/version +1 -1
  3. package/dist/esm/assets/generated/version +1 -1
  4. package/dist/esm/exceptions/PageAiException.d.ts +2 -1
  5. package/dist/esm/exceptions/PageAiException.d.ts.map +1 -1
  6. package/dist/esm/exceptions/PageAiException.js +10 -2
  7. package/dist/esm/exceptions/PageAiException.js.map +1 -1
  8. package/dist/esm/lib/DonobuExtendedPage.d.ts +75 -100
  9. package/dist/esm/lib/DonobuExtendedPage.d.ts.map +1 -1
  10. package/dist/esm/lib/PageAi.d.ts +10 -6
  11. package/dist/esm/lib/PageAi.d.ts.map +1 -1
  12. package/dist/esm/lib/PageAi.js +3 -10
  13. package/dist/esm/lib/PageAi.js.map +1 -1
  14. package/dist/esm/lib/SmartSelector.d.ts +16 -15
  15. package/dist/esm/lib/SmartSelector.d.ts.map +1 -1
  16. package/dist/esm/lib/SmartSelector.js +20 -7
  17. package/dist/esm/lib/SmartSelector.js.map +1 -1
  18. package/dist/esm/lib/createDonobuExtendedPage.d.ts.map +1 -1
  19. package/dist/esm/lib/createDonobuExtendedPage.js +103 -136
  20. package/dist/esm/lib/createDonobuExtendedPage.js.map +1 -1
  21. package/dist/esm/lib/pageAi/cache.d.ts +1 -1
  22. package/dist/esm/managers/CodeGenerator.d.ts.map +1 -1
  23. package/dist/esm/managers/CodeGenerator.js +58 -28
  24. package/dist/esm/managers/CodeGenerator.js.map +1 -1
  25. package/dist/esm/tools/CreateBrowserCookieReportTool.d.ts +17 -0
  26. package/dist/esm/tools/CreateBrowserCookieReportTool.d.ts.map +1 -1
  27. package/dist/esm/tools/CreateBrowserCookieReportTool.js +26 -32
  28. package/dist/esm/tools/CreateBrowserCookieReportTool.js.map +1 -1
  29. package/dist/esm/tools/RunAccessibilityTestTool.d.ts +6 -0
  30. package/dist/esm/tools/RunAccessibilityTestTool.d.ts.map +1 -1
  31. package/dist/esm/tools/RunAccessibilityTestTool.js.map +1 -1
  32. package/dist/exceptions/PageAiException.d.ts +2 -1
  33. package/dist/exceptions/PageAiException.d.ts.map +1 -1
  34. package/dist/exceptions/PageAiException.js +10 -2
  35. package/dist/exceptions/PageAiException.js.map +1 -1
  36. package/dist/lib/DonobuExtendedPage.d.ts +75 -100
  37. package/dist/lib/DonobuExtendedPage.d.ts.map +1 -1
  38. package/dist/lib/PageAi.d.ts +10 -6
  39. package/dist/lib/PageAi.d.ts.map +1 -1
  40. package/dist/lib/PageAi.js +3 -10
  41. package/dist/lib/PageAi.js.map +1 -1
  42. package/dist/lib/SmartSelector.d.ts +16 -15
  43. package/dist/lib/SmartSelector.d.ts.map +1 -1
  44. package/dist/lib/SmartSelector.js +20 -7
  45. package/dist/lib/SmartSelector.js.map +1 -1
  46. package/dist/lib/createDonobuExtendedPage.d.ts.map +1 -1
  47. package/dist/lib/createDonobuExtendedPage.js +103 -136
  48. package/dist/lib/createDonobuExtendedPage.js.map +1 -1
  49. package/dist/lib/pageAi/cache.d.ts +1 -1
  50. package/dist/managers/CodeGenerator.d.ts.map +1 -1
  51. package/dist/managers/CodeGenerator.js +58 -28
  52. package/dist/managers/CodeGenerator.js.map +1 -1
  53. package/dist/tools/CreateBrowserCookieReportTool.d.ts +17 -0
  54. package/dist/tools/CreateBrowserCookieReportTool.d.ts.map +1 -1
  55. package/dist/tools/CreateBrowserCookieReportTool.js +26 -32
  56. package/dist/tools/CreateBrowserCookieReportTool.js.map +1 -1
  57. package/dist/tools/RunAccessibilityTestTool.d.ts +6 -0
  58. package/dist/tools/RunAccessibilityTestTool.d.ts.map +1 -1
  59. package/dist/tools/RunAccessibilityTestTool.js.map +1 -1
  60. package/package.json +1 -1
@@ -13,19 +13,11 @@ const PageInspector_1 = require("../managers/PageInspector");
13
13
  const ToolManager_1 = require("../managers/ToolManager");
14
14
  const ControlPanel_1 = require("../models/ControlPanel");
15
15
  const AnalyzePageTextTool_1 = require("../tools/AnalyzePageTextTool");
16
- const AssertPageTextTool_1 = require("../tools/AssertPageTextTool");
17
16
  const AssertTool_1 = require("../tools/AssertTool");
18
17
  const ChangeWebBrowserTabTool_1 = require("../tools/ChangeWebBrowserTabTool");
19
- const ChooseSelectOptionTool_1 = require("../tools/ChooseSelectOptionTool");
20
- const ClickTool_1 = require("../tools/ClickTool");
21
18
  const CreateBrowserCookieReportTool_1 = require("../tools/CreateBrowserCookieReportTool");
22
19
  const GoToWebpageTool_1 = require("../tools/GoToWebpageTool");
23
- const HoverOverElementTool_1 = require("../tools/HoverOverElementTool");
24
- const InputRandomizedEmailAddressTool_1 = require("../tools/InputRandomizedEmailAddressTool");
25
- const InputTextTool_1 = require("../tools/InputTextTool");
26
- const PressKeyTool_1 = require("../tools/PressKeyTool");
27
20
  const RunAccessibilityTestTool_1 = require("../tools/RunAccessibilityTestTool");
28
- const ScrollPageTool_1 = require("../tools/ScrollPageTool");
29
21
  const BrowserUtils_1 = require("../utils/BrowserUtils");
30
22
  const Logger_1 = require("../utils/Logger");
31
23
  const MiscUtils_1 = require("../utils/MiscUtils");
@@ -113,42 +105,80 @@ function createDonobuPageExtender(sharedState, cacheFilepath) {
113
105
  return extend;
114
106
  }
115
107
  function attachDonobuMethods(page, sharedState, extend, cacheFilepath) {
116
- page.ai = async (instruction, options, gptClientOverride) => {
117
- let finalGptClient = null;
118
- if (gptClientOverride) {
119
- if (!(gptClientOverride instanceof GptClient_1.GptClient)) {
120
- finalGptClient = new VercelAiGptClient_1.VercelAiGptClient(gptClientOverride);
121
- }
122
- else {
123
- finalGptClient = gptClientOverride;
124
- }
125
- }
126
- else if (sharedState.gptClient) {
127
- finalGptClient = sharedState.gptClient;
128
- }
129
- if (!finalGptClient) {
130
- throw new Error(`No AI connection available. Establish a connection by setting an API key via an environment variable.
108
+ async function act(instruction, options) {
109
+ if (!sharedState.pageAi) {
110
+ const gptClient = getGptClient(page);
111
+ if (!gptClient) {
112
+ throw new Error(`No AI connection available. Establish a connection by setting an API key via an environment variable.
131
113
  Valid options:
132
114
  - ${envVars_1.env.keys.ANTHROPIC_API_KEY}
133
115
  - ${envVars_1.env.keys.GOOGLE_GENERATIVE_AI_API_KEY}
134
116
  - ${envVars_1.env.keys.OPENAI_API_KEY}`);
135
- }
136
- if (!sharedState.pageAi) {
117
+ }
137
118
  sharedState.pageAi = cacheFilepath
138
- ? PageAi_1.PageAi.withFileCache(sharedState.donobuStack, finalGptClient, cacheFilepath)
139
- : PageAi_1.PageAi.withInMemoryCache(sharedState.donobuStack, finalGptClient);
119
+ ? PageAi_1.PageAi.withFileCache(sharedState.donobuStack, gptClient, cacheFilepath)
120
+ : PageAi_1.PageAi.withInMemoryCache(sharedState.donobuStack, gptClient);
121
+ }
122
+ const pageAiInstance = sharedState.pageAi;
123
+ if (!pageAiInstance) {
124
+ throw new Error('Failed to initialize Page AI.');
140
125
  }
141
126
  const clearAiCacheForRun = sharedState.runtimeDirectives?.clearPageAiCache ?? false;
142
127
  const revisedOptions = {
143
128
  envVars: sharedState.donobuFlowMetadata.envVars ?? [],
129
+ gptClient: getGptClient(page, options?.gptClient),
144
130
  ...(options ? options : {}),
145
131
  };
146
132
  if (clearAiCacheForRun) {
147
- await sharedState.pageAi.invalidate(page, instruction, revisedOptions);
133
+ await pageAiInstance.invalidate(page, instruction, revisedOptions);
148
134
  Logger_1.appLogger.debug(`Page.AI cache invalidated for this run via ${envVars_1.env.keys.DONOBU_PAGE_AI_CLEAR_CACHE}`);
149
135
  }
150
- return sharedState.pageAi.ai(page, instruction, revisedOptions);
136
+ return pageAiInstance.ai(page, instruction, revisedOptions);
137
+ }
138
+ const pageAi = {
139
+ act,
140
+ assertPage: async (assertion, options) => {
141
+ const result = await runTool(page, AssertTool_1.AssertTool.NAME, {
142
+ assertionToTestFor: assertion,
143
+ retries: options?.retries,
144
+ retryWaitSeconds: options?.retryDelaySeconds,
145
+ }, options?.gptClient);
146
+ if (!result.isSuccessful) {
147
+ throw new Error(result.forLlm);
148
+ }
149
+ },
150
+ extract: async (schema, options) => {
151
+ const gptClient = getGptClient(page, options?.gptClient);
152
+ if (!gptClient) {
153
+ throw Error('Cannot extract an object from page without a GPT client set up!');
154
+ }
155
+ try {
156
+ const toolCallHistory = await sharedState.persistence.getToolCalls(sharedState.donobuFlowMetadata.id);
157
+ const structuredOutputMessage = await (0, DonobuFlow_1.extractFromPage)(options?.instruction ??
158
+ 'Generate an object conforming to the given JSON-schema', schema, page, toolCallHistory, gptClient);
159
+ sharedState.donobuFlowMetadata.resultJsonSchema =
160
+ v4_1.z.toJSONSchema(schema);
161
+ sharedState.donobuFlowMetadata.result = JSON.parse(JSON.stringify(structuredOutputMessage.output));
162
+ await sharedState.persistence.setFlowMetadata(sharedState.donobuFlowMetadata);
163
+ return schema.parse(structuredOutputMessage.output);
164
+ }
165
+ catch (error) {
166
+ throw error;
167
+ }
168
+ },
169
+ analyzePageText: async (analysisToRun, options) => {
170
+ const result = await page.run(AnalyzePageTextTool_1.AnalyzePageTextTool.NAME, {
171
+ analysisToRun: analysisToRun,
172
+ additionalRelevantContext: options?.additionalContext ?? '',
173
+ }, options);
174
+ return result.forLlm;
175
+ },
176
+ createCookieReport: async (options) => {
177
+ const result = await page.run(CreateBrowserCookieReportTool_1.CreateBrowserCookieReportTool.NAME, {}, options);
178
+ return result.metadata;
179
+ },
151
180
  };
181
+ page.ai = pageAi;
152
182
  page.find = (selector, options) => {
153
183
  return new SmartSelector_1.SmartSelectorImpl(page, {
154
184
  element: [selector, ...(options?.failover ?? [])],
@@ -216,57 +246,12 @@ Valid options:
216
246
  throw error;
217
247
  }
218
248
  };
219
- page.run = async (toolName, toolParams, gptClientOverride) => {
220
- let finalGptClient = null;
221
- if (gptClientOverride) {
222
- if (!(gptClientOverride instanceof GptClient_1.GptClient)) {
223
- finalGptClient = new VercelAiGptClient_1.VercelAiGptClient(gptClientOverride);
224
- }
225
- else {
226
- finalGptClient = gptClientOverride;
227
- }
228
- }
229
- else if (sharedState.gptClient) {
230
- finalGptClient = sharedState.gptClient;
249
+ page.run = async (toolName, toolParams, options) => {
250
+ const result = await runTool(page, toolName, toolParams, options?.gptClient);
251
+ if (!result.isSuccessful) {
252
+ throw new Error(`${toolName} execution failed: ${JSON.stringify(result, null, 2)}`);
231
253
  }
232
- const pageInspector = new PageInspector_1.PageInspector();
233
- const controlPanel = new ControlPanel_1.NoOpControlPanel();
234
- const clonedParams = toolParams
235
- ? JSON.parse(JSON.stringify(toolParams))
236
- : {};
237
- clonedParams.rationale || (clonedParams.rationale = '');
238
- const envData = await sharedState.donobuStack.flowsManager.buildEnvData(sharedState.donobuFlowMetadata.envVars ?? []);
239
- const toolCallContext = {
240
- flowsManager: sharedState.donobuStack.flowsManager,
241
- envData: envData,
242
- pageInspector: pageInspector,
243
- controlPanel: controlPanel,
244
- persistence: sharedState.persistence,
245
- gptClient: finalGptClient,
246
- interactionVisualizer: sharedState.interactionVisualizer,
247
- proposedToolCalls: [],
248
- invokedToolCalls: [],
249
- page: { current: page },
250
- metadata: sharedState.donobuFlowMetadata,
251
- toolCallId: clonedParams.toolCallId ?? MiscUtils_1.MiscUtils.createAdHocToolCallId(),
252
- };
253
- try {
254
- const tools = await ToolManager_1.ToolManager.allTools();
255
- const result = await new ToolManager_1.ToolManager(tools).invokeTool(toolCallContext, toolName, clonedParams, false);
256
- if (!result.outcome.isSuccessful) {
257
- throw new Error(`${toolName} execution failed: ${JSON.stringify(result, null, 2)}`);
258
- }
259
- return result.outcome;
260
- }
261
- catch (error) {
262
- throw error;
263
- }
264
- };
265
- page.analyzePageText = async (params, gptClientOverride) => {
266
- return page.run(AnalyzePageTextTool_1.AnalyzePageTextTool.NAME, params, gptClientOverride);
267
- };
268
- page.assertPageText = async (params, gptClientOverride) => {
269
- return page.run(AssertPageTextTool_1.AssertPageTextTool.NAME, params, gptClientOverride);
254
+ return result;
270
255
  };
271
256
  page.changeTab = async (url) => {
272
257
  const result = await page.run(ChangeWebBrowserTabTool_1.ChangeWebBrowserTabTool.NAME, {
@@ -284,69 +269,51 @@ Valid options:
284
269
  }
285
270
  throw Error(result.forLlm);
286
271
  };
287
- page.chooseSelectOption = async (params) => {
288
- return page.run(ChooseSelectOptionTool_1.ChooseSelectOptionTool.NAME, params);
289
- };
290
- page.clickElement = async (params) => {
291
- return page.run(ClickTool_1.ClickTool.NAME, params);
292
- };
293
- page.createCookieReport = async (gptClientOverride) => {
294
- return page.run(CreateBrowserCookieReportTool_1.CreateBrowserCookieReportTool.NAME, {}, gptClientOverride);
295
- };
296
- page.extract = async (params, gptClientOverride) => {
297
- let finalGptClient = null;
298
- if (gptClientOverride) {
299
- if (!(gptClientOverride instanceof GptClient_1.GptClient)) {
300
- finalGptClient = new VercelAiGptClient_1.VercelAiGptClient(gptClientOverride);
301
- }
302
- else {
303
- finalGptClient = gptClientOverride;
304
- }
305
- }
306
- else if (sharedState.gptClient) {
307
- finalGptClient = sharedState.gptClient;
308
- }
309
- if (!finalGptClient) {
310
- throw Error('Cannot extract an object from page without a GPT client set up!');
311
- }
312
- try {
313
- const toolCallHistory = await sharedState.persistence.getToolCalls(sharedState.donobuFlowMetadata.id);
314
- const structuredOutputMessage = await (0, DonobuFlow_1.extractFromPage)(params.instruction ??
315
- 'Generate an object conforming to the given JSON-schema', params.schema, page, toolCallHistory, finalGptClient);
316
- sharedState.donobuFlowMetadata.resultJsonSchema = v4_1.z.toJSONSchema(params.schema);
317
- sharedState.donobuFlowMetadata.result = JSON.parse(JSON.stringify(structuredOutputMessage.output));
318
- await sharedState.persistence.setFlowMetadata(sharedState.donobuFlowMetadata);
319
- return structuredOutputMessage.output;
320
- }
321
- catch (error) {
322
- throw error;
323
- }
324
- };
325
- page.hoverOverElement = async (params) => {
326
- return page.run(HoverOverElementTool_1.HoverOverElementTool.NAME, params);
327
- };
328
- page.inputRandomizedEmailAddress = async (params) => {
329
- return page.run(InputRandomizedEmailAddressTool_1.InputRandomizedEmailAddressTool.NAME, params);
330
- };
331
- page.inputText = async (params) => {
332
- return page.run(InputTextTool_1.InputTextTool.NAME, params);
333
- };
334
- page.pressKey = async (params) => {
335
- return page.run(PressKeyTool_1.PressKeyTool.NAME, params);
336
- };
337
272
  page.runAccessibilityTest = async () => {
338
- return page.run(RunAccessibilityTestTool_1.RunAccessibilityTestTool.NAME);
339
- };
340
- page.scroll = async (params) => {
341
- return page.run(ScrollPageTool_1.ScrollPageTool.NAME, params);
342
- };
343
- page.visuallyAssert = async (params, gptClientOverride) => {
344
- return page.run(AssertTool_1.AssertTool.NAME, params, gptClientOverride);
273
+ const result = await page.run(RunAccessibilityTestTool_1.RunAccessibilityTestTool.NAME);
274
+ return result.metadata;
345
275
  };
346
276
  page.once('close', () => {
347
277
  void finalizeFlowOnPageClose(sharedState);
348
278
  });
349
279
  }
280
+ async function runTool(page, toolName, toolParams, gptClient) {
281
+ const clonedParams = toolParams ? JSON.parse(JSON.stringify(toolParams)) : {};
282
+ clonedParams.rationale || (clonedParams.rationale = '');
283
+ const toolCallContext = {
284
+ flowsManager: page._dnb.donobuStack.flowsManager,
285
+ envData: await page._dnb.donobuStack.flowsManager.buildEnvData(page._dnb.donobuFlowMetadata.envVars ?? []),
286
+ pageInspector: new PageInspector_1.PageInspector(),
287
+ controlPanel: new ControlPanel_1.NoOpControlPanel(),
288
+ persistence: page._dnb.persistence,
289
+ gptClient: getGptClient(page, gptClient),
290
+ interactionVisualizer: page._dnb.interactionVisualizer,
291
+ proposedToolCalls: [],
292
+ invokedToolCalls: [],
293
+ page: { current: page },
294
+ metadata: page._dnb.donobuFlowMetadata,
295
+ toolCallId: clonedParams.toolCallId ?? MiscUtils_1.MiscUtils.createAdHocToolCallId(),
296
+ };
297
+ const tools = await ToolManager_1.ToolManager.allTools();
298
+ const result = await new ToolManager_1.ToolManager(tools).invokeTool(toolCallContext, toolName, clonedParams, false);
299
+ return result.outcome;
300
+ }
301
+ function getGptClient(page, gptClient) {
302
+ if (gptClient) {
303
+ if (!(gptClient instanceof GptClient_1.GptClient)) {
304
+ return new VercelAiGptClient_1.VercelAiGptClient(gptClient);
305
+ }
306
+ else {
307
+ return gptClient;
308
+ }
309
+ }
310
+ else if (page._dnb.gptClient) {
311
+ return page._dnb.gptClient;
312
+ }
313
+ else {
314
+ return null;
315
+ }
316
+ }
350
317
  async function buttonUpGptClient(gptClient) {
351
318
  try {
352
319
  if (!gptClient) {
@@ -1 +1 @@
1
- {"version":3,"file":"createDonobuExtendedPage.js","sourceRoot":"","sources":["../../src/lib/createDonobuExtendedPage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createDonobuExtendedPage.js","sourceRoot":"","sources":["../../src/lib/createDonobuExtendedPage.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { ProposedToolCall } from '../../models/ProposedToolCall';
2
2
  /**
3
- * Cache key used to identify a unique `page.ai` invocation. Keep this structure
3
+ * Cache key used to identify a unique `page.ai.act(...)` invocation. Keep this structure
4
4
  * aligned with the code generator so replayed runs remain deterministic.
5
5
  */
6
6
  export type PageAiCacheKey = {
@@ -1 +1 @@
1
- {"version":3,"file":"CodeGenerator.d.ts","sourceRoot":"","sources":["../../src/managers/CodeGenerator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAE7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AA2CnD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,qBAAa,aAAa;IACxB,8EAA8E;IACjE,yBAAyB,CACpC,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,gBAAgB,EAAE,GAC5B,OAAO,CAAC,MAAM,CAAC;IAqGlB,8EAA8E;IACjE,2BAA2B,CACtC,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,gBAAgB,EAAE,GAC5B,OAAO,CAAC,MAAM,CAAC;IAkGlB;;OAEG;IACU,eAAe,CAC1B,kBAAkB,EAAE,KAAK,CAAC;QACxB,QAAQ,EAAE,YAAY,CAAC;QACvB,SAAS,EAAE,gBAAgB,EAAE,CAAC;KAC/B,CAAC,EACF,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,gBAAgB,CAAC;YAqDd,6BAA6B;IAwKpC,kBAAkB,CACvB,kBAAkB,EAAE,KAAK,CAAC;QACxB,QAAQ,EAAE,YAAY,CAAC;QACvB,SAAS,EAAE,gBAAgB,EAAE,CAAC;KAC/B,CAAC,GACD,mBAAmB;IAwBtB,OAAO,CAAC,cAAc;IAkBtB;;;OAGG;IACH,OAAO,CAAC,uCAAuC;IA4I/C,OAAO,CAAC,iBAAiB;IAUzB;;OAEG;YACW,wBAAwB;IAuDtC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAmC7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAW9B;;OAEG;YACW,iBAAiB;IAqB/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;OAEG;IACH,OAAO,CAAC,cAAc;IA2BtB;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;OAEG;IACH,OAAO,CAAC,eAAe;YAKT,YAAY;IAY1B;;;;;;OAMG;IACH,OAAO,CAAC,0BAA0B;IAUlC,OAAO,CAAC,mBAAmB;IAoB3B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAoBrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;WACiB,wBAAwB,CAC1C,SAAS,EAAE,QAAQ,EAAE,EACrB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,gBAAgB,EAAE,CAAC;CA2C/B"}
1
+ {"version":3,"file":"CodeGenerator.d.ts","sourceRoot":"","sources":["../../src/managers/CodeGenerator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAE7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AA0CnD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,qBAAa,aAAa;IACxB,8EAA8E;IACjE,yBAAyB,CACpC,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,gBAAgB,EAAE,GAC5B,OAAO,CAAC,MAAM,CAAC;IA2GlB,8EAA8E;IACjE,2BAA2B,CACtC,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,gBAAgB,EAAE,GAC5B,OAAO,CAAC,MAAM,CAAC;IAkGlB;;OAEG;IACU,eAAe,CAC1B,kBAAkB,EAAE,KAAK,CAAC;QACxB,QAAQ,EAAE,YAAY,CAAC;QACvB,SAAS,EAAE,gBAAgB,EAAE,CAAC;KAC/B,CAAC,EACF,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,gBAAgB,CAAC;YAqDd,6BAA6B;IAwKpC,kBAAkB,CACvB,kBAAkB,EAAE,KAAK,CAAC;QACxB,QAAQ,EAAE,YAAY,CAAC;QACvB,SAAS,EAAE,gBAAgB,EAAE,CAAC;KAC/B,CAAC,GACD,mBAAmB;IAwBtB,OAAO,CAAC,cAAc;IAkBtB;;;OAGG;IACH,OAAO,CAAC,uCAAuC;IAwK/C,OAAO,CAAC,iBAAiB;IAUzB;;OAEG;YACW,wBAAwB;IAuDtC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAmC7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAW9B;;OAEG;YACW,iBAAiB;IAqB/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;OAEG;IACH,OAAO,CAAC,cAAc;IA2BtB;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;OAEG;IACH,OAAO,CAAC,eAAe;YAKT,YAAY;IAY1B;;;;;;OAMG;IACH,OAAO,CAAC,0BAA0B;IAUlC,OAAO,CAAC,mBAAmB;IAoB3B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAoBrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;WACiB,wBAAwB,CAC1C,SAAS,EAAE,QAAQ,EAAE,EACrB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,gBAAgB,EAAE,CAAC;CA2C/B"}
@@ -37,7 +37,6 @@ exports.CodeGenerator = void 0;
37
37
  const fs = __importStar(require("fs"));
38
38
  const cacheEntryBuilder_1 = require("../lib/pageAi/cacheEntryBuilder");
39
39
  const AnalyzePageTextTool_1 = require("../tools/AnalyzePageTextTool");
40
- const AssertPageTextTool_1 = require("../tools/AssertPageTextTool");
41
40
  const AssertPageTool_1 = require("../tools/AssertPageTool");
42
41
  const AssertTool_1 = require("../tools/AssertTool");
43
42
  const ChangeWebBrowserTabTool_1 = require("../tools/ChangeWebBrowserTabTool");
@@ -139,7 +138,9 @@ class CodeGenerator {
139
138
  .join('\n');
140
139
  const resultJson = flowMetadata.resultJsonSchema
141
140
  ? `// Extract an object from the page using the following JSON-schema.
142
- const extractedObject = await page.extract({schema: jsonSchemaToZod(${JSON.stringify(flowMetadata.resultJsonSchema)})});
141
+ const extractedObject = await page.ai.extract(
142
+ jsonSchemaToZod(${JSON.stringify(flowMetadata.resultJsonSchema)})
143
+ );
143
144
  testInfo.attach('extracted-object', { body: JSON.stringify(extractedObject), contentType: 'application/json' });`
144
145
  : '';
145
146
  const needsExpectImport = toolCalls.some((toolCall) => toolCall.name === AssertPageTool_1.AssertPageTool.NAME);
@@ -149,7 +150,9 @@ testInfo.attach('extracted-object', { body: JSON.stringify(extractedObject), con
149
150
  ${gptSetupNote}*/`
150
151
  : '';
151
152
  const script = `${preamble}
152
- import { test${needsExpectImport ? ', expect' : ''}${needsJsonSchemaToZodImport ? ', jsonSchemaToZod' : ''} } from 'donobu';${useStorageState ? "\nimport { getBrowserStorageStateFixture } from 'donobu';" : ''}
153
+ import { test${needsExpectImport ? ', expect' : ''}${needsJsonSchemaToZodImport ? ', jsonSchemaToZod' : ''} } from 'donobu';${useStorageState
154
+ ? "\nimport { getBrowserStorageStateFixture } from 'donobu';"
155
+ : ''}
153
156
 
154
157
  const title = '${testName}';
155
158
  const details = ${testDetails};
@@ -162,7 +165,7 @@ ${resultJson}
162
165
  }
163
166
  /** Creates a Node.js Microsoft Playwright script to replay the given flow. */
164
167
  async getFlowAsAiPlaywrightScript(flowMetadata, toolCalls) {
165
- const gptSetupNote = ` * This test replays a recorded Donobu flow via \`page.ai\` using the cached
168
+ const gptSetupNote = ` * This test replays a recorded Donobu flow via \`page.ai.act(...)\` using the cached
166
169
  * tool calls stored alongside this spec in \`donobu.json\`. If the cache entry
167
170
  * is missing or the parameters change, the run falls back to autonomous mode
168
171
  * and will require a GPT API key (e.g. OPENAI_API_KEY, ANTHROPIC_API_KEY, or
@@ -212,8 +215,8 @@ ${resultJson}
212
215
  ? `{\n${optionsLines.map((line) => ` ${line}`).join(',\n')}\n }`
213
216
  : '';
214
217
  const aiCallExpression = optionsLines.length > 0
215
- ? `page.ai(\`${sanitizedInstruction}\`, ${aiOptionsLiteral})`
216
- : `page.ai(\`${sanitizedInstruction}\`)`;
218
+ ? `page.ai.act(\`${sanitizedInstruction}\`, ${aiOptionsLiteral})`
219
+ : `page.ai.act(\`${sanitizedInstruction}\`)`;
217
220
  const needsTestInfo = flowMetadata.resultJsonSchema !== null;
218
221
  const cacheComment = ' // Cached tool calls for this flow live in donobu.json next to this spec.\n';
219
222
  const aiInvocation = needsTestInfo
@@ -451,11 +454,21 @@ ${pullRequestCreationSection}`;
451
454
  const serializedParams = JSON.stringify(rawParams, null, 2);
452
455
  switch (proposedToolCall.name) {
453
456
  case AssertTool_1.AssertTool.NAME: {
454
- return `${rationale}await page.visuallyAssert(${serializedParams});`;
457
+ const options = {
458
+ ...(rawParams.retries > 0 ? { retries: rawParams.retries } : {}),
459
+ ...(rawParams.retries > 0 && rawParams.retryWaitSeconds > 0
460
+ ? { retryWaitSeconds: rawParams.retryWaitSeconds }
461
+ : {}),
462
+ };
463
+ const serializedOptions = Object.keys(options).length > 0
464
+ ? `,${JSON.stringify(options, null, 2)}`
465
+ : '';
466
+ return `${rationale}await page.ai.assertPage(
467
+ ${JSON.stringify(rawParams.assertionToTestFor)}${serializedOptions});`;
455
468
  }
456
469
  case ChangeWebBrowserTabTool_1.ChangeWebBrowserTabTool.NAME: {
457
470
  const url = ChangeWebBrowserTabTool_1.ChangeWebBrowserTabCoreSchema.parse(proposedToolCall.parameters);
458
- return `${rationale}page = await page.changeTab('${url.tabUrl}');`;
471
+ return `${rationale}page = await page.changeTab(${JSON.stringify(url.tabUrl)});`;
459
472
  }
460
473
  case ChooseSelectOptionTool_1.ChooseSelectOptionTool.NAME: {
461
474
  const find = this.parseFindCall(rawParams);
@@ -466,7 +479,7 @@ ${pullRequestCreationSection}`;
466
479
  const find = this.parseFindCall(rawParams);
467
480
  return `${rationale}${find}.click()`;
468
481
  }
469
- case GoForwardOrBackTool_1.GoForwardOrBackTool.NAME:
482
+ case GoForwardOrBackTool_1.GoForwardOrBackTool.NAME: {
470
483
  if (rawParams.direction === 'FORWARD') {
471
484
  return `${rationale}await page.goForward();`;
472
485
  }
@@ -476,8 +489,10 @@ ${pullRequestCreationSection}`;
476
489
  else {
477
490
  throw new Error(`Invalid ${GoForwardOrBackTool_1.GoForwardOrBackTool.NAME} params: ${serializedParams}`);
478
491
  }
479
- case GoToWebpageTool_1.GoToWebpageTool.NAME:
480
- return `${rationale}await page.goto('${rawParams.url}');`;
492
+ }
493
+ case GoToWebpageTool_1.GoToWebpageTool.NAME: {
494
+ return `${rationale}await page.goto(${JSON.stringify(rawParams.url)});`;
495
+ }
481
496
  case HoverOverElementTool_1.HoverOverElementTool.NAME: {
482
497
  const find = this.parseFindCall(rawParams);
483
498
  return `${rationale}${find}.hover()`;
@@ -501,64 +516,79 @@ ${pullRequestCreationSection}`;
501
516
  const { selector: _selector, key } = rawParams;
502
517
  return `${rationale}${find}.pressKey(${JSON.stringify(key)})`;
503
518
  }
504
- case ReloadPageTool_1.ReloadPageTool.NAME:
519
+ case ReloadPageTool_1.ReloadPageTool.NAME: {
505
520
  return `${rationale}await page.reload();`;
506
- case ScrollPageTool_1.ScrollPageTool.NAME:
521
+ }
522
+ case ScrollPageTool_1.ScrollPageTool.NAME: {
507
523
  const find = this.parseFindCall(rawParams);
508
524
  const { selector: _selector, direction, maxScroll } = rawParams;
509
525
  return `${rationale}${find}.scroll(
510
526
  ${JSON.stringify(direction)},
511
527
  ${maxScroll ? JSON.stringify({ maxScroll }) : ''})`;
512
- case WaitTool_1.WaitTool.NAME:
528
+ }
529
+ case WaitTool_1.WaitTool.NAME: {
513
530
  return `${rationale}await page.waitForTimeout(${rawParams.seconds * 1000});`;
531
+ }
514
532
  case AssertPageTool_1.AssertPageTool.NAME: {
515
533
  const assertionType = rawParams.type;
516
534
  const expected = rawParams.expected;
517
535
  const isRegex = rawParams.isRegex || false;
518
536
  switch (assertionType) {
519
- case 'title':
537
+ case 'title': {
520
538
  if (isRegex) {
521
539
  return `${rationale}await expect(page).toHaveTitle(new RegExp(${JSON.stringify(expected)}));`;
522
540
  }
523
541
  else {
524
542
  return `${rationale}await expect(page).toHaveTitle('${expected}');`;
525
543
  }
526
- case 'url':
544
+ }
545
+ case 'url': {
527
546
  if (isRegex) {
528
547
  return `${rationale}await expect(page).toHaveURL(new RegExp(${JSON.stringify(expected)}));`;
529
548
  }
530
549
  else {
531
550
  return `${rationale}await expect(page).toHaveURL('${expected}');`;
532
551
  }
533
- case 'content':
552
+ }
553
+ case 'content': {
534
554
  if (isRegex) {
535
555
  return `${rationale}await expect(page.locator('body')).toContainText(new RegExp(${JSON.stringify(expected)}));`;
536
556
  }
537
557
  else {
538
558
  return `${rationale}await expect(page.getByText('${expected}')).toBeVisible();`;
539
559
  }
540
- default:
560
+ }
561
+ default: {
541
562
  // Fallback to the generic tool call if unknown type
542
- return `${rationale}await page.${proposedToolCall.name}(${hasNonEmptyParameters ? JSON.stringify({ type: assertionType, expected, isRegex }, null, 2) : ''});`;
563
+ return `${rationale}await page.${proposedToolCall.name}(
564
+ ${hasNonEmptyParameters ? JSON.stringify({ type: assertionType, expected, isRegex }, null, 2) : ''});`;
565
+ }
543
566
  }
544
567
  }
545
- case RememberPageTextTool_1.RememberPageTextTool.NAME:
568
+ case RememberPageTextTool_1.RememberPageTextTool.NAME: {
546
569
  delete rawParams.text;
547
570
  const updatedSerializedParams = JSON.stringify(rawParams, null, 2);
548
571
  return `${rationale}await page.run('${proposedToolCall.name}', ${updatedSerializedParams});`;
549
- // The following tools can be mapped directly.
550
- case AnalyzePageTextTool_1.AnalyzePageTextTool.NAME:
551
- case AssertPageTextTool_1.AssertPageTextTool.NAME:
552
- case CreateBrowserCookieReportTool_1.CreateBrowserCookieReportTool.NAME:
572
+ }
573
+ case AnalyzePageTextTool_1.AnalyzePageTextTool.NAME: {
574
+ return `${rationale}await page.ai.analyzePageText(
575
+ ${JSON.stringify(rawParams.analysisToRun)},
576
+ ${JSON.stringify({ additionalContext: rawParams.additionalRelevantContext })})`;
577
+ }
553
578
  case RunAccessibilityTestTool_1.RunAccessibilityTestTool.NAME: {
554
- return `${rationale}await page.${proposedToolCall.name}(${hasNonEmptyParameters ? serializedParams : ''});`;
579
+ return `${rationale}await page.runAccessibilityTest();`;
555
580
  }
556
- default:
581
+ case CreateBrowserCookieReportTool_1.CreateBrowserCookieReportTool.NAME: {
582
+ return `${rationale}await page.ai.createCookieReport();`;
583
+ }
584
+ // All other tools delegate to the general 'run' method.
585
+ default: {
557
586
  const toolName = proposedToolCall.name;
558
587
  const toolCallScript = hasNonEmptyParameters
559
- ? `${rationale}await page.run('${toolName}', ${serializedParams});`
560
- : `${rationale}await page.run('${toolName}');`;
588
+ ? `${rationale}await page.run(${JSON.stringify(toolName)}, ${serializedParams});`
589
+ : `${rationale}await page.run(${JSON.stringify(toolName)});`;
561
590
  return toolCallScript;
591
+ }
562
592
  }
563
593
  }
564
594
  generateGitIgnore() {