@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,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic targeting: resolve the way the model addresses an
|
|
3
|
+
* element (role plus accessible name, disambiguated by
|
|
4
|
+
* container or a name-scoped ordinal) to the matched node's
|
|
5
|
+
* internal backend id. The id never reaches the model; the
|
|
6
|
+
* caller uses it to drive the real element, and falls back to
|
|
7
|
+
* text, selector or coordinates when the tree cannot name the
|
|
8
|
+
* element.
|
|
9
|
+
*/
|
|
10
|
+
import type { AxNode } from "../a11y/index.js";
|
|
11
|
+
/** How the model addresses an element. */
|
|
12
|
+
export interface Target {
|
|
13
|
+
readonly role: string;
|
|
14
|
+
/**
|
|
15
|
+
* The accessible name, when there is one. An icon button or a
|
|
16
|
+
* bare input has none, and the outline shows only its role, so
|
|
17
|
+
* a role on its own has to be a way of addressing it.
|
|
18
|
+
*/
|
|
19
|
+
readonly name?: string;
|
|
20
|
+
/** Restrict to descendants of a container with this name (and optional role). */
|
|
21
|
+
readonly container?: {
|
|
22
|
+
readonly role?: string;
|
|
23
|
+
readonly name: string;
|
|
24
|
+
};
|
|
25
|
+
/** 1-based position among same-named matches ("the second X"). */
|
|
26
|
+
readonly ordinal?: number;
|
|
27
|
+
}
|
|
28
|
+
/** The outcome of resolving a target. */
|
|
29
|
+
export type TargetResolution = {
|
|
30
|
+
kind: "resolved";
|
|
31
|
+
backendDomId: number;
|
|
32
|
+
} | {
|
|
33
|
+
kind: "ambiguous";
|
|
34
|
+
count: number;
|
|
35
|
+
} | {
|
|
36
|
+
kind: "notFound";
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* How this module compares a written role or name to the one
|
|
40
|
+
* in the tree: case and surrounding whitespace never decide a
|
|
41
|
+
* match. Shared with the refusal ladder so both agree on what
|
|
42
|
+
* counts as the same name.
|
|
43
|
+
*/
|
|
44
|
+
export declare function foldEquals(a: string | undefined, b: string | undefined): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Resolve a semantic target to a backend id, or report that it
|
|
47
|
+
* matched nothing or more than one node.
|
|
48
|
+
*/
|
|
49
|
+
export declare function resolveTarget(root: AxNode, target: Target): TargetResolution;
|
|
50
|
+
/**
|
|
51
|
+
* Read a target written the way the outline prints it.
|
|
52
|
+
*
|
|
53
|
+
* The role is the first word, since roles are single words and
|
|
54
|
+
* names routinely are not. Quotes around the name are allowed,
|
|
55
|
+
* because a caller copying from the outline will bring them.
|
|
56
|
+
* A bare role targets the unnamed element of that role, which
|
|
57
|
+
* is how landmarks usually appear.
|
|
58
|
+
*/
|
|
59
|
+
export declare function parseTarget(spec: string): Target | undefined;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic targeting: resolve the way the model addresses an
|
|
3
|
+
* element (role plus accessible name, disambiguated by
|
|
4
|
+
* container or a name-scoped ordinal) to the matched node's
|
|
5
|
+
* internal backend id. The id never reaches the model; the
|
|
6
|
+
* caller uses it to drive the real element, and falls back to
|
|
7
|
+
* text, selector or coordinates when the tree cannot name the
|
|
8
|
+
* element.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* How this module compares a written role or name to the one
|
|
12
|
+
* in the tree: case and surrounding whitespace never decide a
|
|
13
|
+
* match. Shared with the refusal ladder so both agree on what
|
|
14
|
+
* counts as the same name.
|
|
15
|
+
*/
|
|
16
|
+
export function foldEquals(a, b) {
|
|
17
|
+
// A missing name and an empty one are the same thing here:
|
|
18
|
+
// parseTarget already yields "" for a bare role, and a node
|
|
19
|
+
// with nothing to call it normalizes the same way. Accepting
|
|
20
|
+
// undefined keeps a caller outside TypeScript from getting a
|
|
21
|
+
// TypeError three frames down instead of an answer.
|
|
22
|
+
return (a ?? "").trim().toLowerCase() === (b ?? "").trim().toLowerCase();
|
|
23
|
+
}
|
|
24
|
+
/** Every node under (and including) root, depth-first. */
|
|
25
|
+
function flatten(node, into) {
|
|
26
|
+
into.push(node);
|
|
27
|
+
for (const child of node.children)
|
|
28
|
+
flatten(child, into);
|
|
29
|
+
}
|
|
30
|
+
/** The subtrees whose container matches, or the whole tree when none is asked for. */
|
|
31
|
+
function scopes(root, container) {
|
|
32
|
+
if (!container)
|
|
33
|
+
return [root];
|
|
34
|
+
const all = [];
|
|
35
|
+
flatten(root, all);
|
|
36
|
+
return all.filter((node) => foldEquals(node.name, container.name) &&
|
|
37
|
+
(container.role === undefined || foldEquals(node.role, container.role)));
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Resolve a semantic target to a backend id, or report that it
|
|
41
|
+
* matched nothing or more than one node.
|
|
42
|
+
*/
|
|
43
|
+
export function resolveTarget(root, target) {
|
|
44
|
+
const matches = [];
|
|
45
|
+
for (const scope of scopes(root, target.container)) {
|
|
46
|
+
const nodes = [];
|
|
47
|
+
flatten(scope, nodes);
|
|
48
|
+
for (const node of nodes) {
|
|
49
|
+
if (foldEquals(node.role, target.role) &&
|
|
50
|
+
foldEquals(node.name, target.name)) {
|
|
51
|
+
matches.push(node);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (target.ordinal !== undefined) {
|
|
56
|
+
const picked = matches[target.ordinal - 1];
|
|
57
|
+
return picked?.backendDomId !== undefined
|
|
58
|
+
? { kind: "resolved", backendDomId: picked.backendDomId }
|
|
59
|
+
: { kind: "notFound" };
|
|
60
|
+
}
|
|
61
|
+
if (matches.length === 0)
|
|
62
|
+
return { kind: "notFound" };
|
|
63
|
+
if (matches.length > 1)
|
|
64
|
+
return { kind: "ambiguous", count: matches.length };
|
|
65
|
+
const only = matches[0];
|
|
66
|
+
return only.backendDomId !== undefined
|
|
67
|
+
? { kind: "resolved", backendDomId: only.backendDomId }
|
|
68
|
+
: { kind: "notFound" };
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Read a target written the way the outline prints it.
|
|
72
|
+
*
|
|
73
|
+
* The role is the first word, since roles are single words and
|
|
74
|
+
* names routinely are not. Quotes around the name are allowed,
|
|
75
|
+
* because a caller copying from the outline will bring them.
|
|
76
|
+
* A bare role targets the unnamed element of that role, which
|
|
77
|
+
* is how landmarks usually appear.
|
|
78
|
+
*/
|
|
79
|
+
export function parseTarget(spec) {
|
|
80
|
+
const trimmed = spec.trim();
|
|
81
|
+
if (!trimmed)
|
|
82
|
+
return undefined;
|
|
83
|
+
const split = trimmed.indexOf(" ");
|
|
84
|
+
if (split < 0)
|
|
85
|
+
return { role: trimmed, name: "" };
|
|
86
|
+
return {
|
|
87
|
+
role: trimmed.slice(0, split),
|
|
88
|
+
name: unquote(trimmed.slice(split + 1).trim()),
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/** Drop a matched pair of surrounding quotes. */
|
|
92
|
+
function unquote(name) {
|
|
93
|
+
return name.replace(/^(["'])(.*)\1$/, "$2");
|
|
94
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A bounded record of things that happened.
|
|
3
|
+
*
|
|
4
|
+
* A page can log thousands of lines and issue hundreds of
|
|
5
|
+
* requests. Keeping all of it risks the process; keeping a
|
|
6
|
+
* silent subset risks the reader's conclusions. This keeps the
|
|
7
|
+
* most recent within a budget and always says how much it had
|
|
8
|
+
* to drop, so a partial record is never mistaken for a whole
|
|
9
|
+
* one.
|
|
10
|
+
*/
|
|
11
|
+
/** An item as recorded, with its place in the sequence. */
|
|
12
|
+
export interface Recorded<T> {
|
|
13
|
+
readonly seq: number;
|
|
14
|
+
readonly item: T;
|
|
15
|
+
}
|
|
16
|
+
/** How much a buffer is willing to hold. */
|
|
17
|
+
export interface BufferLimits {
|
|
18
|
+
readonly maxEntries?: number;
|
|
19
|
+
readonly maxBytes?: number;
|
|
20
|
+
}
|
|
21
|
+
/** A bounded, cursor-readable record. */
|
|
22
|
+
export interface RingBuffer<T> {
|
|
23
|
+
push(item: T): void;
|
|
24
|
+
all(): readonly Recorded<T>[];
|
|
25
|
+
since(cursor: number): readonly Recorded<T>[];
|
|
26
|
+
readonly dropped: number;
|
|
27
|
+
readonly size: number;
|
|
28
|
+
readonly cursor: number;
|
|
29
|
+
}
|
|
30
|
+
/** Entries a buffer holds before it starts evicting. */
|
|
31
|
+
export declare const DEFAULT_MAX_ENTRIES = 2000;
|
|
32
|
+
/** Bytes a buffer holds before it starts evicting. */
|
|
33
|
+
export declare const DEFAULT_MAX_BYTES: number;
|
|
34
|
+
/** Create a buffer that keeps the most recent entries. */
|
|
35
|
+
export declare function createRingBuffer<T>(limits?: BufferLimits): RingBuffer<T>;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A bounded record of things that happened.
|
|
3
|
+
*
|
|
4
|
+
* A page can log thousands of lines and issue hundreds of
|
|
5
|
+
* requests. Keeping all of it risks the process; keeping a
|
|
6
|
+
* silent subset risks the reader's conclusions. This keeps the
|
|
7
|
+
* most recent within a budget and always says how much it had
|
|
8
|
+
* to drop, so a partial record is never mistaken for a whole
|
|
9
|
+
* one.
|
|
10
|
+
*/
|
|
11
|
+
/** Entries a buffer holds before it starts evicting. */
|
|
12
|
+
export const DEFAULT_MAX_ENTRIES = 2000;
|
|
13
|
+
/** Bytes a buffer holds before it starts evicting. */
|
|
14
|
+
export const DEFAULT_MAX_BYTES = 4 * 1024 * 1024;
|
|
15
|
+
/** Create a buffer that keeps the most recent entries. */
|
|
16
|
+
export function createRingBuffer(limits = {}) {
|
|
17
|
+
const maxEntries = limits.maxEntries ?? DEFAULT_MAX_ENTRIES;
|
|
18
|
+
const maxBytes = limits.maxBytes ?? DEFAULT_MAX_BYTES;
|
|
19
|
+
const held = [];
|
|
20
|
+
let seen = 0;
|
|
21
|
+
let dropped = 0;
|
|
22
|
+
let weight = 0;
|
|
23
|
+
/**
|
|
24
|
+
* Drop the oldest until the buffer is inside its budget. The
|
|
25
|
+
* last entry always stays, even when it alone exceeds the
|
|
26
|
+
* budget: an oversized record should be expensive to read,
|
|
27
|
+
* not invisible.
|
|
28
|
+
*/
|
|
29
|
+
const evict = () => {
|
|
30
|
+
while (held.length > 1 && (held.length > maxEntries || weight > maxBytes)) {
|
|
31
|
+
const oldest = held.shift();
|
|
32
|
+
if (!oldest)
|
|
33
|
+
break;
|
|
34
|
+
weight -= oldest.weight;
|
|
35
|
+
dropped += 1;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
return {
|
|
39
|
+
push(item) {
|
|
40
|
+
seen += 1;
|
|
41
|
+
const cost = weigh(item);
|
|
42
|
+
held.push({ record: { seq: seen, item }, weight: cost });
|
|
43
|
+
weight += cost;
|
|
44
|
+
evict();
|
|
45
|
+
},
|
|
46
|
+
all: () => held.map((entry) => entry.record),
|
|
47
|
+
since: (cursor) => held.filter((entry) => entry.record.seq > cursor).map((e) => e.record),
|
|
48
|
+
get dropped() {
|
|
49
|
+
return dropped;
|
|
50
|
+
},
|
|
51
|
+
get size() {
|
|
52
|
+
return held.length;
|
|
53
|
+
},
|
|
54
|
+
get cursor() {
|
|
55
|
+
return seen;
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/** Roughly what an entry costs to keep. */
|
|
60
|
+
function weigh(item) {
|
|
61
|
+
if (typeof item === "string")
|
|
62
|
+
return item.length;
|
|
63
|
+
try {
|
|
64
|
+
return JSON.stringify(item)?.length ?? 0;
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// A value that will not serialize (a cycle, a bigint) still
|
|
68
|
+
// occupies space; charge it a nominal amount rather than
|
|
69
|
+
// letting it weigh nothing and evade the budget.
|
|
70
|
+
return 256;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the page said, and how to read it back.
|
|
3
|
+
*
|
|
4
|
+
* Chrome hands over console arguments as remote object
|
|
5
|
+
* descriptions rather than text: it never renders them, because
|
|
6
|
+
* rendering is the front end's job. Everything here is that
|
|
7
|
+
* front end, and is therefore presentation by definition. The
|
|
8
|
+
* facts, the types, the values and the previews, are the
|
|
9
|
+
* browser's; the shape they are read in is ours.
|
|
10
|
+
*/
|
|
11
|
+
/** A property inside a preview Chrome sends. */
|
|
12
|
+
export interface RemotePreviewProperty {
|
|
13
|
+
readonly name: string;
|
|
14
|
+
readonly type: string;
|
|
15
|
+
readonly subtype?: string;
|
|
16
|
+
readonly value?: string;
|
|
17
|
+
}
|
|
18
|
+
/** Chrome's summary of an object it will not send whole. */
|
|
19
|
+
export interface RemotePreview {
|
|
20
|
+
readonly type: string;
|
|
21
|
+
readonly subtype?: string;
|
|
22
|
+
readonly description?: string;
|
|
23
|
+
readonly overflow?: boolean;
|
|
24
|
+
readonly properties?: readonly RemotePreviewProperty[];
|
|
25
|
+
}
|
|
26
|
+
/** One console argument as the protocol describes it. */
|
|
27
|
+
export interface RemoteArg {
|
|
28
|
+
readonly type: string;
|
|
29
|
+
readonly subtype?: string;
|
|
30
|
+
readonly className?: string;
|
|
31
|
+
readonly description?: string;
|
|
32
|
+
readonly value?: unknown;
|
|
33
|
+
readonly objectId?: string;
|
|
34
|
+
readonly preview?: RemotePreview;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* One console argument, as the developer would have seen it.
|
|
38
|
+
*
|
|
39
|
+
* Strings read bare, because that is how a logged message
|
|
40
|
+
* reads; a string nested inside an object is quoted, because
|
|
41
|
+
* there the quoting is what distinguishes it from a name.
|
|
42
|
+
*/
|
|
43
|
+
export declare function renderArg(arg: RemoteArg): string;
|
|
44
|
+
/** One line of what the page said. */
|
|
45
|
+
export interface LogEntry {
|
|
46
|
+
readonly source: string;
|
|
47
|
+
readonly level: string;
|
|
48
|
+
readonly text: string;
|
|
49
|
+
readonly timestamp: number;
|
|
50
|
+
readonly origin?: string;
|
|
51
|
+
readonly stack?: string;
|
|
52
|
+
readonly requestId?: string;
|
|
53
|
+
}
|
|
54
|
+
/** One frame of a stack Chrome captured. */
|
|
55
|
+
export interface CallFrame {
|
|
56
|
+
readonly functionName: string;
|
|
57
|
+
readonly url: string;
|
|
58
|
+
readonly lineNumber: number;
|
|
59
|
+
readonly columnNumber: number;
|
|
60
|
+
}
|
|
61
|
+
/** Runtime.consoleAPICalled, as the protocol sends it. */
|
|
62
|
+
export interface ConsoleCalled {
|
|
63
|
+
readonly type: string;
|
|
64
|
+
readonly timestamp: number;
|
|
65
|
+
readonly args: readonly RemoteArg[];
|
|
66
|
+
readonly stackTrace?: {
|
|
67
|
+
readonly callFrames: readonly CallFrame[];
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Runtime.exceptionThrown's details, as the protocol sends
|
|
72
|
+
* them. The timestamp is not in here: it belongs to the event
|
|
73
|
+
* that carried the details, and is passed alongside.
|
|
74
|
+
*/
|
|
75
|
+
export interface ExceptionThrown {
|
|
76
|
+
readonly text: string;
|
|
77
|
+
readonly url?: string;
|
|
78
|
+
readonly lineNumber?: number;
|
|
79
|
+
readonly columnNumber?: number;
|
|
80
|
+
readonly exception?: RemoteArg;
|
|
81
|
+
readonly stackTrace?: {
|
|
82
|
+
readonly callFrames: readonly CallFrame[];
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/** Log.entryAdded's entry, as the protocol sends it. */
|
|
86
|
+
export interface BrowserLogged {
|
|
87
|
+
readonly source: string;
|
|
88
|
+
readonly level: string;
|
|
89
|
+
readonly text: string;
|
|
90
|
+
readonly timestamp: number;
|
|
91
|
+
readonly url?: string;
|
|
92
|
+
readonly lineNumber?: number;
|
|
93
|
+
readonly networkRequestId?: string;
|
|
94
|
+
readonly stackTrace?: {
|
|
95
|
+
readonly callFrames: readonly CallFrame[];
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* The text of a console call, directives and all.
|
|
100
|
+
*
|
|
101
|
+
* Chrome sends the arguments exactly as they were passed and
|
|
102
|
+
* substitutes nothing, because substitution is the front end's
|
|
103
|
+
* job. Doing it here is what makes the line read the way the
|
|
104
|
+
* developer saw it in their own console rather than as a
|
|
105
|
+
* format string followed by loose values.
|
|
106
|
+
*/
|
|
107
|
+
export declare function consoleText(args: readonly RemoteArg[]): string;
|
|
108
|
+
/** A console call, as a log entry. */
|
|
109
|
+
export declare function consoleEntry(event: ConsoleCalled): LogEntry;
|
|
110
|
+
/**
|
|
111
|
+
* A thrown exception, as a log entry.
|
|
112
|
+
*
|
|
113
|
+
* The protocol's own text is only "Uncaught", or "Uncaught (in
|
|
114
|
+
* promise)" when a rejection went unhandled. That prefix says
|
|
115
|
+
* how the throw escaped and is worth keeping, but the message
|
|
116
|
+
* itself lives on the thrown value.
|
|
117
|
+
*/
|
|
118
|
+
export declare function exceptionEntry(details: ExceptionThrown, timestamp: number): LogEntry;
|
|
119
|
+
/**
|
|
120
|
+
* A browser-generated message, as a log entry.
|
|
121
|
+
*
|
|
122
|
+
* These are the ones the page's own console never sees: a
|
|
123
|
+
* resource that failed to load, a blocked mixed-content
|
|
124
|
+
* request, a deprecation. Missing them is how a broken image
|
|
125
|
+
* goes unnoticed.
|
|
126
|
+
*/
|
|
127
|
+
export declare function browserEntry(entry: BrowserLogged): LogEntry;
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the page said, and how to read it back.
|
|
3
|
+
*
|
|
4
|
+
* Chrome hands over console arguments as remote object
|
|
5
|
+
* descriptions rather than text: it never renders them, because
|
|
6
|
+
* rendering is the front end's job. Everything here is that
|
|
7
|
+
* front end, and is therefore presentation by definition. The
|
|
8
|
+
* facts, the types, the values and the previews, are the
|
|
9
|
+
* browser's; the shape they are read in is ours.
|
|
10
|
+
*/
|
|
11
|
+
/** How many preview properties are worth showing before it stops helping. */
|
|
12
|
+
const MAX_PREVIEW_PROPERTIES = 8;
|
|
13
|
+
/**
|
|
14
|
+
* One console argument, as the developer would have seen it.
|
|
15
|
+
*
|
|
16
|
+
* Strings read bare, because that is how a logged message
|
|
17
|
+
* reads; a string nested inside an object is quoted, because
|
|
18
|
+
* there the quoting is what distinguishes it from a name.
|
|
19
|
+
*/
|
|
20
|
+
export function renderArg(arg) {
|
|
21
|
+
if (arg.type === "undefined")
|
|
22
|
+
return "undefined";
|
|
23
|
+
if (arg.subtype === "null")
|
|
24
|
+
return "null";
|
|
25
|
+
if (arg.type === "string")
|
|
26
|
+
return String(arg.value ?? arg.description ?? "");
|
|
27
|
+
if (arg.type === "bigint")
|
|
28
|
+
return arg.description ?? String(arg.value);
|
|
29
|
+
if (arg.type === "number" || arg.type === "boolean") {
|
|
30
|
+
return arg.value !== undefined
|
|
31
|
+
? String(arg.value)
|
|
32
|
+
: (arg.description ?? "");
|
|
33
|
+
}
|
|
34
|
+
// An error's description carries the whole stack. The message
|
|
35
|
+
// is the first line; the rest belongs to the entry's own stack
|
|
36
|
+
// field, where it is not repeated for every argument.
|
|
37
|
+
if (arg.subtype === "error" && arg.description) {
|
|
38
|
+
return arg.description.split("\n")[0] ?? arg.description;
|
|
39
|
+
}
|
|
40
|
+
// A node prints as the selector-ish description Chrome gives,
|
|
41
|
+
// not as its property bag, which is all attributes and noise.
|
|
42
|
+
if (arg.subtype === "node")
|
|
43
|
+
return arg.description ?? "node";
|
|
44
|
+
const preview = arg.preview;
|
|
45
|
+
if (preview?.properties) {
|
|
46
|
+
const isArray = preview.subtype === "array" || arg.subtype === "array";
|
|
47
|
+
const shown = preview.properties.slice(0, MAX_PREVIEW_PROPERTIES);
|
|
48
|
+
const parts = shown.map((property) => isArray
|
|
49
|
+
? previewValue(property)
|
|
50
|
+
: `${property.name}: ${previewValue(property)}`);
|
|
51
|
+
const cut = preview.overflow || shown.length < preview.properties.length;
|
|
52
|
+
if (cut)
|
|
53
|
+
parts.push("...");
|
|
54
|
+
return isArray ? `[${parts.join(", ")}]` : `{${parts.join(", ")}}`;
|
|
55
|
+
}
|
|
56
|
+
return arg.description ?? arg.className ?? arg.type;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The text of a console call, directives and all.
|
|
60
|
+
*
|
|
61
|
+
* Chrome sends the arguments exactly as they were passed and
|
|
62
|
+
* substitutes nothing, because substitution is the front end's
|
|
63
|
+
* job. Doing it here is what makes the line read the way the
|
|
64
|
+
* developer saw it in their own console rather than as a
|
|
65
|
+
* format string followed by loose values.
|
|
66
|
+
*/
|
|
67
|
+
export function consoleText(args) {
|
|
68
|
+
if (args.length === 0)
|
|
69
|
+
return "";
|
|
70
|
+
const [first, ...rest] = args;
|
|
71
|
+
if (first === undefined)
|
|
72
|
+
return "";
|
|
73
|
+
const pending = [...rest];
|
|
74
|
+
const formatted = first.type === "string"
|
|
75
|
+
? substitute(String(first.value ?? ""), pending)
|
|
76
|
+
: renderArg(first);
|
|
77
|
+
return [formatted, ...pending.map(renderArg)].filter(Boolean).join(" ");
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Fill a format string from the arguments, consuming as it
|
|
81
|
+
* goes, so whatever is left over can be appended.
|
|
82
|
+
*/
|
|
83
|
+
function substitute(format, pending) {
|
|
84
|
+
return format.replace(/%[sdifoOjc%]/g, (directive) => {
|
|
85
|
+
if (directive === "%%")
|
|
86
|
+
return "%";
|
|
87
|
+
// A directive with nothing left to fill it is not a
|
|
88
|
+
// directive; "100%s complete" is a sentence about percent.
|
|
89
|
+
if (pending.length === 0)
|
|
90
|
+
return directive;
|
|
91
|
+
const arg = pending.shift();
|
|
92
|
+
if (arg === undefined)
|
|
93
|
+
return directive;
|
|
94
|
+
// %c consumes its styling and shows nothing: this is text.
|
|
95
|
+
if (directive === "%c")
|
|
96
|
+
return "";
|
|
97
|
+
if (directive === "%d" || directive === "%i") {
|
|
98
|
+
const value = Number(arg.value ?? arg.description);
|
|
99
|
+
return Number.isFinite(value)
|
|
100
|
+
? String(Math.trunc(value))
|
|
101
|
+
: renderArg(arg);
|
|
102
|
+
}
|
|
103
|
+
return renderArg(arg);
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
/** A console call, as a log entry. */
|
|
107
|
+
export function consoleEntry(event) {
|
|
108
|
+
const origin = originOf(event.stackTrace?.callFrames);
|
|
109
|
+
return {
|
|
110
|
+
source: "console",
|
|
111
|
+
// Chrome's own vocabulary, kept as sent: it says "warning",
|
|
112
|
+
// not "warn", and renaming it would invent a third dialect.
|
|
113
|
+
level: event.type,
|
|
114
|
+
text: consoleText(event.args),
|
|
115
|
+
timestamp: event.timestamp,
|
|
116
|
+
...(origin === undefined ? {} : { origin }),
|
|
117
|
+
...stackOf(event.stackTrace?.callFrames),
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* A thrown exception, as a log entry.
|
|
122
|
+
*
|
|
123
|
+
* The protocol's own text is only "Uncaught", or "Uncaught (in
|
|
124
|
+
* promise)" when a rejection went unhandled. That prefix says
|
|
125
|
+
* how the throw escaped and is worth keeping, but the message
|
|
126
|
+
* itself lives on the thrown value.
|
|
127
|
+
*/
|
|
128
|
+
export function exceptionEntry(details, timestamp) {
|
|
129
|
+
const thrown = details.exception ? renderArg(details.exception) : "";
|
|
130
|
+
const description = details.exception?.description ?? "";
|
|
131
|
+
const stack = description.includes("\n")
|
|
132
|
+
? description.slice(description.indexOf("\n") + 1)
|
|
133
|
+
: undefined;
|
|
134
|
+
const origin = locationOf(details.url, details.lineNumber, details.columnNumber);
|
|
135
|
+
return {
|
|
136
|
+
source: "exception",
|
|
137
|
+
level: "error",
|
|
138
|
+
text: [details.text, thrown].filter(Boolean).join(" "),
|
|
139
|
+
timestamp,
|
|
140
|
+
...(origin === undefined ? {} : { origin }),
|
|
141
|
+
...(stack === undefined ? {} : { stack }),
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* A browser-generated message, as a log entry.
|
|
146
|
+
*
|
|
147
|
+
* These are the ones the page's own console never sees: a
|
|
148
|
+
* resource that failed to load, a blocked mixed-content
|
|
149
|
+
* request, a deprecation. Missing them is how a broken image
|
|
150
|
+
* goes unnoticed.
|
|
151
|
+
*/
|
|
152
|
+
export function browserEntry(entry) {
|
|
153
|
+
const origin = locationOf(entry.url, entry.lineNumber);
|
|
154
|
+
return {
|
|
155
|
+
source: entry.source,
|
|
156
|
+
level: entry.level,
|
|
157
|
+
text: entry.text,
|
|
158
|
+
timestamp: entry.timestamp,
|
|
159
|
+
...(origin === undefined ? {} : { origin }),
|
|
160
|
+
...(entry.networkRequestId === undefined
|
|
161
|
+
? {}
|
|
162
|
+
: { requestId: entry.networkRequestId }),
|
|
163
|
+
...stackOf(entry.stackTrace?.callFrames),
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
/** Where a call came from: the innermost frame that has a url. */
|
|
167
|
+
function originOf(frames) {
|
|
168
|
+
const frame = frames?.find((candidate) => candidate.url);
|
|
169
|
+
return frame
|
|
170
|
+
? locationOf(frame.url, frame.lineNumber, frame.columnNumber)
|
|
171
|
+
: undefined;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* The rest of the stack, when there is more than one frame.
|
|
175
|
+
*
|
|
176
|
+
* A frame is worth a line when it can say where it was or what
|
|
177
|
+
* it was called. Code the page ran through the debugger has
|
|
178
|
+
* neither, and those frames used to print as "at (anonymous)
|
|
179
|
+
* undefined": three lines of that under every console.error,
|
|
180
|
+
* saying less than nothing, since "undefined" reads as a value
|
|
181
|
+
* the page produced. A stack of nothing but those is no stack.
|
|
182
|
+
*/
|
|
183
|
+
function stackOf(frames) {
|
|
184
|
+
if (!frames || frames.length < 2)
|
|
185
|
+
return {};
|
|
186
|
+
const lines = frames
|
|
187
|
+
.map((frame) => {
|
|
188
|
+
const where = locationOf(frame.url, frame.lineNumber, frame.columnNumber);
|
|
189
|
+
if (!frame.functionName && !where)
|
|
190
|
+
return undefined;
|
|
191
|
+
if (!where)
|
|
192
|
+
return ` at ${frame.functionName}`;
|
|
193
|
+
return ` at ${frame.functionName || "(anonymous)"} ${where}`;
|
|
194
|
+
})
|
|
195
|
+
.filter((line) => line !== undefined);
|
|
196
|
+
return lines.length > 0 ? { stack: lines.join("\n") } : {};
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* A url with its position, counted from one.
|
|
200
|
+
*
|
|
201
|
+
* The protocol counts lines and columns from zero; every editor
|
|
202
|
+
* and every stack trace a developer reads counts from one.
|
|
203
|
+
*/
|
|
204
|
+
function locationOf(url, line, column) {
|
|
205
|
+
if (!url)
|
|
206
|
+
return undefined;
|
|
207
|
+
if (line === undefined)
|
|
208
|
+
return url;
|
|
209
|
+
const place = `${url}:${line + 1}`;
|
|
210
|
+
return column === undefined ? place : `${place}:${column + 1}`;
|
|
211
|
+
}
|
|
212
|
+
/** A preview property's value, quoted when a string. */
|
|
213
|
+
function previewValue(property) {
|
|
214
|
+
if (property.type === "string")
|
|
215
|
+
return JSON.stringify(property.value ?? "");
|
|
216
|
+
return property.value ?? property.type;
|
|
217
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The dialogs a page put up, and what was said back.
|
|
3
|
+
*
|
|
4
|
+
* A dialog is not a passive event. Until something answers it,
|
|
5
|
+
* the page is stopped: no script runs, no action lands, and
|
|
6
|
+
* anything waiting on the page waits forever. So a session
|
|
7
|
+
* always has an answer ready, and records what it gave.
|
|
8
|
+
*/
|
|
9
|
+
/** What the page asked for. */
|
|
10
|
+
export type DialogKind = "alert" | "confirm" | "prompt" | "beforeunload";
|
|
11
|
+
/** How dialogs get answered while nobody is watching. */
|
|
12
|
+
export interface DialogPolicy {
|
|
13
|
+
/** Accept, or dismiss. Dismissing is the cautious default. */
|
|
14
|
+
readonly accept: boolean;
|
|
15
|
+
/** What to type into a prompt when accepting one. */
|
|
16
|
+
readonly promptText?: string;
|
|
17
|
+
}
|
|
18
|
+
/** One dialog, and the answer it was given. */
|
|
19
|
+
export interface DialogEvent {
|
|
20
|
+
readonly kind: DialogKind;
|
|
21
|
+
readonly message: string;
|
|
22
|
+
readonly defaultPrompt?: string;
|
|
23
|
+
readonly accepted: boolean;
|
|
24
|
+
readonly reply?: string;
|
|
25
|
+
readonly url?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Dismiss unless told otherwise.
|
|
29
|
+
*
|
|
30
|
+
* Dismissing is the answer that changes least: a confirm that
|
|
31
|
+
* guards a deletion gets a no, and a prompt gets nothing rather
|
|
32
|
+
* than a value nobody chose. Accepting can be asked for.
|
|
33
|
+
*/
|
|
34
|
+
export declare const DEFAULT_DIALOG_POLICY: DialogPolicy;
|
|
35
|
+
/** What the page asked, and what it was told. */
|
|
36
|
+
export declare function renderDialogs(dialogs: readonly DialogEvent[]): string;
|
|
37
|
+
/** How a dialog of this kind would be answered under this policy. */
|
|
38
|
+
export declare function answerFor(kind: DialogKind, policy: DialogPolicy): {
|
|
39
|
+
accept: boolean;
|
|
40
|
+
promptText?: string;
|
|
41
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The dialogs a page put up, and what was said back.
|
|
3
|
+
*
|
|
4
|
+
* A dialog is not a passive event. Until something answers it,
|
|
5
|
+
* the page is stopped: no script runs, no action lands, and
|
|
6
|
+
* anything waiting on the page waits forever. So a session
|
|
7
|
+
* always has an answer ready, and records what it gave.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Dismiss unless told otherwise.
|
|
11
|
+
*
|
|
12
|
+
* Dismissing is the answer that changes least: a confirm that
|
|
13
|
+
* guards a deletion gets a no, and a prompt gets nothing rather
|
|
14
|
+
* than a value nobody chose. Accepting can be asked for.
|
|
15
|
+
*/
|
|
16
|
+
export const DEFAULT_DIALOG_POLICY = { accept: false };
|
|
17
|
+
/** What the page asked, and what it was told. */
|
|
18
|
+
export function renderDialogs(dialogs) {
|
|
19
|
+
if (dialogs.length === 0)
|
|
20
|
+
return "The page has not opened a dialog.";
|
|
21
|
+
return dialogs
|
|
22
|
+
.map((dialog) => {
|
|
23
|
+
const answered = dialog.accepted ? "accepted" : "dismissed";
|
|
24
|
+
const typed = dialog.reply === undefined || dialog.reply === ""
|
|
25
|
+
? ""
|
|
26
|
+
: ` with "${dialog.reply}"`;
|
|
27
|
+
return `${dialog.kind}: ${dialog.message}\n ${answered}${typed}`;
|
|
28
|
+
})
|
|
29
|
+
.join("\n");
|
|
30
|
+
}
|
|
31
|
+
/** How a dialog of this kind would be answered under this policy. */
|
|
32
|
+
export function answerFor(kind, policy) {
|
|
33
|
+
// Only a prompt has anywhere to put text, and sending it to
|
|
34
|
+
// the others would be meaningless rather than harmless.
|
|
35
|
+
return kind === "prompt" && policy.accept && policy.promptText !== undefined
|
|
36
|
+
? { accept: policy.accept, promptText: policy.promptText }
|
|
37
|
+
: { accept: policy.accept };
|
|
38
|
+
}
|