@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,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reverse-mention index: for each quest in the index, find
|
|
3
|
+
* every other quest whose body or documents mention it.
|
|
4
|
+
*
|
|
5
|
+
* Two kinds of mentions:
|
|
6
|
+
*
|
|
7
|
+
* - Bare IDs in prose: `QEST-...`, `PLAN-...`, etc.
|
|
8
|
+
* - Refs: anything the registered ref types extract.
|
|
9
|
+
*
|
|
10
|
+
* For Echoes rendering on `quest show`, we care about
|
|
11
|
+
* inbound mentions: "who has mentioned QEST-X". The reverse
|
|
12
|
+
* map is keyed by the target id (or ref canonical) and
|
|
13
|
+
* values are the source quests.
|
|
14
|
+
*/
|
|
15
|
+
import { extractMentions } from "./quest-doc.js";
|
|
16
|
+
const SNIPPET_RADIUS = 80;
|
|
17
|
+
function findSnippet(body, needle) {
|
|
18
|
+
const idx = body.indexOf(needle);
|
|
19
|
+
if (idx < 0)
|
|
20
|
+
return "";
|
|
21
|
+
const start = Math.max(0, idx - SNIPPET_RADIUS);
|
|
22
|
+
const end = Math.min(body.length, idx + needle.length + SNIPPET_RADIUS);
|
|
23
|
+
const raw = body.slice(start, end).replace(/\s+/g, " ").trim();
|
|
24
|
+
const prefix = start > 0 ? "..." : "";
|
|
25
|
+
const suffix = end < body.length ? "..." : "";
|
|
26
|
+
return `${prefix}${raw}${suffix}`;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Build a reverse-mention index over every quest in the
|
|
30
|
+
* input. Each quest contributes both its README body and
|
|
31
|
+
* its documents' bodies to the mention pool.
|
|
32
|
+
*/
|
|
33
|
+
export function buildMentionIndex(index) {
|
|
34
|
+
const byId = new Map();
|
|
35
|
+
const byRef = new Map();
|
|
36
|
+
const push = (map, key, edge) => {
|
|
37
|
+
const list = map.get(key) ?? [];
|
|
38
|
+
list.push(edge);
|
|
39
|
+
map.set(key, list);
|
|
40
|
+
};
|
|
41
|
+
for (const [questId, entry] of index.quests) {
|
|
42
|
+
const bodies = [entry.doc.body];
|
|
43
|
+
for (const docEntry of entry.documents)
|
|
44
|
+
bodies.push(docEntry.doc.body);
|
|
45
|
+
const combined = bodies.join("\n\n");
|
|
46
|
+
const mentions = extractMentions(combined);
|
|
47
|
+
for (const idMention of mentions.idMentions) {
|
|
48
|
+
if (idMention.id === questId)
|
|
49
|
+
continue;
|
|
50
|
+
push(byId, idMention.id, {
|
|
51
|
+
from: questId,
|
|
52
|
+
snippet: findSnippet(combined, idMention.id),
|
|
53
|
+
relation: idMention.relation,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
for (const ref of mentions.refs) {
|
|
57
|
+
const key = `${ref.type}:${ref.value}`;
|
|
58
|
+
push(byRef, key, {
|
|
59
|
+
from: questId,
|
|
60
|
+
snippet: findSnippet(combined, ref.value),
|
|
61
|
+
relation: "reference",
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return { byId, byRef };
|
|
66
|
+
}
|
|
67
|
+
/** Convenience: lookup inbound mentions for one target quest id. */
|
|
68
|
+
export function mentionsOf(index, targetId) {
|
|
69
|
+
return index.byId.get(targetId) ?? [];
|
|
70
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The single validated, journalled mutation entry point for a
|
|
3
|
+
* quest README.
|
|
4
|
+
*
|
|
5
|
+
* Every field change on a quest should flow through here. The
|
|
6
|
+
* layer reads the README under the per-quest lock, applies a pure
|
|
7
|
+
* transform, and refuses to write a result the strict parser
|
|
8
|
+
* cannot read back, so an out-of-vocabulary value is blocked at
|
|
9
|
+
* write time instead of landing on disk as an invisible record.
|
|
10
|
+
* It reports the per-field diff and, when an operation name is
|
|
11
|
+
* given, appends that diff to the structural journal so the change
|
|
12
|
+
* is reversible.
|
|
13
|
+
*/
|
|
14
|
+
import type { QuestFrontMatter } from "../../quest/types.js";
|
|
15
|
+
import { type JournalChange } from "./structural-journal.js";
|
|
16
|
+
/** Outcome of a mutation attempt. */
|
|
17
|
+
export type MutateResult = {
|
|
18
|
+
ok: true;
|
|
19
|
+
fm: QuestFrontMatter;
|
|
20
|
+
changes: JournalChange[];
|
|
21
|
+
} | {
|
|
22
|
+
ok: false;
|
|
23
|
+
guidance: string;
|
|
24
|
+
};
|
|
25
|
+
interface MutateOptions {
|
|
26
|
+
/** Journal the diff under this operation name. Omit to skip. */
|
|
27
|
+
op?: string;
|
|
28
|
+
/** Journal location; defaults to the quest directory's parent. */
|
|
29
|
+
questsRoot?: string;
|
|
30
|
+
/** Stamp `updated` with today's date. Defaults to true. */
|
|
31
|
+
stampUpdated?: boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Apply a validated, locked write to a quest README, reporting the
|
|
35
|
+
* per-field diff and optionally journalling it.
|
|
36
|
+
*/
|
|
37
|
+
export declare function mutateQuestFrontMatter(questDir: string, transform: (fm: QuestFrontMatter) => QuestFrontMatter | undefined, opts?: MutateOptions): MutateResult;
|
|
38
|
+
export {};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The single validated, journalled mutation entry point for a
|
|
3
|
+
* quest README.
|
|
4
|
+
*
|
|
5
|
+
* Every field change on a quest should flow through here. The
|
|
6
|
+
* layer reads the README under the per-quest lock, applies a pure
|
|
7
|
+
* transform, and refuses to write a result the strict parser
|
|
8
|
+
* cannot read back, so an out-of-vocabulary value is blocked at
|
|
9
|
+
* write time instead of landing on disk as an invisible record.
|
|
10
|
+
* It reports the per-field diff and, when an operation name is
|
|
11
|
+
* given, appends that diff to the structural journal so the change
|
|
12
|
+
* is reversible.
|
|
13
|
+
*/
|
|
14
|
+
import { readFileSync } from "node:fs";
|
|
15
|
+
import { dirname, join } from "node:path";
|
|
16
|
+
import { nowYmd } from "./dates.js";
|
|
17
|
+
import { lensForField, reversibleFields } from "./fields.js";
|
|
18
|
+
import { parseQuestFrontMatter, serializeReadable } from "./frontmatter.js";
|
|
19
|
+
import { atomicWriteFile, withQuestLock } from "./io.js";
|
|
20
|
+
import { recordStructuralOp, } from "./structural-journal.js";
|
|
21
|
+
function diffTracked(id, before, after) {
|
|
22
|
+
const changes = [];
|
|
23
|
+
// The fields worth journalling are exactly the ones undo can put
|
|
24
|
+
// back, so both read the one lens table rather than keeping a list
|
|
25
|
+
// here that has to be remembered to match.
|
|
26
|
+
for (const field of reversibleFields()) {
|
|
27
|
+
const lens = lensForField(field);
|
|
28
|
+
if (!lens)
|
|
29
|
+
continue;
|
|
30
|
+
const old = lens.read(before);
|
|
31
|
+
const next = lens.read(after);
|
|
32
|
+
if (old !== next)
|
|
33
|
+
changes.push({ id, field, old, new: next });
|
|
34
|
+
}
|
|
35
|
+
return changes;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Apply a validated, locked write to a quest README, reporting the
|
|
39
|
+
* per-field diff and optionally journalling it.
|
|
40
|
+
*/
|
|
41
|
+
export function mutateQuestFrontMatter(questDir, transform, opts = {}) {
|
|
42
|
+
const path = join(questDir, "README.md");
|
|
43
|
+
return withQuestLock(questDir, () => {
|
|
44
|
+
let text;
|
|
45
|
+
try {
|
|
46
|
+
text = readFileSync(path, "utf8");
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
return {
|
|
50
|
+
ok: false,
|
|
51
|
+
guidance: `Cannot read ${path}: ${err.message}`,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
const parsed = parseQuestFrontMatter(text);
|
|
55
|
+
if (!parsed) {
|
|
56
|
+
return {
|
|
57
|
+
ok: false,
|
|
58
|
+
guidance: `Quest README ${path} has invalid frontmatter.`,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
const next = transform(parsed.frontMatter);
|
|
62
|
+
if (!next) {
|
|
63
|
+
return { ok: true, fm: parsed.frontMatter, changes: [] };
|
|
64
|
+
}
|
|
65
|
+
const stamped = opts.stampUpdated === false ? next : { ...next, updated: nowYmd() };
|
|
66
|
+
// Write-time validation: refuse a mutation that would produce a
|
|
67
|
+
// record the strict parser cannot read back, so an out-of-vocab
|
|
68
|
+
// value is blocked instead of written to invisible drift. Shared
|
|
69
|
+
// with every other quest writer, which is the point of it living
|
|
70
|
+
// beside the parser rather than here.
|
|
71
|
+
const serialized = serializeReadable(stamped, parsed.body);
|
|
72
|
+
if (!serialized.ok) {
|
|
73
|
+
return { ok: false, guidance: serialized.reason };
|
|
74
|
+
}
|
|
75
|
+
const outText = serialized.text;
|
|
76
|
+
const changes = diffTracked(parsed.frontMatter.id, parsed.frontMatter, stamped);
|
|
77
|
+
atomicWriteFile(path, outText);
|
|
78
|
+
if (opts.op && changes.length > 0) {
|
|
79
|
+
recordStructuralOp(opts.questsRoot ?? dirname(questDir), opts.op, changes);
|
|
80
|
+
}
|
|
81
|
+
return { ok: true, fm: stamped, changes };
|
|
82
|
+
});
|
|
83
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The process-liveness floor: classify a recorded pi process by
|
|
3
|
+
* whether it is still running, using an OS-derived start token to
|
|
4
|
+
* survive pid reuse. This is the terminal-agnostic layer under the
|
|
5
|
+
* terminal-driver liveness capability; a session with no terminal
|
|
6
|
+
* identity still gets an honest answer from its process alone.
|
|
7
|
+
*
|
|
8
|
+
* The OS inspection is injected so the branching logic stays pure
|
|
9
|
+
* and testable; the platform readers live in the caller.
|
|
10
|
+
*/
|
|
11
|
+
/** Stable identity of a recorded pi process. */
|
|
12
|
+
export interface ProcessIdentity {
|
|
13
|
+
/** Host the process was observed on; a remote host is unprobeable. */
|
|
14
|
+
hostId: string;
|
|
15
|
+
/** OS process id. */
|
|
16
|
+
pid: number;
|
|
17
|
+
/**
|
|
18
|
+
* OS-derived process-start token (creation time or equivalent).
|
|
19
|
+
* Distinguishes the original process from a later pid reuse.
|
|
20
|
+
*/
|
|
21
|
+
startToken: string;
|
|
22
|
+
/**
|
|
23
|
+
* Identifier of the boot the process was recorded under. A reboot
|
|
24
|
+
* invalidates every pid on the host at once, so a record from an
|
|
25
|
+
* earlier boot is dead whatever the pid now holds. Optional: a
|
|
26
|
+
* record written before this was captured, or on a host with no
|
|
27
|
+
* readable token, falls through to the pid inspection.
|
|
28
|
+
*/
|
|
29
|
+
bootToken?: string;
|
|
30
|
+
}
|
|
31
|
+
/** What an OS inspection of a pid found. */
|
|
32
|
+
export type ProcessInspection = {
|
|
33
|
+
kind: "alive";
|
|
34
|
+
startToken: string;
|
|
35
|
+
} | {
|
|
36
|
+
kind: "gone";
|
|
37
|
+
} | {
|
|
38
|
+
kind: "unknown";
|
|
39
|
+
};
|
|
40
|
+
/** The floor's verdict for one recorded process. */
|
|
41
|
+
export type ProcessProbe = "matching" | "gone" | "unknown";
|
|
42
|
+
/** Dependencies for {@link probeProcess}: the local host and the OS reader. */
|
|
43
|
+
export interface ProbeProcessDeps {
|
|
44
|
+
/** The reader's own host id, compared against the recorded host. */
|
|
45
|
+
localHostId: string;
|
|
46
|
+
/** Inspect a live pid on the local host. */
|
|
47
|
+
inspect: (pid: number) => ProcessInspection;
|
|
48
|
+
/**
|
|
49
|
+
* The boot the reader is running under. Optional, because a host
|
|
50
|
+
* with no readable token must not declare anything dead.
|
|
51
|
+
*/
|
|
52
|
+
localBootToken?: string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Map the observable facts of a `ps -o lstart=` lookup to an
|
|
56
|
+
* inspection. Only a clean non-zero exit that printed no diagnostic
|
|
57
|
+
* is `gone` (the pid holds no process); a diagnostic on stderr means
|
|
58
|
+
* `ps` rejected the query (an unsupported option on a minimal `ps`),
|
|
59
|
+
* and a lookup that never spawned is `unknown`, so an inability to
|
|
60
|
+
* probe is never read as death.
|
|
61
|
+
*/
|
|
62
|
+
export declare function interpretPsLookup(r: {
|
|
63
|
+
spawned: boolean;
|
|
64
|
+
exitStatus: number | null;
|
|
65
|
+
stdout: string;
|
|
66
|
+
stderr: string;
|
|
67
|
+
}): ProcessInspection;
|
|
68
|
+
/**
|
|
69
|
+
* Build a probeable process identity from a live inspection, or none
|
|
70
|
+
* when the start token could not be read. Recording an identity with
|
|
71
|
+
* a synthetic token would guarantee a later mismatch against a real
|
|
72
|
+
* ps reading and read the session dead, so an unreadable capture is
|
|
73
|
+
* left without a process identity and falls back to recency instead.
|
|
74
|
+
*/
|
|
75
|
+
export declare function identityFromInspection(hostId: string, pid: number, inspection: ProcessInspection): ProcessIdentity | undefined;
|
|
76
|
+
/**
|
|
77
|
+
* Identity of the currently running pi process, for capture onto the
|
|
78
|
+
* session it is attached to. Undefined when the OS reader could not
|
|
79
|
+
* read a real start token: a session then carries no process identity
|
|
80
|
+
* and its liveness falls back to recency, rather than a synthetic
|
|
81
|
+
* token that a later probe would read as a dead mismatch.
|
|
82
|
+
*/
|
|
83
|
+
export declare function currentProcessIdentity(): ProcessIdentity | undefined;
|
|
84
|
+
/**
|
|
85
|
+
* The identifier of the boot this process is running under, read once
|
|
86
|
+
* and remembered. Undefined on a host that publishes none, in which
|
|
87
|
+
* case no session is ever judged by boot.
|
|
88
|
+
*/
|
|
89
|
+
export declare function currentBootToken(): string | undefined;
|
|
90
|
+
/** The always-on local floor: this host plus the OS start-token reader. */
|
|
91
|
+
export declare function localProcessDeps(): ProbeProcessDeps;
|
|
92
|
+
/**
|
|
93
|
+
* The current pi process's instance id, stable for the life of the
|
|
94
|
+
* process. Stored on a session at attach so a later shutdown detaches
|
|
95
|
+
* only when the same instance still owns it.
|
|
96
|
+
*/
|
|
97
|
+
export declare function currentInstanceId(): string;
|
|
98
|
+
export declare function probeProcess(id: ProcessIdentity, deps: ProbeProcessDeps): ProcessProbe;
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The process-liveness floor: classify a recorded pi process by
|
|
3
|
+
* whether it is still running, using an OS-derived start token to
|
|
4
|
+
* survive pid reuse. This is the terminal-agnostic layer under the
|
|
5
|
+
* terminal-driver liveness capability; a session with no terminal
|
|
6
|
+
* identity still gets an honest answer from its process alone.
|
|
7
|
+
*
|
|
8
|
+
* The OS inspection is injected so the branching logic stays pure
|
|
9
|
+
* and testable; the platform readers live in the caller.
|
|
10
|
+
*/
|
|
11
|
+
import { execFileSync } from "node:child_process";
|
|
12
|
+
import { randomUUID } from "node:crypto";
|
|
13
|
+
import { readFileSync } from "node:fs";
|
|
14
|
+
import { hostname } from "node:os";
|
|
15
|
+
/**
|
|
16
|
+
* Classify a recorded process. A recorded host that is not the local
|
|
17
|
+
* host is unknown (we cannot see it). Otherwise the OS inspection
|
|
18
|
+
* decides: no such pid is gone, a pid held by a process with a
|
|
19
|
+
* different start token is gone (reuse), a matching token is
|
|
20
|
+
* matching, and anything the inspection could not determine is
|
|
21
|
+
* unknown.
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* Read a live pid's OS start token. Uses `ps -o lstart=`, present on
|
|
25
|
+
* macOS and Linux, which yields a stable per-process start timestamp
|
|
26
|
+
* that distinguishes a pid from a later reuse. A pid no process holds
|
|
27
|
+
* is gone; a missing `ps` or any other failure is unknown, so an
|
|
28
|
+
* inability to probe never reads as death.
|
|
29
|
+
*/
|
|
30
|
+
function readStartToken(pid) {
|
|
31
|
+
try {
|
|
32
|
+
const stdout = execFileSync("ps", ["-o", "lstart=", "-p", String(pid)], {
|
|
33
|
+
encoding: "utf8",
|
|
34
|
+
});
|
|
35
|
+
return interpretPsLookup({
|
|
36
|
+
spawned: true,
|
|
37
|
+
exitStatus: 0,
|
|
38
|
+
stdout,
|
|
39
|
+
stderr: "",
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
return interpretPsLookup(psLookupFromError(error));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/** Read the observable facts of a failed `ps` run off the thrown error. */
|
|
47
|
+
function psLookupFromError(error) {
|
|
48
|
+
const e = (error ?? {});
|
|
49
|
+
const exitStatus = typeof e.status === "number" ? e.status : null;
|
|
50
|
+
return {
|
|
51
|
+
// A numeric exit status means `ps` ran; no status means it never
|
|
52
|
+
// spawned (absent binary, unsupported platform).
|
|
53
|
+
spawned: exitStatus !== null,
|
|
54
|
+
exitStatus,
|
|
55
|
+
stdout: typeof e.stdout === "string" ? e.stdout : "",
|
|
56
|
+
stderr: typeof e.stderr === "string" ? e.stderr : "",
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Map the observable facts of a `ps -o lstart=` lookup to an
|
|
61
|
+
* inspection. Only a clean non-zero exit that printed no diagnostic
|
|
62
|
+
* is `gone` (the pid holds no process); a diagnostic on stderr means
|
|
63
|
+
* `ps` rejected the query (an unsupported option on a minimal `ps`),
|
|
64
|
+
* and a lookup that never spawned is `unknown`, so an inability to
|
|
65
|
+
* probe is never read as death.
|
|
66
|
+
*/
|
|
67
|
+
export function interpretPsLookup(r) {
|
|
68
|
+
if (!r.spawned)
|
|
69
|
+
return { kind: "unknown" };
|
|
70
|
+
if (r.exitStatus === 0) {
|
|
71
|
+
const token = r.stdout.trim();
|
|
72
|
+
// A live pid always prints its start line on a zero exit. An
|
|
73
|
+
// empty zero-exit is anomalous, not a clean "no such pid" (that
|
|
74
|
+
// comes via a non-zero exit), so treat it as unknown rather than
|
|
75
|
+
// declaring death.
|
|
76
|
+
return token.length > 0
|
|
77
|
+
? { kind: "alive", startToken: token }
|
|
78
|
+
: { kind: "unknown" };
|
|
79
|
+
}
|
|
80
|
+
// A non-zero exit is only "no such pid" when ps said nothing at
|
|
81
|
+
// all; any diagnostic, on either stream, means it could not answer
|
|
82
|
+
// the query, which is unknown rather than death.
|
|
83
|
+
const quiet = r.stdout.trim().length === 0 && r.stderr.trim().length === 0;
|
|
84
|
+
return quiet ? { kind: "gone" } : { kind: "unknown" };
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Build a probeable process identity from a live inspection, or none
|
|
88
|
+
* when the start token could not be read. Recording an identity with
|
|
89
|
+
* a synthetic token would guarantee a later mismatch against a real
|
|
90
|
+
* ps reading and read the session dead, so an unreadable capture is
|
|
91
|
+
* left without a process identity and falls back to recency instead.
|
|
92
|
+
*/
|
|
93
|
+
export function identityFromInspection(hostId, pid, inspection) {
|
|
94
|
+
return inspection.kind === "alive"
|
|
95
|
+
? { hostId, pid, startToken: inspection.startToken }
|
|
96
|
+
: undefined;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Identity of the currently running pi process, for capture onto the
|
|
100
|
+
* session it is attached to. Undefined when the OS reader could not
|
|
101
|
+
* read a real start token: a session then carries no process identity
|
|
102
|
+
* and its liveness falls back to recency, rather than a synthetic
|
|
103
|
+
* token that a later probe would read as a dead mismatch.
|
|
104
|
+
*/
|
|
105
|
+
export function currentProcessIdentity() {
|
|
106
|
+
const identity = identityFromInspection(hostname(), process.pid, readStartToken(process.pid));
|
|
107
|
+
if (!identity)
|
|
108
|
+
return undefined;
|
|
109
|
+
// Stamp the boot alongside the pid, so a later reader can retire
|
|
110
|
+
// this record wholesale after a reboot instead of asking the OS
|
|
111
|
+
// about a pid that means nothing any more.
|
|
112
|
+
const bootToken = currentBootToken();
|
|
113
|
+
return bootToken ? { ...identity, bootToken } : identity;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Whether the record is known to come from a different boot than the
|
|
117
|
+
* reader's. Both tokens have to be present to say so: a record
|
|
118
|
+
* written before boot tokens were captured, or a host with no
|
|
119
|
+
* readable token, is not evidence of death.
|
|
120
|
+
*/
|
|
121
|
+
function fromAnotherBoot(id, deps) {
|
|
122
|
+
return (id.bootToken !== undefined &&
|
|
123
|
+
deps.localBootToken !== undefined &&
|
|
124
|
+
id.bootToken !== deps.localBootToken);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Where Linux publishes a random identifier regenerated on each boot.
|
|
128
|
+
*/
|
|
129
|
+
const LINUX_BOOT_ID_PATH = "/proc/sys/kernel/random/boot_id";
|
|
130
|
+
/**
|
|
131
|
+
* Read an identifier for the running boot, or undefined when the host
|
|
132
|
+
* offers none.
|
|
133
|
+
*
|
|
134
|
+
* Both platforms expose a uuid minted at boot rather than a
|
|
135
|
+
* timestamp: Linux in procfs, macOS as `kern.bootsessionuuid`. The
|
|
136
|
+
* neighbouring `kern.boottime` looks like the obvious source and is
|
|
137
|
+
* not one, because it is derived from the clock and shifts when NTP
|
|
138
|
+
* adjusts it. A token that drifts mid-boot would read every live
|
|
139
|
+
* session as dead, which is the one answer this module must never
|
|
140
|
+
* invent.
|
|
141
|
+
*/
|
|
142
|
+
function readBootToken() {
|
|
143
|
+
if (process.platform === "linux") {
|
|
144
|
+
try {
|
|
145
|
+
return nonEmpty(readFileSync(LINUX_BOOT_ID_PATH, "utf8"));
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
// No procfs (a container, an unusual mount): no token, so the
|
|
149
|
+
// probe falls through to inspecting the pid.
|
|
150
|
+
return undefined;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
try {
|
|
154
|
+
return nonEmpty(execFileSync("sysctl", ["-n", "kern.bootsessionuuid"], {
|
|
155
|
+
encoding: "utf8",
|
|
156
|
+
}));
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
// No sysctl, or the key is absent on this platform: same again,
|
|
160
|
+
// no token rather than a guess.
|
|
161
|
+
return undefined;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/** Trim a reading, treating blank output as no reading at all. */
|
|
165
|
+
function nonEmpty(raw) {
|
|
166
|
+
const trimmed = raw.trim();
|
|
167
|
+
return trimmed.length > 0 ? trimmed : undefined;
|
|
168
|
+
}
|
|
169
|
+
/** Memoized boot token; a boot identifier cannot change under us. */
|
|
170
|
+
let bootTokenCache;
|
|
171
|
+
/**
|
|
172
|
+
* The identifier of the boot this process is running under, read once
|
|
173
|
+
* and remembered. Undefined on a host that publishes none, in which
|
|
174
|
+
* case no session is ever judged by boot.
|
|
175
|
+
*/
|
|
176
|
+
export function currentBootToken() {
|
|
177
|
+
bootTokenCache ??= { token: readBootToken() };
|
|
178
|
+
return bootTokenCache.token;
|
|
179
|
+
}
|
|
180
|
+
/** The always-on local floor: this host plus the OS start-token reader. */
|
|
181
|
+
export function localProcessDeps() {
|
|
182
|
+
const localBootToken = currentBootToken();
|
|
183
|
+
return {
|
|
184
|
+
localHostId: hostname(),
|
|
185
|
+
inspect: readStartToken,
|
|
186
|
+
...(localBootToken ? { localBootToken } : {}),
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
/** Id minted once per pi process, identifying which process holds a session lease. */
|
|
190
|
+
const INSTANCE_ID = randomUUID();
|
|
191
|
+
/**
|
|
192
|
+
* The current pi process's instance id, stable for the life of the
|
|
193
|
+
* process. Stored on a session at attach so a later shutdown detaches
|
|
194
|
+
* only when the same instance still owns it.
|
|
195
|
+
*/
|
|
196
|
+
export function currentInstanceId() {
|
|
197
|
+
return INSTANCE_ID;
|
|
198
|
+
}
|
|
199
|
+
export function probeProcess(id, deps) {
|
|
200
|
+
if (id.hostId !== deps.localHostId)
|
|
201
|
+
return "unknown";
|
|
202
|
+
// A pid outlives nothing across a reboot, so a record from an
|
|
203
|
+
// earlier boot is dead without asking the OS: whatever holds that
|
|
204
|
+
// pid now is a reuse, even when its start token happens to match.
|
|
205
|
+
if (fromAnotherBoot(id, deps))
|
|
206
|
+
return "gone";
|
|
207
|
+
const found = deps.inspect(id.pid);
|
|
208
|
+
switch (found.kind) {
|
|
209
|
+
case "gone":
|
|
210
|
+
return "gone";
|
|
211
|
+
case "unknown":
|
|
212
|
+
return "unknown";
|
|
213
|
+
case "alive":
|
|
214
|
+
return found.startToken === id.startToken ? "matching" : "gone";
|
|
215
|
+
}
|
|
216
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
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 type { CastEntry, JourneyEntry, QuestDoc, QuestFrontMatter } from "../../quest/types.js";
|
|
21
|
+
import { type IdMention } from "./id.js";
|
|
22
|
+
declare const SECTION_HEADERS: {
|
|
23
|
+
readonly summary: RegExp;
|
|
24
|
+
readonly purpose: RegExp;
|
|
25
|
+
readonly cast: RegExp;
|
|
26
|
+
readonly journey: RegExp;
|
|
27
|
+
readonly milestones: RegExp;
|
|
28
|
+
readonly spirit: RegExp;
|
|
29
|
+
readonly outcomes: RegExp;
|
|
30
|
+
readonly context: RegExp;
|
|
31
|
+
};
|
|
32
|
+
/** Parse a quest README and return the structured doc. */
|
|
33
|
+
export declare function parseQuestDoc(text: string): QuestDoc | undefined;
|
|
34
|
+
/** Extract the first H1 from a body. */
|
|
35
|
+
export declare function extractTitle(body: string): string | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* Extract the lines of a named section from a body. Returns
|
|
38
|
+
* the lines between the matching `## Section` header and
|
|
39
|
+
* the next `## ` header (or end of body). The header line
|
|
40
|
+
* itself is excluded.
|
|
41
|
+
*/
|
|
42
|
+
export declare function extractSection(body: string, header: keyof typeof SECTION_HEADERS): string[];
|
|
43
|
+
/** First paragraph (until blank line) of a section. */
|
|
44
|
+
export declare function extractSectionParagraph(body: string, header: keyof typeof SECTION_HEADERS): string | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Parse the Cast section's role-prefix bullets. Skips
|
|
47
|
+
* scaffold placeholder subjects so an unedited template
|
|
48
|
+
* doesn't surface as a real cast entry.
|
|
49
|
+
*/
|
|
50
|
+
export declare function extractCast(body: string): CastEntry[];
|
|
51
|
+
/** Parse the Journey section's dated entries. */
|
|
52
|
+
export declare function extractJourney(body: string): JourneyEntry[];
|
|
53
|
+
/** Count Milestones section checkboxes. */
|
|
54
|
+
export declare function milestoneProgress(body: string): {
|
|
55
|
+
total: number;
|
|
56
|
+
done: number;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Count every `- [ ]` / `- [x]` checkbox in the body,
|
|
60
|
+
* regardless of which section holds it. Returns a count
|
|
61
|
+
* pair plus the prose of the first unchecked entry so the
|
|
62
|
+
* widget can render "5/33 → do the next thing" without
|
|
63
|
+
* re-parsing the body on every paint.
|
|
64
|
+
*
|
|
65
|
+
* The plan, research, brief and report templates all use
|
|
66
|
+
* different section names for their work list. Walking
|
|
67
|
+
* the whole body makes one counter serve all four kinds
|
|
68
|
+
* without coupling to a template detail.
|
|
69
|
+
*/
|
|
70
|
+
export declare function checkboxProgress(body: string): {
|
|
71
|
+
total: number;
|
|
72
|
+
done: number;
|
|
73
|
+
currentItem?: string;
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Pull every inline reference out of the body: bare quest
|
|
77
|
+
* IDs and any pattern recognised by a registered ref type.
|
|
78
|
+
*
|
|
79
|
+
* `ids` lists every ID found, in order of first appearance.
|
|
80
|
+
* `idMentions` adds the `→` sigil relation: an id
|
|
81
|
+
* preceded by `→` is marked `produced`; bare ids are
|
|
82
|
+
* marked `reference`. Consumers that don't care about the
|
|
83
|
+
* relation can keep using `ids`.
|
|
84
|
+
*/
|
|
85
|
+
export interface ExtractedMentions {
|
|
86
|
+
/** Quest, plan, research, brief or report IDs. */
|
|
87
|
+
ids: string[];
|
|
88
|
+
/** Same IDs, classified as produced-by or bare reference. */
|
|
89
|
+
idMentions: IdMention[];
|
|
90
|
+
/** Refs through the registered ref types. */
|
|
91
|
+
refs: Array<{
|
|
92
|
+
type: string;
|
|
93
|
+
value: string;
|
|
94
|
+
}>;
|
|
95
|
+
}
|
|
96
|
+
export declare function extractMentions(body: string): ExtractedMentions;
|
|
97
|
+
/**
|
|
98
|
+
* Quick projection used by the `quest show` action. Combines
|
|
99
|
+
* the snippets the agent needs to synthesise a paragraph
|
|
100
|
+
* about a quest.
|
|
101
|
+
*/
|
|
102
|
+
export interface QuestShowProjection {
|
|
103
|
+
frontMatter: QuestFrontMatter;
|
|
104
|
+
title?: string;
|
|
105
|
+
summary?: string;
|
|
106
|
+
purpose?: string;
|
|
107
|
+
cast: CastEntry[];
|
|
108
|
+
journey: JourneyEntry[];
|
|
109
|
+
milestones: {
|
|
110
|
+
total: number;
|
|
111
|
+
done: number;
|
|
112
|
+
};
|
|
113
|
+
mentions: ExtractedMentions;
|
|
114
|
+
}
|
|
115
|
+
export declare function projectQuestForShow(doc: QuestDoc): QuestShowProjection;
|
|
116
|
+
export {};
|