donobu 2.31.0 → 2.32.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 (299) hide show
  1. package/dist/apis/GptConfigsApi.d.ts.map +1 -1
  2. package/dist/apis/GptConfigsApi.js +2 -0
  3. package/dist/apis/GptConfigsApi.js.map +1 -1
  4. package/dist/apis/SpecialFlowsApi.d.ts.map +1 -1
  5. package/dist/apis/SpecialFlowsApi.js +1 -6
  6. package/dist/apis/SpecialFlowsApi.js.map +1 -1
  7. package/dist/assets/generated/version +1 -1
  8. package/dist/assets/interactive-elements-tracker.js +81 -60
  9. package/dist/assets/page-interactions-tracker.js +9 -69
  10. package/dist/assets/smart-selector-generator.js +839 -259
  11. package/dist/bindings/PageInteractionTracker.d.ts +27 -1
  12. package/dist/bindings/PageInteractionTracker.d.ts.map +1 -1
  13. package/dist/bindings/PageInteractionTracker.js +172 -61
  14. package/dist/bindings/PageInteractionTracker.js.map +1 -1
  15. package/dist/clients/AnthropicAwsBedrockGptClient.d.ts +12 -4
  16. package/dist/clients/AnthropicAwsBedrockGptClient.d.ts.map +1 -1
  17. package/dist/clients/AnthropicAwsBedrockGptClient.js +8 -8
  18. package/dist/clients/AnthropicAwsBedrockGptClient.js.map +1 -1
  19. package/dist/clients/AnthropicGptClient.d.ts +12 -4
  20. package/dist/clients/AnthropicGptClient.d.ts.map +1 -1
  21. package/dist/clients/AnthropicGptClient.js +12 -10
  22. package/dist/clients/AnthropicGptClient.js.map +1 -1
  23. package/dist/clients/GoogleGenerativeAiGptClient.d.ts +12 -4
  24. package/dist/clients/GoogleGenerativeAiGptClient.d.ts.map +1 -1
  25. package/dist/clients/GoogleGenerativeAiGptClient.js +8 -8
  26. package/dist/clients/GoogleGenerativeAiGptClient.js.map +1 -1
  27. package/dist/clients/GoogleVertexGptClient.d.ts +12 -4
  28. package/dist/clients/GoogleVertexGptClient.d.ts.map +1 -1
  29. package/dist/clients/GoogleVertexGptClient.js +8 -8
  30. package/dist/clients/GoogleVertexGptClient.js.map +1 -1
  31. package/dist/clients/GptClient.d.ts +12 -4
  32. package/dist/clients/GptClient.d.ts.map +1 -1
  33. package/dist/clients/GptClient.js.map +1 -1
  34. package/dist/clients/OpenAiGptClient.d.ts +12 -4
  35. package/dist/clients/OpenAiGptClient.d.ts.map +1 -1
  36. package/dist/clients/OpenAiGptClient.js +12 -10
  37. package/dist/clients/OpenAiGptClient.js.map +1 -1
  38. package/dist/clients/VercelAiGptClient.d.ts +14 -5
  39. package/dist/clients/VercelAiGptClient.d.ts.map +1 -1
  40. package/dist/clients/VercelAiGptClient.js +54 -37
  41. package/dist/clients/VercelAiGptClient.js.map +1 -1
  42. package/dist/esm/apis/GptConfigsApi.d.ts.map +1 -1
  43. package/dist/esm/apis/GptConfigsApi.js +2 -0
  44. package/dist/esm/apis/GptConfigsApi.js.map +1 -1
  45. package/dist/esm/apis/SpecialFlowsApi.d.ts.map +1 -1
  46. package/dist/esm/apis/SpecialFlowsApi.js +1 -6
  47. package/dist/esm/apis/SpecialFlowsApi.js.map +1 -1
  48. package/dist/esm/assets/generated/version +1 -1
  49. package/dist/esm/assets/interactive-elements-tracker.js +81 -60
  50. package/dist/esm/assets/page-interactions-tracker.js +9 -69
  51. package/dist/esm/assets/smart-selector-generator.js +839 -259
  52. package/dist/esm/bindings/PageInteractionTracker.d.ts +27 -1
  53. package/dist/esm/bindings/PageInteractionTracker.d.ts.map +1 -1
  54. package/dist/esm/bindings/PageInteractionTracker.js +172 -61
  55. package/dist/esm/bindings/PageInteractionTracker.js.map +1 -1
  56. package/dist/esm/clients/AnthropicAwsBedrockGptClient.d.ts +12 -4
  57. package/dist/esm/clients/AnthropicAwsBedrockGptClient.d.ts.map +1 -1
  58. package/dist/esm/clients/AnthropicAwsBedrockGptClient.js +8 -8
  59. package/dist/esm/clients/AnthropicAwsBedrockGptClient.js.map +1 -1
  60. package/dist/esm/clients/AnthropicGptClient.d.ts +12 -4
  61. package/dist/esm/clients/AnthropicGptClient.d.ts.map +1 -1
  62. package/dist/esm/clients/AnthropicGptClient.js +12 -10
  63. package/dist/esm/clients/AnthropicGptClient.js.map +1 -1
  64. package/dist/esm/clients/GoogleGenerativeAiGptClient.d.ts +12 -4
  65. package/dist/esm/clients/GoogleGenerativeAiGptClient.d.ts.map +1 -1
  66. package/dist/esm/clients/GoogleGenerativeAiGptClient.js +8 -8
  67. package/dist/esm/clients/GoogleGenerativeAiGptClient.js.map +1 -1
  68. package/dist/esm/clients/GoogleVertexGptClient.d.ts +12 -4
  69. package/dist/esm/clients/GoogleVertexGptClient.d.ts.map +1 -1
  70. package/dist/esm/clients/GoogleVertexGptClient.js +8 -8
  71. package/dist/esm/clients/GoogleVertexGptClient.js.map +1 -1
  72. package/dist/esm/clients/GptClient.d.ts +12 -4
  73. package/dist/esm/clients/GptClient.d.ts.map +1 -1
  74. package/dist/esm/clients/GptClient.js.map +1 -1
  75. package/dist/esm/clients/OpenAiGptClient.d.ts +12 -4
  76. package/dist/esm/clients/OpenAiGptClient.d.ts.map +1 -1
  77. package/dist/esm/clients/OpenAiGptClient.js +12 -10
  78. package/dist/esm/clients/OpenAiGptClient.js.map +1 -1
  79. package/dist/esm/clients/VercelAiGptClient.d.ts +14 -5
  80. package/dist/esm/clients/VercelAiGptClient.d.ts.map +1 -1
  81. package/dist/esm/clients/VercelAiGptClient.js +54 -37
  82. package/dist/esm/clients/VercelAiGptClient.js.map +1 -1
  83. package/dist/esm/exceptions/UserInterruptException.d.ts +7 -0
  84. package/dist/esm/exceptions/UserInterruptException.d.ts.map +1 -0
  85. package/dist/esm/exceptions/UserInterruptException.js +12 -0
  86. package/dist/esm/exceptions/UserInterruptException.js.map +1 -0
  87. package/dist/esm/lib/fixtures/gptClients.d.ts.map +1 -1
  88. package/dist/esm/lib/fixtures/gptClients.js +3 -4
  89. package/dist/esm/lib/fixtures/gptClients.js.map +1 -1
  90. package/dist/esm/lib/testExtension.d.ts.map +1 -1
  91. package/dist/esm/lib/testExtension.js +9 -4
  92. package/dist/esm/lib/testExtension.js.map +1 -1
  93. package/dist/esm/lib/utils/donobuTestStack.d.ts.map +1 -1
  94. package/dist/esm/lib/utils/donobuTestStack.js +2 -1
  95. package/dist/esm/lib/utils/donobuTestStack.js.map +1 -1
  96. package/dist/esm/main.d.ts +3 -1
  97. package/dist/esm/main.d.ts.map +1 -1
  98. package/dist/esm/main.js +4 -2
  99. package/dist/esm/main.js.map +1 -1
  100. package/dist/esm/managers/AdminApiController.d.ts +8 -1
  101. package/dist/esm/managers/AdminApiController.d.ts.map +1 -1
  102. package/dist/esm/managers/AdminApiController.js +10 -4
  103. package/dist/esm/managers/AdminApiController.js.map +1 -1
  104. package/dist/esm/managers/AgentsManager.d.ts +9 -0
  105. package/dist/esm/managers/AgentsManager.d.ts.map +1 -1
  106. package/dist/esm/managers/AgentsManager.js +52 -0
  107. package/dist/esm/managers/AgentsManager.js.map +1 -1
  108. package/dist/esm/managers/CodeGenerator.d.ts.map +1 -1
  109. package/dist/esm/managers/CodeGenerator.js +23 -11
  110. package/dist/esm/managers/CodeGenerator.js.map +1 -1
  111. package/dist/esm/managers/DonobuFlow.d.ts +12 -7
  112. package/dist/esm/managers/DonobuFlow.d.ts.map +1 -1
  113. package/dist/esm/managers/DonobuFlow.js +146 -155
  114. package/dist/esm/managers/DonobuFlow.js.map +1 -1
  115. package/dist/esm/managers/DonobuFlowsManager.d.ts +3 -1
  116. package/dist/esm/managers/DonobuFlowsManager.d.ts.map +1 -1
  117. package/dist/esm/managers/DonobuFlowsManager.js +7 -2
  118. package/dist/esm/managers/DonobuFlowsManager.js.map +1 -1
  119. package/dist/esm/managers/DonobuStack.d.ts +2 -1
  120. package/dist/esm/managers/DonobuStack.d.ts.map +1 -1
  121. package/dist/esm/managers/DonobuStack.js +2 -2
  122. package/dist/esm/managers/DonobuStack.js.map +1 -1
  123. package/dist/esm/managers/PageInspector.d.ts.map +1 -1
  124. package/dist/esm/managers/PageInspector.js +80 -14
  125. package/dist/esm/managers/PageInspector.js.map +1 -1
  126. package/dist/esm/managers/ToolManager.d.ts.map +1 -1
  127. package/dist/esm/managers/ToolManager.js +4 -3
  128. package/dist/esm/managers/ToolManager.js.map +1 -1
  129. package/dist/esm/models/BrowserConfig.d.ts +64 -64
  130. package/dist/esm/models/CodeGenerationOptions.d.ts +6 -0
  131. package/dist/esm/models/CodeGenerationOptions.d.ts.map +1 -1
  132. package/dist/esm/models/CodeGenerationOptions.js +9 -0
  133. package/dist/esm/models/CodeGenerationOptions.js.map +1 -1
  134. package/dist/esm/models/ControlPanel.d.ts +29 -0
  135. package/dist/esm/models/ControlPanel.d.ts.map +1 -0
  136. package/dist/esm/models/ControlPanel.js +16 -0
  137. package/dist/esm/models/ControlPanel.js.map +1 -0
  138. package/dist/esm/models/CreateDonobuFlow.d.ts +56 -56
  139. package/dist/esm/models/FlowMetadata.d.ts +62 -62
  140. package/dist/esm/models/InteractableElement.d.ts +4 -3
  141. package/dist/esm/models/InteractableElement.d.ts.map +1 -1
  142. package/dist/esm/models/InteractableElement.js +9 -4
  143. package/dist/esm/models/InteractableElement.js.map +1 -1
  144. package/dist/esm/models/ToolCallContext.d.ts +1 -1
  145. package/dist/esm/models/ToolCallContext.d.ts.map +1 -1
  146. package/dist/esm/persistence/DonobuSqliteDb.d.ts.map +1 -1
  147. package/dist/esm/persistence/DonobuSqliteDb.js +44 -0
  148. package/dist/esm/persistence/DonobuSqliteDb.js.map +1 -1
  149. package/dist/esm/tools/AcknowledgeUserInstruction.d.ts +1 -1
  150. package/dist/esm/tools/AcknowledgeUserInstruction.d.ts.map +1 -1
  151. package/dist/esm/tools/AcknowledgeUserInstruction.js +2 -6
  152. package/dist/esm/tools/AcknowledgeUserInstruction.js.map +1 -1
  153. package/dist/esm/tools/AssertPageTool.d.ts +4 -4
  154. package/dist/esm/tools/ClickTool.js +1 -1
  155. package/dist/esm/tools/ClickTool.js.map +1 -1
  156. package/dist/esm/tools/InputRandomizedEmailAddressTool.d.ts +6 -6
  157. package/dist/esm/tools/InputTextTool.d.ts +9 -0
  158. package/dist/esm/tools/InputTextTool.d.ts.map +1 -1
  159. package/dist/esm/tools/InputTextTool.js +8 -2
  160. package/dist/esm/tools/InputTextTool.js.map +1 -1
  161. package/dist/esm/tools/PressKeyTool.d.ts.map +1 -1
  162. package/dist/esm/tools/PressKeyTool.js +8 -3
  163. package/dist/esm/tools/PressKeyTool.js.map +1 -1
  164. package/dist/esm/tools/ReplayableInteraction.d.ts.map +1 -1
  165. package/dist/esm/tools/ReplayableInteraction.js +15 -15
  166. package/dist/esm/tools/ReplayableInteraction.js.map +1 -1
  167. package/dist/esm/tools/RunAccessibilityTestTool.d.ts +0 -8
  168. package/dist/esm/tools/RunAccessibilityTestTool.d.ts.map +1 -1
  169. package/dist/esm/tools/RunAccessibilityTestTool.js +20 -38
  170. package/dist/esm/tools/RunAccessibilityTestTool.js.map +1 -1
  171. package/dist/esm/tools/ScrollPageTool.d.ts +52 -11
  172. package/dist/esm/tools/ScrollPageTool.d.ts.map +1 -1
  173. package/dist/esm/tools/ScrollPageTool.js +63 -57
  174. package/dist/esm/tools/ScrollPageTool.js.map +1 -1
  175. package/dist/esm/tools/TriggerDonobuFlowTool.d.ts +136 -136
  176. package/dist/esm/utils/BrowserUtils.js +1 -1
  177. package/dist/esm/utils/BrowserUtils.js.map +1 -1
  178. package/dist/esm/utils/PlaywrightUtils.d.ts.map +1 -1
  179. package/dist/esm/utils/PlaywrightUtils.js +0 -4
  180. package/dist/esm/utils/PlaywrightUtils.js.map +1 -1
  181. package/dist/exceptions/UserInterruptException.d.ts +7 -0
  182. package/dist/exceptions/UserInterruptException.d.ts.map +1 -0
  183. package/dist/exceptions/UserInterruptException.js +12 -0
  184. package/dist/exceptions/UserInterruptException.js.map +1 -0
  185. package/dist/lib/fixtures/gptClients.d.ts.map +1 -1
  186. package/dist/lib/fixtures/gptClients.js +3 -4
  187. package/dist/lib/fixtures/gptClients.js.map +1 -1
  188. package/dist/lib/testExtension.d.ts.map +1 -1
  189. package/dist/lib/testExtension.js +9 -4
  190. package/dist/lib/testExtension.js.map +1 -1
  191. package/dist/lib/utils/donobuTestStack.d.ts.map +1 -1
  192. package/dist/lib/utils/donobuTestStack.js +2 -1
  193. package/dist/lib/utils/donobuTestStack.js.map +1 -1
  194. package/dist/main.d.ts +3 -1
  195. package/dist/main.d.ts.map +1 -1
  196. package/dist/main.js +4 -2
  197. package/dist/main.js.map +1 -1
  198. package/dist/managers/AdminApiController.d.ts +8 -1
  199. package/dist/managers/AdminApiController.d.ts.map +1 -1
  200. package/dist/managers/AdminApiController.js +10 -4
  201. package/dist/managers/AdminApiController.js.map +1 -1
  202. package/dist/managers/AgentsManager.d.ts +9 -0
  203. package/dist/managers/AgentsManager.d.ts.map +1 -1
  204. package/dist/managers/AgentsManager.js +52 -0
  205. package/dist/managers/AgentsManager.js.map +1 -1
  206. package/dist/managers/CodeGenerator.d.ts.map +1 -1
  207. package/dist/managers/CodeGenerator.js +23 -11
  208. package/dist/managers/CodeGenerator.js.map +1 -1
  209. package/dist/managers/DonobuFlow.d.ts +12 -7
  210. package/dist/managers/DonobuFlow.d.ts.map +1 -1
  211. package/dist/managers/DonobuFlow.js +146 -155
  212. package/dist/managers/DonobuFlow.js.map +1 -1
  213. package/dist/managers/DonobuFlowsManager.d.ts +3 -1
  214. package/dist/managers/DonobuFlowsManager.d.ts.map +1 -1
  215. package/dist/managers/DonobuFlowsManager.js +7 -2
  216. package/dist/managers/DonobuFlowsManager.js.map +1 -1
  217. package/dist/managers/DonobuStack.d.ts +2 -1
  218. package/dist/managers/DonobuStack.d.ts.map +1 -1
  219. package/dist/managers/DonobuStack.js +2 -2
  220. package/dist/managers/DonobuStack.js.map +1 -1
  221. package/dist/managers/PageInspector.d.ts.map +1 -1
  222. package/dist/managers/PageInspector.js +80 -14
  223. package/dist/managers/PageInspector.js.map +1 -1
  224. package/dist/managers/ToolManager.d.ts.map +1 -1
  225. package/dist/managers/ToolManager.js +4 -3
  226. package/dist/managers/ToolManager.js.map +1 -1
  227. package/dist/models/BrowserConfig.d.ts +64 -64
  228. package/dist/models/CodeGenerationOptions.d.ts +6 -0
  229. package/dist/models/CodeGenerationOptions.d.ts.map +1 -1
  230. package/dist/models/CodeGenerationOptions.js +9 -0
  231. package/dist/models/CodeGenerationOptions.js.map +1 -1
  232. package/dist/models/ControlPanel.d.ts +29 -0
  233. package/dist/models/ControlPanel.d.ts.map +1 -0
  234. package/dist/models/ControlPanel.js +16 -0
  235. package/dist/models/ControlPanel.js.map +1 -0
  236. package/dist/models/CreateDonobuFlow.d.ts +56 -56
  237. package/dist/models/FlowMetadata.d.ts +62 -62
  238. package/dist/models/InteractableElement.d.ts +4 -3
  239. package/dist/models/InteractableElement.d.ts.map +1 -1
  240. package/dist/models/InteractableElement.js +9 -4
  241. package/dist/models/InteractableElement.js.map +1 -1
  242. package/dist/models/ToolCallContext.d.ts +1 -1
  243. package/dist/models/ToolCallContext.d.ts.map +1 -1
  244. package/dist/persistence/DonobuSqliteDb.d.ts.map +1 -1
  245. package/dist/persistence/DonobuSqliteDb.js +44 -0
  246. package/dist/persistence/DonobuSqliteDb.js.map +1 -1
  247. package/dist/tools/AcknowledgeUserInstruction.d.ts +1 -1
  248. package/dist/tools/AcknowledgeUserInstruction.d.ts.map +1 -1
  249. package/dist/tools/AcknowledgeUserInstruction.js +2 -6
  250. package/dist/tools/AcknowledgeUserInstruction.js.map +1 -1
  251. package/dist/tools/AssertPageTool.d.ts +4 -4
  252. package/dist/tools/ClickTool.js +1 -1
  253. package/dist/tools/ClickTool.js.map +1 -1
  254. package/dist/tools/InputRandomizedEmailAddressTool.d.ts +6 -6
  255. package/dist/tools/InputTextTool.d.ts +9 -0
  256. package/dist/tools/InputTextTool.d.ts.map +1 -1
  257. package/dist/tools/InputTextTool.js +8 -2
  258. package/dist/tools/InputTextTool.js.map +1 -1
  259. package/dist/tools/PressKeyTool.d.ts.map +1 -1
  260. package/dist/tools/PressKeyTool.js +8 -3
  261. package/dist/tools/PressKeyTool.js.map +1 -1
  262. package/dist/tools/ReplayableInteraction.d.ts.map +1 -1
  263. package/dist/tools/ReplayableInteraction.js +15 -15
  264. package/dist/tools/ReplayableInteraction.js.map +1 -1
  265. package/dist/tools/RunAccessibilityTestTool.d.ts +0 -8
  266. package/dist/tools/RunAccessibilityTestTool.d.ts.map +1 -1
  267. package/dist/tools/RunAccessibilityTestTool.js +20 -38
  268. package/dist/tools/RunAccessibilityTestTool.js.map +1 -1
  269. package/dist/tools/ScrollPageTool.d.ts +52 -11
  270. package/dist/tools/ScrollPageTool.d.ts.map +1 -1
  271. package/dist/tools/ScrollPageTool.js +63 -57
  272. package/dist/tools/ScrollPageTool.js.map +1 -1
  273. package/dist/tools/TriggerDonobuFlowTool.d.ts +136 -136
  274. package/dist/utils/BrowserUtils.js +1 -1
  275. package/dist/utils/BrowserUtils.js.map +1 -1
  276. package/dist/utils/PlaywrightUtils.d.ts.map +1 -1
  277. package/dist/utils/PlaywrightUtils.js +0 -4
  278. package/dist/utils/PlaywrightUtils.js.map +1 -1
  279. package/package.json +2 -1
  280. package/dist/assets/axe.js +0 -47397
  281. package/dist/assets/control-panel.js +0 -646
  282. package/dist/esm/assets/axe.js +0 -47397
  283. package/dist/esm/assets/control-panel.js +0 -646
  284. package/dist/esm/managers/ControlPanel.d.ts +0 -127
  285. package/dist/esm/managers/ControlPanel.d.ts.map +0 -1
  286. package/dist/esm/managers/ControlPanel.js +0 -291
  287. package/dist/esm/managers/ControlPanel.js.map +0 -1
  288. package/dist/esm/tools/GetEntityDataFromGoogleMapResult.d.ts +0 -31
  289. package/dist/esm/tools/GetEntityDataFromGoogleMapResult.d.ts.map +0 -1
  290. package/dist/esm/tools/GetEntityDataFromGoogleMapResult.js +0 -45
  291. package/dist/esm/tools/GetEntityDataFromGoogleMapResult.js.map +0 -1
  292. package/dist/managers/ControlPanel.d.ts +0 -127
  293. package/dist/managers/ControlPanel.d.ts.map +0 -1
  294. package/dist/managers/ControlPanel.js +0 -291
  295. package/dist/managers/ControlPanel.js.map +0 -1
  296. package/dist/tools/GetEntityDataFromGoogleMapResult.d.ts +0 -31
  297. package/dist/tools/GetEntityDataFromGoogleMapResult.d.ts.map +0 -1
  298. package/dist/tools/GetEntityDataFromGoogleMapResult.js +0 -45
  299. package/dist/tools/GetEntityDataFromGoogleMapResult.js.map +0 -1
