@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,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Payloads a tool answered with, kept where they can be asked
|
|
3
|
+
* about.
|
|
4
|
+
*
|
|
5
|
+
* A tool result has two audiences with opposite needs. The model
|
|
6
|
+
* needs a few hundred bytes it can reason over; the caller who
|
|
7
|
+
* then asks a precise question needs the whole thing. A store
|
|
8
|
+
* settles the argument: the answer carries a bounded view and an
|
|
9
|
+
* opaque handle, and the payload waits on disk until somebody
|
|
10
|
+
* queries it.
|
|
11
|
+
*
|
|
12
|
+
* The store is its directory, not an object. Every family that
|
|
13
|
+
* answers with a large payload puts it here, and the one tool that
|
|
14
|
+
* queries them reads it back, and those are different consumers in
|
|
15
|
+
* the same process holding different instances. So a handle
|
|
16
|
+
* resolves against the directory rather than against whichever
|
|
17
|
+
* instance happened to write it. An in-memory index would have
|
|
18
|
+
* meant a handle cited by one family was unreadable by the query
|
|
19
|
+
* tool, which is the only thing a handle is for.
|
|
20
|
+
*
|
|
21
|
+
* The quota is what makes this safe to leave on everywhere. A long
|
|
22
|
+
* session answering large questions would otherwise fill a disk
|
|
23
|
+
* one honest payload at a time, so a put evicts the oldest
|
|
24
|
+
* payloads until the directory fits again. It counts what is on
|
|
25
|
+
* disk rather than what this instance remembers writing, for the
|
|
26
|
+
* same reason handles resolve that way: several instances share
|
|
27
|
+
* one directory, and a quota each of them enforced privately would
|
|
28
|
+
* be a quota multiplied by however many there happened to be.
|
|
29
|
+
*
|
|
30
|
+
* Payloads are named after their content, so a page read repeated
|
|
31
|
+
* across several answers costs one file and yields one handle
|
|
32
|
+
* rather than a fresh megabyte each time.
|
|
33
|
+
*/
|
|
34
|
+
/**
|
|
35
|
+
* Raised when a handle no longer resolves: never issued, evicted
|
|
36
|
+
* under quota, or its file has gone.
|
|
37
|
+
*/
|
|
38
|
+
export declare class HandleExpiredError extends Error {
|
|
39
|
+
constructor(handle: string);
|
|
40
|
+
}
|
|
41
|
+
/** A payload on disk, and how to ask for it again. */
|
|
42
|
+
export interface StoredResult {
|
|
43
|
+
handle: string;
|
|
44
|
+
path: string;
|
|
45
|
+
bytes: number;
|
|
46
|
+
}
|
|
47
|
+
/** A session's stored payloads, addressed by handle. */
|
|
48
|
+
export interface ResultStore {
|
|
49
|
+
/** Keep a payload and return its handle, path and size. */
|
|
50
|
+
put(text: string): StoredResult;
|
|
51
|
+
/** Read a payload back, or throw HandleExpiredError if it is gone. */
|
|
52
|
+
read(handle: string): string;
|
|
53
|
+
/** Whether a handle still resolves. */
|
|
54
|
+
has(handle: string): boolean;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* What this store minted, as opposed to what it will look up.
|
|
58
|
+
*
|
|
59
|
+
* Published unanchored as well, because one other place has to
|
|
60
|
+
* recognize a handle in running text: the layer that cuts an
|
|
61
|
+
* oversized answer must not cut through one. Written out there by
|
|
62
|
+
* hand it became the word "handle" followed by anything, which is
|
|
63
|
+
* also a sentence about handling errors.
|
|
64
|
+
*
|
|
65
|
+
* Deciding which files to count against the quota and delete is a
|
|
66
|
+
* different question from deciding which names are safe to resolve,
|
|
67
|
+
* and it needs the stricter answer. The directory may hold
|
|
68
|
+
* somebody else's files, and evicting one of those to make room for
|
|
69
|
+
* ours would be a quota enforced with other people's data.
|
|
70
|
+
*/
|
|
71
|
+
export declare const MINTED_HANDLE_SHAPE = "result-[0-9a-f]{16}";
|
|
72
|
+
/**
|
|
73
|
+
* Create a store backed by files under a directory.
|
|
74
|
+
*
|
|
75
|
+
* A payload larger than the whole quota is kept anyway, because it
|
|
76
|
+
* is still the current result and the answer citing it must
|
|
77
|
+
* resolve. That is the one case where the store knowingly sits
|
|
78
|
+
* over its limit, and the next put brings it back down.
|
|
79
|
+
*/
|
|
80
|
+
export declare function createResultStore(deps: {
|
|
81
|
+
dir: string;
|
|
82
|
+
maxBytes?: number;
|
|
83
|
+
}): ResultStore;
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Payloads a tool answered with, kept where they can be asked
|
|
3
|
+
* about.
|
|
4
|
+
*
|
|
5
|
+
* A tool result has two audiences with opposite needs. The model
|
|
6
|
+
* needs a few hundred bytes it can reason over; the caller who
|
|
7
|
+
* then asks a precise question needs the whole thing. A store
|
|
8
|
+
* settles the argument: the answer carries a bounded view and an
|
|
9
|
+
* opaque handle, and the payload waits on disk until somebody
|
|
10
|
+
* queries it.
|
|
11
|
+
*
|
|
12
|
+
* The store is its directory, not an object. Every family that
|
|
13
|
+
* answers with a large payload puts it here, and the one tool that
|
|
14
|
+
* queries them reads it back, and those are different consumers in
|
|
15
|
+
* the same process holding different instances. So a handle
|
|
16
|
+
* resolves against the directory rather than against whichever
|
|
17
|
+
* instance happened to write it. An in-memory index would have
|
|
18
|
+
* meant a handle cited by one family was unreadable by the query
|
|
19
|
+
* tool, which is the only thing a handle is for.
|
|
20
|
+
*
|
|
21
|
+
* The quota is what makes this safe to leave on everywhere. A long
|
|
22
|
+
* session answering large questions would otherwise fill a disk
|
|
23
|
+
* one honest payload at a time, so a put evicts the oldest
|
|
24
|
+
* payloads until the directory fits again. It counts what is on
|
|
25
|
+
* disk rather than what this instance remembers writing, for the
|
|
26
|
+
* same reason handles resolve that way: several instances share
|
|
27
|
+
* one directory, and a quota each of them enforced privately would
|
|
28
|
+
* be a quota multiplied by however many there happened to be.
|
|
29
|
+
*
|
|
30
|
+
* Payloads are named after their content, so a page read repeated
|
|
31
|
+
* across several answers costs one file and yields one handle
|
|
32
|
+
* rather than a fresh megabyte each time.
|
|
33
|
+
*/
|
|
34
|
+
import * as fs from "node:fs";
|
|
35
|
+
import * as path from "node:path";
|
|
36
|
+
import { spillText } from "./spill.js";
|
|
37
|
+
/**
|
|
38
|
+
* Raised when a handle no longer resolves: never issued, evicted
|
|
39
|
+
* under quota, or its file has gone.
|
|
40
|
+
*/
|
|
41
|
+
export class HandleExpiredError extends Error {
|
|
42
|
+
constructor(handle) {
|
|
43
|
+
super(`result handle ${handle} is no longer available`);
|
|
44
|
+
this.name = "HandleExpiredError";
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The shape a handle must have to be looked up.
|
|
49
|
+
*
|
|
50
|
+
* A handle arrives from a language model, which means it can be
|
|
51
|
+
* anything at all, including a relative path with enough parent
|
|
52
|
+
* directories in it to leave the store. This is a guard against
|
|
53
|
+
* that, not a description of what minting happens to produce: it
|
|
54
|
+
* allows any name built from letters, digits, dash and underscore,
|
|
55
|
+
* which cannot escape a directory, and refuses everything else.
|
|
56
|
+
*
|
|
57
|
+
* It was briefly the exact minted shape, sixteen hex digits with a
|
|
58
|
+
* prefix, which is a different and worse rule. It rejects a handle
|
|
59
|
+
* from any other minting scheme, and it made a truncated handle
|
|
60
|
+
* indistinguishable from a hostile one when what a caller needed to
|
|
61
|
+
* hear was that their handle had been cut.
|
|
62
|
+
*/
|
|
63
|
+
const HANDLE_PATTERN = /^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$/;
|
|
64
|
+
/**
|
|
65
|
+
* What this store minted, as opposed to what it will look up.
|
|
66
|
+
*
|
|
67
|
+
* Published unanchored as well, because one other place has to
|
|
68
|
+
* recognize a handle in running text: the layer that cuts an
|
|
69
|
+
* oversized answer must not cut through one. Written out there by
|
|
70
|
+
* hand it became the word "handle" followed by anything, which is
|
|
71
|
+
* also a sentence about handling errors.
|
|
72
|
+
*
|
|
73
|
+
* Deciding which files to count against the quota and delete is a
|
|
74
|
+
* different question from deciding which names are safe to resolve,
|
|
75
|
+
* and it needs the stricter answer. The directory may hold
|
|
76
|
+
* somebody else's files, and evicting one of those to make room for
|
|
77
|
+
* ours would be a quota enforced with other people's data.
|
|
78
|
+
*/
|
|
79
|
+
export const MINTED_HANDLE_SHAPE = "result-[0-9a-f]{16}";
|
|
80
|
+
const MINTED_PATTERN = new RegExp(`^${MINTED_HANDLE_SHAPE}$`);
|
|
81
|
+
/** The extension every stored payload is written under. */
|
|
82
|
+
const PAYLOAD_EXTENSION = ".json";
|
|
83
|
+
/**
|
|
84
|
+
* Create a store backed by files under a directory.
|
|
85
|
+
*
|
|
86
|
+
* A payload larger than the whole quota is kept anyway, because it
|
|
87
|
+
* is still the current result and the answer citing it must
|
|
88
|
+
* resolve. That is the one case where the store knowingly sits
|
|
89
|
+
* over its limit, and the next put brings it back down.
|
|
90
|
+
*/
|
|
91
|
+
export function createResultStore(deps) {
|
|
92
|
+
/** Whether a filesystem error means the file simply is not there. */
|
|
93
|
+
function isMissing(err) {
|
|
94
|
+
return (typeof err === "object" &&
|
|
95
|
+
err !== null &&
|
|
96
|
+
"code" in err &&
|
|
97
|
+
(err.code === "ENOENT" || err.code === "ENOTDIR"));
|
|
98
|
+
}
|
|
99
|
+
function pathFor(handle) {
|
|
100
|
+
if (!HANDLE_PATTERN.test(handle))
|
|
101
|
+
return undefined;
|
|
102
|
+
return path.join(deps.dir, `${handle}${PAYLOAD_EXTENSION}`);
|
|
103
|
+
}
|
|
104
|
+
// Re-reads the directory on every put rather than keeping a tally.
|
|
105
|
+
// That looks wasteful and was raised as such; measured, it is 0.36
|
|
106
|
+
// ms per put with 50 payloads on disk and 1.37 ms with 500, next
|
|
107
|
+
// to a put that has just written tens of kilobytes and a tool call
|
|
108
|
+
// that took hundreds of milliseconds to produce them. A cached
|
|
109
|
+
// tally would also be wrong rather than slow: the directory is
|
|
110
|
+
// shared with every other consumer in the session, so anything
|
|
111
|
+
// remembered between calls is a guess about what somebody else
|
|
112
|
+
// has written since.
|
|
113
|
+
//
|
|
114
|
+
// By name, never by path: a spill reports the directory's real
|
|
115
|
+
// path, the caller may have given us a symlinked one, and on macOS
|
|
116
|
+
// those differ for anything under the temp directory. Comparing
|
|
117
|
+
// paths there quietly evicted the payload we had just written and
|
|
118
|
+
// were about to cite.
|
|
119
|
+
function evictWhileOver(keepName) {
|
|
120
|
+
if (deps.maxBytes === undefined)
|
|
121
|
+
return;
|
|
122
|
+
let held = payloadsOnDisk(deps.dir);
|
|
123
|
+
let total = held.reduce((sum, entry) => sum + entry.bytes, 0);
|
|
124
|
+
// Oldest first, so what goes is what has had the longest
|
|
125
|
+
// chance to be queried already.
|
|
126
|
+
held = held.sort((a, b) => a.modifiedMs - b.modifiedMs);
|
|
127
|
+
for (const entry of held) {
|
|
128
|
+
if (total <= deps.maxBytes)
|
|
129
|
+
break;
|
|
130
|
+
if (path.basename(entry.path) === keepName)
|
|
131
|
+
continue;
|
|
132
|
+
try {
|
|
133
|
+
fs.rmSync(entry.path, { force: true });
|
|
134
|
+
total -= entry.bytes;
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
// A file that will not delete still occupies disk, so its
|
|
138
|
+
// bytes stay counted rather than the store claiming space it
|
|
139
|
+
// did not reclaim.
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
put(text) {
|
|
145
|
+
const written = spillText(text, deps.dir);
|
|
146
|
+
const bytes = Buffer.byteLength(text, "utf-8");
|
|
147
|
+
evictWhileOver(path.basename(written.path));
|
|
148
|
+
return {
|
|
149
|
+
handle: handleFor(written.path),
|
|
150
|
+
path: written.path,
|
|
151
|
+
bytes,
|
|
152
|
+
};
|
|
153
|
+
},
|
|
154
|
+
read(handle) {
|
|
155
|
+
const file = pathFor(handle);
|
|
156
|
+
if (!file)
|
|
157
|
+
throw new HandleExpiredError(handle);
|
|
158
|
+
try {
|
|
159
|
+
return fs.readFileSync(file, "utf-8");
|
|
160
|
+
}
|
|
161
|
+
catch (err) {
|
|
162
|
+
// Only a missing file is an expiry. Reporting a permission
|
|
163
|
+
// error or a full disk as "this handle is no longer
|
|
164
|
+
// available" sends the caller off to re-run the work that
|
|
165
|
+
// produced it, which will fail the same way, and hides the
|
|
166
|
+
// one detail that would have explained why.
|
|
167
|
+
if (isMissing(err))
|
|
168
|
+
throw new HandleExpiredError(handle);
|
|
169
|
+
throw new Error(`Handle ${handle} is on disk but could not be read: ` +
|
|
170
|
+
`${err instanceof Error ? err.message : String(err)}`, { cause: err });
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
has(handle) {
|
|
174
|
+
const file = pathFor(handle);
|
|
175
|
+
return file !== undefined && fs.existsSync(file);
|
|
176
|
+
},
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
/** Every payload currently in a store's directory, with its age and size. */
|
|
180
|
+
function payloadsOnDisk(dir) {
|
|
181
|
+
let names;
|
|
182
|
+
try {
|
|
183
|
+
names = fs.readdirSync(dir);
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
// No directory yet means no payloads, which is not an error: the
|
|
187
|
+
// first put is what creates it.
|
|
188
|
+
return [];
|
|
189
|
+
}
|
|
190
|
+
const found = [];
|
|
191
|
+
for (const name of names) {
|
|
192
|
+
if (!name.endsWith(PAYLOAD_EXTENSION))
|
|
193
|
+
continue;
|
|
194
|
+
if (!MINTED_PATTERN.test(name.slice(0, -PAYLOAD_EXTENSION.length)))
|
|
195
|
+
continue;
|
|
196
|
+
const full = path.join(dir, name);
|
|
197
|
+
try {
|
|
198
|
+
const stat = fs.statSync(full);
|
|
199
|
+
if (!stat.isFile())
|
|
200
|
+
continue;
|
|
201
|
+
found.push({ path: full, bytes: stat.size, modifiedMs: stat.mtimeMs });
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
// It vanished between the listing and the stat, so it is not
|
|
205
|
+
// holding any disk and does not belong in the tally.
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return found;
|
|
209
|
+
}
|
|
210
|
+
/** Derive a handle from a spilled file's path. */
|
|
211
|
+
function handleFor(filePath) {
|
|
212
|
+
const base = filePath.split(/[\\/]/).pop() ?? filePath;
|
|
213
|
+
return base.replace(/\.[^.]+$/, "");
|
|
214
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* As much of a rendered view as a budget affords.
|
|
3
|
+
*
|
|
4
|
+
* Whole lines only. Half a line is not a smaller truth, it is a
|
|
5
|
+
* wrong one: a caller who reads "butto" has been handed a node
|
|
6
|
+
* that does not exist, and a request row cut mid-url points at
|
|
7
|
+
* somewhere nobody asked for.
|
|
8
|
+
*
|
|
9
|
+
* Never none, either. An answer that cut everything tells the
|
|
10
|
+
* caller nothing about where they are, so a single line over
|
|
11
|
+
* budget is still returned. The budget is a presentation default,
|
|
12
|
+
* and the payload it cut is stored rather than lost.
|
|
13
|
+
*
|
|
14
|
+
* This knows nothing about what it is cutting. What to do about a
|
|
15
|
+
* cut view differs by family, since narrowing a page read and
|
|
16
|
+
* narrowing a request listing use different words, so the advice
|
|
17
|
+
* belongs to whoever knows those words.
|
|
18
|
+
*/
|
|
19
|
+
/** A view cut to fit, and what fitting it cost. */
|
|
20
|
+
export interface BudgetedView {
|
|
21
|
+
/** The view, whole lines only. */
|
|
22
|
+
readonly text: string;
|
|
23
|
+
/** Lines the render produced. */
|
|
24
|
+
readonly total: number;
|
|
25
|
+
/** Lines this view carries. */
|
|
26
|
+
readonly shown: number;
|
|
27
|
+
/** Lines cut, which is zero when it all fit. */
|
|
28
|
+
readonly cut: number;
|
|
29
|
+
}
|
|
30
|
+
/** Keep the leading whole lines of a view that fit a byte budget. */
|
|
31
|
+
export declare function withinLineBudget(rendered: string, budget: number): BudgetedView;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* As much of a rendered view as a budget affords.
|
|
3
|
+
*
|
|
4
|
+
* Whole lines only. Half a line is not a smaller truth, it is a
|
|
5
|
+
* wrong one: a caller who reads "butto" has been handed a node
|
|
6
|
+
* that does not exist, and a request row cut mid-url points at
|
|
7
|
+
* somewhere nobody asked for.
|
|
8
|
+
*
|
|
9
|
+
* Never none, either. An answer that cut everything tells the
|
|
10
|
+
* caller nothing about where they are, so a single line over
|
|
11
|
+
* budget is still returned. The budget is a presentation default,
|
|
12
|
+
* and the payload it cut is stored rather than lost.
|
|
13
|
+
*
|
|
14
|
+
* This knows nothing about what it is cutting. What to do about a
|
|
15
|
+
* cut view differs by family, since narrowing a page read and
|
|
16
|
+
* narrowing a request listing use different words, so the advice
|
|
17
|
+
* belongs to whoever knows those words.
|
|
18
|
+
*/
|
|
19
|
+
/** Keep the leading whole lines of a view that fit a byte budget. */
|
|
20
|
+
export function withinLineBudget(rendered, budget) {
|
|
21
|
+
const lines = rendered.length === 0 ? [] : rendered.split("\n");
|
|
22
|
+
const kept = [];
|
|
23
|
+
let spent = 0;
|
|
24
|
+
for (const line of lines) {
|
|
25
|
+
// The newline this line costs once it is joined back up.
|
|
26
|
+
const cost = Buffer.byteLength(line, "utf-8") + 1;
|
|
27
|
+
if (kept.length > 0 && spent + cost > budget)
|
|
28
|
+
break;
|
|
29
|
+
kept.push(line);
|
|
30
|
+
spent += cost;
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
text: kept.join("\n"),
|
|
34
|
+
total: lines.length,
|
|
35
|
+
shown: kept.length,
|
|
36
|
+
cut: lines.length - kept.length,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a remark attaches to a change.
|
|
3
|
+
*
|
|
4
|
+
* The shape is git's: a path, a side (the file before or the
|
|
5
|
+
* file after), a line or line range, and the commit the
|
|
6
|
+
* anchor was formed against. That last field is what makes
|
|
7
|
+
* an anchor honest across a force-push. One backend keeps
|
|
8
|
+
* the witness commit reachable and has no notion of a stale
|
|
9
|
+
* comment; another strands the thread and reports it as
|
|
10
|
+
* outdated. Recording the witness lets the substrate say
|
|
11
|
+
* which of those happened instead of guessing.
|
|
12
|
+
*/
|
|
13
|
+
import type { DiffFile, DiffHunk, DiffModel, DiffSide } from "./diff.js";
|
|
14
|
+
export type { DiffSide };
|
|
15
|
+
/** A remark about one line or a run of lines. */
|
|
16
|
+
export interface LineAnchor {
|
|
17
|
+
subject: "line";
|
|
18
|
+
path: string;
|
|
19
|
+
blob: DiffSide;
|
|
20
|
+
/** Last line of the range, or the only line. */
|
|
21
|
+
line: number;
|
|
22
|
+
/** First line of a multi-line range. */
|
|
23
|
+
startLine?: number;
|
|
24
|
+
/** Commit the anchor was formed against. */
|
|
25
|
+
witness?: string;
|
|
26
|
+
}
|
|
27
|
+
/** A remark about a file as a whole. */
|
|
28
|
+
export interface FileAnchor {
|
|
29
|
+
subject: "file";
|
|
30
|
+
path: string;
|
|
31
|
+
/** Side the path is named on. Defaults to the new side. */
|
|
32
|
+
blob?: DiffSide;
|
|
33
|
+
witness?: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* A remark about the change as a whole.
|
|
37
|
+
*
|
|
38
|
+
* Its shape, its scope, the commit it sits on, whether it should
|
|
39
|
+
* be one change or three: things a reviewer says about the work
|
|
40
|
+
* rather than about a line of it. There is no place in a diff for
|
|
41
|
+
* one, which is the point. Naming it lets a backend that has
|
|
42
|
+
* somewhere to put it do so, and lets the rest spill it into the
|
|
43
|
+
* review body knowing why.
|
|
44
|
+
*/
|
|
45
|
+
export interface ChangeAnchor {
|
|
46
|
+
subject: "change";
|
|
47
|
+
witness?: string;
|
|
48
|
+
}
|
|
49
|
+
/** Where a remark attaches. */
|
|
50
|
+
export type Anchor = LineAnchor | FileAnchor | ChangeAnchor;
|
|
51
|
+
/** Why an anchor cannot land on a diff. */
|
|
52
|
+
export type AnchorRefusal = "file-absent" | "line-absent" | "range-inverted" | "range-crosses-hunks"
|
|
53
|
+
/** The remark named no place, so there is none to find. */
|
|
54
|
+
| "not-a-place";
|
|
55
|
+
/** Whether an anchor lands, and what it landed on. */
|
|
56
|
+
export type AnchorCheck = {
|
|
57
|
+
anchored: true;
|
|
58
|
+
file: DiffFile;
|
|
59
|
+
hunk?: DiffHunk;
|
|
60
|
+
} | {
|
|
61
|
+
anchored: false;
|
|
62
|
+
reason: AnchorRefusal;
|
|
63
|
+
};
|
|
64
|
+
/** The path an anchor names, when it names one. */
|
|
65
|
+
export declare function anchorPath(anchor: Anchor): string | undefined;
|
|
66
|
+
/**
|
|
67
|
+
* Where a remark points, in a form a person can scan.
|
|
68
|
+
*
|
|
69
|
+
* One spelling, because an anchor read four different ways in
|
|
70
|
+
* four views is four chances to describe the same place
|
|
71
|
+
* differently.
|
|
72
|
+
*/
|
|
73
|
+
export declare function describeAnchor(anchor: Anchor): string;
|
|
74
|
+
/**
|
|
75
|
+
* Decide whether an anchor can land on a diff.
|
|
76
|
+
*
|
|
77
|
+
* A line anchor lands when the diff shows that line on the
|
|
78
|
+
* side the anchor names: an added line exists only on the
|
|
79
|
+
* new side, a removed line only on the old side, and a
|
|
80
|
+
* context line on both. A range must sit inside one hunk,
|
|
81
|
+
* because a remark spanning a gap in the diff has no
|
|
82
|
+
* meaning to a reader and no backend accepts one.
|
|
83
|
+
*/
|
|
84
|
+
export declare function anchorable(diff: DiffModel, anchor: Anchor): AnchorCheck;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a remark attaches to a change.
|
|
3
|
+
*
|
|
4
|
+
* The shape is git's: a path, a side (the file before or the
|
|
5
|
+
* file after), a line or line range, and the commit the
|
|
6
|
+
* anchor was formed against. That last field is what makes
|
|
7
|
+
* an anchor honest across a force-push. One backend keeps
|
|
8
|
+
* the witness commit reachable and has no notion of a stale
|
|
9
|
+
* comment; another strands the thread and reports it as
|
|
10
|
+
* outdated. Recording the witness lets the substrate say
|
|
11
|
+
* which of those happened instead of guessing.
|
|
12
|
+
*/
|
|
13
|
+
/** The path an anchor names, when it names one. */
|
|
14
|
+
export function anchorPath(anchor) {
|
|
15
|
+
return anchor.subject === "change" ? undefined : anchor.path;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Where a remark points, in a form a person can scan.
|
|
19
|
+
*
|
|
20
|
+
* One spelling, because an anchor read four different ways in
|
|
21
|
+
* four views is four chances to describe the same place
|
|
22
|
+
* differently.
|
|
23
|
+
*/
|
|
24
|
+
export function describeAnchor(anchor) {
|
|
25
|
+
if (anchor.subject === "change")
|
|
26
|
+
return "the change as a whole";
|
|
27
|
+
if (anchor.subject === "file")
|
|
28
|
+
return anchor.path;
|
|
29
|
+
const lines = anchor.startLine && anchor.startLine !== anchor.line
|
|
30
|
+
? `${anchor.startLine}-${anchor.line}`
|
|
31
|
+
: `${anchor.line}`;
|
|
32
|
+
return `${anchor.path}:${lines}`;
|
|
33
|
+
}
|
|
34
|
+
/** The side an anchor names, defaulting to the new side. */
|
|
35
|
+
function sideOf(anchor) {
|
|
36
|
+
return anchor.blob ?? "new";
|
|
37
|
+
}
|
|
38
|
+
/** The path a file carries on one side of the diff. */
|
|
39
|
+
function pathOn(file, side) {
|
|
40
|
+
return side === "old" ? file.oldPath : file.newPath;
|
|
41
|
+
}
|
|
42
|
+
/** Whether a hunk line exists on the given side. */
|
|
43
|
+
function lineOn(hunk, side, line) {
|
|
44
|
+
return hunk.lines.some((entry) => side === "old" ? entry.oldLine === line : entry.newLine === line);
|
|
45
|
+
}
|
|
46
|
+
/** The hunk holding a line on the given side, if any. */
|
|
47
|
+
function hunkHolding(file, side, line) {
|
|
48
|
+
return file.hunks.find((hunk) => lineOn(hunk, side, line));
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Decide whether an anchor can land on a diff.
|
|
52
|
+
*
|
|
53
|
+
* A line anchor lands when the diff shows that line on the
|
|
54
|
+
* side the anchor names: an added line exists only on the
|
|
55
|
+
* new side, a removed line only on the old side, and a
|
|
56
|
+
* context line on both. A range must sit inside one hunk,
|
|
57
|
+
* because a remark spanning a gap in the diff has no
|
|
58
|
+
* meaning to a reader and no backend accepts one.
|
|
59
|
+
*/
|
|
60
|
+
export function anchorable(diff, anchor) {
|
|
61
|
+
// Asked of a remark that named no place, the honest answer is
|
|
62
|
+
// that there was nothing to look for. Falling through to the
|
|
63
|
+
// path lookup would blame a file the remark never mentioned.
|
|
64
|
+
if (anchor.subject === "change") {
|
|
65
|
+
return { anchored: false, reason: "not-a-place" };
|
|
66
|
+
}
|
|
67
|
+
const side = sideOf(anchor);
|
|
68
|
+
const file = diff.files.find((entry) => pathOn(entry, side) === anchor.path);
|
|
69
|
+
if (!file)
|
|
70
|
+
return { anchored: false, reason: "file-absent" };
|
|
71
|
+
if (anchor.subject === "file")
|
|
72
|
+
return { anchored: true, file };
|
|
73
|
+
const start = anchor.startLine ?? anchor.line;
|
|
74
|
+
if (start > anchor.line) {
|
|
75
|
+
return { anchored: false, reason: "range-inverted" };
|
|
76
|
+
}
|
|
77
|
+
const hunk = hunkHolding(file, side, start);
|
|
78
|
+
if (!hunk)
|
|
79
|
+
return { anchored: false, reason: "line-absent" };
|
|
80
|
+
if (!lineOn(hunk, side, anchor.line)) {
|
|
81
|
+
// The end line may be absent outright, or present in a
|
|
82
|
+
// later hunk; those are different refusals.
|
|
83
|
+
const reason = hunkHolding(file, side, anchor.line)
|
|
84
|
+
? "range-crosses-hunks"
|
|
85
|
+
: "line-absent";
|
|
86
|
+
return { anchored: false, reason };
|
|
87
|
+
}
|
|
88
|
+
return { anchored: true, file, hunk };
|
|
89
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agents another harness already defined in the repo under review.
|
|
3
|
+
*
|
|
4
|
+
* A repo that has been worked in for a while has usually accumulated
|
|
5
|
+
* some: a reviewer, an architect, a debugger, each written by somebody
|
|
6
|
+
* who knew that codebase. They are lenses, which is what a persona is,
|
|
7
|
+
* and they are already there, which is more than can be said for any
|
|
8
|
+
* lens this tool ships. Offering them costs a directory read.
|
|
9
|
+
*
|
|
10
|
+
* Three rules make that safe, and the third is the one that matters.
|
|
11
|
+
*
|
|
12
|
+
* They are namespaced, because a roster naming a lens and silently
|
|
13
|
+
* getting the repo's version of it is the quiet substitution
|
|
14
|
+
* `bindPersonas` refuses: the findings still file under the name, and
|
|
15
|
+
* whoever reads them weighs them as the lens they asked for.
|
|
16
|
+
*
|
|
17
|
+
* Only the prose comes across. Measured across fifteen agent files on
|
|
18
|
+
* this machine, thirteen name tools and six name a model, in
|
|
19
|
+
* vocabulary that belongs to the harness that wrote them: `sonnet` is
|
|
20
|
+
* not a model pi resolves and `Bash, Read, Edit` are not tools it has.
|
|
21
|
+
*
|
|
22
|
+
* And the change under review may not be the thing that wrote them. A
|
|
23
|
+
* charter becomes the reviewer's `--system-prompt`, on a child holding
|
|
24
|
+
* bash and write, with its working directory inside the tree, and that
|
|
25
|
+
* tree is pinned to the commit under review. So without this rule the
|
|
26
|
+
* author of a change writes the standing instruction of the agent
|
|
27
|
+
* reviewing it, and the operator's consent is worth little, since the
|
|
28
|
+
* listing they chose from read a different tree. A lens the diff
|
|
29
|
+
* touches is refused. What remains is the repo's committed state,
|
|
30
|
+
* which is the same trust already extended to every other line in it.
|
|
31
|
+
*
|
|
32
|
+
* Reading the directory is somebody else's job, as it is for personas.
|
|
33
|
+
* This module is handed the files.
|
|
34
|
+
*/
|
|
35
|
+
/** A file that might describe an agent. */
|
|
36
|
+
export interface AgentFile {
|
|
37
|
+
/** Where it was found, relative to the repo, for reporting. */
|
|
38
|
+
path: string;
|
|
39
|
+
/**
|
|
40
|
+
* Where the bytes actually came from, when that is somewhere else.
|
|
41
|
+
*
|
|
42
|
+
* A symlink inside the tree is followed for its content and was
|
|
43
|
+
* checked against the diff by the link's own path, so a change could
|
|
44
|
+
* edit the file the link points at and leave the link untouched.
|
|
45
|
+
*/
|
|
46
|
+
reads?: string;
|
|
47
|
+
text: string;
|
|
48
|
+
}
|
|
49
|
+
/** A lens the repo under review already had. */
|
|
50
|
+
export interface RepoAgent {
|
|
51
|
+
/** Namespaced id, which is how a roster asks for it. */
|
|
52
|
+
id: string;
|
|
53
|
+
name: string;
|
|
54
|
+
description: string;
|
|
55
|
+
/** The charter prose: the file body, frontmatter stripped. */
|
|
56
|
+
charter: string;
|
|
57
|
+
source: string;
|
|
58
|
+
/** Frontmatter fields deliberately left behind, if any. */
|
|
59
|
+
notAdopted?: string[];
|
|
60
|
+
}
|
|
61
|
+
/** What a directory of agent files yielded, and what it did not. */
|
|
62
|
+
export interface AgentDiscovery {
|
|
63
|
+
agents: RepoAgent[];
|
|
64
|
+
skipped: {
|
|
65
|
+
path: string;
|
|
66
|
+
why: string;
|
|
67
|
+
}[];
|
|
68
|
+
}
|
|
69
|
+
/** The prefix that keeps these out of the persona namespace. */
|
|
70
|
+
export declare const NAMESPACE = "repo:";
|
|
71
|
+
/**
|
|
72
|
+
* Read what a repo's agent files offer.
|
|
73
|
+
*
|
|
74
|
+
* Lenient where the persona reader is strict, and the difference is
|
|
75
|
+
* who asked. A persona is named in somebody's own config, so a
|
|
76
|
+
* malformed one is a mistake they want reported loudly. Nobody asked
|
|
77
|
+
* for these, so one malformed file in a repo this operator does not
|
|
78
|
+
* maintain must not refuse every round run against it.
|
|
79
|
+
*/
|
|
80
|
+
export declare function discoverAgents(files: AgentFile[], touched: readonly string[]): AgentDiscovery;
|