blume 2.0.2 → 2.1.0

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 (601) hide show
  1. package/AGENTS.md +1 -0
  2. package/CHANGELOG.md +113 -0
  3. package/README.md +1 -1
  4. package/dist/cli/{chunk-6k4ftwze.js → chunk-0gz36akr.js} +18 -2
  5. package/dist/cli/{chunk-6k4ftwze.js.map → chunk-0gz36akr.js.map} +3 -3
  6. package/dist/cli/{chunk-zp79m0ts.js → chunk-1n228xqb.js} +2 -2
  7. package/dist/cli/{chunk-ddndchfr.js → chunk-2f3ndkpw.js} +57 -29
  8. package/dist/cli/chunk-2f3ndkpw.js.map +14 -0
  9. package/dist/cli/{chunk-fsmrqk8a.js → chunk-2f7n4qzt.js} +8 -2
  10. package/dist/cli/{chunk-fsmrqk8a.js.map → chunk-2f7n4qzt.js.map} +3 -3
  11. package/dist/cli/{chunk-ppzjqwx2.js → chunk-2n4ps1b3.js} +17 -18
  12. package/dist/cli/{chunk-ppzjqwx2.js.map → chunk-2n4ps1b3.js.map} +3 -3
  13. package/dist/cli/{chunk-5r8g91qn.js → chunk-43zcf4gz.js} +398 -159
  14. package/dist/cli/chunk-43zcf4gz.js.map +36 -0
  15. package/dist/cli/chunk-4ejxbzee.js +39 -0
  16. package/dist/cli/chunk-4ejxbzee.js.map +10 -0
  17. package/dist/cli/{chunk-hr8ne106.js → chunk-4h8z9vv5.js} +296 -77
  18. package/dist/cli/chunk-4h8z9vv5.js.map +16 -0
  19. package/dist/cli/{chunk-k7pj68a8.js → chunk-5cg2rzgf.js} +18 -16
  20. package/dist/cli/{chunk-k7pj68a8.js.map → chunk-5cg2rzgf.js.map} +2 -2
  21. package/dist/cli/{chunk-h2ez8dzb.js → chunk-5ffywsmb.js} +4 -4
  22. package/dist/cli/{chunk-g698a744.js → chunk-5wj2qwn2.js} +5 -5
  23. package/dist/cli/chunk-6bm0xpgd.js +18 -0
  24. package/dist/cli/chunk-6bm0xpgd.js.map +10 -0
  25. package/dist/cli/{chunk-3yce002v.js → chunk-713mngdq.js} +15 -8
  26. package/dist/cli/chunk-713mngdq.js.map +14 -0
  27. package/dist/cli/{chunk-91ws1n6j.js → chunk-9geymqns.js} +17 -15
  28. package/dist/cli/{chunk-91ws1n6j.js.map → chunk-9geymqns.js.map} +2 -2
  29. package/dist/cli/{chunk-6dtt0zfn.js → chunk-9xr4dgee.js} +27 -18
  30. package/dist/cli/chunk-9xr4dgee.js.map +10 -0
  31. package/dist/cli/{chunk-sqw4ekg1.js → chunk-amrb6hgh.js} +2 -2
  32. package/dist/cli/chunk-cm89scdv.js +443 -0
  33. package/dist/cli/chunk-cm89scdv.js.map +11 -0
  34. package/dist/cli/{chunk-wdrt2k2v.js → chunk-cmtcnh9f.js} +90 -26
  35. package/dist/cli/chunk-cmtcnh9f.js.map +10 -0
  36. package/dist/cli/chunk-cy5bm0j0.js +104 -0
  37. package/dist/cli/chunk-cy5bm0j0.js.map +11 -0
  38. package/dist/cli/{chunk-7mbqtmgb.js → chunk-e7vvk5ya.js} +21 -12
  39. package/dist/cli/chunk-e7vvk5ya.js.map +10 -0
  40. package/dist/cli/{chunk-qkb5a8sa.js → chunk-g2z9x01v.js} +6 -98
  41. package/dist/cli/chunk-g2z9x01v.js.map +10 -0
  42. package/dist/cli/{chunk-273ygyr4.js → chunk-ga0pf4aj.js} +7 -7
  43. package/dist/cli/{chunk-273ygyr4.js.map → chunk-ga0pf4aj.js.map} +3 -3
  44. package/dist/cli/{chunk-h7k3nq3v.js → chunk-gp84za0h.js} +2 -2
  45. package/dist/cli/{chunk-hqp2ajnh.js → chunk-h2a48yhd.js} +195 -73
  46. package/dist/cli/chunk-h2a48yhd.js.map +36 -0
  47. package/dist/cli/{chunk-pbg5a4s3.js → chunk-jnwj5kjj.js} +71 -47
  48. package/dist/cli/chunk-jnwj5kjj.js.map +19 -0
  49. package/dist/cli/chunk-kwrg63tm.js +31 -0
  50. package/dist/cli/chunk-kwrg63tm.js.map +10 -0
  51. package/dist/cli/{chunk-8g8ytmgx.js → chunk-nd1821sk.js} +21 -19
  52. package/dist/cli/{chunk-8g8ytmgx.js.map → chunk-nd1821sk.js.map} +2 -2
  53. package/dist/cli/{chunk-w4bxdvsa.js → chunk-ntv4qrt7.js} +17 -15
  54. package/dist/cli/{chunk-w4bxdvsa.js.map → chunk-ntv4qrt7.js.map} +2 -2
  55. package/dist/cli/{chunk-bfwp9vp6.js → chunk-p804f3pe.js} +7 -7
  56. package/dist/cli/{chunk-4e9b9ra6.js → chunk-py62fewh.js} +6 -6
  57. package/dist/cli/{chunk-4e9b9ra6.js.map → chunk-py62fewh.js.map} +1 -1
  58. package/dist/cli/chunk-q3wxxq39.js +126 -0
  59. package/dist/cli/chunk-q3wxxq39.js.map +11 -0
  60. package/dist/cli/{chunk-j85scx15.js → chunk-rekqz4qg.js} +142 -46
  61. package/dist/cli/chunk-rekqz4qg.js.map +10 -0
  62. package/dist/cli/{chunk-00gs3wqs.js → chunk-ta27feev.js} +1 -1
  63. package/dist/cli/{chunk-v6ya5kcb.js → chunk-xkz5xbtv.js} +4031 -1132
  64. package/dist/cli/chunk-xkz5xbtv.js.map +213 -0
  65. package/dist/cli/{chunk-bbnwccaz.js → chunk-y4ykbark.js} +2 -2
  66. package/dist/cli/{chunk-n1yg3tj3.js → chunk-y5h4r2y0.js} +6 -6
  67. package/dist/cli/{chunk-n1yg3tj3.js.map → chunk-y5h4r2y0.js.map} +3 -3
  68. package/dist/cli/{chunk-nfcyttvj.js → chunk-yj17vs39.js} +9 -9
  69. package/dist/cli/{chunk-nfcyttvj.js.map → chunk-yj17vs39.js.map} +1 -1
  70. package/dist/cli/{chunk-7vtckvaw.js → chunk-yxmk4pec.js} +16 -14
  71. package/dist/cli/{chunk-7vtckvaw.js.map → chunk-yxmk4pec.js.map} +2 -2
  72. package/dist/cli/{chunk-gs7r695n.js → chunk-zccbjcj0.js} +22 -8
  73. package/dist/cli/{chunk-gs7r695n.js.map → chunk-zccbjcj0.js.map} +3 -3
  74. package/dist/cli/{chunk-xh43dwgw.js → chunk-zf748avv.js} +415 -225
  75. package/dist/cli/chunk-zf748avv.js.map +37 -0
  76. package/dist/cli/{chunk-d1v5rhy0.js → chunk-zhvd6adm.js} +16 -14
  77. package/dist/cli/{chunk-d1v5rhy0.js.map → chunk-zhvd6adm.js.map} +2 -2
  78. package/dist/cli/index.js +28 -20
  79. package/dist/cli/index.js.map +5 -5
  80. package/dist/types/ai/agent-surface.d.ts +8 -7
  81. package/dist/types/ai/ai-catalog.d.ts +7 -0
  82. package/dist/types/ai/ask-context.d.ts +22 -0
  83. package/dist/types/ai/ask.d.ts +271 -58
  84. package/dist/types/ai/index.d.ts +2 -2
  85. package/dist/types/ai/link-headers.d.ts +8 -1
  86. package/dist/types/ai/openapi-components.d.ts +5 -2
  87. package/dist/types/ai/relative-links.d.ts +9 -7
  88. package/dist/types/ai/site-skill.d.ts +26 -0
  89. package/dist/types/ai/skills.d.ts +20 -1
  90. package/dist/types/ai/tar.d.ts +1 -3
  91. package/dist/types/analytics/index.d.ts +2 -0
  92. package/dist/types/analytics/one-dollar-stats.d.ts +48 -0
  93. package/dist/types/analytics/schema.d.ts +14 -0
  94. package/dist/types/astro/integration.d.ts +11 -2
  95. package/dist/types/captcha/hcaptcha.d.ts +27 -0
  96. package/dist/types/captcha/index.d.ts +28 -0
  97. package/dist/types/captcha/schema.d.ts +29 -0
  98. package/dist/types/captcha/turnstile.d.ts +28 -0
  99. package/dist/types/components/content/api-field.d.ts +59 -0
  100. package/dist/types/components/content/api-page.d.ts +95 -0
  101. package/dist/types/components/layout/nav-utils.d.ts +26 -0
  102. package/dist/types/components/openapi/helpers.d.ts +137 -0
  103. package/dist/types/components/openapi/security.d.ts +85 -0
  104. package/dist/types/consent/ethyca.d.ts +48 -0
  105. package/dist/types/consent/index.d.ts +37 -0
  106. package/dist/types/consent/native.d.ts +28 -0
  107. package/dist/types/consent/osano.d.ts +42 -0
  108. package/dist/types/consent/schema.d.ts +110 -0
  109. package/dist/types/core/base-path.d.ts +21 -7
  110. package/dist/types/core/config-input.d.ts +196 -27
  111. package/dist/types/core/data.d.ts +49 -4
  112. package/dist/types/core/directive-diagnostics.d.ts +12 -0
  113. package/dist/types/core/footer.d.ts +8 -0
  114. package/dist/types/core/heading-markers.d.ts +5 -7
  115. package/dist/types/core/i18n-ui.d.ts +86 -0
  116. package/dist/types/core/i18n.d.ts +2 -0
  117. package/dist/types/core/includes.d.ts +8 -2
  118. package/dist/types/core/last-modified.d.ts +10 -0
  119. package/dist/types/core/localizable.d.ts +7 -0
  120. package/dist/types/core/meta.d.ts +8 -0
  121. package/dist/types/core/page-modes.d.ts +29 -0
  122. package/dist/types/core/redirect-patterns.d.ts +144 -0
  123. package/dist/types/core/related.d.ts +40 -0
  124. package/dist/types/core/schema.d.ts +558 -56
  125. package/dist/types/core/sources/lower.d.ts +29 -16
  126. package/dist/types/core/sources/normalize.d.ts +13 -1
  127. package/dist/types/core/sources/read.d.ts +5 -0
  128. package/dist/types/core/sources/watch.d.ts +12 -5
  129. package/dist/types/core/standard-schema.d.ts +5 -0
  130. package/dist/types/core/types.d.ts +1 -1
  131. package/dist/types/core/variables.d.ts +42 -0
  132. package/dist/types/deploy/artifacts.d.ts +6 -4
  133. package/dist/types/deploy/headers.d.ts +5 -0
  134. package/dist/types/deploy/node-headers.d.ts +13 -2
  135. package/dist/types/deploy/platforms/cloudflare.d.ts +5 -0
  136. package/dist/types/deploy/platforms/netlify.d.ts +7 -0
  137. package/dist/types/deploy/platforms/types.d.ts +8 -0
  138. package/dist/types/deploy/platforms/vercel.d.ts +6 -0
  139. package/dist/types/deploy/redirects.d.ts +61 -22
  140. package/dist/types/deploy/vercel-negotiation.d.ts +9 -0
  141. package/dist/types/markdown/code-title.d.ts +17 -0
  142. package/dist/types/markdown/directives.d.ts +62 -0
  143. package/dist/types/markdown/features.d.ts +24 -2
  144. package/dist/types/markdown/mdast.d.ts +63 -0
  145. package/dist/types/narration/build.d.ts +70 -0
  146. package/dist/types/narration/provider.d.ts +26 -0
  147. package/dist/types/narration/script.d.ts +154 -0
  148. package/dist/types/openapi/asyncapi.d.ts +4 -2
  149. package/dist/types/openapi/model.d.ts +12 -6
  150. package/dist/types/openapi/overlay.d.ts +54 -0
  151. package/dist/types/openapi/parse.d.ts +13 -0
  152. package/dist/types/openapi/references.d.ts +14 -4
  153. package/dist/types/ratelimit/cloudflare.d.ts +39 -0
  154. package/dist/types/ratelimit/index.d.ts +27 -0
  155. package/dist/types/ratelimit/memory.d.ts +36 -0
  156. package/dist/types/ratelimit/schema.d.ts +111 -0
  157. package/dist/types/ratelimit/upstash.d.ts +21 -0
  158. package/dist/types/ratelimit/wrangler.d.ts +23 -0
  159. package/dist/types/reference/asyncapi.d.ts +10 -10
  160. package/dist/types/reference/graphql.d.ts +13 -10
  161. package/dist/types/reference/openapi.d.ts +33 -12
  162. package/dist/types/reference/options.d.ts +45 -5
  163. package/dist/types/reference/scalar.d.ts +13 -0
  164. package/dist/types/reference/schema.d.ts +60 -36
  165. package/dist/types/search/documents.d.ts +12 -1
  166. package/dist/types/search/orama-index.d.ts +4 -0
  167. package/dist/types/seo/metatags.d.ts +20 -0
  168. package/docs/02-deployment.mdx +44 -6
  169. package/docs/03-upgrading.mdx +4 -4
  170. package/docs/04-migrating.mdx +1 -1
  171. package/docs/08-faq.mdx +1 -1
  172. package/docs/advanced/changelog.mdx +2 -2
  173. package/docs/advanced/custom-pages.mdx +3 -3
  174. package/docs/advanced/skills.mdx +14 -0
  175. package/docs/cli/audit.mdx +38 -2
  176. package/docs/cli/evals.mdx +3 -3
  177. package/docs/cli/index.mdx +1 -0
  178. package/docs/cli/translate.mdx +3 -3
  179. package/docs/cli/version.mdx +1 -1
  180. package/docs/configuration/analytics.mdx +22 -1
  181. package/docs/configuration/assistant.mdx +188 -36
  182. package/docs/configuration/consent.mdx +100 -0
  183. package/docs/configuration/customization.mdx +6 -4
  184. package/docs/configuration/index.mdx +63 -5
  185. package/docs/configuration/meta.ts +3 -0
  186. package/docs/configuration/narration.mdx +119 -0
  187. package/docs/configuration/rate-limiting.mdx +69 -0
  188. package/docs/configuration/search.mdx +30 -2
  189. package/docs/configuration/theming.mdx +3 -1
  190. package/docs/content/components.mdx +107 -1
  191. package/docs/content/frontmatter.mdx +77 -1
  192. package/docs/content/i18n.mdx +40 -3
  193. package/docs/content/includes.mdx +16 -0
  194. package/docs/content/index.mdx +4 -2
  195. package/docs/content/islands.mdx +1 -1
  196. package/docs/content/meta.mdx +4 -1
  197. package/docs/content/meta.ts +1 -0
  198. package/docs/content/navigation.mdx +28 -6
  199. package/docs/content/sources/contentful.mdx +32 -0
  200. package/docs/content/sources/custom.mdx +39 -0
  201. package/docs/content/sources/github-releases.mdx +31 -0
  202. package/docs/content/sources/index.mdx +91 -0
  203. package/docs/content/sources/meta.ts +16 -0
  204. package/docs/content/sources/notion.mdx +32 -0
  205. package/docs/content/sources/obsidian.mdx +37 -0
  206. package/docs/content/sources/payload.mdx +30 -0
  207. package/docs/content/sources/remote-mdx.mdx +40 -0
  208. package/docs/content/sources/sanity.mdx +29 -0
  209. package/docs/content/sources/strapi.mdx +31 -0
  210. package/docs/content/syntax.mdx +81 -2
  211. package/docs/content/variables.mdx +41 -0
  212. package/docs/content/versioning.mdx +1 -1
  213. package/docs/discoverability/agent-discovery.mdx +30 -3
  214. package/docs/discoverability/index.mdx +3 -2
  215. package/docs/discoverability/llms-txt.mdx +1 -1
  216. package/docs/discoverability/markdown.mdx +2 -2
  217. package/docs/discoverability/metadata.mdx +17 -0
  218. package/docs/discoverability/open-graph.mdx +5 -3
  219. package/docs/discoverability/rss.mdx +1 -1
  220. package/docs/references/api-pages.mdx +74 -0
  221. package/docs/references/asyncapi.mdx +2 -2
  222. package/docs/references/graphql.mdx +3 -3
  223. package/docs/references/meta.ts +1 -1
  224. package/docs/references/openapi.mdx +106 -5
  225. package/docs/references/scalar.mdx +3 -1
  226. package/package.json +36 -1
  227. package/skills/blume/SKILL.md +3 -0
  228. package/skills/blume-migrate/SKILL.md +5 -5
  229. package/skills/blume-migrate/references/docusaurus.md +3 -3
  230. package/skills/blume-migrate/references/fumadocs.md +1 -1
  231. package/skills/blume-migrate/references/mintlify.md +37 -19
  232. package/skills/blume-migrate/references/nextra.md +3 -3
  233. package/skills/blume-migrate/references/starlight.md +2 -1
  234. package/skills/blume-migrate/scripts/mintlify-codemod.mjs +67 -16
  235. package/skills/blume-write-skill/SKILL.md +82 -0
  236. package/src/ai/agent-readability.ts +4 -3
  237. package/src/ai/agent-surface.ts +9 -7
  238. package/src/ai/ai-catalog.ts +12 -5
  239. package/src/ai/api/handlers.ts +2 -2
  240. package/src/ai/api/spec.ts +2 -2
  241. package/src/ai/api-catalog.ts +6 -2
  242. package/src/ai/ask-context.ts +73 -20
  243. package/src/ai/ask-data.ts +6 -0
  244. package/src/ai/ask-tools.ts +142 -0
  245. package/src/ai/ask.ts +354 -76
  246. package/src/ai/changelog-markdown.ts +2 -2
  247. package/src/ai/component-markdown.ts +75 -0
  248. package/src/ai/cors.ts +2 -0
  249. package/src/ai/index.ts +12 -0
  250. package/src/ai/link-headers.ts +14 -5
  251. package/src/ai/llms.ts +24 -9
  252. package/src/ai/markdown.ts +2 -1
  253. package/src/ai/mcp/data.ts +6 -0
  254. package/src/ai/mcp/discovery.ts +2 -2
  255. package/src/ai/mcp/query.ts +2 -2
  256. package/src/ai/mcp/server.ts +2 -2
  257. package/src/ai/openapi-components.ts +31 -9
  258. package/src/ai/relative-links.ts +42 -26
  259. package/src/ai/serializers.ts +2 -1
  260. package/src/ai/site-skill.ts +274 -0
  261. package/src/ai/skills.ts +49 -3
  262. package/src/ai/tar.ts +139 -12
  263. package/src/ai/write-skill.ts +97 -0
  264. package/src/analytics/head.ts +4 -0
  265. package/src/analytics/index.ts +5 -0
  266. package/src/analytics/one-dollar-stats.ts +86 -0
  267. package/src/analytics/schema.ts +2 -0
  268. package/src/astro/generate.ts +133 -19
  269. package/src/astro/include-hmr.ts +31 -12
  270. package/src/astro/include-refresh.ts +19 -8
  271. package/src/astro/index.ts +1 -0
  272. package/src/astro/integration.ts +143 -14
  273. package/src/astro/module-types.ts +6 -0
  274. package/src/astro/runtime-modules.ts +28 -13
  275. package/src/astro/templates.ts +364 -67
  276. package/src/astro/variables.ts +31 -0
  277. package/src/audit/catalog.ts +19 -0
  278. package/src/audit/checks/contrast.ts +183 -0
  279. package/src/audit/checks/i18n.ts +2 -3
  280. package/src/audit/checks/indexability.ts +2 -3
  281. package/src/audit/checks/links.ts +13 -13
  282. package/src/audit/checks/sitemap.ts +2 -3
  283. package/src/audit/graph.ts +3 -1
  284. package/src/audit/redirects.ts +46 -15
  285. package/src/audit/run.ts +14 -9
  286. package/src/audit/snapshot.ts +5 -0
  287. package/src/audit/types.ts +2 -1
  288. package/src/blume-modules.d.ts +7 -0
  289. package/src/captcha/client.ts +152 -0
  290. package/src/captcha/hcaptcha.ts +36 -0
  291. package/src/captcha/index.ts +28 -0
  292. package/src/captcha/schema.ts +32 -0
  293. package/src/captcha/turnstile.ts +38 -0
  294. package/src/captcha/verify.ts +71 -0
  295. package/src/cli/args.ts +32 -0
  296. package/src/cli/command-meta.ts +5 -0
  297. package/src/cli/commands/audit.ts +4 -1
  298. package/src/cli/commands/doctor.ts +25 -17
  299. package/src/cli/commands/eval.ts +19 -11
  300. package/src/cli/commands/skill.ts +96 -0
  301. package/src/cli/commands/translate.ts +9 -12
  302. package/src/cli/commands/validate.ts +3 -1
  303. package/src/cli/dev-lock.ts +157 -37
  304. package/src/cli/index.ts +5 -0
  305. package/src/cli/report-format.ts +11 -6
  306. package/src/cli/required-secrets.ts +71 -29
  307. package/src/components/BlumePage.astro +2 -0
  308. package/src/components/colors.ts +19 -0
  309. package/src/components/content/ApiEndpoint.astro +18 -0
  310. package/src/components/content/ApiField.astro +79 -0
  311. package/src/components/content/ApiPlayground.astro +62 -0
  312. package/src/components/content/ApiRail.astro +19 -0
  313. package/src/components/content/Badge.astro +5 -3
  314. package/src/components/content/Color.astro +1 -0
  315. package/src/components/content/Component.astro +2 -2
  316. package/src/components/content/FileTree.astro +1 -0
  317. package/src/components/content/GithubInfo.astro +1 -0
  318. package/src/components/content/Panel.astro +1 -0
  319. package/src/components/content/ParamField.astro +25 -0
  320. package/src/components/content/RequestExample.astro +17 -0
  321. package/src/components/content/ResponseExample.astro +17 -0
  322. package/src/components/content/ResponseField.astro +32 -0
  323. package/src/components/content/Step.astro +1 -0
  324. package/src/components/content/Tab.astro +0 -1
  325. package/src/components/content/Tabs.astro +4 -0
  326. package/src/components/content/Tile.astro +1 -0
  327. package/src/components/content/Tooltip.astro +1 -0
  328. package/src/components/content/Tree.astro +1 -0
  329. package/src/components/content/TypeTable.astro +4 -1
  330. package/src/components/content/View.astro +21 -0
  331. package/src/components/content/ViewSwitcher.astro +168 -0
  332. package/src/components/content/api-field.ts +100 -0
  333. package/src/components/content/api-page.ts +224 -0
  334. package/src/components/content/badge-color.ts +5 -2
  335. package/src/components/content/base-href.ts +13 -36
  336. package/src/components/content/view-switcher.ts +71 -0
  337. package/src/components/index.ts +2 -0
  338. package/src/components/islands/Assistant.astro +10 -1
  339. package/src/components/islands/assistant.tsx +125 -18
  340. package/src/components/islands/base-path.ts +47 -10
  341. package/src/components/islands/code-question.ts +62 -0
  342. package/src/components/islands/hooks.ts +145 -40
  343. package/src/components/islands/support-link.ts +68 -0
  344. package/src/components/islands/webmcp.ts +4 -2
  345. package/src/components/layout/Analytics.astro +11 -2
  346. package/src/components/layout/Banner.astro +14 -10
  347. package/src/components/layout/Breadcrumbs.astro +11 -4
  348. package/src/components/layout/ConsentBanner.astro +62 -0
  349. package/src/components/layout/ConsentHead.astro +38 -0
  350. package/src/components/layout/Directory.astro +94 -0
  351. package/src/components/layout/DiscoveryLinks.astro +9 -5
  352. package/src/components/layout/DrawerSwitchers.astro +51 -0
  353. package/src/components/layout/Empty.astro +2 -2
  354. package/src/components/layout/Header.astro +124 -82
  355. package/src/components/layout/LanguageSwitcher.astro +50 -17
  356. package/src/components/layout/NarrationPlayer.astro +1085 -0
  357. package/src/components/layout/NavSelector.astro +35 -9
  358. package/src/components/layout/NavTabMenu.astro +3 -3
  359. package/src/components/layout/NavTree.astro +16 -6
  360. package/src/components/layout/PageActions.astro +4 -3
  361. package/src/components/layout/PageFeedback.astro +54 -49
  362. package/src/components/layout/PageLayout.astro +78 -9
  363. package/src/components/layout/Pagination.astro +3 -3
  364. package/src/components/layout/ReferenceLayout.astro +17 -6
  365. package/src/components/layout/RelatedPages.astro +42 -0
  366. package/src/components/layout/RootLayout.astro +313 -50
  367. package/src/components/layout/Search.astro +64 -30
  368. package/src/components/layout/SiteFooter.astro +124 -0
  369. package/src/components/layout/SiteMetatags.astro +16 -0
  370. package/src/components/layout/VersionBanner.astro +2 -2
  371. package/src/components/layout/analytics-client.ts +12 -0
  372. package/src/components/layout/consent/native.ts +79 -0
  373. package/src/components/layout/consent/types.ts +37 -0
  374. package/src/components/layout/footer-links.ts +53 -0
  375. package/src/components/layout/footer-socials.ts +87 -0
  376. package/src/components/layout/locale-redirect.ts +107 -0
  377. package/src/components/layout/nav-utils.ts +83 -0
  378. package/src/components/layout/page-feedback.ts +96 -0
  379. package/src/components/layout/search/analytics.ts +98 -0
  380. package/src/components/layout/search/flexsearch.ts +17 -5
  381. package/src/components/layout/search/orama-cloud.ts +26 -14
  382. package/src/components/layout/search/types.ts +20 -0
  383. package/src/components/layout/search/typesense.ts +5 -1
  384. package/src/components/layout/toc-active.ts +41 -0
  385. package/src/components/layout/toc-element.ts +8 -14
  386. package/src/components/openapi/ApiTagOperations.astro +2 -2
  387. package/src/components/openapi/AsyncApiOperation.astro +7 -4
  388. package/src/components/openapi/GraphqlChip.astro +2 -2
  389. package/src/components/openapi/Operation.astro +163 -13
  390. package/src/components/openapi/Playground.astro +4 -4
  391. package/src/components/openapi/RequestBody.astro +6 -4
  392. package/src/components/openapi/RequestPanel.astro +63 -8
  393. package/src/components/openapi/Responses.astro +6 -4
  394. package/src/components/openapi/SchemaTable.astro +7 -0
  395. package/src/components/openapi/async-snippets.ts +4 -4
  396. package/src/components/openapi/async.ts +38 -6
  397. package/src/components/openapi/code-samples.ts +97 -0
  398. package/src/components/openapi/helpers.ts +19 -9
  399. package/src/components/openapi/message-composer.ts +6 -1
  400. package/src/components/openapi/message.ts +17 -2
  401. package/src/components/openapi/operation-model.ts +81 -11
  402. package/src/components/openapi/panel.ts +4 -2
  403. package/src/components/openapi/param-style.ts +181 -0
  404. package/src/components/openapi/playground-client.ts +73 -16
  405. package/src/components/openapi/request.ts +190 -26
  406. package/src/components/openapi/schema-tree.ts +30 -24
  407. package/src/components/openapi/security.ts +6 -3
  408. package/src/components/openapi/snippets.ts +953 -13
  409. package/src/components/openapi/ws-client.ts +18 -2
  410. package/src/components/props.ts +6 -0
  411. package/src/consent/client.ts +95 -0
  412. package/src/consent/clients.ts +19 -0
  413. package/src/consent/ethyca.ts +71 -0
  414. package/src/consent/head.ts +24 -0
  415. package/src/consent/index.ts +37 -0
  416. package/src/consent/init.ts +29 -0
  417. package/src/consent/native.ts +36 -0
  418. package/src/consent/osano.ts +59 -0
  419. package/src/consent/schema.ts +30 -0
  420. package/src/core/base-path.ts +62 -16
  421. package/src/core/builtin-tags.ts +5 -0
  422. package/src/core/client-address.ts +19 -0
  423. package/src/core/config-input.ts +203 -27
  424. package/src/core/data.ts +44 -4
  425. package/src/core/diagnostics.ts +5 -2
  426. package/src/core/directive-diagnostics.ts +99 -0
  427. package/src/core/footer.ts +26 -0
  428. package/src/core/frontmatter.ts +21 -18
  429. package/src/core/graph.ts +39 -36
  430. package/src/core/heading-markers.ts +5 -18
  431. package/src/core/i18n-ui.ts +82 -2
  432. package/src/core/i18n.ts +31 -3
  433. package/src/core/includes.ts +20 -3
  434. package/src/core/last-modified.ts +25 -3
  435. package/src/core/links.ts +16 -2
  436. package/src/core/locale-links.ts +5 -1
  437. package/src/core/localizable.ts +26 -0
  438. package/src/core/meta.ts +33 -19
  439. package/src/core/navigation.ts +71 -20
  440. package/src/core/page-modes.ts +56 -0
  441. package/src/core/project-graph.ts +138 -10
  442. package/src/core/redirect-patterns.ts +491 -0
  443. package/src/core/related.ts +131 -0
  444. package/src/core/schema.ts +342 -68
  445. package/src/core/sources/contentful-rich-text.ts +27 -20
  446. package/src/core/sources/filesystem.ts +20 -2
  447. package/src/core/sources/github-releases.ts +25 -6
  448. package/src/core/sources/lexical.ts +23 -18
  449. package/src/core/sources/lower.ts +201 -34
  450. package/src/core/sources/mdx-remote.ts +51 -16
  451. package/src/core/sources/normalize.ts +327 -91
  452. package/src/core/sources/notion.ts +52 -25
  453. package/src/core/sources/obsidian.ts +23 -6
  454. package/src/core/sources/portable-text.ts +38 -21
  455. package/src/core/sources/read.ts +8 -3
  456. package/src/core/sources/strapi-blocks.ts +20 -16
  457. package/src/core/sources/watch.ts +20 -7
  458. package/src/core/standard-schema.ts +10 -6
  459. package/src/core/types.ts +1 -1
  460. package/src/core/ui-packs/ar.ts +43 -0
  461. package/src/core/ui-packs/bg.ts +45 -0
  462. package/src/core/ui-packs/bn.ts +43 -0
  463. package/src/core/ui-packs/ca.ts +46 -0
  464. package/src/core/ui-packs/cs.ts +44 -0
  465. package/src/core/ui-packs/da.ts +45 -0
  466. package/src/core/ui-packs/de.ts +46 -0
  467. package/src/core/ui-packs/el.ts +45 -0
  468. package/src/core/ui-packs/es.ts +46 -0
  469. package/src/core/ui-packs/fa.ts +45 -0
  470. package/src/core/ui-packs/fi.ts +45 -0
  471. package/src/core/ui-packs/fr.ts +46 -0
  472. package/src/core/ui-packs/he.ts +43 -0
  473. package/src/core/ui-packs/hi.ts +44 -0
  474. package/src/core/ui-packs/hr.ts +45 -0
  475. package/src/core/ui-packs/hu.ts +44 -0
  476. package/src/core/ui-packs/id.ts +45 -0
  477. package/src/core/ui-packs/it.ts +45 -0
  478. package/src/core/ui-packs/ja.ts +45 -0
  479. package/src/core/ui-packs/ko.ts +44 -0
  480. package/src/core/ui-packs/nl.ts +46 -0
  481. package/src/core/ui-packs/no.ts +44 -0
  482. package/src/core/ui-packs/pl.ts +45 -0
  483. package/src/core/ui-packs/pt-br.ts +46 -0
  484. package/src/core/ui-packs/pt.ts +45 -0
  485. package/src/core/ui-packs/ro.ts +45 -0
  486. package/src/core/ui-packs/ru.ts +45 -0
  487. package/src/core/ui-packs/sk.ts +44 -0
  488. package/src/core/ui-packs/sr.ts +45 -0
  489. package/src/core/ui-packs/sv.ts +44 -0
  490. package/src/core/ui-packs/th.ts +43 -0
  491. package/src/core/ui-packs/tr.ts +45 -0
  492. package/src/core/ui-packs/uk.ts +45 -0
  493. package/src/core/ui-packs/vi.ts +45 -0
  494. package/src/core/ui-packs/zh-tw.ts +43 -0
  495. package/src/core/ui-packs/zh.ts +43 -0
  496. package/src/core/variables.ts +103 -0
  497. package/src/core/version-cut.ts +52 -15
  498. package/src/deploy/artifacts.ts +104 -14
  499. package/src/deploy/cloudflare-negotiation.ts +39 -17
  500. package/src/deploy/headers.ts +10 -5
  501. package/src/deploy/node-headers.ts +64 -10
  502. package/src/deploy/platforms/cloudflare.ts +44 -3
  503. package/src/deploy/platforms/netlify.ts +34 -1
  504. package/src/deploy/platforms/node.ts +1 -0
  505. package/src/deploy/platforms/static.ts +1 -0
  506. package/src/deploy/platforms/types.ts +8 -0
  507. package/src/deploy/platforms/vercel.ts +38 -2
  508. package/src/deploy/redirects.ts +139 -36
  509. package/src/deploy/robots.ts +2 -2
  510. package/src/deploy/rss.ts +4 -3
  511. package/src/deploy/sitemap.ts +7 -5
  512. package/src/deploy/vercel-negotiation.ts +36 -0
  513. package/src/markdown/api-rail.ts +259 -0
  514. package/src/markdown/base-links.ts +34 -36
  515. package/src/markdown/code-title.ts +35 -9
  516. package/src/markdown/directives.ts +242 -36
  517. package/src/markdown/features.ts +20 -2
  518. package/src/markdown/fence-meta.ts +2 -0
  519. package/src/markdown/include.ts +11 -1
  520. package/src/markdown/index.ts +35 -11
  521. package/src/markdown/math.ts +4 -4
  522. package/src/markdown/mdast.ts +5 -2
  523. package/src/markdown/relative-links.ts +12 -4
  524. package/src/markdown/variables.ts +56 -0
  525. package/src/markdown/views.ts +82 -0
  526. package/src/narration/build.ts +412 -0
  527. package/src/narration/player.ts +249 -0
  528. package/src/narration/provider.ts +29 -0
  529. package/src/narration/script.ts +592 -0
  530. package/src/og/card.ts +136 -11
  531. package/src/og/derive.ts +41 -31
  532. package/src/og/index.ts +1 -0
  533. package/src/openapi/asyncapi.ts +4 -2
  534. package/src/openapi/model.ts +77 -36
  535. package/src/openapi/overlay.ts +256 -0
  536. package/src/openapi/parse.ts +55 -2
  537. package/src/openapi/proxy.ts +63 -10
  538. package/src/openapi/references.ts +21 -5
  539. package/src/openapi/render-mdx.ts +46 -3
  540. package/src/openapi/scalar.ts +40 -6
  541. package/src/openapi/source.ts +1 -1
  542. package/src/ratelimit/cloudflare.ts +54 -0
  543. package/src/ratelimit/index.ts +30 -0
  544. package/src/ratelimit/memory.ts +45 -0
  545. package/src/ratelimit/runtime.ts +229 -0
  546. package/src/ratelimit/schema.ts +28 -0
  547. package/src/ratelimit/upstash.ts +30 -0
  548. package/src/ratelimit/wrangler.ts +70 -0
  549. package/src/reference/asyncapi.ts +2 -2
  550. package/src/reference/graphql.ts +5 -2
  551. package/src/reference/openapi.ts +21 -7
  552. package/src/reference/options.ts +51 -7
  553. package/src/reference/scalar.ts +33 -8
  554. package/src/registry/eject.ts +201 -28
  555. package/src/registry/registry.ts +7 -0
  556. package/src/search/adapters/version-scope.ts +30 -0
  557. package/src/search/documents.ts +93 -28
  558. package/src/search/orama-index.ts +28 -3
  559. package/src/search/pagefind-ranking.ts +39 -0
  560. package/src/search/popular.ts +2 -1
  561. package/src/search/sync/algolia.ts +15 -4
  562. package/src/search/sync/orama-cloud.ts +3 -0
  563. package/src/search/sync/typesense.ts +5 -0
  564. package/src/seo/jsonld.ts +7 -3
  565. package/src/seo/metatags.ts +67 -0
  566. package/src/theme/chrome-icons.ts +1 -0
  567. package/src/theme/color.ts +500 -0
  568. package/src/theme/entry.ts +56 -3
  569. package/src/theme/palette.ts +121 -45
  570. package/src/translate/meta.ts +68 -24
  571. package/src/translate/prompts.ts +1 -0
  572. package/src/translate/run.ts +3 -3
  573. package/src/translate/validate.ts +12 -3
  574. package/src/translate/work-list.ts +56 -17
  575. package/src/upgrade/upgrade.ts +4 -171
  576. package/dist/cli/chunk-3yce002v.js.map +0 -14
  577. package/dist/cli/chunk-5r8g91qn.js.map +0 -34
  578. package/dist/cli/chunk-6dtt0zfn.js.map +0 -10
  579. package/dist/cli/chunk-7mbqtmgb.js.map +0 -10
  580. package/dist/cli/chunk-ddndchfr.js.map +0 -14
  581. package/dist/cli/chunk-esh98wmb.js +0 -23
  582. package/dist/cli/chunk-esh98wmb.js.map +0 -10
  583. package/dist/cli/chunk-hqp2ajnh.js.map +0 -35
  584. package/dist/cli/chunk-hr8ne106.js.map +0 -13
  585. package/dist/cli/chunk-j85scx15.js.map +0 -10
  586. package/dist/cli/chunk-mqc662a6.js +0 -75
  587. package/dist/cli/chunk-mqc662a6.js.map +0 -11
  588. package/dist/cli/chunk-pbg5a4s3.js.map +0 -19
  589. package/dist/cli/chunk-qkb5a8sa.js.map +0 -10
  590. package/dist/cli/chunk-v6ya5kcb.js.map +0 -189
  591. package/dist/cli/chunk-wdrt2k2v.js.map +0 -10
  592. package/dist/cli/chunk-xh43dwgw.js.map +0 -36
  593. package/docs/content/sources.mdx +0 -338
  594. /package/dist/cli/{chunk-zp79m0ts.js.map → chunk-1n228xqb.js.map} +0 -0
  595. /package/dist/cli/{chunk-h2ez8dzb.js.map → chunk-5ffywsmb.js.map} +0 -0
  596. /package/dist/cli/{chunk-g698a744.js.map → chunk-5wj2qwn2.js.map} +0 -0
  597. /package/dist/cli/{chunk-sqw4ekg1.js.map → chunk-amrb6hgh.js.map} +0 -0
  598. /package/dist/cli/{chunk-h7k3nq3v.js.map → chunk-gp84za0h.js.map} +0 -0
  599. /package/dist/cli/{chunk-bfwp9vp6.js.map → chunk-p804f3pe.js.map} +0 -0
  600. /package/dist/cli/{chunk-00gs3wqs.js.map → chunk-ta27feev.js.map} +0 -0
  601. /package/dist/cli/{chunk-bbnwccaz.js.map → chunk-y4ykbark.js.map} +0 -0
