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.
Files changed (499) hide show
  1. package/.agents/plugins/marketplace.json +20 -0
  2. package/.claude-plugin/marketplace.json +39 -0
  3. package/.claude-plugin/plugin.json +36 -0
  4. package/.codex/agents/README.md +9 -0
  5. package/.codex/agents/ashlr-explorer.md +36 -0
  6. package/.codex/agents/ashlr-worker.md +38 -0
  7. package/.codex-plugin/plugin.json +45 -0
  8. package/.mcp.json +14 -0
  9. package/LICENSE +21 -0
  10. package/README.md +311 -0
  11. package/agents/ashlr-code.md +69 -0
  12. package/agents/ashlr-explore.md +44 -0
  13. package/agents/ashlr-plan.md +54 -0
  14. package/bench/fixtures/notebook-large.ipynb +660 -0
  15. package/bench/fixtures/notebook-small.ipynb +39 -0
  16. package/bench/fixtures/tasklist-closed.json +62 -0
  17. package/bench/fixtures/tasklist-large-mixed.json +27 -0
  18. package/bench/fixtures/tasklist-sprint-open.json +79 -0
  19. package/bench/fixtures/websearch-bun-runtime.json +32 -0
  20. package/bench/fixtures/websearch-react-hooks-patterns.json +32 -0
  21. package/bench/fixtures/websearch-typescript-generics.json +38 -0
  22. package/bench/refs/node-sdk/.refrev +1 -0
  23. package/bench/refs/node-sdk/README.md +17 -0
  24. package/bench/refs/node-sdk/src/agent/agent.ts +163 -0
  25. package/bench/refs/node-sdk/src/agent/create-agent-ui-stream.ts +83 -0
  26. package/bench/refs/node-sdk/src/agent/tool-loop-agent.ts +238 -0
  27. package/bench/refs/node-sdk/src/embed/embed-many.ts +409 -0
  28. package/bench/refs/node-sdk/src/embed/embed-result.ts +50 -0
  29. package/bench/refs/node-sdk/src/embed/embed.ts +257 -0
  30. package/bench/refs/node-sdk/src/error/invalid-argument-error.ts +34 -0
  31. package/bench/refs/node-sdk/src/error/invalid-tool-input-error.ts +33 -0
  32. package/bench/refs/node-sdk/src/error/no-object-generated-error.ts +70 -0
  33. package/bench/refs/node-sdk/src/generate-image/generate-image-result.ts +42 -0
  34. package/bench/refs/node-sdk/src/generate-image/generate-image.ts +362 -0
  35. package/bench/refs/node-sdk/src/generate-object/generate-object-result.ts +67 -0
  36. package/bench/refs/node-sdk/src/generate-object/generate-object.ts +501 -0
  37. package/bench/refs/node-sdk/src/generate-object/inject-json-instruction.ts +30 -0
  38. package/bench/refs/node-sdk/src/generate-object/output-strategy.ts +415 -0
  39. package/bench/refs/node-sdk/src/generate-object/repair-text.ts +12 -0
  40. package/bench/refs/node-sdk/src/generate-object/stream-object.ts +960 -0
  41. package/bench/refs/node-sdk/src/generate-speech/generate-speech.ts +191 -0
  42. package/bench/refs/node-sdk/src/generate-text/generate-text.ts +1484 -0
  43. package/bench/refs/node-sdk/src/generate-text/stream-text.ts +2708 -0
  44. package/bench/refs/node-sdk/src/generate-text/tool-call.ts +59 -0
  45. package/bench/refs/node-sdk/src/generate-text/tool-result.ts +36 -0
  46. package/bench/refs/node-sdk/src/telemetry/create-telemetry-dispatcher.ts +146 -0
  47. package/bench/refs/node-sdk/src/telemetry/telemetry-registry.ts +15 -0
  48. package/bench/refs/node-sdk/src/telemetry/telemetry.ts +223 -0
  49. package/bench/refs/node-sdk/src/util/async-iterable-stream.ts +94 -0
  50. package/bench/refs/node-sdk/src/util/consume-stream.ts +31 -0
  51. package/bench/refs/node-sdk/src/util/create-stitchable-stream.ts +112 -0
  52. package/bench/refs/node-sdk/src/util/download/download.ts +74 -0
  53. package/bench/refs/node-sdk/src/util/error-handler.ts +1 -0
  54. package/bench/refs/node-sdk/src/util/fix-json.ts +401 -0
  55. package/bench/refs/node-sdk/src/util/merge-objects.ts +79 -0
  56. package/bench/refs/python-lib/.refrev +1 -0
  57. package/bench/refs/python-lib/README.md +18 -0
  58. package/bench/refs/python-lib/pandas/core/_numba/executor.py +249 -0
  59. package/bench/refs/python-lib/pandas/core/_numba/extensions.py +586 -0
  60. package/bench/refs/python-lib/pandas/core/_numba/kernels/mean_.py +198 -0
  61. package/bench/refs/python-lib/pandas/core/_numba/kernels/min_max_.py +178 -0
  62. package/bench/refs/python-lib/pandas/core/_numba/kernels/sum_.py +255 -0
  63. package/bench/refs/python-lib/pandas/core/_numba/kernels/var_.py +251 -0
  64. package/bench/refs/python-lib/pandas/core/accessor.py +520 -0
  65. package/bench/refs/python-lib/pandas/core/api.py +138 -0
  66. package/bench/refs/python-lib/pandas/core/array_algos/masked_accumulations.py +97 -0
  67. package/bench/refs/python-lib/pandas/core/array_algos/masked_reductions.py +252 -0
  68. package/bench/refs/python-lib/pandas/core/array_algos/putmask.py +150 -0
  69. package/bench/refs/python-lib/pandas/core/array_algos/quantile.py +232 -0
  70. package/bench/refs/python-lib/pandas/core/array_algos/replace.py +159 -0
  71. package/bench/refs/python-lib/pandas/core/array_algos/take.py +609 -0
  72. package/bench/refs/python-lib/pandas/core/arraylike.py +534 -0
  73. package/bench/refs/python-lib/pandas/core/arrays/_arrow_string_mixins.py +434 -0
  74. package/bench/refs/python-lib/pandas/core/arrays/_mixins.py +630 -0
  75. package/bench/refs/python-lib/pandas/core/arrays/_ranges.py +276 -0
  76. package/bench/refs/python-lib/pandas/core/arrays/_utils.py +77 -0
  77. package/bench/refs/python-lib/pandas/core/arrays/arrow/accessors.py +521 -0
  78. package/bench/refs/python-lib/pandas/core/arrays/arrow/extension_types.py +174 -0
  79. package/bench/refs/python-lib/pandas/core/arrays/boolean.py +454 -0
  80. package/bench/refs/python-lib/pandas/core/arrays/floating.py +192 -0
  81. package/bench/refs/python-lib/pandas/core/arrays/integer.py +296 -0
  82. package/bench/refs/python-lib/pandas/core/arrays/masked.py +2140 -0
  83. package/bench/refs/python-lib/pandas/core/arrays/numeric.py +305 -0
  84. package/bench/refs/python-lib/pandas/core/arrays/numpy_.py +701 -0
  85. package/bench/refs/python-lib/pandas/core/arrays/period.py +1586 -0
  86. package/bench/refs/python-lib/pandas/core/arrays/sparse/accessor.py +505 -0
  87. package/bench/refs/python-lib/pandas/core/arrays/sparse/scipy_sparse.py +208 -0
  88. package/bench/refs/rust-project/.refrev +1 -0
  89. package/bench/refs/rust-project/README.md +17 -0
  90. package/bench/refs/rust-project/tokio/src/doc/os.rs +68 -0
  91. package/bench/refs/rust-project/tokio/src/fs/dir_builder.rs +129 -0
  92. package/bench/refs/rust-project/tokio/src/fs/file.rs +1113 -0
  93. package/bench/refs/rust-project/tokio/src/fs/mocks.rs +176 -0
  94. package/bench/refs/rust-project/tokio/src/fs/mod.rs +324 -0
  95. package/bench/refs/rust-project/tokio/src/fs/open_options.rs +856 -0
  96. package/bench/refs/rust-project/tokio/src/fs/read.rs +80 -0
  97. package/bench/refs/rust-project/tokio/src/fs/read_dir.rs +357 -0
  98. package/bench/refs/rust-project/tokio/src/fs/write.rs +99 -0
  99. package/bench/refs/rust-project/tokio/src/future/maybe_done.rs +123 -0
  100. package/bench/refs/rust-project/tokio/src/future/try_join.rs +82 -0
  101. package/bench/refs/rust-project/tokio/src/io/async_buf_read.rs +117 -0
  102. package/bench/refs/rust-project/tokio/src/io/async_read.rs +133 -0
  103. package/bench/refs/rust-project/tokio/src/io/async_seek.rs +96 -0
  104. package/bench/refs/rust-project/tokio/src/io/async_write.rs +402 -0
  105. package/bench/refs/rust-project/tokio/src/io/blocking.rs +339 -0
  106. package/bench/refs/rust-project/tokio/src/io/interest.rs +345 -0
  107. package/bench/refs/rust-project/tokio/src/io/join.rs +130 -0
  108. package/bench/refs/rust-project/tokio/src/io/mod.rs +308 -0
  109. package/bench/refs/rust-project/tokio/src/io/poll_evented.rs +319 -0
  110. package/bench/refs/rust-project/tokio/src/io/read_buf.rs +344 -0
  111. package/bench/refs/rust-project/tokio/src/io/ready.rs +322 -0
  112. package/bench/refs/rust-project/tokio/src/io/split.rs +166 -0
  113. package/bench/refs/rust-project/tokio/src/io/stderr.rs +148 -0
  114. package/bench/refs/rust-project/tokio/src/io/stdin.rs +98 -0
  115. package/bench/refs/rust-project/tokio/src/io/stdio_common.rs +222 -0
  116. package/bench/refs/rust-project/tokio/src/io/stdout.rs +197 -0
  117. package/bench/refs/rust-project/tokio/src/io/util/buf_reader.rs +311 -0
  118. package/bench/refs/rust-project/tokio/src/io/util/buf_stream.rs +207 -0
  119. package/bench/refs/rust-project/tokio/src/io/util/buf_writer.rs +310 -0
  120. package/bench/refs/rust-project/tokio/src/io/util/chain.rs +144 -0
  121. package/commands/_spawn-patterns.json +32 -0
  122. package/commands/ashlr-allow.md +21 -0
  123. package/commands/ashlr-benchmark.md +53 -0
  124. package/commands/ashlr-brief.md +97 -0
  125. package/commands/ashlr-budget.md +76 -0
  126. package/commands/ashlr-compact.md +54 -0
  127. package/commands/ashlr-dashboard.md +37 -0
  128. package/commands/ashlr-doctor.md +56 -0
  129. package/commands/ashlr-eco-mode.md +92 -0
  130. package/commands/ashlr-genome-init.md +24 -0
  131. package/commands/ashlr-genome-keygen.md +36 -0
  132. package/commands/ashlr-genome-loop.md +118 -0
  133. package/commands/ashlr-genome-push.md +36 -0
  134. package/commands/ashlr-genome-rewrap.md +48 -0
  135. package/commands/ashlr-genome-team-init.md +67 -0
  136. package/commands/ashlr-handoff.md +23 -0
  137. package/commands/ashlr-help.md +86 -0
  138. package/commands/ashlr-hook-timings.md +30 -0
  139. package/commands/ashlr-leaderboard.md +50 -0
  140. package/commands/ashlr-ollama-setup.md +39 -0
  141. package/commands/ashlr-orchestrate-status.md +72 -0
  142. package/commands/ashlr-orchestrate.md +83 -0
  143. package/commands/ashlr-parallelize.md +63 -0
  144. package/commands/ashlr-report-crash.md +33 -0
  145. package/commands/ashlr-resume.md +72 -0
  146. package/commands/ashlr-savings.md +24 -0
  147. package/commands/ashlr-settings.md +50 -0
  148. package/commands/ashlr-spawn.md +61 -0
  149. package/commands/ashlr-start.md +60 -0
  150. package/commands/ashlr-status.md +64 -0
  151. package/commands/ashlr-team-invite.md +47 -0
  152. package/commands/ashlr-tier.md +122 -0
  153. package/commands/ashlr-tour.md +60 -0
  154. package/commands/ashlr-update.md +155 -0
  155. package/commands/ashlr-upgrade.md +96 -0
  156. package/commands/goal.md +58 -0
  157. package/commands/loop.md +40 -0
  158. package/docs/CNAME +1 -0
  159. package/docs/PRO_TIER.md +104 -0
  160. package/docs/README.md +21 -0
  161. package/docs/architecture.md +415 -0
  162. package/docs/ashlr-pipe.md +161 -0
  163. package/docs/assets/logo.svg +19 -0
  164. package/docs/assets/og.png +0 -0
  165. package/docs/assets/og.svg +41 -0
  166. package/docs/benchmarks-v2.json +355 -0
  167. package/docs/benchmarks.json +102 -0
  168. package/docs/benchmarks.md +211 -0
  169. package/docs/billing.md +185 -0
  170. package/docs/cloud-genome.md +155 -0
  171. package/docs/competitive-wozcode.md +92 -0
  172. package/docs/deploy.md +325 -0
  173. package/docs/email-templates.md +113 -0
  174. package/docs/embed-tuning.md +103 -0
  175. package/docs/genome.md +120 -0
  176. package/docs/github-oauth-onboarding.md +127 -0
  177. package/docs/hero-video-script.md +129 -0
  178. package/docs/index.html +2262 -0
  179. package/docs/install-prompt.md +78 -0
  180. package/docs/install-windows.md +132 -0
  181. package/docs/install.ps1 +171 -0
  182. package/docs/install.sh +146 -0
  183. package/docs/launch/README.md +114 -0
  184. package/docs/launch/hn.md +49 -0
  185. package/docs/launch/reddit.md +45 -0
  186. package/docs/launch/x.md +65 -0
  187. package/docs/launch-post.md +112 -0
  188. package/docs/legal.md +78 -0
  189. package/docs/llm-providers.md +99 -0
  190. package/docs/multi-host-mcp.md +217 -0
  191. package/docs/multi-turn-architecture.md +108 -0
  192. package/docs/operations/deployment.md +108 -0
  193. package/docs/operations/error-monitoring.md +70 -0
  194. package/docs/operations/weekly-digest.md +70 -0
  195. package/docs/operations.md +494 -0
  196. package/docs/platform-support.md +133 -0
  197. package/docs/policy-packs.md +188 -0
  198. package/docs/press-kit/fact-sheet.md +78 -0
  199. package/docs/press-kit/founder-bio.md +3 -0
  200. package/docs/press-kit/logo.svg +33 -0
  201. package/docs/press-kit/screenshots.md +146 -0
  202. package/docs/pricing.md +251 -0
  203. package/docs/pro-backend-architecture.md +523 -0
  204. package/docs/producthunt.md +52 -0
  205. package/docs/router-migration.md +110 -0
  206. package/docs/session-log-schema.md +68 -0
  207. package/docs/social.md +95 -0
  208. package/docs/team-genome.md +528 -0
  209. package/docs/telemetry.md +194 -0
  210. package/docs/test-isolation.md +100 -0
  211. package/docs/upgrade.md +159 -0
  212. package/hooks/_hook-errors.ts +87 -0
  213. package/hooks/_hook-perf-emit.ts +113 -0
  214. package/hooks/_hook-timing-ledger.ts +1133 -0
  215. package/hooks/_nudge-throttle.ts +127 -0
  216. package/hooks/_recent-blocks.ts +127 -0
  217. package/hooks/audit-upload.ts +86 -0
  218. package/hooks/codex-hooks.json +171 -0
  219. package/hooks/commit-attribution.ts +179 -0
  220. package/hooks/edit-batching-nudge.ts +154 -0
  221. package/hooks/genome-scribe-hook.ts +219 -0
  222. package/hooks/hooks.json +294 -0
  223. package/hooks/orient-nudge-hook.ts +242 -0
  224. package/hooks/policy-enforce.ts +214 -0
  225. package/hooks/post-tool-use-embedding.ts +93 -0
  226. package/hooks/post-tool-use-genome.sh +37 -0
  227. package/hooks/post-tool-use-genome.ts +69 -0
  228. package/hooks/posttooluse-correlate.ts +122 -0
  229. package/hooks/posttooluse-dedupe-output.ts +241 -0
  230. package/hooks/posttooluse-genome-refresh.ts +223 -0
  231. package/hooks/posttooluse-native-nudge.ts +205 -0
  232. package/hooks/posttooluse-stale-result.ts +277 -0
  233. package/hooks/pretooluse-bash.ts +63 -0
  234. package/hooks/pretooluse-budget-guard.ts +318 -0
  235. package/hooks/pretooluse-common.ts +985 -0
  236. package/hooks/pretooluse-eco-router.ts +196 -0
  237. package/hooks/pretooluse-edit.sh +93 -0
  238. package/hooks/pretooluse-edit.ts +197 -0
  239. package/hooks/pretooluse-glob.ts +70 -0
  240. package/hooks/pretooluse-grep.sh +85 -0
  241. package/hooks/pretooluse-grep.ts +96 -0
  242. package/hooks/pretooluse-notebookedit.ts +121 -0
  243. package/hooks/pretooluse-read.sh +118 -0
  244. package/hooks/pretooluse-read.ts +118 -0
  245. package/hooks/pretooluse-task.ts +130 -0
  246. package/hooks/pretooluse-webfetch.ts +66 -0
  247. package/hooks/pretooluse-websearch.ts +85 -0
  248. package/hooks/pretooluse-write.ts +128 -0
  249. package/hooks/pulse-emit.ts +197 -0
  250. package/hooks/session-end-consolidate.sh +35 -0
  251. package/hooks/session-end-consolidate.ts +188 -0
  252. package/hooks/session-end-stats-gc.ts +80 -0
  253. package/hooks/session-log-append.sh +94 -0
  254. package/hooks/session-log-append.ts +116 -0
  255. package/hooks/session-start.ts +993 -0
  256. package/hooks/sessionend-hook-health-nudge.ts +451 -0
  257. package/hooks/sessionend-savings-nudge.ts +318 -0
  258. package/hooks/sessionend-status-line-nudge.ts +296 -0
  259. package/hooks/sessionstart-brief.ts +140 -0
  260. package/hooks/sessionstart-cost-refactor.ts +95 -0
  261. package/hooks/sessionstart-efficient.ts +110 -0
  262. package/hooks/sessionstart-genome-author.ts +93 -0
  263. package/hooks/sessionstart-lean-tools.ts +98 -0
  264. package/hooks/sessionstart-search.ts +97 -0
  265. package/hooks/stop-accounting.ts +152 -0
  266. package/hooks/subagent-stop-rollup.ts +162 -0
  267. package/hooks/userpromptsubmit-brief-trigger.ts +156 -0
  268. package/package.json +56 -0
  269. package/ports/README.md +108 -0
  270. package/ports/cursor/mcp.json +11 -0
  271. package/ports/goose/recipe.yaml +26 -0
  272. package/scripts/ashlr-mcp.ts +40 -0
  273. package/scripts/auto-update.ts +177 -0
  274. package/scripts/baseline-scan.ts +831 -0
  275. package/scripts/bench-orchestrate.ts +377 -0
  276. package/scripts/benchmark-refs.ts +292 -0
  277. package/scripts/bootstrap.mjs +100 -0
  278. package/scripts/brief-eval.ts +234 -0
  279. package/scripts/bump-version.ts +82 -0
  280. package/scripts/bun-resolve.d.mts +11 -0
  281. package/scripts/bun-resolve.mjs +59 -0
  282. package/scripts/calibrate-grep.ts +467 -0
  283. package/scripts/capture-grep-workload.ts +260 -0
  284. package/scripts/check-tier.ts +61 -0
  285. package/scripts/check-version-sync.ts +97 -0
  286. package/scripts/cli-orchestrate-status.ts +386 -0
  287. package/scripts/cli-orchestrate.ts +303 -0
  288. package/scripts/cli.ts +478 -0
  289. package/scripts/cloud-smoke-test.ts +313 -0
  290. package/scripts/coach-report.ts +373 -0
  291. package/scripts/context-db-migrate.ts +137 -0
  292. package/scripts/context-status.ts +43 -0
  293. package/scripts/demo-run.ts +255 -0
  294. package/scripts/deploy-smoke.sh +140 -0
  295. package/scripts/doctor.ts +992 -0
  296. package/scripts/embed-file-worker.ts +104 -0
  297. package/scripts/embed-tune.ts +308 -0
  298. package/scripts/errors-report.ts +428 -0
  299. package/scripts/find-test-leak.ts +69 -0
  300. package/scripts/generate-badge.ts +357 -0
  301. package/scripts/genome-auto-consolidate.ts +533 -0
  302. package/scripts/genome-auto-propose.ts +578 -0
  303. package/scripts/genome-cloud-pull.ts +363 -0
  304. package/scripts/genome-cloud-push.ts +382 -0
  305. package/scripts/genome-cloud-sync.ts +587 -0
  306. package/scripts/genome-commit-watcher.ts +295 -0
  307. package/scripts/genome-init.ts +986 -0
  308. package/scripts/genome-key.ts +233 -0
  309. package/scripts/genome-keygen.ts +168 -0
  310. package/scripts/genome-link.ts +59 -0
  311. package/scripts/genome-refresh-worker.ts +364 -0
  312. package/scripts/genome-rewrap.ts +90 -0
  313. package/scripts/genome-synthesizer.ts +679 -0
  314. package/scripts/genome-team-init.ts +312 -0
  315. package/scripts/handoff-pack.ts +438 -0
  316. package/scripts/hook-bootstrap.mjs +75 -0
  317. package/scripts/hook-timing-reader.ts +371 -0
  318. package/scripts/hook-timings-report.ts +554 -0
  319. package/scripts/install-genome-hooks.ts +196 -0
  320. package/scripts/install-onnx-model.ts +154 -0
  321. package/scripts/install-permissions.ts +276 -0
  322. package/scripts/install-status-line.ts +150 -0
  323. package/scripts/mcp-entrypoint.sh +78 -0
  324. package/scripts/mcp-entrypoint.ts +130 -0
  325. package/scripts/mdx-angle-bracket-lint.ts +152 -0
  326. package/scripts/measure-cold-start.ts +126 -0
  327. package/scripts/migrate-stats-to-sqlite.ts +86 -0
  328. package/scripts/ollama-setup.ts +498 -0
  329. package/scripts/onboarding-wizard.ts +1691 -0
  330. package/scripts/orchestrate-emit-telemetry.ts +177 -0
  331. package/scripts/orchestrate-expand.ts +517 -0
  332. package/scripts/orchestrate-run.ts +744 -0
  333. package/scripts/print-legend.ts +50 -0
  334. package/scripts/product-metadata.ts +38 -0
  335. package/scripts/prune-old-memories.ts +208 -0
  336. package/scripts/publish.sh +88 -0
  337. package/scripts/read-calibration.ts +122 -0
  338. package/scripts/report-crash.ts +226 -0
  339. package/scripts/run-benchmark.ts +750 -0
  340. package/scripts/run-root-tests.ts +28 -0
  341. package/scripts/savings-dashboard.ts +1258 -0
  342. package/scripts/savings-report-extras.ts +447 -0
  343. package/scripts/savings-status-line.ts +873 -0
  344. package/scripts/session-event-emit.ts +266 -0
  345. package/scripts/session-greet.ts +686 -0
  346. package/scripts/session-log-report.ts +551 -0
  347. package/scripts/session-resume.ts +614 -0
  348. package/scripts/set-hook-mode.ts +83 -0
  349. package/scripts/smoke-cross-platform.ts +117 -0
  350. package/scripts/smoke-realtime.ts +257 -0
  351. package/scripts/smoke-tools.ts +21 -0
  352. package/scripts/stats-cloud-pull.ts +213 -0
  353. package/scripts/stats-cloud-sync.ts +261 -0
  354. package/scripts/telemetry-flush.ts +160 -0
  355. package/scripts/telemetry-status.ts +266 -0
  356. package/scripts/timing-budget.ts +35 -0
  357. package/scripts/ui-animation.ts +120 -0
  358. package/scripts/ui.ts +431 -0
  359. package/scripts/upgrade-flow.ts +775 -0
  360. package/scripts/weekly-digest.ts +394 -0
  361. package/servers/_accounting.ts +78 -0
  362. package/servers/_ask-router.ts +84 -0
  363. package/servers/_ast-chunker.ts +434 -0
  364. package/servers/_ast-helpers.ts +183 -0
  365. package/servers/_ast-languages.ts +153 -0
  366. package/servers/_ast-refactor/_shared.ts +221 -0
  367. package/servers/_ast-refactor/cross-file-rename.ts +560 -0
  368. package/servers/_ast-refactor/extract-function.ts +357 -0
  369. package/servers/_ast-refactor/file-local-rename.ts +172 -0
  370. package/servers/_ast-refactor.ts +41 -0
  371. package/servers/_ast-skeleton.ts +107 -0
  372. package/servers/_bash-summarizers-registry.ts +1096 -0
  373. package/servers/_crash-dump.ts +210 -0
  374. package/servers/_cwd-clamp.ts +342 -0
  375. package/servers/_edit-log.ts +28 -0
  376. package/servers/_edit-match.ts +236 -0
  377. package/servers/_edit-validate.ts +196 -0
  378. package/servers/_embed-calibration.ts +123 -0
  379. package/servers/_embedding-cache.ts +401 -0
  380. package/servers/_embedding-model.ts +329 -0
  381. package/servers/_events.ts +113 -0
  382. package/servers/_genome-cache.ts +154 -0
  383. package/servers/_genome-commits.ts +172 -0
  384. package/servers/_genome-crypto-v2.ts +242 -0
  385. package/servers/_genome-crypto.ts +259 -0
  386. package/servers/_genome-discoveries.ts +140 -0
  387. package/servers/_genome-embed-populator.ts +216 -0
  388. package/servers/_genome-freshness.ts +134 -0
  389. package/servers/_genome-issues.ts +171 -0
  390. package/servers/_genome-live.ts +263 -0
  391. package/servers/_genome-prs.ts +188 -0
  392. package/servers/_genome-search.ts +479 -0
  393. package/servers/_genome-sync.ts +297 -0
  394. package/servers/_history-tracker.ts +279 -0
  395. package/servers/_http-helpers.ts +151 -0
  396. package/servers/_identity-hash.ts +151 -0
  397. package/servers/_llm-providers/anthropic.ts +132 -0
  398. package/servers/_llm-providers/cloud.ts +195 -0
  399. package/servers/_llm-providers/index.ts +350 -0
  400. package/servers/_llm-providers/local.ts +127 -0
  401. package/servers/_llm-providers/onnx.ts +393 -0
  402. package/servers/_llm-providers/types.ts +27 -0
  403. package/servers/_manifest-v2.ts +447 -0
  404. package/servers/_mcp-host.ts +93 -0
  405. package/servers/_nudge-events.ts +451 -0
  406. package/servers/_orchestrate-executor.ts +316 -0
  407. package/servers/_prefetch.ts +435 -0
  408. package/servers/_pricing.ts +256 -0
  409. package/servers/_pro.ts +381 -0
  410. package/servers/_read-cache.ts +44 -0
  411. package/servers/_router-handlers.ts +46 -0
  412. package/servers/_router.ts +55 -0
  413. package/servers/_run-with-timeout.ts +173 -0
  414. package/servers/_savings-render.ts +214 -0
  415. package/servers/_stats-sqlite.ts +640 -0
  416. package/servers/_stats.ts +1183 -0
  417. package/servers/_status-line-cells.ts +469 -0
  418. package/servers/_streaks.ts +162 -0
  419. package/servers/_summarize.ts +208 -0
  420. package/servers/_task-graph-render.ts +217 -0
  421. package/servers/_task-graph.ts +545 -0
  422. package/servers/_telemetry.ts +719 -0
  423. package/servers/_test-parsers.ts +530 -0
  424. package/servers/_test-watch.ts +626 -0
  425. package/servers/_text-helpers.ts +37 -0
  426. package/servers/_token-measure.ts +160 -0
  427. package/servers/_tool-base.ts +248 -0
  428. package/servers/_weekly-digest.ts +391 -0
  429. package/servers/ask-server-handlers.ts +49 -0
  430. package/servers/ask-server.ts +174 -0
  431. package/servers/bash-server-handlers.ts +138 -0
  432. package/servers/bash-server.ts +1136 -0
  433. package/servers/bench.ts +186 -0
  434. package/servers/diff-semantic-server-handlers.ts +39 -0
  435. package/servers/diff-semantic-server.ts +566 -0
  436. package/servers/diff-server-handlers.ts +317 -0
  437. package/servers/diff-server.ts +20 -0
  438. package/servers/edit-server-handlers.ts +31 -0
  439. package/servers/edit-server.ts +209 -0
  440. package/servers/edit-structural-server-handlers.ts +322 -0
  441. package/servers/efficiency-server-handlers.ts +161 -0
  442. package/servers/efficiency-server.ts +1135 -0
  443. package/servers/flush-server-handlers.ts +21 -0
  444. package/servers/flush-server.ts +19 -0
  445. package/servers/genome-server-handlers.ts +118 -0
  446. package/servers/genome-server.ts +397 -0
  447. package/servers/github-server-handlers.ts +187 -0
  448. package/servers/github-server.ts +856 -0
  449. package/servers/glob-server-handlers.ts +233 -0
  450. package/servers/glob-server.ts +20 -0
  451. package/servers/grep-server-handlers.ts +61 -0
  452. package/servers/grep-server.ts +564 -0
  453. package/servers/http-server-handlers.ts +36 -0
  454. package/servers/http-server.ts +149 -0
  455. package/servers/logs-server-handlers.ts +42 -0
  456. package/servers/logs-server.ts +359 -0
  457. package/servers/ls-server-handlers.ts +166 -0
  458. package/servers/ls-server.ts +20 -0
  459. package/servers/multi-edit-server-handlers.ts +51 -0
  460. package/servers/multi-edit-server.ts +422 -0
  461. package/servers/notebook-edit-server-handlers.ts +34 -0
  462. package/servers/notebook-edit-server.ts +181 -0
  463. package/servers/orient-server-handlers.ts +52 -0
  464. package/servers/orient-server.ts +436 -0
  465. package/servers/pipe-server-handlers.ts +68 -0
  466. package/servers/pipe-server.ts +300 -0
  467. package/servers/read-server-handlers.ts +42 -0
  468. package/servers/read-server.ts +206 -0
  469. package/servers/rename-file-server-handlers.ts +67 -0
  470. package/servers/rename-file-server.ts +699 -0
  471. package/servers/savings-server-handlers.ts +27 -0
  472. package/servers/savings-server.ts +54 -0
  473. package/servers/search-replace-regex-server-handlers.ts +96 -0
  474. package/servers/search-replace-regex-server.ts +751 -0
  475. package/servers/sql-server-handlers.ts +58 -0
  476. package/servers/sql-server.ts +505 -0
  477. package/servers/task-server-handlers.ts +358 -0
  478. package/servers/task-server.ts +24 -0
  479. package/servers/test-server-handlers.ts +351 -0
  480. package/servers/test-server.ts +20 -0
  481. package/servers/tree-server-handlers.ts +503 -0
  482. package/servers/tree-server.ts +20 -0
  483. package/servers/webfetch-server-handlers.ts +166 -0
  484. package/servers/webfetch-server.ts +20 -0
  485. package/servers/websearch-server-handlers.ts +215 -0
  486. package/servers/websearch-server.ts +19 -0
  487. package/servers/write-server-handlers.ts +27 -0
  488. package/servers/write-server.ts +97 -0
  489. package/skills/ashlr-brief/SKILL.md +80 -0
  490. package/skills/ashlr-codex-doctor/SKILL.md +21 -0
  491. package/skills/ashlr-codex-efficient-tools/SKILL.md +17 -0
  492. package/skills/ashlr-codex-genome-refresh/SKILL.md +20 -0
  493. package/skills/ashlr-codex-parallel-explore/SKILL.md +20 -0
  494. package/skills/ashlr-codex-savings/SKILL.md +17 -0
  495. package/skills/ashlr-cost-refactor/SKILL.md +50 -0
  496. package/skills/ashlr-efficient/SKILL.md +64 -0
  497. package/skills/ashlr-genome-author/SKILL.md +43 -0
  498. package/skills/ashlr-lean-tools/SKILL.md +43 -0
  499. package/skills/ashlr-search/SKILL.md +46 -0
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "ashlr-marketplace",
3
+ "interface": {
4
+ "displayName": "Ashlr"
5
+ },
6
+ "plugins": [
7
+ {
8
+ "name": "ashlr",
9
+ "source": {
10
+ "source": "local",
11
+ "path": "."
12
+ },
13
+ "policy": {
14
+ "installation": "AVAILABLE",
15
+ "authentication": "ON_INSTALL"
16
+ },
17
+ "category": "Productivity"
18
+ }
19
+ ]
20
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "ashlr-marketplace",
3
+ "owner": {
4
+ "name": "AshlrAI",
5
+ "url": "https://github.com/ashlrai"
6
+ },
7
+ "metadata": {
8
+ "description": "Open-source Claude Code plugin — 40 token-efficient MCP tools, 34 slash commands, GitHub OAuth sign-in, auto-genome from public repos, cloud-genome pull, per-session accounting, animated status line. MIT, opt-in telemetry.",
9
+ "version": "1.36.4"
10
+ },
11
+ "plugins": [
12
+ {
13
+ "name": "ashlr",
14
+ "source": {
15
+ "source": "url",
16
+ "url": "https://github.com/ashlrai/ashlr-plugin.git"
17
+ },
18
+ "description": "Token-efficient MCP tools for Claude Code — open-source WOZCODE alternative. Mean -57% savings overall on real codebases.",
19
+ "version": "1.36.4",
20
+ "author": {
21
+ "name": "Mason Wyatt",
22
+ "url": "https://github.com/ashlrai"
23
+ },
24
+ "homepage": "https://plugin.ashlr.ai/",
25
+ "repository": "https://github.com/ashlrai/ashlr-plugin",
26
+ "license": "MIT",
27
+ "category": "token-efficiency",
28
+ "keywords": [
29
+ "claude-code",
30
+ "mcp",
31
+ "token-efficiency",
32
+ "wozcode-alternative",
33
+ "github-oauth",
34
+ "genome",
35
+ "cloud-genome"
36
+ ]
37
+ }
38
+ ]
39
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "ashlr",
3
+ "version": "1.36.4",
4
+ "description": "Open-source Claude Code plugin — 40 MCP tools and 34 slash commands, hybrid LLM summarization (Anthropic Haiku 4.5 default + ONNX offline + local opt-in), GitHub OAuth sign-in, auto-genome from public repos, cloud-genome pull on session start, PreToolUse redirect hooks (ASHLR_HOOK_MODE), unified $/MTok pricing (ASHLR_PRICING_MODEL), per-session token accounting, opt-in telemetry, animated status line, shareable SVG savings badge. MIT.",
5
+ "author": {
6
+ "name": "Mason Wyatt",
7
+ "url": "https://github.com/ashlrai"
8
+ },
9
+ "homepage": "https://plugin.ashlr.ai/",
10
+ "repository": "https://github.com/ashlrai/ashlr-plugin",
11
+ "license": "MIT",
12
+ "keywords": [
13
+ "claude-code",
14
+ "plugin",
15
+ "token-efficiency",
16
+ "mcp",
17
+ "ashlrcode",
18
+ "wozcode-alternative",
19
+ "github-oauth",
20
+ "genome",
21
+ "cloud-genome"
22
+ ],
23
+ "statusLine": {
24
+ "type": "command",
25
+ "command": "bun run ${CLAUDE_PLUGIN_ROOT}/scripts/savings-status-line.ts"
26
+ },
27
+ "mcpServers": {
28
+ "ashlr": {
29
+ "command": "node",
30
+ "args": [
31
+ "${CLAUDE_PLUGIN_ROOT}/scripts/bootstrap.mjs",
32
+ "servers/_router.ts"
33
+ ]
34
+ }
35
+ }
36
+ }
@@ -0,0 +1,9 @@
1
+ # Ashlr Codex Agents
2
+
3
+ These are Codex-native companion prompts for Ashlr workflows:
4
+
5
+ - `ashlr-explorer.md` maps unfamiliar code with read-only, low-token habits.
6
+ - `ashlr-worker.md` implements scoped, disjoint slices when parallel work is useful.
7
+
8
+ They are intentionally separate from the Claude Code agent prompts under
9
+ `agents/`, which use Claude-specific model and `Task` terminology.
@@ -0,0 +1,36 @@
1
+ ---
2
+ name: ashlr-explorer
3
+ type: explorer
4
+ description: Read-only Codex explorer for token-efficient codebase mapping with Ashlr MCP tools.
5
+ ---
6
+
7
+ # Ashlr Explorer
8
+
9
+ Use this agent for bounded, read-only research before implementation.
10
+
11
+ ## Rules
12
+
13
+ - Stay read-only. Do not edit files, stage changes, commit, delete, or mutate config.
14
+ - Prefer `ashlr__orient`, `ashlr__tree`, `ashlr__grep`, and `ashlr__read` before native scans when they reduce context.
15
+ - Use native tools only for tiny files, exact line inspection, or when an Ashlr MCP tool is unavailable.
16
+ - Keep the answer short, cited, and actionable.
17
+
18
+ ## Workflow
19
+
20
+ 1. Start with `git status --short` and the smallest relevant tree or orient call.
21
+ 2. Identify entrypoints, ownership boundaries, existing helpers, and tests.
22
+ 3. Read only files that answer the assigned question.
23
+ 4. Return concrete findings with `path:line` references and remaining uncertainty.
24
+
25
+ ## Output
26
+
27
+ ```text
28
+ Findings
29
+ - path/to/file.ts:42 - concrete observation and why it matters.
30
+
31
+ Risks
32
+ - path/to/file.ts:88 - edge case or integration risk.
33
+
34
+ Next
35
+ - The parent agent should inspect or change ...
36
+ ```
@@ -0,0 +1,38 @@
1
+ ---
2
+ name: ashlr-worker
3
+ type: worker
4
+ description: Scoped Codex worker for disjoint Ashlr implementation slices.
5
+ ---
6
+
7
+ # Ashlr Worker
8
+
9
+ Use this agent only when the parent assigns a concrete implementation slice with an explicit file or module ownership boundary.
10
+
11
+ ## Rules
12
+
13
+ - You are not alone in the codebase. Do not revert or overwrite changes outside your assigned scope.
14
+ - Keep edits limited to the files or modules named by the parent.
15
+ - Prefer existing repo helpers and patterns. Avoid new abstractions unless they remove real complexity.
16
+ - Use Ashlr MCP tools for large reads/searches; use native patching for precise edits.
17
+ - Run the narrowest useful verification for your slice and report exact commands.
18
+
19
+ ## Workflow
20
+
21
+ 1. Re-read the assigned files and nearby tests.
22
+ 2. Make the smallest complete change for the assigned slice.
23
+ 3. Add or update focused tests when behavior changes.
24
+ 4. Run verification.
25
+ 5. Report changed files, verification, and any unresolved risk.
26
+
27
+ ## Output
28
+
29
+ ```text
30
+ Changed
31
+ - path/to/file.ts - what changed.
32
+
33
+ Verified
34
+ - command - result.
35
+
36
+ Notes
37
+ - Any follow-up the parent must integrate.
38
+ ```
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "ashlr",
3
+ "version": "1.36.4",
4
+ "description": "Multi-host AI coding efficiency layer for Codex and Claude Code: 40 MCP tools, Codex skills, nudge-first hooks, genome memory, and token savings accounting.",
5
+ "author": {
6
+ "name": "Mason Wyatt",
7
+ "url": "https://github.com/ashlrai"
8
+ },
9
+ "homepage": "https://plugin.ashlr.ai/",
10
+ "repository": "https://github.com/ashlrai/ashlr-plugin",
11
+ "license": "MIT",
12
+ "keywords": [
13
+ "codex",
14
+ "claude-code",
15
+ "mcp",
16
+ "token-efficiency",
17
+ "ashlrcode",
18
+ "genome",
19
+ "cloud-genome"
20
+ ],
21
+ "skills": "./skills/",
22
+ "hooks": "./hooks/codex-hooks.json",
23
+ "mcpServers": "./.mcp.json",
24
+ "interface": {
25
+ "displayName": "Ashlr",
26
+ "shortDescription": "Token-efficient MCP tools and workflow skills for Codex.",
27
+ "longDescription": "Ashlr gives Codex a first-class efficiency layer: 40 MCP tools for compact read/search/edit/bash workflows, skills for lean coding habits, nudge-first hooks, genome memory, and local savings accounting. Claude Code remains fully supported with its richer slash-command and status-line surfaces.",
28
+ "developerName": "AshlrAI",
29
+ "category": "Productivity",
30
+ "capabilities": [
31
+ "MCP",
32
+ "Skills",
33
+ "Hooks"
34
+ ],
35
+ "websiteURL": "https://plugin.ashlr.ai/",
36
+ "privacyPolicyURL": "https://plugin.ashlr.ai/privacy",
37
+ "termsOfServiceURL": "https://plugin.ashlr.ai/terms",
38
+ "defaultPrompt": [
39
+ "Use Ashlr tools to inspect this repo efficiently.",
40
+ "Run an Ashlr doctor check for Codex.",
41
+ "Refresh the project genome after this change."
42
+ ],
43
+ "brandColor": "#0F766E"
44
+ }
45
+ }
package/.mcp.json ADDED
@@ -0,0 +1,14 @@
1
+ {
2
+ "mcpServers": {
3
+ "ashlr": {
4
+ "command": "ashlr-mcp",
5
+ "args": [],
6
+ "cwd": ".",
7
+ "env": {
8
+ "ASHLR_MCP_HOST": "codex-cli",
9
+ "ASHLR_CODEX_HOOK_MODE": "nudge"
10
+ },
11
+ "instructions": "Prefer Ashlr tools when they reduce context: use ashlr__read for large files, ashlr__grep for search, ashlr__tree for directory maps, ashlr__bash for verbose shell output, ashlr__savings for token/cost accounting, and ashlr__genome_* tools for project memory. Pass cwd explicitly or set ASHLR_ALLOW_PROJECT_PATHS for workspaces outside the MCP launch cwd."
12
+ }
13
+ }
14
+ }
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 AshlrAI, Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,311 @@
1
+ # ashlr-plugin
2
+
3
+ > **Cut Codex and Claude Code token usage by −57% on real codebases.**
4
+ > _TS −62% · Python −65% · Rust −44%_ — measured on `vercel/ai`, `pandas`, and `tokio`.
5
+ > 95% CI reported by the benchmark runner. Reproduce with `bun run scripts/run-benchmark.ts --compare`. ([full methodology](docs/benchmarks.md))
6
+
7
+ 40 MCP tools that replace high-volume `Read` / `Grep` / `Edit` / `Bash` workflows with versions that return **less** without losing what matters. Claude Code gets automatic PreToolUse redirects (`ASHLR_HOOK_MODE=redirect`); Codex gets first-class plugin packaging, MCP, skills, and nudge-first hooks.
8
+
9
+ > **Requires [Bun ≥ 1.3](https://bun.sh/)** — interactive installers can offer to install Bun; piped/non-interactive installs skip that prompt and rely on MCP bootstrap if Bun is missing. Verify with `bun --version` first.
10
+ >
11
+ > ```bash
12
+ > curl -fsSL https://bun.sh/install | bash
13
+ > ```
14
+
15
+ ```bash
16
+ # macOS / Linux
17
+ curl -fsSL https://plugin.ashlr.ai/install.sh | bash
18
+
19
+ # Windows (PowerShell)
20
+ irm https://raw.githubusercontent.com/ashlrai/ashlr-plugin/main/docs/install.ps1 | iex
21
+ ```
22
+
23
+ The npm package exposes `ashlr-plugin` for CLI workflows and `ashlr-mcp` for MCP hosts. It requires Bun. From v1.36.4, use `ashlr-plugin stats`, `ashlr-plugin tools`, and other Plugin commands in place of the former `ashlr` alias; `ashlr` remains available to Ashlr Hub. MCP server registration names and tool names are unchanged.
24
+
25
+ **Landing page:** [plugin.ashlr.ai](https://plugin.ashlr.ai/) · **Docs:** [plugin.ashlr.ai/docs](https://plugin.ashlr.ai/docs) · **Core library:** [`@ashlr/core-efficiency`](https://github.com/ashlrai/ashlr-core-efficiency) · **License:** MIT
26
+
27
+ > **Open-source and honestly benchmarked.** The −57% headline is reproducible on your own code with `bun run scripts/run-benchmark.ts --compare` ([methodology](docs/benchmarks.md)). Every ashlr savings figure includes a 95% CI. Telemetry is off by default. Compare against closed, self-benchmarked alternatives with `/ashlr-benchmark --compare`.
28
+
29
+ [![CI (Linux · macOS · Windows)](https://github.com/ashlrai/ashlr-plugin/actions/workflows/ci.yml/badge.svg?branch=main&event=push)](https://github.com/ashlrai/ashlr-plugin/actions/workflows/ci.yml?query=branch%3Amain+event%3Apush)
30
+
31
+ **Tested on:** Ubuntu 22.04 · macOS 14 (Sonoma) · Windows Server 2022 · TypeScript hooks (no bash required)
32
+
33
+ ---
34
+
35
+ ## What's new in v1.36
36
+
37
+ - **Codex-native plugin packaging** — `.codex-plugin/plugin.json`, `.mcp.json`, Codex workflow skills, Codex explorer/worker agent guidance, and portable Codex hooks ship in the same package as the Claude Code plugin.
38
+ - **Reliable Codex MCP launch** — `ashlr-mcp` starts the router directly with `ASHLR_MCP_HOST=codex-cli`, workspace-aware `cwd` behavior, and `ASHLR_ALLOW_PROJECT_PATHS` support for non-plugin launch directories.
39
+ - **Codex nudge-first hooks** — Codex hooks now inject compact-tool guidance for Bash, apply_patch, Read/Grep/Glob, Edit/MultiEdit, Write, and high-value Ashlr MCP calls without forcing redirects by default.
40
+ - **Host-neutral CLI workflows** — `ashlr-plugin codex-doctor`, `ashlr-plugin codex-install --dry-run`, `ashlr-plugin codex-start`, `ashlr-plugin codex-resume`, `ashlr-plugin codex-end`, and `ashlr-plugin genome-refresh` give Codex users the same operational surface without writing Claude config.
41
+ - **Four discipline skills** — `/ashlr-search`, `/ashlr-lean-tools`, `/ashlr-genome-author`, `/ashlr-cost-refactor`. Each enforces a specific anti-waste pattern; each persists in `~/.ashlr/<name>.json`. Toggle with `/ashlr-<name> on/off`.
42
+ - **`/ashlr-efficient`** — output structure reshaper. Enforces answer-first (inverted pyramid), inline code for all identifiers, tables for 3+ item comparisons, and no transitional filler. Works standalone or alongside `/ashlr-brief`.
43
+ - **Two lifecycle hooks** — `SubagentStop` rolls up subagent savings to the session log and fires background genome consolidation; `Stop` finalises session stats with an idempotency guard. (Re-orientation after context compaction is handled by the `SessionStart` compact hook, the only event that can inject context.)
44
+ - **API-measured savings mode** — when `ANTHROPIC_API_KEY` is set, token counts upgrade from `(est.)` to `(API-measured)` once ≥10 calls have been verified via the Anthropic API. Fire-and-forget; SHA-256 cached; never blocks a tool call.
45
+ - **Benchmark transparency** — `scripts/run-benchmark.ts` now reports a 95% bootstrap confidence interval alongside the headline. New flags: `--compare` (A/B table), `--validate-tokenizer` (API spot-check of the chars/4 heuristic). See [benchmark methodology](docs/benchmarks.md).
46
+
47
+ <details>
48
+ <summary>v1.33 highlights</summary>
49
+
50
+ - **First-call savings projection** — see your annual savings extrapolated on your very first ashlr call.
51
+ - **Multi-host MCP** — works in Codex, Claude Code, Cline, Claude Desktop, Cursor, Goose, and generic MCP hosts (`ASHLR_MCP_HOST` env var).
52
+ - **`/ashlr-orchestrate-status`** — inspect past orchestration runs with per-node timings + tokens.
53
+ - **Orchestration retry + handoff budget** — per-node retry-with-backoff; HANDOFF_PAYLOAD capped at 8KB.
54
+ - **Orchestration central quota accounting** — `orchestration_usage` table for Team-tier soft-throttle.
55
+ - **Bun ≥ 1.3 prereq surfaced** + wizard restart enforcement — closes 2 fatal first-touch cliffs.
56
+ - **Orchestrator overhead bench** — measured ~5-30ms/node, 2.8× parallel speedup vs sequential.
57
+ - **Pre-existing tsc errors fixed** + permanent dashboard date-drift fix via clock injection.
58
+
59
+ </details>
60
+
61
+ ## What's new in v1.33 (archived)
62
+
63
+ <details>
64
+ <summary>v1.32 highlights</summary>
65
+
66
+ - **`/ashlr-orchestrate`** — multi-agent task graphs with parallel execution, dry-run renderer, and tier-gated subprocess wiring.
67
+ - **`/ashlr-orchestrate-status`** — inspect past orchestration runs with per-node telemetry and 2.8× measured parallel speedup.
68
+ - **Live genome** — PR-aware + commit-aware sections via git post-commit hook and GitHub webhook delta sync.
69
+ - **AI-Native discoveries** — LLM synthesizes `discovery` sections from your commit history automatically.
70
+ - **Predictive prefetch** *(Pro/Team)* — background warm-cache on every `ashlr__read` cuts repeat-hit latency.
71
+ - **PR + issue retrieval** — `ashlr__grep --include-prs --include-issues --since-days` pulls live GitHub context.
72
+ - **Freshness badges** in genome retrieval surface staleness so you trust the answer.
73
+ - **Cross-language bench:** TS −61.3% · Python −63.1% · Rust −46.8% (cross-language headline `-57.1%` holds).
74
+ - **Founder WAD-D dashboard** at `/admin/wad-d` — daily-active records + segment breakdown + discovery propagation.
75
+
76
+ </details>
77
+
78
+ ---
79
+
80
+ ## Multi-host MCP
81
+
82
+ Works with Codex, Claude Code (default), [Cline](https://github.com/cline/cline), Claude Desktop, Cursor, Goose, and generic MCP hosts. The 40 MCP tools, stats accounting, and genome retrieval are host-agnostic; savings and accounting apply when the host calls Ashlr MCP tools. Codex support is packaged through `.codex-plugin/plugin.json`, `.mcp.json`, Codex skills, and `hooks/codex-hooks.json` in nudge mode. Claude-only extras remain explicitly labeled: auto redirects, status line, slash commands, and OAuth bootstrap. See [plugin.ashlr.ai/docs](https://plugin.ashlr.ai/docs) or [`docs/multi-host-mcp.md`](docs/multi-host-mcp.md) for setup snippets.
83
+
84
+ ---
85
+
86
+ ## Permissions — stop the prompts first
87
+
88
+ Run this once after install so Claude Code stops asking on every tool call:
89
+
90
+ ```
91
+ /ashlr-allow
92
+ ```
93
+
94
+ That adds ashlr MCP wildcards to `permissions.allow` in `~/.claude/settings.json`. It is idempotent. Run `/reload-plugins` after changing permissions, or fully quit and restart Claude Code if reload is unavailable.
95
+
96
+ ---
97
+
98
+ ## 10-second demo
99
+
100
+ ```
101
+ # 1. Install
102
+ curl -fsSL https://plugin.ashlr.ai/install.sh | bash
103
+ # Inside Claude Code:
104
+ /plugin marketplace add ashlrai/ashlr-plugin
105
+ /plugin install ashlr@ashlr-marketplace
106
+
107
+ # 2. Use — read a large file (raw would be ~8,400 tokens)
108
+ ashlr__read { "path": "src/server.ts" }
109
+ # Returns snipCompact view: head + tail, elided middle — ~1,700 tokens
110
+
111
+ # 3. Check savings
112
+ /ashlr-savings
113
+ ```
114
+
115
+ ```
116
+ Session savings · ashlr-plugin v1.36.0
117
+ ────────────────────────────────────────
118
+ ashlr__read 6 calls −42,180 tok $0.13
119
+ ashlr__grep 3 calls −11,040 tok $0.03
120
+ ashlr__edit 2 calls −3,200 tok $0.01
121
+ ─────────────────────────────────────────────
122
+ Session total −56,420 tok $0.17
123
+ Lifetime total −284,900 tok $0.86
124
+ 7-day sparkline ▁▂▃▃▅▆█
125
+ ```
126
+
127
+ ---
128
+
129
+ ## What you get
130
+
131
+ Core efficiency tools (replace built-ins with lower-token equivalents):
132
+
133
+ | MCP tool | Description |
134
+ |---|---|
135
+ | `ashlr__read` | `snipCompact` + LLM summary on files > 16 KB (Anthropic Haiku 4.5 default, ONNX/local fallback). Mean **−82.1%** on the v1.22 bench. Line numbers preserved on code files. |
136
+ | `ashlr__grep` | Genome-aware RAG when `.ashlrcode/genome/` or cloud genome exists; ripgrep fallback with LLM summary. |
137
+ | `ashlr__edit` | In-place search/replace — returns diff summary only, not the full file. Levenshtein candidates on miss. |
138
+ | `ashlr__edit_structural` | AST-aware rename (Unicode identifiers: `café`, `π`, CJK) + cross-file rename with `anchorFile` + `maxFiles` + shadowing guard + dryRun + extract-function with return-value detection (0 / 1 / N outputs). `.ts/.tsx/.js/.jsx`. |
139
+ | `ashlr__multi_edit` | Batch multiple search/replace edits in one call. |
140
+ | `ashlr__savings` | Live token-savings dashboard: session + lifetime + per-tool breakdown. |
141
+
142
+ Shell, data, and web tools:
143
+
144
+ | MCP tool | Description |
145
+ |---|---|
146
+ | `ashlr__bash` | Shell with auto-compression + pluggable summarizer registry (`servers/_bash-summarizers-registry.ts`) covering `git log`/`git diff`/`git show`, `ls`, `ps`, `npm ls`, unified test-runner output, `tsc`, and npm/bun/yarn/pnpm installs. Long-running commands survive timeouts via process-group SIGKILL. |
147
+ | `ashlr__bash_start` / `_tail` / `_stop` / `_list` | Long-running background command control plane. |
148
+ | `ashlr__sql` | SQLite + Postgres one-shot. `explain` and `schema` modes. LLM summary on 100+ row results. |
149
+ | `ashlr__http` | HTTP fetch with readable-extract (HTML), array-elide (JSON), and private-host safety. |
150
+ | `ashlr__webfetch` | Fetch + extract web pages with token budget. LLM summarization kicks in at 4 KB (web content is denser than code), 100 KB hard cap. |
151
+ | `ashlr__logs` | Tail with level filter + dedupe + LLM summary. |
152
+ | `ashlr__diff` | Adaptive git diff (stat/summary/full) with LLM summary on big diffs. |
153
+ | `ashlr__diff_semantic` | Semantic diff with meaning-aware change grouping. |
154
+ | `ashlr__test` | Structured test-runner output parser — bun/vitest/jest/pytest/go test. Compresses runner noise into one failure block per failure. |
155
+
156
+ Codebase navigation:
157
+
158
+ | MCP tool | Description |
159
+ |---|---|
160
+ | `ashlr__tree` | gitignore-aware directory tree with per-dir truncation + size/LOC modes. |
161
+ | `ashlr__glob` | gitignore-aware file glob with size/LOC metadata. |
162
+ | `ashlr__ls` | Directory listing with size metadata. |
163
+ | `ashlr__orient` | Codebase orientation: entry points, key files, dependency graph. |
164
+
165
+ Genome + GitHub:
166
+
167
+ | MCP tool | Description |
168
+ |---|---|
169
+ | `ashlr__genome_propose` / `_consolidate` / `_status` | Active genome scribe loop — keeps `.ashlrcode/genome/` current as you code. |
170
+ | `ashlr__issue` / `ashlr__pr` | GitHub issue and PR read ops. |
171
+ | `ashlr__issue_create` / `ashlr__issue_close` | GitHub issue write ops. Self-approval guard + `ASHLR_REQUIRE_GH_CONFIRM=1` opt-in confirmation. |
172
+ | `ashlr__pr_comment` / `ashlr__pr_approve` | GitHub PR write ops. `pr:"current"` resolves via `gh pr view`. No destructive ops (no merge/close/delete). |
173
+ | `ashlr__ask` | Ask a question, get a structured answer with citations. |
174
+
175
+ See [docs/architecture.md](./docs/architecture.md) for the full tool registry and router layout.
176
+
177
+ ---
178
+
179
+ ## Pro cloud
180
+
181
+ ashlr Pro connects to a hosted backend at `https://api.ashlr.ai`, unlocking
182
+ features that require server-side state:
183
+
184
+ | Feature | What it does |
185
+ |---|---|
186
+ | **Cross-machine stats** | Aggregate token savings across all your machines. `GET /v1/stats/aggregate` returns `machine_count` + combined lifetime totals. |
187
+ | **Hosted summarizer** | `POST https://api.ashlr.ai/llm/summarize` — cloud inference via xAI Grok 4.3. Falls back to local summarization or snipCompact when unavailable. |
188
+ | **Team genome** | Encrypted genome sync across teammates. DEKs wrapped with X25519 — only key-holders can decrypt (`/ashlr-genome-team-init`). |
189
+
190
+ **Privacy:** telemetry is off by default and explicit opt-in only (`ASHLR_TELEMETRY=on`). The `sessionId`
191
+ is an opaque 16-char hex value per session — never your user identity — and
192
+ is stored server-side as a SHA-256 hash. File paths and content are never
193
+ sent. See [plugin.ashlr.ai/docs](https://plugin.ashlr.ai/docs) for the full privacy
194
+ contract (internal: [`docs/telemetry.md`](./docs/telemetry.md)).
195
+
196
+ **Production URL:** `https://api.ashlr.ai`
197
+
198
+ The `/ashlr-doctor` command includes a **cloud** check that pings
199
+ `/healthz` with a 3-second timeout and reports latency. Set
200
+ `ASHLR_API_URL_DISABLE=1` to suppress it in offline environments.
201
+
202
+ ---
203
+
204
+ ## Status-line
205
+
206
+ The status bar shows live session savings with a 7-day Braille sparkline:
207
+
208
+ ```
209
+ ┌─────────────────────────────────────────────┐
210
+ │ ashlr −0 tok $0.00 ▁▁▁▁▁▁▁ idle │
211
+ └─────────────────────────────────────────────┘
212
+
213
+ ┌─────────────────────────────────────────────┐
214
+ │ ashlr −12,480 tok $0.04 ▁▂▃▄▅▆█ ██ │
215
+ └─────────────────────────────────────────────┘
216
+
217
+ ┌─────────────────────────────────────────────┐
218
+ │ ashlr −48,200 tok $0.14 ▁▃▅▆██ ▓▓▓ !! │
219
+ └─────────────────────────────────────────────┘
220
+ ```
221
+
222
+ `!!` appears when context pressure is high. Install:
223
+
224
+ ```bash
225
+ bun run ~/.claude/plugins/cache/ashlr-marketplace/ashlr/<version>/scripts/install-status-line.ts
226
+ ```
227
+
228
+ ---
229
+
230
+ ## Install
231
+
232
+ **Prerequisites:** **[Bun ≥ 1.3](https://bun.sh)** and at least one supported host: Codex CLI, Claude Code, Cursor, Goose, or another MCP-capable client. Interactive installers can offer to install Bun; piped/non-interactive installs skip that prompt and rely on MCP bootstrap if Bun is missing. Verify with `bun --version` first, or install: `curl -fsSL https://bun.sh/install | bash`. No account, no API key.
233
+
234
+ ```bash
235
+ # Claude Code one-liner
236
+ curl -fsSL https://plugin.ashlr.ai/install.sh | bash
237
+ ```
238
+
239
+ For Codex:
240
+
241
+ ```bash
242
+ git clone https://github.com/ashlrai/ashlr-plugin
243
+ cd ashlr-plugin && bun install
244
+ codex plugin marketplace add ashlrai/ashlr-plugin
245
+ codex plugin add ashlr@ashlr-marketplace
246
+ bun run scripts/cli.ts codex-doctor --json
247
+ ```
248
+
249
+ For Claude Code:
250
+
251
+ ```
252
+ /plugin marketplace add ashlrai/ashlr-plugin
253
+ /plugin install ashlr@ashlr-marketplace
254
+ /reload-plugins
255
+ ```
256
+
257
+ Verify with `/ashlr-status`. If `/reload-plugins` is unavailable or `/ashlr-status` does not see the plugin, fully quit and restart Claude Code.
258
+
259
+ **Manual install:**
260
+
261
+ ```bash
262
+ git clone https://github.com/ashlrai/ashlr-plugin \
263
+ ~/.claude/plugins/cache/ashlr-marketplace/ashlr
264
+ cd ~/.claude/plugins/cache/ashlr-marketplace/ashlr && bun install
265
+ # Then inside Claude Code:
266
+ # /plugin marketplace add ashlrai/ashlr-plugin
267
+ # /plugin install ashlr@ashlr-marketplace
268
+ # /reload-plugins
269
+ ```
270
+
271
+ ---
272
+
273
+ ## Commands
274
+
275
+ | Command | Description |
276
+ |---|---|
277
+ | `/ashlr-help` | List every ashlr slash command grouped by purpose (Onboarding / Token meter / Genome / Upgrade / Diagnostics) |
278
+ | `/ashlr-allow` | Auto-approve every ashlr MCP tool — covers canonical `mcp__plugin_ashlr_ashlr__ashlr__*` names, run once after install |
279
+ | `/ashlr-status` | Plugin health + MCP server reachability + genome detection |
280
+ | `/ashlr-savings` | Live dashboard: session + lifetime + per-tool + 7-day sparkline |
281
+ | `/ashlr-doctor` | 11-check diagnostic — deps, MCP reachability, hooks, settings |
282
+ | `/ashlr-tour` | 60-second guided walkthrough on your current project |
283
+ | `/ashlr-benchmark` | Token-savings benchmark against your current project |
284
+ | `/ashlr-genome-init` | Initialize `.ashlrcode/genome/` for the −84% grep path |
285
+ | `/ashlr-ollama-setup` | Diagnose Ollama for `--summarize`; pull recommended 3B model |
286
+ | `/ashlr-settings` | View or change plugin toggles |
287
+ | `/ashlr-update` | `git pull` + `bun install` + report what changed |
288
+
289
+ ---
290
+
291
+ ## Free vs Pro
292
+
293
+ The free tier is the product — 40 MCP tools, 34 slash commands, the full genome scribe loop, and every benchmark included. No account required.
294
+
295
+ Pro ($12/mo, 7-day trial) adds cloud infrastructure for developers who need it: cross-machine stats sync, hosted embedding retrieval, cloud LLM summarizer (no local Ollama required), and a live auto-updating savings badge. Team ($24/user/mo, min 3) adds shared encrypted team genome, org savings dashboard, policy packs, and SSO.
296
+
297
+ Run `/ashlr-upgrade` to upgrade, or see [plugin.ashlr.ai/docs/pro/pricing](https://plugin.ashlr.ai/docs/pro/pricing) for the full comparison.
298
+
299
+ ---
300
+
301
+ ## Architecture
302
+
303
+ See [plugin.ashlr.ai/docs/contributing/architecture](https://plugin.ashlr.ai/docs/contributing/architecture) for how the tools, hooks, and genome scribe loop fit together. Internal notes: [`docs/architecture.md`](./docs/architecture.md).
304
+
305
+ ## Changelog
306
+
307
+ See [CHANGELOG.md](./CHANGELOG.md) for version history.
308
+
309
+ ## License
310
+
311
+ MIT — [LICENSE](./LICENSE).
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: ashlr:code
3
+ description: Main AshlrCode agent — token-efficient coding, editing, search. Delegates aggressively to ashlr:explore and ashlr:plan when appropriate.
4
+ model: sonnet
5
+ ---
6
+
7
+ You are **ashlr:code**, the main agent of the ashlr-plugin token-efficiency layer.
8
+
9
+ ## Your tools: prefer these over the built-ins
10
+
11
+ You have three MCP tools that replace Claude Code's defaults with lower-token alternatives. Use them by default:
12
+
13
+ | When you would use | Call instead |
14
+ |--------------------|--------------|
15
+ | `Read` on a file > 2KB | `ashlr__read` |
16
+ | `Grep` in a repo with `.ashlrcode/genome/` | `ashlr__grep` |
17
+ | `Grep` in a repo without a genome | `ashlr__grep` (falls back to ripgrep + truncation) |
18
+ | `Edit` with > 200 chars of before/after | `ashlr__edit` |
19
+
20
+ The built-in tools remain available for edge cases (binary files, non-genome `.txt` searches, etc.).
21
+
22
+ ## Delegation — this is the point of the plugin
23
+
24
+ You have two sub-agents. Spawn them via the `Task` tool with the matching `subagent_type`. **Delegation is how this plugin actually saves tokens** — every delegated call runs on haiku, which is ~1/10 the cost of sonnet.
25
+
26
+ ### Delegate to `ashlr:explore` when:
27
+
28
+ - The user asks "how does X work?" / "where is Y?" / "why is this here?"
29
+ - You need to understand code you haven't seen yet — any unfamiliar file over ~200 LOC
30
+ - You're about to make changes and don't yet have a mental model of the surrounding system
31
+ - You've opened 3+ files just to orient yourself
32
+
33
+ **Concrete signal: if you catch yourself calling `ashlr__read` or `Grep` more than 3 times in a row to understand code before making a change, stop and delegate to `ashlr:explore` instead.**
34
+
35
+ ### Delegate to `ashlr:plan` when:
36
+
37
+ - The task touches 3+ files
38
+ - The task requires architectural judgment (new modules, refactors, interface design)
39
+ - The user asked "how should we..." / "what's the best way to..."
40
+ - You're about to start a multi-step implementation and don't have a clear sequence
41
+
42
+ **Concrete signal: before any code change that needs more than a single Edit/Write call, ask yourself: "would a quick plan help here?" If yes, delegate to `ashlr:plan` first.**
43
+
44
+ ### Handle yourself:
45
+
46
+ - Actual code edits (sonnet is worth it for correctness)
47
+ - Running tests / lint / typecheck after changes
48
+ - Git operations (status, diff, commit — but NEVER destructive without explicit user confirmation)
49
+ - Responding to the user's final message
50
+
51
+ ## Savings rhythm
52
+
53
+ Every ~10 tool calls, or at the end of a meaningful unit of work, call `ashlr__savings` once and include the output in your next message to the user. They're paying for nothing if they can't see what's saved.
54
+
55
+ ## Style
56
+
57
+ - Terse. No trailing summaries — the diff and the savings output are the summary.
58
+ - `file:line` references when pointing at code, not quoted blocks.
59
+ - If you hit an obstacle, state it plainly. Do not loop on failing calls — diagnose instead.
60
+
61
+ ## Destructive operations — always confirm
62
+
63
+ Before any of the following, pause and ask the user:
64
+
65
+ - `rm -rf`, bulk file deletion
66
+ - `git reset --hard`, `git push --force`, branch deletion
67
+ - Dropping tables, deleting data
68
+ - Modifying CI/deploy config
69
+ - Installing/removing system packages