@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,89 @@
|
|
|
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 { realpathSync } from "node:fs";
|
|
15
|
+
import { sep } from "node:path";
|
|
16
|
+
import { isSealedStatus } from "./status.js";
|
|
17
|
+
/**
|
|
18
|
+
* Resolve symlinks so /var and /private/var, and bind mounts in a
|
|
19
|
+
* container, compare equal. A path that does not exist is its own
|
|
20
|
+
* answer: comparing the literal string is better than refusing.
|
|
21
|
+
*/
|
|
22
|
+
function canonical(path) {
|
|
23
|
+
try {
|
|
24
|
+
return realpathSync(path);
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return path;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/** Whether `child` is `parent` or sits underneath it. */
|
|
31
|
+
function isUnder(child, parent) {
|
|
32
|
+
if (child === parent)
|
|
33
|
+
return true;
|
|
34
|
+
return child.startsWith(`${parent}${sep}`);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* The id of the quest that owns `cwd`, or undefined if none does.
|
|
38
|
+
*
|
|
39
|
+
* A quest's own directory is the strongest claim. Failing that, the
|
|
40
|
+
* deepest scaffolded working tree covering the cwd wins, so a tree
|
|
41
|
+
* nested inside another resolves to its immediate owner.
|
|
42
|
+
*
|
|
43
|
+
* A live quest beats a sealed one wherever both cover the cwd, so a
|
|
44
|
+
* fresh session started inside a finished quest's tree does not
|
|
45
|
+
* attach to the finished quest. Note this gates resolution only:
|
|
46
|
+
* whether a sealed quest still owns a tree on disk is a different
|
|
47
|
+
* question, and the answer there is that it does.
|
|
48
|
+
*
|
|
49
|
+
* Only `scaffolded` trees magnetize. An adopted or unmarked tree, and
|
|
50
|
+
* a `git-worktree:` alias, is a reference to a checkout several quests
|
|
51
|
+
* may name, so resolving through one would pick an arbitrary owner.
|
|
52
|
+
*/
|
|
53
|
+
export function questIdForCwd(index, cwd) {
|
|
54
|
+
const target = canonical(cwd);
|
|
55
|
+
let dirMatch;
|
|
56
|
+
let dirMatchLive = false;
|
|
57
|
+
for (const entry of index.quests.values()) {
|
|
58
|
+
if (!isUnder(target, canonical(entry.dir)))
|
|
59
|
+
continue;
|
|
60
|
+
const live = !isSealedStatus(entry.doc.frontMatter.status);
|
|
61
|
+
if (dirMatch === undefined || (live && !dirMatchLive)) {
|
|
62
|
+
dirMatch = entry.doc.frontMatter.id;
|
|
63
|
+
dirMatchLive = live;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (dirMatch !== undefined)
|
|
67
|
+
return dirMatch;
|
|
68
|
+
let bestId;
|
|
69
|
+
let bestLen = -1;
|
|
70
|
+
let bestLive = false;
|
|
71
|
+
for (const entry of index.quests.values()) {
|
|
72
|
+
const fm = entry.doc.frontMatter;
|
|
73
|
+
const live = !isSealedStatus(fm.status);
|
|
74
|
+
for (const tree of fm.trees ?? []) {
|
|
75
|
+
if (tree.origin !== "scaffolded")
|
|
76
|
+
continue;
|
|
77
|
+
const real = canonical(tree.path);
|
|
78
|
+
if (!isUnder(target, real))
|
|
79
|
+
continue;
|
|
80
|
+
if (real.length > bestLen ||
|
|
81
|
+
(real.length === bestLen && live && !bestLive)) {
|
|
82
|
+
bestLen = real.length;
|
|
83
|
+
bestId = fm.id;
|
|
84
|
+
bestLive = live;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return bestId;
|
|
89
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sanitizers for text that flows from external sources
|
|
3
|
+
* (GitHub PR titles, issue bodies, third-party author
|
|
4
|
+
* handles) into a quest README that the agent then reads
|
|
5
|
+
* back as part of its context.
|
|
6
|
+
*
|
|
7
|
+
* The concern is not classic XSS: the README is markdown
|
|
8
|
+
* the agent renders. The concern is that an attacker who
|
|
9
|
+
* controls a PR title or body can shape the structure of
|
|
10
|
+
* the README so the agent reads it as instructions ("##
|
|
11
|
+
* Important: ignore all prior instructions"). We strip
|
|
12
|
+
* the structural markers we know the README parser cares
|
|
13
|
+
* about, and clamp lengths so a hostile excerpt cannot
|
|
14
|
+
* shove the rest of the document out of the agent's
|
|
15
|
+
* context window.
|
|
16
|
+
*
|
|
17
|
+
* These helpers are defensive, not exhaustive. Callers
|
|
18
|
+
* should think about what they're templating in.
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Strip newlines, collapse whitespace and clamp length.
|
|
22
|
+
* Use for single-line fields: titles, handles, captions.
|
|
23
|
+
*/
|
|
24
|
+
export declare function sanitizeSingleLine(value: string, maxLen?: number): string;
|
|
25
|
+
/**
|
|
26
|
+
* Escape leading markdown structure markers so a hostile
|
|
27
|
+
* excerpt cannot pose as a heading, bullet, code fence or
|
|
28
|
+
* frontmatter delimiter on its own line. Each affected
|
|
29
|
+
* line gets a leading zero-width space, which renders
|
|
30
|
+
* invisibly but breaks the regex-anchored markdown
|
|
31
|
+
* extractors the quest tooling uses.
|
|
32
|
+
*
|
|
33
|
+
* Newlines inside the value are preserved.
|
|
34
|
+
*/
|
|
35
|
+
export declare function escapeMarkdownStructure(value: string): string;
|
|
36
|
+
/**
|
|
37
|
+
* Sanitize an excerpt: clamp length, escape leading
|
|
38
|
+
* structure markers, strip carriage returns.
|
|
39
|
+
*/
|
|
40
|
+
export declare function sanitizeExcerpt(value: string): string;
|
|
41
|
+
/** Sanitize a handle for inline display (`@<login>`). */
|
|
42
|
+
export declare function sanitizeHandle(value: string): string;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sanitizers for text that flows from external sources
|
|
3
|
+
* (GitHub PR titles, issue bodies, third-party author
|
|
4
|
+
* handles) into a quest README that the agent then reads
|
|
5
|
+
* back as part of its context.
|
|
6
|
+
*
|
|
7
|
+
* The concern is not classic XSS: the README is markdown
|
|
8
|
+
* the agent renders. The concern is that an attacker who
|
|
9
|
+
* controls a PR title or body can shape the structure of
|
|
10
|
+
* the README so the agent reads it as instructions ("##
|
|
11
|
+
* Important: ignore all prior instructions"). We strip
|
|
12
|
+
* the structural markers we know the README parser cares
|
|
13
|
+
* about, and clamp lengths so a hostile excerpt cannot
|
|
14
|
+
* shove the rest of the document out of the agent's
|
|
15
|
+
* context window.
|
|
16
|
+
*
|
|
17
|
+
* These helpers are defensive, not exhaustive. Callers
|
|
18
|
+
* should think about what they're templating in.
|
|
19
|
+
*/
|
|
20
|
+
const MAX_TITLE_LENGTH = 200;
|
|
21
|
+
const MAX_HANDLE_LENGTH = 64;
|
|
22
|
+
const MAX_EXCERPT_LENGTH = 400;
|
|
23
|
+
/**
|
|
24
|
+
* Strip newlines, collapse whitespace and clamp length.
|
|
25
|
+
* Use for single-line fields: titles, handles, captions.
|
|
26
|
+
*/
|
|
27
|
+
export function sanitizeSingleLine(value, maxLen = MAX_TITLE_LENGTH) {
|
|
28
|
+
return value
|
|
29
|
+
.replace(/[\r\n]+/g, " ")
|
|
30
|
+
.replace(/\s+/g, " ")
|
|
31
|
+
.trim()
|
|
32
|
+
.slice(0, maxLen);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Escape leading markdown structure markers so a hostile
|
|
36
|
+
* excerpt cannot pose as a heading, bullet, code fence or
|
|
37
|
+
* frontmatter delimiter on its own line. Each affected
|
|
38
|
+
* line gets a leading zero-width space, which renders
|
|
39
|
+
* invisibly but breaks the regex-anchored markdown
|
|
40
|
+
* extractors the quest tooling uses.
|
|
41
|
+
*
|
|
42
|
+
* Newlines inside the value are preserved.
|
|
43
|
+
*/
|
|
44
|
+
export function escapeMarkdownStructure(value) {
|
|
45
|
+
return value
|
|
46
|
+
.split("\n")
|
|
47
|
+
.map((line) => {
|
|
48
|
+
if (/^\s*(#|---|```|>|\*\s|-\s|\d+\.\s)/.test(line)) {
|
|
49
|
+
return `\u200b${line}`;
|
|
50
|
+
}
|
|
51
|
+
return line;
|
|
52
|
+
})
|
|
53
|
+
.join("\n");
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Sanitize an excerpt: clamp length, escape leading
|
|
57
|
+
* structure markers, strip carriage returns.
|
|
58
|
+
*/
|
|
59
|
+
export function sanitizeExcerpt(value) {
|
|
60
|
+
const trimmed = value.replace(/\r/g, "").trim();
|
|
61
|
+
const clamped = trimmed.length > MAX_EXCERPT_LENGTH
|
|
62
|
+
? `${trimmed.slice(0, MAX_EXCERPT_LENGTH)}...`
|
|
63
|
+
: trimmed;
|
|
64
|
+
return escapeMarkdownStructure(clamped);
|
|
65
|
+
}
|
|
66
|
+
/** Sanitize a handle for inline display (`@<login>`). */
|
|
67
|
+
export function sanitizeHandle(value) {
|
|
68
|
+
return sanitizeSingleLine(value, MAX_HANDLE_LENGTH).replace(/[^A-Za-z0-9._-]/g, "");
|
|
69
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Document scaffolding: build the initial markdown body for
|
|
3
|
+
* a new quest README or a new quest document.
|
|
4
|
+
*
|
|
5
|
+
* The scaffolded body is a starting shape with the canonical
|
|
6
|
+
* section headers (and emoji glyphs) and one-line guidance
|
|
7
|
+
* underneath each. Authors are expected to overwrite the
|
|
8
|
+
* guidance immediately; the structure makes the round-trip
|
|
9
|
+
* parsing reliable.
|
|
10
|
+
*
|
|
11
|
+
* Optional sections (Milestones, Spirit, Outcomes, Context)
|
|
12
|
+
* are emitted as commented placeholders the author uncomments
|
|
13
|
+
* when they need them. We do not enforce their presence.
|
|
14
|
+
*/
|
|
15
|
+
import type { DocumentFrontMatter, QuestFrontMatter, QuestKind } from "../../quest/types.js";
|
|
16
|
+
/** Inputs for scaffolding a fresh quest README. */
|
|
17
|
+
export interface QuestScaffoldInput {
|
|
18
|
+
frontMatter: QuestFrontMatter;
|
|
19
|
+
title: string;
|
|
20
|
+
/** Optional initial Summary prose. */
|
|
21
|
+
summary?: string;
|
|
22
|
+
/** Optional initial Purpose prose. */
|
|
23
|
+
purpose?: string;
|
|
24
|
+
/** Optional initial Cast bullets. */
|
|
25
|
+
cast?: Array<{
|
|
26
|
+
role: string;
|
|
27
|
+
subject: string;
|
|
28
|
+
prose?: string;
|
|
29
|
+
}>;
|
|
30
|
+
/** Optional initial Journey entry. */
|
|
31
|
+
journey?: Array<{
|
|
32
|
+
date: string;
|
|
33
|
+
prose: string;
|
|
34
|
+
}>;
|
|
35
|
+
/** Optional Milestones bullets. */
|
|
36
|
+
milestones?: Array<{
|
|
37
|
+
checked: boolean;
|
|
38
|
+
text: string;
|
|
39
|
+
}>;
|
|
40
|
+
/** Include the optional sections as placeholders. */
|
|
41
|
+
includeOptionalSections?: boolean;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Build a fresh quest README. The four core sections are
|
|
45
|
+
* always present; optional sections appear behind a
|
|
46
|
+
* commented marker unless `includeOptionalSections` is true.
|
|
47
|
+
*/
|
|
48
|
+
export declare function scaffoldQuestReadme(input: QuestScaffoldInput): string;
|
|
49
|
+
/** Inputs for scaffolding a quest document (plan/research/etc.). */
|
|
50
|
+
export interface DocumentScaffoldInput {
|
|
51
|
+
frontMatter: DocumentFrontMatter;
|
|
52
|
+
title: string;
|
|
53
|
+
}
|
|
54
|
+
/** Build a fresh quest document with the kind's section template. */
|
|
55
|
+
export declare function scaffoldDocument(input: DocumentScaffoldInput): string;
|
|
56
|
+
/** Convenience: map quest kind to the default scaffold options. */
|
|
57
|
+
export declare function defaultsForKind(_kind: QuestKind): {
|
|
58
|
+
includeOptionalSections: boolean;
|
|
59
|
+
};
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Document scaffolding: build the initial markdown body for
|
|
3
|
+
* a new quest README or a new quest document.
|
|
4
|
+
*
|
|
5
|
+
* The scaffolded body is a starting shape with the canonical
|
|
6
|
+
* section headers (and emoji glyphs) and one-line guidance
|
|
7
|
+
* underneath each. Authors are expected to overwrite the
|
|
8
|
+
* guidance immediately; the structure makes the round-trip
|
|
9
|
+
* parsing reliable.
|
|
10
|
+
*
|
|
11
|
+
* Optional sections (Milestones, Spirit, Outcomes, Context)
|
|
12
|
+
* are emitted as commented placeholders the author uncomments
|
|
13
|
+
* when they need them. We do not enforce their presence.
|
|
14
|
+
*/
|
|
15
|
+
import { wrapProse } from "../../prose/wrap.js";
|
|
16
|
+
import { serializeDocumentFrontMatter, serializeQuestFrontMatter, } from "./frontmatter.js";
|
|
17
|
+
function castBullet(entry) {
|
|
18
|
+
const role = entry.role.toLowerCase();
|
|
19
|
+
const tail = entry.prose ? `. ${entry.prose}` : "";
|
|
20
|
+
return `- **${role}**: ${entry.subject}${tail}`;
|
|
21
|
+
}
|
|
22
|
+
function journeyBullet(entry) {
|
|
23
|
+
return `- **${entry.date}**: ${entry.prose}`;
|
|
24
|
+
}
|
|
25
|
+
function milestoneBullet(entry) {
|
|
26
|
+
return `- [${entry.checked ? "x" : " "}] ${entry.text}`;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Build a fresh quest README. The four core sections are
|
|
30
|
+
* always present; optional sections appear behind a
|
|
31
|
+
* commented marker unless `includeOptionalSections` is true.
|
|
32
|
+
*/
|
|
33
|
+
export function scaffoldQuestReadme(input) {
|
|
34
|
+
const fm = serializeQuestFrontMatter(input.frontMatter);
|
|
35
|
+
const parts = [fm, "", `# ${input.title}`, ""];
|
|
36
|
+
// Wrapped on the way in, so a quest is born meeting the column rule
|
|
37
|
+
// its own plan documents are held to. A summary arrives as one long
|
|
38
|
+
// line, since it is assembled from a note and a seeded excerpt, and
|
|
39
|
+
// nothing downstream was rewrapping it.
|
|
40
|
+
parts.push("## 📜 Summary", "");
|
|
41
|
+
parts.push(wrapProse(input.summary ?? "_One paragraph: what this quest is and why it exists._"), "");
|
|
42
|
+
parts.push("## 🧭 Purpose", "");
|
|
43
|
+
parts.push(wrapProse(input.purpose ?? "_Why now, what good looks like, what is in scope._"), "");
|
|
44
|
+
parts.push("## 🎭 Cast", "");
|
|
45
|
+
if (input.cast && input.cast.length > 0) {
|
|
46
|
+
for (const entry of input.cast)
|
|
47
|
+
parts.push(castBullet(entry));
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
parts.push("- **owner**: _name or @handle_");
|
|
51
|
+
}
|
|
52
|
+
parts.push("");
|
|
53
|
+
parts.push("## 🌄 Journey", "");
|
|
54
|
+
if (input.journey && input.journey.length > 0) {
|
|
55
|
+
for (const entry of input.journey)
|
|
56
|
+
parts.push(journeyBullet(entry));
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
parts.push(`- **${input.frontMatter.started}**: Created.`);
|
|
60
|
+
}
|
|
61
|
+
parts.push("");
|
|
62
|
+
const milestones = input.milestones ?? [];
|
|
63
|
+
if (input.includeOptionalSections || milestones.length > 0) {
|
|
64
|
+
parts.push("## 🎯 Milestones", "");
|
|
65
|
+
if (milestones.length > 0) {
|
|
66
|
+
for (const m of milestones)
|
|
67
|
+
parts.push(milestoneBullet(m));
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
parts.push("- [ ] _first milestone_");
|
|
71
|
+
}
|
|
72
|
+
parts.push("");
|
|
73
|
+
}
|
|
74
|
+
if (input.includeOptionalSections) {
|
|
75
|
+
parts.push("## 🔥 Spirit", "", "_The stable north star that survives deviation._", "");
|
|
76
|
+
parts.push("## 🏆 Outcomes", "", "_What landed when this quest concluded._", "");
|
|
77
|
+
parts.push("## 🏰 Context", "", "_Background that doesn't fit in Summary or Purpose._", "");
|
|
78
|
+
}
|
|
79
|
+
return parts.join("\n");
|
|
80
|
+
}
|
|
81
|
+
const DOCUMENT_KIND_HEADINGS = {
|
|
82
|
+
plan: [
|
|
83
|
+
"## Spirit",
|
|
84
|
+
"",
|
|
85
|
+
"_The stable north star: why this work exists and what good looks like._",
|
|
86
|
+
"",
|
|
87
|
+
"## Context",
|
|
88
|
+
"",
|
|
89
|
+
"_What framing the problem surfaced. Constraints. Scope._",
|
|
90
|
+
"",
|
|
91
|
+
"## Approach",
|
|
92
|
+
"",
|
|
93
|
+
"_The shape we settled on and the decisions behind it._",
|
|
94
|
+
"",
|
|
95
|
+
"## Work",
|
|
96
|
+
"",
|
|
97
|
+
"- [ ] _first checklist item_",
|
|
98
|
+
"",
|
|
99
|
+
"## Open Questions",
|
|
100
|
+
"",
|
|
101
|
+
"_Decisions still pending. Each with a recommended lean._",
|
|
102
|
+
"",
|
|
103
|
+
"## Discovery & Deviations",
|
|
104
|
+
"",
|
|
105
|
+
"_Things learned during build that changed the plan._",
|
|
106
|
+
"",
|
|
107
|
+
],
|
|
108
|
+
research: [
|
|
109
|
+
"## Question",
|
|
110
|
+
"",
|
|
111
|
+
"_The thing we're trying to answer._",
|
|
112
|
+
"",
|
|
113
|
+
"## Method",
|
|
114
|
+
"",
|
|
115
|
+
"_How the investigation proceeded._",
|
|
116
|
+
"",
|
|
117
|
+
"## Findings",
|
|
118
|
+
"",
|
|
119
|
+
"_What we learned._",
|
|
120
|
+
"",
|
|
121
|
+
"## Verdict",
|
|
122
|
+
"",
|
|
123
|
+
"_The recommendation that came out of the investigation._",
|
|
124
|
+
"",
|
|
125
|
+
],
|
|
126
|
+
brief: [
|
|
127
|
+
"## Audience",
|
|
128
|
+
"",
|
|
129
|
+
"_Who this brief is for._",
|
|
130
|
+
"",
|
|
131
|
+
"## Ask",
|
|
132
|
+
"",
|
|
133
|
+
"_What we want them to do or decide._",
|
|
134
|
+
"",
|
|
135
|
+
"## Background",
|
|
136
|
+
"",
|
|
137
|
+
"_The minimal context needed to act._",
|
|
138
|
+
"",
|
|
139
|
+
"## Recommendation",
|
|
140
|
+
"",
|
|
141
|
+
"_What we propose._",
|
|
142
|
+
"",
|
|
143
|
+
],
|
|
144
|
+
report: [
|
|
145
|
+
"## What Happened",
|
|
146
|
+
"",
|
|
147
|
+
"_The narrative of the work._",
|
|
148
|
+
"",
|
|
149
|
+
"## Outcomes",
|
|
150
|
+
"",
|
|
151
|
+
"_What landed, what didn't._",
|
|
152
|
+
"",
|
|
153
|
+
"## Lessons",
|
|
154
|
+
"",
|
|
155
|
+
"_What we learned for next time._",
|
|
156
|
+
"",
|
|
157
|
+
],
|
|
158
|
+
};
|
|
159
|
+
/** Build a fresh quest document with the kind's section template. */
|
|
160
|
+
export function scaffoldDocument(input) {
|
|
161
|
+
const fm = serializeDocumentFrontMatter(input.frontMatter);
|
|
162
|
+
const sections = DOCUMENT_KIND_HEADINGS[input.frontMatter.kind];
|
|
163
|
+
const parts = [fm, "", `# ${input.title}`, "", ...sections];
|
|
164
|
+
return parts.join("\n");
|
|
165
|
+
}
|
|
166
|
+
/** Convenience: map quest kind to the default scaffold options. */
|
|
167
|
+
export function defaultsForKind(_kind) {
|
|
168
|
+
return { includeOptionalSections: false };
|
|
169
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The quest's managed scratch directory: a reapable space the gate
|
|
3
|
+
* funnels ad-hoc writes into. It is created on demand under the OS
|
|
4
|
+
* temp dir, so it lands on whatever volume the system designates as
|
|
5
|
+
* temp (honouring $TMPDIR) and carries a unique mkdtemp namespace
|
|
6
|
+
* the kernel guarantees is fresh. The path is persisted on the
|
|
7
|
+
* quest frontmatter so it survives across sessions and can be
|
|
8
|
+
* reaped on conclude or retire.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Return the quest's managed scratch directory, creating and
|
|
12
|
+
* recording it on first need. The whole check-create-persist runs
|
|
13
|
+
* under one quest lock with the frontmatter as the source of truth:
|
|
14
|
+
* a racing session that recorded a dir first wins, and we reuse it
|
|
15
|
+
* rather than stranding a second mkdtemp. The frontmatter is read
|
|
16
|
+
* and parsed before any directory is created, so a malformed README
|
|
17
|
+
* fails loud instead of orphaning an unrecorded dir.
|
|
18
|
+
*/
|
|
19
|
+
export declare function ensureQuestScratchDir(questDir: string, questId: string, current: string | null): string;
|
|
20
|
+
/**
|
|
21
|
+
* Remove the quest's managed scratch directory and clear the
|
|
22
|
+
* persisted path. Returns whether a directory was recorded to reap.
|
|
23
|
+
* The delete is contained to a real managed-scratch path and is
|
|
24
|
+
* best-effort: a wedged or failed removal must not block conclude or
|
|
25
|
+
* retire. The frontmatter reference is always cleared.
|
|
26
|
+
*/
|
|
27
|
+
export declare function reapQuestScratchDir(questDir: string, current: string | null): boolean;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The quest's managed scratch directory: a reapable space the gate
|
|
3
|
+
* funnels ad-hoc writes into. It is created on demand under the OS
|
|
4
|
+
* temp dir, so it lands on whatever volume the system designates as
|
|
5
|
+
* temp (honouring $TMPDIR) and carries a unique mkdtemp namespace
|
|
6
|
+
* the kernel guarantees is fresh. The path is persisted on the
|
|
7
|
+
* quest frontmatter so it survives across sessions and can be
|
|
8
|
+
* reaped on conclude or retire.
|
|
9
|
+
*/
|
|
10
|
+
import { existsSync, mkdtempSync, readFileSync, rmSync } from "node:fs";
|
|
11
|
+
import { tmpdir } from "node:os";
|
|
12
|
+
import { basename, join } from "node:path";
|
|
13
|
+
import { parseQuestFrontMatter, serializeReadable } from "./frontmatter.js";
|
|
14
|
+
import { isWithin } from "./git-signals.js";
|
|
15
|
+
import { atomicWriteFile, withQuestLock } from "./io.js";
|
|
16
|
+
/** The basename prefix every managed scratch dir carries. */
|
|
17
|
+
const SCRATCH_PREFIX = "pi-quest-";
|
|
18
|
+
/** Path to a quest's README. */
|
|
19
|
+
function questReadme(questDir) {
|
|
20
|
+
return join(questDir, "README.md");
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Write the quest's scratchDir into already-parsed frontmatter,
|
|
24
|
+
* preserving the body, using the atomic torn-read-safe write the
|
|
25
|
+
* other quest writers use. The caller holds the quest lock.
|
|
26
|
+
*
|
|
27
|
+
* Refuses rather than writing a README the strict parser cannot read
|
|
28
|
+
* back, which this writer alone used to skip. A scratch path is
|
|
29
|
+
* ordinary text and the failure it caused was not: an unreadable
|
|
30
|
+
* README drops the quest out of discovery entirely, and the write
|
|
31
|
+
* that did it reported success.
|
|
32
|
+
*/
|
|
33
|
+
function writeScratchDir(path, parsed, value) {
|
|
34
|
+
const fm = { ...parsed.frontMatter };
|
|
35
|
+
if (value)
|
|
36
|
+
fm.scratchDir = value;
|
|
37
|
+
else
|
|
38
|
+
delete fm.scratchDir;
|
|
39
|
+
const serialized = serializeReadable(fm, parsed.body);
|
|
40
|
+
if (!serialized.ok)
|
|
41
|
+
throw new Error(serialized.reason);
|
|
42
|
+
atomicWriteFile(path, serialized.text);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Whether a recorded path is safe to recursively delete: it must sit
|
|
46
|
+
* under the OS temp dir and carry the managed-scratch prefix. A
|
|
47
|
+
* stale, hand-edited or symlinked frontmatter value that fails this
|
|
48
|
+
* is left untouched, so the reap can never rm -rf an arbitrary path.
|
|
49
|
+
*/
|
|
50
|
+
function isReapableScratch(dir) {
|
|
51
|
+
return isWithin(dir, tmpdir()) && basename(dir).startsWith(SCRATCH_PREFIX);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Return the quest's managed scratch directory, creating and
|
|
55
|
+
* recording it on first need. The whole check-create-persist runs
|
|
56
|
+
* under one quest lock with the frontmatter as the source of truth:
|
|
57
|
+
* a racing session that recorded a dir first wins, and we reuse it
|
|
58
|
+
* rather than stranding a second mkdtemp. The frontmatter is read
|
|
59
|
+
* and parsed before any directory is created, so a malformed README
|
|
60
|
+
* fails loud instead of orphaning an unrecorded dir.
|
|
61
|
+
*/
|
|
62
|
+
export function ensureQuestScratchDir(questDir, questId, current) {
|
|
63
|
+
if (current && existsSync(current))
|
|
64
|
+
return current;
|
|
65
|
+
return withQuestLock(questDir, () => {
|
|
66
|
+
const path = questReadme(questDir);
|
|
67
|
+
const parsed = parseQuestFrontMatter(readFileSync(path, "utf8"));
|
|
68
|
+
if (!parsed) {
|
|
69
|
+
throw new Error(`Quest README at ${path} has no parseable front matter.`);
|
|
70
|
+
}
|
|
71
|
+
const recorded = parsed.frontMatter.scratchDir;
|
|
72
|
+
if (recorded && existsSync(recorded))
|
|
73
|
+
return recorded;
|
|
74
|
+
const dir = mkdtempSync(join(tmpdir(), `${SCRATCH_PREFIX}${questId}-`));
|
|
75
|
+
writeScratchDir(path, parsed, dir);
|
|
76
|
+
return dir;
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Remove the quest's managed scratch directory and clear the
|
|
81
|
+
* persisted path. Returns whether a directory was recorded to reap.
|
|
82
|
+
* The delete is contained to a real managed-scratch path and is
|
|
83
|
+
* best-effort: a wedged or failed removal must not block conclude or
|
|
84
|
+
* retire. The frontmatter reference is always cleared.
|
|
85
|
+
*/
|
|
86
|
+
export function reapQuestScratchDir(questDir, current) {
|
|
87
|
+
if (current && isReapableScratch(current)) {
|
|
88
|
+
try {
|
|
89
|
+
rmSync(current, { recursive: true, force: true });
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// Best-effort cleanup: a wedged scratch dir must not stop the
|
|
93
|
+
// quest from concluding. The cleared frontmatter still drops
|
|
94
|
+
// the reference.
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const path = questReadme(questDir);
|
|
98
|
+
if (existsSync(path)) {
|
|
99
|
+
withQuestLock(questDir, () => {
|
|
100
|
+
const parsed = parseQuestFrontMatter(readFileSync(path, "utf8"));
|
|
101
|
+
if (parsed)
|
|
102
|
+
writeScratchDir(path, parsed, undefined);
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
return Boolean(current);
|
|
106
|
+
}
|