donobu 2.16.0 → 2.17.1

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 (543) hide show
  1. package/dist/apis/EnvDataApi.d.ts +26 -0
  2. package/dist/apis/EnvDataApi.d.ts.map +1 -0
  3. package/dist/apis/EnvDataApi.js +59 -0
  4. package/dist/apis/EnvDataApi.js.map +1 -0
  5. package/dist/apis/EnvironmentDataApi.d.ts +26 -0
  6. package/dist/apis/EnvironmentDataApi.d.ts.map +1 -0
  7. package/dist/apis/EnvironmentDataApi.js +59 -0
  8. package/dist/apis/EnvironmentDataApi.js.map +1 -0
  9. package/dist/apis/FlowsApi.d.ts +4 -0
  10. package/dist/apis/FlowsApi.d.ts.map +1 -1
  11. package/dist/apis/FlowsApi.js +26 -2
  12. package/dist/apis/FlowsApi.js.map +1 -1
  13. package/dist/apis/FlowsFilesApi.d.ts +1 -1
  14. package/dist/apis/FlowsFilesApi.d.ts.map +1 -1
  15. package/dist/apis/SpecialFlowsApi.js +1 -1
  16. package/dist/apis/SpecialFlowsApi.js.map +1 -1
  17. package/dist/assets/generated/parameter-schemas.json +51 -37
  18. package/dist/assets/generated/version +1 -1
  19. package/dist/esm/apis/EnvDataApi.d.ts +26 -0
  20. package/dist/esm/apis/EnvDataApi.d.ts.map +1 -0
  21. package/dist/esm/apis/EnvDataApi.js +59 -0
  22. package/dist/esm/apis/EnvDataApi.js.map +1 -0
  23. package/dist/esm/apis/EnvironmentDataApi.d.ts +26 -0
  24. package/dist/esm/apis/EnvironmentDataApi.d.ts.map +1 -0
  25. package/dist/esm/apis/EnvironmentDataApi.js +59 -0
  26. package/dist/esm/apis/EnvironmentDataApi.js.map +1 -0
  27. package/dist/esm/apis/FlowsApi.d.ts +4 -0
  28. package/dist/esm/apis/FlowsApi.d.ts.map +1 -1
  29. package/dist/esm/apis/FlowsApi.js +26 -2
  30. package/dist/esm/apis/FlowsApi.js.map +1 -1
  31. package/dist/esm/apis/FlowsFilesApi.d.ts +1 -1
  32. package/dist/esm/apis/FlowsFilesApi.d.ts.map +1 -1
  33. package/dist/esm/apis/SpecialFlowsApi.js +1 -1
  34. package/dist/esm/apis/SpecialFlowsApi.js.map +1 -1
  35. package/dist/esm/assets/generated/parameter-schemas.json +51 -37
  36. package/dist/esm/assets/generated/version +1 -1
  37. package/dist/esm/lib/DonobuExtendedPage.d.ts +106 -0
  38. package/dist/esm/lib/DonobuExtendedPage.d.ts.map +1 -0
  39. package/dist/esm/lib/DonobuExtendedPage.js +3 -0
  40. package/dist/esm/lib/DonobuExtendedPage.js.map +1 -0
  41. package/dist/esm/lib/constants.d.ts +8 -0
  42. package/dist/esm/lib/constants.d.ts.map +1 -0
  43. package/dist/esm/lib/constants.js +14 -0
  44. package/dist/esm/lib/constants.js.map +1 -0
  45. package/dist/esm/lib/fixtures/browserState.d.ts +6 -0
  46. package/dist/esm/lib/fixtures/browserState.d.ts.map +1 -0
  47. package/dist/esm/lib/fixtures/browserState.js +15 -0
  48. package/dist/esm/lib/fixtures/browserState.js.map +1 -0
  49. package/dist/esm/lib/fixtures/gptClients.d.ts +40 -0
  50. package/dist/esm/lib/fixtures/gptClients.d.ts.map +1 -0
  51. package/dist/esm/lib/fixtures/gptClients.js +187 -0
  52. package/dist/esm/lib/fixtures/gptClients.js.map +1 -0
  53. package/dist/esm/lib/fixtures/testExtension.d.ts +10 -0
  54. package/dist/esm/lib/fixtures/testExtension.d.ts.map +1 -0
  55. package/dist/esm/lib/fixtures/testExtension.js +383 -0
  56. package/dist/esm/lib/fixtures/testExtension.js.map +1 -0
  57. package/dist/esm/lib/testExtension.d.ts +10 -0
  58. package/dist/esm/lib/testExtension.d.ts.map +1 -0
  59. package/dist/esm/lib/testExtension.js +383 -0
  60. package/dist/esm/lib/testExtension.js.map +1 -0
  61. package/dist/esm/lib/types.d.ts +106 -0
  62. package/dist/esm/lib/types.d.ts.map +1 -0
  63. package/dist/esm/lib/types.js +3 -0
  64. package/dist/esm/lib/types.js.map +1 -0
  65. package/dist/esm/lib/utils/donobuTestStack.d.ts +7 -0
  66. package/dist/esm/lib/utils/donobuTestStack.d.ts.map +1 -0
  67. package/dist/esm/lib/utils/donobuTestStack.js +31 -0
  68. package/dist/esm/lib/utils/donobuTestStack.js.map +1 -0
  69. package/dist/esm/lib/utils/selfHealing.d.ts +15 -0
  70. package/dist/esm/lib/utils/selfHealing.d.ts.map +1 -0
  71. package/dist/esm/lib/utils/selfHealing.js +89 -0
  72. package/dist/esm/lib/utils/selfHealing.js.map +1 -0
  73. package/dist/esm/main.d.ts +5 -1
  74. package/dist/esm/main.d.ts.map +1 -1
  75. package/dist/esm/main.js +8 -5
  76. package/dist/esm/main.js.map +1 -1
  77. package/dist/esm/managers/AdminApiController.d.ts.map +1 -1
  78. package/dist/esm/managers/AdminApiController.js +7 -0
  79. package/dist/esm/managers/AdminApiController.js.map +1 -1
  80. package/dist/esm/managers/AgentsManager.d.ts +1 -1
  81. package/dist/esm/managers/AgentsManager.d.ts.map +1 -1
  82. package/dist/esm/managers/DonobuFlow.d.ts +3 -2
  83. package/dist/esm/managers/DonobuFlow.d.ts.map +1 -1
  84. package/dist/esm/managers/DonobuFlow.js +90 -21
  85. package/dist/esm/managers/DonobuFlow.js.map +1 -1
  86. package/dist/esm/managers/DonobuFlowsManager.d.ts +47 -6
  87. package/dist/esm/managers/DonobuFlowsManager.d.ts.map +1 -1
  88. package/dist/esm/managers/DonobuFlowsManager.js +104 -24
  89. package/dist/esm/managers/DonobuFlowsManager.js.map +1 -1
  90. package/dist/esm/managers/DonobuStack.d.ts +18 -4
  91. package/dist/esm/managers/DonobuStack.d.ts.map +1 -1
  92. package/dist/esm/managers/DonobuStack.js +21 -5
  93. package/dist/esm/managers/DonobuStack.js.map +1 -1
  94. package/dist/esm/managers/EnvDataManager.d.ts +58 -0
  95. package/dist/esm/managers/EnvDataManager.d.ts.map +1 -0
  96. package/dist/esm/managers/EnvDataManager.js +134 -0
  97. package/dist/esm/managers/EnvDataManager.js.map +1 -0
  98. package/dist/esm/managers/EnvironmentDataManager.d.ts +58 -0
  99. package/dist/esm/managers/EnvironmentDataManager.d.ts.map +1 -0
  100. package/dist/esm/managers/EnvironmentDataManager.js +134 -0
  101. package/dist/esm/managers/EnvironmentDataManager.js.map +1 -0
  102. package/dist/esm/managers/GptConfigsManager.d.ts +1 -1
  103. package/dist/esm/managers/GptConfigsManager.d.ts.map +1 -1
  104. package/dist/esm/managers/InteractionVisualizer.d.ts +8 -30
  105. package/dist/esm/managers/InteractionVisualizer.d.ts.map +1 -1
  106. package/dist/esm/managers/InteractionVisualizer.js +132 -204
  107. package/dist/esm/managers/InteractionVisualizer.js.map +1 -1
  108. package/dist/esm/managers/PageInspector.d.ts +0 -1
  109. package/dist/esm/managers/PageInspector.d.ts.map +1 -1
  110. package/dist/esm/managers/PageInspector.js +59 -58
  111. package/dist/esm/managers/PageInspector.js.map +1 -1
  112. package/dist/esm/managers/ToolManager.d.ts +10 -0
  113. package/dist/esm/managers/ToolManager.d.ts.map +1 -1
  114. package/dist/esm/managers/ToolManager.js +46 -3
  115. package/dist/esm/managers/ToolManager.js.map +1 -1
  116. package/dist/esm/models/BrowserConfig.d.ts +1 -6
  117. package/dist/esm/models/BrowserConfig.d.ts.map +1 -1
  118. package/dist/esm/models/BrowserFramework.d.ts +2 -6
  119. package/dist/esm/models/BrowserFramework.d.ts.map +1 -1
  120. package/dist/esm/models/BrowserFramework.js +4 -22
  121. package/dist/esm/models/BrowserFramework.js.map +1 -1
  122. package/dist/esm/models/CreateDonobuFlow.d.ts +4 -0
  123. package/dist/esm/models/CreateDonobuFlow.d.ts.map +1 -1
  124. package/dist/esm/models/EnvironmentDatum.d.ts +54 -0
  125. package/dist/esm/models/EnvironmentDatum.d.ts.map +1 -0
  126. package/dist/esm/models/EnvironmentDatum.js +57 -0
  127. package/dist/esm/models/EnvironmentDatum.js.map +1 -0
  128. package/dist/esm/models/FlowMetadata.d.ts +14 -1
  129. package/dist/esm/models/FlowMetadata.d.ts.map +1 -1
  130. package/dist/esm/models/FlowMetadata.js.map +1 -1
  131. package/dist/esm/models/PaginatedResult.d.ts +10 -0
  132. package/dist/esm/models/PaginatedResult.d.ts.map +1 -0
  133. package/dist/esm/models/PaginatedResult.js +6 -0
  134. package/dist/esm/models/PaginatedResult.js.map +1 -0
  135. package/dist/esm/models/ToolCallContext.d.ts +2 -1
  136. package/dist/esm/models/ToolCallContext.d.ts.map +1 -1
  137. package/dist/esm/models/ToolTemplateDataSource.d.ts +40 -0
  138. package/dist/esm/models/ToolTemplateDataSource.d.ts.map +1 -0
  139. package/dist/esm/models/ToolTemplateDataSource.js +3 -0
  140. package/dist/esm/models/ToolTemplateDataSource.js.map +1 -0
  141. package/dist/esm/persistence/DonobuSqliteDb.d.ts.map +1 -1
  142. package/dist/esm/persistence/DonobuSqliteDb.js +12 -0
  143. package/dist/esm/persistence/DonobuSqliteDb.js.map +1 -1
  144. package/dist/esm/persistence/FlowsPersistence.d.ts +23 -14
  145. package/dist/esm/persistence/FlowsPersistence.d.ts.map +1 -1
  146. package/dist/esm/persistence/FlowsPersistenceAwsS3.d.ts +10 -5
  147. package/dist/esm/persistence/FlowsPersistenceAwsS3.d.ts.map +1 -1
  148. package/dist/esm/persistence/FlowsPersistenceAwsS3.js +79 -1
  149. package/dist/esm/persistence/FlowsPersistenceAwsS3.js.map +1 -1
  150. package/dist/esm/persistence/FlowsPersistenceFactoryImpl.js +1 -1
  151. package/dist/esm/persistence/FlowsPersistenceFactoryImpl.js.map +1 -1
  152. package/dist/esm/persistence/FlowsPersistenceFilesystem.d.ts +32 -5
  153. package/dist/esm/persistence/FlowsPersistenceFilesystem.d.ts.map +1 -1
  154. package/dist/esm/persistence/FlowsPersistenceFilesystem.js +114 -4
  155. package/dist/esm/persistence/FlowsPersistenceFilesystem.js.map +1 -1
  156. package/dist/esm/persistence/FlowsPersistenceGoogleCloudStorage.d.ts +10 -5
  157. package/dist/esm/persistence/FlowsPersistenceGoogleCloudStorage.d.ts.map +1 -1
  158. package/dist/esm/persistence/FlowsPersistenceGoogleCloudStorage.js +58 -1
  159. package/dist/esm/persistence/FlowsPersistenceGoogleCloudStorage.js.map +1 -1
  160. package/dist/esm/persistence/FlowsPersistenceSqlite.d.ts +12 -5
  161. package/dist/esm/persistence/FlowsPersistenceSqlite.d.ts.map +1 -1
  162. package/dist/esm/persistence/FlowsPersistenceSqlite.js +35 -1
  163. package/dist/esm/persistence/FlowsPersistenceSqlite.js.map +1 -1
  164. package/dist/esm/persistence/FlowsPersistenceSupabase.d.ts +10 -5
  165. package/dist/esm/persistence/FlowsPersistenceSupabase.d.ts.map +1 -1
  166. package/dist/esm/persistence/FlowsPersistenceSupabase.js +46 -1
  167. package/dist/esm/persistence/FlowsPersistenceSupabase.js.map +1 -1
  168. package/dist/esm/persistence/FlowsPersistenceVolatile.d.ts +10 -5
  169. package/dist/esm/persistence/FlowsPersistenceVolatile.d.ts.map +1 -1
  170. package/dist/esm/persistence/FlowsPersistenceVolatile.js +21 -1
  171. package/dist/esm/persistence/FlowsPersistenceVolatile.js.map +1 -1
  172. package/dist/esm/persistence/agents/AgentsPersistence.d.ts +12 -0
  173. package/dist/esm/persistence/agents/AgentsPersistence.d.ts.map +1 -0
  174. package/dist/esm/persistence/agents/AgentsPersistence.js +3 -0
  175. package/dist/esm/persistence/agents/AgentsPersistence.js.map +1 -0
  176. package/dist/esm/persistence/agents/AgentsPersistenceSqlite.d.ts +15 -0
  177. package/dist/esm/persistence/agents/AgentsPersistenceSqlite.d.ts.map +1 -0
  178. package/dist/esm/persistence/agents/AgentsPersistenceSqlite.js +50 -0
  179. package/dist/esm/persistence/agents/AgentsPersistenceSqlite.js.map +1 -0
  180. package/dist/esm/persistence/agents/AgentsPersistenceVolatile.d.ts +14 -0
  181. package/dist/esm/persistence/agents/AgentsPersistenceVolatile.d.ts.map +1 -0
  182. package/dist/esm/persistence/agents/AgentsPersistenceVolatile.js +26 -0
  183. package/dist/esm/persistence/agents/AgentsPersistenceVolatile.js.map +1 -0
  184. package/dist/esm/persistence/env/EnvPersistence.d.ts +20 -0
  185. package/dist/esm/persistence/env/EnvPersistence.d.ts.map +1 -0
  186. package/dist/esm/persistence/env/EnvPersistence.js +3 -0
  187. package/dist/esm/persistence/env/EnvPersistence.js.map +1 -0
  188. package/dist/esm/persistence/env/EnvPersistenceAwsS3.d.ts +31 -0
  189. package/dist/esm/persistence/env/EnvPersistenceAwsS3.d.ts.map +1 -0
  190. package/dist/esm/persistence/env/EnvPersistenceAwsS3.js +117 -0
  191. package/dist/esm/persistence/env/EnvPersistenceAwsS3.js.map +1 -0
  192. package/dist/esm/persistence/env/EnvPersistenceFactory.d.ts +6 -0
  193. package/dist/esm/persistence/env/EnvPersistenceFactory.d.ts.map +1 -0
  194. package/dist/esm/persistence/env/EnvPersistenceFactory.js +3 -0
  195. package/dist/esm/persistence/env/EnvPersistenceFactory.js.map +1 -0
  196. package/dist/esm/persistence/env/EnvPersistenceFactoryImpl.d.ts +45 -0
  197. package/dist/esm/persistence/env/EnvPersistenceFactoryImpl.d.ts.map +1 -0
  198. package/dist/esm/persistence/env/EnvPersistenceFactoryImpl.js +86 -0
  199. package/dist/esm/persistence/env/EnvPersistenceFactoryImpl.js.map +1 -0
  200. package/dist/esm/persistence/env/EnvPersistenceFactoryPreset.d.ts +12 -0
  201. package/dist/esm/persistence/env/EnvPersistenceFactoryPreset.d.ts.map +1 -0
  202. package/dist/esm/persistence/env/EnvPersistenceFactoryPreset.js +17 -0
  203. package/dist/esm/persistence/env/EnvPersistenceFactoryPreset.js.map +1 -0
  204. package/dist/esm/persistence/env/EnvPersistenceFilesystem.d.ts +36 -0
  205. package/dist/esm/persistence/env/EnvPersistenceFilesystem.d.ts.map +1 -0
  206. package/dist/esm/persistence/env/EnvPersistenceFilesystem.js +132 -0
  207. package/dist/esm/persistence/env/EnvPersistenceFilesystem.js.map +1 -0
  208. package/dist/esm/persistence/env/EnvPersistenceGoogleCloudStorage.d.ts +30 -0
  209. package/dist/esm/persistence/env/EnvPersistenceGoogleCloudStorage.d.ts.map +1 -0
  210. package/dist/esm/persistence/env/EnvPersistenceGoogleCloudStorage.js +131 -0
  211. package/dist/esm/persistence/env/EnvPersistenceGoogleCloudStorage.js.map +1 -0
  212. package/dist/esm/persistence/env/EnvPersistenceSqlite.d.ts +19 -0
  213. package/dist/esm/persistence/env/EnvPersistenceSqlite.d.ts.map +1 -0
  214. package/dist/esm/persistence/env/EnvPersistenceSqlite.js +54 -0
  215. package/dist/esm/persistence/env/EnvPersistenceSqlite.js.map +1 -0
  216. package/dist/esm/persistence/env/EnvPersistenceSupabase.d.ts +17 -0
  217. package/dist/esm/persistence/env/EnvPersistenceSupabase.d.ts.map +1 -0
  218. package/dist/esm/persistence/env/EnvPersistenceSupabase.js +60 -0
  219. package/dist/esm/persistence/env/EnvPersistenceSupabase.js.map +1 -0
  220. package/dist/esm/persistence/env/EnvPersistenceVolatile.d.ts +13 -0
  221. package/dist/esm/persistence/env/EnvPersistenceVolatile.d.ts.map +1 -0
  222. package/dist/esm/persistence/env/EnvPersistenceVolatile.js +31 -0
  223. package/dist/esm/persistence/env/EnvPersistenceVolatile.js.map +1 -0
  224. package/dist/esm/persistence/flows/FlowsPersistence.d.ts +87 -0
  225. package/dist/esm/persistence/flows/FlowsPersistence.d.ts.map +1 -0
  226. package/dist/esm/persistence/flows/FlowsPersistence.js +3 -0
  227. package/dist/esm/persistence/flows/FlowsPersistence.js.map +1 -0
  228. package/dist/esm/persistence/flows/FlowsPersistenceAwsS3.d.ts +71 -0
  229. package/dist/esm/persistence/flows/FlowsPersistenceAwsS3.d.ts.map +1 -0
  230. package/dist/esm/persistence/flows/FlowsPersistenceAwsS3.js +448 -0
  231. package/dist/esm/persistence/flows/FlowsPersistenceAwsS3.js.map +1 -0
  232. package/dist/esm/persistence/flows/FlowsPersistenceFactory.d.ts +10 -0
  233. package/dist/esm/persistence/flows/FlowsPersistenceFactory.d.ts.map +1 -0
  234. package/dist/esm/persistence/flows/FlowsPersistenceFactory.js +3 -0
  235. package/dist/esm/persistence/flows/FlowsPersistenceFactory.js.map +1 -0
  236. package/dist/esm/persistence/flows/FlowsPersistenceFactoryImpl.d.ts +57 -0
  237. package/dist/esm/persistence/flows/FlowsPersistenceFactoryImpl.d.ts.map +1 -0
  238. package/dist/esm/persistence/flows/FlowsPersistenceFactoryImpl.js +238 -0
  239. package/dist/esm/persistence/flows/FlowsPersistenceFactoryImpl.js.map +1 -0
  240. package/dist/esm/persistence/flows/FlowsPersistenceFactoryPreset.d.ts +13 -0
  241. package/dist/esm/persistence/flows/FlowsPersistenceFactoryPreset.d.ts.map +1 -0
  242. package/dist/esm/persistence/flows/FlowsPersistenceFactoryPreset.js +24 -0
  243. package/dist/esm/persistence/flows/FlowsPersistenceFactoryPreset.js.map +1 -0
  244. package/dist/esm/persistence/flows/FlowsPersistenceFilesystem.d.ts +52 -0
  245. package/dist/esm/persistence/flows/FlowsPersistenceFilesystem.d.ts.map +1 -0
  246. package/dist/esm/persistence/flows/FlowsPersistenceFilesystem.js +291 -0
  247. package/dist/esm/persistence/flows/FlowsPersistenceFilesystem.js.map +1 -0
  248. package/dist/esm/persistence/flows/FlowsPersistenceGoogleCloudStorage.d.ts +71 -0
  249. package/dist/esm/persistence/flows/FlowsPersistenceGoogleCloudStorage.d.ts.map +1 -0
  250. package/dist/esm/persistence/flows/FlowsPersistenceGoogleCloudStorage.js +429 -0
  251. package/dist/esm/persistence/flows/FlowsPersistenceGoogleCloudStorage.js.map +1 -0
  252. package/dist/esm/persistence/flows/FlowsPersistenceSqlite.d.ts +43 -0
  253. package/dist/esm/persistence/flows/FlowsPersistenceSqlite.d.ts.map +1 -0
  254. package/dist/esm/persistence/flows/FlowsPersistenceSqlite.js +259 -0
  255. package/dist/esm/persistence/flows/FlowsPersistenceSqlite.js.map +1 -0
  256. package/dist/esm/persistence/flows/FlowsPersistenceSupabase.d.ts +40 -0
  257. package/dist/esm/persistence/flows/FlowsPersistenceSupabase.d.ts.map +1 -0
  258. package/dist/esm/persistence/flows/FlowsPersistenceSupabase.js +218 -0
  259. package/dist/esm/persistence/flows/FlowsPersistenceSupabase.js.map +1 -0
  260. package/dist/esm/persistence/flows/FlowsPersistenceVolatile.d.ts +37 -0
  261. package/dist/esm/persistence/flows/FlowsPersistenceVolatile.d.ts.map +1 -0
  262. package/dist/esm/persistence/flows/FlowsPersistenceVolatile.js +151 -0
  263. package/dist/esm/persistence/flows/FlowsPersistenceVolatile.js.map +1 -0
  264. package/dist/esm/persistence/gptconfigs/GptConfigsPersistence.d.ts +12 -0
  265. package/dist/esm/persistence/gptconfigs/GptConfigsPersistence.d.ts.map +1 -0
  266. package/dist/esm/persistence/gptconfigs/GptConfigsPersistence.js +3 -0
  267. package/dist/esm/persistence/gptconfigs/GptConfigsPersistence.js.map +1 -0
  268. package/dist/esm/persistence/gptconfigs/GptConfigsPersistenceSqlite.d.ts +13 -0
  269. package/dist/esm/persistence/gptconfigs/GptConfigsPersistenceSqlite.d.ts.map +1 -0
  270. package/dist/esm/persistence/gptconfigs/GptConfigsPersistenceSqlite.js +35 -0
  271. package/dist/esm/persistence/gptconfigs/GptConfigsPersistenceSqlite.js.map +1 -0
  272. package/dist/esm/persistence/gptconfigs/GptConfigsPersistenceVolatile.d.ts +15 -0
  273. package/dist/esm/persistence/gptconfigs/GptConfigsPersistenceVolatile.d.ts.map +1 -0
  274. package/dist/esm/persistence/gptconfigs/GptConfigsPersistenceVolatile.js +31 -0
  275. package/dist/esm/persistence/gptconfigs/GptConfigsPersistenceVolatile.js.map +1 -0
  276. package/dist/esm/playwrightTestExtensions.d.ts.map +1 -1
  277. package/dist/esm/playwrightTestExtensions.js +31 -10
  278. package/dist/esm/playwrightTestExtensions.js.map +1 -1
  279. package/dist/esm/tools/GoToWebpageTool.d.ts.map +1 -1
  280. package/dist/esm/tools/GoToWebpageTool.js +3 -2
  281. package/dist/esm/tools/GoToWebpageTool.js.map +1 -1
  282. package/dist/esm/tools/SolveMfaChallenge.d.ts +32 -0
  283. package/dist/esm/tools/SolveMfaChallenge.d.ts.map +1 -0
  284. package/dist/esm/tools/SolveMfaChallenge.js +185 -0
  285. package/dist/esm/tools/SolveMfaChallenge.js.map +1 -0
  286. package/dist/esm/utils/TemplateInterpolator.d.ts +47 -0
  287. package/dist/esm/utils/TemplateInterpolator.d.ts.map +1 -0
  288. package/dist/esm/utils/TemplateInterpolator.js +352 -0
  289. package/dist/esm/utils/TemplateInterpolator.js.map +1 -0
  290. package/dist/lib/DonobuExtendedPage.d.ts +106 -0
  291. package/dist/lib/DonobuExtendedPage.d.ts.map +1 -0
  292. package/dist/lib/DonobuExtendedPage.js +3 -0
  293. package/dist/lib/DonobuExtendedPage.js.map +1 -0
  294. package/dist/lib/constants.d.ts +8 -0
  295. package/dist/lib/constants.d.ts.map +1 -0
  296. package/dist/lib/constants.js +14 -0
  297. package/dist/lib/constants.js.map +1 -0
  298. package/dist/lib/fixtures/browserState.d.ts +6 -0
  299. package/dist/lib/fixtures/browserState.d.ts.map +1 -0
  300. package/dist/lib/fixtures/browserState.js +15 -0
  301. package/dist/lib/fixtures/browserState.js.map +1 -0
  302. package/dist/lib/fixtures/gptClients.d.ts +40 -0
  303. package/dist/lib/fixtures/gptClients.d.ts.map +1 -0
  304. package/dist/lib/fixtures/gptClients.js +187 -0
  305. package/dist/lib/fixtures/gptClients.js.map +1 -0
  306. package/dist/lib/fixtures/testExtension.d.ts +10 -0
  307. package/dist/lib/fixtures/testExtension.d.ts.map +1 -0
  308. package/dist/lib/fixtures/testExtension.js +383 -0
  309. package/dist/lib/fixtures/testExtension.js.map +1 -0
  310. package/dist/lib/testExtension.d.ts +10 -0
  311. package/dist/lib/testExtension.d.ts.map +1 -0
  312. package/dist/lib/testExtension.js +383 -0
  313. package/dist/lib/testExtension.js.map +1 -0
  314. package/dist/lib/types.d.ts +106 -0
  315. package/dist/lib/types.d.ts.map +1 -0
  316. package/dist/lib/types.js +3 -0
  317. package/dist/lib/types.js.map +1 -0
  318. package/dist/lib/utils/donobuTestStack.d.ts +7 -0
  319. package/dist/lib/utils/donobuTestStack.d.ts.map +1 -0
  320. package/dist/lib/utils/donobuTestStack.js +31 -0
  321. package/dist/lib/utils/donobuTestStack.js.map +1 -0
  322. package/dist/lib/utils/selfHealing.d.ts +15 -0
  323. package/dist/lib/utils/selfHealing.d.ts.map +1 -0
  324. package/dist/lib/utils/selfHealing.js +89 -0
  325. package/dist/lib/utils/selfHealing.js.map +1 -0
  326. package/dist/main.d.ts +5 -1
  327. package/dist/main.d.ts.map +1 -1
  328. package/dist/main.js +8 -5
  329. package/dist/main.js.map +1 -1
  330. package/dist/managers/AdminApiController.d.ts.map +1 -1
  331. package/dist/managers/AdminApiController.js +7 -0
  332. package/dist/managers/AdminApiController.js.map +1 -1
  333. package/dist/managers/AgentsManager.d.ts +1 -1
  334. package/dist/managers/AgentsManager.d.ts.map +1 -1
  335. package/dist/managers/DonobuFlow.d.ts +3 -2
  336. package/dist/managers/DonobuFlow.d.ts.map +1 -1
  337. package/dist/managers/DonobuFlow.js +90 -21
  338. package/dist/managers/DonobuFlow.js.map +1 -1
  339. package/dist/managers/DonobuFlowsManager.d.ts +47 -6
  340. package/dist/managers/DonobuFlowsManager.d.ts.map +1 -1
  341. package/dist/managers/DonobuFlowsManager.js +104 -24
  342. package/dist/managers/DonobuFlowsManager.js.map +1 -1
  343. package/dist/managers/DonobuStack.d.ts +18 -4
  344. package/dist/managers/DonobuStack.d.ts.map +1 -1
  345. package/dist/managers/DonobuStack.js +21 -5
  346. package/dist/managers/DonobuStack.js.map +1 -1
  347. package/dist/managers/EnvDataManager.d.ts +58 -0
  348. package/dist/managers/EnvDataManager.d.ts.map +1 -0
  349. package/dist/managers/EnvDataManager.js +134 -0
  350. package/dist/managers/EnvDataManager.js.map +1 -0
  351. package/dist/managers/EnvironmentDataManager.d.ts +58 -0
  352. package/dist/managers/EnvironmentDataManager.d.ts.map +1 -0
  353. package/dist/managers/EnvironmentDataManager.js +134 -0
  354. package/dist/managers/EnvironmentDataManager.js.map +1 -0
  355. package/dist/managers/GptConfigsManager.d.ts +1 -1
  356. package/dist/managers/GptConfigsManager.d.ts.map +1 -1
  357. package/dist/managers/InteractionVisualizer.d.ts +8 -30
  358. package/dist/managers/InteractionVisualizer.d.ts.map +1 -1
  359. package/dist/managers/InteractionVisualizer.js +132 -204
  360. package/dist/managers/InteractionVisualizer.js.map +1 -1
  361. package/dist/managers/PageInspector.d.ts +0 -1
  362. package/dist/managers/PageInspector.d.ts.map +1 -1
  363. package/dist/managers/PageInspector.js +59 -58
  364. package/dist/managers/PageInspector.js.map +1 -1
  365. package/dist/managers/ToolManager.d.ts +10 -0
  366. package/dist/managers/ToolManager.d.ts.map +1 -1
  367. package/dist/managers/ToolManager.js +46 -3
  368. package/dist/managers/ToolManager.js.map +1 -1
  369. package/dist/models/BrowserConfig.d.ts +1 -6
  370. package/dist/models/BrowserConfig.d.ts.map +1 -1
  371. package/dist/models/BrowserFramework.d.ts +2 -6
  372. package/dist/models/BrowserFramework.d.ts.map +1 -1
  373. package/dist/models/BrowserFramework.js +4 -22
  374. package/dist/models/BrowserFramework.js.map +1 -1
  375. package/dist/models/CreateDonobuFlow.d.ts +4 -0
  376. package/dist/models/CreateDonobuFlow.d.ts.map +1 -1
  377. package/dist/models/EnvironmentDatum.d.ts +54 -0
  378. package/dist/models/EnvironmentDatum.d.ts.map +1 -0
  379. package/dist/models/EnvironmentDatum.js +57 -0
  380. package/dist/models/EnvironmentDatum.js.map +1 -0
  381. package/dist/models/FlowMetadata.d.ts +14 -1
  382. package/dist/models/FlowMetadata.d.ts.map +1 -1
  383. package/dist/models/FlowMetadata.js.map +1 -1
  384. package/dist/models/PaginatedResult.d.ts +10 -0
  385. package/dist/models/PaginatedResult.d.ts.map +1 -0
  386. package/dist/models/PaginatedResult.js +6 -0
  387. package/dist/models/PaginatedResult.js.map +1 -0
  388. package/dist/models/ToolCallContext.d.ts +2 -1
  389. package/dist/models/ToolCallContext.d.ts.map +1 -1
  390. package/dist/models/ToolTemplateDataSource.d.ts +40 -0
  391. package/dist/models/ToolTemplateDataSource.d.ts.map +1 -0
  392. package/dist/models/ToolTemplateDataSource.js +3 -0
  393. package/dist/models/ToolTemplateDataSource.js.map +1 -0
  394. package/dist/persistence/DonobuSqliteDb.d.ts.map +1 -1
  395. package/dist/persistence/DonobuSqliteDb.js +12 -0
  396. package/dist/persistence/DonobuSqliteDb.js.map +1 -1
  397. package/dist/persistence/FlowsPersistence.d.ts +23 -14
  398. package/dist/persistence/FlowsPersistence.d.ts.map +1 -1
  399. package/dist/persistence/FlowsPersistenceAwsS3.d.ts +10 -5
  400. package/dist/persistence/FlowsPersistenceAwsS3.d.ts.map +1 -1
  401. package/dist/persistence/FlowsPersistenceAwsS3.js +79 -1
  402. package/dist/persistence/FlowsPersistenceAwsS3.js.map +1 -1
  403. package/dist/persistence/FlowsPersistenceFactoryImpl.js +1 -1
  404. package/dist/persistence/FlowsPersistenceFactoryImpl.js.map +1 -1
  405. package/dist/persistence/FlowsPersistenceFilesystem.d.ts +32 -5
  406. package/dist/persistence/FlowsPersistenceFilesystem.d.ts.map +1 -1
  407. package/dist/persistence/FlowsPersistenceFilesystem.js +114 -4
  408. package/dist/persistence/FlowsPersistenceFilesystem.js.map +1 -1
  409. package/dist/persistence/FlowsPersistenceGoogleCloudStorage.d.ts +10 -5
  410. package/dist/persistence/FlowsPersistenceGoogleCloudStorage.d.ts.map +1 -1
  411. package/dist/persistence/FlowsPersistenceGoogleCloudStorage.js +58 -1
  412. package/dist/persistence/FlowsPersistenceGoogleCloudStorage.js.map +1 -1
  413. package/dist/persistence/FlowsPersistenceSqlite.d.ts +12 -5
  414. package/dist/persistence/FlowsPersistenceSqlite.d.ts.map +1 -1
  415. package/dist/persistence/FlowsPersistenceSqlite.js +35 -1
  416. package/dist/persistence/FlowsPersistenceSqlite.js.map +1 -1
  417. package/dist/persistence/FlowsPersistenceSupabase.d.ts +10 -5
  418. package/dist/persistence/FlowsPersistenceSupabase.d.ts.map +1 -1
  419. package/dist/persistence/FlowsPersistenceSupabase.js +46 -1
  420. package/dist/persistence/FlowsPersistenceSupabase.js.map +1 -1
  421. package/dist/persistence/FlowsPersistenceVolatile.d.ts +10 -5
  422. package/dist/persistence/FlowsPersistenceVolatile.d.ts.map +1 -1
  423. package/dist/persistence/FlowsPersistenceVolatile.js +21 -1
  424. package/dist/persistence/FlowsPersistenceVolatile.js.map +1 -1
  425. package/dist/persistence/agents/AgentsPersistence.d.ts +12 -0
  426. package/dist/persistence/agents/AgentsPersistence.d.ts.map +1 -0
  427. package/dist/persistence/agents/AgentsPersistence.js +3 -0
  428. package/dist/persistence/agents/AgentsPersistence.js.map +1 -0
  429. package/dist/persistence/agents/AgentsPersistenceSqlite.d.ts +15 -0
  430. package/dist/persistence/agents/AgentsPersistenceSqlite.d.ts.map +1 -0
  431. package/dist/persistence/agents/AgentsPersistenceSqlite.js +50 -0
  432. package/dist/persistence/agents/AgentsPersistenceSqlite.js.map +1 -0
  433. package/dist/persistence/agents/AgentsPersistenceVolatile.d.ts +14 -0
  434. package/dist/persistence/agents/AgentsPersistenceVolatile.d.ts.map +1 -0
  435. package/dist/persistence/agents/AgentsPersistenceVolatile.js +26 -0
  436. package/dist/persistence/agents/AgentsPersistenceVolatile.js.map +1 -0
  437. package/dist/persistence/env/EnvPersistence.d.ts +20 -0
  438. package/dist/persistence/env/EnvPersistence.d.ts.map +1 -0
  439. package/dist/persistence/env/EnvPersistence.js +3 -0
  440. package/dist/persistence/env/EnvPersistence.js.map +1 -0
  441. package/dist/persistence/env/EnvPersistenceAwsS3.d.ts +31 -0
  442. package/dist/persistence/env/EnvPersistenceAwsS3.d.ts.map +1 -0
  443. package/dist/persistence/env/EnvPersistenceAwsS3.js +117 -0
  444. package/dist/persistence/env/EnvPersistenceAwsS3.js.map +1 -0
  445. package/dist/persistence/env/EnvPersistenceFactory.d.ts +6 -0
  446. package/dist/persistence/env/EnvPersistenceFactory.d.ts.map +1 -0
  447. package/dist/persistence/env/EnvPersistenceFactory.js +3 -0
  448. package/dist/persistence/env/EnvPersistenceFactory.js.map +1 -0
  449. package/dist/persistence/env/EnvPersistenceFactoryImpl.d.ts +45 -0
  450. package/dist/persistence/env/EnvPersistenceFactoryImpl.d.ts.map +1 -0
  451. package/dist/persistence/env/EnvPersistenceFactoryImpl.js +86 -0
  452. package/dist/persistence/env/EnvPersistenceFactoryImpl.js.map +1 -0
  453. package/dist/persistence/env/EnvPersistenceFactoryPreset.d.ts +12 -0
  454. package/dist/persistence/env/EnvPersistenceFactoryPreset.d.ts.map +1 -0
  455. package/dist/persistence/env/EnvPersistenceFactoryPreset.js +17 -0
  456. package/dist/persistence/env/EnvPersistenceFactoryPreset.js.map +1 -0
  457. package/dist/persistence/env/EnvPersistenceFilesystem.d.ts +36 -0
  458. package/dist/persistence/env/EnvPersistenceFilesystem.d.ts.map +1 -0
  459. package/dist/persistence/env/EnvPersistenceFilesystem.js +132 -0
  460. package/dist/persistence/env/EnvPersistenceFilesystem.js.map +1 -0
  461. package/dist/persistence/env/EnvPersistenceGoogleCloudStorage.d.ts +30 -0
  462. package/dist/persistence/env/EnvPersistenceGoogleCloudStorage.d.ts.map +1 -0
  463. package/dist/persistence/env/EnvPersistenceGoogleCloudStorage.js +131 -0
  464. package/dist/persistence/env/EnvPersistenceGoogleCloudStorage.js.map +1 -0
  465. package/dist/persistence/env/EnvPersistenceSqlite.d.ts +19 -0
  466. package/dist/persistence/env/EnvPersistenceSqlite.d.ts.map +1 -0
  467. package/dist/persistence/env/EnvPersistenceSqlite.js +54 -0
  468. package/dist/persistence/env/EnvPersistenceSqlite.js.map +1 -0
  469. package/dist/persistence/env/EnvPersistenceSupabase.d.ts +17 -0
  470. package/dist/persistence/env/EnvPersistenceSupabase.d.ts.map +1 -0
  471. package/dist/persistence/env/EnvPersistenceSupabase.js +60 -0
  472. package/dist/persistence/env/EnvPersistenceSupabase.js.map +1 -0
  473. package/dist/persistence/env/EnvPersistenceVolatile.d.ts +13 -0
  474. package/dist/persistence/env/EnvPersistenceVolatile.d.ts.map +1 -0
  475. package/dist/persistence/env/EnvPersistenceVolatile.js +31 -0
  476. package/dist/persistence/env/EnvPersistenceVolatile.js.map +1 -0
  477. package/dist/persistence/flows/FlowsPersistence.d.ts +87 -0
  478. package/dist/persistence/flows/FlowsPersistence.d.ts.map +1 -0
  479. package/dist/persistence/flows/FlowsPersistence.js +3 -0
  480. package/dist/persistence/flows/FlowsPersistence.js.map +1 -0
  481. package/dist/persistence/flows/FlowsPersistenceAwsS3.d.ts +71 -0
  482. package/dist/persistence/flows/FlowsPersistenceAwsS3.d.ts.map +1 -0
  483. package/dist/persistence/flows/FlowsPersistenceAwsS3.js +448 -0
  484. package/dist/persistence/flows/FlowsPersistenceAwsS3.js.map +1 -0
  485. package/dist/persistence/flows/FlowsPersistenceFactory.d.ts +10 -0
  486. package/dist/persistence/flows/FlowsPersistenceFactory.d.ts.map +1 -0
  487. package/dist/persistence/flows/FlowsPersistenceFactory.js +3 -0
  488. package/dist/persistence/flows/FlowsPersistenceFactory.js.map +1 -0
  489. package/dist/persistence/flows/FlowsPersistenceFactoryImpl.d.ts +57 -0
  490. package/dist/persistence/flows/FlowsPersistenceFactoryImpl.d.ts.map +1 -0
  491. package/dist/persistence/flows/FlowsPersistenceFactoryImpl.js +238 -0
  492. package/dist/persistence/flows/FlowsPersistenceFactoryImpl.js.map +1 -0
  493. package/dist/persistence/flows/FlowsPersistenceFactoryPreset.d.ts +13 -0
  494. package/dist/persistence/flows/FlowsPersistenceFactoryPreset.d.ts.map +1 -0
  495. package/dist/persistence/flows/FlowsPersistenceFactoryPreset.js +24 -0
  496. package/dist/persistence/flows/FlowsPersistenceFactoryPreset.js.map +1 -0
  497. package/dist/persistence/flows/FlowsPersistenceFilesystem.d.ts +52 -0
  498. package/dist/persistence/flows/FlowsPersistenceFilesystem.d.ts.map +1 -0
  499. package/dist/persistence/flows/FlowsPersistenceFilesystem.js +291 -0
  500. package/dist/persistence/flows/FlowsPersistenceFilesystem.js.map +1 -0
  501. package/dist/persistence/flows/FlowsPersistenceGoogleCloudStorage.d.ts +71 -0
  502. package/dist/persistence/flows/FlowsPersistenceGoogleCloudStorage.d.ts.map +1 -0
  503. package/dist/persistence/flows/FlowsPersistenceGoogleCloudStorage.js +429 -0
  504. package/dist/persistence/flows/FlowsPersistenceGoogleCloudStorage.js.map +1 -0
  505. package/dist/persistence/flows/FlowsPersistenceSqlite.d.ts +43 -0
  506. package/dist/persistence/flows/FlowsPersistenceSqlite.d.ts.map +1 -0
  507. package/dist/persistence/flows/FlowsPersistenceSqlite.js +259 -0
  508. package/dist/persistence/flows/FlowsPersistenceSqlite.js.map +1 -0
  509. package/dist/persistence/flows/FlowsPersistenceSupabase.d.ts +40 -0
  510. package/dist/persistence/flows/FlowsPersistenceSupabase.d.ts.map +1 -0
  511. package/dist/persistence/flows/FlowsPersistenceSupabase.js +218 -0
  512. package/dist/persistence/flows/FlowsPersistenceSupabase.js.map +1 -0
  513. package/dist/persistence/flows/FlowsPersistenceVolatile.d.ts +37 -0
  514. package/dist/persistence/flows/FlowsPersistenceVolatile.d.ts.map +1 -0
  515. package/dist/persistence/flows/FlowsPersistenceVolatile.js +151 -0
  516. package/dist/persistence/flows/FlowsPersistenceVolatile.js.map +1 -0
  517. package/dist/persistence/gptconfigs/GptConfigsPersistence.d.ts +12 -0
  518. package/dist/persistence/gptconfigs/GptConfigsPersistence.d.ts.map +1 -0
  519. package/dist/persistence/gptconfigs/GptConfigsPersistence.js +3 -0
  520. package/dist/persistence/gptconfigs/GptConfigsPersistence.js.map +1 -0
  521. package/dist/persistence/gptconfigs/GptConfigsPersistenceSqlite.d.ts +13 -0
  522. package/dist/persistence/gptconfigs/GptConfigsPersistenceSqlite.d.ts.map +1 -0
  523. package/dist/persistence/gptconfigs/GptConfigsPersistenceSqlite.js +35 -0
  524. package/dist/persistence/gptconfigs/GptConfigsPersistenceSqlite.js.map +1 -0
  525. package/dist/persistence/gptconfigs/GptConfigsPersistenceVolatile.d.ts +15 -0
  526. package/dist/persistence/gptconfigs/GptConfigsPersistenceVolatile.d.ts.map +1 -0
  527. package/dist/persistence/gptconfigs/GptConfigsPersistenceVolatile.js +31 -0
  528. package/dist/persistence/gptconfigs/GptConfigsPersistenceVolatile.js.map +1 -0
  529. package/dist/playwrightTestExtensions.d.ts.map +1 -1
  530. package/dist/playwrightTestExtensions.js +31 -10
  531. package/dist/playwrightTestExtensions.js.map +1 -1
  532. package/dist/tools/GoToWebpageTool.d.ts.map +1 -1
  533. package/dist/tools/GoToWebpageTool.js +3 -2
  534. package/dist/tools/GoToWebpageTool.js.map +1 -1
  535. package/dist/tools/SolveMfaChallenge.d.ts +32 -0
  536. package/dist/tools/SolveMfaChallenge.d.ts.map +1 -0
  537. package/dist/tools/SolveMfaChallenge.js +185 -0
  538. package/dist/tools/SolveMfaChallenge.js.map +1 -0
  539. package/dist/utils/TemplateInterpolator.d.ts +47 -0
  540. package/dist/utils/TemplateInterpolator.d.ts.map +1 -0
  541. package/dist/utils/TemplateInterpolator.js +352 -0
  542. package/dist/utils/TemplateInterpolator.js.map +1 -0
  543. package/package.json +3 -1
