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,130 @@
1
+ //! Join two values implementing `AsyncRead` and `AsyncWrite` into a single one.
2
+
3
+ use crate::io::{AsyncBufRead, AsyncRead, AsyncWrite, ReadBuf};
4
+
5
+ use std::io;
6
+ use std::pin::Pin;
7
+ use std::task::{Context, Poll};
8
+
9
+ /// Join two values implementing `AsyncRead` and `AsyncWrite` into a
10
+ /// single handle.
11
+ pub fn join<R, W>(reader: R, writer: W) -> Join<R, W>
12
+ where
13
+ R: AsyncRead,
14
+ W: AsyncWrite,
15
+ {
16
+ Join { reader, writer }
17
+ }
18
+
19
+ pin_project_lite::pin_project! {
20
+ /// Joins two values implementing `AsyncRead` and `AsyncWrite` into a
21
+ /// single handle.
22
+ #[derive(Debug)]
23
+ pub struct Join<R, W> {
24
+ #[pin]
25
+ reader: R,
26
+ #[pin]
27
+ writer: W,
28
+ }
29
+ }
30
+
31
+ impl<R, W> Join<R, W>
32
+ where
33
+ R: AsyncRead,
34
+ W: AsyncWrite,
35
+ {
36
+ /// Splits this `Join` back into its `AsyncRead` and `AsyncWrite`
37
+ /// components.
38
+ pub fn into_inner(self) -> (R, W) {
39
+ (self.reader, self.writer)
40
+ }
41
+
42
+ /// Returns a reference to the inner reader.
43
+ pub fn reader(&self) -> &R {
44
+ &self.reader
45
+ }
46
+
47
+ /// Returns a reference to the inner writer.
48
+ pub fn writer(&self) -> &W {
49
+ &self.writer
50
+ }
51
+
52
+ /// Returns a mutable reference to the inner reader.
53
+ pub fn reader_mut(&mut self) -> &mut R {
54
+ &mut self.reader
55
+ }
56
+
57
+ /// Returns a mutable reference to the inner writer.
58
+ pub fn writer_mut(&mut self) -> &mut W {
59
+ &mut self.writer
60
+ }
61
+
62
+ /// Returns a pinned mutable reference to the inner reader.
63
+ pub fn reader_pin_mut(self: Pin<&mut Self>) -> Pin<&mut R> {
64
+ self.project().reader
65
+ }
66
+
67
+ /// Returns a pinned mutable reference to the inner writer.
68
+ pub fn writer_pin_mut(self: Pin<&mut Self>) -> Pin<&mut W> {
69
+ self.project().writer
70
+ }
71
+ }
72
+
73
+ impl<R, W> AsyncRead for Join<R, W>
74
+ where
75
+ R: AsyncRead,
76
+ {
77
+ fn poll_read(
78
+ self: Pin<&mut Self>,
79
+ cx: &mut Context<'_>,
80
+ buf: &mut ReadBuf<'_>,
81
+ ) -> Poll<Result<(), io::Error>> {
82
+ self.project().reader.poll_read(cx, buf)
83
+ }
84
+ }
85
+
86
+ impl<R, W> AsyncWrite for Join<R, W>
87
+ where
88
+ W: AsyncWrite,
89
+ {
90
+ fn poll_write(
91
+ self: Pin<&mut Self>,
92
+ cx: &mut Context<'_>,
93
+ buf: &[u8],
94
+ ) -> Poll<Result<usize, io::Error>> {
95
+ self.project().writer.poll_write(cx, buf)
96
+ }
97
+
98
+ fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), io::Error>> {
99
+ self.project().writer.poll_flush(cx)
100
+ }
101
+
102
+ fn poll_shutdown(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<(), io::Error>> {
103
+ self.project().writer.poll_shutdown(cx)
104
+ }
105
+
106
+ fn poll_write_vectored(
107
+ self: Pin<&mut Self>,
108
+ cx: &mut Context<'_>,
109
+ bufs: &[io::IoSlice<'_>],
110
+ ) -> Poll<Result<usize, io::Error>> {
111
+ self.project().writer.poll_write_vectored(cx, bufs)
112
+ }
113
+
114
+ fn is_write_vectored(&self) -> bool {
115
+ self.writer.is_write_vectored()
116
+ }
117
+ }
118
+
119
+ impl<R, W> AsyncBufRead for Join<R, W>
120
+ where
121
+ R: AsyncBufRead,
122
+ {
123
+ fn poll_fill_buf(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<io::Result<&[u8]>> {
124
+ self.project().reader.poll_fill_buf(cx)
125
+ }
126
+
127
+ fn consume(self: Pin<&mut Self>, amt: usize) {
128
+ self.project().reader.consume(amt)
129
+ }
130
+ }
@@ -0,0 +1,308 @@
1
+ //! Traits, helpers, and type definitions for asynchronous I/O functionality.
2
+ //!
3
+ //! This module is the asynchronous version of `std::io`. Primarily, it
4
+ //! defines two traits, [`AsyncRead`] and [`AsyncWrite`], which are asynchronous
5
+ //! versions of the [`Read`] and [`Write`] traits in the standard library.
6
+ //!
7
+ //! # `AsyncRead` and `AsyncWrite`
8
+ //!
9
+ //! Like the standard library's [`Read`] and [`Write`] traits, [`AsyncRead`] and
10
+ //! [`AsyncWrite`] provide the most general interface for reading and writing
11
+ //! input and output. Unlike the standard library's traits, however, they are
12
+ //! _asynchronous_ &mdash; meaning that reading from or writing to a `tokio::io`
13
+ //! type will _yield_ to the Tokio scheduler when IO is not ready, rather than
14
+ //! blocking. This allows other tasks to run while waiting on IO.
15
+ //!
16
+ //! Another difference is that `AsyncRead` and `AsyncWrite` only contain
17
+ //! core methods needed to provide asynchronous reading and writing
18
+ //! functionality. Instead, utility methods are defined in the [`AsyncReadExt`]
19
+ //! and [`AsyncWriteExt`] extension traits. These traits are automatically
20
+ //! implemented for all values that implement `AsyncRead` and `AsyncWrite`
21
+ //! respectively.
22
+ //!
23
+ //! End users will rarely interact directly with `AsyncRead` and
24
+ //! `AsyncWrite`. Instead, they will use the async functions defined in the
25
+ //! extension traits. Library authors are expected to implement `AsyncRead`
26
+ //! and `AsyncWrite` in order to provide types that behave like byte streams.
27
+ //!
28
+ //! Even with these differences, Tokio's `AsyncRead` and `AsyncWrite` traits
29
+ //! can be used in almost exactly the same manner as the standard library's
30
+ //! `Read` and `Write`. Most types in the standard library that implement `Read`
31
+ //! and `Write` have asynchronous equivalents in `tokio` that implement
32
+ //! `AsyncRead` and `AsyncWrite`, such as [`File`] and [`TcpStream`].
33
+ //!
34
+ //! For example, the standard library documentation introduces `Read` by
35
+ //! [demonstrating][std_example] reading some bytes from a [`std::fs::File`]. We
36
+ //! can do the same with [`tokio::fs::File`][`File`]:
37
+ //!
38
+ //! ```no_run
39
+ //! # #[cfg(not(target_family = "wasm"))]
40
+ //! # {
41
+ //! use tokio::io::{self, AsyncReadExt};
42
+ //! use tokio::fs::File;
43
+ //!
44
+ //! #[tokio::main]
45
+ //! async fn main() -> io::Result<()> {
46
+ //! let mut f = File::open("foo.txt").await?;
47
+ //! let mut buffer = [0; 10];
48
+ //!
49
+ //! // read up to 10 bytes
50
+ //! let n = f.read(&mut buffer).await?;
51
+ //!
52
+ //! println!("The bytes: {:?}", &buffer[..n]);
53
+ //! Ok(())
54
+ //! }
55
+ //! # }
56
+ //! ```
57
+ //!
58
+ //! [`File`]: crate::fs::File
59
+ //! [`TcpStream`]: crate::net::TcpStream
60
+ //! [`std::fs::File`]: std::fs::File
61
+ //! [std_example]: std::io#read-and-write
62
+ //!
63
+ //! ## Buffered Readers and Writers
64
+ //!
65
+ //! Byte-based interfaces are unwieldy and can be inefficient, as we'd need to be
66
+ //! making near-constant calls to the operating system. To help with this,
67
+ //! `std::io` comes with [support for _buffered_ readers and writers][stdbuf],
68
+ //! and therefore, `tokio::io` does as well.
69
+ //!
70
+ //! Tokio provides an async version of the [`std::io::BufRead`] trait,
71
+ //! [`AsyncBufRead`]; and async [`BufReader`] and [`BufWriter`] structs, which
72
+ //! wrap readers and writers. These wrappers use a buffer, reducing the number
73
+ //! of calls and providing nicer methods for accessing exactly what you want.
74
+ //!
75
+ //! For example, [`BufReader`] works with the [`AsyncBufRead`] trait to add
76
+ //! extra methods to any async reader:
77
+ //!
78
+ //! ```no_run
79
+ //! # #[cfg(not(target_family = "wasm"))]
80
+ //! # {
81
+ //! use tokio::io::{self, BufReader, AsyncBufReadExt};
82
+ //! use tokio::fs::File;
83
+ //!
84
+ //! #[tokio::main]
85
+ //! async fn main() -> io::Result<()> {
86
+ //! let f = File::open("foo.txt").await?;
87
+ //! let mut reader = BufReader::new(f);
88
+ //! let mut buffer = String::new();
89
+ //!
90
+ //! // read a line into buffer
91
+ //! reader.read_line(&mut buffer).await?;
92
+ //!
93
+ //! println!("{}", buffer);
94
+ //! Ok(())
95
+ //! }
96
+ //! # }
97
+ //! ```
98
+ //!
99
+ //! [`BufWriter`] doesn't add any new ways of writing; it just buffers every call
100
+ //! to [`write`](crate::io::AsyncWriteExt::write). However, you **must** flush
101
+ //! [`BufWriter`] to ensure that any buffered data is written.
102
+ //!
103
+ //! ```no_run
104
+ //! # #[cfg(not(target_family = "wasm"))]
105
+ //! # {
106
+ //! use tokio::io::{self, BufWriter, AsyncWriteExt};
107
+ //! use tokio::fs::File;
108
+ //!
109
+ //! #[tokio::main]
110
+ //! async fn main() -> io::Result<()> {
111
+ //! let f = File::create("foo.txt").await?;
112
+ //! {
113
+ //! let mut writer = BufWriter::new(f);
114
+ //!
115
+ //! // Write a byte to the buffer.
116
+ //! writer.write(&[42u8]).await?;
117
+ //!
118
+ //! // Flush the buffer before it goes out of scope.
119
+ //! writer.flush().await?;
120
+ //!
121
+ //! } // Unless flushed or shut down, the contents of the buffer is discarded on drop.
122
+ //!
123
+ //! Ok(())
124
+ //! }
125
+ //! # }
126
+ //! ```
127
+ //!
128
+ //! [stdbuf]: std::io#bufreader-and-bufwriter
129
+ //! [`std::io::BufRead`]: std::io::BufRead
130
+ //! [`AsyncBufRead`]: crate::io::AsyncBufRead
131
+ //! [`BufReader`]: crate::io::BufReader
132
+ //! [`BufWriter`]: crate::io::BufWriter
133
+ //!
134
+ //! ## Implementing `AsyncRead` and `AsyncWrite`
135
+ //!
136
+ //! Because they are traits, we can implement [`AsyncRead`] and [`AsyncWrite`] for
137
+ //! our own types, as well. Note that these traits must only be implemented for
138
+ //! non-blocking I/O types that integrate with the futures type system. In
139
+ //! other words, these types must never block the thread, and instead the
140
+ //! current task is notified when the I/O resource is ready.
141
+ //!
142
+ //! ## Conversion to and from Stream/Sink
143
+ //!
144
+ //! It is often convenient to encapsulate the reading and writing of bytes in a
145
+ //! [`Stream`] or [`Sink`] of data.
146
+ //!
147
+ //! Tokio provides simple wrappers for converting [`AsyncRead`] to [`Stream`]
148
+ //! and vice-versa in the [tokio-util] crate, see [`ReaderStream`] and
149
+ //! [`StreamReader`].
150
+ //!
151
+ //! There are also utility traits that abstract the asynchronous buffering
152
+ //! necessary to write your own adaptors for encoding and decoding bytes to/from
153
+ //! your structured data, allowing to transform something that implements
154
+ //! [`AsyncRead`]/[`AsyncWrite`] into a [`Stream`]/[`Sink`], see [`Decoder`] and
155
+ //! [`Encoder`] in the [tokio-util::codec] module.
156
+ //!
157
+ //! [tokio-util]: https://docs.rs/tokio-util
158
+ //! [tokio-util::codec]: https://docs.rs/tokio-util/latest/tokio_util/codec/index.html
159
+ //!
160
+ //! # Standard input and output
161
+ //!
162
+ //! Tokio provides asynchronous APIs to standard [input], [output], and [error].
163
+ //! These APIs are very similar to the ones provided by `std`, but they also
164
+ //! implement [`AsyncRead`] and [`AsyncWrite`].
165
+ //!
166
+ //! Note that the standard input / output APIs **must** be used from the
167
+ //! context of the Tokio runtime, as they require Tokio-specific features to
168
+ //! function. Calling these functions outside of a Tokio runtime will panic.
169
+ //!
170
+ //! [input]: fn@stdin
171
+ //! [output]: fn@stdout
172
+ //! [error]: fn@stderr
173
+ //!
174
+ //! # `std` re-exports
175
+ //!
176
+ //! Additionally, [`Error`], [`ErrorKind`], [`Result`], and [`SeekFrom`] are
177
+ //! re-exported from `std::io` for ease of use.
178
+ //!
179
+ //! [`AsyncRead`]: trait@AsyncRead
180
+ //! [`AsyncWrite`]: trait@AsyncWrite
181
+ //! [`AsyncReadExt`]: trait@AsyncReadExt
182
+ //! [`AsyncWriteExt`]: trait@AsyncWriteExt
183
+ //! ["codec"]: https://docs.rs/tokio-util/latest/tokio_util/codec/index.html
184
+ //! [`Encoder`]: https://docs.rs/tokio-util/latest/tokio_util/codec/trait.Encoder.html
185
+ //! [`Decoder`]: https://docs.rs/tokio-util/latest/tokio_util/codec/trait.Decoder.html
186
+ //! [`ReaderStream`]: https://docs.rs/tokio-util/latest/tokio_util/io/struct.ReaderStream.html
187
+ //! [`StreamReader`]: https://docs.rs/tokio-util/latest/tokio_util/io/struct.StreamReader.html
188
+ //! [`Error`]: struct@Error
189
+ //! [`ErrorKind`]: enum@ErrorKind
190
+ //! [`Result`]: type@Result
191
+ //! [`Read`]: std::io::Read
192
+ //! [`SeekFrom`]: enum@SeekFrom
193
+ //! [`Sink`]: https://docs.rs/futures/0.3/futures/sink/trait.Sink.html
194
+ //! [`Stream`]: https://docs.rs/futures/0.3/futures/stream/trait.Stream.html
195
+ //! [`Write`]: std::io::Write
196
+
197
+ #![cfg_attr(
198
+ not(all(feature = "rt", feature = "net")),
199
+ allow(dead_code, unused_imports)
200
+ )]
201
+
202
+ cfg_io_blocking! {
203
+ pub(crate) mod blocking;
204
+ }
205
+
206
+ mod async_buf_read;
207
+ pub use self::async_buf_read::AsyncBufRead;
208
+
209
+ mod async_read;
210
+ pub use self::async_read::AsyncRead;
211
+
212
+ mod async_seek;
213
+ pub use self::async_seek::AsyncSeek;
214
+
215
+ mod async_write;
216
+ pub use self::async_write::AsyncWrite;
217
+
218
+ mod read_buf;
219
+ pub use self::read_buf::ReadBuf;
220
+
221
+ // Re-export some types from `std::io` so that users don't have to deal
222
+ // with conflicts when `use`ing `tokio::io` and `std::io`.
223
+ #[doc(no_inline)]
224
+ pub use std::io::{Error, ErrorKind, Result, SeekFrom};
225
+
226
+ cfg_io_driver_impl! {
227
+ pub(crate) mod interest;
228
+ pub(crate) mod ready;
229
+
230
+ cfg_net_or_uring! {
231
+ pub use interest::Interest;
232
+ pub use ready::Ready;
233
+ }
234
+
235
+ #[cfg_attr(target_os = "wasi", allow(unused_imports))]
236
+ mod poll_evented;
237
+
238
+ #[cfg(not(loom))]
239
+ #[cfg_attr(target_os = "wasi", allow(unused_imports))]
240
+ pub(crate) use poll_evented::PollEvented;
241
+ }
242
+
243
+ // The bsd module can't be build on Windows, so we completely ignore it, even
244
+ // when building documentation.
245
+ #[cfg(unix)]
246
+ cfg_aio! {
247
+ /// BSD-specific I/O types.
248
+ pub mod bsd {
249
+ mod poll_aio;
250
+
251
+ pub use poll_aio::{Aio, AioEvent, AioSource};
252
+ }
253
+ }
254
+
255
+ cfg_net_unix! {
256
+ mod async_fd;
257
+
258
+ pub mod unix {
259
+ //! Asynchronous IO structures specific to Unix-like operating systems.
260
+ pub use super::async_fd::{AsyncFd, AsyncFdTryNewError, AsyncFdReadyGuard, AsyncFdReadyMutGuard, TryIoError};
261
+ }
262
+ }
263
+
264
+ cfg_io_std! {
265
+ mod stdio_common;
266
+
267
+ mod stderr;
268
+ pub use stderr::{stderr, Stderr};
269
+
270
+ mod stdin;
271
+ pub use stdin::{stdin, Stdin};
272
+
273
+ mod stdout;
274
+ pub use stdout::{stdout, Stdout};
275
+ }
276
+
277
+ cfg_io_util! {
278
+ mod split;
279
+ pub use split::{split, ReadHalf, WriteHalf};
280
+ mod join;
281
+ pub use join::{join, Join};
282
+
283
+ pub(crate) mod seek;
284
+ pub(crate) mod util;
285
+ pub use util::{
286
+ copy, copy_bidirectional, copy_bidirectional_with_sizes, copy_buf, duplex, empty, repeat, sink, simplex, AsyncBufReadExt, AsyncReadExt, AsyncSeekExt, AsyncWriteExt,
287
+ BufReader, BufStream, BufWriter, Chain, DuplexStream, Empty, Lines, Repeat, Sink, Split, Take, SimplexStream,
288
+ };
289
+ }
290
+
291
+ cfg_not_io_util! {
292
+ cfg_process! {
293
+ pub(crate) mod util;
294
+ }
295
+ }
296
+
297
+ cfg_io_blocking! {
298
+ /// Types in this module can be mocked out in tests.
299
+ mod sys {
300
+ // TODO: don't rename
301
+ pub(crate) use crate::blocking::spawn_blocking as run;
302
+ pub(crate) use crate::blocking::JoinHandle as Blocking;
303
+ }
304
+ }
305
+
306
+ cfg_io_uring! {
307
+ pub(crate) mod uring;
308
+ }