@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,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bounding an answer that already carries its own records.
|
|
3
|
+
*
|
|
4
|
+
* Several families hand their structured records to a result's
|
|
5
|
+
* details, because that is what their renderers draw from. Those
|
|
6
|
+
* records are exactly what a caller would query, so nothing new
|
|
7
|
+
* has to be gathered to keep the answer bounded: the view gets
|
|
8
|
+
* cut, and what it was rendered from gets stored.
|
|
9
|
+
*
|
|
10
|
+
* This is deliberately a heuristic over an interface. Retrofitting
|
|
11
|
+
* every handler in every family to declare its collection would be
|
|
12
|
+
* a hundred edit sites and a hundred chances to forget one,
|
|
13
|
+
* whereas the details are already there and already right.
|
|
14
|
+
*
|
|
15
|
+
* What the heuristic decides is only what to call the payload, not
|
|
16
|
+
* whether to keep one. It used to decide both, and a seam whose
|
|
17
|
+
* shape it did not recognize returned its answer whole at any
|
|
18
|
+
* length: a family whose rows nest under a listing key had nothing
|
|
19
|
+
* at the top level that was an array, so the bounding never ran.
|
|
20
|
+
* The gate said that family was wired, because it was, and being
|
|
21
|
+
* wired turned out to be a different claim from working.
|
|
22
|
+
*
|
|
23
|
+
* The payload is now the whole details object rather than the one
|
|
24
|
+
* collection inside it. A document read renders its body and
|
|
25
|
+
* carries its comments alongside; storing only the comments cited
|
|
26
|
+
* the one part that had not been cut.
|
|
27
|
+
*/
|
|
28
|
+
import type { ResultStore } from "./store.js";
|
|
29
|
+
/** The records a details object carries, when it carries one set. */
|
|
30
|
+
export interface DetailRecords {
|
|
31
|
+
readonly items: readonly unknown[];
|
|
32
|
+
/** The key they arrived under, which is their name in the caller's words. */
|
|
33
|
+
readonly unit: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* The one collection in a details object, when there is exactly
|
|
37
|
+
* one.
|
|
38
|
+
*
|
|
39
|
+
* List-shaped answers carry a single collection: messages, files,
|
|
40
|
+
* events, locations. Single-subject answers carry none: one
|
|
41
|
+
* channel, one user, one document. Anything with two collections
|
|
42
|
+
* is ambiguous and left alone, because citing the wrong one points
|
|
43
|
+
* a caller's query at a shape that is not there, and a query that
|
|
44
|
+
* silently matches nothing is worse than no handle at all.
|
|
45
|
+
*
|
|
46
|
+
* An empty collection is also nothing to cite. There is no detail
|
|
47
|
+
* behind an answer that found nothing.
|
|
48
|
+
*/
|
|
49
|
+
export declare function recordsIn(details: unknown): DetailRecords | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* Bound a rendered answer, citing the records behind it.
|
|
52
|
+
*
|
|
53
|
+
* The narrowing advice is the caller's to supply, because every
|
|
54
|
+
* family narrows differently and advice that names a parameter the
|
|
55
|
+
* tool does not have costs a call to disprove.
|
|
56
|
+
*/
|
|
57
|
+
export declare function boundedByDetails(store: ResultStore, answer: {
|
|
58
|
+
text: string;
|
|
59
|
+
details: unknown;
|
|
60
|
+
narrowing: string;
|
|
61
|
+
}): string;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bounding an answer that already carries its own records.
|
|
3
|
+
*
|
|
4
|
+
* Several families hand their structured records to a result's
|
|
5
|
+
* details, because that is what their renderers draw from. Those
|
|
6
|
+
* records are exactly what a caller would query, so nothing new
|
|
7
|
+
* has to be gathered to keep the answer bounded: the view gets
|
|
8
|
+
* cut, and what it was rendered from gets stored.
|
|
9
|
+
*
|
|
10
|
+
* This is deliberately a heuristic over an interface. Retrofitting
|
|
11
|
+
* every handler in every family to declare its collection would be
|
|
12
|
+
* a hundred edit sites and a hundred chances to forget one,
|
|
13
|
+
* whereas the details are already there and already right.
|
|
14
|
+
*
|
|
15
|
+
* What the heuristic decides is only what to call the payload, not
|
|
16
|
+
* whether to keep one. It used to decide both, and a seam whose
|
|
17
|
+
* shape it did not recognize returned its answer whole at any
|
|
18
|
+
* length: a family whose rows nest under a listing key had nothing
|
|
19
|
+
* at the top level that was an array, so the bounding never ran.
|
|
20
|
+
* The gate said that family was wired, because it was, and being
|
|
21
|
+
* wired turned out to be a different claim from working.
|
|
22
|
+
*
|
|
23
|
+
* The payload is now the whole details object rather than the one
|
|
24
|
+
* collection inside it. A document read renders its body and
|
|
25
|
+
* carries its comments alongside; storing only the comments cited
|
|
26
|
+
* the one part that had not been cut.
|
|
27
|
+
*/
|
|
28
|
+
import { cite } from "./cite.js";
|
|
29
|
+
import { count } from "./counts.js";
|
|
30
|
+
import { citeListing, LISTING_BUDGET_BYTES } from "./listing.js";
|
|
31
|
+
import { withinLineBudget } from "./view.js";
|
|
32
|
+
/**
|
|
33
|
+
* The one collection in a details object, when there is exactly
|
|
34
|
+
* one.
|
|
35
|
+
*
|
|
36
|
+
* List-shaped answers carry a single collection: messages, files,
|
|
37
|
+
* events, locations. Single-subject answers carry none: one
|
|
38
|
+
* channel, one user, one document. Anything with two collections
|
|
39
|
+
* is ambiguous and left alone, because citing the wrong one points
|
|
40
|
+
* a caller's query at a shape that is not there, and a query that
|
|
41
|
+
* silently matches nothing is worse than no handle at all.
|
|
42
|
+
*
|
|
43
|
+
* An empty collection is also nothing to cite. There is no detail
|
|
44
|
+
* behind an answer that found nothing.
|
|
45
|
+
*/
|
|
46
|
+
export function recordsIn(details) {
|
|
47
|
+
if (typeof details !== "object" || details === null)
|
|
48
|
+
return undefined;
|
|
49
|
+
const arrays = Object.entries(details).filter(([, value]) => Array.isArray(value));
|
|
50
|
+
if (arrays.length !== 1)
|
|
51
|
+
return undefined;
|
|
52
|
+
const [unit, items] = arrays[0];
|
|
53
|
+
if (items.length === 0)
|
|
54
|
+
return undefined;
|
|
55
|
+
return { items, unit };
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Bound a rendered answer, citing the records behind it.
|
|
59
|
+
*
|
|
60
|
+
* The narrowing advice is the caller's to supply, because every
|
|
61
|
+
* family narrows differently and advice that names a parameter the
|
|
62
|
+
* tool does not have costs a call to disprove.
|
|
63
|
+
*/
|
|
64
|
+
export function boundedByDetails(store, answer) {
|
|
65
|
+
const records = recordsIn(answer.details);
|
|
66
|
+
if (records !== undefined && rendersTheRecords(answer.details)) {
|
|
67
|
+
return citeListing(store, {
|
|
68
|
+
view: answer.text,
|
|
69
|
+
records: records.items,
|
|
70
|
+
unit: records.unit,
|
|
71
|
+
narrowing: answer.narrowing,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
return citeWhole(store, answer, records);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Whether the details are the collection, rather than carrying one
|
|
78
|
+
* among other things.
|
|
79
|
+
*
|
|
80
|
+
* A listing's details are its records and the paging around them.
|
|
81
|
+
* A document's details are a file, its body and its comments, and
|
|
82
|
+
* the comments are not what the view rendered. Only the first can
|
|
83
|
+
* be cited as though the collection were the answer.
|
|
84
|
+
*/
|
|
85
|
+
function rendersTheRecords(details) {
|
|
86
|
+
if (typeof details !== "object" || details === null)
|
|
87
|
+
return false;
|
|
88
|
+
return Object.values(details).every((value) => Array.isArray(value) || typeof value !== "object");
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Bound the view and keep everything behind it.
|
|
92
|
+
*
|
|
93
|
+
* Used where the records cannot be picked out with confidence.
|
|
94
|
+
* Keeping the whole details is the conservative choice: whatever
|
|
95
|
+
* the view was rendered from is somewhere in there, so the cut is
|
|
96
|
+
* recoverable even though the query has to start a level higher.
|
|
97
|
+
* When there is nothing structured at all, the rendering itself is
|
|
98
|
+
* what would be lost, so the rendering is what is kept.
|
|
99
|
+
*/
|
|
100
|
+
function citeWhole(store, answer, records) {
|
|
101
|
+
const bounded = withinLineBudget(answer.text, LISTING_BUDGET_BYTES);
|
|
102
|
+
if (bounded.cut === 0)
|
|
103
|
+
return bounded.text;
|
|
104
|
+
const hasDetails = typeof answer.details === "object" &&
|
|
105
|
+
answer.details !== null &&
|
|
106
|
+
Object.keys(answer.details).length > 0;
|
|
107
|
+
return cite(store, {
|
|
108
|
+
payload: hasDetails ? answer.details : answer.text,
|
|
109
|
+
view: `${bounded.text}\n\n` +
|
|
110
|
+
`Cut ${count(bounded.cut)} of ` +
|
|
111
|
+
`${count(bounded.total)} lines to fit the ` +
|
|
112
|
+
`${count(LISTING_BUDGET_BYTES)} byte budget. ` +
|
|
113
|
+
answer.narrowing,
|
|
114
|
+
shown: bounded.shown,
|
|
115
|
+
total: bounded.total,
|
|
116
|
+
unit: "lines",
|
|
117
|
+
stored: records
|
|
118
|
+
? { count: records.items.length, unit: records.unit }
|
|
119
|
+
: { unit: hasDetails ? "result detail" : "rendered answer" },
|
|
120
|
+
}).text;
|
|
121
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Saying what a payload is shaped like, in a few hundred bytes.
|
|
3
|
+
*
|
|
4
|
+
* A handle on its own is a locked door: the caller knows the
|
|
5
|
+
* payload exists but not what to ask it. A digest is the label on
|
|
6
|
+
* the door, and it has to stay small whether it describes ten
|
|
7
|
+
* records or ten million, so every dimension that could grow with
|
|
8
|
+
* the input is bounded independently: depth, keys per object,
|
|
9
|
+
* elements profiled, and the final byte count.
|
|
10
|
+
*
|
|
11
|
+
* What it deliberately does not do is sample. A field's value
|
|
12
|
+
* profile is either over the whole array or replaced by the
|
|
13
|
+
* length and a first-element shape, never a partial scan
|
|
14
|
+
* presented as a total, because a caller who queries on the
|
|
15
|
+
* strength of a wrong profile has been misled by the thing meant
|
|
16
|
+
* to orient them.
|
|
17
|
+
*/
|
|
18
|
+
/** Budgets that keep a summary bounded regardless of the input's size. */
|
|
19
|
+
export interface JsonSummaryOptions {
|
|
20
|
+
maxKeys?: number;
|
|
21
|
+
maxDepth?: number;
|
|
22
|
+
maxBytes?: number;
|
|
23
|
+
maxElements?: number;
|
|
24
|
+
/** Render the shape across indented lines instead of one compact line. */
|
|
25
|
+
pretty?: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Render a bounded structural summary of a parsed JSON value.
|
|
29
|
+
*
|
|
30
|
+
* An object becomes its keys mapped to value profiles, an array of objects
|
|
31
|
+
* becomes its length plus a per-key value-frequency profile, and a scalar
|
|
32
|
+
* becomes its type. Recursion stops at `maxDepth`, only `maxKeys` keys are shown
|
|
33
|
+
* before the rest are counted, arrays past `maxElements` degrade to a sample so
|
|
34
|
+
* the walk stays bounded, and the whole string is capped at `maxBytes`. With
|
|
35
|
+
* `pretty` the same shape is laid out across indented lines for a human to read.
|
|
36
|
+
*/
|
|
37
|
+
export declare function summarizeJson(value: unknown, opts?: JsonSummaryOptions): string;
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Saying what a payload is shaped like, in a few hundred bytes.
|
|
3
|
+
*
|
|
4
|
+
* A handle on its own is a locked door: the caller knows the
|
|
5
|
+
* payload exists but not what to ask it. A digest is the label on
|
|
6
|
+
* the door, and it has to stay small whether it describes ten
|
|
7
|
+
* records or ten million, so every dimension that could grow with
|
|
8
|
+
* the input is bounded independently: depth, keys per object,
|
|
9
|
+
* elements profiled, and the final byte count.
|
|
10
|
+
*
|
|
11
|
+
* What it deliberately does not do is sample. A field's value
|
|
12
|
+
* profile is either over the whole array or replaced by the
|
|
13
|
+
* length and a first-element shape, never a partial scan
|
|
14
|
+
* presented as a total, because a caller who queries on the
|
|
15
|
+
* strength of a wrong profile has been misled by the thing meant
|
|
16
|
+
* to orient them.
|
|
17
|
+
*/
|
|
18
|
+
const DEFAULT_MAX_KEYS = 40;
|
|
19
|
+
const DEFAULT_MAX_DEPTH = 3;
|
|
20
|
+
const DEFAULT_MAX_BYTES = 6000;
|
|
21
|
+
// The pretty form spends bytes on newlines and indentation, so it gets a larger
|
|
22
|
+
// cap: it is a terminal-only view a human reads on demand, never model context.
|
|
23
|
+
const DEFAULT_PRETTY_MAX_BYTES = 20000;
|
|
24
|
+
// Above this many array elements the profile stops tallying values and falls
|
|
25
|
+
// back to a first-element sample. Tallying is linear in element count, so this
|
|
26
|
+
// keeps the walk bounded no matter how large the parsed payload is, and it means
|
|
27
|
+
// a reported value count is always over the whole array, never a partial scan
|
|
28
|
+
// dressed up as exact. Every realistic result sits far below it.
|
|
29
|
+
const DEFAULT_MAX_ELEMENTS = 20000;
|
|
30
|
+
// How a profiled field's values are rendered: at most this many distinct values
|
|
31
|
+
// listed before folding the rest into a "(+N more)" tail, and above the high
|
|
32
|
+
// cardinality cutoff no values are listed at all, only the type and the distinct
|
|
33
|
+
// count, so an id-like field opts itself out instead of listing noise. Long
|
|
34
|
+
// scalar values are clipped so one value cannot dominate the summary.
|
|
35
|
+
const TOP_VALUES = 6;
|
|
36
|
+
const HIGH_CARDINALITY = 50;
|
|
37
|
+
const MAX_VALUE_LEN = 24;
|
|
38
|
+
/**
|
|
39
|
+
* Render a bounded structural summary of a parsed JSON value.
|
|
40
|
+
*
|
|
41
|
+
* An object becomes its keys mapped to value profiles, an array of objects
|
|
42
|
+
* becomes its length plus a per-key value-frequency profile, and a scalar
|
|
43
|
+
* becomes its type. Recursion stops at `maxDepth`, only `maxKeys` keys are shown
|
|
44
|
+
* before the rest are counted, arrays past `maxElements` degrade to a sample so
|
|
45
|
+
* the walk stays bounded, and the whole string is capped at `maxBytes`. With
|
|
46
|
+
* `pretty` the same shape is laid out across indented lines for a human to read.
|
|
47
|
+
*/
|
|
48
|
+
export function summarizeJson(value, opts = {}) {
|
|
49
|
+
const maxKeys = opts.maxKeys ?? DEFAULT_MAX_KEYS;
|
|
50
|
+
const maxDepth = opts.maxDepth ?? DEFAULT_MAX_DEPTH;
|
|
51
|
+
const maxElements = opts.maxElements ?? DEFAULT_MAX_ELEMENTS;
|
|
52
|
+
const pretty = opts.pretty ?? false;
|
|
53
|
+
const maxBytes = opts.maxBytes ?? (pretty ? DEFAULT_PRETTY_MAX_BYTES : DEFAULT_MAX_BYTES);
|
|
54
|
+
return capBytes(describe(value, 0, maxDepth, maxKeys, maxElements, pretty), maxBytes);
|
|
55
|
+
}
|
|
56
|
+
/** The indentation for a given nesting depth in the pretty layout. */
|
|
57
|
+
function pad(depth) {
|
|
58
|
+
return " ".repeat(depth);
|
|
59
|
+
}
|
|
60
|
+
function describe(value, depth, maxDepth, maxKeys, maxElements, pretty) {
|
|
61
|
+
if (value === null)
|
|
62
|
+
return "null";
|
|
63
|
+
if (Array.isArray(value))
|
|
64
|
+
return describeArray(value, depth, maxDepth, maxKeys, maxElements, pretty);
|
|
65
|
+
if (typeof value === "object")
|
|
66
|
+
return describeObject(value, depth, maxDepth, maxKeys, maxElements, pretty);
|
|
67
|
+
if (typeof value === "string")
|
|
68
|
+
return `string(${value.length})`;
|
|
69
|
+
return typeof value;
|
|
70
|
+
}
|
|
71
|
+
function describeArray(value, depth, maxDepth, maxKeys, maxElements, pretty) {
|
|
72
|
+
if (value.length === 0)
|
|
73
|
+
return "array(0)";
|
|
74
|
+
if (depth >= maxDepth)
|
|
75
|
+
return `array(${value.length})`;
|
|
76
|
+
// Past the element bound, sample the first element instead of tallying: the
|
|
77
|
+
// count is too large to profile without an unbounded walk, so show the shape
|
|
78
|
+
// and let the handle carry the detail a query can pull.
|
|
79
|
+
if (value.length > maxElements) {
|
|
80
|
+
const first = describe(value[0], depth + 1, maxDepth, maxKeys, maxElements, pretty);
|
|
81
|
+
return `array(${value.length}, first=${first})`;
|
|
82
|
+
}
|
|
83
|
+
if (value.every(isScalar))
|
|
84
|
+
return `array(${value.length}) of ${profileScalars(value)}`;
|
|
85
|
+
if (value.every(isPlainObject))
|
|
86
|
+
return `array(${value.length}) of {${profileObjectArray(value, depth, maxKeys, pretty)}}`;
|
|
87
|
+
const first = describe(value[0], depth + 1, maxDepth, maxKeys, maxElements, pretty);
|
|
88
|
+
return `array(${value.length}, first=${first})`;
|
|
89
|
+
}
|
|
90
|
+
/** A JSON scalar for profiling: a primitive or null, never an object or array. */
|
|
91
|
+
function isScalar(value) {
|
|
92
|
+
return value === null || typeof value !== "object";
|
|
93
|
+
}
|
|
94
|
+
/** A plain (non-array) object, the shape the object-array profile expects. */
|
|
95
|
+
function isPlainObject(value) {
|
|
96
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
97
|
+
}
|
|
98
|
+
/** Profile an array of objects: each key mapped to a profile of its values. */
|
|
99
|
+
function profileObjectArray(rows, depth, maxKeys, pretty) {
|
|
100
|
+
const keys = [];
|
|
101
|
+
const seen = new Set();
|
|
102
|
+
for (const row of rows)
|
|
103
|
+
for (const key of Object.keys(row))
|
|
104
|
+
if (!seen.has(key)) {
|
|
105
|
+
seen.add(key);
|
|
106
|
+
keys.push(key);
|
|
107
|
+
}
|
|
108
|
+
const shown = keys.slice(0, maxKeys);
|
|
109
|
+
const parts = shown.map((key) => {
|
|
110
|
+
const values = rows
|
|
111
|
+
.map((row) => row[key])
|
|
112
|
+
.filter((v) => v !== undefined);
|
|
113
|
+
return `${key}: ${describeField(values, rows.length)}`;
|
|
114
|
+
});
|
|
115
|
+
const rest = keys.length - shown.length;
|
|
116
|
+
if (rest > 0)
|
|
117
|
+
parts.push(`(+${rest} more)`);
|
|
118
|
+
return joinEntries(parts, depth, pretty);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Profile a field, saying so when it is missing rather than saying
|
|
122
|
+
* nothing.
|
|
123
|
+
*
|
|
124
|
+
* A field can appear in the key set and hold a value on no record at
|
|
125
|
+
* all, and profiling only the values that exist then produced an
|
|
126
|
+
* empty string: "threadTs: " followed by the next field. A reader
|
|
127
|
+
* cannot tell from that whether the field is empty, absent, or a
|
|
128
|
+
* rendering fault, and it looks most like the last one. Real Slack
|
|
129
|
+
* data is where it showed up, since a message outside a thread
|
|
130
|
+
* carries neither a thread timestamp nor a reply count.
|
|
131
|
+
*
|
|
132
|
+
* Partial absence is worth the same honesty: a field carried by
|
|
133
|
+
* half the records is a different shape from one carried by all of
|
|
134
|
+
* them, and a query written against the first will come back
|
|
135
|
+
* shorter than expected for a reason the digest could have named.
|
|
136
|
+
*/
|
|
137
|
+
function describeField(values, rows) {
|
|
138
|
+
if (values.length === 0)
|
|
139
|
+
return `absent on all ${rows}`;
|
|
140
|
+
const missing = rows - values.length;
|
|
141
|
+
const profile = profileField(values);
|
|
142
|
+
return missing > 0 ? `${profile}, absent×${missing}` : profile;
|
|
143
|
+
}
|
|
144
|
+
/** Profile one field's collected values: scalars by frequency, else by type. */
|
|
145
|
+
function profileField(values) {
|
|
146
|
+
if (values.every(isScalar))
|
|
147
|
+
return profileScalars(values);
|
|
148
|
+
if (values.every(isPlainObject))
|
|
149
|
+
return "object";
|
|
150
|
+
if (values.every(Array.isArray))
|
|
151
|
+
return "array";
|
|
152
|
+
return "mixed";
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Profile a list of scalar values by frequency. Below the cardinality cutoff the
|
|
156
|
+
* most common values are listed with their counts; above it only the type and
|
|
157
|
+
* the distinct count are shown so a high-cardinality field stays compact.
|
|
158
|
+
*/
|
|
159
|
+
function profileScalars(values) {
|
|
160
|
+
const counts = new Map();
|
|
161
|
+
for (const value of values) {
|
|
162
|
+
const key = JSON.stringify(value) ?? "null";
|
|
163
|
+
const entry = counts.get(key);
|
|
164
|
+
if (entry)
|
|
165
|
+
entry.count++;
|
|
166
|
+
else
|
|
167
|
+
counts.set(key, { value, count: 1 });
|
|
168
|
+
}
|
|
169
|
+
if (counts.size > HIGH_CARDINALITY)
|
|
170
|
+
return `${scalarType(values)} (${counts.size} distinct)`;
|
|
171
|
+
const ranked = [...counts.values()].sort((a, b) => b.count - a.count);
|
|
172
|
+
const listed = ranked
|
|
173
|
+
.slice(0, TOP_VALUES)
|
|
174
|
+
.map((e) => e.count > 1 ? `${display(e.value)}×${e.count}` : display(e.value))
|
|
175
|
+
.join(", ");
|
|
176
|
+
const rest = ranked.length - TOP_VALUES;
|
|
177
|
+
return rest > 0 ? `${listed}, (+${rest} more)` : listed;
|
|
178
|
+
}
|
|
179
|
+
/** The shared type name of a list of scalars, or "mixed" when they disagree. */
|
|
180
|
+
function scalarType(values) {
|
|
181
|
+
const types = new Set(values.map((v) => (v === null ? "null" : typeof v)));
|
|
182
|
+
return types.size === 1 ? [...types][0] : "mixed";
|
|
183
|
+
}
|
|
184
|
+
/** Render a scalar value for display, clipping a long string so it cannot dominate. */
|
|
185
|
+
function display(value) {
|
|
186
|
+
if (typeof value !== "string")
|
|
187
|
+
return String(value);
|
|
188
|
+
return value.length > MAX_VALUE_LEN
|
|
189
|
+
? `${value.slice(0, MAX_VALUE_LEN)}...`
|
|
190
|
+
: value;
|
|
191
|
+
}
|
|
192
|
+
function describeObject(value, depth, maxDepth, maxKeys, maxElements, pretty) {
|
|
193
|
+
const keys = Object.keys(value);
|
|
194
|
+
if (depth >= maxDepth)
|
|
195
|
+
return `object(${keys.length} keys)`;
|
|
196
|
+
const shown = keys.slice(0, maxKeys);
|
|
197
|
+
const parts = shown.map((key) => `${key}: ${describe(value[key], depth + 1, maxDepth, maxKeys, maxElements, pretty)}`);
|
|
198
|
+
const rest = keys.length - shown.length;
|
|
199
|
+
if (rest > 0)
|
|
200
|
+
parts.push(`(+${rest} more)`);
|
|
201
|
+
return `{${joinEntries(parts, depth, pretty)}}`;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Join the entries of an object or object-array profile. Compact form runs them
|
|
205
|
+
* on one line; pretty form puts each on its own indented line so a human can
|
|
206
|
+
* scan the shape, with the closing brace back at the parent's indentation.
|
|
207
|
+
*/
|
|
208
|
+
function joinEntries(parts, depth, pretty) {
|
|
209
|
+
if (!pretty)
|
|
210
|
+
return parts.join(", ");
|
|
211
|
+
if (parts.length === 0)
|
|
212
|
+
return "";
|
|
213
|
+
const inner = pad(depth + 1);
|
|
214
|
+
return `\n${parts.map((part) => inner + part).join("\n")}\n${pad(depth)}`;
|
|
215
|
+
}
|
|
216
|
+
/** Hard-cap a summary to `maxBytes`, cutting on a character boundary and marking the cut. */
|
|
217
|
+
function capBytes(text, maxBytes) {
|
|
218
|
+
const buf = Buffer.from(text, "utf-8");
|
|
219
|
+
if (buf.length <= maxBytes)
|
|
220
|
+
return text;
|
|
221
|
+
const marker = "...";
|
|
222
|
+
const budget = Math.max(0, maxBytes - marker.length);
|
|
223
|
+
let end = budget;
|
|
224
|
+
while (end > 0 && (buf[end] & 0xc0) === 0x80)
|
|
225
|
+
end--;
|
|
226
|
+
return buf.toString("utf-8", 0, end) + marker;
|
|
227
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether anything in this process can follow a handle.
|
|
3
|
+
*
|
|
4
|
+
* Every citation ends by telling the reader how to query the
|
|
5
|
+
* handle. That capability comes from one consumer of this library,
|
|
6
|
+
* and the consumers that mint handles are others, each loadable on
|
|
7
|
+
* their own. Load a browser tool without a query tool and every
|
|
8
|
+
* citation names a tool that is not there, which is worse than a
|
|
9
|
+
* long answer: the reader is told the rest of the data is one call
|
|
10
|
+
* away and the call does not exist.
|
|
11
|
+
*
|
|
12
|
+
* Kept on globalThis rather than in a module variable, because a
|
|
13
|
+
* module variable is not process-global when a host loads each
|
|
14
|
+
* consumer as its own module instance (pi loads each extension
|
|
15
|
+
* separately, for one). The symbol-keyed slot is the same
|
|
16
|
+
* mechanism the other registries in this package use for the same
|
|
17
|
+
* reason, and it also survives a module reimport.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Declare that a tool in this process can follow handles.
|
|
21
|
+
*
|
|
22
|
+
* Called by whichever consumer registers the query tool, on
|
|
23
|
+
* activation. Idempotent.
|
|
24
|
+
*/
|
|
25
|
+
export declare function offerQueryTool(name: string): void;
|
|
26
|
+
/** Withdraw the offer, when the consumer goes away or a test ends. */
|
|
27
|
+
export declare function withdrawQueryTool(): void;
|
|
28
|
+
/** The tool a citation should name, or undefined when there is none. */
|
|
29
|
+
export declare function queryTool(): string | undefined;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether anything in this process can follow a handle.
|
|
3
|
+
*
|
|
4
|
+
* Every citation ends by telling the reader how to query the
|
|
5
|
+
* handle. That capability comes from one consumer of this library,
|
|
6
|
+
* and the consumers that mint handles are others, each loadable on
|
|
7
|
+
* their own. Load a browser tool without a query tool and every
|
|
8
|
+
* citation names a tool that is not there, which is worse than a
|
|
9
|
+
* long answer: the reader is told the rest of the data is one call
|
|
10
|
+
* away and the call does not exist.
|
|
11
|
+
*
|
|
12
|
+
* Kept on globalThis rather than in a module variable, because a
|
|
13
|
+
* module variable is not process-global when a host loads each
|
|
14
|
+
* consumer as its own module instance (pi loads each extension
|
|
15
|
+
* separately, for one). The symbol-keyed slot is the same
|
|
16
|
+
* mechanism the other registries in this package use for the same
|
|
17
|
+
* reason, and it also survives a module reimport.
|
|
18
|
+
*/
|
|
19
|
+
/** Where the offer lives, shared by every copy of this module. */
|
|
20
|
+
const SLOT = Symbol.for("pi:agentic-harness:result-query-tool");
|
|
21
|
+
/**
|
|
22
|
+
* Declare that a tool in this process can follow handles.
|
|
23
|
+
*
|
|
24
|
+
* Called by whichever consumer registers the query tool, on
|
|
25
|
+
* activation. Idempotent.
|
|
26
|
+
*/
|
|
27
|
+
export function offerQueryTool(name) {
|
|
28
|
+
globalThis[SLOT] = name;
|
|
29
|
+
}
|
|
30
|
+
/** Withdraw the offer, when the consumer goes away or a test ends. */
|
|
31
|
+
export function withdrawQueryTool() {
|
|
32
|
+
globalThis[SLOT] = undefined;
|
|
33
|
+
}
|
|
34
|
+
/** The tool a citation should name, or undefined when there is none. */
|
|
35
|
+
export function queryTool() {
|
|
36
|
+
return globalThis[SLOT];
|
|
37
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool answers that are bounded without being lossy.
|
|
3
|
+
*
|
|
4
|
+
* A tool with a large payload has always had two bad options:
|
|
5
|
+
* spend the caller's context on all of it, or cut it and lose the
|
|
6
|
+
* part that mattered. This library is the third option. The
|
|
7
|
+
* payload goes to a session store under an opaque handle, the
|
|
8
|
+
* answer carries a bounded view and a digest of the shape, and one
|
|
9
|
+
* query language reaches everything that was not shown.
|
|
10
|
+
*
|
|
11
|
+
* The pieces are separate because they are useful separately: a
|
|
12
|
+
* family that already knows how to page its own lists needs only
|
|
13
|
+
* the store and the citation, while one holding a single large
|
|
14
|
+
* document needs the digest too.
|
|
15
|
+
*/
|
|
16
|
+
export { type Citable, type Cited, cite } from "./cite.js";
|
|
17
|
+
export { count } from "./counts.js";
|
|
18
|
+
export { boundedByDetails, type DetailRecords, recordsIn, } from "./details.js";
|
|
19
|
+
export { type JsonSummaryOptions, summarizeJson } from "./digest.js";
|
|
20
|
+
export { offerQueryTool, queryTool, withdrawQueryTool } from "./follow.js";
|
|
21
|
+
export { citeListing, LISTING_BUDGET_BYTES, type Listing, } from "./listing.js";
|
|
22
|
+
export { cleanupSessionResults, isPidAlive, openSessionStore, RESULT_ROOT, reapAbandonedResults, SESSION_QUOTA_BYTES, sessionResultDir, } from "./location.js";
|
|
23
|
+
export { DEFAULT_ANSWER_BYTES, DEFAULT_MAX_MATCHES, type QueryAnswer, type QueryOptions, queryStored, type TextBlock, } from "./query.js";
|
|
24
|
+
export { type SpilledPayload, spillText } from "./spill.js";
|
|
25
|
+
export { createResultStore, HandleExpiredError, MINTED_HANDLE_SHAPE, type ResultStore, type StoredResult, } from "./store.js";
|
|
26
|
+
export { type BudgetedView, withinLineBudget } from "./view.js";
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool answers that are bounded without being lossy.
|
|
3
|
+
*
|
|
4
|
+
* A tool with a large payload has always had two bad options:
|
|
5
|
+
* spend the caller's context on all of it, or cut it and lose the
|
|
6
|
+
* part that mattered. This library is the third option. The
|
|
7
|
+
* payload goes to a session store under an opaque handle, the
|
|
8
|
+
* answer carries a bounded view and a digest of the shape, and one
|
|
9
|
+
* query language reaches everything that was not shown.
|
|
10
|
+
*
|
|
11
|
+
* The pieces are separate because they are useful separately: a
|
|
12
|
+
* family that already knows how to page its own lists needs only
|
|
13
|
+
* the store and the citation, while one holding a single large
|
|
14
|
+
* document needs the digest too.
|
|
15
|
+
*/
|
|
16
|
+
export { cite } from "./cite.js";
|
|
17
|
+
export { count } from "./counts.js";
|
|
18
|
+
export { boundedByDetails, recordsIn, } from "./details.js";
|
|
19
|
+
export { summarizeJson } from "./digest.js";
|
|
20
|
+
export { offerQueryTool, queryTool, withdrawQueryTool } from "./follow.js";
|
|
21
|
+
export { citeListing, LISTING_BUDGET_BYTES, } from "./listing.js";
|
|
22
|
+
export { cleanupSessionResults, isPidAlive, openSessionStore, RESULT_ROOT, reapAbandonedResults, SESSION_QUOTA_BYTES, sessionResultDir, } from "./location.js";
|
|
23
|
+
export { DEFAULT_ANSWER_BYTES, DEFAULT_MAX_MATCHES, queryStored, } from "./query.js";
|
|
24
|
+
export { spillText } from "./spill.js";
|
|
25
|
+
export { createResultStore, HandleExpiredError, MINTED_HANDLE_SHAPE, } from "./store.js";
|
|
26
|
+
export { withinLineBudget } from "./view.js";
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A rendered listing, bounded for reading and stored for querying.
|
|
3
|
+
*
|
|
4
|
+
* Families render their own listings, and they should: a renderer
|
|
5
|
+
* that silently dropped rows would be lying in its own way.
|
|
6
|
+
* Bounding belongs here instead, at the point where the records
|
|
7
|
+
* are still to hand and can be kept.
|
|
8
|
+
*
|
|
9
|
+
* The counts in the citation are lines, because lines are what a
|
|
10
|
+
* reader can see and count for themselves. How many records those
|
|
11
|
+
* lines covered is not knowable from the text, and a citation
|
|
12
|
+
* nobody can check is a citation nobody should trust. What the
|
|
13
|
+
* payload actually holds is named separately, since a caller
|
|
14
|
+
* writing their first expression against lines when the payload
|
|
15
|
+
* holds records gets nothing back and no clue why.
|
|
16
|
+
*/
|
|
17
|
+
import type { ResultStore } from "./store.js";
|
|
18
|
+
/** What a rendered listing spends before the rest is stored. */
|
|
19
|
+
export declare const LISTING_BUDGET_BYTES = 8192;
|
|
20
|
+
/** A listing, and the records behind it. */
|
|
21
|
+
export interface Listing<T> {
|
|
22
|
+
/** The rendered view, however long it came out. */
|
|
23
|
+
readonly view: string;
|
|
24
|
+
/** The records the view was rendered from. */
|
|
25
|
+
readonly records: readonly T[];
|
|
26
|
+
/** What the records are, in the caller's words. */
|
|
27
|
+
readonly unit: string;
|
|
28
|
+
/** How to ask for less, in this kind's own vocabulary. */
|
|
29
|
+
readonly narrowing: string;
|
|
30
|
+
/**
|
|
31
|
+
* A line or two that must survive the cut.
|
|
32
|
+
*
|
|
33
|
+
* Some views end with the thing the caller needs in order to
|
|
34
|
+
* carry on: a cursor to read from next, a note that entries were
|
|
35
|
+
* dropped. Those sit at the end, which is exactly what a
|
|
36
|
+
* leading-lines budget removes, so the announcement stream lost
|
|
37
|
+
* its cursor and its overflow warning together and said nothing
|
|
38
|
+
* about either. Kept apart from the records because it is not a
|
|
39
|
+
* record, and appended after the cut rather than counted into it.
|
|
40
|
+
*/
|
|
41
|
+
readonly trailer?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Whether the view leaves records out on its own account.
|
|
44
|
+
*
|
|
45
|
+
* The budget is not the only thing that elides. An audit report
|
|
46
|
+
* lists five elements per rule and says "and 7,995 more", which
|
|
47
|
+
* fits any budget comfortably and is missing almost everything.
|
|
48
|
+
* Keying the citation on the cut alone meant the answer with the
|
|
49
|
+
* most left out was the one answer that offered no way to reach
|
|
50
|
+
* it.
|
|
51
|
+
*/
|
|
52
|
+
readonly elided?: boolean;
|
|
53
|
+
readonly budget?: number;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Bound a listing and cite its records when the view was cut.
|
|
57
|
+
*
|
|
58
|
+
* A listing that fits is returned untouched, with no citation and
|
|
59
|
+
* no advice: the view is the whole truth and saying more would be
|
|
60
|
+
* noise.
|
|
61
|
+
*/
|
|
62
|
+
export declare function citeListing<T>(store: ResultStore, listing: Listing<T>): string;
|