@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,496 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read-only projections over the quest tree: find, who, links,
|
|
3
|
+
* tree, expand, ancestors, locate and a lean show. Pure functions
|
|
4
|
+
* over discoverQuests' index — no I/O beyond the read discovery
|
|
5
|
+
* already does, no host coupling.
|
|
6
|
+
*
|
|
7
|
+
* Deliberately excluded, and left to each adapter: anything keyed
|
|
8
|
+
* to a host's own session log (workspace/recent/restore, an
|
|
9
|
+
* activity-sorted find, per-session liveness in show) and cast
|
|
10
|
+
* identity resolution. Those need a session store or identity
|
|
11
|
+
* registry that not every host has an equivalent for. pi's own
|
|
12
|
+
* `lookup.ts` layers that richness on top of these same
|
|
13
|
+
* projections; a CLI adapter that has no session log just renders
|
|
14
|
+
* what's here.
|
|
15
|
+
*/
|
|
16
|
+
import { discoverQuests, } from "../internal/quest/discovery.js";
|
|
17
|
+
import { urlForRef, whyRefHasNoUrl } from "../refs/index.js";
|
|
18
|
+
import { extractCast, extractMentions, projectQuestForShow, } from "./index.js";
|
|
19
|
+
/** Fill in `resolveRefQuery`'s defaults for a raw params bag. */
|
|
20
|
+
export function resolveRefQuery(params) {
|
|
21
|
+
return { ...params };
|
|
22
|
+
}
|
|
23
|
+
/** Build the expansion block for a single quest entry. */
|
|
24
|
+
export function buildRowExpansion(entry) {
|
|
25
|
+
const cast = extractCast(entry.doc.body)
|
|
26
|
+
.slice(0, 5)
|
|
27
|
+
.map((c) => ({ role: c.role, subject: c.subject }));
|
|
28
|
+
const documents = entry.documents.map((d) => ({
|
|
29
|
+
id: d.doc.frontMatter.id,
|
|
30
|
+
stage: d.doc.frontMatter.stage,
|
|
31
|
+
}));
|
|
32
|
+
const projection = projectQuestForShow(entry.doc);
|
|
33
|
+
const recentJourney = projection.journey
|
|
34
|
+
.slice(0, 3)
|
|
35
|
+
.map((j) => ({ date: j.date, prose: j.prose }));
|
|
36
|
+
const summary = projection.summary;
|
|
37
|
+
return summary
|
|
38
|
+
? { summary, cast, documents, recentJourney }
|
|
39
|
+
: { cast, documents, recentJourney };
|
|
40
|
+
}
|
|
41
|
+
function parseDate(input) {
|
|
42
|
+
if (!input)
|
|
43
|
+
return undefined;
|
|
44
|
+
const d = new Date(input);
|
|
45
|
+
return Number.isNaN(d.getTime()) ? undefined : d;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Match a quest against a free-text query, token by token. The
|
|
49
|
+
* query is split on whitespace and every token must appear
|
|
50
|
+
* somewhere across the quest's title, id, body or alias values
|
|
51
|
+
* (an AND across a combined haystack), so a multi-word query no
|
|
52
|
+
* longer demands one contiguous substring. An empty query
|
|
53
|
+
* matches everything.
|
|
54
|
+
*/
|
|
55
|
+
export function matchesQuery(entry, q) {
|
|
56
|
+
const tokens = q
|
|
57
|
+
.toLowerCase()
|
|
58
|
+
.split(/\s+/)
|
|
59
|
+
.filter((t) => t.length > 0);
|
|
60
|
+
if (tokens.length === 0)
|
|
61
|
+
return true;
|
|
62
|
+
const fm = entry.doc.frontMatter;
|
|
63
|
+
const haystack = [
|
|
64
|
+
entry.doc.title ?? "",
|
|
65
|
+
fm.id,
|
|
66
|
+
entry.doc.body,
|
|
67
|
+
...fm.aliases.map((a) => a.value),
|
|
68
|
+
]
|
|
69
|
+
.join("\n")
|
|
70
|
+
.toLowerCase();
|
|
71
|
+
return tokens.every((token) => haystack.includes(token));
|
|
72
|
+
}
|
|
73
|
+
function fieldValue(fm, field) {
|
|
74
|
+
switch (field ?? "updated") {
|
|
75
|
+
case "started":
|
|
76
|
+
return fm.started;
|
|
77
|
+
case "due":
|
|
78
|
+
return fm.due;
|
|
79
|
+
case "eta":
|
|
80
|
+
return fm.eta;
|
|
81
|
+
default:
|
|
82
|
+
return fm.updated;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Search quests by free text, time range and frontmatter
|
|
87
|
+
* filters. Returns every match ordered by `updated`
|
|
88
|
+
* descending; pagination is the caller's concern so the
|
|
89
|
+
* listing renderer can attach an accurate "and N more"
|
|
90
|
+
* tail.
|
|
91
|
+
*/
|
|
92
|
+
export function findQuests(state, params) {
|
|
93
|
+
return findQuestEntries(state, params).map((m) => m.hit);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Same as `findQuests` but also returns the matching
|
|
97
|
+
* `QuestEntry` so the caller can build the expanded view
|
|
98
|
+
* without re-walking discovery.
|
|
99
|
+
*/
|
|
100
|
+
export function findQuestEntries(state, params) {
|
|
101
|
+
const { index } = discoverQuests(state.questsRoot);
|
|
102
|
+
const since = parseDate(params.since);
|
|
103
|
+
const until = parseDate(params.until);
|
|
104
|
+
const matches = [];
|
|
105
|
+
for (const entry of index.quests.values()) {
|
|
106
|
+
const fm = entry.doc.frontMatter;
|
|
107
|
+
if (params.kind && fm.kind !== params.kind)
|
|
108
|
+
continue;
|
|
109
|
+
if (params.status && fm.status !== params.status)
|
|
110
|
+
continue;
|
|
111
|
+
if (params.priority && fm.priority !== params.priority)
|
|
112
|
+
continue;
|
|
113
|
+
if (params.parent !== undefined) {
|
|
114
|
+
const expected = params.parent === "null" ? null : params.parent;
|
|
115
|
+
if (fm.parent !== expected)
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
if (params.refType) {
|
|
119
|
+
const types = new Set(fm.aliases.map((a) => a.type));
|
|
120
|
+
if (!types.has(params.refType))
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
const fieldDate = parseDate(fieldValue(fm, params.field));
|
|
124
|
+
if (since && fieldDate && fieldDate < since)
|
|
125
|
+
continue;
|
|
126
|
+
if (until && fieldDate && fieldDate > until)
|
|
127
|
+
continue;
|
|
128
|
+
if (params.query && !matchesQuery(entry, params.query))
|
|
129
|
+
continue;
|
|
130
|
+
const projection = projectQuestForShow(entry.doc);
|
|
131
|
+
const updatedDate = parseDate(fm.updated);
|
|
132
|
+
const hit = {
|
|
133
|
+
id: fm.id,
|
|
134
|
+
title: entry.doc.title ?? null,
|
|
135
|
+
kind: fm.kind,
|
|
136
|
+
status: fm.status,
|
|
137
|
+
priority: fm.priority,
|
|
138
|
+
rank: fm.rank,
|
|
139
|
+
updated: fm.updated,
|
|
140
|
+
dir: entry.dir,
|
|
141
|
+
};
|
|
142
|
+
if (projection.summary)
|
|
143
|
+
hit.summary = projection.summary;
|
|
144
|
+
matches.push({
|
|
145
|
+
hit,
|
|
146
|
+
entry,
|
|
147
|
+
_sortKey: updatedDate ? -updatedDate.getTime() : 0,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
matches.sort((a, b) => a._sortKey - b._sortKey);
|
|
151
|
+
return matches.map(({ hit, entry }) => ({ hit, entry }));
|
|
152
|
+
}
|
|
153
|
+
/** Convenience: load a single QuestEntry by id. */
|
|
154
|
+
export function getQuestEntry(state, id) {
|
|
155
|
+
const { index } = discoverQuests(state.questsRoot);
|
|
156
|
+
return index.quests.get(id);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Inverse index: resolve a needle to the quest that owns it. The
|
|
160
|
+
* needle may be a quest id, a document id, an alias ref (either
|
|
161
|
+
* `type:value` or a bare value) or a session id. Returns one hit
|
|
162
|
+
* per match, so a needle that resolves to several quests (a session
|
|
163
|
+
* id left on more than one after divergence, say) surfaces them all
|
|
164
|
+
* rather than hiding the ambiguity behind a single answer.
|
|
165
|
+
*/
|
|
166
|
+
export function locateOwner(state, needle) {
|
|
167
|
+
const trimmed = needle.trim();
|
|
168
|
+
if (!trimmed)
|
|
169
|
+
return [];
|
|
170
|
+
const lower = trimmed.toLowerCase();
|
|
171
|
+
const { index } = discoverQuests(state.questsRoot);
|
|
172
|
+
const hits = [];
|
|
173
|
+
for (const entry of index.quests.values()) {
|
|
174
|
+
const fm = entry.doc.frontMatter;
|
|
175
|
+
const title = entry.doc.title ?? null;
|
|
176
|
+
if (fm.id === trimmed) {
|
|
177
|
+
hits.push({ questId: fm.id, questTitle: title, matchKind: "quest" });
|
|
178
|
+
}
|
|
179
|
+
for (const d of entry.documents) {
|
|
180
|
+
if (d.doc.frontMatter.id === trimmed) {
|
|
181
|
+
hits.push({
|
|
182
|
+
questId: fm.id,
|
|
183
|
+
questTitle: title,
|
|
184
|
+
matchKind: "document",
|
|
185
|
+
detail: d.path,
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
for (const a of fm.aliases) {
|
|
190
|
+
const ref = `${a.type}:${a.value}`;
|
|
191
|
+
if (ref.toLowerCase() === lower || a.value.toLowerCase() === lower) {
|
|
192
|
+
hits.push({
|
|
193
|
+
questId: fm.id,
|
|
194
|
+
questTitle: title,
|
|
195
|
+
matchKind: "alias",
|
|
196
|
+
detail: ref,
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
for (const s of fm.sessions) {
|
|
201
|
+
if (s.id === trimmed) {
|
|
202
|
+
hits.push({
|
|
203
|
+
questId: fm.id,
|
|
204
|
+
questTitle: title,
|
|
205
|
+
matchKind: "session",
|
|
206
|
+
detail: s.id,
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return hits;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Walk a quest's parent chain from its immediate parent up to the
|
|
215
|
+
* root, so a caller can ask which epic a quest sits under. Nearest
|
|
216
|
+
* parent comes first. A cycle (a store that drifted into one) or a
|
|
217
|
+
* dangling parent stops the walk rather than looping forever. Returns
|
|
218
|
+
* an empty list for a top-level quest, and undefined when the starting
|
|
219
|
+
* id is unknown.
|
|
220
|
+
*/
|
|
221
|
+
export function ancestorsOf(state, id) {
|
|
222
|
+
const { index } = discoverQuests(state.questsRoot);
|
|
223
|
+
const start = index.quests.get(id);
|
|
224
|
+
if (!start)
|
|
225
|
+
return undefined;
|
|
226
|
+
const chain = [];
|
|
227
|
+
const seen = new Set([id]);
|
|
228
|
+
let parentId = start.doc.frontMatter.parent ?? null;
|
|
229
|
+
while (parentId && !seen.has(parentId)) {
|
|
230
|
+
seen.add(parentId);
|
|
231
|
+
const entry = index.quests.get(parentId);
|
|
232
|
+
if (!entry)
|
|
233
|
+
break;
|
|
234
|
+
const fm = entry.doc.frontMatter;
|
|
235
|
+
chain.push({
|
|
236
|
+
id: fm.id,
|
|
237
|
+
title: entry.doc.title ?? null,
|
|
238
|
+
kind: fm.kind,
|
|
239
|
+
status: fm.status,
|
|
240
|
+
});
|
|
241
|
+
parentId = fm.parent ?? null;
|
|
242
|
+
}
|
|
243
|
+
return chain;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Return Cast bullets across quests matching the filter.
|
|
247
|
+
* No internal cap: the caller owns pagination so a caller
|
|
248
|
+
* who walks the whole tree gets the whole tree. Direct
|
|
249
|
+
* library callers who want a cap pass `limit:`.
|
|
250
|
+
*
|
|
251
|
+
* Scaffold placeholder subjects (the `_name or @handle_`
|
|
252
|
+
* sentinel a fresh quest's template writes) are already
|
|
253
|
+
* filtered out at the parser level by `extractCast`, so
|
|
254
|
+
* this function only sees real cast bullets.
|
|
255
|
+
*/
|
|
256
|
+
export function findPeople(state, params) {
|
|
257
|
+
const { index } = discoverQuests(state.questsRoot);
|
|
258
|
+
const nameNeedle = params.name?.toLowerCase();
|
|
259
|
+
const roleNeedle = params.role?.toLowerCase();
|
|
260
|
+
const out = [];
|
|
261
|
+
const limit = params.limit ?? Number.POSITIVE_INFINITY;
|
|
262
|
+
for (const entry of index.quests.values()) {
|
|
263
|
+
const cast = extractCast(entry.doc.body);
|
|
264
|
+
for (const c of cast) {
|
|
265
|
+
if (roleNeedle && !c.role.toLowerCase().includes(roleNeedle))
|
|
266
|
+
continue;
|
|
267
|
+
if (nameNeedle && !c.subject.toLowerCase().includes(nameNeedle))
|
|
268
|
+
continue;
|
|
269
|
+
out.push({
|
|
270
|
+
questId: entry.doc.frontMatter.id,
|
|
271
|
+
questTitle: entry.doc.title ?? null,
|
|
272
|
+
role: c.role,
|
|
273
|
+
subject: c.subject,
|
|
274
|
+
prose: c.prose,
|
|
275
|
+
});
|
|
276
|
+
if (out.length >= limit)
|
|
277
|
+
return out;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
return out;
|
|
281
|
+
}
|
|
282
|
+
const URL_REGEX = /https?:\/\/[^\s<>()\]"']+/g;
|
|
283
|
+
function extractRawUrls(body, known) {
|
|
284
|
+
const out = [];
|
|
285
|
+
const seen = new Set();
|
|
286
|
+
for (const match of body.matchAll(URL_REGEX)) {
|
|
287
|
+
const url = match[0].replace(/[.,;:!?)\]]+$/, "");
|
|
288
|
+
if (known.has(url))
|
|
289
|
+
continue;
|
|
290
|
+
if (seen.has(url))
|
|
291
|
+
continue;
|
|
292
|
+
seen.add(url);
|
|
293
|
+
out.push(url);
|
|
294
|
+
}
|
|
295
|
+
return out;
|
|
296
|
+
}
|
|
297
|
+
function bodySnippet(body, needle) {
|
|
298
|
+
const i = body.indexOf(needle);
|
|
299
|
+
if (i < 0)
|
|
300
|
+
return "";
|
|
301
|
+
const start = Math.max(0, i - 60);
|
|
302
|
+
const end = Math.min(body.length, i + needle.length + 60);
|
|
303
|
+
return body.slice(start, end).replace(/\s+/g, " ").trim();
|
|
304
|
+
}
|
|
305
|
+
/** Outgoing and incoming reference projection for the loaded quest. */
|
|
306
|
+
export function linksForLoaded(state, params = {}) {
|
|
307
|
+
if (!state.questId)
|
|
308
|
+
return undefined;
|
|
309
|
+
const { index } = discoverQuests(state.questsRoot);
|
|
310
|
+
return linksForQuest(index, state.questId, params);
|
|
311
|
+
}
|
|
312
|
+
/** Outgoing and incoming reference projection for any quest by id. */
|
|
313
|
+
export function linksForQuest(index, questId, params) {
|
|
314
|
+
const me = index.quests.get(questId);
|
|
315
|
+
if (!me)
|
|
316
|
+
return undefined;
|
|
317
|
+
const myMentions = extractMentions(me.doc.body);
|
|
318
|
+
const knownRefUrls = new Set();
|
|
319
|
+
for (const r of myMentions.refs) {
|
|
320
|
+
const u = urlForRef(r);
|
|
321
|
+
if (u)
|
|
322
|
+
knownRefUrls.add(u);
|
|
323
|
+
}
|
|
324
|
+
// Only ids that resolve to a real quest belong here. A mentioned
|
|
325
|
+
// document id (PLAN-, RSCH-, BRIF-, RPRT-) is not a quest, so it
|
|
326
|
+
// would otherwise render as a titleless quest row.
|
|
327
|
+
const quests = myMentions.ids
|
|
328
|
+
.filter((id) => id !== questId)
|
|
329
|
+
.filter((id) => index.quests.has(id))
|
|
330
|
+
.map((id) => ({ id, title: index.quests.get(id)?.doc.title ?? null }));
|
|
331
|
+
const refs = myMentions.refs
|
|
332
|
+
.filter((r) => !params.kind || r.type === params.kind)
|
|
333
|
+
.filter((r) => !params.pattern || r.value.includes(params.pattern))
|
|
334
|
+
.map((r) => {
|
|
335
|
+
const u = urlForRef(r);
|
|
336
|
+
if (u)
|
|
337
|
+
return { ...r, url: u };
|
|
338
|
+
// Carried so the listing can say a link is missing and why,
|
|
339
|
+
// rather than showing a bare ref that looks the same as one
|
|
340
|
+
// whose type simply has no URL form.
|
|
341
|
+
const why = whyRefHasNoUrl(r);
|
|
342
|
+
return why ? { ...r, why } : { ...r };
|
|
343
|
+
});
|
|
344
|
+
let urls = extractRawUrls(me.doc.body, knownRefUrls);
|
|
345
|
+
const pattern = params.pattern;
|
|
346
|
+
if (pattern)
|
|
347
|
+
urls = urls.filter((u) => u.includes(pattern));
|
|
348
|
+
const incoming = [];
|
|
349
|
+
for (const entry of index.quests.values()) {
|
|
350
|
+
if (entry.doc.frontMatter.id === questId)
|
|
351
|
+
continue;
|
|
352
|
+
if (params.priority && entry.doc.frontMatter.priority !== params.priority)
|
|
353
|
+
continue;
|
|
354
|
+
if (params.status && entry.doc.frontMatter.status !== params.status)
|
|
355
|
+
continue;
|
|
356
|
+
const mentions = extractMentions(entry.doc.body);
|
|
357
|
+
const match = mentions.idMentions.find((m) => m.id === questId);
|
|
358
|
+
if (match) {
|
|
359
|
+
incoming.push({
|
|
360
|
+
questId: entry.doc.frontMatter.id,
|
|
361
|
+
questTitle: entry.doc.title ?? null,
|
|
362
|
+
context: bodySnippet(entry.doc.body, questId),
|
|
363
|
+
relation: match.relation,
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
return { outgoing: { quests, refs, urls }, incoming };
|
|
368
|
+
}
|
|
369
|
+
function summariseDocuments(documents) {
|
|
370
|
+
return documents
|
|
371
|
+
.map((d) => ({
|
|
372
|
+
id: d.doc.frontMatter.id,
|
|
373
|
+
kind: d.doc.frontMatter.kind,
|
|
374
|
+
stage: d.doc.frontMatter.stage,
|
|
375
|
+
title: d.doc.title ?? null,
|
|
376
|
+
path: d.path,
|
|
377
|
+
updated: d.doc.frontMatter.updated,
|
|
378
|
+
}))
|
|
379
|
+
.sort((a, b) => (a.updated < b.updated ? 1 : -1));
|
|
380
|
+
}
|
|
381
|
+
/** Build the full `show` projection for the loaded quest. */
|
|
382
|
+
export function showLoaded(state) {
|
|
383
|
+
if (!state.questId)
|
|
384
|
+
return undefined;
|
|
385
|
+
return showQuestById(state, state.questId);
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Build the full `show` projection for any quest by id, without
|
|
389
|
+
* touching the loaded state. This is what lets `show <id>`
|
|
390
|
+
* inspect a sibling read-only instead of having to load it.
|
|
391
|
+
*
|
|
392
|
+
* Deliberately leaner than pi's own `showQuestById`: no attached-
|
|
393
|
+
* session liveness (that needs pi's session log) and cast subjects
|
|
394
|
+
* are not resolved to identities (that needs `lib/people`, not yet
|
|
395
|
+
* ported). Both are adapter-side enrichments a host with a session
|
|
396
|
+
* log or an identity registry can layer on top of this projection.
|
|
397
|
+
*/
|
|
398
|
+
export function showQuestById(state, questId) {
|
|
399
|
+
const { index } = discoverQuests(state.questsRoot);
|
|
400
|
+
const me = index.quests.get(questId);
|
|
401
|
+
if (!me)
|
|
402
|
+
return undefined;
|
|
403
|
+
const links = linksForQuest(index, questId, {});
|
|
404
|
+
const projection = projectQuestForShow(me.doc);
|
|
405
|
+
return {
|
|
406
|
+
frontMatter: me.doc.frontMatter,
|
|
407
|
+
title: me.doc.title ?? null,
|
|
408
|
+
summary: projection.summary ?? null,
|
|
409
|
+
purpose: projection.purpose ?? null,
|
|
410
|
+
cast: projection.cast,
|
|
411
|
+
journey: projection.journey.slice(0, 5),
|
|
412
|
+
milestones: projection.milestones,
|
|
413
|
+
documents: summariseDocuments(me.documents),
|
|
414
|
+
links: links?.outgoing ?? { quests: [], refs: [], urls: [] },
|
|
415
|
+
echoes: links?.incoming ?? [],
|
|
416
|
+
};
|
|
417
|
+
}
|
|
418
|
+
function buildSubtree(index, parentKey) {
|
|
419
|
+
const ids = index.children.get(parentKey) ?? [];
|
|
420
|
+
const entries = ids
|
|
421
|
+
.map((id) => index.quests.get(id))
|
|
422
|
+
.filter((e) => e !== undefined);
|
|
423
|
+
entries.sort((a, b) => a.doc.frontMatter.rank - b.doc.frontMatter.rank);
|
|
424
|
+
return entries.map((e) => ({
|
|
425
|
+
id: e.doc.frontMatter.id,
|
|
426
|
+
title: e.doc.title ?? null,
|
|
427
|
+
kind: e.doc.frontMatter.kind,
|
|
428
|
+
status: e.doc.frontMatter.status,
|
|
429
|
+
priority: e.doc.frontMatter.priority,
|
|
430
|
+
rank: e.doc.frontMatter.rank,
|
|
431
|
+
children: buildSubtree(index, e.doc.frontMatter.id),
|
|
432
|
+
}));
|
|
433
|
+
}
|
|
434
|
+
/** Tree projection across the whole quest tree.
|
|
435
|
+
*
|
|
436
|
+
* Any quest whose `parent` points at an id not in the
|
|
437
|
+
* index is collected under a synthetic root with a
|
|
438
|
+
* `parent` of `null` (a deleted or missing parent
|
|
439
|
+
* shouldn't make the children disappear from the tree
|
|
440
|
+
* view). The orphans group sits after the legitimate
|
|
441
|
+
* top-level quests so the user notices it.
|
|
442
|
+
*/
|
|
443
|
+
export function treeAll(index) {
|
|
444
|
+
const top = buildSubtree(index, "");
|
|
445
|
+
const orphans = [];
|
|
446
|
+
for (const [parentKey, ids] of index.children) {
|
|
447
|
+
if (parentKey === "")
|
|
448
|
+
continue;
|
|
449
|
+
if (index.quests.has(parentKey))
|
|
450
|
+
continue;
|
|
451
|
+
for (const id of ids) {
|
|
452
|
+
const entry = index.quests.get(id);
|
|
453
|
+
if (!entry)
|
|
454
|
+
continue;
|
|
455
|
+
orphans.push({
|
|
456
|
+
id: entry.doc.frontMatter.id,
|
|
457
|
+
title: entry.doc.title ?? null,
|
|
458
|
+
kind: entry.doc.frontMatter.kind,
|
|
459
|
+
status: entry.doc.frontMatter.status,
|
|
460
|
+
priority: entry.doc.frontMatter.priority,
|
|
461
|
+
rank: entry.doc.frontMatter.rank,
|
|
462
|
+
children: buildSubtree(index, entry.doc.frontMatter.id),
|
|
463
|
+
});
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
if (orphans.length === 0)
|
|
467
|
+
return top;
|
|
468
|
+
orphans.sort((a, b) => a.id.localeCompare(b.id));
|
|
469
|
+
return [
|
|
470
|
+
...top,
|
|
471
|
+
{
|
|
472
|
+
id: "(orphans)",
|
|
473
|
+
title: "Quests whose parent is missing from the index",
|
|
474
|
+
kind: "quest",
|
|
475
|
+
status: "active",
|
|
476
|
+
priority: "someday",
|
|
477
|
+
rank: Number.MAX_SAFE_INTEGER,
|
|
478
|
+
children: orphans,
|
|
479
|
+
},
|
|
480
|
+
];
|
|
481
|
+
}
|
|
482
|
+
/** Subtree rooted at a single quest id. */
|
|
483
|
+
export function expandQuest(index, id) {
|
|
484
|
+
const entry = index.quests.get(id);
|
|
485
|
+
if (!entry)
|
|
486
|
+
return undefined;
|
|
487
|
+
return {
|
|
488
|
+
id: entry.doc.frontMatter.id,
|
|
489
|
+
title: entry.doc.title ?? null,
|
|
490
|
+
kind: entry.doc.frontMatter.kind,
|
|
491
|
+
status: entry.doc.frontMatter.status,
|
|
492
|
+
priority: entry.doc.frontMatter.priority,
|
|
493
|
+
rank: entry.doc.frontMatter.rank,
|
|
494
|
+
children: buildSubtree(index, entry.doc.frontMatter.id),
|
|
495
|
+
};
|
|
496
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure stage machine for the focused document under a
|
|
3
|
+
* loaded quest. Generalised from the plan-workflow machine
|
|
4
|
+
* to operate on any document kind (plan, research, brief,
|
|
5
|
+
* report); the stage names are the same so we keep one
|
|
6
|
+
* mental model across kinds.
|
|
7
|
+
*
|
|
8
|
+
* Stages:
|
|
9
|
+
*
|
|
10
|
+
* - `idle`: no document focused (the quest may still be
|
|
11
|
+
* loaded; this is just about the document machine).
|
|
12
|
+
* - `think`: the read-only posture where the agent
|
|
13
|
+
* investigates before committing to a shape. Code writes
|
|
14
|
+
* are blocked when the focused document is a plan.
|
|
15
|
+
* - `draft`: writing the document. Code writes are still
|
|
16
|
+
* blocked when the focused document is a plan.
|
|
17
|
+
* - `build`: implementing against the document. Code writes
|
|
18
|
+
* are allowed.
|
|
19
|
+
* - `concluded`: terminal, work landed.
|
|
20
|
+
* - `retired`: terminal, work abandoned.
|
|
21
|
+
*
|
|
22
|
+
* Returning to `think` from `draft` or `build` reopens the
|
|
23
|
+
* loop when discovery invalidates the document. Thinking
|
|
24
|
+
* from a terminal stage is refused: a concluded or retired
|
|
25
|
+
* document is not silently reopened; draft a fresh document
|
|
26
|
+
* or reopen the quest instead.
|
|
27
|
+
*/
|
|
28
|
+
export type Stage = "idle" | "think" | "draft" | "build" | "concluded" | "retired";
|
|
29
|
+
export interface DocumentLoop {
|
|
30
|
+
stage: Stage;
|
|
31
|
+
}
|
|
32
|
+
export declare function initialDocumentState(): DocumentLoop;
|
|
33
|
+
export type TransitionAction = "think" | "draft" | "build" | "conclude" | "retire";
|
|
34
|
+
export interface TransitionInput {
|
|
35
|
+
action: TransitionAction;
|
|
36
|
+
/** think: what this document is about or what sent us back. */
|
|
37
|
+
note?: string;
|
|
38
|
+
/** retire: why the document is being abandoned. */
|
|
39
|
+
reason?: string;
|
|
40
|
+
}
|
|
41
|
+
export type TransitionResult = {
|
|
42
|
+
ok: true;
|
|
43
|
+
state: DocumentLoop;
|
|
44
|
+
} | {
|
|
45
|
+
ok: false;
|
|
46
|
+
guidance: string;
|
|
47
|
+
};
|
|
48
|
+
export declare function transition(state: DocumentLoop, input: TransitionInput): TransitionResult;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure stage machine for the focused document under a
|
|
3
|
+
* loaded quest. Generalised from the plan-workflow machine
|
|
4
|
+
* to operate on any document kind (plan, research, brief,
|
|
5
|
+
* report); the stage names are the same so we keep one
|
|
6
|
+
* mental model across kinds.
|
|
7
|
+
*
|
|
8
|
+
* Stages:
|
|
9
|
+
*
|
|
10
|
+
* - `idle`: no document focused (the quest may still be
|
|
11
|
+
* loaded; this is just about the document machine).
|
|
12
|
+
* - `think`: the read-only posture where the agent
|
|
13
|
+
* investigates before committing to a shape. Code writes
|
|
14
|
+
* are blocked when the focused document is a plan.
|
|
15
|
+
* - `draft`: writing the document. Code writes are still
|
|
16
|
+
* blocked when the focused document is a plan.
|
|
17
|
+
* - `build`: implementing against the document. Code writes
|
|
18
|
+
* are allowed.
|
|
19
|
+
* - `concluded`: terminal, work landed.
|
|
20
|
+
* - `retired`: terminal, work abandoned.
|
|
21
|
+
*
|
|
22
|
+
* Returning to `think` from `draft` or `build` reopens the
|
|
23
|
+
* loop when discovery invalidates the document. Thinking
|
|
24
|
+
* from a terminal stage is refused: a concluded or retired
|
|
25
|
+
* document is not silently reopened; draft a fresh document
|
|
26
|
+
* or reopen the quest instead.
|
|
27
|
+
*/
|
|
28
|
+
/** Stages where a document is actively being worked. */
|
|
29
|
+
const ACTIVE_STAGES = ["think", "draft", "build"];
|
|
30
|
+
export function initialDocumentState() {
|
|
31
|
+
return { stage: "idle" };
|
|
32
|
+
}
|
|
33
|
+
function isActive(stage) {
|
|
34
|
+
return ACTIVE_STAGES.includes(stage);
|
|
35
|
+
}
|
|
36
|
+
function advance(stage) {
|
|
37
|
+
return { ok: true, state: { stage } };
|
|
38
|
+
}
|
|
39
|
+
function refuse(guidance) {
|
|
40
|
+
return { ok: false, guidance };
|
|
41
|
+
}
|
|
42
|
+
export function transition(state, input) {
|
|
43
|
+
switch (input.action) {
|
|
44
|
+
case "think":
|
|
45
|
+
return think(state, input);
|
|
46
|
+
case "draft":
|
|
47
|
+
return draft(state);
|
|
48
|
+
case "build":
|
|
49
|
+
return build(state);
|
|
50
|
+
case "conclude":
|
|
51
|
+
return conclude(state);
|
|
52
|
+
case "retire":
|
|
53
|
+
return retire(state, input);
|
|
54
|
+
default:
|
|
55
|
+
return refuse("Unknown action. Use think, draft, build, conclude or retire.");
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function think(state, input) {
|
|
59
|
+
if (!input.note?.trim()) {
|
|
60
|
+
return refuse("Say what this is about in a note: the problem you are investigating, or what sent you back to thinking.");
|
|
61
|
+
}
|
|
62
|
+
if (state.stage === "think") {
|
|
63
|
+
return refuse("Already thinking. Draft when you are ready.");
|
|
64
|
+
}
|
|
65
|
+
if (state.stage === "concluded" || state.stage === "retired") {
|
|
66
|
+
return refuse("This document is terminal; thinking would silently reopen it. Draft a fresh document, or reopen the quest if the whole thing is resuming.");
|
|
67
|
+
}
|
|
68
|
+
return advance("think");
|
|
69
|
+
}
|
|
70
|
+
function draft(state) {
|
|
71
|
+
if (state.stage !== "think") {
|
|
72
|
+
return refuse("Draft from think: dig and debate first, then write the document.");
|
|
73
|
+
}
|
|
74
|
+
return advance("draft");
|
|
75
|
+
}
|
|
76
|
+
function build(state) {
|
|
77
|
+
if (state.stage !== "draft") {
|
|
78
|
+
return refuse("Build from draft: write the document first, then implement against it.");
|
|
79
|
+
}
|
|
80
|
+
return advance("build");
|
|
81
|
+
}
|
|
82
|
+
function conclude(state) {
|
|
83
|
+
if (!isActive(state.stage)) {
|
|
84
|
+
return refuse("No active document to conclude.");
|
|
85
|
+
}
|
|
86
|
+
return advance("concluded");
|
|
87
|
+
}
|
|
88
|
+
function retire(state, input) {
|
|
89
|
+
if (!isActive(state.stage)) {
|
|
90
|
+
return refuse("No active document to retire.");
|
|
91
|
+
}
|
|
92
|
+
if (!input.reason?.trim()) {
|
|
93
|
+
return refuse("Give a reason for retiring the document.");
|
|
94
|
+
}
|
|
95
|
+
return advance("retired");
|
|
96
|
+
}
|