ashlr-plugin 1.36.4
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/.agents/plugins/marketplace.json +20 -0
- package/.claude-plugin/marketplace.json +39 -0
- package/.claude-plugin/plugin.json +36 -0
- package/.codex/agents/README.md +9 -0
- package/.codex/agents/ashlr-explorer.md +36 -0
- package/.codex/agents/ashlr-worker.md +38 -0
- package/.codex-plugin/plugin.json +45 -0
- package/.mcp.json +14 -0
- package/LICENSE +21 -0
- package/README.md +311 -0
- package/agents/ashlr-code.md +69 -0
- package/agents/ashlr-explore.md +44 -0
- package/agents/ashlr-plan.md +54 -0
- package/bench/fixtures/notebook-large.ipynb +660 -0
- package/bench/fixtures/notebook-small.ipynb +39 -0
- package/bench/fixtures/tasklist-closed.json +62 -0
- package/bench/fixtures/tasklist-large-mixed.json +27 -0
- package/bench/fixtures/tasklist-sprint-open.json +79 -0
- package/bench/fixtures/websearch-bun-runtime.json +32 -0
- package/bench/fixtures/websearch-react-hooks-patterns.json +32 -0
- package/bench/fixtures/websearch-typescript-generics.json +38 -0
- package/bench/refs/node-sdk/.refrev +1 -0
- package/bench/refs/node-sdk/README.md +17 -0
- package/bench/refs/node-sdk/src/agent/agent.ts +163 -0
- package/bench/refs/node-sdk/src/agent/create-agent-ui-stream.ts +83 -0
- package/bench/refs/node-sdk/src/agent/tool-loop-agent.ts +238 -0
- package/bench/refs/node-sdk/src/embed/embed-many.ts +409 -0
- package/bench/refs/node-sdk/src/embed/embed-result.ts +50 -0
- package/bench/refs/node-sdk/src/embed/embed.ts +257 -0
- package/bench/refs/node-sdk/src/error/invalid-argument-error.ts +34 -0
- package/bench/refs/node-sdk/src/error/invalid-tool-input-error.ts +33 -0
- package/bench/refs/node-sdk/src/error/no-object-generated-error.ts +70 -0
- package/bench/refs/node-sdk/src/generate-image/generate-image-result.ts +42 -0
- package/bench/refs/node-sdk/src/generate-image/generate-image.ts +362 -0
- package/bench/refs/node-sdk/src/generate-object/generate-object-result.ts +67 -0
- package/bench/refs/node-sdk/src/generate-object/generate-object.ts +501 -0
- package/bench/refs/node-sdk/src/generate-object/inject-json-instruction.ts +30 -0
- package/bench/refs/node-sdk/src/generate-object/output-strategy.ts +415 -0
- package/bench/refs/node-sdk/src/generate-object/repair-text.ts +12 -0
- package/bench/refs/node-sdk/src/generate-object/stream-object.ts +960 -0
- package/bench/refs/node-sdk/src/generate-speech/generate-speech.ts +191 -0
- package/bench/refs/node-sdk/src/generate-text/generate-text.ts +1484 -0
- package/bench/refs/node-sdk/src/generate-text/stream-text.ts +2708 -0
- package/bench/refs/node-sdk/src/generate-text/tool-call.ts +59 -0
- package/bench/refs/node-sdk/src/generate-text/tool-result.ts +36 -0
- package/bench/refs/node-sdk/src/telemetry/create-telemetry-dispatcher.ts +146 -0
- package/bench/refs/node-sdk/src/telemetry/telemetry-registry.ts +15 -0
- package/bench/refs/node-sdk/src/telemetry/telemetry.ts +223 -0
- package/bench/refs/node-sdk/src/util/async-iterable-stream.ts +94 -0
- package/bench/refs/node-sdk/src/util/consume-stream.ts +31 -0
- package/bench/refs/node-sdk/src/util/create-stitchable-stream.ts +112 -0
- package/bench/refs/node-sdk/src/util/download/download.ts +74 -0
- package/bench/refs/node-sdk/src/util/error-handler.ts +1 -0
- package/bench/refs/node-sdk/src/util/fix-json.ts +401 -0
- package/bench/refs/node-sdk/src/util/merge-objects.ts +79 -0
- package/bench/refs/python-lib/.refrev +1 -0
- package/bench/refs/python-lib/README.md +18 -0
- package/bench/refs/python-lib/pandas/core/_numba/executor.py +249 -0
- package/bench/refs/python-lib/pandas/core/_numba/extensions.py +586 -0
- package/bench/refs/python-lib/pandas/core/_numba/kernels/mean_.py +198 -0
- package/bench/refs/python-lib/pandas/core/_numba/kernels/min_max_.py +178 -0
- package/bench/refs/python-lib/pandas/core/_numba/kernels/sum_.py +255 -0
- package/bench/refs/python-lib/pandas/core/_numba/kernels/var_.py +251 -0
- package/bench/refs/python-lib/pandas/core/accessor.py +520 -0
- package/bench/refs/python-lib/pandas/core/api.py +138 -0
- package/bench/refs/python-lib/pandas/core/array_algos/masked_accumulations.py +97 -0
- package/bench/refs/python-lib/pandas/core/array_algos/masked_reductions.py +252 -0
- package/bench/refs/python-lib/pandas/core/array_algos/putmask.py +150 -0
- package/bench/refs/python-lib/pandas/core/array_algos/quantile.py +232 -0
- package/bench/refs/python-lib/pandas/core/array_algos/replace.py +159 -0
- package/bench/refs/python-lib/pandas/core/array_algos/take.py +609 -0
- package/bench/refs/python-lib/pandas/core/arraylike.py +534 -0
- package/bench/refs/python-lib/pandas/core/arrays/_arrow_string_mixins.py +434 -0
- package/bench/refs/python-lib/pandas/core/arrays/_mixins.py +630 -0
- package/bench/refs/python-lib/pandas/core/arrays/_ranges.py +276 -0
- package/bench/refs/python-lib/pandas/core/arrays/_utils.py +77 -0
- package/bench/refs/python-lib/pandas/core/arrays/arrow/accessors.py +521 -0
- package/bench/refs/python-lib/pandas/core/arrays/arrow/extension_types.py +174 -0
- package/bench/refs/python-lib/pandas/core/arrays/boolean.py +454 -0
- package/bench/refs/python-lib/pandas/core/arrays/floating.py +192 -0
- package/bench/refs/python-lib/pandas/core/arrays/integer.py +296 -0
- package/bench/refs/python-lib/pandas/core/arrays/masked.py +2140 -0
- package/bench/refs/python-lib/pandas/core/arrays/numeric.py +305 -0
- package/bench/refs/python-lib/pandas/core/arrays/numpy_.py +701 -0
- package/bench/refs/python-lib/pandas/core/arrays/period.py +1586 -0
- package/bench/refs/python-lib/pandas/core/arrays/sparse/accessor.py +505 -0
- package/bench/refs/python-lib/pandas/core/arrays/sparse/scipy_sparse.py +208 -0
- package/bench/refs/rust-project/.refrev +1 -0
- package/bench/refs/rust-project/README.md +17 -0
- package/bench/refs/rust-project/tokio/src/doc/os.rs +68 -0
- package/bench/refs/rust-project/tokio/src/fs/dir_builder.rs +129 -0
- package/bench/refs/rust-project/tokio/src/fs/file.rs +1113 -0
- package/bench/refs/rust-project/tokio/src/fs/mocks.rs +176 -0
- package/bench/refs/rust-project/tokio/src/fs/mod.rs +324 -0
- package/bench/refs/rust-project/tokio/src/fs/open_options.rs +856 -0
- package/bench/refs/rust-project/tokio/src/fs/read.rs +80 -0
- package/bench/refs/rust-project/tokio/src/fs/read_dir.rs +357 -0
- package/bench/refs/rust-project/tokio/src/fs/write.rs +99 -0
- package/bench/refs/rust-project/tokio/src/future/maybe_done.rs +123 -0
- package/bench/refs/rust-project/tokio/src/future/try_join.rs +82 -0
- package/bench/refs/rust-project/tokio/src/io/async_buf_read.rs +117 -0
- package/bench/refs/rust-project/tokio/src/io/async_read.rs +133 -0
- package/bench/refs/rust-project/tokio/src/io/async_seek.rs +96 -0
- package/bench/refs/rust-project/tokio/src/io/async_write.rs +402 -0
- package/bench/refs/rust-project/tokio/src/io/blocking.rs +339 -0
- package/bench/refs/rust-project/tokio/src/io/interest.rs +345 -0
- package/bench/refs/rust-project/tokio/src/io/join.rs +130 -0
- package/bench/refs/rust-project/tokio/src/io/mod.rs +308 -0
- package/bench/refs/rust-project/tokio/src/io/poll_evented.rs +319 -0
- package/bench/refs/rust-project/tokio/src/io/read_buf.rs +344 -0
- package/bench/refs/rust-project/tokio/src/io/ready.rs +322 -0
- package/bench/refs/rust-project/tokio/src/io/split.rs +166 -0
- package/bench/refs/rust-project/tokio/src/io/stderr.rs +148 -0
- package/bench/refs/rust-project/tokio/src/io/stdin.rs +98 -0
- package/bench/refs/rust-project/tokio/src/io/stdio_common.rs +222 -0
- package/bench/refs/rust-project/tokio/src/io/stdout.rs +197 -0
- package/bench/refs/rust-project/tokio/src/io/util/buf_reader.rs +311 -0
- package/bench/refs/rust-project/tokio/src/io/util/buf_stream.rs +207 -0
- package/bench/refs/rust-project/tokio/src/io/util/buf_writer.rs +310 -0
- package/bench/refs/rust-project/tokio/src/io/util/chain.rs +144 -0
- package/commands/_spawn-patterns.json +32 -0
- package/commands/ashlr-allow.md +21 -0
- package/commands/ashlr-benchmark.md +53 -0
- package/commands/ashlr-brief.md +97 -0
- package/commands/ashlr-budget.md +76 -0
- package/commands/ashlr-compact.md +54 -0
- package/commands/ashlr-dashboard.md +37 -0
- package/commands/ashlr-doctor.md +56 -0
- package/commands/ashlr-eco-mode.md +92 -0
- package/commands/ashlr-genome-init.md +24 -0
- package/commands/ashlr-genome-keygen.md +36 -0
- package/commands/ashlr-genome-loop.md +118 -0
- package/commands/ashlr-genome-push.md +36 -0
- package/commands/ashlr-genome-rewrap.md +48 -0
- package/commands/ashlr-genome-team-init.md +67 -0
- package/commands/ashlr-handoff.md +23 -0
- package/commands/ashlr-help.md +86 -0
- package/commands/ashlr-hook-timings.md +30 -0
- package/commands/ashlr-leaderboard.md +50 -0
- package/commands/ashlr-ollama-setup.md +39 -0
- package/commands/ashlr-orchestrate-status.md +72 -0
- package/commands/ashlr-orchestrate.md +83 -0
- package/commands/ashlr-parallelize.md +63 -0
- package/commands/ashlr-report-crash.md +33 -0
- package/commands/ashlr-resume.md +72 -0
- package/commands/ashlr-savings.md +24 -0
- package/commands/ashlr-settings.md +50 -0
- package/commands/ashlr-spawn.md +61 -0
- package/commands/ashlr-start.md +60 -0
- package/commands/ashlr-status.md +64 -0
- package/commands/ashlr-team-invite.md +47 -0
- package/commands/ashlr-tier.md +122 -0
- package/commands/ashlr-tour.md +60 -0
- package/commands/ashlr-update.md +155 -0
- package/commands/ashlr-upgrade.md +96 -0
- package/commands/goal.md +58 -0
- package/commands/loop.md +40 -0
- package/docs/CNAME +1 -0
- package/docs/PRO_TIER.md +104 -0
- package/docs/README.md +21 -0
- package/docs/architecture.md +415 -0
- package/docs/ashlr-pipe.md +161 -0
- package/docs/assets/logo.svg +19 -0
- package/docs/assets/og.png +0 -0
- package/docs/assets/og.svg +41 -0
- package/docs/benchmarks-v2.json +355 -0
- package/docs/benchmarks.json +102 -0
- package/docs/benchmarks.md +211 -0
- package/docs/billing.md +185 -0
- package/docs/cloud-genome.md +155 -0
- package/docs/competitive-wozcode.md +92 -0
- package/docs/deploy.md +325 -0
- package/docs/email-templates.md +113 -0
- package/docs/embed-tuning.md +103 -0
- package/docs/genome.md +120 -0
- package/docs/github-oauth-onboarding.md +127 -0
- package/docs/hero-video-script.md +129 -0
- package/docs/index.html +2262 -0
- package/docs/install-prompt.md +78 -0
- package/docs/install-windows.md +132 -0
- package/docs/install.ps1 +171 -0
- package/docs/install.sh +146 -0
- package/docs/launch/README.md +114 -0
- package/docs/launch/hn.md +49 -0
- package/docs/launch/reddit.md +45 -0
- package/docs/launch/x.md +65 -0
- package/docs/launch-post.md +112 -0
- package/docs/legal.md +78 -0
- package/docs/llm-providers.md +99 -0
- package/docs/multi-host-mcp.md +217 -0
- package/docs/multi-turn-architecture.md +108 -0
- package/docs/operations/deployment.md +108 -0
- package/docs/operations/error-monitoring.md +70 -0
- package/docs/operations/weekly-digest.md +70 -0
- package/docs/operations.md +494 -0
- package/docs/platform-support.md +133 -0
- package/docs/policy-packs.md +188 -0
- package/docs/press-kit/fact-sheet.md +78 -0
- package/docs/press-kit/founder-bio.md +3 -0
- package/docs/press-kit/logo.svg +33 -0
- package/docs/press-kit/screenshots.md +146 -0
- package/docs/pricing.md +251 -0
- package/docs/pro-backend-architecture.md +523 -0
- package/docs/producthunt.md +52 -0
- package/docs/router-migration.md +110 -0
- package/docs/session-log-schema.md +68 -0
- package/docs/social.md +95 -0
- package/docs/team-genome.md +528 -0
- package/docs/telemetry.md +194 -0
- package/docs/test-isolation.md +100 -0
- package/docs/upgrade.md +159 -0
- package/hooks/_hook-errors.ts +87 -0
- package/hooks/_hook-perf-emit.ts +113 -0
- package/hooks/_hook-timing-ledger.ts +1133 -0
- package/hooks/_nudge-throttle.ts +127 -0
- package/hooks/_recent-blocks.ts +127 -0
- package/hooks/audit-upload.ts +86 -0
- package/hooks/codex-hooks.json +171 -0
- package/hooks/commit-attribution.ts +179 -0
- package/hooks/edit-batching-nudge.ts +154 -0
- package/hooks/genome-scribe-hook.ts +219 -0
- package/hooks/hooks.json +294 -0
- package/hooks/orient-nudge-hook.ts +242 -0
- package/hooks/policy-enforce.ts +214 -0
- package/hooks/post-tool-use-embedding.ts +93 -0
- package/hooks/post-tool-use-genome.sh +37 -0
- package/hooks/post-tool-use-genome.ts +69 -0
- package/hooks/posttooluse-correlate.ts +122 -0
- package/hooks/posttooluse-dedupe-output.ts +241 -0
- package/hooks/posttooluse-genome-refresh.ts +223 -0
- package/hooks/posttooluse-native-nudge.ts +205 -0
- package/hooks/posttooluse-stale-result.ts +277 -0
- package/hooks/pretooluse-bash.ts +63 -0
- package/hooks/pretooluse-budget-guard.ts +318 -0
- package/hooks/pretooluse-common.ts +985 -0
- package/hooks/pretooluse-eco-router.ts +196 -0
- package/hooks/pretooluse-edit.sh +93 -0
- package/hooks/pretooluse-edit.ts +197 -0
- package/hooks/pretooluse-glob.ts +70 -0
- package/hooks/pretooluse-grep.sh +85 -0
- package/hooks/pretooluse-grep.ts +96 -0
- package/hooks/pretooluse-notebookedit.ts +121 -0
- package/hooks/pretooluse-read.sh +118 -0
- package/hooks/pretooluse-read.ts +118 -0
- package/hooks/pretooluse-task.ts +130 -0
- package/hooks/pretooluse-webfetch.ts +66 -0
- package/hooks/pretooluse-websearch.ts +85 -0
- package/hooks/pretooluse-write.ts +128 -0
- package/hooks/pulse-emit.ts +197 -0
- package/hooks/session-end-consolidate.sh +35 -0
- package/hooks/session-end-consolidate.ts +188 -0
- package/hooks/session-end-stats-gc.ts +80 -0
- package/hooks/session-log-append.sh +94 -0
- package/hooks/session-log-append.ts +116 -0
- package/hooks/session-start.ts +993 -0
- package/hooks/sessionend-hook-health-nudge.ts +451 -0
- package/hooks/sessionend-savings-nudge.ts +318 -0
- package/hooks/sessionend-status-line-nudge.ts +296 -0
- package/hooks/sessionstart-brief.ts +140 -0
- package/hooks/sessionstart-cost-refactor.ts +95 -0
- package/hooks/sessionstart-efficient.ts +110 -0
- package/hooks/sessionstart-genome-author.ts +93 -0
- package/hooks/sessionstart-lean-tools.ts +98 -0
- package/hooks/sessionstart-search.ts +97 -0
- package/hooks/stop-accounting.ts +152 -0
- package/hooks/subagent-stop-rollup.ts +162 -0
- package/hooks/userpromptsubmit-brief-trigger.ts +156 -0
- package/package.json +56 -0
- package/ports/README.md +108 -0
- package/ports/cursor/mcp.json +11 -0
- package/ports/goose/recipe.yaml +26 -0
- package/scripts/ashlr-mcp.ts +40 -0
- package/scripts/auto-update.ts +177 -0
- package/scripts/baseline-scan.ts +831 -0
- package/scripts/bench-orchestrate.ts +377 -0
- package/scripts/benchmark-refs.ts +292 -0
- package/scripts/bootstrap.mjs +100 -0
- package/scripts/brief-eval.ts +234 -0
- package/scripts/bump-version.ts +82 -0
- package/scripts/bun-resolve.d.mts +11 -0
- package/scripts/bun-resolve.mjs +59 -0
- package/scripts/calibrate-grep.ts +467 -0
- package/scripts/capture-grep-workload.ts +260 -0
- package/scripts/check-tier.ts +61 -0
- package/scripts/check-version-sync.ts +97 -0
- package/scripts/cli-orchestrate-status.ts +386 -0
- package/scripts/cli-orchestrate.ts +303 -0
- package/scripts/cli.ts +478 -0
- package/scripts/cloud-smoke-test.ts +313 -0
- package/scripts/coach-report.ts +373 -0
- package/scripts/context-db-migrate.ts +137 -0
- package/scripts/context-status.ts +43 -0
- package/scripts/demo-run.ts +255 -0
- package/scripts/deploy-smoke.sh +140 -0
- package/scripts/doctor.ts +992 -0
- package/scripts/embed-file-worker.ts +104 -0
- package/scripts/embed-tune.ts +308 -0
- package/scripts/errors-report.ts +428 -0
- package/scripts/find-test-leak.ts +69 -0
- package/scripts/generate-badge.ts +357 -0
- package/scripts/genome-auto-consolidate.ts +533 -0
- package/scripts/genome-auto-propose.ts +578 -0
- package/scripts/genome-cloud-pull.ts +363 -0
- package/scripts/genome-cloud-push.ts +382 -0
- package/scripts/genome-cloud-sync.ts +587 -0
- package/scripts/genome-commit-watcher.ts +295 -0
- package/scripts/genome-init.ts +986 -0
- package/scripts/genome-key.ts +233 -0
- package/scripts/genome-keygen.ts +168 -0
- package/scripts/genome-link.ts +59 -0
- package/scripts/genome-refresh-worker.ts +364 -0
- package/scripts/genome-rewrap.ts +90 -0
- package/scripts/genome-synthesizer.ts +679 -0
- package/scripts/genome-team-init.ts +312 -0
- package/scripts/handoff-pack.ts +438 -0
- package/scripts/hook-bootstrap.mjs +75 -0
- package/scripts/hook-timing-reader.ts +371 -0
- package/scripts/hook-timings-report.ts +554 -0
- package/scripts/install-genome-hooks.ts +196 -0
- package/scripts/install-onnx-model.ts +154 -0
- package/scripts/install-permissions.ts +276 -0
- package/scripts/install-status-line.ts +150 -0
- package/scripts/mcp-entrypoint.sh +78 -0
- package/scripts/mcp-entrypoint.ts +130 -0
- package/scripts/mdx-angle-bracket-lint.ts +152 -0
- package/scripts/measure-cold-start.ts +126 -0
- package/scripts/migrate-stats-to-sqlite.ts +86 -0
- package/scripts/ollama-setup.ts +498 -0
- package/scripts/onboarding-wizard.ts +1691 -0
- package/scripts/orchestrate-emit-telemetry.ts +177 -0
- package/scripts/orchestrate-expand.ts +517 -0
- package/scripts/orchestrate-run.ts +744 -0
- package/scripts/print-legend.ts +50 -0
- package/scripts/product-metadata.ts +38 -0
- package/scripts/prune-old-memories.ts +208 -0
- package/scripts/publish.sh +88 -0
- package/scripts/read-calibration.ts +122 -0
- package/scripts/report-crash.ts +226 -0
- package/scripts/run-benchmark.ts +750 -0
- package/scripts/run-root-tests.ts +28 -0
- package/scripts/savings-dashboard.ts +1258 -0
- package/scripts/savings-report-extras.ts +447 -0
- package/scripts/savings-status-line.ts +873 -0
- package/scripts/session-event-emit.ts +266 -0
- package/scripts/session-greet.ts +686 -0
- package/scripts/session-log-report.ts +551 -0
- package/scripts/session-resume.ts +614 -0
- package/scripts/set-hook-mode.ts +83 -0
- package/scripts/smoke-cross-platform.ts +117 -0
- package/scripts/smoke-realtime.ts +257 -0
- package/scripts/smoke-tools.ts +21 -0
- package/scripts/stats-cloud-pull.ts +213 -0
- package/scripts/stats-cloud-sync.ts +261 -0
- package/scripts/telemetry-flush.ts +160 -0
- package/scripts/telemetry-status.ts +266 -0
- package/scripts/timing-budget.ts +35 -0
- package/scripts/ui-animation.ts +120 -0
- package/scripts/ui.ts +431 -0
- package/scripts/upgrade-flow.ts +775 -0
- package/scripts/weekly-digest.ts +394 -0
- package/servers/_accounting.ts +78 -0
- package/servers/_ask-router.ts +84 -0
- package/servers/_ast-chunker.ts +434 -0
- package/servers/_ast-helpers.ts +183 -0
- package/servers/_ast-languages.ts +153 -0
- package/servers/_ast-refactor/_shared.ts +221 -0
- package/servers/_ast-refactor/cross-file-rename.ts +560 -0
- package/servers/_ast-refactor/extract-function.ts +357 -0
- package/servers/_ast-refactor/file-local-rename.ts +172 -0
- package/servers/_ast-refactor.ts +41 -0
- package/servers/_ast-skeleton.ts +107 -0
- package/servers/_bash-summarizers-registry.ts +1096 -0
- package/servers/_crash-dump.ts +210 -0
- package/servers/_cwd-clamp.ts +342 -0
- package/servers/_edit-log.ts +28 -0
- package/servers/_edit-match.ts +236 -0
- package/servers/_edit-validate.ts +196 -0
- package/servers/_embed-calibration.ts +123 -0
- package/servers/_embedding-cache.ts +401 -0
- package/servers/_embedding-model.ts +329 -0
- package/servers/_events.ts +113 -0
- package/servers/_genome-cache.ts +154 -0
- package/servers/_genome-commits.ts +172 -0
- package/servers/_genome-crypto-v2.ts +242 -0
- package/servers/_genome-crypto.ts +259 -0
- package/servers/_genome-discoveries.ts +140 -0
- package/servers/_genome-embed-populator.ts +216 -0
- package/servers/_genome-freshness.ts +134 -0
- package/servers/_genome-issues.ts +171 -0
- package/servers/_genome-live.ts +263 -0
- package/servers/_genome-prs.ts +188 -0
- package/servers/_genome-search.ts +479 -0
- package/servers/_genome-sync.ts +297 -0
- package/servers/_history-tracker.ts +279 -0
- package/servers/_http-helpers.ts +151 -0
- package/servers/_identity-hash.ts +151 -0
- package/servers/_llm-providers/anthropic.ts +132 -0
- package/servers/_llm-providers/cloud.ts +195 -0
- package/servers/_llm-providers/index.ts +350 -0
- package/servers/_llm-providers/local.ts +127 -0
- package/servers/_llm-providers/onnx.ts +393 -0
- package/servers/_llm-providers/types.ts +27 -0
- package/servers/_manifest-v2.ts +447 -0
- package/servers/_mcp-host.ts +93 -0
- package/servers/_nudge-events.ts +451 -0
- package/servers/_orchestrate-executor.ts +316 -0
- package/servers/_prefetch.ts +435 -0
- package/servers/_pricing.ts +256 -0
- package/servers/_pro.ts +381 -0
- package/servers/_read-cache.ts +44 -0
- package/servers/_router-handlers.ts +46 -0
- package/servers/_router.ts +55 -0
- package/servers/_run-with-timeout.ts +173 -0
- package/servers/_savings-render.ts +214 -0
- package/servers/_stats-sqlite.ts +640 -0
- package/servers/_stats.ts +1183 -0
- package/servers/_status-line-cells.ts +469 -0
- package/servers/_streaks.ts +162 -0
- package/servers/_summarize.ts +208 -0
- package/servers/_task-graph-render.ts +217 -0
- package/servers/_task-graph.ts +545 -0
- package/servers/_telemetry.ts +719 -0
- package/servers/_test-parsers.ts +530 -0
- package/servers/_test-watch.ts +626 -0
- package/servers/_text-helpers.ts +37 -0
- package/servers/_token-measure.ts +160 -0
- package/servers/_tool-base.ts +248 -0
- package/servers/_weekly-digest.ts +391 -0
- package/servers/ask-server-handlers.ts +49 -0
- package/servers/ask-server.ts +174 -0
- package/servers/bash-server-handlers.ts +138 -0
- package/servers/bash-server.ts +1136 -0
- package/servers/bench.ts +186 -0
- package/servers/diff-semantic-server-handlers.ts +39 -0
- package/servers/diff-semantic-server.ts +566 -0
- package/servers/diff-server-handlers.ts +317 -0
- package/servers/diff-server.ts +20 -0
- package/servers/edit-server-handlers.ts +31 -0
- package/servers/edit-server.ts +209 -0
- package/servers/edit-structural-server-handlers.ts +322 -0
- package/servers/efficiency-server-handlers.ts +161 -0
- package/servers/efficiency-server.ts +1135 -0
- package/servers/flush-server-handlers.ts +21 -0
- package/servers/flush-server.ts +19 -0
- package/servers/genome-server-handlers.ts +118 -0
- package/servers/genome-server.ts +397 -0
- package/servers/github-server-handlers.ts +187 -0
- package/servers/github-server.ts +856 -0
- package/servers/glob-server-handlers.ts +233 -0
- package/servers/glob-server.ts +20 -0
- package/servers/grep-server-handlers.ts +61 -0
- package/servers/grep-server.ts +564 -0
- package/servers/http-server-handlers.ts +36 -0
- package/servers/http-server.ts +149 -0
- package/servers/logs-server-handlers.ts +42 -0
- package/servers/logs-server.ts +359 -0
- package/servers/ls-server-handlers.ts +166 -0
- package/servers/ls-server.ts +20 -0
- package/servers/multi-edit-server-handlers.ts +51 -0
- package/servers/multi-edit-server.ts +422 -0
- package/servers/notebook-edit-server-handlers.ts +34 -0
- package/servers/notebook-edit-server.ts +181 -0
- package/servers/orient-server-handlers.ts +52 -0
- package/servers/orient-server.ts +436 -0
- package/servers/pipe-server-handlers.ts +68 -0
- package/servers/pipe-server.ts +300 -0
- package/servers/read-server-handlers.ts +42 -0
- package/servers/read-server.ts +206 -0
- package/servers/rename-file-server-handlers.ts +67 -0
- package/servers/rename-file-server.ts +699 -0
- package/servers/savings-server-handlers.ts +27 -0
- package/servers/savings-server.ts +54 -0
- package/servers/search-replace-regex-server-handlers.ts +96 -0
- package/servers/search-replace-regex-server.ts +751 -0
- package/servers/sql-server-handlers.ts +58 -0
- package/servers/sql-server.ts +505 -0
- package/servers/task-server-handlers.ts +358 -0
- package/servers/task-server.ts +24 -0
- package/servers/test-server-handlers.ts +351 -0
- package/servers/test-server.ts +20 -0
- package/servers/tree-server-handlers.ts +503 -0
- package/servers/tree-server.ts +20 -0
- package/servers/webfetch-server-handlers.ts +166 -0
- package/servers/webfetch-server.ts +20 -0
- package/servers/websearch-server-handlers.ts +215 -0
- package/servers/websearch-server.ts +19 -0
- package/servers/write-server-handlers.ts +27 -0
- package/servers/write-server.ts +97 -0
- package/skills/ashlr-brief/SKILL.md +80 -0
- package/skills/ashlr-codex-doctor/SKILL.md +21 -0
- package/skills/ashlr-codex-efficient-tools/SKILL.md +17 -0
- package/skills/ashlr-codex-genome-refresh/SKILL.md +20 -0
- package/skills/ashlr-codex-parallel-explore/SKILL.md +20 -0
- package/skills/ashlr-codex-savings/SKILL.md +17 -0
- package/skills/ashlr-cost-refactor/SKILL.md +50 -0
- package/skills/ashlr-efficient/SKILL.md +64 -0
- package/skills/ashlr-genome-author/SKILL.md +43 -0
- package/skills/ashlr-lean-tools/SKILL.md +43 -0
- package/skills/ashlr-search/SKILL.md +46 -0
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
# Policy Packs
|
|
2
|
+
|
|
3
|
+
Policy packs let a team admin define allow, deny, and require-confirmation rules for tool calls. The server distributes the current pack to every org member; the `policy-enforce` hook applies the rules client-side before any tool runs.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Rule syntax
|
|
8
|
+
|
|
9
|
+
Each rule has three fields:
|
|
10
|
+
|
|
11
|
+
| Field | Type | Description |
|
|
12
|
+
|---------|-------------------------------|--------------------------------------------------|
|
|
13
|
+
| `match` | glob string | Pattern matched against the tool call (see below)|
|
|
14
|
+
| `kind` | `"tool"` / `"path"` / `"shell"` | What the pattern is matched against |
|
|
15
|
+
| `reason`| string (optional) | Human-readable explanation shown when blocked |
|
|
16
|
+
|
|
17
|
+
### Kinds
|
|
18
|
+
|
|
19
|
+
**`tool`** — matches against the tool name.
|
|
20
|
+
|
|
21
|
+
```yaml
|
|
22
|
+
match: "mcp__ashlr-*"
|
|
23
|
+
kind: tool
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Matches any ashlr MCP tool. Since the v1.13 router consolidation the canonical prefix is `mcp__plugin_ashlr_ashlr__ashlr__*` (e.g. `mcp__plugin_ashlr_ashlr__ashlr__edit`). Patterns like `mcp__ashlr-*` still match the legacy form seen in older transcripts; prefer `mcp__plugin_ashlr_*` for new policies.
|
|
27
|
+
|
|
28
|
+
**`path`** — matches against file path arguments (`file_path`, `path`, `file`).
|
|
29
|
+
|
|
30
|
+
```yaml
|
|
31
|
+
match: "/etc/*"
|
|
32
|
+
kind: path
|
|
33
|
+
reason: "System files require manual review"
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Blocks or confirms any tool call whose path argument matches `/etc/*`.
|
|
37
|
+
|
|
38
|
+
**`shell`** — matches against the `command` argument of Bash calls.
|
|
39
|
+
|
|
40
|
+
```yaml
|
|
41
|
+
match: "Bash(rm *)"
|
|
42
|
+
kind: shell
|
|
43
|
+
reason: "Deletions not permitted in CI"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
The `Bash(...)` wrapper is optional syntax sugar; the inner pattern is matched against the raw command string.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Precedence
|
|
51
|
+
|
|
52
|
+
Rules are evaluated in this order — **first match wins per tier**:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
deny > requireConfirm > allow
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
If a call matches a `deny` rule it is blocked regardless of any `allow` rule. If it matches `requireConfirm` (and no `deny` rule), Claude prompts the user before proceeding. `allow` rules have no enforcement effect on their own — they exist as documentation and for future audit filtering.
|
|
59
|
+
|
|
60
|
+
### Example
|
|
61
|
+
|
|
62
|
+
```yaml
|
|
63
|
+
rules:
|
|
64
|
+
deny:
|
|
65
|
+
- match: "Bash(rm *)"
|
|
66
|
+
kind: shell
|
|
67
|
+
reason: "No deletions — use the trash instead"
|
|
68
|
+
- match: "/etc/*"
|
|
69
|
+
kind: path
|
|
70
|
+
reason: "System files are read-only"
|
|
71
|
+
requireConfirm:
|
|
72
|
+
- match: "Write"
|
|
73
|
+
kind: tool
|
|
74
|
+
- match: "/home/*/prod-*"
|
|
75
|
+
kind: path
|
|
76
|
+
allow:
|
|
77
|
+
- match: "mcp__ashlr-*"
|
|
78
|
+
kind: tool
|
|
79
|
+
- match: "Read"
|
|
80
|
+
kind: tool
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
With this policy:
|
|
84
|
+
|
|
85
|
+
- `Bash(rm -rf /tmp)` → **blocked** (deny shell rule)
|
|
86
|
+
- `Edit(/etc/hosts)` → **blocked** (deny path rule)
|
|
87
|
+
- `Write(/home/alice/prod-config.yaml)` → **confirm** (requireConfirm path rule takes effect after deny check passes)
|
|
88
|
+
- `Write(/home/alice/dev-notes.md)` → **confirm** (requireConfirm tool rule)
|
|
89
|
+
- `Read(anything)` → **allowed** (no deny or requireConfirm match)
|
|
90
|
+
- `mcp__plugin_ashlr_ashlr__ashlr__read` → **allowed**
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## YAML upload format
|
|
95
|
+
|
|
96
|
+
POST to `/policy/upload` with `Content-Type: application/json`:
|
|
97
|
+
|
|
98
|
+
```json
|
|
99
|
+
{
|
|
100
|
+
"orgId": "your-org-id",
|
|
101
|
+
"name": "default",
|
|
102
|
+
"rules": {
|
|
103
|
+
"allow": [
|
|
104
|
+
{ "match": "Read", "kind": "tool" },
|
|
105
|
+
{ "match": "mcp__ashlr-*", "kind": "tool" }
|
|
106
|
+
],
|
|
107
|
+
"deny": [
|
|
108
|
+
{ "match": "Bash(rm *)", "kind": "shell", "reason": "No deletions" },
|
|
109
|
+
{ "match": "/etc/*", "kind": "path", "reason": "System files locked" }
|
|
110
|
+
],
|
|
111
|
+
"requireConfirm": [
|
|
112
|
+
{ "match": "Write", "kind": "tool" },
|
|
113
|
+
{ "match": "/home/*/prod-*", "kind": "path" }
|
|
114
|
+
]
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
The server creates a new version number on each upload. The current pointer is updated automatically.
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Versioning and rollback
|
|
124
|
+
|
|
125
|
+
Every upload creates an immutable versioned snapshot. To see recent versions:
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
GET /policy/history
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Response:
|
|
132
|
+
```json
|
|
133
|
+
[
|
|
134
|
+
{ "packId": "...", "name": "default", "version": 3, "author": "alice@co.com", "createdAt": "..." },
|
|
135
|
+
{ "packId": "...", "name": "default", "version": 2, "author": "bob@co.com", "createdAt": "..." },
|
|
136
|
+
{ "packId": "...", "name": "default", "version": 1, "author": "alice@co.com", "createdAt": "..." }
|
|
137
|
+
]
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
To roll back:
|
|
141
|
+
|
|
142
|
+
```json
|
|
143
|
+
POST /policy/rollback
|
|
144
|
+
{
|
|
145
|
+
"packId": "<id of the v1 pack>",
|
|
146
|
+
"toVersion": 1
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
This sets the current pointer to the v1 pack. No data is deleted — all versions remain in history.
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Client-side enforcement
|
|
155
|
+
|
|
156
|
+
The `hooks/policy-enforce.ts` hook fires on every `Edit`, `Write`, `Bash`, `MultiEdit`, and ashlr-edit call (PreToolUse). It:
|
|
157
|
+
|
|
158
|
+
1. Fetches `/policy/current` (cached for 5 minutes in `/tmp`).
|
|
159
|
+
2. Evaluates rules in precedence order.
|
|
160
|
+
3. On a `deny` match: writes `{"type":"block","reason":"..."}` to stdout and exits 2 — the tool is cancelled.
|
|
161
|
+
4. On a `requireConfirm` match: writes `{"permissionDecision":"ask","reason":"..."}` to stdout — Claude prompts the user.
|
|
162
|
+
5. On allow / no match: exits 0 silently.
|
|
163
|
+
|
|
164
|
+
### Kill switch
|
|
165
|
+
|
|
166
|
+
Set `ASHLR_POLICY_ENFORCE=0` to disable enforcement entirely (useful for break-glass situations or local dev).
|
|
167
|
+
|
|
168
|
+
### Requirements
|
|
169
|
+
|
|
170
|
+
- `ASHLR_PRO_TOKEN` must be set.
|
|
171
|
+
- User's org must be on the `team` tier or higher.
|
|
172
|
+
- No policy configured → all tools allowed (fail-open).
|
|
173
|
+
- Network errors → fail-open (tool proceeds, error is not surfaced).
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Glob syntax
|
|
178
|
+
|
|
179
|
+
Patterns use [minimatch](https://github.com/isaacs/minimatch) glob syntax:
|
|
180
|
+
|
|
181
|
+
| Pattern | Matches |
|
|
182
|
+
|-------------------|-------------------------------------------------|
|
|
183
|
+
| `mcp__ashlr-*` | Any tool starting with `mcp__ashlr-` |
|
|
184
|
+
| `Edit` | Exactly the Edit tool |
|
|
185
|
+
| `/etc/*` | Any path directly under `/etc/` |
|
|
186
|
+
| `/etc/**` | Any path anywhere under `/etc/` |
|
|
187
|
+
| `Bash(rm *)` | Any Bash command starting with `rm ` |
|
|
188
|
+
| `**/prod-*` | Any path segment containing `prod-` prefix |
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Fact sheet — ashlr-plugin
|
|
2
|
+
|
|
3
|
+
Quick-reference for journalists and analysts.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
| Field | Value |
|
|
8
|
+
|---|---|
|
|
9
|
+
| **Product name** | ashlr-plugin |
|
|
10
|
+
| **Current version** | 1.36.0 |
|
|
11
|
+
| **Release date** | June 2026 |
|
|
12
|
+
| **Repository** | github.com/ashlrai/ashlr-plugin |
|
|
13
|
+
| **License** | MIT |
|
|
14
|
+
| **Website** | plugin.ashlr.ai |
|
|
15
|
+
| **Category** | Codex plugin / Claude Code plugin / AI coding tool / MCP server |
|
|
16
|
+
| **Primary use case** | Token-efficiency layer for Codex and Claude Code |
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Technical
|
|
21
|
+
|
|
22
|
+
| Field | Value |
|
|
23
|
+
|---|---|
|
|
24
|
+
| **MCP tools** | 40 |
|
|
25
|
+
| **Skills / slash commands** | 34 Claude Code slash commands + Codex workflow skills |
|
|
26
|
+
| **Test count** | 860 pass, 2 skip, 0 fail |
|
|
27
|
+
| **Test files** | 55 |
|
|
28
|
+
| **Codebase (plugin repo)** | 750 files, 149,462 LOC in the latest self-repo benchmark artifact |
|
|
29
|
+
| **Runtime** | Bun >= 1.3 |
|
|
30
|
+
| **Benchmark: overall savings** | −57% cross-language mean token reduction |
|
|
31
|
+
| **Benchmark: read savings** | −82.2% mean |
|
|
32
|
+
| **Benchmark: grep savings** | −81.7% mean |
|
|
33
|
+
| **Benchmark methodology** | scripts/run-benchmark.ts; weekly CI refresh; docs/benchmarks-v2.json |
|
|
34
|
+
| **Compatible hosts** | Codex, Claude Code, Cursor (via MCP), Goose (via recipe), generic MCP hosts |
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Team
|
|
39
|
+
|
|
40
|
+
| Field | Value |
|
|
41
|
+
|---|---|
|
|
42
|
+
| **Team size** | 1 (solo founder) |
|
|
43
|
+
| **Founder** | Mason Wyatt |
|
|
44
|
+
| **Contact** | support@ashlr.ai |
|
|
45
|
+
| **Press contact** | support@ashlr.ai |
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Pricing
|
|
50
|
+
|
|
51
|
+
| Tier | Price | Notes |
|
|
52
|
+
|---|---|---|
|
|
53
|
+
| Free | $0 forever | Full plugin, MIT, no feature gates |
|
|
54
|
+
| Pro | $12/month or $120/year | Cloud genome sync, hosted LLM summarizer, cross-machine stats |
|
|
55
|
+
| Team | $24/user/month or $20/user/month annual (min 3 users) | E2E-encrypted shared team genome (vclock LWW + manual conflict resolution), org dashboard, policy packs, SSO, audit log |
|
|
56
|
+
| Enterprise | Contact sales | On-prem, private inference, dedicated SLA |
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Key claims (all traceable)
|
|
61
|
+
|
|
62
|
+
| Claim | Source |
|
|
63
|
+
|---|---|
|
|
64
|
+
| −57% cross-language token savings | docs/benchmarks.md, multi-repo reference set |
|
|
65
|
+
| −82.2% read savings | docs/benchmarks-v2.json, aggregate.ashlr__read.mean = 0.178 → 1 − 0.178 = 82.2% |
|
|
66
|
+
| −81.7% grep savings | docs/benchmarks-v2.json, aggregate.ashlr__grep.mean = 0.183 → 1 − 0.183 = 81.7% |
|
|
67
|
+
| 860 passing tests | CHANGELOG.md [1.4.0] Tests section |
|
|
68
|
+
| 40 MCP tools | README.md tool table |
|
|
69
|
+
| 34 slash commands + Codex skills | docs/pricing.md + `.codex-plugin/plugin.json` |
|
|
70
|
+
| MIT license | LICENSE file |
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Known limitations
|
|
75
|
+
|
|
76
|
+
- 2 tests skipped: `no-genome grep` environment-leak flake and a benchmark ratio assertion (same root cause). Both pass in isolation; documented in-line.
|
|
77
|
+
- `rg` binary sensitivity: benchmark rg-resolution walks multiple candidate paths but may require `rg` to be a plain system binary in some environments.
|
|
78
|
+
- Small edits (< ~30 chars): `ashlr__edit` diff-summary overhead exceeds naive payload; ratio is 2.5x in the small-edit benchmark bucket.
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
# Founder bio — Mason Wyatt
|
|
2
|
+
|
|
3
|
+
Mason Wyatt is the founder of ashlr and a principal at Evero Consulting. He built ashlr after noticing that Claude Code's native file-reading and search tools were shipping full payloads — entire source files, complete grep output — into model context on every call, driving token bills up on real codebases without a corresponding benefit to output quality. He shipped the plugin from v0.1 to production in a single week, building a reproducible benchmark harness alongside the tools so every claimed savings number is auditable and refreshed weekly by CI. He can be reached at support@ashlr.ai.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 48" fill="none">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="logo-grad" x1="0" y1="0" x2="32" y2="32" gradientUnits="userSpaceOnUse">
|
|
4
|
+
<stop offset="0%" stop-color="#c2410c"/>
|
|
5
|
+
<stop offset="100%" stop-color="#8B2E1A"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
|
|
9
|
+
<!-- Icon mark: ledger square -->
|
|
10
|
+
<rect x="0" y="8" width="32" height="32" rx="6" fill="#1a0f0c"/>
|
|
11
|
+
<rect x="0.75" y="8.75" width="30.5" height="30.5" rx="5.5" fill="none" stroke="url(#logo-grad)" stroke-opacity="0.3" stroke-width="1.5"/>
|
|
12
|
+
<!-- Ledger lines -->
|
|
13
|
+
<line x1="6" y1="18" x2="26" y2="18" stroke="url(#logo-grad)" stroke-opacity="0.4" stroke-width="1"/>
|
|
14
|
+
<line x1="6" y1="24" x2="26" y2="24" stroke="url(#logo-grad)" stroke-opacity="0.55" stroke-width="1"/>
|
|
15
|
+
<line x1="6" y1="30" x2="26" y2="30" stroke="url(#logo-grad)" stroke-opacity="0.7" stroke-width="1"/>
|
|
16
|
+
<!-- Brand square -->
|
|
17
|
+
<rect x="6" y="10" width="7" height="7" fill="url(#logo-grad)"/>
|
|
18
|
+
<!-- Row dots -->
|
|
19
|
+
<circle cx="23" cy="24" r="2" fill="url(#logo-grad)"/>
|
|
20
|
+
<circle cx="23" cy="30" r="2" fill="url(#logo-grad)" opacity="0.65"/>
|
|
21
|
+
|
|
22
|
+
<!-- Wordmark -->
|
|
23
|
+
<!-- Uses a system-font fallback; replace with Fraunces webfont embedding for print use -->
|
|
24
|
+
<text
|
|
25
|
+
x="44"
|
|
26
|
+
y="33"
|
|
27
|
+
font-family="Georgia, 'Times New Roman', serif"
|
|
28
|
+
font-weight="300"
|
|
29
|
+
font-size="28"
|
|
30
|
+
letter-spacing="-0.5"
|
|
31
|
+
fill="#F3EADB"
|
|
32
|
+
>ashlr</text>
|
|
33
|
+
</svg>
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# Screenshots — ashlr v1.4.0 launch
|
|
2
|
+
|
|
3
|
+
Ordered by priority. Capture in order; use the listed commands to reproduce exactly.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Status line — active session
|
|
8
|
+
|
|
9
|
+
**What to show:** The Claude Code terminal footer with the ashlr status line, showing a real session counter, sparkline, and the `↑` activity indicator.
|
|
10
|
+
|
|
11
|
+
**Environment:** Terminal (iTerm2 or similar), dark or light, full-width.
|
|
12
|
+
|
|
13
|
+
**Command to reproduce:**
|
|
14
|
+
```bash
|
|
15
|
+
# Fire a few tool calls first to get a non-zero session counter
|
|
16
|
+
# Then the status line updates automatically within ~550ms
|
|
17
|
+
# Widen terminal to at least 120 columns for full display
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
**Expected visual:**
|
|
21
|
+
```
|
|
22
|
+
ashlr · 7d ▁▂▃▅▇█ · session ↑+48.2K · lifetime +2.1M
|
|
23
|
+
```
|
|
24
|
+
The gradient shimmer should be mid-sweep. The `↑` activity indicator should be lit (orange, fading to the brand dark). Sparkline should show meaningful variation across the 7 bars.
|
|
25
|
+
|
|
26
|
+
**Capture notes:** 1280px wide minimum. Retina / 2x preferred.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 2. /ashlr-savings dashboard
|
|
31
|
+
|
|
32
|
+
**What to show:** The full `/ashlr-savings` ASCII output — per-tool rows, dollar amounts, sparkline, session and lifetime totals.
|
|
33
|
+
|
|
34
|
+
**Environment:** Terminal.
|
|
35
|
+
|
|
36
|
+
**Command to reproduce:**
|
|
37
|
+
```bash
|
|
38
|
+
# Inside Claude Code after a real session with tool calls:
|
|
39
|
+
/ashlr-savings
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Expected visual:**
|
|
43
|
+
```
|
|
44
|
+
Session savings · ashlr-plugin v1.4.0
|
|
45
|
+
────────────────────────────────────────
|
|
46
|
+
ashlr__read 6 calls −42,180 tok $0.13
|
|
47
|
+
ashlr__grep 3 calls −11,040 tok $0.03
|
|
48
|
+
ashlr__edit 2 calls −3,200 tok $0.01
|
|
49
|
+
─────────────────────────────────────────────
|
|
50
|
+
Session total −56,420 tok $0.17
|
|
51
|
+
Lifetime total −284,900 tok $0.86
|
|
52
|
+
7-day sparkline ▁▂▃▃▅▆█
|
|
53
|
+
```
|
|
54
|
+
Numbers should be real (not zero). At least 3 tools with non-zero rows.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## 3. /ashlr-dashboard — watch mode
|
|
59
|
+
|
|
60
|
+
**What to show:** The full ASCII dashboard with bar chart, sparklines, and projected annual line.
|
|
61
|
+
|
|
62
|
+
**Environment:** Terminal, dark preferred for contrast.
|
|
63
|
+
|
|
64
|
+
**Command to reproduce:**
|
|
65
|
+
```bash
|
|
66
|
+
bun run ~/.claude/plugins/cache/ashlr-marketplace/ashlr/1.4.0/scripts/savings-dashboard.ts --watch
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**Expected visual:** Three tiles across the top (session / lifetime / best day), bar chart with at least 3 rows, 7-day and 30-day sparklines, the Fraunces-style projected annual line at the bottom. Colors intact — `--watch` mode live-redraws every 1.5s; capture a mid-redraw frame if possible.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## 4. Before/after comparison — single file
|
|
74
|
+
|
|
75
|
+
**What to show:** Side-by-side of raw vs ashlr output for `server/tests/auth.test.ts`. Demonstrates the 85% token reduction on a real file.
|
|
76
|
+
|
|
77
|
+
**Environment:** Terminal or static image composition.
|
|
78
|
+
|
|
79
|
+
**Numbers (from docs/benchmarks-v2.json):**
|
|
80
|
+
- Raw: 10,846 bytes / 2,709 tokens
|
|
81
|
+
- ashlr: 1,623 bytes / 406 tokens
|
|
82
|
+
- Ratio: 0.150 (85% reduction)
|
|
83
|
+
|
|
84
|
+
**Command to reproduce:**
|
|
85
|
+
```bash
|
|
86
|
+
# Raw (native Read):
|
|
87
|
+
# Read server/tests/auth.test.ts
|
|
88
|
+
# ↑ shows full file, ~10,846 bytes in context
|
|
89
|
+
|
|
90
|
+
# ashlr:
|
|
91
|
+
# ashlr__read { "path": "server/tests/auth.test.ts" }
|
|
92
|
+
# ↑ shows head + elision marker + tail, ~1,623 bytes
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**Expected visual:** Two terminal panels. Left: raw output scrolling to show full length. Right: ashlr output — compact, with the `[... N lines elided ...]` marker visible. Token counts shown as labels below each panel.
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## 5. Benchmarks page — browser
|
|
100
|
+
|
|
101
|
+
**What to show:** `plugin.ashlr.ai/benchmarks` with the −57% cross-language number prominent, per-tool breakdown bars, and the methodology section.
|
|
102
|
+
|
|
103
|
+
**Environment:** Browser, parchment background, 1280x800 viewport.
|
|
104
|
+
|
|
105
|
+
**Command to reproduce:**
|
|
106
|
+
```bash
|
|
107
|
+
# Navigate to: https://plugin.ashlr.ai/benchmarks
|
|
108
|
+
# Or locally: cd site && bun run dev, then open /benchmarks
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Expected visual:** The large −57% number above the fold. Per-tool bars showing read/grep/edit breakdown. The CI badge showing the last benchmark run. Methodology panel visible on scroll. Parchment grain texture intact.
|
|
112
|
+
|
|
113
|
+
**Capture notes:** Full-page screenshot preferred. Above-the-fold crop also useful as a thumbnail.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 6. Compare page — browser
|
|
118
|
+
|
|
119
|
+
**What to show:** `plugin.ashlr.ai/compare` with the four-column comparison table. The ashlr column highlighted in the debit red.
|
|
120
|
+
|
|
121
|
+
**Environment:** Browser, 1440px wide preferred to show all four columns without horizontal scroll.
|
|
122
|
+
|
|
123
|
+
**Command to reproduce:**
|
|
124
|
+
```bash
|
|
125
|
+
# Navigate to: https://plugin.ashlr.ai/compare
|
|
126
|
+
# Or locally: cd site && bun run dev, then open /compare
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**Expected visual:** Table with group headers (Compression / Architecture / Observability / etc.), the ashlr column with a subtle red tint, `+` marks in green for ashlr, `unknown` in muted ink for WOZCODE where data is not published.
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## 7. Landing page hero
|
|
134
|
+
|
|
135
|
+
**What to show:** The `plugin.ashlr.ai` landing page hero — the large display number, the animated SVG terminal mock, and the install command.
|
|
136
|
+
|
|
137
|
+
**Environment:** Browser, 1440px wide.
|
|
138
|
+
|
|
139
|
+
**Command to reproduce:**
|
|
140
|
+
```bash
|
|
141
|
+
# Navigate to: https://plugin.ashlr.ai
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**Expected visual:** The −57% number in Fraunces display weight, the stamp animation in mid-rotate, the terminal mock SVG showing the sparkline and counter. The parchment background with grain. The install command block visible below the fold.
|
|
145
|
+
|
|
146
|
+
**Capture notes:** Catch the hero at the moment the stamp-rotate animation is at ~45 degrees for the most dynamic still.
|