@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,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a change stands with a merge queue, and what that costs.
|
|
3
|
+
*
|
|
4
|
+
* This exists because the substrate had the refusal and not the fact. An
|
|
5
|
+
* authoring intent could carry `enqueued: true` and be refused for it,
|
|
6
|
+
* but nothing ever read the queue from a provider, so the gate was
|
|
7
|
+
* unreachable and every mutation went through.
|
|
8
|
+
*/
|
|
9
|
+
/** `1st`, `2nd`, `3rd`, `4th`. */
|
|
10
|
+
function ordinal(n) {
|
|
11
|
+
const teen = n % 100;
|
|
12
|
+
if (teen >= 11 && teen <= 13)
|
|
13
|
+
return `${n}th`;
|
|
14
|
+
const suffix = { 1: "st", 2: "nd", 3: "rd" }[n % 10] ?? "th";
|
|
15
|
+
return `${n}${suffix}`;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Why a mutation should not happen right now, or nothing.
|
|
19
|
+
*
|
|
20
|
+
* Two hazards, deliberately answered separately, because they have
|
|
21
|
+
* different fixes and a message covering both would name neither.
|
|
22
|
+
*
|
|
23
|
+
* A queued change ejects when it changes, and takes everything
|
|
24
|
+
* speculatively batched with it. That is the expensive one, and it is
|
|
25
|
+
* only expensive when the change is batched, so `solo` is respected: a
|
|
26
|
+
* refusal that claims hundreds of jobs for a change being tested alone
|
|
27
|
+
* teaches the reader to stop believing refusals.
|
|
28
|
+
*
|
|
29
|
+
* A waiting change has a subtler problem. The checks ran once, when it
|
|
30
|
+
* was marked ready, and a later commit does not retrigger them. So a
|
|
31
|
+
* mutation does not eject anything; it strands the change with results
|
|
32
|
+
* that describe code nobody has now.
|
|
33
|
+
*/
|
|
34
|
+
export function queueRefusal(queue, providerId) {
|
|
35
|
+
// Absent is unknown rather than queued. A provider with no queue must
|
|
36
|
+
// not have every mutation refused on suspicion.
|
|
37
|
+
if (queue === undefined || queue.posture === "unqueued")
|
|
38
|
+
return undefined;
|
|
39
|
+
const said = queue.detail ? ` The backend says: ${queue.detail}.` : "";
|
|
40
|
+
if (queue.posture === "waiting") {
|
|
41
|
+
return {
|
|
42
|
+
reason: `This change is waiting on checks to merge on ${providerId}, and those checks ran once when it was marked ready. Changing it now does not run them again, so the results would describe code that no longer exists.${said}`,
|
|
43
|
+
instead: "Cancel the merge, make the change, then re-run the checks and queue it again.",
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
const place = queue.position === undefined
|
|
47
|
+
? ""
|
|
48
|
+
: ` It is ${ordinal(queue.position)} in line.`;
|
|
49
|
+
const batch = queue.solo === true
|
|
50
|
+
? ""
|
|
51
|
+
: " Everything speculatively batched with it is ejected too, and re-running the checks for the rest is measured in hundreds of jobs.";
|
|
52
|
+
return {
|
|
53
|
+
reason: `This change is queued to merge on ${providerId}, and changing it now ejects it from the queue.${batch}${place}${said}`,
|
|
54
|
+
instead: "Cancel the merge, make the change, and queue it again, or wait for it to land.",
|
|
55
|
+
};
|
|
56
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Addressing one comment out of a conversation.
|
|
3
|
+
*
|
|
4
|
+
* A thread has an address a person can read and repeat: the listing numbers
|
|
5
|
+
* threads `[T1]`, `[T2]`, and every tool that acts on one takes that number.
|
|
6
|
+
* The rule that goes with it is stated in the tool's own guidelines: refer to
|
|
7
|
+
* a thread by the index the listing shows, never invent one.
|
|
8
|
+
*
|
|
9
|
+
* A comment had no such address. Reacting to one needed a provider's internal
|
|
10
|
+
* id, `rc:2098169118733` on GitHub, which no listing printed anywhere, so the
|
|
11
|
+
* only way to name a comment was to guess at a number the surface had never
|
|
12
|
+
* shown. The rule against inventing ids was stated and, for reactions, not
|
|
13
|
+
* backed by anything.
|
|
14
|
+
*
|
|
15
|
+
* So comments are numbered too, and the numbering lives here rather than in a
|
|
16
|
+
* renderer because it has to survive being computed twice: once to render a
|
|
17
|
+
* listing and again to resolve what somebody read off it. Those are separate
|
|
18
|
+
* reads of the conversation, and a number meaning one comment in the listing
|
|
19
|
+
* and another at resolution would be worse than no number at all.
|
|
20
|
+
*
|
|
21
|
+
* What keeps them agreeing is that the address says which kind of comment it
|
|
22
|
+
* is. A remark inside a thread is `[C1]` upward; a top-level message is `[M1]`
|
|
23
|
+
* upward. Because the two families are numbered apart, a caller holding only
|
|
24
|
+
* the threads computes exactly the labels a caller holding the whole
|
|
25
|
+
* conversation computes for those same threads, and the listing that shows
|
|
26
|
+
* only messages does not have to fetch every thread to number them. Sharing
|
|
27
|
+
* one space would have made every listing read the whole conversation to
|
|
28
|
+
* print an address for a part of it.
|
|
29
|
+
*/
|
|
30
|
+
import type { Message, Thread } from "./conversation.js";
|
|
31
|
+
/** Which family a comment's address belongs to. */
|
|
32
|
+
export type ReactableKind = "comment" | "message";
|
|
33
|
+
/** One comment, with the address a listing prints for it. */
|
|
34
|
+
export interface Reactable {
|
|
35
|
+
/** Whether it sits in a thread or stands on its own. */
|
|
36
|
+
kind: ReactableKind;
|
|
37
|
+
/** The 1-based number within its own family. */
|
|
38
|
+
index: number;
|
|
39
|
+
/** The address itself, as `[C3]`, so a renderer does not rebuild it. */
|
|
40
|
+
label: string;
|
|
41
|
+
/** The comment, whole, for handing to a provider. */
|
|
42
|
+
message: Message;
|
|
43
|
+
/** The thread it sits in, when it sits in one. */
|
|
44
|
+
thread?: Thread;
|
|
45
|
+
}
|
|
46
|
+
/** The address a listing prints for the nth comment of a kind. */
|
|
47
|
+
export declare function reactableLabel(kind: ReactableKind, index: number): string;
|
|
48
|
+
/**
|
|
49
|
+
* Number every comment in a conversation, or in the part of one to hand.
|
|
50
|
+
*
|
|
51
|
+
* Both arguments are optional because the two listings that print these
|
|
52
|
+
* addresses each hold half the conversation, and neither should have to fetch
|
|
53
|
+
* the other half to number what it already has.
|
|
54
|
+
*
|
|
55
|
+
* Order within a family is by the provider's own order, since that is what the
|
|
56
|
+
* listing shows and a number that disagreed with the line it sits on would be
|
|
57
|
+
* unusable. Threads are walked in the order given for the same reason.
|
|
58
|
+
*/
|
|
59
|
+
export declare function reactables(conversation: {
|
|
60
|
+
threads?: Thread[];
|
|
61
|
+
messages?: Message[];
|
|
62
|
+
}): Reactable[];
|
|
63
|
+
/**
|
|
64
|
+
* What a listing needs to print an address beside each comment.
|
|
65
|
+
*
|
|
66
|
+
* By comment id, because a renderer walks the conversation in its own shape
|
|
67
|
+
* and should not have to search a list to find the label for the line it is
|
|
68
|
+
* on.
|
|
69
|
+
*/
|
|
70
|
+
export declare function reactableAddresses(among: Reactable[]): Map<string, string>;
|
|
71
|
+
/** What went wrong when a comment could not be found. */
|
|
72
|
+
export interface ReactableRefusal {
|
|
73
|
+
reason: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Resolve what somebody typed into the comment they meant.
|
|
77
|
+
*
|
|
78
|
+
* Takes the `[C3]` or `[M1]` a listing printed, or a provider's own id for the
|
|
79
|
+
* times one is to hand from elsewhere. The address is the discoverable form
|
|
80
|
+
* and the reason this exists; the raw id stays accepted because a caller who
|
|
81
|
+
* already holds one should not have to go and find its number.
|
|
82
|
+
*
|
|
83
|
+
* A bare number is refused rather than guessed at. It is ambiguous between the
|
|
84
|
+
* two families, and picking one would react to the wrong comment about half
|
|
85
|
+
* the time while looking like it worked.
|
|
86
|
+
*
|
|
87
|
+
* Every refusal says where the right answer comes from, since being told a
|
|
88
|
+
* number is wrong without being told where numbers come from leaves a caller
|
|
89
|
+
* guessing exactly as it was before.
|
|
90
|
+
*/
|
|
91
|
+
export declare function findReactable(asked: string, among: Reactable[]): Reactable | ReactableRefusal;
|
|
92
|
+
/** Whether resolving a comment failed. */
|
|
93
|
+
export declare function isReactableRefusal(outcome: Reactable | ReactableRefusal): outcome is ReactableRefusal;
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Addressing one comment out of a conversation.
|
|
3
|
+
*
|
|
4
|
+
* A thread has an address a person can read and repeat: the listing numbers
|
|
5
|
+
* threads `[T1]`, `[T2]`, and every tool that acts on one takes that number.
|
|
6
|
+
* The rule that goes with it is stated in the tool's own guidelines: refer to
|
|
7
|
+
* a thread by the index the listing shows, never invent one.
|
|
8
|
+
*
|
|
9
|
+
* A comment had no such address. Reacting to one needed a provider's internal
|
|
10
|
+
* id, `rc:2098169118733` on GitHub, which no listing printed anywhere, so the
|
|
11
|
+
* only way to name a comment was to guess at a number the surface had never
|
|
12
|
+
* shown. The rule against inventing ids was stated and, for reactions, not
|
|
13
|
+
* backed by anything.
|
|
14
|
+
*
|
|
15
|
+
* So comments are numbered too, and the numbering lives here rather than in a
|
|
16
|
+
* renderer because it has to survive being computed twice: once to render a
|
|
17
|
+
* listing and again to resolve what somebody read off it. Those are separate
|
|
18
|
+
* reads of the conversation, and a number meaning one comment in the listing
|
|
19
|
+
* and another at resolution would be worse than no number at all.
|
|
20
|
+
*
|
|
21
|
+
* What keeps them agreeing is that the address says which kind of comment it
|
|
22
|
+
* is. A remark inside a thread is `[C1]` upward; a top-level message is `[M1]`
|
|
23
|
+
* upward. Because the two families are numbered apart, a caller holding only
|
|
24
|
+
* the threads computes exactly the labels a caller holding the whole
|
|
25
|
+
* conversation computes for those same threads, and the listing that shows
|
|
26
|
+
* only messages does not have to fetch every thread to number them. Sharing
|
|
27
|
+
* one space would have made every listing read the whole conversation to
|
|
28
|
+
* print an address for a part of it.
|
|
29
|
+
*/
|
|
30
|
+
/** The letter each family is addressed by. */
|
|
31
|
+
const LETTER = {
|
|
32
|
+
comment: "C",
|
|
33
|
+
message: "M",
|
|
34
|
+
};
|
|
35
|
+
/** The address a listing prints for the nth comment of a kind. */
|
|
36
|
+
export function reactableLabel(kind, index) {
|
|
37
|
+
return `[${LETTER[kind]}${index}]`;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Number every comment in a conversation, or in the part of one to hand.
|
|
41
|
+
*
|
|
42
|
+
* Both arguments are optional because the two listings that print these
|
|
43
|
+
* addresses each hold half the conversation, and neither should have to fetch
|
|
44
|
+
* the other half to number what it already has.
|
|
45
|
+
*
|
|
46
|
+
* Order within a family is by the provider's own order, since that is what the
|
|
47
|
+
* listing shows and a number that disagreed with the line it sits on would be
|
|
48
|
+
* unusable. Threads are walked in the order given for the same reason.
|
|
49
|
+
*/
|
|
50
|
+
export function reactables(conversation) {
|
|
51
|
+
const found = [];
|
|
52
|
+
let comments = 0;
|
|
53
|
+
for (const thread of conversation.threads ?? []) {
|
|
54
|
+
for (const message of thread.comments) {
|
|
55
|
+
comments += 1;
|
|
56
|
+
found.push({
|
|
57
|
+
kind: "comment",
|
|
58
|
+
index: comments,
|
|
59
|
+
label: reactableLabel("comment", comments),
|
|
60
|
+
message,
|
|
61
|
+
thread,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
let messages = 0;
|
|
66
|
+
for (const message of conversation.messages ?? []) {
|
|
67
|
+
messages += 1;
|
|
68
|
+
found.push({
|
|
69
|
+
kind: "message",
|
|
70
|
+
index: messages,
|
|
71
|
+
label: reactableLabel("message", messages),
|
|
72
|
+
message,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
return found;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* What a listing needs to print an address beside each comment.
|
|
79
|
+
*
|
|
80
|
+
* By comment id, because a renderer walks the conversation in its own shape
|
|
81
|
+
* and should not have to search a list to find the label for the line it is
|
|
82
|
+
* on.
|
|
83
|
+
*/
|
|
84
|
+
export function reactableAddresses(among) {
|
|
85
|
+
return new Map(among.map((one) => [one.message.id, one.label]));
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Resolve what somebody typed into the comment they meant.
|
|
89
|
+
*
|
|
90
|
+
* Takes the `[C3]` or `[M1]` a listing printed, or a provider's own id for the
|
|
91
|
+
* times one is to hand from elsewhere. The address is the discoverable form
|
|
92
|
+
* and the reason this exists; the raw id stays accepted because a caller who
|
|
93
|
+
* already holds one should not have to go and find its number.
|
|
94
|
+
*
|
|
95
|
+
* A bare number is refused rather than guessed at. It is ambiguous between the
|
|
96
|
+
* two families, and picking one would react to the wrong comment about half
|
|
97
|
+
* the time while looking like it worked.
|
|
98
|
+
*
|
|
99
|
+
* Every refusal says where the right answer comes from, since being told a
|
|
100
|
+
* number is wrong without being told where numbers come from leaves a caller
|
|
101
|
+
* guessing exactly as it was before.
|
|
102
|
+
*/
|
|
103
|
+
export function findReactable(asked, among) {
|
|
104
|
+
const wanted = asked.trim();
|
|
105
|
+
if (wanted === "") {
|
|
106
|
+
return { reason: "Naming a comment needs something to go on." };
|
|
107
|
+
}
|
|
108
|
+
const addressed = /^\[?([CcMm])(\d+)\]?$/.exec(wanted);
|
|
109
|
+
if (addressed) {
|
|
110
|
+
const kind = addressed[1].toLowerCase() === "c" ? "comment" : "message";
|
|
111
|
+
const at = Number(addressed[2]);
|
|
112
|
+
const family = among.filter((one) => one.kind === kind);
|
|
113
|
+
const found = family.find((one) => one.index === at);
|
|
114
|
+
if (found)
|
|
115
|
+
return found;
|
|
116
|
+
const where = kind === "comment"
|
|
117
|
+
? "Read the threads; the listing addresses every remark in them."
|
|
118
|
+
: "Read the messages; the listing addresses each one.";
|
|
119
|
+
return {
|
|
120
|
+
reason: family.length === 0
|
|
121
|
+
? `There are no ${kind === "comment" ? "thread remarks" : "top-level messages"} on this change to react to.`
|
|
122
|
+
: `There is no ${reactableLabel(kind, at)} on this change; that family runs ${reactableLabel(kind, 1)} to ${reactableLabel(kind, family.length)}. ${where}`,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
if (/^\d+$/.test(wanted)) {
|
|
126
|
+
return {
|
|
127
|
+
reason: `A bare ${wanted} does not say which comment: ${reactableLabel("comment", Number(wanted))} is a remark in a thread and ${reactableLabel("message", Number(wanted))} is a top-level message. Use the address the listing prints.`,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
const byId = among.find((one) => one.message.id === wanted);
|
|
131
|
+
if (byId)
|
|
132
|
+
return byId;
|
|
133
|
+
return {
|
|
134
|
+
reason: `Nothing on this change has the id ${wanted}. Read the threads or the messages and use the address the listing prints, which is what this is for.`,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
/** Whether resolving a comment failed. */
|
|
138
|
+
export function isReactableRefusal(outcome) {
|
|
139
|
+
return "reason" in outcome;
|
|
140
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider registration. Mirrors the tree library: explicit
|
|
3
|
+
* registration for built-ins, free functions for ad-hoc
|
|
4
|
+
* providers, an opt-out clear for tests.
|
|
5
|
+
*
|
|
6
|
+
* Listing sorts by claim priority rather than registration
|
|
7
|
+
* order, because the order providers are asked in is part of
|
|
8
|
+
* the contract and no caller should have to re-sort to get
|
|
9
|
+
* it right.
|
|
10
|
+
*/
|
|
11
|
+
import { type Unbacked } from "./backed.js";
|
|
12
|
+
import type { RepoLocator } from "./change.js";
|
|
13
|
+
import type { ReviewProvider } from "./provider.js";
|
|
14
|
+
/**
|
|
15
|
+
* What a provider was found saying about itself that is not true.
|
|
16
|
+
*
|
|
17
|
+
* Reported rather than thrown. A provider with one bad declaration still does
|
|
18
|
+
* everything else it says, and refusing to register it would take a working
|
|
19
|
+
* backend off the surface over a capability nobody in this session is going to
|
|
20
|
+
* reach for. The host says this out loud instead, which is the same bargain the
|
|
21
|
+
* rest of the substrate makes about degradation.
|
|
22
|
+
*/
|
|
23
|
+
export interface ProviderComplaint {
|
|
24
|
+
provider: string;
|
|
25
|
+
repo: string;
|
|
26
|
+
unbacked: Unbacked[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Register a provider. Replaces any provider already
|
|
30
|
+
* registered under the same id.
|
|
31
|
+
*
|
|
32
|
+
* Pass a repo to have the provider's declarations checked against its methods
|
|
33
|
+
* as it arrives, and act on whatever comes back. This is the only place that
|
|
34
|
+
* check can be made of every provider: the ones that matter arrive over the
|
|
35
|
+
* event bus from other packages, and a build-time gate cannot import one. For
|
|
36
|
+
* weeks the answer to that was a hand-copied table in each package, which is
|
|
37
|
+
* one rule and one guess about it.
|
|
38
|
+
*
|
|
39
|
+
* The repo is asked for rather than invented because a provider is entitled to
|
|
40
|
+
* answer differently for different repos, and one handed a key from a space it
|
|
41
|
+
* does not recognize returns a default and reports greens having compared
|
|
42
|
+
* nothing.
|
|
43
|
+
*/
|
|
44
|
+
export declare function registerReviewProvider(provider: ReviewProvider, against?: RepoLocator): ProviderComplaint | undefined;
|
|
45
|
+
/** Remove a provider from the registry. Idempotent. */
|
|
46
|
+
export declare function unregisterReviewProvider(id: string): void;
|
|
47
|
+
/** Look up a provider by id. */
|
|
48
|
+
export declare function getReviewProvider(id: string): ReviewProvider | undefined;
|
|
49
|
+
/** Every registered provider, in the order they are asked. */
|
|
50
|
+
export declare function listReviewProviders(): ReviewProvider[];
|
|
51
|
+
/** Empty the registry. Intended for tests. */
|
|
52
|
+
export declare function clearReviewProviders(): void;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider registration. Mirrors the tree library: explicit
|
|
3
|
+
* registration for built-ins, free functions for ad-hoc
|
|
4
|
+
* providers, an opt-out clear for tests.
|
|
5
|
+
*
|
|
6
|
+
* Listing sorts by claim priority rather than registration
|
|
7
|
+
* order, because the order providers are asked in is part of
|
|
8
|
+
* the contract and no caller should have to re-sort to get
|
|
9
|
+
* it right.
|
|
10
|
+
*/
|
|
11
|
+
import { clear, get, list, register, unregister, } from "../internal/review/registry.js";
|
|
12
|
+
import { unbackedDeclarations } from "./backed.js";
|
|
13
|
+
/**
|
|
14
|
+
* Register a provider. Replaces any provider already
|
|
15
|
+
* registered under the same id.
|
|
16
|
+
*
|
|
17
|
+
* Pass a repo to have the provider's declarations checked against its methods
|
|
18
|
+
* as it arrives, and act on whatever comes back. This is the only place that
|
|
19
|
+
* check can be made of every provider: the ones that matter arrive over the
|
|
20
|
+
* event bus from other packages, and a build-time gate cannot import one. For
|
|
21
|
+
* weeks the answer to that was a hand-copied table in each package, which is
|
|
22
|
+
* one rule and one guess about it.
|
|
23
|
+
*
|
|
24
|
+
* The repo is asked for rather than invented because a provider is entitled to
|
|
25
|
+
* answer differently for different repos, and one handed a key from a space it
|
|
26
|
+
* does not recognize returns a default and reports greens having compared
|
|
27
|
+
* nothing.
|
|
28
|
+
*/
|
|
29
|
+
export function registerReviewProvider(provider, against) {
|
|
30
|
+
register(provider);
|
|
31
|
+
if (!against)
|
|
32
|
+
return undefined;
|
|
33
|
+
const unbacked = unbackedDeclarations(provider, against);
|
|
34
|
+
return unbacked.length > 0
|
|
35
|
+
? { provider: provider.id, repo: against.key, unbacked }
|
|
36
|
+
: undefined;
|
|
37
|
+
}
|
|
38
|
+
/** Remove a provider from the registry. Idempotent. */
|
|
39
|
+
export function unregisterReviewProvider(id) {
|
|
40
|
+
unregister(id);
|
|
41
|
+
}
|
|
42
|
+
/** Look up a provider by id. */
|
|
43
|
+
export function getReviewProvider(id) {
|
|
44
|
+
return get(id);
|
|
45
|
+
}
|
|
46
|
+
/** Every registered provider, in the order they are asked. */
|
|
47
|
+
export function listReviewProviders() {
|
|
48
|
+
return [...list()].sort((a, b) => a.priority - b.priority);
|
|
49
|
+
}
|
|
50
|
+
/** Empty the registry. Intended for tests. */
|
|
51
|
+
export function clearReviewProviders() {
|
|
52
|
+
clear();
|
|
53
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which provider handles this reference.
|
|
3
|
+
*
|
|
4
|
+
* The order is declared rather than emergent, because the
|
|
5
|
+
* failure mode this replaces is a tool quietly reaching for
|
|
6
|
+
* the wrong backend. Config comes first, since only the user
|
|
7
|
+
* knows which of two backends mirroring the same repo is the
|
|
8
|
+
* real one this week. Then the providers themselves, in claim
|
|
9
|
+
* priority order, so adding a backend never means editing
|
|
10
|
+
* this file. Then the user's own reference shapes, which
|
|
11
|
+
* catch what no provider recognizes. Then a refusal that
|
|
12
|
+
* names the knob to turn: never a default.
|
|
13
|
+
*/
|
|
14
|
+
import type { ChangeRef } from "./change.js";
|
|
15
|
+
import type { ReviewConfig } from "./config.js";
|
|
16
|
+
import type { RepoProbe, ReviewProvider } from "./provider.js";
|
|
17
|
+
/** How a reference came to be resolved. */
|
|
18
|
+
export type ResolvedVia = "config-repo" | "claim" | "config-reference";
|
|
19
|
+
/** Why a reference could not be resolved. */
|
|
20
|
+
export type ResolutionRefusal = "no-providers" | "unclaimed";
|
|
21
|
+
/** What the caller knows when asking. */
|
|
22
|
+
export interface ResolveContext {
|
|
23
|
+
config?: ReviewConfig;
|
|
24
|
+
/** The checkout the question was asked from, when there is one. */
|
|
25
|
+
probe?: RepoProbe;
|
|
26
|
+
}
|
|
27
|
+
/** The answer, resolved or refused with guidance. */
|
|
28
|
+
export type Resolution = {
|
|
29
|
+
resolved: true;
|
|
30
|
+
change: ChangeRef;
|
|
31
|
+
provider: ReviewProvider;
|
|
32
|
+
via: ResolvedVia;
|
|
33
|
+
} | {
|
|
34
|
+
resolved: false;
|
|
35
|
+
reason: ResolutionRefusal;
|
|
36
|
+
/** Provider ids that were asked, in order. */
|
|
37
|
+
tried: string[];
|
|
38
|
+
/** What the user can do about it. */
|
|
39
|
+
message: string;
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* Where the config says a repo is checked out, if it says.
|
|
43
|
+
*
|
|
44
|
+
* Matched against the repo's key rather than against a probe, because
|
|
45
|
+
* the caller asking this has a repo and no directory: that is the
|
|
46
|
+
* whole situation it is for. The same substring rule as everywhere
|
|
47
|
+
* else, so one mapping serves both questions.
|
|
48
|
+
*/
|
|
49
|
+
export declare function checkoutFor(repoKey: string, config: ReviewConfig | undefined): string | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* Resolve a reference to a change and the provider owning it.
|
|
52
|
+
*
|
|
53
|
+
* A mapped repo gets first refusal, then every provider in
|
|
54
|
+
* claim order, then the user's own reference shapes. Nothing
|
|
55
|
+
* defaults: an unrecognized reference comes back as a refusal
|
|
56
|
+
* naming the knob that would fix it.
|
|
57
|
+
*/
|
|
58
|
+
export declare function resolveReference(input: string, context?: ResolveContext): Resolution;
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which provider handles this reference.
|
|
3
|
+
*
|
|
4
|
+
* The order is declared rather than emergent, because the
|
|
5
|
+
* failure mode this replaces is a tool quietly reaching for
|
|
6
|
+
* the wrong backend. Config comes first, since only the user
|
|
7
|
+
* knows which of two backends mirroring the same repo is the
|
|
8
|
+
* real one this week. Then the providers themselves, in claim
|
|
9
|
+
* priority order, so adding a backend never means editing
|
|
10
|
+
* this file. Then the user's own reference shapes, which
|
|
11
|
+
* catch what no provider recognizes. Then a refusal that
|
|
12
|
+
* names the knob to turn: never a default.
|
|
13
|
+
*/
|
|
14
|
+
import { getReviewProvider, listReviewProviders } from "./register.js";
|
|
15
|
+
/** Whether a mapping's match names this checkout. */
|
|
16
|
+
function mappingMatches(mapping, probe) {
|
|
17
|
+
const haystacks = [probe.repoRoot ?? "", ...(probe.remoteUrls ?? [])];
|
|
18
|
+
return haystacks.some((value) => value.includes(mapping.match));
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Where the config says a repo is checked out, if it says.
|
|
22
|
+
*
|
|
23
|
+
* Matched against the repo's key rather than against a probe, because
|
|
24
|
+
* the caller asking this has a repo and no directory: that is the
|
|
25
|
+
* whole situation it is for. The same substring rule as everywhere
|
|
26
|
+
* else, so one mapping serves both questions.
|
|
27
|
+
*/
|
|
28
|
+
export function checkoutFor(repoKey, config) {
|
|
29
|
+
for (const mapping of config?.repos ?? []) {
|
|
30
|
+
if (mapping.path === undefined)
|
|
31
|
+
continue;
|
|
32
|
+
if (repoKey.includes(mapping.match))
|
|
33
|
+
return mapping.path;
|
|
34
|
+
}
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
/** Providers a repo mapping names, in the order it names them. */
|
|
38
|
+
function mappedProviders(context) {
|
|
39
|
+
const probe = context?.probe;
|
|
40
|
+
const mappings = context?.config?.repos;
|
|
41
|
+
if (!probe || !mappings)
|
|
42
|
+
return { ids: [], present: [] };
|
|
43
|
+
const mapping = mappings.find((entry) => mappingMatches(entry, probe));
|
|
44
|
+
if (!mapping)
|
|
45
|
+
return { ids: [], present: [] };
|
|
46
|
+
const present = [];
|
|
47
|
+
for (const id of mapping.providers) {
|
|
48
|
+
const provider = getReviewProvider(id);
|
|
49
|
+
if (provider)
|
|
50
|
+
present.push(provider);
|
|
51
|
+
}
|
|
52
|
+
return { ids: mapping.providers, present };
|
|
53
|
+
}
|
|
54
|
+
/** Build a change from a reference mapping that matched. */
|
|
55
|
+
function changeFromMapping(mapping, input) {
|
|
56
|
+
const match = new RegExp(mapping.pattern).exec(input);
|
|
57
|
+
if (!match)
|
|
58
|
+
return undefined;
|
|
59
|
+
const repoKey = match.groups?.repo ?? mapping.repo;
|
|
60
|
+
const id = match.groups?.id ?? match[1];
|
|
61
|
+
if (!repoKey || !id)
|
|
62
|
+
return undefined;
|
|
63
|
+
// A user-supplied mapping has no provider to ask for a
|
|
64
|
+
// label, and what the person typed is what they will
|
|
65
|
+
// recognize back.
|
|
66
|
+
return {
|
|
67
|
+
provider: mapping.provider,
|
|
68
|
+
repo: { key: repoKey },
|
|
69
|
+
id,
|
|
70
|
+
label: input,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Ask a list of providers, in order, to claim the reference.
|
|
75
|
+
*
|
|
76
|
+
* Each provider is first asked what it makes of the checkout,
|
|
77
|
+
* and that answer is handed to it along with the reference. A
|
|
78
|
+
* bare number means "in this repo", and only the provider can
|
|
79
|
+
* say whether this repo is one of its own, so a number typed in
|
|
80
|
+
* a gitstream checkout does not become a GitHub pull request.
|
|
81
|
+
*/
|
|
82
|
+
function firstClaim(providers, input, via, tried, probe) {
|
|
83
|
+
for (const provider of providers) {
|
|
84
|
+
tried.push(provider.id);
|
|
85
|
+
const repo = probe ? (provider.claimRepo(probe) ?? undefined) : undefined;
|
|
86
|
+
const change = provider.claimReference(input, repo);
|
|
87
|
+
if (change)
|
|
88
|
+
return { resolved: true, change, provider, via };
|
|
89
|
+
}
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
/** The guidance a refusal carries. */
|
|
93
|
+
function refusalMessage(absentMapped) {
|
|
94
|
+
const parts = [
|
|
95
|
+
"No review provider recognized that reference.",
|
|
96
|
+
"Map its shape under review.references, or pin the repo",
|
|
97
|
+
"under review.repos.",
|
|
98
|
+
];
|
|
99
|
+
if (absentMapped.length > 0) {
|
|
100
|
+
parts.push(`Config names ${absentMapped.join(", ")} for this repo, but`, "no provider registered under that id.");
|
|
101
|
+
}
|
|
102
|
+
return parts.join(" ");
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Resolve a reference to a change and the provider owning it.
|
|
106
|
+
*
|
|
107
|
+
* A mapped repo gets first refusal, then every provider in
|
|
108
|
+
* claim order, then the user's own reference shapes. Nothing
|
|
109
|
+
* defaults: an unrecognized reference comes back as a refusal
|
|
110
|
+
* naming the knob that would fix it.
|
|
111
|
+
*/
|
|
112
|
+
export function resolveReference(input, context) {
|
|
113
|
+
const providers = listReviewProviders();
|
|
114
|
+
if (providers.length === 0) {
|
|
115
|
+
return {
|
|
116
|
+
resolved: false,
|
|
117
|
+
reason: "no-providers",
|
|
118
|
+
tried: [],
|
|
119
|
+
message: "No review provider is registered, so nothing can be " +
|
|
120
|
+
"resolved. Load the review integration, or register a " +
|
|
121
|
+
"provider over the bus.",
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
const tried = [];
|
|
125
|
+
const probe = context?.probe;
|
|
126
|
+
const mapped = mappedProviders(context);
|
|
127
|
+
const byConfig = firstClaim(mapped.present, input, "config-repo", tried, probe);
|
|
128
|
+
if (byConfig)
|
|
129
|
+
return byConfig;
|
|
130
|
+
const remaining = providers.filter((p) => !tried.includes(p.id));
|
|
131
|
+
const byClaim = firstClaim(remaining, input, "claim", tried, probe);
|
|
132
|
+
if (byClaim)
|
|
133
|
+
return byClaim;
|
|
134
|
+
for (const mapping of context?.config?.references ?? []) {
|
|
135
|
+
const provider = getReviewProvider(mapping.provider);
|
|
136
|
+
if (!provider)
|
|
137
|
+
continue;
|
|
138
|
+
const change = changeFromMapping(mapping, input);
|
|
139
|
+
if (change) {
|
|
140
|
+
return { resolved: true, change, provider, via: "config-reference" };
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
const absentMapped = mapped.ids.filter((id) => !getReviewProvider(id));
|
|
144
|
+
return {
|
|
145
|
+
resolved: false,
|
|
146
|
+
reason: "unclaimed",
|
|
147
|
+
tried,
|
|
148
|
+
message: refusalMessage(absentMapped),
|
|
149
|
+
};
|
|
150
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pointing a stack's changes back at what they now sit on.
|
|
3
|
+
*
|
|
4
|
+
* A local restack moves branches. It does not touch the changes those
|
|
5
|
+
* branches are proposed as, so afterwards each one still claims to
|
|
6
|
+
* merge into whatever it targeted when it went up. On a stack whose
|
|
7
|
+
* bottom has landed, that is a change targeting a branch nobody is
|
|
8
|
+
* merging any more, and the diff it shows is against the wrong thing.
|
|
9
|
+
*
|
|
10
|
+
* Whose job it is to fix that differs by backend, which is what
|
|
11
|
+
* deferred this the first time. On one, retargeting is per change and
|
|
12
|
+
* the caller walks the stack doing it. On another it is a single stack
|
|
13
|
+
* operation, because the backend holds the stack itself and moving one
|
|
14
|
+
* change without the others would leave its own model inconsistent.
|
|
15
|
+
*
|
|
16
|
+
* So the substrate does what it does for a diff: implement the general
|
|
17
|
+
* case over the parts every provider has, and stand aside where a
|
|
18
|
+
* provider says it owns the whole operation. The generic walk is not a
|
|
19
|
+
* lesser version of the native one; for a backend that has no notion
|
|
20
|
+
* of a stack it is the only version there is, and it is right there.
|
|
21
|
+
*/
|
|
22
|
+
import type { AuthoringFacet } from "./provider.js";
|
|
23
|
+
import type { Stack } from "./stack.js";
|
|
24
|
+
/** One change that should point somewhere else, and where. */
|
|
25
|
+
export interface Retarget {
|
|
26
|
+
/** The change to move, by the ref its node names. */
|
|
27
|
+
ref: string;
|
|
28
|
+
/** What it targets now. */
|
|
29
|
+
from: string;
|
|
30
|
+
/** What it should target. */
|
|
31
|
+
to: string;
|
|
32
|
+
}
|
|
33
|
+
/** What a retarget pass would do, or why it would do nothing. */
|
|
34
|
+
export interface RetargetPlan {
|
|
35
|
+
/** The moves, in the order they should happen. */
|
|
36
|
+
moves: Retarget[];
|
|
37
|
+
/** Nodes deliberately left alone, and the reason for each. */
|
|
38
|
+
skipped: {
|
|
39
|
+
ref: string;
|
|
40
|
+
why: string;
|
|
41
|
+
}[];
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Which changes in a stack point at the wrong base, and where they go.
|
|
45
|
+
*
|
|
46
|
+
* Roots are excluded rather than pointed at the trunk. A root already
|
|
47
|
+
* targets the trunk in the ordinary case, and where it does not, the
|
|
48
|
+
* stack cannot say whether that is wrong: somebody may be proposing a
|
|
49
|
+
* root against a release branch on purpose, and moving it to the trunk
|
|
50
|
+
* would retarget a change nobody asked about onto a branch that asks a
|
|
51
|
+
* different team to review it.
|
|
52
|
+
*/
|
|
53
|
+
export declare function retargetPlan(stack: Stack): RetargetPlan;
|
|
54
|
+
/** Whether a provider owns this operation, or the substrate walks it. */
|
|
55
|
+
export interface RetargetRoute {
|
|
56
|
+
kind: "native" | "per-change";
|
|
57
|
+
/** Said out loud, because which one ran changes what can go wrong. */
|
|
58
|
+
why: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Who should carry out a retarget, and why that is the right answer.
|
|
62
|
+
*
|
|
63
|
+
* Named rather than decided silently because the two fail differently
|
|
64
|
+
* and a caller has to be able to report which happened. A native pass
|
|
65
|
+
* either moves the stack or does not. A per-change walk can stop half
|
|
66
|
+
* way, leaving some changes moved and some not, and somebody reading
|
|
67
|
+
* "retarget failed" needs to know which of those they are looking at.
|
|
68
|
+
*/
|
|
69
|
+
export declare function retargetRoute(stacking: {
|
|
70
|
+
restack?: unknown;
|
|
71
|
+
} | undefined, authoring: AuthoringFacet | undefined): RetargetRoute | {
|
|
72
|
+
refusal: string;
|
|
73
|
+
};
|