@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,407 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quest-lifecycle verbs: create, load, unload, show, list,
|
|
3
|
+
* focus, unfocus, reclassify.
|
|
4
|
+
*
|
|
5
|
+
* pi's own `verbs/lifecycle.ts` additionally enriches `load` with
|
|
6
|
+
* automatic session-attach bookkeeping (`ctx.sessionManager`,
|
|
7
|
+
* `pi.setSessionName`, `recordSessionOnQuest`) and `show`/`list`
|
|
8
|
+
* with per-session liveness -- all keyed to pi's own session
|
|
9
|
+
* concept, which no other host has an equivalent for. This version
|
|
10
|
+
* loads and shows a quest without any of that; an adapter with its
|
|
11
|
+
* own session story (pi's `verbs/lifecycle.ts` is the example)
|
|
12
|
+
* layers it on by calling `load`/`show` here and then doing its
|
|
13
|
+
* own session bookkeeping around the result.
|
|
14
|
+
*/
|
|
15
|
+
import { existsSync, mkdirSync } from "node:fs";
|
|
16
|
+
import { join } from "node:path";
|
|
17
|
+
import { buildAliasIndex, lookupAliasDetail, } from "../../internal/quest/alias-index.js";
|
|
18
|
+
import { nowYmd } from "../../internal/quest/dates.js";
|
|
19
|
+
import { discoverQuests, siblingRanks, } from "../../internal/quest/discovery.js";
|
|
20
|
+
import { parseQuestFrontMatter } from "../../internal/quest/frontmatter.js";
|
|
21
|
+
import { atomicWriteFile } from "../../internal/quest/io.js";
|
|
22
|
+
import { nextRank } from "../../internal/quest/ranking.js";
|
|
23
|
+
import { isSealedStatus } from "../../internal/quest/status.js";
|
|
24
|
+
import { parseRef, urlForRef } from "../../refs/index.js";
|
|
25
|
+
import { displayPath } from "../../ui/path.js";
|
|
26
|
+
import { fetchUrlHints, mintId, scaffoldQuestReadme, } from "../index.js";
|
|
27
|
+
import { appendJourneyEntry, ensureQuestsRoot, focusDocument, listAllQuests, loadQuestById, setLoadedKind, unfocusDocument, unloadQuest, } from "../lifecycle.js";
|
|
28
|
+
import { buildRowExpansion, locateOwner, showQuestById } from "../lookup.js";
|
|
29
|
+
import { paginate, renderListing, renderRowBrief, } from "../render-rows.js";
|
|
30
|
+
import { subdirForDocumentId } from "./queries.js";
|
|
31
|
+
import { ok, QUEST_KINDS_SET, refuse, } from "./shared.js";
|
|
32
|
+
/**
|
|
33
|
+
* Priority ladder for sorting list output. Lower numbers
|
|
34
|
+
* sort first; driving is the most prominent bucket. A
|
|
35
|
+
* priority outside the ladder sorts to the end so legacy
|
|
36
|
+
* values do not silently jump ahead of legitimate ones.
|
|
37
|
+
*/
|
|
38
|
+
const PRIORITY_ORDER = {
|
|
39
|
+
driving: 0,
|
|
40
|
+
active: 1,
|
|
41
|
+
queued: 2,
|
|
42
|
+
bench: 3,
|
|
43
|
+
someday: 4,
|
|
44
|
+
};
|
|
45
|
+
const PRIORITY_FALLBACK = 99;
|
|
46
|
+
// Sealed quests sort after every live one, whatever their priority,
|
|
47
|
+
// so a concluded quest that still carries a driving priority never
|
|
48
|
+
// jumps ahead of live work. Ordering within a tier stays priority
|
|
49
|
+
// then rank.
|
|
50
|
+
function statusTier(status) {
|
|
51
|
+
return isSealedStatus(status) ? 1 : 0;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Change the loaded quest's kind (quest, subquest or sidequest), so a
|
|
55
|
+
* misclassification made at create time is fixable in place instead
|
|
56
|
+
* of forcing a delete-and-recreate.
|
|
57
|
+
*/
|
|
58
|
+
export function reclassify(state, params) {
|
|
59
|
+
if (!state.questId)
|
|
60
|
+
return refuse("Load a quest first.");
|
|
61
|
+
const kind = params.kind;
|
|
62
|
+
if (!kind || !QUEST_KINDS_SET.has(kind)) {
|
|
63
|
+
return refuse(`Pass the new kind: quest, subquest or sidequest (got "${params.kind ?? ""}").`);
|
|
64
|
+
}
|
|
65
|
+
const from = state.questKind;
|
|
66
|
+
const result = setLoadedKind(state, kind);
|
|
67
|
+
if (!result.ok)
|
|
68
|
+
return refuse(result.guidance);
|
|
69
|
+
if (!result.changed) {
|
|
70
|
+
return ok(`Quest ${state.questId} is already a ${kind}.`, {
|
|
71
|
+
from,
|
|
72
|
+
to: kind,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
state.questKind = kind;
|
|
76
|
+
appendJourneyEntry(state, `Reclassified from ${from ?? "?"} to ${kind}.`);
|
|
77
|
+
return ok(`Quest ${state.questId} is now a ${kind} (was ${from ?? "?"}).`, {
|
|
78
|
+
from,
|
|
79
|
+
to: kind,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
/** Mint a new quest, optionally seeded from a URL, and load it. */
|
|
83
|
+
export async function create(state, params) {
|
|
84
|
+
const kind = (params.kind ?? "sidequest");
|
|
85
|
+
if (!QUEST_KINDS_SET.has(kind)) {
|
|
86
|
+
return refuse(`Unknown kind "${params.kind}". Use quest, subquest or sidequest.`);
|
|
87
|
+
}
|
|
88
|
+
let seededAlias;
|
|
89
|
+
let seededTitle = params.title?.trim() || undefined;
|
|
90
|
+
let seededExcerpt;
|
|
91
|
+
let seededOriginator;
|
|
92
|
+
if (params.url?.trim()) {
|
|
93
|
+
const ref = parseRef(params.url.trim());
|
|
94
|
+
if (!ref) {
|
|
95
|
+
return refuse(`URL "${params.url}" did not match any registered ref type. Pass a title and create without --url, or register a ref type for this URL shape.`);
|
|
96
|
+
}
|
|
97
|
+
const { index } = discoverQuests(state.questsRoot);
|
|
98
|
+
const aliasIdx = buildAliasIndex(index);
|
|
99
|
+
const lookup = lookupAliasDetail(aliasIdx, ref);
|
|
100
|
+
if (lookup.kind === "collision") {
|
|
101
|
+
return refuse(`Alias ${ref.type}:${ref.value} is already on multiple quests (${lookup.questIds.join(", ")}). Resolve the duplicate before adding it again.`);
|
|
102
|
+
}
|
|
103
|
+
if (lookup.kind === "hit") {
|
|
104
|
+
return refuse(`Quest ${lookup.questId} already has alias ${ref.type}:${ref.value}. Load it instead: \`quest load ${lookup.questId}\`.`);
|
|
105
|
+
}
|
|
106
|
+
seededAlias = { type: ref.type, value: ref.value };
|
|
107
|
+
const hints = await fetchUrlHints(ref);
|
|
108
|
+
if (hints) {
|
|
109
|
+
if (!seededTitle && hints.title)
|
|
110
|
+
seededTitle = hints.title;
|
|
111
|
+
seededExcerpt = hints.excerpt;
|
|
112
|
+
seededOriginator = hints.originator;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (!seededTitle) {
|
|
116
|
+
return refuse("Give a title in the `title` param (the quest's H1 heading). When passing `url`, the fetcher provides one when it can; otherwise the title is yours to choose.");
|
|
117
|
+
}
|
|
118
|
+
ensureQuestsRoot(state);
|
|
119
|
+
const id = mintId("QEST");
|
|
120
|
+
const parent = params.parent ?? null;
|
|
121
|
+
// Validate the priority before it reaches disk: an unchecked cast
|
|
122
|
+
// lets an out-of-vocab value through, which the strict parser then
|
|
123
|
+
// drops the whole quest for, making a freshly created quest
|
|
124
|
+
// invisible. Refuse up front instead.
|
|
125
|
+
if (params.priority !== undefined && !(params.priority in PRIORITY_ORDER)) {
|
|
126
|
+
return refuse(`Unknown priority "${params.priority}". Use driving, active, queued, bench or someday.`);
|
|
127
|
+
}
|
|
128
|
+
const priority = params.priority ?? "active";
|
|
129
|
+
// Append to the end of the (parent, priority) sibling group so the
|
|
130
|
+
// new quest takes a free rank rather than colliding at 1.
|
|
131
|
+
const { index } = discoverQuests(state.questsRoot);
|
|
132
|
+
// A parent that does not exist would strand the quest under a
|
|
133
|
+
// dangling reference the tree walk can never resolve. Refuse rather
|
|
134
|
+
// than mint an orphan.
|
|
135
|
+
if (parent !== null && !index.quests.has(parent)) {
|
|
136
|
+
return refuse(`Parent quest "${parent}" not found. Create the parent first, or omit parent for a top-level quest.`);
|
|
137
|
+
}
|
|
138
|
+
const frontMatter = {
|
|
139
|
+
id,
|
|
140
|
+
kind,
|
|
141
|
+
parent,
|
|
142
|
+
status: "active",
|
|
143
|
+
priority,
|
|
144
|
+
rank: nextRank(siblingRanks(index, parent, priority)),
|
|
145
|
+
started: nowYmd(),
|
|
146
|
+
updated: nowYmd(),
|
|
147
|
+
aliases: seededAlias ? [seededAlias] : [],
|
|
148
|
+
sessions: [],
|
|
149
|
+
};
|
|
150
|
+
const summaryParts = [];
|
|
151
|
+
if (params.note?.trim())
|
|
152
|
+
summaryParts.push(params.note.trim());
|
|
153
|
+
if (seededExcerpt)
|
|
154
|
+
summaryParts.push(`Source excerpt: ${seededExcerpt}`);
|
|
155
|
+
const summary = summaryParts.length > 0 ? summaryParts.join("\n\n") : undefined;
|
|
156
|
+
const castEntries = seededOriginator
|
|
157
|
+
? [
|
|
158
|
+
{
|
|
159
|
+
role: "originator",
|
|
160
|
+
subject: `@${seededOriginator.value}`,
|
|
161
|
+
prose: "",
|
|
162
|
+
},
|
|
163
|
+
]
|
|
164
|
+
: undefined;
|
|
165
|
+
const body = scaffoldQuestReadme({
|
|
166
|
+
frontMatter,
|
|
167
|
+
title: seededTitle,
|
|
168
|
+
summary,
|
|
169
|
+
cast: castEntries,
|
|
170
|
+
});
|
|
171
|
+
const dir = join(state.questsRoot, id);
|
|
172
|
+
const path = join(dir, "README.md");
|
|
173
|
+
if (existsSync(path)) {
|
|
174
|
+
return refuse(`Quest directory ${dir} already exists. Mint a new ID and retry.`);
|
|
175
|
+
}
|
|
176
|
+
// Born readable or not born at all. Every other quest writer refuses
|
|
177
|
+
// front matter the strict parser cannot read back, and this one wrote
|
|
178
|
+
// the very first copy without asking. A quest that fails the check
|
|
179
|
+
// here is invisible to discovery from the moment it exists, which is
|
|
180
|
+
// the hardest version of the fault to trace: there is no earlier
|
|
181
|
+
// good state to compare against.
|
|
182
|
+
if (!parseQuestFrontMatter(body)) {
|
|
183
|
+
return refuse(`Refusing to create ${id}: the scaffolded README has front matter the parser cannot read back, so the quest would exist and never be found.`);
|
|
184
|
+
}
|
|
185
|
+
mkdirSync(dir, { recursive: true });
|
|
186
|
+
atomicWriteFile(path, body);
|
|
187
|
+
const result = loadQuestById(state, id);
|
|
188
|
+
if (!result.ok)
|
|
189
|
+
return refuse(result.guidance);
|
|
190
|
+
if (seededAlias) {
|
|
191
|
+
const url = urlForRef(seededAlias) ?? params.url?.trim() ?? "";
|
|
192
|
+
appendJourneyEntry(state, seededOriginator
|
|
193
|
+
? `Created from ${url} by @${seededOriginator.value}.`
|
|
194
|
+
: `Created from ${url}.`);
|
|
195
|
+
}
|
|
196
|
+
return ok(`Created ${kind} ${id} at ${displayPath(path)}`, {
|
|
197
|
+
id,
|
|
198
|
+
path,
|
|
199
|
+
kind,
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
/** Load a quest by id. */
|
|
203
|
+
export function load(state, params) {
|
|
204
|
+
if (!params.id) {
|
|
205
|
+
return refuse("Pass the quest's id (e.g. `id: QEST-20260603-AAA111`).");
|
|
206
|
+
}
|
|
207
|
+
const result = loadQuestById(state, params.id);
|
|
208
|
+
if (!result.ok)
|
|
209
|
+
return refuse(result.guidance);
|
|
210
|
+
return ok(`Loaded ${state.questId}: ${state.questTitle ?? ""}`, {
|
|
211
|
+
id: state.questId,
|
|
212
|
+
dir: state.questDir,
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
export function unload(state) {
|
|
216
|
+
if (!state.questId)
|
|
217
|
+
return refuse("No quest loaded.");
|
|
218
|
+
const prior = state.questId;
|
|
219
|
+
unloadQuest(state);
|
|
220
|
+
return ok(`Unloaded ${prior}.`);
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Project a quest for `show`, read-only: an explicit id projects
|
|
224
|
+
* any quest without changing what is loaded; otherwise show the
|
|
225
|
+
* loaded quest.
|
|
226
|
+
*/
|
|
227
|
+
export function show(state, params = { action: "show" }) {
|
|
228
|
+
if (params.id) {
|
|
229
|
+
const projection = showQuestById(state, params.id);
|
|
230
|
+
if (!projection)
|
|
231
|
+
return refuse(`No quest with id "${params.id}".`);
|
|
232
|
+
return ok(renderShow(projection), { projection, readOnly: true });
|
|
233
|
+
}
|
|
234
|
+
if (!state.questDir) {
|
|
235
|
+
return refuse("No quest loaded. Pass an id to inspect a specific quest.");
|
|
236
|
+
}
|
|
237
|
+
const projection = showQuestById(state, state.questId ?? "");
|
|
238
|
+
if (!projection)
|
|
239
|
+
return refuse("Could not project the loaded quest.");
|
|
240
|
+
return ok(renderShow(projection), { projection, readOnly: false });
|
|
241
|
+
}
|
|
242
|
+
function renderShow(projection) {
|
|
243
|
+
const fm = projection.frontMatter;
|
|
244
|
+
const lines = [];
|
|
245
|
+
lines.push(`${fm.id}: ${projection.title ?? "(untitled)"}`);
|
|
246
|
+
lines.push(` kind: ${fm.kind} status: ${fm.status} priority: ${fm.priority} parent: ${fm.parent ?? "none"} updated: ${fm.updated}`);
|
|
247
|
+
if (projection.summary)
|
|
248
|
+
lines.push(` summary: ${projection.summary}`);
|
|
249
|
+
if (projection.purpose)
|
|
250
|
+
lines.push(` purpose: ${projection.purpose}`);
|
|
251
|
+
if (projection.cast.length > 0) {
|
|
252
|
+
lines.push("");
|
|
253
|
+
lines.push("Cast:");
|
|
254
|
+
for (const c of projection.cast) {
|
|
255
|
+
lines.push(` - ${c.subject} (${c.role})`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
if (projection.documents.length > 0) {
|
|
259
|
+
lines.push("");
|
|
260
|
+
lines.push("Documents:");
|
|
261
|
+
for (const d of projection.documents) {
|
|
262
|
+
const title = d.title ?? "(untitled)";
|
|
263
|
+
lines.push(` - ${d.id} (${d.kind}, ${d.stage}): ${title}`);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
const outgoing = projection.links;
|
|
267
|
+
const outgoingCount = outgoing.quests.length + outgoing.refs.length + outgoing.urls.length;
|
|
268
|
+
if (outgoingCount > 0) {
|
|
269
|
+
lines.push("");
|
|
270
|
+
lines.push(`Links out (${outgoingCount}):`);
|
|
271
|
+
for (const q of outgoing.quests) {
|
|
272
|
+
lines.push(` -> ${q.id} ${q.title ?? ""}`.trimEnd());
|
|
273
|
+
}
|
|
274
|
+
for (const r of outgoing.refs) {
|
|
275
|
+
lines.push(` -> ${r.type}:${r.value}${r.url ? ` (${r.url})` : ""}`);
|
|
276
|
+
}
|
|
277
|
+
for (const u of outgoing.urls) {
|
|
278
|
+
lines.push(` -> ${u}`);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
const produced = projection.echoes.filter((e) => e.relation === "produced");
|
|
282
|
+
const referenced = projection.echoes.filter((e) => e.relation === "reference");
|
|
283
|
+
if (produced.length > 0) {
|
|
284
|
+
lines.push("");
|
|
285
|
+
lines.push(`Produced by (${produced.length}):`);
|
|
286
|
+
for (const e of produced) {
|
|
287
|
+
lines.push(` <- ${e.questId} ${e.questTitle ?? ""}`.trimEnd());
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
if (referenced.length > 0) {
|
|
291
|
+
lines.push("");
|
|
292
|
+
lines.push(`Referenced by (${referenced.length}):`);
|
|
293
|
+
for (const e of referenced) {
|
|
294
|
+
lines.push(` <- ${e.questId} ${e.questTitle ?? ""}`.trimEnd());
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
if (projection.journey.length > 0) {
|
|
298
|
+
lines.push("");
|
|
299
|
+
lines.push("Recent journey:");
|
|
300
|
+
for (const j of projection.journey) {
|
|
301
|
+
lines.push(` ${j.date}: ${j.prose}`);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
return lines.join("\n");
|
|
305
|
+
}
|
|
306
|
+
export function list(state, params) {
|
|
307
|
+
const all = listAllQuests(state);
|
|
308
|
+
const entries = all.filter((e) => {
|
|
309
|
+
const fm = e.doc.frontMatter;
|
|
310
|
+
if (params.priority && fm.priority !== params.priority)
|
|
311
|
+
return false;
|
|
312
|
+
if (params.kind && fm.kind !== params.kind)
|
|
313
|
+
return false;
|
|
314
|
+
if (params.status && fm.status !== params.status)
|
|
315
|
+
return false;
|
|
316
|
+
if (params.parent !== undefined) {
|
|
317
|
+
const expected = params.parent === "null" ? null : params.parent;
|
|
318
|
+
if (fm.parent !== expected)
|
|
319
|
+
return false;
|
|
320
|
+
}
|
|
321
|
+
return true;
|
|
322
|
+
});
|
|
323
|
+
entries.sort((a, b) => {
|
|
324
|
+
const ta = statusTier(a.doc.frontMatter.status);
|
|
325
|
+
const tb = statusTier(b.doc.frontMatter.status);
|
|
326
|
+
if (ta !== tb)
|
|
327
|
+
return ta - tb;
|
|
328
|
+
const pa = PRIORITY_ORDER[a.doc.frontMatter.priority] ?? PRIORITY_FALLBACK;
|
|
329
|
+
const pb = PRIORITY_ORDER[b.doc.frontMatter.priority] ?? PRIORITY_FALLBACK;
|
|
330
|
+
if (pa !== pb)
|
|
331
|
+
return pa - pb;
|
|
332
|
+
return a.doc.frontMatter.rank - b.doc.frontMatter.rank;
|
|
333
|
+
});
|
|
334
|
+
const view = paginate(entries, {
|
|
335
|
+
limit: params.limit,
|
|
336
|
+
offset: params.offset,
|
|
337
|
+
});
|
|
338
|
+
const rows = view.rows.map((entry) => ({
|
|
339
|
+
id: entry.doc.frontMatter.id,
|
|
340
|
+
kind: entry.doc.frontMatter.kind,
|
|
341
|
+
status: entry.doc.frontMatter.status,
|
|
342
|
+
title: entry.doc.title ?? null,
|
|
343
|
+
priority: entry.doc.frontMatter.priority,
|
|
344
|
+
parent: entry.doc.frontMatter.parent,
|
|
345
|
+
updated: entry.doc.frontMatter.updated,
|
|
346
|
+
depth: 0,
|
|
347
|
+
...buildRowExpansion(entry),
|
|
348
|
+
}));
|
|
349
|
+
const rendered = rows.map((row) => {
|
|
350
|
+
const brief = {
|
|
351
|
+
id: row.id,
|
|
352
|
+
kind: row.kind,
|
|
353
|
+
status: row.status,
|
|
354
|
+
priority: row.priority,
|
|
355
|
+
title: row.title,
|
|
356
|
+
};
|
|
357
|
+
return renderRowBrief(brief);
|
|
358
|
+
});
|
|
359
|
+
const listing = {
|
|
360
|
+
rows,
|
|
361
|
+
total: view.total,
|
|
362
|
+
offset: view.offset,
|
|
363
|
+
limit: view.limit,
|
|
364
|
+
remaining: view.remaining,
|
|
365
|
+
};
|
|
366
|
+
return ok(renderListing(rendered, view), {
|
|
367
|
+
listing,
|
|
368
|
+
total: view.total,
|
|
369
|
+
offset: view.offset,
|
|
370
|
+
limit: view.limit,
|
|
371
|
+
remaining: view.remaining,
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
export function focus(state, params) {
|
|
375
|
+
if (!state.questDir)
|
|
376
|
+
return refuse("Load a quest before focusing a document.");
|
|
377
|
+
if (!params.id) {
|
|
378
|
+
return refuse("Pass the document id (e.g. PLAN-20260603-...).");
|
|
379
|
+
}
|
|
380
|
+
const subdir = subdirForDocumentId(params.id);
|
|
381
|
+
if (!subdir) {
|
|
382
|
+
return refuse(`"${params.id}" does not look like a document id.`);
|
|
383
|
+
}
|
|
384
|
+
const path = join(state.questDir, subdir, `${params.id}.md`);
|
|
385
|
+
if (!existsSync(path)) {
|
|
386
|
+
// A path built from the loaded quest, so saying it does not exist names
|
|
387
|
+
// a location nobody meant when the document belongs to another quest.
|
|
388
|
+
const owner = locateOwner(state, params.id).find((hit) => hit.questId !== state.questId);
|
|
389
|
+
if (owner) {
|
|
390
|
+
return refuse(`${params.id} belongs to ${owner.questId}${owner.questTitle ? ` (${owner.questTitle})` : ""}, not to the loaded quest. Load that quest first, then focus it.`);
|
|
391
|
+
}
|
|
392
|
+
return refuse(`No document ${params.id} in this quest. Expected it at ${path}.`);
|
|
393
|
+
}
|
|
394
|
+
const result = focusDocument(state, path);
|
|
395
|
+
if (!result.ok)
|
|
396
|
+
return refuse(result.guidance);
|
|
397
|
+
return ok(`Focused ${state.documentId} (${state.documentKind}).`, {
|
|
398
|
+
path,
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
export function unfocus(state) {
|
|
402
|
+
if (!state.documentId)
|
|
403
|
+
return refuse("No document focused.");
|
|
404
|
+
const prior = state.documentId;
|
|
405
|
+
unfocusDocument(state);
|
|
406
|
+
return ok(`Unfocused ${prior}.`);
|
|
407
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read-only query verbs: tree (whole forest), expand (one
|
|
3
|
+
* subtree), find (by query/date/field), who (by role/name),
|
|
4
|
+
* links (incoming/outgoing) and locate (resolve a needle to
|
|
5
|
+
* its owning quest). Plus the subdirForDocumentId helper used
|
|
6
|
+
* to map a document id to its storage subdir.
|
|
7
|
+
*
|
|
8
|
+
* pi's own `verbs/queries.ts` additionally exposes `workspace`,
|
|
9
|
+
* `restore` and `recent`, all keyed to pi's session JSONL log
|
|
10
|
+
* and terminal-reopen mechanism. Neither has an equivalent here;
|
|
11
|
+
* an adapter with its own session store builds those on top of
|
|
12
|
+
* `discoverQuests` directly, the way pi's does.
|
|
13
|
+
*/
|
|
14
|
+
import type { QuestState } from "../state.js";
|
|
15
|
+
import { type QuestResult, type QuestToolParams } from "./shared.js";
|
|
16
|
+
export declare function find(state: QuestState, params: QuestToolParams): QuestResult;
|
|
17
|
+
export declare function who(state: QuestState, params: QuestToolParams): QuestResult;
|
|
18
|
+
export declare function linksAction(state: QuestState, params: QuestToolParams): QuestResult;
|
|
19
|
+
export declare function locate(state: QuestState, params: QuestToolParams): QuestResult;
|
|
20
|
+
export declare function ancestors(state: QuestState, params: QuestToolParams): QuestResult;
|
|
21
|
+
export declare function tree(state: QuestState, _params: QuestToolParams): QuestResult;
|
|
22
|
+
export declare function expand(state: QuestState, params: QuestToolParams): QuestResult;
|
|
23
|
+
/** Map a document id's prefix to its storage subdir. */
|
|
24
|
+
export declare function subdirForDocumentId(id: string): string | undefined;
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read-only query verbs: tree (whole forest), expand (one
|
|
3
|
+
* subtree), find (by query/date/field), who (by role/name),
|
|
4
|
+
* links (incoming/outgoing) and locate (resolve a needle to
|
|
5
|
+
* its owning quest). Plus the subdirForDocumentId helper used
|
|
6
|
+
* to map a document id to its storage subdir.
|
|
7
|
+
*
|
|
8
|
+
* pi's own `verbs/queries.ts` additionally exposes `workspace`,
|
|
9
|
+
* `restore` and `recent`, all keyed to pi's session JSONL log
|
|
10
|
+
* and terminal-reopen mechanism. Neither has an equivalent here;
|
|
11
|
+
* an adapter with its own session store builds those on top of
|
|
12
|
+
* `discoverQuests` directly, the way pi's does.
|
|
13
|
+
*/
|
|
14
|
+
import { discoverQuests, } from "../../internal/quest/discovery.js";
|
|
15
|
+
import { count } from "../../ui/count.js";
|
|
16
|
+
import { ancestorsOf, buildRowExpansion, expandQuest, findPeople, findQuestEntries, linksForLoaded, locateOwner, resolveRefQuery, treeAll, } from "../lookup.js";
|
|
17
|
+
import { paginate, renderListing, renderRowBrief, } from "../render-rows.js";
|
|
18
|
+
import { ok, refuse, } from "./shared.js";
|
|
19
|
+
export function find(state, params) {
|
|
20
|
+
const ALLOWED_FIELDS = ["started", "updated", "due", "eta"];
|
|
21
|
+
if (params.field && !ALLOWED_FIELDS.includes(params.field)) {
|
|
22
|
+
return refuse(`Unknown field "${params.field}". Use started, updated, due or eta.`);
|
|
23
|
+
}
|
|
24
|
+
const field = params.field;
|
|
25
|
+
const matches = findQuestEntries(state, resolveRefQuery({
|
|
26
|
+
query: params.query,
|
|
27
|
+
since: params.since,
|
|
28
|
+
until: params.until,
|
|
29
|
+
field,
|
|
30
|
+
priority: params.priority,
|
|
31
|
+
kind: params.kind,
|
|
32
|
+
status: params.status,
|
|
33
|
+
parent: params.parent,
|
|
34
|
+
refType: params.refType,
|
|
35
|
+
}));
|
|
36
|
+
const view = paginate(matches, {
|
|
37
|
+
limit: params.limit,
|
|
38
|
+
offset: params.offset,
|
|
39
|
+
});
|
|
40
|
+
const rows = view.rows.map(({ hit, entry }) => ({
|
|
41
|
+
id: hit.id,
|
|
42
|
+
kind: hit.kind,
|
|
43
|
+
status: hit.status,
|
|
44
|
+
title: hit.title,
|
|
45
|
+
priority: hit.priority,
|
|
46
|
+
parent: entry.doc.frontMatter.parent,
|
|
47
|
+
updated: hit.updated,
|
|
48
|
+
depth: 0,
|
|
49
|
+
...buildRowExpansion(entry),
|
|
50
|
+
}));
|
|
51
|
+
const rendered = rows.map((row) => renderRowBrief({
|
|
52
|
+
id: row.id,
|
|
53
|
+
kind: row.kind,
|
|
54
|
+
status: row.status,
|
|
55
|
+
priority: row.priority,
|
|
56
|
+
title: row.title,
|
|
57
|
+
}));
|
|
58
|
+
const listing = {
|
|
59
|
+
rows,
|
|
60
|
+
total: view.total,
|
|
61
|
+
offset: view.offset,
|
|
62
|
+
limit: view.limit,
|
|
63
|
+
remaining: view.remaining,
|
|
64
|
+
};
|
|
65
|
+
return ok(renderListing(rendered, view), {
|
|
66
|
+
listing,
|
|
67
|
+
total: view.total,
|
|
68
|
+
offset: view.offset,
|
|
69
|
+
limit: view.limit,
|
|
70
|
+
remaining: view.remaining,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
export function who(state, params) {
|
|
74
|
+
const hits = findPeople(state, { name: params.name, role: params.role });
|
|
75
|
+
const view = paginate(hits, {
|
|
76
|
+
limit: params.limit,
|
|
77
|
+
offset: params.offset,
|
|
78
|
+
});
|
|
79
|
+
const rendered = view.rows.map((h) => `${h.subject} (${h.role}) - ${h.questId} ${h.questTitle ?? ""}`.trimEnd());
|
|
80
|
+
const hint = params.name || params.role ? " matching filter" : "";
|
|
81
|
+
if (view.total === 0) {
|
|
82
|
+
return ok(`(no cast bullets${hint})`, {
|
|
83
|
+
hits: view.rows,
|
|
84
|
+
total: view.total,
|
|
85
|
+
offset: view.offset,
|
|
86
|
+
limit: view.limit,
|
|
87
|
+
remaining: view.remaining,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
return ok(renderListing(rendered, view), {
|
|
91
|
+
hits: view.rows,
|
|
92
|
+
total: view.total,
|
|
93
|
+
offset: view.offset,
|
|
94
|
+
limit: view.limit,
|
|
95
|
+
remaining: view.remaining,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
export function linksAction(state, params) {
|
|
99
|
+
if (!state.questId)
|
|
100
|
+
return refuse("Load a quest first.");
|
|
101
|
+
const links = linksForLoaded(state, {
|
|
102
|
+
kind: params.kind,
|
|
103
|
+
pattern: params.pattern,
|
|
104
|
+
priority: params.priority,
|
|
105
|
+
status: params.status,
|
|
106
|
+
});
|
|
107
|
+
if (!links)
|
|
108
|
+
return refuse("Could not project links for this quest.");
|
|
109
|
+
const outgoingCount = links.outgoing.quests.length +
|
|
110
|
+
links.outgoing.refs.length +
|
|
111
|
+
links.outgoing.urls.length;
|
|
112
|
+
const lines = [];
|
|
113
|
+
lines.push(`Outgoing (${outgoingCount}): ${count(links.outgoing.quests.length, "quest")}, ${count(links.outgoing.refs.length, "ref")}, ${count(links.outgoing.urls.length, "url")}.`);
|
|
114
|
+
for (const q of links.outgoing.quests) {
|
|
115
|
+
lines.push(` -> ${q.id} ${q.title ?? ""}`.trimEnd());
|
|
116
|
+
}
|
|
117
|
+
for (const r of links.outgoing.refs) {
|
|
118
|
+
lines.push(` -> ${r.type}:${r.value}${r.url ? ` (${r.url})` : ""}`);
|
|
119
|
+
if (r.why)
|
|
120
|
+
lines.push(` no link: ${r.why}`);
|
|
121
|
+
}
|
|
122
|
+
for (const u of links.outgoing.urls) {
|
|
123
|
+
lines.push(` -> ${u}`);
|
|
124
|
+
}
|
|
125
|
+
lines.push("");
|
|
126
|
+
lines.push(`Incoming (${links.incoming.length}):`);
|
|
127
|
+
for (const i of links.incoming) {
|
|
128
|
+
const ctx = i.context ? `\n ${i.context}` : "";
|
|
129
|
+
lines.push(` <- ${i.questId} ${i.questTitle ?? ""}${ctx}`.trimEnd());
|
|
130
|
+
}
|
|
131
|
+
return ok(lines.join("\n"), { links });
|
|
132
|
+
}
|
|
133
|
+
export function locate(state, params) {
|
|
134
|
+
const needle = (params.id ?? params.query ?? "").trim();
|
|
135
|
+
if (!needle) {
|
|
136
|
+
return refuse("Pass the thing to locate in `id` (or `query`): a quest id, document id or alias ref.");
|
|
137
|
+
}
|
|
138
|
+
const hits = locateOwner(state, needle);
|
|
139
|
+
if (hits.length === 0) {
|
|
140
|
+
return ok(`No quest owns "${needle}".`, { hits });
|
|
141
|
+
}
|
|
142
|
+
const lines = hits.map((h) => `${h.matchKind}: ${h.questId} ${h.questTitle ?? ""}`.trimEnd() +
|
|
143
|
+
(h.detail ? ` (${h.detail})` : ""));
|
|
144
|
+
return ok(lines.join("\n"), { hits });
|
|
145
|
+
}
|
|
146
|
+
export function ancestors(state, params) {
|
|
147
|
+
const id = (params.id ?? state.questId ?? "").trim();
|
|
148
|
+
if (!id) {
|
|
149
|
+
return refuse("Load a quest first, or pass the quest `id` to trace up.");
|
|
150
|
+
}
|
|
151
|
+
const chain = ancestorsOf(state, id);
|
|
152
|
+
if (chain === undefined) {
|
|
153
|
+
return refuse(`No quest with id "${id}".`);
|
|
154
|
+
}
|
|
155
|
+
if (chain.length === 0) {
|
|
156
|
+
return ok(`${id} is top-level; it has no ancestors.`, { ancestors: [] });
|
|
157
|
+
}
|
|
158
|
+
const lines = chain.map((a, i) => `${" ".repeat(i)}-> ${a.id} ${a.title ?? ""} [${a.status}]`.trimEnd());
|
|
159
|
+
return ok(lines.join("\n"), { ancestors: chain });
|
|
160
|
+
}
|
|
161
|
+
export function tree(state, _params) {
|
|
162
|
+
const { index } = discoverQuests(state.questsRoot);
|
|
163
|
+
const nodes = treeAll(index);
|
|
164
|
+
return renderTreeAsListing(index, nodes);
|
|
165
|
+
}
|
|
166
|
+
export function expand(state, params) {
|
|
167
|
+
const id = params.id ?? state.questId;
|
|
168
|
+
if (!id) {
|
|
169
|
+
return refuse("Pass a quest id in `id` or load one first.");
|
|
170
|
+
}
|
|
171
|
+
const { index } = discoverQuests(state.questsRoot);
|
|
172
|
+
const node = expandQuest(index, id);
|
|
173
|
+
if (!node)
|
|
174
|
+
return refuse(`No quest with id "${id}".`);
|
|
175
|
+
return renderTreeAsListing(index, [node]);
|
|
176
|
+
}
|
|
177
|
+
function renderTreeAsListing(index, nodes) {
|
|
178
|
+
if (nodes.length === 0)
|
|
179
|
+
return ok("(no quests)");
|
|
180
|
+
const rows = [];
|
|
181
|
+
const briefLines = [];
|
|
182
|
+
const visit = (node, depth) => {
|
|
183
|
+
const indent = " ".repeat(depth);
|
|
184
|
+
const brief = {
|
|
185
|
+
id: node.id,
|
|
186
|
+
kind: node.kind,
|
|
187
|
+
status: node.status,
|
|
188
|
+
priority: node.priority,
|
|
189
|
+
title: node.title,
|
|
190
|
+
};
|
|
191
|
+
briefLines.push(`${indent}${renderRowBrief(brief)}`);
|
|
192
|
+
const entry = index.quests.get(node.id);
|
|
193
|
+
if (entry) {
|
|
194
|
+
rows.push({
|
|
195
|
+
...brief,
|
|
196
|
+
priority: node.priority,
|
|
197
|
+
parent: entry.doc.frontMatter.parent,
|
|
198
|
+
updated: entry.doc.frontMatter.updated,
|
|
199
|
+
depth,
|
|
200
|
+
...buildRowExpansion(entry),
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
rows.push({
|
|
205
|
+
...brief,
|
|
206
|
+
priority: node.priority,
|
|
207
|
+
parent: null,
|
|
208
|
+
updated: "",
|
|
209
|
+
depth,
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
for (const child of node.children)
|
|
213
|
+
visit(child, depth + 1);
|
|
214
|
+
};
|
|
215
|
+
for (const node of nodes)
|
|
216
|
+
visit(node, 0);
|
|
217
|
+
const listing = {
|
|
218
|
+
rows,
|
|
219
|
+
total: rows.length,
|
|
220
|
+
offset: 0,
|
|
221
|
+
limit: rows.length,
|
|
222
|
+
remaining: 0,
|
|
223
|
+
};
|
|
224
|
+
return ok(briefLines.join("\n"), { listing });
|
|
225
|
+
}
|
|
226
|
+
/** Map a document id's prefix to its storage subdir. */
|
|
227
|
+
export function subdirForDocumentId(id) {
|
|
228
|
+
const prefix = id.split("-")[0];
|
|
229
|
+
switch (prefix) {
|
|
230
|
+
case "PLAN":
|
|
231
|
+
return "plans";
|
|
232
|
+
case "RSCH":
|
|
233
|
+
return "research";
|
|
234
|
+
case "BRIF":
|
|
235
|
+
return "briefs";
|
|
236
|
+
case "RPRT":
|
|
237
|
+
return "reports";
|
|
238
|
+
default:
|
|
239
|
+
return undefined;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rank-and-priority verbs: top, bottom, bump, sink,
|
|
3
|
+
* before, after, renumber (sibling rank within a priority
|
|
4
|
+
* bucket), plus promote / demote / drive / park / defer
|
|
5
|
+
* (cross-bucket priority moves).
|
|
6
|
+
*/
|
|
7
|
+
import type { QuestPriority } from "../index.js";
|
|
8
|
+
import type { QuestState } from "../state.js";
|
|
9
|
+
import { type QuestResult, type QuestToolParams } from "./shared.js";
|
|
10
|
+
/** Reorder the loaded quest within its sibling set. */
|
|
11
|
+
export declare function reorder(state: QuestState, params: QuestToolParams): QuestResult;
|
|
12
|
+
/** Shift the loaded quest one priority bucket up or down. */
|
|
13
|
+
export declare function priorityShift(state: QuestState, direction: "up" | "down", params?: QuestToolParams): QuestResult;
|
|
14
|
+
/** Jump the loaded quest directly to a named priority bucket. */
|
|
15
|
+
export declare function priorityJump(state: QuestState, to: QuestPriority): QuestResult;
|