tabwright 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (599) hide show
  1. package/LICENSE +21 -0
  2. package/bin.js +4 -0
  3. package/dist/a11y-client.js +204 -0
  4. package/dist/agent-skills/tabwright/SKILL.md +119 -0
  5. package/dist/aria-snapshot.d.ts +262 -0
  6. package/dist/aria-snapshot.d.ts.map +1 -0
  7. package/dist/aria-snapshot.js +1256 -0
  8. package/dist/aria-snapshot.js.map +1 -0
  9. package/dist/aria-snapshot.test.d.ts +2 -0
  10. package/dist/aria-snapshot.test.d.ts.map +1 -0
  11. package/dist/aria-snapshot.test.js +270 -0
  12. package/dist/aria-snapshot.test.js.map +1 -0
  13. package/dist/aria-snapshot.unit.test.d.ts +2 -0
  14. package/dist/aria-snapshot.unit.test.d.ts.map +1 -0
  15. package/dist/aria-snapshot.unit.test.js +542 -0
  16. package/dist/aria-snapshot.unit.test.js.map +1 -0
  17. package/dist/assets/cursors/screen-studio/pointer-macos-tahoe-data-url.d.ts +5 -0
  18. package/dist/assets/cursors/screen-studio/pointer-macos-tahoe-data-url.d.ts.map +1 -0
  19. package/dist/assets/cursors/screen-studio/pointer-macos-tahoe-data-url.js +5 -0
  20. package/dist/assets/cursors/screen-studio/pointer-macos-tahoe-data-url.js.map +1 -0
  21. package/dist/bippy.js +894 -0
  22. package/dist/browser-config.d.ts +13 -0
  23. package/dist/browser-config.d.ts.map +1 -0
  24. package/dist/browser-config.js +126 -0
  25. package/dist/browser-config.js.map +1 -0
  26. package/dist/browser-install.d.ts +16 -0
  27. package/dist/browser-install.d.ts.map +1 -0
  28. package/dist/browser-install.js +238 -0
  29. package/dist/browser-install.js.map +1 -0
  30. package/dist/browser-launch.d.ts +17 -0
  31. package/dist/browser-launch.d.ts.map +1 -0
  32. package/dist/browser-launch.js +44 -0
  33. package/dist/browser-launch.js.map +1 -0
  34. package/dist/builtin-capabilities.d.ts +28 -0
  35. package/dist/builtin-capabilities.d.ts.map +1 -0
  36. package/dist/builtin-capabilities.js +2673 -0
  37. package/dist/builtin-capabilities.js.map +1 -0
  38. package/dist/capability-agent-skill.d.ts +60 -0
  39. package/dist/capability-agent-skill.d.ts.map +1 -0
  40. package/dist/capability-agent-skill.js +225 -0
  41. package/dist/capability-agent-skill.js.map +1 -0
  42. package/dist/capability-auth-state.d.ts +34 -0
  43. package/dist/capability-auth-state.d.ts.map +1 -0
  44. package/dist/capability-auth-state.js +157 -0
  45. package/dist/capability-auth-state.js.map +1 -0
  46. package/dist/capability-auth.d.ts +36 -0
  47. package/dist/capability-auth.d.ts.map +1 -0
  48. package/dist/capability-auth.js +198 -0
  49. package/dist/capability-auth.js.map +1 -0
  50. package/dist/capability-cli-confirmation.test.d.ts +2 -0
  51. package/dist/capability-cli-confirmation.test.d.ts.map +1 -0
  52. package/dist/capability-cli-confirmation.test.js +79 -0
  53. package/dist/capability-cli-confirmation.test.js.map +1 -0
  54. package/dist/capability-options.d.ts +20 -0
  55. package/dist/capability-options.d.ts.map +1 -0
  56. package/dist/capability-options.js +31 -0
  57. package/dist/capability-options.js.map +1 -0
  58. package/dist/capability-options.test.d.ts +2 -0
  59. package/dist/capability-options.test.d.ts.map +1 -0
  60. package/dist/capability-options.test.js +81 -0
  61. package/dist/capability-options.test.js.map +1 -0
  62. package/dist/capability-package.d.ts +27 -0
  63. package/dist/capability-package.d.ts.map +1 -0
  64. package/dist/capability-package.js +444 -0
  65. package/dist/capability-package.js.map +1 -0
  66. package/dist/capability-package.test.d.ts +2 -0
  67. package/dist/capability-package.test.d.ts.map +1 -0
  68. package/dist/capability-package.test.js +179 -0
  69. package/dist/capability-package.test.js.map +1 -0
  70. package/dist/capability-registry.d.ts +262 -0
  71. package/dist/capability-registry.d.ts.map +1 -0
  72. package/dist/capability-registry.js +931 -0
  73. package/dist/capability-registry.js.map +1 -0
  74. package/dist/capability-registry.test.d.ts +2 -0
  75. package/dist/capability-registry.test.d.ts.map +1 -0
  76. package/dist/capability-registry.test.js +1683 -0
  77. package/dist/capability-registry.test.js.map +1 -0
  78. package/dist/capability-runner.d.ts +99 -0
  79. package/dist/capability-runner.d.ts.map +1 -0
  80. package/dist/capability-runner.js +608 -0
  81. package/dist/capability-runner.js.map +1 -0
  82. package/dist/capability-search-relevance.test.d.ts +2 -0
  83. package/dist/capability-search-relevance.test.d.ts.map +1 -0
  84. package/dist/capability-search-relevance.test.js +67 -0
  85. package/dist/capability-search-relevance.test.js.map +1 -0
  86. package/dist/capability-studio.d.ts +11 -0
  87. package/dist/capability-studio.d.ts.map +1 -0
  88. package/dist/capability-studio.js +593 -0
  89. package/dist/capability-studio.js.map +1 -0
  90. package/dist/capability-studio.test.d.ts +2 -0
  91. package/dist/capability-studio.test.d.ts.map +1 -0
  92. package/dist/capability-studio.test.js +41 -0
  93. package/dist/capability-studio.test.js.map +1 -0
  94. package/dist/cdp-log.d.ts +19 -0
  95. package/dist/cdp-log.d.ts.map +1 -0
  96. package/dist/cdp-log.js +83 -0
  97. package/dist/cdp-log.js.map +1 -0
  98. package/dist/cdp-log.test.d.ts +2 -0
  99. package/dist/cdp-log.test.d.ts.map +1 -0
  100. package/dist/cdp-log.test.js +109 -0
  101. package/dist/cdp-log.test.js.map +1 -0
  102. package/dist/cdp-relay.d.ts +19 -0
  103. package/dist/cdp-relay.d.ts.map +1 -0
  104. package/dist/cdp-relay.js +2375 -0
  105. package/dist/cdp-relay.js.map +1 -0
  106. package/dist/cdp-session.d.ts +37 -0
  107. package/dist/cdp-session.d.ts.map +1 -0
  108. package/dist/cdp-session.js +36 -0
  109. package/dist/cdp-session.js.map +1 -0
  110. package/dist/cdp-types.d.ts +65 -0
  111. package/dist/cdp-types.d.ts.map +1 -0
  112. package/dist/cdp-types.js +91 -0
  113. package/dist/cdp-types.js.map +1 -0
  114. package/dist/channel-owner-inspect.test.d.ts +2 -0
  115. package/dist/channel-owner-inspect.test.d.ts.map +1 -0
  116. package/dist/channel-owner-inspect.test.js +75 -0
  117. package/dist/channel-owner-inspect.test.js.map +1 -0
  118. package/dist/chrome-discovery.d.ts +65 -0
  119. package/dist/chrome-discovery.d.ts.map +1 -0
  120. package/dist/chrome-discovery.js +173 -0
  121. package/dist/chrome-discovery.js.map +1 -0
  122. package/dist/chrome-discovery.test.d.ts +2 -0
  123. package/dist/chrome-discovery.test.d.ts.map +1 -0
  124. package/dist/chrome-discovery.test.js +41 -0
  125. package/dist/chrome-discovery.test.js.map +1 -0
  126. package/dist/clean-html.d.ts +11 -0
  127. package/dist/clean-html.d.ts.map +1 -0
  128. package/dist/clean-html.js +106 -0
  129. package/dist/clean-html.js.map +1 -0
  130. package/dist/cli-help.test.d.ts +2 -0
  131. package/dist/cli-help.test.d.ts.map +1 -0
  132. package/dist/cli-help.test.js +98 -0
  133. package/dist/cli-help.test.js.map +1 -0
  134. package/dist/cli.d.ts +3 -0
  135. package/dist/cli.d.ts.map +1 -0
  136. package/dist/cli.js +2709 -0
  137. package/dist/cli.js.map +1 -0
  138. package/dist/cloud-client.d.ts +56 -0
  139. package/dist/cloud-client.d.ts.map +1 -0
  140. package/dist/cloud-client.js +127 -0
  141. package/dist/cloud-client.js.map +1 -0
  142. package/dist/create-logger.d.ts +9 -0
  143. package/dist/create-logger.d.ts.map +1 -0
  144. package/dist/create-logger.js +27 -0
  145. package/dist/create-logger.js.map +1 -0
  146. package/dist/debugger-api.md +458 -0
  147. package/dist/debugger-examples-types.d.ts +24 -0
  148. package/dist/debugger-examples-types.d.ts.map +1 -0
  149. package/dist/debugger-examples-types.js +2 -0
  150. package/dist/debugger-examples-types.js.map +1 -0
  151. package/dist/debugger-examples.d.ts +6 -0
  152. package/dist/debugger-examples.d.ts.map +1 -0
  153. package/dist/debugger-examples.js +53 -0
  154. package/dist/debugger-examples.js.map +1 -0
  155. package/dist/debugger.d.ts +381 -0
  156. package/dist/debugger.d.ts.map +1 -0
  157. package/dist/debugger.js +630 -0
  158. package/dist/debugger.js.map +1 -0
  159. package/dist/diff-utils.d.ts +20 -0
  160. package/dist/diff-utils.d.ts.map +1 -0
  161. package/dist/diff-utils.js +50 -0
  162. package/dist/diff-utils.js.map +1 -0
  163. package/dist/diff-utils.test.d.ts +2 -0
  164. package/dist/diff-utils.test.d.ts.map +1 -0
  165. package/dist/diff-utils.test.js +137 -0
  166. package/dist/diff-utils.test.js.map +1 -0
  167. package/dist/doctor.d.ts +44 -0
  168. package/dist/doctor.d.ts.map +1 -0
  169. package/dist/doctor.js +246 -0
  170. package/dist/doctor.js.map +1 -0
  171. package/dist/doctor.test.d.ts +2 -0
  172. package/dist/doctor.test.d.ts.map +1 -0
  173. package/dist/doctor.test.js +208 -0
  174. package/dist/doctor.test.js.map +1 -0
  175. package/dist/editor-api.md +374 -0
  176. package/dist/editor-examples.d.ts +11 -0
  177. package/dist/editor-examples.d.ts.map +1 -0
  178. package/dist/editor-examples.js +124 -0
  179. package/dist/editor-examples.js.map +1 -0
  180. package/dist/editor.d.ts +203 -0
  181. package/dist/editor.d.ts.map +1 -0
  182. package/dist/editor.js +363 -0
  183. package/dist/editor.js.map +1 -0
  184. package/dist/env-compat.d.ts +2 -0
  185. package/dist/env-compat.d.ts.map +1 -0
  186. package/dist/env-compat.js +27 -0
  187. package/dist/env-compat.js.map +1 -0
  188. package/dist/executor.d.ts +229 -0
  189. package/dist/executor.d.ts.map +1 -0
  190. package/dist/executor.js +1465 -0
  191. package/dist/executor.js.map +1 -0
  192. package/dist/executor.unit.test.d.ts +2 -0
  193. package/dist/executor.unit.test.d.ts.map +1 -0
  194. package/dist/executor.unit.test.js +143 -0
  195. package/dist/executor.unit.test.js.map +1 -0
  196. package/dist/extension/_locales/en/messages.json +278 -0
  197. package/dist/extension/_locales/zh_CN/messages.json +256 -0
  198. package/dist/extension/assets/options-CYH96Lcx.css +1349 -0
  199. package/dist/extension/background.js +3994 -0
  200. package/dist/extension/icons/SolarCursorSquareBold.png +0 -0
  201. package/dist/extension/icons/icon-black-128.png +0 -0
  202. package/dist/extension/icons/icon-black-16.png +0 -0
  203. package/dist/extension/icons/icon-black-32.png +0 -0
  204. package/dist/extension/icons/icon-black-48.png +0 -0
  205. package/dist/extension/icons/icon-gray-128.png +0 -0
  206. package/dist/extension/icons/icon-gray-16.png +0 -0
  207. package/dist/extension/icons/icon-gray-32.png +0 -0
  208. package/dist/extension/icons/icon-gray-48.png +0 -0
  209. package/dist/extension/icons/icon-green-128.png +0 -0
  210. package/dist/extension/icons/icon-green-16.png +0 -0
  211. package/dist/extension/icons/icon-green-32.png +0 -0
  212. package/dist/extension/icons/icon-green-48.png +0 -0
  213. package/dist/extension/icons/tabwright-icon-black.png +0 -0
  214. package/dist/extension/icons/tabwright-icon-gray-disabled.png +0 -0
  215. package/dist/extension/icons/tabwright-icon-gray-disabled.svg +1 -0
  216. package/dist/extension/manifest.json +54 -0
  217. package/dist/extension/options.js +16145 -0
  218. package/dist/extension/rrweb-recorder.js +12952 -0
  219. package/dist/extension/src/options.html +165 -0
  220. package/dist/extension/src/prism-bash.min.js +1 -0
  221. package/dist/extension/src/prism.min.js +1 -0
  222. package/dist/extension/src/welcome.html +396 -0
  223. package/dist/extension-connection.test.d.ts +2 -0
  224. package/dist/extension-connection.test.d.ts.map +1 -0
  225. package/dist/extension-connection.test.js +708 -0
  226. package/dist/extension-connection.test.js.map +1 -0
  227. package/dist/extension-icon-warning.test.d.ts +2 -0
  228. package/dist/extension-icon-warning.test.d.ts.map +1 -0
  229. package/dist/extension-icon-warning.test.js +33 -0
  230. package/dist/extension-icon-warning.test.js.map +1 -0
  231. package/dist/ghost-browser.d.ts +62 -0
  232. package/dist/ghost-browser.d.ts.map +1 -0
  233. package/dist/ghost-browser.js +107 -0
  234. package/dist/ghost-browser.js.map +1 -0
  235. package/dist/ghost-cursor-client.js +374 -0
  236. package/dist/ghost-cursor-controller.d.ts +46 -0
  237. package/dist/ghost-cursor-controller.d.ts.map +1 -0
  238. package/dist/ghost-cursor-controller.js +98 -0
  239. package/dist/ghost-cursor-controller.js.map +1 -0
  240. package/dist/ghost-cursor.d.ts +27 -0
  241. package/dist/ghost-cursor.d.ts.map +1 -0
  242. package/dist/ghost-cursor.js +79 -0
  243. package/dist/ghost-cursor.js.map +1 -0
  244. package/dist/htmlrewrite.d.ts +8 -0
  245. package/dist/htmlrewrite.d.ts.map +1 -0
  246. package/dist/htmlrewrite.js +339 -0
  247. package/dist/htmlrewrite.js.map +1 -0
  248. package/dist/htmlrewrite.test.d.ts +2 -0
  249. package/dist/htmlrewrite.test.d.ts.map +1 -0
  250. package/dist/htmlrewrite.test.js +7975 -0
  251. package/dist/htmlrewrite.test.js.map +1 -0
  252. package/dist/index.d.ts +20 -0
  253. package/dist/index.d.ts.map +1 -0
  254. package/dist/index.js +11 -0
  255. package/dist/index.js.map +1 -0
  256. package/dist/kill-port.d.ts +29 -0
  257. package/dist/kill-port.d.ts.map +1 -0
  258. package/dist/kill-port.js +190 -0
  259. package/dist/kill-port.js.map +1 -0
  260. package/dist/kitty-graphics.d.ts +22 -0
  261. package/dist/kitty-graphics.d.ts.map +1 -0
  262. package/dist/kitty-graphics.js +71 -0
  263. package/dist/kitty-graphics.js.map +1 -0
  264. package/dist/kitty-graphics.test.d.ts +2 -0
  265. package/dist/kitty-graphics.test.d.ts.map +1 -0
  266. package/dist/kitty-graphics.test.js +125 -0
  267. package/dist/kitty-graphics.test.js.map +1 -0
  268. package/dist/locator-selector.test.d.ts +2 -0
  269. package/dist/locator-selector.test.d.ts.map +1 -0
  270. package/dist/locator-selector.test.js +98 -0
  271. package/dist/locator-selector.test.js.map +1 -0
  272. package/dist/mcp-client.d.ts +20 -0
  273. package/dist/mcp-client.d.ts.map +1 -0
  274. package/dist/mcp-client.js +56 -0
  275. package/dist/mcp-client.js.map +1 -0
  276. package/dist/mcp.d.ts +6 -0
  277. package/dist/mcp.d.ts.map +1 -0
  278. package/dist/mcp.js +511 -0
  279. package/dist/mcp.js.map +1 -0
  280. package/dist/on-mouse-action.test.d.ts +2 -0
  281. package/dist/on-mouse-action.test.d.ts.map +1 -0
  282. package/dist/on-mouse-action.test.js +180 -0
  283. package/dist/on-mouse-action.test.js.map +1 -0
  284. package/dist/options-page.test.d.ts +2 -0
  285. package/dist/options-page.test.d.ts.map +1 -0
  286. package/dist/options-page.test.js +773 -0
  287. package/dist/options-page.test.js.map +1 -0
  288. package/dist/package-paths.d.ts +4 -0
  289. package/dist/package-paths.d.ts.map +1 -0
  290. package/dist/package-paths.js +30 -0
  291. package/dist/package-paths.js.map +1 -0
  292. package/dist/page-markdown.d.ts +40 -0
  293. package/dist/page-markdown.d.ts.map +1 -0
  294. package/dist/page-markdown.js +181 -0
  295. package/dist/page-markdown.js.map +1 -0
  296. package/dist/performance-examples.d.ts +5 -0
  297. package/dist/performance-examples.d.ts.map +1 -0
  298. package/dist/performance-examples.js +112 -0
  299. package/dist/performance-examples.js.map +1 -0
  300. package/dist/performance-profiling.md +417 -0
  301. package/dist/playwright-import.d.ts +19 -0
  302. package/dist/playwright-import.d.ts.map +1 -0
  303. package/dist/playwright-import.js +40 -0
  304. package/dist/playwright-import.js.map +1 -0
  305. package/dist/popup-relocation.test.d.ts +7 -0
  306. package/dist/popup-relocation.test.d.ts.map +1 -0
  307. package/dist/popup-relocation.test.js +139 -0
  308. package/dist/popup-relocation.test.js.map +1 -0
  309. package/dist/product-paths.d.ts +9 -0
  310. package/dist/product-paths.d.ts.map +1 -0
  311. package/dist/product-paths.js +24 -0
  312. package/dist/product-paths.js.map +1 -0
  313. package/dist/product-paths.test.d.ts +2 -0
  314. package/dist/product-paths.test.d.ts.map +1 -0
  315. package/dist/product-paths.test.js +39 -0
  316. package/dist/product-paths.test.js.map +1 -0
  317. package/dist/prompt.md +1004 -0
  318. package/dist/protocol.d.ts +248 -0
  319. package/dist/protocol.d.ts.map +1 -0
  320. package/dist/protocol.js +59 -0
  321. package/dist/protocol.js.map +1 -0
  322. package/dist/protocol.test.d.ts +2 -0
  323. package/dist/protocol.test.d.ts.map +1 -0
  324. package/dist/protocol.test.js +31 -0
  325. package/dist/protocol.test.js.map +1 -0
  326. package/dist/react-source.d.ts +57 -0
  327. package/dist/react-source.d.ts.map +1 -0
  328. package/dist/react-source.js +254 -0
  329. package/dist/react-source.js.map +1 -0
  330. package/dist/readability.js +1674 -0
  331. package/dist/relay-client.d.ts +104 -0
  332. package/dist/relay-client.d.ts.map +1 -0
  333. package/dist/relay-client.js +426 -0
  334. package/dist/relay-client.js.map +1 -0
  335. package/dist/relay-client.test.d.ts +2 -0
  336. package/dist/relay-client.test.d.ts.map +1 -0
  337. package/dist/relay-client.test.js +305 -0
  338. package/dist/relay-client.test.js.map +1 -0
  339. package/dist/relay-core.test.d.ts +2 -0
  340. package/dist/relay-core.test.d.ts.map +1 -0
  341. package/dist/relay-core.test.js +1427 -0
  342. package/dist/relay-core.test.js.map +1 -0
  343. package/dist/relay-navigation.test.d.ts +2 -0
  344. package/dist/relay-navigation.test.d.ts.map +1 -0
  345. package/dist/relay-navigation.test.js +661 -0
  346. package/dist/relay-navigation.test.js.map +1 -0
  347. package/dist/relay-session.test.d.ts +2 -0
  348. package/dist/relay-session.test.d.ts.map +1 -0
  349. package/dist/relay-session.test.js +1121 -0
  350. package/dist/relay-session.test.js.map +1 -0
  351. package/dist/relay-state.d.ts +178 -0
  352. package/dist/relay-state.d.ts.map +1 -0
  353. package/dist/relay-state.js +346 -0
  354. package/dist/relay-state.js.map +1 -0
  355. package/dist/relay-state.test.d.ts +2 -0
  356. package/dist/relay-state.test.d.ts.map +1 -0
  357. package/dist/relay-state.test.js +594 -0
  358. package/dist/relay-state.test.js.map +1 -0
  359. package/dist/replay-ai-index.d.ts +99 -0
  360. package/dist/replay-ai-index.d.ts.map +1 -0
  361. package/dist/replay-ai-index.js +677 -0
  362. package/dist/replay-ai-index.js.map +1 -0
  363. package/dist/replay-ai-index.test.d.ts +2 -0
  364. package/dist/replay-ai-index.test.d.ts.map +1 -0
  365. package/dist/replay-ai-index.test.js +255 -0
  366. package/dist/replay-ai-index.test.js.map +1 -0
  367. package/dist/replay-cli.test.d.ts +2 -0
  368. package/dist/replay-cli.test.d.ts.map +1 -0
  369. package/dist/replay-cli.test.js +275 -0
  370. package/dist/replay-cli.test.js.map +1 -0
  371. package/dist/replay-eval.d.ts +44 -0
  372. package/dist/replay-eval.d.ts.map +1 -0
  373. package/dist/replay-eval.js +902 -0
  374. package/dist/replay-eval.js.map +1 -0
  375. package/dist/replay-handoff.d.ts +29 -0
  376. package/dist/replay-handoff.d.ts.map +1 -0
  377. package/dist/replay-handoff.js +83 -0
  378. package/dist/replay-handoff.js.map +1 -0
  379. package/dist/replay-handoff.test.d.ts +2 -0
  380. package/dist/replay-handoff.test.d.ts.map +1 -0
  381. package/dist/replay-handoff.test.js +123 -0
  382. package/dist/replay-handoff.test.js.map +1 -0
  383. package/dist/replay-workflow-compiler.d.ts +44 -0
  384. package/dist/replay-workflow-compiler.d.ts.map +1 -0
  385. package/dist/replay-workflow-compiler.js +601 -0
  386. package/dist/replay-workflow-compiler.js.map +1 -0
  387. package/dist/replay-workflow-compiler.test.d.ts +2 -0
  388. package/dist/replay-workflow-compiler.test.d.ts.map +1 -0
  389. package/dist/replay-workflow-compiler.test.js +223 -0
  390. package/dist/replay-workflow-compiler.test.js.map +1 -0
  391. package/dist/rrweb-recording-relay.d.ts +56 -0
  392. package/dist/rrweb-recording-relay.d.ts.map +1 -0
  393. package/dist/rrweb-recording-relay.js +299 -0
  394. package/dist/rrweb-recording-relay.js.map +1 -0
  395. package/dist/rrweb-recording-relay.test.d.ts +2 -0
  396. package/dist/rrweb-recording-relay.test.d.ts.map +1 -0
  397. package/dist/rrweb-recording-relay.test.js +85 -0
  398. package/dist/rrweb-recording-relay.test.js.map +1 -0
  399. package/dist/rrweb-recording.d.ts +104 -0
  400. package/dist/rrweb-recording.d.ts.map +1 -0
  401. package/dist/rrweb-recording.js +180 -0
  402. package/dist/rrweb-recording.js.map +1 -0
  403. package/dist/scoped-fs.d.ts +95 -0
  404. package/dist/scoped-fs.d.ts.map +1 -0
  405. package/dist/scoped-fs.js +358 -0
  406. package/dist/scoped-fs.js.map +1 -0
  407. package/dist/scoped-fs.test.d.ts +5 -0
  408. package/dist/scoped-fs.test.d.ts.map +1 -0
  409. package/dist/scoped-fs.test.js +73 -0
  410. package/dist/scoped-fs.test.js.map +1 -0
  411. package/dist/selector-generator.js +7378 -0
  412. package/dist/skill-stub.test.d.ts +2 -0
  413. package/dist/skill-stub.test.d.ts.map +1 -0
  414. package/dist/skill-stub.test.js +22 -0
  415. package/dist/skill-stub.test.js.map +1 -0
  416. package/dist/snapshot-tools.test.d.ts +2 -0
  417. package/dist/snapshot-tools.test.d.ts.map +1 -0
  418. package/dist/snapshot-tools.test.js +856 -0
  419. package/dist/snapshot-tools.test.js.map +1 -0
  420. package/dist/start-relay-server.d.ts +6 -0
  421. package/dist/start-relay-server.d.ts.map +1 -0
  422. package/dist/start-relay-server.js +57 -0
  423. package/dist/start-relay-server.js.map +1 -0
  424. package/dist/styles-api.md +124 -0
  425. package/dist/styles-examples.d.ts +8 -0
  426. package/dist/styles-examples.d.ts.map +1 -0
  427. package/dist/styles-examples.js +64 -0
  428. package/dist/styles-examples.js.map +1 -0
  429. package/dist/styles.d.ts +27 -0
  430. package/dist/styles.d.ts.map +1 -0
  431. package/dist/styles.js +231 -0
  432. package/dist/styles.js.map +1 -0
  433. package/dist/tabwright-agent-skill.d.ts +30 -0
  434. package/dist/tabwright-agent-skill.d.ts.map +1 -0
  435. package/dist/tabwright-agent-skill.js +74 -0
  436. package/dist/tabwright-agent-skill.js.map +1 -0
  437. package/dist/tabwright-agent-skill.test.d.ts +2 -0
  438. package/dist/tabwright-agent-skill.test.d.ts.map +1 -0
  439. package/dist/tabwright-agent-skill.test.js +51 -0
  440. package/dist/tabwright-agent-skill.test.js.map +1 -0
  441. package/dist/test-declarations.d.ts +13 -0
  442. package/dist/test-declarations.d.ts.map +1 -0
  443. package/dist/test-declarations.js +2 -0
  444. package/dist/test-declarations.js.map +1 -0
  445. package/dist/test-utils.d.ts +69 -0
  446. package/dist/test-utils.d.ts.map +1 -0
  447. package/dist/test-utils.js +448 -0
  448. package/dist/test-utils.js.map +1 -0
  449. package/dist/test-utils.test.d.ts +2 -0
  450. package/dist/test-utils.test.d.ts.map +1 -0
  451. package/dist/test-utils.test.js +55 -0
  452. package/dist/test-utils.test.js.map +1 -0
  453. package/dist/utils.d.ts +26 -0
  454. package/dist/utils.d.ts.map +1 -0
  455. package/dist/utils.js +60 -0
  456. package/dist/utils.js.map +1 -0
  457. package/dist/wait-for-page-load.d.ts +16 -0
  458. package/dist/wait-for-page-load.d.ts.map +1 -0
  459. package/dist/wait-for-page-load.js +146 -0
  460. package/dist/wait-for-page-load.js.map +1 -0
  461. package/dist/workflow-capability.d.ts +72 -0
  462. package/dist/workflow-capability.d.ts.map +1 -0
  463. package/dist/workflow-capability.js +316 -0
  464. package/dist/workflow-capability.js.map +1 -0
  465. package/dist/workflow-script-flow.test.d.ts +2 -0
  466. package/dist/workflow-script-flow.test.d.ts.map +1 -0
  467. package/dist/workflow-script-flow.test.js +285 -0
  468. package/dist/workflow-script-flow.test.js.map +1 -0
  469. package/package.json +80 -0
  470. package/src/__snapshots__/x.com.processed.html +1003 -0
  471. package/src/__snapshots__/x.com.processed.withStyles.html +2720 -0
  472. package/src/a11y-client.ts +241 -0
  473. package/src/agent-skills/conan-config/SKILL.md +141 -0
  474. package/src/agent-skills/conan-config/agents/openai.yaml +4 -0
  475. package/src/aria-snapshot.test.ts +311 -0
  476. package/src/aria-snapshot.ts +1681 -0
  477. package/src/aria-snapshot.unit.test.ts +615 -0
  478. package/src/aria-snapshots/github-interactive.txt +193 -0
  479. package/src/aria-snapshots/github-raw.txt +309 -0
  480. package/src/aria-snapshots/hackernews-interactive.txt +477 -0
  481. package/src/aria-snapshots/hackernews-raw.txt +428 -0
  482. package/src/aria-snapshots/prosemirror-interactive.txt +66 -0
  483. package/src/aria-snapshots/prosemirror-raw.txt +145 -0
  484. package/src/assets/aria-labels-hacker-news.png +0 -0
  485. package/src/assets/aria-labels-old-reddit.png +0 -0
  486. package/src/assets/cursors/screen-studio/pointer-macos-tahoe-data-url.ts +5 -0
  487. package/src/assets/cursors/screen-studio/pointer-macos-tahoe.svg +18 -0
  488. package/src/assets/x.com.html +32946 -0
  489. package/src/browser-config.ts +179 -0
  490. package/src/browser-install.ts +284 -0
  491. package/src/browser-launch.ts +75 -0
  492. package/src/builtin-capabilities.ts +2765 -0
  493. package/src/capability-agent-skill.ts +305 -0
  494. package/src/capability-auth-state.ts +197 -0
  495. package/src/capability-auth.ts +249 -0
  496. package/src/capability-cli-confirmation.test.ts +90 -0
  497. package/src/capability-options.test.ts +89 -0
  498. package/src/capability-options.ts +57 -0
  499. package/src/capability-package.test.ts +204 -0
  500. package/src/capability-package.ts +555 -0
  501. package/src/capability-registry.test.ts +1905 -0
  502. package/src/capability-registry.ts +1234 -0
  503. package/src/capability-runner.ts +801 -0
  504. package/src/capability-search-relevance.test.ts +73 -0
  505. package/src/capability-studio.test.ts +45 -0
  506. package/src/capability-studio.ts +641 -0
  507. package/src/cdp-log.test.ts +131 -0
  508. package/src/cdp-log.ts +112 -0
  509. package/src/cdp-relay.ts +2944 -0
  510. package/src/cdp-session.ts +77 -0
  511. package/src/cdp-types.ts +158 -0
  512. package/src/channel-owner-inspect.test.ts +94 -0
  513. package/src/chrome-discovery.test.ts +50 -0
  514. package/src/chrome-discovery.ts +220 -0
  515. package/src/clean-html.ts +141 -0
  516. package/src/cli-help.test.ts +123 -0
  517. package/src/cli.ts +3181 -0
  518. package/src/cloud-client.ts +179 -0
  519. package/src/create-logger.ts +38 -0
  520. package/src/debugger-examples-types.ts +16 -0
  521. package/src/debugger-examples.ts +66 -0
  522. package/src/debugger.ts +708 -0
  523. package/src/diff-utils.test.ts +152 -0
  524. package/src/diff-utils.ts +70 -0
  525. package/src/doctor.test.ts +244 -0
  526. package/src/doctor.ts +321 -0
  527. package/src/editor-examples.ts +158 -0
  528. package/src/editor.ts +426 -0
  529. package/src/env-compat.ts +28 -0
  530. package/src/executor.ts +1824 -0
  531. package/src/executor.unit.test.ts +168 -0
  532. package/src/extension-connection.test.ts +855 -0
  533. package/src/extension-icon-warning.test.ts +45 -0
  534. package/src/ghost-browser.ts +149 -0
  535. package/src/ghost-cursor-client.ts +494 -0
  536. package/src/ghost-cursor-controller.ts +129 -0
  537. package/src/ghost-cursor.ts +123 -0
  538. package/src/htmlrewrite.test.ts +8008 -0
  539. package/src/htmlrewrite.ts +390 -0
  540. package/src/index.ts +53 -0
  541. package/src/kill-port.ts +219 -0
  542. package/src/kitty-graphics.test.ts +139 -0
  543. package/src/kitty-graphics.ts +79 -0
  544. package/src/locator-selector.test.ts +119 -0
  545. package/src/mcp-client.ts +78 -0
  546. package/src/mcp.ts +629 -0
  547. package/src/on-mouse-action.test.ts +226 -0
  548. package/src/options-page.test.ts +839 -0
  549. package/src/package-paths.ts +38 -0
  550. package/src/page-markdown.ts +240 -0
  551. package/src/performance-examples.ts +186 -0
  552. package/src/playwright-import.ts +59 -0
  553. package/src/popup-relocation.test.ts +163 -0
  554. package/src/product-paths.test.ts +47 -0
  555. package/src/product-paths.ts +28 -0
  556. package/src/protocol.test.ts +52 -0
  557. package/src/protocol.ts +351 -0
  558. package/src/react-source.ts +379 -0
  559. package/src/relay-client.test.ts +375 -0
  560. package/src/relay-client.ts +572 -0
  561. package/src/relay-core.test.ts +1603 -0
  562. package/src/relay-navigation.test.ts +790 -0
  563. package/src/relay-session.test.ts +1375 -0
  564. package/src/relay-state.test.ts +729 -0
  565. package/src/relay-state.ts +561 -0
  566. package/src/replay-ai-index.test.ts +278 -0
  567. package/src/replay-ai-index.ts +872 -0
  568. package/src/replay-cli.test.ts +325 -0
  569. package/src/replay-eval.ts +1039 -0
  570. package/src/replay-handoff.test.ts +163 -0
  571. package/src/replay-handoff.ts +109 -0
  572. package/src/replay-workflow-compiler.test.ts +250 -0
  573. package/src/replay-workflow-compiler.ts +700 -0
  574. package/src/resource.md +409 -0
  575. package/src/rrweb-recording-relay.test.ts +99 -0
  576. package/src/rrweb-recording-relay.ts +400 -0
  577. package/src/rrweb-recording.ts +322 -0
  578. package/src/scoped-fs.test.ts +80 -0
  579. package/src/scoped-fs.ts +420 -0
  580. package/src/skill-stub.test.ts +24 -0
  581. package/src/skill.md +1413 -0
  582. package/src/snapshot-tools.test.ts +1017 -0
  583. package/src/snapshots/hacker-news-accessibility-full.md +81 -0
  584. package/src/snapshots/hacker-news-accessibility-interactive.md +43 -0
  585. package/src/snapshots/page-markdown-output.txt +16 -0
  586. package/src/snapshots/shadcn-ui-accessibility-full.md +201 -0
  587. package/src/snapshots/shadcn-ui-accessibility-interactive.md +109 -0
  588. package/src/start-relay-server.ts +69 -0
  589. package/src/styles-examples.ts +84 -0
  590. package/src/styles.ts +343 -0
  591. package/src/tabwright-agent-skill.test.ts +61 -0
  592. package/src/tabwright-agent-skill.ts +105 -0
  593. package/src/test-declarations.ts +13 -0
  594. package/src/test-utils.test.ts +70 -0
  595. package/src/test-utils.ts +566 -0
  596. package/src/utils.ts +78 -0
  597. package/src/wait-for-page-load.ts +198 -0
  598. package/src/workflow-capability.ts +417 -0
  599. package/src/workflow-script-flow.test.ts +388 -0
