donobu 2.15.1 → 2.16.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.
- package/dist/assets/control-panel.js +30 -3
- package/dist/assets/generated/parameter-schemas.json +33 -33
- package/dist/assets/generated/version +1 -1
- package/dist/assets/interactive-elements-tracker.js +351 -0
- package/dist/assets/page-interactions-tracker.js +39 -20
- package/dist/assets/smart-selector-generator.js +38 -15
- package/dist/bindings/FocusPage.d.ts +6 -1
- package/dist/bindings/FocusPage.d.ts.map +1 -1
- package/dist/bindings/FocusPage.js +2 -8
- package/dist/bindings/FocusPage.js.map +1 -1
- package/dist/bindings/PageInteractionTracker.d.ts +9 -2
- package/dist/bindings/PageInteractionTracker.d.ts.map +1 -1
- package/dist/bindings/PageInteractionTracker.js +27 -3
- package/dist/bindings/PageInteractionTracker.js.map +1 -1
- package/dist/bindings/ProposeToolCall.d.ts +20 -0
- package/dist/bindings/ProposeToolCall.d.ts.map +1 -0
- package/dist/bindings/ProposeToolCall.js +29 -0
- package/dist/bindings/ProposeToolCall.js.map +1 -0
- package/dist/bindings/ToggleDonobuAnnotations.d.ts +5 -2
- package/dist/bindings/ToggleDonobuAnnotations.d.ts.map +1 -1
- package/dist/bindings/ToggleDonobuAnnotations.js +12 -6
- package/dist/bindings/ToggleDonobuAnnotations.js.map +1 -1
- package/dist/esm/assets/control-panel.js +30 -3
- package/dist/esm/assets/generated/parameter-schemas.json +33 -33
- package/dist/esm/assets/generated/version +1 -1
- package/dist/esm/assets/interactive-elements-tracker.js +351 -0
- package/dist/esm/assets/page-interactions-tracker.js +39 -20
- package/dist/esm/assets/smart-selector-generator.js +38 -15
- package/dist/esm/bindings/FocusPage.d.ts +6 -1
- package/dist/esm/bindings/FocusPage.d.ts.map +1 -1
- package/dist/esm/bindings/FocusPage.js +2 -8
- package/dist/esm/bindings/FocusPage.js.map +1 -1
- package/dist/esm/bindings/PageInteractionTracker.d.ts +9 -2
- package/dist/esm/bindings/PageInteractionTracker.d.ts.map +1 -1
- package/dist/esm/bindings/PageInteractionTracker.js +27 -3
- package/dist/esm/bindings/PageInteractionTracker.js.map +1 -1
- package/dist/esm/bindings/ProposeToolCall.d.ts +20 -0
- package/dist/esm/bindings/ProposeToolCall.d.ts.map +1 -0
- package/dist/esm/bindings/ProposeToolCall.js +29 -0
- package/dist/esm/bindings/ProposeToolCall.js.map +1 -0
- package/dist/esm/bindings/ToggleDonobuAnnotations.d.ts +5 -2
- package/dist/esm/bindings/ToggleDonobuAnnotations.d.ts.map +1 -1
- package/dist/esm/bindings/ToggleDonobuAnnotations.js +12 -6
- package/dist/esm/bindings/ToggleDonobuAnnotations.js.map +1 -1
- package/dist/esm/managers/CodeGenerator.d.ts.map +1 -1
- package/dist/esm/managers/CodeGenerator.js +2 -1
- package/dist/esm/managers/CodeGenerator.js.map +1 -1
- package/dist/esm/managers/ControlPanel.d.ts +124 -0
- package/dist/esm/managers/ControlPanel.d.ts.map +1 -0
- package/dist/esm/managers/ControlPanel.js +282 -0
- package/dist/esm/managers/ControlPanel.js.map +1 -0
- package/dist/esm/managers/DonobuFlow.d.ts +4 -12
- package/dist/esm/managers/DonobuFlow.d.ts.map +1 -1
- package/dist/esm/managers/DonobuFlow.js +35 -140
- package/dist/esm/managers/DonobuFlow.js.map +1 -1
- package/dist/esm/managers/InteractionVisualizer.d.ts +9 -15
- package/dist/esm/managers/InteractionVisualizer.d.ts.map +1 -1
- package/dist/esm/managers/InteractionVisualizer.js +44 -44
- package/dist/esm/managers/InteractionVisualizer.js.map +1 -1
- package/dist/esm/managers/PageInspector.d.ts +242 -0
- package/dist/esm/managers/PageInspector.d.ts.map +1 -0
- package/dist/esm/managers/PageInspector.js +783 -0
- package/dist/esm/managers/PageInspector.js.map +1 -0
- package/dist/esm/managers/ToolManager.d.ts.map +1 -1
- package/dist/esm/managers/ToolManager.js +3 -5
- package/dist/esm/managers/ToolManager.js.map +1 -1
- package/dist/esm/models/InteractableElement.d.ts +2 -2
- package/dist/esm/models/ToolCallContext.d.ts +6 -2
- package/dist/esm/models/ToolCallContext.d.ts.map +1 -1
- package/dist/esm/playwrightTestExtensions.d.ts +5 -0
- package/dist/esm/playwrightTestExtensions.d.ts.map +1 -1
- package/dist/esm/playwrightTestExtensions.js +52 -13
- package/dist/esm/playwrightTestExtensions.js.map +1 -1
- package/dist/esm/tools/AnalyzePageTextTool.js +1 -1
- package/dist/esm/tools/AnalyzePageTextTool.js.map +1 -1
- package/dist/esm/tools/AssertPageTextTool.js +1 -1
- package/dist/esm/tools/AssertPageTextTool.js.map +1 -1
- package/dist/esm/tools/AssertTool.d.ts.map +1 -1
- package/dist/esm/tools/AssertTool.js +4 -4
- package/dist/esm/tools/AssertTool.js.map +1 -1
- package/dist/esm/tools/ChangeWebBrowserTabTool.d.ts.map +1 -1
- package/dist/esm/tools/ChangeWebBrowserTabTool.js +8 -7
- package/dist/esm/tools/ChangeWebBrowserTabTool.js.map +1 -1
- package/dist/esm/tools/ClickTool.js +1 -1
- package/dist/esm/tools/ClickTool.js.map +1 -1
- package/dist/esm/tools/CreateBrowserCookieReportTool.js +1 -1
- package/dist/esm/tools/CreateBrowserCookieReportTool.js.map +1 -1
- package/dist/esm/tools/CustomToolRunnerTool.d.ts.map +1 -1
- package/dist/esm/tools/CustomToolRunnerTool.js +1 -1
- package/dist/esm/tools/CustomToolRunnerTool.js.map +1 -1
- package/dist/esm/tools/DetectBrokenLinksTool.js +1 -1
- package/dist/esm/tools/DetectBrokenLinksTool.js.map +1 -1
- package/dist/esm/tools/ExtractGoogleStreetviewEntityDataTool.js +1 -1
- package/dist/esm/tools/ExtractGoogleStreetviewEntityDataTool.js.map +1 -1
- package/dist/esm/tools/ExtractPaymentProviderKeyTool.js +1 -1
- package/dist/esm/tools/ExtractPaymentProviderKeyTool.js.map +1 -1
- package/dist/esm/tools/ExtractPublicFacebookEntityDataTool.js +1 -1
- package/dist/esm/tools/ExtractPublicFacebookEntityDataTool.js.map +1 -1
- package/dist/esm/tools/GoForwardOrBackTool.js +1 -1
- package/dist/esm/tools/GoForwardOrBackTool.js.map +1 -1
- package/dist/esm/tools/GoToGoogleMapsStreetViewTool.js +1 -1
- package/dist/esm/tools/GoToGoogleMapsStreetViewTool.js.map +1 -1
- package/dist/esm/tools/GoToWebpageTool.js +1 -1
- package/dist/esm/tools/GoToWebpageTool.js.map +1 -1
- package/dist/esm/tools/HoverOverElementTool.d.ts.map +1 -1
- package/dist/esm/tools/HoverOverElementTool.js +1 -1
- package/dist/esm/tools/HoverOverElementTool.js.map +1 -1
- package/dist/esm/tools/NavigateWithinStreetView.js +1 -1
- package/dist/esm/tools/NavigateWithinStreetView.js.map +1 -1
- package/dist/esm/tools/PressKeyTool.js +1 -1
- package/dist/esm/tools/PressKeyTool.js.map +1 -1
- package/dist/esm/tools/ReloadPageTool.js +1 -1
- package/dist/esm/tools/ReloadPageTool.js.map +1 -1
- package/dist/esm/tools/ReplayableInteraction.d.ts +16 -1
- package/dist/esm/tools/ReplayableInteraction.d.ts.map +1 -1
- package/dist/esm/tools/ReplayableInteraction.js +169 -16
- package/dist/esm/tools/ReplayableInteraction.js.map +1 -1
- package/dist/esm/tools/RunAccessibilityTestTool.d.ts +8 -0
- package/dist/esm/tools/RunAccessibilityTestTool.d.ts.map +1 -1
- package/dist/esm/tools/RunAccessibilityTestTool.js +15 -2
- package/dist/esm/tools/RunAccessibilityTestTool.js.map +1 -1
- package/dist/esm/tools/RunInlineJavaScriptCodeTool.d.ts.map +1 -1
- package/dist/esm/tools/RunInlineJavaScriptCodeTool.js +1 -1
- package/dist/esm/tools/RunInlineJavaScriptCodeTool.js.map +1 -1
- package/dist/esm/tools/SaveWebpageAsPdfTool.js +1 -1
- package/dist/esm/tools/SaveWebpageAsPdfTool.js.map +1 -1
- package/dist/esm/tools/ScrollPageTool.d.ts +1 -1
- package/dist/esm/tools/ScrollPageTool.d.ts.map +1 -1
- package/dist/esm/tools/ScrollPageTool.js +47 -4
- package/dist/esm/tools/ScrollPageTool.js.map +1 -1
- package/dist/esm/tools/WaitTool.js +1 -1
- package/dist/esm/tools/WaitTool.js.map +1 -1
- package/dist/esm/utils/MiscUtils.d.ts +2 -2
- package/dist/esm/utils/MiscUtils.js +2 -2
- package/dist/esm/utils/PlaywrightUtils.d.ts +26 -127
- package/dist/esm/utils/PlaywrightUtils.d.ts.map +1 -1
- package/dist/esm/utils/PlaywrightUtils.js +133 -935
- package/dist/esm/utils/PlaywrightUtils.js.map +1 -1
- package/dist/managers/CodeGenerator.d.ts.map +1 -1
- package/dist/managers/CodeGenerator.js +2 -1
- package/dist/managers/CodeGenerator.js.map +1 -1
- package/dist/managers/ControlPanel.d.ts +124 -0
- package/dist/managers/ControlPanel.d.ts.map +1 -0
- package/dist/managers/ControlPanel.js +282 -0
- package/dist/managers/ControlPanel.js.map +1 -0
- package/dist/managers/DonobuFlow.d.ts +4 -12
- package/dist/managers/DonobuFlow.d.ts.map +1 -1
- package/dist/managers/DonobuFlow.js +35 -140
- package/dist/managers/DonobuFlow.js.map +1 -1
- package/dist/managers/InteractionVisualizer.d.ts +9 -15
- package/dist/managers/InteractionVisualizer.d.ts.map +1 -1
- package/dist/managers/InteractionVisualizer.js +44 -44
- package/dist/managers/InteractionVisualizer.js.map +1 -1
- package/dist/managers/PageInspector.d.ts +242 -0
- package/dist/managers/PageInspector.d.ts.map +1 -0
- package/dist/managers/PageInspector.js +783 -0
- package/dist/managers/PageInspector.js.map +1 -0
- package/dist/managers/ToolManager.d.ts.map +1 -1
- package/dist/managers/ToolManager.js +3 -5
- package/dist/managers/ToolManager.js.map +1 -1
- package/dist/models/InteractableElement.d.ts +2 -2
- package/dist/models/ToolCallContext.d.ts +6 -2
- package/dist/models/ToolCallContext.d.ts.map +1 -1
- package/dist/playwrightTestExtensions.d.ts +5 -0
- package/dist/playwrightTestExtensions.d.ts.map +1 -1
- package/dist/playwrightTestExtensions.js +52 -13
- package/dist/playwrightTestExtensions.js.map +1 -1
- package/dist/tools/AnalyzePageTextTool.js +1 -1
- package/dist/tools/AnalyzePageTextTool.js.map +1 -1
- package/dist/tools/AssertPageTextTool.js +1 -1
- package/dist/tools/AssertPageTextTool.js.map +1 -1
- package/dist/tools/AssertTool.d.ts.map +1 -1
- package/dist/tools/AssertTool.js +4 -4
- package/dist/tools/AssertTool.js.map +1 -1
- package/dist/tools/ChangeWebBrowserTabTool.d.ts.map +1 -1
- package/dist/tools/ChangeWebBrowserTabTool.js +8 -7
- package/dist/tools/ChangeWebBrowserTabTool.js.map +1 -1
- package/dist/tools/ClickTool.js +1 -1
- package/dist/tools/ClickTool.js.map +1 -1
- package/dist/tools/CreateBrowserCookieReportTool.js +1 -1
- package/dist/tools/CreateBrowserCookieReportTool.js.map +1 -1
- package/dist/tools/CustomToolRunnerTool.d.ts.map +1 -1
- package/dist/tools/CustomToolRunnerTool.js +1 -1
- package/dist/tools/CustomToolRunnerTool.js.map +1 -1
- package/dist/tools/DetectBrokenLinksTool.js +1 -1
- package/dist/tools/DetectBrokenLinksTool.js.map +1 -1
- package/dist/tools/ExtractGoogleStreetviewEntityDataTool.js +1 -1
- package/dist/tools/ExtractGoogleStreetviewEntityDataTool.js.map +1 -1
- package/dist/tools/ExtractPaymentProviderKeyTool.js +1 -1
- package/dist/tools/ExtractPaymentProviderKeyTool.js.map +1 -1
- package/dist/tools/ExtractPublicFacebookEntityDataTool.js +1 -1
- package/dist/tools/ExtractPublicFacebookEntityDataTool.js.map +1 -1
- package/dist/tools/GoForwardOrBackTool.js +1 -1
- package/dist/tools/GoForwardOrBackTool.js.map +1 -1
- package/dist/tools/GoToGoogleMapsStreetViewTool.js +1 -1
- package/dist/tools/GoToGoogleMapsStreetViewTool.js.map +1 -1
- package/dist/tools/GoToWebpageTool.js +1 -1
- package/dist/tools/GoToWebpageTool.js.map +1 -1
- package/dist/tools/HoverOverElementTool.d.ts.map +1 -1
- package/dist/tools/HoverOverElementTool.js +1 -1
- package/dist/tools/HoverOverElementTool.js.map +1 -1
- package/dist/tools/NavigateWithinStreetView.js +1 -1
- package/dist/tools/NavigateWithinStreetView.js.map +1 -1
- package/dist/tools/PressKeyTool.js +1 -1
- package/dist/tools/PressKeyTool.js.map +1 -1
- package/dist/tools/ReloadPageTool.js +1 -1
- package/dist/tools/ReloadPageTool.js.map +1 -1
- package/dist/tools/ReplayableInteraction.d.ts +16 -1
- package/dist/tools/ReplayableInteraction.d.ts.map +1 -1
- package/dist/tools/ReplayableInteraction.js +169 -16
- package/dist/tools/ReplayableInteraction.js.map +1 -1
- package/dist/tools/RunAccessibilityTestTool.d.ts +8 -0
- package/dist/tools/RunAccessibilityTestTool.d.ts.map +1 -1
- package/dist/tools/RunAccessibilityTestTool.js +15 -2
- package/dist/tools/RunAccessibilityTestTool.js.map +1 -1
- package/dist/tools/RunInlineJavaScriptCodeTool.d.ts.map +1 -1
- package/dist/tools/RunInlineJavaScriptCodeTool.js +1 -1
- package/dist/tools/RunInlineJavaScriptCodeTool.js.map +1 -1
- package/dist/tools/SaveWebpageAsPdfTool.js +1 -1
- package/dist/tools/SaveWebpageAsPdfTool.js.map +1 -1
- package/dist/tools/ScrollPageTool.d.ts +1 -1
- package/dist/tools/ScrollPageTool.d.ts.map +1 -1
- package/dist/tools/ScrollPageTool.js +47 -4
- package/dist/tools/ScrollPageTool.js.map +1 -1
- package/dist/tools/WaitTool.js +1 -1
- package/dist/tools/WaitTool.js.map +1 -1
- package/dist/utils/MiscUtils.d.ts +2 -2
- package/dist/utils/MiscUtils.js +2 -2
- package/dist/utils/PlaywrightUtils.d.ts +26 -127
- package/dist/utils/PlaywrightUtils.d.ts.map +1 -1
- package/dist/utils/PlaywrightUtils.js +133 -935
- package/dist/utils/PlaywrightUtils.js.map +1 -1
- package/package.json +1 -1
- package/dist/assets/clickable-elements-tracker.js +0 -63
- package/dist/assets/zaru-eyes.html +0 -141
- package/dist/esm/assets/clickable-elements-tracker.js +0 -63
- package/dist/esm/assets/zaru-eyes.html +0 -141
- package/dist/esm/managers/TemplateInterpolator.d.ts +0 -19
- package/dist/esm/managers/TemplateInterpolator.d.ts.map +0 -1
- package/dist/esm/managers/TemplateInterpolator.js +0 -86
- package/dist/esm/managers/TemplateInterpolator.js.map +0 -1
- package/dist/esm/managers/ToolTipper.d.ts +0 -32
- package/dist/esm/managers/ToolTipper.d.ts.map +0 -1
- package/dist/esm/managers/ToolTipper.js +0 -229
- package/dist/esm/managers/ToolTipper.js.map +0 -1
- package/dist/esm/models/BrowserState.d.ts +0 -26
- package/dist/esm/models/BrowserState.d.ts.map +0 -1
- package/dist/esm/models/BrowserState.js +0 -3
- package/dist/esm/models/BrowserState.js.map +0 -1
- package/dist/esm/models/ResolverContext.d.ts +0 -7
- package/dist/esm/models/ResolverContext.d.ts.map +0 -1
- package/dist/esm/models/ResolverContext.js +0 -3
- package/dist/esm/models/ResolverContext.js.map +0 -1
- package/dist/esm/models/ToolTemplateDataSource.d.ts +0 -36
- package/dist/esm/models/ToolTemplateDataSource.d.ts.map +0 -1
- package/dist/esm/models/ToolTemplateDataSource.js +0 -3
- package/dist/esm/models/ToolTemplateDataSource.js.map +0 -1
- package/dist/esm/test.d.ts +0 -78
- package/dist/esm/test.d.ts.map +0 -1
- package/dist/esm/test.js +0 -423
- package/dist/esm/test.js.map +0 -1
- package/dist/esm/utils/TemplateInterpolator.d.ts +0 -29
- package/dist/esm/utils/TemplateInterpolator.d.ts.map +0 -1
- package/dist/esm/utils/TemplateInterpolator.js +0 -206
- package/dist/esm/utils/TemplateInterpolator.js.map +0 -1
- package/dist/managers/TemplateInterpolator.d.ts +0 -19
- package/dist/managers/TemplateInterpolator.d.ts.map +0 -1
- package/dist/managers/TemplateInterpolator.js +0 -86
- package/dist/managers/TemplateInterpolator.js.map +0 -1
- package/dist/managers/ToolTipper.d.ts +0 -32
- package/dist/managers/ToolTipper.d.ts.map +0 -1
- package/dist/managers/ToolTipper.js +0 -229
- package/dist/managers/ToolTipper.js.map +0 -1
- package/dist/models/BrowserState.d.ts +0 -26
- package/dist/models/BrowserState.d.ts.map +0 -1
- package/dist/models/BrowserState.js +0 -3
- package/dist/models/BrowserState.js.map +0 -1
- package/dist/models/ResolverContext.d.ts +0 -7
- package/dist/models/ResolverContext.d.ts.map +0 -1
- package/dist/models/ResolverContext.js +0 -3
- package/dist/models/ResolverContext.js.map +0 -1
- package/dist/models/ToolTemplateDataSource.d.ts +0 -36
- package/dist/models/ToolTemplateDataSource.d.ts.map +0 -1
- package/dist/models/ToolTemplateDataSource.js +0 -3
- package/dist/models/ToolTemplateDataSource.js.map +0 -1
- package/dist/test.d.ts +0 -78
- package/dist/test.d.ts.map +0 -1
- package/dist/test.js +0 -423
- package/dist/test.js.map +0 -1
- package/dist/tsconfig.esm.tsbuildinfo +0 -1
- package/dist/utils/TemplateInterpolator.d.ts +0 -29
- package/dist/utils/TemplateInterpolator.d.ts.map +0 -1
- package/dist/utils/TemplateInterpolator.js +0 -211
- package/dist/utils/TemplateInterpolator.js.map +0 -1
|
@@ -1,8 +1,23 @@
|
|
|
1
1
|
(() => {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
if (!window.__donobu) {
|
|
3
|
+
Object.defineProperty(window, '__donobu', {
|
|
4
|
+
value: {},
|
|
5
|
+
enumerable: false,
|
|
6
|
+
writable: true,
|
|
7
|
+
configurable: false,
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
if (!window.__donobu.cssEscape) {
|
|
12
|
+
// Prevent sneaky websites from undefining the CSS escape function.
|
|
13
|
+
// We run first and we can save the CSS escape function.
|
|
14
|
+
Object.defineProperty(window.__donobu, 'cssEscape', {
|
|
15
|
+
value: CSS.escape,
|
|
16
|
+
enumerable: false,
|
|
17
|
+
writable: false,
|
|
18
|
+
configurable: false,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
6
21
|
|
|
7
22
|
class SelectorToCount {
|
|
8
23
|
constructor(selector) {
|
|
@@ -118,7 +133,8 @@
|
|
|
118
133
|
return null;
|
|
119
134
|
}
|
|
120
135
|
})
|
|
121
|
-
.filter((a) => a !== null
|
|
136
|
+
.filter((a) => a !== null)
|
|
137
|
+
.filter((a) => a.count !== 0)
|
|
122
138
|
.sort((a, b) => {
|
|
123
139
|
// 1. fewer matches -> better
|
|
124
140
|
if (a.count !== b.count) return a.count - b.count;
|
|
@@ -235,7 +251,7 @@
|
|
|
235
251
|
if (id) {
|
|
236
252
|
const label = document.querySelector(`label[for='${id}']`);
|
|
237
253
|
if (label) {
|
|
238
|
-
const labelText = label.textContent
|
|
254
|
+
const labelText = label.textContent?.trim();
|
|
239
255
|
if (labelText) {
|
|
240
256
|
const safeLabelText = xpathLiteral(labelText);
|
|
241
257
|
return [
|
|
@@ -311,16 +327,23 @@
|
|
|
311
327
|
}
|
|
312
328
|
|
|
313
329
|
escapeCss(str) {
|
|
314
|
-
return window.
|
|
330
|
+
return window.__donobu.cssEscape(str);
|
|
315
331
|
}
|
|
316
332
|
}
|
|
317
333
|
|
|
318
|
-
window.
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
334
|
+
if (!window.__donobu.generateSmartSelectors) {
|
|
335
|
+
Object.defineProperty(window.__donobu, 'generateSmartSelectors', {
|
|
336
|
+
value: (element) => {
|
|
337
|
+
try {
|
|
338
|
+
return new SelectorGenerator(element).generate();
|
|
339
|
+
} catch (e) {
|
|
340
|
+
console.warn('Exception while generating selector', e);
|
|
341
|
+
return [];
|
|
342
|
+
}
|
|
343
|
+
},
|
|
344
|
+
enumerable: false,
|
|
345
|
+
writable: false,
|
|
346
|
+
configurable: false,
|
|
347
|
+
});
|
|
348
|
+
}
|
|
326
349
|
})();
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { FocusedPage } from '../models/FocusedPage';
|
|
2
2
|
import { NamedBindingCallback } from './NamedBindingCallback';
|
|
3
3
|
import { BrowserContext, Page, Frame } from 'playwright';
|
|
4
|
+
declare global {
|
|
5
|
+
interface Window {
|
|
6
|
+
[FocusPage.NAME]: () => void;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
4
9
|
/**
|
|
5
10
|
* A binding that brings the page executing this callback into focus.
|
|
6
11
|
*/
|
|
@@ -13,6 +18,6 @@ export declare class FocusPage implements NamedBindingCallback {
|
|
|
13
18
|
context: BrowserContext;
|
|
14
19
|
page: Page;
|
|
15
20
|
frame: Frame;
|
|
16
|
-
}, ...
|
|
21
|
+
}, ..._args: any[]): void;
|
|
17
22
|
}
|
|
18
23
|
//# sourceMappingURL=FocusPage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FocusPage.d.ts","sourceRoot":"","sources":["../../src/bindings/FocusPage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEzD;;GAEG;AACH,qBAAa,SAAU,YAAW,oBAAoB;IAGjC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAF/C,gBAAuB,IAAI,qBAAqB;gBAEZ,WAAW,EAAE,WAAW;IAErD,IAAI,IAAI,MAAM;IAId,IAAI,CACT,MAAM,EAAE;QAAE,OAAO,EAAE,cAAc,CAAC;QAAC,IAAI,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,EAC7D,GAAG,
|
|
1
|
+
{"version":3,"file":"FocusPage.d.ts","sourceRoot":"","sources":["../../src/bindings/FocusPage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;KAC9B;CACF;AAED;;GAEG;AACH,qBAAa,SAAU,YAAW,oBAAoB;IAGjC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAF/C,gBAAuB,IAAI,qBAAqB;gBAEZ,WAAW,EAAE,WAAW;IAErD,IAAI,IAAI,MAAM;IAId,IAAI,CACT,MAAM,EAAE;QAAE,OAAO,EAAE,cAAc,CAAC;QAAC,IAAI,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,EAC7D,GAAG,KAAK,EAAE,GAAG,EAAE,GACd,IAAI;CAGR"}
|
|
@@ -11,14 +11,8 @@ class FocusPage {
|
|
|
11
11
|
name() {
|
|
12
12
|
return FocusPage.NAME;
|
|
13
13
|
}
|
|
14
|
-
call(source, ...
|
|
15
|
-
|
|
16
|
-
const page = source.context.pages().find((tab) => tab.url() === tabUrl);
|
|
17
|
-
if (page) {
|
|
18
|
-
this.focusedPage.current = page;
|
|
19
|
-
return true;
|
|
20
|
-
}
|
|
21
|
-
return false;
|
|
14
|
+
call(source, ..._args) {
|
|
15
|
+
this.focusedPage.current = source.page;
|
|
22
16
|
}
|
|
23
17
|
}
|
|
24
18
|
exports.FocusPage = FocusPage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FocusPage.js","sourceRoot":"","sources":["../../src/bindings/FocusPage.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"FocusPage.js","sourceRoot":"","sources":["../../src/bindings/FocusPage.ts"],"names":[],"mappings":";;;AAUA;;GAEG;AACH,MAAa,SAAS;IAGpB,YAAoC,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;IAAG,CAAC;IAEzD,IAAI;QACT,OAAO,SAAS,CAAC,IAAI,CAAC;IACxB,CAAC;IAEM,IAAI,CACT,MAA6D,EAC7D,GAAG,KAAY;QAEf,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;IACzC,CAAC;;AAdH,8BAeC;AAdwB,cAAI,GAAG,iBAAiB,CAAC"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { BrowserContext, Page, Frame } from 'playwright';
|
|
2
2
|
import { NamedBindingCallback } from './NamedBindingCallback';
|
|
3
3
|
import { DonobuFlow } from '../managers/DonobuFlow';
|
|
4
|
+
declare global {
|
|
5
|
+
interface Window {
|
|
6
|
+
[PageInteractionTracker.NAME]: () => boolean;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
4
9
|
/**
|
|
5
10
|
* Tracks direct user actions that have occurred in the web browser.
|
|
6
11
|
* This differs from normal Donobu flows which use GPT to analyze pages and propose actions.
|
|
@@ -8,8 +13,10 @@ import { DonobuFlow } from '../managers/DonobuFlow';
|
|
|
8
13
|
*/
|
|
9
14
|
export declare class PageInteractionTracker implements NamedBindingCallback {
|
|
10
15
|
private readonly donobuFlow;
|
|
11
|
-
static readonly
|
|
12
|
-
|
|
16
|
+
private static readonly INIT_SCRIPT;
|
|
17
|
+
static readonly NAME = "__donobuTrackInteraction";
|
|
18
|
+
static register(donobuFlow: DonobuFlow, browserContext: BrowserContext): Promise<PageInteractionTracker>;
|
|
19
|
+
private constructor();
|
|
13
20
|
name(): string;
|
|
14
21
|
/**
|
|
15
22
|
* Handles tracking of page interactions.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageInteractionTracker.d.ts","sourceRoot":"","sources":["../../src/bindings/PageInteractionTracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"PageInteractionTracker.d.ts","sourceRoot":"","sources":["../../src/bindings/PageInteractionTracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAgBpD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC;KAC9C;CACF;AAQD;;;;GAIG;AACH,qBAAa,sBAAuB,YAAW,oBAAoB;IAqC7C,OAAO,CAAC,QAAQ,CAAC,UAAU;IApC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAEjC;IAGF,gBAAuB,IAAI,8BAA8B;WAErC,QAAQ,CAC1B,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,sBAAsB,CAAC;IA0BlC,OAAO;IAEA,IAAI,IAAI,MAAM;IAIrB;;;;;OAKG;IACU,IAAI,CACf,MAAM,EAAE;QAAE,OAAO,EAAE,cAAc,CAAC;QAAC,IAAI,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,EAC7D,GAAG,IAAI,EAAE,GAAG,EAAE,GACb,OAAO,CAAC,IAAI,CAAC;YAkDF,cAAc;CAyD7B"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.PageInteractionTracker = void 0;
|
|
4
7
|
const MiscUtils_1 = require("../utils/MiscUtils");
|
|
@@ -6,12 +9,31 @@ const ClickTool_1 = require("../tools/ClickTool");
|
|
|
6
9
|
const PressKeyTool_1 = require("../tools/PressKeyTool");
|
|
7
10
|
const Logger_1 = require("../utils/Logger");
|
|
8
11
|
const PlaywrightUtils_1 = require("../utils/PlaywrightUtils");
|
|
12
|
+
const path_1 = __importDefault(require("path"));
|
|
9
13
|
/**
|
|
10
14
|
* Tracks direct user actions that have occurred in the web browser.
|
|
11
15
|
* This differs from normal Donobu flows which use GPT to analyze pages and propose actions.
|
|
12
16
|
* This tracker records direct user actions for reliable replay and GPT visibility.
|
|
13
17
|
*/
|
|
14
18
|
class PageInteractionTracker {
|
|
19
|
+
static async register(donobuFlow, browserContext) {
|
|
20
|
+
const instance = new PageInteractionTracker(donobuFlow);
|
|
21
|
+
await browserContext.addInitScript(PlaywrightUtils_1.PlaywrightUtils.SMART_SELECTOR_GENERATOR_INIT_SCRIPT);
|
|
22
|
+
browserContext.on('page', async (page) => {
|
|
23
|
+
page.on('framenavigated', async (frame) => {
|
|
24
|
+
try {
|
|
25
|
+
await frame.evaluate(PageInteractionTracker.INIT_SCRIPT);
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
if (!PlaywrightUtils_1.PlaywrightUtils.isPageClosedError(error)) {
|
|
29
|
+
Logger_1.appLogger.error('Error when evaluating PageInteractionTracker.INIT_SCRIPT', error);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
await browserContext.exposeBinding(instance.name(), instance.call.bind(instance));
|
|
35
|
+
return instance;
|
|
36
|
+
}
|
|
15
37
|
constructor(donobuFlow) {
|
|
16
38
|
this.donobuFlow = donobuFlow;
|
|
17
39
|
}
|
|
@@ -35,7 +57,7 @@ class PageInteractionTracker {
|
|
|
35
57
|
const postCallImageId = await this.donobuFlow.persistence.saveScreenShot(this.donobuFlow.metadata.id, postCallImage);
|
|
36
58
|
const frameSelector = source.frame.url() === source.page.url()
|
|
37
59
|
? null
|
|
38
|
-
: await PlaywrightUtils_1.PlaywrightUtils.
|
|
60
|
+
: (await PlaywrightUtils_1.PlaywrightUtils.generateSelectors(await source.frame.frameElement()))[0];
|
|
39
61
|
const elementSelectors = event.selectors;
|
|
40
62
|
const externalToolCall = await this.createToolCall(event, elementSelectors, frameSelector, postCallImageId, source.page.url(), timestamp);
|
|
41
63
|
if (externalToolCall) {
|
|
@@ -79,7 +101,7 @@ class PageInteractionTracker {
|
|
|
79
101
|
},
|
|
80
102
|
outcome: {
|
|
81
103
|
isSuccessful: true,
|
|
82
|
-
forLlm:
|
|
104
|
+
forLlm: `Pressed the '${event.key}' key at the element.`,
|
|
83
105
|
metadata: selectorForReplay,
|
|
84
106
|
},
|
|
85
107
|
postCallImageId: postCallImageId,
|
|
@@ -94,5 +116,7 @@ class PageInteractionTracker {
|
|
|
94
116
|
}
|
|
95
117
|
}
|
|
96
118
|
exports.PageInteractionTracker = PageInteractionTracker;
|
|
97
|
-
PageInteractionTracker.
|
|
119
|
+
PageInteractionTracker.INIT_SCRIPT = MiscUtils_1.MiscUtils.getResourceFileAsString(path_1.default.join('page-interactions-tracker.js'));
|
|
120
|
+
// If this name is updated, the init script must also be updated.
|
|
121
|
+
PageInteractionTracker.NAME = '__donobuTrackInteraction';
|
|
98
122
|
//# sourceMappingURL=PageInteractionTracker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageInteractionTracker.js","sourceRoot":"","sources":["../../src/bindings/PageInteractionTracker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PageInteractionTracker.js","sourceRoot":"","sources":["../../src/bindings/PageInteractionTracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { BrowserContext, Page, Frame } from 'playwright';
|
|
2
|
+
import { NamedBindingCallback } from './NamedBindingCallback';
|
|
3
|
+
import { DonobuFlow } from '../managers/DonobuFlow';
|
|
4
|
+
/**
|
|
5
|
+
* A binding to allow arbitrary tool calls to be proposed from the frontend.
|
|
6
|
+
* This is for debugging purposes only.
|
|
7
|
+
*/
|
|
8
|
+
export declare class ProposeToolCall implements NamedBindingCallback {
|
|
9
|
+
private readonly donobuFlow;
|
|
10
|
+
static readonly NAME = "__donobuProposeToolCall";
|
|
11
|
+
static register(donobuFlow: DonobuFlow, browserContext: BrowserContext): Promise<ProposeToolCall>;
|
|
12
|
+
constructor(donobuFlow: DonobuFlow);
|
|
13
|
+
name(): string;
|
|
14
|
+
call(_source: {
|
|
15
|
+
context: BrowserContext;
|
|
16
|
+
page: Page;
|
|
17
|
+
frame: Frame;
|
|
18
|
+
}, ...args: any[]): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=ProposeToolCall.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProposeToolCall.d.ts","sourceRoot":"","sources":["../../src/bindings/ProposeToolCall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIpD;;;GAGG;AACH,qBAAa,eAAgB,YAAW,oBAAoB;IAevC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAd9C,gBAAuB,IAAI,6BAA6B;WAEpC,QAAQ,CAC1B,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,eAAe,CAAC;gBASS,UAAU,EAAE,UAAU;IAEnD,IAAI,IAAI,MAAM;IAIR,IAAI,CACf,OAAO,EAAE;QAAE,OAAO,EAAE,cAAc,CAAC;QAAC,IAAI,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,EAC9D,GAAG,IAAI,EAAE,GAAG,EAAE,GACb,OAAO,CAAC,IAAI,CAAC;CAOjB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProposeToolCall = void 0;
|
|
4
|
+
const Logger_1 = require("../utils/Logger");
|
|
5
|
+
/**
|
|
6
|
+
* A binding to allow arbitrary tool calls to be proposed from the frontend.
|
|
7
|
+
* This is for debugging purposes only.
|
|
8
|
+
*/
|
|
9
|
+
class ProposeToolCall {
|
|
10
|
+
static async register(donobuFlow, browserContext) {
|
|
11
|
+
const instance = new ProposeToolCall(donobuFlow);
|
|
12
|
+
await browserContext.exposeBinding(instance.name(), instance.call.bind(instance));
|
|
13
|
+
return instance;
|
|
14
|
+
}
|
|
15
|
+
constructor(donobuFlow) {
|
|
16
|
+
this.donobuFlow = donobuFlow;
|
|
17
|
+
}
|
|
18
|
+
name() {
|
|
19
|
+
return ProposeToolCall.NAME;
|
|
20
|
+
}
|
|
21
|
+
async call(_source, ...args) {
|
|
22
|
+
Logger_1.appLogger.debug(`Proposed tool call from frontend: ${JSON.stringify(args[0])}`);
|
|
23
|
+
const proposedToolCall = args[0];
|
|
24
|
+
this.donobuFlow.proposedToolCalls.push(proposedToolCall);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.ProposeToolCall = ProposeToolCall;
|
|
28
|
+
ProposeToolCall.NAME = '__donobuProposeToolCall';
|
|
29
|
+
//# sourceMappingURL=ProposeToolCall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProposeToolCall.js","sourceRoot":"","sources":["../../src/bindings/ProposeToolCall.ts"],"names":[],"mappings":";;;AAGA,4CAA4C;AAG5C;;;GAGG;AACH,MAAa,eAAe;IAGnB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAC1B,UAAsB,EACtB,cAA8B;QAE9B,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;QACjD,MAAM,cAAc,CAAC,aAAa,CAChC,QAAQ,CAAC,IAAI,EAAE,EACf,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC7B,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,YAAoC,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAEvD,IAAI;QACT,OAAO,eAAe,CAAC,IAAI,CAAC;IAC9B,CAAC;IAEM,KAAK,CAAC,IAAI,CACf,OAA8D,EAC9D,GAAG,IAAW;QAEd,kBAAS,CAAC,KAAK,CACb,qCAAqC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAC/D,CAAC;QACF,MAAM,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAA0B,CAAC;QAC1D,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC3D,CAAC;;AA9BH,0CA+BC;AA9BwB,oBAAI,GAAG,yBAAyB,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PageInspector } from '../managers/PageInspector';
|
|
1
2
|
import { NamedBindingCallback } from './NamedBindingCallback';
|
|
2
3
|
import { BrowserContext, Page, Frame } from 'playwright';
|
|
3
4
|
/**
|
|
@@ -6,8 +7,10 @@ import { BrowserContext, Page, Frame } from 'playwright';
|
|
|
6
7
|
* as understood by the Donobu engine.
|
|
7
8
|
*/
|
|
8
9
|
export declare class ToggleDonobuAnnotations implements NamedBindingCallback {
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
private readonly pageInspector;
|
|
11
|
+
static readonly NAME = "__donobuToggleAnnotations";
|
|
12
|
+
static register(pageInspector: PageInspector, browserContext: BrowserContext): Promise<ToggleDonobuAnnotations>;
|
|
13
|
+
constructor(pageInspector: PageInspector);
|
|
11
14
|
name(): string;
|
|
12
15
|
call(source: {
|
|
13
16
|
context: BrowserContext;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToggleDonobuAnnotations.d.ts","sourceRoot":"","sources":["../../src/bindings/ToggleDonobuAnnotations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ToggleDonobuAnnotations.d.ts","sourceRoot":"","sources":["../../src/bindings/ToggleDonobuAnnotations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEzD;;;;GAIG;AACH,qBAAa,uBAAwB,YAAW,oBAAoB;IAe/C,OAAO,CAAC,QAAQ,CAAC,aAAa;IAdjD,gBAAuB,IAAI,+BAA+B;WAEtC,QAAQ,CAC1B,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,uBAAuB,CAAC;gBASC,aAAa,EAAE,aAAa;IAEzD,IAAI,IAAI,MAAM;IAIR,IAAI,CACf,MAAM,EAAE;QAAE,OAAO,EAAE,cAAc,CAAC;QAAC,IAAI,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,EAC7D,GAAG,IAAI,EAAE,GAAG,EAAE,GACb,OAAO,CAAC,IAAI,CAAC;CAYjB"}
|
|
@@ -1,29 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ToggleDonobuAnnotations = void 0;
|
|
4
|
-
const PlaywrightUtils_1 = require("../utils/PlaywrightUtils");
|
|
5
4
|
/**
|
|
6
5
|
* A binding that toggles the annotations on the page executing this callback.
|
|
7
6
|
* This is used for debugging purposes to show the interactable elements on the page
|
|
8
7
|
* as understood by the Donobu engine.
|
|
9
8
|
*/
|
|
10
9
|
class ToggleDonobuAnnotations {
|
|
11
|
-
|
|
10
|
+
static async register(pageInspector, browserContext) {
|
|
11
|
+
const instance = new ToggleDonobuAnnotations(pageInspector);
|
|
12
|
+
await browserContext.exposeBinding(instance.name(), instance.call.bind(instance));
|
|
13
|
+
return instance;
|
|
14
|
+
}
|
|
15
|
+
constructor(pageInspector) {
|
|
16
|
+
this.pageInspector = pageInspector;
|
|
17
|
+
}
|
|
12
18
|
name() {
|
|
13
19
|
return ToggleDonobuAnnotations.NAME;
|
|
14
20
|
}
|
|
15
21
|
async call(source, ...args) {
|
|
16
22
|
const isToggled = args[0];
|
|
17
23
|
if (isToggled) {
|
|
18
|
-
await
|
|
19
|
-
await
|
|
24
|
+
await this.pageInspector.attributeInteractableElements(source.page);
|
|
25
|
+
await this.pageInspector.annotateInteractableElements(source.page);
|
|
20
26
|
}
|
|
21
27
|
else {
|
|
22
|
-
await
|
|
28
|
+
await this.pageInspector.removeDonobuAnnotations(source.page);
|
|
23
29
|
}
|
|
24
30
|
return;
|
|
25
31
|
}
|
|
26
32
|
}
|
|
27
33
|
exports.ToggleDonobuAnnotations = ToggleDonobuAnnotations;
|
|
28
|
-
ToggleDonobuAnnotations.NAME = '
|
|
34
|
+
ToggleDonobuAnnotations.NAME = '__donobuToggleAnnotations';
|
|
29
35
|
//# sourceMappingURL=ToggleDonobuAnnotations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToggleDonobuAnnotations.js","sourceRoot":"","sources":["../../src/bindings/ToggleDonobuAnnotations.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ToggleDonobuAnnotations.js","sourceRoot":"","sources":["../../src/bindings/ToggleDonobuAnnotations.ts"],"names":[],"mappings":";;;AAIA;;;;GAIG;AACH,MAAa,uBAAuB;IAG3B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAC1B,aAA4B,EAC5B,cAA8B;QAE9B,MAAM,QAAQ,GAAG,IAAI,uBAAuB,CAAC,aAAa,CAAC,CAAC;QAC5D,MAAM,cAAc,CAAC,aAAa,CAChC,QAAQ,CAAC,IAAI,EAAE,EACf,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC7B,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,YAAoC,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IAE7D,IAAI;QACT,OAAO,uBAAuB,CAAC,IAAI,CAAC;IACtC,CAAC;IAEM,KAAK,CAAC,IAAI,CACf,MAA6D,EAC7D,GAAG,IAAW;QAEd,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAY,CAAC;QAErC,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,IAAI,CAAC,aAAa,CAAC,6BAA6B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpE,MAAM,IAAI,CAAC,aAAa,CAAC,4BAA4B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChE,CAAC;QAED,OAAO;IACT,CAAC;;AAnCH,0DAoCC;AAnCwB,4BAAI,GAAG,2BAA2B,CAAC"}
|
|
@@ -1,4 +1,31 @@
|
|
|
1
1
|
(() => {
|
|
2
|
+
if (!window.__donobu) {
|
|
3
|
+
Object.defineProperty(window, '__donobu', {
|
|
4
|
+
value: {},
|
|
5
|
+
enumerable: false,
|
|
6
|
+
writable: true,
|
|
7
|
+
configurable: false,
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
if (!window.__donobu.controlPanelRegistered) {
|
|
12
|
+
Object.defineProperty(window.__donobu, 'controlPanelRegistered', {
|
|
13
|
+
value: true,
|
|
14
|
+
enumerable: false,
|
|
15
|
+
writable: false,
|
|
16
|
+
configurable: false,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
if (!window.__donobu.nextState) {
|
|
21
|
+
Object.defineProperty(window.__donobu, 'nextState', {
|
|
22
|
+
value: null,
|
|
23
|
+
enumerable: false,
|
|
24
|
+
writable: true,
|
|
25
|
+
configurable: false,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
|
|
2
29
|
/**
|
|
3
30
|
* Wait until document.body is available, then call `init()`.
|
|
4
31
|
*/
|
|
@@ -358,7 +385,7 @@
|
|
|
358
385
|
isTransitioningToPause = false;
|
|
359
386
|
|
|
360
387
|
// Expose next state so external script can pick it up
|
|
361
|
-
window.
|
|
388
|
+
window.__donobu.nextState = 'RESUMING';
|
|
362
389
|
|
|
363
390
|
updateButtonStates();
|
|
364
391
|
}
|
|
@@ -371,7 +398,7 @@
|
|
|
371
398
|
isTransitioningToPause = true;
|
|
372
399
|
|
|
373
400
|
// Expose next state
|
|
374
|
-
window.
|
|
401
|
+
window.__donobu.nextState = 'PAUSED';
|
|
375
402
|
|
|
376
403
|
updateButtonStates();
|
|
377
404
|
}
|
|
@@ -384,7 +411,7 @@
|
|
|
384
411
|
isTransitioningToEnd = true;
|
|
385
412
|
|
|
386
413
|
// Expose next state
|
|
387
|
-
window.
|
|
414
|
+
window.__donobu.nextState = 'SUCCESS';
|
|
388
415
|
|
|
389
416
|
updateButtonStates();
|
|
390
417
|
}
|
|
@@ -14,6 +14,35 @@
|
|
|
14
14
|
"additionalProperties": false,
|
|
15
15
|
"required": ["targetId", "bindingName"]
|
|
16
16
|
},
|
|
17
|
+
"BaseToolGptParameters": {
|
|
18
|
+
"description": "This interface is intended to be the base for all tool parameters that are generated by a GPT.",
|
|
19
|
+
"type": "object",
|
|
20
|
+
"properties": {
|
|
21
|
+
"rationale": {
|
|
22
|
+
"description": "The reason why this particular action is being taken. It MUST relate to the overall objective.",
|
|
23
|
+
"type": "string"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"additionalProperties": false,
|
|
27
|
+
"required": ["rationale"]
|
|
28
|
+
},
|
|
29
|
+
"RunAccessibilityTestToolCoreParameters": {
|
|
30
|
+
"type": "object",
|
|
31
|
+
"additionalProperties": false,
|
|
32
|
+
"required": [],
|
|
33
|
+
"properties": {}
|
|
34
|
+
},
|
|
35
|
+
"RunAccessibilityTestToolGptParameters": {
|
|
36
|
+
"type": "object",
|
|
37
|
+
"properties": {
|
|
38
|
+
"rationale": {
|
|
39
|
+
"description": "The reason why this particular action is being taken. It MUST relate to the overall objective.",
|
|
40
|
+
"type": "string"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"additionalProperties": false,
|
|
44
|
+
"required": ["rationale"]
|
|
45
|
+
},
|
|
17
46
|
"ToolParameters": {
|
|
18
47
|
"anyOf": [
|
|
19
48
|
{
|
|
@@ -88,7 +117,7 @@
|
|
|
88
117
|
"type": "object",
|
|
89
118
|
"additionalProperties": false
|
|
90
119
|
},
|
|
91
|
-
"__@validatorSymbol@
|
|
120
|
+
"__@validatorSymbol@9578": {
|
|
92
121
|
"description": "Used to mark validator functions so we can support both Zod and custom schemas.",
|
|
93
122
|
"type": "boolean",
|
|
94
123
|
"const": true
|
|
@@ -100,33 +129,21 @@
|
|
|
100
129
|
"$ref": "#/definitions/JSONSchema7",
|
|
101
130
|
"description": "The JSON Schema for the schema. It is passed to the providers."
|
|
102
131
|
},
|
|
103
|
-
"__@schemaSymbol@
|
|
132
|
+
"__@schemaSymbol@9583": {
|
|
104
133
|
"description": "Used to mark schemas so we can support both Zod and custom schemas.",
|
|
105
134
|
"type": "boolean",
|
|
106
135
|
"const": true
|
|
107
136
|
}
|
|
108
137
|
},
|
|
109
138
|
"required": [
|
|
110
|
-
"__@schemaSymbol@
|
|
111
|
-
"__@validatorSymbol@
|
|
139
|
+
"__@schemaSymbol@9583",
|
|
140
|
+
"__@validatorSymbol@9578",
|
|
112
141
|
"_type",
|
|
113
142
|
"jsonSchema"
|
|
114
143
|
]
|
|
115
144
|
}
|
|
116
145
|
]
|
|
117
146
|
},
|
|
118
|
-
"BaseToolGptParameters": {
|
|
119
|
-
"description": "This interface is intended to be the base for all tool parameters that are generated by a GPT.",
|
|
120
|
-
"type": "object",
|
|
121
|
-
"properties": {
|
|
122
|
-
"rationale": {
|
|
123
|
-
"description": "The reason why this particular action is being taken. It MUST relate to the overall objective.",
|
|
124
|
-
"type": "string"
|
|
125
|
-
}
|
|
126
|
-
},
|
|
127
|
-
"additionalProperties": false,
|
|
128
|
-
"required": ["rationale"]
|
|
129
|
-
},
|
|
130
147
|
"ChooseSelectOptionToolCoreParameters": {
|
|
131
148
|
"type": "object",
|
|
132
149
|
"properties": {
|
|
@@ -555,23 +572,6 @@
|
|
|
555
572
|
"additionalProperties": false,
|
|
556
573
|
"required": ["rationale", "url"]
|
|
557
574
|
},
|
|
558
|
-
"RunAccessibilityTestToolCoreParameters": {
|
|
559
|
-
"type": "object",
|
|
560
|
-
"additionalProperties": false,
|
|
561
|
-
"required": [],
|
|
562
|
-
"properties": {}
|
|
563
|
-
},
|
|
564
|
-
"RunAccessibilityTestToolGptParameters": {
|
|
565
|
-
"type": "object",
|
|
566
|
-
"properties": {
|
|
567
|
-
"rationale": {
|
|
568
|
-
"description": "The reason why this particular action is being taken. It MUST relate to the overall objective.",
|
|
569
|
-
"type": "string"
|
|
570
|
-
}
|
|
571
|
-
},
|
|
572
|
-
"additionalProperties": false,
|
|
573
|
-
"required": ["rationale"]
|
|
574
|
-
},
|
|
575
575
|
"ScrollPageToolCoreParameters": {
|
|
576
576
|
"type": "object",
|
|
577
577
|
"properties": {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
1131
|