@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,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public API for the `memory` domain: durable, scoped facts with
|
|
3
|
+
* lifecycle-based retention, not age-based eviction.
|
|
4
|
+
*
|
|
5
|
+
* Deliberately not exported here: resolving which scope currently
|
|
6
|
+
* applies (see scope.ts) and presentation (formatting facts for a
|
|
7
|
+
* particular host's reply shape is the adapter's job).
|
|
8
|
+
*/
|
|
9
|
+
export { memoryDbPath } from "./paths.js";
|
|
10
|
+
export { serializeScope } from "./scope.js";
|
|
11
|
+
export { openMemoryStore } from "./store.js";
|
|
12
|
+
export type { Fact, FactStatus, MemoryStore, RecallQuery, RetainInput, Scope, } from "./types.js";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public API for the `memory` domain: durable, scoped facts with
|
|
3
|
+
* lifecycle-based retention, not age-based eviction.
|
|
4
|
+
*
|
|
5
|
+
* Deliberately not exported here: resolving which scope currently
|
|
6
|
+
* applies (see scope.ts) and presentation (formatting facts for a
|
|
7
|
+
* particular host's reply shape is the adapter's job).
|
|
8
|
+
*/
|
|
9
|
+
export { memoryDbPath } from "./paths.js";
|
|
10
|
+
export { serializeScope } from "./scope.js";
|
|
11
|
+
export { openMemoryStore } from "./store.js";
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where the shared memory database lives on disk.
|
|
3
|
+
*
|
|
4
|
+
* Deliberately one location for every adapter, not one per
|
|
5
|
+
* adapter: a fact retained while working through pi should be
|
|
6
|
+
* recallable when the same project is later worked on through
|
|
7
|
+
* Claude Code, and the reverse. The schema lives here in core, so
|
|
8
|
+
* there is exactly one schema in play regardless of which adapter
|
|
9
|
+
* opens the file, pinned by whatever core version each adapter's
|
|
10
|
+
* own lockfile resolves to.
|
|
11
|
+
*
|
|
12
|
+
* This intentionally does not reuse pi's own XDG path (which
|
|
13
|
+
* scopes everything pi stores under an `agentic-harness.pi`
|
|
14
|
+
* brand): that brand means "belongs to pi", and a store two
|
|
15
|
+
* adapters write to belongs to neither. Pi's own memory-integration
|
|
16
|
+
* extension points here instead, once it exists.
|
|
17
|
+
*/
|
|
18
|
+
/** The memory database path, creating its parent directory if needed. */
|
|
19
|
+
export declare function memoryDbPath(): Promise<string>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where the shared memory database lives on disk.
|
|
3
|
+
*
|
|
4
|
+
* Deliberately one location for every adapter, not one per
|
|
5
|
+
* adapter: a fact retained while working through pi should be
|
|
6
|
+
* recallable when the same project is later worked on through
|
|
7
|
+
* Claude Code, and the reverse. The schema lives here in core, so
|
|
8
|
+
* there is exactly one schema in play regardless of which adapter
|
|
9
|
+
* opens the file, pinned by whatever core version each adapter's
|
|
10
|
+
* own lockfile resolves to.
|
|
11
|
+
*
|
|
12
|
+
* This intentionally does not reuse pi's own XDG path (which
|
|
13
|
+
* scopes everything pi stores under an `agentic-harness.pi`
|
|
14
|
+
* brand): that brand means "belongs to pi", and a store two
|
|
15
|
+
* adapters write to belongs to neither. Pi's own memory-integration
|
|
16
|
+
* extension points here instead, once it exists.
|
|
17
|
+
*/
|
|
18
|
+
import { mkdir } from "node:fs/promises";
|
|
19
|
+
import { homedir } from "node:os";
|
|
20
|
+
import { dirname, join } from "node:path";
|
|
21
|
+
/** Honours XDG_STATE_HOME; falls back to ~/.local/state per the XDG spec. */
|
|
22
|
+
function xdgStateRoot() {
|
|
23
|
+
const override = process.env.XDG_STATE_HOME;
|
|
24
|
+
return override && override.length > 0
|
|
25
|
+
? override
|
|
26
|
+
: join(homedir(), ".local", "state");
|
|
27
|
+
}
|
|
28
|
+
/** The memory database path, creating its parent directory if needed. */
|
|
29
|
+
export async function memoryDbPath() {
|
|
30
|
+
const path = join(xdgStateRoot(), "agentic-harness", "memory", "memory.db");
|
|
31
|
+
await mkdir(dirname(path), { recursive: true });
|
|
32
|
+
return path;
|
|
33
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scope serialization. A fact's scope is stored as a single
|
|
3
|
+
* string key so recall is a plain lookup; this is the only
|
|
4
|
+
* place that shape is minted.
|
|
5
|
+
*
|
|
6
|
+
* Deliberately not here: resolving *which* scope currently
|
|
7
|
+
* applies. Pi derives that from its own session log (the loaded
|
|
8
|
+
* quest, or the project at ctx.cwd); a host with no quest system
|
|
9
|
+
* has nothing equivalent to derive from. Each adapter decides its
|
|
10
|
+
* own current scope and passes the resulting `Scope` value in.
|
|
11
|
+
*/
|
|
12
|
+
import type { Scope } from "./types.js";
|
|
13
|
+
/** The canonical string key for a scope. */
|
|
14
|
+
export declare function serializeScope(scope: Scope): string;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scope serialization. A fact's scope is stored as a single
|
|
3
|
+
* string key so recall is a plain lookup; this is the only
|
|
4
|
+
* place that shape is minted.
|
|
5
|
+
*
|
|
6
|
+
* Deliberately not here: resolving *which* scope currently
|
|
7
|
+
* applies. Pi derives that from its own session log (the loaded
|
|
8
|
+
* quest, or the project at ctx.cwd); a host with no quest system
|
|
9
|
+
* has nothing equivalent to derive from. Each adapter decides its
|
|
10
|
+
* own current scope and passes the resulting `Scope` value in.
|
|
11
|
+
*/
|
|
12
|
+
/** The canonical string key for a scope. */
|
|
13
|
+
export function serializeScope(scope) {
|
|
14
|
+
switch (scope.kind) {
|
|
15
|
+
case "global":
|
|
16
|
+
return "global";
|
|
17
|
+
case "project":
|
|
18
|
+
return `project:${scope.path}`;
|
|
19
|
+
case "quest":
|
|
20
|
+
return `quest:${scope.id}`;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite-backed memory store.
|
|
3
|
+
*
|
|
4
|
+
* Facts are keyed by a serialized scope so recall is a plain
|
|
5
|
+
* lookup. Retention is by lifecycle, never by age: a fact
|
|
6
|
+
* leaves recall only when invalidated, when its scope is
|
|
7
|
+
* concluded, or never. The store is its own database file,
|
|
8
|
+
* separate from any other structured store an adapter keeps.
|
|
9
|
+
*/
|
|
10
|
+
import type { MemoryStore } from "./types.js";
|
|
11
|
+
/** Open (and migrate) a memory store at the given path. */
|
|
12
|
+
export declare function openMemoryStore(dbPath: string): Promise<MemoryStore>;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite-backed memory store.
|
|
3
|
+
*
|
|
4
|
+
* Facts are keyed by a serialized scope so recall is a plain
|
|
5
|
+
* lookup. Retention is by lifecycle, never by age: a fact
|
|
6
|
+
* leaves recall only when invalidated, when its scope is
|
|
7
|
+
* concluded, or never. The store is its own database file,
|
|
8
|
+
* separate from any other structured store an adapter keeps.
|
|
9
|
+
*/
|
|
10
|
+
import { openDb } from "../internal/sqlite/db.js";
|
|
11
|
+
import { serializeScope } from "./scope.js";
|
|
12
|
+
/** Default number of facts a single recall returns. */
|
|
13
|
+
const DEFAULT_RECALL_LIMIT = 20;
|
|
14
|
+
function rowToFact(row) {
|
|
15
|
+
return {
|
|
16
|
+
id: row.id,
|
|
17
|
+
scope: row.scope,
|
|
18
|
+
text: row.text,
|
|
19
|
+
tags: JSON.parse(row.tags),
|
|
20
|
+
...(row.source ? { source: row.source } : {}),
|
|
21
|
+
status: row.status,
|
|
22
|
+
createdAt: row.created_at,
|
|
23
|
+
recalledCount: row.recalled_count,
|
|
24
|
+
...(row.last_recalled_at !== null
|
|
25
|
+
? { lastRecalledAt: row.last_recalled_at }
|
|
26
|
+
: {}),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/** Open (and migrate) a memory store at the given path. */
|
|
30
|
+
export async function openMemoryStore(dbPath) {
|
|
31
|
+
const db = await openDb(dbPath);
|
|
32
|
+
await db.exec(`
|
|
33
|
+
CREATE TABLE IF NOT EXISTS facts (
|
|
34
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
35
|
+
scope TEXT NOT NULL,
|
|
36
|
+
text TEXT NOT NULL,
|
|
37
|
+
tags TEXT NOT NULL DEFAULT '[]',
|
|
38
|
+
source TEXT,
|
|
39
|
+
status TEXT NOT NULL DEFAULT 'active',
|
|
40
|
+
created_at INTEGER NOT NULL,
|
|
41
|
+
recalled_count INTEGER NOT NULL DEFAULT 0,
|
|
42
|
+
last_recalled_at INTEGER
|
|
43
|
+
);
|
|
44
|
+
CREATE INDEX IF NOT EXISTS facts_scope_status ON facts (scope, status);
|
|
45
|
+
`);
|
|
46
|
+
const factById = async (id) => {
|
|
47
|
+
const rows = await db.all("SELECT * FROM facts WHERE id = ?", [
|
|
48
|
+
id,
|
|
49
|
+
]);
|
|
50
|
+
return rows[0] ? rowToFact(rows[0]) : null;
|
|
51
|
+
};
|
|
52
|
+
const api = {
|
|
53
|
+
async retain(input) {
|
|
54
|
+
const scope = serializeScope(input.scope);
|
|
55
|
+
const now = Date.now();
|
|
56
|
+
await db.run("INSERT INTO facts (scope, text, tags, source, status, created_at) VALUES (?, ?, ?, ?, 'active', ?)", [
|
|
57
|
+
scope,
|
|
58
|
+
input.text,
|
|
59
|
+
JSON.stringify(input.tags ?? []),
|
|
60
|
+
input.source ?? null,
|
|
61
|
+
now,
|
|
62
|
+
]);
|
|
63
|
+
const rows = await db.all("SELECT * FROM facts WHERE scope = ? ORDER BY id DESC LIMIT 1", [scope]);
|
|
64
|
+
return rowToFact(rows[0]);
|
|
65
|
+
},
|
|
66
|
+
async recall(query) {
|
|
67
|
+
const scopes = [serializeScope(query.scope)];
|
|
68
|
+
if (query.includeGlobal !== false && query.scope.kind !== "global") {
|
|
69
|
+
scopes.push("global");
|
|
70
|
+
}
|
|
71
|
+
const placeholders = scopes.map(() => "?").join(", ");
|
|
72
|
+
const params = [...scopes];
|
|
73
|
+
let where = `status = 'active' AND scope IN (${placeholders})`;
|
|
74
|
+
if (query.text) {
|
|
75
|
+
where += " AND (text LIKE ? OR tags LIKE ?)";
|
|
76
|
+
params.push(`%${query.text}%`, `%${query.text}%`);
|
|
77
|
+
}
|
|
78
|
+
const limit = query.limit ?? DEFAULT_RECALL_LIMIT;
|
|
79
|
+
params.push(limit);
|
|
80
|
+
const rows = await db.all(`SELECT * FROM facts WHERE ${where} ORDER BY recalled_count DESC, created_at DESC LIMIT ?`, params);
|
|
81
|
+
if (rows.length > 0) {
|
|
82
|
+
const now = Date.now();
|
|
83
|
+
await db.run(`UPDATE facts SET recalled_count = recalled_count + 1, last_recalled_at = ? WHERE id IN (${rows
|
|
84
|
+
.map(() => "?")
|
|
85
|
+
.join(", ")})`, [now, ...rows.map((r) => r.id)]);
|
|
86
|
+
}
|
|
87
|
+
// Reflect the bumped stats in what we hand back.
|
|
88
|
+
return rows.map((r) => rowToFact({
|
|
89
|
+
...r,
|
|
90
|
+
recalled_count: r.recalled_count + 1,
|
|
91
|
+
last_recalled_at: Date.now(),
|
|
92
|
+
}));
|
|
93
|
+
},
|
|
94
|
+
async reflect(query) {
|
|
95
|
+
const facts = await api.recall({ scope: query.scope });
|
|
96
|
+
if (facts.length === 0)
|
|
97
|
+
return "No remembered facts for this scope.";
|
|
98
|
+
const lines = facts.map((f) => `- ${f.text}`).join("\n");
|
|
99
|
+
return `Remembered facts relevant to "${query.question}":\n${lines}`;
|
|
100
|
+
},
|
|
101
|
+
async edit(id, patch) {
|
|
102
|
+
const sets = [];
|
|
103
|
+
const params = [];
|
|
104
|
+
if (patch.text !== undefined) {
|
|
105
|
+
sets.push("text = ?");
|
|
106
|
+
params.push(patch.text);
|
|
107
|
+
}
|
|
108
|
+
if (patch.tags !== undefined) {
|
|
109
|
+
sets.push("tags = ?");
|
|
110
|
+
params.push(JSON.stringify(patch.tags));
|
|
111
|
+
}
|
|
112
|
+
if (sets.length === 0)
|
|
113
|
+
return factById(id);
|
|
114
|
+
params.push(id);
|
|
115
|
+
await db.run(`UPDATE facts SET ${sets.join(", ")} WHERE id = ?`, params);
|
|
116
|
+
return factById(id);
|
|
117
|
+
},
|
|
118
|
+
async invalidate(id) {
|
|
119
|
+
await db.run("UPDATE facts SET status = 'invalidated' WHERE id = ?", [
|
|
120
|
+
id,
|
|
121
|
+
]);
|
|
122
|
+
},
|
|
123
|
+
async concludeScope(scope, mode) {
|
|
124
|
+
const key = serializeScope(scope);
|
|
125
|
+
const before = await db.all("SELECT COUNT(*) AS n FROM facts WHERE scope = ? AND status = 'active'", [key]);
|
|
126
|
+
if (mode === "drop") {
|
|
127
|
+
await db.run("DELETE FROM facts WHERE scope = ?", [key]);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
await db.run("UPDATE facts SET status = 'archived' WHERE scope = ? AND status = 'active'", [key]);
|
|
131
|
+
}
|
|
132
|
+
return before[0]?.n ?? 0;
|
|
133
|
+
},
|
|
134
|
+
async weakestBeyondCap(scope, cap) {
|
|
135
|
+
const key = serializeScope(scope);
|
|
136
|
+
const rows = await db.all("SELECT * FROM facts WHERE scope = ? AND status = 'active' ORDER BY recalled_count ASC, created_at ASC", [key]);
|
|
137
|
+
if (rows.length <= cap)
|
|
138
|
+
return [];
|
|
139
|
+
return rows.slice(0, rows.length - cap).map(rowToFact);
|
|
140
|
+
},
|
|
141
|
+
async close() {
|
|
142
|
+
await db.close();
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
return api;
|
|
146
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for cross-session memory: durable facts scoped to a
|
|
3
|
+
* quest, a project, or globally, with lifecycle-based
|
|
4
|
+
* retention rather than age-based eviction.
|
|
5
|
+
*/
|
|
6
|
+
/** Where a fact applies. Recall widens a quest or project scope to include global. */
|
|
7
|
+
export type Scope = {
|
|
8
|
+
readonly kind: "global";
|
|
9
|
+
} | {
|
|
10
|
+
readonly kind: "project";
|
|
11
|
+
readonly path: string;
|
|
12
|
+
} | {
|
|
13
|
+
readonly kind: "quest";
|
|
14
|
+
readonly id: string;
|
|
15
|
+
};
|
|
16
|
+
/** A fact's lifecycle status. Only active facts are recalled. */
|
|
17
|
+
export type FactStatus = "active" | "invalidated" | "archived";
|
|
18
|
+
/** A durable, scoped fact the agent chose to remember. */
|
|
19
|
+
export interface Fact {
|
|
20
|
+
readonly id: number;
|
|
21
|
+
/** Serialized scope key (see serializeScope). */
|
|
22
|
+
readonly scope: string;
|
|
23
|
+
readonly text: string;
|
|
24
|
+
readonly tags: readonly string[];
|
|
25
|
+
readonly source?: string;
|
|
26
|
+
readonly status: FactStatus;
|
|
27
|
+
readonly createdAt: number;
|
|
28
|
+
readonly recalledCount: number;
|
|
29
|
+
readonly lastRecalledAt?: number;
|
|
30
|
+
}
|
|
31
|
+
/** Input to retain a new fact. */
|
|
32
|
+
export interface RetainInput {
|
|
33
|
+
readonly scope: Scope;
|
|
34
|
+
readonly text: string;
|
|
35
|
+
readonly tags?: readonly string[];
|
|
36
|
+
readonly source?: string;
|
|
37
|
+
}
|
|
38
|
+
/** A recall query: facts in a scope, optionally keyword-filtered. */
|
|
39
|
+
export interface RecallQuery {
|
|
40
|
+
readonly scope: Scope;
|
|
41
|
+
/** Keyword or tag substring to match. Omit for all facts in scope. */
|
|
42
|
+
readonly text?: string;
|
|
43
|
+
/** Widen to include global facts. Defaults to true. */
|
|
44
|
+
readonly includeGlobal?: boolean;
|
|
45
|
+
/** Maximum facts to return. Defaults to a small budget. */
|
|
46
|
+
readonly limit?: number;
|
|
47
|
+
}
|
|
48
|
+
/** The memory store's public surface. */
|
|
49
|
+
export interface MemoryStore {
|
|
50
|
+
/** Store a durable fact and return it. */
|
|
51
|
+
retain(input: RetainInput): Promise<Fact>;
|
|
52
|
+
/** Recall active facts for a scope, bumping their recall stats. */
|
|
53
|
+
recall(query: RecallQuery): Promise<Fact[]>;
|
|
54
|
+
/** Synthesize a short answer over the facts matching a scope. */
|
|
55
|
+
reflect(query: {
|
|
56
|
+
scope: Scope;
|
|
57
|
+
question: string;
|
|
58
|
+
}): Promise<string>;
|
|
59
|
+
/** Amend a fact's text or tags. Returns the updated fact, or null. */
|
|
60
|
+
edit(id: number, patch: {
|
|
61
|
+
text?: string;
|
|
62
|
+
tags?: readonly string[];
|
|
63
|
+
}): Promise<Fact | null>;
|
|
64
|
+
/** Retire a fact so it is never recalled again. */
|
|
65
|
+
invalidate(id: number): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* Archive or drop every fact in a scope, for when the scope's
|
|
68
|
+
* owner (a quest, say) concludes or retires. Returns the count
|
|
69
|
+
* affected.
|
|
70
|
+
*/
|
|
71
|
+
concludeScope(scope: Scope, mode: "archive" | "drop"): Promise<number>;
|
|
72
|
+
/**
|
|
73
|
+
* The weakest active facts in a scope beyond a soft cap
|
|
74
|
+
* (least recalled, oldest first), surfaced for curation. Never
|
|
75
|
+
* deletes; a true old fact is never silently evicted.
|
|
76
|
+
*/
|
|
77
|
+
weakestBeyondCap(scope: Scope, cap: number): Promise<Fact[]>;
|
|
78
|
+
/** Close the underlying database. */
|
|
79
|
+
close(): Promise<void>;
|
|
80
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public types for the notes library.
|
|
3
|
+
*
|
|
4
|
+
* A note is a flat, self-contained directory --
|
|
5
|
+
* `NOTE-<created-date>-<suffix>/README.md` plus whatever
|
|
6
|
+
* attachments sit alongside it -- living directly under a
|
|
7
|
+
* notes root with no folder-per-topic nesting. Unlike a
|
|
8
|
+
* quest, a note owns no child documents of different kinds;
|
|
9
|
+
* it is a single leaf. Hierarchy, where it's real, is a
|
|
10
|
+
* `parent` front-matter link to another note's id, the same
|
|
11
|
+
* way quest hierarchy is a link rather than directory
|
|
12
|
+
* nesting -- see `internal/notes/discovery.ts`.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* The note's kind: a small, fixed vocabulary, not a
|
|
16
|
+
* subject. Subject-level detail belongs in `tags`. This is
|
|
17
|
+
* deliberately narrow -- a note's type rarely needs to grow
|
|
18
|
+
* new values, and an open vocabulary would just become an
|
|
19
|
+
* uncontrolled tag by another name.
|
|
20
|
+
*/
|
|
21
|
+
export type NoteType = "journal" | "reference" | "faith" | "financial" | "gaming" | "travel" | "writing" | "inbox";
|
|
22
|
+
export declare const NOTE_TYPES: NoteType[];
|
|
23
|
+
/**
|
|
24
|
+
* A note's front matter, as read from and written to its
|
|
25
|
+
* README.md. `created`/`updated` are free-form timestamp
|
|
26
|
+
* strings (whatever the note's original source recorded,
|
|
27
|
+
* typically `YYYYMMDDTHHMMSSZ`) rather than a parsed `Date`
|
|
28
|
+
* -- the library never needs to do arithmetic on them, only
|
|
29
|
+
* compare and display, and round-tripping the original text
|
|
30
|
+
* exactly avoids a whole class of timezone-shift bugs a
|
|
31
|
+
* parse/reformat cycle would invite.
|
|
32
|
+
*/
|
|
33
|
+
export interface NoteFrontMatter {
|
|
34
|
+
id: string;
|
|
35
|
+
type: NoteType;
|
|
36
|
+
title: string;
|
|
37
|
+
created: string;
|
|
38
|
+
updated: string;
|
|
39
|
+
/** Empty when the note carries no tags, never omitted. */
|
|
40
|
+
tags: string[];
|
|
41
|
+
/** Another note's id. Absent for the (common) case of no parent. */
|
|
42
|
+
parent?: string;
|
|
43
|
+
/** Where the note originally came from (an import source, a clip source, etc.). */
|
|
44
|
+
source?: string;
|
|
45
|
+
}
|
|
46
|
+
/** A note as read from disk: its parsed front matter plus its body text. */
|
|
47
|
+
export interface NoteDoc {
|
|
48
|
+
frontMatter: NoteFrontMatter;
|
|
49
|
+
body: string;
|
|
50
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public types for the notes library.
|
|
3
|
+
*
|
|
4
|
+
* A note is a flat, self-contained directory --
|
|
5
|
+
* `NOTE-<created-date>-<suffix>/README.md` plus whatever
|
|
6
|
+
* attachments sit alongside it -- living directly under a
|
|
7
|
+
* notes root with no folder-per-topic nesting. Unlike a
|
|
8
|
+
* quest, a note owns no child documents of different kinds;
|
|
9
|
+
* it is a single leaf. Hierarchy, where it's real, is a
|
|
10
|
+
* `parent` front-matter link to another note's id, the same
|
|
11
|
+
* way quest hierarchy is a link rather than directory
|
|
12
|
+
* nesting -- see `internal/notes/discovery.ts`.
|
|
13
|
+
*/
|
|
14
|
+
export const NOTE_TYPES = [
|
|
15
|
+
"journal",
|
|
16
|
+
"reference",
|
|
17
|
+
"faith",
|
|
18
|
+
"financial",
|
|
19
|
+
"gaming",
|
|
20
|
+
"travel",
|
|
21
|
+
"writing",
|
|
22
|
+
"inbox",
|
|
23
|
+
];
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `notes create`: mint a fresh note.
|
|
3
|
+
*/
|
|
4
|
+
import { mkdirSync } from "node:fs";
|
|
5
|
+
import { join } from "node:path";
|
|
6
|
+
import { discoverNotes } from "../../internal/notes/discovery.js";
|
|
7
|
+
import { serializeNote } from "../../internal/notes/frontmatter.js";
|
|
8
|
+
import { mintIdFromDateString } from "../../internal/notes/id.js";
|
|
9
|
+
import { atomicWriteFile } from "../../internal/notes/io.js";
|
|
10
|
+
import { isNoteType, ok, refuse, } from "./shared.js";
|
|
11
|
+
export function create(notesRoot, params) {
|
|
12
|
+
const title = params.title?.trim();
|
|
13
|
+
if (!title)
|
|
14
|
+
return refuse("create needs a title");
|
|
15
|
+
if (!params.type)
|
|
16
|
+
return refuse("create needs a type");
|
|
17
|
+
if (!isNoteType(params.type)) {
|
|
18
|
+
return refuse(`type must be one of: journal, reference, faith, financial, gaming, travel, writing, inbox (got "${params.type}")`);
|
|
19
|
+
}
|
|
20
|
+
const { index } = discoverNotes(notesRoot);
|
|
21
|
+
const now = new Date()
|
|
22
|
+
.toISOString()
|
|
23
|
+
.replace(/[-:]/g, "")
|
|
24
|
+
.replace(/\.\d+Z$/, "Z");
|
|
25
|
+
const created = params.created ?? now;
|
|
26
|
+
let id;
|
|
27
|
+
do {
|
|
28
|
+
id = mintIdFromDateString(created);
|
|
29
|
+
} while (index.notes.has(id));
|
|
30
|
+
if (params.parent) {
|
|
31
|
+
if (!index.notes.has(params.parent)) {
|
|
32
|
+
return refuse(`no note matches parent "${params.parent}"`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const tags = params.tags
|
|
36
|
+
? params.tags
|
|
37
|
+
.split(",")
|
|
38
|
+
.map((t) => t.trim())
|
|
39
|
+
.filter(Boolean)
|
|
40
|
+
: [];
|
|
41
|
+
const frontMatter = {
|
|
42
|
+
id,
|
|
43
|
+
type: params.type,
|
|
44
|
+
title,
|
|
45
|
+
created,
|
|
46
|
+
updated: now,
|
|
47
|
+
tags,
|
|
48
|
+
};
|
|
49
|
+
if (params.parent)
|
|
50
|
+
frontMatter.parent = params.parent;
|
|
51
|
+
const noteDir = join(notesRoot, id);
|
|
52
|
+
mkdirSync(noteDir, { recursive: true });
|
|
53
|
+
atomicWriteFile(join(noteDir, "README.md"), serializeNote(frontMatter, `\n# ${title}\n`));
|
|
54
|
+
return ok(id, { id, type: frontMatter.type, title });
|
|
55
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `notes retype` / `notes retitle` / `notes tag` / `notes reparent`.
|
|
3
|
+
*/
|
|
4
|
+
import { type NoteResult, type NoteToolParams } from "./shared.js";
|
|
5
|
+
export declare function retype(notesRoot: string, params: NoteToolParams): NoteResult;
|
|
6
|
+
export declare function retitle(notesRoot: string, params: NoteToolParams): NoteResult;
|
|
7
|
+
export declare function tag(notesRoot: string, params: NoteToolParams): NoteResult;
|
|
8
|
+
export declare function reparent(notesRoot: string, params: NoteToolParams): NoteResult;
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `notes retype` / `notes retitle` / `notes tag` / `notes reparent`.
|
|
3
|
+
*/
|
|
4
|
+
import { readFileSync } from "node:fs";
|
|
5
|
+
import { join } from "node:path";
|
|
6
|
+
import { discoverNotes, } from "../../internal/notes/discovery.js";
|
|
7
|
+
import { parseNoteFrontMatter, serializeNote, } from "../../internal/notes/frontmatter.js";
|
|
8
|
+
import { atomicWriteFile } from "../../internal/notes/io.js";
|
|
9
|
+
import { resolveId } from "./queries.js";
|
|
10
|
+
import { isNoteType, ok, refuse, } from "./shared.js";
|
|
11
|
+
function loadForWrite(notesRoot, id) {
|
|
12
|
+
const path = join(notesRoot, id, "README.md");
|
|
13
|
+
const text = readFileSync(path, "utf8");
|
|
14
|
+
const parsed = parseNoteFrontMatter(text);
|
|
15
|
+
if (!parsed)
|
|
16
|
+
return undefined;
|
|
17
|
+
return { path, ...parsed };
|
|
18
|
+
}
|
|
19
|
+
export function retype(notesRoot, params) {
|
|
20
|
+
if (!params.id)
|
|
21
|
+
return refuse("retype needs an id");
|
|
22
|
+
if (!params.type)
|
|
23
|
+
return refuse("retype needs a type");
|
|
24
|
+
if (!isNoteType(params.type)) {
|
|
25
|
+
return refuse(`type must be one of: journal, reference, faith, financial, gaming, travel, writing, inbox (got "${params.type}")`);
|
|
26
|
+
}
|
|
27
|
+
const { index } = discoverNotes(notesRoot);
|
|
28
|
+
const resolved = resolveId(index, params.id);
|
|
29
|
+
if ("error" in resolved)
|
|
30
|
+
return refuse(resolved.error);
|
|
31
|
+
const loaded = loadForWrite(notesRoot, resolved.id);
|
|
32
|
+
if (!loaded)
|
|
33
|
+
return refuse(`could not read ${resolved.id}`);
|
|
34
|
+
loaded.frontMatter.type = params.type;
|
|
35
|
+
atomicWriteFile(loaded.path, serializeNote(loaded.frontMatter, loaded.body));
|
|
36
|
+
return ok(`${resolved.id}: type -> ${params.type}`, {
|
|
37
|
+
id: resolved.id,
|
|
38
|
+
type: params.type,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* A note's body opens with `# <title>`, an echo of the same
|
|
43
|
+
* front-matter field, not independent content -- kept in
|
|
44
|
+
* sync on retitle rather than left stale. Only the heading
|
|
45
|
+
* line itself is replaced; the blank line separating it from
|
|
46
|
+
* the rest of the body is preserved untouched, since a
|
|
47
|
+
* regex greedy enough to also consume trailing whitespace
|
|
48
|
+
* collapses that separator (caught the hard way once
|
|
49
|
+
* already, when a Python prototype of this tool did exactly
|
|
50
|
+
* that across every note it retitled in one pass).
|
|
51
|
+
*/
|
|
52
|
+
function retitleHeading(body, oldTitle, newTitle) {
|
|
53
|
+
const escaped = oldTitle.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
54
|
+
const headingRe = new RegExp(`^# ${escaped} *$`, "m");
|
|
55
|
+
return body.replace(headingRe, `# ${newTitle}`);
|
|
56
|
+
}
|
|
57
|
+
export function retitle(notesRoot, params) {
|
|
58
|
+
if (!params.id)
|
|
59
|
+
return refuse("retitle needs an id");
|
|
60
|
+
if (!params.title?.trim())
|
|
61
|
+
return refuse("retitle needs a title");
|
|
62
|
+
const { index } = discoverNotes(notesRoot);
|
|
63
|
+
const resolved = resolveId(index, params.id);
|
|
64
|
+
if ("error" in resolved)
|
|
65
|
+
return refuse(resolved.error);
|
|
66
|
+
const loaded = loadForWrite(notesRoot, resolved.id);
|
|
67
|
+
if (!loaded)
|
|
68
|
+
return refuse(`could not read ${resolved.id}`);
|
|
69
|
+
const newTitle = params.title.trim();
|
|
70
|
+
const newBody = retitleHeading(loaded.body, loaded.frontMatter.title, newTitle);
|
|
71
|
+
loaded.frontMatter.title = newTitle;
|
|
72
|
+
atomicWriteFile(loaded.path, serializeNote(loaded.frontMatter, newBody));
|
|
73
|
+
return ok(`${resolved.id}: title -> "${newTitle}"`, {
|
|
74
|
+
id: resolved.id,
|
|
75
|
+
title: newTitle,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
export function tag(notesRoot, params) {
|
|
79
|
+
if (!params.id)
|
|
80
|
+
return refuse("tag needs an id");
|
|
81
|
+
const { index } = discoverNotes(notesRoot);
|
|
82
|
+
const resolved = resolveId(index, params.id);
|
|
83
|
+
if ("error" in resolved)
|
|
84
|
+
return refuse(resolved.error);
|
|
85
|
+
const loaded = loadForWrite(notesRoot, resolved.id);
|
|
86
|
+
if (!loaded)
|
|
87
|
+
return refuse(`could not read ${resolved.id}`);
|
|
88
|
+
let tags = [...loaded.frontMatter.tags];
|
|
89
|
+
if (params.add) {
|
|
90
|
+
for (const t of params.add.split(",")) {
|
|
91
|
+
const trimmed = t.trim();
|
|
92
|
+
if (trimmed && !tags.includes(trimmed))
|
|
93
|
+
tags.push(trimmed);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (params.remove) {
|
|
97
|
+
const toRemove = new Set(params.remove.split(",").map((t) => t.trim()));
|
|
98
|
+
tags = tags.filter((t) => !toRemove.has(t));
|
|
99
|
+
}
|
|
100
|
+
loaded.frontMatter.tags = tags;
|
|
101
|
+
atomicWriteFile(loaded.path, serializeNote(loaded.frontMatter, loaded.body));
|
|
102
|
+
return ok(`${resolved.id}: tags -> [${tags.join(", ")}]`, {
|
|
103
|
+
id: resolved.id,
|
|
104
|
+
tags,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
/** Is `candidate` inside `ancestor`'s subtree? Mirrors quest's own cycle guard (`internal/quest/structural.ts`). */
|
|
108
|
+
function isDescendant(index, candidate, ancestor) {
|
|
109
|
+
const seen = new Set();
|
|
110
|
+
let cursor = candidate;
|
|
111
|
+
while (cursor !== undefined && !seen.has(cursor)) {
|
|
112
|
+
seen.add(cursor);
|
|
113
|
+
if (cursor === ancestor)
|
|
114
|
+
return true;
|
|
115
|
+
cursor = index.notes.get(cursor)?.doc.frontMatter.parent;
|
|
116
|
+
}
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
export function reparent(notesRoot, params) {
|
|
120
|
+
if (!params.id)
|
|
121
|
+
return refuse("reparent needs an id");
|
|
122
|
+
const { index } = discoverNotes(notesRoot);
|
|
123
|
+
const resolved = resolveId(index, params.id);
|
|
124
|
+
if ("error" in resolved)
|
|
125
|
+
return refuse(resolved.error);
|
|
126
|
+
const loaded = loadForWrite(notesRoot, resolved.id);
|
|
127
|
+
if (!loaded)
|
|
128
|
+
return refuse(`could not read ${resolved.id}`);
|
|
129
|
+
if (!params.parent || params.parent.toLowerCase() === "none") {
|
|
130
|
+
delete loaded.frontMatter.parent;
|
|
131
|
+
atomicWriteFile(loaded.path, serializeNote(loaded.frontMatter, loaded.body));
|
|
132
|
+
return ok(`${resolved.id}: parent cleared`, {
|
|
133
|
+
id: resolved.id,
|
|
134
|
+
parent: null,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
const resolvedParent = resolveId(index, params.parent);
|
|
138
|
+
if ("error" in resolvedParent)
|
|
139
|
+
return refuse(resolvedParent.error);
|
|
140
|
+
if (resolvedParent.id === resolved.id) {
|
|
141
|
+
return refuse(`${resolved.id} cannot be its own parent (cycle)`);
|
|
142
|
+
}
|
|
143
|
+
if (isDescendant(index, resolvedParent.id, resolved.id)) {
|
|
144
|
+
return refuse(`reparenting ${resolved.id} under ${resolvedParent.id} would form a cycle`);
|
|
145
|
+
}
|
|
146
|
+
loaded.frontMatter.parent = resolvedParent.id;
|
|
147
|
+
atomicWriteFile(loaded.path, serializeNote(loaded.frontMatter, loaded.body));
|
|
148
|
+
return ok(`${resolved.id}: parent -> ${resolvedParent.id}`, {
|
|
149
|
+
id: resolved.id,
|
|
150
|
+
parent: resolvedParent.id,
|
|
151
|
+
});
|
|
152
|
+
}
|