@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.
- package/README.md +52 -0
- package/dist/advisor/charter.d.ts +14 -0
- package/dist/advisor/charter.js +48 -0
- package/dist/advisor/findings.d.ts +43 -0
- package/dist/advisor/findings.js +82 -0
- package/dist/advisor/index.d.ts +24 -0
- package/dist/advisor/index.js +23 -0
- package/dist/advisor/settings.d.ts +16 -0
- package/dist/advisor/settings.js +30 -0
- package/dist/advisor/substantive.d.ts +14 -0
- package/dist/advisor/substantive.js +33 -0
- package/dist/advisor/tools.d.ts +38 -0
- package/dist/advisor/tools.js +202 -0
- package/dist/attribution/commit-hook.d.ts +53 -0
- package/dist/attribution/commit-hook.js +133 -0
- package/dist/attribution/gh-footer.d.ts +27 -0
- package/dist/attribution/gh-footer.js +80 -0
- package/dist/attribution/index.d.ts +11 -0
- package/dist/attribution/index.js +11 -0
- package/dist/attribution/model-name.d.ts +11 -0
- package/dist/attribution/model-name.js +26 -0
- package/dist/bin/attribution.d.ts +36 -0
- package/dist/bin/attribution.js +82 -0
- package/dist/bin/cli.d.ts +14 -0
- package/dist/bin/cli.js +236 -0
- package/dist/bin/gate-deps.d.ts +23 -0
- package/dist/bin/gate-deps.js +61 -0
- package/dist/bin/guardians.d.ts +51 -0
- package/dist/bin/guardians.js +174 -0
- package/dist/bin/memory.d.ts +16 -0
- package/dist/bin/memory.js +81 -0
- package/dist/bin/notes.d.ts +30 -0
- package/dist/bin/notes.js +67 -0
- package/dist/bin/process-exec.d.ts +14 -0
- package/dist/bin/process-exec.js +31 -0
- package/dist/bin/quest.d.ts +38 -0
- package/dist/bin/quest.js +187 -0
- package/dist/bin/slack-auth.d.ts +49 -0
- package/dist/bin/slack-auth.js +107 -0
- package/dist/clock/index.d.ts +46 -0
- package/dist/clock/index.js +72 -0
- package/dist/command/cwd.d.ts +21 -0
- package/dist/command/cwd.js +60 -0
- package/dist/command/edit.d.ts +14 -0
- package/dist/command/edit.js +22 -0
- package/dist/command/flags.d.ts +29 -0
- package/dist/command/flags.js +111 -0
- package/dist/command/index.d.ts +16 -0
- package/dist/command/index.js +12 -0
- package/dist/command/tokenize.d.ts +7 -0
- package/dist/command/tokenize.js +315 -0
- package/dist/command/types.d.ts +66 -0
- package/dist/command/types.js +9 -0
- package/dist/completion/index.d.ts +17 -0
- package/dist/completion/index.js +16 -0
- package/dist/completion/investigate.d.ts +63 -0
- package/dist/completion/investigate.js +198 -0
- package/dist/completion/resolve.d.ts +29 -0
- package/dist/completion/resolve.js +42 -0
- package/dist/completion/side.d.ts +51 -0
- package/dist/completion/side.js +93 -0
- package/dist/completion/types.d.ts +84 -0
- package/dist/completion/types.js +14 -0
- package/dist/exec/exec.d.ts +38 -0
- package/dist/exec/exec.js +51 -0
- package/dist/exec/index.d.ts +8 -0
- package/dist/exec/index.js +8 -0
- package/dist/gate/decision.d.ts +52 -0
- package/dist/gate/decision.js +68 -0
- package/dist/gate/deps.d.ts +14 -0
- package/dist/gate/deps.js +1 -0
- package/dist/gate/index.d.ts +2 -0
- package/dist/gate/index.js +1 -0
- package/dist/git-cli/index.d.ts +47 -0
- package/dist/git-cli/index.js +127 -0
- package/dist/github-cli/command-spec.d.ts +14 -0
- package/dist/github-cli/command-spec.js +18 -0
- package/dist/github-cli/index.d.ts +71 -0
- package/dist/github-cli/index.js +188 -0
- package/dist/google/apis/calendar.d.ts +64 -0
- package/dist/google/apis/calendar.js +297 -0
- package/dist/google/apis/docs.d.ts +29 -0
- package/dist/google/apis/docs.js +154 -0
- package/dist/google/apis/drive.d.ts +46 -0
- package/dist/google/apis/drive.js +189 -0
- package/dist/google/apis/gmail.d.ts +67 -0
- package/dist/google/apis/gmail.js +374 -0
- package/dist/google/apis/index.d.ts +10 -0
- package/dist/google/apis/index.js +10 -0
- package/dist/google/apis/sheets.d.ts +16 -0
- package/dist/google/apis/sheets.js +54 -0
- package/dist/google/apis/slides.d.ts +16 -0
- package/dist/google/apis/slides.js +40 -0
- package/dist/google/auth/browser.d.ts +5 -0
- package/dist/google/auth/browser.js +27 -0
- package/dist/google/auth/credentials.d.ts +26 -0
- package/dist/google/auth/credentials.js +69 -0
- package/dist/google/auth/errors.d.ts +15 -0
- package/dist/google/auth/errors.js +26 -0
- package/dist/google/auth/index.d.ts +12 -0
- package/dist/google/auth/index.js +12 -0
- package/dist/google/auth/oauth-app.d.ts +15 -0
- package/dist/google/auth/oauth-app.js +20 -0
- package/dist/google/auth/oauth.d.ts +46 -0
- package/dist/google/auth/oauth.js +146 -0
- package/dist/google/auth/server.d.ts +13 -0
- package/dist/google/auth/server.js +70 -0
- package/dist/google/auth/setup-instructions.d.ts +16 -0
- package/dist/google/auth/setup-instructions.js +24 -0
- package/dist/google/auth/store.d.ts +19 -0
- package/dist/google/auth/store.js +27 -0
- package/dist/google/index.d.ts +13 -0
- package/dist/google/index.js +12 -0
- package/dist/google/paths.d.ts +17 -0
- package/dist/google/paths.js +28 -0
- package/dist/google/renderers/calendar.d.ts +23 -0
- package/dist/google/renderers/calendar.js +312 -0
- package/dist/google/renderers/drive.d.ts +31 -0
- package/dist/google/renderers/drive.js +214 -0
- package/dist/google/renderers/email.d.ts +16 -0
- package/dist/google/renderers/email.js +130 -0
- package/dist/google/renderers/index.d.ts +8 -0
- package/dist/google/renderers/index.js +8 -0
- package/dist/google/types.d.ts +143 -0
- package/dist/google/types.js +27 -0
- package/dist/governance/distill.d.ts +31 -0
- package/dist/governance/distill.js +78 -0
- package/dist/governance/index.d.ts +11 -0
- package/dist/governance/index.js +10 -0
- package/dist/governance/render.d.ts +13 -0
- package/dist/governance/render.js +23 -0
- package/dist/governance/store.d.ts +32 -0
- package/dist/governance/store.js +102 -0
- package/dist/governance/types.d.ts +19 -0
- package/dist/governance/types.js +9 -0
- package/dist/guardian/index.d.ts +7 -0
- package/dist/guardian/index.js +7 -0
- package/dist/guardian/types.d.ts +37 -0
- package/dist/guardian/types.js +12 -0
- package/dist/internal/github/cli.d.ts +40 -0
- package/dist/internal/github/cli.js +102 -0
- package/dist/internal/guardian/commit-file.d.ts +7 -0
- package/dist/internal/guardian/commit-file.js +36 -0
- package/dist/internal/guardian/commit-format.d.ts +35 -0
- package/dist/internal/guardian/commit-format.js +63 -0
- package/dist/internal/guardian/commit-shell.d.ts +38 -0
- package/dist/internal/guardian/commit-shell.js +134 -0
- package/dist/internal/guardian/history-gate.d.ts +41 -0
- package/dist/internal/guardian/history-gate.js +76 -0
- package/dist/internal/guardian/prose-gate.d.ts +31 -0
- package/dist/internal/guardian/prose-gate.js +50 -0
- package/dist/internal/guardian/redirect-gate.d.ts +41 -0
- package/dist/internal/guardian/redirect-gate.js +114 -0
- package/dist/internal/guardian/section-gate.d.ts +20 -0
- package/dist/internal/guardian/section-gate.js +36 -0
- package/dist/internal/guardian/title-gate.d.ts +20 -0
- package/dist/internal/guardian/title-gate.js +36 -0
- package/dist/internal/json-array.d.ts +11 -0
- package/dist/internal/json-array.js +40 -0
- package/dist/internal/lsp/registry.d.ts +12 -0
- package/dist/internal/lsp/registry.js +16 -0
- package/dist/internal/notes/discovery.d.ts +59 -0
- package/dist/internal/notes/discovery.js +91 -0
- package/dist/internal/notes/frontmatter.d.ts +52 -0
- package/dist/internal/notes/frontmatter.js +163 -0
- package/dist/internal/notes/id.d.ts +42 -0
- package/dist/internal/notes/id.js +80 -0
- package/dist/internal/notes/io.d.ts +25 -0
- package/dist/internal/notes/io.js +51 -0
- package/dist/internal/notes/sanitize.d.ts +19 -0
- package/dist/internal/notes/sanitize.js +35 -0
- package/dist/internal/process-global.d.ts +20 -0
- package/dist/internal/process-global.js +28 -0
- package/dist/internal/quest/alias-index.d.ts +61 -0
- package/dist/internal/quest/alias-index.js +69 -0
- package/dist/internal/quest/append-journey.d.ts +22 -0
- package/dist/internal/quest/append-journey.js +63 -0
- package/dist/internal/quest/bash-write.d.ts +49 -0
- package/dist/internal/quest/bash-write.js +208 -0
- package/dist/internal/quest/dates.d.ts +14 -0
- package/dist/internal/quest/dates.js +20 -0
- package/dist/internal/quest/discovery.d.ts +96 -0
- package/dist/internal/quest/discovery.js +354 -0
- package/dist/internal/quest/fields.d.ts +37 -0
- package/dist/internal/quest/fields.js +94 -0
- package/dist/internal/quest/frontmatter.d.ts +88 -0
- package/dist/internal/quest/frontmatter.js +630 -0
- package/dist/internal/quest/git-signals.d.ts +53 -0
- package/dist/internal/quest/git-signals.js +192 -0
- package/dist/internal/quest/id.d.ts +50 -0
- package/dist/internal/quest/id.js +116 -0
- package/dist/internal/quest/io.d.ts +54 -0
- package/dist/internal/quest/io.js +233 -0
- package/dist/internal/quest/mentions.d.ts +45 -0
- package/dist/internal/quest/mentions.js +70 -0
- package/dist/internal/quest/mutate.d.ts +38 -0
- package/dist/internal/quest/mutate.js +83 -0
- package/dist/internal/quest/process-liveness.d.ts +98 -0
- package/dist/internal/quest/process-liveness.js +216 -0
- package/dist/internal/quest/quest-doc.d.ts +116 -0
- package/dist/internal/quest/quest-doc.js +239 -0
- package/dist/internal/quest/ranking.d.ts +48 -0
- package/dist/internal/quest/ranking.js +114 -0
- package/dist/internal/quest/reopen.d.ts +65 -0
- package/dist/internal/quest/reopen.js +113 -0
- package/dist/internal/quest/resolve-cwd.d.ts +32 -0
- package/dist/internal/quest/resolve-cwd.js +89 -0
- package/dist/internal/quest/sanitize.d.ts +42 -0
- package/dist/internal/quest/sanitize.js +69 -0
- package/dist/internal/quest/scaffold.d.ts +59 -0
- package/dist/internal/quest/scaffold.js +169 -0
- package/dist/internal/quest/scratch.d.ts +27 -0
- package/dist/internal/quest/scratch.js +106 -0
- package/dist/internal/quest/session-liveness.d.ts +125 -0
- package/dist/internal/quest/session-liveness.js +386 -0
- package/dist/internal/quest/session-ownership.d.ts +22 -0
- package/dist/internal/quest/session-ownership.js +100 -0
- package/dist/internal/quest/session-registry.d.ts +221 -0
- package/dist/internal/quest/session-registry.js +266 -0
- package/dist/internal/quest/status.d.ts +10 -0
- package/dist/internal/quest/status.js +15 -0
- package/dist/internal/quest/structural-journal.d.ts +41 -0
- package/dist/internal/quest/structural-journal.js +67 -0
- package/dist/internal/quest/structural.d.ts +43 -0
- package/dist/internal/quest/structural.js +77 -0
- package/dist/internal/quest/toc.d.ts +28 -0
- package/dist/internal/quest/toc.js +90 -0
- package/dist/internal/quest/trees.d.ts +53 -0
- package/dist/internal/quest/trees.js +145 -0
- package/dist/internal/quest/url-fetchers.d.ts +50 -0
- package/dist/internal/quest/url-fetchers.js +97 -0
- package/dist/internal/quest/write-classifier.d.ts +46 -0
- package/dist/internal/quest/write-classifier.js +59 -0
- package/dist/internal/refs/builtins.d.ts +32 -0
- package/dist/internal/refs/builtins.js +179 -0
- package/dist/internal/refs/registry.d.ts +25 -0
- package/dist/internal/refs/registry.js +42 -0
- package/dist/internal/registry/global-symbol-registry.d.ts +37 -0
- package/dist/internal/registry/global-symbol-registry.js +55 -0
- package/dist/internal/review/registry.d.ts +12 -0
- package/dist/internal/review/registry.js +16 -0
- package/dist/internal/sqlite/db.d.ts +16 -0
- package/dist/internal/sqlite/db.js +26 -0
- package/dist/internal/terminal/builtins.d.ts +8 -0
- package/dist/internal/terminal/builtins.js +14 -0
- package/dist/internal/terminal/drivers/fallback.d.ts +8 -0
- package/dist/internal/terminal/drivers/fallback.js +31 -0
- package/dist/internal/terminal/drivers/shared.d.ts +39 -0
- package/dist/internal/terminal/drivers/shared.js +51 -0
- package/dist/internal/terminal/drivers/tmux.d.ts +14 -0
- package/dist/internal/terminal/drivers/tmux.js +88 -0
- package/dist/internal/terminal/drivers/wezterm.d.ts +35 -0
- package/dist/internal/terminal/drivers/wezterm.js +175 -0
- package/dist/internal/terminal/registry.d.ts +12 -0
- package/dist/internal/terminal/registry.js +16 -0
- package/dist/internal/tree/builtins.d.ts +8 -0
- package/dist/internal/tree/builtins.js +10 -0
- package/dist/internal/tree/providers/git-worktree.d.ts +20 -0
- package/dist/internal/tree/providers/git-worktree.js +279 -0
- package/dist/internal/tree/registry.d.ts +12 -0
- package/dist/internal/tree/registry.js +16 -0
- package/dist/lsp/config.d.ts +77 -0
- package/dist/lsp/config.js +154 -0
- package/dist/lsp/external.d.ts +13 -0
- package/dist/lsp/external.js +52 -0
- package/dist/lsp/format.d.ts +11 -0
- package/dist/lsp/format.js +54 -0
- package/dist/lsp/index.d.ts +17 -0
- package/dist/lsp/index.js +16 -0
- package/dist/lsp/offsets.d.ts +22 -0
- package/dist/lsp/offsets.js +51 -0
- package/dist/lsp/registry.d.ts +28 -0
- package/dist/lsp/registry.js +45 -0
- package/dist/lsp/standalone/backend.d.ts +42 -0
- package/dist/lsp/standalone/backend.js +150 -0
- package/dist/lsp/standalone/document.d.ts +45 -0
- package/dist/lsp/standalone/document.js +81 -0
- package/dist/lsp/standalone/server.d.ts +84 -0
- package/dist/lsp/standalone/server.js +521 -0
- package/dist/lsp/types.d.ts +119 -0
- package/dist/lsp/types.js +13 -0
- package/dist/memory/db.d.ts +15 -0
- package/dist/memory/db.js +25 -0
- package/dist/memory/index.d.ts +12 -0
- package/dist/memory/index.js +11 -0
- package/dist/memory/paths.d.ts +19 -0
- package/dist/memory/paths.js +33 -0
- package/dist/memory/scope.d.ts +14 -0
- package/dist/memory/scope.js +22 -0
- package/dist/memory/store.d.ts +12 -0
- package/dist/memory/store.js +146 -0
- package/dist/memory/types.d.ts +80 -0
- package/dist/memory/types.js +6 -0
- package/dist/notes/types.d.ts +50 -0
- package/dist/notes/types.js +23 -0
- package/dist/notes/verbs/create.d.ts +5 -0
- package/dist/notes/verbs/create.js +55 -0
- package/dist/notes/verbs/mutate.d.ts +8 -0
- package/dist/notes/verbs/mutate.js +152 -0
- package/dist/notes/verbs/queries.d.ts +15 -0
- package/dist/notes/verbs/queries.js +116 -0
- package/dist/notes/verbs/reindex.d.ts +12 -0
- package/dist/notes/verbs/reindex.js +35 -0
- package/dist/notes/verbs/shared.d.ts +37 -0
- package/dist/notes/verbs/shared.js +29 -0
- package/dist/observability/index.d.ts +13 -0
- package/dist/observability/index.js +12 -0
- package/dist/observability/recorder.d.ts +50 -0
- package/dist/observability/recorder.js +77 -0
- package/dist/observability/store.d.ts +22 -0
- package/dist/observability/store.js +213 -0
- package/dist/observability/types.d.ts +82 -0
- package/dist/observability/types.js +1 -0
- package/dist/process/index.d.ts +9 -0
- package/dist/process/index.js +9 -0
- package/dist/process/process.d.ts +95 -0
- package/dist/process/process.js +153 -0
- package/dist/prose/block.d.ts +9 -0
- package/dist/prose/block.js +43 -0
- package/dist/prose/detect.d.ts +50 -0
- package/dist/prose/detect.js +217 -0
- package/dist/prose/gate.d.ts +14 -0
- package/dist/prose/gate.js +21 -0
- package/dist/prose/index.d.ts +4 -0
- package/dist/prose/index.js +4 -0
- package/dist/prose/wrap.d.ts +9 -0
- package/dist/prose/wrap.js +47 -0
- package/dist/quest/actions.d.ts +20 -0
- package/dist/quest/actions.js +107 -0
- package/dist/quest/config.d.ts +79 -0
- package/dist/quest/config.js +83 -0
- package/dist/quest/index.d.ts +29 -0
- package/dist/quest/index.js +28 -0
- package/dist/quest/lifecycle.d.ts +365 -0
- package/dist/quest/lifecycle.js +900 -0
- package/dist/quest/lookup.d.ts +243 -0
- package/dist/quest/lookup.js +496 -0
- package/dist/quest/machine.d.ts +48 -0
- package/dist/quest/machine.js +96 -0
- package/dist/quest/render-rows.d.ts +166 -0
- package/dist/quest/render-rows.js +214 -0
- package/dist/quest/state.d.ts +111 -0
- package/dist/quest/state.js +46 -0
- package/dist/quest/types.d.ts +224 -0
- package/dist/quest/types.js +10 -0
- package/dist/quest/verbs/alias.d.ts +9 -0
- package/dist/quest/verbs/alias.js +129 -0
- package/dist/quest/verbs/lifecycle.d.ts +36 -0
- package/dist/quest/verbs/lifecycle.js +407 -0
- package/dist/quest/verbs/queries.d.ts +24 -0
- package/dist/quest/verbs/queries.js +241 -0
- package/dist/quest/verbs/reorder.d.ts +15 -0
- package/dist/quest/verbs/reorder.js +85 -0
- package/dist/quest/verbs/shared.d.ts +63 -0
- package/dist/quest/verbs/shared.js +35 -0
- package/dist/quest/verbs/stage.d.ts +39 -0
- package/dist/quest/verbs/stage.js +506 -0
- package/dist/quest/verbs/structural.d.ts +23 -0
- package/dist/quest/verbs/structural.js +310 -0
- package/dist/quest/verbs/tree-ops.d.ts +20 -0
- package/dist/quest/verbs/tree-ops.js +289 -0
- package/dist/refs/index.d.ts +13 -0
- package/dist/refs/index.js +12 -0
- package/dist/refs/lookup.d.ts +53 -0
- package/dist/refs/lookup.js +102 -0
- package/dist/refs/register.d.ts +34 -0
- package/dist/refs/register.js +44 -0
- package/dist/refs/types.d.ts +81 -0
- package/dist/refs/types.js +17 -0
- package/dist/remote/index.d.ts +9 -0
- package/dist/remote/index.js +9 -0
- package/dist/remote/name.d.ts +22 -0
- package/dist/remote/name.js +30 -0
- package/dist/result/cite.d.ts +84 -0
- package/dist/result/cite.js +127 -0
- package/dist/result/counts.d.ts +15 -0
- package/dist/result/counts.js +17 -0
- package/dist/result/details.d.ts +61 -0
- package/dist/result/details.js +121 -0
- package/dist/result/digest.d.ts +37 -0
- package/dist/result/digest.js +227 -0
- package/dist/result/follow.d.ts +29 -0
- package/dist/result/follow.js +37 -0
- package/dist/result/index.d.ts +26 -0
- package/dist/result/index.js +26 -0
- package/dist/result/listing.d.ts +62 -0
- package/dist/result/listing.js +72 -0
- package/dist/result/location.d.ts +67 -0
- package/dist/result/location.js +125 -0
- package/dist/result/query.d.ts +67 -0
- package/dist/result/query.js +144 -0
- package/dist/result/spill.d.ts +41 -0
- package/dist/result/spill.js +121 -0
- package/dist/result/store.d.ts +83 -0
- package/dist/result/store.js +214 -0
- package/dist/result/view.d.ts +31 -0
- package/dist/result/view.js +38 -0
- package/dist/review/anchor.d.ts +84 -0
- package/dist/review/anchor.js +89 -0
- package/dist/review/ask/agents.d.ts +80 -0
- package/dist/review/ask/agents.js +296 -0
- package/dist/review/ask/anchorable.d.ts +35 -0
- package/dist/review/ask/anchorable.js +76 -0
- package/dist/review/ask/answer.d.ts +54 -0
- package/dist/review/ask/answer.js +209 -0
- package/dist/review/ask/audit.d.ts +71 -0
- package/dist/review/ask/audit.js +158 -0
- package/dist/review/ask/collect.d.ts +41 -0
- package/dist/review/ask/collect.js +82 -0
- package/dist/review/ask/council.d.ts +290 -0
- package/dist/review/ask/council.js +386 -0
- package/dist/review/ask/critique.d.ts +69 -0
- package/dist/review/ask/critique.js +157 -0
- package/dist/review/ask/harvest.d.ts +119 -0
- package/dist/review/ask/harvest.js +409 -0
- package/dist/review/ask/identity.d.ts +93 -0
- package/dist/review/ask/identity.js +134 -0
- package/dist/review/ask/judge.d.ts +37 -0
- package/dist/review/ask/judge.js +140 -0
- package/dist/review/ask/persona.d.ts +84 -0
- package/dist/review/ask/persona.js +127 -0
- package/dist/review/ask/progress.d.ts +117 -0
- package/dist/review/ask/progress.js +137 -0
- package/dist/review/ask/prompt.d.ts +131 -0
- package/dist/review/ask/prompt.js +242 -0
- package/dist/review/ask/roster.d.ts +94 -0
- package/dist/review/ask/roster.js +338 -0
- package/dist/review/ask/run.d.ts +435 -0
- package/dist/review/ask/run.js +340 -0
- package/dist/review/ask/span.d.ts +70 -0
- package/dist/review/ask/span.js +166 -0
- package/dist/review/ask/stack-round.d.ts +66 -0
- package/dist/review/ask/stack-round.js +125 -0
- package/dist/review/ask/start.d.ts +48 -0
- package/dist/review/ask/start.js +118 -0
- package/dist/review/ask/store.d.ts +83 -0
- package/dist/review/ask/store.js +226 -0
- package/dist/review/ask/wire.d.ts +89 -0
- package/dist/review/ask/wire.js +204 -0
- package/dist/review/attach.d.ts +161 -0
- package/dist/review/attach.js +357 -0
- package/dist/review/authoring.d.ts +84 -0
- package/dist/review/authoring.js +203 -0
- package/dist/review/backed.d.ts +90 -0
- package/dist/review/backed.js +168 -0
- package/dist/review/bind.d.ts +75 -0
- package/dist/review/bind.js +223 -0
- package/dist/review/budget.d.ts +133 -0
- package/dist/review/budget.js +278 -0
- package/dist/review/capabilities.d.ts +217 -0
- package/dist/review/capabilities.js +46 -0
- package/dist/review/change.d.ts +155 -0
- package/dist/review/change.js +15 -0
- package/dist/review/checks.d.ts +56 -0
- package/dist/review/checks.js +11 -0
- package/dist/review/config.d.ts +71 -0
- package/dist/review/config.js +125 -0
- package/dist/review/conventions.d.ts +35 -0
- package/dist/review/conventions.js +58 -0
- package/dist/review/conversation.d.ts +98 -0
- package/dist/review/conversation.js +16 -0
- package/dist/review/decided.d.ts +58 -0
- package/dist/review/decided.js +67 -0
- package/dist/review/diff.d.ts +116 -0
- package/dist/review/diff.js +237 -0
- package/dist/review/draft/continuation.d.ts +23 -0
- package/dist/review/draft/continuation.js +32 -0
- package/dist/review/draft/fanout.d.ts +57 -0
- package/dist/review/draft/fanout.js +46 -0
- package/dist/review/draft/handle.d.ts +55 -0
- package/dist/review/draft/handle.js +110 -0
- package/dist/review/draft/plan.d.ts +112 -0
- package/dist/review/draft/plan.js +343 -0
- package/dist/review/draft/publish.d.ts +38 -0
- package/dist/review/draft/publish.js +118 -0
- package/dist/review/draft/render.d.ts +32 -0
- package/dist/review/draft/render.js +100 -0
- package/dist/review/draft/state.d.ts +98 -0
- package/dist/review/draft/state.js +83 -0
- package/dist/review/draft/store.d.ts +33 -0
- package/dist/review/draft/store.js +100 -0
- package/dist/review/elsewhere.d.ts +27 -0
- package/dist/review/elsewhere.js +39 -0
- package/dist/review/engine.d.ts +106 -0
- package/dist/review/engine.js +243 -0
- package/dist/review/events.d.ts +59 -0
- package/dist/review/events.js +35 -0
- package/dist/review/failed.d.ts +46 -0
- package/dist/review/failed.js +56 -0
- package/dist/review/finding.d.ts +81 -0
- package/dist/review/finding.js +85 -0
- package/dist/review/fix.d.ts +147 -0
- package/dist/review/fix.js +175 -0
- package/dist/review/followup.d.ts +84 -0
- package/dist/review/followup.js +123 -0
- package/dist/review/index.d.ts +134 -0
- package/dist/review/index.js +80 -0
- package/dist/review/keys.d.ts +23 -0
- package/dist/review/keys.js +40 -0
- package/dist/review/landing.d.ts +37 -0
- package/dist/review/landing.js +68 -0
- package/dist/review/lenses.d.ts +132 -0
- package/dist/review/lenses.js +430 -0
- package/dist/review/propose-from.d.ts +76 -0
- package/dist/review/propose-from.js +86 -0
- package/dist/review/provider.d.ts +306 -0
- package/dist/review/provider.js +16 -0
- package/dist/review/providers/git/index.d.ts +23 -0
- package/dist/review/providers/git/index.js +214 -0
- package/dist/review/providers/github/authoring.d.ts +22 -0
- package/dist/review/providers/github/authoring.js +350 -0
- package/dist/review/providers/github/claims.d.ts +49 -0
- package/dist/review/providers/github/claims.js +136 -0
- package/dist/review/providers/github/conversation.d.ts +18 -0
- package/dist/review/providers/github/conversation.js +455 -0
- package/dist/review/providers/github/fields.d.ts +30 -0
- package/dist/review/providers/github/fields.js +47 -0
- package/dist/review/providers/github/index.d.ts +15 -0
- package/dist/review/providers/github/index.js +110 -0
- package/dist/review/providers/github/proposals.d.ts +14 -0
- package/dist/review/providers/github/proposals.js +298 -0
- package/dist/review/providers/github/queue.d.ts +46 -0
- package/dist/review/providers/github/queue.js +122 -0
- package/dist/review/providers/github/stacking.d.ts +20 -0
- package/dist/review/providers/github/stacking.js +107 -0
- package/dist/review/queue.d.ts +43 -0
- package/dist/review/queue.js +56 -0
- package/dist/review/reactable.d.ts +93 -0
- package/dist/review/reactable.js +140 -0
- package/dist/review/register.d.ts +52 -0
- package/dist/review/register.js +53 -0
- package/dist/review/resolve.d.ts +58 -0
- package/dist/review/resolve.js +150 -0
- package/dist/review/retarget.d.ts +73 -0
- package/dist/review/retarget.js +82 -0
- package/dist/review/revisited.d.ts +77 -0
- package/dist/review/revisited.js +121 -0
- package/dist/review/stack.d.ts +110 -0
- package/dist/review/stack.js +52 -0
- package/dist/sections/block.d.ts +9 -0
- package/dist/sections/block.js +42 -0
- package/dist/sections/detect.d.ts +31 -0
- package/dist/sections/detect.js +67 -0
- package/dist/sections/gate.d.ts +21 -0
- package/dist/sections/gate.js +22 -0
- package/dist/sections/index.d.ts +5 -0
- package/dist/sections/index.js +5 -0
- package/dist/sections/sanctioned.d.ts +13 -0
- package/dist/sections/sanctioned.js +21 -0
- package/dist/shell/index.d.ts +8 -0
- package/dist/shell/index.js +8 -0
- package/dist/shell/parse.d.ts +125 -0
- package/dist/shell/parse.js +298 -0
- package/dist/slack/api/channels.d.ts +12 -0
- package/dist/slack/api/channels.js +28 -0
- package/dist/slack/api/client.d.ts +94 -0
- package/dist/slack/api/client.js +272 -0
- package/dist/slack/api/files.d.ts +95 -0
- package/dist/slack/api/files.js +223 -0
- package/dist/slack/api/index.d.ts +11 -0
- package/dist/slack/api/index.js +11 -0
- package/dist/slack/api/messages.d.ts +98 -0
- package/dist/slack/api/messages.js +292 -0
- package/dist/slack/api/reactions.d.ts +47 -0
- package/dist/slack/api/reactions.js +50 -0
- package/dist/slack/api/resolve-conversations.d.ts +43 -0
- package/dist/slack/api/resolve-conversations.js +130 -0
- package/dist/slack/api/resolve-messages.d.ts +29 -0
- package/dist/slack/api/resolve-messages.js +93 -0
- package/dist/slack/api/resolve-users.d.ts +27 -0
- package/dist/slack/api/resolve-users.js +73 -0
- package/dist/slack/api/search.d.ts +86 -0
- package/dist/slack/api/search.js +186 -0
- package/dist/slack/api/users.d.ts +12 -0
- package/dist/slack/api/users.js +33 -0
- package/dist/slack/auth/browser-extract.d.ts +33 -0
- package/dist/slack/auth/browser-extract.js +201 -0
- package/dist/slack/auth/browser.d.ts +5 -0
- package/dist/slack/auth/browser.js +25 -0
- package/dist/slack/auth/credentials.d.ts +14 -0
- package/dist/slack/auth/credentials.js +24 -0
- package/dist/slack/auth/errors.d.ts +9 -0
- package/dist/slack/auth/errors.js +19 -0
- package/dist/slack/auth/extract.d.ts +23 -0
- package/dist/slack/auth/extract.js +44 -0
- package/dist/slack/auth/index.d.ts +12 -0
- package/dist/slack/auth/index.js +11 -0
- package/dist/slack/auth/oauth-app.d.ts +11 -0
- package/dist/slack/auth/oauth-app.js +20 -0
- package/dist/slack/auth/oauth.d.ts +31 -0
- package/dist/slack/auth/oauth.js +82 -0
- package/dist/slack/auth/server.d.ts +14 -0
- package/dist/slack/auth/server.js +75 -0
- package/dist/slack/auth/store.d.ts +17 -0
- package/dist/slack/auth/store.js +27 -0
- package/dist/slack/block-message.d.ts +9 -0
- package/dist/slack/block-message.js +30 -0
- package/dist/slack/blocks.d.ts +94 -0
- package/dist/slack/blocks.js +765 -0
- package/dist/slack/content-gate.d.ts +12 -0
- package/dist/slack/content-gate.js +22 -0
- package/dist/slack/detect.d.ts +31 -0
- package/dist/slack/detect.js +125 -0
- package/dist/slack/index.d.ts +18 -0
- package/dist/slack/index.js +17 -0
- package/dist/slack/paths.d.ts +28 -0
- package/dist/slack/paths.js +46 -0
- package/dist/slack/renderers/channel.d.ts +6 -0
- package/dist/slack/renderers/channel.js +27 -0
- package/dist/slack/renderers/index.d.ts +9 -0
- package/dist/slack/renderers/index.js +9 -0
- package/dist/slack/renderers/message.d.ts +21 -0
- package/dist/slack/renderers/message.js +214 -0
- package/dist/slack/renderers/reactions.d.ts +8 -0
- package/dist/slack/renderers/reactions.js +43 -0
- package/dist/slack/renderers/search.d.ts +6 -0
- package/dist/slack/renderers/search.js +39 -0
- package/dist/slack/renderers/user.d.ts +6 -0
- package/dist/slack/renderers/user.js +32 -0
- package/dist/slack/resolvers/cache.d.ts +29 -0
- package/dist/slack/resolvers/cache.js +70 -0
- package/dist/slack/resolvers/conversation-cache.d.ts +42 -0
- package/dist/slack/resolvers/conversation-cache.js +128 -0
- package/dist/slack/resolvers/conversation.d.ts +44 -0
- package/dist/slack/resolvers/conversation.js +229 -0
- package/dist/slack/resolvers/index.d.ts +8 -0
- package/dist/slack/resolvers/index.js +8 -0
- package/dist/slack/resolvers/target.d.ts +19 -0
- package/dist/slack/resolvers/target.js +45 -0
- package/dist/slack/resolvers/url.d.ts +20 -0
- package/dist/slack/resolvers/url.js +22 -0
- package/dist/slack/resolvers/user.d.ts +54 -0
- package/dist/slack/resolvers/user.js +134 -0
- package/dist/slack/types.d.ts +180 -0
- package/dist/slack/types.js +13 -0
- package/dist/tdd/attest.d.ts +21 -0
- package/dist/tdd/attest.js +21 -0
- package/dist/tdd/discipline.d.ts +11 -0
- package/dist/tdd/discipline.js +28 -0
- package/dist/tdd/index.d.ts +14 -0
- package/dist/tdd/index.js +13 -0
- package/dist/tdd/machine.d.ts +48 -0
- package/dist/tdd/machine.js +139 -0
- package/dist/tdd/presentation.d.ts +34 -0
- package/dist/tdd/presentation.js +38 -0
- package/dist/tdd/queries.d.ts +10 -0
- package/dist/tdd/queries.js +22 -0
- package/dist/terminal/index.d.ts +12 -0
- package/dist/terminal/index.js +11 -0
- package/dist/terminal/register.d.ts +21 -0
- package/dist/terminal/register.js +31 -0
- package/dist/terminal/resolve.d.ts +63 -0
- package/dist/terminal/resolve.js +117 -0
- package/dist/terminal/types.d.ts +134 -0
- package/dist/terminal/types.js +19 -0
- package/dist/thinking/index.d.ts +20 -0
- package/dist/thinking/index.js +27 -0
- package/dist/title/block.d.ts +9 -0
- package/dist/title/block.js +32 -0
- package/dist/title/detect.d.ts +25 -0
- package/dist/title/detect.js +154 -0
- package/dist/title/gate.d.ts +19 -0
- package/dist/title/gate.js +21 -0
- package/dist/title/index.d.ts +3 -0
- package/dist/title/index.js +3 -0
- package/dist/tree/index.d.ts +18 -0
- package/dist/tree/index.js +17 -0
- package/dist/tree/register.d.ts +21 -0
- package/dist/tree/register.js +31 -0
- package/dist/tree/resolve.d.ts +20 -0
- package/dist/tree/resolve.js +31 -0
- package/dist/tree/types.d.ts +83 -0
- package/dist/tree/types.js +12 -0
- package/dist/ui/count.d.ts +29 -0
- package/dist/ui/count.js +35 -0
- package/dist/ui/path.d.ts +25 -0
- package/dist/ui/path.js +40 -0
- package/dist/verify/index.d.ts +17 -0
- package/dist/verify/index.js +14 -0
- package/dist/verify/project.d.ts +21 -0
- package/dist/verify/project.js +49 -0
- package/dist/verify/resolve.d.ts +26 -0
- package/dist/verify/resolve.js +27 -0
- package/dist/verify/run.d.ts +31 -0
- package/dist/verify/run.js +145 -0
- package/dist/web/a11y/announcements.d.ts +67 -0
- package/dist/web/a11y/announcements.js +116 -0
- package/dist/web/a11y/budget.d.ts +75 -0
- package/dist/web/a11y/budget.js +97 -0
- package/dist/web/a11y/focus.d.ts +37 -0
- package/dist/web/a11y/focus.js +106 -0
- package/dist/web/a11y/index.d.ts +19 -0
- package/dist/web/a11y/index.js +25 -0
- package/dist/web/a11y/naming.d.ts +23 -0
- package/dist/web/a11y/naming.js +55 -0
- package/dist/web/a11y/outline.d.ts +23 -0
- package/dist/web/a11y/outline.js +42 -0
- package/dist/web/a11y/reading.d.ts +12 -0
- package/dist/web/a11y/reading.js +101 -0
- package/dist/web/a11y/scope.d.ts +23 -0
- package/dist/web/a11y/scope.js +99 -0
- package/dist/web/a11y/states.d.ts +22 -0
- package/dist/web/a11y/states.js +53 -0
- package/dist/web/a11y/tree.d.ts +124 -0
- package/dist/web/a11y/tree.js +269 -0
- package/dist/web/a11y/walk.d.ts +225 -0
- package/dist/web/a11y/walk.js +568 -0
- package/dist/web/a11y/walkprobe.d.ts +44 -0
- package/dist/web/a11y/walkprobe.js +365 -0
- package/dist/web/audit/axe.d.ts +219 -0
- package/dist/web/audit/axe.js +322 -0
- package/dist/web/audit/behind.d.ts +63 -0
- package/dist/web/audit/behind.js +142 -0
- package/dist/web/audit/capture.d.ts +43 -0
- package/dist/web/audit/capture.js +185 -0
- package/dist/web/audit/colour.d.ts +85 -0
- package/dist/web/audit/colour.js +189 -0
- package/dist/web/audit/contrast.d.ts +74 -0
- package/dist/web/audit/contrast.js +104 -0
- package/dist/web/audit/health.d.ts +27 -0
- package/dist/web/audit/health.js +57 -0
- package/dist/web/audit/index.d.ts +22 -0
- package/dist/web/audit/index.js +22 -0
- package/dist/web/audit/pair.d.ts +55 -0
- package/dist/web/audit/pair.js +157 -0
- package/dist/web/audit/probe.d.ts +31 -0
- package/dist/web/audit/probe.js +189 -0
- package/dist/web/audit/report.d.ts +22 -0
- package/dist/web/audit/report.js +250 -0
- package/dist/web/audit/structure.d.ts +126 -0
- package/dist/web/audit/structure.js +595 -0
- package/dist/web/audit/sweep.d.ts +66 -0
- package/dist/web/audit/sweep.js +117 -0
- package/dist/web/audit/target.d.ts +89 -0
- package/dist/web/audit/target.js +168 -0
- package/dist/web/audit/verdict.d.ts +48 -0
- package/dist/web/audit/verdict.js +52 -0
- package/dist/web/audit/visual.d.ts +161 -0
- package/dist/web/audit/visual.js +297 -0
- package/dist/web/browser.d.ts +213 -0
- package/dist/web/browser.js +927 -0
- package/dist/web/compare/images.d.ts +45 -0
- package/dist/web/compare/images.js +101 -0
- package/dist/web/compare/index.d.ts +15 -0
- package/dist/web/compare/index.js +15 -0
- package/dist/web/compare/provenance.d.ts +48 -0
- package/dist/web/compare/provenance.js +86 -0
- package/dist/web/compare/regions.d.ts +78 -0
- package/dist/web/compare/regions.js +211 -0
- package/dist/web/cookies/extract.d.ts +26 -0
- package/dist/web/cookies/extract.js +167 -0
- package/dist/web/cookies/index.d.ts +8 -0
- package/dist/web/cookies/index.js +7 -0
- package/dist/web/cookies/inject.d.ts +13 -0
- package/dist/web/cookies/inject.js +27 -0
- package/dist/web/cookies/setup.d.ts +31 -0
- package/dist/web/cookies/setup.js +94 -0
- package/dist/web/design/index.d.ts +9 -0
- package/dist/web/design/index.js +9 -0
- package/dist/web/design/inventory.d.ts +126 -0
- package/dist/web/design/inventory.js +324 -0
- package/dist/web/design/probe.d.ts +24 -0
- package/dist/web/design/probe.js +88 -0
- package/dist/web/element/actionable.d.ts +34 -0
- package/dist/web/element/actionable.js +48 -0
- package/dist/web/element/animations.d.ts +48 -0
- package/dist/web/element/animations.js +74 -0
- package/dist/web/element/box.d.ts +53 -0
- package/dist/web/element/box.js +58 -0
- package/dist/web/element/hover.d.ts +75 -0
- package/dist/web/element/hover.js +172 -0
- package/dist/web/element/index.d.ts +17 -0
- package/dist/web/element/index.js +17 -0
- package/dist/web/element/listeners.d.ts +72 -0
- package/dist/web/element/listeners.js +98 -0
- package/dist/web/element/measure.d.ts +40 -0
- package/dist/web/element/measure.js +118 -0
- package/dist/web/element/probes.d.ts +108 -0
- package/dist/web/element/probes.js +195 -0
- package/dist/web/element/pseudo.d.ts +51 -0
- package/dist/web/element/pseudo.js +96 -0
- package/dist/web/element/view.d.ts +30 -0
- package/dist/web/element/view.js +117 -0
- package/dist/web/element/visibility.d.ts +42 -0
- package/dist/web/element/visibility.js +67 -0
- package/dist/web/envelope/artifacts.d.ts +23 -0
- package/dist/web/envelope/artifacts.js +45 -0
- package/dist/web/envelope/index.d.ts +9 -0
- package/dist/web/envelope/index.js +9 -0
- package/dist/web/envelope/naming.d.ts +23 -0
- package/dist/web/envelope/naming.js +43 -0
- package/dist/web/envelope/paged.d.ts +42 -0
- package/dist/web/envelope/paged.js +99 -0
- package/dist/web/envelope/sink.d.ts +43 -0
- package/dist/web/envelope/sink.js +67 -0
- package/dist/web/environment/devices.d.ts +65 -0
- package/dist/web/environment/devices.js +82 -0
- package/dist/web/environment/emulation.d.ts +124 -0
- package/dist/web/environment/emulation.js +258 -0
- package/dist/web/environment/index.d.ts +15 -0
- package/dist/web/environment/index.js +15 -0
- package/dist/web/environment/probes.d.ts +18 -0
- package/dist/web/environment/probes.js +40 -0
- package/dist/web/environment/shaping.d.ts +90 -0
- package/dist/web/environment/shaping.js +141 -0
- package/dist/web/environment/status.d.ts +51 -0
- package/dist/web/environment/status.js +109 -0
- package/dist/web/environment/storage.d.ts +55 -0
- package/dist/web/environment/storage.js +142 -0
- package/dist/web/environment/tabs.d.ts +32 -0
- package/dist/web/environment/tabs.js +47 -0
- package/dist/web/environment/view.d.ts +10 -0
- package/dist/web/environment/view.js +42 -0
- package/dist/web/evaluate/index.d.ts +6 -0
- package/dist/web/evaluate/index.js +6 -0
- package/dist/web/evaluate/outcome.d.ts +74 -0
- package/dist/web/evaluate/outcome.js +91 -0
- package/dist/web/evaluate/probe.d.ts +31 -0
- package/dist/web/evaluate/probe.js +303 -0
- package/dist/web/index.d.ts +47 -0
- package/dist/web/index.js +47 -0
- package/dist/web/input/index.d.ts +11 -0
- package/dist/web/input/index.js +11 -0
- package/dist/web/input/keys.d.ts +48 -0
- package/dist/web/input/keys.js +189 -0
- package/dist/web/input/pointer.d.ts +56 -0
- package/dist/web/input/pointer.js +77 -0
- package/dist/web/input/touch.d.ts +61 -0
- package/dist/web/input/touch.js +83 -0
- package/dist/web/mermaid.d.ts +69 -0
- package/dist/web/mermaid.js +223 -0
- package/dist/web/paths.d.ts +16 -0
- package/dist/web/paths.js +27 -0
- package/dist/web/perf/heap.d.ts +42 -0
- package/dist/web/perf/heap.js +73 -0
- package/dist/web/perf/index.d.ts +14 -0
- package/dist/web/perf/index.js +14 -0
- package/dist/web/perf/layers.d.ts +98 -0
- package/dist/web/perf/layers.js +165 -0
- package/dist/web/perf/probe.d.ts +26 -0
- package/dist/web/perf/probe.js +123 -0
- package/dist/web/perf/profile.d.ts +53 -0
- package/dist/web/perf/profile.js +97 -0
- package/dist/web/perf/trace.d.ts +152 -0
- package/dist/web/perf/trace.js +429 -0
- package/dist/web/perf/view.d.ts +6 -0
- package/dist/web/perf/view.js +86 -0
- package/dist/web/perf/vitals.d.ts +141 -0
- package/dist/web/perf/vitals.js +175 -0
- package/dist/web/reader.d.ts +131 -0
- package/dist/web/reader.js +340 -0
- package/dist/web/screenshot.d.ts +50 -0
- package/dist/web/screenshot.js +108 -0
- package/dist/web/search.d.ts +49 -0
- package/dist/web/search.js +137 -0
- package/dist/web/session/artifacts.d.ts +32 -0
- package/dist/web/session/artifacts.js +47 -0
- package/dist/web/session/emulation.d.ts +118 -0
- package/dist/web/session/emulation.js +307 -0
- package/dist/web/session/recording.d.ts +51 -0
- package/dist/web/session/recording.js +64 -0
- package/dist/web/session/settling.d.ts +42 -0
- package/dist/web/session/settling.js +104 -0
- package/dist/web/session/shaping.d.ts +48 -0
- package/dist/web/session/shaping.js +113 -0
- package/dist/web/session/sourcemaps.d.ts +64 -0
- package/dist/web/session/sourcemaps.js +135 -0
- package/dist/web/session/telemetry.d.ts +219 -0
- package/dist/web/session/telemetry.js +486 -0
- package/dist/web/session/wires.d.ts +22 -0
- package/dist/web/session/wires.js +11 -0
- package/dist/web/session.d.ts +1153 -0
- package/dist/web/session.js +3400 -0
- package/dist/web/snapshot/deep.d.ts +36 -0
- package/dist/web/snapshot/deep.js +91 -0
- package/dist/web/snapshot/flatten.d.ts +101 -0
- package/dist/web/snapshot/flatten.js +131 -0
- package/dist/web/snapshot/index.d.ts +8 -0
- package/dist/web/snapshot/index.js +10 -0
- package/dist/web/snapshot/presented.d.ts +32 -0
- package/dist/web/snapshot/presented.js +74 -0
- package/dist/web/snapshot/query.d.ts +67 -0
- package/dist/web/snapshot/query.js +136 -0
- package/dist/web/sourcemap/index.d.ts +9 -0
- package/dist/web/sourcemap/index.js +9 -0
- package/dist/web/sourcemap/mappings.d.ts +111 -0
- package/dist/web/sourcemap/mappings.js +218 -0
- package/dist/web/styles/capture.d.ts +49 -0
- package/dist/web/styles/capture.js +85 -0
- package/dist/web/styles/cascade.d.ts +107 -0
- package/dist/web/styles/cascade.js +275 -0
- package/dist/web/styles/curation.d.ts +45 -0
- package/dist/web/styles/curation.js +282 -0
- package/dist/web/styles/index.d.ts +10 -0
- package/dist/web/styles/index.js +10 -0
- package/dist/web/target/index.d.ts +7 -0
- package/dist/web/target/index.js +7 -0
- package/dist/web/target/refusals.d.ts +59 -0
- package/dist/web/target/refusals.js +305 -0
- package/dist/web/target/target.d.ts +59 -0
- package/dist/web/target/target.js +94 -0
- package/dist/web/telemetry/buffer.d.ts +35 -0
- package/dist/web/telemetry/buffer.js +72 -0
- package/dist/web/telemetry/console.d.ts +127 -0
- package/dist/web/telemetry/console.js +217 -0
- package/dist/web/telemetry/dialogs.d.ts +41 -0
- package/dist/web/telemetry/dialogs.js +38 -0
- package/dist/web/telemetry/downloads.d.ts +42 -0
- package/dist/web/telemetry/downloads.js +65 -0
- package/dist/web/telemetry/failure.d.ts +31 -0
- package/dist/web/telemetry/failure.js +72 -0
- package/dist/web/telemetry/har.d.ts +97 -0
- package/dist/web/telemetry/har.js +227 -0
- package/dist/web/telemetry/index.d.ts +18 -0
- package/dist/web/telemetry/index.js +18 -0
- package/dist/web/telemetry/lifecycle.d.ts +69 -0
- package/dist/web/telemetry/lifecycle.js +120 -0
- package/dist/web/telemetry/network.d.ts +152 -0
- package/dist/web/telemetry/network.js +130 -0
- package/dist/web/telemetry/requests.d.ts +31 -0
- package/dist/web/telemetry/requests.js +119 -0
- package/dist/web/telemetry/sockets.d.ts +56 -0
- package/dist/web/telemetry/sockets.js +101 -0
- package/dist/web/telemetry/view.d.ts +16 -0
- package/dist/web/telemetry/view.js +125 -0
- package/dist/web/wait/conditions.d.ts +87 -0
- package/dist/web/wait/conditions.js +100 -0
- package/dist/web/wait/index.d.ts +6 -0
- package/dist/web/wait/index.js +6 -0
- package/dist/web/wait/settle.d.ts +54 -0
- package/dist/web/wait/settle.js +84 -0
- package/dist/work/ask.d.ts +45 -0
- package/dist/work/ask.js +85 -0
- package/dist/work/author.d.ts +61 -0
- package/dist/work/author.js +144 -0
- package/dist/work/broker.d.ts +151 -0
- package/dist/work/broker.js +165 -0
- package/dist/work/events.d.ts +98 -0
- package/dist/work/events.js +57 -0
- package/dist/work/history.d.ts +69 -0
- package/dist/work/history.js +174 -0
- package/dist/work/index.d.ts +49 -0
- package/dist/work/index.js +33 -0
- package/dist/work/inplay.d.ts +43 -0
- package/dist/work/inplay.js +42 -0
- package/dist/work/memory.d.ts +84 -0
- package/dist/work/memory.js +203 -0
- package/dist/work/objection.d.ts +92 -0
- package/dist/work/objection.js +72 -0
- package/dist/work/provider.d.ts +79 -0
- package/dist/work/provider.js +45 -0
- package/dist/work/providers/git.d.ts +29 -0
- package/dist/work/providers/git.js +87 -0
- package/dist/work/publish.d.ts +53 -0
- package/dist/work/publish.js +139 -0
- package/dist/work/rebase.d.ts +78 -0
- package/dist/work/rebase.js +261 -0
- package/dist/work/reclaim.d.ts +56 -0
- package/dist/work/reclaim.js +52 -0
- package/dist/work/register.d.ts +29 -0
- package/dist/work/register.js +41 -0
- package/dist/work/stack.d.ts +126 -0
- package/dist/work/stack.js +243 -0
- package/dist/work/stacks.d.ts +156 -0
- package/dist/work/stacks.js +524 -0
- package/dist/work/survey.d.ts +52 -0
- package/dist/work/survey.js +58 -0
- package/dist/work/tidy.d.ts +147 -0
- package/dist/work/tidy.js +136 -0
- package/dist/work/tree.d.ts +120 -0
- package/dist/work/tree.js +69 -0
- package/dist/work/unattended.d.ts +40 -0
- package/dist/work/unattended.js +57 -0
- package/package.json +145 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keeping a page outline inside a response.
|
|
3
|
+
*
|
|
4
|
+
* The outline is the most-returned payload in the whole family:
|
|
5
|
+
* every read of a page answers with one, and so does every
|
|
6
|
+
* navigation and every action, because the page after the fact is
|
|
7
|
+
* how a caller knows what their click did. Lists have been
|
|
8
|
+
* budgeted since the beginning. The outline was not, and a page
|
|
9
|
+
* whose outline is small is only the common case, not the rule:
|
|
10
|
+
* one source file of eighteen thousand lines, each line a
|
|
11
|
+
* listitem with a button and a text node, renders two and a half
|
|
12
|
+
* megabytes of perfectly good outline. A wheel scroll returned
|
|
13
|
+
* all of it.
|
|
14
|
+
*
|
|
15
|
+
* So the same rule as everywhere else. The limit is a
|
|
16
|
+
* presentation default rather than a ceiling, whole lines survive
|
|
17
|
+
* rather than bytes, and anything cut says so and says how to go
|
|
18
|
+
* and get it. The page is not the answer's size: narrowing the
|
|
19
|
+
* view is always available, and it is cheaper than reading the
|
|
20
|
+
* whole thing and discarding it.
|
|
21
|
+
*/
|
|
22
|
+
import { withinLineBudget, } from "@jitsusama/agentic-harness.core/result";
|
|
23
|
+
/**
|
|
24
|
+
* What an explicit read of a page spends on the outline.
|
|
25
|
+
*
|
|
26
|
+
* Generous, because somebody who asked to see the page wants the
|
|
27
|
+
* page: this fits a normal application view whole and only bites
|
|
28
|
+
* on the pathological ones.
|
|
29
|
+
*/
|
|
30
|
+
export const OUTLINE_BUDGET_BYTES = 16_384;
|
|
31
|
+
/**
|
|
32
|
+
* What the page view after an action spends.
|
|
33
|
+
*
|
|
34
|
+
* Tighter, because this outline was not asked for. It is
|
|
35
|
+
* confirmation of what just happened, and the caller who wants
|
|
36
|
+
* the page in full can read it in full.
|
|
37
|
+
*/
|
|
38
|
+
export const ACTION_VIEW_BUDGET_BYTES = 4_096;
|
|
39
|
+
/**
|
|
40
|
+
* The most an outline will spend, however large a budget is asked
|
|
41
|
+
* for.
|
|
42
|
+
*
|
|
43
|
+
* Every other limit here is a presentation default that a caller
|
|
44
|
+
* can raise, because nothing should cap what this package can
|
|
45
|
+
* find out. A budget is different: it is not a limit on the
|
|
46
|
+
* finding, it is a limit on what gets pasted into a context
|
|
47
|
+
* window, and the whole point of storing the remainder is that
|
|
48
|
+
* raising it is never the way to see more. Left open, one call
|
|
49
|
+
* asking for a hundred megabytes undoes the entire mechanism, and
|
|
50
|
+
* the model choosing the number is the one party with no idea
|
|
51
|
+
* what it costs. Four times the generous default, which no real
|
|
52
|
+
* page reaches.
|
|
53
|
+
*/
|
|
54
|
+
export const MAX_OUTLINE_BUDGET_BYTES = OUTLINE_BUDGET_BYTES * 4;
|
|
55
|
+
/**
|
|
56
|
+
* The budget to actually spend, given what was asked for.
|
|
57
|
+
*
|
|
58
|
+
* Refuses nothing: a caller who asks for more than the ceiling
|
|
59
|
+
* gets the ceiling, and the citation then tells them the rest is
|
|
60
|
+
* queryable, which is what they wanted in the first place.
|
|
61
|
+
*/
|
|
62
|
+
export function outlineBudget(asked) {
|
|
63
|
+
if (asked === undefined)
|
|
64
|
+
return OUTLINE_BUDGET_BYTES;
|
|
65
|
+
return Math.max(1, Math.min(asked, MAX_OUTLINE_BUDGET_BYTES));
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* As much of an outline as the budget affords, and never none.
|
|
69
|
+
*
|
|
70
|
+
* The cutting is the general rule from agentic-harness.core's result
|
|
71
|
+
* module; what belongs to the page is the advice about what to do
|
|
72
|
+
* next, since narrowing a page read has its own vocabulary.
|
|
73
|
+
*/
|
|
74
|
+
export function withinOutlineBudget(rendered, budget) {
|
|
75
|
+
const view = withinLineBudget(rendered, budget);
|
|
76
|
+
return {
|
|
77
|
+
...view,
|
|
78
|
+
...(view.cut > 0
|
|
79
|
+
? { elided: outlineElision(view.cut, view.total, budget) }
|
|
80
|
+
: {}),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Say what the budget cut, and how the caller reads it anyway.
|
|
85
|
+
*
|
|
86
|
+
* Every escape named here is one this tool family actually
|
|
87
|
+
* offers, because a suggestion that does not work is worse than
|
|
88
|
+
* no suggestion: it costs a call to find out.
|
|
89
|
+
*/
|
|
90
|
+
function outlineElision(cut, total, budget) {
|
|
91
|
+
return (`Cut ${cut.toLocaleString()} of ${total.toLocaleString()} outline ` +
|
|
92
|
+
`lines to fit the ${budget.toLocaleString()} byte budget. The page ` +
|
|
93
|
+
"is whole; this view is not. Narrow it rather than enlarging it: " +
|
|
94
|
+
"'only' reduces to landmarks, headings or interactive elements, " +
|
|
95
|
+
"'depth' keeps the top levels, 'within' reads one branch. Or raise " +
|
|
96
|
+
"'budget' to spend more of the response on it.");
|
|
97
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What holds focus at this moment.
|
|
3
|
+
*
|
|
4
|
+
* Distinct from the keyboard walk, which presses Tab around the whole
|
|
5
|
+
* page and judges the journey. This answers the question asked
|
|
6
|
+
* between actions: after that click, that key, that navigation, where
|
|
7
|
+
* did focus end up? It moves nothing.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Ask the page what holds focus, without moving it.
|
|
11
|
+
*
|
|
12
|
+
* Shipped as a source string because it declares helpers. The
|
|
13
|
+
* accessible name is read the cheap way, from the attributes and
|
|
14
|
+
* text that produce one, rather than from the accessibility tree:
|
|
15
|
+
* this has to answer between actions without a tree walk, and the
|
|
16
|
+
* name is only there to identify what is already known to be
|
|
17
|
+
* focused.
|
|
18
|
+
*/
|
|
19
|
+
export declare const FOCUS_PROBE = "(() => {\n const active = () => {\n // Focus inside a shadow root reads as the host from outside, so\n // the chain is followed down to the element that really has it.\n let el = document.activeElement;\n let shadowed = false;\n while (el && el.shadowRoot && el.shadowRoot.activeElement) {\n el = el.shadowRoot.activeElement;\n shadowed = true;\n }\n return { el: el, shadowed: shadowed };\n };\n\n const found = active();\n const el = found.el;\n if (!el) return undefined;\n\n const tag = el.tagName ? el.tagName.toLowerCase() : \"unknown\";\n const onBody = el === document.body || tag === \"html\";\n const labelled = () => {\n const aria = el.getAttribute && el.getAttribute(\"aria-label\");\n if (aria) return aria.trim();\n const by = el.getAttribute && el.getAttribute(\"aria-labelledby\");\n if (by) {\n const names = by.split(/\\s+/).map((id) => {\n const target = document.getElementById(id);\n return target ? (target.textContent || \"\").trim() : \"\";\n });\n const joined = names.filter(Boolean).join(\" \");\n if (joined) return joined;\n }\n if (el.labels && el.labels.length > 0) {\n return (el.labels[0].textContent || \"\").trim();\n }\n const own = (el.textContent || \"\").replace(/\\s+/g, \" \").trim();\n if (own) return own.slice(0, 80);\n const value = el.getAttribute && el.getAttribute(\"value\");\n return value ? value.trim() : \"\";\n };\n\n const box = el.getBoundingClientRect ? el.getBoundingClientRect() : undefined;\n const name = onBody ? \"\" : labelled();\n const role = el.getAttribute && el.getAttribute(\"role\");\n return {\n tag: tag,\n role: role || undefined,\n name: name || undefined,\n id: (el.id || undefined),\n onBody: onBody,\n inShadow: found.shadowed || undefined,\n rect: box && (box.width > 0 || box.height > 0)\n ? { x: box.x, y: box.y, width: box.width, height: box.height }\n : undefined,\n };\n})()";
|
|
20
|
+
/** The element focus is on, as the page reports it. */
|
|
21
|
+
export interface FocusHolder {
|
|
22
|
+
readonly tag: string;
|
|
23
|
+
readonly role?: string;
|
|
24
|
+
readonly name?: string;
|
|
25
|
+
readonly id?: string;
|
|
26
|
+
/** Focus is parked on the body, which means nothing holds it. */
|
|
27
|
+
readonly onBody: boolean;
|
|
28
|
+
readonly inShadow?: boolean;
|
|
29
|
+
readonly rect?: {
|
|
30
|
+
readonly x: number;
|
|
31
|
+
readonly y: number;
|
|
32
|
+
readonly width: number;
|
|
33
|
+
readonly height: number;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/** Say what holds focus, in the vocabulary the outline uses. */
|
|
37
|
+
export declare function renderFocus(holder: FocusHolder | undefined): string;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What holds focus at this moment.
|
|
3
|
+
*
|
|
4
|
+
* Distinct from the keyboard walk, which presses Tab around the whole
|
|
5
|
+
* page and judges the journey. This answers the question asked
|
|
6
|
+
* between actions: after that click, that key, that navigation, where
|
|
7
|
+
* did focus end up? It moves nothing.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Ask the page what holds focus, without moving it.
|
|
11
|
+
*
|
|
12
|
+
* Shipped as a source string because it declares helpers. The
|
|
13
|
+
* accessible name is read the cheap way, from the attributes and
|
|
14
|
+
* text that produce one, rather than from the accessibility tree:
|
|
15
|
+
* this has to answer between actions without a tree walk, and the
|
|
16
|
+
* name is only there to identify what is already known to be
|
|
17
|
+
* focused.
|
|
18
|
+
*/
|
|
19
|
+
export const FOCUS_PROBE = `(() => {
|
|
20
|
+
const active = () => {
|
|
21
|
+
// Focus inside a shadow root reads as the host from outside, so
|
|
22
|
+
// the chain is followed down to the element that really has it.
|
|
23
|
+
let el = document.activeElement;
|
|
24
|
+
let shadowed = false;
|
|
25
|
+
while (el && el.shadowRoot && el.shadowRoot.activeElement) {
|
|
26
|
+
el = el.shadowRoot.activeElement;
|
|
27
|
+
shadowed = true;
|
|
28
|
+
}
|
|
29
|
+
return { el: el, shadowed: shadowed };
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const found = active();
|
|
33
|
+
const el = found.el;
|
|
34
|
+
if (!el) return undefined;
|
|
35
|
+
|
|
36
|
+
const tag = el.tagName ? el.tagName.toLowerCase() : "unknown";
|
|
37
|
+
const onBody = el === document.body || tag === "html";
|
|
38
|
+
const labelled = () => {
|
|
39
|
+
const aria = el.getAttribute && el.getAttribute("aria-label");
|
|
40
|
+
if (aria) return aria.trim();
|
|
41
|
+
const by = el.getAttribute && el.getAttribute("aria-labelledby");
|
|
42
|
+
if (by) {
|
|
43
|
+
const names = by.split(/\\s+/).map((id) => {
|
|
44
|
+
const target = document.getElementById(id);
|
|
45
|
+
return target ? (target.textContent || "").trim() : "";
|
|
46
|
+
});
|
|
47
|
+
const joined = names.filter(Boolean).join(" ");
|
|
48
|
+
if (joined) return joined;
|
|
49
|
+
}
|
|
50
|
+
if (el.labels && el.labels.length > 0) {
|
|
51
|
+
return (el.labels[0].textContent || "").trim();
|
|
52
|
+
}
|
|
53
|
+
const own = (el.textContent || "").replace(/\\s+/g, " ").trim();
|
|
54
|
+
if (own) return own.slice(0, 80);
|
|
55
|
+
const value = el.getAttribute && el.getAttribute("value");
|
|
56
|
+
return value ? value.trim() : "";
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
const box = el.getBoundingClientRect ? el.getBoundingClientRect() : undefined;
|
|
60
|
+
const name = onBody ? "" : labelled();
|
|
61
|
+
const role = el.getAttribute && el.getAttribute("role");
|
|
62
|
+
return {
|
|
63
|
+
tag: tag,
|
|
64
|
+
role: role || undefined,
|
|
65
|
+
name: name || undefined,
|
|
66
|
+
id: (el.id || undefined),
|
|
67
|
+
onBody: onBody,
|
|
68
|
+
inShadow: found.shadowed || undefined,
|
|
69
|
+
rect: box && (box.width > 0 || box.height > 0)
|
|
70
|
+
? { x: box.x, y: box.y, width: box.width, height: box.height }
|
|
71
|
+
: undefined,
|
|
72
|
+
};
|
|
73
|
+
})()`;
|
|
74
|
+
/** Say what holds focus, in the vocabulary the outline uses. */
|
|
75
|
+
export function renderFocus(holder) {
|
|
76
|
+
if (!holder) {
|
|
77
|
+
return ("WARN what holds focus could not be read\n\n" +
|
|
78
|
+
"The page did not answer, which happens when nothing is " +
|
|
79
|
+
"loaded yet. Navigate, then ask again.");
|
|
80
|
+
}
|
|
81
|
+
if (holder.onBody) {
|
|
82
|
+
// Naming the body as the holder would read as a real control and
|
|
83
|
+
// hide the useful finding, which is that a key press went
|
|
84
|
+
// nowhere.
|
|
85
|
+
return ("Nothing holds focus.\n\n" +
|
|
86
|
+
"Focus is parked on the document, which is where the browser " +
|
|
87
|
+
"leaves it when no control has been given it. A tab from here " +
|
|
88
|
+
"starts at the top of the page.");
|
|
89
|
+
}
|
|
90
|
+
// The role and name pair is how every other surface here addresses
|
|
91
|
+
// an element, so the answer can be pasted straight into a target.
|
|
92
|
+
const called = holder.role ?? holder.tag;
|
|
93
|
+
const named = holder.name ? ` "${holder.name}"` : "";
|
|
94
|
+
const notes = [
|
|
95
|
+
holder.role && holder.role !== holder.tag ? `<${holder.tag}>` : "",
|
|
96
|
+
holder.id ? `#${holder.id}` : "",
|
|
97
|
+
holder.inShadow ? "inside a shadow root" : "",
|
|
98
|
+
holder.rect ? `at ${place(holder.rect)}` : "",
|
|
99
|
+
].filter(Boolean);
|
|
100
|
+
const tail = notes.length > 0 ? `\n\n${notes.join(", ")}` : "";
|
|
101
|
+
return `${called}${named} holds focus.${tail}`;
|
|
102
|
+
}
|
|
103
|
+
function place(rect) {
|
|
104
|
+
return (`${Math.round(rect.x)},${Math.round(rect.y)} ` +
|
|
105
|
+
`${Math.round(rect.width)}x${Math.round(rect.height)}`);
|
|
106
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The accessibility domain: the page as assistive technology
|
|
3
|
+
* perceives it.
|
|
4
|
+
*
|
|
5
|
+
* Analysis here is capture-agnostic. Everything takes plain
|
|
6
|
+
* serializable data, so a tree captured by CDP, by Playwright
|
|
7
|
+
* or read back from a fixture is analyzed by the same code.
|
|
8
|
+
*/
|
|
9
|
+
export { ANNOUNCE_BINDING, ANNOUNCEMENT_OBSERVER, type Announcement, type AnnouncementCandidate, CANDIDATE_REGISTRY, renderAnnouncements, } from "./announcements.js";
|
|
10
|
+
export { ACTION_VIEW_BUDGET_BYTES, type BudgetedOutline, MAX_OUTLINE_BUDGET_BYTES, OUTLINE_BUDGET_BYTES, outlineBudget, withinOutlineBudget, } from "./budget.js";
|
|
11
|
+
export { FOCUS_PROBE, type FocusHolder, renderFocus, } from "./focus.js";
|
|
12
|
+
export { isWeakName, type NameSource, nameSource } from "./naming.js";
|
|
13
|
+
export { renderAxOutline } from "./outline.js";
|
|
14
|
+
export { renderReading } from "./reading.js";
|
|
15
|
+
export { type Skeleton, scopeTree, subtreeAt, type TreeScope, } from "./scope.js";
|
|
16
|
+
export { describeStates, type StateOptions } from "./states.js";
|
|
17
|
+
export { type AxNode, type AxProperties, type FrameAxTree, isMeaningful, normalizeAxTree, type RawAxNameSource, type RawAxNode, type RawAxProperty, spliceFrames, } from "./tree.js";
|
|
18
|
+
export { analyseWalk, type FocusStyle, type Indicator, indicatorOf, MAX_LISTED_FINDINGS, renderWalk, type Trap, type Unreachable, type WalkCandidate, type WalkCapture, type WalkFindings, type WalkStop, } from "./walk.js";
|
|
19
|
+
export { WALK_COLLECT, WALK_READ, WALK_REMEMBER, WALK_RESTORE, } from "./walkprobe.js";
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The accessibility domain: the page as assistive technology
|
|
3
|
+
* perceives it.
|
|
4
|
+
*
|
|
5
|
+
* Analysis here is capture-agnostic. Everything takes plain
|
|
6
|
+
* serializable data, so a tree captured by CDP, by Playwright
|
|
7
|
+
* or read back from a fixture is analyzed by the same code.
|
|
8
|
+
*/
|
|
9
|
+
export { ANNOUNCE_BINDING, ANNOUNCEMENT_OBSERVER, CANDIDATE_REGISTRY, renderAnnouncements, } from "./announcements.js";
|
|
10
|
+
export { ACTION_VIEW_BUDGET_BYTES, MAX_OUTLINE_BUDGET_BYTES, OUTLINE_BUDGET_BYTES, outlineBudget, withinOutlineBudget, } from "./budget.js";
|
|
11
|
+
export { FOCUS_PROBE, renderFocus, } from "./focus.js";
|
|
12
|
+
export { isWeakName, nameSource } from "./naming.js";
|
|
13
|
+
export { renderAxOutline } from "./outline.js";
|
|
14
|
+
export { renderReading } from "./reading.js";
|
|
15
|
+
export { scopeTree, subtreeAt, } from "./scope.js";
|
|
16
|
+
// Exported because a stored page has to carry the same states the
|
|
17
|
+
// rendered outline shows. Two vocabularies for one set of facts
|
|
18
|
+
// would make a payload that disagrees with the view it came from.
|
|
19
|
+
export { describeStates } from "./states.js";
|
|
20
|
+
export { isMeaningful, normalizeAxTree, spliceFrames, } from "./tree.js";
|
|
21
|
+
export { analyseWalk, indicatorOf, MAX_LISTED_FINDINGS, renderWalk, } from "./walk.js";
|
|
22
|
+
// The page-side halves of the keyboard walk, in the order they
|
|
23
|
+
// run: collect what can hold focus, remember where the caller
|
|
24
|
+
// left things, read each stop, then put the page back.
|
|
25
|
+
export { WALK_COLLECT, WALK_READ, WALK_REMEMBER, WALK_RESTORE, } from "./walkprobe.js";
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where an accessible name came from.
|
|
3
|
+
*
|
|
4
|
+
* Two controls can read identically in an outline and be very
|
|
5
|
+
* different to use. A field named by its label is announced
|
|
6
|
+
* whenever it takes focus; one named only by its placeholder
|
|
7
|
+
* loses its name the moment someone types. Knowing the
|
|
8
|
+
* mechanism is what lets a review tell those apart.
|
|
9
|
+
*/
|
|
10
|
+
import type { RawAxNode } from "./tree.js";
|
|
11
|
+
/** The mechanism that produced an element's accessible name. */
|
|
12
|
+
export type NameSource = "labelledby" | "label" | "nativeLabel" | "content" | "title" | "placeholder" | "alt" | "value" | "unnamed";
|
|
13
|
+
/**
|
|
14
|
+
* Which mechanism produced this node's name.
|
|
15
|
+
*
|
|
16
|
+
* Chrome reports every mechanism it tried, in priority order,
|
|
17
|
+
* marking the ones it passed over. The one that named the
|
|
18
|
+
* element is the one that yielded text and was neither
|
|
19
|
+
* superseded nor pointed at something absent.
|
|
20
|
+
*/
|
|
21
|
+
export declare function nameSource(node: RawAxNode): NameSource;
|
|
22
|
+
/** Whether a name is one that disappears when it is needed most. */
|
|
23
|
+
export declare function isWeakName(source: NameSource): boolean;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where an accessible name came from.
|
|
3
|
+
*
|
|
4
|
+
* Two controls can read identically in an outline and be very
|
|
5
|
+
* different to use. A field named by its label is announced
|
|
6
|
+
* whenever it takes focus; one named only by its placeholder
|
|
7
|
+
* loses its name the moment someone types. Knowing the
|
|
8
|
+
* mechanism is what lets a review tell those apart.
|
|
9
|
+
*/
|
|
10
|
+
/** Names that vanish exactly when a user needs them. */
|
|
11
|
+
const WEAK_SOURCES = new Set(["title", "placeholder"]);
|
|
12
|
+
/**
|
|
13
|
+
* Which mechanism produced this node's name.
|
|
14
|
+
*
|
|
15
|
+
* Chrome reports every mechanism it tried, in priority order,
|
|
16
|
+
* marking the ones it passed over. The one that named the
|
|
17
|
+
* element is the one that yielded text and was neither
|
|
18
|
+
* superseded nor pointed at something absent.
|
|
19
|
+
*/
|
|
20
|
+
export function nameSource(node) {
|
|
21
|
+
const winner = (node.name?.sources ?? []).find(produced);
|
|
22
|
+
if (!winner)
|
|
23
|
+
return "unnamed";
|
|
24
|
+
if (winner.nativeSource)
|
|
25
|
+
return "nativeLabel";
|
|
26
|
+
if (winner.type === "contents")
|
|
27
|
+
return "content";
|
|
28
|
+
if (winner.type === "placeholder")
|
|
29
|
+
return "placeholder";
|
|
30
|
+
switch (winner.attribute) {
|
|
31
|
+
case "aria-labelledby":
|
|
32
|
+
return "labelledby";
|
|
33
|
+
case "aria-label":
|
|
34
|
+
return "label";
|
|
35
|
+
case "title":
|
|
36
|
+
return "title";
|
|
37
|
+
case "alt":
|
|
38
|
+
return "alt";
|
|
39
|
+
case "value":
|
|
40
|
+
return "value";
|
|
41
|
+
default:
|
|
42
|
+
return winner.type === "relatedElement" ? "labelledby" : "unnamed";
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/** Whether this source actually supplied the name. */
|
|
46
|
+
function produced(source) {
|
|
47
|
+
if (source.superseded || source.invalid)
|
|
48
|
+
return false;
|
|
49
|
+
const text = source.value?.value;
|
|
50
|
+
return text !== undefined && text !== "";
|
|
51
|
+
}
|
|
52
|
+
/** Whether a name is one that disappears when it is needed most. */
|
|
53
|
+
export function isWeakName(source) {
|
|
54
|
+
return WEAK_SOURCES.has(source);
|
|
55
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rendering the accessibility tree as an outline.
|
|
3
|
+
*
|
|
4
|
+
* The outline is the model's default view of a page: a nested
|
|
5
|
+
* role-and-name listing that reads like a description, with the
|
|
6
|
+
* states that change what a caller can do shown inline. It is
|
|
7
|
+
* the surface act refusals, audits and page reads all quote.
|
|
8
|
+
*/
|
|
9
|
+
import { type AxNode } from "./tree.js";
|
|
10
|
+
/**
|
|
11
|
+
* Render the tree as a nested role-and-name outline, with the
|
|
12
|
+
* states that change what a caller can do shown inline. A node
|
|
13
|
+
* that is not meaningful (a noise role with no name) is folded
|
|
14
|
+
* away: its children rise to its own indentation, so wrappers
|
|
15
|
+
* never add depth while their named descendants survive.
|
|
16
|
+
*
|
|
17
|
+
* A node that has no name is written as its role alone. Structure
|
|
18
|
+
* is most of a real page, a third of the nodes in a long article
|
|
19
|
+
* carry no name at all, and empty quotes against every one of
|
|
20
|
+
* them cost more than a whole action-view budget while telling a
|
|
21
|
+
* reader nothing they did not already have from the role.
|
|
22
|
+
*/
|
|
23
|
+
export declare function renderAxOutline(root: AxNode): string;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rendering the accessibility tree as an outline.
|
|
3
|
+
*
|
|
4
|
+
* The outline is the model's default view of a page: a nested
|
|
5
|
+
* role-and-name listing that reads like a description, with the
|
|
6
|
+
* states that change what a caller can do shown inline. It is
|
|
7
|
+
* the surface act refusals, audits and page reads all quote.
|
|
8
|
+
*/
|
|
9
|
+
import { describeStates } from "./states.js";
|
|
10
|
+
import { isMeaningful } from "./tree.js";
|
|
11
|
+
/**
|
|
12
|
+
* Render the tree as a nested role-and-name outline, with the
|
|
13
|
+
* states that change what a caller can do shown inline. A node
|
|
14
|
+
* that is not meaningful (a noise role with no name) is folded
|
|
15
|
+
* away: its children rise to its own indentation, so wrappers
|
|
16
|
+
* never add depth while their named descendants survive.
|
|
17
|
+
*
|
|
18
|
+
* A node that has no name is written as its role alone. Structure
|
|
19
|
+
* is most of a real page, a third of the nodes in a long article
|
|
20
|
+
* carry no name at all, and empty quotes against every one of
|
|
21
|
+
* them cost more than a whole action-view budget while telling a
|
|
22
|
+
* reader nothing they did not already have from the role.
|
|
23
|
+
*/
|
|
24
|
+
export function renderAxOutline(root) {
|
|
25
|
+
const lines = [];
|
|
26
|
+
const walk = (node, depth) => {
|
|
27
|
+
const shown = isMeaningful(node);
|
|
28
|
+
if (shown) {
|
|
29
|
+
const states = describeStates(node);
|
|
30
|
+
const suffix = states.length ? ` ${states.join(" ")}` : "";
|
|
31
|
+
const named = node.name ? ` "${node.name}"` : "";
|
|
32
|
+
lines.push(`${" ".repeat(depth)}${node.role}${named}${suffix}`);
|
|
33
|
+
}
|
|
34
|
+
const childDepth = shown ? depth + 1 : depth;
|
|
35
|
+
for (const child of node.children)
|
|
36
|
+
walk(child, childDepth);
|
|
37
|
+
};
|
|
38
|
+
// The root itself is the page container; render its children.
|
|
39
|
+
for (const child of root.children)
|
|
40
|
+
walk(child, 0);
|
|
41
|
+
return lines.join("\n");
|
|
42
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The page as a screen reader narrates it.
|
|
3
|
+
*
|
|
4
|
+
* The outline shows how a page is built; a reading shows what
|
|
5
|
+
* it is like to use without sight. Landmarks are announced on
|
|
6
|
+
* entry and exit, headings carry their level, controls carry
|
|
7
|
+
* the states that change how they behave, and text is read as
|
|
8
|
+
* prose rather than as elements.
|
|
9
|
+
*/
|
|
10
|
+
import type { AxNode } from "./tree.js";
|
|
11
|
+
/** Narrate a tree in reading order. */
|
|
12
|
+
export declare function renderReading(root: AxNode): string;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The page as a screen reader narrates it.
|
|
3
|
+
*
|
|
4
|
+
* The outline shows how a page is built; a reading shows what
|
|
5
|
+
* it is like to use without sight. Landmarks are announced on
|
|
6
|
+
* entry and exit, headings carry their level, controls carry
|
|
7
|
+
* the states that change how they behave, and text is read as
|
|
8
|
+
* prose rather than as elements.
|
|
9
|
+
*/
|
|
10
|
+
import { describeStates } from "./states.js";
|
|
11
|
+
/**
|
|
12
|
+
* Roles a reader passes through without a word. They exist to
|
|
13
|
+
* group or to carry text, and announcing them would put
|
|
14
|
+
* scaffolding between the listener and the page.
|
|
15
|
+
*/
|
|
16
|
+
const SILENT_ROLES = new Set([
|
|
17
|
+
"generic",
|
|
18
|
+
"none",
|
|
19
|
+
"presentation",
|
|
20
|
+
"document",
|
|
21
|
+
"RootWebArea",
|
|
22
|
+
"paragraph",
|
|
23
|
+
"LabelText",
|
|
24
|
+
"listitem",
|
|
25
|
+
"MenuListPopup",
|
|
26
|
+
]);
|
|
27
|
+
/** Roles that carry text and nothing else. */
|
|
28
|
+
const TEXT_ROLES = new Set(["StaticText", "InlineTextBox", "text"]);
|
|
29
|
+
/** Landmarks a reader announces entering and leaving. */
|
|
30
|
+
const LANDMARK_ROLES = new Set([
|
|
31
|
+
"banner",
|
|
32
|
+
"complementary",
|
|
33
|
+
"contentinfo",
|
|
34
|
+
"form",
|
|
35
|
+
"main",
|
|
36
|
+
"navigation",
|
|
37
|
+
"region",
|
|
38
|
+
"search",
|
|
39
|
+
]);
|
|
40
|
+
/** Whether entering this node is worth announcing. */
|
|
41
|
+
function isRegion(node) {
|
|
42
|
+
if (LANDMARK_ROLES.has(node.role))
|
|
43
|
+
return true;
|
|
44
|
+
if (node.role === "list")
|
|
45
|
+
return true;
|
|
46
|
+
const live = node.properties.live;
|
|
47
|
+
return typeof live === "string" && live !== "" && live !== "off";
|
|
48
|
+
}
|
|
49
|
+
/** Narrate a tree in reading order. */
|
|
50
|
+
export function renderReading(root) {
|
|
51
|
+
const lines = [];
|
|
52
|
+
const read = (node, depth) => {
|
|
53
|
+
const pad = " ".repeat(depth);
|
|
54
|
+
if (TEXT_ROLES.has(node.role)) {
|
|
55
|
+
if (node.name.trim())
|
|
56
|
+
lines.push(`${pad}${node.name}`);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (SILENT_ROLES.has(node.role) && !node.name.trim()) {
|
|
60
|
+
for (const child of node.children)
|
|
61
|
+
read(child, depth);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (isRegion(node)) {
|
|
65
|
+
lines.push(`${pad}${announce(node)}`);
|
|
66
|
+
for (const child of node.children)
|
|
67
|
+
read(child, depth + 1);
|
|
68
|
+
lines.push(`${pad}end of ${node.role}${node.name ? `, ${node.name}` : ""}`);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
lines.push(`${pad}${announce(node)}`);
|
|
72
|
+
for (const child of node.children)
|
|
73
|
+
read(child, depth);
|
|
74
|
+
};
|
|
75
|
+
for (const child of root.children)
|
|
76
|
+
read(child, 0);
|
|
77
|
+
return lines.join("\n");
|
|
78
|
+
}
|
|
79
|
+
/** What a reader says on reaching this element. */
|
|
80
|
+
function announce(node) {
|
|
81
|
+
const parts = [roleLabel(node)];
|
|
82
|
+
if (node.name.trim())
|
|
83
|
+
parts.push(node.name);
|
|
84
|
+
if (node.role === "list")
|
|
85
|
+
parts.push(itemCount(node));
|
|
86
|
+
parts.push(...describeStates(node, { skipLevel: true }));
|
|
87
|
+
return parts.join(", ");
|
|
88
|
+
}
|
|
89
|
+
/** How many items a list holds, said the way it is heard. */
|
|
90
|
+
function itemCount(list) {
|
|
91
|
+
const items = list.children.filter((child) => child.role === "listitem").length;
|
|
92
|
+
return items === 1 ? "1 item" : `${items} items`;
|
|
93
|
+
}
|
|
94
|
+
/** The role as spoken, with a heading's level folded in. */
|
|
95
|
+
function roleLabel(node) {
|
|
96
|
+
const level = node.properties.level;
|
|
97
|
+
if (node.role === "heading" && level !== undefined) {
|
|
98
|
+
return `heading level ${level}`;
|
|
99
|
+
}
|
|
100
|
+
return node.role;
|
|
101
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scoping the accessibility tree before it is read.
|
|
3
|
+
*
|
|
4
|
+
* A whole tree is the wrong answer to most questions. A caller
|
|
5
|
+
* asking "how is this page laid out" wants landmarks, not every
|
|
6
|
+
* span inside them; a caller asking "what can I press" wants
|
|
7
|
+
* controls. Scoping narrows the tree first, so the view that
|
|
8
|
+
* gets rendered is the view that was asked for.
|
|
9
|
+
*/
|
|
10
|
+
import { type AxNode } from "./tree.js";
|
|
11
|
+
/** A reduced view of the page, keeping one kind of thing. */
|
|
12
|
+
export type Skeleton = "landmarks" | "headings" | "interactive";
|
|
13
|
+
/** How much of the tree to keep. */
|
|
14
|
+
export interface TreeScope {
|
|
15
|
+
/** Levels of the outline to keep, counted as the outline reads. */
|
|
16
|
+
readonly depth?: number;
|
|
17
|
+
/** Keep only one kind of element, with the rest folded away. */
|
|
18
|
+
readonly only?: Skeleton;
|
|
19
|
+
}
|
|
20
|
+
/** Narrow a tree to the view the caller asked for. */
|
|
21
|
+
export declare function scopeTree(root: AxNode, scope: TreeScope): AxNode;
|
|
22
|
+
/** The branch rooted at the element carrying this backend id. */
|
|
23
|
+
export declare function subtreeAt(root: AxNode, backendDomId: number): AxNode | undefined;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scoping the accessibility tree before it is read.
|
|
3
|
+
*
|
|
4
|
+
* A whole tree is the wrong answer to most questions. A caller
|
|
5
|
+
* asking "how is this page laid out" wants landmarks, not every
|
|
6
|
+
* span inside them; a caller asking "what can I press" wants
|
|
7
|
+
* controls. Scoping narrows the tree first, so the view that
|
|
8
|
+
* gets rendered is the view that was asked for.
|
|
9
|
+
*/
|
|
10
|
+
import { isMeaningful } from "./tree.js";
|
|
11
|
+
/** The regions that carve a page into its major parts. */
|
|
12
|
+
const LANDMARK_ROLES = new Set([
|
|
13
|
+
"banner",
|
|
14
|
+
"complementary",
|
|
15
|
+
"contentinfo",
|
|
16
|
+
"form",
|
|
17
|
+
"main",
|
|
18
|
+
"navigation",
|
|
19
|
+
"region",
|
|
20
|
+
"search",
|
|
21
|
+
]);
|
|
22
|
+
/** The roles a caller can operate. */
|
|
23
|
+
const INTERACTIVE_ROLES = new Set([
|
|
24
|
+
"button",
|
|
25
|
+
"checkbox",
|
|
26
|
+
"combobox",
|
|
27
|
+
"link",
|
|
28
|
+
"listbox",
|
|
29
|
+
"menuitem",
|
|
30
|
+
"menuitemcheckbox",
|
|
31
|
+
"menuitemradio",
|
|
32
|
+
"option",
|
|
33
|
+
"radio",
|
|
34
|
+
"searchbox",
|
|
35
|
+
"slider",
|
|
36
|
+
"spinbutton",
|
|
37
|
+
"switch",
|
|
38
|
+
"tab",
|
|
39
|
+
"textbox",
|
|
40
|
+
"treeitem",
|
|
41
|
+
]);
|
|
42
|
+
/** Whether a node belongs to the skeleton being asked for. */
|
|
43
|
+
function keeps(node, only) {
|
|
44
|
+
if (only === "landmarks")
|
|
45
|
+
return LANDMARK_ROLES.has(node.role);
|
|
46
|
+
if (only === "headings")
|
|
47
|
+
return node.role === "heading";
|
|
48
|
+
return INTERACTIVE_ROLES.has(node.role);
|
|
49
|
+
}
|
|
50
|
+
/** Narrow a tree to the view the caller asked for. */
|
|
51
|
+
export function scopeTree(root, scope) {
|
|
52
|
+
let tree = root;
|
|
53
|
+
if (scope.only)
|
|
54
|
+
tree = keepOnly(tree, scope.only);
|
|
55
|
+
if (scope.depth !== undefined)
|
|
56
|
+
tree = cutToDepth(tree, scope.depth);
|
|
57
|
+
return tree;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Keep the nodes of one kind, folding the rest away. A kept
|
|
61
|
+
* node stays under a kept ancestor, so a navigation inside a
|
|
62
|
+
* banner still reads as nested.
|
|
63
|
+
*/
|
|
64
|
+
function keepOnly(root, only) {
|
|
65
|
+
const prune = (node) => {
|
|
66
|
+
const children = node.children.flatMap(prune);
|
|
67
|
+
if (!keeps(node, only))
|
|
68
|
+
return children;
|
|
69
|
+
return [{ ...node, children }];
|
|
70
|
+
};
|
|
71
|
+
return { ...root, children: root.children.flatMap(prune) };
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Cut the tree to a number of levels, counting the way the
|
|
75
|
+
* outline reads: a node that renders as a line costs a level,
|
|
76
|
+
* and a wrapper that folds away costs nothing.
|
|
77
|
+
*/
|
|
78
|
+
function cutToDepth(root, depth) {
|
|
79
|
+
const cut = (node, remaining) => {
|
|
80
|
+
const shown = isMeaningful(node);
|
|
81
|
+
const left = shown ? remaining - 1 : remaining;
|
|
82
|
+
if (shown && remaining <= 0)
|
|
83
|
+
return [];
|
|
84
|
+
const children = left > 0 ? node.children.flatMap((c) => cut(c, left)) : [];
|
|
85
|
+
return [{ ...node, children }];
|
|
86
|
+
};
|
|
87
|
+
return { ...root, children: root.children.flatMap((c) => cut(c, depth)) };
|
|
88
|
+
}
|
|
89
|
+
/** The branch rooted at the element carrying this backend id. */
|
|
90
|
+
export function subtreeAt(root, backendDomId) {
|
|
91
|
+
if (root.backendDomId === backendDomId)
|
|
92
|
+
return root;
|
|
93
|
+
for (const child of root.children) {
|
|
94
|
+
const found = subtreeAt(child, backendDomId);
|
|
95
|
+
if (found)
|
|
96
|
+
return found;
|
|
97
|
+
}
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|