@jitsusama/agentic-harness.core 0.1.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 (974) hide show
  1. package/README.md +52 -0
  2. package/dist/advisor/charter.d.ts +14 -0
  3. package/dist/advisor/charter.js +48 -0
  4. package/dist/advisor/findings.d.ts +43 -0
  5. package/dist/advisor/findings.js +82 -0
  6. package/dist/advisor/index.d.ts +24 -0
  7. package/dist/advisor/index.js +23 -0
  8. package/dist/advisor/settings.d.ts +16 -0
  9. package/dist/advisor/settings.js +30 -0
  10. package/dist/advisor/substantive.d.ts +14 -0
  11. package/dist/advisor/substantive.js +33 -0
  12. package/dist/advisor/tools.d.ts +38 -0
  13. package/dist/advisor/tools.js +202 -0
  14. package/dist/attribution/commit-hook.d.ts +53 -0
  15. package/dist/attribution/commit-hook.js +133 -0
  16. package/dist/attribution/gh-footer.d.ts +27 -0
  17. package/dist/attribution/gh-footer.js +80 -0
  18. package/dist/attribution/index.d.ts +11 -0
  19. package/dist/attribution/index.js +11 -0
  20. package/dist/attribution/model-name.d.ts +11 -0
  21. package/dist/attribution/model-name.js +26 -0
  22. package/dist/bin/attribution.d.ts +36 -0
  23. package/dist/bin/attribution.js +82 -0
  24. package/dist/bin/cli.d.ts +14 -0
  25. package/dist/bin/cli.js +236 -0
  26. package/dist/bin/gate-deps.d.ts +23 -0
  27. package/dist/bin/gate-deps.js +61 -0
  28. package/dist/bin/guardians.d.ts +51 -0
  29. package/dist/bin/guardians.js +174 -0
  30. package/dist/bin/memory.d.ts +16 -0
  31. package/dist/bin/memory.js +81 -0
  32. package/dist/bin/notes.d.ts +30 -0
  33. package/dist/bin/notes.js +67 -0
  34. package/dist/bin/process-exec.d.ts +14 -0
  35. package/dist/bin/process-exec.js +31 -0
  36. package/dist/bin/quest.d.ts +38 -0
  37. package/dist/bin/quest.js +187 -0
  38. package/dist/bin/slack-auth.d.ts +49 -0
  39. package/dist/bin/slack-auth.js +107 -0
  40. package/dist/clock/index.d.ts +46 -0
  41. package/dist/clock/index.js +72 -0
  42. package/dist/command/cwd.d.ts +21 -0
  43. package/dist/command/cwd.js +60 -0
  44. package/dist/command/edit.d.ts +14 -0
  45. package/dist/command/edit.js +22 -0
  46. package/dist/command/flags.d.ts +29 -0
  47. package/dist/command/flags.js +111 -0
  48. package/dist/command/index.d.ts +16 -0
  49. package/dist/command/index.js +12 -0
  50. package/dist/command/tokenize.d.ts +7 -0
  51. package/dist/command/tokenize.js +315 -0
  52. package/dist/command/types.d.ts +66 -0
  53. package/dist/command/types.js +9 -0
  54. package/dist/completion/index.d.ts +17 -0
  55. package/dist/completion/index.js +16 -0
  56. package/dist/completion/investigate.d.ts +63 -0
  57. package/dist/completion/investigate.js +198 -0
  58. package/dist/completion/resolve.d.ts +29 -0
  59. package/dist/completion/resolve.js +42 -0
  60. package/dist/completion/side.d.ts +51 -0
  61. package/dist/completion/side.js +93 -0
  62. package/dist/completion/types.d.ts +84 -0
  63. package/dist/completion/types.js +14 -0
  64. package/dist/exec/exec.d.ts +38 -0
  65. package/dist/exec/exec.js +51 -0
  66. package/dist/exec/index.d.ts +8 -0
  67. package/dist/exec/index.js +8 -0
  68. package/dist/gate/decision.d.ts +52 -0
  69. package/dist/gate/decision.js +68 -0
  70. package/dist/gate/deps.d.ts +14 -0
  71. package/dist/gate/deps.js +1 -0
  72. package/dist/gate/index.d.ts +2 -0
  73. package/dist/gate/index.js +1 -0
  74. package/dist/git-cli/index.d.ts +47 -0
  75. package/dist/git-cli/index.js +127 -0
  76. package/dist/github-cli/command-spec.d.ts +14 -0
  77. package/dist/github-cli/command-spec.js +18 -0
  78. package/dist/github-cli/index.d.ts +71 -0
  79. package/dist/github-cli/index.js +188 -0
  80. package/dist/google/apis/calendar.d.ts +64 -0
  81. package/dist/google/apis/calendar.js +297 -0
  82. package/dist/google/apis/docs.d.ts +29 -0
  83. package/dist/google/apis/docs.js +154 -0
  84. package/dist/google/apis/drive.d.ts +46 -0
  85. package/dist/google/apis/drive.js +189 -0
  86. package/dist/google/apis/gmail.d.ts +67 -0
  87. package/dist/google/apis/gmail.js +374 -0
  88. package/dist/google/apis/index.d.ts +10 -0
  89. package/dist/google/apis/index.js +10 -0
  90. package/dist/google/apis/sheets.d.ts +16 -0
  91. package/dist/google/apis/sheets.js +54 -0
  92. package/dist/google/apis/slides.d.ts +16 -0
  93. package/dist/google/apis/slides.js +40 -0
  94. package/dist/google/auth/browser.d.ts +5 -0
  95. package/dist/google/auth/browser.js +27 -0
  96. package/dist/google/auth/credentials.d.ts +26 -0
  97. package/dist/google/auth/credentials.js +69 -0
  98. package/dist/google/auth/errors.d.ts +15 -0
  99. package/dist/google/auth/errors.js +26 -0
  100. package/dist/google/auth/index.d.ts +12 -0
  101. package/dist/google/auth/index.js +12 -0
  102. package/dist/google/auth/oauth-app.d.ts +15 -0
  103. package/dist/google/auth/oauth-app.js +20 -0
  104. package/dist/google/auth/oauth.d.ts +46 -0
  105. package/dist/google/auth/oauth.js +146 -0
  106. package/dist/google/auth/server.d.ts +13 -0
  107. package/dist/google/auth/server.js +70 -0
  108. package/dist/google/auth/setup-instructions.d.ts +16 -0
  109. package/dist/google/auth/setup-instructions.js +24 -0
  110. package/dist/google/auth/store.d.ts +19 -0
  111. package/dist/google/auth/store.js +27 -0
  112. package/dist/google/index.d.ts +13 -0
  113. package/dist/google/index.js +12 -0
  114. package/dist/google/paths.d.ts +17 -0
  115. package/dist/google/paths.js +28 -0
  116. package/dist/google/renderers/calendar.d.ts +23 -0
  117. package/dist/google/renderers/calendar.js +312 -0
  118. package/dist/google/renderers/drive.d.ts +31 -0
  119. package/dist/google/renderers/drive.js +214 -0
  120. package/dist/google/renderers/email.d.ts +16 -0
  121. package/dist/google/renderers/email.js +130 -0
  122. package/dist/google/renderers/index.d.ts +8 -0
  123. package/dist/google/renderers/index.js +8 -0
  124. package/dist/google/types.d.ts +143 -0
  125. package/dist/google/types.js +27 -0
  126. package/dist/governance/distill.d.ts +31 -0
  127. package/dist/governance/distill.js +78 -0
  128. package/dist/governance/index.d.ts +11 -0
  129. package/dist/governance/index.js +10 -0
  130. package/dist/governance/render.d.ts +13 -0
  131. package/dist/governance/render.js +23 -0
  132. package/dist/governance/store.d.ts +32 -0
  133. package/dist/governance/store.js +102 -0
  134. package/dist/governance/types.d.ts +19 -0
  135. package/dist/governance/types.js +9 -0
  136. package/dist/guardian/index.d.ts +7 -0
  137. package/dist/guardian/index.js +7 -0
  138. package/dist/guardian/types.d.ts +37 -0
  139. package/dist/guardian/types.js +12 -0
  140. package/dist/internal/github/cli.d.ts +40 -0
  141. package/dist/internal/github/cli.js +102 -0
  142. package/dist/internal/guardian/commit-file.d.ts +7 -0
  143. package/dist/internal/guardian/commit-file.js +36 -0
  144. package/dist/internal/guardian/commit-format.d.ts +35 -0
  145. package/dist/internal/guardian/commit-format.js +63 -0
  146. package/dist/internal/guardian/commit-shell.d.ts +38 -0
  147. package/dist/internal/guardian/commit-shell.js +134 -0
  148. package/dist/internal/guardian/history-gate.d.ts +41 -0
  149. package/dist/internal/guardian/history-gate.js +76 -0
  150. package/dist/internal/guardian/prose-gate.d.ts +31 -0
  151. package/dist/internal/guardian/prose-gate.js +50 -0
  152. package/dist/internal/guardian/redirect-gate.d.ts +41 -0
  153. package/dist/internal/guardian/redirect-gate.js +114 -0
  154. package/dist/internal/guardian/section-gate.d.ts +20 -0
  155. package/dist/internal/guardian/section-gate.js +36 -0
  156. package/dist/internal/guardian/title-gate.d.ts +20 -0
  157. package/dist/internal/guardian/title-gate.js +36 -0
  158. package/dist/internal/json-array.d.ts +11 -0
  159. package/dist/internal/json-array.js +40 -0
  160. package/dist/internal/lsp/registry.d.ts +12 -0
  161. package/dist/internal/lsp/registry.js +16 -0
  162. package/dist/internal/notes/discovery.d.ts +59 -0
  163. package/dist/internal/notes/discovery.js +91 -0
  164. package/dist/internal/notes/frontmatter.d.ts +52 -0
  165. package/dist/internal/notes/frontmatter.js +163 -0
  166. package/dist/internal/notes/id.d.ts +42 -0
  167. package/dist/internal/notes/id.js +80 -0
  168. package/dist/internal/notes/io.d.ts +25 -0
  169. package/dist/internal/notes/io.js +51 -0
  170. package/dist/internal/notes/sanitize.d.ts +19 -0
  171. package/dist/internal/notes/sanitize.js +35 -0
  172. package/dist/internal/process-global.d.ts +20 -0
  173. package/dist/internal/process-global.js +28 -0
  174. package/dist/internal/quest/alias-index.d.ts +61 -0
  175. package/dist/internal/quest/alias-index.js +69 -0
  176. package/dist/internal/quest/append-journey.d.ts +22 -0
  177. package/dist/internal/quest/append-journey.js +63 -0
  178. package/dist/internal/quest/bash-write.d.ts +49 -0
  179. package/dist/internal/quest/bash-write.js +208 -0
  180. package/dist/internal/quest/dates.d.ts +14 -0
  181. package/dist/internal/quest/dates.js +20 -0
  182. package/dist/internal/quest/discovery.d.ts +96 -0
  183. package/dist/internal/quest/discovery.js +354 -0
  184. package/dist/internal/quest/fields.d.ts +37 -0
  185. package/dist/internal/quest/fields.js +94 -0
  186. package/dist/internal/quest/frontmatter.d.ts +88 -0
  187. package/dist/internal/quest/frontmatter.js +630 -0
  188. package/dist/internal/quest/git-signals.d.ts +53 -0
  189. package/dist/internal/quest/git-signals.js +192 -0
  190. package/dist/internal/quest/id.d.ts +50 -0
  191. package/dist/internal/quest/id.js +116 -0
  192. package/dist/internal/quest/io.d.ts +54 -0
  193. package/dist/internal/quest/io.js +233 -0
  194. package/dist/internal/quest/mentions.d.ts +45 -0
  195. package/dist/internal/quest/mentions.js +70 -0
  196. package/dist/internal/quest/mutate.d.ts +38 -0
  197. package/dist/internal/quest/mutate.js +83 -0
  198. package/dist/internal/quest/process-liveness.d.ts +98 -0
  199. package/dist/internal/quest/process-liveness.js +216 -0
  200. package/dist/internal/quest/quest-doc.d.ts +116 -0
  201. package/dist/internal/quest/quest-doc.js +239 -0
  202. package/dist/internal/quest/ranking.d.ts +48 -0
  203. package/dist/internal/quest/ranking.js +114 -0
  204. package/dist/internal/quest/reopen.d.ts +65 -0
  205. package/dist/internal/quest/reopen.js +113 -0
  206. package/dist/internal/quest/resolve-cwd.d.ts +32 -0
  207. package/dist/internal/quest/resolve-cwd.js +89 -0
  208. package/dist/internal/quest/sanitize.d.ts +42 -0
  209. package/dist/internal/quest/sanitize.js +69 -0
  210. package/dist/internal/quest/scaffold.d.ts +59 -0
  211. package/dist/internal/quest/scaffold.js +169 -0
  212. package/dist/internal/quest/scratch.d.ts +27 -0
  213. package/dist/internal/quest/scratch.js +106 -0
  214. package/dist/internal/quest/session-liveness.d.ts +125 -0
  215. package/dist/internal/quest/session-liveness.js +386 -0
  216. package/dist/internal/quest/session-ownership.d.ts +22 -0
  217. package/dist/internal/quest/session-ownership.js +100 -0
  218. package/dist/internal/quest/session-registry.d.ts +221 -0
  219. package/dist/internal/quest/session-registry.js +266 -0
  220. package/dist/internal/quest/status.d.ts +10 -0
  221. package/dist/internal/quest/status.js +15 -0
  222. package/dist/internal/quest/structural-journal.d.ts +41 -0
  223. package/dist/internal/quest/structural-journal.js +67 -0
  224. package/dist/internal/quest/structural.d.ts +43 -0
  225. package/dist/internal/quest/structural.js +77 -0
  226. package/dist/internal/quest/toc.d.ts +28 -0
  227. package/dist/internal/quest/toc.js +90 -0
  228. package/dist/internal/quest/trees.d.ts +53 -0
  229. package/dist/internal/quest/trees.js +145 -0
  230. package/dist/internal/quest/url-fetchers.d.ts +50 -0
  231. package/dist/internal/quest/url-fetchers.js +97 -0
  232. package/dist/internal/quest/write-classifier.d.ts +46 -0
  233. package/dist/internal/quest/write-classifier.js +59 -0
  234. package/dist/internal/refs/builtins.d.ts +32 -0
  235. package/dist/internal/refs/builtins.js +179 -0
  236. package/dist/internal/refs/registry.d.ts +25 -0
  237. package/dist/internal/refs/registry.js +42 -0
  238. package/dist/internal/registry/global-symbol-registry.d.ts +37 -0
  239. package/dist/internal/registry/global-symbol-registry.js +55 -0
  240. package/dist/internal/review/registry.d.ts +12 -0
  241. package/dist/internal/review/registry.js +16 -0
  242. package/dist/internal/sqlite/db.d.ts +16 -0
  243. package/dist/internal/sqlite/db.js +26 -0
  244. package/dist/internal/terminal/builtins.d.ts +8 -0
  245. package/dist/internal/terminal/builtins.js +14 -0
  246. package/dist/internal/terminal/drivers/fallback.d.ts +8 -0
  247. package/dist/internal/terminal/drivers/fallback.js +31 -0
  248. package/dist/internal/terminal/drivers/shared.d.ts +39 -0
  249. package/dist/internal/terminal/drivers/shared.js +51 -0
  250. package/dist/internal/terminal/drivers/tmux.d.ts +14 -0
  251. package/dist/internal/terminal/drivers/tmux.js +88 -0
  252. package/dist/internal/terminal/drivers/wezterm.d.ts +35 -0
  253. package/dist/internal/terminal/drivers/wezterm.js +175 -0
  254. package/dist/internal/terminal/registry.d.ts +12 -0
  255. package/dist/internal/terminal/registry.js +16 -0
  256. package/dist/internal/tree/builtins.d.ts +8 -0
  257. package/dist/internal/tree/builtins.js +10 -0
  258. package/dist/internal/tree/providers/git-worktree.d.ts +20 -0
  259. package/dist/internal/tree/providers/git-worktree.js +279 -0
  260. package/dist/internal/tree/registry.d.ts +12 -0
  261. package/dist/internal/tree/registry.js +16 -0
  262. package/dist/lsp/config.d.ts +77 -0
  263. package/dist/lsp/config.js +154 -0
  264. package/dist/lsp/external.d.ts +13 -0
  265. package/dist/lsp/external.js +52 -0
  266. package/dist/lsp/format.d.ts +11 -0
  267. package/dist/lsp/format.js +54 -0
  268. package/dist/lsp/index.d.ts +17 -0
  269. package/dist/lsp/index.js +16 -0
  270. package/dist/lsp/offsets.d.ts +22 -0
  271. package/dist/lsp/offsets.js +51 -0
  272. package/dist/lsp/registry.d.ts +28 -0
  273. package/dist/lsp/registry.js +45 -0
  274. package/dist/lsp/standalone/backend.d.ts +42 -0
  275. package/dist/lsp/standalone/backend.js +150 -0
  276. package/dist/lsp/standalone/document.d.ts +45 -0
  277. package/dist/lsp/standalone/document.js +81 -0
  278. package/dist/lsp/standalone/server.d.ts +84 -0
  279. package/dist/lsp/standalone/server.js +521 -0
  280. package/dist/lsp/types.d.ts +119 -0
  281. package/dist/lsp/types.js +13 -0
  282. package/dist/memory/db.d.ts +15 -0
  283. package/dist/memory/db.js +25 -0
  284. package/dist/memory/index.d.ts +12 -0
  285. package/dist/memory/index.js +11 -0
  286. package/dist/memory/paths.d.ts +19 -0
  287. package/dist/memory/paths.js +33 -0
  288. package/dist/memory/scope.d.ts +14 -0
  289. package/dist/memory/scope.js +22 -0
  290. package/dist/memory/store.d.ts +12 -0
  291. package/dist/memory/store.js +146 -0
  292. package/dist/memory/types.d.ts +80 -0
  293. package/dist/memory/types.js +6 -0
  294. package/dist/notes/types.d.ts +50 -0
  295. package/dist/notes/types.js +23 -0
  296. package/dist/notes/verbs/create.d.ts +5 -0
  297. package/dist/notes/verbs/create.js +55 -0
  298. package/dist/notes/verbs/mutate.d.ts +8 -0
  299. package/dist/notes/verbs/mutate.js +152 -0
  300. package/dist/notes/verbs/queries.d.ts +15 -0
  301. package/dist/notes/verbs/queries.js +116 -0
  302. package/dist/notes/verbs/reindex.d.ts +12 -0
  303. package/dist/notes/verbs/reindex.js +35 -0
  304. package/dist/notes/verbs/shared.d.ts +37 -0
  305. package/dist/notes/verbs/shared.js +29 -0
  306. package/dist/observability/index.d.ts +13 -0
  307. package/dist/observability/index.js +12 -0
  308. package/dist/observability/recorder.d.ts +50 -0
  309. package/dist/observability/recorder.js +77 -0
  310. package/dist/observability/store.d.ts +22 -0
  311. package/dist/observability/store.js +213 -0
  312. package/dist/observability/types.d.ts +82 -0
  313. package/dist/observability/types.js +1 -0
  314. package/dist/process/index.d.ts +9 -0
  315. package/dist/process/index.js +9 -0
  316. package/dist/process/process.d.ts +95 -0
  317. package/dist/process/process.js +153 -0
  318. package/dist/prose/block.d.ts +9 -0
  319. package/dist/prose/block.js +43 -0
  320. package/dist/prose/detect.d.ts +50 -0
  321. package/dist/prose/detect.js +217 -0
  322. package/dist/prose/gate.d.ts +14 -0
  323. package/dist/prose/gate.js +21 -0
  324. package/dist/prose/index.d.ts +4 -0
  325. package/dist/prose/index.js +4 -0
  326. package/dist/prose/wrap.d.ts +9 -0
  327. package/dist/prose/wrap.js +47 -0
  328. package/dist/quest/actions.d.ts +20 -0
  329. package/dist/quest/actions.js +107 -0
  330. package/dist/quest/config.d.ts +79 -0
  331. package/dist/quest/config.js +83 -0
  332. package/dist/quest/index.d.ts +29 -0
  333. package/dist/quest/index.js +28 -0
  334. package/dist/quest/lifecycle.d.ts +365 -0
  335. package/dist/quest/lifecycle.js +900 -0
  336. package/dist/quest/lookup.d.ts +243 -0
  337. package/dist/quest/lookup.js +496 -0
  338. package/dist/quest/machine.d.ts +48 -0
  339. package/dist/quest/machine.js +96 -0
  340. package/dist/quest/render-rows.d.ts +166 -0
  341. package/dist/quest/render-rows.js +214 -0
  342. package/dist/quest/state.d.ts +111 -0
  343. package/dist/quest/state.js +46 -0
  344. package/dist/quest/types.d.ts +224 -0
  345. package/dist/quest/types.js +10 -0
  346. package/dist/quest/verbs/alias.d.ts +9 -0
  347. package/dist/quest/verbs/alias.js +129 -0
  348. package/dist/quest/verbs/lifecycle.d.ts +36 -0
  349. package/dist/quest/verbs/lifecycle.js +407 -0
  350. package/dist/quest/verbs/queries.d.ts +24 -0
  351. package/dist/quest/verbs/queries.js +241 -0
  352. package/dist/quest/verbs/reorder.d.ts +15 -0
  353. package/dist/quest/verbs/reorder.js +85 -0
  354. package/dist/quest/verbs/shared.d.ts +63 -0
  355. package/dist/quest/verbs/shared.js +35 -0
  356. package/dist/quest/verbs/stage.d.ts +39 -0
  357. package/dist/quest/verbs/stage.js +506 -0
  358. package/dist/quest/verbs/structural.d.ts +23 -0
  359. package/dist/quest/verbs/structural.js +310 -0
  360. package/dist/quest/verbs/tree-ops.d.ts +20 -0
  361. package/dist/quest/verbs/tree-ops.js +289 -0
  362. package/dist/refs/index.d.ts +13 -0
  363. package/dist/refs/index.js +12 -0
  364. package/dist/refs/lookup.d.ts +53 -0
  365. package/dist/refs/lookup.js +102 -0
  366. package/dist/refs/register.d.ts +34 -0
  367. package/dist/refs/register.js +44 -0
  368. package/dist/refs/types.d.ts +81 -0
  369. package/dist/refs/types.js +17 -0
  370. package/dist/remote/index.d.ts +9 -0
  371. package/dist/remote/index.js +9 -0
  372. package/dist/remote/name.d.ts +22 -0
  373. package/dist/remote/name.js +30 -0
  374. package/dist/result/cite.d.ts +84 -0
  375. package/dist/result/cite.js +127 -0
  376. package/dist/result/counts.d.ts +15 -0
  377. package/dist/result/counts.js +17 -0
  378. package/dist/result/details.d.ts +61 -0
  379. package/dist/result/details.js +121 -0
  380. package/dist/result/digest.d.ts +37 -0
  381. package/dist/result/digest.js +227 -0
  382. package/dist/result/follow.d.ts +29 -0
  383. package/dist/result/follow.js +37 -0
  384. package/dist/result/index.d.ts +26 -0
  385. package/dist/result/index.js +26 -0
  386. package/dist/result/listing.d.ts +62 -0
  387. package/dist/result/listing.js +72 -0
  388. package/dist/result/location.d.ts +67 -0
  389. package/dist/result/location.js +125 -0
  390. package/dist/result/query.d.ts +67 -0
  391. package/dist/result/query.js +144 -0
  392. package/dist/result/spill.d.ts +41 -0
  393. package/dist/result/spill.js +121 -0
  394. package/dist/result/store.d.ts +83 -0
  395. package/dist/result/store.js +214 -0
  396. package/dist/result/view.d.ts +31 -0
  397. package/dist/result/view.js +38 -0
  398. package/dist/review/anchor.d.ts +84 -0
  399. package/dist/review/anchor.js +89 -0
  400. package/dist/review/ask/agents.d.ts +80 -0
  401. package/dist/review/ask/agents.js +296 -0
  402. package/dist/review/ask/anchorable.d.ts +35 -0
  403. package/dist/review/ask/anchorable.js +76 -0
  404. package/dist/review/ask/answer.d.ts +54 -0
  405. package/dist/review/ask/answer.js +209 -0
  406. package/dist/review/ask/audit.d.ts +71 -0
  407. package/dist/review/ask/audit.js +158 -0
  408. package/dist/review/ask/collect.d.ts +41 -0
  409. package/dist/review/ask/collect.js +82 -0
  410. package/dist/review/ask/council.d.ts +290 -0
  411. package/dist/review/ask/council.js +386 -0
  412. package/dist/review/ask/critique.d.ts +69 -0
  413. package/dist/review/ask/critique.js +157 -0
  414. package/dist/review/ask/harvest.d.ts +119 -0
  415. package/dist/review/ask/harvest.js +409 -0
  416. package/dist/review/ask/identity.d.ts +93 -0
  417. package/dist/review/ask/identity.js +134 -0
  418. package/dist/review/ask/judge.d.ts +37 -0
  419. package/dist/review/ask/judge.js +140 -0
  420. package/dist/review/ask/persona.d.ts +84 -0
  421. package/dist/review/ask/persona.js +127 -0
  422. package/dist/review/ask/progress.d.ts +117 -0
  423. package/dist/review/ask/progress.js +137 -0
  424. package/dist/review/ask/prompt.d.ts +131 -0
  425. package/dist/review/ask/prompt.js +242 -0
  426. package/dist/review/ask/roster.d.ts +94 -0
  427. package/dist/review/ask/roster.js +338 -0
  428. package/dist/review/ask/run.d.ts +435 -0
  429. package/dist/review/ask/run.js +340 -0
  430. package/dist/review/ask/span.d.ts +70 -0
  431. package/dist/review/ask/span.js +166 -0
  432. package/dist/review/ask/stack-round.d.ts +66 -0
  433. package/dist/review/ask/stack-round.js +125 -0
  434. package/dist/review/ask/start.d.ts +48 -0
  435. package/dist/review/ask/start.js +118 -0
  436. package/dist/review/ask/store.d.ts +83 -0
  437. package/dist/review/ask/store.js +226 -0
  438. package/dist/review/ask/wire.d.ts +89 -0
  439. package/dist/review/ask/wire.js +204 -0
  440. package/dist/review/attach.d.ts +161 -0
  441. package/dist/review/attach.js +357 -0
  442. package/dist/review/authoring.d.ts +84 -0
  443. package/dist/review/authoring.js +203 -0
  444. package/dist/review/backed.d.ts +90 -0
  445. package/dist/review/backed.js +168 -0
  446. package/dist/review/bind.d.ts +75 -0
  447. package/dist/review/bind.js +223 -0
  448. package/dist/review/budget.d.ts +133 -0
  449. package/dist/review/budget.js +278 -0
  450. package/dist/review/capabilities.d.ts +217 -0
  451. package/dist/review/capabilities.js +46 -0
  452. package/dist/review/change.d.ts +155 -0
  453. package/dist/review/change.js +15 -0
  454. package/dist/review/checks.d.ts +56 -0
  455. package/dist/review/checks.js +11 -0
  456. package/dist/review/config.d.ts +71 -0
  457. package/dist/review/config.js +125 -0
  458. package/dist/review/conventions.d.ts +35 -0
  459. package/dist/review/conventions.js +58 -0
  460. package/dist/review/conversation.d.ts +98 -0
  461. package/dist/review/conversation.js +16 -0
  462. package/dist/review/decided.d.ts +58 -0
  463. package/dist/review/decided.js +67 -0
  464. package/dist/review/diff.d.ts +116 -0
  465. package/dist/review/diff.js +237 -0
  466. package/dist/review/draft/continuation.d.ts +23 -0
  467. package/dist/review/draft/continuation.js +32 -0
  468. package/dist/review/draft/fanout.d.ts +57 -0
  469. package/dist/review/draft/fanout.js +46 -0
  470. package/dist/review/draft/handle.d.ts +55 -0
  471. package/dist/review/draft/handle.js +110 -0
  472. package/dist/review/draft/plan.d.ts +112 -0
  473. package/dist/review/draft/plan.js +343 -0
  474. package/dist/review/draft/publish.d.ts +38 -0
  475. package/dist/review/draft/publish.js +118 -0
  476. package/dist/review/draft/render.d.ts +32 -0
  477. package/dist/review/draft/render.js +100 -0
  478. package/dist/review/draft/state.d.ts +98 -0
  479. package/dist/review/draft/state.js +83 -0
  480. package/dist/review/draft/store.d.ts +33 -0
  481. package/dist/review/draft/store.js +100 -0
  482. package/dist/review/elsewhere.d.ts +27 -0
  483. package/dist/review/elsewhere.js +39 -0
  484. package/dist/review/engine.d.ts +106 -0
  485. package/dist/review/engine.js +243 -0
  486. package/dist/review/events.d.ts +59 -0
  487. package/dist/review/events.js +35 -0
  488. package/dist/review/failed.d.ts +46 -0
  489. package/dist/review/failed.js +56 -0
  490. package/dist/review/finding.d.ts +81 -0
  491. package/dist/review/finding.js +85 -0
  492. package/dist/review/fix.d.ts +147 -0
  493. package/dist/review/fix.js +175 -0
  494. package/dist/review/followup.d.ts +84 -0
  495. package/dist/review/followup.js +123 -0
  496. package/dist/review/index.d.ts +134 -0
  497. package/dist/review/index.js +80 -0
  498. package/dist/review/keys.d.ts +23 -0
  499. package/dist/review/keys.js +40 -0
  500. package/dist/review/landing.d.ts +37 -0
  501. package/dist/review/landing.js +68 -0
  502. package/dist/review/lenses.d.ts +132 -0
  503. package/dist/review/lenses.js +430 -0
  504. package/dist/review/propose-from.d.ts +76 -0
  505. package/dist/review/propose-from.js +86 -0
  506. package/dist/review/provider.d.ts +306 -0
  507. package/dist/review/provider.js +16 -0
  508. package/dist/review/providers/git/index.d.ts +23 -0
  509. package/dist/review/providers/git/index.js +214 -0
  510. package/dist/review/providers/github/authoring.d.ts +22 -0
  511. package/dist/review/providers/github/authoring.js +350 -0
  512. package/dist/review/providers/github/claims.d.ts +49 -0
  513. package/dist/review/providers/github/claims.js +136 -0
  514. package/dist/review/providers/github/conversation.d.ts +18 -0
  515. package/dist/review/providers/github/conversation.js +455 -0
  516. package/dist/review/providers/github/fields.d.ts +30 -0
  517. package/dist/review/providers/github/fields.js +47 -0
  518. package/dist/review/providers/github/index.d.ts +15 -0
  519. package/dist/review/providers/github/index.js +110 -0
  520. package/dist/review/providers/github/proposals.d.ts +14 -0
  521. package/dist/review/providers/github/proposals.js +298 -0
  522. package/dist/review/providers/github/queue.d.ts +46 -0
  523. package/dist/review/providers/github/queue.js +122 -0
  524. package/dist/review/providers/github/stacking.d.ts +20 -0
  525. package/dist/review/providers/github/stacking.js +107 -0
  526. package/dist/review/queue.d.ts +43 -0
  527. package/dist/review/queue.js +56 -0
  528. package/dist/review/reactable.d.ts +93 -0
  529. package/dist/review/reactable.js +140 -0
  530. package/dist/review/register.d.ts +52 -0
  531. package/dist/review/register.js +53 -0
  532. package/dist/review/resolve.d.ts +58 -0
  533. package/dist/review/resolve.js +150 -0
  534. package/dist/review/retarget.d.ts +73 -0
  535. package/dist/review/retarget.js +82 -0
  536. package/dist/review/revisited.d.ts +77 -0
  537. package/dist/review/revisited.js +121 -0
  538. package/dist/review/stack.d.ts +110 -0
  539. package/dist/review/stack.js +52 -0
  540. package/dist/sections/block.d.ts +9 -0
  541. package/dist/sections/block.js +42 -0
  542. package/dist/sections/detect.d.ts +31 -0
  543. package/dist/sections/detect.js +67 -0
  544. package/dist/sections/gate.d.ts +21 -0
  545. package/dist/sections/gate.js +22 -0
  546. package/dist/sections/index.d.ts +5 -0
  547. package/dist/sections/index.js +5 -0
  548. package/dist/sections/sanctioned.d.ts +13 -0
  549. package/dist/sections/sanctioned.js +21 -0
  550. package/dist/shell/index.d.ts +8 -0
  551. package/dist/shell/index.js +8 -0
  552. package/dist/shell/parse.d.ts +125 -0
  553. package/dist/shell/parse.js +298 -0
  554. package/dist/slack/api/channels.d.ts +12 -0
  555. package/dist/slack/api/channels.js +28 -0
  556. package/dist/slack/api/client.d.ts +94 -0
  557. package/dist/slack/api/client.js +272 -0
  558. package/dist/slack/api/files.d.ts +95 -0
  559. package/dist/slack/api/files.js +223 -0
  560. package/dist/slack/api/index.d.ts +11 -0
  561. package/dist/slack/api/index.js +11 -0
  562. package/dist/slack/api/messages.d.ts +98 -0
  563. package/dist/slack/api/messages.js +292 -0
  564. package/dist/slack/api/reactions.d.ts +47 -0
  565. package/dist/slack/api/reactions.js +50 -0
  566. package/dist/slack/api/resolve-conversations.d.ts +43 -0
  567. package/dist/slack/api/resolve-conversations.js +130 -0
  568. package/dist/slack/api/resolve-messages.d.ts +29 -0
  569. package/dist/slack/api/resolve-messages.js +93 -0
  570. package/dist/slack/api/resolve-users.d.ts +27 -0
  571. package/dist/slack/api/resolve-users.js +73 -0
  572. package/dist/slack/api/search.d.ts +86 -0
  573. package/dist/slack/api/search.js +186 -0
  574. package/dist/slack/api/users.d.ts +12 -0
  575. package/dist/slack/api/users.js +33 -0
  576. package/dist/slack/auth/browser-extract.d.ts +33 -0
  577. package/dist/slack/auth/browser-extract.js +201 -0
  578. package/dist/slack/auth/browser.d.ts +5 -0
  579. package/dist/slack/auth/browser.js +25 -0
  580. package/dist/slack/auth/credentials.d.ts +14 -0
  581. package/dist/slack/auth/credentials.js +24 -0
  582. package/dist/slack/auth/errors.d.ts +9 -0
  583. package/dist/slack/auth/errors.js +19 -0
  584. package/dist/slack/auth/extract.d.ts +23 -0
  585. package/dist/slack/auth/extract.js +44 -0
  586. package/dist/slack/auth/index.d.ts +12 -0
  587. package/dist/slack/auth/index.js +11 -0
  588. package/dist/slack/auth/oauth-app.d.ts +11 -0
  589. package/dist/slack/auth/oauth-app.js +20 -0
  590. package/dist/slack/auth/oauth.d.ts +31 -0
  591. package/dist/slack/auth/oauth.js +82 -0
  592. package/dist/slack/auth/server.d.ts +14 -0
  593. package/dist/slack/auth/server.js +75 -0
  594. package/dist/slack/auth/store.d.ts +17 -0
  595. package/dist/slack/auth/store.js +27 -0
  596. package/dist/slack/block-message.d.ts +9 -0
  597. package/dist/slack/block-message.js +30 -0
  598. package/dist/slack/blocks.d.ts +94 -0
  599. package/dist/slack/blocks.js +765 -0
  600. package/dist/slack/content-gate.d.ts +12 -0
  601. package/dist/slack/content-gate.js +22 -0
  602. package/dist/slack/detect.d.ts +31 -0
  603. package/dist/slack/detect.js +125 -0
  604. package/dist/slack/index.d.ts +18 -0
  605. package/dist/slack/index.js +17 -0
  606. package/dist/slack/paths.d.ts +28 -0
  607. package/dist/slack/paths.js +46 -0
  608. package/dist/slack/renderers/channel.d.ts +6 -0
  609. package/dist/slack/renderers/channel.js +27 -0
  610. package/dist/slack/renderers/index.d.ts +9 -0
  611. package/dist/slack/renderers/index.js +9 -0
  612. package/dist/slack/renderers/message.d.ts +21 -0
  613. package/dist/slack/renderers/message.js +214 -0
  614. package/dist/slack/renderers/reactions.d.ts +8 -0
  615. package/dist/slack/renderers/reactions.js +43 -0
  616. package/dist/slack/renderers/search.d.ts +6 -0
  617. package/dist/slack/renderers/search.js +39 -0
  618. package/dist/slack/renderers/user.d.ts +6 -0
  619. package/dist/slack/renderers/user.js +32 -0
  620. package/dist/slack/resolvers/cache.d.ts +29 -0
  621. package/dist/slack/resolvers/cache.js +70 -0
  622. package/dist/slack/resolvers/conversation-cache.d.ts +42 -0
  623. package/dist/slack/resolvers/conversation-cache.js +128 -0
  624. package/dist/slack/resolvers/conversation.d.ts +44 -0
  625. package/dist/slack/resolvers/conversation.js +229 -0
  626. package/dist/slack/resolvers/index.d.ts +8 -0
  627. package/dist/slack/resolvers/index.js +8 -0
  628. package/dist/slack/resolvers/target.d.ts +19 -0
  629. package/dist/slack/resolvers/target.js +45 -0
  630. package/dist/slack/resolvers/url.d.ts +20 -0
  631. package/dist/slack/resolvers/url.js +22 -0
  632. package/dist/slack/resolvers/user.d.ts +54 -0
  633. package/dist/slack/resolvers/user.js +134 -0
  634. package/dist/slack/types.d.ts +180 -0
  635. package/dist/slack/types.js +13 -0
  636. package/dist/tdd/attest.d.ts +21 -0
  637. package/dist/tdd/attest.js +21 -0
  638. package/dist/tdd/discipline.d.ts +11 -0
  639. package/dist/tdd/discipline.js +28 -0
  640. package/dist/tdd/index.d.ts +14 -0
  641. package/dist/tdd/index.js +13 -0
  642. package/dist/tdd/machine.d.ts +48 -0
  643. package/dist/tdd/machine.js +139 -0
  644. package/dist/tdd/presentation.d.ts +34 -0
  645. package/dist/tdd/presentation.js +38 -0
  646. package/dist/tdd/queries.d.ts +10 -0
  647. package/dist/tdd/queries.js +22 -0
  648. package/dist/terminal/index.d.ts +12 -0
  649. package/dist/terminal/index.js +11 -0
  650. package/dist/terminal/register.d.ts +21 -0
  651. package/dist/terminal/register.js +31 -0
  652. package/dist/terminal/resolve.d.ts +63 -0
  653. package/dist/terminal/resolve.js +117 -0
  654. package/dist/terminal/types.d.ts +134 -0
  655. package/dist/terminal/types.js +19 -0
  656. package/dist/thinking/index.d.ts +20 -0
  657. package/dist/thinking/index.js +27 -0
  658. package/dist/title/block.d.ts +9 -0
  659. package/dist/title/block.js +32 -0
  660. package/dist/title/detect.d.ts +25 -0
  661. package/dist/title/detect.js +154 -0
  662. package/dist/title/gate.d.ts +19 -0
  663. package/dist/title/gate.js +21 -0
  664. package/dist/title/index.d.ts +3 -0
  665. package/dist/title/index.js +3 -0
  666. package/dist/tree/index.d.ts +18 -0
  667. package/dist/tree/index.js +17 -0
  668. package/dist/tree/register.d.ts +21 -0
  669. package/dist/tree/register.js +31 -0
  670. package/dist/tree/resolve.d.ts +20 -0
  671. package/dist/tree/resolve.js +31 -0
  672. package/dist/tree/types.d.ts +83 -0
  673. package/dist/tree/types.js +12 -0
  674. package/dist/ui/count.d.ts +29 -0
  675. package/dist/ui/count.js +35 -0
  676. package/dist/ui/path.d.ts +25 -0
  677. package/dist/ui/path.js +40 -0
  678. package/dist/verify/index.d.ts +17 -0
  679. package/dist/verify/index.js +14 -0
  680. package/dist/verify/project.d.ts +21 -0
  681. package/dist/verify/project.js +49 -0
  682. package/dist/verify/resolve.d.ts +26 -0
  683. package/dist/verify/resolve.js +27 -0
  684. package/dist/verify/run.d.ts +31 -0
  685. package/dist/verify/run.js +145 -0
  686. package/dist/web/a11y/announcements.d.ts +67 -0
  687. package/dist/web/a11y/announcements.js +116 -0
  688. package/dist/web/a11y/budget.d.ts +75 -0
  689. package/dist/web/a11y/budget.js +97 -0
  690. package/dist/web/a11y/focus.d.ts +37 -0
  691. package/dist/web/a11y/focus.js +106 -0
  692. package/dist/web/a11y/index.d.ts +19 -0
  693. package/dist/web/a11y/index.js +25 -0
  694. package/dist/web/a11y/naming.d.ts +23 -0
  695. package/dist/web/a11y/naming.js +55 -0
  696. package/dist/web/a11y/outline.d.ts +23 -0
  697. package/dist/web/a11y/outline.js +42 -0
  698. package/dist/web/a11y/reading.d.ts +12 -0
  699. package/dist/web/a11y/reading.js +101 -0
  700. package/dist/web/a11y/scope.d.ts +23 -0
  701. package/dist/web/a11y/scope.js +99 -0
  702. package/dist/web/a11y/states.d.ts +22 -0
  703. package/dist/web/a11y/states.js +53 -0
  704. package/dist/web/a11y/tree.d.ts +124 -0
  705. package/dist/web/a11y/tree.js +269 -0
  706. package/dist/web/a11y/walk.d.ts +225 -0
  707. package/dist/web/a11y/walk.js +568 -0
  708. package/dist/web/a11y/walkprobe.d.ts +44 -0
  709. package/dist/web/a11y/walkprobe.js +365 -0
  710. package/dist/web/audit/axe.d.ts +219 -0
  711. package/dist/web/audit/axe.js +322 -0
  712. package/dist/web/audit/behind.d.ts +63 -0
  713. package/dist/web/audit/behind.js +142 -0
  714. package/dist/web/audit/capture.d.ts +43 -0
  715. package/dist/web/audit/capture.js +185 -0
  716. package/dist/web/audit/colour.d.ts +85 -0
  717. package/dist/web/audit/colour.js +189 -0
  718. package/dist/web/audit/contrast.d.ts +74 -0
  719. package/dist/web/audit/contrast.js +104 -0
  720. package/dist/web/audit/health.d.ts +27 -0
  721. package/dist/web/audit/health.js +57 -0
  722. package/dist/web/audit/index.d.ts +22 -0
  723. package/dist/web/audit/index.js +22 -0
  724. package/dist/web/audit/pair.d.ts +55 -0
  725. package/dist/web/audit/pair.js +157 -0
  726. package/dist/web/audit/probe.d.ts +31 -0
  727. package/dist/web/audit/probe.js +189 -0
  728. package/dist/web/audit/report.d.ts +22 -0
  729. package/dist/web/audit/report.js +250 -0
  730. package/dist/web/audit/structure.d.ts +126 -0
  731. package/dist/web/audit/structure.js +595 -0
  732. package/dist/web/audit/sweep.d.ts +66 -0
  733. package/dist/web/audit/sweep.js +117 -0
  734. package/dist/web/audit/target.d.ts +89 -0
  735. package/dist/web/audit/target.js +168 -0
  736. package/dist/web/audit/verdict.d.ts +48 -0
  737. package/dist/web/audit/verdict.js +52 -0
  738. package/dist/web/audit/visual.d.ts +161 -0
  739. package/dist/web/audit/visual.js +297 -0
  740. package/dist/web/browser.d.ts +213 -0
  741. package/dist/web/browser.js +927 -0
  742. package/dist/web/compare/images.d.ts +45 -0
  743. package/dist/web/compare/images.js +101 -0
  744. package/dist/web/compare/index.d.ts +15 -0
  745. package/dist/web/compare/index.js +15 -0
  746. package/dist/web/compare/provenance.d.ts +48 -0
  747. package/dist/web/compare/provenance.js +86 -0
  748. package/dist/web/compare/regions.d.ts +78 -0
  749. package/dist/web/compare/regions.js +211 -0
  750. package/dist/web/cookies/extract.d.ts +26 -0
  751. package/dist/web/cookies/extract.js +167 -0
  752. package/dist/web/cookies/index.d.ts +8 -0
  753. package/dist/web/cookies/index.js +7 -0
  754. package/dist/web/cookies/inject.d.ts +13 -0
  755. package/dist/web/cookies/inject.js +27 -0
  756. package/dist/web/cookies/setup.d.ts +31 -0
  757. package/dist/web/cookies/setup.js +94 -0
  758. package/dist/web/design/index.d.ts +9 -0
  759. package/dist/web/design/index.js +9 -0
  760. package/dist/web/design/inventory.d.ts +126 -0
  761. package/dist/web/design/inventory.js +324 -0
  762. package/dist/web/design/probe.d.ts +24 -0
  763. package/dist/web/design/probe.js +88 -0
  764. package/dist/web/element/actionable.d.ts +34 -0
  765. package/dist/web/element/actionable.js +48 -0
  766. package/dist/web/element/animations.d.ts +48 -0
  767. package/dist/web/element/animations.js +74 -0
  768. package/dist/web/element/box.d.ts +53 -0
  769. package/dist/web/element/box.js +58 -0
  770. package/dist/web/element/hover.d.ts +75 -0
  771. package/dist/web/element/hover.js +172 -0
  772. package/dist/web/element/index.d.ts +17 -0
  773. package/dist/web/element/index.js +17 -0
  774. package/dist/web/element/listeners.d.ts +72 -0
  775. package/dist/web/element/listeners.js +98 -0
  776. package/dist/web/element/measure.d.ts +40 -0
  777. package/dist/web/element/measure.js +118 -0
  778. package/dist/web/element/probes.d.ts +108 -0
  779. package/dist/web/element/probes.js +195 -0
  780. package/dist/web/element/pseudo.d.ts +51 -0
  781. package/dist/web/element/pseudo.js +96 -0
  782. package/dist/web/element/view.d.ts +30 -0
  783. package/dist/web/element/view.js +117 -0
  784. package/dist/web/element/visibility.d.ts +42 -0
  785. package/dist/web/element/visibility.js +67 -0
  786. package/dist/web/envelope/artifacts.d.ts +23 -0
  787. package/dist/web/envelope/artifacts.js +45 -0
  788. package/dist/web/envelope/index.d.ts +9 -0
  789. package/dist/web/envelope/index.js +9 -0
  790. package/dist/web/envelope/naming.d.ts +23 -0
  791. package/dist/web/envelope/naming.js +43 -0
  792. package/dist/web/envelope/paged.d.ts +42 -0
  793. package/dist/web/envelope/paged.js +99 -0
  794. package/dist/web/envelope/sink.d.ts +43 -0
  795. package/dist/web/envelope/sink.js +67 -0
  796. package/dist/web/environment/devices.d.ts +65 -0
  797. package/dist/web/environment/devices.js +82 -0
  798. package/dist/web/environment/emulation.d.ts +124 -0
  799. package/dist/web/environment/emulation.js +258 -0
  800. package/dist/web/environment/index.d.ts +15 -0
  801. package/dist/web/environment/index.js +15 -0
  802. package/dist/web/environment/probes.d.ts +18 -0
  803. package/dist/web/environment/probes.js +40 -0
  804. package/dist/web/environment/shaping.d.ts +90 -0
  805. package/dist/web/environment/shaping.js +141 -0
  806. package/dist/web/environment/status.d.ts +51 -0
  807. package/dist/web/environment/status.js +109 -0
  808. package/dist/web/environment/storage.d.ts +55 -0
  809. package/dist/web/environment/storage.js +142 -0
  810. package/dist/web/environment/tabs.d.ts +32 -0
  811. package/dist/web/environment/tabs.js +47 -0
  812. package/dist/web/environment/view.d.ts +10 -0
  813. package/dist/web/environment/view.js +42 -0
  814. package/dist/web/evaluate/index.d.ts +6 -0
  815. package/dist/web/evaluate/index.js +6 -0
  816. package/dist/web/evaluate/outcome.d.ts +74 -0
  817. package/dist/web/evaluate/outcome.js +91 -0
  818. package/dist/web/evaluate/probe.d.ts +31 -0
  819. package/dist/web/evaluate/probe.js +303 -0
  820. package/dist/web/index.d.ts +47 -0
  821. package/dist/web/index.js +47 -0
  822. package/dist/web/input/index.d.ts +11 -0
  823. package/dist/web/input/index.js +11 -0
  824. package/dist/web/input/keys.d.ts +48 -0
  825. package/dist/web/input/keys.js +189 -0
  826. package/dist/web/input/pointer.d.ts +56 -0
  827. package/dist/web/input/pointer.js +77 -0
  828. package/dist/web/input/touch.d.ts +61 -0
  829. package/dist/web/input/touch.js +83 -0
  830. package/dist/web/mermaid.d.ts +69 -0
  831. package/dist/web/mermaid.js +223 -0
  832. package/dist/web/paths.d.ts +16 -0
  833. package/dist/web/paths.js +27 -0
  834. package/dist/web/perf/heap.d.ts +42 -0
  835. package/dist/web/perf/heap.js +73 -0
  836. package/dist/web/perf/index.d.ts +14 -0
  837. package/dist/web/perf/index.js +14 -0
  838. package/dist/web/perf/layers.d.ts +98 -0
  839. package/dist/web/perf/layers.js +165 -0
  840. package/dist/web/perf/probe.d.ts +26 -0
  841. package/dist/web/perf/probe.js +123 -0
  842. package/dist/web/perf/profile.d.ts +53 -0
  843. package/dist/web/perf/profile.js +97 -0
  844. package/dist/web/perf/trace.d.ts +152 -0
  845. package/dist/web/perf/trace.js +429 -0
  846. package/dist/web/perf/view.d.ts +6 -0
  847. package/dist/web/perf/view.js +86 -0
  848. package/dist/web/perf/vitals.d.ts +141 -0
  849. package/dist/web/perf/vitals.js +175 -0
  850. package/dist/web/reader.d.ts +131 -0
  851. package/dist/web/reader.js +340 -0
  852. package/dist/web/screenshot.d.ts +50 -0
  853. package/dist/web/screenshot.js +108 -0
  854. package/dist/web/search.d.ts +49 -0
  855. package/dist/web/search.js +137 -0
  856. package/dist/web/session/artifacts.d.ts +32 -0
  857. package/dist/web/session/artifacts.js +47 -0
  858. package/dist/web/session/emulation.d.ts +118 -0
  859. package/dist/web/session/emulation.js +307 -0
  860. package/dist/web/session/recording.d.ts +51 -0
  861. package/dist/web/session/recording.js +64 -0
  862. package/dist/web/session/settling.d.ts +42 -0
  863. package/dist/web/session/settling.js +104 -0
  864. package/dist/web/session/shaping.d.ts +48 -0
  865. package/dist/web/session/shaping.js +113 -0
  866. package/dist/web/session/sourcemaps.d.ts +64 -0
  867. package/dist/web/session/sourcemaps.js +135 -0
  868. package/dist/web/session/telemetry.d.ts +219 -0
  869. package/dist/web/session/telemetry.js +486 -0
  870. package/dist/web/session/wires.d.ts +22 -0
  871. package/dist/web/session/wires.js +11 -0
  872. package/dist/web/session.d.ts +1153 -0
  873. package/dist/web/session.js +3400 -0
  874. package/dist/web/snapshot/deep.d.ts +36 -0
  875. package/dist/web/snapshot/deep.js +91 -0
  876. package/dist/web/snapshot/flatten.d.ts +101 -0
  877. package/dist/web/snapshot/flatten.js +131 -0
  878. package/dist/web/snapshot/index.d.ts +8 -0
  879. package/dist/web/snapshot/index.js +10 -0
  880. package/dist/web/snapshot/presented.d.ts +32 -0
  881. package/dist/web/snapshot/presented.js +74 -0
  882. package/dist/web/snapshot/query.d.ts +67 -0
  883. package/dist/web/snapshot/query.js +136 -0
  884. package/dist/web/sourcemap/index.d.ts +9 -0
  885. package/dist/web/sourcemap/index.js +9 -0
  886. package/dist/web/sourcemap/mappings.d.ts +111 -0
  887. package/dist/web/sourcemap/mappings.js +218 -0
  888. package/dist/web/styles/capture.d.ts +49 -0
  889. package/dist/web/styles/capture.js +85 -0
  890. package/dist/web/styles/cascade.d.ts +107 -0
  891. package/dist/web/styles/cascade.js +275 -0
  892. package/dist/web/styles/curation.d.ts +45 -0
  893. package/dist/web/styles/curation.js +282 -0
  894. package/dist/web/styles/index.d.ts +10 -0
  895. package/dist/web/styles/index.js +10 -0
  896. package/dist/web/target/index.d.ts +7 -0
  897. package/dist/web/target/index.js +7 -0
  898. package/dist/web/target/refusals.d.ts +59 -0
  899. package/dist/web/target/refusals.js +305 -0
  900. package/dist/web/target/target.d.ts +59 -0
  901. package/dist/web/target/target.js +94 -0
  902. package/dist/web/telemetry/buffer.d.ts +35 -0
  903. package/dist/web/telemetry/buffer.js +72 -0
  904. package/dist/web/telemetry/console.d.ts +127 -0
  905. package/dist/web/telemetry/console.js +217 -0
  906. package/dist/web/telemetry/dialogs.d.ts +41 -0
  907. package/dist/web/telemetry/dialogs.js +38 -0
  908. package/dist/web/telemetry/downloads.d.ts +42 -0
  909. package/dist/web/telemetry/downloads.js +65 -0
  910. package/dist/web/telemetry/failure.d.ts +31 -0
  911. package/dist/web/telemetry/failure.js +72 -0
  912. package/dist/web/telemetry/har.d.ts +97 -0
  913. package/dist/web/telemetry/har.js +227 -0
  914. package/dist/web/telemetry/index.d.ts +18 -0
  915. package/dist/web/telemetry/index.js +18 -0
  916. package/dist/web/telemetry/lifecycle.d.ts +69 -0
  917. package/dist/web/telemetry/lifecycle.js +120 -0
  918. package/dist/web/telemetry/network.d.ts +152 -0
  919. package/dist/web/telemetry/network.js +130 -0
  920. package/dist/web/telemetry/requests.d.ts +31 -0
  921. package/dist/web/telemetry/requests.js +119 -0
  922. package/dist/web/telemetry/sockets.d.ts +56 -0
  923. package/dist/web/telemetry/sockets.js +101 -0
  924. package/dist/web/telemetry/view.d.ts +16 -0
  925. package/dist/web/telemetry/view.js +125 -0
  926. package/dist/web/wait/conditions.d.ts +87 -0
  927. package/dist/web/wait/conditions.js +100 -0
  928. package/dist/web/wait/index.d.ts +6 -0
  929. package/dist/web/wait/index.js +6 -0
  930. package/dist/web/wait/settle.d.ts +54 -0
  931. package/dist/web/wait/settle.js +84 -0
  932. package/dist/work/ask.d.ts +45 -0
  933. package/dist/work/ask.js +85 -0
  934. package/dist/work/author.d.ts +61 -0
  935. package/dist/work/author.js +144 -0
  936. package/dist/work/broker.d.ts +151 -0
  937. package/dist/work/broker.js +165 -0
  938. package/dist/work/events.d.ts +98 -0
  939. package/dist/work/events.js +57 -0
  940. package/dist/work/history.d.ts +69 -0
  941. package/dist/work/history.js +174 -0
  942. package/dist/work/index.d.ts +49 -0
  943. package/dist/work/index.js +33 -0
  944. package/dist/work/inplay.d.ts +43 -0
  945. package/dist/work/inplay.js +42 -0
  946. package/dist/work/memory.d.ts +84 -0
  947. package/dist/work/memory.js +203 -0
  948. package/dist/work/objection.d.ts +92 -0
  949. package/dist/work/objection.js +72 -0
  950. package/dist/work/provider.d.ts +79 -0
  951. package/dist/work/provider.js +45 -0
  952. package/dist/work/providers/git.d.ts +29 -0
  953. package/dist/work/providers/git.js +87 -0
  954. package/dist/work/publish.d.ts +53 -0
  955. package/dist/work/publish.js +139 -0
  956. package/dist/work/rebase.d.ts +78 -0
  957. package/dist/work/rebase.js +261 -0
  958. package/dist/work/reclaim.d.ts +56 -0
  959. package/dist/work/reclaim.js +52 -0
  960. package/dist/work/register.d.ts +29 -0
  961. package/dist/work/register.js +41 -0
  962. package/dist/work/stack.d.ts +126 -0
  963. package/dist/work/stack.js +243 -0
  964. package/dist/work/stacks.d.ts +156 -0
  965. package/dist/work/stacks.js +524 -0
  966. package/dist/work/survey.d.ts +52 -0
  967. package/dist/work/survey.js +58 -0
  968. package/dist/work/tidy.d.ts +147 -0
  969. package/dist/work/tidy.js +136 -0
  970. package/dist/work/tree.d.ts +120 -0
  971. package/dist/work/tree.js +69 -0
  972. package/dist/work/unattended.d.ts +40 -0
  973. package/dist/work/unattended.js +57 -0
  974. package/package.json +145 -0
