@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,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The bus contract between the working layer and its providers.
|
|
3
|
+
*
|
|
4
|
+
* A provider registers over the event bus rather than by importing
|
|
5
|
+
* the registry, so it can live in a different package from the host
|
|
6
|
+
* without either depending on the other's module graph. The names
|
|
7
|
+
* are versioned because the payload is a public contract; a breaking
|
|
8
|
+
* change ships as `:v2` beside the old one rather than quietly
|
|
9
|
+
* changing what `:v1` means.
|
|
10
|
+
*
|
|
11
|
+
* The names are owned by the domain, `work:`, not by whichever
|
|
12
|
+
* extension happens to host it. An event named after an extension
|
|
13
|
+
* makes every other extension depend on that one's continued
|
|
14
|
+
* existence, which is the coupling the bus is here to avoid.
|
|
15
|
+
*
|
|
16
|
+
* Both directions of the handshake matter. The host emits
|
|
17
|
+
* {@link WORK_READY} when its registry is live, and a provider
|
|
18
|
+
* listens for it so it can re-register after the host reloads. A
|
|
19
|
+
* provider also emits {@link WORK_REGISTER_TREE_PROVIDER} on its own
|
|
20
|
+
* activation, in case the host was already up. Either order works,
|
|
21
|
+
* and both are idempotent because registration replaces by id.
|
|
22
|
+
*
|
|
23
|
+
* A consumer needs the same courtesy for the opposite reason. The
|
|
24
|
+
* bus does not replay, so a consumer that activated after the host
|
|
25
|
+
* missed the announcement and has no way to know it happened.
|
|
26
|
+
* {@link WORK_REQUEST} is how it asks; the host answers by
|
|
27
|
+
* announcing itself again. Load order therefore decides nothing,
|
|
28
|
+
* which is the point: an extension cannot choose when it is loaded
|
|
29
|
+
* relative to another.
|
|
30
|
+
*/
|
|
31
|
+
import type { TreeBroker, TreeProvider } from "./broker.js";
|
|
32
|
+
/** Emitted by the host once its registry accepts providers. */
|
|
33
|
+
export declare const WORK_READY = "work:ready:v1";
|
|
34
|
+
/** Emitted by a provider to register itself with the host. */
|
|
35
|
+
export declare const WORK_REGISTER_TREE_PROVIDER = "work:tree-provider:register:v1";
|
|
36
|
+
/**
|
|
37
|
+
* Emitted by a consumer asking the host to announce itself, for when
|
|
38
|
+
* the consumer loaded second and missed {@link WORK_READY}.
|
|
39
|
+
*/
|
|
40
|
+
export declare const WORK_REQUEST = "work:request:v1";
|
|
41
|
+
/**
|
|
42
|
+
* Emitted before reclaiming trees, asking who else holds one.
|
|
43
|
+
*
|
|
44
|
+
* The working layer is not the only thing that cuts a worktree. A
|
|
45
|
+
* quest holds trees against a piece of work and knows nothing about
|
|
46
|
+
* this broker's memory, and any other package may do the same. From
|
|
47
|
+
* git's side those are indistinguishable from a tree somebody leaked:
|
|
48
|
+
* the directory is there, the broker has no record, and every check
|
|
49
|
+
* short of asking says abandoned.
|
|
50
|
+
*
|
|
51
|
+
* So reclamation asks first, and anything holding trees answers by
|
|
52
|
+
* pushing its paths onto {@link TreeClaims.paths}. Silence is the
|
|
53
|
+
* dangerous default here rather than the safe one, which is why this
|
|
54
|
+
* is a broadcast question and not a lookup against a registry: an
|
|
55
|
+
* owner that never registered still gets to speak, and an owner that
|
|
56
|
+
* is not loaded cannot be spoken for.
|
|
57
|
+
*/
|
|
58
|
+
export declare const WORK_TREE_CLAIMS = "work:tree-claims:v1";
|
|
59
|
+
/** What holders write their trees into, in answer to the question. */
|
|
60
|
+
export interface TreeClaims {
|
|
61
|
+
/**
|
|
62
|
+
* Every tree some other substrate is holding.
|
|
63
|
+
*
|
|
64
|
+
* Appended to rather than returned, because there is no telling how
|
|
65
|
+
* many holders exist and a handler that replaced this would silently
|
|
66
|
+
* drop the answers of everything that ran before it.
|
|
67
|
+
*/
|
|
68
|
+
paths: string[];
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* What the host hands out over {@link WORK_READY}.
|
|
72
|
+
*
|
|
73
|
+
* Adding a member to this, or to a type it hands back, is not the
|
|
74
|
+
* breaking change the version tag is for. A consumer that does not
|
|
75
|
+
* know about a member cannot call it, so every existing consumer
|
|
76
|
+
* keeps working unchanged; what breaks is a consumer calling a member
|
|
77
|
+
* an older host does not have, and that consumer is the one that has
|
|
78
|
+
* to be careful, since a version bump would only turn a missing
|
|
79
|
+
* method into a host it never hears from at all.
|
|
80
|
+
*
|
|
81
|
+
* Removing a member, renaming one, or changing what one returns is
|
|
82
|
+
* the breaking kind, and that is what ships as `:v2`.
|
|
83
|
+
*/
|
|
84
|
+
export interface WorkApi {
|
|
85
|
+
/** Register a tree provider. Replaces one with the same id. */
|
|
86
|
+
registerTreeProvider(provider: TreeProvider): void;
|
|
87
|
+
/** Ids of every registered provider, most specific first. */
|
|
88
|
+
listTreeProviders(): readonly string[];
|
|
89
|
+
/**
|
|
90
|
+
* The host's own broker.
|
|
91
|
+
*
|
|
92
|
+
* Shared rather than rebuilt, so a consumer works against the
|
|
93
|
+
* same held trees the host does. A consumer with its own broker
|
|
94
|
+
* would hold a second set of trees for the same commits, cut
|
|
95
|
+
* them twice, and release each other's out from under them.
|
|
96
|
+
*/
|
|
97
|
+
broker(): TreeBroker;
|
|
98
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The bus contract between the working layer and its providers.
|
|
3
|
+
*
|
|
4
|
+
* A provider registers over the event bus rather than by importing
|
|
5
|
+
* the registry, so it can live in a different package from the host
|
|
6
|
+
* without either depending on the other's module graph. The names
|
|
7
|
+
* are versioned because the payload is a public contract; a breaking
|
|
8
|
+
* change ships as `:v2` beside the old one rather than quietly
|
|
9
|
+
* changing what `:v1` means.
|
|
10
|
+
*
|
|
11
|
+
* The names are owned by the domain, `work:`, not by whichever
|
|
12
|
+
* extension happens to host it. An event named after an extension
|
|
13
|
+
* makes every other extension depend on that one's continued
|
|
14
|
+
* existence, which is the coupling the bus is here to avoid.
|
|
15
|
+
*
|
|
16
|
+
* Both directions of the handshake matter. The host emits
|
|
17
|
+
* {@link WORK_READY} when its registry is live, and a provider
|
|
18
|
+
* listens for it so it can re-register after the host reloads. A
|
|
19
|
+
* provider also emits {@link WORK_REGISTER_TREE_PROVIDER} on its own
|
|
20
|
+
* activation, in case the host was already up. Either order works,
|
|
21
|
+
* and both are idempotent because registration replaces by id.
|
|
22
|
+
*
|
|
23
|
+
* A consumer needs the same courtesy for the opposite reason. The
|
|
24
|
+
* bus does not replay, so a consumer that activated after the host
|
|
25
|
+
* missed the announcement and has no way to know it happened.
|
|
26
|
+
* {@link WORK_REQUEST} is how it asks; the host answers by
|
|
27
|
+
* announcing itself again. Load order therefore decides nothing,
|
|
28
|
+
* which is the point: an extension cannot choose when it is loaded
|
|
29
|
+
* relative to another.
|
|
30
|
+
*/
|
|
31
|
+
/** Emitted by the host once its registry accepts providers. */
|
|
32
|
+
export const WORK_READY = "work:ready:v1";
|
|
33
|
+
/** Emitted by a provider to register itself with the host. */
|
|
34
|
+
export const WORK_REGISTER_TREE_PROVIDER = "work:tree-provider:register:v1";
|
|
35
|
+
/**
|
|
36
|
+
* Emitted by a consumer asking the host to announce itself, for when
|
|
37
|
+
* the consumer loaded second and missed {@link WORK_READY}.
|
|
38
|
+
*/
|
|
39
|
+
export const WORK_REQUEST = "work:request:v1";
|
|
40
|
+
/**
|
|
41
|
+
* Emitted before reclaiming trees, asking who else holds one.
|
|
42
|
+
*
|
|
43
|
+
* The working layer is not the only thing that cuts a worktree. A
|
|
44
|
+
* quest holds trees against a piece of work and knows nothing about
|
|
45
|
+
* this broker's memory, and any other package may do the same. From
|
|
46
|
+
* git's side those are indistinguishable from a tree somebody leaked:
|
|
47
|
+
* the directory is there, the broker has no record, and every check
|
|
48
|
+
* short of asking says abandoned.
|
|
49
|
+
*
|
|
50
|
+
* So reclamation asks first, and anything holding trees answers by
|
|
51
|
+
* pushing its paths onto {@link TreeClaims.paths}. Silence is the
|
|
52
|
+
* dangerous default here rather than the safe one, which is why this
|
|
53
|
+
* is a broadcast question and not a lookup against a registry: an
|
|
54
|
+
* owner that never registered still gets to speak, and an owner that
|
|
55
|
+
* is not loaded cannot be spoken for.
|
|
56
|
+
*/
|
|
57
|
+
export const WORK_TREE_CLAIMS = "work:tree-claims:v1";
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a tree currently holds, and whether anything may move it.
|
|
3
|
+
*
|
|
4
|
+
* The working layer needs this before it re-points a tree, because
|
|
5
|
+
* stepping through a stack means checking a different commit out of
|
|
6
|
+
* a directory somebody may be working in. Overwriting a modified
|
|
7
|
+
* file is bad; overwriting an untracked one is unrecoverable, so an
|
|
8
|
+
* untracked file counts as work here rather than as noise.
|
|
9
|
+
*/
|
|
10
|
+
import { type Exec } from "../exec/index.js";
|
|
11
|
+
import type { LocalBranch, WorktreeOnDisk } from "./tidy.js";
|
|
12
|
+
/** One path git reports as changed, and how. */
|
|
13
|
+
export interface ChangedPath {
|
|
14
|
+
path: string;
|
|
15
|
+
/** Staged for commit, as opposed to modified in the tree. */
|
|
16
|
+
staged: boolean;
|
|
17
|
+
kind: "modified" | "added" | "deleted" | "renamed" | "untracked";
|
|
18
|
+
}
|
|
19
|
+
/** What a tree holds beyond its last commit. */
|
|
20
|
+
export interface WorkingState {
|
|
21
|
+
clean: boolean;
|
|
22
|
+
changed: readonly ChangedPath[];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Where a tree points.
|
|
26
|
+
*
|
|
27
|
+
* `branch` is absent rather than empty when the tree is detached. A
|
|
28
|
+
* snapshot is detached by design, so inventing a name would make
|
|
29
|
+
* every snapshot look like a branch tree.
|
|
30
|
+
*/
|
|
31
|
+
export interface TreeHead {
|
|
32
|
+
commit: string;
|
|
33
|
+
branch?: string;
|
|
34
|
+
}
|
|
35
|
+
/** Reading a tree's current state. */
|
|
36
|
+
export interface WorkHistory {
|
|
37
|
+
status(treePath: string): Promise<WorkingState>;
|
|
38
|
+
head(treePath: string): Promise<TreeHead>;
|
|
39
|
+
/**
|
|
40
|
+
* Every local branch, with what trunk and the remote say about it.
|
|
41
|
+
*
|
|
42
|
+
* Reported rather than acted on: deciding what is spent is
|
|
43
|
+
* {@link tidyPlan}'s job, and it needs all three facts together to
|
|
44
|
+
* tell a squash merge from lost work.
|
|
45
|
+
*/
|
|
46
|
+
branches(treePath: string, trunk: string): Promise<LocalBranch[]>;
|
|
47
|
+
/**
|
|
48
|
+
* Every worktree git tracks for this repo, with what is in each.
|
|
49
|
+
*
|
|
50
|
+
* Reported rather than acted on, for the same reason as
|
|
51
|
+
* {@link branches}: whether a tree has been left behind is
|
|
52
|
+
* {@link orphanedTrees}'s decision, and it needs the merge state and
|
|
53
|
+
* the dirty state together to tell an abandoned tree from the only
|
|
54
|
+
* copy of somebody's work.
|
|
55
|
+
*/
|
|
56
|
+
worktrees(treePath: string, trunk: string): Promise<WorktreeOnDisk[]>;
|
|
57
|
+
}
|
|
58
|
+
/** Read a tree's state with plain git. */
|
|
59
|
+
export declare function createGitHistory(deps: {
|
|
60
|
+
exec: Exec;
|
|
61
|
+
}): WorkHistory;
|
|
62
|
+
/**
|
|
63
|
+
* Why a tree may not be re-pointed, or nothing if it may.
|
|
64
|
+
*
|
|
65
|
+
* Returns the sentence rather than a boolean, because a refusal that
|
|
66
|
+
* does not say what is in the way leaves the person to go and look,
|
|
67
|
+
* which is the entire cost of refusing.
|
|
68
|
+
*/
|
|
69
|
+
export declare function blocksRepoint(state: WorkingState): string | undefined;
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a tree currently holds, and whether anything may move it.
|
|
3
|
+
*
|
|
4
|
+
* The working layer needs this before it re-points a tree, because
|
|
5
|
+
* stepping through a stack means checking a different commit out of
|
|
6
|
+
* a directory somebody may be working in. Overwriting a modified
|
|
7
|
+
* file is bad; overwriting an untracked one is unrecoverable, so an
|
|
8
|
+
* untracked file counts as work here rather than as noise.
|
|
9
|
+
*/
|
|
10
|
+
import { run } from "../exec/index.js";
|
|
11
|
+
import { displayPath } from "../ui/path.js";
|
|
12
|
+
/** Porcelain v1 status codes, mapped to what they mean. */
|
|
13
|
+
const KIND = {
|
|
14
|
+
M: "modified",
|
|
15
|
+
A: "added",
|
|
16
|
+
D: "deleted",
|
|
17
|
+
R: "renamed",
|
|
18
|
+
C: "added",
|
|
19
|
+
U: "modified",
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Read one porcelain v1 line.
|
|
23
|
+
*
|
|
24
|
+
* The format is two status columns then a space then the path, and a
|
|
25
|
+
* rename carries both names as `old -> new`. The new name is the one
|
|
26
|
+
* that matters: it is what is on disk, and what a re-point would
|
|
27
|
+
* overwrite.
|
|
28
|
+
*/
|
|
29
|
+
function parseLine(line) {
|
|
30
|
+
if (line.length < 4)
|
|
31
|
+
return undefined;
|
|
32
|
+
const [x, y] = [line[0], line[1]];
|
|
33
|
+
const raw = line.slice(3);
|
|
34
|
+
const path = raw.includes(" -> ") ? raw.split(" -> ")[1] : raw;
|
|
35
|
+
if (path === undefined || path === "")
|
|
36
|
+
return undefined;
|
|
37
|
+
if (x === "?" && y === "?") {
|
|
38
|
+
return { path, staged: false, kind: "untracked" };
|
|
39
|
+
}
|
|
40
|
+
const staged = x !== " " && x !== "?";
|
|
41
|
+
const code = staged ? x : y;
|
|
42
|
+
const kind = code === undefined ? undefined : KIND[code];
|
|
43
|
+
if (kind === undefined)
|
|
44
|
+
return undefined;
|
|
45
|
+
return { path, staged, kind };
|
|
46
|
+
}
|
|
47
|
+
/** Read a tree's state with plain git. */
|
|
48
|
+
export function createGitHistory(deps) {
|
|
49
|
+
return {
|
|
50
|
+
async status(treePath) {
|
|
51
|
+
const out = await run(deps.exec, "git", ["-C", treePath, "status", "--porcelain=v1", "--untracked-files=all"], `Reading what ${displayPath(treePath)} holds`);
|
|
52
|
+
const changed = out
|
|
53
|
+
.split("\n")
|
|
54
|
+
.map((line) => parseLine(line))
|
|
55
|
+
.filter((entry) => entry !== undefined);
|
|
56
|
+
return { clean: changed.length === 0, changed };
|
|
57
|
+
},
|
|
58
|
+
async head(treePath) {
|
|
59
|
+
const commit = (await run(deps.exec, "git", ["-C", treePath, "rev-parse", "HEAD"], `Reading where ${displayPath(treePath)} points`)).trim();
|
|
60
|
+
// A detached tree makes this fail rather than answer, which
|
|
61
|
+
// is the answer: there is no branch to name.
|
|
62
|
+
const branch = await deps.exec("git", [
|
|
63
|
+
"-C",
|
|
64
|
+
treePath,
|
|
65
|
+
"symbolic-ref",
|
|
66
|
+
"--short",
|
|
67
|
+
"HEAD",
|
|
68
|
+
]);
|
|
69
|
+
if (branch.code !== 0)
|
|
70
|
+
return { commit };
|
|
71
|
+
const name = branch.stdout.trim();
|
|
72
|
+
return name === "" ? { commit } : { commit, branch: name };
|
|
73
|
+
},
|
|
74
|
+
async branches(treePath, trunk) {
|
|
75
|
+
// One pass for the whole picture. Asking `--merged` separately
|
|
76
|
+
// and joining the answers means two listings taken at different
|
|
77
|
+
// moments, and the join is on a name that can move between them.
|
|
78
|
+
const listed = await run(deps.exec, "git", [
|
|
79
|
+
"-C",
|
|
80
|
+
treePath,
|
|
81
|
+
"for-each-ref",
|
|
82
|
+
"--format=%(refname:short)\t%(upstream:short)\t%(upstream:track,nobracket)",
|
|
83
|
+
"refs/heads",
|
|
84
|
+
], `Listing the branches in ${displayPath(treePath)}`);
|
|
85
|
+
const merged = new Set((await run(deps.exec, "git", [
|
|
86
|
+
"-C",
|
|
87
|
+
treePath,
|
|
88
|
+
"branch",
|
|
89
|
+
"--format=%(refname:short)",
|
|
90
|
+
"--merged",
|
|
91
|
+
trunk,
|
|
92
|
+
], `Asking which branches ${trunk} already contains`))
|
|
93
|
+
.split("\n")
|
|
94
|
+
.map((line) => line.trim())
|
|
95
|
+
.filter((line) => line !== ""));
|
|
96
|
+
return listed
|
|
97
|
+
.split("\n")
|
|
98
|
+
.map((line) => line.split("\t"))
|
|
99
|
+
.filter(([name]) => name !== undefined && name !== "")
|
|
100
|
+
.map(([name, upstream, track]) => ({
|
|
101
|
+
name: name,
|
|
102
|
+
mergedIntoTrunk: merged.has(name),
|
|
103
|
+
...(upstream ? { tracking: upstream } : {}),
|
|
104
|
+
// Git spells a vanished upstream "gone" in the track field,
|
|
105
|
+
// which is the only place it says so without a fetch.
|
|
106
|
+
...(track === "gone" ? { remoteGone: true } : {}),
|
|
107
|
+
}));
|
|
108
|
+
},
|
|
109
|
+
async worktrees(treePath, trunk) {
|
|
110
|
+
// Porcelain, because the human-readable listing puts the branch
|
|
111
|
+
// in square brackets and a detached tree in the same column, so
|
|
112
|
+
// parsing it means telling those apart by punctuation.
|
|
113
|
+
const listed = await run(deps.exec, "git", ["-C", treePath, "worktree", "list", "--porcelain"], `Listing the worktrees beside ${displayPath(treePath)}`);
|
|
114
|
+
const merged = new Set((await run(deps.exec, "git", [
|
|
115
|
+
"-C",
|
|
116
|
+
treePath,
|
|
117
|
+
"branch",
|
|
118
|
+
"--format=%(refname:short)",
|
|
119
|
+
"--merged",
|
|
120
|
+
trunk,
|
|
121
|
+
], `Asking which branches ${trunk} already contains`))
|
|
122
|
+
.split("\n")
|
|
123
|
+
.map((line) => line.trim())
|
|
124
|
+
.filter((line) => line !== ""));
|
|
125
|
+
// A porcelain record is a run of lines per tree, separated by a
|
|
126
|
+
// blank one: `worktree <path>`, then optionally `branch <ref>`
|
|
127
|
+
// or `detached`.
|
|
128
|
+
const trees = [];
|
|
129
|
+
for (const record of listed.split("\n\n")) {
|
|
130
|
+
let path;
|
|
131
|
+
let branch;
|
|
132
|
+
for (const line of record.split("\n")) {
|
|
133
|
+
if (line.startsWith("worktree "))
|
|
134
|
+
path = line.slice(9).trim();
|
|
135
|
+
if (line.startsWith("branch ")) {
|
|
136
|
+
branch = line
|
|
137
|
+
.slice(7)
|
|
138
|
+
.trim()
|
|
139
|
+
.replace(/^refs\/heads\//, "");
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
if (!path)
|
|
143
|
+
continue;
|
|
144
|
+
// Asked per tree, because a dirty tree is the one refusal here
|
|
145
|
+
// that cannot be recovered from and no listing reports it.
|
|
146
|
+
const state = await this.status(path);
|
|
147
|
+
trees.push({
|
|
148
|
+
path,
|
|
149
|
+
...(branch ? { branch } : {}),
|
|
150
|
+
...(state.clean ? {} : { dirty: true }),
|
|
151
|
+
...(branch && merged.has(branch) ? { mergedIntoTrunk: true } : {}),
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
return trees;
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
/** How many paths a refusal names before it summarises. */
|
|
159
|
+
const NAMED_IN_REFUSAL = 5;
|
|
160
|
+
/**
|
|
161
|
+
* Why a tree may not be re-pointed, or nothing if it may.
|
|
162
|
+
*
|
|
163
|
+
* Returns the sentence rather than a boolean, because a refusal that
|
|
164
|
+
* does not say what is in the way leaves the person to go and look,
|
|
165
|
+
* which is the entire cost of refusing.
|
|
166
|
+
*/
|
|
167
|
+
export function blocksRepoint(state) {
|
|
168
|
+
if (state.clean)
|
|
169
|
+
return undefined;
|
|
170
|
+
const named = state.changed.slice(0, NAMED_IN_REFUSAL).map((c) => c.path);
|
|
171
|
+
const rest = state.changed.length - named.length;
|
|
172
|
+
const tail = rest > 0 ? `, and ${rest} more` : "";
|
|
173
|
+
return `This tree is holding uncommitted work (${named.join(", ")}${tail}), so re-pointing it would throw that away. Commit it, stash it, or ask for a different tree.`;
|
|
174
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The working layer: branches, commits, trees and stacks.
|
|
3
|
+
*
|
|
4
|
+
* Reviewing a change and working on one are different jobs, and
|
|
5
|
+
* this is the second. It is deliberately not called `git`: git is
|
|
6
|
+
* one implementation of it, and on a stacked workflow the backend
|
|
7
|
+
* that tracks the stack knows things plain git cannot be asked.
|
|
8
|
+
*
|
|
9
|
+
* Only the trees question is answered so far: where a tree gets
|
|
10
|
+
* cut from, and whether one already on disk answers a fresh
|
|
11
|
+
* request. Both are here before the council moves across, because
|
|
12
|
+
* the council cannot become provider-agnostic while it is asking a
|
|
13
|
+
* forge-shaped question.
|
|
14
|
+
*/
|
|
15
|
+
export type { AskedRepo, TreeAsk, TreeRequestOutcome, } from "./ask.js";
|
|
16
|
+
export { treeRequestFrom } from "./ask.js";
|
|
17
|
+
export type { BranchOptions, CommitMessage, WorkAuthor, } from "./author.js";
|
|
18
|
+
export { createGitAuthor, namingComplaints, safeBranchName, } from "./author.js";
|
|
19
|
+
export type { HeldTree, TreeBroker, TreeProvider } from "./broker.js";
|
|
20
|
+
export { createTreeBroker } from "./broker.js";
|
|
21
|
+
export type { TreeClaims, WorkApi } from "./events.js";
|
|
22
|
+
export { WORK_READY, WORK_REGISTER_TREE_PROVIDER, WORK_REQUEST, WORK_TREE_CLAIMS, } from "./events.js";
|
|
23
|
+
export type { ChangedPath, TreeHead, WorkHistory, WorkingState, } from "./history.js";
|
|
24
|
+
export { blocksRepoint, createGitHistory } from "./history.js";
|
|
25
|
+
export type { TreeAmbiguous, TreeInPlay } from "./inplay.js";
|
|
26
|
+
export { chooseTree, treeInPlay } from "./inplay.js";
|
|
27
|
+
export { createTreeMemory, type TreeMemory } from "./memory.js";
|
|
28
|
+
export type { Objection, PublishIntent, PublishReview, } from "./objection.js";
|
|
29
|
+
export { cautionsFrom, refusalFrom, WORK_PUBLISH_CHECK, } from "./objection.js";
|
|
30
|
+
export type { TreeProviderChoice, TreeProviderInfo } from "./provider.js";
|
|
31
|
+
export { chooseTreeProvider } from "./provider.js";
|
|
32
|
+
export { createGitTreeProvider } from "./providers/git.js";
|
|
33
|
+
export type { PushOptions, PushOutcome, WorkPublisher } from "./publish.js";
|
|
34
|
+
export { createGitPublisher } from "./publish.js";
|
|
35
|
+
export type { RebaseOutcome, ResumeOutcome, WorkRebaser, } from "./rebase.js";
|
|
36
|
+
export { createGitRebaser } from "./rebase.js";
|
|
37
|
+
export type { ReclaimDeps, ReclaimedTree, ReclaimOutcome, } from "./reclaim.js";
|
|
38
|
+
export { reclaimTrees } from "./reclaim.js";
|
|
39
|
+
export { clearTreeProviders, listTreeProviders, registerTreeProvider, unregisterTreeProvider, } from "./register.js";
|
|
40
|
+
export type { Faulted, ReorderPlan, ReparentStep, ReplayStep, RestackPlan, StackedBranch, StackFault, StackOrder, } from "./stack.js";
|
|
41
|
+
export { descendantsOf, orderStack, planReorder, planRestack, reparentFault, } from "./stack.js";
|
|
42
|
+
export type { ReplayResult, RestackOutcome, ShapeOutcome, SyncOutcome, WorkStacks, } from "./stacks.js";
|
|
43
|
+
export { createGitStacks } from "./stacks.js";
|
|
44
|
+
export type { SurveyRequest, SurveyTarget } from "./survey.js";
|
|
45
|
+
export { surveyTarget } from "./survey.js";
|
|
46
|
+
export type { Kept, LocalBranch, OrphanAsk, OrphanPlan, Reclaimable, Removable, Retained, TidyAsk, TidyPlan, WorktreeOnDisk, } from "./tidy.js";
|
|
47
|
+
export { orphanedTrees, tidyPlan } from "./tidy.js";
|
|
48
|
+
export type { TreeIdentity, TreeRequest, TreeSource } from "./tree.js";
|
|
49
|
+
export { satisfies, treeIdentity, treeSource } from "./tree.js";
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The working layer: branches, commits, trees and stacks.
|
|
3
|
+
*
|
|
4
|
+
* Reviewing a change and working on one are different jobs, and
|
|
5
|
+
* this is the second. It is deliberately not called `git`: git is
|
|
6
|
+
* one implementation of it, and on a stacked workflow the backend
|
|
7
|
+
* that tracks the stack knows things plain git cannot be asked.
|
|
8
|
+
*
|
|
9
|
+
* Only the trees question is answered so far: where a tree gets
|
|
10
|
+
* cut from, and whether one already on disk answers a fresh
|
|
11
|
+
* request. Both are here before the council moves across, because
|
|
12
|
+
* the council cannot become provider-agnostic while it is asking a
|
|
13
|
+
* forge-shaped question.
|
|
14
|
+
*/
|
|
15
|
+
export { treeRequestFrom } from "./ask.js";
|
|
16
|
+
export { createGitAuthor, namingComplaints, safeBranchName, } from "./author.js";
|
|
17
|
+
export { createTreeBroker } from "./broker.js";
|
|
18
|
+
export { WORK_READY, WORK_REGISTER_TREE_PROVIDER, WORK_REQUEST, WORK_TREE_CLAIMS, } from "./events.js";
|
|
19
|
+
export { blocksRepoint, createGitHistory } from "./history.js";
|
|
20
|
+
export { chooseTree, treeInPlay } from "./inplay.js";
|
|
21
|
+
export { createTreeMemory } from "./memory.js";
|
|
22
|
+
export { cautionsFrom, refusalFrom, WORK_PUBLISH_CHECK, } from "./objection.js";
|
|
23
|
+
export { chooseTreeProvider } from "./provider.js";
|
|
24
|
+
export { createGitTreeProvider } from "./providers/git.js";
|
|
25
|
+
export { createGitPublisher } from "./publish.js";
|
|
26
|
+
export { createGitRebaser } from "./rebase.js";
|
|
27
|
+
export { reclaimTrees } from "./reclaim.js";
|
|
28
|
+
export { clearTreeProviders, listTreeProviders, registerTreeProvider, unregisterTreeProvider, } from "./register.js";
|
|
29
|
+
export { descendantsOf, orderStack, planReorder, planRestack, reparentFault, } from "./stack.js";
|
|
30
|
+
export { createGitStacks } from "./stacks.js";
|
|
31
|
+
export { surveyTarget } from "./survey.js";
|
|
32
|
+
export { orphanedTrees, tidyPlan } from "./tidy.js";
|
|
33
|
+
export { satisfies, treeIdentity, treeSource } from "./tree.js";
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which held tree a call should act on when nobody said.
|
|
3
|
+
*
|
|
4
|
+
* Fifteen of the tool's actions take a tree, and until this existed every one of them
|
|
5
|
+
* had to be told which, every time, even for a session holding exactly one. The review
|
|
6
|
+
* side solved the same problem for changes and the browser solved it before that for
|
|
7
|
+
* sessions; this is the third turn of one idea, so it is written the same way.
|
|
8
|
+
*
|
|
9
|
+
* It is deliberately less willing to guess than the change version, and the difference
|
|
10
|
+
* is worth stating. There, several attached changes resolve to the most recent, because
|
|
11
|
+
* attaching one is how somebody says what they are working on, so recency is a
|
|
12
|
+
* statement of intent. Nothing here makes that statement: trees accumulate as you cut
|
|
13
|
+
* them, and the tool's actions include committing, pushing and replaying, where acting
|
|
14
|
+
* on the wrong one rewrites work in a directory nobody was looking at. So one tree is
|
|
15
|
+
* used and several is a question.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* The tree a call will act on.
|
|
19
|
+
*
|
|
20
|
+
* No note field, deliberately, and this is where it differs from the change version
|
|
21
|
+
* again. There, a note says which change was chosen, because a change is a thing you
|
|
22
|
+
* read and the answer need not mention it. Here every action already announces itself
|
|
23
|
+
* against the tree it acted on, as in `Recorded 3 paths in worktree-fix-410`, so a note
|
|
24
|
+
* would repeat what the next line says. A field nothing reads is worse than a missing
|
|
25
|
+
* one, because it does not present as missing.
|
|
26
|
+
*/
|
|
27
|
+
export interface TreeInPlay {
|
|
28
|
+
readonly key: string;
|
|
29
|
+
}
|
|
30
|
+
/** No single answer, so the caller has to choose. */
|
|
31
|
+
export interface TreeAmbiguous {
|
|
32
|
+
readonly candidates: readonly string[];
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Resolve the tree in play from what the caller said and what is held.
|
|
36
|
+
*
|
|
37
|
+
* An explicit name is never second-guessed, even when it matches nothing: somebody who
|
|
38
|
+
* names a tree means that tree, and a typo is better reported than quietly redirected
|
|
39
|
+
* to whatever else happens to be open.
|
|
40
|
+
*/
|
|
41
|
+
export declare function treeInPlay(asked: string | undefined, held: readonly string[]): TreeInPlay | TreeAmbiguous;
|
|
42
|
+
/** Say what to choose between, when the choice cannot be made here. */
|
|
43
|
+
export declare function chooseTree(candidates: readonly string[]): string;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which held tree a call should act on when nobody said.
|
|
3
|
+
*
|
|
4
|
+
* Fifteen of the tool's actions take a tree, and until this existed every one of them
|
|
5
|
+
* had to be told which, every time, even for a session holding exactly one. The review
|
|
6
|
+
* side solved the same problem for changes and the browser solved it before that for
|
|
7
|
+
* sessions; this is the third turn of one idea, so it is written the same way.
|
|
8
|
+
*
|
|
9
|
+
* It is deliberately less willing to guess than the change version, and the difference
|
|
10
|
+
* is worth stating. There, several attached changes resolve to the most recent, because
|
|
11
|
+
* attaching one is how somebody says what they are working on, so recency is a
|
|
12
|
+
* statement of intent. Nothing here makes that statement: trees accumulate as you cut
|
|
13
|
+
* them, and the tool's actions include committing, pushing and replaying, where acting
|
|
14
|
+
* on the wrong one rewrites work in a directory nobody was looking at. So one tree is
|
|
15
|
+
* used and several is a question.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Resolve the tree in play from what the caller said and what is held.
|
|
19
|
+
*
|
|
20
|
+
* An explicit name is never second-guessed, even when it matches nothing: somebody who
|
|
21
|
+
* names a tree means that tree, and a typo is better reported than quietly redirected
|
|
22
|
+
* to whatever else happens to be open.
|
|
23
|
+
*/
|
|
24
|
+
export function treeInPlay(asked, held) {
|
|
25
|
+
if (asked !== undefined)
|
|
26
|
+
return { key: asked };
|
|
27
|
+
const [only, ...rest] = held;
|
|
28
|
+
if (only === undefined)
|
|
29
|
+
return { candidates: held };
|
|
30
|
+
if (rest.length > 0)
|
|
31
|
+
return { candidates: held };
|
|
32
|
+
return { key: only };
|
|
33
|
+
}
|
|
34
|
+
/** Say what to choose between, when the choice cannot be made here. */
|
|
35
|
+
export function chooseTree(candidates) {
|
|
36
|
+
if (candidates.length === 0) {
|
|
37
|
+
return ("No tree is held. Ask for one with work tree, naming the repo, the " +
|
|
38
|
+
"branch and what it is for.");
|
|
39
|
+
}
|
|
40
|
+
return (`Say which tree, by its key or its path. ${candidates.length} are held: ` +
|
|
41
|
+
`${candidates.join(", ")}.`);
|
|
42
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remembering the trees a session cut, so the next session can find them.
|
|
3
|
+
*
|
|
4
|
+
* The broker held its trees in an array, which is correct for exactly as long as
|
|
5
|
+
* the process lives. A worktree outlives the process by design, so the next
|
|
6
|
+
* session opened with the trees still on disk, git still tracking them, and
|
|
7
|
+
* every verb answering "no held tree": not merely a listing that forgot, but
|
|
8
|
+
* commits stranded in a directory the tool could no longer reach, releasable
|
|
9
|
+
* only through the `git worktree` call the guide tells you never to make.
|
|
10
|
+
*
|
|
11
|
+
* No test could see it. A test builds a broker and uses it, which is one
|
|
12
|
+
* process; the fault needs two.
|
|
13
|
+
*
|
|
14
|
+
* The directory stays the source of truth for whether a tree exists, and this
|
|
15
|
+
* only supplies the identity a directory name cannot faithfully carry. When the
|
|
16
|
+
* two disagree the directory wins, because somebody who deletes a tree by hand
|
|
17
|
+
* has said something and a stale record has not.
|
|
18
|
+
*
|
|
19
|
+
* A record also says who cut it, which is a later addition and the reason
|
|
20
|
+
* anything is ever reclaimed. Without it "remembered" and "held" were one set,
|
|
21
|
+
* so every tree ever cut answered "something still holds it" forever: measured
|
|
22
|
+
* at 59 records and 649MB on one machine, growing by a snapshot per review
|
|
23
|
+
* round.
|
|
24
|
+
*/
|
|
25
|
+
import { type Owner, type ProcessFacts } from "../process/index.js";
|
|
26
|
+
import type { HeldTree } from "./broker.js";
|
|
27
|
+
/** Somewhere to write down what was cut. */
|
|
28
|
+
export interface TreeMemory {
|
|
29
|
+
/** Write a tree down, so a later session can find it. */
|
|
30
|
+
remember(held: HeldTree): void;
|
|
31
|
+
/**
|
|
32
|
+
* Write a tree down as held by this session.
|
|
33
|
+
*
|
|
34
|
+
* Separate from `remember`, which stays exactly as literal as it was: a
|
|
35
|
+
* caller replaying a record, or a test constructing one, must be able to
|
|
36
|
+
* write what it means rather than have this process's identity stamped
|
|
37
|
+
* over it.
|
|
38
|
+
*/
|
|
39
|
+
rememberHeldByUs(held: HeldTree, facts?: ProcessFacts): Promise<void>;
|
|
40
|
+
/** Forget one, once it has genuinely gone. */
|
|
41
|
+
forget(path: string): void;
|
|
42
|
+
/** Every tree written down that is still on disk. */
|
|
43
|
+
recall(): readonly HeldTree[];
|
|
44
|
+
/**
|
|
45
|
+
* Those a running session still holds.
|
|
46
|
+
*
|
|
47
|
+
* Distinct from `recall`, which must keep returning a dead session's
|
|
48
|
+
* trees: reusing the snapshot a finished round left behind is the point
|
|
49
|
+
* of a shareable tree, and it is what lets six reviewers of one commit
|
|
50
|
+
* share one directory. This is the narrower question tidy asks, and only
|
|
51
|
+
* tidy: whether taking the directory away would pull it out from under
|
|
52
|
+
* somebody.
|
|
53
|
+
*/
|
|
54
|
+
heldNow(facts?: ProcessFacts): Promise<readonly HeldTree[]>;
|
|
55
|
+
/**
|
|
56
|
+
* Those whose record does not say who cut them.
|
|
57
|
+
*
|
|
58
|
+
* A subset of what `heldNow` returns, since an unattributable tree is
|
|
59
|
+
* counted as held: this names them so a caller can report them as the
|
|
60
|
+
* decision they are rather than as a claim somebody made.
|
|
61
|
+
*/
|
|
62
|
+
unattributed(): readonly HeldTree[];
|
|
63
|
+
/**
|
|
64
|
+
* Who else is standing in this tree, this session excluded.
|
|
65
|
+
*
|
|
66
|
+
* Only holders still running count, since a dead one is not
|
|
67
|
+
* somebody a release has to be careful of. Empty for a tree nobody
|
|
68
|
+
* else holds and for one whose record names nobody, which is right
|
|
69
|
+
* for a release: the caller asked to take its own tree down, and
|
|
70
|
+
* only another live session is a reason not to.
|
|
71
|
+
*/
|
|
72
|
+
otherHolders(path: string, facts?: ProcessFacts): Promise<readonly Owner[]>;
|
|
73
|
+
/** Take this session off a tree's record, leaving the record. */
|
|
74
|
+
forgetUsAsHolder(path: string, facts?: ProcessFacts): Promise<void>;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Remember trees in a directory of small files, one per tree.
|
|
78
|
+
*
|
|
79
|
+
* A file per tree rather than one index, for the same reason the attachment
|
|
80
|
+
* store is shaped this way: two sessions cutting trees at once both write, and
|
|
81
|
+
* the loser of a read-modify-write race on a single index is a tree nobody can
|
|
82
|
+
* find. Separate files cannot collide, since the name is the tree's own key.
|
|
83
|
+
*/
|
|
84
|
+
export declare function createTreeMemory(dir: string): TreeMemory;
|