@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,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The layer consumers actually talk to.
|
|
3
|
+
*
|
|
4
|
+
* Everything below this is deliberately separate: a model, a
|
|
5
|
+
* provider contract, a resolver, a draft. That separation is
|
|
6
|
+
* what makes each piece testable, but a consumer should not
|
|
7
|
+
* have to assemble them. So the engine does it: hand it a
|
|
8
|
+
* reference or a checkout, get back something that knows its
|
|
9
|
+
* own provider, capabilities, diff and stack, and can open a
|
|
10
|
+
* draft about itself.
|
|
11
|
+
*/
|
|
12
|
+
import type { Exec } from "../exec/index.js";
|
|
13
|
+
import type { Capabilities } from "./capabilities.js";
|
|
14
|
+
import type { ChangeRef, Proposal, RepoLocator, ReviewTarget } from "./change.js";
|
|
15
|
+
import type { ChecksRollup } from "./checks.js";
|
|
16
|
+
import type { ReviewConfig } from "./config.js";
|
|
17
|
+
import type { DiffModel } from "./diff.js";
|
|
18
|
+
import type { DraftDeps, ReviewDraft } from "./draft/handle.js";
|
|
19
|
+
import type { DraftStore } from "./draft/store.js";
|
|
20
|
+
import type { ConversationFacet, RepoProbe, ReviewProvider } from "./provider.js";
|
|
21
|
+
import type { ResolvedVia } from "./resolve.js";
|
|
22
|
+
import type { Stack } from "./stack.js";
|
|
23
|
+
/** What the engine needs to work. */
|
|
24
|
+
export interface ReviewEngineDeps {
|
|
25
|
+
exec: Exec;
|
|
26
|
+
store: DraftStore;
|
|
27
|
+
/** The user's `review` config section, when there is one. */
|
|
28
|
+
config?: ReviewConfig;
|
|
29
|
+
}
|
|
30
|
+
/** Which local refs to review. */
|
|
31
|
+
export type LocalSpec = {
|
|
32
|
+
base: string;
|
|
33
|
+
head: string;
|
|
34
|
+
} | {
|
|
35
|
+
refs: string[];
|
|
36
|
+
};
|
|
37
|
+
/** A target with its provider and everything reachable from it. */
|
|
38
|
+
export interface BoundTarget {
|
|
39
|
+
target: ReviewTarget;
|
|
40
|
+
provider: ReviewProvider;
|
|
41
|
+
repo: RepoLocator;
|
|
42
|
+
/**
|
|
43
|
+
* How this provider came to own the target.
|
|
44
|
+
*
|
|
45
|
+
* Carried because a failure reads completely differently depending on
|
|
46
|
+
* the answer. A reference resolved by claim landed on a provider that
|
|
47
|
+
* recognized its shape, and a shape like `owner/repo#n` belongs to no
|
|
48
|
+
* system in particular, so a not-found is as likely to mean the wrong
|
|
49
|
+
* system as a missing change. Resolved by config, the same not-found
|
|
50
|
+
* means what it says, and suggesting a pin would be noise about a pin
|
|
51
|
+
* that already decided.
|
|
52
|
+
*/
|
|
53
|
+
via: ResolvedVia;
|
|
54
|
+
capabilities: Capabilities;
|
|
55
|
+
/** The hosted change, when the target is one. */
|
|
56
|
+
proposal(): Promise<Proposal | null>;
|
|
57
|
+
/** Unified diff, from the provider or from local git. */
|
|
58
|
+
diff(): Promise<string>;
|
|
59
|
+
/** The same diff, parsed. */
|
|
60
|
+
diffModel(): Promise<DiffModel>;
|
|
61
|
+
/** The stack, when the provider can read one. */
|
|
62
|
+
stack(): Promise<Stack | null>;
|
|
63
|
+
/** CI state, when the provider reports it. */
|
|
64
|
+
checks(): Promise<ChecksRollup | null>;
|
|
65
|
+
/** The conversation, or null when nothing hosts this target. */
|
|
66
|
+
conversation: ConversationFacet | null;
|
|
67
|
+
}
|
|
68
|
+
/** A checkout's provider, and what it can do here. */
|
|
69
|
+
export interface ServingRepo {
|
|
70
|
+
provider: ReviewProvider;
|
|
71
|
+
repo: RepoLocator;
|
|
72
|
+
via: ResolvedVia;
|
|
73
|
+
capabilities: Capabilities;
|
|
74
|
+
}
|
|
75
|
+
/** The substrate, assembled. */
|
|
76
|
+
export interface ReviewEngine {
|
|
77
|
+
/** What a directory says about the repo it sits in. */
|
|
78
|
+
probe(cwd: string): Promise<RepoProbe>;
|
|
79
|
+
/** Resolve a reference, throwing the resolver's guidance. */
|
|
80
|
+
resolve(input: string, cwd?: string): Promise<BoundTarget>;
|
|
81
|
+
/**
|
|
82
|
+
* Bind a change whose system is already known.
|
|
83
|
+
*
|
|
84
|
+
* For a caller that resolved once and kept the answer. Going
|
|
85
|
+
* back through {@link resolve} would ask every provider to
|
|
86
|
+
* claim the name again, and claiming depends on the directory
|
|
87
|
+
* the question is asked from, so the same change can bind to a
|
|
88
|
+
* different system on a later call. That is exactly how a
|
|
89
|
+
* review reaches a mirror instead of the system of record.
|
|
90
|
+
*/
|
|
91
|
+
bound(change: ChangeRef): Promise<BoundTarget>;
|
|
92
|
+
/** Review refs in a checkout, hosted or not. */
|
|
93
|
+
fromLocal(repoRoot: string, spec: LocalSpec): Promise<BoundTarget>;
|
|
94
|
+
/**
|
|
95
|
+
* Who serves this checkout, with nothing to review yet.
|
|
96
|
+
*
|
|
97
|
+
* For "what can be done here", which is asked before there is a change
|
|
98
|
+
* to ask it about. {@link fromLocal} needs refs, so answering through it
|
|
99
|
+
* meant inventing a base and a head nobody named.
|
|
100
|
+
*/
|
|
101
|
+
serving(cwd: string): Promise<ServingRepo>;
|
|
102
|
+
openDraft(target: ReviewTarget): Promise<ReviewDraft>;
|
|
103
|
+
}
|
|
104
|
+
/** Build the engine. */
|
|
105
|
+
export declare function createReviewEngine(deps: ReviewEngineDeps): ReviewEngine;
|
|
106
|
+
export type { DraftDeps };
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The layer consumers actually talk to.
|
|
3
|
+
*
|
|
4
|
+
* Everything below this is deliberately separate: a model, a
|
|
5
|
+
* provider contract, a resolver, a draft. That separation is
|
|
6
|
+
* what makes each piece testable, but a consumer should not
|
|
7
|
+
* have to assemble them. So the engine does it: hand it a
|
|
8
|
+
* reference or a checkout, get back something that knows its
|
|
9
|
+
* own provider, capabilities, diff and stack, and can open a
|
|
10
|
+
* draft about itself.
|
|
11
|
+
*/
|
|
12
|
+
import { run } from "../exec/index.js";
|
|
13
|
+
import { resolveRepo, resolveTarget } from "./bind.js";
|
|
14
|
+
import { parseUnifiedDiff } from "./diff.js";
|
|
15
|
+
import { openDraft } from "./draft/handle.js";
|
|
16
|
+
import { getReviewProvider } from "./register.js";
|
|
17
|
+
import { resolveReference } from "./resolve.js";
|
|
18
|
+
/** The two endpoints of whatever the target covers. */
|
|
19
|
+
function endpointsOf(target) {
|
|
20
|
+
if (target.kind === "range") {
|
|
21
|
+
return { base: target.base, head: target.head };
|
|
22
|
+
}
|
|
23
|
+
if (target.kind === "stack") {
|
|
24
|
+
// A stack's diff is everything from below its first ref to
|
|
25
|
+
// the tip of its last.
|
|
26
|
+
return {
|
|
27
|
+
base: target.refs[0] ?? "HEAD",
|
|
28
|
+
head: target.refs.at(-1) ?? "HEAD",
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
throw new Error("a hosted change has no local endpoints");
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The provider a change names, or a refusal that names it back.
|
|
35
|
+
*
|
|
36
|
+
* A change carrying a system nobody registered almost always
|
|
37
|
+
* means an extension did not load, and saying which system is
|
|
38
|
+
* missing is what points at it.
|
|
39
|
+
*/
|
|
40
|
+
function providerFor(id) {
|
|
41
|
+
const provider = getReviewProvider(id);
|
|
42
|
+
if (!provider) {
|
|
43
|
+
throw new Error(`This change belongs to ${id}, and no ${id} provider is registered, so it cannot be reached. The extension that contributes it may not be loaded.`);
|
|
44
|
+
}
|
|
45
|
+
return provider;
|
|
46
|
+
}
|
|
47
|
+
/** Build the engine. */
|
|
48
|
+
export function createReviewEngine(deps) {
|
|
49
|
+
const draftDeps = { store: deps.store };
|
|
50
|
+
async function probe(cwd) {
|
|
51
|
+
const top = await deps.exec("git", [
|
|
52
|
+
"-C",
|
|
53
|
+
cwd,
|
|
54
|
+
"rev-parse",
|
|
55
|
+
"--show-toplevel",
|
|
56
|
+
]);
|
|
57
|
+
// Not being in a repo is an ordinary answer, not a failure:
|
|
58
|
+
// a reference can still be a URL.
|
|
59
|
+
if (top.code !== 0)
|
|
60
|
+
return {};
|
|
61
|
+
const repoRoot = top.stdout.trim();
|
|
62
|
+
const remotes = await deps.exec("git", [
|
|
63
|
+
"-C",
|
|
64
|
+
repoRoot,
|
|
65
|
+
"config",
|
|
66
|
+
"--get-regexp",
|
|
67
|
+
"^remote\\..*\\.url$",
|
|
68
|
+
]);
|
|
69
|
+
const remoteUrls = remotes.code === 0
|
|
70
|
+
? remotes.stdout
|
|
71
|
+
.split("\n")
|
|
72
|
+
.map((line) => line.trim().split(/\s+/)[1])
|
|
73
|
+
.filter((url) => Boolean(url))
|
|
74
|
+
: [];
|
|
75
|
+
return { repoRoot, remoteUrls };
|
|
76
|
+
}
|
|
77
|
+
/** Wrap a resolved target in everything reachable from it. */
|
|
78
|
+
function bind(target, provider, repo, via) {
|
|
79
|
+
let diffText;
|
|
80
|
+
async function readDiff() {
|
|
81
|
+
if (target.kind === "proposal") {
|
|
82
|
+
if (!provider.proposals) {
|
|
83
|
+
throw new Error(`the ${provider.id} provider cannot read a diff`);
|
|
84
|
+
}
|
|
85
|
+
try {
|
|
86
|
+
return await provider.proposals.diff(target.change);
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
// A big change is the case a diff is most wanted for and the one
|
|
90
|
+
// that failed hardest: a backend that caps its own diff route
|
|
91
|
+
// answered with a raw upstream refusal and the read was over,
|
|
92
|
+
// while the same provider offered `fetchAsRef` for exactly this
|
|
93
|
+
// and nothing reached for it. Bringing the commits down and
|
|
94
|
+
// diffing them locally has no such cap.
|
|
95
|
+
return await diffFromRef(target.change, error);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const root = repo.localPath ?? target.repo.localPath;
|
|
99
|
+
if (!root) {
|
|
100
|
+
throw new Error(`${repo.key} has no local checkout to diff`);
|
|
101
|
+
}
|
|
102
|
+
const { base, head } = endpointsOf(target);
|
|
103
|
+
return run(deps.exec, "git", ["-C", root, "diff", `${base}...${head}`], `diffing ${base}...${head}`);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* The diff read from a ref the provider fetched, when its own route
|
|
107
|
+
* would not answer.
|
|
108
|
+
*
|
|
109
|
+
* The original failure is carried into anything said here, because the
|
|
110
|
+
* fallback can fail for reasons of its own and being told only about
|
|
111
|
+
* the second one sends somebody after the wrong problem.
|
|
112
|
+
*/
|
|
113
|
+
async function diffFromRef(change, cause) {
|
|
114
|
+
const why = cause instanceof Error ? cause.message : String(cause);
|
|
115
|
+
const fetchAsRef = provider.proposals?.fetchAsRef;
|
|
116
|
+
const root = repo.localPath ?? change.repo.localPath;
|
|
117
|
+
if (!fetchAsRef || !root) {
|
|
118
|
+
throw new Error(`${why}\n\nThe ${provider.id} provider ${fetchAsRef ? `has no local checkout of ${repo.key} to read ${change.label} into` : "cannot fetch a change as a ref"}, so there is no way around that. Read the change a file at a time instead.`);
|
|
119
|
+
}
|
|
120
|
+
const head = await fetchAsRef(change, root);
|
|
121
|
+
// The base is not fetched with it, and the diff is against the base.
|
|
122
|
+
// Asking the provider what the base is costs one read and beats
|
|
123
|
+
// guessing at a default branch name.
|
|
124
|
+
const base = (await provider.proposals?.fetch(change))?.base;
|
|
125
|
+
if (base === undefined) {
|
|
126
|
+
throw new Error(`${why}\n\n${change.label} was fetched to ${head}, but the ${provider.id} provider did not say what it is based on, so there is nothing to diff it against.`);
|
|
127
|
+
}
|
|
128
|
+
const read = await deps.exec("git", [
|
|
129
|
+
"-C",
|
|
130
|
+
root,
|
|
131
|
+
"diff",
|
|
132
|
+
`${base}...${head}`,
|
|
133
|
+
]);
|
|
134
|
+
if (read.code !== 0) {
|
|
135
|
+
// Both causes, because the fallback fails for its own reasons and
|
|
136
|
+
// hearing only the second sends somebody after the wrong problem.
|
|
137
|
+
// The usual one is a checkout that has never seen the base.
|
|
138
|
+
throw new Error(`${why}\n\nReading it from a fetched ref instead did not work either: diffing ${base}...${head} in ${root} said ${read.stderr.trim() || `exit ${read.code}`}. Fetch ${base} into that checkout and try again.`);
|
|
139
|
+
}
|
|
140
|
+
return read.stdout;
|
|
141
|
+
}
|
|
142
|
+
function diff() {
|
|
143
|
+
// One read per bound target: a diff is asked for by the
|
|
144
|
+
// council, the planner and the renderer in turn.
|
|
145
|
+
diffText ??= readDiff();
|
|
146
|
+
return diffText;
|
|
147
|
+
}
|
|
148
|
+
return {
|
|
149
|
+
target,
|
|
150
|
+
provider,
|
|
151
|
+
repo,
|
|
152
|
+
via,
|
|
153
|
+
capabilities: provider.capabilities(repo),
|
|
154
|
+
conversation: target.kind === "proposal" ? (provider.conversation ?? null) : null,
|
|
155
|
+
async proposal() {
|
|
156
|
+
if (target.kind !== "proposal" || !provider.proposals)
|
|
157
|
+
return null;
|
|
158
|
+
return provider.proposals.fetch(target.change);
|
|
159
|
+
},
|
|
160
|
+
diff,
|
|
161
|
+
async diffModel() {
|
|
162
|
+
return parseUnifiedDiff(await diff());
|
|
163
|
+
},
|
|
164
|
+
async stack() {
|
|
165
|
+
if (!provider.stacking)
|
|
166
|
+
return null;
|
|
167
|
+
if (target.kind === "proposal") {
|
|
168
|
+
return provider.stacking.stack(target.change);
|
|
169
|
+
}
|
|
170
|
+
const { head } = endpointsOf(target);
|
|
171
|
+
return provider.stacking.stack({ repo, ref: head });
|
|
172
|
+
},
|
|
173
|
+
async checks() {
|
|
174
|
+
if (target.kind !== "proposal" || !provider.proposals?.checks) {
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
return provider.proposals.checks(target.change);
|
|
178
|
+
},
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
/** Resolve a target to its provider, throwing the guidance. */
|
|
182
|
+
function bindTargetOrThrow(target, context) {
|
|
183
|
+
const resolved = resolveTarget(target, {
|
|
184
|
+
...(deps.config ? { config: deps.config } : {}),
|
|
185
|
+
...(context.probe ? { probe: context.probe } : {}),
|
|
186
|
+
});
|
|
187
|
+
if (!resolved.resolved)
|
|
188
|
+
throw new Error(resolved.message);
|
|
189
|
+
return bind(target, resolved.provider, resolved.repo, resolved.via);
|
|
190
|
+
}
|
|
191
|
+
return {
|
|
192
|
+
probe,
|
|
193
|
+
async resolve(input, cwd) {
|
|
194
|
+
const probed = cwd ? await probe(cwd) : undefined;
|
|
195
|
+
const resolution = resolveReference(input, {
|
|
196
|
+
...(deps.config ? { config: deps.config } : {}),
|
|
197
|
+
...(probed ? { probe: probed } : {}),
|
|
198
|
+
});
|
|
199
|
+
if (!resolution.resolved)
|
|
200
|
+
throw new Error(resolution.message);
|
|
201
|
+
const target = {
|
|
202
|
+
kind: "proposal",
|
|
203
|
+
change: resolution.change,
|
|
204
|
+
};
|
|
205
|
+
return bind(target, resolution.provider, resolution.change.repo, resolution.via);
|
|
206
|
+
},
|
|
207
|
+
async bound(change) {
|
|
208
|
+
// A change kept from an earlier resolution names its own provider,
|
|
209
|
+
// which is the whole reason this path exists rather than asking
|
|
210
|
+
// again. Nothing was claimed here, so nothing about claiming is
|
|
211
|
+
// true of it: it resolved the way a pin does, by being told.
|
|
212
|
+
return bind({ kind: "proposal", change }, providerFor(change.provider), change.repo, "config-repo");
|
|
213
|
+
},
|
|
214
|
+
async serving(cwd) {
|
|
215
|
+
const probed = await probe(cwd);
|
|
216
|
+
const resolved = resolveRepo(probed, {
|
|
217
|
+
...(deps.config ? { config: deps.config } : {}),
|
|
218
|
+
});
|
|
219
|
+
if (!resolved.resolved)
|
|
220
|
+
throw new Error(resolved.message);
|
|
221
|
+
return {
|
|
222
|
+
provider: resolved.provider,
|
|
223
|
+
repo: resolved.repo,
|
|
224
|
+
via: resolved.via,
|
|
225
|
+
capabilities: resolved.provider.capabilities(resolved.repo),
|
|
226
|
+
};
|
|
227
|
+
},
|
|
228
|
+
async fromLocal(repoRoot, spec) {
|
|
229
|
+
const probed = await probe(repoRoot);
|
|
230
|
+
const repo = {
|
|
231
|
+
key: `local:${probed.repoRoot ?? repoRoot}`,
|
|
232
|
+
localPath: probed.repoRoot ?? repoRoot,
|
|
233
|
+
};
|
|
234
|
+
const target = "refs" in spec
|
|
235
|
+
? { kind: "stack", repo, refs: spec.refs }
|
|
236
|
+
: { kind: "range", repo, base: spec.base, head: spec.head };
|
|
237
|
+
return bindTargetOrThrow(target, { probe: probed });
|
|
238
|
+
},
|
|
239
|
+
openDraft: (target) => openDraft(target, draftDeps),
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
/** Kept so the stub compiles against its imports. */
|
|
243
|
+
void [openDraft, parseUnifiedDiff, resolveReference, resolveTarget, run];
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The bus contract between the substrate and its providers.
|
|
3
|
+
*
|
|
4
|
+
* A provider registers over the event bus rather than by
|
|
5
|
+
* importing the registry, so a provider can live in a
|
|
6
|
+
* different package from the host without either one
|
|
7
|
+
* depending on the other's module graph. The names are
|
|
8
|
+
* versioned because the payload is a public contract; a
|
|
9
|
+
* breaking change ships as `:v2` beside the old one rather
|
|
10
|
+
* than quietly changing what `:v1` means.
|
|
11
|
+
*
|
|
12
|
+
* Both directions of the handshake matter. The host emits
|
|
13
|
+
* `REVIEW_READY` when its registry is live, and a provider
|
|
14
|
+
* listens for it so it can re-register after the host
|
|
15
|
+
* reloads. A provider also emits `REVIEW_REGISTER_PROVIDER`
|
|
16
|
+
* on its own activation, in case the host was already up.
|
|
17
|
+
* Either order works, and both are idempotent.
|
|
18
|
+
*
|
|
19
|
+
* A consumer needs the same courtesy for the opposite reason.
|
|
20
|
+
* The bus does not replay, so a consumer that activated after
|
|
21
|
+
* the host missed the announcement and has no way to know it
|
|
22
|
+
* happened. `REVIEW_REQUEST_SUBSTRATE` is how it asks; the host
|
|
23
|
+
* answers by announcing itself again. Load order therefore
|
|
24
|
+
* decides nothing, which is the point: an extension cannot
|
|
25
|
+
* choose when it is loaded relative to another.
|
|
26
|
+
*/
|
|
27
|
+
import type { ReviewEngine } from "./engine.js";
|
|
28
|
+
import type { ReviewProvider } from "./provider.js";
|
|
29
|
+
/** Emitted by the host once its registry accepts providers. */
|
|
30
|
+
export declare const REVIEW_READY = "review:ready:v1";
|
|
31
|
+
/** Emitted by a provider to register itself with the host. */
|
|
32
|
+
export declare const REVIEW_REGISTER_PROVIDER = "review:provider:register:v1";
|
|
33
|
+
/**
|
|
34
|
+
* Emitted by a consumer asking the host to announce itself, for
|
|
35
|
+
* when the consumer loaded second and missed {@link REVIEW_READY}.
|
|
36
|
+
*/
|
|
37
|
+
export declare const REVIEW_REQUEST_SUBSTRATE = "review:request:v1";
|
|
38
|
+
/** What the host hands out over {@link REVIEW_READY}. */
|
|
39
|
+
export interface ReviewSubstrateApi {
|
|
40
|
+
/** Register a provider. Replaces one with the same id. */
|
|
41
|
+
registerProvider(provider: ReviewProvider): void;
|
|
42
|
+
/** Ids of every registered provider, in claim order. */
|
|
43
|
+
listProviders(): readonly string[];
|
|
44
|
+
/**
|
|
45
|
+
* The host's own engine.
|
|
46
|
+
*
|
|
47
|
+
* Shared rather than rebuilt, so a consumer resolves against
|
|
48
|
+
* the same registry the host announced. A consumer with its
|
|
49
|
+
* own engine would see only the providers it registered
|
|
50
|
+
* itself, which means a provider that arrived over the bus
|
|
51
|
+
* would be invisible to it: exactly the case this contract
|
|
52
|
+
* exists to serve.
|
|
53
|
+
*
|
|
54
|
+
* Asked for rather than handed over, because building it
|
|
55
|
+
* means reading configuration from disk, and the
|
|
56
|
+
* announcement cannot wait on that.
|
|
57
|
+
*/
|
|
58
|
+
engine(): Promise<ReviewEngine>;
|
|
59
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The bus contract between the substrate and its providers.
|
|
3
|
+
*
|
|
4
|
+
* A provider registers over the event bus rather than by
|
|
5
|
+
* importing the registry, so a provider can live in a
|
|
6
|
+
* different package from the host without either one
|
|
7
|
+
* depending on the other's module graph. The names are
|
|
8
|
+
* versioned because the payload is a public contract; a
|
|
9
|
+
* breaking change ships as `:v2` beside the old one rather
|
|
10
|
+
* than quietly changing what `:v1` means.
|
|
11
|
+
*
|
|
12
|
+
* Both directions of the handshake matter. The host emits
|
|
13
|
+
* `REVIEW_READY` when its registry is live, and a provider
|
|
14
|
+
* listens for it so it can re-register after the host
|
|
15
|
+
* reloads. A provider also emits `REVIEW_REGISTER_PROVIDER`
|
|
16
|
+
* on its own activation, in case the host was already up.
|
|
17
|
+
* Either order works, and both are idempotent.
|
|
18
|
+
*
|
|
19
|
+
* A consumer needs the same courtesy for the opposite reason.
|
|
20
|
+
* The bus does not replay, so a consumer that activated after
|
|
21
|
+
* the host missed the announcement and has no way to know it
|
|
22
|
+
* happened. `REVIEW_REQUEST_SUBSTRATE` is how it asks; the host
|
|
23
|
+
* answers by announcing itself again. Load order therefore
|
|
24
|
+
* decides nothing, which is the point: an extension cannot
|
|
25
|
+
* choose when it is loaded relative to another.
|
|
26
|
+
*/
|
|
27
|
+
/** Emitted by the host once its registry accepts providers. */
|
|
28
|
+
export const REVIEW_READY = "review:ready:v1";
|
|
29
|
+
/** Emitted by a provider to register itself with the host. */
|
|
30
|
+
export const REVIEW_REGISTER_PROVIDER = "review:provider:register:v1";
|
|
31
|
+
/**
|
|
32
|
+
* Emitted by a consumer asking the host to announce itself, for
|
|
33
|
+
* when the consumer loaded second and missed {@link REVIEW_READY}.
|
|
34
|
+
*/
|
|
35
|
+
export const REVIEW_REQUEST_SUBSTRATE = "review:request:v1";
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a failure against a hosted change should say.
|
|
3
|
+
*
|
|
4
|
+
* A provider's own error is about its own request, which is the right thing
|
|
5
|
+
* for it to report and not enough to act on. `gh: Not Found (HTTP 404)` is the
|
|
6
|
+
* example that prompted this: it named neither the change, nor the provider
|
|
7
|
+
* asked for it, nor the one setting that decides which provider gets asked.
|
|
8
|
+
*
|
|
9
|
+
* The missing fact is how the provider came to own the reference. A shape like
|
|
10
|
+
* `owner/repo#n` belongs to no system in particular, so a reference resolved
|
|
11
|
+
* by claim landed on whichever provider recognized the shape first, and a
|
|
12
|
+
* not-found there is as likely to mean the wrong system as a missing change.
|
|
13
|
+
* Resolved from config, the same not-found means what it says.
|
|
14
|
+
*/
|
|
15
|
+
import type { RepoLocator } from "./change.js";
|
|
16
|
+
import type { ResolvedVia } from "./resolve.js";
|
|
17
|
+
/** Just enough of a bound target to explain a failure against it. */
|
|
18
|
+
export interface FailureContext {
|
|
19
|
+
provider: {
|
|
20
|
+
id: string;
|
|
21
|
+
};
|
|
22
|
+
repo: RepoLocator;
|
|
23
|
+
via: ResolvedVia;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* True when a message reads like the system was asked about something it does
|
|
27
|
+
* not have.
|
|
28
|
+
*
|
|
29
|
+
* Deliberately narrow. A 422 is the backend understanding the request and
|
|
30
|
+
* rejecting its contents, which is a real answer about a real change, and
|
|
31
|
+
* decorating it with "you may be on the wrong system" would be wrong and
|
|
32
|
+
* would train a reader to skip the decoration when it counts.
|
|
33
|
+
*/
|
|
34
|
+
export declare function readsAsMissing(message: string): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* A failure message with the context needed to act on it.
|
|
37
|
+
*
|
|
38
|
+
* Takes the message as thrown rather than composing one, since whatever threw
|
|
39
|
+
* already said what it was attempting, and a second prefix in front of that
|
|
40
|
+
* reads like two failures.
|
|
41
|
+
*
|
|
42
|
+
* Adds nothing when the failure is not a not-found, and nothing when config
|
|
43
|
+
* already decided the provider, since a pin cannot be the advice when a pin
|
|
44
|
+
* is what got us here.
|
|
45
|
+
*/
|
|
46
|
+
export declare function explainFailure(message: string, context: FailureContext): string;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a failure against a hosted change should say.
|
|
3
|
+
*
|
|
4
|
+
* A provider's own error is about its own request, which is the right thing
|
|
5
|
+
* for it to report and not enough to act on. `gh: Not Found (HTTP 404)` is the
|
|
6
|
+
* example that prompted this: it named neither the change, nor the provider
|
|
7
|
+
* asked for it, nor the one setting that decides which provider gets asked.
|
|
8
|
+
*
|
|
9
|
+
* The missing fact is how the provider came to own the reference. A shape like
|
|
10
|
+
* `owner/repo#n` belongs to no system in particular, so a reference resolved
|
|
11
|
+
* by claim landed on whichever provider recognized the shape first, and a
|
|
12
|
+
* not-found there is as likely to mean the wrong system as a missing change.
|
|
13
|
+
* Resolved from config, the same not-found means what it says.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* True when a message reads like the system was asked about something it does
|
|
17
|
+
* not have.
|
|
18
|
+
*
|
|
19
|
+
* Deliberately narrow. A 422 is the backend understanding the request and
|
|
20
|
+
* rejecting its contents, which is a real answer about a real change, and
|
|
21
|
+
* decorating it with "you may be on the wrong system" would be wrong and
|
|
22
|
+
* would train a reader to skip the decoration when it counts.
|
|
23
|
+
*/
|
|
24
|
+
export function readsAsMissing(message) {
|
|
25
|
+
const lowered = message.toLowerCase();
|
|
26
|
+
return (lowered.includes("not found") ||
|
|
27
|
+
lowered.includes("404") ||
|
|
28
|
+
lowered.includes("could not resolve to") ||
|
|
29
|
+
lowered.includes("no such"));
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* A failure message with the context needed to act on it.
|
|
33
|
+
*
|
|
34
|
+
* Takes the message as thrown rather than composing one, since whatever threw
|
|
35
|
+
* already said what it was attempting, and a second prefix in front of that
|
|
36
|
+
* reads like two failures.
|
|
37
|
+
*
|
|
38
|
+
* Adds nothing when the failure is not a not-found, and nothing when config
|
|
39
|
+
* already decided the provider, since a pin cannot be the advice when a pin
|
|
40
|
+
* is what got us here.
|
|
41
|
+
*/
|
|
42
|
+
export function explainFailure(message, context) {
|
|
43
|
+
const stated = message;
|
|
44
|
+
if (!readsAsMissing(message))
|
|
45
|
+
return stated;
|
|
46
|
+
if (context.via !== "claim")
|
|
47
|
+
return stated;
|
|
48
|
+
const owned = context.repo.key.split(":").slice(1).join(":");
|
|
49
|
+
const named = owned === "" ? context.repo.key : owned;
|
|
50
|
+
return [
|
|
51
|
+
stated,
|
|
52
|
+
"",
|
|
53
|
+
`The ${context.provider.id} provider was asked, because it recognized the shape of that reference rather than because anything said ${named} is served there.`,
|
|
54
|
+
`If another system serves ${named}, pin it under review.repos, or name the change by its url.`,
|
|
55
|
+
].join("\n");
|
|
56
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A produced finding, held by the substrate.
|
|
3
|
+
*
|
|
4
|
+
* Something reviewed a change and has an observation about it.
|
|
5
|
+
* That observation outlives the thing that produced it: a council
|
|
6
|
+
* run ends, the session carries on, and the findings have to still
|
|
7
|
+
* be there to be read, curated and turned into remarks. So the
|
|
8
|
+
* substrate holds them, not whichever machinery raised them.
|
|
9
|
+
*
|
|
10
|
+
* A finding points at a place through the same `Anchor` a remark
|
|
11
|
+
* uses. That is deliberate rather than convenient: it means a
|
|
12
|
+
* finding carries a witness commit, so one raised against an
|
|
13
|
+
* earlier commit can be told it has gone stale instead of being
|
|
14
|
+
* posted at a line that has since moved.
|
|
15
|
+
*/
|
|
16
|
+
import type { Anchor } from "./anchor.js";
|
|
17
|
+
import type { ChangeRef } from "./change.js";
|
|
18
|
+
/**
|
|
19
|
+
* Conventional Comments labels, which say what kind of remark
|
|
20
|
+
* this is before it says anything else.
|
|
21
|
+
*/
|
|
22
|
+
export type ConventionalLabel = "praise" | "nitpick" | "suggestion" | "issue" | "todo" | "question" | "thought" | "chore" | "note";
|
|
23
|
+
/** How much it matters, when whatever raised it says. */
|
|
24
|
+
export type FindingSeverity = "critical" | "medium" | "minor";
|
|
25
|
+
/**
|
|
26
|
+
* Where a finding came from.
|
|
27
|
+
*
|
|
28
|
+
* No forge appears here, and none should: this says which pass of
|
|
29
|
+
* which run raised the thing, which is a fact about the reviewing
|
|
30
|
+
* rather than about what hosts the change. A finding somebody
|
|
31
|
+
* typed is `hand`, and it is deliberately not called `user`,
|
|
32
|
+
* since the agent writing one by hand is the same act.
|
|
33
|
+
*/
|
|
34
|
+
export type FindingOrigin = {
|
|
35
|
+
kind: "hand";
|
|
36
|
+
} | {
|
|
37
|
+
kind: "reviewer";
|
|
38
|
+
runId: string;
|
|
39
|
+
reviewerId: string;
|
|
40
|
+
} | {
|
|
41
|
+
kind: "judge";
|
|
42
|
+
runId: string;
|
|
43
|
+
reviewerId: string;
|
|
44
|
+
};
|
|
45
|
+
/** One observation about a change. */
|
|
46
|
+
export interface Finding {
|
|
47
|
+
/**
|
|
48
|
+
* Stable within a change, climbing and never reused, because
|
|
49
|
+
* people refer to findings by number out loud and a number
|
|
50
|
+
* that gets recycled makes a conversation wrong later.
|
|
51
|
+
*/
|
|
52
|
+
id: number;
|
|
53
|
+
/** Where it points, witness and all. */
|
|
54
|
+
anchor: Anchor;
|
|
55
|
+
label: ConventionalLabel;
|
|
56
|
+
/** The one-line claim. */
|
|
57
|
+
subject: string;
|
|
58
|
+
/** The argument for it. */
|
|
59
|
+
discussion: string;
|
|
60
|
+
origin: FindingOrigin;
|
|
61
|
+
severity?: FindingSeverity;
|
|
62
|
+
/** How sure the producer was, where it says. */
|
|
63
|
+
confidence?: number;
|
|
64
|
+
/**
|
|
65
|
+
* Reviewer ids that raised the same thing, set when a pass
|
|
66
|
+
* consolidates several into one. Agreement is evidence, so it
|
|
67
|
+
* is worth keeping rather than collapsing.
|
|
68
|
+
*/
|
|
69
|
+
raisedBy?: string[];
|
|
70
|
+
}
|
|
71
|
+
/** Findings held per change, outliving whatever produced them. */
|
|
72
|
+
export interface FindingStore {
|
|
73
|
+
/** Add findings to a change, numbering them as they land. */
|
|
74
|
+
record(change: ChangeRef, findings: Omit<Finding, "id">[]): Promise<Finding[]>;
|
|
75
|
+
/** Every finding on a change, in the order they were raised. */
|
|
76
|
+
list(change: ChangeRef): Promise<Finding[]>;
|
|
77
|
+
/** Forget a change's findings, without rewinding its numbering. */
|
|
78
|
+
clear(change: ChangeRef): Promise<void>;
|
|
79
|
+
}
|
|
80
|
+
/** Findings on disk, one file per change. */
|
|
81
|
+
export declare function createFindingStore(root: string): FindingStore;
|