@taodigital/crawler 0.0.0-stage → 1.2.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 (494) hide show
  1. package/Dockerfile +82 -0
  2. package/README.md +10 -2
  3. package/dist/accessibility-auditor.d.ts +29 -0
  4. package/dist/accessibility-auditor.js +57 -0
  5. package/dist/accessibility-auditor.js.map +7 -0
  6. package/dist/accessibility-tree-crawler.d.ts +44 -0
  7. package/dist/accessibility-tree-crawler.js +156 -0
  8. package/dist/accessibility-tree-crawler.js.map +7 -0
  9. package/dist/advanced-ui-probes.d.ts +47 -0
  10. package/dist/advanced-ui-probes.js +310 -0
  11. package/dist/advanced-ui-probes.js.map +7 -0
  12. package/dist/ai-login.d.ts +32 -0
  13. package/dist/ai-login.js +250 -0
  14. package/dist/ai-login.js.map +7 -0
  15. package/dist/auth-token-rotator.d.ts +47 -0
  16. package/dist/auth-token-rotator.js +58 -0
  17. package/dist/auth-token-rotator.js.map +7 -0
  18. package/dist/auth.d.ts +20 -0
  19. package/dist/auth.js +348 -0
  20. package/dist/auth.js.map +7 -0
  21. package/dist/browser-extension.d.ts +37 -0
  22. package/dist/browser-extension.js +113 -0
  23. package/dist/browser-extension.js.map +7 -0
  24. package/dist/captcha-solver.d.ts +16 -0
  25. package/dist/captcha-solver.js +105 -0
  26. package/dist/captcha-solver.js.map +7 -0
  27. package/dist/color-contrast.d.ts +30 -0
  28. package/dist/color-contrast.js +78 -0
  29. package/dist/color-contrast.js.map +7 -0
  30. package/dist/content-chunker.d.ts +18 -0
  31. package/dist/content-chunker.js +152 -0
  32. package/dist/content-chunker.js.map +7 -0
  33. package/dist/content-dedup.d.ts +23 -0
  34. package/dist/content-dedup.js +60 -0
  35. package/dist/content-dedup.js.map +7 -0
  36. package/dist/cookie-consent.d.ts +25 -0
  37. package/dist/cookie-consent.js +78 -0
  38. package/dist/cookie-consent.js.map +7 -0
  39. package/dist/cookie-jar.d.ts +20 -0
  40. package/dist/cookie-jar.js +61 -0
  41. package/dist/cookie-jar.js.map +7 -0
  42. package/dist/crawl-session-manager.d.ts +44 -0
  43. package/dist/crawl-session-manager.js +145 -0
  44. package/dist/crawl-session-manager.js.map +7 -0
  45. package/dist/crawler.d.ts +233 -0
  46. package/dist/crawler.js +6239 -0
  47. package/dist/crawler.js.map +7 -0
  48. package/dist/crud-interaction.d.ts +31 -0
  49. package/dist/crud-interaction.js +264 -0
  50. package/dist/crud-interaction.js.map +7 -0
  51. package/dist/custom-js-injector.d.ts +42 -0
  52. package/dist/custom-js-injector.js +50 -0
  53. package/dist/custom-js-injector.js.map +7 -0
  54. package/dist/dark-mode-capture.d.ts +23 -0
  55. package/dist/dark-mode-capture.js +75 -0
  56. package/dist/dark-mode-capture.js.map +7 -0
  57. package/dist/dead-link-detector.d.ts +37 -0
  58. package/dist/dead-link-detector.js +50 -0
  59. package/dist/dead-link-detector.js.map +7 -0
  60. package/dist/dropdown-enumerator.d.ts +20 -0
  61. package/dist/dropdown-enumerator.js +230 -0
  62. package/dist/dropdown-enumerator.js.map +7 -0
  63. package/dist/element-hash.d.ts +9 -0
  64. package/dist/element-hash.js +9 -0
  65. package/dist/element-hash.js.map +7 -0
  66. package/dist/email-otp.d.ts +42 -0
  67. package/dist/email-otp.js +177 -0
  68. package/dist/email-otp.js.map +7 -0
  69. package/dist/engine-router.d.ts +47 -0
  70. package/dist/engine-router.js +94 -0
  71. package/dist/engine-router.js.map +7 -0
  72. package/dist/export/bulk-export.d.ts +26 -0
  73. package/dist/export/bulk-export.js +76 -0
  74. package/dist/export/bulk-export.js.map +7 -0
  75. package/dist/export/vector-export.d.ts +76 -0
  76. package/dist/export/vector-export.js +85 -0
  77. package/dist/export/vector-export.js.map +7 -0
  78. package/dist/extractors/advanced.d.ts +64 -0
  79. package/dist/extractors/advanced.js +265 -0
  80. package/dist/extractors/advanced.js.map +7 -0
  81. package/dist/extractors/artifact-envelope.d.ts +63 -0
  82. package/dist/extractors/artifact-envelope.js +63 -0
  83. package/dist/extractors/artifact-envelope.js.map +7 -0
  84. package/dist/extractors/branding-extractor.d.ts +46 -0
  85. package/dist/extractors/branding-extractor.js +104 -0
  86. package/dist/extractors/branding-extractor.js.map +7 -0
  87. package/dist/extractors/summary-extractor.d.ts +10 -0
  88. package/dist/extractors/summary-extractor.js +36 -0
  89. package/dist/extractors/summary-extractor.js.map +7 -0
  90. package/dist/failure-analysis-agent.d.ts +16 -0
  91. package/dist/failure-analysis-agent.js +42 -0
  92. package/dist/failure-analysis-agent.js.map +7 -0
  93. package/dist/feature-flag-detector.d.ts +30 -0
  94. package/dist/feature-flag-detector.js +55 -0
  95. package/dist/feature-flag-detector.js.map +7 -0
  96. package/dist/filter-pagination-crawler.d.ts +52 -0
  97. package/dist/filter-pagination-crawler.js +299 -0
  98. package/dist/filter-pagination-crawler.js.map +7 -0
  99. package/dist/form-detector.d.ts +34 -0
  100. package/dist/form-detector.js +58 -0
  101. package/dist/form-detector.js.map +7 -0
  102. package/dist/frontier.d.ts +40 -0
  103. package/dist/frontier.js +103 -0
  104. package/dist/frontier.js.map +7 -0
  105. package/dist/gap-pass.d.ts +36 -0
  106. package/dist/gap-pass.js +115 -0
  107. package/dist/gap-pass.js.map +7 -0
  108. package/dist/graphql-detector.d.ts +39 -0
  109. package/dist/graphql-detector.js +86 -0
  110. package/dist/graphql-detector.js.map +7 -0
  111. package/dist/http-engine.d.ts +80 -0
  112. package/dist/http-engine.js +318 -0
  113. package/dist/http-engine.js.map +7 -0
  114. package/dist/incremental-diff.d.ts +116 -0
  115. package/dist/incremental-diff.js +137 -0
  116. package/dist/incremental-diff.js.map +7 -0
  117. package/dist/index.d.ts +52 -0
  118. package/dist/index.js +83 -0
  119. package/dist/index.js.map +7 -0
  120. package/dist/input-fuzzer.d.ts +30 -0
  121. package/dist/input-fuzzer.js +105 -0
  122. package/dist/input-fuzzer.js.map +7 -0
  123. package/dist/interactive-probe.d.ts +144 -0
  124. package/dist/interactive-probe.js +865 -0
  125. package/dist/interactive-probe.js.map +7 -0
  126. package/dist/job-queue.d.ts +297 -0
  127. package/dist/job-queue.js +3812 -0
  128. package/dist/job-queue.js.map +7 -0
  129. package/dist/js-coverage.d.ts +29 -0
  130. package/dist/js-coverage.js +56 -0
  131. package/dist/js-coverage.js.map +7 -0
  132. package/dist/js-router-detector.d.ts +17 -0
  133. package/dist/js-router-detector.js +90 -0
  134. package/dist/js-router-detector.js.map +7 -0
  135. package/dist/language-detector.d.ts +22 -0
  136. package/dist/language-detector.js +57 -0
  137. package/dist/language-detector.js.map +7 -0
  138. package/dist/link-classifier.d.ts +23 -0
  139. package/dist/link-classifier.js +40 -0
  140. package/dist/link-classifier.js.map +7 -0
  141. package/dist/live-view.d.ts +36 -0
  142. package/dist/live-view.js +105 -0
  143. package/dist/live-view.js.map +7 -0
  144. package/dist/locator-extractor.d.ts +46 -0
  145. package/dist/locator-extractor.js +220 -0
  146. package/dist/locator-extractor.js.map +7 -0
  147. package/dist/logger.d.ts +2 -0
  148. package/dist/logger.js +10 -0
  149. package/dist/logger.js.map +7 -0
  150. package/dist/markdown-extract.d.ts +8 -0
  151. package/dist/markdown-extract.js +54 -0
  152. package/dist/markdown-extract.js.map +7 -0
  153. package/dist/multi-context-handler.d.ts +55 -0
  154. package/dist/multi-context-handler.js +182 -0
  155. package/dist/multi-context-handler.js.map +7 -0
  156. package/dist/native-crawler.d.ts +69 -0
  157. package/dist/native-crawler.js +839 -0
  158. package/dist/native-crawler.js.map +7 -0
  159. package/dist/nested-window-crawler.d.ts +41 -0
  160. package/dist/nested-window-crawler.js +172 -0
  161. package/dist/nested-window-crawler.js.map +7 -0
  162. package/dist/network-action-correlator.d.ts +47 -0
  163. package/dist/network-action-correlator.js +209 -0
  164. package/dist/network-action-correlator.js.map +7 -0
  165. package/dist/network-observer.d.ts +49 -0
  166. package/dist/network-observer.js +149 -0
  167. package/dist/network-observer.js.map +7 -0
  168. package/dist/network-throttle.d.ts +25 -0
  169. package/dist/network-throttle.js +34 -0
  170. package/dist/network-throttle.js.map +7 -0
  171. package/dist/openapi-generator.d.ts +49 -0
  172. package/dist/openapi-generator.js +89 -0
  173. package/dist/openapi-generator.js.map +7 -0
  174. package/dist/pdf-extractor.d.ts +28 -0
  175. package/dist/pdf-extractor.js +81 -0
  176. package/dist/pdf-extractor.js.map +7 -0
  177. package/dist/performance-metrics-collector.d.ts +50 -0
  178. package/dist/performance-metrics-collector.js +155 -0
  179. package/dist/performance-metrics-collector.js.map +7 -0
  180. package/dist/performance-metrics.d.ts +52 -0
  181. package/dist/performance-metrics.js +83 -0
  182. package/dist/performance-metrics.js.map +7 -0
  183. package/dist/phash.d.ts +50 -0
  184. package/dist/phash.js +136 -0
  185. package/dist/phash.js.map +7 -0
  186. package/dist/pii-scrubber.d.ts +21 -0
  187. package/dist/pii-scrubber.js +75 -0
  188. package/dist/pii-scrubber.js.map +7 -0
  189. package/dist/playwright-recorder.d.ts +39 -0
  190. package/dist/playwright-recorder.js +123 -0
  191. package/dist/playwright-recorder.js.map +7 -0
  192. package/dist/policies/crawl-safety.d.ts +9 -0
  193. package/dist/policies/crawl-safety.js +41 -0
  194. package/dist/policies/crawl-safety.js.map +7 -0
  195. package/dist/profiles/domain-profile.d.ts +19 -0
  196. package/dist/profiles/domain-profile.js +160 -0
  197. package/dist/profiles/domain-profile.js.map +7 -0
  198. package/dist/proxy.d.ts +50 -0
  199. package/dist/proxy.js +165 -0
  200. package/dist/proxy.js.map +7 -0
  201. package/dist/rate-limiter.d.ts +31 -0
  202. package/dist/rate-limiter.js +64 -0
  203. package/dist/rate-limiter.js.map +7 -0
  204. package/dist/redirect-tracker.d.ts +37 -0
  205. package/dist/redirect-tracker.js +65 -0
  206. package/dist/redirect-tracker.js.map +7 -0
  207. package/dist/redis-frontier.d.ts +48 -0
  208. package/dist/redis-frontier.js +126 -0
  209. package/dist/redis-frontier.js.map +7 -0
  210. package/dist/redis-queue.d.ts +48 -0
  211. package/dist/redis-queue.js +165 -0
  212. package/dist/redis-queue.js.map +7 -0
  213. package/dist/response-cache.d.ts +38 -0
  214. package/dist/response-cache.js +140 -0
  215. package/dist/response-cache.js.map +7 -0
  216. package/dist/responsive-detector.d.ts +29 -0
  217. package/dist/responsive-detector.js +46 -0
  218. package/dist/responsive-detector.js.map +7 -0
  219. package/dist/retry-policy.d.ts +20 -0
  220. package/dist/retry-policy.js +54 -0
  221. package/dist/retry-policy.js.map +7 -0
  222. package/dist/robots-txt.d.ts +9 -0
  223. package/dist/robots-txt.js +77 -0
  224. package/dist/robots-txt.js.map +7 -0
  225. package/dist/screen-reader.d.ts +15 -0
  226. package/dist/screen-reader.js +48 -0
  227. package/dist/screen-reader.js.map +7 -0
  228. package/dist/screenshot-masker.d.ts +28 -0
  229. package/dist/screenshot-masker.js +62 -0
  230. package/dist/screenshot-masker.js.map +7 -0
  231. package/dist/seo-checker.d.ts +33 -0
  232. package/dist/seo-checker.js +91 -0
  233. package/dist/seo-checker.js.map +7 -0
  234. package/dist/service-worker-interceptor.d.ts +36 -0
  235. package/dist/service-worker-interceptor.js +136 -0
  236. package/dist/service-worker-interceptor.js.map +7 -0
  237. package/dist/session-capture.d.ts +39 -0
  238. package/dist/session-capture.js +274 -0
  239. package/dist/session-capture.js.map +7 -0
  240. package/dist/session-export.d.ts +49 -0
  241. package/dist/session-export.js +117 -0
  242. package/dist/session-export.js.map +7 -0
  243. package/dist/shadow-dom-crawler.d.ts +35 -0
  244. package/dist/shadow-dom-crawler.js +132 -0
  245. package/dist/shadow-dom-crawler.js.map +7 -0
  246. package/dist/sitemap-writer.d.ts +21 -0
  247. package/dist/sitemap-writer.js +47 -0
  248. package/dist/sitemap-writer.js.map +7 -0
  249. package/dist/sitemap.d.ts +51 -0
  250. package/dist/sitemap.js +160 -0
  251. package/dist/sitemap.js.map +7 -0
  252. package/dist/skyvern.d.ts +56 -0
  253. package/dist/skyvern.js +129 -0
  254. package/dist/skyvern.js.map +7 -0
  255. package/dist/sqs-queue.d.ts +13 -0
  256. package/dist/sqs-queue.js +115 -0
  257. package/dist/sqs-queue.js.map +7 -0
  258. package/dist/sso-token.d.ts +29 -0
  259. package/dist/sso-token.js +76 -0
  260. package/dist/sso-token.js.map +7 -0
  261. package/dist/state-graph.d.ts +59 -0
  262. package/dist/state-graph.js +193 -0
  263. package/dist/state-graph.js.map +7 -0
  264. package/dist/stealth/human-behavior.d.ts +20 -0
  265. package/dist/stealth/human-behavior.js +202 -0
  266. package/dist/stealth/human-behavior.js.map +7 -0
  267. package/dist/telemetry.d.ts +34 -0
  268. package/dist/telemetry.js +77 -0
  269. package/dist/telemetry.js.map +7 -0
  270. package/dist/test-executor.d.ts +81 -0
  271. package/dist/test-executor.js +443 -0
  272. package/dist/test-executor.js.map +7 -0
  273. package/dist/tls-fingerprint.d.ts +50 -0
  274. package/dist/tls-fingerprint.js +81 -0
  275. package/dist/tls-fingerprint.js.map +7 -0
  276. package/dist/url-pattern-completer.d.ts +28 -0
  277. package/dist/url-pattern-completer.js +122 -0
  278. package/dist/url-pattern-completer.js.map +7 -0
  279. package/dist/visual-diff-verdict.d.ts +40 -0
  280. package/dist/visual-diff-verdict.js +27 -0
  281. package/dist/visual-diff-verdict.js.map +7 -0
  282. package/dist/webhook-notifier.d.ts +30 -0
  283. package/dist/webhook-notifier.js +76 -0
  284. package/dist/webhook-notifier.js.map +7 -0
  285. package/dist/websocket-detector.d.ts +24 -0
  286. package/dist/websocket-detector.js +60 -0
  287. package/dist/websocket-detector.js.map +7 -0
  288. package/dist/worker.d.ts +1 -0
  289. package/dist/worker.js +33 -0
  290. package/dist/worker.js.map +7 -0
  291. package/package.json +49 -4
  292. package/src/accessibility-auditor.ts +102 -0
  293. package/src/accessibility-tree-crawler.ts +246 -0
  294. package/src/advanced-ui-probes.ts +470 -0
  295. package/src/ai-login.ts +298 -0
  296. package/src/auth-token-rotator.ts +89 -0
  297. package/src/auth.ts +418 -0
  298. package/src/browser-extension.ts +186 -0
  299. package/src/captcha-solver.ts +143 -0
  300. package/src/color-contrast.ts +116 -0
  301. package/src/content-chunker.ts +170 -0
  302. package/src/content-dedup.ts +99 -0
  303. package/src/cookie-consent.ts +106 -0
  304. package/src/cookie-jar.ts +91 -0
  305. package/src/crawl-session-manager.ts +231 -0
  306. package/src/crawler.ts +7123 -0
  307. package/src/crawler.ts.rej +12 -0
  308. package/src/crud-interaction.ts +386 -0
  309. package/src/custom-js-injector.ts +93 -0
  310. package/src/dark-mode-capture.ts +110 -0
  311. package/src/dead-link-detector.ts +76 -0
  312. package/src/dropdown-enumerator.ts +312 -0
  313. package/src/element-hash.ts +16 -0
  314. package/src/email-otp.ts +252 -0
  315. package/src/engine-router.ts +141 -0
  316. package/src/export/bulk-export.ts +85 -0
  317. package/src/export/vector-export.ts +160 -0
  318. package/src/extractors/advanced.ts +309 -0
  319. package/src/extractors/artifact-envelope.ts +111 -0
  320. package/src/extractors/branding-extractor.ts +159 -0
  321. package/src/extractors/summary-extractor.ts +49 -0
  322. package/src/failure-analysis-agent.ts +51 -0
  323. package/src/feature-flag-detector.ts +97 -0
  324. package/src/filter-pagination-crawler.ts +500 -0
  325. package/src/form-detector.ts +103 -0
  326. package/src/frontier.test.ts +64 -0
  327. package/src/frontier.ts +144 -0
  328. package/src/gap-pass.ts +165 -0
  329. package/src/graphql-detector.ts +129 -0
  330. package/src/http-engine.ts +453 -0
  331. package/src/incremental-diff.ts +259 -0
  332. package/src/index.ts +52 -0
  333. package/src/input-fuzzer.ts +129 -0
  334. package/src/interactive-probe.ts +1136 -0
  335. package/src/job-queue.test.ts +187 -0
  336. package/src/job-queue.ts +4504 -0
  337. package/src/js-coverage.ts +87 -0
  338. package/src/js-router-detector.ts +112 -0
  339. package/src/language-detector.ts +82 -0
  340. package/src/link-classifier.ts +65 -0
  341. package/src/live-view.ts +146 -0
  342. package/src/locator-extractor.ts +309 -0
  343. package/src/logger.ts +9 -0
  344. package/src/markdown-extract.test.ts +73 -0
  345. package/src/markdown-extract.ts +76 -0
  346. package/src/multi-context-handler.ts +296 -0
  347. package/src/native-crawler.ts +1108 -0
  348. package/src/nested-window-crawler.ts +310 -0
  349. package/src/network-action-correlator.ts +320 -0
  350. package/src/network-observer.ts +204 -0
  351. package/src/network-throttle.ts +69 -0
  352. package/src/openapi-generator.ts +135 -0
  353. package/src/pdf-extractor.ts +123 -0
  354. package/src/performance-metrics-collector.ts +243 -0
  355. package/src/performance-metrics.ts +134 -0
  356. package/src/phash.ts +184 -0
  357. package/src/pii-scrubber.ts +99 -0
  358. package/src/playwright-recorder.ts +170 -0
  359. package/src/policies/crawl-safety.ts +52 -0
  360. package/src/profiles/domain-profile.ts +190 -0
  361. package/src/proxy.ts +238 -0
  362. package/src/rate-limiter.ts +87 -0
  363. package/src/redirect-tracker.ts +97 -0
  364. package/src/redis-frontier.ts +143 -0
  365. package/src/redis-queue.ts +208 -0
  366. package/src/response-cache.ts +150 -0
  367. package/src/responsive-detector.ts +92 -0
  368. package/src/retry-policy.ts +87 -0
  369. package/src/robots-txt.ts +96 -0
  370. package/src/screen-reader.ts +98 -0
  371. package/src/screenshot-masker.ts +98 -0
  372. package/src/seo-checker.ts +134 -0
  373. package/src/service-worker-interceptor.ts +185 -0
  374. package/src/session-capture.ts +335 -0
  375. package/src/session-export.test.ts +75 -0
  376. package/src/session-export.ts +172 -0
  377. package/src/shadow-dom-crawler.ts +198 -0
  378. package/src/sitemap-writer.ts +65 -0
  379. package/src/sitemap.test.ts +127 -0
  380. package/src/sitemap.ts +233 -0
  381. package/src/skyvern.ts +199 -0
  382. package/src/sqs-queue.ts +129 -0
  383. package/src/sso-token.ts +120 -0
  384. package/src/state-graph.ts +280 -0
  385. package/src/stealth/human-behavior.ts +227 -0
  386. package/src/telemetry.ts +122 -0
  387. package/src/test-executor.test.ts +72 -0
  388. package/src/test-executor.ts +578 -0
  389. package/src/tls-fingerprint.ts +111 -0
  390. package/src/url-pattern-completer.ts +161 -0
  391. package/src/vendor.d.ts +20 -0
  392. package/src/visual-diff-verdict.test.ts +80 -0
  393. package/src/visual-diff-verdict.ts +59 -0
  394. package/src/webhook-notifier.ts +109 -0
  395. package/src/websocket-detector.ts +83 -0
  396. package/src/worker.ts +50 -0
  397. package/tsconfig.json +13 -0
  398. package/types/accessibility-auditor.d.ts +29 -0
  399. package/types/accessibility-tree-crawler.d.ts +44 -0
  400. package/types/advanced-ui-probes.d.ts +47 -0
  401. package/types/ai-login.d.ts +32 -0
  402. package/types/auth-token-rotator.d.ts +47 -0
  403. package/types/auth.d.ts +20 -0
  404. package/types/browser-extension.d.ts +37 -0
  405. package/types/bull-worker.d.ts +6 -0
  406. package/types/captcha-solver.d.ts +16 -0
  407. package/types/color-contrast.d.ts +30 -0
  408. package/types/content-chunker.d.ts +18 -0
  409. package/types/content-dedup.d.ts +23 -0
  410. package/types/cookie-consent.d.ts +25 -0
  411. package/types/cookie-jar.d.ts +20 -0
  412. package/types/crawl-session-manager.d.ts +44 -0
  413. package/types/crawler.d.ts +233 -0
  414. package/types/crud-interaction.d.ts +31 -0
  415. package/types/custom-js-injector.d.ts +42 -0
  416. package/types/dark-mode-capture.d.ts +23 -0
  417. package/types/dead-link-detector.d.ts +37 -0
  418. package/types/dropdown-enumerator.d.ts +20 -0
  419. package/types/element-hash.d.ts +9 -0
  420. package/types/email-otp.d.ts +42 -0
  421. package/types/engine-router.d.ts +47 -0
  422. package/types/export/bulk-export.d.ts +26 -0
  423. package/types/export/vector-export.d.ts +76 -0
  424. package/types/extractors/advanced.d.ts +64 -0
  425. package/types/extractors/artifact-envelope.d.ts +63 -0
  426. package/types/extractors/branding-extractor.d.ts +46 -0
  427. package/types/extractors/summary-extractor.d.ts +10 -0
  428. package/types/failure-analysis-agent.d.ts +16 -0
  429. package/types/feature-flag-detector.d.ts +30 -0
  430. package/types/filter-pagination-crawler.d.ts +52 -0
  431. package/types/form-detector.d.ts +34 -0
  432. package/types/frontier.d.ts +40 -0
  433. package/types/gap-pass.d.ts +36 -0
  434. package/types/graphql-detector.d.ts +39 -0
  435. package/types/http-engine.d.ts +80 -0
  436. package/types/incremental-diff.d.ts +116 -0
  437. package/types/index.d.ts +52 -0
  438. package/types/input-fuzzer.d.ts +30 -0
  439. package/types/interactive-probe.d.ts +144 -0
  440. package/types/job-queue.d.ts +308 -0
  441. package/types/js-coverage.d.ts +29 -0
  442. package/types/js-router-detector.d.ts +17 -0
  443. package/types/language-detector.d.ts +22 -0
  444. package/types/link-classifier.d.ts +23 -0
  445. package/types/live-view.d.ts +36 -0
  446. package/types/locator-extractor.d.ts +46 -0
  447. package/types/logger.d.ts +2 -0
  448. package/types/markdown-extract.d.ts +8 -0
  449. package/types/multi-context-handler.d.ts +55 -0
  450. package/types/native-crawler.d.ts +69 -0
  451. package/types/nested-window-crawler.d.ts +41 -0
  452. package/types/network-action-correlator.d.ts +47 -0
  453. package/types/network-observer.d.ts +49 -0
  454. package/types/network-throttle.d.ts +25 -0
  455. package/types/openapi-generator.d.ts +49 -0
  456. package/types/pdf-extractor.d.ts +28 -0
  457. package/types/performance-metrics-collector.d.ts +50 -0
  458. package/types/performance-metrics.d.ts +52 -0
  459. package/types/phash.d.ts +50 -0
  460. package/types/pii-scrubber.d.ts +21 -0
  461. package/types/playwright-recorder.d.ts +39 -0
  462. package/types/policies/crawl-safety.d.ts +9 -0
  463. package/types/profiles/domain-profile.d.ts +19 -0
  464. package/types/proxy.d.ts +50 -0
  465. package/types/rate-limiter.d.ts +31 -0
  466. package/types/redirect-tracker.d.ts +37 -0
  467. package/types/redis-frontier.d.ts +48 -0
  468. package/types/redis-queue.d.ts +48 -0
  469. package/types/response-cache.d.ts +38 -0
  470. package/types/responsive-detector.d.ts +29 -0
  471. package/types/retry-policy.d.ts +20 -0
  472. package/types/robots-txt.d.ts +9 -0
  473. package/types/screen-reader.d.ts +15 -0
  474. package/types/screenshot-masker.d.ts +28 -0
  475. package/types/seo-checker.d.ts +33 -0
  476. package/types/service-worker-interceptor.d.ts +36 -0
  477. package/types/session-capture.d.ts +39 -0
  478. package/types/session-export.d.ts +49 -0
  479. package/types/shadow-dom-crawler.d.ts +35 -0
  480. package/types/sitemap-writer.d.ts +21 -0
  481. package/types/sitemap.d.ts +51 -0
  482. package/types/skyvern.d.ts +56 -0
  483. package/types/sqs-queue.d.ts +13 -0
  484. package/types/sso-token.d.ts +29 -0
  485. package/types/state-graph.d.ts +59 -0
  486. package/types/stealth/human-behavior.d.ts +20 -0
  487. package/types/telemetry.d.ts +34 -0
  488. package/types/test-executor.d.ts +84 -0
  489. package/types/tls-fingerprint.d.ts +50 -0
  490. package/types/url-pattern-completer.d.ts +28 -0
  491. package/types/visual-diff-verdict.d.ts +40 -0
  492. package/types/webhook-notifier.d.ts +30 -0
  493. package/types/websocket-detector.d.ts +24 -0
  494. package/types/worker.d.ts +1 -0
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Configurable crawl traversal strategy — matches crawl4AI's BFS/DFS/
3
+ * Best-First deep-crawl strategies (ZeTa previously had a single hardcoded
4
+ * FIFO queue, i.e. always BFS).
5
+ *
6
+ * Array-like on purpose (`length`, `shift()`, `push()`, `filter()`) so it
7
+ * drops into crawler.ts's existing queue call sites with a rename, not a
8
+ * rewrite — BFS's `shift()` behavior is byte-for-byte the same as the plain
9
+ * array it replaces, so BFS (the default) has zero behavior change.
10
+ */
11
+ export type TraversalStrategy = 'BFS' | 'DFS' | 'BEST_FIRST';
12
+ /**
13
+ * Simple glob-like pattern matching against a URL's pathname.
14
+ * Supports `*` (matches any single path segment characters, not `/`)
15
+ * and `**` (matches anything including `/`).
16
+ */
17
+ export declare function matchesPattern(url: string, patterns: string[]): boolean;
18
+ export declare class CrawlFrontier {
19
+ private items;
20
+ private readonly strategy;
21
+ private readonly keywords;
22
+ private readonly urlFilter;
23
+ private readonly includePatterns;
24
+ private readonly excludePatterns;
25
+ constructor(strategy: TraversalStrategy, seedUrls: string[], keywords?: string[], urlFilter?: string, includePatterns?: string[], excludePatterns?: string[]);
26
+ get length(): number;
27
+ /**
28
+ * P3b: sparse-parent boost — if the parent page had fewer than 5 interactive
29
+ * elements (thin/canvas page), its child URLs score +1 in BEST_FIRST mode so
30
+ * the frontier revisits sparse branches before deep-linked content.
31
+ */
32
+ push(url: string, pushOpts?: {
33
+ parentElements?: number;
34
+ }): void;
35
+ /** Dequeues the next URL per this frontier's strategy. undefined if empty. */
36
+ shift(): string | undefined;
37
+ filter(predicate: (url: string) => boolean): string[];
38
+ /** Remove queued URLs not matching the regex pattern. Returns count removed. */
39
+ filterByPattern(pattern: string): number;
40
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * P6: Gap Pass — LLM-guided second crawl pass
3
+ *
4
+ * After the primary BFS crawl completes, this module:
5
+ * 1. Sends the discovered screen list to an LLM for gap analysis
6
+ * 2. HEAD-validates each suggested URL
7
+ * 3. Returns confirmed gap URLs for targeted re-crawl
8
+ *
9
+ * The caller (crawler.ts) is responsible for actually visiting the confirmed
10
+ * URLs with the existing browser — this module only identifies them.
11
+ */
12
+ export interface GapCandidate {
13
+ category: string;
14
+ urlPatterns: string[];
15
+ confidence: number;
16
+ rationale: string;
17
+ confirmedUrl: string | null;
18
+ headStatus: number | null;
19
+ }
20
+ interface DiscoveredScreen {
21
+ url: string;
22
+ name?: string;
23
+ elements?: number;
24
+ }
25
+ interface LlmCfg {
26
+ provider: string;
27
+ model: string;
28
+ apiKey?: string;
29
+ baseUrl?: string;
30
+ }
31
+ /**
32
+ * Run LLM gap analysis + HEAD validation.
33
+ * Returns candidates with `confirmedUrl` set for those where HEAD returned 200.
34
+ */
35
+ export declare function runGapAnalysis(screens: DiscoveredScreen[], appUrl: string, llmCfg: LlmCfg | null | undefined): Promise<GapCandidate[]>;
36
+ export {};
@@ -0,0 +1,39 @@
1
+ /**
2
+ * GraphQL detection + introspection.
3
+ *
4
+ * During crawl, if a GraphQL endpoint is discovered (via network observer or
5
+ * known-URL heuristics), fire a minimal introspection query to get the schema.
6
+ * The schema is stored in the crawl artifact for use during test generation.
7
+ */
8
+ export interface GqlType {
9
+ name: string;
10
+ kind: string;
11
+ fields?: Array<{
12
+ name: string;
13
+ type: string;
14
+ }>;
15
+ inputFields?: Array<{
16
+ name: string;
17
+ type: string;
18
+ }>;
19
+ enumValues?: string[];
20
+ }
21
+ export interface GqlSchema {
22
+ queryType?: string;
23
+ mutationType?: string;
24
+ subscriptionType?: string;
25
+ types: GqlType[];
26
+ }
27
+ export interface GqlIntrospectionResult {
28
+ endpoint: string;
29
+ schema: GqlSchema | null;
30
+ error?: string;
31
+ durationMs: number;
32
+ }
33
+ export declare function introspectGraphQL(endpoint: string, opts?: {
34
+ headers?: Record<string, string>;
35
+ timeoutMs?: number;
36
+ cookies?: string;
37
+ }): Promise<GqlIntrospectionResult>;
38
+ /** Guess GraphQL endpoint URLs from a known app URL. */
39
+ export declare function guessGraphQLEndpoints(appUrl: string): string[];
@@ -0,0 +1,80 @@
1
+ /**
2
+ * HTTP-only crawl engine — 10-50x faster than browser for SSR/static sites.
3
+ *
4
+ * Uses native Node.js fetch (HTTP/2), linkedom, Readability, and Turndown.
5
+ * No browser overhead. Falls back to browser engine on JS-heavy sites.
6
+ *
7
+ * Features:
8
+ * - HTTP/2 native (Node 20 built-in fetch)
9
+ * - ETag / Last-Modified response caching
10
+ * - 429 / 503 exponential backoff with jitter
11
+ * - BFS / DFS traversal
12
+ * - URL regex filtering
13
+ * - Robots.txt compliance
14
+ * - Link discovery (href, action, src)
15
+ * - Markdown extraction (Readability + Turndown)
16
+ * - OG / schema.org / meta extraction
17
+ * - Table → JSON extraction
18
+ * - JSON Lines, CSV, raw HTML output formats
19
+ * - Streaming progress via onProgress callback
20
+ */
21
+ export type HttpOutputFormat = 'json' | 'jsonlines' | 'csv' | 'markdown' | 'html';
22
+ export interface HttpScreen {
23
+ url: string;
24
+ title: string | null;
25
+ markdown: string;
26
+ html?: string;
27
+ metadata: {
28
+ description: string | null;
29
+ ogTitle: string | null;
30
+ ogDescription: string | null;
31
+ ogImage: string | null;
32
+ canonical: string | null;
33
+ schemaTypes: string[];
34
+ lang: string | null;
35
+ };
36
+ tables: Array<Record<string, string>[]>;
37
+ links: string[];
38
+ images: Array<{
39
+ src: string;
40
+ alt: string;
41
+ }>;
42
+ statusCode: number;
43
+ fromCache: boolean;
44
+ requiresBrowser?: boolean;
45
+ durationMs: number;
46
+ }
47
+ export interface HttpCrawlOpts {
48
+ appUrl: string;
49
+ maxScreens?: number;
50
+ urlFilter?: string;
51
+ traversalStrategy?: 'BFS' | 'DFS';
52
+ outputFormats?: HttpOutputFormat[];
53
+ cacheDir?: string;
54
+ userAgent?: string;
55
+ headers?: Record<string, string>;
56
+ respectRobotsTxt?: boolean;
57
+ includeRawHtml?: boolean;
58
+ timeoutMs?: number;
59
+ concurrency?: number;
60
+ onProgress?: (update: {
61
+ url: string;
62
+ screensFound: number;
63
+ total: number;
64
+ cached: boolean;
65
+ }) => void;
66
+ }
67
+ export interface HttpCrawlResult {
68
+ screens: HttpScreen[];
69
+ stats: {
70
+ total: number;
71
+ cached: number;
72
+ errors: number;
73
+ rateLimited: number;
74
+ durationMs: number;
75
+ cacheHitRate: number;
76
+ };
77
+ jsonLines?: string;
78
+ csv?: string;
79
+ }
80
+ export declare function httpCrawl(opts: HttpCrawlOpts): Promise<HttpCrawlResult>;
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Incremental crawl diff — compute stable content hashes and skip unchanged screens.
3
+ *
4
+ * Each crawled page gets a content fingerprint (murmurhash-free, pure JS).
5
+ * On the next crawl of the same project, pages with the same fingerprint are
6
+ * marked SKIPPED instead of re-processed, drastically reducing crawl time and
7
+ * LLM token spend for sites with mostly-static content.
8
+ *
9
+ * Design: "same content hash" means the meaningful text hasn't changed.
10
+ * Layout/CSS/JS changes that don't affect visible text are ignored intentionally.
11
+ */
12
+ export interface ContentHash {
13
+ url: string;
14
+ hash: string;
15
+ textLength: number;
16
+ computedAt: string;
17
+ }
18
+ export interface DiffResult {
19
+ url: string;
20
+ changed: boolean;
21
+ previousHash?: string;
22
+ currentHash: string;
23
+ reason: 'new' | 'changed' | 'unchanged';
24
+ }
25
+ /**
26
+ * Compute a stable 64-bit-ish hash from text content.
27
+ * djb2 variant — fast, no deps, collision-resistant enough for content fingerprinting.
28
+ */
29
+ export declare function hashContent(text: string): string;
30
+ /**
31
+ * Normalize text before hashing — strips whitespace-only lines, trims each line,
32
+ * collapses runs of blank lines. Makes hash stable across minor formatting changes.
33
+ */
34
+ export declare function normalizeText(text: string): string;
35
+ export declare function computeContentHash(url: string, markdownText: string): ContentHash;
36
+ /**
37
+ * Compare a page's current content against prior hashes.
38
+ * Returns { changed: false } for unchanged pages — caller should skip re-processing.
39
+ */
40
+ export declare function diffContent(url: string, currentMarkdown: string, priorHashes: Map<string, string>): DiffResult;
41
+ /**
42
+ * Build a hash map from prior screen records (from DB query result).
43
+ * screenRecords: Array<{ url: string; elementHash?: string | null }>
44
+ */
45
+ export declare function buildPriorHashMap(screenRecords: Array<{
46
+ url: string;
47
+ elementHash?: string | null;
48
+ }>): Map<string, string>;
49
+ /**
50
+ * Filter a batch of discovered URLs against prior hashes.
51
+ * Returns { toProcess, toSkip } — caller enqueues toProcess, logs toSkip count.
52
+ *
53
+ * Note: filtering at URL level only works if the prior crawl already visited the URL.
54
+ * For new URLs, they're always in toProcess.
55
+ */
56
+ export declare function partitionByChange(urls: string[], priorHashes: Map<string, string>): {
57
+ toProcess: string[];
58
+ toSkip: string[];
59
+ };
60
+ /** A single line-level change in text content (markdown, html, summary). */
61
+ export interface TextChange {
62
+ type: 'added' | 'removed';
63
+ line: number;
64
+ content: string;
65
+ }
66
+ /** A change to a specific JSON path between two scraped JSON objects. */
67
+ export interface JsonChange {
68
+ path: string;
69
+ old: unknown;
70
+ new: unknown;
71
+ }
72
+ /** Set-based change for collections like links or images. */
73
+ export interface SetChange {
74
+ added: string[];
75
+ removed: string[];
76
+ }
77
+ /** Screenshot pixel-level change. changed is percentage (0-100). */
78
+ export interface ImageChange {
79
+ size: number;
80
+ changed: number;
81
+ mask?: string;
82
+ }
83
+ /** All possible diffs for a single monitor tick. */
84
+ export interface MonitorDiffs {
85
+ markdown?: TextChange[];
86
+ html?: TextChange[];
87
+ json?: JsonChange[];
88
+ summary?: TextChange[];
89
+ links?: SetChange;
90
+ images?: SetChange;
91
+ branding?: JsonChange[];
92
+ screenshot?: ImageChange;
93
+ }
94
+ /**
95
+ * Compute line-level text diffs between two strings.
96
+ * Returns TextChange[] showing exactly which lines were added or removed.
97
+ * No external dependencies — pure JS Myers-inspired algorithm.
98
+ */
99
+ export declare function computeTextDiffs(previous: string, current: string): TextChange[];
100
+ /**
101
+ * Compute set-based diffs for URL collections (links, images).
102
+ */
103
+ export declare function computeSetDiffs(previous: string[], current: string[]): SetChange;
104
+ /**
105
+ * Flatten a JSON object into dot-notation path/value pairs.
106
+ * Used to compute JsonChange[] between two JSON extraction results.
107
+ */
108
+ export declare function flattenJson(obj: unknown, prefix?: string): Record<string, unknown>;
109
+ /**
110
+ * Compute JSON path-level diffs between two extraction results.
111
+ */
112
+ export declare function computeJsonDiffs(previous: unknown, current: unknown): JsonChange[];
113
+ /**
114
+ * Count total number of changes across all diff types.
115
+ */
116
+ export declare function countMonitorDiffs(diffs: MonitorDiffs): number;
@@ -0,0 +1,52 @@
1
+ export * from './crawler.js';
2
+ export * from './visual-diff-verdict.js';
3
+ export * from './auth.js';
4
+ export * from './screen-reader.js';
5
+ export * from './job-queue.js';
6
+ export { startSqsWorker, getDlqStats, redriveFromDlq } from './sqs-queue.js';
7
+ export * from './session-capture.js';
8
+ export * from './session-export.js';
9
+ export * from './test-executor.js';
10
+ export { startLiveView, getFrame, liveViewNavigate, completeLiveView, closeLiveView, sendInput } from './live-view.js';
11
+ export { waitForEmailOTP, getInboxEmail } from './email-otp.js';
12
+ export { getSsoToken, getSsoClientCredentialsToken } from './sso-token.js';
13
+ export type { SsoConfig, SsoProvider } from './sso-token.js';
14
+ export * from './engine-router.js';
15
+ export * from './profiles/domain-profile.js';
16
+ export * from './policies/crawl-safety.js';
17
+ export * from './extractors/artifact-envelope.js';
18
+ export * from './network-observer.js';
19
+ export { createChromeTlsAgent, probeTlsFingerprint, chromeTlsAgent, CHROME_TLS_HEADERS } from './tls-fingerprint.js';
20
+ export type { TlsFingerprintOptions } from './tls-fingerprint.js';
21
+ export { prepareExtensionProfile, adBlockerProfile } from './browser-extension.js';
22
+ export type { ExtensionSource, ExtensionProfile } from './browser-extension.js';
23
+ export { createRedisQueue, maybeCreateRedisQueue, isRedisQueueEnabled } from './redis-queue.js';
24
+ export type { RedisQueueJob, RedisQueueClient } from './redis-queue.js';
25
+ export { discoverProjectUrls, discoverSitemapUrls } from './sitemap.js';
26
+ export type { UrlCandidate } from './sitemap.js';
27
+ export { httpCrawl } from './http-engine.js';
28
+ export { extractMarkdown } from './markdown-extract.js';
29
+ export type { ExtractedMarkdown } from './markdown-extract.js';
30
+ export type { HttpScreen, HttpCrawlOpts, HttpCrawlResult, HttpOutputFormat } from './http-engine.js';
31
+ export { TieredProxyManager } from './proxy.js';
32
+ export type { ProxyTier, ProxyTierConfig } from './proxy.js';
33
+ export { RedisCrawlFrontier, isRedisFrontierEnabled } from './redis-frontier.js';
34
+ export { startSpan, endSpan, withSpan, increment, flushMetrics } from './telemetry.js';
35
+ export type { Span, FinishedSpan } from './telemetry.js';
36
+ export { analyzeFailure } from './failure-analysis-agent.js';
37
+ export type { FailureContext } from './failure-analysis-agent.js';
38
+ export { elementToPlaywrightLocator, elementsToPlaywrightLocators, formatLocatorsForPrompt, detectAuthWallLocators } from './locator-extractor.js';
39
+ export type { PlaywrightLocator } from './locator-extractor.js';
40
+ export * from './dropdown-enumerator.js';
41
+ export * from './crud-interaction.js';
42
+ export * from './filter-pagination-crawler.js';
43
+ export * from './multi-context-handler.js';
44
+ export * from './advanced-ui-probes.js';
45
+ export * from './state-graph.js';
46
+ export * from './nested-window-crawler.js';
47
+ export * from './shadow-dom-crawler.js';
48
+ export * from './network-action-correlator.js';
49
+ export * from './crawl-session-manager.js';
50
+ export * from './accessibility-tree-crawler.js';
51
+ export * from './performance-metrics.js';
52
+ export * from './service-worker-interceptor.js';
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Input fuzzer — generate test data for form fields.
3
+ *
4
+ * For each field type, produces a set of test values covering:
5
+ * - Happy path (valid, normal input)
6
+ * - Boundary (min/max length, min/max value)
7
+ * - Edge cases (empty, very long, special chars, SQL injection probe, XSS probe)
8
+ * - Type-invalid (wrong type for the field)
9
+ *
10
+ * This feeds ZeTa's test generator to automatically create form validation tests.
11
+ * Values are safe probes (NOT actual exploits) — they test whether the app
12
+ * properly rejects/accepts boundary inputs.
13
+ */
14
+ import type { FormField } from './form-detector.js';
15
+ export type InputCase = {
16
+ label: string;
17
+ value: string;
18
+ expectedValid: boolean;
19
+ category: 'happy' | 'boundary' | 'edge' | 'invalid';
20
+ };
21
+ export declare function generateFieldCases(field: FormField): InputCase[];
22
+ export interface FuzzedForm {
23
+ formIndex: number;
24
+ purpose: string;
25
+ fieldCases: Array<{
26
+ field: FormField;
27
+ cases: InputCase[];
28
+ }>;
29
+ }
30
+ export declare function fuzzForm(form: import('./form-detector.js').DetectedForm): FuzzedForm;
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Interactive Probe — Phase 2 Dynamic Observation
3
+ *
4
+ * The static crawl captures DOM structure at rest. This module runs AFTER the static crawl
5
+ * to observe dynamic behaviour by actually interacting with the UI:
6
+ *
7
+ * 1. Empty submit → captures required-field validation error messages
8
+ * 2. Invalid format → captures format validation errors (bad email, short password)
9
+ * 3. Button clicks → captures modal/dialog contents
10
+ * 4. Select changes → captures conditional reveals (show/hide logic)
11
+ * 5. Success paths → captures toast/banner messages (where input is safe)
12
+ *
13
+ * Results are stored as KnowledgeChunks (sourceType='probe') and update the
14
+ * ERROR_CATALOGUE + INTERACTION_PATTERNS skill files with real observed data
15
+ * instead of LLM inference.
16
+ *
17
+ * Call signature: probeScreen(page, screenId, elements, opts)
18
+ * Called from crawlProject() after static element extraction when opts.interactive=true.
19
+ */
20
+ import type { Page } from 'playwright';
21
+ export interface ProbeElementFact {
22
+ meaning: string;
23
+ role: string;
24
+ expectedData?: string;
25
+ }
26
+ export interface ValidationError {
27
+ field: string;
28
+ trigger: 'empty_submit' | 'invalid_format' | 'boundary';
29
+ errorText: string;
30
+ }
31
+ export interface SuccessMessage {
32
+ type: 'toast' | 'inline_success' | 'redirect';
33
+ content: string;
34
+ }
35
+ export interface ModalObservation {
36
+ triggerElement: string;
37
+ title: string;
38
+ content: string;
39
+ fields: string[];
40
+ stateId?: string;
41
+ domSnapshot?: string;
42
+ }
43
+ export interface ConditionalReveal {
44
+ triggerElement: string;
45
+ triggerValue: string;
46
+ revealedText: string;
47
+ stateId?: string;
48
+ domSnapshot?: string;
49
+ }
50
+ export interface TooltipCapture {
51
+ triggerLabel: string;
52
+ tooltipText: string;
53
+ }
54
+ export interface TabPanelCapture {
55
+ tabLabel: string;
56
+ panelContent: string;
57
+ panelHeading?: string;
58
+ }
59
+ export interface CarouselSlide {
60
+ slideIndex: number;
61
+ heading?: string;
62
+ content: string;
63
+ }
64
+ export interface WizardStep {
65
+ stepIndex: number;
66
+ stepLabel?: string;
67
+ content: string;
68
+ fields: string[];
69
+ }
70
+ export interface FocusTrapResult {
71
+ modalTrigger: string;
72
+ focusTrapped: boolean;
73
+ sampledFocused: string[];
74
+ }
75
+ export interface ContextMenuCapture {
76
+ trigger: string;
77
+ items: string[];
78
+ }
79
+ export interface ProbeResult {
80
+ screenId: string;
81
+ url: string;
82
+ validationErrors: ValidationError[];
83
+ successMessages: SuccessMessage[];
84
+ modals: ModalObservation[];
85
+ conditionals: ConditionalReveal[];
86
+ loadingPatterns: string[];
87
+ tooltips?: TooltipCapture[];
88
+ tabPanels?: TabPanelCapture[];
89
+ carouselSlides?: CarouselSlide[];
90
+ wizardSteps?: WizardStep[];
91
+ focusTraps?: FocusTrapResult[];
92
+ skipNavIssues?: string[];
93
+ contextMenus?: ContextMenuCapture[];
94
+ }
95
+ /**
96
+ * Run interactive probing on a single screen page.
97
+ * The page must already be navigated to the screen URL.
98
+ * `elements` is the output of the static extractElements pass.
99
+ */
100
+ export declare function probeScreen(page: Page, screenId: string, url: string, elements: ProbeElementFact[]): Promise<ProbeResult>;
101
+ /** Phase 5: Convert ProbeResult to typed ProbeObservationFact rows for direct DB storage. */
102
+ export declare function probeResultToObservations(result: ProbeResult): Array<{
103
+ elementMeaning: string;
104
+ observationType: string;
105
+ observedText: string;
106
+ triggeredBy: string;
107
+ }>;
108
+ /**
109
+ * Convert a ProbeResult into markdown to store as KnowledgeChunks
110
+ * and update ERROR_CATALOGUE + INTERACTION_PATTERNS skill files.
111
+ */
112
+ export declare function probeResultToMarkdown(result: ProbeResult): {
113
+ errorCatalogueChunk: string;
114
+ interactionPatternsChunk: string;
115
+ };
116
+ /**
117
+ * Run interactive probing for all screens discovered in a crawl session.
118
+ * Called from crawlProject() when opts.interactive = true.
119
+ */
120
+ export declare function probeAllScreens(page: any, tenantId: string, projectId: string, discovered: Array<{
121
+ url: string;
122
+ screenId?: string;
123
+ elements?: any[];
124
+ }>, onProgress?: (pct: number, step: string) => Promise<void>, jobId?: string): Promise<void>;
125
+ export interface FocusableElement {
126
+ tag: string;
127
+ role: string | null;
128
+ ariaLabel: string | null;
129
+ text: string | null;
130
+ hasFocusIndicator: boolean;
131
+ tabIndex: number | null;
132
+ }
133
+ export interface KeyboardNavResult {
134
+ focusableCount: number;
135
+ elementsWithNoFocusIndicator: number;
136
+ sequence: FocusableElement[];
137
+ issues: string[];
138
+ }
139
+ /**
140
+ * Probe keyboard navigation accessibility by pressing Tab up to 50 times and
141
+ * recording each focused element's properties and focus-indicator visibility.
142
+ * Stops early if focus wraps back to the start or hits the same element twice.
143
+ */
144
+ export declare function probeKeyboardNav(page: Page): Promise<KeyboardNavResult>;