@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,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The prepare-commit-msg hook that attributes every commit made
|
|
3
|
+
* under an adapter, not just a typed `git commit`. Command-level
|
|
4
|
+
* injection only sees a literal git commit; cherry-pick, revert,
|
|
5
|
+
* rebase, merge and editor commits reach attribution only through
|
|
6
|
+
* this hook.
|
|
7
|
+
*
|
|
8
|
+
* The trigger condition (an env var pi can set before its own tool
|
|
9
|
+
* call, a marker file a Claude Code hook can only write to disk,
|
|
10
|
+
* ...) is the one thing that genuinely differs per adapter, so it's
|
|
11
|
+
* the one thing this module takes as a parameter rather than
|
|
12
|
+
* assuming. Everything else — idempotent install, chaining any
|
|
13
|
+
* hook the repo already had, never adding a second AI co-author —
|
|
14
|
+
* is host-agnostic and shared.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* How an adapter's hook decides whether to attribute a commit, and
|
|
18
|
+
* how it identifies its own installed hook.
|
|
19
|
+
*/
|
|
20
|
+
export interface CommitHookOptions {
|
|
21
|
+
/** Comment marker identifying this as this adapter's hook, for idempotent (re)installs. */
|
|
22
|
+
readonly marker: string;
|
|
23
|
+
/** Filename suffix for a pre-existing hook this displaces (e.g. "pi-chained"). */
|
|
24
|
+
readonly chainedSuffix: string;
|
|
25
|
+
/** Shell test that must succeed for this commit to be attributed, e.g. `[ -n "$PI_CO_AUTHOR" ]`. */
|
|
26
|
+
readonly gateTest: string;
|
|
27
|
+
/** Shell expression yielding the trailer line text, e.g. `"$PI_CO_AUTHOR"`. */
|
|
28
|
+
readonly trailerExpr: string;
|
|
29
|
+
}
|
|
30
|
+
/** Build the prepare-commit-msg script for the given adapter options. */
|
|
31
|
+
export declare function buildPrepareCommitMsgHook(options: CommitHookOptions): string;
|
|
32
|
+
/** The outcome of trying to install the hook. */
|
|
33
|
+
export interface HookInstall {
|
|
34
|
+
readonly installed: boolean;
|
|
35
|
+
readonly reason?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Install the prepare-commit-msg hook into a repo's hooks
|
|
39
|
+
* directory, honouring core.hooksPath and chaining any existing
|
|
40
|
+
* hook. A no-op when this adapter's hook is already installed.
|
|
41
|
+
*/
|
|
42
|
+
export declare function installCommitHook(repoRoot: string, options: CommitHookOptions): HookInstall;
|
|
43
|
+
/**
|
|
44
|
+
* Ensure the hook is installed in the repo containing dir, at most
|
|
45
|
+
* once per repo root. Resolves the repo, records it in `installed`
|
|
46
|
+
* so later commands in the same repo are skipped, and installs
|
|
47
|
+
* best-effort. A directory outside any git repo is a no-op. This is
|
|
48
|
+
* how hook coverage follows the session into repos it later cds
|
|
49
|
+
* into, rather than only the repo the session started in.
|
|
50
|
+
*/
|
|
51
|
+
export declare function ensureCommitHook(dir: string, installed: Set<string>, options: CommitHookOptions): void;
|
|
52
|
+
/** The git repository root containing dir, or null when there is none. */
|
|
53
|
+
export declare function repoRootOf(dir: string): string | null;
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The prepare-commit-msg hook that attributes every commit made
|
|
3
|
+
* under an adapter, not just a typed `git commit`. Command-level
|
|
4
|
+
* injection only sees a literal git commit; cherry-pick, revert,
|
|
5
|
+
* rebase, merge and editor commits reach attribution only through
|
|
6
|
+
* this hook.
|
|
7
|
+
*
|
|
8
|
+
* The trigger condition (an env var pi can set before its own tool
|
|
9
|
+
* call, a marker file a Claude Code hook can only write to disk,
|
|
10
|
+
* ...) is the one thing that genuinely differs per adapter, so it's
|
|
11
|
+
* the one thing this module takes as a parameter rather than
|
|
12
|
+
* assuming. Everything else — idempotent install, chaining any
|
|
13
|
+
* hook the repo already had, never adding a second AI co-author —
|
|
14
|
+
* is host-agnostic and shared.
|
|
15
|
+
*/
|
|
16
|
+
import { execFileSync } from "node:child_process";
|
|
17
|
+
import { chmodSync, existsSync, readFileSync, renameSync, writeFileSync, } from "node:fs";
|
|
18
|
+
import { isAbsolute, join } from "node:path";
|
|
19
|
+
/** Build the prepare-commit-msg script for the given adapter options. */
|
|
20
|
+
export function buildPrepareCommitMsgHook(options) {
|
|
21
|
+
return `#!/bin/sh
|
|
22
|
+
# ${options.marker}
|
|
23
|
+
# Appends the AI co-author trailer to commits made under this adapter.
|
|
24
|
+
# Idempotent and chains to any displaced hook.
|
|
25
|
+
|
|
26
|
+
msg_file="$1"
|
|
27
|
+
|
|
28
|
+
chained="$(CDPATH= cd "$(dirname "$0")" && pwd)/prepare-commit-msg.${options.chainedSuffix}"
|
|
29
|
+
if [ -x "$chained" ]; then
|
|
30
|
+
"$chained" "$@" || exit $?
|
|
31
|
+
fi
|
|
32
|
+
|
|
33
|
+
${options.gateTest} || exit 0
|
|
34
|
+
[ -f "$msg_file" ] || exit 0
|
|
35
|
+
|
|
36
|
+
if grep -qi 'co-authored-by[: ]*ai' "$msg_file"; then
|
|
37
|
+
exit 0
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
git interpret-trailers --in-place --trailer ${options.trailerExpr} "$msg_file"
|
|
41
|
+
`;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Install the prepare-commit-msg hook into a repo's hooks
|
|
45
|
+
* directory, honouring core.hooksPath and chaining any existing
|
|
46
|
+
* hook. A no-op when this adapter's hook is already installed.
|
|
47
|
+
*/
|
|
48
|
+
export function installCommitHook(repoRoot, options) {
|
|
49
|
+
// A custom core.hooksPath means a hook manager (husky and the
|
|
50
|
+
// like) or a shared, possibly version-controlled hooks directory
|
|
51
|
+
// owns the hooks. Leave it alone rather than write this adapter's
|
|
52
|
+
// hook into a directory it does not own.
|
|
53
|
+
if (hasCustomHooksPath(repoRoot)) {
|
|
54
|
+
return { installed: false, reason: "custom core.hooksPath configured" };
|
|
55
|
+
}
|
|
56
|
+
let hooksDir;
|
|
57
|
+
try {
|
|
58
|
+
hooksDir = resolveHooksDir(repoRoot);
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
return { installed: false, reason: `not a git repo: ${String(error)}` };
|
|
62
|
+
}
|
|
63
|
+
const target = join(hooksDir, "prepare-commit-msg");
|
|
64
|
+
if (existsSync(target) &&
|
|
65
|
+
readFileSync(target, "utf8").includes(options.marker)) {
|
|
66
|
+
return { installed: false, reason: "already installed" };
|
|
67
|
+
}
|
|
68
|
+
if (existsSync(target)) {
|
|
69
|
+
const chained = join(hooksDir, `prepare-commit-msg.${options.chainedSuffix}`);
|
|
70
|
+
// A backup already here means a non-adapter hook was chained
|
|
71
|
+
// before; renaming over it would lose the original, so refuse
|
|
72
|
+
// instead.
|
|
73
|
+
if (existsSync(chained)) {
|
|
74
|
+
return {
|
|
75
|
+
installed: false,
|
|
76
|
+
reason: `a prepare-commit-msg.${options.chainedSuffix} backup already exists`,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
renameSync(target, chained);
|
|
80
|
+
}
|
|
81
|
+
writeFileSync(target, buildPrepareCommitMsgHook(options), { mode: 0o755 });
|
|
82
|
+
chmodSync(target, 0o755);
|
|
83
|
+
return { installed: true };
|
|
84
|
+
}
|
|
85
|
+
/** Whether the repo configures a custom core.hooksPath. */
|
|
86
|
+
function hasCustomHooksPath(repoRoot) {
|
|
87
|
+
try {
|
|
88
|
+
const value = execFileSync("git", ["-C", repoRoot, "config", "--get", "core.hooksPath"], { encoding: "utf8", stdio: ["ignore", "pipe", "ignore"] }).trim();
|
|
89
|
+
return value.length > 0;
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// git config exits non-zero when the key is unset: no custom path.
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Ensure the hook is installed in the repo containing dir, at most
|
|
98
|
+
* once per repo root. Resolves the repo, records it in `installed`
|
|
99
|
+
* so later commands in the same repo are skipped, and installs
|
|
100
|
+
* best-effort. A directory outside any git repo is a no-op. This is
|
|
101
|
+
* how hook coverage follows the session into repos it later cds
|
|
102
|
+
* into, rather than only the repo the session started in.
|
|
103
|
+
*/
|
|
104
|
+
export function ensureCommitHook(dir, installed, options) {
|
|
105
|
+
const root = repoRootOf(dir);
|
|
106
|
+
if (!root || installed.has(root))
|
|
107
|
+
return;
|
|
108
|
+
installed.add(root);
|
|
109
|
+
try {
|
|
110
|
+
installCommitHook(root, options);
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
// Best-effort: never let hook installation break a command.
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/** Resolve the active hooks directory, honouring core.hooksPath. */
|
|
117
|
+
function resolveHooksDir(repoRoot) {
|
|
118
|
+
const path = execFileSync("git", ["-C", repoRoot, "rev-parse", "--git-path", "hooks"], { encoding: "utf8" }).trim();
|
|
119
|
+
return isAbsolute(path) ? path : join(repoRoot, path);
|
|
120
|
+
}
|
|
121
|
+
/** The git repository root containing dir, or null when there is none. */
|
|
122
|
+
export function repoRootOf(dir) {
|
|
123
|
+
try {
|
|
124
|
+
return execFileSync("git", ["-C", dir, "rev-parse", "--show-toplevel"], {
|
|
125
|
+
encoding: "utf8",
|
|
126
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
127
|
+
}).trim();
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
// Not a git repository (or git unavailable): no hook to install.
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Splice-based attribution for gh pr/issue commands. Locates the
|
|
3
|
+
* body of a gh create/edit command and inserts a footer in place,
|
|
4
|
+
* editing only the body span so the working directory, environment
|
|
5
|
+
* assignments and every other flag survive byte-identically.
|
|
6
|
+
*
|
|
7
|
+
* A parse-and-rebuild path was tried before this and dropped the
|
|
8
|
+
* leading cd, GH_HOST and -R when it reconstructed the command;
|
|
9
|
+
* this module never reconstructs one.
|
|
10
|
+
*/
|
|
11
|
+
/** The outcome of attempting to attribute a gh command. */
|
|
12
|
+
export type GhFooterInsertion = {
|
|
13
|
+
kind: "rewritten";
|
|
14
|
+
command: string;
|
|
15
|
+
} | {
|
|
16
|
+
kind: "blocked";
|
|
17
|
+
reason: string;
|
|
18
|
+
} | {
|
|
19
|
+
kind: "skip";
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Insert a footer into the body of a gh pr or gh issue create/edit
|
|
23
|
+
* command. Skips when the command is not a gh entity command, has
|
|
24
|
+
* no body, or is already attributed; blocks when the command is a
|
|
25
|
+
* gh entity command in a shape outside the supported grammar.
|
|
26
|
+
*/
|
|
27
|
+
export declare function insertGhBodyFooter(command: string, entity: "pr" | "issue", footer: string, alreadyAttributed: (bodyText: string) => boolean): GhFooterInsertion;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Splice-based attribution for gh pr/issue commands. Locates the
|
|
3
|
+
* body of a gh create/edit command and inserts a footer in place,
|
|
4
|
+
* editing only the body span so the working directory, environment
|
|
5
|
+
* assignments and every other flag survive byte-identically.
|
|
6
|
+
*
|
|
7
|
+
* A parse-and-rebuild path was tried before this and dropped the
|
|
8
|
+
* leading cd, GH_HOST and -R when it reconstructed the command;
|
|
9
|
+
* this module never reconstructs one.
|
|
10
|
+
*/
|
|
11
|
+
import { applyEdits, findFlag, tokenize, } from "../command/index.js";
|
|
12
|
+
import { GH_BODY_SPEC, isGhCommand } from "../github-cli/index.js";
|
|
13
|
+
import { stripHeredocBodies, stripShellData } from "../shell/index.js";
|
|
14
|
+
/**
|
|
15
|
+
* Insert a footer into the body of a gh pr or gh issue create/edit
|
|
16
|
+
* command. Skips when the command is not a gh entity command, has
|
|
17
|
+
* no body, or is already attributed; blocks when the command is a
|
|
18
|
+
* gh entity command in a shape outside the supported grammar.
|
|
19
|
+
*/
|
|
20
|
+
export function insertGhBodyFooter(command, entity, footer, alreadyAttributed) {
|
|
21
|
+
const stripped = stripShellData(stripHeredocBodies(command));
|
|
22
|
+
if (!isGhCommand(stripped, entity))
|
|
23
|
+
return { kind: "skip" };
|
|
24
|
+
const line = tokenize(command);
|
|
25
|
+
if (!line.supported) {
|
|
26
|
+
return {
|
|
27
|
+
kind: "blocked",
|
|
28
|
+
reason: line.unsupportedReason ?? "unsupported command shape",
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
const ghCommand = findGhCommand(line.commands, entity);
|
|
32
|
+
if (!ghCommand)
|
|
33
|
+
return { kind: "skip" };
|
|
34
|
+
const insertion = locateBodyInsertion(command, ghCommand);
|
|
35
|
+
if (insertion === "unsafe") {
|
|
36
|
+
return {
|
|
37
|
+
kind: "blocked",
|
|
38
|
+
reason: "inline --body is unquoted, so a multi-line footer cannot be spliced safely; use --body-file - with a quoted heredoc",
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
if (!insertion)
|
|
42
|
+
return { kind: "skip" };
|
|
43
|
+
if (alreadyAttributed(insertion.bodyText))
|
|
44
|
+
return { kind: "skip" };
|
|
45
|
+
const edit = {
|
|
46
|
+
span: { start: insertion.at, end: insertion.at },
|
|
47
|
+
text: footer,
|
|
48
|
+
};
|
|
49
|
+
return { kind: "rewritten", command: applyEdits(command, [edit]) };
|
|
50
|
+
}
|
|
51
|
+
/** Find a gh create/edit command for the entity among the commands. */
|
|
52
|
+
function findGhCommand(commands, entity) {
|
|
53
|
+
return commands.find((command) => command.argv[0]?.text === "gh" &&
|
|
54
|
+
command.argv[1]?.text === entity &&
|
|
55
|
+
(command.argv[2]?.text === "create" || command.argv[2]?.text === "edit"));
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Locate where a footer joins the body: the end of a heredoc body,
|
|
59
|
+
* or just inside the closing quote of an inline --body value.
|
|
60
|
+
*/
|
|
61
|
+
function locateBodyInsertion(source, command) {
|
|
62
|
+
if (command.heredoc) {
|
|
63
|
+
const { bodySpan } = command.heredoc;
|
|
64
|
+
return {
|
|
65
|
+
at: bodySpan.end,
|
|
66
|
+
bodyText: source.slice(bodySpan.start, bodySpan.end),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
const body = findFlag(command, GH_BODY_SPEC, "body");
|
|
70
|
+
if (!body?.valueSpan)
|
|
71
|
+
return undefined;
|
|
72
|
+
const { start, end } = body.valueSpan;
|
|
73
|
+
const quoted = source[end - 1] === '"' || source[end - 1] === "'";
|
|
74
|
+
// An unquoted inline body cannot hold the footer's newlines
|
|
75
|
+
// without breaking the command into separate statements, so it
|
|
76
|
+
// is unsafe to splice; the caller fails closed on it.
|
|
77
|
+
if (!quoted)
|
|
78
|
+
return "unsafe";
|
|
79
|
+
return { at: end - 1, bodyText: source.slice(start + 1, end - 1) };
|
|
80
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public API for the `attribution` domain: making AI involvement
|
|
3
|
+
* in commits, PRs and issues transparent, however a host chooses
|
|
4
|
+
* to realize it. Two genuinely different mechanisms live here
|
|
5
|
+
* because the one thing that differs per adapter — how a commit
|
|
6
|
+
* gets marked as AI-driven, given each host's own capabilities —
|
|
7
|
+
* is a real port (`CommitHookOptions`), not a reflexive one.
|
|
8
|
+
*/
|
|
9
|
+
export { buildPrepareCommitMsgHook, type CommitHookOptions, ensureCommitHook, type HookInstall, installCommitHook, repoRootOf, } from "./commit-hook.js";
|
|
10
|
+
export { type GhFooterInsertion, insertGhBodyFooter } from "./gh-footer.js";
|
|
11
|
+
export { formatModelName } from "./model-name.js";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public API for the `attribution` domain: making AI involvement
|
|
3
|
+
* in commits, PRs and issues transparent, however a host chooses
|
|
4
|
+
* to realize it. Two genuinely different mechanisms live here
|
|
5
|
+
* because the one thing that differs per adapter — how a commit
|
|
6
|
+
* gets marked as AI-driven, given each host's own capabilities —
|
|
7
|
+
* is a real port (`CommitHookOptions`), not a reflexive one.
|
|
8
|
+
*/
|
|
9
|
+
export { buildPrepareCommitMsgHook, ensureCommitHook, installCommitHook, repoRootOf, } from "./commit-hook.js";
|
|
10
|
+
export { insertGhBodyFooter } from "./gh-footer.js";
|
|
11
|
+
export { formatModelName } from "./model-name.js";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model identifier formatting for display in a co-authorship
|
|
3
|
+
* trailer. Each adapter builds its own branded trailer text; this
|
|
4
|
+
* is the one piece of that formatting worth sharing verbatim.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Format the model identifier for display. Strips a trailing date
|
|
8
|
+
* suffix, title-cases hyphen segments and joins consecutive digit
|
|
9
|
+
* segments into a version number (claude-opus-4-6 -> Claude Opus 4.6).
|
|
10
|
+
*/
|
|
11
|
+
export declare function formatModelName(modelId: string): string;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model identifier formatting for display in a co-authorship
|
|
3
|
+
* trailer. Each adapter builds its own branded trailer text; this
|
|
4
|
+
* is the one piece of that formatting worth sharing verbatim.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Format the model identifier for display. Strips a trailing date
|
|
8
|
+
* suffix, title-cases hyphen segments and joins consecutive digit
|
|
9
|
+
* segments into a version number (claude-opus-4-6 -> Claude Opus 4.6).
|
|
10
|
+
*/
|
|
11
|
+
export function formatModelName(modelId) {
|
|
12
|
+
const stripped = modelId.replace(/-?\d{8,}$/, "");
|
|
13
|
+
const parts = stripped.split("-");
|
|
14
|
+
const result = [];
|
|
15
|
+
for (const part of parts) {
|
|
16
|
+
const isDigit = /^\d+$/.test(part);
|
|
17
|
+
const prevIsDigit = result.length > 0 && /^\d/.test(result[result.length - 1]);
|
|
18
|
+
if (isDigit && prevIsDigit) {
|
|
19
|
+
result[result.length - 1] += `.${part}`;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
result.push(part.charAt(0).toUpperCase() + part.slice(1));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return result.join(" ");
|
|
26
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code's attribution wiring: the CLI-adapter half of the
|
|
3
|
+
* attribution domain's commit-hook port (see attribution/commit-hook.ts
|
|
4
|
+
* for why the trigger condition is a parameter at all).
|
|
5
|
+
*
|
|
6
|
+
* Pi can set an env var in its own process right before the bash
|
|
7
|
+
* tool call it precedes. A PreToolUse hook is a separate process
|
|
8
|
+
* that exits before that tool call runs, with no way to inject an
|
|
9
|
+
* env var forward into it. The signal this adapter uses instead is
|
|
10
|
+
* a marker file written next to the installed hook script itself:
|
|
11
|
+
* idempotent to refresh, trivial for the hook to read, and it
|
|
12
|
+
* needs no cooperation from the tool call that follows.
|
|
13
|
+
*
|
|
14
|
+
* The real behavioural difference this trades away: pi's env var
|
|
15
|
+
* is scoped to one tool call, so a human typing `git commit`
|
|
16
|
+
* themselves in the same repo is never attributed. This marker
|
|
17
|
+
* file persists for the repo once written, so it cannot tell an
|
|
18
|
+
* agent-driven commit from a human one made in the same repo while
|
|
19
|
+
* the plugin is active. Given the domain's own stated ethos (over-
|
|
20
|
+
* attributing in an unwatched, headless run is a smaller sin than
|
|
21
|
+
* under-attributing), that's an accepted trade, not an oversight.
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* Ensure the commit-attribution hook and its marker file exist for
|
|
25
|
+
* dir's repo. Best-effort and silent: this runs on every bash call,
|
|
26
|
+
* not just git ones, so coverage follows the agent as it cds
|
|
27
|
+
* between repos, matching pi's own ensureCommitHook usage.
|
|
28
|
+
*/
|
|
29
|
+
export declare function ensureAttributionHook(dir: string): void;
|
|
30
|
+
/**
|
|
31
|
+
* Check a gh pr/issue command for missing attribution. A hook can't
|
|
32
|
+
* rewrite the call the way pi's guardian can, so this hands back a
|
|
33
|
+
* reason naming the corrected command for the agent to retry with,
|
|
34
|
+
* rather than splicing it in place.
|
|
35
|
+
*/
|
|
36
|
+
export declare function checkAttribution(command: string): string | null;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code's attribution wiring: the CLI-adapter half of the
|
|
3
|
+
* attribution domain's commit-hook port (see attribution/commit-hook.ts
|
|
4
|
+
* for why the trigger condition is a parameter at all).
|
|
5
|
+
*
|
|
6
|
+
* Pi can set an env var in its own process right before the bash
|
|
7
|
+
* tool call it precedes. A PreToolUse hook is a separate process
|
|
8
|
+
* that exits before that tool call runs, with no way to inject an
|
|
9
|
+
* env var forward into it. The signal this adapter uses instead is
|
|
10
|
+
* a marker file written next to the installed hook script itself:
|
|
11
|
+
* idempotent to refresh, trivial for the hook to read, and it
|
|
12
|
+
* needs no cooperation from the tool call that follows.
|
|
13
|
+
*
|
|
14
|
+
* The real behavioural difference this trades away: pi's env var
|
|
15
|
+
* is scoped to one tool call, so a human typing `git commit`
|
|
16
|
+
* themselves in the same repo is never attributed. This marker
|
|
17
|
+
* file persists for the repo once written, so it cannot tell an
|
|
18
|
+
* agent-driven commit from a human one made in the same repo while
|
|
19
|
+
* the plugin is active. Given the domain's own stated ethos (over-
|
|
20
|
+
* attributing in an unwatched, headless run is a smaller sin than
|
|
21
|
+
* under-attributing), that's an accepted trade, not an oversight.
|
|
22
|
+
*/
|
|
23
|
+
import { execFileSync } from "node:child_process";
|
|
24
|
+
import { writeFileSync } from "node:fs";
|
|
25
|
+
import { isAbsolute, join } from "node:path";
|
|
26
|
+
import { ensureCommitHook, insertGhBodyFooter, repoRootOf, } from "../attribution/index.js";
|
|
27
|
+
/** Filename of the marker file, written beside the installed hook. */
|
|
28
|
+
const MARKER_FILENAME = "agentic-harness-claude-co-author";
|
|
29
|
+
/** The trailer line the installed hook appends to a commit message. */
|
|
30
|
+
const COMMIT_TRAILER = "Co-Authored-By: AI via Claude Code <noreply@anthropic.com>";
|
|
31
|
+
/** The footer spliced into an unattributed gh pr/issue body. */
|
|
32
|
+
const GH_FOOTER = "\n\n---\n*Co-Authored-By AI via [Claude Code](https://claude.com/claude-code)*";
|
|
33
|
+
/** Matches existing attribution, so a re-run never double-attributes. */
|
|
34
|
+
const ALREADY_ATTRIBUTED = /co-authored-by[:\s]+ai/i;
|
|
35
|
+
const CLAUDE_OPTIONS = {
|
|
36
|
+
marker: "agentic-harness-claude-commit-attribution-hook",
|
|
37
|
+
chainedSuffix: "agentic-harness-claude-chained",
|
|
38
|
+
gateTest: `[ -f "$(dirname "$0")/${MARKER_FILENAME}" ]`,
|
|
39
|
+
trailerExpr: `"$(cat "$(dirname "$0")/${MARKER_FILENAME}")"`,
|
|
40
|
+
};
|
|
41
|
+
/** Resolve the active hooks directory, honouring core.hooksPath. */
|
|
42
|
+
function resolveHooksDir(repoRoot) {
|
|
43
|
+
const path = execFileSync("git", ["-C", repoRoot, "rev-parse", "--git-path", "hooks"], { encoding: "utf8" }).trim();
|
|
44
|
+
return isAbsolute(path) ? path : join(repoRoot, path);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Ensure the commit-attribution hook and its marker file exist for
|
|
48
|
+
* dir's repo. Best-effort and silent: this runs on every bash call,
|
|
49
|
+
* not just git ones, so coverage follows the agent as it cds
|
|
50
|
+
* between repos, matching pi's own ensureCommitHook usage.
|
|
51
|
+
*/
|
|
52
|
+
export function ensureAttributionHook(dir) {
|
|
53
|
+
const root = repoRootOf(dir);
|
|
54
|
+
if (!root)
|
|
55
|
+
return;
|
|
56
|
+
ensureCommitHook(dir, new Set(), CLAUDE_OPTIONS);
|
|
57
|
+
try {
|
|
58
|
+
writeFileSync(join(resolveHooksDir(root), MARKER_FILENAME), `${COMMIT_TRAILER}\n`);
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// Best-effort: never let marker maintenance break a command.
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Check a gh pr/issue command for missing attribution. A hook can't
|
|
66
|
+
* rewrite the call the way pi's guardian can, so this hands back a
|
|
67
|
+
* reason naming the corrected command for the agent to retry with,
|
|
68
|
+
* rather than splicing it in place.
|
|
69
|
+
*/
|
|
70
|
+
export function checkAttribution(command) {
|
|
71
|
+
for (const entity of ["pr", "issue"]) {
|
|
72
|
+
const result = insertGhBodyFooter(command, entity, GH_FOOTER, (body) => ALREADY_ATTRIBUTED.test(body));
|
|
73
|
+
if (result.kind === "rewritten") {
|
|
74
|
+
return ("This command needs AI co-authorship attribution before it can " +
|
|
75
|
+
`run. Retry with:\n\n${result.command}`);
|
|
76
|
+
}
|
|
77
|
+
if (result.kind === "blocked") {
|
|
78
|
+
return `Attribution cannot be applied to this gh ${entity} command: ${result.reason}.`;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* A thin, stateless-per-invocation CLI over the domain modules in
|
|
4
|
+
* `src/`. Each call reads whatever loop state it needs from a
|
|
5
|
+
* small JSON file it owns, applies one command, and writes the
|
|
6
|
+
* result back out — no daemon, no port, no long-lived process.
|
|
7
|
+
* This is the shape both a Bash-invoked Claude Code skill and a
|
|
8
|
+
* future hook dispatcher need: one process, one JSON in, one JSON
|
|
9
|
+
* out.
|
|
10
|
+
*
|
|
11
|
+
* This file is the CLI adapter, not domain logic — argument
|
|
12
|
+
* parsing and state-file I/O live here so `src/tdd` stays pure.
|
|
13
|
+
*/
|
|
14
|
+
export {};
|