@@ -0,0 +1,146 @@
1
+ import { sleep } from './utils.js';
2
+ const FILTERED_DOMAINS = [
3
+ 'doubleclick',
4
+ 'googlesyndication',
5
+ 'googleadservices',
6
+ 'google-analytics',
7
+ 'googletagmanager',
8
+ 'facebook.net',
9
+ 'fbcdn.net',
10
+ 'twitter.com',
11
+ 'linkedin.com',
12
+ 'hotjar',
13
+ 'mixpanel',
14
+ 'segment.io',
15
+ 'segment.com',
16
+ 'newrelic',
17
+ 'datadoghq',
18
+ 'sentry.io',
19
+ 'fullstory',
20
+ 'amplitude',
21
+ 'intercom',
22
+ 'crisp.chat',
23
+ 'zdassets.com',
24
+ 'zendesk',
25
+ 'tawk.to',
26
+ 'hubspot',
27
+ 'marketo',
28
+ 'pardot',
29
+ 'optimizely',
30
+ 'crazyegg',
31
+ 'mouseflow',
32
+ 'clarity.ms',
33
+ 'bing.com/bat',
34
+ 'ads.',
35
+ 'analytics.',
36
+ 'tracking.',
37
+ 'pixel.',
38
+ ];
39
+ const FILTERED_EXTENSIONS = ['.gif', '.ico', '.cur', '.woff', '.woff2', '.ttf', '.otf', '.eot'];
40
+ export async function waitForPageLoad(options) {
41
+ const { page, timeout = 30000, pollInterval = 100, minWait = 500 } = options;
42
+ const startTime = Date.now();
43
+ let timedOut = false;
44
+ let lastReadyState = '';
45
+ let lastPendingRequests = [];
46
+ const checkPageReady = async () => {
47
+ const result = await page.evaluate(({ filteredDomains, filteredExtensions, stuckThreshold, slowResourceThreshold, }) => {
48
+ const doc = globalThis.document;
49
+ const readyState = doc.readyState;
50
+ if (readyState !== 'complete') {
51
+ return { ready: false, readyState, pendingRequests: [`document.readyState: ${readyState}`] };
52
+ }
53
+ const resources = performance.getEntriesByType('resource');
54
+ const now = performance.now();
55
+ const pendingRequests = resources
56
+ .filter((r) => {
57
+ if (r.responseEnd > 0) {
58
+ return false;
59
+ }
60
+ const elapsed = now - r.startTime;
61
+ const url = r.name.toLowerCase();
62
+ if (url.startsWith('data:')) {
63
+ return false;
64
+ }
65
+ if (filteredDomains.some((domain) => url.includes(domain))) {
66
+ return false;
67
+ }
68
+ if (elapsed > stuckThreshold) {
69
+ return false;
70
+ }
71
+ if (elapsed > slowResourceThreshold && filteredExtensions.some((ext) => url.includes(ext))) {
72
+ return false;
73
+ }
74
+ return true;
75
+ })
76
+ .map((r) => r.name);
77
+ return {
78
+ ready: pendingRequests.length === 0,
79
+ readyState,
80
+ pendingRequests,
81
+ };
82
+ }, {
83
+ filteredDomains: FILTERED_DOMAINS,
84
+ filteredExtensions: FILTERED_EXTENSIONS,
85
+ stuckThreshold: 10000,
86
+ slowResourceThreshold: 3000,
87
+ });
88
+ return result;
89
+ };
90
+ // Fast path: check immediately first. If already ready, return without waiting.
91
+ try {
92
+ const firstCheck = await checkPageReady();
93
+ if (firstCheck.ready) {
94
+ return {
95
+ success: true,
96
+ readyState: firstCheck.readyState,
97
+ pendingRequests: [],
98
+ waitTimeMs: Date.now() - startTime,
99
+ timedOut: false,
100
+ };
101
+ }
102
+ lastReadyState = firstCheck.readyState;
103
+ lastPendingRequests = firstCheck.pendingRequests;
104
+ }
105
+ catch (e) {
106
+ // First check failed, continue with polling
107
+ }
108
+ // Not ready yet - wait minWait to let JS settle and catch late-starting requests
109
+ await sleep(minWait);
110
+ while (Date.now() - startTime < timeout) {
111
+ try {
112
+ const { ready, readyState, pendingRequests } = await checkPageReady();
113
+ lastReadyState = readyState;
114
+ lastPendingRequests = pendingRequests;
115
+ if (ready) {
116
+ return {
117
+ success: true,
118
+ readyState,
119
+ pendingRequests: [],
120
+ waitTimeMs: Date.now() - startTime,
121
+ timedOut: false,
122
+ };
123
+ }
124
+ }
125
+ catch (e) {
126
+ console.error('[waitForPageLoad] page.evaluate failed:', e);
127
+ return {
128
+ success: false,
129
+ readyState: 'error',
130
+ pendingRequests: ['page.evaluate failed - page may have closed or navigated'],
131
+ waitTimeMs: Date.now() - startTime,
132
+ timedOut: false,
133
+ };
134
+ }
135
+ await sleep(pollInterval);
136
+ }
137
+ timedOut = true;
138
+ return {
139
+ success: false,
140
+ readyState: lastReadyState,
141
+ pendingRequests: lastPendingRequests.slice(0, 10),
142
+ waitTimeMs: Date.now() - startTime,
143
+ timedOut,
144
+ };
145
+ }
146
+ //# sourceMappingURL=wait-for-page-load.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait-for-page-load.js","sourceRoot":"","sources":["../src/wait-for-page-load.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import { type CapabilityExample, type CapabilityLocation, type CapabilitySideEffect } from './capability-registry.js';
2
+ export interface SaveWorkflowCapabilityOptions {
3
+ id: string;
4
+ title: string;
5
+ description?: string;
6
+ script: string;
7
+ cwd?: string;
8
+ location?: CapabilityLocation;
9
+ overwrite?: boolean;
10
+ sourceRecordingId?: string;
11
+ whenToUse?: string[];
12
+ whenNotToUse?: string[];
13
+ match?: string[];
14
+ tags?: string[];
15
+ inputSchema?: Record<string, unknown>;
16
+ outputSchema?: Record<string, unknown>;
17
+ examples?: CapabilityExample[];
18
+ sideEffect?: CapabilitySideEffect;
19
+ requiresConfirmation?: boolean;
20
+ }
21
+ export interface SavedWorkflowCapability {
22
+ capability: Record<string, unknown>;
23
+ script: string;
24
+ }
25
+ type WorkflowValue = {
26
+ inputPath: string;
27
+ fallback?: unknown;
28
+ } | {
29
+ value: unknown;
30
+ };
31
+ export type RecordingWorkflowStep = {
32
+ action: 'goto';
33
+ url: string | WorkflowValue;
34
+ } | {
35
+ action: 'fill';
36
+ locator: string;
37
+ value: WorkflowValue;
38
+ } | {
39
+ action: 'click';
40
+ locator: string;
41
+ } | {
42
+ action: 'setInputFiles';
43
+ locator: string;
44
+ path: WorkflowValue;
45
+ } | {
46
+ action: 'selectOption';
47
+ locator: string;
48
+ value: WorkflowValue;
49
+ } | {
50
+ action: 'waitForURL';
51
+ url: string | WorkflowValue;
52
+ };
53
+ export interface RecordingWorkflowFinalRequest {
54
+ url: string;
55
+ method?: string | string[];
56
+ title?: string;
57
+ description?: string;
58
+ trigger: RecordingWorkflowStep;
59
+ }
60
+ export interface SaveWorkflowFromRecordingOptions extends Omit<SaveWorkflowCapabilityOptions, 'script' | 'sourceRecordingId'> {
61
+ recordingId: string;
62
+ steps: RecordingWorkflowStep[];
63
+ finalRequest?: RecordingWorkflowFinalRequest;
64
+ batch?: {
65
+ inputPath?: string;
66
+ continueOnError?: boolean;
67
+ };
68
+ }
69
+ export declare function saveWorkflowCapability(options: SaveWorkflowCapabilityOptions): SavedWorkflowCapability;
70
+ export declare function saveWorkflowFromRecording(options: SaveWorkflowFromRecordingOptions): SavedWorkflowCapability;
71
+ export {};
72
+ //# sourceMappingURL=workflow-capability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-capability.d.ts","sourceRoot":"","sources":["../src/workflow-capability.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAEvB,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAA;AAEjC,MAAM,WAAW,6BAA6B;IAC5C,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,kBAAkB,CAAA;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACtC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAC9B,UAAU,CAAC,EAAE,oBAAoB,CAAA;IACjC,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,MAAM,EAAE,MAAM,CAAA;CACf;AAED,KAAK,aAAa,GACd;IACE,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,GACD;IACE,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAEL,MAAM,MAAM,qBAAqB,GAC7B;IACE,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,GAAG,aAAa,CAAA;CAC5B,GACD;IACE,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,aAAa,CAAA;CACrB,GACD;IACE,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB,GACD;IACE,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,aAAa,CAAA;CACpB,GACD;IACE,MAAM,EAAE,cAAc,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,aAAa,CAAA;CACrB,GACD;IACE,MAAM,EAAE,YAAY,CAAA;IACpB,GAAG,EAAE,MAAM,GAAG,aAAa,CAAA;CAC5B,CAAA;AAEL,MAAM,WAAW,6BAA6B;IAC5C,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,qBAAqB,CAAA;CAC/B;AAED,MAAM,WAAW,gCACf,SAAQ,IAAI,CAAC,6BAA6B,EAAE,QAAQ,GAAG,mBAAmB,CAAC;IAC3E,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,qBAAqB,EAAE,CAAA;IAC9B,YAAY,CAAC,EAAE,6BAA6B,CAAA;IAC5C,KAAK,CAAC,EAAE;QACN,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,eAAe,CAAC,EAAE,OAAO,CAAA;KAC1B,CAAA;CACF;AA6DD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,6BAA6B,GAAG,uBAAuB,CAMtG;AA2PD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,gCAAgC,GAAG,uBAAuB,CAM5G"}
@@ -0,0 +1,316 @@
1
+ import { createCapability, readCapabilityScript, toCapabilitySummary, updateCapabilityManifest, updateCapabilityScript, } from './capability-registry.js';
2
+ function workflowTags(options) {
3
+ const tags = new Set(['workflow', 'recording-derived', ...(options.tags || [])]);
4
+ if (options.sourceRecordingId) {
5
+ tags.add(`recording:${options.sourceRecordingId}`);
6
+ }
7
+ return Array.from(tags);
8
+ }
9
+ function workflowWhenToUse(options) {
10
+ const whenToUse = options.whenToUse || [];
11
+ if (whenToUse.length > 0) {
12
+ return whenToUse;
13
+ }
14
+ return [
15
+ options.description ||
16
+ `Run the workflow generated from recording ${options.sourceRecordingId || 'a user demonstration'}.`,
17
+ ];
18
+ }
19
+ function saveScriptCapability(options) {
20
+ const capability = createCapability({
21
+ id: options.id,
22
+ title: options.title,
23
+ description: options.description,
24
+ location: options.location || 'project',
25
+ cwd: options.cwd,
26
+ overwrite: options.overwrite,
27
+ createdBy: 'ai',
28
+ runtime: 'browser',
29
+ });
30
+ updateCapabilityScript({
31
+ id: capability.manifest.id,
32
+ cwd: options.cwd,
33
+ source: options.script,
34
+ });
35
+ return updateCapabilityManifest({
36
+ id: capability.manifest.id,
37
+ cwd: options.cwd,
38
+ patch: {
39
+ description: options.description || capability.manifest.description,
40
+ whenToUse: workflowWhenToUse(options),
41
+ whenNotToUse: options.whenNotToUse || [],
42
+ match: options.match || [],
43
+ tags: workflowTags(options),
44
+ inputSchema: options.inputSchema || { type: 'object', properties: {}, required: [] },
45
+ outputSchema: options.outputSchema || { type: 'object', properties: {} },
46
+ permissions: ['browser.read', 'browser.write'],
47
+ sideEffect: options.sideEffect || 'write',
48
+ requiresConfirmation: options.requiresConfirmation ?? true,
49
+ examples: options.examples || [],
50
+ status: 'draft',
51
+ createdBy: 'ai',
52
+ runtime: 'browser',
53
+ },
54
+ });
55
+ }
56
+ export function saveWorkflowCapability(options) {
57
+ const capability = saveScriptCapability(options);
58
+ return {
59
+ capability: toCapabilitySummary(capability),
60
+ script: readCapabilityScript({ id: capability.manifest.id, cwd: options.cwd }),
61
+ };
62
+ }
63
+ function workflowLiteral(value) {
64
+ return JSON.stringify(value, null, 2);
65
+ }
66
+ function buildWorkflowScript(options) {
67
+ const continueOnError = options.batch?.continueOnError ?? false;
68
+ const batchInputPath = options.batch?.inputPath || 'items';
69
+ return [
70
+ '// Generated from a user recording: run fast by default, and return needs_ai when the live page diverges.',
71
+ `const workflowSteps = ${workflowLiteral(options.steps)};`,
72
+ `const finalRequest = ${workflowLiteral(options.finalRequest)};`,
73
+ `const batchInputPath = ${workflowLiteral(batchInputPath)};`,
74
+ `const sourceRecordingId = ${workflowLiteral(options.recordingId)};`,
75
+ `const continueOnError = ${continueOnError ? 'true' : 'false'};`,
76
+ '',
77
+ 'function getPathValue(source, path, fallback) {',
78
+ ' if (!path) return fallback;',
79
+ ' const parts = path.split(".").filter((part) => part.length > 0);',
80
+ ' const value = parts.reduce((current, part) => {',
81
+ ' if (!current || typeof current !== "object") return undefined;',
82
+ ' if (!Object.prototype.hasOwnProperty.call(current, part)) return undefined;',
83
+ ' return current[part];',
84
+ ' }, source);',
85
+ ' return value === undefined ? fallback : value;',
86
+ '}',
87
+ '',
88
+ 'function resolveWorkflowValue(item, value) {',
89
+ ' if (typeof value === "string") return value;',
90
+ ' if (!value || typeof value !== "object") return value;',
91
+ ' if (Object.prototype.hasOwnProperty.call(value, "inputPath")) return getPathValue(item, value.inputPath, value.fallback);',
92
+ ' if (Object.prototype.hasOwnProperty.call(value, "value")) return value.value;',
93
+ ' return value;',
94
+ '}',
95
+ '',
96
+ 'function errorMessage(error) {',
97
+ ' if (error && typeof error === "object" && typeof error.message === "string") return error.message;',
98
+ ' return String(error);',
99
+ '}',
100
+ '',
101
+ 'function escapeRegex(value) {',
102
+ ' return value.replace(/[.*+?^${}()|[\\]\\\\]/g, "\\\\$&");',
103
+ '}',
104
+ '',
105
+ 'function globToRegExp(pattern) {',
106
+ ' return new RegExp("^" + String(pattern).split("*").map(escapeRegex).join(".*") + "$");',
107
+ '}',
108
+ '',
109
+ 'function normalizedMethods(method) {',
110
+ ' if (Array.isArray(method)) return method.map((item) => String(item).toUpperCase());',
111
+ ' if (method) return [String(method).toUpperCase()];',
112
+ ' return ["POST", "PUT", "PATCH", "DELETE"];',
113
+ '}',
114
+ '',
115
+ 'function requestMatchesFinalRequest(request) {',
116
+ ' if (!finalRequest || !finalRequest.url) return false;',
117
+ ' const methods = normalizedMethods(finalRequest.method);',
118
+ ' if (!methods.includes(request.method().toUpperCase())) return false;',
119
+ ' return globToRegExp(finalRequest.url).test(request.url());',
120
+ '}',
121
+ '',
122
+ 'async function readSnapshotText() {',
123
+ ' if (typeof snapshot !== "function") return undefined;',
124
+ ' try {',
125
+ ' const value = await snapshot({ page });',
126
+ ' const text = typeof value === "string" ? value : JSON.stringify(value, null, 2);',
127
+ ' return text.slice(0, 12000);',
128
+ ' } catch (error) {',
129
+ ' return "snapshot failed: " + errorMessage(error);',
130
+ ' }',
131
+ '}',
132
+ '',
133
+ 'async function captureWorkflowContext({ step, item, index, phase, reason, error }) {',
134
+ ' return {',
135
+ ' status: "needs_ai",',
136
+ ' reason,',
137
+ ' error: error ? errorMessage(error) : undefined,',
138
+ ' phase,',
139
+ ' step,',
140
+ ' item,',
141
+ ' index,',
142
+ ' sourceRecordingId,',
143
+ ' context: {',
144
+ ' url: page.url(),',
145
+ ' title: await page.title().catch(() => ""),',
146
+ ' snapshot: await readSnapshotText(),',
147
+ ' },',
148
+ ' };',
149
+ '}',
150
+ '',
151
+ 'async function getWorkflowLocator(step, item, index, phase) {',
152
+ ' const target = page.locator(step.locator).first();',
153
+ ' try {',
154
+ ' await target.waitFor({ state: "attached", timeout: 2500 });',
155
+ ' return { target };',
156
+ ' } catch (error) {',
157
+ ' return {',
158
+ ' handoff: await captureWorkflowContext({',
159
+ ' step,',
160
+ ' item,',
161
+ ' index,',
162
+ ' phase,',
163
+ ' reason: "Expected locator was not found on the live page.",',
164
+ ' error,',
165
+ ' }),',
166
+ ' };',
167
+ ' }',
168
+ '}',
169
+ '',
170
+ 'async function runWorkflowStep(step, item, options) {',
171
+ ' const index = options.index;',
172
+ ' const phase = options.phase;',
173
+ ' try {',
174
+ ' if (step.action === "goto") {',
175
+ ' await page.goto(String(resolveWorkflowValue(item, step.url)));',
176
+ ' return { status: "ok" };',
177
+ ' }',
178
+ ' if (step.action === "waitForURL") {',
179
+ ' await page.waitForURL(String(resolveWorkflowValue(item, step.url)));',
180
+ ' return { status: "ok" };',
181
+ ' }',
182
+ ' if (!step.locator) {',
183
+ ' return await captureWorkflowContext({ step, item, index, phase, reason: "Workflow step is missing a locator." });',
184
+ ' }',
185
+ ' const located = await getWorkflowLocator(step, item, index, phase);',
186
+ ' if (located.handoff) return located.handoff;',
187
+ ' if (step.action === "fill") {',
188
+ ' await located.target.fill(String(resolveWorkflowValue(item, step.value) ?? ""));',
189
+ ' return { status: "ok" };',
190
+ ' }',
191
+ ' if (step.action === "click") {',
192
+ ' await located.target.click();',
193
+ ' return { status: "ok" };',
194
+ ' }',
195
+ ' if (step.action === "setInputFiles") {',
196
+ ' await located.target.setInputFiles(String(resolveWorkflowValue(item, step.path)));',
197
+ ' return { status: "ok" };',
198
+ ' }',
199
+ ' if (step.action === "selectOption") {',
200
+ ' await located.target.selectOption(String(resolveWorkflowValue(item, step.value)));',
201
+ ' return { status: "ok" };',
202
+ ' }',
203
+ ' return await captureWorkflowContext({ step, item, index, phase, reason: "Unsupported workflow step." });',
204
+ ' } catch (error) {',
205
+ ' return await captureWorkflowContext({ step, item, index, phase, reason: "Workflow step failed on the live page.", error });',
206
+ ' }',
207
+ '}',
208
+ '',
209
+ 'async function runFinalRequestTrigger(item, index) {',
210
+ ' if (!finalRequest || !finalRequest.trigger) return { status: "completed" };',
211
+ ' const requestPromise = page.waitForRequest((request) => {',
212
+ ' return requestMatchesFinalRequest(request);',
213
+ ' }, { timeout: 8000 }).catch((error) => {',
214
+ ' return { error };',
215
+ ' });',
216
+ ' const triggerResult = await runWorkflowStep(finalRequest.trigger, item, { index, phase: "final-request" });',
217
+ ' if (triggerResult.status !== "ok") return triggerResult;',
218
+ ' const request = await requestPromise;',
219
+ ' if (request && request.error) {',
220
+ ' return await captureWorkflowContext({',
221
+ ' step: finalRequest.trigger,',
222
+ ' item,',
223
+ ' index,',
224
+ ' phase: "final-request",',
225
+ ' reason: "The expected final request was not observed after the trigger.",',
226
+ ' error: request.error,',
227
+ ' });',
228
+ ' }',
229
+ ' const response = await request.response().catch(() => null);',
230
+ ' return {',
231
+ ' status: "completed",',
232
+ ' finalRequest: {',
233
+ ' method: request.method(),',
234
+ ' url: request.url(),',
235
+ ' headers: request.headers(),',
236
+ ' postData: request.postData(),',
237
+ ' responseStatus: response ? response.status() : undefined,',
238
+ ' },',
239
+ ' };',
240
+ '}',
241
+ '',
242
+ 'async function runOneWorkflowItem({ item, index }) {',
243
+ ' for (let stepIndex = 0; stepIndex < workflowSteps.length; stepIndex += 1) {',
244
+ ' const step = workflowSteps[stepIndex];',
245
+ ' const result = await runWorkflowStep(step, item, { index, phase: "step-" + (stepIndex + 1) });',
246
+ ' if (result.status !== "ok") return result;',
247
+ ' }',
248
+ ' if (!finalRequest || !finalRequest.trigger) {',
249
+ ' return {',
250
+ ' status: "completed",',
251
+ ' item,',
252
+ ' index,',
253
+ ' };',
254
+ ' }',
255
+ ' const finalResult = await runFinalRequestTrigger(item, index);',
256
+ ' if (finalResult.status !== "completed") return finalResult;',
257
+ ' return {',
258
+ ' status: "completed",',
259
+ ' item,',
260
+ ' index,',
261
+ ' finalRequest: finalResult.finalRequest,',
262
+ ' };',
263
+ '}',
264
+ '',
265
+ 'const batchInput = getPathValue(input, batchInputPath, undefined);',
266
+ 'const items = Array.isArray(batchInput) ? batchInput : [input];',
267
+ 'const results = [];',
268
+ 'let completed = 0;',
269
+ 'let failed = 0;',
270
+ 'let needsAi = null;',
271
+ 'for (let index = 0; index < items.length; index += 1) {',
272
+ ' const item = items[index];',
273
+ ' try {',
274
+ ' const result = await runOneWorkflowItem({ item, index });',
275
+ ' results.push(result);',
276
+ ' if (result.status === "completed") {',
277
+ ' completed += 1;',
278
+ ' } else if (result.status === "needs_ai") {',
279
+ ' needsAi = result;',
280
+ ' if (!continueOnError) break;',
281
+ ' } else {',
282
+ ' failed += 1;',
283
+ ' if (!continueOnError) break;',
284
+ ' }',
285
+ ' } catch (error) {',
286
+ ' const result = await captureWorkflowContext({',
287
+ ' item,',
288
+ ' index,',
289
+ ' phase: "item",',
290
+ ' reason: "Workflow item failed before completion.",',
291
+ ' error,',
292
+ ' });',
293
+ ' results.push(result);',
294
+ ' needsAi = result;',
295
+ ' if (!continueOnError) break;',
296
+ ' }',
297
+ '}',
298
+ 'return {',
299
+ ' status: needsAi ? "needs_ai" : failed > 0 ? "failed" : "completed",',
300
+ ' total: items.length,',
301
+ ' completed,',
302
+ ' failed,',
303
+ ' needsAi,',
304
+ ' results,',
305
+ '};',
306
+ '',
307
+ ].join('\n');
308
+ }
309
+ export function saveWorkflowFromRecording(options) {
310
+ return saveWorkflowCapability({
311
+ ...options,
312
+ sourceRecordingId: options.recordingId,
313
+ script: buildWorkflowScript(options),
314
+ });
315
+ }
316
+ //# sourceMappingURL=workflow-capability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-capability.js","sourceRoot":"","sources":["../src/workflow-capability.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=workflow-script-flow.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-script-flow.test.d.ts","sourceRoot":"","sources":["../src/workflow-script-flow.test.ts"],"names":[],"mappings":""}