@@ -1,223 +1,151 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.InteractionVisualizer = void 0;
4
- const Logger_1 = require("../utils/Logger");
5
- const PlaywrightUtils_1 = require("../utils/PlaywrightUtils");
6
- const MiscUtils_1 = require("../utils/MiscUtils");
7
- /**
8
- * Class for visualizing interactions in a webpage with a virtual mouse and messages.
9
- */
10
4
  class InteractionVisualizer {
11
- /**
12
- * Creates an instance of InteractionVisualizer.
13
- * @param defaultMessageDurationMillis - Default duration for displaying messages in milliseconds.
14
- */
15
5
  constructor(defaultMessageDurationMillis) {
16
6
  this.defaultMessageDurationMillis = defaultMessageDurationMillis;
17
- this.currentMousePosition = { x: 0, y: 0 };
7
+ this.cursorPos = { x: 0, y: 0 };
18
8
  }
19
- /**
20
- * Moves the virtual mouse to the element with a smooth animation and
21
- * optionally displays a message at element.
22
- */
23
- async pointAt(page, element, message, durationMillis = this.defaultMessageDurationMillis) {
24
- if (!durationMillis || durationMillis <= 0) {
9
+ /* ------------------------------------------------------------------ */
10
+ /* Public API */
11
+ /* ------------------------------------------------------------------ */
12
+ /** Move the virtual cursor to the centre of the locator and optionally show a message. */
13
+ async pointAt(page, locator, message, duration = this.defaultMessageDurationMillis) {
14
+ if (!duration || duration <= 0)
25
15
  return;
26
- }
27
- await InteractionVisualizer.ensureRoutesRegistered(page.context());
28
- try {
29
- // Get element position for mouse movement
30
- const boundingBox = await element.boundingBox();
31
- if (!boundingBox) {
32
- Logger_1.appLogger.error('Failed to get element bounding box');
16
+ await locator.scrollIntoViewIfNeeded();
17
+ const box = await locator.boundingBox();
18
+ if (!box)
19
+ throw new Error('Element bounding box unavailable');
20
+ const target = { x: box.x + box.width / 2, y: box.y + box.height / 2 };
21
+ await this.ensureContainer(page);
22
+ await Promise.all([
23
+ this.moveCursor(page, target, duration / 2),
24
+ message && message.trim()
25
+ ? this.showMessage(page, target, message.trim(), duration)
26
+ : Promise.resolve(),
27
+ ]);
28
+ }
29
+ /* ------------------------------------------------------------------ */
30
+ /* Private helpers */
31
+ /* ------------------------------------------------------------------ */
32
+ async ensureContainer(page) {
33
+ const id = InteractionVisualizer.CONTAINER_ID;
34
+ await page.evaluate(([containerId, css]) => {
35
+ if (document.getElementById(containerId))
33
36
  return;
34
- }
35
- // Calculate target position (center of the element)
36
- const targetX = boundingBox.x + boundingBox.width / 2;
37
- const targetY = boundingBox.y + boundingBox.height / 2;
38
- const promises = [];
39
- // Start mouse movement and message display in parallel
40
- promises.push(this.moveVirtualMouse(page, targetX, targetY, durationMillis / 2));
41
- if (message && !message.trim()) {
42
- // Display the message for the element
43
- await this.displayMessageNearElement(element, message);
44
- // Create a promise for the message duration
45
- promises.push(page.waitForTimeout(durationMillis));
46
- }
47
- // Wait for both mouse movement and message duration to complete
48
- await Promise.all(promises);
49
- // Remove only the message after the duration (keep the mouse)
50
- await element.evaluate((_, [messageContainerId]) => {
51
- const container = document.getElementById(messageContainerId);
52
- if (container) {
53
- const shadow = container.shadowRoot;
54
- if (shadow) {
55
- // Remove only message elements but keep the mouse
56
- const messages = Array.from(shadow.querySelectorAll('.donobu-message'));
57
- messages.forEach((msg) => msg.remove());
58
- }
59
- }
60
- }, [InteractionVisualizer.MESSAGE_CONTAINER_ID]);
61
- }
62
- catch (e) {
63
- if (PlaywrightUtils_1.PlaywrightUtils.isPageClosedError(e)) {
64
- throw e;
65
- }
66
- else {
67
- Logger_1.appLogger.error(`Failed to display message at element`, e);
68
- }
69
- }
37
+ const el = document.createElement('div');
38
+ el.id = containerId;
39
+ Object.assign(el.style, {
40
+ position: 'fixed',
41
+ top: '0',
42
+ left: '0',
43
+ width: '100vw',
44
+ height: '100vh',
45
+ pointerEvents: 'none',
46
+ zIndex: '2147483646', // just below the message itself
47
+ });
48
+ const shadow = el.attachShadow({ mode: 'open' });
49
+ const style = document.createElement('style');
50
+ style.textContent = css;
51
+ shadow.appendChild(style);
52
+ // Append to <html> so it is not clipped by overflow/transform on <body>
53
+ (document.documentElement || document.body).appendChild(el);
54
+ }, [id, InteractionVisualizer.CSS]);
70
55
  }
71
- /**
72
- * Moves the virtual mouse to the target position with a smooth animation.
73
- */
74
- async moveVirtualMouse(page, targetX, targetY, durationMillis) {
75
- await InteractionVisualizer.ensureRoutesRegistered(page.context());
76
- await page.evaluate(([containerId, mouseId, startX, startY, endX, endY, duration]) => {
77
- return new Promise((resolve) => {
78
- // 1) Find or create the container
79
- let container = document.getElementById(containerId);
80
- if (!container) {
81
- container = document.createElement('div');
82
- container.id = containerId;
83
- container.style.position = 'absolute';
84
- container.style.top = '0';
85
- container.style.left = '0';
86
- container.style.width = '100%';
87
- container.style.height = '100%';
88
- container.style.pointerEvents = 'none';
89
- document.body.appendChild(container);
90
- const shadowRoot = container.attachShadow({ mode: 'open' });
91
- // Insert style
92
- const styleEl = document.createElement('link');
93
- styleEl.rel = 'stylesheet';
94
- styleEl.href = '/donobu.css';
95
- shadowRoot.appendChild(styleEl);
96
- }
97
- const shadow = container.shadowRoot;
98
- if (!shadow) {
99
- resolve();
100
- return;
101
- }
102
- // Find or create mouse
103
- let mouse = shadow.getElementById(mouseId);
104
- if (!mouse) {
105
- mouse = document.createElement('div');
106
- mouse.id = mouseId;
107
- mouse.className = 'donobu-virtual-mouse';
108
- // Initial position if first time
109
- mouse.style.left = `${startX}px`;
110
- mouse.style.top = `${startY}px`;
111
- mouse.style.transitionDuration = '0s'; // No animation initially
112
- shadow.appendChild(mouse);
113
- // Force reflow to ensure initial position is applied before animation
114
- void mouse.offsetWidth;
115
- }
116
- // Animate the mouse
117
- mouse.style.transitionDuration = `${duration}ms`;
118
- mouse.style.left = `${endX - 16}px`; // Half of 40px
119
- mouse.style.top = `${endY - 8}px`; // Tip adjustment
120
- // Resolve when transition completes or timeout as fallback
121
- const transitionEndHandler = () => {
122
- mouse?.removeEventListener('transitionend', transitionEndHandler);
123
- if (mouse) {
124
- mouse.classList.remove('rippling'); // Reset ripple
125
- void mouse.offsetWidth; // Force reflow
126
- setTimeout(() => {
127
- mouse?.classList.add('rippling'); // Trigger new ripple
128
- }, 10);
129
- }
56
+ async moveCursor(page, target, duration) {
57
+ const id = InteractionVisualizer.CONTAINER_ID;
58
+ await page.evaluate(([containerId, start, end, duration, svg]) => {
59
+ containerId = containerId;
60
+ start = start;
61
+ end = end;
62
+ duration = duration;
63
+ svg = svg;
64
+ const root = document.getElementById(containerId)
65
+ .shadowRoot;
66
+ let cursor = root.querySelector('.donobu-virtual-mouse');
67
+ if (!cursor) {
68
+ cursor = document.createElement('div');
69
+ cursor.className = 'donobu-virtual-mouse';
70
+ cursor.innerHTML = svg;
71
+ cursor.style.left = `${start.x}px`;
72
+ cursor.style.top = `${start.y}px`;
73
+ cursor.style.transitionDuration = '0s';
74
+ root.appendChild(cursor);
75
+ cursor.getBoundingClientRect(); // force reflow
76
+ }
77
+ cursor.style.transitionDuration = `${duration}ms`;
78
+ cursor.style.left = `${end.x - 12}px`; // half width offset
79
+ cursor.style.top = `${end.y - 12}px`; // half height offset
80
+ cursor.classList.add('rippling');
81
+ const done = new Promise((resolve) => {
82
+ const finish = () => {
83
+ cursor.removeEventListener('transitionend', finish);
84
+ cursor.classList.remove('rippling');
130
85
  resolve();
131
86
  };
132
- mouse.addEventListener('transitionend', transitionEndHandler);
133
- // Fallback in case transitionend doesn't fire
134
- setTimeout(resolve, duration + 50);
87
+ cursor.addEventListener('transitionend', finish);
88
+ setTimeout(finish, duration + 50);
135
89
  });
136
- }, [
137
- InteractionVisualizer.MESSAGE_CONTAINER_ID,
138
- InteractionVisualizer.VIRTUAL_MOUSE_ID,
139
- this.currentMousePosition.x,
140
- this.currentMousePosition.y,
141
- targetX,
142
- targetY,
143
- durationMillis,
144
- ]);
145
- // Update current mouse position
146
- this.currentMousePosition = { x: targetX, y: targetY };
90
+ return done;
91
+ }, [id, this.cursorPos, target, duration, InteractionVisualizer.SVG_MOUSE]);
92
+ this.cursorPos = target;
147
93
  }
148
- /**
149
- * Creates a message adjacent to the element, inside a shadow root to avoid CSS collisions.
150
- */
151
- async displayMessageNearElement(element, message) {
152
- await element.evaluate((targetElement, [messageContainerId, message]) => {
153
- // 1) Find container (should already exist from moveVirtualMouse)
154
- const container = document.getElementById(messageContainerId);
155
- if (!container || !container.shadowRoot) {
156
- return;
157
- }
158
- const shadow = container.shadowRoot;
159
- // 2) Insert message
160
- const messageElement = document.createElement('div');
161
- messageElement.className = 'donobu-message';
162
- messageElement.textContent = message;
163
- // Temporarily place off-screen to measure size
164
- messageElement.style.left = '-9999px';
165
- messageElement.style.top = '-9999px';
166
- shadow.appendChild(messageElement);
167
- // 3) Compute final position
168
- const rect = targetElement.getBoundingClientRect();
169
- let x = rect.left + window.scrollX;
170
- let y = rect.bottom + window.scrollY + 10;
171
- messageElement.style.left = `${x}px`;
172
- messageElement.style.top = `${y}px`;
173
- // Adjust if it goes off-screen to the right
174
- const msgRect = messageElement.getBoundingClientRect();
175
- const overflowRight = msgRect.right - window.innerWidth;
176
- if (overflowRight > 0) {
177
- messageElement.style.left = `${x - overflowRight - 10}px`;
178
- }
179
- // Adjust if it goes off-screen to the left
180
- if (msgRect.left < 0) {
181
- messageElement.style.left = `${window.scrollX + 10}px`;
94
+ async showMessage(page, target, text, duration) {
95
+ const id = InteractionVisualizer.CONTAINER_ID;
96
+ await page.evaluate(([containerId, target, text, duration]) => {
97
+ containerId = containerId;
98
+ target = target;
99
+ text = text;
100
+ duration = duration;
101
+ const root = document.getElementById(containerId)
102
+ .shadowRoot;
103
+ const msg = document.createElement('div');
104
+ msg.className = 'donobu-message';
105
+ msg.textContent = text;
106
+ root.appendChild(msg);
107
+ /* ── compute final coordinates ────────────────────────────────── */
108
+ const { width, height } = msg.getBoundingClientRect();
109
+ let x = target.x - width / 2;
110
+ let y = target.y + 24; // default - below cursor
111
+ /* clamp horizontally inside viewport */
112
+ x = Math.max(8, Math.min(window.innerWidth - width - 8, x));
113
+ /* if it overflows bottom, flip above the element */
114
+ if (y + height + 8 > window.innerHeight) {
115
+ y = target.y - height - 24;
182
116
  }
183
- }, [InteractionVisualizer.MESSAGE_CONTAINER_ID, message]);
184
- }
185
- /**
186
- * Ensures routes are registered for the given browser context.
187
- * @param browserContext - The browser context to register routes on.
188
- */
189
- static async ensureRoutesRegistered(browserContext) {
190
- if (this.registeredContexts.has(browserContext)) {
191
- return;
192
- }
193
- try {
194
- await browserContext.route('**/donobu-virtual-mouse.svg', async (route) => {
195
- await route.fulfill({
196
- status: 200,
197
- contentType: 'image/svg+xml',
198
- body: InteractionVisualizer.VIRTUAL_MOUSE_SVG,
199
- });
200
- });
201
- await browserContext.route('**/donobu.css', async (route) => {
202
- await route.fulfill({
203
- status: 200,
204
- contentType: 'text/css',
205
- body: InteractionVisualizer.CSS,
206
- });
207
- });
208
- this.registeredContexts.add(browserContext);
209
- Logger_1.appLogger.debug('Routes registered for InteractionVisualizer');
210
- }
211
- catch (e) {
212
- Logger_1.appLogger.error('Failed to register routes for InteractionVisualizer', e);
213
- throw e;
214
- }
117
+ /* if still off-screen at the top, clamp to 8 px margin */
118
+ if (y < 8)
119
+ y = 8;
120
+ msg.style.left = `${x}px`;
121
+ msg.style.top = `${y}px`;
122
+ /* auto-remove after the requested duration */
123
+ setTimeout(() => msg.remove(), duration);
124
+ }, [id, target, text, duration]);
215
125
  }
216
126
  }
217
127
  exports.InteractionVisualizer = InteractionVisualizer;
218
- InteractionVisualizer.VIRTUAL_MOUSE_SVG = MiscUtils_1.MiscUtils.getResourceFileAsString('donobu-virtual-mouse.svg');
219
- InteractionVisualizer.CSS = MiscUtils_1.MiscUtils.getResourceFileAsString('donobu.css');
220
- InteractionVisualizer.MESSAGE_CONTAINER_ID = 'donobu-message-shadow-container';
221
- InteractionVisualizer.VIRTUAL_MOUSE_ID = 'virtual-mouse';
222
- InteractionVisualizer.registeredContexts = new WeakSet();
128
+ /* ------------------------------------------------------------------ */
129
+ /* Constants */
130
+ /* ------------------------------------------------------------------ */
131
+ InteractionVisualizer.SVG_MOUSE = `
132
+ <svg xmlns="http://www.w3.org/2000/svg"
133
+ width="32"
134
+ height="32"
135
+ viewBox="0 0 24 24"
136
+ fill="oklch(13.09% 0.005 165.18)"
137
+ stroke="oklch(83.04% 0.1698 83.99)"
138
+ stroke-width="2"
139
+ stroke-linecap="round"
140
+ stroke-linejoin="round">
141
+ <path d="M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z" />
142
+ </svg>`;
143
+ InteractionVisualizer.CSS = `
144
+ .donobu-message{position:absolute;z-index:2147483647;background:#000;color:#fff;padding:8px 10px;border-radius:5px;font:12px/1 'Source Sans Pro','Helvetica Neue',Helvetica,Arial,sans-serif;max-width:300px;white-space:pre-wrap;box-shadow:2px 2px 10px rgba(0,0,0,.2);pointer-events:none}
145
+ .donobu-virtual-mouse{width:24px;height:24px;position:absolute;z-index:2147483646;filter:drop-shadow(1px 1px 1px rgba(0,0,0,.5));transition:left .15s ease-in-out,top .15s ease-in-out,transform .15s ease-in-out}
146
+ .donobu-virtual-mouse svg{width:100%;height:100%;display:block}
147
+ .donobu-virtual-mouse.rippling::after{content:"";position:absolute;left:50%;top:50%;width:24px;height:24px;border-radius:50%;background:oklch(83.04% 0.1698 83.99);transform:translate(-50%,-50%) scale(.5);opacity:.4;animation:ripple-pop .6s ease-out forwards}
148
+ @keyframes ripple-pop{40%{transform:translate(-50%,-50%) scale(1);opacity:.5}100%{transform:translate(-50%,-50%) scale(2);opacity:0}}
149
+ `;
150
+ InteractionVisualizer.CONTAINER_ID = 'donobu-iv-overlay';
223
151
  //# sourceMappingURL=InteractionVisualizer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InteractionVisualizer.js","sourceRoot":"","sources":["../../../src/managers/InteractionVisualizer.ts"],"names":[],"mappings":";;;AACA,4CAA4C;AAC5C,8DAA2D;AAC3D,kDAA+C;AAE/C;;GAEG;AACH,MAAa,qBAAqB;IAWhC;;;OAGG;IACH,YAAmC,4BAAoC;QAApC,iCAA4B,GAA5B,4BAA4B,CAAQ;QAN/D,yBAAoB,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAM4B,CAAC;IAE3E;;;OAGG;IACI,KAAK,CAAC,OAAO,CAClB,IAAU,EACV,OAAgB,EAChB,OAAgB,EAChB,iBAAyB,IAAI,CAAC,4BAA4B;QAE1D,IAAI,CAAC,cAAc,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,MAAM,qBAAqB,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAEnE,IAAI,CAAC;YACH,0CAA0C;YAC1C,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC;YAEhD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,kBAAS,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;YAED,oDAAoD;YACpD,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAoB,EAAE,CAAC;YACrC,uDAAuD;YACvD,QAAQ,CAAC,IAAI,CACX,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,CAAC,CAAC,CAClE,CAAC;YAEF,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC/B,sCAAsC;gBACtC,MAAM,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACvD,4CAA4C;gBAC5C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;YACrD,CAAC;YAED,gEAAgE;YAChE,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC5B,8DAA8D;YAC9D,MAAM,OAAO,CAAC,QAAQ,CACpB,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE;gBAC1B,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;gBAC9D,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC;oBACpC,IAAI,MAAM,EAAE,CAAC;wBACX,kDAAkD;wBAClD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CACzB,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAC3C,CAAC;wBACF,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;oBAC1C,CAAC;gBACH,CAAC;YACH,CAAC,EACD,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,CAC7C,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,iCAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzC,MAAM,CAAC,CAAC;YACV,CAAC;iBAAM,CAAC;gBACN,kBAAS,CAAC,KAAK,CAAC,sCAAsC,EAAE,CAAC,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAC5B,IAAU,EACV,OAAe,EACf,OAAe,EACf,cAAsB;QAEtB,MAAM,qBAAqB,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACnE,MAAM,IAAI,CAAC,QAAQ,CACjB,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE;YAC/D,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBACnC,kCAAkC;gBAClC,IAAI,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,WAAqB,CAAC,CAAC;gBAC/D,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;oBAC1C,SAAS,CAAC,EAAE,GAAG,WAAqB,CAAC;oBACrC,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;oBACtC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;oBAC1B,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;oBAC3B,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;oBAC/B,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;oBAChC,SAAS,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;oBACvC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;oBAErC,MAAM,UAAU,GAAG,SAAS,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;oBAE5D,eAAe;oBACf,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;oBAC/C,OAAO,CAAC,GAAG,GAAG,YAAY,CAAC;oBAC3B,OAAO,CAAC,IAAI,GAAG,aAAa,CAAC;oBAC7B,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAClC,CAAC;gBAED,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC;gBACpC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,EAAE,CAAC;oBACV,OAAO;gBACT,CAAC;gBAED,uBAAuB;gBACvB,IAAI,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,OAAiB,CAAC,CAAC;gBACrD,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;oBACtC,KAAK,CAAC,EAAE,GAAG,OAAiB,CAAC;oBAC7B,KAAK,CAAC,SAAS,GAAG,sBAAsB,CAAC;oBACzC,iCAAiC;oBACjC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC;oBACjC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,MAAM,IAAI,CAAC;oBAChC,KAAK,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC,yBAAyB;oBAChE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;oBAE1B,sEAAsE;oBACtE,KAAK,KAAK,CAAC,WAAW,CAAC;gBACzB,CAAC;gBAED,oBAAoB;gBACpB,KAAK,CAAC,KAAK,CAAC,kBAAkB,GAAG,GAAG,QAAQ,IAAI,CAAC;gBACjD,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,GAAI,IAAe,GAAG,EAAE,IAAI,CAAC,CAAC,eAAe;gBAChE,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,GAAI,IAAe,GAAG,CAAC,IAAI,CAAC,CAAC,iBAAiB;gBAEhE,2DAA2D;gBAC3D,MAAM,oBAAoB,GAAG,GAAG,EAAE;oBAChC,KAAK,EAAE,mBAAmB,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;oBAElE,IAAI,KAAK,EAAE,CAAC;wBACV,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe;wBACnD,KAAK,KAAK,CAAC,WAAW,CAAC,CAAC,eAAe;wBACvC,UAAU,CAAC,GAAG,EAAE;4BACd,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,qBAAqB;wBACzD,CAAC,EAAE,EAAE,CAAC,CAAC;oBACT,CAAC;oBACD,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC;gBAEF,KAAK,CAAC,gBAAgB,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;gBAE9D,8CAA8C;gBAC9C,UAAU,CAAC,OAAO,EAAG,QAAmB,GAAG,EAAE,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;QACL,CAAC,EACD;YACE,qBAAqB,CAAC,oBAAoB;YAC1C,qBAAqB,CAAC,gBAAgB;YACtC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAC3B,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAC3B,OAAO;YACP,OAAO;YACP,cAAc;SACf,CACF,CAAC;QAEF,gCAAgC;QAChC,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;IACzD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,yBAAyB,CACrC,OAAgB,EAChB,OAAe;QAEf,MAAM,OAAO,CAAC,QAAQ,CACpB,CAAC,aAAa,EAAE,CAAC,kBAAkB,EAAE,OAAO,CAAC,EAAE,EAAE;YAC/C,iEAAiE;YACjE,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;YAC9D,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;gBACxC,OAAO;YACT,CAAC;YAED,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC;YAEpC,oBAAoB;YACpB,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACrD,cAAc,CAAC,SAAS,GAAG,gBAAgB,CAAC;YAC5C,cAAc,CAAC,WAAW,GAAG,OAAO,CAAC;YAErC,+CAA+C;YAC/C,cAAc,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;YACtC,cAAc,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC;YAErC,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YAEnC,4BAA4B;YAC5B,MAAM,IAAI,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC;YACnD,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC;YACnC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;YAE1C,cAAc,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACrC,cAAc,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC;YAEpC,4CAA4C;YAC5C,MAAM,OAAO,GAAG,cAAc,CAAC,qBAAqB,EAAE,CAAC;YACvD,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;YACxD,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBACtB,cAAc,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,aAAa,GAAG,EAAE,IAAI,CAAC;YAC5D,CAAC;YACD,2CAA2C;YAC3C,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBACrB,cAAc,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,MAAM,CAAC,OAAO,GAAG,EAAE,IAAI,CAAC;YACzD,CAAC;QACH,CAAC,EACD,CAAC,qBAAqB,CAAC,oBAAoB,EAAE,OAAO,CAAC,CACtD,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,KAAK,CAAC,sBAAsB,CACzC,cAA8B;QAE9B,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YAChD,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,cAAc,CAAC,KAAK,CACxB,6BAA6B,EAC7B,KAAK,EAAE,KAAK,EAAE,EAAE;gBACd,MAAM,KAAK,CAAC,OAAO,CAAC;oBAClB,MAAM,EAAE,GAAG;oBACX,WAAW,EAAE,eAAe;oBAC5B,IAAI,EAAE,qBAAqB,CAAC,iBAAiB;iBAC9C,CAAC,CAAC;YACL,CAAC,CACF,CAAC;YAEF,MAAM,cAAc,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBAC1D,MAAM,KAAK,CAAC,OAAO,CAAC;oBAClB,MAAM,EAAE,GAAG;oBACX,WAAW,EAAE,UAAU;oBACvB,IAAI,EAAE,qBAAqB,CAAC,GAAG;iBAChC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5C,kBAAS,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,kBAAS,CAAC,KAAK,CAAC,qDAAqD,EAAE,CAAC,CAAC,CAAC;YAC1E,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;;AA/QH,sDAgRC;AA/QyB,uCAAiB,GAAG,qBAAS,CAAC,uBAAuB,CAC3E,0BAA0B,CAC3B,AAFwC,CAEvC;AACsB,yBAAG,GAAG,qBAAS,CAAC,uBAAuB,CAAC,YAAY,CAAC,AAAlD,CAAmD;AACtD,0CAAoB,GAC1C,iCAAiC,AADS,CACR;AACZ,sCAAgB,GAAG,eAAe,AAAlB,CAAmB;AACnC,wCAAkB,GAAG,IAAI,OAAO,EAAkB,AAAhC,CAAiC"}
1
+ {"version":3,"file":"InteractionVisualizer.js","sourceRoot":"","sources":["../../../src/managers/InteractionVisualizer.ts"],"names":[],"mappings":"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"}
@@ -141,7 +141,6 @@ export declare class PageInspector {
141
141
  * const inspector = new PageInspector();
142
142
  * await inspector.attributeInteractableElements(page);
143
143
  * await inspector.annotateInteractableElements(page);
144
- * // Visible numbered annotations now appear over all interactable elements
145
144
  */
146
145
  annotateInteractableElements(page: Page): Promise<void>;
147
146
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"PageInspector.d.ts","sourceRoot":"","sources":["../../../src/managers/PageInspector.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,IAAI,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAMpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,qBAAa,aAAa;aAYN,4BAA4B,EAAE,MAAM;aACpC,+BAA+B,EAAE,MAAM;IAZzD;;;;;OAKG;IACH,gBAAuB,WAAW,SAEhC;gBAGgB,4BAA4B,GAAE,MAAmC,EACjE,+BAA+B,GAAE,MAAiC;IAGpF;;;;;;;;;;;;;;;;;;;OAmBG;IACU,6BAA6B,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAoErE;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACU,iCAAiC,CAC5C,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,mBAAmB,EAAE,CAAC;IA4DjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACU,4BAA4B,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAmJpE;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACU,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB/D;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACU,+BAA+B,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBvE;;;;OAIG;WACW,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAkBjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAgVzC,OAAO,CAAC,MAAM,CAAC,WAAW;CAQ3B"}
1
+ {"version":3,"file":"PageInspector.d.ts","sourceRoot":"","sources":["../../../src/managers/PageInspector.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,IAAI,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAMpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,qBAAa,aAAa;aAYN,4BAA4B,EAAE,MAAM;aACpC,+BAA+B,EAAE,MAAM;IAZzD;;;;;OAKG;IACH,gBAAuB,WAAW,SAEhC;gBAGgB,4BAA4B,GAAE,MAAmC,EACjE,+BAA+B,GAAE,MAAiC;IAGpF;;;;;;;;;;;;;;;;;;;OAmBG;IACU,6BAA6B,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAoErE;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACU,iCAAiC,CAC5C,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,mBAAmB,EAAE,CAAC;IA4DjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACU,4BAA4B,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAuJpE;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACU,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB/D;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACU,+BAA+B,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCvE;;;;OAIG;WACW,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAkBjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAkUzC,OAAO,CAAC,MAAM,CAAC,WAAW;CAQ3B"}
@@ -235,7 +235,6 @@ class PageInspector {
235
235
  * const inspector = new PageInspector();
236
236
  * await inspector.attributeInteractableElements(page);
237
237
  * await inspector.annotateInteractableElements(page);
238
- * // Visible numbered annotations now appear over all interactable elements
239
238
  */
240
239
  async annotateInteractableElements(page) {
241
240
  try {
@@ -252,8 +251,11 @@ class PageInspector {
252
251
  container.id = 'annotation-shadow-container';
253
252
  // Position container so child elements can be absolutely placed
254
253
  Object.assign(container.style, {
255
- position: 'fixed', // anchor to viewport
256
- inset: '0', // stretch across it
254
+ position: 'absolute',
255
+ top: '0',
256
+ left: '0',
257
+ width: '100%',
258
+ height: '100%',
257
259
  pointerEvents: 'none', // Let clicks pass through
258
260
  zIndex: '2147483647', // win every z-index fight
259
261
  });
@@ -275,29 +277,29 @@ class PageInspector {
275
277
  // Add a <style> element inside the shadow root to reset and define annotation styles
276
278
  const style = document.createElement('style');
277
279
  style.textContent = `
278
- :host {
279
- all: initial; /* Reset styles in shadow root */
280
- }
281
- .annotation {
282
- position: absolute;
283
- z-index: 2147483647;
284
- background-color: black;
285
- color: white;
286
- width: 40px;
287
- height: 40px;
288
- border-radius: 50%;
289
- display: flex;
290
- align-items: center;
291
- justify-content: center;
292
- font-size: 14px;
293
- font-weight: bold;
294
- line-height: 20px;
295
- text-align: center;
296
- box-shadow: 0px 2px 4px rgba(0,0,0,0.2);
297
- border: 4px solid #FF4136;
298
- pointer-events: none;
299
- }
300
- `;
280
+ :host {
281
+ all: initial; /* Reset styles in shadow root */
282
+ }
283
+ .annotation {
284
+ position: absolute;
285
+ z-index: 2147483647;
286
+ background-color: black;
287
+ color: white;
288
+ width: 40px;
289
+ height: 40px;
290
+ border-radius: 50%;
291
+ display: flex;
292
+ align-items: center;
293
+ justify-content: center;
294
+ font-size: 14px;
295
+ font-weight: bold;
296
+ line-height: 20px;
297
+ text-align: center;
298
+ box-shadow: 0px 2px 4px rgba(0,0,0,0.2);
299
+ border: 4px solid #FF4136;
300
+ pointer-events: none;
301
+ }
302
+ `;
301
303
  shadowRoot.appendChild(style);
302
304
  }
303
305
  // Retrieve the shadow root to place annotation elements
@@ -318,6 +320,7 @@ class PageInspector {
318
320
  const positionAnnotation = (annotation, element) => {
319
321
  const rect = element.getBoundingClientRect();
320
322
  // Center the annotation on the element, adjusting for its size
323
+ // Since container is absolute, we need to account for scroll position
321
324
  const x = rect.left + rect.width / 2 - 20 + window.scrollX;
322
325
  const y = rect.top + rect.height / 2 - 20 + window.scrollY;
323
326
  annotation.style.left = `${x}px`;
@@ -437,15 +440,23 @@ class PageInspector {
437
440
  */
438
441
  async deattributeInteractableElements(page) {
439
442
  try {
440
- const frames = page
441
- .frames()
442
- .filter((frame) => PageInspector.frameFilter(frame));
443
+ const frames = page.frames().filter(PageInspector.frameFilter);
444
+ const attr = this.interactableElementAttribute;
443
445
  for (const frame of frames) {
444
- await frame.evaluate((attr) => {
445
- document.querySelectorAll(`[${attr}]`).forEach((element) => {
446
- element.removeAttribute(attr);
447
- });
448
- }, this.interactableElementAttribute);
446
+ await frame.evaluate(([a]) => {
447
+ /** Depth-first removal inside document & every shadow root */
448
+ const removeDeep = (root) => {
449
+ root
450
+ .querySelectorAll(`[${a}]`)
451
+ .forEach((el) => el.removeAttribute(a));
452
+ root.querySelectorAll('*').forEach((el) => {
453
+ const sr = el.shadowRoot;
454
+ if (sr)
455
+ removeDeep(sr);
456
+ });
457
+ };
458
+ removeDeep(document);
459
+ }, [attr]);
449
460
  }
450
461
  }
451
462
  catch (error) {
@@ -715,52 +726,42 @@ class PageInspector {
715
726
  const interactableElements = getAllInteractableElements(document)
716
727
  .concat(window.__donobu.getInteractiveElements())
717
728
  .filter((el) => !el.id || (typeof el.id === 'string' && !el.id.startsWith('donobu-')));
718
- // Use a Set to avoid duplicates
719
729
  const uniqueElements = new Set(interactableElements);
720
- // 2) Check each element for visibility + actual "interactability"
730
+ // 2) Iterate and assign numbers
721
731
  uniqueElements.forEach((element) => {
722
- if (typeof element.getBoundingClientRect !== 'function') {
723
- // Should be rare, but just in case
732
+ // Skip if this element already carries a value (e.g. assigned via <label>)
733
+ if (element.hasAttribute(interactableAttribute))
724
734
  return;
725
- }
726
735
  const rect = element.getBoundingClientRect();
727
736
  const style = window.getComputedStyle(element);
728
737
  const visible = isElementVisible(rect, style) && isElementMoreThanHalfInViewport(rect);
729
- // Check if the element is actually enabled/interactive
730
738
  const enabled = isElementEnabled(element, style);
731
- if (!visible || !enabled) {
739
+ if (!visible || !enabled)
732
740
  return;
733
- }
734
- let annotated = false;
735
- // 3) Test small set of points on the element to confirm it's truly topmost
741
+ // Check a few probe points to make sure the element is top-most
736
742
  for (const pt of getPointsToCheck(rect)) {
737
743
  let elToCheck = getDeepElementFromPoint(pt.x, pt.y);
738
- // Walk up the DOM tree from that point
739
744
  while (elToCheck) {
740
745
  if (elToCheck === element) {
741
- // Found the actual element
742
746
  element.setAttribute(interactableAttribute, offset.toString());
743
747
  offset++;
744
- annotated = true;
745
- break;
748
+ return; // this element done
746
749
  }
747
- else if (elToCheck.tagName?.toLowerCase() === 'label' &&
750
+ // Handle <label> control mapping
751
+ if (elToCheck.tagName.toLowerCase() === 'label' &&
748
752
  elToCheck.htmlFor) {
749
- // If we found a label referencing an element, also mark that
750
753
  const forId = elToCheck.htmlFor;
751
- const associatedInput = document.getElementById(forId);
752
- if (associatedInput) {
753
- associatedInput.setAttribute(interactableAttribute, offset.toString());
754
+ const control = document.getElementById(forId);
755
+ if (control &&
756
+ !control.hasAttribute(interactableAttribute) // prevent double number
757
+ ) {
758
+ control.setAttribute(interactableAttribute, offset.toString());
754
759
  offset++;
755
760
  }
756
- annotated = true;
757
- break;
761
+ return;
758
762
  }
759
763
  elToCheck = elToCheck.parentElement;
760
764
  }
761
- if (annotated) {
762
- break;
763
- }
764
765
  }
765
766
  });
766
767
  return offset;