@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,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Effective working directory of a command line: the base cwd
|
|
3
|
+
* composed with the leading `cd` segments. Consumers that resolve a
|
|
4
|
+
* relative path (the `git commit -F <file>` reader, say) ask here
|
|
5
|
+
* instead of scraping the first `cd` with a regex.
|
|
6
|
+
*/
|
|
7
|
+
import { homedir } from "node:os";
|
|
8
|
+
import { isAbsolute, join, resolve } from "node:path";
|
|
9
|
+
/**
|
|
10
|
+
* Compose the base cwd with the cd segments of the command line. A
|
|
11
|
+
* `before` source position bounds it to the cd segments that begin
|
|
12
|
+
* before that position, so a cd after the consuming command does
|
|
13
|
+
* not move the directory it runs in.
|
|
14
|
+
*/
|
|
15
|
+
export function effectiveCwd(line, baseCwd, before) {
|
|
16
|
+
let dir = baseCwd;
|
|
17
|
+
for (const command of line.commands) {
|
|
18
|
+
if (before !== undefined && command.span.start >= before)
|
|
19
|
+
break;
|
|
20
|
+
if (command.argv[0]?.text !== "cd")
|
|
21
|
+
continue;
|
|
22
|
+
const targetWord = command.argv[1];
|
|
23
|
+
if (!targetWord)
|
|
24
|
+
continue;
|
|
25
|
+
const target = literalTarget(targetWord);
|
|
26
|
+
if (target === undefined) {
|
|
27
|
+
return {
|
|
28
|
+
unresolvable: true,
|
|
29
|
+
reason: `cd target ${targetWord.text} is not statically resolvable`,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
dir = applyCd(dir, target);
|
|
33
|
+
}
|
|
34
|
+
return { dir };
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* The literal directory a cd target names, or undefined when it
|
|
38
|
+
* depends on a variable, command substitution or glob we cannot
|
|
39
|
+
* resolve statically.
|
|
40
|
+
*/
|
|
41
|
+
function literalTarget(word) {
|
|
42
|
+
if (word.quoting === "single")
|
|
43
|
+
return word.text.slice(1, -1);
|
|
44
|
+
if (word.quoting === "double") {
|
|
45
|
+
const inner = word.text.slice(1, -1);
|
|
46
|
+
return /[$`]/.test(inner) ? undefined : inner;
|
|
47
|
+
}
|
|
48
|
+
if (word.quoting === "none") {
|
|
49
|
+
return /[$`*?[\]{}]/.test(word.text) ? undefined : word.text;
|
|
50
|
+
}
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
/** Apply one resolved cd target to the running directory. */
|
|
54
|
+
function applyCd(dir, target) {
|
|
55
|
+
if (target === "~")
|
|
56
|
+
return homedir();
|
|
57
|
+
if (target.startsWith("~/"))
|
|
58
|
+
return join(homedir(), target.slice(2));
|
|
59
|
+
return isAbsolute(target) ? target : resolve(dir, target);
|
|
60
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Splice-by-range editing for the command model. Edits replace only
|
|
3
|
+
* the byte ranges they target, so every untouched byte of the
|
|
4
|
+
* source survives identically. This is the safety guarantee: the
|
|
5
|
+
* model never reconstructs a command from parsed pieces.
|
|
6
|
+
*/
|
|
7
|
+
import type { Span } from "./types.js";
|
|
8
|
+
/** A replacement of one source range with new text. */
|
|
9
|
+
export interface Edit {
|
|
10
|
+
readonly span: Span;
|
|
11
|
+
readonly text: string;
|
|
12
|
+
}
|
|
13
|
+
/** Apply edits to the source, splicing only the targeted ranges. */
|
|
14
|
+
export declare function applyEdits(source: string, edits: Edit[]): string;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Splice-by-range editing for the command model. Edits replace only
|
|
3
|
+
* the byte ranges they target, so every untouched byte of the
|
|
4
|
+
* source survives identically. This is the safety guarantee: the
|
|
5
|
+
* model never reconstructs a command from parsed pieces.
|
|
6
|
+
*/
|
|
7
|
+
/** Apply edits to the source, splicing only the targeted ranges. */
|
|
8
|
+
export function applyEdits(source, edits) {
|
|
9
|
+
if (edits.length === 0)
|
|
10
|
+
return source;
|
|
11
|
+
const ordered = [...edits].sort((a, b) => a.span.start - b.span.start);
|
|
12
|
+
let result = "";
|
|
13
|
+
let cursor = 0;
|
|
14
|
+
for (const edit of ordered) {
|
|
15
|
+
if (edit.span.start < cursor) {
|
|
16
|
+
throw new Error(`overlapping edits: span ${edit.span.start}-${edit.span.end} overlaps a prior edit ending at ${cursor}`);
|
|
17
|
+
}
|
|
18
|
+
result += source.slice(cursor, edit.span.start) + edit.text;
|
|
19
|
+
cursor = edit.span.end;
|
|
20
|
+
}
|
|
21
|
+
return result + source.slice(cursor);
|
|
22
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flag layer: understand a command's flags against a caller-supplied
|
|
3
|
+
* spec. The core ships no flag tables; each domain passes the spec
|
|
4
|
+
* for the command it owns, so knowledge of a command lives in one
|
|
5
|
+
* place and is imported where needed.
|
|
6
|
+
*/
|
|
7
|
+
import type { SimpleCommand, Span } from "./types.js";
|
|
8
|
+
/** One known flag: its canonical name, long and short forms. */
|
|
9
|
+
export interface FlagDef {
|
|
10
|
+
readonly name: string;
|
|
11
|
+
readonly long?: string;
|
|
12
|
+
readonly short?: string;
|
|
13
|
+
readonly takesValue: boolean;
|
|
14
|
+
}
|
|
15
|
+
/** The set of flags a caller knows about for a command. */
|
|
16
|
+
export interface FlagSpec {
|
|
17
|
+
readonly flags: FlagDef[];
|
|
18
|
+
}
|
|
19
|
+
/** A located flag occurrence and, when it takes one, its value. */
|
|
20
|
+
export interface FlagMatch {
|
|
21
|
+
readonly name: string;
|
|
22
|
+
readonly flagSpan: Span;
|
|
23
|
+
readonly value?: string;
|
|
24
|
+
readonly valueSpan?: Span;
|
|
25
|
+
}
|
|
26
|
+
/** Find the first occurrence of a named flag in a command. */
|
|
27
|
+
export declare function findFlag(command: SimpleCommand, spec: FlagSpec, name: string): FlagMatch | undefined;
|
|
28
|
+
/** Find every occurrence of a named flag in a command, in order. */
|
|
29
|
+
export declare function findFlags(command: SimpleCommand, spec: FlagSpec, name: string): FlagMatch[];
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flag layer: understand a command's flags against a caller-supplied
|
|
3
|
+
* spec. The core ships no flag tables; each domain passes the spec
|
|
4
|
+
* for the command it owns, so knowledge of a command lives in one
|
|
5
|
+
* place and is imported where needed.
|
|
6
|
+
*/
|
|
7
|
+
/** Find the first occurrence of a named flag in a command. */
|
|
8
|
+
export function findFlag(command, spec, name) {
|
|
9
|
+
return findFlags(command, spec, name)[0];
|
|
10
|
+
}
|
|
11
|
+
/** Find every occurrence of a named flag in a command, in order. */
|
|
12
|
+
export function findFlags(command, spec, name) {
|
|
13
|
+
const def = spec.flags.find((flag) => flag.name === name);
|
|
14
|
+
if (!def)
|
|
15
|
+
return [];
|
|
16
|
+
const { argv } = command;
|
|
17
|
+
const matches = [];
|
|
18
|
+
for (let i = 0; i < argv.length; i++) {
|
|
19
|
+
const direct = matchAt(def, argv[i], argv[i + 1]);
|
|
20
|
+
if (direct) {
|
|
21
|
+
matches.push(direct);
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
const clustered = matchInCluster(spec, def, argv[i], argv[i + 1]);
|
|
25
|
+
if (clustered)
|
|
26
|
+
matches.push(clustered);
|
|
27
|
+
}
|
|
28
|
+
return matches;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Match one flag definition against a word and the word that
|
|
32
|
+
* follows it, covering the long, long=value, short and attached
|
|
33
|
+
* short forms. Returns a match, or undefined when the word is not
|
|
34
|
+
* this flag.
|
|
35
|
+
*/
|
|
36
|
+
function matchAt(def, word, next) {
|
|
37
|
+
const separateValue = () => def.takesValue && next ? { value: next.text, valueSpan: next.span } : {};
|
|
38
|
+
const attachedValue = (prefixLength) => ({
|
|
39
|
+
name: def.name,
|
|
40
|
+
flagSpan: word.span,
|
|
41
|
+
value: word.text.slice(prefixLength),
|
|
42
|
+
valueSpan: { start: word.span.start + prefixLength, end: word.span.end },
|
|
43
|
+
});
|
|
44
|
+
const long = def.long ? `--${def.long}` : undefined;
|
|
45
|
+
if (long && word.text === long) {
|
|
46
|
+
return { name: def.name, flagSpan: word.span, ...separateValue() };
|
|
47
|
+
}
|
|
48
|
+
if (long && word.text.startsWith(`${long}=`)) {
|
|
49
|
+
return attachedValue(long.length + 1);
|
|
50
|
+
}
|
|
51
|
+
const short = def.short ? `-${def.short}` : undefined;
|
|
52
|
+
if (short && word.text === short) {
|
|
53
|
+
return { name: def.name, flagSpan: word.span, ...separateValue() };
|
|
54
|
+
}
|
|
55
|
+
if (short &&
|
|
56
|
+
def.takesValue &&
|
|
57
|
+
word.text.length > short.length &&
|
|
58
|
+
word.text.startsWith(short)) {
|
|
59
|
+
return attachedValue(short.length);
|
|
60
|
+
}
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Match a flag inside a clustered short word like `-am`, where
|
|
65
|
+
* leading characters are boolean short flags and a later character
|
|
66
|
+
* is the one being looked for. Walks the cluster left to right
|
|
67
|
+
* against the full spec; bails to undefined the moment it meets a
|
|
68
|
+
* character the spec does not know or an earlier short flag that
|
|
69
|
+
* would itself consume a value, since then the cluster cannot be
|
|
70
|
+
* read safely.
|
|
71
|
+
*/
|
|
72
|
+
function matchInCluster(spec, def, word, next) {
|
|
73
|
+
const { text } = word;
|
|
74
|
+
if (!text.startsWith("-") || text.startsWith("--") || text.length < 2) {
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
const chars = text.slice(1);
|
|
78
|
+
for (let j = 0; j < chars.length; j++) {
|
|
79
|
+
const member = spec.flags.find((flag) => flag.short === chars[j]);
|
|
80
|
+
if (!member)
|
|
81
|
+
return undefined;
|
|
82
|
+
if (member.name === def.name) {
|
|
83
|
+
if (!def.takesValue)
|
|
84
|
+
return { name: def.name, flagSpan: word.span };
|
|
85
|
+
const rest = chars.slice(j + 1);
|
|
86
|
+
if (rest.length > 0) {
|
|
87
|
+
const prefixLength = 1 + j + 1;
|
|
88
|
+
return {
|
|
89
|
+
name: def.name,
|
|
90
|
+
flagSpan: word.span,
|
|
91
|
+
value: rest,
|
|
92
|
+
valueSpan: {
|
|
93
|
+
start: word.span.start + prefixLength,
|
|
94
|
+
end: word.span.end,
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
return next
|
|
99
|
+
? {
|
|
100
|
+
name: def.name,
|
|
101
|
+
flagSpan: word.span,
|
|
102
|
+
value: next.text,
|
|
103
|
+
valueSpan: next.span,
|
|
104
|
+
}
|
|
105
|
+
: { name: def.name, flagSpan: word.span };
|
|
106
|
+
}
|
|
107
|
+
if (member.takesValue)
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command model: a lossless, range-indexed view of a bash command
|
|
3
|
+
* line, plus a flag-spec layer for understanding and a splice
|
|
4
|
+
* primitive for editing.
|
|
5
|
+
*
|
|
6
|
+
* Public entry point. Guardians and interceptors pull from here to
|
|
7
|
+
* detect, enforce and rewrite commands without reconstructing them.
|
|
8
|
+
*/
|
|
9
|
+
export type { EffectiveCwd } from "./cwd.js";
|
|
10
|
+
export { effectiveCwd } from "./cwd.js";
|
|
11
|
+
export type { Edit } from "./edit.js";
|
|
12
|
+
export { applyEdits } from "./edit.js";
|
|
13
|
+
export type { FlagDef, FlagMatch, FlagSpec } from "./flags.js";
|
|
14
|
+
export { findFlag, findFlags } from "./flags.js";
|
|
15
|
+
export { tokenize } from "./tokenize.js";
|
|
16
|
+
export type { CommandLine, Connector, Heredoc, Quoting, Redirect, SimpleCommand, Span, Word, } from "./types.js";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command model: a lossless, range-indexed view of a bash command
|
|
3
|
+
* line, plus a flag-spec layer for understanding and a splice
|
|
4
|
+
* primitive for editing.
|
|
5
|
+
*
|
|
6
|
+
* Public entry point. Guardians and interceptors pull from here to
|
|
7
|
+
* detect, enforce and rewrite commands without reconstructing them.
|
|
8
|
+
*/
|
|
9
|
+
export { effectiveCwd } from "./cwd.js";
|
|
10
|
+
export { applyEdits } from "./edit.js";
|
|
11
|
+
export { findFlag, findFlags } from "./flags.js";
|
|
12
|
+
export { tokenize } from "./tokenize.js";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tokenizer for the command model. Turns a bash command string
|
|
3
|
+
* into a lossless, range-indexed CommandLine.
|
|
4
|
+
*/
|
|
5
|
+
import type { CommandLine } from "./types.js";
|
|
6
|
+
/** Tokenize a bash command line into a CommandLine. */
|
|
7
|
+
export declare function tokenize(source: string): CommandLine;
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tokenizer for the command model. Turns a bash command string
|
|
3
|
+
* into a lossless, range-indexed CommandLine.
|
|
4
|
+
*/
|
|
5
|
+
import { matchHeredocs } from "../shell/parse.js";
|
|
6
|
+
/** Tokenize a bash command line into a CommandLine. */
|
|
7
|
+
export function tokenize(source) {
|
|
8
|
+
const heredocs = collectHeredocs(source);
|
|
9
|
+
const { segments, connectors } = splitTopLevel(source, heredocs);
|
|
10
|
+
const commands = [];
|
|
11
|
+
for (const segment of segments) {
|
|
12
|
+
const command = buildCommand(source, segment.start, segment.end, heredocs);
|
|
13
|
+
if (command)
|
|
14
|
+
commands.push(command);
|
|
15
|
+
}
|
|
16
|
+
const unsupportedReason = detectUnsupported(source, heredocs) ?? detectControlFlow(commands);
|
|
17
|
+
return {
|
|
18
|
+
source,
|
|
19
|
+
commands,
|
|
20
|
+
connectors,
|
|
21
|
+
supported: unsupportedReason === undefined,
|
|
22
|
+
...(unsupportedReason ? { unsupportedReason } : {}),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Scan for constructs outside the supported grammar, ignoring
|
|
27
|
+
* quoted text and heredoc bodies (where the bytes are literal or
|
|
28
|
+
* user content, not command structure). Returns a reason when one
|
|
29
|
+
* is found, so a consumer can fail closed on it.
|
|
30
|
+
*/
|
|
31
|
+
function detectUnsupported(source, heredocs) {
|
|
32
|
+
let i = 0;
|
|
33
|
+
const n = source.length;
|
|
34
|
+
while (i < n) {
|
|
35
|
+
const body = heredocs.find((h) => i >= h.bodyStart && i < h.bodyEnd);
|
|
36
|
+
if (body) {
|
|
37
|
+
i = body.bodyEnd;
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
const ch = source[i];
|
|
41
|
+
if (ch === "'" || ch === '"') {
|
|
42
|
+
i = skipQuoted(source, i);
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
if (ch === "\\") {
|
|
46
|
+
i += 2;
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
if (ch === "$" && source[i + 1] === "(") {
|
|
50
|
+
return "command substitution $(...) is not supported";
|
|
51
|
+
}
|
|
52
|
+
if (ch === "`") {
|
|
53
|
+
return "backtick command substitution is not supported";
|
|
54
|
+
}
|
|
55
|
+
if (ch === "(") {
|
|
56
|
+
return "a subshell (...) is not supported";
|
|
57
|
+
}
|
|
58
|
+
if (ch === "{" && isWhitespace(source[i + 1])) {
|
|
59
|
+
return "a brace group { ...; } is not supported";
|
|
60
|
+
}
|
|
61
|
+
i++;
|
|
62
|
+
}
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
const CONTROL_FLOW_KEYWORDS = new Set([
|
|
66
|
+
"if",
|
|
67
|
+
"then",
|
|
68
|
+
"else",
|
|
69
|
+
"elif",
|
|
70
|
+
"fi",
|
|
71
|
+
"for",
|
|
72
|
+
"while",
|
|
73
|
+
"until",
|
|
74
|
+
"do",
|
|
75
|
+
"done",
|
|
76
|
+
"case",
|
|
77
|
+
"esac",
|
|
78
|
+
"select",
|
|
79
|
+
"function",
|
|
80
|
+
]);
|
|
81
|
+
/** Flag a command whose name is a shell control-flow keyword. */
|
|
82
|
+
function detectControlFlow(commands) {
|
|
83
|
+
for (const command of commands) {
|
|
84
|
+
const name = command.argv[0]?.text;
|
|
85
|
+
if (name && CONTROL_FLOW_KEYWORDS.has(name)) {
|
|
86
|
+
return `shell control flow (${name}) is not supported`;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
/** Locate every heredoc in the source, with body and whole spans. */
|
|
92
|
+
function collectHeredocs(source) {
|
|
93
|
+
return matchHeredocs(source).map((match) => {
|
|
94
|
+
const bodyStart = source.indexOf("\n", match.index) + 1;
|
|
95
|
+
return {
|
|
96
|
+
index: match.index,
|
|
97
|
+
end: match.index + match.length,
|
|
98
|
+
bodyStart,
|
|
99
|
+
bodyEnd: bodyStart + match.body.length,
|
|
100
|
+
delimiter: match.delim,
|
|
101
|
+
quoted: match.quoted,
|
|
102
|
+
};
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Walk the source at the top level, respecting quoting, and split
|
|
107
|
+
* it at connector operators (&&, ||, ;, |, newline). Returns the
|
|
108
|
+
* segment spans between operators and the connectors themselves.
|
|
109
|
+
*/
|
|
110
|
+
function splitTopLevel(source, heredocs) {
|
|
111
|
+
const segments = [];
|
|
112
|
+
const connectors = [];
|
|
113
|
+
let i = 0;
|
|
114
|
+
let segmentStart = 0;
|
|
115
|
+
const n = source.length;
|
|
116
|
+
while (i < n) {
|
|
117
|
+
const heredoc = heredocs.find((h) => h.index === i);
|
|
118
|
+
if (heredoc) {
|
|
119
|
+
i = heredoc.end;
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
if (isContinuation(source, i)) {
|
|
123
|
+
i += 2;
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
const ch = source[i];
|
|
127
|
+
if (ch === "'" || ch === '"') {
|
|
128
|
+
i = skipQuoted(source, i);
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
const op = connectorAt(source, i);
|
|
132
|
+
if (op) {
|
|
133
|
+
segments.push({ start: segmentStart, end: i });
|
|
134
|
+
connectors.push({ op, span: { start: i, end: i + op.length } });
|
|
135
|
+
i += op.length;
|
|
136
|
+
segmentStart = i;
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
i++;
|
|
140
|
+
}
|
|
141
|
+
segments.push({ start: segmentStart, end: n });
|
|
142
|
+
return { segments, connectors };
|
|
143
|
+
}
|
|
144
|
+
/** The connector operator beginning at index i, or undefined. */
|
|
145
|
+
function connectorAt(source, i) {
|
|
146
|
+
const ch = source[i];
|
|
147
|
+
const next = source[i + 1];
|
|
148
|
+
if (ch === "&" && next === "&")
|
|
149
|
+
return "&&";
|
|
150
|
+
// A lone & backgrounds the preceding command. Exclude the
|
|
151
|
+
// redirect forms: &>/&>> (next is >) and >& duplication (the
|
|
152
|
+
// previous char is >), so only a true background & splits.
|
|
153
|
+
if (ch === "&" && next !== ">" && source[i - 1] !== ">")
|
|
154
|
+
return "&";
|
|
155
|
+
if (ch === "|" && next === "|")
|
|
156
|
+
return "||";
|
|
157
|
+
if (ch === "|" && next === "&")
|
|
158
|
+
return "|&";
|
|
159
|
+
if (ch === "|")
|
|
160
|
+
return "|";
|
|
161
|
+
if (ch === ";")
|
|
162
|
+
return ";";
|
|
163
|
+
if (ch === "\n")
|
|
164
|
+
return "\n";
|
|
165
|
+
return undefined;
|
|
166
|
+
}
|
|
167
|
+
/** Build a simple command from the words in source[start, end). */
|
|
168
|
+
function buildCommand(source, start, end, heredocs) {
|
|
169
|
+
const heredoc = heredocs.find((h) => h.index >= start && h.index < end);
|
|
170
|
+
const scanEnd = heredoc ? source.indexOf("\n", heredoc.index) : end;
|
|
171
|
+
const openerWords = scanWords(source, start, scanEnd).filter((word) => !heredoc || word.span.start < heredoc.index);
|
|
172
|
+
if (openerWords.length === 0)
|
|
173
|
+
return undefined;
|
|
174
|
+
let firstArgv = 0;
|
|
175
|
+
while (firstArgv < openerWords.length &&
|
|
176
|
+
isAssignment(openerWords[firstArgv].text)) {
|
|
177
|
+
firstArgv++;
|
|
178
|
+
}
|
|
179
|
+
const assignments = openerWords.slice(0, firstArgv);
|
|
180
|
+
const { argv, redirects } = extractRedirects(openerWords.slice(firstArgv));
|
|
181
|
+
const spanEnd = heredoc
|
|
182
|
+
? heredoc.end
|
|
183
|
+
: openerWords[openerWords.length - 1].span.end;
|
|
184
|
+
return {
|
|
185
|
+
span: { start: openerWords[0].span.start, end: spanEnd },
|
|
186
|
+
assignments,
|
|
187
|
+
argv,
|
|
188
|
+
redirects,
|
|
189
|
+
...(heredoc ? { heredoc: toHeredoc(heredoc) } : {}),
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
/** Project a HeredocInfo onto the public Heredoc shape. */
|
|
193
|
+
function toHeredoc(info) {
|
|
194
|
+
return {
|
|
195
|
+
delimiter: info.delimiter,
|
|
196
|
+
quoted: info.quoted,
|
|
197
|
+
bodySpan: { start: info.bodyStart, end: info.bodyEnd },
|
|
198
|
+
span: { start: info.index, end: info.end },
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
const REDIRECT = /^(\d*)(>>|>|<)(&\d+)?$/;
|
|
202
|
+
/**
|
|
203
|
+
* Pull redirects out of a word list. A redirect operator that names
|
|
204
|
+
* a file descriptor duplication (2>&1) stands alone; any other
|
|
205
|
+
* operator consumes the following word as its target.
|
|
206
|
+
*/
|
|
207
|
+
function extractRedirects(words) {
|
|
208
|
+
const argv = [];
|
|
209
|
+
const redirects = [];
|
|
210
|
+
for (let j = 0; j < words.length; j++) {
|
|
211
|
+
const word = words[j];
|
|
212
|
+
const match = REDIRECT.exec(word.text);
|
|
213
|
+
if (!match) {
|
|
214
|
+
argv.push(word);
|
|
215
|
+
continue;
|
|
216
|
+
}
|
|
217
|
+
const hasDuplication = Boolean(match[3]);
|
|
218
|
+
const target = !hasDuplication ? words[j + 1] : undefined;
|
|
219
|
+
if (target) {
|
|
220
|
+
redirects.push({
|
|
221
|
+
span: { start: word.span.start, end: target.span.end },
|
|
222
|
+
operator: word.text,
|
|
223
|
+
target,
|
|
224
|
+
});
|
|
225
|
+
j++;
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
redirects.push({
|
|
229
|
+
span: { start: word.span.start, end: word.span.end },
|
|
230
|
+
operator: word.text,
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return { argv, redirects };
|
|
235
|
+
}
|
|
236
|
+
const ASSIGNMENT = /^[A-Za-z_][A-Za-z0-9_]*=/;
|
|
237
|
+
/** Whether a word is a leading NAME=value env assignment. */
|
|
238
|
+
function isAssignment(text) {
|
|
239
|
+
return ASSIGNMENT.test(text);
|
|
240
|
+
}
|
|
241
|
+
const isWhitespace = (ch) => ch === " " || ch === "\t" || ch === "\n";
|
|
242
|
+
/** Whether a backslash-newline line continuation begins at i. */
|
|
243
|
+
function isContinuation(source, i) {
|
|
244
|
+
return source[i] === "\\" && source[i + 1] === "\n";
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Index just past a quoted span beginning at the quote at i. Inside
|
|
248
|
+
* double quotes a backslash escapes the next character, so an
|
|
249
|
+
* escaped quote does not end the span; single quotes take no
|
|
250
|
+
* escapes, so a backslash there is literal.
|
|
251
|
+
*/
|
|
252
|
+
function skipQuoted(source, i) {
|
|
253
|
+
const quote = source[i];
|
|
254
|
+
i++;
|
|
255
|
+
while (i < source.length && source[i] !== quote) {
|
|
256
|
+
if (quote === '"' && source[i] === "\\" && i + 1 < source.length) {
|
|
257
|
+
i += 2;
|
|
258
|
+
continue;
|
|
259
|
+
}
|
|
260
|
+
i++;
|
|
261
|
+
}
|
|
262
|
+
if (i < source.length)
|
|
263
|
+
i++;
|
|
264
|
+
return i;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Split source[start, end) into words, treating single- and
|
|
268
|
+
* double-quoted spans as part of the surrounding word so a quoted
|
|
269
|
+
* space does not break the word. Each word's text is the raw source
|
|
270
|
+
* slice, so the span maps back to the source exactly.
|
|
271
|
+
*/
|
|
272
|
+
function scanWords(source, start, end) {
|
|
273
|
+
const words = [];
|
|
274
|
+
let i = start;
|
|
275
|
+
while (i < end) {
|
|
276
|
+
while (i < end && (isWhitespace(source[i]) || isContinuation(source, i))) {
|
|
277
|
+
i += isContinuation(source, i) ? 2 : 1;
|
|
278
|
+
}
|
|
279
|
+
if (i >= end)
|
|
280
|
+
break;
|
|
281
|
+
const wordStart = i;
|
|
282
|
+
let sawSingle = false;
|
|
283
|
+
let sawDouble = false;
|
|
284
|
+
while (i < end && !isWhitespace(source[i]) && !isContinuation(source, i)) {
|
|
285
|
+
const ch = source[i];
|
|
286
|
+
if (ch === "'") {
|
|
287
|
+
sawSingle = true;
|
|
288
|
+
i = skipQuoted(source, i);
|
|
289
|
+
continue;
|
|
290
|
+
}
|
|
291
|
+
if (ch === '"') {
|
|
292
|
+
sawDouble = true;
|
|
293
|
+
i = skipQuoted(source, i);
|
|
294
|
+
continue;
|
|
295
|
+
}
|
|
296
|
+
i++;
|
|
297
|
+
}
|
|
298
|
+
words.push({
|
|
299
|
+
span: { start: wordStart, end: i },
|
|
300
|
+
text: source.slice(wordStart, i),
|
|
301
|
+
quoting: classifyQuoting(sawSingle, sawDouble),
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
return words;
|
|
305
|
+
}
|
|
306
|
+
/** Classify a word's quote style from which quote kinds it used. */
|
|
307
|
+
function classifyQuoting(sawSingle, sawDouble) {
|
|
308
|
+
if (sawSingle && sawDouble)
|
|
309
|
+
return "mixed";
|
|
310
|
+
if (sawSingle)
|
|
311
|
+
return "single";
|
|
312
|
+
if (sawDouble)
|
|
313
|
+
return "double";
|
|
314
|
+
return "none";
|
|
315
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core types for the command model: a lossless, range-indexed
|
|
3
|
+
* description of a bash command line.
|
|
4
|
+
*
|
|
5
|
+
* Every structural element carries a byte span into the original
|
|
6
|
+
* source string, so a consumer can edit by splicing exactly the
|
|
7
|
+
* range it targets and leave everything else untouched.
|
|
8
|
+
*/
|
|
9
|
+
/** A half-open byte range [start, end) into the source string. */
|
|
10
|
+
export interface Span {
|
|
11
|
+
readonly start: number;
|
|
12
|
+
readonly end: number;
|
|
13
|
+
}
|
|
14
|
+
/** How a word was quoted in the source. */
|
|
15
|
+
export type Quoting = "none" | "single" | "double" | "mixed";
|
|
16
|
+
/** A single shell word (a command name, a flag, a value). */
|
|
17
|
+
export interface Word {
|
|
18
|
+
readonly span: Span;
|
|
19
|
+
readonly text: string;
|
|
20
|
+
readonly quoting: Quoting;
|
|
21
|
+
}
|
|
22
|
+
/** A heredoc attached to a simple command. */
|
|
23
|
+
export interface Heredoc {
|
|
24
|
+
readonly delimiter: string;
|
|
25
|
+
readonly quoted: boolean;
|
|
26
|
+
readonly bodySpan: Span;
|
|
27
|
+
readonly span: Span;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* A redirect, and the word it names when it names one.
|
|
31
|
+
*
|
|
32
|
+
* The operator is kept as written, so a consumer can tell a content
|
|
33
|
+
* target (`>`, `>>`) from a stream being routed (`2>`, `&>`). The target
|
|
34
|
+
* is absent for a file-descriptor duplication such as `2>&1`, which names
|
|
35
|
+
* no file at all.
|
|
36
|
+
*/
|
|
37
|
+
export interface Redirect {
|
|
38
|
+
readonly span: Span;
|
|
39
|
+
readonly operator: string;
|
|
40
|
+
readonly target?: Word;
|
|
41
|
+
}
|
|
42
|
+
/** A simple command: optional env assignments, argv and redirects. */
|
|
43
|
+
export interface SimpleCommand {
|
|
44
|
+
readonly span: Span;
|
|
45
|
+
readonly assignments: Word[];
|
|
46
|
+
readonly argv: Word[];
|
|
47
|
+
readonly redirects: Redirect[];
|
|
48
|
+
readonly heredoc?: Heredoc;
|
|
49
|
+
}
|
|
50
|
+
/** A top-level operator joining two simple commands. */
|
|
51
|
+
export interface Connector {
|
|
52
|
+
readonly op: "&&" | "||" | ";" | "|" | "|&" | "&" | "\n";
|
|
53
|
+
readonly span: Span;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* A tokenized command line. The commands and connectors interleave
|
|
57
|
+
* in source order; `supported` is false when the line contains a
|
|
58
|
+
* construct outside the grammar the model understands.
|
|
59
|
+
*/
|
|
60
|
+
export interface CommandLine {
|
|
61
|
+
readonly source: string;
|
|
62
|
+
readonly commands: SimpleCommand[];
|
|
63
|
+
readonly connectors: Connector[];
|
|
64
|
+
readonly supported: boolean;
|
|
65
|
+
readonly unsupportedReason?: string;
|
|
66
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core types for the command model: a lossless, range-indexed
|
|
3
|
+
* description of a bash command line.
|
|
4
|
+
*
|
|
5
|
+
* Every structural element carries a byte span into the original
|
|
6
|
+
* source string, so a consumer can edit by splicing exactly the
|
|
7
|
+
* range it targets and leave everything else untouched.
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Side completions: run a one-shot completion against a model
|
|
3
|
+
* from the registry, off the agent's own loop.
|
|
4
|
+
*
|
|
5
|
+
* The advisor and correction capture both need a cheap second
|
|
6
|
+
* model to distill or judge without disturbing the doer. This is
|
|
7
|
+
* the shared mechanism, proven by the milestone-5 probe.
|
|
8
|
+
*
|
|
9
|
+
* Actually running a model is a port (`CompleteSimple`), not
|
|
10
|
+
* something this package can do on its own: `runSideCompletion` and
|
|
11
|
+
* `runInvestigation` both take one as a parameter. An adapter
|
|
12
|
+
* resolves its own host's completion function and passes it in.
|
|
13
|
+
*/
|
|
14
|
+
export { type InvestigationRequest, type InvestigationResult, type LoopTool, runInvestigation, } from "./investigate.js";
|
|
15
|
+
export { looksLikeGlm, type ModelRef, type ModelTarget, pickModel, } from "./resolve.js";
|
|
16
|
+
export { runSideCompletion, type SideCompletionRequest, type SideCompletionResult, } from "./side.js";
|
|
17
|
+
export type { CompatModule, CompleteSimple, CompletionMessage, CompletionRegistry, } from "./types.js";
|