@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,239 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quest document model: parse a quest README into its
|
|
3
|
+
* structured projections.
|
|
4
|
+
*
|
|
5
|
+
* What we extract:
|
|
6
|
+
*
|
|
7
|
+
* - Front-matter (delegated to frontmatter.ts).
|
|
8
|
+
* - Title: first H1 of the body.
|
|
9
|
+
* - Section snippets: first paragraph of Summary and
|
|
10
|
+
* Purpose, recent Journey entries, Cast bullets.
|
|
11
|
+
* - Milestone checkboxes: total and done count.
|
|
12
|
+
* - Inline references: bare quest/document IDs and any
|
|
13
|
+
* text the registered ref types match.
|
|
14
|
+
*
|
|
15
|
+
* We do not try to make the parser idempotent over the
|
|
16
|
+
* body. Writers regenerate the structured sections; free
|
|
17
|
+
* prose is preserved by mutating the doc's `body` string
|
|
18
|
+
* directly.
|
|
19
|
+
*/
|
|
20
|
+
import { parseAllRefs } from "../../refs/index.js";
|
|
21
|
+
import { parseQuestFrontMatter } from "./frontmatter.js";
|
|
22
|
+
import { findIds, findIdsWithRelation } from "./id.js";
|
|
23
|
+
const SECTION_HEADERS = {
|
|
24
|
+
summary: /^##\s+(?:[\u{1F300}-\u{1FFFF}]\s+)?Summary\s*$/u,
|
|
25
|
+
purpose: /^##\s+(?:[\u{1F300}-\u{1FFFF}]\s+)?Purpose\s*$/u,
|
|
26
|
+
cast: /^##\s+(?:[\u{1F300}-\u{1FFFF}]\s+)?Cast\s*$/u,
|
|
27
|
+
journey: /^##\s+(?:[\u{1F300}-\u{1FFFF}]\s+)?Journey\s*$/u,
|
|
28
|
+
milestones: /^##\s+(?:[\u{1F300}-\u{1FFFF}]\s+)?Milestones\s*$/u,
|
|
29
|
+
spirit: /^##\s+(?:[\u{1F300}-\u{1FFFF}]\s+)?Spirit\s*$/u,
|
|
30
|
+
outcomes: /^##\s+(?:[\u{1F300}-\u{1FFFF}]\s+)?Outcomes\s*$/u,
|
|
31
|
+
context: /^##\s+(?:[\u{1F300}-\u{1FFFF}]\s+)?Context\s*$/u,
|
|
32
|
+
};
|
|
33
|
+
const ANY_H2 = /^##\s+/;
|
|
34
|
+
/** Parse a quest README and return the structured doc. */
|
|
35
|
+
export function parseQuestDoc(text) {
|
|
36
|
+
const parsed = parseQuestFrontMatter(text);
|
|
37
|
+
if (!parsed)
|
|
38
|
+
return undefined;
|
|
39
|
+
return {
|
|
40
|
+
frontMatter: parsed.frontMatter,
|
|
41
|
+
body: parsed.body,
|
|
42
|
+
title: extractTitle(parsed.body),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/** Extract the first H1 from a body. */
|
|
46
|
+
export function extractTitle(body) {
|
|
47
|
+
const match = /^#\s+(.+)$/m.exec(body);
|
|
48
|
+
return match ? match[1].trim() : undefined;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Extract the lines of a named section from a body. Returns
|
|
52
|
+
* the lines between the matching `## Section` header and
|
|
53
|
+
* the next `## ` header (or end of body). The header line
|
|
54
|
+
* itself is excluded.
|
|
55
|
+
*/
|
|
56
|
+
export function extractSection(body, header) {
|
|
57
|
+
const headerRegex = SECTION_HEADERS[header];
|
|
58
|
+
const lines = body.split("\n");
|
|
59
|
+
let start = -1;
|
|
60
|
+
for (let i = 0; i < lines.length; i++) {
|
|
61
|
+
if (headerRegex.test(lines[i])) {
|
|
62
|
+
start = i + 1;
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (start === -1)
|
|
67
|
+
return [];
|
|
68
|
+
let end = lines.length;
|
|
69
|
+
for (let i = start; i < lines.length; i++) {
|
|
70
|
+
if (ANY_H2.test(lines[i])) {
|
|
71
|
+
end = i;
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return lines.slice(start, end);
|
|
76
|
+
}
|
|
77
|
+
/** First paragraph (until blank line) of a section. */
|
|
78
|
+
export function extractSectionParagraph(body, header) {
|
|
79
|
+
const sectionLines = extractSection(body, header);
|
|
80
|
+
const paragraph = [];
|
|
81
|
+
for (const line of sectionLines) {
|
|
82
|
+
if (line.trim() === "") {
|
|
83
|
+
if (paragraph.length > 0)
|
|
84
|
+
break;
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
paragraph.push(line);
|
|
88
|
+
}
|
|
89
|
+
return paragraph.length > 0 ? paragraph.join("\n").trim() : undefined;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* A cast subject that's purely a scaffold placeholder, not
|
|
93
|
+
* a real person. The scaffold writes
|
|
94
|
+
* `- **owner**: _name or @handle_` into every fresh quest
|
|
95
|
+
* README; reading that bullet as a real cast entry made
|
|
96
|
+
* `who` and `show` echo the placeholder back to the user.
|
|
97
|
+
* We strip italic and bold delimiters then match the
|
|
98
|
+
* stripped form against a small set of known sentinels.
|
|
99
|
+
*/
|
|
100
|
+
function isCastPlaceholder(subject) {
|
|
101
|
+
const stripped = subject
|
|
102
|
+
.trim()
|
|
103
|
+
.replace(/^[*_]+/, "")
|
|
104
|
+
.replace(/[*_]+$/, "")
|
|
105
|
+
.trim()
|
|
106
|
+
.toLowerCase();
|
|
107
|
+
if (stripped.length === 0)
|
|
108
|
+
return true;
|
|
109
|
+
return (stripped === "name or @handle" ||
|
|
110
|
+
stripped === "name" ||
|
|
111
|
+
stripped === "@handle");
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Parse the Cast section's role-prefix bullets. Skips
|
|
115
|
+
* scaffold placeholder subjects so an unedited template
|
|
116
|
+
* doesn't surface as a real cast entry.
|
|
117
|
+
*/
|
|
118
|
+
export function extractCast(body) {
|
|
119
|
+
const lines = extractSection(body, "cast");
|
|
120
|
+
const bullets = [];
|
|
121
|
+
const bulletRegex = /^-\s+\*\*([\w-]+)\*\*:\s*(.+)$/;
|
|
122
|
+
for (const line of lines) {
|
|
123
|
+
const m = bulletRegex.exec(line.trim());
|
|
124
|
+
if (!m)
|
|
125
|
+
continue;
|
|
126
|
+
const role = m[1].toLowerCase();
|
|
127
|
+
const rest = m[2].trim();
|
|
128
|
+
// The subject is the leading person token (a handle
|
|
129
|
+
// like @joel.gerber or a name like Joel Gerber).
|
|
130
|
+
// Names can be multi-word; we stop at the first
|
|
131
|
+
// sentence break (period followed by a space or
|
|
132
|
+
// end-of-string) or a comma.
|
|
133
|
+
let subjectEnd = rest.length;
|
|
134
|
+
const sentenceBreak = /\.(?:\s|$)/.exec(rest);
|
|
135
|
+
if (sentenceBreak)
|
|
136
|
+
subjectEnd = sentenceBreak.index;
|
|
137
|
+
const commaBreak = rest.indexOf(",");
|
|
138
|
+
if (commaBreak >= 0 && commaBreak < subjectEnd)
|
|
139
|
+
subjectEnd = commaBreak;
|
|
140
|
+
const subject = rest.slice(0, subjectEnd).trim();
|
|
141
|
+
if (isCastPlaceholder(subject))
|
|
142
|
+
continue;
|
|
143
|
+
const prose = rest
|
|
144
|
+
.slice(subjectEnd)
|
|
145
|
+
.replace(/^[.\s,]+/, "")
|
|
146
|
+
.trim();
|
|
147
|
+
bullets.push({ role, subject, prose });
|
|
148
|
+
}
|
|
149
|
+
return bullets;
|
|
150
|
+
}
|
|
151
|
+
/** Parse the Journey section's dated entries. */
|
|
152
|
+
export function extractJourney(body) {
|
|
153
|
+
const lines = extractSection(body, "journey");
|
|
154
|
+
const entries = [];
|
|
155
|
+
const dateRegex = /^-\s+\*\*(\d{4}-\d{2}-\d{2})\*\*\s*:\s*(.*)$/;
|
|
156
|
+
const continuationRegex = /^\s+/;
|
|
157
|
+
let current;
|
|
158
|
+
for (const line of lines) {
|
|
159
|
+
const m = dateRegex.exec(line);
|
|
160
|
+
if (m) {
|
|
161
|
+
if (current)
|
|
162
|
+
entries.push(current);
|
|
163
|
+
current = { date: m[1], prose: m[2].trim() };
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
if (current && (continuationRegex.test(line) || line.trim() === "")) {
|
|
167
|
+
if (line.trim())
|
|
168
|
+
current.prose += `\n${line.trim()}`;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
if (current)
|
|
172
|
+
entries.push(current);
|
|
173
|
+
return entries;
|
|
174
|
+
}
|
|
175
|
+
/** Count Milestones section checkboxes. */
|
|
176
|
+
export function milestoneProgress(body) {
|
|
177
|
+
const section = extractSection(body, "milestones").join("\n");
|
|
178
|
+
const rx = /^\s*-\s+\[([ xX])\]/gm;
|
|
179
|
+
let total = 0;
|
|
180
|
+
let done = 0;
|
|
181
|
+
for (let m = rx.exec(section); m !== null; m = rx.exec(section)) {
|
|
182
|
+
total++;
|
|
183
|
+
if (m[1].toLowerCase() === "x")
|
|
184
|
+
done++;
|
|
185
|
+
}
|
|
186
|
+
return { total, done };
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Count every `- [ ]` / `- [x]` checkbox in the body,
|
|
190
|
+
* regardless of which section holds it. Returns a count
|
|
191
|
+
* pair plus the prose of the first unchecked entry so the
|
|
192
|
+
* widget can render "5/33 → do the next thing" without
|
|
193
|
+
* re-parsing the body on every paint.
|
|
194
|
+
*
|
|
195
|
+
* The plan, research, brief and report templates all use
|
|
196
|
+
* different section names for their work list. Walking
|
|
197
|
+
* the whole body makes one counter serve all four kinds
|
|
198
|
+
* without coupling to a template detail.
|
|
199
|
+
*/
|
|
200
|
+
export function checkboxProgress(body) {
|
|
201
|
+
const rx = /^\s*-\s+\[([ xX])\]\s*(.*?)\s*$/gm;
|
|
202
|
+
let total = 0;
|
|
203
|
+
let done = 0;
|
|
204
|
+
let currentItem;
|
|
205
|
+
for (let m = rx.exec(body); m !== null; m = rx.exec(body)) {
|
|
206
|
+
total++;
|
|
207
|
+
const isDone = m[1].toLowerCase() === "x";
|
|
208
|
+
if (isDone) {
|
|
209
|
+
done++;
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
if (currentItem === undefined) {
|
|
213
|
+
currentItem = m[2] ?? "";
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return currentItem === undefined
|
|
217
|
+
? { total, done }
|
|
218
|
+
: { total, done, currentItem };
|
|
219
|
+
}
|
|
220
|
+
export function extractMentions(body) {
|
|
221
|
+
const idMentions = findIdsWithRelation(body);
|
|
222
|
+
return {
|
|
223
|
+
ids: findIds(body),
|
|
224
|
+
idMentions,
|
|
225
|
+
refs: parseAllRefs(body),
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
export function projectQuestForShow(doc) {
|
|
229
|
+
return {
|
|
230
|
+
frontMatter: doc.frontMatter,
|
|
231
|
+
title: doc.title,
|
|
232
|
+
summary: extractSectionParagraph(doc.body, "summary"),
|
|
233
|
+
purpose: extractSectionParagraph(doc.body, "purpose"),
|
|
234
|
+
cast: extractCast(doc.body),
|
|
235
|
+
journey: extractJourney(doc.body),
|
|
236
|
+
milestones: milestoneProgress(doc.body),
|
|
237
|
+
mentions: extractMentions(doc.body),
|
|
238
|
+
};
|
|
239
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure rank-reordering math for sibling quests.
|
|
3
|
+
*
|
|
4
|
+
* A "sibling set" is the list of quests that share a
|
|
5
|
+
* parent and a priority bucket. Each one carries a `rank`
|
|
6
|
+
* integer; lower is more important. The functions here
|
|
7
|
+
* take the current ordering and return the new ordering;
|
|
8
|
+
* the extension does the disk writes.
|
|
9
|
+
*
|
|
10
|
+
* All functions produce a contiguous `1..N` numbering on
|
|
11
|
+
* output, regardless of the input numbering. This means a
|
|
12
|
+
* `bump` that succeeds shifts the rest of the bucket only
|
|
13
|
+
* when ranks were already contiguous; otherwise it acts as
|
|
14
|
+
* a renumber side-effect, which is what we want, since the
|
|
15
|
+
* bucket stays clean.
|
|
16
|
+
*/
|
|
17
|
+
export interface RankEntry {
|
|
18
|
+
id: string;
|
|
19
|
+
rank: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The next free rank for a sibling set: one past the highest
|
|
23
|
+
* existing rank, or 1 when the set is empty. Appends a new quest to
|
|
24
|
+
* the end of its group so it never collides with an existing rank.
|
|
25
|
+
*/
|
|
26
|
+
export declare function nextRank(ranks: number[]): number;
|
|
27
|
+
/** Sort by rank ascending; stable on ties via the id. */
|
|
28
|
+
export declare function sortByRank<T extends RankEntry>(entries: T[]): T[];
|
|
29
|
+
/** Assign contiguous 1..N ranks in current order. */
|
|
30
|
+
export declare function renumber<T extends RankEntry>(entries: T[]): T[];
|
|
31
|
+
/** Move `id` to the top of the bucket. */
|
|
32
|
+
export declare function top<T extends RankEntry>(entries: T[], id: string): T[];
|
|
33
|
+
/** Move `id` to the bottom of the bucket. */
|
|
34
|
+
export declare function bottom<T extends RankEntry>(entries: T[], id: string): T[];
|
|
35
|
+
/** Swap `id` with the entry above it (move it up by one). */
|
|
36
|
+
export declare function bump<T extends RankEntry>(entries: T[], id: string): T[];
|
|
37
|
+
/** Swap `id` with the entry below it (move it down by one). */
|
|
38
|
+
export declare function sink<T extends RankEntry>(entries: T[], id: string): T[];
|
|
39
|
+
/** Place `id` immediately before `targetId`. */
|
|
40
|
+
export declare function before<T extends RankEntry>(entries: T[], id: string, targetId: string): T[];
|
|
41
|
+
/** Place `id` immediately after `targetId`. */
|
|
42
|
+
export declare function after<T extends RankEntry>(entries: T[], id: string, targetId: string): T[];
|
|
43
|
+
/** Diff two RankEntry lists: which entries changed rank? */
|
|
44
|
+
export declare function diffRanks<T extends RankEntry>(before: T[], after: T[]): {
|
|
45
|
+
id: string;
|
|
46
|
+
from: number;
|
|
47
|
+
to: number;
|
|
48
|
+
}[];
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure rank-reordering math for sibling quests.
|
|
3
|
+
*
|
|
4
|
+
* A "sibling set" is the list of quests that share a
|
|
5
|
+
* parent and a priority bucket. Each one carries a `rank`
|
|
6
|
+
* integer; lower is more important. The functions here
|
|
7
|
+
* take the current ordering and return the new ordering;
|
|
8
|
+
* the extension does the disk writes.
|
|
9
|
+
*
|
|
10
|
+
* All functions produce a contiguous `1..N` numbering on
|
|
11
|
+
* output, regardless of the input numbering. This means a
|
|
12
|
+
* `bump` that succeeds shifts the rest of the bucket only
|
|
13
|
+
* when ranks were already contiguous; otherwise it acts as
|
|
14
|
+
* a renumber side-effect, which is what we want, since the
|
|
15
|
+
* bucket stays clean.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* The next free rank for a sibling set: one past the highest
|
|
19
|
+
* existing rank, or 1 when the set is empty. Appends a new quest to
|
|
20
|
+
* the end of its group so it never collides with an existing rank.
|
|
21
|
+
*/
|
|
22
|
+
export function nextRank(ranks) {
|
|
23
|
+
return ranks.length > 0 ? Math.max(...ranks) + 1 : 1;
|
|
24
|
+
}
|
|
25
|
+
/** Sort by rank ascending; stable on ties via the id. */
|
|
26
|
+
export function sortByRank(entries) {
|
|
27
|
+
return [...entries].sort((a, b) => {
|
|
28
|
+
if (a.rank !== b.rank)
|
|
29
|
+
return a.rank - b.rank;
|
|
30
|
+
return a.id.localeCompare(b.id);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
/** Assign contiguous 1..N ranks in current order. */
|
|
34
|
+
export function renumber(entries) {
|
|
35
|
+
const sorted = sortByRank(entries);
|
|
36
|
+
return sorted.map((e, i) => ({ ...e, rank: i + 1 }));
|
|
37
|
+
}
|
|
38
|
+
function indexOf(entries, id) {
|
|
39
|
+
return entries.findIndex((e) => e.id === id);
|
|
40
|
+
}
|
|
41
|
+
function move(entries, from, to) {
|
|
42
|
+
const arr = [...entries];
|
|
43
|
+
const [moved] = arr.splice(from, 1);
|
|
44
|
+
arr.splice(to, 0, moved);
|
|
45
|
+
return arr.map((e, i) => ({ ...e, rank: i + 1 }));
|
|
46
|
+
}
|
|
47
|
+
/** Move `id` to the top of the bucket. */
|
|
48
|
+
export function top(entries, id) {
|
|
49
|
+
const sorted = sortByRank(entries);
|
|
50
|
+
const i = indexOf(sorted, id);
|
|
51
|
+
if (i < 0)
|
|
52
|
+
return renumber(entries);
|
|
53
|
+
return move(sorted, i, 0);
|
|
54
|
+
}
|
|
55
|
+
/** Move `id` to the bottom of the bucket. */
|
|
56
|
+
export function bottom(entries, id) {
|
|
57
|
+
const sorted = sortByRank(entries);
|
|
58
|
+
const i = indexOf(sorted, id);
|
|
59
|
+
if (i < 0)
|
|
60
|
+
return renumber(entries);
|
|
61
|
+
return move(sorted, i, sorted.length - 1);
|
|
62
|
+
}
|
|
63
|
+
/** Swap `id` with the entry above it (move it up by one). */
|
|
64
|
+
export function bump(entries, id) {
|
|
65
|
+
const sorted = sortByRank(entries);
|
|
66
|
+
const i = indexOf(sorted, id);
|
|
67
|
+
if (i <= 0)
|
|
68
|
+
return renumber(entries);
|
|
69
|
+
return move(sorted, i, i - 1);
|
|
70
|
+
}
|
|
71
|
+
/** Swap `id` with the entry below it (move it down by one). */
|
|
72
|
+
export function sink(entries, id) {
|
|
73
|
+
const sorted = sortByRank(entries);
|
|
74
|
+
const i = indexOf(sorted, id);
|
|
75
|
+
if (i < 0 || i >= sorted.length - 1)
|
|
76
|
+
return renumber(entries);
|
|
77
|
+
return move(sorted, i, i + 1);
|
|
78
|
+
}
|
|
79
|
+
/** Place `id` immediately before `targetId`. */
|
|
80
|
+
export function before(entries, id, targetId) {
|
|
81
|
+
if (id === targetId)
|
|
82
|
+
return renumber(entries);
|
|
83
|
+
const sorted = sortByRank(entries);
|
|
84
|
+
const from = indexOf(sorted, id);
|
|
85
|
+
const target = indexOf(sorted, targetId);
|
|
86
|
+
if (from < 0 || target < 0)
|
|
87
|
+
return renumber(entries);
|
|
88
|
+
const adjustedTarget = from < target ? target - 1 : target;
|
|
89
|
+
return move(sorted, from, adjustedTarget);
|
|
90
|
+
}
|
|
91
|
+
/** Place `id` immediately after `targetId`. */
|
|
92
|
+
export function after(entries, id, targetId) {
|
|
93
|
+
if (id === targetId)
|
|
94
|
+
return renumber(entries);
|
|
95
|
+
const sorted = sortByRank(entries);
|
|
96
|
+
const from = indexOf(sorted, id);
|
|
97
|
+
const target = indexOf(sorted, targetId);
|
|
98
|
+
if (from < 0 || target < 0)
|
|
99
|
+
return renumber(entries);
|
|
100
|
+
const adjustedTarget = from <= target ? target : target + 1;
|
|
101
|
+
return move(sorted, from, adjustedTarget);
|
|
102
|
+
}
|
|
103
|
+
/** Diff two RankEntry lists: which entries changed rank? */
|
|
104
|
+
export function diffRanks(before, after) {
|
|
105
|
+
const beforeMap = new Map(before.map((e) => [e.id, e.rank]));
|
|
106
|
+
const out = [];
|
|
107
|
+
for (const entry of after) {
|
|
108
|
+
const prior = beforeMap.get(entry.id);
|
|
109
|
+
if (prior === undefined || prior !== entry.rank) {
|
|
110
|
+
out.push({ id: entry.id, from: prior ?? Number.NaN, to: entry.rank });
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return out;
|
|
114
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reopening resolvers for a quest: where to land and which session
|
|
3
|
+
* to resume.
|
|
4
|
+
*
|
|
5
|
+
* Both functions are pure given an existence predicate, so the
|
|
6
|
+
* spawn verb can wire real filesystem checks while tests inject a
|
|
7
|
+
* predicate. The point is that reopening a quest drops you back
|
|
8
|
+
* into the work: a real directory and, when there is one, the live
|
|
9
|
+
* session that was driving it.
|
|
10
|
+
*/
|
|
11
|
+
import type { QuestTree } from "../../quest/types.js";
|
|
12
|
+
import type { SessionView } from "./session-liveness.js";
|
|
13
|
+
/** The resolved working directory and how it was chosen. */
|
|
14
|
+
export interface ResolvedCwd {
|
|
15
|
+
cwd: string;
|
|
16
|
+
source: "tree" | "session" | "repoRoot" | "questDir";
|
|
17
|
+
/** True when a recorded candidate was missing and we fell through. */
|
|
18
|
+
healed?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Resolve the working directory to reopen a quest in. Preference
|
|
22
|
+
* order: an existing tree path (newest first), then the most-recent
|
|
23
|
+
* session's cwd, then a tree repoRoot, then the quest dir. A
|
|
24
|
+
* recorded path that no longer exists is skipped and the result is
|
|
25
|
+
* flagged as healed so the caller can offer to rewrite the record.
|
|
26
|
+
*/
|
|
27
|
+
export declare function resolveSpawnCwd(opts: {
|
|
28
|
+
questDir: string;
|
|
29
|
+
trees: QuestTree[];
|
|
30
|
+
sessions: SessionView[];
|
|
31
|
+
exists?: (p: string) => boolean;
|
|
32
|
+
}): ResolvedCwd;
|
|
33
|
+
/**
|
|
34
|
+
* Choose the session to resume. A live session wins: one live
|
|
35
|
+
* session resumes outright, several live ones are ambiguous
|
|
36
|
+
* (genuinely concurrent work) so the caller can ask which. With
|
|
37
|
+
* no live session, fall back to the most-recent idle one, since
|
|
38
|
+
* reopening yesterday's work is the common case, and staleness is
|
|
39
|
+
* surfaced, not refused. Only dead (no log) and detached sessions
|
|
40
|
+
* are excluded, so undefined means nothing is resumable.
|
|
41
|
+
*/
|
|
42
|
+
export declare function pickResumeSession(sessions: SessionView[]): {
|
|
43
|
+
id: string;
|
|
44
|
+
} | {
|
|
45
|
+
ambiguous: SessionView[];
|
|
46
|
+
} | undefined;
|
|
47
|
+
/** A session projected for display in the `show` view. */
|
|
48
|
+
export interface SessionSummary {
|
|
49
|
+
id: string;
|
|
50
|
+
name?: string;
|
|
51
|
+
cwd?: string;
|
|
52
|
+
liveness: SessionView["liveness"];
|
|
53
|
+
lastActivity?: string;
|
|
54
|
+
/** True for the one session a reopen would resume. */
|
|
55
|
+
resumeTarget: boolean;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Project a quest's attached sessions for the `show` view. Every
|
|
59
|
+
* attached session is reported, since show reflects the frontmatter
|
|
60
|
+
* honestly, and removing no-log phantoms is the prune verb's job,
|
|
61
|
+
* not this view's. Sessions are ordered newest-activity first, and
|
|
62
|
+
* the single session a reopen would land on (per pickResumeSession)
|
|
63
|
+
* is flagged so the reader can see what `spawn` will resume.
|
|
64
|
+
*/
|
|
65
|
+
export declare function summariseSessions(views: SessionView[]): SessionSummary[];
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reopening resolvers for a quest: where to land and which session
|
|
3
|
+
* to resume.
|
|
4
|
+
*
|
|
5
|
+
* Both functions are pure given an existence predicate, so the
|
|
6
|
+
* spawn verb can wire real filesystem checks while tests inject a
|
|
7
|
+
* predicate. The point is that reopening a quest drops you back
|
|
8
|
+
* into the work: a real directory and, when there is one, the live
|
|
9
|
+
* session that was driving it.
|
|
10
|
+
*/
|
|
11
|
+
import { existsSync } from "node:fs";
|
|
12
|
+
/**
|
|
13
|
+
* Resolve the working directory to reopen a quest in. Preference
|
|
14
|
+
* order: an existing tree path (newest first), then the most-recent
|
|
15
|
+
* session's cwd, then a tree repoRoot, then the quest dir. A
|
|
16
|
+
* recorded path that no longer exists is skipped and the result is
|
|
17
|
+
* flagged as healed so the caller can offer to rewrite the record.
|
|
18
|
+
*/
|
|
19
|
+
export function resolveSpawnCwd(opts) {
|
|
20
|
+
const exists = opts.exists ?? existsSync;
|
|
21
|
+
let healed = false;
|
|
22
|
+
const markMissing = () => {
|
|
23
|
+
healed = true;
|
|
24
|
+
};
|
|
25
|
+
// Newest tree first: the trees array is appended to, so the
|
|
26
|
+
// last entry is the most recently added.
|
|
27
|
+
const trees = [...opts.trees].reverse();
|
|
28
|
+
for (const tree of trees) {
|
|
29
|
+
if (exists(tree.path)) {
|
|
30
|
+
return { cwd: tree.path, source: "tree", ...(healed ? { healed } : {}) };
|
|
31
|
+
}
|
|
32
|
+
markMissing();
|
|
33
|
+
}
|
|
34
|
+
// Most-recent session cwd next. A dead session's cwd is
|
|
35
|
+
// not a signal that work is happening there, so skip it.
|
|
36
|
+
const sessions = [...opts.sessions].sort(byActivityDesc);
|
|
37
|
+
for (const session of sessions) {
|
|
38
|
+
if (!session.cwd || session.liveness === "dead")
|
|
39
|
+
continue;
|
|
40
|
+
if (exists(session.cwd)) {
|
|
41
|
+
return {
|
|
42
|
+
cwd: session.cwd,
|
|
43
|
+
source: "session",
|
|
44
|
+
...(healed ? { healed } : {}),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
markMissing();
|
|
48
|
+
}
|
|
49
|
+
// A tree's origin repo root, newest first.
|
|
50
|
+
for (const tree of trees) {
|
|
51
|
+
if (tree.repoRoot && exists(tree.repoRoot)) {
|
|
52
|
+
return {
|
|
53
|
+
cwd: tree.repoRoot,
|
|
54
|
+
source: "repoRoot",
|
|
55
|
+
...(healed ? { healed } : {}),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
cwd: opts.questDir,
|
|
61
|
+
source: "questDir",
|
|
62
|
+
...(healed ? { healed } : {}),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Choose the session to resume. A live session wins: one live
|
|
67
|
+
* session resumes outright, several live ones are ambiguous
|
|
68
|
+
* (genuinely concurrent work) so the caller can ask which. With
|
|
69
|
+
* no live session, fall back to the most-recent idle one, since
|
|
70
|
+
* reopening yesterday's work is the common case, and staleness is
|
|
71
|
+
* surfaced, not refused. Only dead (no log) and detached sessions
|
|
72
|
+
* are excluded, so undefined means nothing is resumable.
|
|
73
|
+
*/
|
|
74
|
+
export function pickResumeSession(sessions) {
|
|
75
|
+
const byLiveness = (want) => sessions.filter((s) => s.liveness === want).sort(byActivityDesc);
|
|
76
|
+
const live = byLiveness("live");
|
|
77
|
+
if (live.length === 1)
|
|
78
|
+
return { id: live[0].id };
|
|
79
|
+
if (live.length > 1)
|
|
80
|
+
return { ambiguous: live };
|
|
81
|
+
// No live session: resume the most-recent idle one. Idle is
|
|
82
|
+
// stale, not concurrent, so several idle sessions are never
|
|
83
|
+
// ambiguous, and the newest is the one you left the work in.
|
|
84
|
+
const idle = byLiveness("idle");
|
|
85
|
+
if (idle.length > 0)
|
|
86
|
+
return { id: idle[0].id };
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Project a quest's attached sessions for the `show` view. Every
|
|
91
|
+
* attached session is reported, since show reflects the frontmatter
|
|
92
|
+
* honestly, and removing no-log phantoms is the prune verb's job,
|
|
93
|
+
* not this view's. Sessions are ordered newest-activity first, and
|
|
94
|
+
* the single session a reopen would land on (per pickResumeSession)
|
|
95
|
+
* is flagged so the reader can see what `spawn` will resume.
|
|
96
|
+
*/
|
|
97
|
+
export function summariseSessions(views) {
|
|
98
|
+
const resume = pickResumeSession(views);
|
|
99
|
+
const targetId = resume && "id" in resume ? resume.id : undefined;
|
|
100
|
+
return [...views].sort(byActivityDesc).map((v) => ({
|
|
101
|
+
id: v.id,
|
|
102
|
+
...(v.name ? { name: v.name } : {}),
|
|
103
|
+
...(v.cwd ? { cwd: v.cwd } : {}),
|
|
104
|
+
liveness: v.liveness,
|
|
105
|
+
...(v.lastActivity ? { lastActivity: v.lastActivity } : {}),
|
|
106
|
+
resumeTarget: v.id === targetId,
|
|
107
|
+
}));
|
|
108
|
+
}
|
|
109
|
+
function byActivityDesc(a, b) {
|
|
110
|
+
const at = a.lastActivity ? Date.parse(a.lastActivity) : 0;
|
|
111
|
+
const bt = b.lastActivity ? Date.parse(b.lastActivity) : 0;
|
|
112
|
+
return bt - at;
|
|
113
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which quest a working directory belongs to.
|
|
3
|
+
*
|
|
4
|
+
* The explicit load verb and the session-start restore both need this
|
|
5
|
+
* answer, and both used to compute it themselves. The two copies were
|
|
6
|
+
* kept in step by a comment asking the next reader to keep them in
|
|
7
|
+
* step, and they had already drifted: one `isUnder` compared against a
|
|
8
|
+
* hardcoded slash and the other against the platform separator.
|
|
9
|
+
*
|
|
10
|
+
* Taking the discovered index rather than reading the disk keeps this
|
|
11
|
+
* a decision rather than an errand, so the preference rules can be
|
|
12
|
+
* tested directly instead of through a temp directory and a session.
|
|
13
|
+
*/
|
|
14
|
+
import type { QuestIndex } from "./discovery.js";
|
|
15
|
+
/**
|
|
16
|
+
* The id of the quest that owns `cwd`, or undefined if none does.
|
|
17
|
+
*
|
|
18
|
+
* A quest's own directory is the strongest claim. Failing that, the
|
|
19
|
+
* deepest scaffolded working tree covering the cwd wins, so a tree
|
|
20
|
+
* nested inside another resolves to its immediate owner.
|
|
21
|
+
*
|
|
22
|
+
* A live quest beats a sealed one wherever both cover the cwd, so a
|
|
23
|
+
* fresh session started inside a finished quest's tree does not
|
|
24
|
+
* attach to the finished quest. Note this gates resolution only:
|
|
25
|
+
* whether a sealed quest still owns a tree on disk is a different
|
|
26
|
+
* question, and the answer there is that it does.
|
|
27
|
+
*
|
|
28
|
+
* Only `scaffolded` trees magnetize. An adopted or unmarked tree, and
|
|
29
|
+
* a `git-worktree:` alias, is a reference to a checkout several quests
|
|
30
|
+
* may name, so resolving through one would pick an arbitrary owner.
|
|
31
|
+
*/
|
|
32
|
+
export declare function questIdForCwd(index: QuestIndex, cwd: string): string | undefined;
|