@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,630 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Front-matter parser and serializer for quest READMEs
|
|
3
|
+
* and quest documents.
|
|
4
|
+
*
|
|
5
|
+
* The block is YAML between two `---` fences. We use the
|
|
6
|
+
* `yaml` library for parsing and serialization, and then
|
|
7
|
+
* project the result onto the typed `QuestFrontMatter` /
|
|
8
|
+
* `DocumentFrontMatter` shapes the rest of the library
|
|
9
|
+
* works with.
|
|
10
|
+
*
|
|
11
|
+
* Validation rules:
|
|
12
|
+
*
|
|
13
|
+
* - Required scalars must be present; missing or invalid
|
|
14
|
+
* ones yield `undefined` from the parser so callers can
|
|
15
|
+
* surface a clean error.
|
|
16
|
+
* - Enums (kind, status, priority, stage) are strict; an
|
|
17
|
+
* unknown value is rejected.
|
|
18
|
+
* - Aliases serialize as objects (`{type, value}`) rather
|
|
19
|
+
* than `type:value` strings, so consumers don't have to
|
|
20
|
+
* reparse them.
|
|
21
|
+
* - Sessions serialize as objects with `id` plus optional
|
|
22
|
+
* `name`, `cwd`, `started` and `status` fields.
|
|
23
|
+
* - Optional fields (`due`, `eta`, etc.) only appear in the
|
|
24
|
+
* output when set.
|
|
25
|
+
*/
|
|
26
|
+
import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
|
|
27
|
+
const QUEST_KINDS = ["quest", "subquest", "sidequest"];
|
|
28
|
+
const QUEST_STATUSES = [
|
|
29
|
+
"active",
|
|
30
|
+
"paused",
|
|
31
|
+
"blocked",
|
|
32
|
+
"concluded",
|
|
33
|
+
"retired",
|
|
34
|
+
];
|
|
35
|
+
const QUEST_PRIORITIES = [
|
|
36
|
+
"driving",
|
|
37
|
+
"active",
|
|
38
|
+
"queued",
|
|
39
|
+
"bench",
|
|
40
|
+
"someday",
|
|
41
|
+
];
|
|
42
|
+
const DOCUMENT_KINDS = ["plan", "research", "brief", "report"];
|
|
43
|
+
const DOCUMENT_STAGES = [
|
|
44
|
+
"think",
|
|
45
|
+
"draft",
|
|
46
|
+
"build",
|
|
47
|
+
"concluded",
|
|
48
|
+
"retired",
|
|
49
|
+
];
|
|
50
|
+
const SESSION_STATUSES = ["active", "detached"];
|
|
51
|
+
/** Split a text into the front-matter block (raw YAML) and the body. */
|
|
52
|
+
export function splitFrontMatter(text) {
|
|
53
|
+
const lines = text.split("\n");
|
|
54
|
+
if (lines[0]?.trim() !== "---")
|
|
55
|
+
return undefined;
|
|
56
|
+
let end = -1;
|
|
57
|
+
for (let i = 1; i < lines.length; i++) {
|
|
58
|
+
if (lines[i].trim() === "---") {
|
|
59
|
+
end = i;
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (end === -1)
|
|
64
|
+
return undefined;
|
|
65
|
+
const fmText = lines.slice(1, end).join("\n");
|
|
66
|
+
let body = lines.slice(end + 1).join("\n");
|
|
67
|
+
if (body.startsWith("\n"))
|
|
68
|
+
body = body.slice(1);
|
|
69
|
+
return { fmText, body };
|
|
70
|
+
}
|
|
71
|
+
function parseFrontMatterBlock(text) {
|
|
72
|
+
const split = splitFrontMatter(text);
|
|
73
|
+
if (!split)
|
|
74
|
+
return undefined;
|
|
75
|
+
let raw;
|
|
76
|
+
try {
|
|
77
|
+
raw = parseYaml(split.fmText) ?? {};
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
return raw;
|
|
86
|
+
}
|
|
87
|
+
function asEnum(value, options) {
|
|
88
|
+
if (typeof value !== "string")
|
|
89
|
+
return undefined;
|
|
90
|
+
return options.includes(value) ? value : undefined;
|
|
91
|
+
}
|
|
92
|
+
function asString(value) {
|
|
93
|
+
return typeof value === "string" && value.length > 0 ? value : undefined;
|
|
94
|
+
}
|
|
95
|
+
function asNumber(value) {
|
|
96
|
+
if (typeof value === "number" && Number.isFinite(value))
|
|
97
|
+
return value;
|
|
98
|
+
if (typeof value === "string") {
|
|
99
|
+
const n = Number(value);
|
|
100
|
+
return Number.isFinite(n) ? n : undefined;
|
|
101
|
+
}
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
function parseAliasValue(raw) {
|
|
105
|
+
if (typeof raw === "string") {
|
|
106
|
+
const colon = raw.indexOf(":");
|
|
107
|
+
if (colon <= 0)
|
|
108
|
+
return undefined;
|
|
109
|
+
const type = raw.slice(0, colon).trim();
|
|
110
|
+
const value = raw.slice(colon + 1).trim();
|
|
111
|
+
if (!type || !value)
|
|
112
|
+
return undefined;
|
|
113
|
+
return { type, value };
|
|
114
|
+
}
|
|
115
|
+
if (raw && typeof raw === "object" && !Array.isArray(raw)) {
|
|
116
|
+
const obj = raw;
|
|
117
|
+
const type = asString(obj.type);
|
|
118
|
+
const value = asString(obj.value);
|
|
119
|
+
if (type && value)
|
|
120
|
+
return { type, value };
|
|
121
|
+
}
|
|
122
|
+
return undefined;
|
|
123
|
+
}
|
|
124
|
+
function parseAliases(raw) {
|
|
125
|
+
if (!Array.isArray(raw))
|
|
126
|
+
return [];
|
|
127
|
+
const out = [];
|
|
128
|
+
for (const entry of raw) {
|
|
129
|
+
const alias = parseAliasValue(entry);
|
|
130
|
+
if (alias)
|
|
131
|
+
out.push(alias);
|
|
132
|
+
}
|
|
133
|
+
return out;
|
|
134
|
+
}
|
|
135
|
+
function parseSession(raw) {
|
|
136
|
+
if (typeof raw === "string") {
|
|
137
|
+
return raw.length > 0 ? { id: raw } : undefined;
|
|
138
|
+
}
|
|
139
|
+
if (raw && typeof raw === "object" && !Array.isArray(raw)) {
|
|
140
|
+
const obj = raw;
|
|
141
|
+
const id = asString(obj.id);
|
|
142
|
+
if (!id)
|
|
143
|
+
return undefined;
|
|
144
|
+
const session = { id };
|
|
145
|
+
const name = asString(obj.name);
|
|
146
|
+
if (name)
|
|
147
|
+
session.name = name;
|
|
148
|
+
const cwd = asString(obj.cwd);
|
|
149
|
+
if (cwd)
|
|
150
|
+
session.cwd = cwd;
|
|
151
|
+
const started = asString(obj.started);
|
|
152
|
+
if (started)
|
|
153
|
+
session.started = started;
|
|
154
|
+
const status = asEnum(obj.status, SESSION_STATUSES);
|
|
155
|
+
if (status)
|
|
156
|
+
session.status = status;
|
|
157
|
+
const instanceId = asString(obj.instanceId);
|
|
158
|
+
if (instanceId)
|
|
159
|
+
session.instanceId = instanceId;
|
|
160
|
+
const process = parseSessionProcess(obj.process);
|
|
161
|
+
if (process)
|
|
162
|
+
session.process = process;
|
|
163
|
+
const terminal = parseSessionTerminal(obj.terminal);
|
|
164
|
+
if (terminal)
|
|
165
|
+
session.terminal = terminal;
|
|
166
|
+
return session;
|
|
167
|
+
}
|
|
168
|
+
return undefined;
|
|
169
|
+
}
|
|
170
|
+
function parseSessionProcess(raw) {
|
|
171
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
172
|
+
return undefined;
|
|
173
|
+
const obj = raw;
|
|
174
|
+
const hostId = asString(obj.hostId);
|
|
175
|
+
const startToken = asString(obj.startToken);
|
|
176
|
+
const pid = typeof obj.pid === "number" ? obj.pid : undefined;
|
|
177
|
+
if (!hostId || pid === undefined || !startToken)
|
|
178
|
+
return undefined;
|
|
179
|
+
// The boot token is optional on both sides: a record written before
|
|
180
|
+
// it was captured stays valid, and reading it back is what lets a
|
|
181
|
+
// pre-reboot session be retired without probing a meaningless pid.
|
|
182
|
+
const bootToken = asString(obj.bootToken);
|
|
183
|
+
return { hostId, pid, startToken, ...(bootToken ? { bootToken } : {}) };
|
|
184
|
+
}
|
|
185
|
+
function parseSessionTerminal(raw) {
|
|
186
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
187
|
+
return undefined;
|
|
188
|
+
const obj = raw;
|
|
189
|
+
const driverId = asString(obj.driverId);
|
|
190
|
+
const value = asString(obj.value);
|
|
191
|
+
if (!driverId || !value)
|
|
192
|
+
return undefined;
|
|
193
|
+
const terminal = { driverId, value };
|
|
194
|
+
const scope = asString(obj.scope);
|
|
195
|
+
if (scope)
|
|
196
|
+
terminal.scope = scope;
|
|
197
|
+
const hostId = asString(obj.hostId);
|
|
198
|
+
if (hostId)
|
|
199
|
+
terminal.hostId = hostId;
|
|
200
|
+
return terminal;
|
|
201
|
+
}
|
|
202
|
+
function parseSessions(raw) {
|
|
203
|
+
if (!Array.isArray(raw))
|
|
204
|
+
return [];
|
|
205
|
+
const out = [];
|
|
206
|
+
for (const entry of raw) {
|
|
207
|
+
const session = parseSession(entry);
|
|
208
|
+
if (session)
|
|
209
|
+
out.push(session);
|
|
210
|
+
}
|
|
211
|
+
return out;
|
|
212
|
+
}
|
|
213
|
+
function parseTree(raw) {
|
|
214
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
215
|
+
return undefined;
|
|
216
|
+
const obj = raw;
|
|
217
|
+
const path = asString(obj.path);
|
|
218
|
+
const providerId = asString(obj.providerId);
|
|
219
|
+
if (!path || !providerId)
|
|
220
|
+
return undefined;
|
|
221
|
+
const tree = { path, providerId };
|
|
222
|
+
const branch = asString(obj.branch);
|
|
223
|
+
if (branch)
|
|
224
|
+
tree.branch = branch;
|
|
225
|
+
const repoRoot = asString(obj.repoRoot);
|
|
226
|
+
if (repoRoot)
|
|
227
|
+
tree.repoRoot = repoRoot;
|
|
228
|
+
if (Array.isArray(obj.zones)) {
|
|
229
|
+
const zones = [];
|
|
230
|
+
for (const z of obj.zones) {
|
|
231
|
+
const zone = asString(z);
|
|
232
|
+
if (zone)
|
|
233
|
+
zones.push(zone);
|
|
234
|
+
}
|
|
235
|
+
if (zones.length > 0)
|
|
236
|
+
tree.zones = zones;
|
|
237
|
+
}
|
|
238
|
+
const origin = asString(obj.origin);
|
|
239
|
+
if (origin === "scaffolded" || origin === "adopted")
|
|
240
|
+
tree.origin = origin;
|
|
241
|
+
return tree;
|
|
242
|
+
}
|
|
243
|
+
function parseTrees(raw) {
|
|
244
|
+
if (!Array.isArray(raw))
|
|
245
|
+
return [];
|
|
246
|
+
const out = [];
|
|
247
|
+
for (const entry of raw) {
|
|
248
|
+
const tree = parseTree(entry);
|
|
249
|
+
if (tree)
|
|
250
|
+
out.push(tree);
|
|
251
|
+
}
|
|
252
|
+
return out;
|
|
253
|
+
}
|
|
254
|
+
function parsePendingPruneEntry(raw) {
|
|
255
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
256
|
+
return undefined;
|
|
257
|
+
const obj = raw;
|
|
258
|
+
const path = asString(obj.path);
|
|
259
|
+
const reason = asString(obj.reason);
|
|
260
|
+
const detectedAt = asString(obj.detectedAt);
|
|
261
|
+
if (!path || !reason || !detectedAt)
|
|
262
|
+
return undefined;
|
|
263
|
+
return { path, reason, detectedAt };
|
|
264
|
+
}
|
|
265
|
+
function parsePendingPrune(raw) {
|
|
266
|
+
// Accept both the legacy scalar form (one entry as an
|
|
267
|
+
// object) and the canonical array form, so an older
|
|
268
|
+
// README round-trips without losing data.
|
|
269
|
+
if (Array.isArray(raw)) {
|
|
270
|
+
const out = [];
|
|
271
|
+
for (const entry of raw) {
|
|
272
|
+
const parsed = parsePendingPruneEntry(entry);
|
|
273
|
+
if (parsed)
|
|
274
|
+
out.push(parsed);
|
|
275
|
+
}
|
|
276
|
+
return out;
|
|
277
|
+
}
|
|
278
|
+
const single = parsePendingPruneEntry(raw);
|
|
279
|
+
return single ? [single] : [];
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Keys the quest-frontmatter parser recognises. Anything
|
|
283
|
+
* outside this set is captured into `_extra` so a
|
|
284
|
+
* round-trip preserves user-added fields.
|
|
285
|
+
*/
|
|
286
|
+
const KNOWN_QUEST_KEYS = new Set([
|
|
287
|
+
"id",
|
|
288
|
+
"kind",
|
|
289
|
+
"parent",
|
|
290
|
+
"status",
|
|
291
|
+
"priority",
|
|
292
|
+
"rank",
|
|
293
|
+
"started",
|
|
294
|
+
"updated",
|
|
295
|
+
"due",
|
|
296
|
+
"eta",
|
|
297
|
+
"aliases",
|
|
298
|
+
"sessions",
|
|
299
|
+
"trees",
|
|
300
|
+
"pendingPrune",
|
|
301
|
+
"primaryPlanId",
|
|
302
|
+
"scratchDir",
|
|
303
|
+
"verify",
|
|
304
|
+
]);
|
|
305
|
+
const KNOWN_DOCUMENT_KEYS = new Set([
|
|
306
|
+
"id",
|
|
307
|
+
"kind",
|
|
308
|
+
"quest",
|
|
309
|
+
"stage",
|
|
310
|
+
"updated",
|
|
311
|
+
"rounds",
|
|
312
|
+
"subject",
|
|
313
|
+
]);
|
|
314
|
+
function captureExtras(raw, known) {
|
|
315
|
+
let extras;
|
|
316
|
+
for (const key of Object.keys(raw)) {
|
|
317
|
+
if (known.has(key))
|
|
318
|
+
continue;
|
|
319
|
+
extras ??= {};
|
|
320
|
+
extras[key] = raw[key];
|
|
321
|
+
}
|
|
322
|
+
return extras;
|
|
323
|
+
}
|
|
324
|
+
/** Parse the quest README front-matter from raw text. */
|
|
325
|
+
export function parseQuestFrontMatter(text) {
|
|
326
|
+
const split = splitFrontMatter(text);
|
|
327
|
+
if (!split)
|
|
328
|
+
return undefined;
|
|
329
|
+
const raw = parseFrontMatterBlock(text);
|
|
330
|
+
if (!raw)
|
|
331
|
+
return undefined;
|
|
332
|
+
const id = asString(raw.id);
|
|
333
|
+
const kind = asEnum(raw.kind, QUEST_KINDS);
|
|
334
|
+
const status = asEnum(raw.status, QUEST_STATUSES);
|
|
335
|
+
const priority = asEnum(raw.priority, QUEST_PRIORITIES);
|
|
336
|
+
const rank = asNumber(raw.rank);
|
|
337
|
+
const started = asString(raw.started);
|
|
338
|
+
const updated = asString(raw.updated);
|
|
339
|
+
if (!id ||
|
|
340
|
+
!kind ||
|
|
341
|
+
!status ||
|
|
342
|
+
!priority ||
|
|
343
|
+
rank === undefined ||
|
|
344
|
+
!started ||
|
|
345
|
+
!updated) {
|
|
346
|
+
return undefined;
|
|
347
|
+
}
|
|
348
|
+
const parentRaw = raw.parent;
|
|
349
|
+
const parent = parentRaw === null ||
|
|
350
|
+
parentRaw === undefined ||
|
|
351
|
+
parentRaw === "null" ||
|
|
352
|
+
parentRaw === "~"
|
|
353
|
+
? null
|
|
354
|
+
: typeof parentRaw === "string"
|
|
355
|
+
? parentRaw
|
|
356
|
+
: null;
|
|
357
|
+
const frontMatter = {
|
|
358
|
+
id,
|
|
359
|
+
kind,
|
|
360
|
+
parent,
|
|
361
|
+
status,
|
|
362
|
+
priority,
|
|
363
|
+
rank,
|
|
364
|
+
started,
|
|
365
|
+
updated,
|
|
366
|
+
aliases: parseAliases(raw.aliases),
|
|
367
|
+
sessions: parseSessions(raw.sessions),
|
|
368
|
+
};
|
|
369
|
+
const due = asString(raw.due);
|
|
370
|
+
const eta = asString(raw.eta);
|
|
371
|
+
if (due)
|
|
372
|
+
frontMatter.due = due;
|
|
373
|
+
if (eta)
|
|
374
|
+
frontMatter.eta = eta;
|
|
375
|
+
const trees = parseTrees(raw.trees);
|
|
376
|
+
if (trees.length > 0)
|
|
377
|
+
frontMatter.trees = trees;
|
|
378
|
+
const pendingPrune = parsePendingPrune(raw.pendingPrune);
|
|
379
|
+
if (pendingPrune.length > 0)
|
|
380
|
+
frontMatter.pendingPrune = pendingPrune;
|
|
381
|
+
const scratchDir = asString(raw.scratchDir);
|
|
382
|
+
if (scratchDir)
|
|
383
|
+
frontMatter.scratchDir = scratchDir;
|
|
384
|
+
const primaryPlanId = asString(raw.primaryPlanId);
|
|
385
|
+
if (primaryPlanId)
|
|
386
|
+
frontMatter.primaryPlanId = primaryPlanId;
|
|
387
|
+
const verify = asString(raw.verify);
|
|
388
|
+
if (verify)
|
|
389
|
+
frontMatter.verify = verify;
|
|
390
|
+
const extras = captureExtras(raw, KNOWN_QUEST_KEYS);
|
|
391
|
+
if (extras)
|
|
392
|
+
frontMatter._extra = extras;
|
|
393
|
+
return { frontMatter, body: split.body };
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Why a document's front-matter would not parse, in plain words.
|
|
397
|
+
*
|
|
398
|
+
* Discovery drops what it cannot read, and a dropped document is
|
|
399
|
+
* worse than a broken one: it exists on disk, it is not in any
|
|
400
|
+
* listing, and nothing anywhere says a record was skipped. Three
|
|
401
|
+
* documents were invisible this way, two carrying a stage of
|
|
402
|
+
* `verified` and one `final`, neither of which is a stage.
|
|
403
|
+
*
|
|
404
|
+
* Kept apart from {@link parseDocumentFrontMatter} rather than
|
|
405
|
+
* changing what it returns. The parser has a dozen callers that all
|
|
406
|
+
* want the same yes-or-no answer, and only the one walking the tree
|
|
407
|
+
* needs to explain itself.
|
|
408
|
+
*/
|
|
409
|
+
export function explainDocumentFrontMatter(text) {
|
|
410
|
+
if (!splitFrontMatter(text))
|
|
411
|
+
return ["it has no front-matter block"];
|
|
412
|
+
const raw = parseFrontMatterBlock(text);
|
|
413
|
+
if (!raw)
|
|
414
|
+
return ["its front-matter block is not readable"];
|
|
415
|
+
const said = [];
|
|
416
|
+
if (!asString(raw.id))
|
|
417
|
+
said.push("it has no id");
|
|
418
|
+
if (!asString(raw.quest))
|
|
419
|
+
said.push("it names no quest");
|
|
420
|
+
if (!asString(raw.updated))
|
|
421
|
+
said.push("it has no updated date");
|
|
422
|
+
// The two closed vocabularies, reported with the offending value,
|
|
423
|
+
// because "kind is invalid" sends the reader to go and look and the
|
|
424
|
+
// whole point is that they cannot see the record.
|
|
425
|
+
for (const [field, options] of [
|
|
426
|
+
["kind", DOCUMENT_KINDS],
|
|
427
|
+
["stage", DOCUMENT_STAGES],
|
|
428
|
+
]) {
|
|
429
|
+
const value = raw[field];
|
|
430
|
+
if (asEnum(value, options))
|
|
431
|
+
continue;
|
|
432
|
+
said.push(value === undefined
|
|
433
|
+
? `it has no ${field}`
|
|
434
|
+
: `its ${field} is ${JSON.stringify(value)}, and the ${field}s are ${options.join(", ")}`);
|
|
435
|
+
}
|
|
436
|
+
return said;
|
|
437
|
+
}
|
|
438
|
+
/** Parse a quest document (plan/research/brief/report) front-matter. */
|
|
439
|
+
/**
|
|
440
|
+
* Why a document's front-matter will not parse, or undefined when it
|
|
441
|
+
* will.
|
|
442
|
+
*
|
|
443
|
+
* Named fields rather than a verdict, because "no valid front-matter" sends
|
|
444
|
+
* a reader to diff the file against a sibling to work out which key is
|
|
445
|
+
* wrong. The required set is small and knowable, so it can simply be said.
|
|
446
|
+
*/
|
|
447
|
+
export function documentFrontMatterProblem(text) {
|
|
448
|
+
const split = splitFrontMatter(text);
|
|
449
|
+
if (!split)
|
|
450
|
+
return "it has no front-matter block";
|
|
451
|
+
const raw = parseFrontMatterBlock(text);
|
|
452
|
+
if (!raw)
|
|
453
|
+
return "its front-matter block is not readable as key: value";
|
|
454
|
+
const missing = [
|
|
455
|
+
...(asString(raw.id) ? [] : ["id"]),
|
|
456
|
+
...(asEnum(raw.kind, DOCUMENT_KINDS) ? [] : ["kind"]),
|
|
457
|
+
...(asString(raw.quest) ? [] : ["quest"]),
|
|
458
|
+
...(asEnum(raw.stage, DOCUMENT_STAGES) ? [] : ["stage"]),
|
|
459
|
+
...(asString(raw.updated) ? [] : ["updated"]),
|
|
460
|
+
];
|
|
461
|
+
if (missing.length === 0)
|
|
462
|
+
return undefined;
|
|
463
|
+
// A present-but-wrong value reads as missing here, so the two enums say
|
|
464
|
+
// what they accept rather than leaving somebody to guess at a typo.
|
|
465
|
+
const detail = missing.map((field) => {
|
|
466
|
+
if (field === "kind" && raw.kind !== undefined) {
|
|
467
|
+
return `kind (${DOCUMENT_KINDS.join(", ")})`;
|
|
468
|
+
}
|
|
469
|
+
if (field === "stage" && raw.stage !== undefined) {
|
|
470
|
+
return `stage (${DOCUMENT_STAGES.join(", ")})`;
|
|
471
|
+
}
|
|
472
|
+
return field;
|
|
473
|
+
});
|
|
474
|
+
return `its front-matter is missing or unreadable: ${detail.join(", ")}`;
|
|
475
|
+
}
|
|
476
|
+
export function parseDocumentFrontMatter(text) {
|
|
477
|
+
const split = splitFrontMatter(text);
|
|
478
|
+
if (!split)
|
|
479
|
+
return undefined;
|
|
480
|
+
const raw = parseFrontMatterBlock(text);
|
|
481
|
+
if (!raw)
|
|
482
|
+
return undefined;
|
|
483
|
+
const id = asString(raw.id);
|
|
484
|
+
const kind = asEnum(raw.kind, DOCUMENT_KINDS);
|
|
485
|
+
const quest = asString(raw.quest);
|
|
486
|
+
const stage = asEnum(raw.stage, DOCUMENT_STAGES);
|
|
487
|
+
const updated = asString(raw.updated);
|
|
488
|
+
if (!id || !kind || !quest || !stage || !updated)
|
|
489
|
+
return undefined;
|
|
490
|
+
const fm = { id, kind, quest, stage, updated };
|
|
491
|
+
const rounds = asNumber(raw.rounds);
|
|
492
|
+
if (rounds !== undefined && Number.isInteger(rounds) && rounds >= 0) {
|
|
493
|
+
fm.rounds = rounds;
|
|
494
|
+
}
|
|
495
|
+
const subject = asString(raw.subject);
|
|
496
|
+
if (subject)
|
|
497
|
+
fm.subject = subject;
|
|
498
|
+
const extras = captureExtras(raw, KNOWN_DOCUMENT_KEYS);
|
|
499
|
+
if (extras)
|
|
500
|
+
fm._extra = extras;
|
|
501
|
+
return { frontMatter: fm, body: split.body };
|
|
502
|
+
}
|
|
503
|
+
function sessionToPlain(session) {
|
|
504
|
+
const out = { id: session.id };
|
|
505
|
+
if (session.name !== undefined)
|
|
506
|
+
out.name = session.name;
|
|
507
|
+
if (session.cwd !== undefined)
|
|
508
|
+
out.cwd = session.cwd;
|
|
509
|
+
if (session.started !== undefined)
|
|
510
|
+
out.started = session.started;
|
|
511
|
+
if (session.status !== undefined)
|
|
512
|
+
out.status = session.status;
|
|
513
|
+
if (session.instanceId !== undefined)
|
|
514
|
+
out.instanceId = session.instanceId;
|
|
515
|
+
if (session.process !== undefined)
|
|
516
|
+
out.process = { ...session.process };
|
|
517
|
+
if (session.terminal !== undefined)
|
|
518
|
+
out.terminal = { ...session.terminal };
|
|
519
|
+
return out;
|
|
520
|
+
}
|
|
521
|
+
function renderYamlBlock(payload) {
|
|
522
|
+
// stringifyYaml emits with a trailing newline. Trim so the
|
|
523
|
+
// fenced block is exactly the fields we care about and the
|
|
524
|
+
// downstream join keeps the fence shape stable.
|
|
525
|
+
const text = stringifyYaml(payload, {
|
|
526
|
+
lineWidth: 0,
|
|
527
|
+
nullStr: "null",
|
|
528
|
+
}).replace(/\n$/, "");
|
|
529
|
+
return ["---", text, "---"].join("\n");
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* Serialize front matter over a body, refusing a result the strict
|
|
533
|
+
* parser cannot read back.
|
|
534
|
+
*
|
|
535
|
+
* Every quest writer has to meet this rule, and until now each one
|
|
536
|
+
* decided for itself whether to. The mutation core checked, the tree
|
|
537
|
+
* writer carried its own copy of the check, and the scratch writer
|
|
538
|
+
* did not check at all, which is how a write can leave a README that
|
|
539
|
+
* discovery then cannot see. Serializing and checking is the part
|
|
540
|
+
* they genuinely share; taking the lock is not, since a caller
|
|
541
|
+
* already holding one cannot take it again.
|
|
542
|
+
*/
|
|
543
|
+
export function serializeReadable(fm, body) {
|
|
544
|
+
const text = `${serializeQuestFrontMatter(fm)}\n${body}`;
|
|
545
|
+
if (!parseQuestFrontMatter(text)) {
|
|
546
|
+
return {
|
|
547
|
+
ok: false,
|
|
548
|
+
reason: `Refusing the write: it would give ${fm.id} front matter the parser cannot read back.`,
|
|
549
|
+
};
|
|
550
|
+
}
|
|
551
|
+
return { ok: true, text };
|
|
552
|
+
}
|
|
553
|
+
/** Serialize a quest front-matter back to a `---` block. */
|
|
554
|
+
export function serializeQuestFrontMatter(fm) {
|
|
555
|
+
const payload = {
|
|
556
|
+
id: fm.id,
|
|
557
|
+
kind: fm.kind,
|
|
558
|
+
parent: fm.parent,
|
|
559
|
+
status: fm.status,
|
|
560
|
+
priority: fm.priority,
|
|
561
|
+
rank: fm.rank,
|
|
562
|
+
started: fm.started,
|
|
563
|
+
updated: fm.updated,
|
|
564
|
+
};
|
|
565
|
+
if (fm.due)
|
|
566
|
+
payload.due = fm.due;
|
|
567
|
+
if (fm.eta)
|
|
568
|
+
payload.eta = fm.eta;
|
|
569
|
+
payload.aliases = fm.aliases.map((a) => ({ type: a.type, value: a.value }));
|
|
570
|
+
payload.sessions = fm.sessions.map(sessionToPlain);
|
|
571
|
+
if (fm.trees && fm.trees.length > 0) {
|
|
572
|
+
payload.trees = fm.trees.map(treeToPlain);
|
|
573
|
+
}
|
|
574
|
+
if (fm.pendingPrune && fm.pendingPrune.length > 0) {
|
|
575
|
+
payload.pendingPrune = fm.pendingPrune.map((entry) => ({
|
|
576
|
+
path: entry.path,
|
|
577
|
+
reason: entry.reason,
|
|
578
|
+
detectedAt: entry.detectedAt,
|
|
579
|
+
}));
|
|
580
|
+
}
|
|
581
|
+
if (fm.scratchDir)
|
|
582
|
+
payload.scratchDir = fm.scratchDir;
|
|
583
|
+
if (fm.primaryPlanId)
|
|
584
|
+
payload.primaryPlanId = fm.primaryPlanId;
|
|
585
|
+
if (fm.verify)
|
|
586
|
+
payload.verify = fm.verify;
|
|
587
|
+
if (fm._extra) {
|
|
588
|
+
for (const [key, value] of Object.entries(fm._extra)) {
|
|
589
|
+
if (!(key in payload))
|
|
590
|
+
payload[key] = value;
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
return renderYamlBlock(payload);
|
|
594
|
+
}
|
|
595
|
+
function treeToPlain(tree) {
|
|
596
|
+
const out = {
|
|
597
|
+
path: tree.path,
|
|
598
|
+
providerId: tree.providerId,
|
|
599
|
+
};
|
|
600
|
+
if (tree.branch !== undefined)
|
|
601
|
+
out.branch = tree.branch;
|
|
602
|
+
if (tree.repoRoot !== undefined)
|
|
603
|
+
out.repoRoot = tree.repoRoot;
|
|
604
|
+
if (tree.zones && tree.zones.length > 0)
|
|
605
|
+
out.zones = tree.zones;
|
|
606
|
+
if (tree.origin !== undefined)
|
|
607
|
+
out.origin = tree.origin;
|
|
608
|
+
return out;
|
|
609
|
+
}
|
|
610
|
+
/** Serialize a document front-matter back to a `---` block. */
|
|
611
|
+
export function serializeDocumentFrontMatter(fm) {
|
|
612
|
+
const payload = {
|
|
613
|
+
id: fm.id,
|
|
614
|
+
kind: fm.kind,
|
|
615
|
+
quest: fm.quest,
|
|
616
|
+
stage: fm.stage,
|
|
617
|
+
updated: fm.updated,
|
|
618
|
+
};
|
|
619
|
+
if (fm.rounds !== undefined)
|
|
620
|
+
payload.rounds = fm.rounds;
|
|
621
|
+
if (fm.subject)
|
|
622
|
+
payload.subject = fm.subject;
|
|
623
|
+
if (fm._extra) {
|
|
624
|
+
for (const [key, value] of Object.entries(fm._extra)) {
|
|
625
|
+
if (!(key in payload))
|
|
626
|
+
payload[key] = value;
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
return renderYamlBlock(payload);
|
|
630
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Production git predicates for the write classifier. Each shells
|
|
3
|
+
* out to git from the directory enclosing the target, so a target
|
|
4
|
+
* in a different repository than the session cwd is judged against
|
|
5
|
+
* its own repository. Every call fails closed to the safe answer
|
|
6
|
+
* when git is absent, the path is outside a repository, or the
|
|
7
|
+
* subprocess errors: no tree root, not ignored, not tracked.
|
|
8
|
+
*
|
|
9
|
+
* The pure classifier takes these as injected predicates; this
|
|
10
|
+
* module is the real implementation it composes in production.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* The git working tree root containing the target, or null when the
|
|
14
|
+
* target is not inside any repository. Resolves through `.git` files
|
|
15
|
+
* (worktrees) natively via rev-parse.
|
|
16
|
+
*
|
|
17
|
+
* Accepts a directory as readily as a file. It did not always: it ran
|
|
18
|
+
* git from `located().dir`, which resolves an existing directory to
|
|
19
|
+
* its parent, and the parent of a repository root is outside the
|
|
20
|
+
* repository. So the one input a caller is most likely to hold, the
|
|
21
|
+
* root of the checkout they are standing in, answered null. Two
|
|
22
|
+
* callers knew and worked around it by appending a filename they
|
|
23
|
+
* invented; the third did not, and shipped a verb that refused in the
|
|
24
|
+
* only place it was meant to work.
|
|
25
|
+
*/
|
|
26
|
+
export declare function gitTreeRootOf(absPath: string): string | null;
|
|
27
|
+
/**
|
|
28
|
+
* Whether the target sits in a repository's primary checkout, as
|
|
29
|
+
* opposed to a linked worktree. The main tree's git-dir equals its
|
|
30
|
+
* git-common-dir; a linked worktree's git-dir is under
|
|
31
|
+
* `.git/worktrees/`, so the two differ. False when git cannot answer
|
|
32
|
+
* or the path is outside any repository, so a doubtful case never
|
|
33
|
+
* reads as the shared main tree by accident.
|
|
34
|
+
*/
|
|
35
|
+
export declare function isMainWorkingTree(absPath: string): boolean;
|
|
36
|
+
/** Whether the target is gitignored at its destination. */
|
|
37
|
+
export declare function isGitignored(absPath: string): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Canonicalize a path for comparison, tolerating a path that does
|
|
40
|
+
* not exist yet. Resolves the longest existing ancestor (which
|
|
41
|
+
* turns /var into /private/var on macOS) and re-appends the missing
|
|
42
|
+
* tail. The literal path survives a total failure.
|
|
43
|
+
*/
|
|
44
|
+
export declare function canonicalPath(p: string): string;
|
|
45
|
+
/**
|
|
46
|
+
* Whether `child` is `parent` or lives beneath it, comparing
|
|
47
|
+
* canonicalized paths with a separator boundary so a /var versus
|
|
48
|
+
* /private/var spelling still matches and a sibling whose name
|
|
49
|
+
* merely shares a prefix (feature-2 against feat) does not.
|
|
50
|
+
*/
|
|
51
|
+
export declare function isWithin(child: string, parent: string): boolean;
|
|
52
|
+
/** Whether the target is tracked in its repository's index. */
|
|
53
|
+
export declare function isTracked(absPath: string): boolean;
|