@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,185 @@
1
+ /**
2
+ * Building the structural view from two of the browser's own
3
+ * accounts of the page.
4
+ *
5
+ * The snapshot knows every element, its attributes, whether it
6
+ * was drawn and where it sits in the tree. The accessibility
7
+ * tree knows what each one is and what it is called. Neither
8
+ * knows both, and every structural rule needs both, so they are
9
+ * joined here on the backend node id that appears in each.
10
+ *
11
+ * The join is the whole of this module's job. No role is
12
+ * inferred from a tag, no name is derived from content, and
13
+ * nothing is guessed when a node appears in one account and not
14
+ * the other. What the browser did not say, this does not say.
15
+ */
16
+ /** Roles the browser reports for things nobody can see. */
17
+ const INVISIBLE_ROLES = new Set(["none", "presentation", "InlineTextBox"]);
18
+ /** Elements the browser lets focus land on without being told. */
19
+ const FOCUSABLE_TAGS = new Set([
20
+ "BUTTON",
21
+ "INPUT",
22
+ "SELECT",
23
+ "TEXTAREA",
24
+ "SUMMARY",
25
+ ]);
26
+ /**
27
+ * Whether the markup makes this focusable.
28
+ *
29
+ * Used when the accessibility tree declines to say, which it
30
+ * does for every node it ignored, including everything inside an
31
+ * aria-hidden subtree. That is precisely the case the
32
+ * hidden-but-focusable rule is about, so without this the rule
33
+ * has no way to see its own subject.
34
+ */
35
+ function focusableByMarkup(node) {
36
+ const tabindex = node.attributes.tabindex;
37
+ if (tabindex !== undefined)
38
+ return Number(tabindex) > -1;
39
+ if (node.attributes.disabled !== undefined)
40
+ return false;
41
+ if (node.nodeName === "A")
42
+ return node.attributes.href !== undefined;
43
+ return FOCUSABLE_TAGS.has(node.nodeName);
44
+ }
45
+ /**
46
+ * Give an element an address a person can act on.
47
+ *
48
+ * An id is best, then a test hook, then a class, and a tag with
49
+ * its position as the last resort. This is presentation, not
50
+ * measurement: the browser did not offer a selector, and one
51
+ * that reads well is worth more than one that is unique.
52
+ */
53
+ export function selectorFor(node) {
54
+ const tag = node.nodeName.toLowerCase();
55
+ const { id, class: className } = node.attributes;
56
+ if (id)
57
+ return `#${id}`;
58
+ const hook = node.attributes["data-testid"] ?? node.attributes["data-test-id"];
59
+ if (hook)
60
+ return `${tag}[data-testid="${hook}"]`;
61
+ if (className) {
62
+ const first = className.trim().split(/\s+/)[0];
63
+ if (first)
64
+ return `${tag}.${first}`;
65
+ }
66
+ return tag;
67
+ }
68
+ /** How much markup to keep against a finding. */
69
+ const MAX_HTML = 160;
70
+ /**
71
+ * Rebuild an element's opening tag from its attributes.
72
+ *
73
+ * The snapshot does not carry outerHTML, and fetching it per
74
+ * node would be a protocol round trip each. The opening tag is
75
+ * what a person needs to recognise the element anyway.
76
+ */
77
+ function openingTag(node) {
78
+ const tag = node.nodeName.toLowerCase();
79
+ const attributes = Object.entries(node.attributes)
80
+ .map(([name, value]) => (value === "" ? name : `${name}="${value}"`))
81
+ .join(" ");
82
+ const rendered = attributes === "" ? `<${tag}>` : `<${tag} ${attributes}>`;
83
+ return rendered.length <= MAX_HTML
84
+ ? rendered
85
+ : `${rendered.slice(0, MAX_HTML)}...`;
86
+ }
87
+ /**
88
+ * Join a snapshot to an accessibility tree.
89
+ *
90
+ * Text nodes are dropped: every structural rule is about
91
+ * elements, and keeping the text would double the size of the
92
+ * capture to no purpose.
93
+ */
94
+ export function buildStructure(nodes, facts) {
95
+ const byBackendId = new Map(facts.map((fact) => [fact.backendNodeId, fact]));
96
+ const byId = new Map(nodes.map((node) => [node.id, node]));
97
+ const ancestorsOf = (node) => {
98
+ const chain = [];
99
+ let current = node.parent;
100
+ while (current !== undefined) {
101
+ chain.push(current);
102
+ current = byId.get(current)?.parent;
103
+ }
104
+ return chain;
105
+ };
106
+ /**
107
+ * Whether anything from here up has been made inert.
108
+ *
109
+ * inert takes a subtree out of the focus order without changing
110
+ * how any of it looks, so no style or markup question about the
111
+ * element itself can see it. A closed dialog is the ordinary
112
+ * case, and its contents are usually aria-hidden too, which is
113
+ * exactly the pair that made this matter: on one real page 45
114
+ * controls inside two closed dialogs were reported as critical
115
+ * WCAG failures for being aria-hidden and focusable, when none
116
+ * of the 45 could take focus at all.
117
+ */
118
+ const inertHere = (node) => {
119
+ if (node.attributes.inert !== undefined)
120
+ return true;
121
+ for (const id of ancestorsOf(node)) {
122
+ if (byId.get(id)?.attributes.inert !== undefined)
123
+ return true;
124
+ }
125
+ return false;
126
+ };
127
+ /**
128
+ * Whether focus could actually land here, for a node the
129
+ * accessibility tree declined to describe.
130
+ *
131
+ * Markup says an input is focusable. It cannot say that this one
132
+ * was never laid out, sits under visibility:hidden, or belongs
133
+ * to an inert subtree, and each of those settles the question
134
+ * the other way. Measured on one real page, 48 controls met the
135
+ * markup test inside aria-hidden subtrees and exactly none of
136
+ * them could take focus: 42 hidden by visibility, 3 by display,
137
+ * 3 inert. Reported as they were, that is 48 critical WCAG
138
+ * failures on a page with none.
139
+ *
140
+ * visibility is asked of the element rather than its ancestors
141
+ * because it inherits, so the computed value already carries
142
+ * the answer, including a child that opts back in with
143
+ * visibility:visible.
144
+ */
145
+ const couldTakeFocus = (node) => {
146
+ if (!node.rendered)
147
+ return false;
148
+ const visibility = node.styles.visibility;
149
+ if (visibility === "hidden" || visibility === "collapse")
150
+ return false;
151
+ return !inertHere(node);
152
+ };
153
+ return nodes
154
+ .filter((node) => node.nodeName !== "#text" && node.nodeName !== "#comment")
155
+ .map((node) => {
156
+ const fact = byBackendId.get(node.backendNodeId);
157
+ const role = fact?.role && !INVISIBLE_ROLES.has(fact.role) ? fact.role : undefined;
158
+ return {
159
+ id: node.id,
160
+ selector: selectorFor(node),
161
+ tag: node.nodeName.toLowerCase(),
162
+ attributes: node.attributes,
163
+ ...(role === undefined ? {} : { role }),
164
+ ...(fact?.name === undefined || fact.name === ""
165
+ ? {}
166
+ : { name: fact.name }),
167
+ // The accessibility tree only reports focusable on nodes
168
+ // it did not ignore, and an aria-hidden subtree is exactly
169
+ // what it ignores: measured against a live page, every
170
+ // ignored node arrives with an empty property list. So
171
+ // asking the tree whether a hidden thing can take focus
172
+ // always answered no, and the rule built on that question
173
+ // could never fire. Fall back to the markup, which is
174
+ // where focusability comes from in the first place.
175
+ //
176
+ // The fallback has to carry its own weight, though: see
177
+ // couldTakeFocus, which is what stops a page's closed
178
+ // dialogs arriving as a wall of critical failures.
179
+ focusable: fact?.focusable ?? (focusableByMarkup(node) && couldTakeFocus(node)),
180
+ rendered: node.rendered,
181
+ ancestors: ancestorsOf(node),
182
+ html: openingTag(node),
183
+ };
184
+ });
185
+ }
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Colour arithmetic for accessibility judgments.
3
+ *
4
+ * Deliberately narrow. This module does the arithmetic WCAG
5
+ * specifies and nothing else: it does not know what oklch is,
6
+ * how display-p3 clamps into sRGB, or what colour-mix resolves
7
+ * to. Chrome returns modern colour syntax from getComputedStyle
8
+ * unconverted, and converting it here would mean reimplementing
9
+ * colour science that the renderer already does exactly.
10
+ *
11
+ * So the session asks the browser to paint a colour and reads
12
+ * the pixel back, and everything below works in sRGB bytes.
13
+ */
14
+ /** A colour in sRGB, channels 0 to 255 and alpha 0 to 1. */
15
+ export interface Rgba {
16
+ readonly r: number;
17
+ readonly g: number;
18
+ readonly b: number;
19
+ readonly a: number;
20
+ }
21
+ /**
22
+ * How much light a colour reflects, by WCAG's definition.
23
+ *
24
+ * Alpha is ignored, because a translucent colour has no
25
+ * luminance of its own: composite it over something first.
26
+ */
27
+ export declare function relativeLuminance(colour: Rgba): number;
28
+ /**
29
+ * The contrast between two colours, from 1 to 21.
30
+ *
31
+ * Order does not matter: the lighter colour always goes on top
32
+ * of the fraction, so a light-on-dark pair reads the same as its
33
+ * reverse.
34
+ */
35
+ export declare function contrastRatio(one: Rgba, other: Rgba): number;
36
+ /**
37
+ * Paint one colour over another and say what results.
38
+ *
39
+ * This is source-over compositing, the same operation the
40
+ * renderer performs, and it is what makes a translucent
41
+ * foreground judgeable at all.
42
+ */
43
+ export declare function composite(over: Rgba, under: Rgba): Rgba;
44
+ /** Whether a colour hides whatever is behind it. */
45
+ export declare function isOpaque(colour: Rgba): boolean;
46
+ /** Whether a colour shows everything behind it. */
47
+ export declare function isTransparent(colour: Rgba): boolean;
48
+ /**
49
+ * Read the colour syntaxes the browser reliably produces.
50
+ *
51
+ * getComputedStyle serializes most colours as rgb() or rgba(),
52
+ * and a stylesheet written in modern colour syntax comes back as
53
+ * color(srgb ...) instead, unconverted. Both are read here.
54
+ * Anything else, oklch and the wider color() spaces among them,
55
+ * returns nothing rather than being guessed at, so the caller can
56
+ * ask the browser to resolve it instead of getting a confidently
57
+ * wrong answer.
58
+ */
59
+ export declare function parseRgb(css: string): Rgba | undefined;
60
+ /** Say a colour the way CSS would. */
61
+ export declare function formatRgb(colour: Rgba): string;
62
+ /**
63
+ * How far apart two colours look, as CIE76 delta E.
64
+ *
65
+ * Contrast is not a measure of sameness. It compares relative
66
+ * luminance only, so it is blind to hue by construction: pure
67
+ * red and a mid grey differ by a contrast ratio of about 1.001,
68
+ * which any threshold for "these look the same" will accept.
69
+ * That is the right answer to "can text be read on this" and the
70
+ * wrong answer to "are these one colour".
71
+ *
72
+ * Delta E is the measure for the second question. Roughly, 1 is
73
+ * the smallest difference an eye can catch under ideal
74
+ * conditions, 2 to 3 is a just-noticeable difference in
75
+ * practice, and anything past about 10 reads as two colours.
76
+ *
77
+ * CIE76 rather than CIEDE2000: it is a plain Euclidean distance
78
+ * in Lab, it is close enough at the small distances this is used
79
+ * for, and it can be read and checked by anyone.
80
+ *
81
+ * Alpha is not considered. A caller that cares about opacity
82
+ * should compare it separately, or composite both colours over
83
+ * a known background first.
84
+ */
85
+ export declare function deltaE(one: Rgba, other: Rgba): number;
@@ -0,0 +1,189 @@
1
+ /**
2
+ * Colour arithmetic for accessibility judgments.
3
+ *
4
+ * Deliberately narrow. This module does the arithmetic WCAG
5
+ * specifies and nothing else: it does not know what oklch is,
6
+ * how display-p3 clamps into sRGB, or what colour-mix resolves
7
+ * to. Chrome returns modern colour syntax from getComputedStyle
8
+ * unconverted, and converting it here would mean reimplementing
9
+ * colour science that the renderer already does exactly.
10
+ *
11
+ * So the session asks the browser to paint a colour and reads
12
+ * the pixel back, and everything below works in sRGB bytes.
13
+ */
14
+ /** The threshold WCAG names, which is not the sRGB spec's. */
15
+ const LINEAR_CUTOFF = 0.03928;
16
+ const LINEAR_DIVISOR = 12.92;
17
+ const GAMMA_OFFSET = 0.055;
18
+ const GAMMA_SCALE = 1.055;
19
+ const GAMMA_EXPONENT = 2.4;
20
+ /** How much each channel contributes to perceived lightness. */
21
+ const RED_WEIGHT = 0.2126;
22
+ const GREEN_WEIGHT = 0.7152;
23
+ const BLUE_WEIGHT = 0.0722;
24
+ /** Keeps a ratio finite when both colours are pure black. */
25
+ const RATIO_OFFSET = 0.05;
26
+ const CHANNEL_MAX = 255;
27
+ function linearize(channel) {
28
+ const scaled = channel / CHANNEL_MAX;
29
+ return scaled <= LINEAR_CUTOFF
30
+ ? scaled / LINEAR_DIVISOR
31
+ : ((scaled + GAMMA_OFFSET) / GAMMA_SCALE) ** GAMMA_EXPONENT;
32
+ }
33
+ /**
34
+ * How much light a colour reflects, by WCAG's definition.
35
+ *
36
+ * Alpha is ignored, because a translucent colour has no
37
+ * luminance of its own: composite it over something first.
38
+ */
39
+ export function relativeLuminance(colour) {
40
+ return (RED_WEIGHT * linearize(colour.r) +
41
+ GREEN_WEIGHT * linearize(colour.g) +
42
+ BLUE_WEIGHT * linearize(colour.b));
43
+ }
44
+ /**
45
+ * The contrast between two colours, from 1 to 21.
46
+ *
47
+ * Order does not matter: the lighter colour always goes on top
48
+ * of the fraction, so a light-on-dark pair reads the same as its
49
+ * reverse.
50
+ */
51
+ export function contrastRatio(one, other) {
52
+ const a = relativeLuminance(one);
53
+ const b = relativeLuminance(other);
54
+ const lighter = Math.max(a, b);
55
+ const darker = Math.min(a, b);
56
+ return (lighter + RATIO_OFFSET) / (darker + RATIO_OFFSET);
57
+ }
58
+ /**
59
+ * Paint one colour over another and say what results.
60
+ *
61
+ * This is source-over compositing, the same operation the
62
+ * renderer performs, and it is what makes a translucent
63
+ * foreground judgeable at all.
64
+ */
65
+ export function composite(over, under) {
66
+ if (over.a >= 1)
67
+ return over;
68
+ if (over.a <= 0)
69
+ return under;
70
+ const alpha = over.a + under.a * (1 - over.a);
71
+ if (alpha <= 0)
72
+ return { r: 0, g: 0, b: 0, a: 0 };
73
+ const blend = (top, bottom) => Math.round((top * over.a + bottom * under.a * (1 - over.a)) / alpha);
74
+ return {
75
+ r: blend(over.r, under.r),
76
+ g: blend(over.g, under.g),
77
+ b: blend(over.b, under.b),
78
+ a: alpha,
79
+ };
80
+ }
81
+ /** Whether a colour hides whatever is behind it. */
82
+ export function isOpaque(colour) {
83
+ return colour.a >= 1;
84
+ }
85
+ /** Whether a colour shows everything behind it. */
86
+ export function isTransparent(colour) {
87
+ return colour.a <= 0;
88
+ }
89
+ const RGB_PATTERN = /^rgba?\(\s*([\d.]+)[\s,]+([\d.]+)[\s,]+([\d.]+)(?:\s*[,/]\s*([\d.]+%?))?\s*\)$/;
90
+ /**
91
+ * The srgb arm of color(), whose channels are fractions of full.
92
+ *
93
+ * Only srgb is matched. display-p3 and the rest are written the
94
+ * same way but describe a wider gamut, so reading their numbers
95
+ * on this scale would be wrong without a conversion nobody here
96
+ * is doing.
97
+ */
98
+ const SRGB_PATTERN = /^color\(\s*srgb\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)(?:\s*\/\s*([\d.]+%?))?\s*\)$/;
99
+ /** Full scale for a channel color(srgb ...) states as a fraction. */
100
+ const FULL_CHANNEL = 255;
101
+ /**
102
+ * Read the colour syntaxes the browser reliably produces.
103
+ *
104
+ * getComputedStyle serializes most colours as rgb() or rgba(),
105
+ * and a stylesheet written in modern colour syntax comes back as
106
+ * color(srgb ...) instead, unconverted. Both are read here.
107
+ * Anything else, oklch and the wider color() spaces among them,
108
+ * returns nothing rather than being guessed at, so the caller can
109
+ * ask the browser to resolve it instead of getting a confidently
110
+ * wrong answer.
111
+ */
112
+ export function parseRgb(css) {
113
+ const text = css.trim();
114
+ const found = RGB_PATTERN.exec(text);
115
+ const fractions = found ? undefined : SRGB_PATTERN.exec(text);
116
+ const matched = found ?? fractions;
117
+ if (!matched)
118
+ return undefined;
119
+ const [, red, green, blue, alpha] = matched;
120
+ // color(srgb ...) states each channel as a fraction of full, so it
121
+ // needs the scale rgb() already speaks in. The rgb() path is left
122
+ // exactly as it was, fractional channels included.
123
+ const channel = (t) => fractions ? Math.round(Number(t ?? "0") * FULL_CHANNEL) : Number(t ?? "0");
124
+ const opacity = alpha === undefined
125
+ ? 1
126
+ : alpha.endsWith("%")
127
+ ? Number(alpha.slice(0, -1)) / 100
128
+ : Number(alpha);
129
+ const colour = {
130
+ r: channel(red),
131
+ g: channel(green),
132
+ b: channel(blue),
133
+ a: opacity,
134
+ };
135
+ return Object.values(colour).some(Number.isNaN) ? undefined : colour;
136
+ }
137
+ /** Say a colour the way CSS would. */
138
+ export function formatRgb(colour) {
139
+ return isOpaque(colour)
140
+ ? `rgb(${colour.r}, ${colour.g}, ${colour.b})`
141
+ : `rgba(${colour.r}, ${colour.g}, ${colour.b}, ${Math.round(colour.a * 1000) / 1000})`;
142
+ }
143
+ /**
144
+ * How far apart two colours look, as CIE76 delta E.
145
+ *
146
+ * Contrast is not a measure of sameness. It compares relative
147
+ * luminance only, so it is blind to hue by construction: pure
148
+ * red and a mid grey differ by a contrast ratio of about 1.001,
149
+ * which any threshold for "these look the same" will accept.
150
+ * That is the right answer to "can text be read on this" and the
151
+ * wrong answer to "are these one colour".
152
+ *
153
+ * Delta E is the measure for the second question. Roughly, 1 is
154
+ * the smallest difference an eye can catch under ideal
155
+ * conditions, 2 to 3 is a just-noticeable difference in
156
+ * practice, and anything past about 10 reads as two colours.
157
+ *
158
+ * CIE76 rather than CIEDE2000: it is a plain Euclidean distance
159
+ * in Lab, it is close enough at the small distances this is used
160
+ * for, and it can be read and checked by anyone.
161
+ *
162
+ * Alpha is not considered. A caller that cares about opacity
163
+ * should compare it separately, or composite both colours over
164
+ * a known background first.
165
+ */
166
+ export function deltaE(one, other) {
167
+ const [l1, a1, b1] = toLab(one);
168
+ const [l2, a2, b2] = toLab(other);
169
+ return Math.sqrt((l1 - l2) ** 2 + (a1 - a2) ** 2 + (b1 - b2) ** 2);
170
+ }
171
+ /** D65, the white point sRGB is defined against. */
172
+ const WHITE = { x: 0.95047, y: 1, z: 1.08883 };
173
+ /** The knee in the Lab transfer function. */
174
+ const LAB_EPSILON = 216 / 24389;
175
+ const LAB_KAPPA = 24389 / 27;
176
+ /** sRGB to CIELAB, by way of XYZ. */
177
+ function toLab(colour) {
178
+ const r = linearize(colour.r);
179
+ const g = linearize(colour.g);
180
+ const b = linearize(colour.b);
181
+ const x = (0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / WHITE.x;
182
+ const y = (0.2126729 * r + 0.7151522 * g + 0.072175 * b) / WHITE.y;
183
+ const z = (0.0193339 * r + 0.119192 * g + 0.9503041 * b) / WHITE.z;
184
+ const f = (value) => value > LAB_EPSILON ? Math.cbrt(value) : (LAB_KAPPA * value + 16) / 116;
185
+ const fx = f(x);
186
+ const fy = f(y);
187
+ const fz = f(z);
188
+ return [116 * fy - 16, 500 * (fx - fy), 200 * (fy - fz)];
189
+ }
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Judging contrast against WCAG's thresholds.
3
+ *
4
+ * The arithmetic is in colour.ts; this is the part that says
5
+ * what counts as enough, which depends on how big the text is
6
+ * and which level is being held to.
7
+ *
8
+ * A judgment can also decline. A gradient, a background image
9
+ * or a background nobody could determine is not a failure and
10
+ * not a pass: it is a case where the honest answer is that a
11
+ * person has to look. Reporting those as passes is how an
12
+ * automated audit becomes a liability.
13
+ */
14
+ import { type Rgba } from "./colour.js";
15
+ /** Which WCAG conformance level a judgment is held to. */
16
+ export type ContrastLevel = "AA" | "AAA";
17
+ /** Text at or above this size counts as large. */
18
+ export declare const LARGE_TEXT_PX = 24;
19
+ /** Bold text at or above this size counts as large: 14pt. */
20
+ export declare const LARGE_BOLD_PX = 18.66;
21
+ /** The weight at which text is bold for sizing purposes. */
22
+ export declare const BOLD_WEIGHT = 700;
23
+ /** 1.4.11 Non-text Contrast, for controls and meaningful graphics. */
24
+ export declare const NON_TEXT_MINIMUM = 3;
25
+ /** How text is set, which decides which threshold applies. */
26
+ export interface TextSizing {
27
+ readonly fontSizePx: number;
28
+ readonly fontWeight: number;
29
+ }
30
+ /**
31
+ * Whether text is large enough for the relaxed threshold.
32
+ *
33
+ * The bold cutoff is 14pt against 18pt for normal, which is
34
+ * 18.66px against 24px once points become CSS pixels.
35
+ */
36
+ export declare function isLargeText(sizing: TextSizing): boolean;
37
+ /** The ratio text of this size must reach at this level. */
38
+ export declare function textThreshold(sizing: TextSizing, level: ContrastLevel): number;
39
+ /** What a contrast judgment concluded. */
40
+ export type ContrastVerdict = {
41
+ readonly kind: "judged";
42
+ readonly ratio: number;
43
+ readonly required: number;
44
+ readonly passes: boolean;
45
+ readonly level: ContrastLevel;
46
+ readonly foreground: Rgba;
47
+ readonly background: Rgba;
48
+ readonly large: boolean;
49
+ } | {
50
+ readonly kind: "undecidable";
51
+ /** Why nobody could say, in words a person can act on. */
52
+ readonly because: string;
53
+ };
54
+ /** Judge text against the threshold for its size. */
55
+ export declare function judgeText(input: {
56
+ readonly foreground: Rgba;
57
+ readonly background: Rgba;
58
+ readonly sizing: TextSizing;
59
+ readonly level?: ContrastLevel;
60
+ }): ContrastVerdict;
61
+ /**
62
+ * Judge a control's own colours, where size never relaxes it.
63
+ *
64
+ * A focus ring, a checkbox border and an icon that carries
65
+ * meaning are all held to 3:1 regardless of how big they are.
66
+ */
67
+ export declare function judgeNonText(input: {
68
+ readonly foreground: Rgba;
69
+ readonly background: Rgba;
70
+ }): ContrastVerdict;
71
+ /** Decline to judge, and say why. */
72
+ export declare function undecidable(because: string): ContrastVerdict;
73
+ /** Say what the judgment was. */
74
+ export declare function renderContrast(verdict: ContrastVerdict): string;
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Judging contrast against WCAG's thresholds.
3
+ *
4
+ * The arithmetic is in colour.ts; this is the part that says
5
+ * what counts as enough, which depends on how big the text is
6
+ * and which level is being held to.
7
+ *
8
+ * A judgment can also decline. A gradient, a background image
9
+ * or a background nobody could determine is not a failure and
10
+ * not a pass: it is a case where the honest answer is that a
11
+ * person has to look. Reporting those as passes is how an
12
+ * automated audit becomes a liability.
13
+ */
14
+ import { contrastRatio, formatRgb } from "./colour.js";
15
+ /** Text at or above this size counts as large. */
16
+ export const LARGE_TEXT_PX = 24;
17
+ /** Bold text at or above this size counts as large: 14pt. */
18
+ export const LARGE_BOLD_PX = 18.66;
19
+ /** The weight at which text is bold for sizing purposes. */
20
+ export const BOLD_WEIGHT = 700;
21
+ /** 1.4.3 Contrast (Minimum), normal and large text. */
22
+ const AA_NORMAL = 4.5;
23
+ const AA_LARGE = 3;
24
+ /** 1.4.6 Contrast (Enhanced). */
25
+ const AAA_NORMAL = 7;
26
+ const AAA_LARGE = 4.5;
27
+ /** 1.4.11 Non-text Contrast, for controls and meaningful graphics. */
28
+ export const NON_TEXT_MINIMUM = 3;
29
+ /**
30
+ * Whether text is large enough for the relaxed threshold.
31
+ *
32
+ * The bold cutoff is 14pt against 18pt for normal, which is
33
+ * 18.66px against 24px once points become CSS pixels.
34
+ */
35
+ export function isLargeText(sizing) {
36
+ return sizing.fontWeight >= BOLD_WEIGHT
37
+ ? sizing.fontSizePx >= LARGE_BOLD_PX
38
+ : sizing.fontSizePx >= LARGE_TEXT_PX;
39
+ }
40
+ /** The ratio text of this size must reach at this level. */
41
+ export function textThreshold(sizing, level) {
42
+ const large = isLargeText(sizing);
43
+ if (level === "AAA")
44
+ return large ? AAA_LARGE : AAA_NORMAL;
45
+ return large ? AA_LARGE : AA_NORMAL;
46
+ }
47
+ /** Judge text against the threshold for its size. */
48
+ export function judgeText(input) {
49
+ const level = input.level ?? "AA";
50
+ const required = textThreshold(input.sizing, level);
51
+ return judged(input.foreground, input.background, required, level, {
52
+ large: isLargeText(input.sizing),
53
+ });
54
+ }
55
+ /**
56
+ * Judge a control's own colours, where size never relaxes it.
57
+ *
58
+ * A focus ring, a checkbox border and an icon that carries
59
+ * meaning are all held to 3:1 regardless of how big they are.
60
+ */
61
+ export function judgeNonText(input) {
62
+ return judged(input.foreground, input.background, NON_TEXT_MINIMUM, "AA", {
63
+ large: false,
64
+ });
65
+ }
66
+ /** Rounded the way the ratio is always quoted. */
67
+ const RATIO_PLACES = 100;
68
+ function judged(foreground, background, required, level, extra) {
69
+ const exact = contrastRatio(foreground, background);
70
+ // Reported rounded, judged exact.
71
+ //
72
+ // Rounding before the comparison passed 4.4951 as AA, which is
73
+ // leniency in the one module that must not have any: it
74
+ // disagrees with axe on the same pair inside the same report,
75
+ // and the direction of the error is always to approve. A ratio
76
+ // that reads 4.5 and fails is worth one line of explanation;
77
+ // a failure reported as a pass is not worth anything.
78
+ const ratio = Math.round(exact * RATIO_PLACES) / RATIO_PLACES;
79
+ return {
80
+ kind: "judged",
81
+ ratio,
82
+ required,
83
+ passes: exact >= required,
84
+ level,
85
+ foreground,
86
+ background,
87
+ large: extra.large,
88
+ };
89
+ }
90
+ /** Decline to judge, and say why. */
91
+ export function undecidable(because) {
92
+ return { kind: "undecidable", because };
93
+ }
94
+ /** Say what the judgment was. */
95
+ export function renderContrast(verdict) {
96
+ if (verdict.kind === "undecidable") {
97
+ return `Contrast could not be determined: ${verdict.because}`;
98
+ }
99
+ const { ratio, required, passes, level, foreground, background } = verdict;
100
+ const size = verdict.large ? "large text" : "normal text";
101
+ const outcome = passes ? "meets" : "falls short of";
102
+ return (`${ratio}:1 ${outcome} the ${required}:1 ${level} minimum for ` +
103
+ `${size}. ${formatRgb(foreground)} on ${formatRgb(background)}`);
104
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * One question that asks all the others.
3
+ *
4
+ * A person who has just changed something wants to know whether
5
+ * they broke anything, and does not want to run five checks to
6
+ * find out. This composes them into one answer: the worst
7
+ * standing across all of them, a line each, and the detail left
8
+ * behind a named kind.
9
+ *
10
+ * The digest deliberately reports what it could not run. A check
11
+ * that failed to execute is not a check that passed, and a
12
+ * digest that quietly drops one is worse than no digest, because
13
+ * it looks like coverage.
14
+ */
15
+ import type { Standing } from "./verdict.js";
16
+ /** One check's contribution to the digest. */
17
+ export interface Part {
18
+ readonly kind: string;
19
+ readonly standing: Standing;
20
+ readonly headline: string;
21
+ /** Set when the check could not run at all. */
22
+ readonly failedToRun?: string;
23
+ }
24
+ /** The worst standing among the parts. */
25
+ export declare function overallOf(parts: readonly Part[]): Standing;
26
+ /** Say how the page is doing, across every check. */
27
+ export declare function renderHealth(parts: readonly Part[]): string;