@@ -0,0 +1,22 @@
1
+ /**
2
+ * The states an element is in, said the same way everywhere.
3
+ *
4
+ * The outline and the reading differ in layout but must not
5
+ * differ on facts: if one says a control is disabled, so does
6
+ * the other. Both ask this module.
7
+ */
8
+ import type { AxNode } from "./tree.js";
9
+ /** How the caller wants the states phrased. */
10
+ export interface StateOptions {
11
+ /** Leave the heading level out, for a reader that says it with the role. */
12
+ readonly skipLevel?: boolean;
13
+ }
14
+ /**
15
+ * The states worth saying out loud, in a fixed order so two
16
+ * outlines of the same page read the same way.
17
+ *
18
+ * Only states that are in effect are reported. A field that is
19
+ * not required and not invalid is the ordinary case, and
20
+ * saying so on every line would bury the lines that matter.
21
+ */
22
+ export declare function describeStates(node: AxNode, options?: StateOptions): string[];
@@ -0,0 +1,53 @@
1
+ /**
2
+ * The states an element is in, said the same way everywhere.
3
+ *
4
+ * The outline and the reading differ in layout but must not
5
+ * differ on facts: if one says a control is disabled, so does
6
+ * the other. Both ask this module.
7
+ */
8
+ /**
9
+ * The states worth saying out loud, in a fixed order so two
10
+ * outlines of the same page read the same way.
11
+ *
12
+ * Only states that are in effect are reported. A field that is
13
+ * not required and not invalid is the ordinary case, and
14
+ * saying so on every line would bury the lines that matter.
15
+ */
16
+ export function describeStates(node, options = {}) {
17
+ const { properties: props } = node;
18
+ const states = [];
19
+ if (props.level !== undefined && !options.skipLevel) {
20
+ states.push(`level ${props.level}`);
21
+ }
22
+ if (props.checked === "true")
23
+ states.push("checked");
24
+ if (props.checked === "mixed")
25
+ states.push("partially checked");
26
+ if (props.disabled === true)
27
+ states.push("disabled");
28
+ if (props.expanded === true)
29
+ states.push("expanded");
30
+ if (props.expanded === false)
31
+ states.push("collapsed");
32
+ if (props.selected === true)
33
+ states.push("selected");
34
+ if (props.required === true)
35
+ states.push("required");
36
+ if (isInvalid(props.invalid))
37
+ states.push("invalid");
38
+ if (props.readonly === true)
39
+ states.push("read only");
40
+ if (props.focused === true)
41
+ states.push("focused");
42
+ if (typeof props.live === "string" && props.live && props.live !== "off") {
43
+ states.push(`live ${props.live}`);
44
+ }
45
+ if (node.value !== undefined && node.value !== "") {
46
+ states.push(`value ${JSON.stringify(node.value)}`);
47
+ }
48
+ return states;
49
+ }
50
+ /** Chrome reports validity as a token, where "false" means valid. */
51
+ function isInvalid(invalid) {
52
+ return invalid !== undefined && invalid !== false && invalid !== "false";
53
+ }
@@ -0,0 +1,124 @@
1
+ /**
2
+ * The enriched accessibility tree.
3
+ *
4
+ * Chrome's accessibility tree is the page as assistive
5
+ * technology sees it. This normalizes a raw CDP capture into a
6
+ * tree that keeps what a screen reader would announce: not
7
+ * just role and name, but the states, values and levels that
8
+ * say what a control is doing right now.
9
+ *
10
+ * The input is plain serializable data, so a capture from
11
+ * anywhere (CDP, Playwright, a fixture on disk) can be
12
+ * analyzed by the same code.
13
+ */
14
+ import { type NameSource } from "./naming.js";
15
+ /** One way Chrome tried to name an element. */
16
+ export interface RawAxNameSource {
17
+ type: string;
18
+ attribute?: string;
19
+ nativeSource?: string;
20
+ value?: {
21
+ type?: string;
22
+ value?: string | number;
23
+ };
24
+ /** Chrome found a name here but a higher-priority source won. */
25
+ superseded?: boolean;
26
+ /** The page pointed this source at something that is not there. */
27
+ invalid?: boolean;
28
+ }
29
+ /** A property Chrome reports against an accessibility node. */
30
+ export interface RawAxProperty {
31
+ name: string;
32
+ value?: {
33
+ type?: string;
34
+ value?: string | number | boolean;
35
+ };
36
+ }
37
+ /** A raw CDP accessibility node (the fields we read). */
38
+ export interface RawAxNode {
39
+ nodeId: string;
40
+ parentId?: string;
41
+ backendDOMNodeId?: number;
42
+ childIds?: string[];
43
+ role?: {
44
+ value?: string;
45
+ };
46
+ name?: {
47
+ value?: string;
48
+ sources?: RawAxNameSource[];
49
+ };
50
+ description?: {
51
+ value?: string;
52
+ };
53
+ value?: {
54
+ type?: string;
55
+ value?: string | number;
56
+ };
57
+ properties?: RawAxProperty[];
58
+ ignored?: boolean;
59
+ }
60
+ /** The states and relationships reported against a node. */
61
+ export type AxProperties = Readonly<Record<string, string | number | boolean>>;
62
+ /** A normalized accessibility node. */
63
+ export interface AxNode {
64
+ readonly role: string;
65
+ readonly name: string;
66
+ /** CDP backend DOM node id, used internally to resolve an element. */
67
+ readonly backendDomId?: number;
68
+ /** The control's current value, when it has one. */
69
+ readonly value?: string | number;
70
+ /** Which mechanism produced the accessible name. */
71
+ readonly nameFrom?: NameSource;
72
+ readonly description?: string;
73
+ readonly properties: AxProperties;
74
+ readonly children: readonly AxNode[];
75
+ }
76
+ /**
77
+ * Normalize a raw CDP accessibility capture into a tree.
78
+ *
79
+ * A node the page does not expose is folded, not pruned: a real
80
+ * capture buries the whole document under ignored html and body
81
+ * wrappers, so its exposed children rise in its place.
82
+ *
83
+ * A text carrier whose name only repeats a named ancestor is
84
+ * folded away too: the page says "Save" once, so the tree should
85
+ * too. Text that no ancestor is named after is content, and
86
+ * survives.
87
+ */
88
+ export declare function normalizeAxTree(nodes: readonly RawAxNode[]): AxNode;
89
+ /**
90
+ * Whether a node says anything on its own. An unnamed wrapper
91
+ * does not: it is scaffolding the page needed and the reader
92
+ * does not. Rendering folds these away, and scoping does not
93
+ * count them as a level, so the two agree on what a level is.
94
+ */
95
+ export declare function isMeaningful(node: AxNode): boolean;
96
+ /** One frame's accessibility tree, and the element that holds it. */
97
+ export interface FrameAxTree {
98
+ /** Backend DOM node id of the iframe element that owns the frame. */
99
+ readonly ownerBackendNodeId: number;
100
+ readonly nodes: readonly RawAxNode[];
101
+ }
102
+ /**
103
+ * Hang each frame's tree under the iframe element that owns it.
104
+ *
105
+ * Chrome answers for one frame at a time: the page's tree stops
106
+ * at an Iframe node with no children, and the frame's own tree
107
+ * arrives separately, rooted at its own RootWebArea. Left
108
+ * unjoined, every reading of the page ended at the boundary, and
109
+ * an outline, a structural audit or a keyboard walk simply did
110
+ * not contain what the frame held. Nothing said so, which is the
111
+ * worst part: an embedded checkout form read as an empty box.
112
+ *
113
+ * Every frame's nodes are renumbered on the way in. Both trees
114
+ * number from one, so merging them as they arrive makes the
115
+ * frame's root a duplicate of the page's, and a walk over the
116
+ * result either loses nodes or goes round forever.
117
+ *
118
+ * Frames whose owner is not present are dropped rather than
119
+ * attached to the root. That covers a cross-origin frame, which
120
+ * cannot be read at all, and a frame that went away while we were
121
+ * asking; inventing a parent for either would put content
122
+ * somewhere the page does not have it.
123
+ */
124
+ export declare function spliceFrames(main: readonly RawAxNode[], frames: readonly FrameAxTree[]): RawAxNode[];
@@ -0,0 +1,269 @@
1
+ /**
2
+ * The enriched accessibility tree.
3
+ *
4
+ * Chrome's accessibility tree is the page as assistive
5
+ * technology sees it. This normalizes a raw CDP capture into a
6
+ * tree that keeps what a screen reader would announce: not
7
+ * just role and name, but the states, values and levels that
8
+ * say what a control is doing right now.
9
+ *
10
+ * The input is plain serializable data, so a capture from
11
+ * anywhere (CDP, Playwright, a fixture on disk) can be
12
+ * analyzed by the same code.
13
+ */
14
+ import { nameSource } from "./naming.js";
15
+ /** An empty tree, for a capture with nothing in it. */
16
+ const EMPTY = { role: "", name: "", properties: {}, children: [] };
17
+ /**
18
+ * Roles whose node carries no meaning of its own: it exists to
19
+ * hold the text its parent is already named after.
20
+ */
21
+ const TEXT_CARRIER_ROLES = new Set([
22
+ "StaticText",
23
+ "InlineTextBox",
24
+ "text",
25
+ "LabelText",
26
+ ]);
27
+ /** Roles that exist to draw something, and say nothing. */
28
+ const PRESENTATIONAL_ROLES = new Set(["ListMarker"]);
29
+ /**
30
+ * Roles that are named by the text inside them.
31
+ *
32
+ * Only these can make a repeat of a text node below them, and
33
+ * the distinction is not pedantry. A container labelled from
34
+ * somewhere else, by aria-label or aria-labelledby, can be
35
+ * named the same as words it happens to contain: Wikipedia
36
+ * labels an article's body with the article's title, and the
37
+ * article opens with that title in bold. Folding on any named
38
+ * ancestor deleted the subject of the first sentence, which
39
+ * then read " is the design of products".
40
+ */
41
+ const NAMED_FROM_CONTENT_ROLES = new Set([
42
+ "button",
43
+ "caption",
44
+ "cell",
45
+ "checkbox",
46
+ "columnheader",
47
+ "gridcell",
48
+ "heading",
49
+ "legend",
50
+ "link",
51
+ "menuitem",
52
+ "menuitemcheckbox",
53
+ "menuitemradio",
54
+ "option",
55
+ "radio",
56
+ "row",
57
+ "rowheader",
58
+ "switch",
59
+ "tab",
60
+ "tooltip",
61
+ "treeitem",
62
+ ]);
63
+ /**
64
+ * Normalize a raw CDP accessibility capture into a tree.
65
+ *
66
+ * A node the page does not expose is folded, not pruned: a real
67
+ * capture buries the whole document under ignored html and body
68
+ * wrappers, so its exposed children rise in its place.
69
+ *
70
+ * A text carrier whose name only repeats a named ancestor is
71
+ * folded away too: the page says "Save" once, so the tree should
72
+ * too. Text that no ancestor is named after is content, and
73
+ * survives.
74
+ */
75
+ export function normalizeAxTree(nodes) {
76
+ const byId = new Map(nodes.map((node) => [node.nodeId, node]));
77
+ const build = (id, namedAncestors) => {
78
+ const rawNode = byId.get(id);
79
+ if (!rawNode)
80
+ return [];
81
+ const role = rawNode.role?.value ?? "";
82
+ const name = rawNode.name?.value ?? "";
83
+ // An unexposed node is a wrapper as far as we are
84
+ // concerned: it contributes nothing itself, but what it
85
+ // contains may still be part of the page.
86
+ if (rawNode.ignored) {
87
+ return (rawNode.childIds ?? []).flatMap((childId) => build(childId, namedAncestors));
88
+ }
89
+ // A carrier repeating a name an ancestor already announced
90
+ // is a duplicate; its children repeat it too, so the whole
91
+ // branch goes.
92
+ if (TEXT_CARRIER_ROLES.has(role) && namedAncestors.includes(name)) {
93
+ return [];
94
+ }
95
+ // A line box is one rendered line of the text above it, so it
96
+ // repeats a fragment rather than the whole and never matches
97
+ // exactly. Containment is the test that catches it, and it is
98
+ // applied only to this role: a short StaticText can sit inside
99
+ // a longer name legitimately, whereas a line box never carries
100
+ // anything its parent's text does not already contain.
101
+ //
102
+ // When no ancestor announced the words, the line box is the
103
+ // only copy there is, which happens once its StaticText parent
104
+ // is ignored and its children rise. Then it stays.
105
+ if (role === "InlineTextBox" &&
106
+ namedAncestors.some((announced) => announced.includes(name))) {
107
+ return [];
108
+ }
109
+ if (PRESENTATIONAL_ROLES.has(role))
110
+ return [];
111
+ const value = rawNode.value?.value;
112
+ // The value is shown against the control itself, so text
113
+ // beneath it saying the same thing is a second copy.
114
+ // A carrier's name is its own text, so it announces too: that
115
+ // is what lets its line boxes fold into it.
116
+ const announces = name &&
117
+ (NAMED_FROM_CONTENT_ROLES.has(role) || TEXT_CARRIER_ROLES.has(role));
118
+ const spoken = announces ? [...namedAncestors, name] : namedAncestors;
119
+ const inherited = value === undefined ? spoken : [...spoken, String(value)];
120
+ const children = dropRepeatedText((rawNode.childIds ?? []).flatMap((childId) => build(childId, inherited)));
121
+ const backend = rawNode.backendDOMNodeId;
122
+ const description = rawNode.description?.value;
123
+ // Only say where a name came from when the capture
124
+ // actually reported the mechanisms it tried.
125
+ const from = rawNode.name?.sources ? nameSource(rawNode) : undefined;
126
+ return [
127
+ {
128
+ role,
129
+ name,
130
+ ...(backend !== undefined ? { backendDomId: backend } : {}),
131
+ ...(value !== undefined ? { value } : {}),
132
+ ...(from ? { nameFrom: from } : {}),
133
+ ...(description ? { description } : {}),
134
+ properties: readProperties(rawNode),
135
+ children,
136
+ },
137
+ ];
138
+ };
139
+ const root = nodes.find((node) => !node.parentId) ?? nodes[0];
140
+ if (!root)
141
+ return EMPTY;
142
+ return build(root.nodeId, [])[0] ?? EMPTY;
143
+ }
144
+ /**
145
+ * Drop text among a set of siblings that another sibling has
146
+ * already announced. A label sits beside the control it names,
147
+ * so its text reaches the caller through the control and does
148
+ * not need a line of its own.
149
+ */
150
+ function dropRepeatedText(siblings) {
151
+ const spokenElsewhere = new Set(siblings
152
+ .filter((node) => !isTextOnly(node))
153
+ .map((node) => node.name)
154
+ .filter((name) => name.length > 0));
155
+ if (spokenElsewhere.size === 0)
156
+ return [...siblings];
157
+ return siblings.filter((node) => !(isTextOnly(node) && spokenElsewhere.has(carriedText(node))));
158
+ }
159
+ /** Whether a node is nothing but the text it carries. */
160
+ function isTextOnly(node) {
161
+ if (!TEXT_CARRIER_ROLES.has(node.role))
162
+ return false;
163
+ return node.children.every(isTextOnly);
164
+ }
165
+ /**
166
+ * The text a carrier presents. A label holds its words in a
167
+ * child rather than its own name, so read through to them.
168
+ */
169
+ function carriedText(node) {
170
+ if (node.name)
171
+ return node.name;
172
+ return node.children.map(carriedText).join("").trim();
173
+ }
174
+ /** Roles that add no meaning on their own and are folded away when unnamed. */
175
+ const NOISE_ROLES = new Set([
176
+ "generic",
177
+ "none",
178
+ "presentation",
179
+ "document",
180
+ "RootWebArea",
181
+ "InlineTextBox",
182
+ "StaticText",
183
+ "text",
184
+ ]);
185
+ /**
186
+ * Whether a node says anything on its own. An unnamed wrapper
187
+ * does not: it is scaffolding the page needed and the reader
188
+ * does not. Rendering folds these away, and scoping does not
189
+ * count them as a level, so the two agree on what a level is.
190
+ */
191
+ export function isMeaningful(node) {
192
+ if (node.name.trim().length > 0)
193
+ return true;
194
+ return !NOISE_ROLES.has(node.role);
195
+ }
196
+ /** Collect a node's reported properties into a flat record. */
197
+ function readProperties(node) {
198
+ const properties = {};
199
+ for (const property of node.properties ?? []) {
200
+ const value = property.value?.value;
201
+ if (value !== undefined)
202
+ properties[property.name] = value;
203
+ }
204
+ return properties;
205
+ }
206
+ /**
207
+ * Hang each frame's tree under the iframe element that owns it.
208
+ *
209
+ * Chrome answers for one frame at a time: the page's tree stops
210
+ * at an Iframe node with no children, and the frame's own tree
211
+ * arrives separately, rooted at its own RootWebArea. Left
212
+ * unjoined, every reading of the page ended at the boundary, and
213
+ * an outline, a structural audit or a keyboard walk simply did
214
+ * not contain what the frame held. Nothing said so, which is the
215
+ * worst part: an embedded checkout form read as an empty box.
216
+ *
217
+ * Every frame's nodes are renumbered on the way in. Both trees
218
+ * number from one, so merging them as they arrive makes the
219
+ * frame's root a duplicate of the page's, and a walk over the
220
+ * result either loses nodes or goes round forever.
221
+ *
222
+ * Frames whose owner is not present are dropped rather than
223
+ * attached to the root. That covers a cross-origin frame, which
224
+ * cannot be read at all, and a frame that went away while we were
225
+ * asking; inventing a parent for either would put content
226
+ * somewhere the page does not have it.
227
+ */
228
+ export function spliceFrames(main, frames) {
229
+ if (frames.length === 0)
230
+ return [...main];
231
+ const merged = main.map((node) => ({ ...node }));
232
+ const byBackendId = new Map();
233
+ for (const node of merged) {
234
+ if (node.backendDOMNodeId !== undefined) {
235
+ byBackendId.set(node.backendDOMNodeId, node);
236
+ }
237
+ }
238
+ // In order, so a frame nested inside another is spliced after
239
+ // its parent frame has been merged and its owner is findable.
240
+ frames.forEach((frame, index) => {
241
+ const owner = byBackendId.get(frame.ownerBackendNodeId);
242
+ if (!owner)
243
+ return;
244
+ const prefix = `f${index}:`;
245
+ const rename = (id) => `${prefix}${id}`;
246
+ const renamed = frame.nodes.map((node) => ({
247
+ ...node,
248
+ nodeId: rename(node.nodeId),
249
+ ...(node.parentId === undefined
250
+ ? {}
251
+ : { parentId: rename(node.parentId) }),
252
+ ...(node.childIds === undefined
253
+ ? {}
254
+ : { childIds: node.childIds.map(rename) }),
255
+ }));
256
+ const root = renamed.find((node) => node.parentId === undefined);
257
+ if (!root)
258
+ return;
259
+ root.parentId = owner.nodeId;
260
+ owner.childIds = [...(owner.childIds ?? []), root.nodeId];
261
+ for (const node of renamed) {
262
+ merged.push(node);
263
+ if (node.backendDOMNodeId !== undefined) {
264
+ byBackendId.set(node.backendDOMNodeId, node);
265
+ }
266
+ }
267
+ });
268
+ return merged;
269
+ }
@@ -0,0 +1,225 @@
1
+ /**
2
+ * The keyboard walk: what a person who never touches a mouse
3
+ * can actually reach.
4
+ *
5
+ * Every finding here comes from what the browser did when Tab
6
+ * was pressed, not from reading markup and predicting what it
7
+ * ought to do. A focus trap written by hand, a positive tabindex
8
+ * reordering the page, a div wearing a button's clothes: none of
9
+ * these are visible in the markup as bugs, and all of them are
10
+ * obvious the moment you try to tab through.
11
+ *
12
+ * The one judgment that is presentational, and labelled as such,
13
+ * is whether a focus indicator exists: that is decided by
14
+ * comparing what the browser computed for the element at rest
15
+ * against what it computed with focus on it. Whether the
16
+ * resulting indicator is bright enough to see is a contrast
17
+ * question, and belongs with the contrast audit rather than
18
+ * here; this module records the indicator so that audit can
19
+ * judge it.
20
+ */
21
+ /** The style properties a focus indicator could live in. */
22
+ export interface FocusStyle {
23
+ readonly outlineStyle: string;
24
+ readonly outlineWidth: string;
25
+ readonly outlineColor: string;
26
+ readonly boxShadow: string;
27
+ readonly backgroundColor: string;
28
+ readonly borderColor: string;
29
+ readonly color: string;
30
+ }
31
+ /** Something the browser says can hold focus. */
32
+ export interface WalkCandidate {
33
+ /** Position in document order, and the identity used throughout. */
34
+ readonly index: number;
35
+ readonly tag: string;
36
+ readonly id?: string;
37
+ readonly role?: string;
38
+ readonly name: string;
39
+ readonly tabindex?: number;
40
+ /** Inside an open dialog that is holding focus on purpose. */
41
+ readonly inModal?: boolean;
42
+ readonly resting: FocusStyle;
43
+ }
44
+ /** Where focus actually landed, once. */
45
+ export interface WalkStop {
46
+ /** The candidate this is, or -1 when focus left them all. */
47
+ readonly index: number;
48
+ readonly tag: string;
49
+ readonly id?: string;
50
+ readonly name: string;
51
+ readonly inViewport: boolean;
52
+ /** Inside an open dialog that is holding focus on purpose. */
53
+ readonly inModal?: boolean;
54
+ readonly focused: FocusStyle;
55
+ /** Where it sits, when the browser gave it a box. */
56
+ readonly rect?: {
57
+ readonly x: number;
58
+ readonly y: number;
59
+ readonly width: number;
60
+ readonly height: number;
61
+ };
62
+ }
63
+ /** Two controls on one line that tab against the way they read. */
64
+ export interface VisualJump {
65
+ readonly before: WalkStop;
66
+ readonly after: WalkStop;
67
+ }
68
+ /**
69
+ * Tab order that contradicts the order things are read in.
70
+ *
71
+ * Only same-line inversions, and deliberately so. The general
72
+ * question, whether tab order follows the visual flow of the
73
+ * page, cannot be answered without deciding whether a layout is
74
+ * meant to be read in rows or in columns, and a two-column form
75
+ * that tabs down one column and then the other is both extremely
76
+ * common and perfectly correct. A check that flagged it would be
77
+ * wrong far more often than right, and a false accessibility
78
+ * finding costs more than a missing one.
79
+ *
80
+ * Two controls side by side, tabbed in the opposite order to the
81
+ * one they are read in, has no such excuse. It is what
82
+ * row-reverse and hand-set order values do, and the keyboard
83
+ * order it produces contradicts the page for everybody.
84
+ */
85
+ export declare function outOfVisualOrder(stops: readonly WalkStop[], direction: "ltr" | "rtl"): readonly VisualJump[];
86
+ /** Something that behaves interactively but cannot be reached. */
87
+ export interface Unreachable {
88
+ readonly tag: string;
89
+ readonly role?: string;
90
+ readonly name: string;
91
+ /** What made it look interactive. */
92
+ readonly because: string;
93
+ }
94
+ /** Everything the driver observed while walking. */
95
+ export interface WalkCapture {
96
+ readonly candidates: readonly WalkCandidate[];
97
+ readonly stops: readonly WalkStop[];
98
+ readonly unreachable: readonly Unreachable[];
99
+ /** Whether pressing Escape freed focus, when it was stuck. */
100
+ readonly escapeFreed?: boolean;
101
+ /** True when the walk stopped at its cap rather than cycling. */
102
+ readonly cappedAt?: number;
103
+ /** Which way the page reads, from the document itself. */
104
+ readonly direction?: "ltr" | "rtl";
105
+ }
106
+ /** Where a focus indicator lives, if anywhere. */
107
+ export type Indicator = "outline" | "boxShadow" | "background" | "border" | "colour" | "none";
108
+ /** A focus ring that is there and cannot be seen. */
109
+ export interface FaintIndicator {
110
+ readonly stop: WalkStop;
111
+ /** Against what it is drawn on, where 2.4.11 asks for 3. */
112
+ readonly ratio: number;
113
+ }
114
+ /** A group of stops focus could not get out of. */
115
+ export interface Trap {
116
+ readonly members: readonly WalkStop[];
117
+ readonly escapeFreed: boolean;
118
+ /**
119
+ * Controls outside the cycle, which is what makes it a trap.
120
+ *
121
+ * Not the same as the walk's `missed`: these may well have been
122
+ * visited on the way in. What matters is that focus cannot get
123
+ * back to them once it is inside.
124
+ */
125
+ readonly stranded: readonly WalkCandidate[];
126
+ }
127
+ /** What the walk found. */
128
+ export interface WalkFindings {
129
+ readonly stops: readonly WalkStop[];
130
+ readonly trap?: Trap;
131
+ /** Focusable things the walk never arrived at. */
132
+ readonly missed: readonly WalkCandidate[];
133
+ /** Stops whose appearance does not change when focused. */
134
+ readonly noIndicator: readonly WalkStop[];
135
+ /**
136
+ * Stops whose indicator exists but is too faint to make out.
137
+ *
138
+ * Kept apart from `noIndicator` because the repair differs: one
139
+ * needs a rule written, the other needs a colour changed.
140
+ */
141
+ readonly faintIndicator: readonly FaintIndicator[];
142
+ /**
143
+ * Pairs on one line that tab against the way they read.
144
+ *
145
+ * Undecided rather than failed: the geometry is certain, but
146
+ * whether it confuses anyone is a judgement about the page.
147
+ */
148
+ readonly outOfOrder: readonly VisualJump[];
149
+ /** Where the indicator lives, for those that have one. */
150
+ readonly indicators: ReadonlyMap<number, Indicator>;
151
+ /** Stops that were focused while off screen. */
152
+ readonly offscreen: readonly WalkStop[];
153
+ /** Candidates with a positive tabindex, which reorders the page. */
154
+ readonly positiveTabindex: readonly WalkCandidate[];
155
+ readonly unreachable: readonly Unreachable[];
156
+ /** True when the tab order does not follow document order. */
157
+ readonly reordered: boolean;
158
+ /**
159
+ * The stop budget, when the walk ran out of it.
160
+ *
161
+ * Set means the page was not walked to the end, so anything in
162
+ * `missed` is unvisited rather than unreachable and cannot be
163
+ * counted as a failure.
164
+ */
165
+ readonly cappedAt?: number;
166
+ /** True when focus stayed inside a dialog that meant to hold it. */
167
+ readonly modalHeldFocus: boolean;
168
+ }
169
+ /**
170
+ * Where the focus indicator lives, by comparing rest with focus.
171
+ *
172
+ * This is the honest test, and the only one that survives
173
+ * contact with real pages: not whether the author wrote an
174
+ * outline rule, but whether the browser draws anything
175
+ * differently when the element has focus.
176
+ */
177
+ export declare function indicatorOf(resting: FocusStyle, focused: FocusStyle): Indicator;
178
+ /** What judging a focus indicator's visibility concluded. */
179
+ export interface IndicatorVerdict {
180
+ readonly standing: "pass" | "fail" | "undecided";
181
+ readonly ratio?: number;
182
+ readonly reason: string;
183
+ }
184
+ /**
185
+ * Whether a focus indicator can actually be seen.
186
+ *
187
+ * The walk decides an indicator exists by seeing the computed
188
+ * style change. That is a weaker claim than it sounds, and the
189
+ * gap between the two is where the real defect lives: a ring in
190
+ * a colour a shade off the background satisfies every existence
191
+ * check ever written and still leaves someone unable to tell
192
+ * where they are. WCAG 2.4.11 puts the bar at 3:1 against what
193
+ * the indicator is drawn against, which is the same bar 1.4.11
194
+ * sets for any control's own colours.
195
+ *
196
+ * Only an outline is judged. A box shadow can be any number of
197
+ * layers offset in any direction, a background or colour change
198
+ * moves the very surface the comparison would use, and in
199
+ * neither case does the computed value say which pixels changed.
200
+ * Those come back undecided, which is this package's word for a
201
+ * question it will not answer by guessing. A transparent surface
202
+ * is undecided for the same reason: the colour behind the ring
203
+ * belongs to some ancestor the computed style does not name, and
204
+ * compositing against a guess is how a page gets accused of a
205
+ * failure it does not have.
206
+ */
207
+ export declare function judgeIndicator(input: {
208
+ readonly indicator: Indicator;
209
+ readonly resting: FocusStyle;
210
+ readonly focused: FocusStyle;
211
+ }): IndicatorVerdict;
212
+ /** Read the walk. */
213
+ export declare function analyseWalk(capture: WalkCapture): WalkFindings;
214
+ /**
215
+ * How many of anything else is worth naming before counting.
216
+ *
217
+ * The tab order has always stopped at forty and said how many
218
+ * more there were. The finding lists beside it printed every
219
+ * entry, so one article answered with two hundred and fifty
220
+ * unvisited control names, longer than the rest of the report
221
+ * together and mostly repetitions of the same word.
222
+ */
223
+ export declare const MAX_LISTED_FINDINGS = 12;
224
+ /** The walk, as a person would report it. */
225
+ export declare function renderWalk(findings: WalkFindings): string;