@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,506 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stage-machine verbs: think, draft, build, conclude, retire,
|
|
3
|
+
* reopen. Plus the primary-plan pinning helper and the
|
|
4
|
+
* quest-scoped concludeOrRetire (which delegates to
|
|
5
|
+
* stageTransition for document-scoped calls).
|
|
6
|
+
*
|
|
7
|
+
* pi's own `verbs/stage.ts` threads an `ExtensionContext`
|
|
8
|
+
* through `stageTransition`/`concludeOrRetire`, but never
|
|
9
|
+
* actually reads it -- it's dead parameter plumbing left over
|
|
10
|
+
* from an older signature. Dropped here; nothing in this file
|
|
11
|
+
* needs a host context.
|
|
12
|
+
*/
|
|
13
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
14
|
+
import { dirname, join, resolve } from "node:path";
|
|
15
|
+
import { nowYmd } from "../../internal/quest/dates.js";
|
|
16
|
+
import { discoverQuests } from "../../internal/quest/discovery.js";
|
|
17
|
+
import { parseQuestFrontMatter } from "../../internal/quest/frontmatter.js";
|
|
18
|
+
import { isWithin } from "../../internal/quest/git-signals.js";
|
|
19
|
+
import { mutateQuestFrontMatter } from "../../internal/quest/mutate.js";
|
|
20
|
+
import { reapQuestScratchDir } from "../../internal/quest/scratch.js";
|
|
21
|
+
import { isSealedStatus } from "../../internal/quest/status.js";
|
|
22
|
+
import { recordStructuralOp, } from "../../internal/quest/structural-journal.js";
|
|
23
|
+
import { listTreesOnQuest, removeTreeFromQuest, setPendingPrune, } from "../../internal/quest/trees.js";
|
|
24
|
+
import { resolveTreeProvider } from "../../tree/index.js";
|
|
25
|
+
import { count, noun, verb } from "../../ui/count.js";
|
|
26
|
+
import { displayPath } from "../../ui/path.js";
|
|
27
|
+
import { checkboxProgress, mintId, scaffoldDocument, } from "../index.js";
|
|
28
|
+
import { appendJourneyEntry, createDocument, focusDocument, refreshProgress, sealQuestDocuments, setLoadedStatus, setQuestPriorityByDir, stampQuestUpdated, writeDocumentStage, } from "../lifecycle.js";
|
|
29
|
+
import { transition } from "../machine.js";
|
|
30
|
+
import { subdirForDocumentId } from "./queries.js";
|
|
31
|
+
import { DOCUMENT_KINDS_SET, ok, refuse, } from "./shared.js";
|
|
32
|
+
import { bulkConcludeOrRetire } from "./structural.js";
|
|
33
|
+
/**
|
|
34
|
+
* Pin `planId` as the quest's primary plan when no primary
|
|
35
|
+
* has been recorded yet. Quietly leaves an existing
|
|
36
|
+
* recorded primary in place. This runs at draft time so
|
|
37
|
+
* the gate has a stable answer the first time the user
|
|
38
|
+
* tries to build.
|
|
39
|
+
*/
|
|
40
|
+
function pinPrimaryPlanIfUnset(questDir, planId) {
|
|
41
|
+
// Best-effort pin through the validated core: leave the field unset
|
|
42
|
+
// on any failure so the next draft tries again, and quietly keep an
|
|
43
|
+
// existing recorded primary in place.
|
|
44
|
+
mutateQuestFrontMatter(questDir, (fm) => fm.primaryPlanId ? undefined : { ...fm, primaryPlanId: planId });
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Phrase the landed-transition message for a stage naturally.
|
|
48
|
+
* `Stage` values are past-tense/gerund-shaped, not nouns, so
|
|
49
|
+
* plugging one straight into "Now ${stage} on X" reads wrong for
|
|
50
|
+
* every stage but "think" ("Now build on plan X", "Now concluded
|
|
51
|
+
* on plan X"); each stage gets its own natural phrasing instead.
|
|
52
|
+
*/
|
|
53
|
+
function describeStageResult(stage, state) {
|
|
54
|
+
const kind = state.documentKind;
|
|
55
|
+
const id = state.documentId;
|
|
56
|
+
switch (stage) {
|
|
57
|
+
case "build":
|
|
58
|
+
return `Now building against ${kind} ${id}.`;
|
|
59
|
+
case "concluded":
|
|
60
|
+
return `${kind} ${id} is now concluded.`;
|
|
61
|
+
case "retired":
|
|
62
|
+
return `${kind} ${id} is now retired.`;
|
|
63
|
+
default:
|
|
64
|
+
return `Now thinking about ${kind} ${id}.`;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Drive the document stage machine: think -> draft ->
|
|
69
|
+
* build -> conclude/retire. The build-stage code home is
|
|
70
|
+
* enforced at write time by the write classifier (each
|
|
71
|
+
* adapter's own), not at the transition, so crossing into
|
|
72
|
+
* build never refuses; first-draft document scaffolding is
|
|
73
|
+
* handled inline.
|
|
74
|
+
*/
|
|
75
|
+
export function stageTransition(state, action, params) {
|
|
76
|
+
if (!state.questDir) {
|
|
77
|
+
return refuse("Load a quest before driving the document machine. Try `quest load <id>` first.");
|
|
78
|
+
}
|
|
79
|
+
if (action === "think" && state.documentStage === "idle") {
|
|
80
|
+
if (!params.note?.trim()) {
|
|
81
|
+
return refuse("Say what this document is about in `note`: the problem you are investigating, the plan you are about to draft, or the brief you are scoping.");
|
|
82
|
+
}
|
|
83
|
+
const kind = (params.kind ?? "plan");
|
|
84
|
+
if (!DOCUMENT_KINDS_SET.has(kind)) {
|
|
85
|
+
return refuse(`Unknown kind "${params.kind}". Use plan, research, brief or report.`);
|
|
86
|
+
}
|
|
87
|
+
state.documentKind = kind;
|
|
88
|
+
state.documentStage = "think";
|
|
89
|
+
state.documentId = null;
|
|
90
|
+
state.documentPath = null;
|
|
91
|
+
state.documentTitle = null;
|
|
92
|
+
state.done = 0;
|
|
93
|
+
state.total = 0;
|
|
94
|
+
return ok(`Thinking about a ${kind} for ${state.questId}: ${params.note.trim()}. This loop has no document id yet; \`draft\` (with a title) mints it.`, { stage: "think", kind });
|
|
95
|
+
}
|
|
96
|
+
const result = transition({ stage: state.documentStage }, {
|
|
97
|
+
action,
|
|
98
|
+
note: params.note,
|
|
99
|
+
reason: params.reason,
|
|
100
|
+
});
|
|
101
|
+
if (!result.ok)
|
|
102
|
+
return refuse(result.guidance);
|
|
103
|
+
if (action === "draft" && !state.documentId) {
|
|
104
|
+
if (!params.title?.trim()) {
|
|
105
|
+
return refuse("Give the document a title in `title` (it becomes the H1).");
|
|
106
|
+
}
|
|
107
|
+
// A kind given at draft overrides the think-time kind before the
|
|
108
|
+
// id is minted, so a wrong choice at think is fixable here rather
|
|
109
|
+
// than forcing the loop to be abandoned.
|
|
110
|
+
const requestedKind = params.kind;
|
|
111
|
+
if (requestedKind && !DOCUMENT_KINDS_SET.has(requestedKind)) {
|
|
112
|
+
return refuse(`Unknown kind "${params.kind}". Use plan, research, brief or report.`);
|
|
113
|
+
}
|
|
114
|
+
const kind = requestedKind ?? state.documentKind ?? "plan";
|
|
115
|
+
const prefix = {
|
|
116
|
+
plan: "PLAN",
|
|
117
|
+
research: "RSCH",
|
|
118
|
+
brief: "BRIF",
|
|
119
|
+
report: "RPRT",
|
|
120
|
+
}[kind];
|
|
121
|
+
const id = mintId(prefix);
|
|
122
|
+
const fm = {
|
|
123
|
+
id,
|
|
124
|
+
kind,
|
|
125
|
+
quest: state.questId ?? "",
|
|
126
|
+
stage: "draft",
|
|
127
|
+
updated: nowYmd(),
|
|
128
|
+
};
|
|
129
|
+
const body = scaffoldDocument({
|
|
130
|
+
frontMatter: fm,
|
|
131
|
+
title: params.title.trim(),
|
|
132
|
+
});
|
|
133
|
+
const path = createDocument(state, {
|
|
134
|
+
id,
|
|
135
|
+
kind,
|
|
136
|
+
title: params.title.trim(),
|
|
137
|
+
stage: "draft",
|
|
138
|
+
scaffoldBody: body,
|
|
139
|
+
});
|
|
140
|
+
if (!path) {
|
|
141
|
+
return refuse("Failed to scaffold document; is a quest loaded?");
|
|
142
|
+
}
|
|
143
|
+
state.documentId = id;
|
|
144
|
+
state.documentPath = path;
|
|
145
|
+
state.documentTitle = params.title.trim();
|
|
146
|
+
state.documentStage = "draft";
|
|
147
|
+
state.documentKind = kind;
|
|
148
|
+
if (kind === "plan" && state.questDir) {
|
|
149
|
+
pinPrimaryPlanIfUnset(state.questDir, id);
|
|
150
|
+
}
|
|
151
|
+
refreshProgress(state);
|
|
152
|
+
appendJourneyEntry(state, `Drafted ${kind} ${id}.`);
|
|
153
|
+
return ok(`Drafted ${kind} ${id} at ${displayPath(path)}.`, {
|
|
154
|
+
stage: "draft",
|
|
155
|
+
id,
|
|
156
|
+
path,
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
if (state.documentPath) {
|
|
160
|
+
const persisted = writeDocumentStage(state, result.state.stage);
|
|
161
|
+
if (!persisted) {
|
|
162
|
+
return refuse(`Could not persist the stage change to ${state.documentPath}; the document stays ${state.documentStage}. Check the file exists and is readable, then retry.`);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
state.documentStage = result.state.stage;
|
|
166
|
+
refreshProgress(state);
|
|
167
|
+
if (action === "build") {
|
|
168
|
+
appendJourneyEntry(state, `Building against ${state.documentKind} ${state.documentId}.`);
|
|
169
|
+
}
|
|
170
|
+
else if (action === "conclude") {
|
|
171
|
+
appendJourneyEntry(state, `Concluded ${state.documentKind} ${state.documentId}.`);
|
|
172
|
+
}
|
|
173
|
+
else if (action === "retire") {
|
|
174
|
+
appendJourneyEntry(state, `Retired ${state.documentKind} ${state.documentId}: ${params.reason ?? "no reason given"}.`);
|
|
175
|
+
}
|
|
176
|
+
if (state.questDir)
|
|
177
|
+
stampQuestUpdated(state);
|
|
178
|
+
return ok(describeStageResult(result.state.stage, state), {
|
|
179
|
+
stage: result.state.stage,
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Inspect the loaded quest's primary plan for unchecked work.
|
|
184
|
+
* Returns the plan id and its checkbox tallies when items remain
|
|
185
|
+
* open, so conclude can warn rather than silently sealing a quest
|
|
186
|
+
* with work still on its plan. Returns undefined when there is no
|
|
187
|
+
* primary plan, it is unreadable, has no checkboxes, or is fully
|
|
188
|
+
* checked.
|
|
189
|
+
*/
|
|
190
|
+
function primaryPlanDrift(state) {
|
|
191
|
+
if (!state.questDir)
|
|
192
|
+
return undefined;
|
|
193
|
+
let readme;
|
|
194
|
+
try {
|
|
195
|
+
readme = readFileSync(join(state.questDir, "README.md"), "utf8");
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
return undefined;
|
|
199
|
+
}
|
|
200
|
+
const parsed = parseQuestFrontMatter(readme);
|
|
201
|
+
const planId = parsed?.frontMatter.primaryPlanId;
|
|
202
|
+
if (!planId)
|
|
203
|
+
return undefined;
|
|
204
|
+
let planText;
|
|
205
|
+
try {
|
|
206
|
+
planText = readFileSync(join(state.questDir, "plans", `${planId}.md`), "utf8");
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
return undefined;
|
|
210
|
+
}
|
|
211
|
+
const { done, total } = checkboxProgress(planText);
|
|
212
|
+
if (total === 0 || done >= total)
|
|
213
|
+
return undefined;
|
|
214
|
+
return { planId, done, total };
|
|
215
|
+
}
|
|
216
|
+
/** Read the loaded quest's sessions list off disk. */
|
|
217
|
+
function readSessionsFromQuest(state) {
|
|
218
|
+
if (!state.questDir)
|
|
219
|
+
return [];
|
|
220
|
+
try {
|
|
221
|
+
const readme = join(state.questDir, "README.md");
|
|
222
|
+
const text = readFileSync(readme, "utf8");
|
|
223
|
+
const parsed = parseQuestFrontMatter(text);
|
|
224
|
+
return parsed?.frontMatter.sessions ?? [];
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
227
|
+
// Quest README missing or unreadable; treat as no
|
|
228
|
+
// sessions so we don't accidentally block pruning.
|
|
229
|
+
return [];
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
async function pruneAllTreesOnQuest(state) {
|
|
233
|
+
const pruned = [];
|
|
234
|
+
const blocked = [];
|
|
235
|
+
if (!state.questDir)
|
|
236
|
+
return { pruned, blocked };
|
|
237
|
+
const listing = listTreesOnQuest(state.questDir);
|
|
238
|
+
if (!listing.ok)
|
|
239
|
+
return { pruned, blocked };
|
|
240
|
+
for (const tree of listing.trees) {
|
|
241
|
+
// Only auto-prune trees the tool scaffolded. Adopted trees, and
|
|
242
|
+
// legacy or hand-registered trees with no origin marker, are
|
|
243
|
+
// references the quest does not own, so concluding the quest
|
|
244
|
+
// must never delete them; they are released deliberately with
|
|
245
|
+
// tree-prune.
|
|
246
|
+
if (tree.origin !== "scaffolded")
|
|
247
|
+
continue;
|
|
248
|
+
// Re-read the live session list immediately before each prune
|
|
249
|
+
// rather than from one snapshot taken before the loop: the
|
|
250
|
+
// awaits below yield the event loop, so another session can
|
|
251
|
+
// attach into a tree we are about to prune and must be seen.
|
|
252
|
+
const sessions = readSessionsFromQuest(state);
|
|
253
|
+
const attached = sessions.filter((s) => s.cwd && isWithin(s.cwd, tree.path));
|
|
254
|
+
if (attached.length > 0) {
|
|
255
|
+
const names = attached.map((s) => s.name ?? s.id).join(", ");
|
|
256
|
+
blocked.push({
|
|
257
|
+
path: tree.path,
|
|
258
|
+
reason: `attached ${noun(attached.length, "session")}: ${names}`,
|
|
259
|
+
});
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
const provider = resolveTreeProvider(tree.repoRoot ?? tree.path);
|
|
263
|
+
if (!provider) {
|
|
264
|
+
blocked.push({ path: tree.path, reason: "no applicable provider" });
|
|
265
|
+
continue;
|
|
266
|
+
}
|
|
267
|
+
try {
|
|
268
|
+
await provider.prune({ path: tree.path });
|
|
269
|
+
}
|
|
270
|
+
catch (error) {
|
|
271
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
272
|
+
blocked.push({ path: tree.path, reason: message });
|
|
273
|
+
continue;
|
|
274
|
+
}
|
|
275
|
+
// The worktree is gone; de-register it. If the frontmatter write
|
|
276
|
+
// fails the tree is half-pruned (removed on disk, still listed),
|
|
277
|
+
// so surface it for manual cleanup rather than reporting a clean
|
|
278
|
+
// prune.
|
|
279
|
+
const removal = removeTreeFromQuest(state.questDir, tree.path);
|
|
280
|
+
if (!removal.ok) {
|
|
281
|
+
blocked.push({
|
|
282
|
+
path: tree.path,
|
|
283
|
+
reason: `worktree removed but could not be de-registered: ${removal.reason}`,
|
|
284
|
+
});
|
|
285
|
+
continue;
|
|
286
|
+
}
|
|
287
|
+
pruned.push(tree.path);
|
|
288
|
+
}
|
|
289
|
+
return { pruned, blocked };
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Reopen a concluded or retired quest, returning it to active. The
|
|
293
|
+
* inverse of concluding the whole quest; the resuscitate pattern in
|
|
294
|
+
* the quest convention. Document stages are left as they are, so a
|
|
295
|
+
* reopened quest keeps whatever plans it had concluded; the author
|
|
296
|
+
* moves the ones they want back to build deliberately.
|
|
297
|
+
*/
|
|
298
|
+
export function reopenQuest(state) {
|
|
299
|
+
if (!state.questId || !state.questDir) {
|
|
300
|
+
return refuse("Load a quest before reopening it.");
|
|
301
|
+
}
|
|
302
|
+
if (state.questStatus !== "concluded" && state.questStatus !== "retired") {
|
|
303
|
+
return refuse(`Quest ${state.questId} is ${state.questStatus ?? "active"}, not concluded or retired; there is nothing to reopen.`);
|
|
304
|
+
}
|
|
305
|
+
const result = setLoadedStatus(state, "active");
|
|
306
|
+
if (!result.ok)
|
|
307
|
+
return refuse(result.guidance);
|
|
308
|
+
appendJourneyEntry(state, "Reopened the quest.");
|
|
309
|
+
return ok(`Reopened quest ${state.questId}; now active.`, {
|
|
310
|
+
status: "active",
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Conclude or retire a specific document by id: focus it so the
|
|
315
|
+
* stage machine stays in sync, then drive the document
|
|
316
|
+
* transition. This shares the focused-document semantics, so like
|
|
317
|
+
* any document conclusion it is not reversible through `undo`
|
|
318
|
+
* (only the quest sweep journals a structural op).
|
|
319
|
+
*
|
|
320
|
+
* The id comes from the caller, so the resolved path is contained
|
|
321
|
+
* to the quest's subdirectory: a crafted id carrying path separators
|
|
322
|
+
* or `..` resolves outside it and is refused, never reaching the
|
|
323
|
+
* filesystem. Any prior focus is restored afterward so concluding a
|
|
324
|
+
* sibling document does not silently move the caller's focus.
|
|
325
|
+
*/
|
|
326
|
+
function concludeDocumentById(state, action, params, id, subdir) {
|
|
327
|
+
if (!state.questDir) {
|
|
328
|
+
return refuse("Load a quest before concluding or retiring a document.");
|
|
329
|
+
}
|
|
330
|
+
const expectedDir = resolve(state.questDir, subdir);
|
|
331
|
+
const path = resolve(expectedDir, `${id}.md`);
|
|
332
|
+
if (dirname(path) !== expectedDir) {
|
|
333
|
+
return refuse(`Document id ${id} is not a plain id; it must not contain path separators.`);
|
|
334
|
+
}
|
|
335
|
+
if (!existsSync(path)) {
|
|
336
|
+
return refuse(`Document ${id} not found under the loaded quest. Load the quest that owns it, or pass a quest id for a status sweep.`);
|
|
337
|
+
}
|
|
338
|
+
const priorFocus = state.documentPath;
|
|
339
|
+
const focused = focusDocument(state, path);
|
|
340
|
+
if (!focused.ok)
|
|
341
|
+
return refuse(focused.guidance);
|
|
342
|
+
const result = stageTransition(state, action, params);
|
|
343
|
+
// Restore the focus the caller had before, unless they were already
|
|
344
|
+
// focused on the document just concluded.
|
|
345
|
+
if (priorFocus && priorFocus !== path)
|
|
346
|
+
focusDocument(state, priorFocus);
|
|
347
|
+
return result;
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Quest-or-document scoped conclude/retire. With a focused
|
|
351
|
+
* document and no explicit scope, delegates to
|
|
352
|
+
* stageTransition. Otherwise concludes or retires the
|
|
353
|
+
* whole quest and auto-prunes its trees.
|
|
354
|
+
*/
|
|
355
|
+
export async function concludeOrRetire(state, action, params) {
|
|
356
|
+
// An explicit id targets that id rather than the loaded quest, so
|
|
357
|
+
// naming an id never silently falls through to the loaded quest.
|
|
358
|
+
// A single document-kind id (PLAN/RSCH/BRIF/RPRT) concludes that
|
|
359
|
+
// document (not undoable, see concludeDocumentById); a quest id
|
|
360
|
+
// or any comma list runs the reversible status sweep.
|
|
361
|
+
const targetId = (params.id ?? "").trim();
|
|
362
|
+
const declaredScope = params.scope === "quest" || params.scope === "document"
|
|
363
|
+
? params.scope
|
|
364
|
+
: undefined;
|
|
365
|
+
if (targetId.length > 0) {
|
|
366
|
+
const subdir = targetId.includes(",")
|
|
367
|
+
? undefined
|
|
368
|
+
: subdirForDocumentId(targetId);
|
|
369
|
+
// A declared scope wins over id-shape inference, so the caller
|
|
370
|
+
// can be explicit rather than relying on the tool guessing from
|
|
371
|
+
// whether the id looks like a document or a quest.
|
|
372
|
+
if (declaredScope === "document") {
|
|
373
|
+
if (!subdir) {
|
|
374
|
+
return refuse(`scope:document needs a single document id (PLAN, RSCH, BRIF or RPRT); "${targetId}" is not one.`);
|
|
375
|
+
}
|
|
376
|
+
return concludeDocumentById(state, action, params, targetId, subdir);
|
|
377
|
+
}
|
|
378
|
+
if (declaredScope === "quest") {
|
|
379
|
+
return bulkConcludeOrRetire(state, action, params);
|
|
380
|
+
}
|
|
381
|
+
if (subdir) {
|
|
382
|
+
return concludeDocumentById(state, action, params, targetId, subdir);
|
|
383
|
+
}
|
|
384
|
+
return bulkConcludeOrRetire(state, action, params);
|
|
385
|
+
}
|
|
386
|
+
if (!state.questDir) {
|
|
387
|
+
return refuse("Load a quest before concluding or retiring anything.");
|
|
388
|
+
}
|
|
389
|
+
const scope = params.scope === "quest" || params.scope === "document"
|
|
390
|
+
? params.scope
|
|
391
|
+
: state.documentId
|
|
392
|
+
? "document"
|
|
393
|
+
: "quest";
|
|
394
|
+
if (scope === "document") {
|
|
395
|
+
return stageTransition(state, action, params);
|
|
396
|
+
}
|
|
397
|
+
if (action === "retire" && !params.reason?.trim()) {
|
|
398
|
+
return refuse("Retire needs a `reason`: why is the quest being abandoned?");
|
|
399
|
+
}
|
|
400
|
+
const target = action === "conclude" ? "concluded" : "retired";
|
|
401
|
+
if (state.questStatus === target) {
|
|
402
|
+
return ok(`Quest already ${target}.`);
|
|
403
|
+
}
|
|
404
|
+
// Prune before flipping status so a prune that cannot complete
|
|
405
|
+
// leaves the quest in its prior state with the blocked trees
|
|
406
|
+
// recorded, rather than sealing a still-active quest.
|
|
407
|
+
const { pruned, blocked } = await pruneAllTreesOnQuest(state);
|
|
408
|
+
// Capture the pre-seal status and priority so the seal can be
|
|
409
|
+
// journalled and reversed by undo, the same way the bulk path is.
|
|
410
|
+
const priorStatus = state.questStatus ?? "active";
|
|
411
|
+
const priorPriority = state.questPriority ?? "active";
|
|
412
|
+
const questId = state.questId;
|
|
413
|
+
const result = setLoadedStatus(state, target);
|
|
414
|
+
if (!result.ok)
|
|
415
|
+
return refuse(result.guidance);
|
|
416
|
+
// Cascade the seal so the quest leaves nothing live behind: drop
|
|
417
|
+
// the priority to the least prominent bucket and seal every
|
|
418
|
+
// still-active document to the same terminal stage. Drop the
|
|
419
|
+
// priority rank-preserving, matching the bulk path: the seal must
|
|
420
|
+
// not renumber the quest's rank, because undo restores only the
|
|
421
|
+
// priority bucket, so a rank moved here would strand the quest at a
|
|
422
|
+
// foreign, colliding rank in its restored bucket.
|
|
423
|
+
if (state.questDir && priorPriority !== "someday") {
|
|
424
|
+
setQuestPriorityByDir(state.questDir, "someday");
|
|
425
|
+
state.questPriority = "someday";
|
|
426
|
+
}
|
|
427
|
+
const sealedDocs = sealQuestDocuments(state.questDir, target);
|
|
428
|
+
// Journal the seal so undo restores the status and the prior
|
|
429
|
+
// priority bucket, not just the bulk path's version of the same.
|
|
430
|
+
if (questId) {
|
|
431
|
+
const changes = [
|
|
432
|
+
{ id: questId, field: "status", old: priorStatus, new: target },
|
|
433
|
+
];
|
|
434
|
+
if (priorPriority !== "someday") {
|
|
435
|
+
changes.push({
|
|
436
|
+
id: questId,
|
|
437
|
+
field: "priority",
|
|
438
|
+
old: priorPriority,
|
|
439
|
+
new: "someday",
|
|
440
|
+
});
|
|
441
|
+
}
|
|
442
|
+
recordStructuralOp(state.questsRoot, action, changes);
|
|
443
|
+
}
|
|
444
|
+
// Reap the managed scratch dir once the quest is sealing: it is
|
|
445
|
+
// throwaway by definition and lives under the OS temp dir, so it
|
|
446
|
+
// goes with the quest. Best-effort, never fatal.
|
|
447
|
+
const reapedScratch = reapQuestScratchDir(state.questDir, state.scratchDir);
|
|
448
|
+
state.scratchDir = null;
|
|
449
|
+
appendJourneyEntry(state, action === "conclude"
|
|
450
|
+
? "Concluded the quest."
|
|
451
|
+
: `Retired the quest: ${params.reason?.trim()}.`);
|
|
452
|
+
for (const path of pruned) {
|
|
453
|
+
appendJourneyEntry(state, `Pruned tree at ${path}.`);
|
|
454
|
+
}
|
|
455
|
+
if (reapedScratch) {
|
|
456
|
+
appendJourneyEntry(state, "Reaped the managed scratch directory.");
|
|
457
|
+
}
|
|
458
|
+
let message = action === "conclude"
|
|
459
|
+
? `Concluded quest ${state.questId}.`
|
|
460
|
+
: `Retired quest ${state.questId}.`;
|
|
461
|
+
if (sealedDocs > 0) {
|
|
462
|
+
appendJourneyEntry(state, `Sealed ${count(sealedDocs, "document")} with the quest.`);
|
|
463
|
+
message += ` Sealed ${count(sealedDocs, "document")}.`;
|
|
464
|
+
}
|
|
465
|
+
if (pruned.length > 0)
|
|
466
|
+
message += ` Pruned ${count(pruned.length, "tree")}.`;
|
|
467
|
+
// Warn about live children, matching the bulk path: sealing a loaded
|
|
468
|
+
// parent leaves its live subquests orphaned but live, so surface them
|
|
469
|
+
// rather than cascading or silently stranding them.
|
|
470
|
+
if (questId) {
|
|
471
|
+
const { index } = discoverQuests(state.questsRoot);
|
|
472
|
+
const liveChildren = [];
|
|
473
|
+
for (const childId of index.children.get(questId) ?? []) {
|
|
474
|
+
const child = index.quests.get(childId);
|
|
475
|
+
if (child && !isSealedStatus(child.doc.frontMatter.status)) {
|
|
476
|
+
liveChildren.push(childId);
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
if (liveChildren.length > 0) {
|
|
480
|
+
message += ` Warning: ${count(liveChildren.length, "live child quest")} ${verb(liveChildren.length, "remains", "remain")} under a sealed parent: ${liveChildren.join(", ")}.`;
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
const drift = action === "conclude" ? primaryPlanDrift(state) : undefined;
|
|
484
|
+
if (drift) {
|
|
485
|
+
const open = drift.total - drift.done;
|
|
486
|
+
message += ` Warning: primary plan ${drift.planId} still has ${count(open, "unchecked item")} (${drift.done}/${drift.total} done); concluded anyway.`;
|
|
487
|
+
}
|
|
488
|
+
if (blocked.length > 0) {
|
|
489
|
+
const detectedAt = new Date().toISOString();
|
|
490
|
+
for (const b of blocked) {
|
|
491
|
+
setPendingPrune(state.questDir, {
|
|
492
|
+
path: b.path,
|
|
493
|
+
reason: b.reason,
|
|
494
|
+
detectedAt,
|
|
495
|
+
});
|
|
496
|
+
}
|
|
497
|
+
message += ` ${count(blocked.length, "tree")} ${verb(blocked.length, "needs", "need")} manual resolution.`;
|
|
498
|
+
}
|
|
499
|
+
return ok(message, {
|
|
500
|
+
scope: "quest",
|
|
501
|
+
action,
|
|
502
|
+
prunedTrees: pruned,
|
|
503
|
+
blockedTrees: blocked,
|
|
504
|
+
...(drift ? { planDrift: drift } : {}),
|
|
505
|
+
});
|
|
506
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structural verbs: reparent (single or bulk). These move
|
|
3
|
+
* quests within the tree under an explicit scope, offer a
|
|
4
|
+
* dry-run preview and report exactly what changed, so a cleanup
|
|
5
|
+
* can be trusted and reversed.
|
|
6
|
+
*/
|
|
7
|
+
import type { QuestState } from "../state.js";
|
|
8
|
+
import { type QuestResult, type QuestToolParams } from "./shared.js";
|
|
9
|
+
/**
|
|
10
|
+
* Reparent one or more quests under a new parent (or to top
|
|
11
|
+
* level with `parent: null`). The whole batch is atomic: if any
|
|
12
|
+
* target is missing or would form a cycle, nothing is written.
|
|
13
|
+
* With `dryRun`, the plan is returned without any writes.
|
|
14
|
+
*/
|
|
15
|
+
export declare function reparent(state: QuestState, params: QuestToolParams): QuestResult;
|
|
16
|
+
/**
|
|
17
|
+
* Bulk conclude or retire an explicit comma-separated id set.
|
|
18
|
+
* Atomic on any missing target, dry-run previewable, journalled
|
|
19
|
+
* for undo. Unlike the single-quest conclude, this does not
|
|
20
|
+
* prune trees: it is a lightweight, reversible status sweep.
|
|
21
|
+
*/
|
|
22
|
+
export declare function bulkConcludeOrRetire(state: QuestState, action: "conclude" | "retire", params: QuestToolParams): QuestResult;
|
|
23
|
+
export declare function undo(state: QuestState): QuestResult;
|