@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,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What is safe to remove once work has landed.
|
|
3
|
+
*
|
|
4
|
+
* Cleaning up after a merge is done by hand today, and the cost of not
|
|
5
|
+
* doing it is quiet: stale locals and tracking refs pile up until a
|
|
6
|
+
* branch listing stops being readable. The cost of doing it carelessly
|
|
7
|
+
* is not quiet at all, so nothing here removes anything. It decides
|
|
8
|
+
* what could go and, for everything it will not touch, says why.
|
|
9
|
+
*
|
|
10
|
+
* It has to be a decision rather than a command because landing is not
|
|
11
|
+
* an instant. A change handed to a merge queue is merged later, from
|
|
12
|
+
* somewhere else, so the moment a caller asks to merge is exactly the
|
|
13
|
+
* moment nothing is cleanable yet.
|
|
14
|
+
*/
|
|
15
|
+
/** One worktree, as git describes it. */
|
|
16
|
+
export interface WorktreeOnDisk {
|
|
17
|
+
path: string;
|
|
18
|
+
/** The branch checked out there, when one is. */
|
|
19
|
+
branch?: string;
|
|
20
|
+
/** Whether it holds changes that are not committed anywhere. */
|
|
21
|
+
dirty?: boolean;
|
|
22
|
+
/** Whether trunk already contains that branch's commits. */
|
|
23
|
+
mergedIntoTrunk?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/** What is known when asking which trees were left behind. */
|
|
26
|
+
export interface OrphanAsk {
|
|
27
|
+
/** The checkout the worktrees hang off, which is never an orphan. */
|
|
28
|
+
mainPath: string;
|
|
29
|
+
/** Every worktree git knows about, the main checkout included. */
|
|
30
|
+
worktrees: WorktreeOnDisk[];
|
|
31
|
+
/**
|
|
32
|
+
* Paths the broker still remembers holding.
|
|
33
|
+
*
|
|
34
|
+
* Must be comparable with the worktree paths above, which means the
|
|
35
|
+
* caller resolves both through the same lens before asking. The two
|
|
36
|
+
* arrive from different places, git and the broker's own record, and
|
|
37
|
+
* git reports a path with every symlink resolved: on macOS a tree
|
|
38
|
+
* under the system temp comes back as `/private/var/...` where the
|
|
39
|
+
* broker wrote `/var/...`. Compared raw, a tree somebody is actively
|
|
40
|
+
* holding reads as abandoned, which is the one wrong answer here
|
|
41
|
+
* that costs work.
|
|
42
|
+
*/
|
|
43
|
+
remembered: readonly string[];
|
|
44
|
+
/**
|
|
45
|
+
* Those whose record says nothing about who cut them.
|
|
46
|
+
*
|
|
47
|
+
* Every record written before the broker stamped an owner is one of
|
|
48
|
+
* these, and there is no sound way to attribute one after the fact.
|
|
49
|
+
* The obvious rules all fail. The machine has not rebooted since
|
|
50
|
+
* they were written, so nothing can be ruled out that way, and any
|
|
51
|
+
* age threshold is a guess that takes a live session's tree the
|
|
52
|
+
* first time somebody leaves one open over a weekend.
|
|
53
|
+
*
|
|
54
|
+
* So they are neither held nor reclaimable: they are reported as a
|
|
55
|
+
* decision for a person, which is the honest answer and is also
|
|
56
|
+
* self-clearing, since a tree taken this way is gone and every tree
|
|
57
|
+
* cut from now on carries an owner.
|
|
58
|
+
*/
|
|
59
|
+
unattributed?: readonly string[];
|
|
60
|
+
}
|
|
61
|
+
/** A tree nothing claims any more, and what was in it. */
|
|
62
|
+
export interface Reclaimable {
|
|
63
|
+
path: string;
|
|
64
|
+
branch?: string;
|
|
65
|
+
}
|
|
66
|
+
/** A tree being left alone, and the reason. */
|
|
67
|
+
export interface Retained {
|
|
68
|
+
path: string;
|
|
69
|
+
why: string;
|
|
70
|
+
/** Set when this is a judgement call rather than a refusal. */
|
|
71
|
+
decide?: boolean;
|
|
72
|
+
}
|
|
73
|
+
/** What reclaiming would do, and what it would decline to do. */
|
|
74
|
+
export interface OrphanPlan {
|
|
75
|
+
reclaimable: Reclaimable[];
|
|
76
|
+
retained: Retained[];
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Which trees have been left behind, without reclaiming any of them.
|
|
80
|
+
*
|
|
81
|
+
* A worktree outlives the process that cut it, which is the point of
|
|
82
|
+
* one, and it also outlives a process that was killed before it could
|
|
83
|
+
* put the tree back. Nothing then owns it: the broker's memory has no
|
|
84
|
+
* record, so every verb answers "no held tree", while git still tracks
|
|
85
|
+
* it and the disk still carries it. Fifteen accumulated in one repo
|
|
86
|
+
* over four months, all of them from an extension that no longer
|
|
87
|
+
* exists, which is what this looks like when nobody is watching.
|
|
88
|
+
*
|
|
89
|
+
* The order of the questions is the safety, as with {@link tidyPlan}.
|
|
90
|
+
* The checkout itself and anything still claimed are excluded
|
|
91
|
+
* before merge state is considered, so no confusion further down can
|
|
92
|
+
* propose removing either.
|
|
93
|
+
*/
|
|
94
|
+
export declare function orphanedTrees(ask: OrphanAsk): OrphanPlan;
|
|
95
|
+
/** One local branch, as git describes it. */
|
|
96
|
+
export interface LocalBranch {
|
|
97
|
+
name: string;
|
|
98
|
+
/** Whether trunk already contains this branch's commits. */
|
|
99
|
+
mergedIntoTrunk: boolean;
|
|
100
|
+
/** The upstream it tracks, when it tracks one. */
|
|
101
|
+
tracking?: string;
|
|
102
|
+
/** Whether that upstream has gone from the remote. */
|
|
103
|
+
remoteGone?: boolean;
|
|
104
|
+
}
|
|
105
|
+
/** What the working layer knows when it is asked to tidy up. */
|
|
106
|
+
export interface TidyAsk {
|
|
107
|
+
trunk: string;
|
|
108
|
+
/** The branch currently checked out in the tree. */
|
|
109
|
+
current: string;
|
|
110
|
+
branches: LocalBranch[];
|
|
111
|
+
/** Branches the stack is tracking, which must be forgotten too. */
|
|
112
|
+
tracked?: string[];
|
|
113
|
+
}
|
|
114
|
+
/** A branch that can go, and what else goes with it. */
|
|
115
|
+
export interface Removable {
|
|
116
|
+
branch: string;
|
|
117
|
+
/** Whether the stack still lists it, so it needs untracking too. */
|
|
118
|
+
alsoUntrack: boolean;
|
|
119
|
+
}
|
|
120
|
+
/** A branch being left alone, and the reason. */
|
|
121
|
+
export interface Kept {
|
|
122
|
+
branch: string;
|
|
123
|
+
why: string;
|
|
124
|
+
/**
|
|
125
|
+
* Whether this is a judgement call rather than a refusal.
|
|
126
|
+
*
|
|
127
|
+
* Set when the work looks landed but git cannot prove it, which is
|
|
128
|
+
* what a squash merge produces and the one case where a person has
|
|
129
|
+
* to decide. Everything else here is simply not ready to go.
|
|
130
|
+
*/
|
|
131
|
+
decide?: boolean;
|
|
132
|
+
}
|
|
133
|
+
/** What tidying up would do, and what it would decline to do. */
|
|
134
|
+
export interface TidyPlan {
|
|
135
|
+
removable: Removable[];
|
|
136
|
+
keeping: Kept[];
|
|
137
|
+
/** Whether any tracking ref points at a branch the remote dropped. */
|
|
138
|
+
prunable: boolean;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Work out what has been spent, without spending anything.
|
|
142
|
+
*
|
|
143
|
+
* The order of the questions is the safety. Trunk and the checked-out
|
|
144
|
+
* branch are excluded before merge state is considered at all, so no
|
|
145
|
+
* amount of confusion further down can propose deleting either.
|
|
146
|
+
*/
|
|
147
|
+
export declare function tidyPlan(ask: TidyAsk): TidyPlan;
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What is safe to remove once work has landed.
|
|
3
|
+
*
|
|
4
|
+
* Cleaning up after a merge is done by hand today, and the cost of not
|
|
5
|
+
* doing it is quiet: stale locals and tracking refs pile up until a
|
|
6
|
+
* branch listing stops being readable. The cost of doing it carelessly
|
|
7
|
+
* is not quiet at all, so nothing here removes anything. It decides
|
|
8
|
+
* what could go and, for everything it will not touch, says why.
|
|
9
|
+
*
|
|
10
|
+
* It has to be a decision rather than a command because landing is not
|
|
11
|
+
* an instant. A change handed to a merge queue is merged later, from
|
|
12
|
+
* somewhere else, so the moment a caller asks to merge is exactly the
|
|
13
|
+
* moment nothing is cleanable yet.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Which trees have been left behind, without reclaiming any of them.
|
|
17
|
+
*
|
|
18
|
+
* A worktree outlives the process that cut it, which is the point of
|
|
19
|
+
* one, and it also outlives a process that was killed before it could
|
|
20
|
+
* put the tree back. Nothing then owns it: the broker's memory has no
|
|
21
|
+
* record, so every verb answers "no held tree", while git still tracks
|
|
22
|
+
* it and the disk still carries it. Fifteen accumulated in one repo
|
|
23
|
+
* over four months, all of them from an extension that no longer
|
|
24
|
+
* exists, which is what this looks like when nobody is watching.
|
|
25
|
+
*
|
|
26
|
+
* The order of the questions is the safety, as with {@link tidyPlan}.
|
|
27
|
+
* The checkout itself and anything still claimed are excluded
|
|
28
|
+
* before merge state is considered, so no confusion further down can
|
|
29
|
+
* propose removing either.
|
|
30
|
+
*/
|
|
31
|
+
export function orphanedTrees(ask) {
|
|
32
|
+
const held = new Set(ask.remembered);
|
|
33
|
+
const unattributed = new Set(ask.unattributed ?? []);
|
|
34
|
+
const reclaimable = [];
|
|
35
|
+
const retained = [];
|
|
36
|
+
for (const tree of ask.worktrees) {
|
|
37
|
+
const keep = (why, decide) => {
|
|
38
|
+
retained.push({ path: tree.path, why, ...(decide ? { decide } : {}) });
|
|
39
|
+
};
|
|
40
|
+
if (tree.path === ask.mainPath) {
|
|
41
|
+
keep("it is the checkout the others hang off");
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
if (held.has(tree.path)) {
|
|
45
|
+
// Not an orphan at all, and saying so matters: giving it back
|
|
46
|
+
// goes through whatever cut it, which knows things about taking
|
|
47
|
+
// a tree down that this does not. Deliberately vague about who
|
|
48
|
+
// holds it, because the broker is not the only one that can: a
|
|
49
|
+
// quest holds trees against a piece of work and answers the
|
|
50
|
+
// same question. Naming the broker would be wrong for those.
|
|
51
|
+
keep("something still holds it, so give it back rather than reclaiming it");
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
if (tree.dirty) {
|
|
55
|
+
// A refusal, not a decision. An uncommitted change exists in
|
|
56
|
+
// exactly one place and removing the tree ends it.
|
|
57
|
+
keep("it has uncommitted changes, which exist nowhere else");
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
if (unattributed.has(tree.path)) {
|
|
61
|
+
// Third, and each step of the order is a safety. Above a claim
|
|
62
|
+
// it downgraded somebody saying they want this now to nobody
|
|
63
|
+
// can say, which put a freshly claimed tree into the list a
|
|
64
|
+
// person is invited to clear. Above the dirty check it offered
|
|
65
|
+
// up a tree holding uncommitted work as a judgement call, and
|
|
66
|
+
// that work exists in exactly one place.
|
|
67
|
+
//
|
|
68
|
+
// Everything left here is unclaimed and committed, so the only
|
|
69
|
+
// thing missing is who wanted it.
|
|
70
|
+
keep("nothing recorded who cut it, so nothing can say whether a running session still wants it", true);
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if (tree.mergedIntoTrunk) {
|
|
74
|
+
reclaimable.push({
|
|
75
|
+
path: tree.path,
|
|
76
|
+
...(tree.branch ? { branch: tree.branch } : {}),
|
|
77
|
+
});
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
// The same ambiguity a branch has, for the same reason, and named
|
|
81
|
+
// the same way rather than guessed at.
|
|
82
|
+
keep(`nothing holds it, but ${tree.branch ?? "its branch"} is not contained in trunk, so it is either a squash merge or the only copy of that work`, true);
|
|
83
|
+
}
|
|
84
|
+
return { reclaimable, retained };
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Work out what has been spent, without spending anything.
|
|
88
|
+
*
|
|
89
|
+
* The order of the questions is the safety. Trunk and the checked-out
|
|
90
|
+
* branch are excluded before merge state is considered at all, so no
|
|
91
|
+
* amount of confusion further down can propose deleting either.
|
|
92
|
+
*/
|
|
93
|
+
export function tidyPlan(ask) {
|
|
94
|
+
const tracked = new Set(ask.tracked ?? []);
|
|
95
|
+
const removable = [];
|
|
96
|
+
const keeping = [];
|
|
97
|
+
for (const branch of ask.branches) {
|
|
98
|
+
const kept = (why, decide) => {
|
|
99
|
+
keeping.push({ branch: branch.name, why, ...(decide ? { decide } : {}) });
|
|
100
|
+
};
|
|
101
|
+
if (branch.name === ask.trunk) {
|
|
102
|
+
kept("it is the trunk");
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
if (branch.name === ask.current) {
|
|
106
|
+
// Git refuses this anyway, and hearing why from here beats
|
|
107
|
+
// hearing it from a command that has already deleted three
|
|
108
|
+
// other branches and then stopped.
|
|
109
|
+
kept("it is checked out here, so move off it first");
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
if (branch.mergedIntoTrunk) {
|
|
113
|
+
removable.push({
|
|
114
|
+
branch: branch.name,
|
|
115
|
+
alsoUntrack: tracked.has(branch.name),
|
|
116
|
+
});
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
if (branch.remoteGone) {
|
|
120
|
+
// The case worth slowing down for. A squash merge lands the
|
|
121
|
+
// work as a new commit, so the branch is not an ancestor of
|
|
122
|
+
// trunk and git will not call it merged, while the remote
|
|
123
|
+
// branch is gone because the merge deleted it. It looks
|
|
124
|
+
// exactly like a branch somebody deleted out from under
|
|
125
|
+
// unmerged work, and only a person can tell the two apart.
|
|
126
|
+
kept(`its upstream ${branch.tracking ?? "branch"} is gone but ${ask.trunk} does not contain it, which is what a squash merge looks like and also what losing work looks like`, true);
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
kept(`${ask.trunk} does not contain it yet`);
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
removable,
|
|
133
|
+
keeping,
|
|
134
|
+
prunable: ask.branches.some((branch) => branch.remoteGone === true),
|
|
135
|
+
};
|
|
136
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a tree for a change gets cut from.
|
|
3
|
+
*
|
|
4
|
+
* This exists because the answer used to be a guess. The review
|
|
5
|
+
* worktree provider resolved a source repo as
|
|
6
|
+
* `~/src/github.com/{owner}/{repo}`, which is correct on GitHub
|
|
7
|
+
* and silently wrong everywhere else: a change on another system
|
|
8
|
+
* resolves to a directory that does not exist, and the failure
|
|
9
|
+
* surfaces as a missing checkout rather than as the assumption it
|
|
10
|
+
* really is. A forge name baked into a path is the hardest kind of
|
|
11
|
+
* assumption to notice, because every test against that forge
|
|
12
|
+
* passes.
|
|
13
|
+
*
|
|
14
|
+
* So the question is answered from what the substrate already
|
|
15
|
+
* knows. A provider that resolved a change has already said where
|
|
16
|
+
* its repo is, locally or by remote, and a repo it could say
|
|
17
|
+
* neither about is reported as unplaceable rather than guessed at.
|
|
18
|
+
*/
|
|
19
|
+
import type { RepoLocator } from "../review/index.js";
|
|
20
|
+
/**
|
|
21
|
+
* Where the source for a tree comes from.
|
|
22
|
+
*
|
|
23
|
+
* Three outcomes rather than a path or nothing, because the caller
|
|
24
|
+
* has to act differently on each: use it, fetch it first, or tell
|
|
25
|
+
* somebody it cannot be found. Collapsing the last two loses the
|
|
26
|
+
* difference between work to do and a question to ask.
|
|
27
|
+
*/
|
|
28
|
+
export type TreeSource =
|
|
29
|
+
/** A checkout already on disk; cut the tree from here. */
|
|
30
|
+
{
|
|
31
|
+
kind: "checkout";
|
|
32
|
+
path: string;
|
|
33
|
+
}
|
|
34
|
+
/** Known only by remote, so it has to be fetched first. */
|
|
35
|
+
| {
|
|
36
|
+
kind: "clone";
|
|
37
|
+
remoteUrl: string;
|
|
38
|
+
}
|
|
39
|
+
/** Neither known. Say so; do not invent a path. */
|
|
40
|
+
| {
|
|
41
|
+
kind: "unknown";
|
|
42
|
+
repoKey: string;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Decide where a change's tree should be cut from.
|
|
46
|
+
*
|
|
47
|
+
* A local checkout wins over a remote, because it is already
|
|
48
|
+
* there and cutting a tree from it costs a fraction of a fetch.
|
|
49
|
+
*/
|
|
50
|
+
export declare function treeSource(repo: RepoLocator): TreeSource;
|
|
51
|
+
/**
|
|
52
|
+
* What a tree is wanted for.
|
|
53
|
+
*
|
|
54
|
+
* Two lifecycles, not three. The review worktrees, the fix
|
|
55
|
+
* worktrees and the quest trees looked like three contracts, but
|
|
56
|
+
* the fix and quest cases differ only in what names them: both are
|
|
57
|
+
* a durable branch you edit in. What actually varies is what the
|
|
58
|
+
* tree is pinned to, and that changes the reuse rule.
|
|
59
|
+
*
|
|
60
|
+
* A `snapshot` is pinned to a commit and read rather than edited,
|
|
61
|
+
* so readers can share one. A `worktree` is pinned to a branch and
|
|
62
|
+
* expects to be committed in, so it belongs to one stream of work.
|
|
63
|
+
*/
|
|
64
|
+
export type TreeRequest = {
|
|
65
|
+
intent: "snapshot";
|
|
66
|
+
repo: RepoLocator;
|
|
67
|
+
purpose: string;
|
|
68
|
+
commit: string;
|
|
69
|
+
paths?: readonly string[];
|
|
70
|
+
} | {
|
|
71
|
+
intent: "worktree";
|
|
72
|
+
repo: RepoLocator;
|
|
73
|
+
purpose: string;
|
|
74
|
+
branch: string;
|
|
75
|
+
baseBranch?: string;
|
|
76
|
+
};
|
|
77
|
+
/** What a tree is, for the purpose of reusing it. */
|
|
78
|
+
export interface TreeIdentity {
|
|
79
|
+
/**
|
|
80
|
+
* Stable, filesystem-safe name for this tree. Safe to use as
|
|
81
|
+
* a directory component: repo keys carry colons and change
|
|
82
|
+
* labels carry slashes and hashes, and a key holding those
|
|
83
|
+
* either nests where nobody expected a directory or fails
|
|
84
|
+
* outright.
|
|
85
|
+
*/
|
|
86
|
+
key: string;
|
|
87
|
+
/**
|
|
88
|
+
* Whether two callers wanting this same tree may be handed
|
|
89
|
+
* the same one. True for a snapshot, since reading does not
|
|
90
|
+
* disturb a reader. False for a worktree, because somebody is
|
|
91
|
+
* editing in it, and that is a property of the intent rather
|
|
92
|
+
* than a caller's judgement call.
|
|
93
|
+
*/
|
|
94
|
+
shareable: boolean;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Work out what tree a request is asking for.
|
|
98
|
+
*
|
|
99
|
+
* A snapshot's identity carries its commit, so asking for another
|
|
100
|
+
* commit asks for another tree. A worktree's identity deliberately
|
|
101
|
+
* does not: the branch moves under it every time you commit, and
|
|
102
|
+
* an identity that moved with HEAD would orphan the tree you are
|
|
103
|
+
* working in on your first commit.
|
|
104
|
+
*
|
|
105
|
+
* Both are scoped to the repo, because a branch name and even a
|
|
106
|
+
* commit can appear in two repos and they are not the same tree.
|
|
107
|
+
*
|
|
108
|
+
* The `paths` a snapshot may narrow itself to are left out. Scoping
|
|
109
|
+
* is a provider's optimisation, not part of what the tree is;
|
|
110
|
+
* folding it in would fragment reuse per distinct file set.
|
|
111
|
+
*/
|
|
112
|
+
export declare function treeIdentity(request: TreeRequest): TreeIdentity;
|
|
113
|
+
/**
|
|
114
|
+
* Whether a tree already held answers a fresh request.
|
|
115
|
+
*
|
|
116
|
+
* Compared by identity rather than field by field, so the reuse
|
|
117
|
+
* rule lives in one place and cannot drift between the caller that
|
|
118
|
+
* provisions and the caller that looks one up.
|
|
119
|
+
*/
|
|
120
|
+
export declare function satisfies(held: TreeIdentity, request: TreeRequest): boolean;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a tree for a change gets cut from.
|
|
3
|
+
*
|
|
4
|
+
* This exists because the answer used to be a guess. The review
|
|
5
|
+
* worktree provider resolved a source repo as
|
|
6
|
+
* `~/src/github.com/{owner}/{repo}`, which is correct on GitHub
|
|
7
|
+
* and silently wrong everywhere else: a change on another system
|
|
8
|
+
* resolves to a directory that does not exist, and the failure
|
|
9
|
+
* surfaces as a missing checkout rather than as the assumption it
|
|
10
|
+
* really is. A forge name baked into a path is the hardest kind of
|
|
11
|
+
* assumption to notice, because every test against that forge
|
|
12
|
+
* passes.
|
|
13
|
+
*
|
|
14
|
+
* So the question is answered from what the substrate already
|
|
15
|
+
* knows. A provider that resolved a change has already said where
|
|
16
|
+
* its repo is, locally or by remote, and a repo it could say
|
|
17
|
+
* neither about is reported as unplaceable rather than guessed at.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Decide where a change's tree should be cut from.
|
|
21
|
+
*
|
|
22
|
+
* A local checkout wins over a remote, because it is already
|
|
23
|
+
* there and cutting a tree from it costs a fraction of a fetch.
|
|
24
|
+
*/
|
|
25
|
+
export function treeSource(repo) {
|
|
26
|
+
if (repo.localPath)
|
|
27
|
+
return { kind: "checkout", path: repo.localPath };
|
|
28
|
+
if (repo.remoteUrl)
|
|
29
|
+
return { kind: "clone", remoteUrl: repo.remoteUrl };
|
|
30
|
+
return { kind: "unknown", repoKey: repo.key };
|
|
31
|
+
}
|
|
32
|
+
/** Characters that must not reach a directory name. */
|
|
33
|
+
const UNSAFE_IN_PATH = /[^a-zA-Z0-9._-]+/g;
|
|
34
|
+
function slug(value) {
|
|
35
|
+
return value.replace(UNSAFE_IN_PATH, "-");
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Work out what tree a request is asking for.
|
|
39
|
+
*
|
|
40
|
+
* A snapshot's identity carries its commit, so asking for another
|
|
41
|
+
* commit asks for another tree. A worktree's identity deliberately
|
|
42
|
+
* does not: the branch moves under it every time you commit, and
|
|
43
|
+
* an identity that moved with HEAD would orphan the tree you are
|
|
44
|
+
* working in on your first commit.
|
|
45
|
+
*
|
|
46
|
+
* Both are scoped to the repo, because a branch name and even a
|
|
47
|
+
* commit can appear in two repos and they are not the same tree.
|
|
48
|
+
*
|
|
49
|
+
* The `paths` a snapshot may narrow itself to are left out. Scoping
|
|
50
|
+
* is a provider's optimisation, not part of what the tree is;
|
|
51
|
+
* folding it in would fragment reuse per distinct file set.
|
|
52
|
+
*/
|
|
53
|
+
export function treeIdentity(request) {
|
|
54
|
+
const repo = slug(request.repo.key);
|
|
55
|
+
if (request.intent === "snapshot") {
|
|
56
|
+
return { key: `snapshot-${repo}-${slug(request.commit)}`, shareable: true };
|
|
57
|
+
}
|
|
58
|
+
return { key: `worktree-${repo}-${slug(request.branch)}`, shareable: false };
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Whether a tree already held answers a fresh request.
|
|
62
|
+
*
|
|
63
|
+
* Compared by identity rather than field by field, so the reuse
|
|
64
|
+
* rule lives in one place and cannot drift between the caller that
|
|
65
|
+
* provisions and the caller that looks one up.
|
|
66
|
+
*/
|
|
67
|
+
export function satisfies(held, request) {
|
|
68
|
+
return held.key === treeIdentity(request).key;
|
|
69
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git, told that there is nobody here to ask.
|
|
3
|
+
*
|
|
4
|
+
* Found by driving `resume` and watching it never come back. `git rebase
|
|
5
|
+
* --continue` finishes a conflicted pick by running
|
|
6
|
+
* `git commit -F .git/rebase-merge/message -e`, and the `-e` means edit: git
|
|
7
|
+
* launched an editor and waited for a human on a stdin that no human was
|
|
8
|
+
* attached to. The tool sat there forever, and because the working layer never
|
|
9
|
+
* passed the caller's abort signal down to the child, there was no way to stop
|
|
10
|
+
* it either. Two faults, and the second is what turned a wrong answer into a
|
|
11
|
+
* wedged session.
|
|
12
|
+
*
|
|
13
|
+
* A worse property than the hang itself: the tree is left mid-rebase. Somebody
|
|
14
|
+
* who kills the session finds a repository in a state they did not ask for and
|
|
15
|
+
* no tool willing to talk about it, which is the exact situation the halt design
|
|
16
|
+
* exists to prevent.
|
|
17
|
+
*
|
|
18
|
+
* So every git call that can reach an editor says up front that there is not one.
|
|
19
|
+
* `true` exits zero without reading anything, so git accepts the message it
|
|
20
|
+
* already had, which is the message the commit is supposed to keep.
|
|
21
|
+
*
|
|
22
|
+
* That is the rebase family and not `commit`, which this layer always calls with
|
|
23
|
+
* `-m`: git never consults an editor when the message is on the command line, and
|
|
24
|
+
* flags that cannot change an outcome are noise at the call site. A passphrase
|
|
25
|
+
* prompt from a signing key is a real hang and a different problem, since the
|
|
26
|
+
* honest answer to it is not to disable signing. The abort signal covers that
|
|
27
|
+
* one.
|
|
28
|
+
*/
|
|
29
|
+
/**
|
|
30
|
+
* Git arguments with the editor turned off.
|
|
31
|
+
*
|
|
32
|
+
* Wrap the whole argument list rather than remembering to add flags at each call
|
|
33
|
+
* site, since the call that forgets is the one that hangs, and it hangs only when
|
|
34
|
+
* a rebase actually conflicts. That is a fault which passes every test and waits
|
|
35
|
+
* for somebody's real conflict to appear.
|
|
36
|
+
*
|
|
37
|
+
* These are global flags, so they go before the subcommand. Anything already
|
|
38
|
+
* global in the list, `-C` in particular, stays valid in any order beside them.
|
|
39
|
+
*/
|
|
40
|
+
export declare function unattended(args: readonly string[]): string[];
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git, told that there is nobody here to ask.
|
|
3
|
+
*
|
|
4
|
+
* Found by driving `resume` and watching it never come back. `git rebase
|
|
5
|
+
* --continue` finishes a conflicted pick by running
|
|
6
|
+
* `git commit -F .git/rebase-merge/message -e`, and the `-e` means edit: git
|
|
7
|
+
* launched an editor and waited for a human on a stdin that no human was
|
|
8
|
+
* attached to. The tool sat there forever, and because the working layer never
|
|
9
|
+
* passed the caller's abort signal down to the child, there was no way to stop
|
|
10
|
+
* it either. Two faults, and the second is what turned a wrong answer into a
|
|
11
|
+
* wedged session.
|
|
12
|
+
*
|
|
13
|
+
* A worse property than the hang itself: the tree is left mid-rebase. Somebody
|
|
14
|
+
* who kills the session finds a repository in a state they did not ask for and
|
|
15
|
+
* no tool willing to talk about it, which is the exact situation the halt design
|
|
16
|
+
* exists to prevent.
|
|
17
|
+
*
|
|
18
|
+
* So every git call that can reach an editor says up front that there is not one.
|
|
19
|
+
* `true` exits zero without reading anything, so git accepts the message it
|
|
20
|
+
* already had, which is the message the commit is supposed to keep.
|
|
21
|
+
*
|
|
22
|
+
* That is the rebase family and not `commit`, which this layer always calls with
|
|
23
|
+
* `-m`: git never consults an editor when the message is on the command line, and
|
|
24
|
+
* flags that cannot change an outcome are noise at the call site. A passphrase
|
|
25
|
+
* prompt from a signing key is a real hang and a different problem, since the
|
|
26
|
+
* honest answer to it is not to disable signing. The abort signal covers that
|
|
27
|
+
* one.
|
|
28
|
+
*/
|
|
29
|
+
/**
|
|
30
|
+
* Global git flags that guarantee a command cannot stop to ask a human.
|
|
31
|
+
*
|
|
32
|
+
* Both editors are named because git reaches for two different ones and only one
|
|
33
|
+
* of them is the commit message. `sequence.editor` presents a todo list, which
|
|
34
|
+
* an interactive rebase needs and nothing here asks for today. It is set anyway:
|
|
35
|
+
* the cost is two arguments nobody sees, and the failure it prevents is a
|
|
36
|
+
* process wedged with a repository half-rewritten.
|
|
37
|
+
*/
|
|
38
|
+
const NO_EDITOR = [
|
|
39
|
+
"-c",
|
|
40
|
+
"core.editor=true",
|
|
41
|
+
"-c",
|
|
42
|
+
"sequence.editor=true",
|
|
43
|
+
];
|
|
44
|
+
/**
|
|
45
|
+
* Git arguments with the editor turned off.
|
|
46
|
+
*
|
|
47
|
+
* Wrap the whole argument list rather than remembering to add flags at each call
|
|
48
|
+
* site, since the call that forgets is the one that hangs, and it hangs only when
|
|
49
|
+
* a rebase actually conflicts. That is a fault which passes every test and waits
|
|
50
|
+
* for somebody's real conflict to appear.
|
|
51
|
+
*
|
|
52
|
+
* These are global flags, so they go before the subcommand. Anything already
|
|
53
|
+
* global in the list, `-C` in particular, stays valid in any order beside them.
|
|
54
|
+
*/
|
|
55
|
+
export function unattended(args) {
|
|
56
|
+
return [...NO_EDITOR, ...args];
|
|
57
|
+
}
|