@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,65 @@
1
+ /**
2
+ * Turning a device name into something to emulate.
3
+ *
4
+ * The catalogue of devices is Chrome's own, which arrives through
5
+ * puppeteer and so cannot be imported here: this module is on the
6
+ * pure side of the library and must stay loadable without a
7
+ * browser. So the catalogue is a parameter. The caller that has
8
+ * one passes it; the tests pass a small one and can describe
9
+ * devices that do not exist.
10
+ *
11
+ * This lived in the extension, where it worked, and left
12
+ * `EmulationState.device` as a field the library accepted and
13
+ * ignored. A consumer asking the library for an iPhone got no
14
+ * phone, no error and no divergence: the viewport stayed at
15
+ * 800x600 while the report echoed the device name back as though
16
+ * it had been honoured. A field that lies is worse than a field
17
+ * that is missing, and this is meant to be a library other
18
+ * packages build on.
19
+ */
20
+ import type { EmulationState } from "./emulation.js";
21
+ /**
22
+ * The shape this needs from a device catalogue.
23
+ *
24
+ * Deliberately narrower than what puppeteer's KnownDevices
25
+ * provides, so that the widest possible range of catalogues
26
+ * satisfies it, including one written by hand in a test.
27
+ */
28
+ export interface DeviceProfile {
29
+ readonly userAgent?: string;
30
+ readonly viewport: {
31
+ readonly width: number;
32
+ readonly height: number;
33
+ readonly deviceScaleFactor?: number;
34
+ readonly isMobile?: boolean;
35
+ readonly hasTouch?: boolean;
36
+ };
37
+ }
38
+ /** A set of device profiles by name, as Chrome ships them. */
39
+ export type DeviceCatalogue = Readonly<Record<string, DeviceProfile>>;
40
+ /**
41
+ * What emulating a named device means, or undefined if unknown.
42
+ *
43
+ * Only the fields the device itself determines are returned, so a
44
+ * caller can layer it under an explicit request and let the
45
+ * explicit one win.
46
+ */
47
+ export declare function deviceEmulation(name: string, catalogue: DeviceCatalogue): EmulationState | undefined;
48
+ /**
49
+ * Device names close enough to what was asked for to be worth
50
+ * offering back.
51
+ *
52
+ * A wrong model number is the likeliest way to miss, so a failed
53
+ * match on the whole string falls back to the family name: asking
54
+ * for an "iPhone 99" should still hear about the iPhones rather
55
+ * than nothing at all.
56
+ */
57
+ export declare function nearestDevices(name: string, catalogue: DeviceCatalogue): readonly string[];
58
+ /**
59
+ * Say that a device could not be found, and what was nearby.
60
+ *
61
+ * Written once here because both the tool, which refuses before
62
+ * doing anything, and the library, which reports it as a
63
+ * divergence, have to say the same thing.
64
+ */
65
+ export declare function noSuchDevice(name: string, catalogue: DeviceCatalogue): string;
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Turning a device name into something to emulate.
3
+ *
4
+ * The catalogue of devices is Chrome's own, which arrives through
5
+ * puppeteer and so cannot be imported here: this module is on the
6
+ * pure side of the library and must stay loadable without a
7
+ * browser. So the catalogue is a parameter. The caller that has
8
+ * one passes it; the tests pass a small one and can describe
9
+ * devices that do not exist.
10
+ *
11
+ * This lived in the extension, where it worked, and left
12
+ * `EmulationState.device` as a field the library accepted and
13
+ * ignored. A consumer asking the library for an iPhone got no
14
+ * phone, no error and no divergence: the viewport stayed at
15
+ * 800x600 while the report echoed the device name back as though
16
+ * it had been honoured. A field that lies is worse than a field
17
+ * that is missing, and this is meant to be a library other
18
+ * packages build on.
19
+ */
20
+ /** How many near matches are worth offering. */
21
+ const MAX_SUGGESTIONS = 5;
22
+ /**
23
+ * What emulating a named device means, or undefined if unknown.
24
+ *
25
+ * Only the fields the device itself determines are returned, so a
26
+ * caller can layer it under an explicit request and let the
27
+ * explicit one win.
28
+ */
29
+ export function deviceEmulation(name, catalogue) {
30
+ const profile = catalogue[name];
31
+ if (!profile)
32
+ return undefined;
33
+ return {
34
+ device: name,
35
+ viewport: {
36
+ width: profile.viewport.width,
37
+ height: profile.viewport.height,
38
+ deviceScaleFactor: profile.viewport.deviceScaleFactor ?? 1,
39
+ mobile: profile.viewport.isMobile ?? false,
40
+ },
41
+ touch: profile.viewport.hasTouch ?? false,
42
+ // Half of what makes a site serve its phone layout is the
43
+ // string it is asked in. Emulating the screen and not the
44
+ // user agent meant a phone that every server still took for
45
+ // a desktop, so the page under test was often not the page a
46
+ // phone would get.
47
+ ...(profile.userAgent ? { userAgent: profile.userAgent } : {}),
48
+ };
49
+ }
50
+ /**
51
+ * Device names close enough to what was asked for to be worth
52
+ * offering back.
53
+ *
54
+ * A wrong model number is the likeliest way to miss, so a failed
55
+ * match on the whole string falls back to the family name: asking
56
+ * for an "iPhone 99" should still hear about the iPhones rather
57
+ * than nothing at all.
58
+ */
59
+ export function nearestDevices(name, catalogue) {
60
+ const asked = name.toLowerCase();
61
+ const names = Object.keys(catalogue);
62
+ const holds = (needle) => names.filter((candidate) => candidate.toLowerCase().includes(needle));
63
+ const direct = holds(asked);
64
+ if (direct.length > 0)
65
+ return direct.slice(0, MAX_SUGGESTIONS);
66
+ const family = asked.split(" ")[0] ?? asked;
67
+ return holds(family).slice(0, MAX_SUGGESTIONS);
68
+ }
69
+ /**
70
+ * Say that a device could not be found, and what was nearby.
71
+ *
72
+ * Written once here because both the tool, which refuses before
73
+ * doing anything, and the library, which reports it as a
74
+ * divergence, have to say the same thing.
75
+ */
76
+ export function noSuchDevice(name, catalogue) {
77
+ const near = nearestDevices(name, catalogue);
78
+ return (`No device named '${name}'.` +
79
+ (near.length > 0
80
+ ? ` Did you mean ${near.join(", ")}?`
81
+ : " Chrome ships names like 'iPhone 15 Pro' and 'Pixel 5'."));
82
+ }
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Pretending to be a different visitor.
3
+ *
4
+ * Two measured facts shape everything here. Chrome's media
5
+ * emulation is a replacement, not a merge: sending one feature
6
+ * silently clears every other, so the session keeps the whole
7
+ * intent and re-sends all of it each time. And several
8
+ * overrides only partly land, notably locale, which changes
9
+ * how dates format without ever reaching navigator.language.
10
+ * So nothing here reports what it asked for; it reports what
11
+ * the page turned out to observe, and says where the two
12
+ * disagree.
13
+ */
14
+ /** Sight conditions Chrome can simulate. */
15
+ export type VisionDeficiency = "none" | "achromatopsia" | "blurredVision" | "deuteranopia" | "protanopia" | "tritanopia" | "reducedContrast";
16
+ /** What we have asked the browser to pretend. */
17
+ export interface EmulationState {
18
+ readonly colorScheme?: "light" | "dark";
19
+ readonly reducedMotion?: boolean;
20
+ readonly contrast?: "more" | "less" | "no-preference";
21
+ readonly forcedColors?: boolean;
22
+ readonly media?: "screen" | "print";
23
+ readonly vision?: VisionDeficiency;
24
+ readonly device?: string;
25
+ readonly viewport?: {
26
+ readonly width: number;
27
+ readonly height: number;
28
+ readonly deviceScaleFactor?: number;
29
+ readonly mobile?: boolean;
30
+ };
31
+ readonly touch?: boolean;
32
+ /** What to answer when the page or a server asks who it is. */
33
+ readonly userAgent?: string;
34
+ readonly timezone?: string;
35
+ readonly locale?: string;
36
+ readonly cpuThrottle?: number;
37
+ readonly geolocation?: {
38
+ readonly latitude: number;
39
+ readonly longitude: number;
40
+ readonly accuracy?: number;
41
+ };
42
+ }
43
+ /** What the page says it is actually experiencing. */
44
+ export interface ObservedEnvironment {
45
+ readonly colorScheme: string;
46
+ readonly reducedMotion: boolean;
47
+ readonly contrast: string;
48
+ readonly forcedColors: boolean;
49
+ readonly print: boolean;
50
+ readonly width: number;
51
+ readonly height: number;
52
+ readonly devicePixelRatio: number;
53
+ readonly maxTouchPoints: number;
54
+ readonly touchEvents: boolean;
55
+ readonly language: string;
56
+ readonly timezone: string;
57
+ }
58
+ /** One media feature as the protocol wants it. */
59
+ export interface MediaFeature {
60
+ readonly name: string;
61
+ readonly value: string;
62
+ }
63
+ /**
64
+ * Fold a change into the standing intent.
65
+ *
66
+ * Undefined means "leave as it was", so a caller can turn on
67
+ * reduced motion without having to restate the colour scheme.
68
+ * Clearing is done by asking for the neutral value, not by
69
+ * omitting the key, because omission cannot be told from
70
+ * indifference.
71
+ */
72
+ export declare function mergeEmulation(current: EmulationState, change: EmulationState, clear?: readonly (keyof EmulationState)[]): EmulationState;
73
+ /**
74
+ * Every media feature the intent implies, always in full.
75
+ *
76
+ * Chrome treats each setEmulatedMedia call as the complete
77
+ * truth and forgets anything not mentioned, measured directly:
78
+ * setting prefers-contrast alone cleared a
79
+ * prefers-reduced-motion set moments earlier. Sending the whole
80
+ * set every time is what stops one change from undoing
81
+ * another.
82
+ */
83
+ export declare function mediaFeaturesOf(state: EmulationState): readonly MediaFeature[];
84
+ /**
85
+ * Name the media feature a failed emulation call refused.
86
+ *
87
+ * Only this one shape counts. A dropped connection or a closed
88
+ * target says nothing about the feature, and treating any failure as
89
+ * a refusal would quietly discard an intent the browser never
90
+ * objected to.
91
+ */
92
+ export declare function refusedFeature(message: string): string | undefined;
93
+ /**
94
+ * Drop one media feature from a standing intent.
95
+ *
96
+ * Chrome is given the whole set at once and rejects the set on the
97
+ * first feature it does not know, so a refusal that stays in the
98
+ * intent takes every working feature down with it, on this call and
99
+ * on every navigation that replays it.
100
+ */
101
+ export declare function withoutFeature(state: EmulationState, feature: string): EmulationState;
102
+ /** One place where the page disagrees with what was asked. */
103
+ export interface Divergence {
104
+ readonly what: string;
105
+ readonly asked: string;
106
+ readonly observed: string;
107
+ readonly note?: string;
108
+ }
109
+ /**
110
+ * Report fields that will be ignored, as divergences.
111
+ *
112
+ * A request this cannot honour used to be accepted in silence,
113
+ * echoed back under `asked`, and reported with no gaps at all: a
114
+ * call asking for a 1024px viewport did nothing, said nothing, and
115
+ * left the page at 800px while claiming to have been understood.
116
+ * That cost me twenty minutes of measuring the wrong viewport and
117
+ * concluding a page was fine.
118
+ *
119
+ * Reported rather than thrown because the rest of the request is
120
+ * still worth applying, and because gaps are already the channel
121
+ * for "you asked for something you did not get".
122
+ */
123
+ export declare function unsupportedFields(change: Readonly<Record<string, unknown>>): readonly Divergence[];
124
+ export declare function divergences(asked: EmulationState, observed: ObservedEnvironment): readonly Divergence[];
@@ -0,0 +1,258 @@
1
+ /**
2
+ * Pretending to be a different visitor.
3
+ *
4
+ * Two measured facts shape everything here. Chrome's media
5
+ * emulation is a replacement, not a merge: sending one feature
6
+ * silently clears every other, so the session keeps the whole
7
+ * intent and re-sends all of it each time. And several
8
+ * overrides only partly land, notably locale, which changes
9
+ * how dates format without ever reaching navigator.language.
10
+ * So nothing here reports what it asked for; it reports what
11
+ * the page turned out to observe, and says where the two
12
+ * disagree.
13
+ */
14
+ /**
15
+ * Fold a change into the standing intent.
16
+ *
17
+ * Undefined means "leave as it was", so a caller can turn on
18
+ * reduced motion without having to restate the colour scheme.
19
+ * Clearing is done by asking for the neutral value, not by
20
+ * omitting the key, because omission cannot be told from
21
+ * indifference.
22
+ */
23
+ export function mergeEmulation(current, change, clear = []) {
24
+ const merged = { ...current };
25
+ // Skipping undefined is what lets a caller mention one field
26
+ // without disturbing the rest, and it is also why taking an
27
+ // override off again needs saying separately: an absent key and
28
+ // a key set to nothing arrive here as the same thing. Without
29
+ // this list, nothing could ever be cleared. A session that
30
+ // emulated Tokyo once stayed in Tokyo for the rest of its life,
31
+ // quietly recolouring every later reading, and stopping
32
+ // pretending to be a phone was impossible.
33
+ for (const key of clear)
34
+ delete merged[key];
35
+ for (const [key, value] of Object.entries(change)) {
36
+ if (value !== undefined)
37
+ merged[key] = value;
38
+ }
39
+ return merged;
40
+ }
41
+ /**
42
+ * Every media feature the intent implies, always in full.
43
+ *
44
+ * Chrome treats each setEmulatedMedia call as the complete
45
+ * truth and forgets anything not mentioned, measured directly:
46
+ * setting prefers-contrast alone cleared a
47
+ * prefers-reduced-motion set moments earlier. Sending the whole
48
+ * set every time is what stops one change from undoing
49
+ * another.
50
+ */
51
+ export function mediaFeaturesOf(state) {
52
+ const features = [];
53
+ if (state.colorScheme !== undefined) {
54
+ features.push({ name: "prefers-color-scheme", value: state.colorScheme });
55
+ }
56
+ if (state.reducedMotion !== undefined) {
57
+ features.push({
58
+ name: "prefers-reduced-motion",
59
+ value: state.reducedMotion ? "reduce" : "no-preference",
60
+ });
61
+ }
62
+ if (state.contrast !== undefined) {
63
+ features.push({ name: "prefers-contrast", value: state.contrast });
64
+ }
65
+ if (state.forcedColors !== undefined) {
66
+ features.push({
67
+ name: "forced-colors",
68
+ value: state.forcedColors ? "active" : "none",
69
+ });
70
+ }
71
+ return features;
72
+ }
73
+ /**
74
+ * Which state field each media feature is spoken for by.
75
+ *
76
+ * The pairing has to be total in one direction: every feature
77
+ * mediaFeaturesOf can send must map back, or a refusal would be
78
+ * reported and then kept, which is the sticky refusal it exists to
79
+ * prevent.
80
+ */
81
+ const FEATURE_FIELDS = {
82
+ "prefers-color-scheme": "colorScheme",
83
+ "prefers-reduced-motion": "reducedMotion",
84
+ "prefers-contrast": "contrast",
85
+ "forced-colors": "forcedColors",
86
+ };
87
+ const REFUSED_PATTERN = /Unsupported media feature:\s*(\S+)/;
88
+ /**
89
+ * Name the media feature a failed emulation call refused.
90
+ *
91
+ * Only this one shape counts. A dropped connection or a closed
92
+ * target says nothing about the feature, and treating any failure as
93
+ * a refusal would quietly discard an intent the browser never
94
+ * objected to.
95
+ */
96
+ export function refusedFeature(message) {
97
+ return REFUSED_PATTERN.exec(message)?.[1];
98
+ }
99
+ /**
100
+ * Drop one media feature from a standing intent.
101
+ *
102
+ * Chrome is given the whole set at once and rejects the set on the
103
+ * first feature it does not know, so a refusal that stays in the
104
+ * intent takes every working feature down with it, on this call and
105
+ * on every navigation that replays it.
106
+ */
107
+ export function withoutFeature(state, feature) {
108
+ const field = FEATURE_FIELDS[feature];
109
+ if (!field || state[field] === undefined)
110
+ return state;
111
+ const left = { ...state };
112
+ delete left[field];
113
+ return left;
114
+ }
115
+ /**
116
+ * Where what was asked for and what the page sees disagree.
117
+ *
118
+ * Not every override lands completely, and a report that
119
+ * repeated the request back would hide exactly the cases worth
120
+ * knowing about.
121
+ */
122
+ /** Every field this library knows how to emulate. */
123
+ const EMULATION_FIELDS = [
124
+ "colorScheme",
125
+ "reducedMotion",
126
+ "contrast",
127
+ "forcedColors",
128
+ "media",
129
+ "vision",
130
+ "device",
131
+ "viewport",
132
+ "touch",
133
+ "userAgent",
134
+ "timezone",
135
+ "locale",
136
+ "cpuThrottle",
137
+ "geolocation",
138
+ ];
139
+ /** Fields a caller invented, with the one they probably meant. */
140
+ const LIKELY_MEANT = {
141
+ width: "viewport",
142
+ height: "viewport",
143
+ deviceScaleFactor: "viewport",
144
+ mobile: "viewport",
145
+ scale: "viewport",
146
+ darkMode: "colorScheme",
147
+ theme: "colorScheme",
148
+ timeZone: "timezone",
149
+ language: "locale",
150
+ };
151
+ /**
152
+ * Report fields that will be ignored, as divergences.
153
+ *
154
+ * A request this cannot honour used to be accepted in silence,
155
+ * echoed back under `asked`, and reported with no gaps at all: a
156
+ * call asking for a 1024px viewport did nothing, said nothing, and
157
+ * left the page at 800px while claiming to have been understood.
158
+ * That cost me twenty minutes of measuring the wrong viewport and
159
+ * concluding a page was fine.
160
+ *
161
+ * Reported rather than thrown because the rest of the request is
162
+ * still worth applying, and because gaps are already the channel
163
+ * for "you asked for something you did not get".
164
+ */
165
+ export function unsupportedFields(change) {
166
+ const gaps = [];
167
+ for (const key of Object.keys(change)) {
168
+ if (EMULATION_FIELDS.includes(key))
169
+ continue;
170
+ if (change[key] === undefined)
171
+ continue;
172
+ const instead = LIKELY_MEANT[key];
173
+ gaps.push({
174
+ what: key,
175
+ asked: String(change[key]),
176
+ observed: "ignored, there is no such thing to emulate",
177
+ ...(instead ? { note: `${instead} is the field that carries this` } : {}),
178
+ });
179
+ }
180
+ return gaps;
181
+ }
182
+ export function divergences(asked, observed) {
183
+ const found = [];
184
+ if (asked.colorScheme !== undefined &&
185
+ observed.colorScheme !== asked.colorScheme) {
186
+ found.push({
187
+ what: "colour scheme",
188
+ asked: asked.colorScheme,
189
+ observed: observed.colorScheme,
190
+ });
191
+ }
192
+ if (asked.reducedMotion !== undefined &&
193
+ observed.reducedMotion !== asked.reducedMotion) {
194
+ found.push({
195
+ what: "reduced motion",
196
+ asked: String(asked.reducedMotion),
197
+ observed: String(observed.reducedMotion),
198
+ });
199
+ }
200
+ if (asked.forcedColors !== undefined &&
201
+ observed.forcedColors !== asked.forcedColors) {
202
+ found.push({
203
+ what: "forced colours",
204
+ asked: String(asked.forcedColors),
205
+ observed: String(observed.forcedColors),
206
+ });
207
+ }
208
+ if (asked.locale !== undefined && observed.language !== asked.locale) {
209
+ found.push({
210
+ what: "locale",
211
+ asked: asked.locale,
212
+ observed: observed.language,
213
+ note: "the override reaches date and number formatting but not " +
214
+ "navigator.language, which scripts read",
215
+ });
216
+ }
217
+ if (asked.timezone !== undefined && observed.timezone !== asked.timezone) {
218
+ found.push({
219
+ what: "timezone",
220
+ asked: asked.timezone,
221
+ observed: observed.timezone,
222
+ });
223
+ }
224
+ // Two signals, and a page can be given one without the other.
225
+ // A script may ask either: ontouchstart is the old sniff, and
226
+ // navigator.maxTouchPoints is what current guidance recommends,
227
+ // so touch is only really there when both agree. Checking the
228
+ // sniff alone let a half-applied phone pass as a whole one,
229
+ // which is the reverse of this function's whole purpose.
230
+ if (asked.touch === true && !observed.touchEvents) {
231
+ found.push({
232
+ what: "touch",
233
+ asked: "touch events available",
234
+ observed: `maxTouchPoints ${observed.maxTouchPoints}, ontouchstart absent`,
235
+ note: "a script sniffing for ontouchstart will still decide this " +
236
+ "is not a touch device",
237
+ });
238
+ }
239
+ else if (asked.touch === true && observed.maxTouchPoints === 0) {
240
+ found.push({
241
+ what: "touch",
242
+ asked: "a touch screen the page can count",
243
+ observed: "maxTouchPoints 0, ontouchstart present",
244
+ note: "a script asking navigator.maxTouchPoints, which is the " +
245
+ "usual way to ask, will decide this is not a touch device",
246
+ });
247
+ }
248
+ if (asked.viewport !== undefined && observed.width !== asked.viewport.width) {
249
+ found.push({
250
+ what: "viewport width",
251
+ asked: `${asked.viewport.width}px`,
252
+ observed: `${observed.width}px`,
253
+ note: "a page with no viewport meta tag is laid out at the " +
254
+ "desktop default regardless of the device",
255
+ });
256
+ }
257
+ return found;
258
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The environment a page thinks it is running in: viewport,
3
+ * media preferences, sight, locale and clock.
4
+ *
5
+ * The analysis here is capture-agnostic, so an observation
6
+ * taken by another driver reads the same way.
7
+ */
8
+ export { type DeviceCatalogue, type DeviceProfile, deviceEmulation, nearestDevices, noSuchDevice, } from "./devices.js";
9
+ export { type Divergence, divergences, type EmulationState, type MediaFeature, mediaFeaturesOf, mergeEmulation, type ObservedEnvironment, refusedFeature, unsupportedFields, type VisionDeficiency, withoutFeature, } from "./emulation.js";
10
+ export { ENVIRONMENT_PROBE } from "./probes.js";
11
+ export { matchesPattern, type NetworkRule, renderShaping, resolveThrottle, ruleFor, type ShapeAction, THROTTLE_PROFILES, type ThrottleConditions, throttleNames, throttleProfile, } from "./shaping.js";
12
+ export { renderStatus, type SessionStatus } from "./status.js";
13
+ export { type CookieRecord, captureState, readState, renderStorage, type SavedState, type StorageSnapshot, } from "./storage.js";
14
+ export { chooseTab, renderTabs, type TabRecord } from "./tabs.js";
15
+ export { renderEnvironment } from "./view.js";
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The environment a page thinks it is running in: viewport,
3
+ * media preferences, sight, locale and clock.
4
+ *
5
+ * The analysis here is capture-agnostic, so an observation
6
+ * taken by another driver reads the same way.
7
+ */
8
+ export { deviceEmulation, nearestDevices, noSuchDevice, } from "./devices.js";
9
+ export { divergences, mediaFeaturesOf, mergeEmulation, refusedFeature, unsupportedFields, withoutFeature, } from "./emulation.js";
10
+ export { ENVIRONMENT_PROBE } from "./probes.js";
11
+ export { matchesPattern, renderShaping, resolveThrottle, ruleFor, THROTTLE_PROFILES, throttleNames, throttleProfile, } from "./shaping.js";
12
+ export { renderStatus } from "./status.js";
13
+ export { captureState, readState, renderStorage, } from "./storage.js";
14
+ export { chooseTab, renderTabs } from "./tabs.js";
15
+ export { renderEnvironment } from "./view.js";
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Asking the page what it is actually experiencing.
3
+ *
4
+ * Page source rather than a function, for the same reason the
5
+ * accessibility observer is: the compiler wraps named inner
6
+ * bindings in a __name helper the page has never heard of, so
7
+ * a serialized function that declares helpers of its own throws
8
+ * on arrival.
9
+ */
10
+ /**
11
+ * Read the environment as the page sees it.
12
+ *
13
+ * Every value here comes from the page's own APIs rather than
14
+ * from what we asked the browser for, because the two differ
15
+ * often enough that reporting the request would be reporting a
16
+ * guess.
17
+ */
18
+ export declare const ENVIRONMENT_PROBE = "(() => {\n const on = (query) => window.matchMedia(query).matches;\n const pick = (name, values, fallback) => {\n for (const value of values) {\n if (on(\"(\" + name + \": \" + value + \")\")) return value;\n }\n return fallback;\n };\n return {\n colorScheme: pick(\"prefers-color-scheme\", [\"dark\", \"light\"], \"light\"),\n reducedMotion: on(\"(prefers-reduced-motion: reduce)\"),\n contrast: pick(\"prefers-contrast\", [\"more\", \"less\", \"custom\"], \"no-preference\"),\n forcedColors: on(\"(forced-colors: active)\"),\n print: on(\"print\"),\n width: window.innerWidth,\n height: window.innerHeight,\n devicePixelRatio: window.devicePixelRatio,\n maxTouchPoints: navigator.maxTouchPoints,\n touchEvents: \"ontouchstart\" in window,\n language: navigator.language,\n timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n };\n})()";
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Asking the page what it is actually experiencing.
3
+ *
4
+ * Page source rather than a function, for the same reason the
5
+ * accessibility observer is: the compiler wraps named inner
6
+ * bindings in a __name helper the page has never heard of, so
7
+ * a serialized function that declares helpers of its own throws
8
+ * on arrival.
9
+ */
10
+ /**
11
+ * Read the environment as the page sees it.
12
+ *
13
+ * Every value here comes from the page's own APIs rather than
14
+ * from what we asked the browser for, because the two differ
15
+ * often enough that reporting the request would be reporting a
16
+ * guess.
17
+ */
18
+ export const ENVIRONMENT_PROBE = `(() => {
19
+ const on = (query) => window.matchMedia(query).matches;
20
+ const pick = (name, values, fallback) => {
21
+ for (const value of values) {
22
+ if (on("(" + name + ": " + value + ")")) return value;
23
+ }
24
+ return fallback;
25
+ };
26
+ return {
27
+ colorScheme: pick("prefers-color-scheme", ["dark", "light"], "light"),
28
+ reducedMotion: on("(prefers-reduced-motion: reduce)"),
29
+ contrast: pick("prefers-contrast", ["more", "less", "custom"], "no-preference"),
30
+ forcedColors: on("(forced-colors: active)"),
31
+ print: on("print"),
32
+ width: window.innerWidth,
33
+ height: window.innerHeight,
34
+ devicePixelRatio: window.devicePixelRatio,
35
+ maxTouchPoints: navigator.maxTouchPoints,
36
+ touchEvents: "ontouchstart" in window,
37
+ language: navigator.language,
38
+ timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
39
+ };
40
+ })()`;