@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,297 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rules about what the layout actually did.
|
|
3
|
+
*
|
|
4
|
+
* A visual linter earns its keep or loses it on false positives.
|
|
5
|
+
* Every rule here reports only where the browser's own numbers
|
|
6
|
+
* leave no room for argument, and two well-known deliberate
|
|
7
|
+
* idioms are recognised rather than reported: content parked far
|
|
8
|
+
* off to the left, and the one-pixel clipped box used to hide
|
|
9
|
+
* text from sight but not from a screen reader. Flagging those
|
|
10
|
+
* would train the reader to ignore the whole report.
|
|
11
|
+
*
|
|
12
|
+
* Where a judgment is presentational rather than measured, it
|
|
13
|
+
* says so at the rule. Whether eight pixel text is too small is
|
|
14
|
+
* an opinion; whether an image failed to load is not.
|
|
15
|
+
*/
|
|
16
|
+
import { HIDDEN_BOX_PX } from "../snapshot/presented.js";
|
|
17
|
+
/**
|
|
18
|
+
* The viewport WCAG 1.4.10 Reflow is specified at.
|
|
19
|
+
*
|
|
20
|
+
* The criterion asks that content reflow at 320 CSS pixels, so a
|
|
21
|
+
* capture wider than this has not tested it and must not cite
|
|
22
|
+
* it. A little headroom above 320 keeps a 375px phone capture,
|
|
23
|
+
* the usual narrow case, inside the claim.
|
|
24
|
+
*/
|
|
25
|
+
export const REFLOW_WIDTH = 400;
|
|
26
|
+
/** Below this, text is hard to read for many people. */
|
|
27
|
+
export const SMALL_TEXT_PX = 10;
|
|
28
|
+
/** How far an image's shape may differ before it looks wrong. */
|
|
29
|
+
export const ASPECT_TOLERANCE = 0.1;
|
|
30
|
+
/**
|
|
31
|
+
* A box no larger than this is a hiding technique, not content.
|
|
32
|
+
*
|
|
33
|
+
* Owned by the page-side module that embeds it into the probes, so
|
|
34
|
+
* the threshold the browser is measured against and the one this
|
|
35
|
+
* analysis judges by cannot drift apart. Re-exported here because
|
|
36
|
+
* this is where consumers have always found it.
|
|
37
|
+
*/
|
|
38
|
+
export { HIDDEN_BOX_PX };
|
|
39
|
+
/** Slack for sub-pixel layout, so rounding is not a finding. */
|
|
40
|
+
const SUBPIXEL = 1;
|
|
41
|
+
/**
|
|
42
|
+
* Assemble one finding.
|
|
43
|
+
*
|
|
44
|
+
* `kind` matters as much as `impact`. A rule that measures a
|
|
45
|
+
* failure files a violation; a rule that reports a judgment
|
|
46
|
+
* files needs-review, which counts as a warning rather than a
|
|
47
|
+
* failure. Everything here used to be a violation, so a rule
|
|
48
|
+
* whose own help text called itself a judgment and not a WCAG
|
|
49
|
+
* threshold still failed the check on a single 9px disclaimer.
|
|
50
|
+
*
|
|
51
|
+
* A criterion is only ever cited when this module measured the
|
|
52
|
+
* thing the criterion is about. Asserting one an auditor can
|
|
53
|
+
* disprove costs more credibility than staying quiet.
|
|
54
|
+
*/
|
|
55
|
+
function make(rule, impact, help, nodes, criteria = [], kind = "violation") {
|
|
56
|
+
if (nodes.length === 0)
|
|
57
|
+
return [];
|
|
58
|
+
return [
|
|
59
|
+
{
|
|
60
|
+
rule,
|
|
61
|
+
kind,
|
|
62
|
+
impact,
|
|
63
|
+
authority: criteria.length > 0 ? "wcag" : "best-practice",
|
|
64
|
+
criteria,
|
|
65
|
+
levels: criteria.length > 0 ? ["AA"] : [],
|
|
66
|
+
help,
|
|
67
|
+
nodes,
|
|
68
|
+
},
|
|
69
|
+
];
|
|
70
|
+
}
|
|
71
|
+
function at(node, message) {
|
|
72
|
+
return { selector: node.selector, html: "", messages: [message] };
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Whether the author asked for this text to be cut short.
|
|
76
|
+
*
|
|
77
|
+
* An ellipsis and a line clamp are promises, not accidents: they
|
|
78
|
+
* say there is more and the author knows. Their computed
|
|
79
|
+
* signature (content wider or taller than the box, overflow
|
|
80
|
+
* hidden) is indistinguishable from a real amputation, so this
|
|
81
|
+
* is the exception that decides whether the clipping rule is
|
|
82
|
+
* usable or noise.
|
|
83
|
+
*
|
|
84
|
+
* Presentational recognition, like isVisuallyHidden below: the
|
|
85
|
+
* browser has no notion of a deliberate idiom.
|
|
86
|
+
*/
|
|
87
|
+
function isDeliberatelyTruncated(node) {
|
|
88
|
+
if (node.textOverflow === "ellipsis")
|
|
89
|
+
return true;
|
|
90
|
+
const clamp = node.lineClamp;
|
|
91
|
+
return clamp !== undefined && clamp !== "none" && clamp !== "";
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Whether an element is using a known way of hiding text from
|
|
95
|
+
* sight while leaving it to a screen reader.
|
|
96
|
+
*
|
|
97
|
+
* This is pattern recognition, not measurement: the browser has
|
|
98
|
+
* no notion of a visually-hidden idiom. It is here because the
|
|
99
|
+
* alternative is reporting every correctly built skip link on
|
|
100
|
+
* every page, which would make the clipping rule worthless.
|
|
101
|
+
*/
|
|
102
|
+
export function isVisuallyHidden(node) {
|
|
103
|
+
const tiny = node.rect.width <= HIDDEN_BOX_PX && node.rect.height <= HIDDEN_BOX_PX;
|
|
104
|
+
if (tiny && node.clipPath !== "none")
|
|
105
|
+
return true;
|
|
106
|
+
if (tiny && node.overflowX === "hidden")
|
|
107
|
+
return true;
|
|
108
|
+
// The older idiom: parked far off to the left, where no
|
|
109
|
+
// scrollable area is created in a left-to-right page.
|
|
110
|
+
return node.rect.x + node.rect.width < 0;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* The page scrolls sideways.
|
|
114
|
+
*
|
|
115
|
+
* Almost always a mistake, and a serious one on a narrow screen,
|
|
116
|
+
* where it makes every line of text require two-directional
|
|
117
|
+
* scrolling to read.
|
|
118
|
+
*/
|
|
119
|
+
export function horizontalOverflow(nodes, viewport) {
|
|
120
|
+
if (viewport.documentWidth <= viewport.width + SUBPIXEL)
|
|
121
|
+
return [];
|
|
122
|
+
const culprits = nodes
|
|
123
|
+
.filter((node) => !isVisuallyHidden(node))
|
|
124
|
+
.filter((node) => node.rect.x + node.rect.width > viewport.width + SUBPIXEL)
|
|
125
|
+
.sort((a, b) => b.rect.x + b.rect.width - (a.rect.x + a.rect.width))
|
|
126
|
+
.slice(0, 5)
|
|
127
|
+
.map((node) => at(node, `Reaches ${Math.round(node.rect.x + node.rect.width)} pixels ` +
|
|
128
|
+
`across, past the ${viewport.width} pixel viewport.`));
|
|
129
|
+
return make("page-scrolls-sideways", "serious", `The page is ${Math.round(viewport.documentWidth)} pixels wide in a ` +
|
|
130
|
+
`${viewport.width} pixel viewport, so it scrolls horizontally.`, culprits.length > 0
|
|
131
|
+
? culprits
|
|
132
|
+
: [
|
|
133
|
+
{
|
|
134
|
+
selector: "document",
|
|
135
|
+
html: "",
|
|
136
|
+
messages: ["Nothing single element accounts for the width."],
|
|
137
|
+
},
|
|
138
|
+
],
|
|
139
|
+
// 1.4.10 Reflow is specified at a 320 CSS pixel viewport.
|
|
140
|
+
// Citing it from a 1280px capture asserts a criterion that
|
|
141
|
+
// was not tested; horizontal scrolling at a desktop width is
|
|
142
|
+
// a real problem, just not that one.
|
|
143
|
+
viewport.width <= REFLOW_WIDTH ? ["1.4.10"] : []);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Content cut off by the box it sits in.
|
|
147
|
+
*
|
|
148
|
+
* Measured, not guessed: the browser reports what the content
|
|
149
|
+
* wanted and what the box gave it, and a difference with
|
|
150
|
+
* overflow hidden means the rest is gone with no way to reach
|
|
151
|
+
* it.
|
|
152
|
+
*/
|
|
153
|
+
export function clippedContent(nodes) {
|
|
154
|
+
const found = nodes
|
|
155
|
+
.filter((node) => !isVisuallyHidden(node))
|
|
156
|
+
.filter((node) => node.text)
|
|
157
|
+
// Truncation that the author asked for is not lost content:
|
|
158
|
+
// an ellipsis and a line clamp both say "there is more, and I
|
|
159
|
+
// know". Their computed signature is identical to a real
|
|
160
|
+
// amputation, so without excepting them this rule fires on
|
|
161
|
+
// nearly every table cell, card title and breadcrumb on the
|
|
162
|
+
// real web, at serious severity with a WCAG citation. A rule
|
|
163
|
+
// that is red on every page gates nothing.
|
|
164
|
+
.filter((node) => !isDeliberatelyTruncated(node))
|
|
165
|
+
.filter((node) => {
|
|
166
|
+
const cutX = node.scrollWidth > node.clientWidth + SUBPIXEL &&
|
|
167
|
+
(node.overflowX === "hidden" || node.overflowX === "clip");
|
|
168
|
+
const cutY = node.scrollHeight > node.clientHeight + SUBPIXEL &&
|
|
169
|
+
(node.overflowY === "hidden" || node.overflowY === "clip");
|
|
170
|
+
return cutX || cutY;
|
|
171
|
+
})
|
|
172
|
+
.map((node) => {
|
|
173
|
+
const across = node.scrollWidth - node.clientWidth;
|
|
174
|
+
const down = node.scrollHeight - node.clientHeight;
|
|
175
|
+
const how = across > down
|
|
176
|
+
? `${Math.round(across)} pixels wider than its box`
|
|
177
|
+
: `${Math.round(down)} pixels taller than its box`;
|
|
178
|
+
return at(node, `Content is ${how}, and the rest cannot be reached.`);
|
|
179
|
+
});
|
|
180
|
+
return make("content-is-clipped", "serious", "Content is cut off by a box with overflow hidden. Nothing " +
|
|
181
|
+
"scrolls it into view, so the remainder is simply lost.", found,
|
|
182
|
+
// Not 1.4.4, which is about text resized to 200 percent and
|
|
183
|
+
// is a thing this rule never does. The clipping is real and
|
|
184
|
+
// worth reporting on its own terms.
|
|
185
|
+
[]);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Elements that escaped to the right of the document.
|
|
189
|
+
*
|
|
190
|
+
* Off to the left is the old way of hiding something, and does
|
|
191
|
+
* not extend the page. Off to the right does, so it drags the
|
|
192
|
+
* whole document wider and is nearly always an accident.
|
|
193
|
+
*/
|
|
194
|
+
export function escapedElements(nodes, viewport) {
|
|
195
|
+
// Say it only when it is true. This rule asserts that an
|
|
196
|
+
// element drags the page wider, and had no gate on whether the
|
|
197
|
+
// page actually got wider, while the sibling rule above opens
|
|
198
|
+
// with exactly that check. So a clipped carousel or an
|
|
199
|
+
// off-canvas drawer, both of which live beyond the viewport by
|
|
200
|
+
// design inside a clipping ancestor, were accused of widening
|
|
201
|
+
// a document this module had already measured as viewport-wide.
|
|
202
|
+
// The two rules contradicted each other inside one report.
|
|
203
|
+
if (viewport.documentWidth <= viewport.width + SUBPIXEL)
|
|
204
|
+
return [];
|
|
205
|
+
const found = nodes
|
|
206
|
+
.filter((node) => !isVisuallyHidden(node))
|
|
207
|
+
.filter((node) => node.rect.width > 0 && node.rect.height > 0)
|
|
208
|
+
.filter((node) => node.rect.x > viewport.width)
|
|
209
|
+
.map((node) => at(node, `Sits at x=${Math.round(node.rect.x)}, beyond the ` +
|
|
210
|
+
`${viewport.width} pixel viewport, dragging the page wider.`));
|
|
211
|
+
return make("element-escaped-right", "moderate", "An element is positioned past the right of the viewport. Unlike " +
|
|
212
|
+
"the off-to-the-left idiom, this extends the scrollable page.", found);
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Images that did not load.
|
|
216
|
+
*
|
|
217
|
+
* The browser is unambiguous about this: it finished trying and
|
|
218
|
+
* has no dimensions to show for it.
|
|
219
|
+
*/
|
|
220
|
+
export function brokenImages(nodes) {
|
|
221
|
+
const found = nodes
|
|
222
|
+
.filter((node) => node.tag === "img" && node.src)
|
|
223
|
+
.filter((node) => node.complete === true && node.naturalWidth === 0)
|
|
224
|
+
.map((node) => at(node, `${node.src} did not load.`));
|
|
225
|
+
return make("image-loads", "serious", "An image failed to load. The browser finished trying and has no " +
|
|
226
|
+
"dimensions for it.", found);
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Images drawn at a shape they were not.
|
|
230
|
+
*
|
|
231
|
+
* Measured against the image's own dimensions, so this is a
|
|
232
|
+
* comparison rather than an opinion; only the tolerance is
|
|
233
|
+
* chosen.
|
|
234
|
+
*/
|
|
235
|
+
export function distortedImages(nodes) {
|
|
236
|
+
const found = nodes
|
|
237
|
+
.filter((node) => node.tag === "img")
|
|
238
|
+
// cover and contain crop or letterbox; they never distort a
|
|
239
|
+
// pixel, so comparing drawn shape to source shape says
|
|
240
|
+
// nothing about them. Without this the standard idiom for
|
|
241
|
+
// every hero, avatar and thumbnail on the web reports as
|
|
242
|
+
// squashed, at every width of a sweep. Only fill and
|
|
243
|
+
// scale-down can actually change the shape.
|
|
244
|
+
.filter((node) => node.objectFit === undefined ||
|
|
245
|
+
node.objectFit === "fill" ||
|
|
246
|
+
node.objectFit === "scale-down")
|
|
247
|
+
.filter((node) => (node.naturalWidth ?? 0) > 0 &&
|
|
248
|
+
(node.naturalHeight ?? 0) > 0 &&
|
|
249
|
+
node.rect.width > 0 &&
|
|
250
|
+
node.rect.height > 0)
|
|
251
|
+
.flatMap((node) => {
|
|
252
|
+
const natural = (node.naturalWidth ?? 1) / (node.naturalHeight ?? 1);
|
|
253
|
+
const drawn = node.rect.width / node.rect.height;
|
|
254
|
+
const drift = Math.abs(drawn - natural) / natural;
|
|
255
|
+
if (drift <= ASPECT_TOLERANCE)
|
|
256
|
+
return [];
|
|
257
|
+
return [
|
|
258
|
+
at(node, `Drawn at ${Math.round(node.rect.width)} by ` +
|
|
259
|
+
`${Math.round(node.rect.height)} from a source that is ` +
|
|
260
|
+
`${node.naturalWidth} by ${node.naturalHeight}, a ` +
|
|
261
|
+
`${Math.round(drift * 100)} percent difference in shape.`),
|
|
262
|
+
];
|
|
263
|
+
});
|
|
264
|
+
return make("image-keeps-its-shape", "moderate", "An image is drawn at a different shape from the file, so it is " +
|
|
265
|
+
"squashed or stretched.", found);
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Text below a readable size.
|
|
269
|
+
*
|
|
270
|
+
* Presentational judgment, and labelled as one. WCAG sets no
|
|
271
|
+
* minimum font size, because it requires the page to survive
|
|
272
|
+
* being zoomed instead. This is here because text this small is
|
|
273
|
+
* usually an accident rather than a decision.
|
|
274
|
+
*/
|
|
275
|
+
export function tinyText(nodes) {
|
|
276
|
+
const found = nodes
|
|
277
|
+
.filter((node) => node.text && !isVisuallyHidden(node))
|
|
278
|
+
.filter((node) => node.fontSizePx > 0 && node.fontSizePx < SMALL_TEXT_PX)
|
|
279
|
+
.map((node) => at(node, `Set at ${node.fontSizePx} pixels.`));
|
|
280
|
+
return make("text-is-legible", "minor", `Text below ${SMALL_TEXT_PX} pixels. This is a judgment rather ` +
|
|
281
|
+
"than a WCAG threshold, which asks instead that the page survive " +
|
|
282
|
+
"being zoomed.", found, [],
|
|
283
|
+
// Says of itself that it is an opinion, so it asks for a
|
|
284
|
+
// person rather than declaring the page broken.
|
|
285
|
+
"needs-review");
|
|
286
|
+
}
|
|
287
|
+
/** Every layout rule, run against one capture. */
|
|
288
|
+
export function analyseVisual(nodes, viewport) {
|
|
289
|
+
return [
|
|
290
|
+
...horizontalOverflow(nodes, viewport),
|
|
291
|
+
...clippedContent(nodes),
|
|
292
|
+
...escapedElements(nodes, viewport),
|
|
293
|
+
...brokenImages(nodes),
|
|
294
|
+
...distortedImages(nodes),
|
|
295
|
+
...tinyText(nodes),
|
|
296
|
+
];
|
|
297
|
+
}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser lifecycle: launch Chrome once, reuse across tool calls.
|
|
3
|
+
* Pure Chrome management: no cookie knowledge.
|
|
4
|
+
*
|
|
5
|
+
* The singleton lives on globalThis rather than in a module
|
|
6
|
+
* variable. Pi loads each extension as its own module instance,
|
|
7
|
+
* so a module-level singleton would give web search, mermaid and
|
|
8
|
+
* the browser tool a browser each, all racing to launch Chrome
|
|
9
|
+
* against the same per-pid profile; the first wins the profile
|
|
10
|
+
* lock and the rest fail to launch. A process-global instance,
|
|
11
|
+
* plus a shared in-flight launch promise, means one browser and
|
|
12
|
+
* one profile no matter how many extensions reach for it.
|
|
13
|
+
*/
|
|
14
|
+
import { type Browser, type BrowserContext, type Page } from "puppeteer-core";
|
|
15
|
+
/** Diagnostic detail teased out of a failed Chrome launch. */
|
|
16
|
+
export interface LaunchFailureInfo {
|
|
17
|
+
exitCode?: number;
|
|
18
|
+
chromeStderr?: string;
|
|
19
|
+
}
|
|
20
|
+
/** Parse a Puppeteer launch error into an exit code and Chrome's stderr. */
|
|
21
|
+
export declare function classifyLaunchError(err: unknown): LaunchFailureInfo;
|
|
22
|
+
/** Build a human-readable message for a launch that never came up. */
|
|
23
|
+
export declare function formatLaunchFailure(info: LaunchFailureInfo, attempts: number, fallback?: string): string;
|
|
24
|
+
/** Thrown when Chrome could not be launched after the retry budget. */
|
|
25
|
+
export declare class BrowserLaunchFailed extends Error {
|
|
26
|
+
readonly exitCode?: number;
|
|
27
|
+
readonly chromeStderr?: string;
|
|
28
|
+
constructor(cause: unknown, attempts: number);
|
|
29
|
+
}
|
|
30
|
+
/** Signal delivery, injectable so the reaping logic is testable. */
|
|
31
|
+
type GroupKill = (pid: number, signal: string) => void;
|
|
32
|
+
/**
|
|
33
|
+
* Kill a detached Chrome's whole process group, falling back to the
|
|
34
|
+
* bare pid. Chrome is spawned detached, so its pgid equals its pid;
|
|
35
|
+
* the negative pid reaps every helper (GPU, network, renderers) that
|
|
36
|
+
* a lone pid kill would leave to reparent to launchd.
|
|
37
|
+
*/
|
|
38
|
+
export declare function killPidGroup(pid: number, groupKill?: GroupKill): void;
|
|
39
|
+
/** Kill a live browser process tree: group first, then proc.kill fallback. */
|
|
40
|
+
export declare function killTree(proc: {
|
|
41
|
+
pid?: number;
|
|
42
|
+
kill: (signal?: NodeJS.Signals) => boolean;
|
|
43
|
+
} | null | undefined, groupKill?: GroupKill): void;
|
|
44
|
+
/** What a process records about the Chrome it owns, written into its profile dir. */
|
|
45
|
+
export interface OwnerRecord {
|
|
46
|
+
/** Pid of the owning process. */
|
|
47
|
+
ownerPid: number;
|
|
48
|
+
/** Pid (and process-group leader) of the Chrome this process launched. */
|
|
49
|
+
browserPid?: number;
|
|
50
|
+
/**
|
|
51
|
+
* The browser-wide DevTools WebSocket URL, when Chrome published one.
|
|
52
|
+
* A separate process passes this to connectShared() to attach to this
|
|
53
|
+
* same browser instead of launching its own. Absent when the port
|
|
54
|
+
* file never appeared or the DevTools HTTP endpoint never answered;
|
|
55
|
+
* either way the owning process's own pipe-based connection, which
|
|
56
|
+
* does not depend on this, is unaffected.
|
|
57
|
+
*/
|
|
58
|
+
browserWSEndpoint?: string;
|
|
59
|
+
}
|
|
60
|
+
/** Inputs for reaping Chrome trees and profile dirs a dead owner left behind. */
|
|
61
|
+
export interface ReapOrphansOptions {
|
|
62
|
+
root: string;
|
|
63
|
+
listEntries: () => string[];
|
|
64
|
+
readOwner: (profileDir: string) => OwnerRecord | undefined;
|
|
65
|
+
isPidAlive: (pid: number) => boolean;
|
|
66
|
+
verifyBrowser: (pid: number, profileDir: string) => boolean;
|
|
67
|
+
/** Pids naming this exact profile, or undefined when the probe failed. */
|
|
68
|
+
findProcsByProfile: (profileDir: string) => number[] | undefined;
|
|
69
|
+
killPid: (pid: number) => void;
|
|
70
|
+
removeDir: (dir: string) => void;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Reap Chrome trees and profile dirs a prior run left behind. Each
|
|
74
|
+
* dir is reaped only when its owning process is dead. The candidate kill
|
|
75
|
+
* set is the exact-profile matches unioned with a recorded pid; each
|
|
76
|
+
* candidate is re-verified immediately before it is signalled, so a
|
|
77
|
+
* pid that exited and was reused is never group-killed. The dir is
|
|
78
|
+
* removed only once discovery has run and a fresh check confirms no
|
|
79
|
+
* candidate still names it, so a failed probe or a surviving process
|
|
80
|
+
* keeps the dir for a later sweep. Every step is best-effort: one bad
|
|
81
|
+
* entry can never abort the sweep or block a launch.
|
|
82
|
+
*/
|
|
83
|
+
export declare function reapOrphans(opts: ReapOrphansOptions): void;
|
|
84
|
+
/** Decide whether an idle browser is truly unused and safe to close. */
|
|
85
|
+
export declare function shouldCloseWhenIdle(openPageCount: number): boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Decide whether teardown should force-kill the browser process group.
|
|
88
|
+
* Never after a clean graceful close, since the pid is already gone and
|
|
89
|
+
* could be reused; only when the close did not happen and the process
|
|
90
|
+
* still verifies as our Chrome.
|
|
91
|
+
*/
|
|
92
|
+
export declare function shouldForceKill(closedGracefully: boolean, stillVerifies: boolean): boolean;
|
|
93
|
+
/** A countdown that closes an idle browser and rearms on use. */
|
|
94
|
+
export interface IdleCloser {
|
|
95
|
+
touch(): void;
|
|
96
|
+
cancel(): void;
|
|
97
|
+
}
|
|
98
|
+
/** Inputs for the idle-close countdown; timers are injectable for tests. */
|
|
99
|
+
export interface IdleCloserOptions {
|
|
100
|
+
idleMs: number;
|
|
101
|
+
close: () => void;
|
|
102
|
+
setTimer?: (fn: () => void, ms: number) => NodeJS.Timeout;
|
|
103
|
+
clearTimer?: (id: NodeJS.Timeout) => void;
|
|
104
|
+
}
|
|
105
|
+
/** Build an idle-close countdown that rearms on touch and stops on cancel. */
|
|
106
|
+
export declare function createIdleCloser(opts: IdleCloserOptions): IdleCloser;
|
|
107
|
+
/** True when a pid names a live process (EPERM still means it exists). */
|
|
108
|
+
export declare function isPidAlive(pid: number): boolean;
|
|
109
|
+
/**
|
|
110
|
+
* True when `command` carries this exact profile as its
|
|
111
|
+
* --user-data-dir. Both sides of the value are anchored, so neither a
|
|
112
|
+
* longer sibling path nor a differently-prefixed flag can collide.
|
|
113
|
+
*/
|
|
114
|
+
export declare function namesProfile(command: string, profileDir: string): boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Settle on the binary to launch, refusing a configured path that is
|
|
117
|
+
* not there.
|
|
118
|
+
*
|
|
119
|
+
* CHROME_PATH used to be taken on trust, so a stale or mistyped
|
|
120
|
+
* value fell through to the launch loop: three attempts, two
|
|
121
|
+
* backoffs, and then a message whose first line blamed a Chrome
|
|
122
|
+
* auto-update. None of that is true of a path that does not exist,
|
|
123
|
+
* and no amount of retrying fixes it. A missing Chrome was already
|
|
124
|
+
* treated as the settled misconfig it is; this is the same fault
|
|
125
|
+
* arriving by a different door.
|
|
126
|
+
*/
|
|
127
|
+
export declare function resolveChromePath(configured: string | undefined, exists?: (p: string) => boolean): string;
|
|
128
|
+
/**
|
|
129
|
+
* Attach to a browser a different, still-live process already launched,
|
|
130
|
+
* instead of spawning one of our own. For a stateless-per-invocation
|
|
131
|
+
* caller (a CLI, not a long-lived extension host that keeps its own
|
|
132
|
+
* processGlobal state) that wants to reuse whatever browser is already
|
|
133
|
+
* warm rather than paying a fresh launch every call.
|
|
134
|
+
*
|
|
135
|
+
* Scans every profile under PROFILE_ROOT for a live owner that published
|
|
136
|
+
* a reconnectable endpoint, and attaches to the first one that answers.
|
|
137
|
+
* Returns undefined when none is found or reachable, so the caller can
|
|
138
|
+
* fall back to getBrowser().
|
|
139
|
+
*
|
|
140
|
+
* The caller does not own what this returns: closing it must be
|
|
141
|
+
* `browser.disconnect()`, never `browser.close()`, which would tear down
|
|
142
|
+
* the browser out from under the process that actually launched it.
|
|
143
|
+
*/
|
|
144
|
+
export declare function connectShared(): Promise<Browser | undefined>;
|
|
145
|
+
/**
|
|
146
|
+
* Stop the warm browser from being the only reason this process
|
|
147
|
+
* stays alive.
|
|
148
|
+
*
|
|
149
|
+
* The browser is kept between sessions so the next call does not
|
|
150
|
+
* pay a second and a half to launch Chrome again. But its child
|
|
151
|
+
* process, its stdio pipes and its DevTools socket all hold the
|
|
152
|
+
* event loop, so a script that opened a session, did its work
|
|
153
|
+
* and closed it sat there until the five-minute idle close fired
|
|
154
|
+
* and only then exited. Measured: two and a half seconds of
|
|
155
|
+
* work, three hundred and one seconds of wall clock, three and a
|
|
156
|
+
* half seconds of CPU. Anything wiring this into CI would have
|
|
157
|
+
* read that as a hang.
|
|
158
|
+
*
|
|
159
|
+
* unref does not close anything. The browser stays usable and
|
|
160
|
+
* the idle close still runs; it just stops counting as a reason
|
|
161
|
+
* to keep running. A session has its own handles and is
|
|
162
|
+
* unaffected, and a script exits when its own work is done.
|
|
163
|
+
*/
|
|
164
|
+
export declare function releaseEventLoop(child: LoopHandle | null): void;
|
|
165
|
+
/**
|
|
166
|
+
* The part of a child process this cares about.
|
|
167
|
+
*
|
|
168
|
+
* stdio is left loose because a pipe's declared stream type does
|
|
169
|
+
* not carry ref and unref even though a socket-backed one has
|
|
170
|
+
* them, so each entry is asked rather than assumed.
|
|
171
|
+
*/
|
|
172
|
+
export interface LoopHandle {
|
|
173
|
+
ref(): void;
|
|
174
|
+
unref(): void;
|
|
175
|
+
readonly stdio: readonly unknown[];
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Keep the process alive for as long as a teardown needs.
|
|
179
|
+
*
|
|
180
|
+
* The inverse of releaseEventLoop. Closing a browser is several
|
|
181
|
+
* round trips, and once nothing is ref'd Node is free to exit
|
|
182
|
+
* in the middle of them, which leaves the caller's promise
|
|
183
|
+
* hanging and Chrome to be reaped as an orphan next run.
|
|
184
|
+
*/
|
|
185
|
+
export declare function holdEventLoop(child: LoopHandle | null): void;
|
|
186
|
+
/**
|
|
187
|
+
* Get the shared headless Chrome instance, launching it if
|
|
188
|
+
* needed. Concurrent callers share one in-flight launch, so two
|
|
189
|
+
* extensions reaching for the browser in the same tick do not
|
|
190
|
+
* race two Chrome processes onto the same profile.
|
|
191
|
+
*/
|
|
192
|
+
export declare function getBrowser(): Promise<Browser>;
|
|
193
|
+
/** Open a new browser tab with a standard user agent string. */
|
|
194
|
+
export declare function newPage(): Promise<Page>;
|
|
195
|
+
/**
|
|
196
|
+
* Open a tab in a browser context of its own: separate
|
|
197
|
+
* cookies, storage and cache from every other context in the
|
|
198
|
+
* shared Chrome. Two sessions opened this way are two
|
|
199
|
+
* genuinely independent users. Closing the context closes the
|
|
200
|
+
* tabs inside it and leaves its siblings alone.
|
|
201
|
+
*/
|
|
202
|
+
export declare function newContextPage(): Promise<{
|
|
203
|
+
page: Page;
|
|
204
|
+
context: BrowserContext;
|
|
205
|
+
}>;
|
|
206
|
+
/** Shut down the shared Chrome instance if it's running. */
|
|
207
|
+
export declare function closeBrowser(): Promise<void>;
|
|
208
|
+
/**
|
|
209
|
+
* Force-kill the Chrome process synchronously. Called from
|
|
210
|
+
* `process.on('exit')` where async work isn't possible.
|
|
211
|
+
*/
|
|
212
|
+
export declare function killBrowserSync(): void;
|
|
213
|
+
export {};
|