@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,306 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The provider contract: facets, not one interface.
|
|
3
|
+
*
|
|
4
|
+
* A monolithic interface would force every backend to
|
|
5
|
+
* pretend. A bare git repo has stack topology and diffs and
|
|
6
|
+
* no conversation anywhere; a forge has all of it. Rather
|
|
7
|
+
* than have the repo throw from half its methods, a provider
|
|
8
|
+
* implements the facets it has and consumers ask before they
|
|
9
|
+
* reach.
|
|
10
|
+
*
|
|
11
|
+
* Claiming is separate from doing. Every registered provider
|
|
12
|
+
* gets a look at a reference or a repo and says whether it
|
|
13
|
+
* recognizes it, so adding a backend never means editing a
|
|
14
|
+
* resolver.
|
|
15
|
+
*/
|
|
16
|
+
import type { Anchor } from "./anchor.js";
|
|
17
|
+
import type { Capabilities } from "./capabilities.js";
|
|
18
|
+
import type { Actor, ChangeRef, ChangeState, Proposal, RepoLocator } from "./change.js";
|
|
19
|
+
import type { ChecksRollup, RerunOutcome } from "./checks.js";
|
|
20
|
+
import type { Message, Posted, Reaction, Review, Thread, WireReview } from "./conversation.js";
|
|
21
|
+
import type { Stack } from "./stack.js";
|
|
22
|
+
/** What a provider is shown when asked to claim a repo. */
|
|
23
|
+
export interface RepoProbe {
|
|
24
|
+
/** Absolute path to a local checkout, when there is one. */
|
|
25
|
+
repoRoot?: string;
|
|
26
|
+
/** Remote URLs configured in that checkout. */
|
|
27
|
+
remoteUrls?: string[];
|
|
28
|
+
}
|
|
29
|
+
/** Which changes to list. */
|
|
30
|
+
export interface ChangeFilter {
|
|
31
|
+
state?: ChangeState;
|
|
32
|
+
/** Provider-scoped actor id. */
|
|
33
|
+
author?: string;
|
|
34
|
+
base?: string;
|
|
35
|
+
head?: string;
|
|
36
|
+
limit?: number;
|
|
37
|
+
}
|
|
38
|
+
/** Reading hosted changes. */
|
|
39
|
+
export interface ProposalsFacet {
|
|
40
|
+
fetch(ref: ChangeRef): Promise<Proposal>;
|
|
41
|
+
/** Unified diff in git's dialect. */
|
|
42
|
+
diff(ref: ChangeRef): Promise<string>;
|
|
43
|
+
checks?(ref: ChangeRef): Promise<ChecksRollup>;
|
|
44
|
+
list?(repo: RepoLocator, filter: ChangeFilter): Promise<Proposal[]>;
|
|
45
|
+
/**
|
|
46
|
+
* Materialize the change's commits in a local repo and
|
|
47
|
+
* return the ref they landed on. This is what lets a
|
|
48
|
+
* consumer diff, blame or check out a change without
|
|
49
|
+
* knowing which backend hosts it.
|
|
50
|
+
*/
|
|
51
|
+
fetchAsRef?(ref: ChangeRef, repoRoot: string): Promise<string>;
|
|
52
|
+
/**
|
|
53
|
+
* One file's contents at a commit.
|
|
54
|
+
*
|
|
55
|
+
* For showing a person a whole file when the diff only carries
|
|
56
|
+
* the lines that changed. It belongs to the provider because
|
|
57
|
+
* the answer has to come from the system hosting the change: a
|
|
58
|
+
* repository can be mirrored, and reading the mirror returns
|
|
59
|
+
* content that is plausible and stale.
|
|
60
|
+
*
|
|
61
|
+
* Absent where a provider has no way to serve a file it does
|
|
62
|
+
* not have locally.
|
|
63
|
+
*/
|
|
64
|
+
fileAt?(ref: ChangeRef, path: string, at: string): Promise<string>;
|
|
65
|
+
}
|
|
66
|
+
/** A local ref, for providers that read stacks off disk. */
|
|
67
|
+
export interface LocalBranch {
|
|
68
|
+
repo: RepoLocator;
|
|
69
|
+
ref: string;
|
|
70
|
+
}
|
|
71
|
+
/** Reading stack topology. */
|
|
72
|
+
export interface StackingFacet {
|
|
73
|
+
/**
|
|
74
|
+
* The stack containing this ref or change, with its
|
|
75
|
+
* provenance marked. Partial answers are expected: a
|
|
76
|
+
* provider reports what it can see rather than failing.
|
|
77
|
+
*/
|
|
78
|
+
stack(subject: ChangeRef | LocalBranch): Promise<Stack>;
|
|
79
|
+
/**
|
|
80
|
+
* Point every change in the stack back at what it now sits on.
|
|
81
|
+
*
|
|
82
|
+
* Optional, and its absence is not a gap. A backend with no notion
|
|
83
|
+
* of a stack has nothing to implement here, and the substrate moves
|
|
84
|
+
* each change in turn through {@link AuthoringFacet.edit} instead,
|
|
85
|
+
* which is the whole operation on such a backend rather than a
|
|
86
|
+
* degraded form of it.
|
|
87
|
+
*
|
|
88
|
+
* Implement it where the backend holds the stack itself, since
|
|
89
|
+
* moving one change without the others would leave the backend's
|
|
90
|
+
* own model inconsistent, and a walk that stops half way would
|
|
91
|
+
* leave it inconsistent and say it succeeded partly.
|
|
92
|
+
*/
|
|
93
|
+
restack?(subject: ChangeRef | LocalBranch): Promise<Stack>;
|
|
94
|
+
}
|
|
95
|
+
/** Reading and writing the conversation on a change. */
|
|
96
|
+
export interface ConversationFacet {
|
|
97
|
+
reviews(ref: ChangeRef): Promise<Review[]>;
|
|
98
|
+
threads(ref: ChangeRef): Promise<Thread[]>;
|
|
99
|
+
messages(ref: ChangeRef): Promise<Message[]>;
|
|
100
|
+
postReview(ref: ChangeRef, review: WireReview): Promise<Posted>;
|
|
101
|
+
/**
|
|
102
|
+
* Reply into a thread. Takes the whole thread because the
|
|
103
|
+
* backends key a reply differently: one by the thread,
|
|
104
|
+
* one by the comment that started it.
|
|
105
|
+
*/
|
|
106
|
+
reply(ref: ChangeRef, thread: Thread, body: string): Promise<Posted>;
|
|
107
|
+
resolve(ref: ChangeRef, thread: Thread): Promise<void>;
|
|
108
|
+
unresolve?(ref: ChangeRef, thread: Thread): Promise<void>;
|
|
109
|
+
/** A remark about the change as a whole. */
|
|
110
|
+
comment(ref: ChangeRef, body: string): Promise<Posted>;
|
|
111
|
+
/** A standalone anchored remark, outside any review. */
|
|
112
|
+
commentOn?(ref: ChangeRef, anchor: Anchor, body: string): Promise<Posted>;
|
|
113
|
+
react?(ref: ChangeRef, subject: Message, reaction: Reaction): Promise<void>;
|
|
114
|
+
unreact?(ref: ChangeRef, subject: Message, reaction: Reaction): Promise<void>;
|
|
115
|
+
/**
|
|
116
|
+
* Who the calling principal is, as this backend names them.
|
|
117
|
+
*
|
|
118
|
+
* Needed for any question about your own remarks: which threads are mine,
|
|
119
|
+
* whether my findings were answered, whether I have already reviewed this.
|
|
120
|
+
* Every one of those is unanswerable without it, and the tempting
|
|
121
|
+
* alternatives are worse than a refusal. Matching a display name matches
|
|
122
|
+
* the wrong person eventually; taking the most recent reviewer assumes the
|
|
123
|
+
* caller is whoever spoke last.
|
|
124
|
+
*
|
|
125
|
+
* Optional because a backend may genuinely not say. A caller that cannot
|
|
126
|
+
* learn who it is should refuse the question rather than answer it about
|
|
127
|
+
* somebody else.
|
|
128
|
+
*/
|
|
129
|
+
viewer?(repo: RepoLocator): Promise<Actor>;
|
|
130
|
+
}
|
|
131
|
+
/** A field being changed, where clearing differs from leaving. */
|
|
132
|
+
export type FieldEdit<T> = {
|
|
133
|
+
action: "set";
|
|
134
|
+
value: T;
|
|
135
|
+
} | {
|
|
136
|
+
action: "clear";
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* A set being changed, where adding differs from replacing.
|
|
140
|
+
*
|
|
141
|
+
* Labels and assignees need more than {@link FieldEdit} offers. Adding
|
|
142
|
+
* one label through a wholesale `set` means reading the current list
|
|
143
|
+
* first and writing it back, which loses whatever somebody else added in
|
|
144
|
+
* between, and that race is precisely what a busy change is full of.
|
|
145
|
+
*
|
|
146
|
+
* The backends express these natively: `gh pr edit` takes `--add-label`
|
|
147
|
+
* and `--remove-label` beside `--label`. A provider whose backend can
|
|
148
|
+
* only replace implements `add` by reading first, which is its business
|
|
149
|
+
* rather than the contract's.
|
|
150
|
+
*/
|
|
151
|
+
export type SetEdit<T> = {
|
|
152
|
+
action: "set";
|
|
153
|
+
value: T[];
|
|
154
|
+
} | {
|
|
155
|
+
action: "add";
|
|
156
|
+
value: T[];
|
|
157
|
+
} | {
|
|
158
|
+
action: "remove";
|
|
159
|
+
value: T[];
|
|
160
|
+
} | {
|
|
161
|
+
action: "clear";
|
|
162
|
+
};
|
|
163
|
+
/** What to change about a proposal. */
|
|
164
|
+
export interface ProposalEdit {
|
|
165
|
+
title?: FieldEdit<string>;
|
|
166
|
+
body?: FieldEdit<string>;
|
|
167
|
+
base?: FieldEdit<string>;
|
|
168
|
+
/** Labels, named as the backend names them. */
|
|
169
|
+
labels?: SetEdit<string>;
|
|
170
|
+
/**
|
|
171
|
+
* Assignees, named as the backend names people. GitHub wants logins
|
|
172
|
+
* and Meteorite wants Shopify email addresses, which is why this is
|
|
173
|
+
* a string rather than an {@link Actor}: the caller is passing the
|
|
174
|
+
* backend's own identifier through, not a resolved person.
|
|
175
|
+
*/
|
|
176
|
+
assignees?: SetEdit<string>;
|
|
177
|
+
}
|
|
178
|
+
/** What to propose. */
|
|
179
|
+
export interface ProposalDraft {
|
|
180
|
+
repo: RepoLocator;
|
|
181
|
+
base: string;
|
|
182
|
+
head: string;
|
|
183
|
+
title: string;
|
|
184
|
+
body: string;
|
|
185
|
+
/**
|
|
186
|
+
* Whether it opens as a draft. Required, deliberately.
|
|
187
|
+
*
|
|
188
|
+
* The backends disagree about what silence means: one defaults a new
|
|
189
|
+
* change to ready and another defaults it to draft. An optional flag
|
|
190
|
+
* would make the same call produce a live change on one and an
|
|
191
|
+
* invisible one on the other, and the caller who gets it wrong finds
|
|
192
|
+
* out either from a surprised reviewer or from a change nobody ever
|
|
193
|
+
* looked at. Saying so every time costs a word.
|
|
194
|
+
*/
|
|
195
|
+
draft: boolean;
|
|
196
|
+
/** Labels to open it with, where the backend has labels. */
|
|
197
|
+
labels?: string[];
|
|
198
|
+
/** Assignees to open it with, in the backend's own naming. */
|
|
199
|
+
assignees?: string[];
|
|
200
|
+
/**
|
|
201
|
+
* Reviewers to open it with, for a backend that takes them only then.
|
|
202
|
+
*
|
|
203
|
+
* Without this, `reviewersAt: "creation"` was a value nothing could
|
|
204
|
+
* honour. It says the backend takes reviewers as the change is made, and
|
|
205
|
+
* the only route the contract offered was `requestReviewers` afterwards,
|
|
206
|
+
* which is precisely what such a backend cannot do. So a caller naming
|
|
207
|
+
* reviewers on a creation-only provider had them silently dropped, or
|
|
208
|
+
* asked for them after the one moment they could be given.
|
|
209
|
+
*
|
|
210
|
+
* A provider declaring `"any-time"` may ignore this and be asked through
|
|
211
|
+
* `requestReviewers` instead. One declaring `"creation"` reads them here.
|
|
212
|
+
*/
|
|
213
|
+
reviewers?: string[];
|
|
214
|
+
}
|
|
215
|
+
/** How a change should be integrated. */
|
|
216
|
+
export interface MergeRequest {
|
|
217
|
+
/**
|
|
218
|
+
* Strategy, in the provider's vocabulary. Omitted when
|
|
219
|
+
* the provider offers only one, which one of them does.
|
|
220
|
+
*/
|
|
221
|
+
method?: string;
|
|
222
|
+
/**
|
|
223
|
+
* Refuse unless the head is still this commit. Every
|
|
224
|
+
* backend surveyed supports the guard and it is the only
|
|
225
|
+
* protection against merging work you have not seen.
|
|
226
|
+
*/
|
|
227
|
+
expectedHead?: string;
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* What a merge call actually did.
|
|
231
|
+
*
|
|
232
|
+
* Merging used to return nothing, so the only thing a caller could say was that it had
|
|
233
|
+
* asked. On a backend that merges when asked, saying `merged` is true. On one fronted by
|
|
234
|
+
* a queue it is a lie with consequences: the change has been accepted for a batch that
|
|
235
|
+
* may still fail CI and never land, and a caller told `merged` goes on to prune the
|
|
236
|
+
* branch and report the work done. The same call, the same success, two different facts.
|
|
237
|
+
*
|
|
238
|
+
* A refusal is not a case here. Refusing to merge is decided before the call, by the
|
|
239
|
+
* objection path, so what reaches this point has been accepted and the only open question
|
|
240
|
+
* is what acceptance meant.
|
|
241
|
+
*/
|
|
242
|
+
export type MergeOutcome =
|
|
243
|
+
/** In the base branch now. The commit when the backend named one. */
|
|
244
|
+
{
|
|
245
|
+
kind: "merged";
|
|
246
|
+
commit?: string;
|
|
247
|
+
}
|
|
248
|
+
/** Accepted by a queue. It lands later, or it fails CI and does not. */
|
|
249
|
+
| {
|
|
250
|
+
kind: "enqueued";
|
|
251
|
+
detail?: string;
|
|
252
|
+
};
|
|
253
|
+
/**
|
|
254
|
+
* Creating and changing proposals.
|
|
255
|
+
*
|
|
256
|
+
* Typed now, implemented later. The shapes are here so the
|
|
257
|
+
* authoring flows have a home and nothing in the reviewing
|
|
258
|
+
* half gets designed into a corner that authoring cannot fit
|
|
259
|
+
* through.
|
|
260
|
+
*/
|
|
261
|
+
export interface AuthoringFacet {
|
|
262
|
+
propose(draft: ProposalDraft): Promise<Proposal>;
|
|
263
|
+
/** Propose a whole stack in dependency order. */
|
|
264
|
+
proposeStack?(drafts: ProposalDraft[]): Promise<Proposal[]>;
|
|
265
|
+
edit(ref: ChangeRef, edit: ProposalEdit): Promise<Proposal>;
|
|
266
|
+
setDraft?(ref: ChangeRef, draft: boolean): Promise<void>;
|
|
267
|
+
close(ref: ChangeRef, comment?: string): Promise<void>;
|
|
268
|
+
reopen?(ref: ChangeRef): Promise<void>;
|
|
269
|
+
merge(ref: ChangeRef, request: MergeRequest): Promise<MergeOutcome>;
|
|
270
|
+
requestReviewers?(ref: ChangeRef, actors: string[]): Promise<void>;
|
|
271
|
+
/**
|
|
272
|
+
* Ask CI to run again, optionally naming one pipeline.
|
|
273
|
+
*
|
|
274
|
+
* A write, which is why it is here and not beside `checks`, and
|
|
275
|
+
* what runs is the backend's business. The contract says only
|
|
276
|
+
* that somebody was asked and, through `RerunOutcome`, whether
|
|
277
|
+
* they agreed.
|
|
278
|
+
*/
|
|
279
|
+
rerun?(ref: ChangeRef, which?: string): Promise<RerunOutcome>;
|
|
280
|
+
}
|
|
281
|
+
/** A backend the substrate can review through. */
|
|
282
|
+
export interface ReviewProvider {
|
|
283
|
+
/** Stable id, e.g. `github`, `meteorite`, `git`. */
|
|
284
|
+
id: string;
|
|
285
|
+
/**
|
|
286
|
+
* Claim priority. Lower numbers are asked first, so a
|
|
287
|
+
* specialist can out-claim a generalist: during a mirror
|
|
288
|
+
* migration the new backend must win the repo the old one
|
|
289
|
+
* still recognizes.
|
|
290
|
+
*/
|
|
291
|
+
priority: number;
|
|
292
|
+
/**
|
|
293
|
+
* Recognize a reference: a URL, a short form, a bare
|
|
294
|
+
* number, a branch. Returns null when it means nothing to
|
|
295
|
+
* this provider. Cheap and synchronous.
|
|
296
|
+
*/
|
|
297
|
+
claimReference(input: string, repo?: RepoLocator): ChangeRef | null;
|
|
298
|
+
/** Recognize a repo from a checkout or its remotes. */
|
|
299
|
+
claimRepo(probe: RepoProbe): RepoLocator | null;
|
|
300
|
+
/** What this provider can do for this repo. */
|
|
301
|
+
capabilities(repo: RepoLocator): Capabilities;
|
|
302
|
+
proposals?: ProposalsFacet;
|
|
303
|
+
stacking?: StackingFacet;
|
|
304
|
+
conversation?: ConversationFacet;
|
|
305
|
+
authoring?: AuthoringFacet;
|
|
306
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The provider contract: facets, not one interface.
|
|
3
|
+
*
|
|
4
|
+
* A monolithic interface would force every backend to
|
|
5
|
+
* pretend. A bare git repo has stack topology and diffs and
|
|
6
|
+
* no conversation anywhere; a forge has all of it. Rather
|
|
7
|
+
* than have the repo throw from half its methods, a provider
|
|
8
|
+
* implements the facets it has and consumers ask before they
|
|
9
|
+
* reach.
|
|
10
|
+
*
|
|
11
|
+
* Claiming is separate from doing. Every registered provider
|
|
12
|
+
* gets a look at a reference or a repo and says whether it
|
|
13
|
+
* recognizes it, so adding a backend never means editing a
|
|
14
|
+
* resolver.
|
|
15
|
+
*/
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The git provider: a repo with no forge behind it.
|
|
3
|
+
*
|
|
4
|
+
* This is the provider that proves the contract is honest.
|
|
5
|
+
* A checkout has topology and diffs and no conversation
|
|
6
|
+
* anywhere, so it implements stacking and nothing else, and a
|
|
7
|
+
* consumer that asks whether it can post a review gets a
|
|
8
|
+
* straight no rather than a method that throws.
|
|
9
|
+
*
|
|
10
|
+
* Parentage comes from the upstream a branch records, which is
|
|
11
|
+
* what every local stacking tool surveyed uses and what plain
|
|
12
|
+
* `git branch --set-upstream-to` writes. Reading only that,
|
|
13
|
+
* plus merge-base for the fork point, keeps this provider
|
|
14
|
+
* truthful about ordinary git; the tool-specific conventions
|
|
15
|
+
* (metadata refs, state files) each make a further fidelity
|
|
16
|
+
* claim and belong in providers of their own.
|
|
17
|
+
*/
|
|
18
|
+
import type { ProviderDeps } from "../../../exec/index.js";
|
|
19
|
+
import type { ReviewProvider } from "../../provider.js";
|
|
20
|
+
/** Provider id. */
|
|
21
|
+
export declare const GIT_PROVIDER_ID = "git";
|
|
22
|
+
/** Build the git provider. */
|
|
23
|
+
export declare function createGitProvider(deps: ProviderDeps): ReviewProvider;
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The git provider: a repo with no forge behind it.
|
|
3
|
+
*
|
|
4
|
+
* This is the provider that proves the contract is honest.
|
|
5
|
+
* A checkout has topology and diffs and no conversation
|
|
6
|
+
* anywhere, so it implements stacking and nothing else, and a
|
|
7
|
+
* consumer that asks whether it can post a review gets a
|
|
8
|
+
* straight no rather than a method that throws.
|
|
9
|
+
*
|
|
10
|
+
* Parentage comes from the upstream a branch records, which is
|
|
11
|
+
* what every local stacking tool surveyed uses and what plain
|
|
12
|
+
* `git branch --set-upstream-to` writes. Reading only that,
|
|
13
|
+
* plus merge-base for the fork point, keeps this provider
|
|
14
|
+
* truthful about ordinary git; the tool-specific conventions
|
|
15
|
+
* (metadata refs, state files) each make a further fidelity
|
|
16
|
+
* claim and belong in providers of their own.
|
|
17
|
+
*/
|
|
18
|
+
import { run } from "../../../exec/index.js";
|
|
19
|
+
/** Provider id. */
|
|
20
|
+
export const GIT_PROVIDER_ID = "git";
|
|
21
|
+
/**
|
|
22
|
+
* Claim priority. Last: a bare checkout is the fallback when
|
|
23
|
+
* no forge recognizes the repo, never the first answer.
|
|
24
|
+
*/
|
|
25
|
+
const GIT_PRIORITY = 900;
|
|
26
|
+
/** How far to walk before deciding the config is cyclic. */
|
|
27
|
+
const MAX_DEPTH = 16;
|
|
28
|
+
/** The repo key a local checkout gets. */
|
|
29
|
+
function localKey(repoRoot) {
|
|
30
|
+
return `local:${repoRoot}`;
|
|
31
|
+
}
|
|
32
|
+
/** A branch name, however the caller spelled it. */
|
|
33
|
+
function branchName(ref) {
|
|
34
|
+
return ref.replace(/^refs\/heads\//, "");
|
|
35
|
+
}
|
|
36
|
+
/** What a bare repo can do. */
|
|
37
|
+
function gitCapabilities() {
|
|
38
|
+
return { stacking: { provenance: "derived", fanOut: true } };
|
|
39
|
+
}
|
|
40
|
+
/** Build the stacking facet over a checkout. */
|
|
41
|
+
function gitStacking(exec) {
|
|
42
|
+
/** The branch this one tracks, when it records one. */
|
|
43
|
+
async function upstreamOf(root, branch) {
|
|
44
|
+
const result = await exec("git", [
|
|
45
|
+
"-C",
|
|
46
|
+
root,
|
|
47
|
+
"config",
|
|
48
|
+
"--get",
|
|
49
|
+
`branch.${branch}.merge`,
|
|
50
|
+
]);
|
|
51
|
+
// A branch with no upstream exits nonzero, which is an
|
|
52
|
+
// answer rather than a failure.
|
|
53
|
+
if (result.code !== 0)
|
|
54
|
+
return undefined;
|
|
55
|
+
const value = result.stdout.trim();
|
|
56
|
+
return value ? branchName(value) : undefined;
|
|
57
|
+
}
|
|
58
|
+
/** Every branch paired with the upstream it records. */
|
|
59
|
+
async function upstreamMap(root) {
|
|
60
|
+
const stdout = await run(exec, "git", [
|
|
61
|
+
"-C",
|
|
62
|
+
root,
|
|
63
|
+
"for-each-ref",
|
|
64
|
+
"--format=%(refname:short)|%(upstream:short)",
|
|
65
|
+
"refs/heads",
|
|
66
|
+
], "listing branches");
|
|
67
|
+
const pairs = new Map();
|
|
68
|
+
for (const line of stdout.split("\n")) {
|
|
69
|
+
const [branch, upstream] = line.split("|");
|
|
70
|
+
if (!branch || !upstream)
|
|
71
|
+
continue;
|
|
72
|
+
pairs.set(branch.trim(), branchName(upstream.trim()));
|
|
73
|
+
}
|
|
74
|
+
return pairs;
|
|
75
|
+
}
|
|
76
|
+
async function tipOf(root, branch) {
|
|
77
|
+
const result = await exec("git", ["-C", root, "rev-parse", branch]);
|
|
78
|
+
return result.code === 0 ? result.stdout.trim() : undefined;
|
|
79
|
+
}
|
|
80
|
+
async function forkPointOf(root, branch, parent) {
|
|
81
|
+
const result = await exec("git", [
|
|
82
|
+
"-C",
|
|
83
|
+
root,
|
|
84
|
+
"merge-base",
|
|
85
|
+
parent,
|
|
86
|
+
branch,
|
|
87
|
+
]);
|
|
88
|
+
return result.code === 0 ? result.stdout.trim() : undefined;
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
async stack(subject) {
|
|
92
|
+
if ("id" in subject) {
|
|
93
|
+
throw new Error("the git provider reads a stack from a branch, not a hosted change");
|
|
94
|
+
}
|
|
95
|
+
const root = subject.repo.localPath;
|
|
96
|
+
if (!root) {
|
|
97
|
+
throw new Error(`${subject.repo.key} has no local checkout to read`);
|
|
98
|
+
}
|
|
99
|
+
const cursorBranch = branchName(subject.ref);
|
|
100
|
+
// Upwards: follow each branch's recorded upstream.
|
|
101
|
+
const ancestors = [];
|
|
102
|
+
const seen = new Set([cursorBranch]);
|
|
103
|
+
let climbing = await upstreamOf(root, cursorBranch);
|
|
104
|
+
let trunk;
|
|
105
|
+
for (let depth = 0; depth < MAX_DEPTH && climbing; depth++) {
|
|
106
|
+
if (seen.has(climbing))
|
|
107
|
+
break;
|
|
108
|
+
const above = await upstreamOf(root, climbing);
|
|
109
|
+
if (!above) {
|
|
110
|
+
// The branch that tracks nothing is the trunk, and
|
|
111
|
+
// the trunk is not part of the stack.
|
|
112
|
+
trunk = climbing;
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
seen.add(climbing);
|
|
116
|
+
ancestors.unshift(climbing);
|
|
117
|
+
climbing = above;
|
|
118
|
+
}
|
|
119
|
+
// Downwards: whoever records one of ours as upstream.
|
|
120
|
+
const pairs = await upstreamMap(root);
|
|
121
|
+
const descendants = [];
|
|
122
|
+
let frontier = [cursorBranch];
|
|
123
|
+
for (let depth = 0; depth < MAX_DEPTH && frontier.length > 0; depth++) {
|
|
124
|
+
const next = [];
|
|
125
|
+
for (const parent of frontier) {
|
|
126
|
+
for (const [branch, upstream] of pairs) {
|
|
127
|
+
if (upstream !== parent || seen.has(branch))
|
|
128
|
+
continue;
|
|
129
|
+
seen.add(branch);
|
|
130
|
+
descendants.push({ branch, parent });
|
|
131
|
+
next.push(branch);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
frontier = next;
|
|
135
|
+
}
|
|
136
|
+
const chain = [...ancestors, cursorBranch];
|
|
137
|
+
const nodes = [];
|
|
138
|
+
for (const [index, branch] of chain.entries()) {
|
|
139
|
+
const parent = index === 0 ? trunk : chain[index - 1];
|
|
140
|
+
nodes.push(await describe(root, branch, index === 0 ? undefined : parent, parent));
|
|
141
|
+
}
|
|
142
|
+
for (const { branch, parent } of descendants) {
|
|
143
|
+
nodes.push(await describe(root, branch, parent, parent));
|
|
144
|
+
}
|
|
145
|
+
return {
|
|
146
|
+
provenance: "derived",
|
|
147
|
+
...(trunk ? { trunk } : {}),
|
|
148
|
+
nodes,
|
|
149
|
+
cursor: ancestors.length,
|
|
150
|
+
};
|
|
151
|
+
},
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* One node. `parent` is the link to report; `against` is
|
|
155
|
+
* what to measure the fork point from, which for a root is
|
|
156
|
+
* the trunk even though the trunk is not its parent in the
|
|
157
|
+
* stack.
|
|
158
|
+
*/
|
|
159
|
+
async function describe(root, branch, parent, against) {
|
|
160
|
+
const headCommit = await tipOf(root, branch);
|
|
161
|
+
const forkPoint = against
|
|
162
|
+
? await forkPointOf(root, branch, against)
|
|
163
|
+
: undefined;
|
|
164
|
+
// Behind means the thing this branch left has moved since it left. The
|
|
165
|
+
// fork point is where they last agreed, so comparing it against that
|
|
166
|
+
// thing's tip is the whole question, and both are already to hand.
|
|
167
|
+
//
|
|
168
|
+
// This is the only warning the stack view carries and it was declared
|
|
169
|
+
// and never set, by any provider, so a stack needing a restack drew
|
|
170
|
+
// exactly like a current one and a reader built on a stale base. It
|
|
171
|
+
// stays absent rather than false when there is nothing to measure
|
|
172
|
+
// against, since the field means "where the provider can tell" and a
|
|
173
|
+
// root with no trunk named cannot.
|
|
174
|
+
const ahead = against ? await tipOf(root, against) : undefined;
|
|
175
|
+
const behindParent = forkPoint && ahead ? forkPoint !== ahead : undefined;
|
|
176
|
+
return {
|
|
177
|
+
ref: branch,
|
|
178
|
+
...(parent ? { parent } : {}),
|
|
179
|
+
...(headCommit ? { headCommit } : {}),
|
|
180
|
+
...(forkPoint ? { forkPoint } : {}),
|
|
181
|
+
...(behindParent === undefined ? {} : { behindParent }),
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/** Build the git provider. */
|
|
186
|
+
export function createGitProvider(deps) {
|
|
187
|
+
return {
|
|
188
|
+
id: GIT_PROVIDER_ID,
|
|
189
|
+
priority: GIT_PRIORITY,
|
|
190
|
+
claimReference(input, repo) {
|
|
191
|
+
// Without a repo there is nothing to read a branch or a
|
|
192
|
+
// range against, so this is not ours to claim.
|
|
193
|
+
if (!repo)
|
|
194
|
+
return null;
|
|
195
|
+
const trimmed = input.trim();
|
|
196
|
+
if (!trimmed)
|
|
197
|
+
return null;
|
|
198
|
+
// A plain ref names itself; there is no number to add.
|
|
199
|
+
return {
|
|
200
|
+
provider: GIT_PROVIDER_ID,
|
|
201
|
+
repo,
|
|
202
|
+
id: trimmed,
|
|
203
|
+
label: trimmed,
|
|
204
|
+
};
|
|
205
|
+
},
|
|
206
|
+
claimRepo(probe) {
|
|
207
|
+
if (!probe.repoRoot)
|
|
208
|
+
return null;
|
|
209
|
+
return { key: localKey(probe.repoRoot), localPath: probe.repoRoot };
|
|
210
|
+
},
|
|
211
|
+
capabilities: gitCapabilities,
|
|
212
|
+
stacking: gitStacking(deps.exec),
|
|
213
|
+
};
|
|
214
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Making and changing pull requests on GitHub.
|
|
3
|
+
*
|
|
4
|
+
* Every write goes through the REST API with a JSON body on disk,
|
|
5
|
+
* rather than through `gh pr create` and its siblings. The porcelain
|
|
6
|
+
* commands are friendlier to type and worse to call: they infer the
|
|
7
|
+
* base from the current checkout, they read a title out of the last
|
|
8
|
+
* commit when one is not given, and their flags have defaults that
|
|
9
|
+
* change what an omitted argument means. A caller here has already
|
|
10
|
+
* decided all of that, and inference at this layer would quietly
|
|
11
|
+
* overrule it.
|
|
12
|
+
*
|
|
13
|
+
* The body goes through a file for the same reason a commit message
|
|
14
|
+
* does. A pull request body is prose with newlines, quotes and
|
|
15
|
+
* backticks in it, and putting that on a command line is a quoting bug
|
|
16
|
+
* waiting for the first person who writes a shell snippet in a
|
|
17
|
+
* description.
|
|
18
|
+
*/
|
|
19
|
+
import { type Exec } from "../../../exec/index.js";
|
|
20
|
+
import type { AuthoringFacet } from "../../provider.js";
|
|
21
|
+
/** Build the authoring facet. */
|
|
22
|
+
export declare function githubAuthoring(exec: Exec): AuthoringFacet;
|