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,260 @@
1
+ #!/usr/bin/env bun
2
+ /**
3
+ * capture-grep-workload.ts
4
+ *
5
+ * Reads recent ashlr__grep invocations from the MCP session log
6
+ * (~/.ashlr/session-log.jsonl) and writes them in the workload-JSONL
7
+ * format expected by calibrate-grep.ts --workload <path>.
8
+ *
9
+ * Output format (one JSON object per line):
10
+ * { "cwd": "/abs/path/to/project", "pattern": "somePattern" }
11
+ *
12
+ * Limitation: the session-log records the tool's process.cwd() at the
13
+ * time the event was emitted, but does NOT record the grep pattern
14
+ * (patterns are not logged to avoid leaking potentially sensitive query
15
+ * strings). The output therefore contains unique cwds paired with a
16
+ * representative set of synthetic patterns drawn from the calibration
17
+ * harness's default fixture. This still improves calibration over the
18
+ * plugin-root-only default because real project cwds are used.
19
+ *
20
+ * Future: emit a "tool_call" event from ashlr__grep that includes the
21
+ * pattern (opt-in via ASHLR_LOG_PATTERNS=1) and update this script to
22
+ * read it. That's a v1.29 follow-up.
23
+ *
24
+ * Usage:
25
+ * bun run scripts/capture-grep-workload.ts
26
+ * bun run scripts/capture-grep-workload.ts --n 500 --out /tmp/workload.jsonl
27
+ *
28
+ * Flags:
29
+ * --n <count> Max events to scan from the tail of session-log (default 200)
30
+ * --out <path> Output path (default ~/.ashlr/calibration-workload.jsonl)
31
+ */
32
+
33
+ import { existsSync, readFileSync, mkdirSync, writeFileSync } from "fs";
34
+ import { homedir } from "os";
35
+ import { dirname, join } from "path";
36
+
37
+ // ---------------------------------------------------------------------------
38
+ // Types
39
+ // ---------------------------------------------------------------------------
40
+
41
+ interface SessionLogEvent {
42
+ ts?: string;
43
+ agent?: string;
44
+ event?: string;
45
+ tool?: string;
46
+ cwd?: string;
47
+ session?: string;
48
+ [key: string]: unknown;
49
+ }
50
+
51
+ interface WorkloadEntry {
52
+ cwd: string;
53
+ pattern: string;
54
+ }
55
+
56
+ // ---------------------------------------------------------------------------
57
+ // Constants
58
+ // ---------------------------------------------------------------------------
59
+
60
+ /** Events that indicate a grep call was made. */
61
+ const GREP_EVENT_KINDS = new Set([
62
+ "genome_route_taken",
63
+ "genome_search_hit",
64
+ "genome_search_miss",
65
+ "tool_fallback",
66
+ "tool_escalate",
67
+ "tool_low_confidence_shipped",
68
+ ]);
69
+
70
+ /** Synthetic patterns — the same set as calibrate-grep.ts's syntheticWorkload().
71
+ * These are paired with each unique cwd found in the log. They are representative
72
+ * of typical agent grep queries against any TypeScript codebase. */
73
+ const REPRESENTATIVE_PATTERNS = [
74
+ "recordSaving",
75
+ "retrieveSections",
76
+ "genomeExists",
77
+ "spawnSync",
78
+ "estimateTokens",
79
+ "tokensSaved",
80
+ "formatBaseline",
81
+ "snipCompact",
82
+ ];
83
+
84
+ // ---------------------------------------------------------------------------
85
+ // CLI parsing
86
+ // ---------------------------------------------------------------------------
87
+
88
+ interface CliArgs {
89
+ n: number;
90
+ outPath: string;
91
+ }
92
+
93
+ function parseArgs(argv: string[]): CliArgs {
94
+ let n = 200;
95
+ let outPath = join(homedir(), ".ashlr", "calibration-workload.jsonl");
96
+
97
+ for (let i = 0; i < argv.length; i++) {
98
+ const a = argv[i];
99
+ if ((a === "--n" || a === "-n") && argv[i + 1]) {
100
+ const parsed = parseInt(argv[++i]!, 10);
101
+ if (Number.isFinite(parsed) && parsed > 0) n = parsed;
102
+ } else if ((a === "--out" || a === "-o") && argv[i + 1]) {
103
+ outPath = argv[++i]!;
104
+ }
105
+ }
106
+
107
+ return { n, outPath };
108
+ }
109
+
110
+ // ---------------------------------------------------------------------------
111
+ // Log reader
112
+ // ---------------------------------------------------------------------------
113
+
114
+ function home(): string {
115
+ return process.env.HOME ?? homedir();
116
+ }
117
+
118
+ function sessionLogPath(): string {
119
+ return join(home(), ".ashlr", "session-log.jsonl");
120
+ }
121
+
122
+ /**
123
+ * Read the last `n` lines from the session log and return parsed JSON objects.
124
+ * Silently skips malformed lines.
125
+ */
126
+ function readLastNEvents(logPath: string, n: number): SessionLogEvent[] {
127
+ if (!existsSync(logPath)) return [];
128
+
129
+ const raw = readFileSync(logPath, "utf-8");
130
+ const lines = raw.split("\n").filter((l) => l.trim().length > 0);
131
+ const tail = lines.slice(-n);
132
+
133
+ const events: SessionLogEvent[] = [];
134
+ for (const line of tail) {
135
+ try {
136
+ events.push(JSON.parse(line) as SessionLogEvent);
137
+ } catch {
138
+ // Skip malformed lines.
139
+ }
140
+ }
141
+ return events;
142
+ }
143
+
144
+ // ---------------------------------------------------------------------------
145
+ // Workload extraction
146
+ // ---------------------------------------------------------------------------
147
+
148
+ /**
149
+ * Extract unique cwds from grep-related events in the session log.
150
+ * Returns only cwds that exist on disk (in case the project was deleted/moved).
151
+ */
152
+ function extractGrepCwds(events: SessionLogEvent[]): string[] {
153
+ const cwdSet = new Set<string>();
154
+
155
+ for (const ev of events) {
156
+ const isTool = ev.tool === "ashlr__grep";
157
+ const isGrepEvent =
158
+ isTool &&
159
+ (ev.event !== undefined
160
+ ? GREP_EVENT_KINDS.has(ev.event)
161
+ : true);
162
+
163
+ if (isGrepEvent && typeof ev.cwd === "string" && ev.cwd.length > 0) {
164
+ cwdSet.add(ev.cwd);
165
+ }
166
+ }
167
+
168
+ // Filter to cwds that still exist.
169
+ return [...cwdSet].filter((cwd) => {
170
+ try {
171
+ return existsSync(cwd);
172
+ } catch {
173
+ return false;
174
+ }
175
+ });
176
+ }
177
+
178
+ /**
179
+ * Build the workload entries: each unique cwd × each representative pattern.
180
+ */
181
+ function buildWorkload(cwds: string[]): WorkloadEntry[] {
182
+ const entries: WorkloadEntry[] = [];
183
+ for (const cwd of cwds) {
184
+ for (const pattern of REPRESENTATIVE_PATTERNS) {
185
+ entries.push({ cwd, pattern });
186
+ }
187
+ }
188
+ return entries;
189
+ }
190
+
191
+ // ---------------------------------------------------------------------------
192
+ // Main
193
+ // ---------------------------------------------------------------------------
194
+
195
+ export async function captureGrepWorkload(opts: {
196
+ n?: number;
197
+ outPath?: string;
198
+ logPath?: string;
199
+ }): Promise<{ cwds: string[]; entries: WorkloadEntry[]; outPath: string }> {
200
+ const n = opts.n ?? 200;
201
+ const outPath = opts.outPath ?? join(home(), ".ashlr", "calibration-workload.jsonl");
202
+ const logPath = opts.logPath ?? sessionLogPath();
203
+
204
+ process.stdout.write(`Reading last ${n} events from ${logPath}\n`);
205
+
206
+ if (!existsSync(logPath)) {
207
+ process.stdout.write(`Session log not found at ${logPath}.\n`);
208
+ process.stdout.write(
209
+ `The log is written by the ashlr MCP server on every tool call. ` +
210
+ `Use ashlr tools first to populate it.\n`,
211
+ );
212
+ return { cwds: [], entries: [], outPath };
213
+ }
214
+
215
+ const events = readLastNEvents(logPath, n);
216
+ process.stdout.write(`Parsed ${events.length} event(s)\n`);
217
+
218
+ const cwds = extractGrepCwds(events);
219
+ process.stdout.write(`Found ${cwds.length} unique cwd(s) from ashlr__grep events\n`);
220
+
221
+ if (cwds.length === 0) {
222
+ process.stdout.write(
223
+ `No grep cwds found in the last ${n} events. ` +
224
+ `Either no ashlr__grep calls were made recently, or the log ` +
225
+ `doesn't contain the expected event kinds.\n`,
226
+ );
227
+ process.stdout.write(
228
+ `Note: the session log records process.cwd() at log time, not the ` +
229
+ `grep input's cwd. They match for typical agent invocations.\n`,
230
+ );
231
+ return { cwds: [], entries: [], outPath };
232
+ }
233
+
234
+ const entries = buildWorkload(cwds);
235
+ process.stdout.write(
236
+ `Built ${entries.length} workload entries (${cwds.length} cwd(s) × ${REPRESENTATIVE_PATTERNS.length} patterns)\n`,
237
+ );
238
+
239
+ // Write output.
240
+ mkdirSync(dirname(outPath), { recursive: true });
241
+ const content = entries.map((e) => JSON.stringify(e)).join("\n") + "\n";
242
+ writeFileSync(outPath, content, "utf-8");
243
+
244
+ process.stdout.write(`\nWritten → ${outPath}\n`);
245
+ process.stdout.write(`Run calibration with:\n`);
246
+ process.stdout.write(` bun run scripts/calibrate-grep.ts --workload ${outPath}\n`);
247
+ process.stdout.write(
248
+ `\nNote: patterns are synthetic (${REPRESENTATIVE_PATTERNS.length} fixed strings × ${cwds.length} real cwds).\n`,
249
+ );
250
+ process.stdout.write(
251
+ `Set ASHLR_LOG_PATTERNS=1 in a future version to capture real query patterns.\n`,
252
+ );
253
+
254
+ return { cwds, entries, outPath };
255
+ }
256
+
257
+ if (import.meta.main) {
258
+ const args = parseArgs(process.argv.slice(2));
259
+ await captureGrepWorkload({ n: args.n, outPath: args.outPath });
260
+ }
@@ -0,0 +1,61 @@
1
+ #!/usr/bin/env bun
2
+ /**
3
+ * check-tier.ts — print the active ashlr tier on stdout.
4
+ *
5
+ * Output: a single token, one of:
6
+ * "free" — no pro-token, or token failed validation
7
+ * "pro" — valid Pro plan
8
+ * "team" — valid Team plan
9
+ *
10
+ * Reads `~/.ashlr/pro-token-cache.json` (24h cache, 7d offline grace).
11
+ * Always exits 0 — callers can trust the output token.
12
+ */
13
+
14
+ import { existsSync, readFileSync } from "fs";
15
+ import { homedir } from "os";
16
+ import { join } from "path";
17
+
18
+ interface ProTokenCache {
19
+ valid?: boolean;
20
+ validatedAt?: string;
21
+ plan?: "pro" | "team" | "free";
22
+ }
23
+
24
+ const OFFLINE_GRACE_MS = 7 * 24 * 60 * 60 * 1000;
25
+
26
+ function home(): string {
27
+ return process.env.HOME ?? homedir();
28
+ }
29
+
30
+ function cachePath(): string {
31
+ return join(home(), ".ashlr", "pro-token-cache.json");
32
+ }
33
+
34
+ function readCache(): ProTokenCache | null {
35
+ const p = cachePath();
36
+ if (!existsSync(p)) return null;
37
+ try {
38
+ return JSON.parse(readFileSync(p, "utf-8")) as ProTokenCache;
39
+ } catch {
40
+ return null;
41
+ }
42
+ }
43
+
44
+ function main(): void {
45
+ const c = readCache();
46
+ if (!c || c.valid !== true || !c.validatedAt) {
47
+ process.stdout.write("free");
48
+ return;
49
+ }
50
+ const age = Date.now() - new Date(c.validatedAt).getTime();
51
+ if (age >= OFFLINE_GRACE_MS) {
52
+ process.stdout.write("free");
53
+ return;
54
+ }
55
+ const plan = c.plan;
56
+ if (plan === "team") process.stdout.write("team");
57
+ else if (plan === "pro") process.stdout.write("pro");
58
+ else process.stdout.write("free");
59
+ }
60
+
61
+ main();
@@ -0,0 +1,97 @@
1
+ #!/usr/bin/env bun
2
+ // check-version-sync.ts — CI gate that fails if the public manifest versions drift.
3
+ //
4
+ // package.json is the source of truth. Claude/Codex plugin manifests plus
5
+ // marketplace.json (both metadata.version and every plugins[].version) must
6
+ // equal it. Exits 1 with a mismatch table when they diverge — this is exactly
7
+ // the failure mode that let manifests sit at 1.29.0 while tags advanced.
8
+ //
9
+ // The newest CHANGELOG "## [X.Y.Z]" header is a SOFT check (warn-only) so that
10
+ // both CHANGELOG-first and tag-first release flows pass.
11
+ //
12
+ // Usage: bun run scripts/check-version-sync.ts
13
+ // Zero dependencies — safe to run before `bun install` in CI.
14
+
15
+ import { readFileSync } from "node:fs";
16
+ import { join, dirname } from "node:path";
17
+ import { fileURLToPath } from "node:url";
18
+
19
+ const ROOT = join(dirname(fileURLToPath(import.meta.url)), "..");
20
+
21
+ function readJson(rel: string): any {
22
+ return JSON.parse(readFileSync(join(ROOT, rel), "utf8"));
23
+ }
24
+
25
+ export interface VersionCheck {
26
+ ok: boolean;
27
+ rootVersion: string;
28
+ mismatches: Array<{ field: string; value: string }>;
29
+ changelogVersion: string | null;
30
+ changelogWarn: boolean;
31
+ }
32
+
33
+ export function checkVersionSync(): VersionCheck {
34
+ const rootVersion = readJson("package.json").version;
35
+ const mismatches: VersionCheck["mismatches"] = [];
36
+
37
+ const check = (field: string, value: unknown) => {
38
+ if (value !== rootVersion) {
39
+ mismatches.push({ field, value: String(value) });
40
+ }
41
+ };
42
+
43
+ const plugin = readJson(".claude-plugin/plugin.json");
44
+ check(".claude-plugin/plugin.json#version", plugin.version);
45
+
46
+ const codexPlugin = readJson(".codex-plugin/plugin.json");
47
+ check(".codex-plugin/plugin.json#version", codexPlugin.version);
48
+
49
+ const mkt = readJson(".claude-plugin/marketplace.json");
50
+ check(".claude-plugin/marketplace.json#metadata.version", mkt?.metadata?.version);
51
+ if (Array.isArray(mkt?.plugins)) {
52
+ mkt.plugins.forEach((p: any, i: number) =>
53
+ check(`.claude-plugin/marketplace.json#plugins[${i}].version`, p?.version),
54
+ );
55
+ }
56
+
57
+ // Soft CHANGELOG check.
58
+ let changelogVersion: string | null = null;
59
+ try {
60
+ const changelog = readFileSync(join(ROOT, "CHANGELOG.md"), "utf8");
61
+ const m = changelog.match(/^##\s*\[(\d+\.\d+\.\d+[^\]]*)\]/m);
62
+ changelogVersion = m ? m[1] : null;
63
+ } catch {
64
+ /* CHANGELOG optional for the hard check */
65
+ }
66
+ const changelogWarn = changelogVersion !== null && changelogVersion !== rootVersion;
67
+
68
+ return {
69
+ ok: mismatches.length === 0,
70
+ rootVersion,
71
+ mismatches,
72
+ changelogVersion,
73
+ changelogWarn,
74
+ };
75
+ }
76
+
77
+ if (import.meta.main) {
78
+ const r = checkVersionSync();
79
+
80
+ if (r.changelogWarn) {
81
+ console.warn(
82
+ `⚠ CHANGELOG newest entry [${r.changelogVersion}] != package.json ${r.rootVersion} ` +
83
+ `(ok if a release is in progress)`,
84
+ );
85
+ }
86
+
87
+ if (!r.ok) {
88
+ console.error(`✗ version manifests out of sync. Source of truth: package.json = ${r.rootVersion}`);
89
+ for (const m of r.mismatches) {
90
+ console.error(` ${m.field} = ${m.value}`);
91
+ }
92
+ console.error(` Fix: bun run scripts/bump-version.ts ${r.rootVersion}`);
93
+ process.exit(1);
94
+ }
95
+
96
+ console.log(`✓ all manifests in sync at ${r.rootVersion}`);
97
+ }