@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
|
+
* The Slack content gate: a thin adapter over the shared loop
|
|
3
|
+
* breaker in lib/gate. It supplies the Slack-specific detection,
|
|
4
|
+
* block formatting and relent wording; the block-first,
|
|
5
|
+
* relent-on-repeat mechanism lives in decideGate so prose,
|
|
6
|
+
* sections and Slack share one behaviour.
|
|
7
|
+
*/
|
|
8
|
+
import { type GateDecision } from "../gate/index.js";
|
|
9
|
+
/** The gate's verdict on one Slack message body. */
|
|
10
|
+
export type SlackGateDecision = GateDecision;
|
|
11
|
+
/** Decide whether to block, relent or allow given prior block signatures. */
|
|
12
|
+
export declare function slackGateDecision(text: string, priorSignatures: string[]): SlackGateDecision;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Slack content gate: a thin adapter over the shared loop
|
|
3
|
+
* breaker in lib/gate. It supplies the Slack-specific detection,
|
|
4
|
+
* block formatting and relent wording; the block-first,
|
|
5
|
+
* relent-on-repeat mechanism lives in decideGate so prose,
|
|
6
|
+
* sections and Slack share one behaviour.
|
|
7
|
+
*/
|
|
8
|
+
import { decideGate } from "../gate/index.js";
|
|
9
|
+
import { formatSlackBlock } from "./block-message.js";
|
|
10
|
+
import { detectSlackViolations } from "./detect.js";
|
|
11
|
+
const RELENT_PREFIX = [
|
|
12
|
+
"This Slack message still has formatting the converter cannot",
|
|
13
|
+
"render after a previous attempt, so it is being let through",
|
|
14
|
+
"rather than blocked again. Review the remaining problems",
|
|
15
|
+
"yourself:",
|
|
16
|
+
"",
|
|
17
|
+
].join("\n");
|
|
18
|
+
/** Decide whether to block, relent or allow given prior block signatures. */
|
|
19
|
+
export function slackGateDecision(text, priorSignatures) {
|
|
20
|
+
const violations = detectSlackViolations(text);
|
|
21
|
+
return decideGate(violations, priorSignatures, formatSlackBlock, RELENT_PREFIX, text);
|
|
22
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack content detection: finds markdown the Slack converter
|
|
3
|
+
* cannot render as the author intended, so a gate can block and
|
|
4
|
+
* point the author at the slack-guide skill. Each flagged
|
|
5
|
+
* construct requires guessing the author's intent to translate
|
|
6
|
+
* (which cells are headers, which lines are list items, where to
|
|
7
|
+
* upload an image), so the gate refuses rather than guess. The
|
|
8
|
+
* silent dialect translations in blocks.ts stay silent; this is
|
|
9
|
+
* only for the cases that genuinely need the author's hand.
|
|
10
|
+
*
|
|
11
|
+
* Detection is deliberately conservative. A malformed list is
|
|
12
|
+
* flagged only as a run of two or more lines, and a pipe table
|
|
13
|
+
* only on a separator row or two adjacent pipe rows, so a lone
|
|
14
|
+
* dash-led sentence or an inline `a | b` is never mistaken for
|
|
15
|
+
* structure. A missed case is a missed block; a false block on
|
|
16
|
+
* the high-volume Slack surface is far more corrosive.
|
|
17
|
+
*/
|
|
18
|
+
import type { Violation } from "../gate/index.js";
|
|
19
|
+
/** A single Slack content violation. */
|
|
20
|
+
export interface SlackViolation extends Violation {
|
|
21
|
+
readonly kind: "slack-image" | "slack-table" | "slack-list" | "slack-glyph-bullet";
|
|
22
|
+
/** A representative offending snippet. */
|
|
23
|
+
readonly found: string;
|
|
24
|
+
/** A short statement of the rule, for the block message. */
|
|
25
|
+
readonly rule: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Detect Slack content the converter cannot render as intended:
|
|
29
|
+
* image embeds, pipe tables and malformed lists.
|
|
30
|
+
*/
|
|
31
|
+
export declare function detectSlackViolations(text: string): SlackViolation[];
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack content detection: finds markdown the Slack converter
|
|
3
|
+
* cannot render as the author intended, so a gate can block and
|
|
4
|
+
* point the author at the slack-guide skill. Each flagged
|
|
5
|
+
* construct requires guessing the author's intent to translate
|
|
6
|
+
* (which cells are headers, which lines are list items, where to
|
|
7
|
+
* upload an image), so the gate refuses rather than guess. The
|
|
8
|
+
* silent dialect translations in blocks.ts stay silent; this is
|
|
9
|
+
* only for the cases that genuinely need the author's hand.
|
|
10
|
+
*
|
|
11
|
+
* Detection is deliberately conservative. A malformed list is
|
|
12
|
+
* flagged only as a run of two or more lines, and a pipe table
|
|
13
|
+
* only on a separator row or two adjacent pipe rows, so a lone
|
|
14
|
+
* dash-led sentence or an inline `a | b` is never mistaken for
|
|
15
|
+
* structure. A missed case is a missed block; a false block on
|
|
16
|
+
* the high-volume Slack surface is far more corrosive.
|
|
17
|
+
*/
|
|
18
|
+
const IMAGE_RULE = "slack-guide: Slack does not render markdown image embeds; upload the image with upload_file instead.";
|
|
19
|
+
const TABLE_RULE = "slack-guide: send tabular data through the structured table parameter, not a markdown pipe table.";
|
|
20
|
+
const LIST_RULE = "slack-guide: format lists as proper markdown (a bullet then a space, or `N.` ordinals).";
|
|
21
|
+
const GLYPH_LIST_RULE = "slack-guide: write list bullets as `- `, `* ` or `+ ` markers, not a \u2022 glyph; Slack renders glyph bullets as literal text instead of a native list.";
|
|
22
|
+
const FENCE_REGEX = /```[\s\S]*?```/g;
|
|
23
|
+
const INLINE_CODE_REGEX = /`[^`\n]*`/g;
|
|
24
|
+
const IMAGE_REGEX = /!\[[^\]]*\]\([^)\s]+\)/g;
|
|
25
|
+
// A markdown table separator row: pipes and dashes (with optional
|
|
26
|
+
// alignment colons) and nothing else, with at least one run of
|
|
27
|
+
// dashes. This is the unambiguous "I meant a table" signal.
|
|
28
|
+
const TABLE_SEPARATOR = /^\s*\|?\s*:?-{2,}:?\s*(\|\s*:?-+:?\s*)*\|?\s*$/;
|
|
29
|
+
// A row that opens like a table cell: optional indent, a pipe,
|
|
30
|
+
// some content, another pipe.
|
|
31
|
+
const PIPE_ROW = /^\s*\|.*\|/;
|
|
32
|
+
// A line that opens an ordered list with a paren instead of the
|
|
33
|
+
// dot Slack needs (`1)` rather than `1.`).
|
|
34
|
+
const MALFORMED_ORDERED = /^\s*\d+\)\s+\S/;
|
|
35
|
+
// A bullet marker immediately followed by a non-space. `*` is
|
|
36
|
+
// left out because `*bold*` collides with it; `-` and `+` led
|
|
37
|
+
// runs are the unambiguous malformed-bullet case.
|
|
38
|
+
const MALFORMED_BULLET = /^\s*[-+]\S/;
|
|
39
|
+
// A line that opens with a bullet glyph, a space and content.
|
|
40
|
+
// The leading anchor means the glyph must start the line, so an
|
|
41
|
+
// inline `3 \u00b7 4` is never mistaken for a bullet, and the
|
|
42
|
+
// run-of-two threshold in flagLists leaves a lone glyph line
|
|
43
|
+
// alone. Slack renders these glyphs as literal characters rather
|
|
44
|
+
// than a native rich_text_list, so they need a markdown marker.
|
|
45
|
+
const GLYPH_BULLET = /^\s*[\u2022\u2023\u25E6\u25AA\u00b7]\s+\S/;
|
|
46
|
+
/** Blank out a region so its contents never match a later scan. */
|
|
47
|
+
function blankOut(text, pattern) {
|
|
48
|
+
return text.replace(pattern, (match) => " ".repeat(match.length));
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Detect Slack content the converter cannot render as intended:
|
|
52
|
+
* image embeds, pipe tables and malformed lists.
|
|
53
|
+
*/
|
|
54
|
+
export function detectSlackViolations(text) {
|
|
55
|
+
// Mask code so pipes, dashes and image syntax inside it never
|
|
56
|
+
// trip the scans.
|
|
57
|
+
let scan = blankOut(text, FENCE_REGEX);
|
|
58
|
+
scan = blankOut(scan, INLINE_CODE_REGEX);
|
|
59
|
+
const violations = [];
|
|
60
|
+
for (const match of scan.matchAll(IMAGE_REGEX)) {
|
|
61
|
+
violations.push({ kind: "slack-image", found: match[0], rule: IMAGE_RULE });
|
|
62
|
+
}
|
|
63
|
+
const lines = scan.split("\n");
|
|
64
|
+
flagTables(lines, violations);
|
|
65
|
+
flagLists(lines, MALFORMED_ORDERED, violations, "slack-list", LIST_RULE);
|
|
66
|
+
flagLists(lines, MALFORMED_BULLET, violations, "slack-list", LIST_RULE);
|
|
67
|
+
flagLists(lines, GLYPH_BULLET, violations, "slack-glyph-bullet", GLYPH_LIST_RULE);
|
|
68
|
+
return violations;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Flag the first pipe table in the lines: a separator row, or a
|
|
72
|
+
* run of two adjacent pipe rows. One flag is enough; the block
|
|
73
|
+
* message tells the author to fix every table, so there is no
|
|
74
|
+
* need to walk past the first.
|
|
75
|
+
*/
|
|
76
|
+
function flagTables(lines, violations) {
|
|
77
|
+
let runStart = -1;
|
|
78
|
+
for (let i = 0; i < lines.length; i++) {
|
|
79
|
+
const line = lines[i];
|
|
80
|
+
if (TABLE_SEPARATOR.test(line) && line.includes("|")) {
|
|
81
|
+
violations.push({
|
|
82
|
+
kind: "slack-table",
|
|
83
|
+
found: line.trim(),
|
|
84
|
+
rule: TABLE_RULE,
|
|
85
|
+
});
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (PIPE_ROW.test(line)) {
|
|
89
|
+
if (runStart < 0)
|
|
90
|
+
runStart = i;
|
|
91
|
+
if (i - runStart >= 1) {
|
|
92
|
+
violations.push({
|
|
93
|
+
kind: "slack-table",
|
|
94
|
+
found: lines[runStart].trim(),
|
|
95
|
+
rule: TABLE_RULE,
|
|
96
|
+
});
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
runStart = -1;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/** Flag a run of two or more consecutive lines matching a marker. */
|
|
106
|
+
function flagLists(lines, marker, violations, kind, rule) {
|
|
107
|
+
let runStart = -1;
|
|
108
|
+
for (let i = 0; i <= lines.length; i++) {
|
|
109
|
+
const matches = i < lines.length && marker.test(lines[i]);
|
|
110
|
+
if (matches) {
|
|
111
|
+
if (runStart < 0)
|
|
112
|
+
runStart = i;
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
if (runStart >= 0 && i - runStart >= 2) {
|
|
116
|
+
violations.push({
|
|
117
|
+
kind,
|
|
118
|
+
found: lines[runStart].trim(),
|
|
119
|
+
rule,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
runStart = -1;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack library: API client, credential state, renderers,
|
|
3
|
+
* resolvers and shared types.
|
|
4
|
+
*
|
|
5
|
+
* Public entry point for external consumers. The interactive auth
|
|
6
|
+
* orchestration (`ensureAuthenticated`, the setup wizard) needs a
|
|
7
|
+
* host's UI and is not here; an adapter builds that from the
|
|
8
|
+
* pieces `./auth` exports.
|
|
9
|
+
*/
|
|
10
|
+
export * from "./api/index.js";
|
|
11
|
+
export * from "./auth/index.js";
|
|
12
|
+
export { formatSlackBlock } from "./block-message.js";
|
|
13
|
+
export { extractCellText, extractTables, mrkdwnToBlocks, mrkdwnToCell, parseMrkdwnToElements, renderRichTextCell, tableToBlock, } from "./blocks.js";
|
|
14
|
+
export { type SlackGateDecision, slackGateDecision, } from "./content-gate.js";
|
|
15
|
+
export { detectSlackViolations, type SlackViolation } from "./detect.js";
|
|
16
|
+
export * from "./renderers/index.js";
|
|
17
|
+
export * from "./resolvers/index.js";
|
|
18
|
+
export type { Conversation, ConversationKind, MessageTarget, OAuthApp, SlackAttachment, SlackChannel, SlackColumnSetting, SlackFile, SlackMessage, SlackReaction, SlackTable, SlackUser, StoredToken, } from "./types.js";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack library: API client, credential state, renderers,
|
|
3
|
+
* resolvers and shared types.
|
|
4
|
+
*
|
|
5
|
+
* Public entry point for external consumers. The interactive auth
|
|
6
|
+
* orchestration (`ensureAuthenticated`, the setup wizard) needs a
|
|
7
|
+
* host's UI and is not here; an adapter builds that from the
|
|
8
|
+
* pieces `./auth` exports.
|
|
9
|
+
*/
|
|
10
|
+
export * from "./api/index.js";
|
|
11
|
+
export * from "./auth/index.js";
|
|
12
|
+
export { formatSlackBlock } from "./block-message.js";
|
|
13
|
+
export { extractCellText, extractTables, mrkdwnToBlocks, mrkdwnToCell, parseMrkdwnToElements, renderRichTextCell, tableToBlock, } from "./blocks.js";
|
|
14
|
+
export { slackGateDecision, } from "./content-gate.js";
|
|
15
|
+
export { detectSlackViolations } from "./detect.js";
|
|
16
|
+
export * from "./renderers/index.js";
|
|
17
|
+
export * from "./resolvers/index.js";
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where Slack credentials and cached lookups live on disk.
|
|
3
|
+
*
|
|
4
|
+
* Adapter-neutral on purpose, the same reasoning as memory's and
|
|
5
|
+
* web's own paths: this module is shared library code any adapter
|
|
6
|
+
* can depend on, so it must not bake in one adapter's brand. A
|
|
7
|
+
* Claude Code process storing its own Slack token at a path named
|
|
8
|
+
* after pi would be as wrong as the reverse.
|
|
9
|
+
*
|
|
10
|
+
* This is a clean break from pi's own former path
|
|
11
|
+
* (`~/.pi/agent/slack.json`, `~/.pi/agent/slack/`), not a
|
|
12
|
+
* migrated one: unlike a browser comparison baseline or a quest
|
|
13
|
+
* worktree, a stored OAuth token is cheap to lose and easy to
|
|
14
|
+
* replace, so there is no injectable override here for an adapter
|
|
15
|
+
* to point at its old location. Re-running the setup flow once is
|
|
16
|
+
* the whole cost.
|
|
17
|
+
*/
|
|
18
|
+
/** Where the OAuth app and token credentials are stored. */
|
|
19
|
+
export declare function credentialsPath(): string;
|
|
20
|
+
/**
|
|
21
|
+
* Where resolved user and channel names are cached.
|
|
22
|
+
*
|
|
23
|
+
* Cache rather than config: every entry here is a name Slack's API
|
|
24
|
+
* already answered once and is cheap to ask again, never something
|
|
25
|
+
* a person edits or that losing would cost them anything but a
|
|
26
|
+
* refetch.
|
|
27
|
+
*/
|
|
28
|
+
export declare function cacheDir(): string;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where Slack credentials and cached lookups live on disk.
|
|
3
|
+
*
|
|
4
|
+
* Adapter-neutral on purpose, the same reasoning as memory's and
|
|
5
|
+
* web's own paths: this module is shared library code any adapter
|
|
6
|
+
* can depend on, so it must not bake in one adapter's brand. A
|
|
7
|
+
* Claude Code process storing its own Slack token at a path named
|
|
8
|
+
* after pi would be as wrong as the reverse.
|
|
9
|
+
*
|
|
10
|
+
* This is a clean break from pi's own former path
|
|
11
|
+
* (`~/.pi/agent/slack.json`, `~/.pi/agent/slack/`), not a
|
|
12
|
+
* migrated one: unlike a browser comparison baseline or a quest
|
|
13
|
+
* worktree, a stored OAuth token is cheap to lose and easy to
|
|
14
|
+
* replace, so there is no injectable override here for an adapter
|
|
15
|
+
* to point at its old location. Re-running the setup flow once is
|
|
16
|
+
* the whole cost.
|
|
17
|
+
*/
|
|
18
|
+
import { homedir } from "node:os";
|
|
19
|
+
import { join } from "node:path";
|
|
20
|
+
/** Honours XDG_CONFIG_HOME; falls back to ~/.config per the XDG spec. */
|
|
21
|
+
function xdgConfigRoot() {
|
|
22
|
+
const override = process.env.XDG_CONFIG_HOME;
|
|
23
|
+
return override && override.length > 0
|
|
24
|
+
? override
|
|
25
|
+
: join(homedir(), ".config");
|
|
26
|
+
}
|
|
27
|
+
/** Honours XDG_CACHE_HOME; falls back to ~/.cache per the XDG spec. */
|
|
28
|
+
function xdgCacheRoot() {
|
|
29
|
+
const override = process.env.XDG_CACHE_HOME;
|
|
30
|
+
return override && override.length > 0 ? override : join(homedir(), ".cache");
|
|
31
|
+
}
|
|
32
|
+
/** Where the OAuth app and token credentials are stored. */
|
|
33
|
+
export function credentialsPath() {
|
|
34
|
+
return join(xdgConfigRoot(), "agentic-harness", "slack", "credentials.json");
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Where resolved user and channel names are cached.
|
|
38
|
+
*
|
|
39
|
+
* Cache rather than config: every entry here is a name Slack's API
|
|
40
|
+
* already answered once and is cheap to ask again, never something
|
|
41
|
+
* a person edits or that losing would cost them anything but a
|
|
42
|
+
* refetch.
|
|
43
|
+
*/
|
|
44
|
+
export function cacheDir() {
|
|
45
|
+
return join(xdgCacheRoot(), "agentic-harness", "slack");
|
|
46
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format channel info as readable text.
|
|
3
|
+
*/
|
|
4
|
+
/** Render channel info as a readable summary. */
|
|
5
|
+
export function renderChannel(ch) {
|
|
6
|
+
const lines = [];
|
|
7
|
+
const flags = [];
|
|
8
|
+
if (ch.isPrivate)
|
|
9
|
+
flags.push("private");
|
|
10
|
+
if (ch.isArchived)
|
|
11
|
+
flags.push("archived");
|
|
12
|
+
const suffix = flags.length > 0 ? ` (${flags.join(", ")})` : "";
|
|
13
|
+
lines.push(`**#${ch.name}**${suffix}`);
|
|
14
|
+
if (ch.topic)
|
|
15
|
+
lines.push(`Topic: ${ch.topic}`);
|
|
16
|
+
if (ch.purpose)
|
|
17
|
+
lines.push(`Purpose: ${ch.purpose}`);
|
|
18
|
+
if (ch.memberCount !== undefined) {
|
|
19
|
+
lines.push(`Members: ${ch.memberCount}`);
|
|
20
|
+
}
|
|
21
|
+
if (ch.created) {
|
|
22
|
+
const date = new Date(ch.created * 1000);
|
|
23
|
+
lines.push(`Created: ${date.toLocaleDateString()}`);
|
|
24
|
+
}
|
|
25
|
+
lines.push(`ID: ${ch.id}`);
|
|
26
|
+
return lines.join("\n");
|
|
27
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack content renderers: markdown formatting for
|
|
3
|
+
* messages, channels, users, reactions and search results.
|
|
4
|
+
*/
|
|
5
|
+
export { renderChannel } from "./channel.js";
|
|
6
|
+
export { formatSlackText, renderMessage, renderMessageList, renderThread, } from "./message.js";
|
|
7
|
+
export { renderMessageReactions, renderReactedMessages, } from "./reactions.js";
|
|
8
|
+
export { renderFileList } from "./search.js";
|
|
9
|
+
export { renderUser } from "./user.js";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack content renderers: markdown formatting for
|
|
3
|
+
* messages, channels, users, reactions and search results.
|
|
4
|
+
*/
|
|
5
|
+
export { renderChannel } from "./channel.js";
|
|
6
|
+
export { formatSlackText, renderMessage, renderMessageList, renderThread, } from "./message.js";
|
|
7
|
+
export { renderMessageReactions, renderReactedMessages, } from "./reactions.js";
|
|
8
|
+
export { renderFileList } from "./search.js";
|
|
9
|
+
export { renderUser } from "./user.js";
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format Slack messages and threads as readable text.
|
|
3
|
+
*
|
|
4
|
+
* Converts Slack's mrkdwn format to markdown-like output.
|
|
5
|
+
* User IDs (<@U123>) are resolved from the local cache
|
|
6
|
+
* when possible.
|
|
7
|
+
*/
|
|
8
|
+
import type { SlackMessage } from "../types.js";
|
|
9
|
+
/**
|
|
10
|
+
* Convert Slack mrkdwn to readable text.
|
|
11
|
+
*
|
|
12
|
+
* Handles user mentions, channel links, URL links, and
|
|
13
|
+
* basic formatting differences between Slack and markdown.
|
|
14
|
+
*/
|
|
15
|
+
export declare function formatSlackText(text: string): string;
|
|
16
|
+
/** Format a single message as a readable block. */
|
|
17
|
+
export declare function renderMessage(msg: SlackMessage): string;
|
|
18
|
+
/** Format a list of messages (search results or channel history). */
|
|
19
|
+
export declare function renderMessageList(messages: SlackMessage[], total?: number, query?: string): string;
|
|
20
|
+
/** Format a thread as a readable conversation. */
|
|
21
|
+
export declare function renderThread(messages: SlackMessage[]): string;
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format Slack messages and threads as readable text.
|
|
3
|
+
*
|
|
4
|
+
* Converts Slack's mrkdwn format to markdown-like output.
|
|
5
|
+
* User IDs (<@U123>) are resolved from the local cache
|
|
6
|
+
* when possible.
|
|
7
|
+
*/
|
|
8
|
+
import { count } from "../../ui/count.js";
|
|
9
|
+
import { cacheChannelName } from "../resolvers/conversation.js";
|
|
10
|
+
import { cacheUser, displayNameForId } from "../resolvers/user.js";
|
|
11
|
+
/**
|
|
12
|
+
* Convert Slack mrkdwn to readable text.
|
|
13
|
+
*
|
|
14
|
+
* Handles user mentions, channel links, URL links, and
|
|
15
|
+
* basic formatting differences between Slack and markdown.
|
|
16
|
+
*/
|
|
17
|
+
export function formatSlackText(text) {
|
|
18
|
+
return (text
|
|
19
|
+
// User mentions with label: <@U123|display.name> → @display.name
|
|
20
|
+
// Opportunistically cache the name → ID mapping for later unlabelled mentions.
|
|
21
|
+
.replace(/<@([UW][A-Z0-9]+)\|([^>]+)>/g, (_match, id, name) => {
|
|
22
|
+
cacheUser(name, id);
|
|
23
|
+
return `@${name}`;
|
|
24
|
+
})
|
|
25
|
+
// User mentions without label: <@U123> → @username or @U123
|
|
26
|
+
.replace(/<@([UW][A-Z0-9]+)>/g, (_match, id) => {
|
|
27
|
+
return `@${displayNameForId(id)}`;
|
|
28
|
+
})
|
|
29
|
+
// Broadcast mentions: <!here>, <!channel>, <!everyone> → @here etc.
|
|
30
|
+
.replace(/<!(here|channel|everyone)>/g, "@$1")
|
|
31
|
+
// Channel links with label: <#C123|channel-name> → #channel-name
|
|
32
|
+
// Opportunistically cache the name → ID mapping.
|
|
33
|
+
.replace(/<#([A-Z0-9]+)\|([^>]+)>/g, (_match, id, name) => {
|
|
34
|
+
cacheChannelName(name, id);
|
|
35
|
+
return `#${name}`;
|
|
36
|
+
})
|
|
37
|
+
// Channel links without label: <#C123> → #channel-name (via cache)
|
|
38
|
+
.replace(/<#([A-Z0-9]+)>/g, (_match, id) => {
|
|
39
|
+
return `#${displayNameForId(id)}`;
|
|
40
|
+
})
|
|
41
|
+
// URL links with label: <url|text> → [text](url)
|
|
42
|
+
.replace(/<(https?:\/\/[^|>]+)\|([^>]+)>/g, "[$2]($1)")
|
|
43
|
+
// URL links without label: <url> → url
|
|
44
|
+
.replace(/<(https?:\/\/[^>]+)>/g, "$1")
|
|
45
|
+
// Mailto links: <mailto:a@b.com|a@b.com> → a@b.com
|
|
46
|
+
.replace(/<mailto:([^|>]+)\|([^>]+)>/g, "$2")
|
|
47
|
+
.replace(/<mailto:([^>]+)>/g, "$1")
|
|
48
|
+
// Slack bold *text* → **text** (markdown bold)
|
|
49
|
+
.replace(/(?<!\*)\*([^*]+)\*(?!\*)/g, "**$1**"));
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Render a SlackTable as a pipe-delimited markdown table.
|
|
53
|
+
*
|
|
54
|
+
* Pads cells to column widths for readability.
|
|
55
|
+
*/
|
|
56
|
+
function renderTable(table) {
|
|
57
|
+
// Calculate column widths.
|
|
58
|
+
const widths = table.columns.map((col, i) => Math.max(col.length, ...table.rows.map((row) => (row[i] ?? "").length)));
|
|
59
|
+
// Header row.
|
|
60
|
+
const header = table.columns
|
|
61
|
+
.map((col, i) => col.padEnd(widths[i]))
|
|
62
|
+
.join(" | ");
|
|
63
|
+
// Separator row.
|
|
64
|
+
const separator = widths.map((w) => "-".repeat(w)).join(" | ");
|
|
65
|
+
// Data rows.
|
|
66
|
+
const rows = table.rows.map((row) => row.map((cell, i) => (cell ?? "").padEnd(widths[i])).join(" | "));
|
|
67
|
+
return [
|
|
68
|
+
`| ${header} |`,
|
|
69
|
+
`| ${separator} |`,
|
|
70
|
+
...rows.map((r) => `| ${r} |`),
|
|
71
|
+
].join("\n");
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Render a message's attachments, files and reactions as lines.
|
|
75
|
+
*
|
|
76
|
+
* Shared by renderMessage (no prefix) and renderThread
|
|
77
|
+
* (indented prefix). Each line is prefixed with the given
|
|
78
|
+
* string so thread rendering can maintain its visual tree.
|
|
79
|
+
*/
|
|
80
|
+
function renderMessageExtras(msg, prefix) {
|
|
81
|
+
const lines = [];
|
|
82
|
+
if (msg.attachments?.length) {
|
|
83
|
+
for (const att of msg.attachments) {
|
|
84
|
+
const title = att.title || att.fallback;
|
|
85
|
+
const url = att.fromUrl || att.imageUrl;
|
|
86
|
+
if (title && url) {
|
|
87
|
+
lines.push(`${prefix}📎 [${title}](${url})`);
|
|
88
|
+
}
|
|
89
|
+
else if (title) {
|
|
90
|
+
lines.push(`${prefix}📎 ${title}`);
|
|
91
|
+
}
|
|
92
|
+
else if (url) {
|
|
93
|
+
lines.push(`${prefix}📎 ${url}`);
|
|
94
|
+
}
|
|
95
|
+
if (att.text) {
|
|
96
|
+
for (const line of formatSlackText(att.text).split("\n")) {
|
|
97
|
+
lines.push(`${prefix}${line}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (msg.files?.length) {
|
|
103
|
+
for (const f of msg.files) {
|
|
104
|
+
const type = f.mimetype ? ` [${f.mimetype}]` : "";
|
|
105
|
+
if (f.url) {
|
|
106
|
+
lines.push(`${prefix}📄 [${f.name}](${f.url})${type}`);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
lines.push(`${prefix}📄 ${f.name}${type}`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (msg.reactions?.length) {
|
|
114
|
+
const rxns = msg.reactions.map((r) => `:${r.name}: ${r.count}`).join(" ");
|
|
115
|
+
lines.push(`${prefix}${rxns}`);
|
|
116
|
+
}
|
|
117
|
+
return lines;
|
|
118
|
+
}
|
|
119
|
+
/** Format a single message as a readable block. */
|
|
120
|
+
export function renderMessage(msg) {
|
|
121
|
+
const parts = [];
|
|
122
|
+
const user = msg.user ? `@${displayNameForId(msg.user)}` : "unknown";
|
|
123
|
+
const ts = formatTimestamp(msg.ts);
|
|
124
|
+
const where = msg.conversation?.displayName
|
|
125
|
+
? ` (${msg.conversation.displayName})`
|
|
126
|
+
: "";
|
|
127
|
+
const replyTag = msg.replyCount
|
|
128
|
+
? ` [${msg.replyCount} ${msg.replyCount === 1 ? "reply" : "replies"}]`
|
|
129
|
+
: "";
|
|
130
|
+
parts.push(`**${user}** ${ts} (ts:${msg.ts})${where}${replyTag}`);
|
|
131
|
+
if (msg.text) {
|
|
132
|
+
parts.push(formatSlackText(msg.text));
|
|
133
|
+
}
|
|
134
|
+
if (msg.tables?.length) {
|
|
135
|
+
for (const table of msg.tables) {
|
|
136
|
+
parts.push(renderTable(table));
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
parts.push(...renderMessageExtras(msg, ""));
|
|
140
|
+
if (msg.permalink) {
|
|
141
|
+
parts.push(`[link](${msg.permalink})`);
|
|
142
|
+
}
|
|
143
|
+
return parts.join("\n");
|
|
144
|
+
}
|
|
145
|
+
/** Format a list of messages (search results or channel history). */
|
|
146
|
+
export function renderMessageList(messages, total, query) {
|
|
147
|
+
if (messages.length === 0) {
|
|
148
|
+
return "No messages found.";
|
|
149
|
+
}
|
|
150
|
+
const lines = [];
|
|
151
|
+
if (query) {
|
|
152
|
+
lines.push(`Query: ${query}`);
|
|
153
|
+
}
|
|
154
|
+
if (total !== undefined) {
|
|
155
|
+
const truncated = total > messages.length;
|
|
156
|
+
const showing = truncated
|
|
157
|
+
? `, showing ${messages.length} (limit reached, so pass a higher limit or 0 for all)`
|
|
158
|
+
: `, showing ${messages.length}`;
|
|
159
|
+
lines.push(`Found ${count(total, "message")}${showing}:\n`);
|
|
160
|
+
}
|
|
161
|
+
for (const msg of messages) {
|
|
162
|
+
lines.push(renderMessage(msg));
|
|
163
|
+
lines.push(""); // Blank line separator
|
|
164
|
+
}
|
|
165
|
+
return lines.join("\n").trimEnd();
|
|
166
|
+
}
|
|
167
|
+
/** Format a thread as a readable conversation. */
|
|
168
|
+
export function renderThread(messages) {
|
|
169
|
+
if (messages.length === 0) {
|
|
170
|
+
return "Empty thread.";
|
|
171
|
+
}
|
|
172
|
+
const lines = [];
|
|
173
|
+
lines.push(`Thread with ${count(messages.length, "message")}:\n`);
|
|
174
|
+
for (let i = 0; i < messages.length; i++) {
|
|
175
|
+
const msg = messages[i];
|
|
176
|
+
const prefix = i === 0 ? "┌" : i === messages.length - 1 ? "└" : "├";
|
|
177
|
+
const user = msg.user ? `@${displayNameForId(msg.user)}` : "unknown";
|
|
178
|
+
const ts = formatTimestamp(msg.ts);
|
|
179
|
+
lines.push(`${prefix} **${user}** ${ts} (ts:${msg.ts})`);
|
|
180
|
+
const indent = i === messages.length - 1 ? " " : "│ ";
|
|
181
|
+
if (msg.text) {
|
|
182
|
+
for (const line of formatSlackText(msg.text).split("\n")) {
|
|
183
|
+
lines.push(`${indent}${line}`);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (msg.tables?.length) {
|
|
187
|
+
for (const table of msg.tables) {
|
|
188
|
+
for (const line of renderTable(table).split("\n")) {
|
|
189
|
+
lines.push(`${indent}${line}`);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
lines.push(...renderMessageExtras(msg, indent));
|
|
194
|
+
if (i < messages.length - 1)
|
|
195
|
+
lines.push("│");
|
|
196
|
+
}
|
|
197
|
+
return lines.join("\n");
|
|
198
|
+
}
|
|
199
|
+
/** Format a Slack timestamp as a human-readable date/time. */
|
|
200
|
+
function formatTimestamp(ts) {
|
|
201
|
+
try {
|
|
202
|
+
const epochSeconds = Number.parseFloat(ts);
|
|
203
|
+
const date = new Date(epochSeconds * 1000);
|
|
204
|
+
return date.toLocaleString(undefined, {
|
|
205
|
+
month: "short",
|
|
206
|
+
day: "numeric",
|
|
207
|
+
hour: "numeric",
|
|
208
|
+
minute: "2-digit",
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
return ts;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format reaction data as readable text.
|
|
3
|
+
*/
|
|
4
|
+
import type { MessageReactions, ReactedMessage } from "../api/reactions.js";
|
|
5
|
+
/** Render reactions on a specific message. */
|
|
6
|
+
export declare function renderMessageReactions(data: MessageReactions): string;
|
|
7
|
+
/** Render a list of messages the user reacted to. */
|
|
8
|
+
export declare function renderReactedMessages(messages: ReactedMessage[]): string;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format reaction data as readable text.
|
|
3
|
+
*/
|
|
4
|
+
import { count } from "../../ui/count.js";
|
|
5
|
+
import { displayNameForId } from "../resolvers/user.js";
|
|
6
|
+
import { formatSlackText } from "./message.js";
|
|
7
|
+
/** Render reactions on a specific message. */
|
|
8
|
+
export function renderMessageReactions(data) {
|
|
9
|
+
const lines = [];
|
|
10
|
+
if (data.text) {
|
|
11
|
+
const user = data.user ? `@${displayNameForId(data.user)}` : "unknown";
|
|
12
|
+
lines.push(`**${user}**: ${formatSlackText(data.text)}`);
|
|
13
|
+
lines.push("");
|
|
14
|
+
}
|
|
15
|
+
if (data.reactions.length === 0) {
|
|
16
|
+
lines.push("No reactions.");
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
lines.push("Reactions:");
|
|
20
|
+
for (const r of data.reactions) {
|
|
21
|
+
lines.push(` :${r.name}: × ${r.count}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return lines.join("\n");
|
|
25
|
+
}
|
|
26
|
+
/** Render a list of messages the user reacted to. */
|
|
27
|
+
export function renderReactedMessages(messages) {
|
|
28
|
+
if (messages.length === 0) {
|
|
29
|
+
return "No reactions found.";
|
|
30
|
+
}
|
|
31
|
+
const lines = [];
|
|
32
|
+
lines.push(`${count(messages.length, "message")} with reactions:\n`);
|
|
33
|
+
for (const msg of messages) {
|
|
34
|
+
const user = msg.user ? `@${displayNameForId(msg.user)}` : "unknown";
|
|
35
|
+
const text = msg.text
|
|
36
|
+
? formatSlackText(msg.text).slice(0, 80)
|
|
37
|
+
: "(no text)";
|
|
38
|
+
const rxns = msg.reactions.map((r) => `:${r.name}: ${r.count}`).join(" ");
|
|
39
|
+
lines.push(`- **${user}**: ${text}`);
|
|
40
|
+
lines.push(` ${rxns}`);
|
|
41
|
+
}
|
|
42
|
+
return lines.join("\n");
|
|
43
|
+
}
|