@@ -34,9 +34,24 @@ export interface AssistantAdapterOptions {
34
34
  */
35
35
  providerOptions?: AssistantProviderOptions;
36
36
  }
37
+ /** The shared option schema, with the adapter's own key env var default. */
38
+ export declare const sharedOptions: (apiKeyEnv: string) => {
39
+ apiKeyEnv: z.ZodDefault<z.ZodString>;
40
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
41
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
42
+ };
43
+ export declare const GATEWAY_API_KEY_ENV = "AI_GATEWAY_API_KEY";
37
44
  /** Options for {@link gateway}. */
38
45
  export interface AssistantGatewayOptions extends AssistantAdapterOptions {
39
- /** A `provider/model` id routed by the gateway. Defaults to `openai/gpt-5.5`. */
46
+ /**
47
+ * Narration only: how the voice should sound, for speech models that take
48
+ * instructions ("Read calmly, like a teacher").
49
+ */
50
+ instructions?: string;
51
+ /**
52
+ * A `provider/model` id routed by the gateway. Defaults to `openai/gpt-5.5`
53
+ * for the assistant and `openai/tts-1-hd` for narration.
54
+ */
40
55
  model?: string;
41
56
  /**
42
57
  * How much the model reasons before answering. Sent as the AI SDK's
@@ -45,6 +60,8 @@ export interface AssistantGatewayOptions extends AssistantAdapterOptions {
45
60
  * offer the level you pick. Omitted keeps the model's default.
46
61
  */
47
62
  reasoning?: AssistantReasoning;
63
+ /** Narration only: the speech model's voice. Defaults to `alloy`. */
64
+ voice?: string;
48
65
  }
