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,86 @@
1
+ ---
2
+ name: ashlr-help
3
+ description: List every ashlr slash command with a one-line description, grouped by category.
4
+ ---
5
+
6
+ Print the following table verbatim inside a fenced code block so column alignment renders correctly. No preamble, no trailing summary beyond the one-line pointer at the bottom.
7
+
8
+ ```
9
+ ashlr slash commands
10
+
11
+ ─── Tier 0: Start here ────────────────────────────────────────────────────
12
+ /ashlr-start First-run wizard (doctor + perms + demo + genome + pro)
13
+ /ashlr-savings Session + lifetime token-savings report with cost
14
+ /ashlr-dashboard Rich dashboard — bar charts, sparklines, annual projection
15
+ /ashlr-doctor Under-10-second health check of your ashlr install
16
+ /ashlr-help This screen
17
+
18
+ ─── Tier 1: Daily use ─────────────────────────────────────────────────────
19
+ /ashlr-resume Resume your last session — files, branch, suggested next
20
+ /ashlr-handoff Generate a context-pack for the next session
21
+ /ashlr-brief Tunable response-shortening (lite/standard/concise) —
22
+ 30–55% output-token reduction with auto-clarity exceptions
23
+ /ashlr-eco-mode Toggle eco mode (auto-compact, genome-grep, smart routing)
24
+ /ashlr-tier Three-phase tiered delegation: explore → code → plan
25
+ /ashlr-update Update the plugin to the latest version from git
26
+ /ashlr-allow Auto-approve every ashlr MCP tool in settings.json
27
+ /goal Register an objective → plan milestones → advance next as a
28
+ sandboxed proposal-only run (review via `ashlr inbox`)
29
+ /loop Run the goal-aware fleet conductor over enrolled repos —
30
+ one tick or --watch continuous; proposal-only, kill-switch gated
31
+
32
+ ─── Tier 2: Genome / team ─────────────────────────────────────────────────
33
+ /ashlr-genome-init Initialize .ashlrcode/genome/ in the current project
34
+ /ashlr-genome-push Push local genome to team cloud (auto at SessionEnd)
35
+ /ashlr-genome-loop Inspect + control the auto propose/consolidate loop
36
+ /ashlr-genome-keygen Generate the X25519 keypair for team-cloud genome v2
37
+ /ashlr-genome-rewrap Re-wrap team-genome DEK for a new or rotated member
38
+ /ashlr-genome-team-init Initialize a team-cloud genome (admin, once per repo)
39
+ /ashlr-team-invite Invite a teammate to your ashlr team by email
40
+ /ashlr-upgrade Terminal-native free → Pro / Team checkout (90 seconds)
41
+
42
+ ─── Tier 3: Power ─────────────────────────────────────────────────────────
43
+ /ashlr-spawn Spawn a named delegation pattern (triage-issues,
44
+ refactor-files, codebase-explain, pr-review-sweep,
45
+ parallel-test-fix)
46
+ /ashlr-parallelize Run the same task on N files in parallel sub-agents
47
+ /ashlr-orchestrate Expand a goal into a task graph, preview the DAG,
48
+ and run it (Pro 3 nodes / Team 10, local-only MVP)
49
+ /ashlr-orchestrate-status
50
+ Inspect past /ashlr-orchestrate runs — list recent
51
+ or drill into a single graph by id
52
+ /ashlr-budget Set/check/clear a session spend cap ($X or tokens=N)
53
+ /ashlr-tour 60-second guided walkthrough on the current project
54
+ /ashlr-benchmark Run token-savings benchmark against the current project
55
+ /ashlr-settings View or change ashlr-plugin settings
56
+ /ashlr-hook-timings Per-hook latency report (p50 / p95 / max)
57
+ /ashlr-report-crash Upload a recent crash dump to the maintainer (opt-in)
58
+ /ashlr-status Plugin + MCP server + genome status report
59
+ /ashlr-ollama-setup Diagnose + guide local Ollama install for summarization
60
+ /ashlr-compact Recompress stale tool results from the conversation
61
+
62
+ ─── MCP tools (call directly, or via hook redirect) ───────────────────────
63
+ ashlr__websearch Token-efficient web search — dedup by domain, snip snippets,
64
+ synthesize summary for >3 results. Replaces WebSearch.
65
+ ashlr__task_list Compact task list — filter by status/owner, limit rows (default 30),
66
+ column view (taskId/status/subject/ageMin). Replaces TaskList.
67
+ ashlr__task_get Compact single task — snipCompacts descriptions >2KB.
68
+ Replaces TaskGet.
69
+ ashlr__notebook_edit Compact Jupyter cell edit output (only edited cell + neighbors).
70
+ Replaces NotebookEdit.
71
+ ashlr__write Compact file-write acknowledgement (no echo of content).
72
+ Replaces Write.
73
+
74
+ ─── Status-line legend ────────────────────────────────────────────────────
75
+ ashlr · brand label + activity dot (dim idle, pulses on save event)
76
+ ⠀⠄⠇⣿ heartbeat glyph — braille wave when active, dim dot when idle
77
+ 7d ▁▂▃▅ 7-day sparkline; tallest cell = busiest day
78
+ ctx:NN% context-window pressure green<60 yellow<80 orange<95 red 95+
79
+ session tokens saved this terminal session
80
+ lifetime tokens saved across all sessions
81
+ tip:… rotating daily hint (disable: /ashlr-settings set statusLineTips false)
82
+ ```
83
+
84
+ After the block, print exactly one line:
85
+
86
+ > Tip: run /ashlr-savings any time to see your running totals.
@@ -0,0 +1,30 @@
1
+ ---
2
+ name: ashlr-hook-timings
3
+ description: Show per-hook latency report (p50/p95/max) from hook-timings.jsonl.
4
+ argument-hint: "[--hours N] [--compare] [--flags-only]"
5
+ ---
6
+
7
+ Run the hook timings report and render its output to the user.
8
+
9
+ ```sh
10
+ bun run "${CLAUDE_PLUGIN_ROOT}/scripts/hook-timings-report.ts" $ARGUMENTS
11
+ ```
12
+
13
+ Capture stdout and display it verbatim inside a fenced code block (```) so column alignment renders correctly.
14
+
15
+ The report covers:
16
+ - Header: total records, time window, overall median latency.
17
+ - Per-hook table: calls, p50, p95, max, error%, block%.
18
+ - Flagging lines for hooks where p95 > 200ms (⚠ threshold exceeded) or max >= 1s.
19
+ - If no records yet: a single plain-text prompt to enable hooks.
20
+
21
+ **Flags:**
22
+ - `--hours N` — narrow or widen the time window (default: 24h).
23
+ - `--compare` — show trend indicators (↓ improved / ↑ regressed) next to each hook's p95, comparing the current window against the previous equal-length window. A hook is "improved" when p95 dropped ≥20%, "regressed" when it grew ≥20%.
24
+ - `--flags-only` — output only the slow-hook warning lines (compact alert mode). Useful for scripting or quick checks. Exits silently when no flags exist.
25
+
26
+ After the verbatim block, add **at most one** short line:
27
+ - If the output contains "no records yet": "No timings recorded yet — run a few tool calls with hooks enabled."
28
+ - Otherwise: say nothing extra. The report speaks for itself.
29
+
30
+ Do not paraphrase the numbers.
@@ -0,0 +1,50 @@
1
+ ---
2
+ name: ashlr-leaderboard
3
+ description: Opt in or out of the public ashlr savings leaderboard at plugin.ashlr.ai/community. Opt-in is OFF by default; when on, your GitHub handle and total tokens/$ saved are shown publicly (never your email). Requires a signed-in account that syncs stats (Pro/Team).
4
+ argument-hint: "on | off | status"
5
+ ---
6
+
7
+ Toggle participation in the **public savings leaderboard** shown at
8
+ `https://plugin.ashlr.ai/community`. Opt-in is **OFF by default** — nothing about
9
+ you is published until you explicitly run `/ashlr-leaderboard on`.
10
+
11
+ ## Usage
12
+
13
+ ```
14
+ /ashlr-leaderboard on # opt IN — your GitHub handle + savings appear publicly
15
+ /ashlr-leaderboard off # opt OUT — removed from the public board on next sync
16
+ /ashlr-leaderboard status # show your current setting
17
+ ```
18
+
19
+ ## What gets published when you opt in
20
+
21
+ - Your **GitHub handle** (e.g. `octocat`) and avatar.
22
+ - Your **lifetime tokens saved** and the **dollar equivalent** (at the published
23
+ $3/MTok rate — the same number `/ashlr-savings` shows you).
24
+
25
+ **Never published:** your email, your code, your prompts, file paths, or any
26
+ per-session detail. Only the aggregate handle + savings figure.
27
+
28
+ ## How to apply this
29
+
30
+ The setting lives in `~/.ashlr/config.json` under the `leaderboard` key:
31
+
32
+ - **`on`** → set `{ "leaderboard": "public" }`
33
+ - **`off`** → set `{ "leaderboard": "off" }`
34
+ - **`status`** → read the key and report: `public` (opted in), `off` (opted out),
35
+ or unset (default — opted out).
36
+
37
+ Read the existing `~/.ashlr/config.json` (create it as `{}` if missing), merge the
38
+ `leaderboard` key without disturbing other keys (e.g. `telemetry`), and write it
39
+ back. Then tell the user the change takes effect on the **next stats sync**
40
+ (session end), and confirm what is/isn't published.
41
+
42
+ ## Requirements & notes
43
+
44
+ - The leaderboard ranks developers whose stats sync to the cloud, which means a
45
+ **signed-in account** (Pro/Team — see `/ashlr-tier`). Free users with only
46
+ local stats won't appear even when opted in, because their savings never leave
47
+ their machine. Mention this if the user isn't signed in.
48
+ - Opting out removes you from the board after the next sync propagates the flag.
49
+ - This is the same privacy posture as `/ashlr-brief` and telemetry: explicit,
50
+ reversible, and off until you choose otherwise.
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: ashlr-ollama-setup
3
+ description: Diagnose and guide local Ollama install so `/ashlr-genome-init --summarize` works reliably. Recommends a fast 3B model and smoke-tests it.
4
+ ---
5
+
6
+ > **Pro tip:** Pro and Team users can skip Ollama entirely — the plugin auto-routes summarization to the hosted cloud LLM (xAI Grok 4.3) once `~/.ashlr/pro-token` is present. See `/ashlr-upgrade`. Ollama remains the recommended path for free tier and offline use.
7
+
8
+ Run the guided Ollama setup script and relay its output.
9
+
10
+ Steps:
11
+
12
+ 1. If the user asked for "automatic", "auto", "just install it", "yes", or
13
+ passed a `--yes` / `-y` / `auto` argument, include `--yes` in the command
14
+ below. Otherwise omit it — the script will print the exact `ollama pull`
15
+ command for the user to run themselves.
16
+
17
+ 2. Run this via Bash:
18
+
19
+ ```
20
+ bun run ${CLAUDE_PLUGIN_ROOT}/scripts/ollama-setup.ts [--yes]
21
+ ```
22
+
23
+ If `$CLAUDE_PLUGIN_ROOT` is unset, resolve the plugin root the same way
24
+ other ashlr commands do (walk up from this command file to find
25
+ `.claude-plugin/plugin.json`).
26
+
27
+ 3. Relay the script's stdout verbatim inside a fenced code block. Do not
28
+ paraphrase or truncate — each line carries a glyph (`✓` pass, `✗` fail,
29
+ `⚠` warn, `ℹ` info) and any `fix:` line is copy-pasteable.
30
+
31
+ 4. If the script exits non-zero:
32
+ - `1` means a user-actionable issue (Ollama not installed, daemon not
33
+ running, or a model needs to be pulled). The output already contains
34
+ the exact next command — do not invent your own instructions.
35
+ - `2` means an internal error. Ask the user to file an issue with the
36
+ output block.
37
+
38
+ 5. If the script exits `0`, confirm briefly that `/ashlr-genome-init
39
+ --summarize` will now use the recommended model. No other preamble.
@@ -0,0 +1,72 @@
1
+ ---
2
+ name: ashlr-orchestrate-status
3
+ description: Inspect past /ashlr-orchestrate runs — list recent runs or drill into a single graph by id.
4
+ ---
5
+
6
+ ## Description
7
+
8
+ `/ashlr-orchestrate-status` reads the local orchestration result cache under `~/.ashlr/orchestrations/` and renders either a flat table of recent runs (default) or a per-node tree for a single graph. Each `/ashlr-orchestrate` invocation persists a `result.json` here best-effort, so this command works fully offline with no network or telemetry side-effects.
9
+
10
+ The cache is pruned to the 50 most-recent runs on every write, so disk usage stays bounded without manual cleanup.
11
+
12
+ ## Usage examples
13
+
14
+ ```bash
15
+ # Show a table of the 10 most-recent runs
16
+ /ashlr-orchestrate-status
17
+
18
+ # Drill into a single run by graph-id
19
+ /ashlr-orchestrate-status g-abc12345
20
+
21
+ # Dump raw JSON (list mode or detail mode) for piping to jq
22
+ /ashlr-orchestrate-status --json
23
+ /ashlr-orchestrate-status --json g-abc12345
24
+
25
+ # Show more than 10 rows
26
+ /ashlr-orchestrate-status --last 25
27
+ ```
28
+
29
+ ## Output
30
+
31
+ List mode prints a fixed-width table with one row per run, newest first:
32
+
33
+ ```
34
+ graph-id ok startedAt tokens goal
35
+ ------------------------ ------ ---------------------- -------- ------------------------
36
+ g-1727-mfa ok 2026-05-22T18:04:12.0… 24000 refactor the auth flow t…
37
+ g-1727-retry fail 2026-05-22T17:11:03.4… 16000 harden retry logic in se…
38
+ g-1727-docs ok 2026-05-22T15:48:51.9… 12000 document the orchestrat…
39
+
40
+ 3 of 3 runs shown
41
+ ```
42
+
43
+ Detail mode renders a per-node tree:
44
+
45
+ ```
46
+ Run g-1727-mfa
47
+ goal: refactor the auth flow to add MFA
48
+ tier: pro
49
+ ok: true
50
+ startedAt: 2026-05-22T18:04:12.013Z
51
+ finishedAt: 2026-05-22T18:04:13.821Z
52
+ duration: 1808ms
53
+ tokens: 24000
54
+ nodes:
55
+ ├─ [ok] node-explore (refactorer, 412ms, 8000 tokens)
56
+ ├─ [ok] node-implement (refactorer, 1083ms, 8000 tokens)
57
+ └─ [ok] node-verify (test-writer, 313ms, 8000 tokens)
58
+ ```
59
+
60
+ When the cache is empty: `No orchestration runs yet — use /ashlr-orchestrate to start.` (exit 0).
61
+ When an id is given but not found: `No run found with id <graph-id>` (exit 1).
62
+ Malformed `result.json` files are skipped with a one-line stderr warning.
63
+
64
+ ## Invocation
65
+
66
+ Run via Bash:
67
+
68
+ ```sh
69
+ bun run ${CLAUDE_PLUGIN_ROOT}/scripts/cli-orchestrate-status.ts "$ARGUMENTS"
70
+ ```
71
+
72
+ Pass `$ARGUMENTS` through verbatim. Print the stdout inside a fenced code block so the table aligns.
@@ -0,0 +1,83 @@
1
+ ---
2
+ name: ashlr-orchestrate
3
+ description: Distributed-orchestration MVP — expand a goal into a task graph, preview the DAG, confirm, and run it (Pro / Team only).
4
+ ---
5
+
6
+ ## Description
7
+
8
+ > **Experimental MVP — stub executor by default.** Each node currently runs a
9
+ > Bun subprocess that echoes `STUB-NODE: <id>` rather than calling a real AI
10
+ > model. No actual work is performed on your codebase. Set
11
+ > `ASHLR_ORCHESTRATE_REAL_LLM=1` to route nodes through the configured LLM
12
+ > provider (requires `ANTHROPIC_API_KEY` or a Pro token with cloud-LLM access).
13
+ > The real executor is read-only in this MVP — it produces a plan summary but
14
+ > does not write files or run commands.
15
+
16
+ `/ashlr-orchestrate` takes a free-text goal, auto-expands it into a small task graph (DAG of explore/implement/verify nodes scoped to a directory), shows you a dry-run preview, and on confirmation walks the graph in dependency order. Each node runs in its own sandbox so a failure in one branch doesn't poison the rest. This is the Q1 '27 distributed-orchestration MVP — local-only, capped at 3 nodes on Pro and 10 on Team. Free is blocked with a pointer to `/ashlr-upgrade`.
17
+
18
+ The flow is:
19
+
20
+ 1. Tier check (free → blocked, helpful upgrade message).
21
+ 2. Either auto-expand the goal into a graph **or** load a graph you wrote / edited as YAML (`--yaml <path>`).
22
+ 3. Render the DAG to stdout as a dry-run preview (goal, scope, tier, node count, per-node description + deps + scope + model).
23
+ 4. Prompt `y` / `n` / `e`:
24
+ - `y` runs it.
25
+ - `n` cancels with exit 0.
26
+ - `e` writes the current graph as YAML to `~/.ashlr/orchestrate-edit-<id>.yaml`, prints the path, and exits so you can hand-edit + re-run with `--yaml`.
27
+ 5. After the run, print a summary: total wall-clock, total tokens, per-node ok/fail.
28
+
29
+ `--auto-confirm` skips the prompt. `--dry-run` runs the graph in dry-run mode (no real subprocesses spawn).
30
+
31
+ ## Usage examples
32
+
33
+ ```bash
34
+ # Goal-only — auto-expand against the current directory
35
+ /ashlr-orchestrate "refactor the auth flow to add MFA"
36
+
37
+ # Goal + explicit scope (limits the agents to one subtree)
38
+ /ashlr-orchestrate "harden retry logic" --scope ./servers
39
+
40
+ # Run a hand-edited or pre-saved YAML graph
41
+ /ashlr-orchestrate --yaml ./.ashlr/my-graph.yaml --auto-confirm
42
+ ```
43
+
44
+ ## Tier gates
45
+
46
+ | Tier | Behavior |
47
+ | ----- | ------------------------------------------------------------ |
48
+ | free | Blocked. Prints "Orchestration requires Pro or Team. Run /ashlr-upgrade." and exits 1. |
49
+ | pro | Local-only. Max **3** agents per graph. |
50
+ | team | Local-only this MVP. Max **10** agents per graph. (Remote workers ship in v1.34.) |
51
+
52
+ Free users are never silently downgraded — they're stopped before any expand call so no tokens are spent.
53
+
54
+ ## Output
55
+
56
+ The dry-run preview is a flat list of nodes in declaration order, each tagged with its dependency edges (`← explore`), scope, and model tier. After it prints:
57
+
58
+ ```
59
+ Press y to execute, n to cancel, e to edit YAML.
60
+ ```
61
+
62
+ On `e`, the YAML path is printed and the command exits without running. On `y` (or with `--auto-confirm`), the runner walks the graph in topo order and emits a final block:
63
+
64
+ ```
65
+ Run summary
66
+ ok: true
67
+ duration: 812ms
68
+ tokens: 24000
69
+ nodes:
70
+ [ok] explore (212ms, 8000 tokens)
71
+ [ok] implement (483ms, 8000 tokens)
72
+ [ok] verify (117ms, 8000 tokens)
73
+ ```
74
+
75
+ ## Invocation
76
+
77
+ Run via Bash:
78
+
79
+ ```sh
80
+ bun run ${CLAUDE_PLUGIN_ROOT}/scripts/cli-orchestrate.ts "$ARGUMENTS"
81
+ ```
82
+
83
+ Pass `$ARGUMENTS` through verbatim — the CLI parses `--scope`, `--yaml`, `--auto-confirm`, and `--dry-run` itself. Print the stdout in a fenced code block so the DAG preview renders with column alignment.
@@ -0,0 +1,63 @@
1
+ ---
2
+ name: ashlr-parallelize
3
+ description: Spawn N parallel sub-agents — one per file — each applying the same task instruction. Merges results into a unified report.
4
+ argument-hint: "`<task>` `<file1>` [file2] [file3] ... [--code]"
5
+ ---
6
+
7
+ Spawn one sub-agent per file, all running the same task in parallel, then merge their outputs.
8
+
9
+ ## Usage
10
+
11
+ ```
12
+ /ashlr-parallelize <task> <file1> [file2] [file3] ... [--code]
13
+ ```
14
+
15
+ - `<task>` — the instruction to apply to each file (quoted string or unquoted phrase ending before the first file path).
16
+ - `<file1> [file2] ...` — one or more file paths (contain `/` or `.` or start with `__`).
17
+ - `--code` — optional flag. When present, use `ashlr:ashlr:code` (sonnet) agents instead of the default `ashlr:ashlr:explore` (haiku) agents. Use `--code` when the task requires edits; omit for read-only analysis.
18
+
19
+ ## Examples
20
+
21
+ ```
22
+ /ashlr-parallelize "explain what this module exports" src/utils.ts src/helpers.ts src/types.ts
23
+ /ashlr-parallelize "find all TODO comments and summarize them" hooks/pretooluse-read.ts hooks/pretooluse-bash.ts
24
+ /ashlr-parallelize --code "add JSDoc to all exported functions" servers/read-server.ts servers/grep-server.ts
25
+ ```
26
+
27
+ ## Steps
28
+
29
+ 1. Parse `$ARGUMENTS`:
30
+ - Detect `--code` flag (remove from argument list before further parsing).
31
+ - Determine `subagent_type`: `ashlr:ashlr:code` if `--code`, else `ashlr:ashlr:explore`.
32
+ - Split remaining tokens: file-path-like tokens (contain `/`, `.`, or start with `__`) → file list; everything before the first file path → task string.
33
+ - If no files are found, error: "No files specified. Usage: /ashlr-parallelize `<task>` `<file1>` [file2] ..."
34
+ - If task string is empty, error: "No task specified. Usage: /ashlr-parallelize `<task>` `<file1>` [file2] ..."
35
+
36
+ 2. For each file, construct an agent prompt:
37
+ ```
38
+ Task: <task>
39
+
40
+ File: <file_path>
41
+
42
+ Focus exclusively on this file. Do not read other files unless they are direct imports needed to answer the task. Keep your response under 300 words. Cite file:line for every claim.
43
+ ```
44
+
45
+ 3. Spawn all agents in parallel via the Agent tool — one per file — each with `subagent_type` as determined in step 1.
46
+
47
+ 4. Wait for all agents to complete.
48
+
49
+ 5. Print merged report:
50
+ ```
51
+ ## /ashlr-parallelize — <N> agents · task: <task>
52
+
53
+ ### <file1>
54
+ <agent 1 output>
55
+
56
+ ### <file2>
57
+ <agent 2 output>
58
+
59
+ ---
60
+ Agents: <N> · subagent_type: <type> · files: <list>
61
+ ```
62
+
63
+ Reuses agent definitions from `agents/ashlr-explore.md` (default) and `agents/ashlr-code.md` (--code).
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: ashlr-report-crash
3
+ description: Upload a recent ashlr-plugin crash dump to the maintainer. Opt-in, already-redacted, one report per invocation. Gives the founder faster bug signal when something in the plugin threw.
4
+ ---
5
+
6
+ Run the report-crash script and help the user review what will leave their machine before it uploads.
7
+
8
+ Steps:
9
+
10
+ 1. Run this command via Bash:
11
+
12
+ ```
13
+ bun run ${CLAUDE_PLUGIN_ROOT}/scripts/report-crash.ts $ARGUMENTS
14
+ ```
15
+
16
+ If `$CLAUDE_PLUGIN_ROOT` is unset, resolve the plugin root by walking up from a known ashlr path until `.claude-plugin/plugin.json` is found (same resolution as `/ashlr-doctor`).
17
+
18
+ 2. Print the script's stdout/stderr verbatim. The script owns the preview, the confirm prompt, and the upload — do not paraphrase. It exits 0 on success, 1 if no crashes found, 2 if the user declined, 3 on network error.
19
+
20
+ 3. If the user is unsure whether to upload, recommend `--dry-run` first: it shows exactly the JSON that would leave the machine without sending anything.
21
+
22
+ Flags (forwarded via `$ARGUMENTS`):
23
+
24
+ | Flag | Purpose |
25
+ |---|---|
26
+ | `--dump <path>` | Upload a specific `~/.ashlr/crashes/YYYY-MM-DD.jsonl` file instead of the most recent record |
27
+ | `--all` | Upload every record from the last 7 days (default: 1 most-recent) |
28
+ | `--dry-run` | Preview only — print what would be sent, do not upload |
29
+ | `--stdout` | Print the redacted record(s) to stdout so the user can paste into a GitHub issue |
30
+ | `--yes` | Skip the "confirm before upload" prompt |
31
+ | `--endpoint <url>` | Override the upload endpoint (defaults to `$ASHLR_CRASH_UPLOAD_URL` or production) |
32
+
33
+ Privacy posture: dumps are already redacted at write time by `servers/_crash-dump.ts` (Authorization headers, `sk-*`/`gh*_*` tokens, 40-char hex, key/value pairs named `token`/`apiKey`/`secret`/`password`/`cookie`). The upload path does **not** add anything beyond what's already on disk plus `pluginVersion` and `process.platform`. No cwd, no paths beyond the crash args that were already in the tool call at crash time, no stdin/stdout of any command.
@@ -0,0 +1,72 @@
1
+ ---
2
+ name: ashlr-resume
3
+ description: Resume your last coding session — shows what you were doing, which files were active, and suggested next steps.
4
+ argument-hint: "[<branch-name>]"
5
+ ---
6
+
7
+ Show a compact summary of the most recent ashlr session so you can pick up
8
+ exactly where you left off.
9
+
10
+ ## Usage
11
+
12
+ ```
13
+ /ashlr-resume
14
+ /ashlr-resume <branch-name>
15
+ ```
16
+
17
+ - **No argument** — summarizes the single most recent session regardless of branch.
18
+ - **With a branch name** — finds the most recent session whose timestamp overlaps
19
+ commits on that branch (cross-references via `git log`), then labels the
20
+ output with that branch.
21
+
22
+ ## What it shows
23
+
24
+ ```
25
+ Last session (yesterday, 2h ago — saved 4.3M tokens ≈$12.90):
26
+ Branch: feature/auth-flow
27
+ Work dir: myapp (12 reads, 4 edits)
28
+ __tests__ (5 reads, 3 edits)
29
+ Patterns: ashlr__grep ×7, Grep ×2
30
+ Bash: Bash ×18, ashlr__bash ×3
31
+ Calls: 42 tool invocations
32
+
33
+ Resume? Suggested next steps based on the trail:
34
+ - Re-open myapp (last edits in this session)
35
+ - Re-run: Bash (used ×18 last session)
36
+ - Continue on branch: feature/auth-flow
37
+ ```
38
+
39
+ ## Behavior
40
+
41
+ - Reads `~/.ashlr/session-log.jsonl` (active file) plus up to two rotated
42
+ backups (`.jsonl.1`, `.jsonl.2`). Read-only — never modifies the log.
43
+ - If the log is missing or empty, prints "No prior sessions found — you're
44
+ starting fresh."
45
+ - Token savings figures come from `session_end` events written at session close.
46
+ If no `session_end` is present, tokens-saved shows as 0.
47
+
48
+ ## Limitations
49
+
50
+ The session log records **tool names and working directories**, not individual
51
+ file paths or the content of grep patterns / bash commands. As a result:
52
+
53
+ - "Work dir" shows the repository directory rather than specific file paths.
54
+ - "Patterns" shows which grep tools were invoked (and how many times), not the
55
+ actual search strings.
56
+ - "Bash" shows call counts for bash-family tools, not the specific commands run.
57
+
58
+ Individual argument capture is not part of the session-log schema (v1) by design
59
+ — arguments may contain secrets. A future schema version may add opt-in argument
60
+ hinting.
61
+
62
+ ## Implementation
63
+
64
+ ```sh
65
+ bun run ${CLAUDE_PLUGIN_ROOT}/scripts/session-resume.ts [<branch>]
66
+ ```
67
+
68
+ Print the script's stdout verbatim. The output is designed to be read directly;
69
+ do not paraphrase or reformat it.
70
+
71
+ If the script fails, fall back to:
72
+ `/ashlr-resume failed — check ~/.ashlr/session-log.jsonl exists and is readable.`
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: ashlr-savings
3
+ description: Show estimated tokens and cost saved by the ashlr-plugin this session and lifetime.
4
+ ---
5
+
6
+ Call the `ashlr__savings` MCP tool and show its output to the user **verbatim** inside a fenced code block (```) so the ASCII bar charts and column alignment render correctly.
7
+
8
+ The tool already returns a rich multi-line report covering:
9
+ - Session age and pricing model in use
10
+ - Two-column summary (this session vs all-time): calls, tokens saved, estimated dollar cost saved
11
+ - Per-tool breakdown for the current session (calls, tokens, proportional bar, percentage)
12
+ - A 7-day sparkline of daily tokens-saved (scaled to the busiest day)
13
+ - Pro upgrade nudge telemetry (when the user has crossed the 50k threshold at least once): `shown N · clicked M · rate P%`. Pro/Team users see the same stats labeled "historical" — no live nudge renders anymore.
14
+
15
+ After the verbatim block, add **at most one** short line:
16
+ - If session `calls` is 0: "No ashlr__read/grep/edit calls yet — try those in place of the built-ins to start accumulating savings."
17
+ - If session `calls` is non-zero and lifetime `calls` is under 20: "Still warming up — numbers get more meaningful after a few dozen calls."
18
+ - Otherwise: say nothing extra. The report speaks for itself.
19
+
20
+ Pricing note (only surface if the user asks how the dollar figure is derived): the report uses Claude Sonnet 4.5 input pricing ($3.00 per million tokens) by default. Override with the `ASHLR_PRICING_MODEL` env var (`sonnet-4.5` | `opus-4` | `haiku-4.5`).
21
+
22
+ Do not paraphrase the numbers — the user wants the exact tool output, not a rewritten summary.
23
+
24
+ Want a richer view? `/ashlr-dashboard` renders a multi-panel dashboard with ANSI colors, per-tool bar charts, 7-day and 30-day sparklines, top projects, and a projected-annual-savings extrapolation.
@@ -0,0 +1,50 @@
1
+ ---
2
+ name: ashlr-settings
3
+ description: View or change ashlr-plugin settings.
4
+ ---
5
+
6
+ Settings for the ashlr-plugin live in `~/.claude/settings.json` under the `ashlr` key. All toggles default to `true` unless stated otherwise.
7
+
8
+ ```json
9
+ {
10
+ "ashlr": {
11
+ "attribution": true,
12
+ "statusLine": true,
13
+ "statusLineSession": true,
14
+ "statusLineLifetime": true,
15
+ "statusLineTips": true,
16
+ "editBatchingNudge": true
17
+ }
18
+ }
19
+ ```
20
+
21
+ | Key | Default | What it controls |
22
+ |-----|---------|------------------|
23
+ | `attribution` | `true` | `commit-attribution` hook appends `Assisted-By: ashlr-plugin` to git commits |
24
+ | `statusLine` | `true` | Master toggle for the status-line integration |
25
+ | `statusLineSession` | `true` | Show this session's savings in the status line |
26
+ | `statusLineLifetime` | `true` | Show lifetime savings in the status line |
27
+ | `statusLineTips` | `true` | Rotate short tips in the status line |
28
+ | `editBatchingNudge` | `true` | Nudge the agent to batch multiple edits to the same file |
29
+
30
+ > `toolRedirect` was retired in v1.18: the Read/Grep/Edit routing is handled by the `pretooluse-*` hooks and controlled via `ASHLR_HOOK_MODE` (`redirect` | `nudge` | `off`) or `~/.ashlr/settings.json { "toolRedirect": false }` for a full opt-out. The old `~/.claude/settings.json { ashlr: { toolRedirect } }` key is ignored.
31
+
32
+ ## Applying a change
33
+
34
+ Parse the user's request, read the current settings file with `Read` or `ashlr__read`, apply the change via `Edit` or `ashlr__edit`, and confirm the new value.
35
+
36
+ Changes to hook-driven toggles (`attribution`, `editBatchingNudge`) take effect on the next tool call. Changes to status-line toggles take effect on the next status-line refresh.
37
+
38
+ ## Status-line install
39
+
40
+ If the user hasn't installed the status line yet, the settings file won't have a `statusLine.command` entry. Run:
41
+
42
+ ```bash
43
+ bun run ~/.claude/plugins/ashlr-plugin/scripts/install-status-line.ts
44
+ ```
45
+
46
+ That writes a safe, idempotent entry into `~/.claude/settings.json` pointing at `scripts/savings-status-line.ts`. A timestamped backup is made before any write.
47
+
48
+ ## If the user just asked a question
49
+
50
+ Show the relevant current values without editing anything.