@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,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Running a command, as a dependency rather than an import.
|
|
3
|
+
*
|
|
4
|
+
* The whole surface is one type, one result shape and one helper that throws with
|
|
5
|
+
* the backend's own words. It is its own module because two libraries need it and
|
|
6
|
+
* neither owns it.
|
|
7
|
+
*/
|
|
8
|
+
export { type Exec, type ExecResult, type ProviderDeps, run, } from "./exec.js";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Running a command, as a dependency rather than an import.
|
|
3
|
+
*
|
|
4
|
+
* The whole surface is one type, one result shape and one helper that throws with
|
|
5
|
+
* the backend's own words. It is its own module because two libraries need it and
|
|
6
|
+
* neither owns it.
|
|
7
|
+
*/
|
|
8
|
+
export { run, } from "./exec.js";
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The generalized loop breaker. A gate blocks a violation set
|
|
3
|
+
* the first time it sees it, but relents if the identical set
|
|
4
|
+
* comes back, on the theory that an author who could not satisfy
|
|
5
|
+
* the rule after one specific, skill-grounded retry will not
|
|
6
|
+
* satisfy it on the next either. Relenting surfaces the
|
|
7
|
+
* violations to the human gate rather than trapping the author
|
|
8
|
+
* in a loop.
|
|
9
|
+
*
|
|
10
|
+
* The mechanism is domain-neutral: prose violations and section
|
|
11
|
+
* violations both flow through it, each supplying its own
|
|
12
|
+
* detection, its own block message and its own relent wording.
|
|
13
|
+
*/
|
|
14
|
+
/** A single convention violation that can be signed and gated. */
|
|
15
|
+
export interface Violation {
|
|
16
|
+
/** Which rule was broken (the signature's namespace). */
|
|
17
|
+
readonly kind: string;
|
|
18
|
+
/** The offending text, used in the signature and the message. */
|
|
19
|
+
readonly found: string;
|
|
20
|
+
}
|
|
21
|
+
/** allow: clean. block: first offence. relent: already blocked once. */
|
|
22
|
+
export type GateAction = "allow" | "block" | "relent";
|
|
23
|
+
/** The gate's verdict on one artifact. */
|
|
24
|
+
export interface GateDecision {
|
|
25
|
+
readonly action: GateAction;
|
|
26
|
+
/** Stable signature of this violation set, for the caller to persist. */
|
|
27
|
+
readonly signature: string;
|
|
28
|
+
/** Message for the AI (block) or the user (relent); empty when allowed. */
|
|
29
|
+
readonly message: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* A stable, order-independent signature of a violation set,
|
|
33
|
+
* scoped to the artifact it was found in. The found text is
|
|
34
|
+
* lower-cased so a recurrence that only changes case is still
|
|
35
|
+
* recognized as the same violation, and the artifact is folded
|
|
36
|
+
* in (as a hash) so the same violation shape in two different
|
|
37
|
+
* bodies signs differently. Without the artifact scope, every
|
|
38
|
+
* single-emdash body collapses to the signature `emdash:—`, so
|
|
39
|
+
* blocking one artifact would relent the next unrelated one on
|
|
40
|
+
* its first fire. The relent is meant to break a loop on the
|
|
41
|
+
* identical resubmission, not to wave through a fresh artifact
|
|
42
|
+
* that happens to share a violation shape.
|
|
43
|
+
*/
|
|
44
|
+
export declare function violationSignature(violations: Violation[], artifact?: string): string;
|
|
45
|
+
/**
|
|
46
|
+
* Decide whether to block, relent or allow a violation set given
|
|
47
|
+
* the signatures already blocked this session. format renders
|
|
48
|
+
* the block body; relentPrefix is prepended to that body when
|
|
49
|
+
* the gate relents, to explain why the violation is being let
|
|
50
|
+
* through.
|
|
51
|
+
*/
|
|
52
|
+
export declare function decideGate<T extends Violation>(violations: T[], priorSignatures: string[], format: (violations: T[]) => string, relentPrefix: string, artifact: string): GateDecision;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The generalized loop breaker. A gate blocks a violation set
|
|
3
|
+
* the first time it sees it, but relents if the identical set
|
|
4
|
+
* comes back, on the theory that an author who could not satisfy
|
|
5
|
+
* the rule after one specific, skill-grounded retry will not
|
|
6
|
+
* satisfy it on the next either. Relenting surfaces the
|
|
7
|
+
* violations to the human gate rather than trapping the author
|
|
8
|
+
* in a loop.
|
|
9
|
+
*
|
|
10
|
+
* The mechanism is domain-neutral: prose violations and section
|
|
11
|
+
* violations both flow through it, each supplying its own
|
|
12
|
+
* detection, its own block message and its own relent wording.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* A small, stable, non-cryptographic string hash (djb2). Used to
|
|
16
|
+
* fingerprint the artifact so the signature can be scoped to it
|
|
17
|
+
* without storing the whole body. A collision only ever causes a
|
|
18
|
+
* benign spurious relent, never a wrong block, so 32 bits is
|
|
19
|
+
* ample.
|
|
20
|
+
*/
|
|
21
|
+
function hashString(text) {
|
|
22
|
+
let hash = 5381;
|
|
23
|
+
for (let i = 0; i < text.length; i++) {
|
|
24
|
+
hash = (Math.imul(hash, 33) + text.charCodeAt(i)) | 0;
|
|
25
|
+
}
|
|
26
|
+
return (hash >>> 0).toString(36);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* A stable, order-independent signature of a violation set,
|
|
30
|
+
* scoped to the artifact it was found in. The found text is
|
|
31
|
+
* lower-cased so a recurrence that only changes case is still
|
|
32
|
+
* recognized as the same violation, and the artifact is folded
|
|
33
|
+
* in (as a hash) so the same violation shape in two different
|
|
34
|
+
* bodies signs differently. Without the artifact scope, every
|
|
35
|
+
* single-emdash body collapses to the signature `emdash:—`, so
|
|
36
|
+
* blocking one artifact would relent the next unrelated one on
|
|
37
|
+
* its first fire. The relent is meant to break a loop on the
|
|
38
|
+
* identical resubmission, not to wave through a fresh artifact
|
|
39
|
+
* that happens to share a violation shape.
|
|
40
|
+
*/
|
|
41
|
+
export function violationSignature(violations, artifact) {
|
|
42
|
+
const body = violations
|
|
43
|
+
.map((v) => `${v.kind}:${v.found.toLowerCase()}`)
|
|
44
|
+
.sort()
|
|
45
|
+
.join("|");
|
|
46
|
+
return artifact ? `${hashString(artifact)}#${body}` : body;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Decide whether to block, relent or allow a violation set given
|
|
50
|
+
* the signatures already blocked this session. format renders
|
|
51
|
+
* the block body; relentPrefix is prepended to that body when
|
|
52
|
+
* the gate relents, to explain why the violation is being let
|
|
53
|
+
* through.
|
|
54
|
+
*/
|
|
55
|
+
export function decideGate(violations, priorSignatures, format, relentPrefix, artifact) {
|
|
56
|
+
if (violations.length === 0) {
|
|
57
|
+
return { action: "allow", signature: "", message: "" };
|
|
58
|
+
}
|
|
59
|
+
const signature = violationSignature(violations, artifact);
|
|
60
|
+
if (priorSignatures.includes(signature)) {
|
|
61
|
+
return {
|
|
62
|
+
action: "relent",
|
|
63
|
+
signature,
|
|
64
|
+
message: relentPrefix + format(violations),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
return { action: "block", signature, message: format(violations) };
|
|
68
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The signature store contract a gate reads and writes. The
|
|
3
|
+
* loop breaker in decision.ts needs to know which violation
|
|
4
|
+
* signatures it has already blocked this session; this is the
|
|
5
|
+
* interface that supplies them, kept pure so the decision logic
|
|
6
|
+
* stays free of any session or runtime dependency. The
|
|
7
|
+
* session-backed implementation lives in lib/internal/gate.
|
|
8
|
+
*/
|
|
9
|
+
export interface GateDeps {
|
|
10
|
+
/** Every block signature recorded this session. */
|
|
11
|
+
readSignatures: () => string[];
|
|
12
|
+
/** Record a new block signature. */
|
|
13
|
+
persistSignature: (signature: string) => void;
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { decideGate, violationSignature, } from "./decision.js";
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git CLI violation detection: patterns that should be
|
|
3
|
+
* blocked before reaching guardians.
|
|
4
|
+
*
|
|
5
|
+
* - Amend ban: `git commit --amend` is blocked
|
|
6
|
+
* unconditionally (git-commit-convention skill).
|
|
7
|
+
* - Unquoted heredoc: `<<EOF` instead of `<<'EOF'`
|
|
8
|
+
* allows variable expansion that corrupts content
|
|
9
|
+
* (commit-format skill).
|
|
10
|
+
* - Compound commands: multiple guardable targets or
|
|
11
|
+
* state changes mixed with guardable commands are
|
|
12
|
+
* blocked so guardians can process each independently
|
|
13
|
+
* (commit-format skill).
|
|
14
|
+
*
|
|
15
|
+
* Every message here states the corrective action itself. They
|
|
16
|
+
* used to end by naming a skill to go and read, which is only
|
|
17
|
+
* actionable while that skill is loaded, and one of them named a
|
|
18
|
+
* skill whose worked example the next check blocked.
|
|
19
|
+
*
|
|
20
|
+
* The git add + git commit pattern is explicitly allowed
|
|
21
|
+
* because git add is a staging prefix, not a guardable target.
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* Block `git commit --amend` unconditionally. Amends
|
|
25
|
+
* rewrite history and are almost never the right choice
|
|
26
|
+
* when the agent can just make a new commit.
|
|
27
|
+
*/
|
|
28
|
+
export declare function detectAmendViolation(stripped: string): string | null;
|
|
29
|
+
/**
|
|
30
|
+
* Block `git commit` with an unquoted heredoc delimiter.
|
|
31
|
+
* Takes the stripped command (for git commit scoping) and
|
|
32
|
+
* the original (for heredoc operator validation).
|
|
33
|
+
*/
|
|
34
|
+
export declare function detectUnquotedCommitHeredoc(stripped: string, original: string): string | null;
|
|
35
|
+
/**
|
|
36
|
+
* Check whether a bash command chains multiple concerns that
|
|
37
|
+
* should be separate calls. Returns a block reason or null
|
|
38
|
+
* if the command is fine.
|
|
39
|
+
*/
|
|
40
|
+
export declare function detectCompoundViolation(stripped: string): string | null;
|
|
41
|
+
/**
|
|
42
|
+
* Run every git-cli check against a raw bash command. Returns the
|
|
43
|
+
* first violation's block reason, or null if the command is fine.
|
|
44
|
+
* The one entry point an adapter needs; the individual `detect*`
|
|
45
|
+
* functions stay exported for adapters that want finer control.
|
|
46
|
+
*/
|
|
47
|
+
export declare function checkGitCli(command: string): string | null;
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git CLI violation detection: patterns that should be
|
|
3
|
+
* blocked before reaching guardians.
|
|
4
|
+
*
|
|
5
|
+
* - Amend ban: `git commit --amend` is blocked
|
|
6
|
+
* unconditionally (git-commit-convention skill).
|
|
7
|
+
* - Unquoted heredoc: `<<EOF` instead of `<<'EOF'`
|
|
8
|
+
* allows variable expansion that corrupts content
|
|
9
|
+
* (commit-format skill).
|
|
10
|
+
* - Compound commands: multiple guardable targets or
|
|
11
|
+
* state changes mixed with guardable commands are
|
|
12
|
+
* blocked so guardians can process each independently
|
|
13
|
+
* (commit-format skill).
|
|
14
|
+
*
|
|
15
|
+
* Every message here states the corrective action itself. They
|
|
16
|
+
* used to end by naming a skill to go and read, which is only
|
|
17
|
+
* actionable while that skill is loaded, and one of them named a
|
|
18
|
+
* skill whose worked example the next check blocked.
|
|
19
|
+
*
|
|
20
|
+
* The git add + git commit pattern is explicitly allowed
|
|
21
|
+
* because git add is a staging prefix, not a guardable target.
|
|
22
|
+
*/
|
|
23
|
+
import { hasUnquotedHeredoc, stripHeredocBodies, stripShellData, } from "../shell/parse.js";
|
|
24
|
+
/** Commands that guardians intercept and may rewrite. */
|
|
25
|
+
const GUARDABLE_PATTERNS = [
|
|
26
|
+
/\bgit\s+commit\b/,
|
|
27
|
+
/\bgh\s+pr\s+(?:create|edit)\b/,
|
|
28
|
+
/\bgh\s+issue\s+(?:create|edit)\b/,
|
|
29
|
+
];
|
|
30
|
+
/**
|
|
31
|
+
* Git state changes that shouldn't be chained with guardable
|
|
32
|
+
* commands. These alter repo state in ways the subsequent
|
|
33
|
+
* command depends on, and a guardian rewrite could drop them.
|
|
34
|
+
*/
|
|
35
|
+
const STATE_CHANGE_PATTERNS = [
|
|
36
|
+
/\bgit\s+push\b/,
|
|
37
|
+
/\bgit\s+checkout\b/,
|
|
38
|
+
/\bgit\s+switch\b/,
|
|
39
|
+
/\bgit\s+pull\b/,
|
|
40
|
+
/\bgit\s+merge\b/,
|
|
41
|
+
/\bgit\s+rebase\b/,
|
|
42
|
+
/\bgit\s+reset\b/,
|
|
43
|
+
/\bgit\s+stash\b/,
|
|
44
|
+
/\bgit\s+fetch\b/,
|
|
45
|
+
];
|
|
46
|
+
/** Shell separators that divide independent commands. */
|
|
47
|
+
const SEPARATOR = /\s*(?:&&|;|\n)\s*/;
|
|
48
|
+
/**
|
|
49
|
+
* Block `git commit --amend` unconditionally. Amends
|
|
50
|
+
* rewrite history and are almost never the right choice
|
|
51
|
+
* when the agent can just make a new commit.
|
|
52
|
+
*/
|
|
53
|
+
export function detectAmendViolation(stripped) {
|
|
54
|
+
if (/\bgit\s+commit\b/.test(stripped) && /--amend\b/.test(stripped)) {
|
|
55
|
+
return ("Blocked: --amend is not allowed. Make a new commit " +
|
|
56
|
+
"instead.\n\n" +
|
|
57
|
+
"Amending rewrites history and is almost never necessary. " +
|
|
58
|
+
"A new commit is cleaner and preserves the work trail.");
|
|
59
|
+
}
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Block `git commit` with an unquoted heredoc delimiter.
|
|
64
|
+
* Takes the stripped command (for git commit scoping) and
|
|
65
|
+
* the original (for heredoc operator validation).
|
|
66
|
+
*/
|
|
67
|
+
export function detectUnquotedCommitHeredoc(stripped, original) {
|
|
68
|
+
if (!/\bgit\s+commit\b/.test(stripped))
|
|
69
|
+
return null;
|
|
70
|
+
if (!hasUnquotedHeredoc(original))
|
|
71
|
+
return null;
|
|
72
|
+
return ("Blocked: heredoc uses an unquoted delimiter (e.g. " +
|
|
73
|
+
"`<<EOF`), which allows shell variable expansion. " +
|
|
74
|
+
"Use a quoted delimiter (`<<'EOF'`) to prevent " +
|
|
75
|
+
"`$variable` and backtick expansion from corrupting " +
|
|
76
|
+
"the commit message:\n\n" +
|
|
77
|
+
"git commit -F- <<'EOF'\n" +
|
|
78
|
+
"type(scope): subject\n\nWhy, not what.\nEOF");
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Check whether a bash command chains multiple concerns that
|
|
82
|
+
* should be separate calls. Returns a block reason or null
|
|
83
|
+
* if the command is fine.
|
|
84
|
+
*/
|
|
85
|
+
export function detectCompoundViolation(stripped) {
|
|
86
|
+
const segments = stripped.split(SEPARATOR).filter(Boolean);
|
|
87
|
+
if (segments.length < 2)
|
|
88
|
+
return null;
|
|
89
|
+
let guardableCount = 0;
|
|
90
|
+
let stateChangeCount = 0;
|
|
91
|
+
for (const segment of segments) {
|
|
92
|
+
const trimmed = segment.trim();
|
|
93
|
+
if (GUARDABLE_PATTERNS.some((p) => p.test(trimmed))) {
|
|
94
|
+
guardableCount++;
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
if (STATE_CHANGE_PATTERNS.some((p) => p.test(trimmed))) {
|
|
98
|
+
stateChangeCount++;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (guardableCount > 1) {
|
|
102
|
+
return ("Blocked: multiple guardable commands in one bash call. " +
|
|
103
|
+
"Each git commit, gh pr create/edit and gh issue create/edit " +
|
|
104
|
+
"must be its own bash call so guardians can review them " +
|
|
105
|
+
"independently. Retry with one command per bash call.");
|
|
106
|
+
}
|
|
107
|
+
if (guardableCount > 0 && stateChangeCount > 0) {
|
|
108
|
+
return ("Blocked: git state change chained with a guardable command. " +
|
|
109
|
+
"Commands like git push, git checkout and git pull must be " +
|
|
110
|
+
"separate bash calls from git commit, gh pr create/edit and " +
|
|
111
|
+
"gh issue create/edit. Retry with one command per bash call.");
|
|
112
|
+
}
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Run every git-cli check against a raw bash command. Returns the
|
|
117
|
+
* first violation's block reason, or null if the command is fine.
|
|
118
|
+
* The one entry point an adapter needs; the individual `detect*`
|
|
119
|
+
* functions stay exported for adapters that want finer control.
|
|
120
|
+
*/
|
|
121
|
+
export function checkGitCli(command) {
|
|
122
|
+
const stripped = stripShellData(stripHeredocBodies(command));
|
|
123
|
+
return (detectAmendViolation(stripped) ??
|
|
124
|
+
detectUnquotedCommitHeredoc(stripped, command) ??
|
|
125
|
+
detectCompoundViolation(stripped) ??
|
|
126
|
+
null);
|
|
127
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flag specs for the gh commands this package understands, defined
|
|
3
|
+
* once in the domain that owns them and imported wherever a
|
|
4
|
+
* consumer needs to read a gh flag (attribution, the interceptor).
|
|
5
|
+
* The generic command model ships no flag tables; callers pass
|
|
6
|
+
* these in.
|
|
7
|
+
*/
|
|
8
|
+
import type { FlagSpec } from "../command/index.js";
|
|
9
|
+
/**
|
|
10
|
+
* The body flags of gh pr/issue create and edit: the inline body
|
|
11
|
+
* (--body, -b) and the body file (--body-file, -F), in both their
|
|
12
|
+
* long and short forms.
|
|
13
|
+
*/
|
|
14
|
+
export declare const GH_BODY_SPEC: FlagSpec;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flag specs for the gh commands this package understands, defined
|
|
3
|
+
* once in the domain that owns them and imported wherever a
|
|
4
|
+
* consumer needs to read a gh flag (attribution, the interceptor).
|
|
5
|
+
* The generic command model ships no flag tables; callers pass
|
|
6
|
+
* these in.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* The body flags of gh pr/issue create and edit: the inline body
|
|
10
|
+
* (--body, -b) and the body file (--body-file, -F), in both their
|
|
11
|
+
* long and short forms.
|
|
12
|
+
*/
|
|
13
|
+
export const GH_BODY_SPEC = {
|
|
14
|
+
flags: [
|
|
15
|
+
{ name: "body", long: "body", short: "b", takesValue: true },
|
|
16
|
+
{ name: "body-file", long: "body-file", short: "F", takesValue: true },
|
|
17
|
+
],
|
|
18
|
+
};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detects gh pr/issue commands that violate the
|
|
3
|
+
* github-cli-convention skill's formatting rules.
|
|
4
|
+
*
|
|
5
|
+
* The convention requires heredoc syntax (--body-file -)
|
|
6
|
+
* with a quoted delimiter for body content, and metadata
|
|
7
|
+
* assignment in separate commands after creation.
|
|
8
|
+
*/
|
|
9
|
+
export { GH_BODY_SPEC } from "./command-spec.js";
|
|
10
|
+
/**
|
|
11
|
+
* Check whether a gh command uses --body instead of
|
|
12
|
+
* --body-file with heredoc. Returns a block reason or
|
|
13
|
+
* null if the command is fine.
|
|
14
|
+
*/
|
|
15
|
+
export declare function detectInlineBody(command: string): string | null;
|
|
16
|
+
/**
|
|
17
|
+
* Refuse `gh pr merge --delete-branch`.
|
|
18
|
+
*
|
|
19
|
+
* The flag deletes the branch through a separate API call, and GitHub auto-closes
|
|
20
|
+
* every open PR that used it as a base. Those cannot be reopened, so a stacked PR
|
|
21
|
+
* merged this way destroys the rest of the stack with no way back. The flag saves one
|
|
22
|
+
* command and the failure is unrecoverable, which is the trade a gate exists for.
|
|
23
|
+
*
|
|
24
|
+
* Blocked whether or not anything is stacked on it, because the interceptor cannot
|
|
25
|
+
* know that from the command, and the safe sequence costs one extra call. This rule
|
|
26
|
+
* used to live in a skill, where it was correct and unenforced.
|
|
27
|
+
*/
|
|
28
|
+
export declare function detectDeleteBranchOnMerge(command: string): string | null;
|
|
29
|
+
/**
|
|
30
|
+
* Check whether a gh create command packs metadata flags
|
|
31
|
+
* that should be in separate edit commands. Returns a block
|
|
32
|
+
* reason or null if the command is fine.
|
|
33
|
+
*/
|
|
34
|
+
export declare function detectPackedMetadata(command: string): string | null;
|
|
35
|
+
/**
|
|
36
|
+
* Check whether a gh command uses --body-file with a file
|
|
37
|
+
* path instead of stdin. The convention requires
|
|
38
|
+
* `--body-file -` piped from a heredoc, never a file path.
|
|
39
|
+
*/
|
|
40
|
+
export declare function detectBodyFilePath(command: string): string | null;
|
|
41
|
+
/**
|
|
42
|
+
* Check whether a gh command uses --body-file - but has no
|
|
43
|
+
* heredoc to feed it. Without a heredoc, the command hangs
|
|
44
|
+
* waiting for stdin.
|
|
45
|
+
*
|
|
46
|
+
* Takes both the stripped command (for gh scoping and
|
|
47
|
+
* --body-file detection) and the original (for heredoc
|
|
48
|
+
* presence, since stripping removes the operator).
|
|
49
|
+
*/
|
|
50
|
+
export declare function detectMissingHeredoc(stripped: string, original: string): string | null;
|
|
51
|
+
/**
|
|
52
|
+
* Check whether a gh command uses a heredoc with an unquoted
|
|
53
|
+
* delimiter. Unquoted delimiters allow shell variable expansion
|
|
54
|
+
* (`$variable`, backticks, `$(command)`) which corrupts body
|
|
55
|
+
* content.
|
|
56
|
+
*
|
|
57
|
+
* Takes both the stripped command (for gh scoping) and the
|
|
58
|
+
* original (for heredoc operator validation, which stripping
|
|
59
|
+
* would remove).
|
|
60
|
+
*/
|
|
61
|
+
export declare function detectUnsafeHeredoc(stripped: string, original: string): string | null;
|
|
62
|
+
/**
|
|
63
|
+
* Run every github-cli check against a raw bash command. Returns
|
|
64
|
+
* the first violation's block reason, or null if the command is
|
|
65
|
+
* fine. The one entry point an adapter needs; the individual
|
|
66
|
+
* `detect*` functions stay exported for adapters that want finer
|
|
67
|
+
* control.
|
|
68
|
+
*/
|
|
69
|
+
export declare function checkGithubCli(command: string): string | null;
|
|
70
|
+
/** Detect whether a bash command contains a specific gh subcommand. */
|
|
71
|
+
export declare function isGhCommand(command: string, subcommand: string): boolean;
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detects gh pr/issue commands that violate the
|
|
3
|
+
* github-cli-convention skill's formatting rules.
|
|
4
|
+
*
|
|
5
|
+
* The convention requires heredoc syntax (--body-file -)
|
|
6
|
+
* with a quoted delimiter for body content, and metadata
|
|
7
|
+
* assignment in separate commands after creation.
|
|
8
|
+
*/
|
|
9
|
+
import { findFlag, tokenize } from "../command/index.js";
|
|
10
|
+
import { extractBodyFilePath, hasUnquotedHeredoc, stripHeredocBodies, stripShellData, } from "../shell/parse.js";
|
|
11
|
+
import { GH_BODY_SPEC } from "./command-spec.js";
|
|
12
|
+
export { GH_BODY_SPEC } from "./command-spec.js";
|
|
13
|
+
/**
|
|
14
|
+
* The form every one of these blocks is asking for, written out.
|
|
15
|
+
*
|
|
16
|
+
* Here rather than in the skill it came from, because a block that names a rule and
|
|
17
|
+
* sends the reader elsewhere for the fix is only actionable while the elsewhere is
|
|
18
|
+
* loaded. Four of these messages used to end with "read the github-cli-convention
|
|
19
|
+
* skill for the heredoc pattern", which is a redirect to a document the reader may
|
|
20
|
+
* not have and cannot be sure of. The pattern is three lines. It fits here.
|
|
21
|
+
*/
|
|
22
|
+
const REQUIRED_FORM = "The required form is:\n\n" +
|
|
23
|
+
"gh pr create --title '...' --body-file - <<'EOF'\n" +
|
|
24
|
+
"### \u{1F310} Situation\n...\nEOF\n\n" +
|
|
25
|
+
"A quoted delimiter, stdin rather than a path, and nothing piped or wrapped " +
|
|
26
|
+
"around the command.";
|
|
27
|
+
/** Matches gh pr or issue create/edit commands. */
|
|
28
|
+
const GH_ENTITY_COMMAND = /\bgh\s+(?:pr|issue)\s+(?:create|edit)\b/;
|
|
29
|
+
/** Matches --body-file - (stdin). */
|
|
30
|
+
const BODY_FILE_STDIN = /--body-file\s+-(?:\s|$)/;
|
|
31
|
+
/** Matches a heredoc operator. */
|
|
32
|
+
const HEREDOC = /<<-?\s*['"]?\w/;
|
|
33
|
+
/**
|
|
34
|
+
* Metadata flags that should be in separate edit commands,
|
|
35
|
+
* not packed into create.
|
|
36
|
+
*/
|
|
37
|
+
const METADATA_FLAGS = /--(?:add-)?(?:label|assignee|reviewer|project)\b|--milestone\b/;
|
|
38
|
+
/** Matches a gh create (not edit) command. */
|
|
39
|
+
const GH_CREATE = /\bgh\s+(?:pr|issue)\s+create\b/;
|
|
40
|
+
/**
|
|
41
|
+
* Check whether a gh command uses --body instead of
|
|
42
|
+
* --body-file with heredoc. Returns a block reason or
|
|
43
|
+
* null if the command is fine.
|
|
44
|
+
*/
|
|
45
|
+
export function detectInlineBody(command) {
|
|
46
|
+
const gh = findGhEntityCommand(command);
|
|
47
|
+
if (!gh)
|
|
48
|
+
return null;
|
|
49
|
+
// The body-file heredoc form is the correct one; only an inline
|
|
50
|
+
// body (--body or its short -b) is the violation.
|
|
51
|
+
if (gh.heredoc)
|
|
52
|
+
return null;
|
|
53
|
+
if (findFlag(gh, GH_BODY_SPEC, "body-file"))
|
|
54
|
+
return null;
|
|
55
|
+
if (!findFlag(gh, GH_BODY_SPEC, "body"))
|
|
56
|
+
return null;
|
|
57
|
+
return ("Blocked: gh pr/issue command uses an inline body (--body or " +
|
|
58
|
+
"-b) instead of --body-file with a heredoc. An inline body has " +
|
|
59
|
+
`quoting issues with markdown content.\n\n${REQUIRED_FORM}`);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Refuse `gh pr merge --delete-branch`.
|
|
63
|
+
*
|
|
64
|
+
* The flag deletes the branch through a separate API call, and GitHub auto-closes
|
|
65
|
+
* every open PR that used it as a base. Those cannot be reopened, so a stacked PR
|
|
66
|
+
* merged this way destroys the rest of the stack with no way back. The flag saves one
|
|
67
|
+
* command and the failure is unrecoverable, which is the trade a gate exists for.
|
|
68
|
+
*
|
|
69
|
+
* Blocked whether or not anything is stacked on it, because the interceptor cannot
|
|
70
|
+
* know that from the command, and the safe sequence costs one extra call. This rule
|
|
71
|
+
* used to live in a skill, where it was correct and unenforced.
|
|
72
|
+
*/
|
|
73
|
+
export function detectDeleteBranchOnMerge(command) {
|
|
74
|
+
if (!/\bgh\s+pr\s+merge\b/.test(command))
|
|
75
|
+
return null;
|
|
76
|
+
if (!/(?:--delete-branch|(?<![\w-])-d(?![\w-]))/.test(command))
|
|
77
|
+
return null;
|
|
78
|
+
return ("Blocked: --delete-branch on a merge deletes the branch through a " +
|
|
79
|
+
"separate API call, and GitHub permanently closes every open PR that " +
|
|
80
|
+
"used it as a base. Closed that way, they cannot be reopened.\n\n" +
|
|
81
|
+
"Merge without it, then delete the branch once you have confirmed " +
|
|
82
|
+
"nothing is based on it:\n\n" +
|
|
83
|
+
"gh pr merge <number> --merge\n" +
|
|
84
|
+
"gh pr list --base <branch> # empty means nothing depends on it\n" +
|
|
85
|
+
"git push origin --delete <branch>\n\n" +
|
|
86
|
+
"Prefer `review_offer merge`, which does not offer the flag at all.");
|
|
87
|
+
}
|
|
88
|
+
/** Find a gh pr/issue create or edit command in a bash command. */
|
|
89
|
+
function findGhEntityCommand(command) {
|
|
90
|
+
return tokenize(command).commands.find((c) => c.argv[0]?.text === "gh" &&
|
|
91
|
+
(c.argv[1]?.text === "pr" || c.argv[1]?.text === "issue") &&
|
|
92
|
+
(c.argv[2]?.text === "create" || c.argv[2]?.text === "edit"));
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Check whether a gh create command packs metadata flags
|
|
96
|
+
* that should be in separate edit commands. Returns a block
|
|
97
|
+
* reason or null if the command is fine.
|
|
98
|
+
*/
|
|
99
|
+
export function detectPackedMetadata(command) {
|
|
100
|
+
if (!GH_CREATE.test(command))
|
|
101
|
+
return null;
|
|
102
|
+
if (!METADATA_FLAGS.test(command))
|
|
103
|
+
return null;
|
|
104
|
+
return ("Blocked: gh create command includes metadata flags " +
|
|
105
|
+
"(labels, assignees, reviewers, milestones, projects). " +
|
|
106
|
+
"Assign metadata in separate gh edit commands after " +
|
|
107
|
+
"creation, one concern per call:\n\n" +
|
|
108
|
+
"gh pr edit <number> --add-label bug\n" +
|
|
109
|
+
"gh pr edit <number> --add-assignee someone");
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Check whether a gh command uses --body-file with a file
|
|
113
|
+
* path instead of stdin. The convention requires
|
|
114
|
+
* `--body-file -` piped from a heredoc, never a file path.
|
|
115
|
+
*/
|
|
116
|
+
export function detectBodyFilePath(command) {
|
|
117
|
+
if (!GH_ENTITY_COMMAND.test(command))
|
|
118
|
+
return null;
|
|
119
|
+
const path = extractBodyFilePath(command);
|
|
120
|
+
if (!path)
|
|
121
|
+
return null;
|
|
122
|
+
return ("Blocked: --body-file points to a file path " +
|
|
123
|
+
`(${path}) instead of stdin. Use \`--body-file -\` ` +
|
|
124
|
+
`with a heredoc to pipe the body content.\n\n${REQUIRED_FORM}`);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Check whether a gh command uses --body-file - but has no
|
|
128
|
+
* heredoc to feed it. Without a heredoc, the command hangs
|
|
129
|
+
* waiting for stdin.
|
|
130
|
+
*
|
|
131
|
+
* Takes both the stripped command (for gh scoping and
|
|
132
|
+
* --body-file detection) and the original (for heredoc
|
|
133
|
+
* presence, since stripping removes the operator).
|
|
134
|
+
*/
|
|
135
|
+
export function detectMissingHeredoc(stripped, original) {
|
|
136
|
+
if (!GH_ENTITY_COMMAND.test(stripped))
|
|
137
|
+
return null;
|
|
138
|
+
if (!BODY_FILE_STDIN.test(stripped))
|
|
139
|
+
return null;
|
|
140
|
+
if (HEREDOC.test(original))
|
|
141
|
+
return null;
|
|
142
|
+
return ("Blocked: --body-file - has no heredoc to provide the " +
|
|
143
|
+
"body content. The command will hang waiting for stdin.\n\n" +
|
|
144
|
+
`Add a heredoc after the command.\n\n${REQUIRED_FORM}`);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Check whether a gh command uses a heredoc with an unquoted
|
|
148
|
+
* delimiter. Unquoted delimiters allow shell variable expansion
|
|
149
|
+
* (`$variable`, backticks, `$(command)`) which corrupts body
|
|
150
|
+
* content.
|
|
151
|
+
*
|
|
152
|
+
* Takes both the stripped command (for gh scoping) and the
|
|
153
|
+
* original (for heredoc operator validation, which stripping
|
|
154
|
+
* would remove).
|
|
155
|
+
*/
|
|
156
|
+
export function detectUnsafeHeredoc(stripped, original) {
|
|
157
|
+
if (!GH_ENTITY_COMMAND.test(stripped))
|
|
158
|
+
return null;
|
|
159
|
+
if (!hasUnquotedHeredoc(original))
|
|
160
|
+
return null;
|
|
161
|
+
return ("Blocked: heredoc uses an unquoted delimiter (e.g. " +
|
|
162
|
+
"`<<EOF`), which allows shell variable expansion. " +
|
|
163
|
+
"Use a quoted delimiter (`<<'EOF'`) to prevent " +
|
|
164
|
+
"`$variable` and backtick expansion from corrupting " +
|
|
165
|
+
`the body content.\n\n${REQUIRED_FORM}`);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Run every github-cli check against a raw bash command. Returns
|
|
169
|
+
* the first violation's block reason, or null if the command is
|
|
170
|
+
* fine. The one entry point an adapter needs; the individual
|
|
171
|
+
* `detect*` functions stay exported for adapters that want finer
|
|
172
|
+
* control.
|
|
173
|
+
*/
|
|
174
|
+
export function checkGithubCli(command) {
|
|
175
|
+
const stripped = stripShellData(stripHeredocBodies(command));
|
|
176
|
+
return (detectInlineBody(command) ??
|
|
177
|
+
detectPackedMetadata(stripped) ??
|
|
178
|
+
detectDeleteBranchOnMerge(stripped) ??
|
|
179
|
+
detectBodyFilePath(stripped) ??
|
|
180
|
+
detectMissingHeredoc(stripped, command) ??
|
|
181
|
+
detectUnsafeHeredoc(stripped, command) ??
|
|
182
|
+
null);
|
|
183
|
+
}
|
|
184
|
+
/** Detect whether a bash command contains a specific gh subcommand. */
|
|
185
|
+
export function isGhCommand(command, subcommand) {
|
|
186
|
+
const re = new RegExp(`\\bgh\\s+${subcommand}\\s+(create|edit)\\b`);
|
|
187
|
+
return re.test(command);
|
|
188
|
+
}
|