49
66
  export type AssistantGatewayAdapter = AdapterDescriptor<"gateway", AssistantGatewayOptions>;
50
67
  export declare const gatewayAdapterSchema: z.ZodObject<{
@@ -67,12 +84,193 @@ export declare const gatewayAdapterSchema: z.ZodObject<{
67
84
  runtimeDeps: z.ZodArray<z.ZodString>;
68
85
  }, z.core.$strict>;
69
86
  /**
70
- * Route the assistant through the Vercel AI Gateway (the default). `model` is a
87
+ * Route the assistant through the Vercel AI Gateway (the default), or generate
88
+ * narration audio with one of its speech models. `model` is a
71
89
  * `provider/model` string; the key is `AI_GATEWAY_API_KEY`, or Vercel's OIDC
72
90
  * token when deployed there. Needs no provider SDK beyond the `ai` package
73
91
  * Blume ships.
74
92
  */
75
93
  export declare const gateway: (options?: AssistantGatewayOptions) => AssistantGatewayAdapter;
94
+ /** Options for {@link openai}. */
95
+ export interface AssistantOpenAIOptions extends AssistantAdapterOptions {
96
+ /**
97
+ * An OpenAI-compatible endpoint to call instead of OpenAI
98
+ * (`https://llm.internal.example.com/v1`): a self-hosted model or an
99
+ * internal gateway. The route then talks Chat Completions through
100
+ * `@ai-sdk/openai-compatible`, and the docs tools are off unless
101
+ * `ai.assistant.tools` turns them on, since the model may not call tools.
102
+ */
103
+ baseUrl?: string;
104
+ /** The model id (`gpt-5.5`). */
105
+ model: string;
106
+ /**
107
+ * The provider name the AI SDK reports, which a custom endpoint also reads
108
+ * its `providerOptions` under. Defaults to `openai`, or `openai-compatible`
109
+ * with a `baseUrl`.
110
+ */
111
+ name?: string;
112
+ /**
113
+ * How much the model reasons before answering, sent as `reasoning_effort`;
114
+ * with a `baseUrl`, the endpoint has to accept that parameter. Omitted
115
+ * keeps the model's default.
116
+ */
117
+ reasoning?: AssistantReasoning;
118
+ }
119
+ export type AssistantOpenAIAdapter = AdapterDescriptor<"openai", AssistantOpenAIOptions>;
120
+ export declare const openaiAdapterSchema: z.ZodObject<{
121
+ kind: z.ZodLiteral<"openai">;
122
+ options: z.ZodObject<{
123
+ baseUrl: z.ZodOptional<z.ZodURL>;
124
+ model: z.ZodString;
125
+ name: z.ZodOptional<z.ZodString>;
126
+ reasoning: z.ZodOptional<z.ZodEnum<{
127
+ none: "none";
128
+ minimal: "minimal";
129
+ low: "low";
130
+ medium: "medium";
131
+ high: "high";
132
+ xhigh: "xhigh";
133
+ }>>;
134
+ apiKeyEnv: z.ZodDefault<z.ZodString>;
135
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
136
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
137
+ }, z.core.$strict>;
138
+ requiredSecrets: z.ZodArray<z.ZodString>;
139
+ runtimeDeps: z.ZodArray<z.ZodString>;
140
+ }, z.core.$strict>;
141
+ /**
142
+ * Route the assistant to OpenAI, or to any OpenAI-compatible endpoint with
143
+ * `baseUrl`. Reads `OPENAI_API_KEY` and needs `@ai-sdk/openai` installed; a
144
+ * custom endpoint needs `@ai-sdk/openai-compatible` instead, since most
145
+ * don't serve OpenAI's Responses API.
146
+ */
147
+ export declare const openai: (options: AssistantOpenAIOptions) => AssistantOpenAIAdapter;
148
+ /**
149
+ * Options for the deprecated {@link openaiCompatible}: {@link openai}'s, with
150
+ * the endpoint and its key env var required.
151
+ *
152
+ * @deprecated Use {@link AssistantOpenAIOptions}.
153
+ */
154
+ export interface AssistantOpenAICompatibleOptions extends AssistantOpenAIOptions {
155
+ apiKeyEnv: string;
156
+ baseUrl: string;
157
+ }
158
+ /** @deprecated Use {@link AssistantOpenAIAdapter}. */
159
+ export type AssistantOpenAICompatibleAdapter = AssistantOpenAIAdapter;
160
+ /**
161
+ * Route the assistant through an OpenAI-compatible endpoint.
162
+ *
163
+ * @deprecated Use `openai({ baseUrl, model, apiKeyEnv })`, which this calls.
164
+ */
165
+ export declare const openaiCompatible: (options: AssistantOpenAICompatibleOptions) => AssistantOpenAIAdapter;
166
+ /** Options for {@link anthropic}. */
167
+ export interface AssistantAnthropicOptions extends AssistantAdapterOptions {
168
+ /** The Claude model id (`claude-sonnet-5`). */
169
+ model: string;
170
+ /**
171
+ * How much the model reasons before answering. The Anthropic provider
172
+ * maps the level to the model's thinking: an effort on models with
173
+ * adaptive thinking, a thinking budget on older ones, and thinking off for
174
+ * `"none"`. Omitted keeps the model's default.
175
+ */
176
+ reasoning?: AssistantReasoning;
177
+ }
178
+ export type AssistantAnthropicAdapter = AdapterDescriptor<"anthropic", AssistantAnthropicOptions>;
179
+ export declare const anthropicAdapterSchema: z.ZodObject<{
180
+ kind: z.ZodLiteral<"anthropic">;
181
+ options: z.ZodObject<{
182
+ model: z.ZodString;
183
+ reasoning: z.ZodOptional<z.ZodEnum<{
184
+ none: "none";
185
+ minimal: "minimal";
186
+ low: "low";
187
+ medium: "medium";
188
+ high: "high";
189
+ xhigh: "xhigh";
190
+ }>>;
191
+ apiKeyEnv: z.ZodDefault<z.ZodString>;
192
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
193
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
194
+ }, z.core.$strict>;
195
+ requiredSecrets: z.ZodArray<z.ZodString>;
196
+ runtimeDeps: z.ZodArray<z.ZodString>;
197
+ }, z.core.$strict>;
198
+ /**
199
+ * Route the assistant to Anthropic's Claude API. Reads `ANTHROPIC_API_KEY`
200
+ * and needs `@ai-sdk/anthropic` installed.
201
+ */
202
+ export declare const anthropic: (options: AssistantAnthropicOptions) => AssistantAnthropicAdapter;
203
+ /** Options for {@link gemini}. */
204
+ export interface AssistantGeminiOptions extends AssistantAdapterOptions {
205
+ /** The Gemini model id (`gemini-3.5-flash`). */
206
+ model: string;
207
+ /**
208
+ * How much the model reasons before answering. The Google provider maps
209
+ * the level to the model's thinking level, or to a thinking budget on
210
+ * models that take one. Omitted keeps the model's default.
211
+ */
212
+ reasoning?: AssistantReasoning;
213
+ }
214
+ export type AssistantGeminiAdapter = AdapterDescriptor<"gemini", AssistantGeminiOptions>;
215
+ export declare const geminiAdapterSchema: z.ZodObject<{
216
+ kind: z.ZodLiteral<"gemini">;
217
+ options: z.ZodObject<{
218
+ model: z.ZodString;
219
+ reasoning: z.ZodOptional<z.ZodEnum<{
220
+ none: "none";
221
+ minimal: "minimal";
222
+ low: "low";
223
+ medium: "medium";
224
+ high: "high";
225
+ xhigh: "xhigh";
226
+ }>>;
227
+ apiKeyEnv: z.ZodDefault<z.ZodString>;
228
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
229
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
230
+ }, z.core.$strict>;
231
+ requiredSecrets: z.ZodArray<z.ZodString>;
232
+ runtimeDeps: z.ZodArray<z.ZodString>;
233
+ }, z.core.$strict>;
234
+ /**
235
+ * Route the assistant to Google's Gemini API. Reads `GEMINI_API_KEY` and
236
+ * needs `@ai-sdk/google` installed.
237
+ */
238
+ export declare const gemini: (options: AssistantGeminiOptions) => AssistantGeminiAdapter;
239
+ /** Options for {@link grok}. */
240
+ export interface AssistantGrokOptions extends AssistantAdapterOptions {
241
+ /** The Grok model id (`grok-4.7`). */
242
+ model: string;
243
+ /**
244
+ * How much the model reasons before answering, sent as xAI's reasoning
245
+ * effort on the models that take one. Omitted keeps the model's default.
246
+ */
247
+ reasoning?: AssistantReasoning;
248
+ }
249
+ export type AssistantGrokAdapter = AdapterDescriptor<"grok", AssistantGrokOptions>;
250
+ export declare const grokAdapterSchema: z.ZodObject<{
251
+ kind: z.ZodLiteral<"grok">;
252
+ options: z.ZodObject<{
253
+ model: z.ZodString;
254
+ reasoning: z.ZodOptional<z.ZodEnum<{
255
+ none: "none";
256
+ minimal: "minimal";
257
+ low: "low";
258
+ medium: "medium";
259
+ high: "high";
260
+ xhigh: "xhigh";
261
+ }>>;
262
+ apiKeyEnv: z.ZodDefault<z.ZodString>;
263
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
264
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
265
+ }, z.core.$strict>;
266
+ requiredSecrets: z.ZodArray<z.ZodString>;
267
+ runtimeDeps: z.ZodArray<z.ZodString>;
268
+ }, z.core.$strict>;
269
+ /**
270
+ * Route the assistant to xAI's Grok models. Reads `XAI_API_KEY` and needs
271
+ * `@ai-sdk/xai` installed.
272
+ */
273
+ export declare const grok: (options: AssistantGrokOptions) => AssistantGrokAdapter;
76
274
  /** Options for {@link openrouter}. */
77
275
  export interface AssistantOpenRouterOptions extends AssistantAdapterOptions {
78
276
  /** The OpenRouter model id (`anthropic/claude-sonnet-4-5`). */
@@ -176,53 +374,8 @@ export declare const inkeepAdapterSchema: z.ZodObject<{
176
374
  * Reads `INKEEP_API_KEY` and needs `@ai-sdk/openai-compatible` installed.
177
375
  */
178
376
  export declare const inkeep: (options: AssistantInkeepOptions) => AssistantInkeepAdapter;
179
- /** Options for {@link openaiCompatible}. */
180
- export interface AssistantOpenAICompatibleOptions extends AssistantAdapterOptions {
181
- /** Name of the env var holding the endpoint's API key. */
182
- apiKeyEnv: string;
183
- /** The endpoint's base URL (`https://my-gateway.example.com/v1`). */
184
- baseUrl: string;
185
- /** The model id the endpoint serves. */
186
- model: string;
187
- /** The provider name the AI SDK reports. Defaults to `openai-compatible`. */
188
- name?: string;
189
- /**
190
- * How much the model reasons before answering, sent in the request as
191
- * `reasoning_effort`, so the endpoint has to accept that parameter.
192
- * Omitted keeps the model's default.
193
- */
194
- reasoning?: AssistantReasoning;
195
- }
196
- export type AssistantOpenAICompatibleAdapter = AdapterDescriptor<"openai-compatible", AssistantOpenAICompatibleOptions>;
197
- export declare const openaiCompatibleAdapterSchema: z.ZodObject<{
198
- kind: z.ZodLiteral<"openai-compatible">;
199
- options: z.ZodObject<{
200
- apiKeyEnv: z.ZodString;
201
- baseUrl: z.ZodURL;
202
- model: z.ZodString;
203
- name: z.ZodDefault<z.ZodString>;
204
- reasoning: z.ZodOptional<z.ZodEnum<{
205
- none: "none";
206
- minimal: "minimal";
207
- low: "low";
208
- medium: "medium";
209
- high: "high";
210
- xhigh: "xhigh";
211
- }>>;
212
- headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
213
- providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
214
- }, z.core.$strict>;
215
- requiredSecrets: z.ZodArray<z.ZodString>;
216
- runtimeDeps: z.ZodArray<z.ZodString>;
217
- }, z.core.$strict>;
218
- /**
219
- * Route the assistant through any OpenAI-compatible endpoint: supply its `baseUrl`,
220
- * the `model` it serves, and the env var holding its key. Needs
221
- * `@ai-sdk/openai-compatible` installed.
222
- */
223
- export declare const openaiCompatible: (options: AssistantOpenAICompatibleOptions) => AssistantOpenAICompatibleAdapter;
224
- /** Which backend answers the assistant: the value of `gateway()`, `openrouter()`, … */
225
- export type AssistantAdapter = AssistantGatewayAdapter | AssistantOpenRouterAdapter | AssistantLlmGatewayAdapter | AssistantInkeepAdapter | AssistantOpenAICompatibleAdapter;
377
+ /** Which backend answers the assistant: the value of `gateway()`, `openai()`, … */
378
+ export type AssistantAdapter = AssistantGatewayAdapter | AssistantOpenAIAdapter | AssistantAnthropicAdapter | AssistantGeminiAdapter | AssistantGrokAdapter | AssistantOpenRouterAdapter | AssistantLlmGatewayAdapter | AssistantInkeepAdapter;
226
379
  /**
227
380
  * Error params for `ai.assistant`: a 1.x flat provider field (`model`, `apiKeyEnv`,
228
381
  * `baseUrl`, `headers`, `reasoning`) names the adapter call it moves into —
@@ -256,9 +409,11 @@ export declare const assistantAdapterSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
256
409
  requiredSecrets: z.ZodArray<z.ZodString>;
257
410
  runtimeDeps: z.ZodArray<z.ZodString>;
258
411
  }, z.core.$strict>, z.ZodObject<{
259
- kind: z.ZodLiteral<"openrouter">;
412
+ kind: z.ZodLiteral<"openai">;
260
413
  options: z.ZodObject<{
414
+ baseUrl: z.ZodOptional<z.ZodURL>;
261
415
  model: z.ZodString;
416
+ name: z.ZodOptional<z.ZodString>;
262
417
  reasoning: z.ZodOptional<z.ZodEnum<{
263
418
  none: "none";
264
419
  minimal: "minimal";
@@ -274,9 +429,8 @@ export declare const assistantAdapterSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
274
429
  requiredSecrets: z.ZodArray<z.ZodString>;
275
430
  runtimeDeps: z.ZodArray<z.ZodString>;
276
431
  }, z.core.$strict>, z.ZodObject<{
277
- kind: z.ZodLiteral<"llmgateway">;
432
+ kind: z.ZodLiteral<"anthropic">;
278
433
  options: z.ZodObject<{
279
- baseUrl: z.ZodDefault<z.ZodURL>;
280
434
  model: z.ZodString;
281
435
  reasoning: z.ZodOptional<z.ZodEnum<{
282
436
  none: "none";
@@ -293,10 +447,35 @@ export declare const assistantAdapterSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
293
447
  requiredSecrets: z.ZodArray<z.ZodString>;
294
448
  runtimeDeps: z.ZodArray<z.ZodString>;
295
449
  }, z.core.$strict>, z.ZodObject<{
296
- kind: z.ZodLiteral<"inkeep">;
450
+ kind: z.ZodLiteral<"gemini">;
451
+ options: z.ZodObject<{
452
+ model: z.ZodString;
453
+ reasoning: z.ZodOptional<z.ZodEnum<{
454
+ none: "none";
455
+ minimal: "minimal";
456
+ low: "low";
457
+ medium: "medium";
458
+ high: "high";
459
+ xhigh: "xhigh";
460
+ }>>;
461
+ apiKeyEnv: z.ZodDefault<z.ZodString>;
462
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
463
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
464
+ }, z.core.$strict>;
465
+ requiredSecrets: z.ZodArray<z.ZodString>;
466
+ runtimeDeps: z.ZodArray<z.ZodString>;
467
+ }, z.core.$strict>, z.ZodObject<{
468
+ kind: z.ZodLiteral<"grok">;
297
469
  options: z.ZodObject<{
298
- baseUrl: z.ZodDefault<z.ZodURL>;
299
470
  model: z.ZodString;
471
+ reasoning: z.ZodOptional<z.ZodEnum<{
472
+ none: "none";
473
+ minimal: "minimal";
474
+ low: "low";
475
+ medium: "medium";
476
+ high: "high";
477
+ xhigh: "xhigh";
478
+ }>>;
300
479
  apiKeyEnv: z.ZodDefault<z.ZodString>;
301
480
  headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
302
481
  providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
@@ -304,12 +483,9 @@ export declare const assistantAdapterSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
304
483
  requiredSecrets: z.ZodArray<z.ZodString>;
305
484
  runtimeDeps: z.ZodArray<z.ZodString>;
306
485
  }, z.core.$strict>, z.ZodObject<{
307
- kind: z.ZodLiteral<"openai-compatible">;
486
+ kind: z.ZodLiteral<"openrouter">;
308
487
  options: z.ZodObject<{
309
- apiKeyEnv: z.ZodString;
310
- baseUrl: z.ZodURL;
311
488
  model: z.ZodString;
312
- name: z.ZodDefault<z.ZodString>;
313
489
  reasoning: z.ZodOptional<z.ZodEnum<{
314
490
  none: "none";
315
491
  minimal: "minimal";
@@ -318,6 +494,37 @@ export declare const assistantAdapterSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
318
494
  high: "high";
319
495
  xhigh: "xhigh";
320
496
  }>>;
497
+ apiKeyEnv: z.ZodDefault<z.ZodString>;
498
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
499
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
500
+ }, z.core.$strict>;
501
+ requiredSecrets: z.ZodArray<z.ZodString>;
502
+ runtimeDeps: z.ZodArray<z.ZodString>;
503
+ }, z.core.$strict>, z.ZodObject<{
504
+ kind: z.ZodLiteral<"llmgateway">;
505
+ options: z.ZodObject<{
506
+ baseUrl: z.ZodDefault<z.ZodURL>;
507
+ model: z.ZodString;
508
+ reasoning: z.ZodOptional<z.ZodEnum<{
509
+ none: "none";
510
+ minimal: "minimal";
511
+ low: "low";
512
+ medium: "medium";
513
+ high: "high";
514
+ xhigh: "xhigh";
515
+ }>>;
516
+ apiKeyEnv: z.ZodDefault<z.ZodString>;
517
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
518
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
519
+ }, z.core.$strict>;
520
+ requiredSecrets: z.ZodArray<z.ZodString>;
521
+ runtimeDeps: z.ZodArray<z.ZodString>;
522
+ }, z.core.$strict>, z.ZodObject<{
523
+ kind: z.ZodLiteral<"inkeep">;
524
+ options: z.ZodObject<{
525
+ baseUrl: z.ZodDefault<z.ZodURL>;
526
+ model: z.ZodString;
527
+ apiKeyEnv: z.ZodDefault<z.ZodString>;
321
528
  headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
322
529
  providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
323
530
  }, z.core.$strict>;
@@ -357,6 +564,12 @@ export interface AskBackendTemplate {
357
564
  export interface AskBackend {
358
565
  /** Whether Blume grounds answers in the docs (Inkeep retrieves itself). */
359
566
  grounded: boolean;
567
+ /**
568
+ * Whether the docs tools are on when `ai.assistant.tools` is unset: yes for
569
+ * the hosted model catalogs, whose models call tools, and no for an
570
+ * OpenAI-compatible backend, which may be a local model that can't.
571
+ */
572
+ toolsByDefault: boolean;
360
573
  kind: AssistantAdapterKind;
361
574
  /** Human-readable adapter name for diagnostics ("AI Gateway"). */
362
575
  label: string;
@@ -19,6 +19,6 @@
19
19
  * schema validates and the generated `/api/ask` route inlines as literals;
20
20
  * nothing here runs at request time.
21
21
  */
22
- export { gateway, inkeep, llmgateway, openaiCompatible, openrouter, } from "./ask.ts";
23
- export type { AssistantAdapter, AssistantAdapterOptions, AssistantGatewayAdapter, AssistantGatewayOptions, AssistantInkeepAdapter, AssistantInkeepOptions, AssistantLlmGatewayAdapter, AssistantLlmGatewayOptions, AssistantOpenAICompatibleAdapter, AssistantOpenAICompatibleOptions, AssistantOpenRouterAdapter, AssistantOpenRouterOptions, AssistantProviderOptions, AssistantReasoning, } from "./ask.ts";
22
+ export { anthropic, gateway, gemini, grok, inkeep, llmgateway, openai, openaiCompatible, openrouter, } from "./ask.ts";
23
+ export type { AssistantAdapter, AssistantAdapterOptions, AssistantAnthropicAdapter, AssistantAnthropicOptions, AssistantGatewayAdapter, AssistantGatewayOptions, AssistantGeminiAdapter, AssistantGeminiOptions, AssistantGrokAdapter, AssistantGrokOptions, AssistantInkeepAdapter, AssistantInkeepOptions, AssistantLlmGatewayAdapter, AssistantLlmGatewayOptions, AssistantOpenAIAdapter, AssistantOpenAICompatibleAdapter, AssistantOpenAICompatibleOptions, AssistantOpenAIOptions, AssistantOpenRouterAdapter, AssistantOpenRouterOptions, AssistantProviderOptions, AssistantReasoning, } from "./ask.ts";
24
24
  export type { AdapterDescriptor } from "../core/adapter.ts";
@@ -20,5 +20,12 @@ import type { ResolvedConfig } from "../core/schema.ts";
20
20
  * headers. Targets are
21
21
  * root-relative under `deployment.base` — RFC 8288 resolves them against the
22
22
  * request URL. Returns null when nothing is advertisable.
23
+ *
24
+ * `surface` is where the header is sent. A deployed site (`"build"`) serves
25
+ * every target. The dev server (`"dev"`) serves the routes — the JSON API's
26
+ * OpenAPI document and the Markdown mirror — but not the files `blume build`
27
+ * writes after the build (the API and AI catalogs, `agent-readability.json`,
28
+ * `llms.txt`), so its header leaves those out rather than point agents at
29
+ * 404s.
23
30
  */
24
- export declare const buildHomeLinkHeader: (config: ResolvedConfig, routePaths: readonly string[]) => string | null;
31
+ export declare const buildHomeLinkHeader: (config: ResolvedConfig, routePaths: readonly string[], surface?: "build" | "dev") => string | null;
@@ -23,9 +23,12 @@ import type { OpenApiData } from "../openapi/model.ts";
23
23
  * endpoint and what it does is the part that was missing altogether.
24
24
  *
25
25
  * `specs` is the parsed `blume:openapi` data — empty when the project has no
26
- * API reference, in which case every serializer declines.
26
+ * API reference, in which case every serializer declines. `deployBase` is the
27
+ * configured `deployment.base`: operation routes carry `basePath` but not it,
28
+ * and the links written here are made after the agent surfaces rebase the
29
+ * page's own links, so they take it here, as the rendered page's do.
27
30
  */
28
- export declare const openapiComponentSerializers: (specs: OpenApiData) => {
31
+ export declare const openapiComponentSerializers: (specs: OpenApiData, deployBase?: string) => {
29
32
  /**
30
33
  * The spec-level block at the top of the overview page: its version and
31
34
  * where the API lives. The tag sections that follow are real Markdown
@@ -6,14 +6,16 @@ import type { BlumeProject } from "../core/project-graph.ts";
6
6
  * link lands on `/install`; the rendered page rewrites it to the route it
7
7
  * means (`markdown/relative-links.ts`), and the Markdown an agent reads gets
8
8
  * the same rewrite from the same resolver (`resolveRelativeHref`), so both
9
- * point at one page. Root-relative page links (`[x](/guide)`,
10
- * `<Card href="/guide">`) get what the rendered page gives them too: the
11
- * `deployment.base` + `basePath` prefix (`markdown/base-links.ts`,
12
- * `components/content/base-href.ts`) and, on a page in a prefixed locale,
9
+ * point at one page. Root-relative links (`[x](/guide)`,
10
+ * `<Card href="/guide">`, `![logo](/logo.png)`) get what the rendered page
11
+ * gives them too (`markdown/base-links.ts`,
12
+ * `components/content/base-href.ts`): a page link the `deployment.base` +
13
+ * `basePath` prefix, a public file (`/spec.pdf`) or image the
14
+ * `deployment.base` alone, and, on a page in a prefixed locale, a page link
13
15
  * that locale's copy of the route when it is served
14
- * (`components/layout/LocaleLinks.astro`). Inline links, component `href`s,
15
- * and reference definitions are rewritten; fenced and inline code, images,
16
- * asset links, and external URLs are left as written.
16
+ * (`components/layout/LocaleLinks.astro`). Inline links, images, component
17
+ * `href`s, and reference definitions are rewritten; fenced and inline code,
18
+ * relative images and asset links, and external URLs are left as written.
17
19
  */
18
20
  /** The page a Markdown text was written for. */
19
21
  export interface LinkedPage {
@@ -0,0 +1,26 @@
1
+ import type { BlumeProject } from "../core/project-graph.ts";
2
+ import type { SkillArtifact } from "./skills.ts";
3
+ /**
4
+ * The site's own agent skill (`agents.skillMd`): a `SKILL.md` in the Agent
5
+ * Skills format, built from what the build already knows — the site's title
6
+ * and description, how to read any page as Markdown, llms.txt and the MCP
7
+ * server, the API references, and a map of the docs with each page's one-line
8
+ * description. No model writes it, so it costs nothing and is current with
9
+ * every build: a guide to the docs rather than a summary of the product. A
10
+ * hand-written skill of the same name in `agents.skills` replaces it.
11
+ */
12
+ /** The most pages the map lists; llms.txt holds the rest. */
13
+ export declare const MAX_SKILL_PAGES = 200;
14
+ /** Where the site skill is served besides the discovery index. */
15
+ export declare const SKILL_MD_PATH = "/skill.md";
16
+ /**
17
+ * The site skill's name: the title as a skill name (lowercase alphanumerics
18
+ * and single hyphens), else the site's host, for a title with no Latin
19
+ * letters in it.
20
+ */
21
+ export declare const siteSkillName: (project: BlumeProject) => string;
22
+ /**
23
+ * The generated site skill, or `null` when `agents.skillMd` is off or there
24
+ * is no `deployment.site` to make its links absolute.
25
+ */
26
+ export declare const buildSiteSkill: (project: BlumeProject) => SkillArtifact | null;
@@ -10,6 +10,8 @@ import type { ResolvedConfig } from "../core/schema.ts";
10
10
  */
11
11
  export declare const AGENT_SKILLS_DIR = "/.well-known/agent-skills";
12
12
  export declare const AGENT_SKILLS_INDEX_PATH = "/.well-known/agent-skills/index.json";
13
+ /** The Agent Skills spec caps `description` at 1024 characters. */
14
+ export declare const SKILL_DESCRIPTION_MAX = 1024;
13
15
  /** One publishable skill artifact plus its index entry. */
14
16
  export interface SkillArtifact {
15
17
  /** Raw bytes to publish (the digest is computed over exactly these). */
@@ -32,9 +34,26 @@ export interface CollectedSkills {
32
34
  * hold a `SKILL.md` (the layout `npx skills add` consumes). Subdirectories
33
35
  * without one are ignored silently — the directory may hold other assets —
34
36
  * while a present-but-invalid skill earns a warning so it isn't dropped
35
- * behind the publisher's back.
37
+ * behind the publisher's back. Two directories declaring the same `name`
38
+ * would publish to the same artifact path under two index entries, so the
39
+ * first directory in sorted order keeps the name and the other is skipped
40
+ * with a warning naming both.
36
41
  */
37
42
  export declare const collectSkills: (dir: string) => Promise<CollectedSkills>;
43
+ /** A skill that is one `SKILL.md`, published verbatim. */
44
+ export declare const skillMdArtifact: (name: string, description: string, markdown: string) => SkillArtifact;
45
+ /**
46
+ * Whether the build generates the site's own skill (`agents.skillMd`): on,
47
+ * and with a `deployment.site` to make its links absolute, since an installed
48
+ * skill is read away from the site.
49
+ */
50
+ export declare const generatesSiteSkill: (config: ResolvedConfig) => boolean;
51
+ /**
52
+ * Whether a skills discovery index is served: from `agents.skills`, or for
53
+ * the generated site skill alone. On an advertised config (see
54
+ * `advertisedConfig`), both are already switched off when nothing published.
55
+ */
56
+ export declare const servesSkillsIndex: (config: ResolvedConfig) => boolean;
38
57
  /**
39
58
  * The discovery index (v0.2.0 schema). Artifact URLs are path-absolute under
40
59
  * `deployment.base` — the RFC resolves them against the index origin.
@@ -18,8 +18,6 @@ export interface TarEntry {
18
18
  }
19
19
  /**
20
20
  * Build a gzipped ustar archive of the given files, in the given order. Paths
21
- * longer than the ustar `name` field or escaping the archive root throw to
22
- * surface a programming error — nanotar would silently truncate an oversized
23
- * name into a corrupt archive, so the validation stays here.
21
+ * escaping the archive root throw to surface a programming error.
24
22
  */
25
23
  export declare const buildTarGz: (entries: readonly TarEntry[]) => Uint8Array;
@@ -48,6 +48,8 @@ export { logrocket } from "./logrocket.ts";
48
48
  export type { LogrocketAdapter, LogrocketOptions } from "./logrocket.ts";
49
49
  export { mixpanel } from "./mixpanel.ts";
50
50
  export type { MixpanelAdapter, MixpanelOptions, MixpanelRegion, } from "./mixpanel.ts";
51
+ export { oneDollarStats } from "./one-dollar-stats.ts";
52
+ export type { OneDollarStatsAdapter, OneDollarStatsOptions, } from "./one-dollar-stats.ts";
51
53
  export { pirsch } from "./pirsch.ts";
52
54
  export type { PirschAdapter, PirschOptions } from "./pirsch.ts";
53
55
  export { plausible } from "./plausible.ts";
@@ -0,0 +1,48 @@
1
+ import { z } from "zod";
2
+ import type { AdapterDescriptor } from "../core/adapter.ts";
3
+ import type { HeadScript } from "./head.ts";
4
+ /** The script OneDollarStats' install snippet loads. */
5
+ export declare const ONE_DOLLAR_STATS_SCRIPT_SRC = "https://assets.onedollarstats.com/stonks.js";
6
+ /** The options {@link oneDollarStats} checks itself. */
7
+ export interface OneDollarStatsNamedOptions {
8
+ /**
9
+ * A bare host name, e.g. `docs.example.com`. The tracker reports every
10
+ * event under it on every host, not just `localhost`.
11
+ */
12
+ hostname?: string;
13
+ }
14
+ /**
15
+ * Options for {@link oneDollarStats}: any tracker setting, forwarded as a
16
+ * `data-` attribute on the tag (`hostname` → `data-hostname`, `devmode`,
17
+ * `url`, `autocollect`, `"hash-routing"`, …).
18
+ */
19
+ export type OneDollarStatsOptions = OneDollarStatsNamedOptions & {
20
+ [setting: string]: string;
21
+ };
22
+ export declare const oneDollarStatsOptionsSchema: z.ZodObject<{
23
+ hostname: z.ZodOptional<z.ZodString>;
24
+ }, z.core.$catchall<z.ZodString>>;
25
+ export type OneDollarStatsAdapter = AdapterDescriptor<"one-dollar-stats", OneDollarStatsOptions>;
26
+ export declare const oneDollarStatsAdapterSchema: z.ZodObject<{
27
+ kind: z.ZodLiteral<"one-dollar-stats">;
28
+ options: z.ZodObject<{
29
+ hostname: z.ZodOptional<z.ZodString>;
30
+ }, z.core.$catchall<z.ZodString>>;
31
+ requiredSecrets: z.ZodArray<z.ZodString>;
32
+ runtimeDeps: z.ZodArray<z.ZodString>;
33
+ }, z.core.$strict>;
34
+ /**
35
+ * OneDollarStats. Needs no keys — the dashboard matches events to a site by
36
+ * the domain they come from.
37
+ */
38
+ export declare const oneDollarStats: (options?: OneDollarStatsOptions) => OneDollarStatsAdapter;
39
+ /**
40
+ * The deferred tag from the install instructions, with every option as its
41
+ * own `data-` attribute. The tracker reads them from `document.currentScript`,
42
+ * so the tag stays a classic external script. It hooks `pushState` and
43
+ * `popstate` itself, so client-router navigations need no extra hook.
44
+ *
45
+ * The tracker turns hash routing on whenever `data-hash-routing` is present,
46
+ * whatever its value, so `"hash-routing": "false"` leaves the attribute off.
47
+ */
48
+ export declare const oneDollarStatsHead: (options: OneDollarStatsOptions) => HeadScript[];
@@ -106,6 +106,13 @@ export declare const analyticsAdapterSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
106
106
  }, z.core.$catchall<z.ZodJSONSchema>>;
107
107
  requiredSecrets: z.ZodArray<z.ZodString>;
108
108
  runtimeDeps: z.ZodArray<z.ZodString>;
109
+ }, z.core.$strict>, z.ZodObject<{
110
+ kind: z.ZodLiteral<"one-dollar-stats">;
111
+ options: z.ZodObject<{
112
+ hostname: z.ZodOptional<z.ZodString>;
113
+ }, z.core.$catchall<z.ZodString>>;
114
+ requiredSecrets: z.ZodArray<z.ZodString>;
115
+ runtimeDeps: z.ZodArray<z.ZodString>;
109
116
  }, z.core.$strict>, z.ZodObject<{
110
117
  kind: z.ZodLiteral<"pirsch">;
111
118
  options: z.ZodObject<{
@@ -275,6 +282,13 @@ export declare const analyticsConfigSchema: z.ZodDefault<z.ZodArray<z.ZodDiscrim
275
282
  }, z.core.$catchall<z.ZodJSONSchema>>;
276
283
  requiredSecrets: z.ZodArray<z.ZodString>;
277
284
  runtimeDeps: z.ZodArray<z.ZodString>;
285
+ }, z.core.$strict>, z.ZodObject<{
286
+ kind: z.ZodLiteral<"one-dollar-stats">;
287
+ options: z.ZodObject<{
288
+ hostname: z.ZodOptional<z.ZodString>;
289
+ }, z.core.$catchall<z.ZodString>>;
290
+ requiredSecrets: z.ZodArray<z.ZodString>;
291
+ runtimeDeps: z.ZodArray<z.ZodString>;
278
292
  }, z.core.$strict>, z.ZodObject<{
279
293
  kind: z.ZodLiteral<"pirsch">;
280
294
  options: z.ZodObject<{