@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,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turning what a model answered into findings.
|
|
3
|
+
*
|
|
4
|
+
* Two things shape everything here.
|
|
5
|
+
*
|
|
6
|
+
* A model answers in prose with JSON somewhere inside it, however
|
|
7
|
+
* firmly it was asked not to, so the JSON is looked for rather than
|
|
8
|
+
* assumed. Losing a whole council pass to a code fence nobody was
|
|
9
|
+
* told to omit would be absurd.
|
|
10
|
+
*
|
|
11
|
+
* And one bad entry costs one finding, not the batch. Re-running a
|
|
12
|
+
* council is expensive, so nine good findings survive the tenth
|
|
13
|
+
* being malformed, and every drop leaves a warning naming what went
|
|
14
|
+
* wrong. A silent drop is the one outcome worth avoiding: the
|
|
15
|
+
* caller would believe the reviewer had nothing more to say.
|
|
16
|
+
*/
|
|
17
|
+
import type { Finding, FindingOrigin } from "../finding.js";
|
|
18
|
+
import { type TreeRead } from "./run.js";
|
|
19
|
+
/**
|
|
20
|
+
* Said of a reviewer that produced no answer at all.
|
|
21
|
+
*
|
|
22
|
+
* Its own sentence, because "this did not parse" is a complaint about
|
|
23
|
+
* an answer and there was none. Withdrawn when the reviewer turns out
|
|
24
|
+
* to have recorded findings as it went, which is the case this whole
|
|
25
|
+
* mechanism exists for.
|
|
26
|
+
*/
|
|
27
|
+
export declare const SAID_NOTHING = "This reviewer produced no answer at all, so there was nothing to read.";
|
|
28
|
+
/** What came out of one answer. */
|
|
29
|
+
export interface Harvest {
|
|
30
|
+
findings: Omit<Finding, "id">[];
|
|
31
|
+
warnings: string[];
|
|
32
|
+
/**
|
|
33
|
+
* Whether these findings are what survived a cut-off answer.
|
|
34
|
+
*
|
|
35
|
+
* Reported as a fact rather than left in the warnings, because a
|
|
36
|
+
* caller that replaces the warnings with its own sentence would
|
|
37
|
+
* otherwise drop the one thing the reader needs to know: that the
|
|
38
|
+
* absence of a finding here means nothing either way.
|
|
39
|
+
*/
|
|
40
|
+
truncated?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Of the warnings above, the ones about entries the reviewer
|
|
43
|
+
* recorded rather than about the shape of its answer.
|
|
44
|
+
*
|
|
45
|
+
* Named rather than left to be worked out by position, because
|
|
46
|
+
* the caller that needs them is the one that replaces the whole
|
|
47
|
+
* list, and reconstructing them by slicing assumes this function
|
|
48
|
+
* only ever appends. It does not: it withdraws a warning when the
|
|
49
|
+
* recorded entries turn out to answer it.
|
|
50
|
+
*/
|
|
51
|
+
recordedWarnings?: string[];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* What came out of one entry: a finding when it was readable, and
|
|
55
|
+
* anything worth saying either way.
|
|
56
|
+
*
|
|
57
|
+
* Exported because a stack-wide answer groups its entries by the
|
|
58
|
+
* change each is about, and every entry still has to be read the same
|
|
59
|
+
* way. One place knows a finding's wire shape.
|
|
60
|
+
*/
|
|
61
|
+
export interface FindingRead {
|
|
62
|
+
finding?: Omit<Finding, "id">;
|
|
63
|
+
warnings: string[];
|
|
64
|
+
}
|
|
65
|
+
/** Harvest findings from one answer, warning about what it dropped. */
|
|
66
|
+
export declare function harvestFindings(text: string, origin: FindingOrigin, read?: TreeRead): Harvest;
|
|
67
|
+
/**
|
|
68
|
+
* The answer, plus anything the reviewer wrote down on its way to it.
|
|
69
|
+
*
|
|
70
|
+
* A reviewer records a finding when it finds one and then repeats it in
|
|
71
|
+
* its answer, which is what it is asked to do, so most of these arrive
|
|
72
|
+
* twice. Reporting both would inflate every round and leave the judge
|
|
73
|
+
* consolidating a finding against itself.
|
|
74
|
+
*
|
|
75
|
+
* Where a finding was said twice the answer's telling wins, since it
|
|
76
|
+
* was written after the investigation rather than during it, and the
|
|
77
|
+
* recorded copy is kept only when the answer never got that far. That
|
|
78
|
+
* is the whole point: what was written down does not depend on the
|
|
79
|
+
* reviewer living long enough to say it again.
|
|
80
|
+
*/
|
|
81
|
+
export declare function alsoRecorded(said: Harvest, recorded: readonly unknown[] | undefined, origin: FindingOrigin, read?: TreeRead): Harvest;
|
|
82
|
+
/**
|
|
83
|
+
* Whether two findings say the same finding, allowing for one of them
|
|
84
|
+
* not having said where.
|
|
85
|
+
*
|
|
86
|
+
* Subject and place. A reviewer recording a finding and then repeating
|
|
87
|
+
* it says the same sentence twice, so the subject is the identity; it
|
|
88
|
+
* is compared loosely enough to survive the reviewer tidying its
|
|
89
|
+
* punctuation, and no more loosely than that, because two findings
|
|
90
|
+
* genuinely can share a subject.
|
|
91
|
+
*
|
|
92
|
+
* The place is the file alone rather than the whole anchor. A reviewer
|
|
93
|
+
* that records against a file and then pins a line in its answer has
|
|
94
|
+
* refined one finding, not found a second, and a byte-identical anchor
|
|
95
|
+
* comparison would report both.
|
|
96
|
+
*
|
|
97
|
+
* A finding that names no file matches one that does, on the same
|
|
98
|
+
* subject. That is not looseness for its own sake: a location now
|
|
99
|
+
* degrades to the change rather than dropping the finding, so the
|
|
100
|
+
* commonest shape of a repeat is a reviewer recording a remark
|
|
101
|
+
* mid-investigation without a location and then naming the file
|
|
102
|
+
* properly in its answer. Keyed on the path alone those are two
|
|
103
|
+
* buckets, and the round would file one observation twice, in exactly
|
|
104
|
+
* the case the journal exists to serve.
|
|
105
|
+
*
|
|
106
|
+
* Two genuinely different findings that share a folded subject and
|
|
107
|
+
* differ only in that one named no file are folded together by this.
|
|
108
|
+
* That is the trade, and it is the right way round: saying one thing
|
|
109
|
+
* twice is noise a reader dismisses, while the alternative is deciding
|
|
110
|
+
* two remarks are distinct because one of them was vague.
|
|
111
|
+
*/
|
|
112
|
+
export declare function saysTheSame(one: Omit<Finding, "id">, two: Omit<Finding, "id">): boolean;
|
|
113
|
+
/**
|
|
114
|
+
* Read one entry off the wire.
|
|
115
|
+
*
|
|
116
|
+
* `at` is how the entry is named in a warning, and the caller supplies
|
|
117
|
+
* it because only the caller knows what the entry was found inside.
|
|
118
|
+
*/
|
|
119
|
+
export declare function readWireFinding(entry: unknown, at: string, origin: FindingOrigin, witness?: string): FindingRead;
|
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turning what a model answered into findings.
|
|
3
|
+
*
|
|
4
|
+
* Two things shape everything here.
|
|
5
|
+
*
|
|
6
|
+
* A model answers in prose with JSON somewhere inside it, however
|
|
7
|
+
* firmly it was asked not to, so the JSON is looked for rather than
|
|
8
|
+
* assumed. Losing a whole council pass to a code fence nobody was
|
|
9
|
+
* told to omit would be absurd.
|
|
10
|
+
*
|
|
11
|
+
* And one bad entry costs one finding, not the batch. Re-running a
|
|
12
|
+
* council is expensive, so nine good findings survive the tenth
|
|
13
|
+
* being malformed, and every drop leaves a warning naming what went
|
|
14
|
+
* wrong. A silent drop is the one outcome worth avoiding: the
|
|
15
|
+
* caller would believe the reviewer had nothing more to say.
|
|
16
|
+
*/
|
|
17
|
+
import { anchorPath } from "../anchor.js";
|
|
18
|
+
import { anchorWitness } from "./run.js";
|
|
19
|
+
import { ANSWER_WAS_CUT_OFF, isRecord, readAnswer, wireText, wireWhole, } from "./wire.js";
|
|
20
|
+
/**
|
|
21
|
+
* Said of a reviewer that produced no answer at all.
|
|
22
|
+
*
|
|
23
|
+
* Its own sentence, because "this did not parse" is a complaint about
|
|
24
|
+
* an answer and there was none. Withdrawn when the reviewer turns out
|
|
25
|
+
* to have recorded findings as it went, which is the case this whole
|
|
26
|
+
* mechanism exists for.
|
|
27
|
+
*/
|
|
28
|
+
export const SAID_NOTHING = "This reviewer produced no answer at all, so there was nothing to read.";
|
|
29
|
+
/** The labels a finding may carry. */
|
|
30
|
+
const LABELS = [
|
|
31
|
+
"praise",
|
|
32
|
+
"nitpick",
|
|
33
|
+
"suggestion",
|
|
34
|
+
"issue",
|
|
35
|
+
"todo",
|
|
36
|
+
"question",
|
|
37
|
+
"thought",
|
|
38
|
+
"chore",
|
|
39
|
+
"note",
|
|
40
|
+
];
|
|
41
|
+
/**
|
|
42
|
+
* Severities, and the synonyms models reach for.
|
|
43
|
+
*
|
|
44
|
+
* Mapping a synonym costs nothing next to dropping the severity,
|
|
45
|
+
* and nobody reads an output contract carefully enough to be held
|
|
46
|
+
* to three exact words.
|
|
47
|
+
*/
|
|
48
|
+
const SEVERITIES = {
|
|
49
|
+
critical: "critical",
|
|
50
|
+
blocking: "critical",
|
|
51
|
+
required: "critical",
|
|
52
|
+
high: "critical",
|
|
53
|
+
medium: "medium",
|
|
54
|
+
minor: "minor",
|
|
55
|
+
low: "minor",
|
|
56
|
+
"non-blocking": "minor",
|
|
57
|
+
"nice-to-have": "minor",
|
|
58
|
+
info: "minor",
|
|
59
|
+
};
|
|
60
|
+
/** Harvest findings from one answer, warning about what it dropped. */
|
|
61
|
+
export function harvestFindings(text, origin, read = {}) {
|
|
62
|
+
const witness = anchorWitness(read);
|
|
63
|
+
const warnings = [];
|
|
64
|
+
// An answer that will not parse is usually not a malformed answer.
|
|
65
|
+
// It is a good one that was interrupted, and everything the
|
|
66
|
+
// reviewer completed before that is still in it.
|
|
67
|
+
const { parsed, truncated } = readAnswer(text, "findings");
|
|
68
|
+
if (parsed === undefined) {
|
|
69
|
+
return {
|
|
70
|
+
findings: [],
|
|
71
|
+
truncated: false,
|
|
72
|
+
// A reviewer that never got as far as answering has not
|
|
73
|
+
// broken a contract about the shape of an answer, and saying
|
|
74
|
+
// it did sends the reader to fix the wrong thing. It is still
|
|
75
|
+
// worth reporting, so it gets its own sentence, which
|
|
76
|
+
// alsoRecorded takes back if it turns out the reviewer had
|
|
77
|
+
// been writing findings down all along.
|
|
78
|
+
warnings: [
|
|
79
|
+
text.trim() === ""
|
|
80
|
+
? SAID_NOTHING
|
|
81
|
+
: "Nothing in this answer parsed as JSON, so no findings could be read from it. The answer should hold an object with a findings array.",
|
|
82
|
+
],
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
if (truncated)
|
|
86
|
+
warnings.push(ANSWER_WAS_CUT_OFF);
|
|
87
|
+
const held = parsed.findings;
|
|
88
|
+
if (!Array.isArray(held)) {
|
|
89
|
+
return {
|
|
90
|
+
findings: [],
|
|
91
|
+
truncated: false,
|
|
92
|
+
warnings: [
|
|
93
|
+
"The JSON in this answer carries no findings array, so there was nothing to read. An answer with nothing to say should still say findings: [].",
|
|
94
|
+
],
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
const findings = [];
|
|
98
|
+
for (const [index, entry] of held.entries()) {
|
|
99
|
+
const read = readWireFinding(entry, `findings[${index}]`, origin, witness);
|
|
100
|
+
warnings.push(...read.warnings);
|
|
101
|
+
if (read.finding !== undefined)
|
|
102
|
+
findings.push(read.finding);
|
|
103
|
+
}
|
|
104
|
+
return { findings, warnings, truncated };
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* The answer, plus anything the reviewer wrote down on its way to it.
|
|
108
|
+
*
|
|
109
|
+
* A reviewer records a finding when it finds one and then repeats it in
|
|
110
|
+
* its answer, which is what it is asked to do, so most of these arrive
|
|
111
|
+
* twice. Reporting both would inflate every round and leave the judge
|
|
112
|
+
* consolidating a finding against itself.
|
|
113
|
+
*
|
|
114
|
+
* Where a finding was said twice the answer's telling wins, since it
|
|
115
|
+
* was written after the investigation rather than during it, and the
|
|
116
|
+
* recorded copy is kept only when the answer never got that far. That
|
|
117
|
+
* is the whole point: what was written down does not depend on the
|
|
118
|
+
* reviewer living long enough to say it again.
|
|
119
|
+
*/
|
|
120
|
+
export function alsoRecorded(said, recorded, origin, read = {}) {
|
|
121
|
+
const witness = anchorWitness(read);
|
|
122
|
+
if (recorded === undefined || recorded.length === 0)
|
|
123
|
+
return said;
|
|
124
|
+
const findings = [...said.findings];
|
|
125
|
+
const recordedWarnings = [];
|
|
126
|
+
const before = findings.length;
|
|
127
|
+
for (const [index, entry] of recorded.entries()) {
|
|
128
|
+
const read = readWireFinding(entry, `recorded[${index}]`, origin, witness);
|
|
129
|
+
recordedWarnings.push(...read.warnings);
|
|
130
|
+
const found = read.finding;
|
|
131
|
+
if (found === undefined)
|
|
132
|
+
continue;
|
|
133
|
+
// Scanned rather than keyed, because a finding that named no
|
|
134
|
+
// file has to match one that did, and a hash cannot express
|
|
135
|
+
// that. The lists are tens of entries long.
|
|
136
|
+
if (findings.some((held) => saysTheSame(held, found)))
|
|
137
|
+
continue;
|
|
138
|
+
findings.push(found);
|
|
139
|
+
}
|
|
140
|
+
// It said nothing at the end, but it had been saying things all
|
|
141
|
+
// along, and that is the arrangement working rather than a fault.
|
|
142
|
+
const aboutTheAnswer = findings.length > before
|
|
143
|
+
? said.warnings.filter((warning) => warning !== SAID_NOTHING)
|
|
144
|
+
: said.warnings;
|
|
145
|
+
return {
|
|
146
|
+
...said,
|
|
147
|
+
findings,
|
|
148
|
+
warnings: [...aboutTheAnswer, ...recordedWarnings],
|
|
149
|
+
recordedWarnings,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
/** The subject, folded to survive a reviewer tidying its punctuation. */
|
|
153
|
+
function foldedSubject(finding) {
|
|
154
|
+
// Folded before the ends are trimmed, or a subject recorded with a
|
|
155
|
+
// full stop and repeated without one reads as two findings, which
|
|
156
|
+
// is the likeliest way of all to say one thing twice.
|
|
157
|
+
return finding.subject
|
|
158
|
+
.toLowerCase()
|
|
159
|
+
.replace(/[\s.,;:]+/g, " ")
|
|
160
|
+
.trim();
|
|
161
|
+
}
|
|
162
|
+
/** The file it points at, or nothing when it points at the change. */
|
|
163
|
+
function pathOf(finding) {
|
|
164
|
+
const at = finding.anchor;
|
|
165
|
+
return at === undefined ? "" : (anchorPath(at) ?? "");
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Whether two findings say the same finding, allowing for one of them
|
|
169
|
+
* not having said where.
|
|
170
|
+
*
|
|
171
|
+
* Subject and place. A reviewer recording a finding and then repeating
|
|
172
|
+
* it says the same sentence twice, so the subject is the identity; it
|
|
173
|
+
* is compared loosely enough to survive the reviewer tidying its
|
|
174
|
+
* punctuation, and no more loosely than that, because two findings
|
|
175
|
+
* genuinely can share a subject.
|
|
176
|
+
*
|
|
177
|
+
* The place is the file alone rather than the whole anchor. A reviewer
|
|
178
|
+
* that records against a file and then pins a line in its answer has
|
|
179
|
+
* refined one finding, not found a second, and a byte-identical anchor
|
|
180
|
+
* comparison would report both.
|
|
181
|
+
*
|
|
182
|
+
* A finding that names no file matches one that does, on the same
|
|
183
|
+
* subject. That is not looseness for its own sake: a location now
|
|
184
|
+
* degrades to the change rather than dropping the finding, so the
|
|
185
|
+
* commonest shape of a repeat is a reviewer recording a remark
|
|
186
|
+
* mid-investigation without a location and then naming the file
|
|
187
|
+
* properly in its answer. Keyed on the path alone those are two
|
|
188
|
+
* buckets, and the round would file one observation twice, in exactly
|
|
189
|
+
* the case the journal exists to serve.
|
|
190
|
+
*
|
|
191
|
+
* Two genuinely different findings that share a folded subject and
|
|
192
|
+
* differ only in that one named no file are folded together by this.
|
|
193
|
+
* That is the trade, and it is the right way round: saying one thing
|
|
194
|
+
* twice is noise a reader dismisses, while the alternative is deciding
|
|
195
|
+
* two remarks are distinct because one of them was vague.
|
|
196
|
+
*/
|
|
197
|
+
export function saysTheSame(one, two) {
|
|
198
|
+
if (foldedSubject(one) !== foldedSubject(two))
|
|
199
|
+
return false;
|
|
200
|
+
const here = pathOf(one);
|
|
201
|
+
const there = pathOf(two);
|
|
202
|
+
return here === "" || there === "" || here === there;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Read one entry off the wire.
|
|
206
|
+
*
|
|
207
|
+
* `at` is how the entry is named in a warning, and the caller supplies
|
|
208
|
+
* it because only the caller knows what the entry was found inside.
|
|
209
|
+
*/
|
|
210
|
+
export function readWireFinding(entry, at, origin, witness) {
|
|
211
|
+
const warnings = [];
|
|
212
|
+
const finding = readFinding(entry, at, origin, witness, warnings);
|
|
213
|
+
return { ...(finding === undefined ? {} : { finding }), warnings };
|
|
214
|
+
}
|
|
215
|
+
/** One finding, or nothing plus a warning saying why. */
|
|
216
|
+
function readFinding(entry, at, origin, witness, warnings) {
|
|
217
|
+
if (!isRecord(entry)) {
|
|
218
|
+
warnings.push(`${at} is not an object, so it was dropped.`);
|
|
219
|
+
return undefined;
|
|
220
|
+
}
|
|
221
|
+
// `title` and `body` are read as well, because a reviewer writing a
|
|
222
|
+
// finding down under pressure reaches for the words it already
|
|
223
|
+
// knows. Measured: one council lost twelve findings from a single
|
|
224
|
+
// reviewer, every one of them well formed, because it said `title`
|
|
225
|
+
// where the contract says `subject`. They were the sharpest
|
|
226
|
+
// findings in the round. The contract is still the contract, and
|
|
227
|
+
// this is the same bargain the label and the location already
|
|
228
|
+
// strike: a finding is dropped when it says nothing, never when it
|
|
229
|
+
// said something under a name we did not expect.
|
|
230
|
+
const subject = wireText(entry.subject) ?? wireText(entry.title);
|
|
231
|
+
if (subject === undefined) {
|
|
232
|
+
warnings.push(`${at} has no subject, so it was dropped.`);
|
|
233
|
+
return undefined;
|
|
234
|
+
}
|
|
235
|
+
const { label, given } = readLabel(entry.label, at, warnings);
|
|
236
|
+
const anchor = readAnchor(entry.location, at, witness, warnings);
|
|
237
|
+
return {
|
|
238
|
+
anchor,
|
|
239
|
+
label,
|
|
240
|
+
subject,
|
|
241
|
+
discussion: discussionWith(wireText(entry.discussion) ?? wireText(entry.body) ?? "", given),
|
|
242
|
+
origin,
|
|
243
|
+
...readSeverity(entry.severity, at, warnings),
|
|
244
|
+
...readConfidence(entry.confidence, at, warnings),
|
|
245
|
+
...readRaisedBy(entry.raisedBy, at, warnings),
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Where the finding points, as precisely as what it said allows.
|
|
250
|
+
*
|
|
251
|
+
* Never nothing. Precision is the part a reviewer is most likely to
|
|
252
|
+
* get wrong under pressure, and it is the part that matters least: a
|
|
253
|
+
* remark about the wrong level of the change is still the remark,
|
|
254
|
+
* while a remark thrown away for pointing loosely is gone. So a line
|
|
255
|
+
* with no line falls back to the file, a file with no file falls back
|
|
256
|
+
* to the change, and each says so.
|
|
257
|
+
*/
|
|
258
|
+
function readAnchor(value, at, witness, warnings) {
|
|
259
|
+
const stamp = witness === undefined ? {} : { witness };
|
|
260
|
+
if (!isRecord(value)) {
|
|
261
|
+
warnings.push(`${at} names no location, so it was kept against the change.`);
|
|
262
|
+
return { subject: "change", ...stamp };
|
|
263
|
+
}
|
|
264
|
+
const kind = wireText(value.kind);
|
|
265
|
+
if (kind === "global")
|
|
266
|
+
return { subject: "change", ...stamp };
|
|
267
|
+
// `path` alongside `file`, for the same reason `line` is read
|
|
268
|
+
// alongside `start` two branches down: it is the word a reviewer
|
|
269
|
+
// reaches for, and the anchor this produces calls it `path`.
|
|
270
|
+
const path = wireText(value.file) ?? wireText(value.path);
|
|
271
|
+
if (kind === "file") {
|
|
272
|
+
if (path === undefined) {
|
|
273
|
+
warnings.push(`${at} is a file finding with no file, so it was kept against the change.`);
|
|
274
|
+
return { subject: "change", ...stamp };
|
|
275
|
+
}
|
|
276
|
+
return { subject: "file", path, ...stamp };
|
|
277
|
+
}
|
|
278
|
+
if (kind === "line") {
|
|
279
|
+
if (path === undefined) {
|
|
280
|
+
warnings.push(`${at} is a line finding with no file, so it was kept against the change.`);
|
|
281
|
+
return { subject: "change", ...stamp };
|
|
282
|
+
}
|
|
283
|
+
// `line` is read as well as `start`, because it is the word the
|
|
284
|
+
// anchor this produces uses, and a reviewer naming a single
|
|
285
|
+
// line reaches for it. Measured on a real journal: nine of
|
|
286
|
+
// eleven recorded findings said `line`, and reading only
|
|
287
|
+
// `start` cost every one of them the line it had named.
|
|
288
|
+
const start = wireWhole(value.start) ?? wireWhole(value.line);
|
|
289
|
+
const end = wireWhole(value.end) ?? start;
|
|
290
|
+
if (start === undefined || end === undefined) {
|
|
291
|
+
warnings.push(`${at} is a line finding with no line, so it was kept against the whole file.`);
|
|
292
|
+
return { subject: "file", path, ...stamp };
|
|
293
|
+
}
|
|
294
|
+
return {
|
|
295
|
+
subject: "line",
|
|
296
|
+
path,
|
|
297
|
+
blob: side(value.side),
|
|
298
|
+
line: Math.max(start, end),
|
|
299
|
+
// A single line is a line, not a range of one: carrying a
|
|
300
|
+
// startLine equal to the line would have every renderer
|
|
301
|
+
// deciding for itself whether to print "12" or "12-12".
|
|
302
|
+
...(start === end ? {} : { startLine: Math.min(start, end) }),
|
|
303
|
+
...stamp,
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
// A path with an unreadable kind still says where to look, so the
|
|
307
|
+
// kind costs the precision and not the location.
|
|
308
|
+
if (path !== undefined) {
|
|
309
|
+
warnings.push(`${at} has location kind "${kind ?? "none"}", which is not line, file or global, so it was kept against the whole file.`);
|
|
310
|
+
return { subject: "file", path, ...stamp };
|
|
311
|
+
}
|
|
312
|
+
warnings.push(`${at} has location kind "${kind ?? "none"}", which is not line, file or global, so it was kept against the change.`);
|
|
313
|
+
return { subject: "change", ...stamp };
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Who else raised this, when a consolidating pass says.
|
|
317
|
+
*
|
|
318
|
+
* Agreement between independent reviewers is evidence, and a
|
|
319
|
+
* consolidating pass is the only one that knows about it, so losing
|
|
320
|
+
* it here would throw away the reason a finding is more likely to be
|
|
321
|
+
* real. Blank names are dropped rather than held, since an empty id
|
|
322
|
+
* matches nobody and would make an attribution check answer wrongly.
|
|
323
|
+
*/
|
|
324
|
+
function readRaisedBy(value, at, warnings) {
|
|
325
|
+
if (value === undefined)
|
|
326
|
+
return {};
|
|
327
|
+
if (!Array.isArray(value)) {
|
|
328
|
+
warnings.push(`${at} has raisedBy that is not a list of participant ids, so the finding was kept without its agreement.`);
|
|
329
|
+
return {};
|
|
330
|
+
}
|
|
331
|
+
const raisedBy = value.flatMap((entry) => {
|
|
332
|
+
const name = wireText(entry);
|
|
333
|
+
return name === undefined ? [] : [name];
|
|
334
|
+
});
|
|
335
|
+
return raisedBy.length === 0 ? {} : { raisedBy };
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* A label, or the most neutral one plus a warning saying which word
|
|
339
|
+
* was used instead.
|
|
340
|
+
*
|
|
341
|
+
* Guessing what a reviewer meant would put words in their mouth, so
|
|
342
|
+
* nothing is guessed: an unreadable label becomes a note, which
|
|
343
|
+
* asserts less than any other, and their own word is named in the
|
|
344
|
+
* warning so a reader can see it.
|
|
345
|
+
*
|
|
346
|
+
* Dropping the finding was the older reading of the same principle
|
|
347
|
+
* and it cost far more than it protected. Measured on the journal's
|
|
348
|
+
* first real council: one reviewer of seven labelled its entries
|
|
349
|
+
* defect, testing and design, and every one of its eleven recorded
|
|
350
|
+
* findings was thrown away. It answered anyway, so nothing was lost
|
|
351
|
+
* that time. Had it been stopped, the journal would have rescued
|
|
352
|
+
* nothing in exactly the case it exists for.
|
|
353
|
+
*/
|
|
354
|
+
function readLabel(value, at, warnings) {
|
|
355
|
+
const given = wireText(value);
|
|
356
|
+
// Folded, because a capital is not a different label and reading
|
|
357
|
+
// "Issue" as unrecognized would cost a decoration over a shift key.
|
|
358
|
+
const folded = given?.toLowerCase();
|
|
359
|
+
if (folded !== undefined && LABELS.includes(folded)) {
|
|
360
|
+
return { label: folded };
|
|
361
|
+
}
|
|
362
|
+
warnings.push(`${at} is labelled "${given ?? "nothing"}", which is not one of ${LABELS.join(", ")}, so it was kept as a note saying so.`);
|
|
363
|
+
return { label: "note", ...(given === undefined ? {} : { given }) };
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* The discussion, carrying the reviewer's own label when it was not
|
|
367
|
+
* one we know.
|
|
368
|
+
*
|
|
369
|
+
* Said in the finding rather than only in a warning, because a warning
|
|
370
|
+
* lives for one message. It is not persisted on the run, the finding
|
|
371
|
+
* that reaches the store holds only "note", and the judge is shown the
|
|
372
|
+
* label and nothing else. Without this the defence of defaulting to a
|
|
373
|
+
* note, that their own word survives for a reader, is true of the tool
|
|
374
|
+
* answer alone and false everywhere the finding actually travels.
|
|
375
|
+
*/
|
|
376
|
+
function discussionWith(discussion, given) {
|
|
377
|
+
if (given === undefined)
|
|
378
|
+
return discussion;
|
|
379
|
+
const said = `The reviewer labelled this "${given}", which is not one of the conventional labels, so it is kept as a note.`;
|
|
380
|
+
return discussion === "" ? said : `${discussion}\n\n${said}`;
|
|
381
|
+
}
|
|
382
|
+
/** A severity, dropped with a warning when it is not one. */
|
|
383
|
+
function readSeverity(value, at, warnings) {
|
|
384
|
+
const given = wireText(value);
|
|
385
|
+
if (given === undefined)
|
|
386
|
+
return {};
|
|
387
|
+
const known = SEVERITIES[given.toLowerCase()];
|
|
388
|
+
if (known === undefined) {
|
|
389
|
+
// The severity is a decoration and the observation is the
|
|
390
|
+
// value, so an unreadable one costs the decoration only.
|
|
391
|
+
warnings.push(`${at} has severity "${given}", which is not one of critical, medium, minor, so the finding was kept without it.`);
|
|
392
|
+
return {};
|
|
393
|
+
}
|
|
394
|
+
return { severity: known };
|
|
395
|
+
}
|
|
396
|
+
/** A confidence, dropped with a warning when it is out of range. */
|
|
397
|
+
function readConfidence(value, at, warnings) {
|
|
398
|
+
if (typeof value !== "number" || Number.isNaN(value))
|
|
399
|
+
return {};
|
|
400
|
+
if (value < 0 || value > 1) {
|
|
401
|
+
warnings.push(`${at} has confidence ${value}, which is outside 0 to 1, so the finding was kept without it.`);
|
|
402
|
+
return {};
|
|
403
|
+
}
|
|
404
|
+
return { confidence: value };
|
|
405
|
+
}
|
|
406
|
+
/** Which side of the diff, defaulting to the one a diff shows. */
|
|
407
|
+
function side(value) {
|
|
408
|
+
return wireText(value) === "old" ? "old" : "new";
|
|
409
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a participant id means, and keeping it meaning that.
|
|
3
|
+
*
|
|
4
|
+
* A finding's origin names the reviewer that raised it, and a
|
|
5
|
+
* reader trusts that name to identify one thing. Let an id be
|
|
6
|
+
* re-pointed at a different model halfway through and every origin
|
|
7
|
+
* recorded before the change quietly starts lying, with nothing on
|
|
8
|
+
* the record to say so. So an id that has produced findings is
|
|
9
|
+
* held to what it meant.
|
|
10
|
+
*
|
|
11
|
+
* The ledger is told the findings rather than going to look for
|
|
12
|
+
* them. What counts as attributed is a fact about a finding, and a
|
|
13
|
+
* module that had to know where findings are stored would be
|
|
14
|
+
* answerable to every future place they might be.
|
|
15
|
+
*/
|
|
16
|
+
import type { Finding } from "../finding.js";
|
|
17
|
+
/** What a participant was doing when it raised something. */
|
|
18
|
+
export type ParticipantRole = "reviewer" | "judge";
|
|
19
|
+
/** How a participant is configured. */
|
|
20
|
+
export interface Participant {
|
|
21
|
+
id: string;
|
|
22
|
+
model?: string;
|
|
23
|
+
thinkingLevel?: string;
|
|
24
|
+
tools?: readonly string[];
|
|
25
|
+
persona?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Clocks this one keeps, where the round's do not suit it.
|
|
28
|
+
*
|
|
29
|
+
* One number for a whole fan-out has to be sized for its slowest
|
|
30
|
+
* member, so a roster mixing a small fast model with a large one at
|
|
31
|
+
* high thinking either holds slots the fast reviewers do not need
|
|
32
|
+
* or cuts the slow one off mid-thought.
|
|
33
|
+
*
|
|
34
|
+
* Not part of the identity below, deliberately. What a reviewer was
|
|
35
|
+
* set to think with decides what its findings mean and is held for
|
|
36
|
+
* the session; how long it was allowed to take does not change what
|
|
37
|
+
* it said, and holding an id to a clock would refuse the one
|
|
38
|
+
* adjustment a reader makes after being told a reviewer ran out of
|
|
39
|
+
* time.
|
|
40
|
+
*/
|
|
41
|
+
backstopMs?: number;
|
|
42
|
+
idleMs?: number;
|
|
43
|
+
answerMs?: number;
|
|
44
|
+
}
|
|
45
|
+
/** The clocks a participant may keep for itself. */
|
|
46
|
+
export type ParticipantClocks = Pick<Participant, "backstopMs" | "idleMs" | "answerMs">;
|
|
47
|
+
/** What an id has been taken to mean. */
|
|
48
|
+
export interface ParticipantIdentity {
|
|
49
|
+
id: string;
|
|
50
|
+
role: ParticipantRole;
|
|
51
|
+
model?: string;
|
|
52
|
+
thinkingLevel?: string;
|
|
53
|
+
tools?: readonly string[];
|
|
54
|
+
persona?: string;
|
|
55
|
+
}
|
|
56
|
+
/** Claiming an id either holds it or explains what to do instead. */
|
|
57
|
+
export type ClaimOutcome = {
|
|
58
|
+
held: ParticipantIdentity;
|
|
59
|
+
} | {
|
|
60
|
+
refusal: string;
|
|
61
|
+
};
|
|
62
|
+
/** Which ids mean what, for the life of a session. */
|
|
63
|
+
export interface IdentityLedger {
|
|
64
|
+
/**
|
|
65
|
+
* Take an id for a participant, given the findings raised so
|
|
66
|
+
* far. Refuses only where a claimed id would change meaning
|
|
67
|
+
* with findings already attributed to it.
|
|
68
|
+
*/
|
|
69
|
+
claim(role: ParticipantRole, participant: Participant, findings: readonly Finding[]): ClaimOutcome;
|
|
70
|
+
/** Free an id, reporting whether it was held. */
|
|
71
|
+
release(id: string): boolean;
|
|
72
|
+
/** Every id currently held, in the order first claimed. */
|
|
73
|
+
held(): ParticipantIdentity[];
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Reduce a participant's config to the identity it claims.
|
|
77
|
+
*
|
|
78
|
+
* Absent fields are left out rather than set undefined, so two
|
|
79
|
+
* identities compare equal when they say the same thing, and a
|
|
80
|
+
* reader is never shown a key that was never configured.
|
|
81
|
+
*/
|
|
82
|
+
export declare function participantIdentity(role: ParticipantRole, participant: Participant): ParticipantIdentity;
|
|
83
|
+
/**
|
|
84
|
+
* Whether a finding names this id, as its author or as agreement.
|
|
85
|
+
*
|
|
86
|
+
* A consolidating pass records which reviewers raised the same
|
|
87
|
+
* thing, and those ids are as referenced as the author's: a
|
|
88
|
+
* release that ignored them would report that nothing points at an
|
|
89
|
+
* id while several findings name it.
|
|
90
|
+
*/
|
|
91
|
+
export declare function attributedTo(finding: Finding, id: string): boolean;
|
|
92
|
+
/** A fresh ledger, holding nothing. */
|
|
93
|
+
export declare function createIdentityLedger(): IdentityLedger;
|