@@ -5,43 +5,33 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.RunAccessibilityTestTool = void 0;
7
7
  const Tool_1 = require("./Tool");
8
- const JsonUtils_1 = require("../utils/JsonUtils");
9
8
  const ToolSchema_1 = require("../models/ToolSchema");
10
- const MiscUtils_1 = require("../utils/MiscUtils");
11
- const path_1 = __importDefault(require("path"));
9
+ const playwright_1 = __importDefault(require("@axe-core/playwright"));
12
10
  class RunAccessibilityTestTool extends Tool_1.Tool {
13
11
  constructor() {
14
12
  super(RunAccessibilityTestTool.NAME, 'Run an web accessibility (axe-core) test on the current webpage.', ToolSchema_1.NoArgsSchema, ToolSchema_1.BaseGptArgsSchema);
15
13
  }
16
14
  async call(context, _parameters) {
17
15
  const page = context.page.current;
18
- // Step 1: Run axe in the browser
19
- const fullResultStr = (await page.evaluate(() => (async () => {
20
- const axeResults = await window.axe.run();
21
- const { violations = [], incomplete = [], passes = [], inapplicable = [], url, timestamp, } = axeResults;
22
- return JSON.stringify({
23
- url,
24
- timestamp,
25
- violations, // full detail
26
- incomplete, // full detail (these need manual review)
27
- passCount: passes.length, // just a count
28
- ignoredRuleCount: inapplicable.length,
29
- totalRuleCount: violations.length +
30
- incomplete.length +
31
- passes.length +
32
- inapplicable.length,
33
- });
34
- })()));
35
- const fullResult = JsonUtils_1.JsonUtils.jsonStringToJsonObject(fullResultStr);
36
- const { violations = [], incomplete = [], passes = [] } = fullResult;
37
- const passCount = passes.length;
38
- delete fullResult.passes;
39
- fullResult.passCount = passCount;
16
+ const axe = new playwright_1.default({ page });
17
+ // Step 1: Run the analysis.
18
+ const result = await axe.analyze();
19
+ const fullResult = {
20
+ violations: result.violations,
21
+ incomplete: result.incomplete,
22
+ passCount: result.passes.length,
23
+ ignoredRuleCount: result.inapplicable.length,
24
+ totalRuleCount: result.violations.length +
25
+ result.incomplete.length +
26
+ result.passes.length +
27
+ result.inapplicable.length,
28
+ };
40
29
  // Step 2: If nothing to report, short‑circuit
41
- if (violations.length === 0 && incomplete.length === 0) {
30
+ if (fullResult.violations.length === 0 &&
31
+ fullResult.incomplete.length === 0) {
42
32
  return {
43
33
  isSuccessful: true,
44
- forLlm: `No accessibility violations or items needing review found. (${passCount} checks passed)`,
34
+ forLlm: `No accessibility violations or items needing review found. (${fullResult.passCount} checks passed)`,
45
35
  metadata: fullResult,
46
36
  };
47
37
  }
@@ -53,8 +43,8 @@ class RunAccessibilityTestTool extends Tool_1.Tool {
53
43
  };
54
44
  const violationSummary = new Map();
55
45
  const incompleteSummary = new Map();
56
- countByHelp(violations, violationSummary);
57
- countByHelp(incomplete, incompleteSummary);
46
+ countByHelp(fullResult.violations, violationSummary);
47
+ countByHelp(fullResult.incomplete, incompleteSummary);
58
48
  // human‑readable summary
59
49
  const summaryLines = [];
60
50
  violationSummary.forEach((count, helpText) => {
@@ -63,7 +53,7 @@ class RunAccessibilityTestTool extends Tool_1.Tool {
63
53
  incompleteSummary.forEach((count, helpText) => {
64
54
  summaryLines.push(`${count}x needs manual review - ${helpText}`);
65
55
  });
66
- summaryLines.push(`${passCount} checks passed`);
56
+ summaryLines.push(`${fullResult.passCount} checks passed`);
67
57
  return {
68
58
  isSuccessful: true,
69
59
  forLlm: summaryLines.join('\n'),
@@ -75,13 +65,5 @@ class RunAccessibilityTestTool extends Tool_1.Tool {
75
65
  }
76
66
  }
77
67
  exports.RunAccessibilityTestTool = RunAccessibilityTestTool;
78
- /**
79
- * This script is used by the `RunAccessibilityTestTool` to test the
80
- * accessibility of a webpage. This script must be injected on page load, rather
81
- * than when running the `RunAccessibilityTestTool` because we need to bypass
82
- * webpage Content Security Policy (CSP); this is done by injecting the
83
- * script via `BrowserContext#addInitScript`.
84
- */
85
- RunAccessibilityTestTool.INIT_SCRIPT = MiscUtils_1.MiscUtils.getResourceFileAsString(path_1.default.join('axe.js'));
86
68
  RunAccessibilityTestTool.NAME = 'runAccessibilityTest';
87
69
  //# sourceMappingURL=RunAccessibilityTestTool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RunAccessibilityTestTool.js","sourceRoot":"","sources":["../../../src/tools/RunAccessibilityTestTool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RunAccessibilityTestTool.js","sourceRoot":"","sources":["../../../src/tools/RunAccessibilityTestTool.ts"],"names":[],"mappings":"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"}
@@ -1,29 +1,70 @@
1
- import { Tool } from './Tool';
1
+ import { Locator } from 'playwright';
2
2
  import { ToolCallContext } from '../models/ToolCallContext';
3
- import { ToolCallResult } from '../models/ToolCallResult';
3
+ import { ReplayableInteraction } from './ReplayableInteraction';
4
4
  import { z } from 'zod';
5
5
  export declare const ScrollPageCoreSchema: z.ZodObject<{
6
- direction: z.ZodEnum<["UP", "DOWN"]>;
6
+ direction: z.ZodEnum<["UP", "DOWN", "LEFT", "RIGHT"]>;
7
+ maxScroll: z.ZodOptional<z.ZodBoolean>;
7
8
  }, "strip", z.ZodTypeAny, {
8
- direction: "UP" | "DOWN";
9
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
10
+ maxScroll?: boolean | undefined;
9
11
  }, {
10
- direction: "UP" | "DOWN";
12
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
13
+ maxScroll?: boolean | undefined;
14
+ }>;
15
+ export declare const ScrollPageNonGptSchema: z.ZodObject<{
16
+ selector: z.ZodObject<{
17
+ element: z.ZodArray<z.ZodString, "many">;
18
+ frame: z.ZodNullable<z.ZodString>;
19
+ }, "strip", z.ZodTypeAny, {
20
+ frame: string | null;
21
+ element: string[];
22
+ }, {
23
+ frame: string | null;
24
+ element: string[];
25
+ }>;
26
+ } & {
27
+ direction: z.ZodEnum<["UP", "DOWN", "LEFT", "RIGHT"]>;
28
+ maxScroll: z.ZodOptional<z.ZodBoolean>;
29
+ }, "strip", z.ZodTypeAny, {
30
+ selector: {
31
+ frame: string | null;
32
+ element: string[];
33
+ };
34
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
35
+ maxScroll?: boolean | undefined;
36
+ }, {
37
+ selector: {
38
+ frame: string | null;
39
+ element: string[];
40
+ };
41
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
42
+ maxScroll?: boolean | undefined;
11
43
  }>;
12
44
  export declare const ScrollPageGptSchema: z.ZodObject<{
13
45
  rationale: z.ZodString;
14
46
  } & {
15
- direction: z.ZodEnum<["UP", "DOWN"]>;
47
+ whyThisAnnotation: z.ZodString;
48
+ annotation: z.ZodString;
49
+ } & {
50
+ direction: z.ZodEnum<["UP", "DOWN", "LEFT", "RIGHT"]>;
51
+ maxScroll: z.ZodOptional<z.ZodBoolean>;
16
52
  }, "strip", z.ZodTypeAny, {
53
+ annotation: string;
17
54
  rationale: string;
18
- direction: "UP" | "DOWN";
55
+ whyThisAnnotation: string;
56
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
57
+ maxScroll?: boolean | undefined;
19
58
  }, {
59
+ annotation: string;
20
60
  rationale: string;
21
- direction: "UP" | "DOWN";
61
+ whyThisAnnotation: string;
62
+ direction: "UP" | "DOWN" | "LEFT" | "RIGHT";
63
+ maxScroll?: boolean | undefined;
22
64
  }>;
23
- export declare class ScrollPageTool extends Tool<typeof ScrollPageCoreSchema, typeof ScrollPageGptSchema> {
65
+ export declare class ScrollPageTool extends ReplayableInteraction<typeof ScrollPageCoreSchema, typeof ScrollPageNonGptSchema, typeof ScrollPageGptSchema> {
24
66
  static readonly NAME = "scrollPage";
25
67
  constructor();
26
- call(context: ToolCallContext, parameters: z.infer<typeof ScrollPageCoreSchema>): Promise<ToolCallResult>;
27
- callFromGpt(context: ToolCallContext, parameters: z.infer<typeof ScrollPageGptSchema>): Promise<ToolCallResult>;
68
+ invoke(_context: ToolCallContext, parameters: z.infer<typeof ScrollPageCoreSchema>, element: Locator): Promise<string>;
28
69
  }
29
70
  //# sourceMappingURL=ScrollPageTool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollPageTool.d.ts","sourceRoot":"","sources":["../../../src/tools/ScrollPageTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,oBAAoB;;;;;;EAI/B,CAAC;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;EACe,CAAC;AAEhD,qBAAa,cAAe,SAAQ,IAAI,CACtC,OAAO,oBAAoB,EAC3B,OAAO,mBAAmB,CAC3B;IACC,gBAAuB,IAAI,gBAAgB;;IAYrB,IAAI,CACxB,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,GAC/C,OAAO,CAAC,cAAc,CAAC;IA+DJ,WAAW,CAC/B,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,GAC9C,OAAO,CAAC,cAAc,CAAC;CAG3B"}
1
+ {"version":3,"file":"ScrollPageTool.d.ts","sourceRoot":"","sources":["../../../src/tools/ScrollPageTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAEL,qBAAqB,EAEtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,oBAAoB;;;;;;;;;EAW/B,CAAC;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;EACc,CAAC;AAElD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;EACmB,CAAC;AAEpD,qBAAa,cAAe,SAAQ,qBAAqB,CACvD,OAAO,oBAAoB,EAC3B,OAAO,sBAAsB,EAC7B,OAAO,mBAAmB,CAC3B;IACC,gBAAuB,IAAI,gBAAgB;;IAarC,MAAM,CACV,QAAQ,EAAE,eAAe,EACzB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,EAChD,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,MAAM,CAAC;CAsDnB"}
@@ -1,70 +1,76 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ScrollPageTool = exports.ScrollPageGptSchema = exports.ScrollPageCoreSchema = void 0;
4
- const Tool_1 = require("./Tool");
5
- const ToolSchema_1 = require("../models/ToolSchema");
3
+ exports.ScrollPageTool = exports.ScrollPageGptSchema = exports.ScrollPageNonGptSchema = exports.ScrollPageCoreSchema = void 0;
4
+ const ReplayableInteraction_1 = require("./ReplayableInteraction");
6
5
  const zod_1 = require("zod");
7
6
  exports.ScrollPageCoreSchema = zod_1.z.object({
8
7
  direction: zod_1.z
9
- .enum(['UP', 'DOWN'])
10
- .describe('The direction to scroll - either UP or DOWN'),
8
+ .enum(['UP', 'DOWN', 'LEFT', 'RIGHT'])
9
+ .describe('The direction to scroll'),
10
+ maxScroll: zod_1.z
11
+ .boolean()
12
+ .optional()
13
+ .describe(`Optional. Set to true if the page or element should be scrolled maximally in the given direction.
14
+ If not specified, the page or element will scroll no more than a viewport's worth.`),
11
15
  });
12
- exports.ScrollPageGptSchema = ToolSchema_1.BaseGptArgsSchema.merge(exports.ScrollPageCoreSchema);
13
- class ScrollPageTool extends Tool_1.Tool {
16
+ exports.ScrollPageNonGptSchema = ReplayableInteraction_1.SelectorBasedSchema.merge(exports.ScrollPageCoreSchema);
17
+ exports.ScrollPageGptSchema = ReplayableInteraction_1.AnnotationBasedSchema.merge(exports.ScrollPageCoreSchema);
18
+ class ScrollPageTool extends ReplayableInteraction_1.ReplayableInteraction {
14
19
  constructor() {
15
- super(ScrollPageTool.NAME, `Scroll the current page up or down by one viewport. This helps you see more of the
16
- current page, of which may contain relevant information below the fold.`, exports.ScrollPageCoreSchema, exports.ScrollPageGptSchema);
20
+ super(ScrollPageTool.NAME, `Scroll the current page or element. This helps you see more of the
21
+ current page or element, of which may contain relevant information.`, exports.ScrollPageCoreSchema, exports.ScrollPageNonGptSchema, exports.ScrollPageGptSchema);
17
22
  }
18
- async call(context, parameters) {
19
- const page = context.page.current;
20
- // compute scroll distance = one viewport height
21
- const distance = await page.evaluate(() => window.innerHeight);
22
- // 1) Try scrolling the top‐level window
23
- const windowScrolled = await page.evaluate((dy) => {
24
- const before = window.scrollY;
25
- window.scrollBy(0, dy);
26
- return window.scrollY !== before;
27
- }, parameters.direction === 'DOWN' ? distance : -distance);
28
- let didScroll = windowScrolled;
29
- // 2) If the window didn’t move, scroll the largest scrollable element
30
- if (!windowScrolled) {
31
- const fallbackScrolled = await page.evaluate((dy) => {
32
- // find all scrollable elements
33
- const els = Array.from(document.querySelectorAll('*'))
34
- .filter((el) => {
35
- const style = getComputedStyle(el);
36
- const ovY = style.overflowY;
37
- return ((ovY === 'scroll' || ovY === 'auto') &&
38
- el.scrollHeight > el.clientHeight);
39
- })
40
- // sort by visible area descending
41
- .map((el) => ({ el, area: el.clientWidth * el.clientHeight }))
42
- .sort((a, b) => b.area - a.area);
43
- if (els.length === 0) {
44
- return false;
23
+ async invoke(_context, parameters, element) {
24
+ await element.hover();
25
+ const didScroll = await element.evaluate((el, parameters) => {
26
+ const beforeY = el.scrollTop;
27
+ const beforeX = el.scrollLeft;
28
+ if (parameters.maxScroll) {
29
+ /* Jump straight to the edge */
30
+ switch (parameters.direction) {
31
+ case 'UP':
32
+ el.scrollTop = 0;
33
+ break;
34
+ case 'DOWN':
35
+ el.scrollTop = el.scrollHeight;
36
+ break;
37
+ case 'LEFT':
38
+ el.scrollLeft = 0;
39
+ break;
40
+ case 'RIGHT':
41
+ el.scrollLeft = el.scrollWidth;
42
+ break;
45
43
  }
46
- // scroll the largest one
47
- const target = els[0].el;
48
- const before = target.scrollTop;
49
- target.scrollTop += dy;
50
- return target.scrollTop !== before;
51
- }, parameters.direction === 'DOWN' ? distance : -distance);
52
- didScroll = fallbackScrolled;
53
- }
54
- return didScroll
55
- ? {
56
- isSuccessful: true,
57
- forLlm: `Scrolled ${parameters.direction}`,
58
- metadata: null,
59
44
  }
60
- : {
61
- isSuccessful: false,
62
- forLlm: `Could not scroll ${parameters.direction} due to nothing to scroll.`,
63
- metadata: null,
64
- };
65
- }
66
- async callFromGpt(context, parameters) {
67
- return this.call(context, parameters);
45
+ else {
46
+ /* Incremental ¾-viewport scroll */
47
+ const visibleHeight = Math.min(el.clientHeight, window.innerHeight);
48
+ const visibleWidth = Math.min(el.clientWidth, window.innerWidth);
49
+ const deltaY = Math.floor(visibleHeight * 0.75);
50
+ const deltaX = Math.floor(visibleWidth * 0.75);
51
+ switch (parameters.direction) {
52
+ case 'UP':
53
+ el.scrollBy(0, -deltaY);
54
+ break;
55
+ case 'DOWN':
56
+ el.scrollBy(0, deltaY);
57
+ break;
58
+ case 'LEFT':
59
+ el.scrollBy(-deltaX, 0);
60
+ break;
61
+ case 'RIGHT':
62
+ el.scrollBy(deltaX, 0);
63
+ break;
64
+ }
65
+ }
66
+ const afterY = el.scrollTop;
67
+ const afterX = el.scrollLeft;
68
+ /* Return whether any movement occurred */
69
+ return beforeY !== afterY || beforeX !== afterX;
70
+ }, parameters);
71
+ return didScroll
72
+ ? `Scrolled ${parameters.direction} ${parameters.maxScroll ? ' (max)' : ''}`
73
+ : `Nothing to scroll ${parameters.direction}`;
68
74
  }
69
75
  }
70
76
  exports.ScrollPageTool = ScrollPageTool;
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollPageTool.js","sourceRoot":"","sources":["../../../src/tools/ScrollPageTool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ScrollPageTool.js","sourceRoot":"","sources":["../../../src/tools/ScrollPageTool.ts"],"names":[],"mappings":"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"}