@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,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Weighing what other people asked for against what the change does.
|
|
3
|
+
*
|
|
4
|
+
* A change under review usually arrives with threads already on it,
|
|
5
|
+
* some of them answered by later commits and never marked resolved.
|
|
6
|
+
* Working out which is slow, and getting it wrong is worse than slow:
|
|
7
|
+
* replying "fixed" to a thread nothing addressed reads as a brush-off,
|
|
8
|
+
* and re-fixing something already fixed wastes a round trip.
|
|
9
|
+
*
|
|
10
|
+
* So an audit judges each thread and says why, and that is all it
|
|
11
|
+
* does. It never posts, and it raises no findings: these are other
|
|
12
|
+
* people's words, and turning them into findings would put them into
|
|
13
|
+
* the review as ours. The reply stays a human decision, better
|
|
14
|
+
* informed.
|
|
15
|
+
*/
|
|
16
|
+
import type { CritiqueDeps } from "./critique.js";
|
|
17
|
+
import { type Participant } from "./identity.js";
|
|
18
|
+
import { type AskRun, type RoundGiven } from "./run.js";
|
|
19
|
+
/**
|
|
20
|
+
* Where an inbound thread stands against the change.
|
|
21
|
+
*
|
|
22
|
+
* `elsewhere` is the one worth naming separately: in a stack, a thread
|
|
23
|
+
* on one change is often answered by a sibling, and reporting that as
|
|
24
|
+
* addressed would send somebody looking in the wrong diff.
|
|
25
|
+
*/
|
|
26
|
+
export type Standing = "addressed" | "outstanding" | "elsewhere" | "unclear";
|
|
27
|
+
/** One judgement about one inbound thread. */
|
|
28
|
+
export interface ThreadAudit {
|
|
29
|
+
threadIndex: number;
|
|
30
|
+
participantId: string;
|
|
31
|
+
standing: Standing;
|
|
32
|
+
rationale: string;
|
|
33
|
+
/** Where in the change the auditor saw it, when it says. */
|
|
34
|
+
evidence?: string;
|
|
35
|
+
}
|
|
36
|
+
/** What came out of one auditor's answer. */
|
|
37
|
+
export interface AuditHarvest {
|
|
38
|
+
audits: ThreadAudit[];
|
|
39
|
+
warnings: string[];
|
|
40
|
+
}
|
|
41
|
+
/** What to audit, and who weighs it. */
|
|
42
|
+
export interface AuditRequest {
|
|
43
|
+
auditor: Participant;
|
|
44
|
+
prompt: string;
|
|
45
|
+
seq: number;
|
|
46
|
+
/** The threads put up, by the index a reader cites them as. */
|
|
47
|
+
threadIndices: number[];
|
|
48
|
+
/**
|
|
49
|
+
* The commit this round was formed against.
|
|
50
|
+
*
|
|
51
|
+
* Recorded for the same reason a council records one: a round that
|
|
52
|
+
* cannot say what it read cannot be judged against the change
|
|
53
|
+
* afterwards, and a standing on a thread is exactly the kind of
|
|
54
|
+
* answer that ages when the branch moves.
|
|
55
|
+
*/
|
|
56
|
+
witness?: string;
|
|
57
|
+
/** Said when the tree the reviewers read was not that commit. */
|
|
58
|
+
unpinned?: string;
|
|
59
|
+
/** What the auditor was handed, besides the change. */
|
|
60
|
+
given?: RoundGiven;
|
|
61
|
+
}
|
|
62
|
+
/** The round, the judgements, and anything worth saying. */
|
|
63
|
+
export interface AuditResult {
|
|
64
|
+
run: AskRun;
|
|
65
|
+
audits: ThreadAudit[];
|
|
66
|
+
warnings: string[];
|
|
67
|
+
}
|
|
68
|
+
/** Read one auditor's answer, warning about what it dropped. */
|
|
69
|
+
export declare function harvestAudits(text: string, participantId: string, threadIndices: readonly number[]): AuditHarvest;
|
|
70
|
+
/** Put the inbound threads to an auditor and gather its judgements. */
|
|
71
|
+
export declare function runAudit(request: AuditRequest, deps: CritiqueDeps): Promise<AuditResult>;
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Weighing what other people asked for against what the change does.
|
|
3
|
+
*
|
|
4
|
+
* A change under review usually arrives with threads already on it,
|
|
5
|
+
* some of them answered by later commits and never marked resolved.
|
|
6
|
+
* Working out which is slow, and getting it wrong is worse than slow:
|
|
7
|
+
* replying "fixed" to a thread nothing addressed reads as a brush-off,
|
|
8
|
+
* and re-fixing something already fixed wastes a round trip.
|
|
9
|
+
*
|
|
10
|
+
* So an audit judges each thread and says why, and that is all it
|
|
11
|
+
* does. It never posts, and it raises no findings: these are other
|
|
12
|
+
* people's words, and turning them into findings would put them into
|
|
13
|
+
* the review as ours. The reply stays a human decision, better
|
|
14
|
+
* informed.
|
|
15
|
+
*/
|
|
16
|
+
import { askOne } from "./council.js";
|
|
17
|
+
import { participantIdentity } from "./identity.js";
|
|
18
|
+
import { newRunId, whatItGave, whatItRead, } from "./run.js";
|
|
19
|
+
import { ANSWER_WAS_CUT_OFF, isRecord, readAnswer, wireText, wireWhole, } from "./wire.js";
|
|
20
|
+
/** The standings an auditor may report. */
|
|
21
|
+
const STANDINGS = [
|
|
22
|
+
"addressed",
|
|
23
|
+
"outstanding",
|
|
24
|
+
"elsewhere",
|
|
25
|
+
"unclear",
|
|
26
|
+
];
|
|
27
|
+
/** Read one auditor's answer, warning about what it dropped. */
|
|
28
|
+
export function harvestAudits(text, participantId, threadIndices) {
|
|
29
|
+
const { parsed, truncated } = readAnswer(text, "audits");
|
|
30
|
+
const held = parsed?.audits;
|
|
31
|
+
if (!Array.isArray(held)) {
|
|
32
|
+
return {
|
|
33
|
+
audits: [],
|
|
34
|
+
warnings: [
|
|
35
|
+
"Nothing in this answer parsed as an audits array, so no judgements could be read from it.",
|
|
36
|
+
],
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
const put = new Set(threadIndices);
|
|
40
|
+
const audits = [];
|
|
41
|
+
const warnings = [];
|
|
42
|
+
if (truncated)
|
|
43
|
+
warnings.push(ANSWER_WAS_CUT_OFF);
|
|
44
|
+
for (const [index, entry] of held.entries()) {
|
|
45
|
+
const one = readAudit(entry, index, participantId, put, warnings);
|
|
46
|
+
if (one !== undefined)
|
|
47
|
+
audits.push(one);
|
|
48
|
+
}
|
|
49
|
+
return { audits, warnings };
|
|
50
|
+
}
|
|
51
|
+
/** Put the inbound threads to an auditor and gather its judgements. */
|
|
52
|
+
export async function runAudit(request, deps) {
|
|
53
|
+
const startedAt = deps.now();
|
|
54
|
+
const id = newRunId("audit", startedAt, request.seq);
|
|
55
|
+
// Nothing to audit means nobody to ask, and holding no
|
|
56
|
+
// participants is how the run says it asked nobody rather than
|
|
57
|
+
// that somebody answered with nothing.
|
|
58
|
+
if (request.threadIndices.length === 0) {
|
|
59
|
+
return {
|
|
60
|
+
run: {
|
|
61
|
+
id,
|
|
62
|
+
round: "audit",
|
|
63
|
+
startedAt: startedAt.toISOString(),
|
|
64
|
+
participants: [],
|
|
65
|
+
outcomes: [],
|
|
66
|
+
...whatItRead(request),
|
|
67
|
+
...whatItGave(request),
|
|
68
|
+
},
|
|
69
|
+
audits: [],
|
|
70
|
+
warnings: [],
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
// One auditor rather than a roster, so askRoster would be a fan-out
|
|
74
|
+
// of one. It still reports: a lone audit reading a long thread looks
|
|
75
|
+
// just as hung as six reviewers do. That is `askOne`'s job now, said
|
|
76
|
+
// once for every round with a single participant rather than spelled
|
|
77
|
+
// out here in beats the judge then forgot to copy.
|
|
78
|
+
const answer = await askOne(request.auditor, request.prompt, id, deps);
|
|
79
|
+
deps.progress?.finish();
|
|
80
|
+
const warnings = [];
|
|
81
|
+
const audits = [];
|
|
82
|
+
const outcome = (() => {
|
|
83
|
+
if ("failure" in answer) {
|
|
84
|
+
return {
|
|
85
|
+
participantId: request.auditor.id,
|
|
86
|
+
findingIds: [],
|
|
87
|
+
failure: answer.failure,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
const harvest = harvestAudits(answer.text, request.auditor.id, request.threadIndices);
|
|
91
|
+
audits.push(...harvest.audits);
|
|
92
|
+
for (const warning of harvest.warnings) {
|
|
93
|
+
warnings.push(`${request.auditor.id}: ${warning}`);
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
participantId: request.auditor.id,
|
|
97
|
+
// An audit raises no findings, on purpose.
|
|
98
|
+
findingIds: [],
|
|
99
|
+
...(answer.stopped === undefined ? {} : { stopped: answer.stopped }),
|
|
100
|
+
...(answer.answerPath === undefined
|
|
101
|
+
? {}
|
|
102
|
+
: { answerPath: answer.answerPath }),
|
|
103
|
+
...(answer.usage === undefined ? {} : { usage: answer.usage }),
|
|
104
|
+
};
|
|
105
|
+
})();
|
|
106
|
+
return {
|
|
107
|
+
run: {
|
|
108
|
+
id,
|
|
109
|
+
round: "audit",
|
|
110
|
+
startedAt: startedAt.toISOString(),
|
|
111
|
+
// Held as a judge: an auditor weighs what exists rather than
|
|
112
|
+
// finding anything, which is the judging role.
|
|
113
|
+
participants: [participantIdentity("judge", request.auditor)],
|
|
114
|
+
outcomes: [outcome],
|
|
115
|
+
...whatItRead(request),
|
|
116
|
+
...whatItGave(request),
|
|
117
|
+
},
|
|
118
|
+
audits,
|
|
119
|
+
warnings,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/** One judgement, or nothing plus a warning saying why. */
|
|
123
|
+
function readAudit(entry, index, participantId, put, warnings) {
|
|
124
|
+
const at = `audits[${index}]`;
|
|
125
|
+
if (!isRecord(entry)) {
|
|
126
|
+
warnings.push(`${at} is not an object, so it was dropped.`);
|
|
127
|
+
return undefined;
|
|
128
|
+
}
|
|
129
|
+
const threadIndex = wireWhole(entry.threadIndex);
|
|
130
|
+
if (threadIndex === undefined) {
|
|
131
|
+
warnings.push(`${at} names no thread, so it was dropped.`);
|
|
132
|
+
return undefined;
|
|
133
|
+
}
|
|
134
|
+
if (!put.has(threadIndex)) {
|
|
135
|
+
warnings.push(`${at} judges thread ${threadIndex}, which was not among the threads put up, so it was dropped.`);
|
|
136
|
+
return undefined;
|
|
137
|
+
}
|
|
138
|
+
const standing = wireText(entry.standing);
|
|
139
|
+
if (standing === undefined || !STANDINGS.includes(standing)) {
|
|
140
|
+
warnings.push(`${at} reports the standing "${standing ?? "nothing"}", which is not one of ${STANDINGS.join(", ")}, so it was dropped.`);
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
143
|
+
const rationale = wireText(entry.rationale);
|
|
144
|
+
if (rationale === undefined) {
|
|
145
|
+
// An audit exists to inform a reply, and a standing with no
|
|
146
|
+
// argument gives the person replying nothing to say.
|
|
147
|
+
warnings.push(`${at} gives no rationale, so it was dropped: a standing with no argument gives whoever replies nothing to say.`);
|
|
148
|
+
return undefined;
|
|
149
|
+
}
|
|
150
|
+
const evidence = wireText(entry.evidence);
|
|
151
|
+
return {
|
|
152
|
+
threadIndex,
|
|
153
|
+
participantId,
|
|
154
|
+
standing: standing,
|
|
155
|
+
rationale,
|
|
156
|
+
...(evidence === undefined ? {} : { evidence }),
|
|
157
|
+
};
|
|
158
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { AskAnswer, CouncilDeps, CouncilResult } from "./council.js";
|
|
2
|
+
import type { AskRun } from "./run.js";
|
|
3
|
+
/**
|
|
4
|
+
* What collecting a round needs, which is less than running one.
|
|
5
|
+
*
|
|
6
|
+
* No `ask`, because nobody is being asked: the answers already exist.
|
|
7
|
+
* No `opened`, because the round was written down when it opened and
|
|
8
|
+
* that is how it was found. No clock, because a collected round keeps
|
|
9
|
+
* the time it started rather than the time somebody noticed it.
|
|
10
|
+
*/
|
|
11
|
+
export type CollectDeps = Pick<CouncilDeps, "record"> & Partial<Pick<CouncilDeps, "progress">> & {
|
|
12
|
+
/**
|
|
13
|
+
* Persist the round as each participant is filed.
|
|
14
|
+
*
|
|
15
|
+
* Collecting writes findings against the change and nothing
|
|
16
|
+
* undoes that. Filing every one of them and recording the round
|
|
17
|
+
* once at the end leaves a window where the findings exist and
|
|
18
|
+
* the round still says nobody collected it, and the only thing
|
|
19
|
+
* anybody can do with such a round is collect it again, which
|
|
20
|
+
* files all of them a second time.
|
|
21
|
+
*
|
|
22
|
+
* Written after each participant instead, so an interrupted
|
|
23
|
+
* collect leaves durable progress and the next one skips what is
|
|
24
|
+
* already there. Optional, and a caller that omits it has the
|
|
25
|
+
* window back.
|
|
26
|
+
*/
|
|
27
|
+
progressed?(run: AskRun): Promise<void>;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Finish a round from what its reviewers left behind.
|
|
31
|
+
*
|
|
32
|
+
* The round that opened is the round that settles: its id, its start
|
|
33
|
+
* time, its participants and their order all come off the record
|
|
34
|
+
* rather than being minted again, because a collected round is the
|
|
35
|
+
* same round arriving late and a new id would make it a second one.
|
|
36
|
+
*
|
|
37
|
+
* Every answer goes through the same recording path a live reply
|
|
38
|
+
* takes, so a finding collected an hour afterwards is numbered,
|
|
39
|
+
* anchored and warned about exactly as it would have been at the time.
|
|
40
|
+
*/
|
|
41
|
+
export declare function collectRound(run: AskRun, answers: ReadonlyMap<string, AskAnswer>, deps: CollectDeps): Promise<CouncilResult>;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { recordReply } from "./council.js";
|
|
2
|
+
import { settleReplies } from "./progress.js";
|
|
3
|
+
import { whatItRead } from "./run.js";
|
|
4
|
+
/** Said for a participant whose answer is not on disk. */
|
|
5
|
+
const NOTHING_LEFT = "nothing was left on disk to collect, so whatever this reviewer found is gone";
|
|
6
|
+
/**
|
|
7
|
+
* Finish a round from what its reviewers left behind.
|
|
8
|
+
*
|
|
9
|
+
* The round that opened is the round that settles: its id, its start
|
|
10
|
+
* time, its participants and their order all come off the record
|
|
11
|
+
* rather than being minted again, because a collected round is the
|
|
12
|
+
* same round arriving late and a new id would make it a second one.
|
|
13
|
+
*
|
|
14
|
+
* Every answer goes through the same recording path a live reply
|
|
15
|
+
* takes, so a finding collected an hour afterwards is numbered,
|
|
16
|
+
* anchored and warned about exactly as it would have been at the time.
|
|
17
|
+
*/
|
|
18
|
+
export async function collectRound(run, answers, deps) {
|
|
19
|
+
const warnings = [];
|
|
20
|
+
const held = new Map(run.outcomes.map((one) => [one.participantId, one]));
|
|
21
|
+
const outcomes = await settleReplies(run.participants, async (participant) => {
|
|
22
|
+
// An outcome the round already has is left alone. A retry
|
|
23
|
+
// can substitute one into an unsettled round before anybody
|
|
24
|
+
// collects it, and those findings are in the store already:
|
|
25
|
+
// recording them again would file one observation twice and
|
|
26
|
+
// number it twice.
|
|
27
|
+
const already = held.get(participant.id);
|
|
28
|
+
if (already !== undefined)
|
|
29
|
+
return already;
|
|
30
|
+
const answer = answers.get(participant.id);
|
|
31
|
+
if (answer === undefined) {
|
|
32
|
+
return {
|
|
33
|
+
participantId: participant.id,
|
|
34
|
+
findingIds: [],
|
|
35
|
+
failure: NOTHING_LEFT,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
const outcome = await recordReply({ participant: { id: participant.id }, answer },
|
|
39
|
+
// The whole fact, not the commit alone. Spreading half of
|
|
40
|
+
// it here was how the collect path went on stamping the
|
|
41
|
+
// change's head on findings harvested off a round that had
|
|
42
|
+
// read something else, which is the path most likely to be
|
|
43
|
+
// unpinned in the first place.
|
|
44
|
+
{ runId: run.id, ...whatItRead(run) }, deps, warnings);
|
|
45
|
+
// Held straight away, so the next turn of this loop cannot
|
|
46
|
+
// lose what this one paid for.
|
|
47
|
+
held.set(outcome.participantId, outcome);
|
|
48
|
+
try {
|
|
49
|
+
await deps.progressed?.({ ...run, outcomes: [...held.values()] });
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
// The findings are recorded either way. A ledger that will
|
|
53
|
+
// not take an interim write is reported once at the end
|
|
54
|
+
// rather than seven times from in here.
|
|
55
|
+
}
|
|
56
|
+
return outcome;
|
|
57
|
+
}, (outcome) => ({
|
|
58
|
+
participantId: outcome.participantId,
|
|
59
|
+
findings: outcome.findingIds.length,
|
|
60
|
+
}), deps.progress);
|
|
61
|
+
// Collecting a round is what finishing it means, so the mark comes
|
|
62
|
+
// off. Leaving it would keep the alarm up for work that has now
|
|
63
|
+
// been recovered, and an alarm nobody can answer stops being read.
|
|
64
|
+
//
|
|
65
|
+
// Unless nothing was recovered. Settling then closes the file on a
|
|
66
|
+
// round whose work may be sitting somewhere else entirely, and the
|
|
67
|
+
// mark is one-way: nothing sets it again. The likeliest cause of
|
|
68
|
+
// finding nothing is looking in the wrong place, a different state
|
|
69
|
+
// directory or another machine, which is exactly when the record
|
|
70
|
+
// has to survive.
|
|
71
|
+
if (answers.size === 0) {
|
|
72
|
+
return {
|
|
73
|
+
run: { ...run, outcomes },
|
|
74
|
+
warnings: [
|
|
75
|
+
...warnings,
|
|
76
|
+
`Nothing was found on disk for any of the ${run.participants.length} participants, so ${run.id} is left open rather than settled. Its transcripts may have been swept, or may be under a different state directory or on another machine.`,
|
|
77
|
+
],
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
const { open: _settled, ...rest } = run;
|
|
81
|
+
return { run: { ...rest, outcomes }, warnings };
|
|
82
|
+
}
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Asking a whole roster at once.
|
|
3
|
+
*
|
|
4
|
+
* Participants are asked concurrently, because the wait is the whole
|
|
5
|
+
* cost and there is no reason for six models to queue. Their
|
|
6
|
+
* findings are recorded **in roster order** regardless of who
|
|
7
|
+
* answered first, because people say finding numbers out loud and a
|
|
8
|
+
* number that depends on which model happened to be quickest would
|
|
9
|
+
* make the same run describe itself differently every time.
|
|
10
|
+
*
|
|
11
|
+
* Nothing one participant does can take the round down. A failure
|
|
12
|
+
* reported by the runner and an exception thrown by it are the same
|
|
13
|
+
* event seen from two sides, and both are recorded against that
|
|
14
|
+
* participant so the rest of the round survives. Losing five good
|
|
15
|
+
* reviews to one unavailable model would be the worst possible
|
|
16
|
+
* trade, given what a round costs to run.
|
|
17
|
+
*/
|
|
18
|
+
import type { Finding } from "../finding.js";
|
|
19
|
+
import { type Participant } from "./identity.js";
|
|
20
|
+
import { type AskProgress } from "./progress.js";
|
|
21
|
+
import type { Roster } from "./roster.js";
|
|
22
|
+
import { type AskRound, type AskRun, type AskUsage, type ParticipantOutcome, type RoundGiven } from "./run.js";
|
|
23
|
+
/**
|
|
24
|
+
* Which limit ended a reviewer before it had finished.
|
|
25
|
+
*
|
|
26
|
+
* A limit is not a failure. The reviewer was working, and something
|
|
27
|
+
* on our side decided it had worked long enough, so the two are
|
|
28
|
+
* reported apart: a failure is the run never happening, and a stop
|
|
29
|
+
* is the run being taken away mid-sentence.
|
|
30
|
+
*/
|
|
31
|
+
export type AskLimit = "wall-clock" | "idle"
|
|
32
|
+
/**
|
|
33
|
+
* Stopped inside its own budget, deliberately, so what it had
|
|
34
|
+
* could be asked for while there was still time to answer.
|
|
35
|
+
*
|
|
36
|
+
* The only limit here that is not something running out. The
|
|
37
|
+
* others describe a reviewer that was taken away; this one
|
|
38
|
+
* describes one that was asked.
|
|
39
|
+
*/
|
|
40
|
+
| "soft-deadline" | "cancelled" | "parent-exit"
|
|
41
|
+
/**
|
|
42
|
+
* The process watching this reviewer went away mid-review.
|
|
43
|
+
*
|
|
44
|
+
* Distinct from parent-exit, which is the session above the
|
|
45
|
+
* supervisor going away while the supervisor lived to say so.
|
|
46
|
+
* Here the supervisor itself is what vanished, so nothing was
|
|
47
|
+
* written down about the ending and this is reconstructed from
|
|
48
|
+
* the reviewer's own journal being there with no result beside
|
|
49
|
+
* it. Nothing about a budget ran out, so no clock is quoted and
|
|
50
|
+
* the retry it permits is worth taking.
|
|
51
|
+
*/
|
|
52
|
+
| "supervisor-lost";
|
|
53
|
+
/** A reviewer stopped before it finished, and what stopped it. */
|
|
54
|
+
export interface AskStop {
|
|
55
|
+
limit: AskLimit;
|
|
56
|
+
/** What happened, in the runner's own words. */
|
|
57
|
+
detail: string;
|
|
58
|
+
/**
|
|
59
|
+
* The budget it ran out of, where the limit is a clock.
|
|
60
|
+
*
|
|
61
|
+
* Recorded so a later retry can tell whether anything has moved.
|
|
62
|
+
* Without the number, the only way to find out whether asking
|
|
63
|
+
* again would hit the same wall is to ask again and watch.
|
|
64
|
+
*/
|
|
65
|
+
budgetMs?: number;
|
|
66
|
+
}
|
|
67
|
+
/** What came back from asking one participant. */
|
|
68
|
+
export type AskAnswer = {
|
|
69
|
+
text: string;
|
|
70
|
+
usage?: AskUsage;
|
|
71
|
+
stopped?: AskStop;
|
|
72
|
+
/**
|
|
73
|
+
* What this participant had said before it was stopped, when
|
|
74
|
+
* the answer above is one it gave afterwards.
|
|
75
|
+
*
|
|
76
|
+
* Two answers rather than one joined, because only a reader
|
|
77
|
+
* that can count findings knows which is worth keeping, and
|
|
78
|
+
* joining them makes both unreadable.
|
|
79
|
+
*/
|
|
80
|
+
earlierText?: string;
|
|
81
|
+
/**
|
|
82
|
+
* Findings this participant wrote down as it found them,
|
|
83
|
+
* rather than saving them for its answer.
|
|
84
|
+
*
|
|
85
|
+
* On the wire, unread, because reading one is this module's
|
|
86
|
+
* job and the thing that collected them cannot make a finding
|
|
87
|
+
* without knowing whose round it is.
|
|
88
|
+
*/
|
|
89
|
+
recorded?: unknown[];
|
|
90
|
+
/**
|
|
91
|
+
* What went wrong that this answer cannot show for itself.
|
|
92
|
+
*
|
|
93
|
+
* A run can produce findings and still have gone badly: the
|
|
94
|
+
* process died after recording them, or its journal came
|
|
95
|
+
* back capped or unreadable. Neither is a failure, since
|
|
96
|
+
* there is an answer to read, and neither is visible in the
|
|
97
|
+
* answer. Without somewhere to put them the diagnosis is
|
|
98
|
+
* lost at this seam and a dead reviewer reads as a clean
|
|
99
|
+
* pass.
|
|
100
|
+
*/
|
|
101
|
+
notes?: string[];
|
|
102
|
+
/** Where the answer was kept, when the runner kept it. */
|
|
103
|
+
answerPath?: string;
|
|
104
|
+
} | {
|
|
105
|
+
failure: string;
|
|
106
|
+
/**
|
|
107
|
+
* Something true of the session rather than of this
|
|
108
|
+
* participant, which the runner knew and this cannot.
|
|
109
|
+
*
|
|
110
|
+
* A stale pi install is the case it exists for: every
|
|
111
|
+
* reviewer fails with the same sentence, retrying is the one
|
|
112
|
+
* thing that cannot work, and only the side that spawned the
|
|
113
|
+
* process can tell that from an ordinary crash. Carried as a
|
|
114
|
+
* fact the runner states rather than left for a reader to
|
|
115
|
+
* infer from the shape of a message: matching on words means
|
|
116
|
+
* one library string-matching another's prose, and both are
|
|
117
|
+
* free to reword.
|
|
118
|
+
*/
|
|
119
|
+
advisory?: string;
|
|
120
|
+
/**
|
|
121
|
+
* What it burned before it failed.
|
|
122
|
+
*
|
|
123
|
+
* A failure is not a free participant, and is usually the
|
|
124
|
+
* dearest one in the round: a reviewer that died at its
|
|
125
|
+
* deadline spent the whole budget to produce nothing. Dropped
|
|
126
|
+
* here, a round's cost is a total with its largest terms
|
|
127
|
+
* missing, which is worse than no total at all.
|
|
128
|
+
*/
|
|
129
|
+
usage?: AskUsage;
|
|
130
|
+
};
|
|
131
|
+
/**
|
|
132
|
+
* What a round can tell a runner about itself.
|
|
133
|
+
*
|
|
134
|
+
* The runner is the thing that leaves artifacts behind, and it cannot
|
|
135
|
+
* work out which round it belongs to on its own. A transcript that
|
|
136
|
+
* cannot be traced back to the round that paid for it answers none of
|
|
137
|
+
* the questions a transcript is kept for.
|
|
138
|
+
*/
|
|
139
|
+
export interface AskContext {
|
|
140
|
+
/** The round this ask belongs to, as the ledger names it. */
|
|
141
|
+
runId: string;
|
|
142
|
+
/**
|
|
143
|
+
* How a long-running ask says what it is doing. Optional to call
|
|
144
|
+
* and optional to receive: the library cannot see a subprocess, so
|
|
145
|
+
* activity only exists if the implementation volunteers it.
|
|
146
|
+
*/
|
|
147
|
+
report?(activity: string): void;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Run one participant against the prompt, for a named round.
|
|
151
|
+
*
|
|
152
|
+
* Named once and shared by every round's deps. Each used to restate
|
|
153
|
+
* the signature, which is how two of them still had a bare report
|
|
154
|
+
* callback after the context arrived.
|
|
155
|
+
*/
|
|
156
|
+
export type Ask = (participant: Participant, prompt: string, context: AskContext) => Promise<AskAnswer>;
|
|
157
|
+
/** The impure things asking needs. */
|
|
158
|
+
export interface CouncilDeps {
|
|
159
|
+
ask: Ask;
|
|
160
|
+
/** Put findings on the change, numbering them as they land. */
|
|
161
|
+
record(findings: Omit<Finding, "id">[]): Promise<Finding[]>;
|
|
162
|
+
now(): Date;
|
|
163
|
+
/**
|
|
164
|
+
* The round exists and nobody has been asked yet.
|
|
165
|
+
*
|
|
166
|
+
* Called once, before the first reviewer is dispatched, so a
|
|
167
|
+
* caller that keeps a ledger can write the round down before it
|
|
168
|
+
* becomes expensive rather than after it has already paid.
|
|
169
|
+
* Optional, because a round is worth more than the bookkeeping
|
|
170
|
+
* around it and most callers keep no ledger at all.
|
|
171
|
+
*/
|
|
172
|
+
opened?(run: AskRun): Promise<void>;
|
|
173
|
+
/** Told what is happening while it happens. Optional. */
|
|
174
|
+
progress?: AskProgress;
|
|
175
|
+
}
|
|
176
|
+
/** What to ask, of whom. */
|
|
177
|
+
export interface CouncilRequest {
|
|
178
|
+
roster: Roster;
|
|
179
|
+
prompt: string;
|
|
180
|
+
/** Distinguishes two rounds started in the same millisecond. */
|
|
181
|
+
seq: number;
|
|
182
|
+
/** Commit under review, which anchors claim when the tree is it. */
|
|
183
|
+
witness?: string;
|
|
184
|
+
/** Said when the tree the reviewers read was not that commit. */
|
|
185
|
+
unpinned?: string;
|
|
186
|
+
/** What the reviewers were handed, besides the change. */
|
|
187
|
+
given?: RoundGiven;
|
|
188
|
+
/** Defaults to a council round. */
|
|
189
|
+
round?: AskRound;
|
|
190
|
+
}
|
|
191
|
+
/** The run, and anything worth telling the caller. */
|
|
192
|
+
export interface CouncilResult {
|
|
193
|
+
run: AskRun;
|
|
194
|
+
warnings: string[];
|
|
195
|
+
}
|
|
196
|
+
/** What one participant came back with, before it was recorded. */
|
|
197
|
+
export interface Reply {
|
|
198
|
+
participant: Participant;
|
|
199
|
+
answer: AskAnswer;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Ask every reviewer at once and hand the answers back in roster
|
|
203
|
+
* order.
|
|
204
|
+
*
|
|
205
|
+
* Shared with the stack round rather than written twice, because this
|
|
206
|
+
* is the part with the rules in it: concurrent asking, a thrown error
|
|
207
|
+
* and a reported one becoming the same thing, and the ordering that
|
|
208
|
+
* makes finding numbers stable. A stack round differs in what a reply
|
|
209
|
+
* *means*, not in how a roster is asked, and if the ordering rule ever
|
|
210
|
+
* changes both rounds have to change with it.
|
|
211
|
+
*/
|
|
212
|
+
export declare function askRoster(roster: Roster, prompt: string, runId: string, deps: Pick<CouncilDeps, "ask" | "progress">): Promise<Reply[]>;
|
|
213
|
+
/**
|
|
214
|
+
* Ask one participant, reported the same way a roster is.
|
|
215
|
+
*
|
|
216
|
+
* A round with a single participant is still a round somebody is waiting
|
|
217
|
+
* on, and the wait is no shorter for being one subagent: a judge
|
|
218
|
+
* consolidating sixty findings takes as long as the council that raised
|
|
219
|
+
* them. Reporting was left to each round to remember, and the judge did
|
|
220
|
+
* not, so it ran to completion showing nothing at all.
|
|
221
|
+
*
|
|
222
|
+
* Beside `askRoster` rather than inside it, because a fan-out of one is
|
|
223
|
+
* not what this is: there is no ordering rule to share and no concurrency
|
|
224
|
+
* to arrange. What the two have in common is the beats they report, and
|
|
225
|
+
* this is the place that says what those are for one participant.
|
|
226
|
+
*/
|
|
227
|
+
export declare function askOne(participant: Participant, prompt: string, runId: string, deps: Pick<CouncilDeps, "ask" | "progress">): Promise<AskAnswer>;
|
|
228
|
+
/** Ask a roster about a change and record what it says. */
|
|
229
|
+
export declare function runCouncil(request: CouncilRequest, deps: CouncilDeps): Promise<CouncilResult>;
|
|
230
|
+
/**
|
|
231
|
+
* A round at the moment it exists and nobody has been asked.
|
|
232
|
+
*
|
|
233
|
+
* Shared by the runner that waits for a round and the one that walks
|
|
234
|
+
* away from it, because a round's identity is one concept and two
|
|
235
|
+
* copies of it would drift. A detached round is collected back into
|
|
236
|
+
* the same listing as a live one, so an id minted differently, or a
|
|
237
|
+
* participant identified differently, would show up as two kinds of
|
|
238
|
+
* round rather than one round run two ways.
|
|
239
|
+
*/
|
|
240
|
+
export declare function openingRun(request: CouncilRequest, startedAt: Date): AskRun;
|
|
241
|
+
/**
|
|
242
|
+
* What was thrown, said well enough to act on.
|
|
243
|
+
*
|
|
244
|
+
* A failure a runner reports is a sentence somebody wrote for a
|
|
245
|
+
* person, and it is left exactly as it is. A failure that was thrown
|
|
246
|
+
* is usually nobody's sentence: it is a message the runtime wrote,
|
|
247
|
+
* and on its own it does not say what kind of fault it was or where
|
|
248
|
+
* it happened.
|
|
249
|
+
*
|
|
250
|
+
* Measured, on a council that lost all seven reviewers to one
|
|
251
|
+
* TypeError. The ledger held "Cannot read properties of undefined
|
|
252
|
+
* (reading 'split')" and nothing else, which is true of every call to
|
|
253
|
+
* split in the dispatch path, so the diagnosis was an afternoon of
|
|
254
|
+
* reading them. The round is the expensive thing here and the ledger
|
|
255
|
+
* is what survives it, so the ledger has to carry enough to name the
|
|
256
|
+
* line.
|
|
257
|
+
*
|
|
258
|
+
* One frame, not the whole stack. The rest is this file's own
|
|
259
|
+
* machinery on every occasion, and a ledger entry is read in a table.
|
|
260
|
+
*
|
|
261
|
+
* A cause is carried when there is one. An error wrapped in another
|
|
262
|
+
* says the same little as the message this exists to improve on: the
|
|
263
|
+
* outer sentence names the layer that gave up and the inner one names
|
|
264
|
+
* what actually happened.
|
|
265
|
+
*/
|
|
266
|
+
export declare function thrownAt(error: unknown): string;
|
|
267
|
+
/**
|
|
268
|
+
* What to say about a participant that did not get to finish.
|
|
269
|
+
*
|
|
270
|
+
* Shared with the stack round, which is the round most likely to be
|
|
271
|
+
* stopped and was saying nothing about it at all: it pushed the
|
|
272
|
+
* harvest's own warnings through, so a reviewer we interrupted was
|
|
273
|
+
* reported as having written a malformed answer.
|
|
274
|
+
*/
|
|
275
|
+
export declare function stopWarning(stop: AskStop, kept: number, cutOff: boolean): string;
|
|
276
|
+
/**
|
|
277
|
+
* Harvest one reply, record what it held, and say how it went.
|
|
278
|
+
*
|
|
279
|
+
* Shared with collecting a round afterwards rather than written
|
|
280
|
+
* twice, because this is the part with the rules in it: reading a
|
|
281
|
+
* fragment against a wrap-up, folding in what was recorded, and
|
|
282
|
+
* deciding which warnings belong to the reviewer rather than to our
|
|
283
|
+
* deadline. A collected answer is the same answer arriving late, and
|
|
284
|
+
* a second copy of these rules would drift from this one.
|
|
285
|
+
*/
|
|
286
|
+
export declare function recordReply(reply: Reply, run: {
|
|
287
|
+
runId: string;
|
|
288
|
+
witness?: string;
|
|
289
|
+
unpinned?: string;
|
|
290
|
+
}, deps: Pick<CouncilDeps, "record">, warnings: string[]): Promise<ParticipantOutcome>;
|