blume 2.0.3 → 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 (455) hide show
  1. package/AGENTS.md +1 -0
  2. package/CHANGELOG.md +48 -0
  3. package/README.md +1 -1
  4. package/dist/cli/{chunk-1d7ve1dm.js → chunk-0gz36akr.js} +18 -2
  5. package/dist/cli/{chunk-1d7ve1dm.js.map → chunk-0gz36akr.js.map} +3 -3
  6. package/dist/cli/{chunk-2eytanqx.js → chunk-1n228xqb.js} +2 -2
  7. package/dist/cli/{chunk-yfyb25rh.js → chunk-2f3ndkpw.js} +24 -8
  8. package/dist/cli/chunk-2f3ndkpw.js.map +14 -0
  9. package/dist/cli/{chunk-r20tn01b.js → chunk-2f7n4qzt.js} +8 -2
  10. package/dist/cli/{chunk-r20tn01b.js.map → chunk-2f7n4qzt.js.map} +3 -3
  11. package/dist/cli/{chunk-35d4wj9f.js → chunk-2n4ps1b3.js} +7 -7
  12. package/dist/cli/{chunk-j85vccga.js → chunk-43zcf4gz.js} +97 -57
  13. package/dist/cli/{chunk-j85vccga.js.map → chunk-43zcf4gz.js.map} +6 -6
  14. package/dist/cli/{chunk-e04dxsz1.js → chunk-4ejxbzee.js} +1 -1
  15. package/dist/cli/{chunk-5m5nmvyq.js → chunk-4h8z9vv5.js} +233 -39
  16. package/dist/cli/chunk-4h8z9vv5.js.map +16 -0
  17. package/dist/cli/{chunk-5f86nr5m.js → chunk-5cg2rzgf.js} +18 -16
  18. package/dist/cli/{chunk-5f86nr5m.js.map → chunk-5cg2rzgf.js.map} +2 -2
  19. package/dist/cli/{chunk-tzmab476.js → chunk-5ffywsmb.js} +4 -4
  20. package/dist/cli/{chunk-2z928egk.js → chunk-5wj2qwn2.js} +5 -5
  21. package/dist/cli/chunk-6bm0xpgd.js +18 -0
  22. package/dist/cli/chunk-6bm0xpgd.js.map +10 -0
  23. package/dist/cli/{chunk-vg9r4eb9.js → chunk-713mngdq.js} +12 -5
  24. package/dist/cli/{chunk-vg9r4eb9.js.map → chunk-713mngdq.js.map} +3 -3
  25. package/dist/cli/{chunk-5xvm6tfj.js → chunk-9geymqns.js} +17 -15
  26. package/dist/cli/{chunk-5xvm6tfj.js.map → chunk-9geymqns.js.map} +2 -2
  27. package/dist/cli/{chunk-q58y5e6a.js → chunk-9xr4dgee.js} +26 -17
  28. package/dist/cli/chunk-9xr4dgee.js.map +10 -0
  29. package/dist/cli/{chunk-b07cmahc.js → chunk-amrb6hgh.js} +2 -2
  30. package/dist/cli/chunk-cm89scdv.js +443 -0
  31. package/dist/cli/chunk-cm89scdv.js.map +11 -0
  32. package/dist/cli/{chunk-akbpwfxc.js → chunk-cmtcnh9f.js} +2 -2
  33. package/dist/cli/chunk-cy5bm0j0.js +104 -0
  34. package/dist/cli/chunk-cy5bm0j0.js.map +11 -0
  35. package/dist/cli/{chunk-crgn1q09.js → chunk-e7vvk5ya.js} +4 -4
  36. package/dist/cli/{chunk-pehfxfta.js → chunk-g2z9x01v.js} +6 -98
  37. package/dist/cli/chunk-g2z9x01v.js.map +10 -0
  38. package/dist/cli/{chunk-tkacnehg.js → chunk-gp84za0h.js} +2 -2
  39. package/dist/cli/{chunk-wrr3j9w9.js → chunk-h2a48yhd.js} +186 -63
  40. package/dist/cli/chunk-h2a48yhd.js.map +36 -0
  41. package/dist/cli/{chunk-hm3vjy5s.js → chunk-jnwj5kjj.js} +14 -9
  42. package/dist/cli/{chunk-hm3vjy5s.js.map → chunk-jnwj5kjj.js.map} +4 -4
  43. package/dist/cli/chunk-kwrg63tm.js +31 -0
  44. package/dist/cli/chunk-kwrg63tm.js.map +10 -0
  45. package/dist/cli/{chunk-2hsdwb9n.js → chunk-nd1821sk.js} +18 -16
  46. package/dist/cli/{chunk-2hsdwb9n.js.map → chunk-nd1821sk.js.map} +2 -2
  47. package/dist/cli/{chunk-6dsbexzp.js → chunk-ntv4qrt7.js} +17 -15
  48. package/dist/cli/{chunk-6dsbexzp.js.map → chunk-ntv4qrt7.js.map} +2 -2
  49. package/dist/cli/{chunk-r9rcc4w7.js → chunk-p804f3pe.js} +7 -7
  50. package/dist/cli/{chunk-ey84smr6.js → chunk-py62fewh.js} +6 -6
  51. package/dist/cli/{chunk-ey84smr6.js.map → chunk-py62fewh.js.map} +1 -1
  52. package/dist/cli/chunk-q3wxxq39.js +126 -0
  53. package/dist/cli/chunk-q3wxxq39.js.map +11 -0
  54. package/dist/cli/{chunk-9t7a85s3.js → chunk-rekqz4qg.js} +23 -13
  55. package/dist/cli/chunk-rekqz4qg.js.map +10 -0
  56. package/dist/cli/{chunk-8ktnccpt.js → chunk-ta27feev.js} +1 -1
  57. package/dist/cli/{chunk-pv29h0wf.js → chunk-xkz5xbtv.js} +3476 -822
  58. package/dist/cli/chunk-xkz5xbtv.js.map +213 -0
  59. package/dist/cli/{chunk-a58773jm.js → chunk-y4ykbark.js} +2 -2
  60. package/dist/cli/{chunk-p3v96n38.js → chunk-y5h4r2y0.js} +4 -4
  61. package/dist/cli/{chunk-acanzt5p.js → chunk-yj17vs39.js} +6 -6
  62. package/dist/cli/{chunk-p73c0m7w.js → chunk-yxmk4pec.js} +16 -14
  63. package/dist/cli/{chunk-p73c0m7w.js.map → chunk-yxmk4pec.js.map} +2 -2
  64. package/dist/cli/{chunk-3em5wd2y.js → chunk-zccbjcj0.js} +4 -3
  65. package/dist/cli/{chunk-3em5wd2y.js.map → chunk-zccbjcj0.js.map} +2 -2
  66. package/dist/cli/{chunk-c8chx29p.js → chunk-zf748avv.js} +384 -207
  67. package/dist/cli/chunk-zf748avv.js.map +37 -0
  68. package/dist/cli/{chunk-g4hq16wv.js → chunk-zhvd6adm.js} +16 -14
  69. package/dist/cli/{chunk-g4hq16wv.js.map → chunk-zhvd6adm.js.map} +2 -2
  70. package/dist/cli/index.js +26 -20
  71. package/dist/cli/index.js.map +5 -5
  72. package/dist/types/ai/agent-surface.d.ts +8 -7
  73. package/dist/types/ai/ai-catalog.d.ts +7 -0
  74. package/dist/types/ai/ask-context.d.ts +22 -0
  75. package/dist/types/ai/ask.d.ts +271 -58
  76. package/dist/types/ai/index.d.ts +2 -2
  77. package/dist/types/ai/site-skill.d.ts +26 -0
  78. package/dist/types/ai/skills.d.ts +16 -0
  79. package/dist/types/astro/integration.d.ts +8 -0
  80. package/dist/types/captcha/hcaptcha.d.ts +27 -0
  81. package/dist/types/captcha/index.d.ts +28 -0
  82. package/dist/types/captcha/schema.d.ts +29 -0
  83. package/dist/types/captcha/turnstile.d.ts +28 -0
  84. package/dist/types/components/content/api-field.d.ts +59 -0
  85. package/dist/types/components/content/api-page.d.ts +95 -0
  86. package/dist/types/components/layout/nav-utils.d.ts +26 -0
  87. package/dist/types/components/openapi/helpers.d.ts +137 -0
  88. package/dist/types/components/openapi/security.d.ts +85 -0
  89. package/dist/types/consent/ethyca.d.ts +48 -0
  90. package/dist/types/consent/index.d.ts +37 -0
  91. package/dist/types/consent/native.d.ts +28 -0
  92. package/dist/types/consent/osano.d.ts +42 -0
  93. package/dist/types/consent/schema.d.ts +110 -0
  94. package/dist/types/core/config-input.d.ts +187 -20
  95. package/dist/types/core/data.d.ts +49 -4
  96. package/dist/types/core/footer.d.ts +8 -0
  97. package/dist/types/core/i18n-ui.d.ts +86 -0
  98. package/dist/types/core/includes.d.ts +8 -2
  99. package/dist/types/core/localizable.d.ts +7 -0
  100. package/dist/types/core/page-modes.d.ts +29 -0
  101. package/dist/types/core/redirect-patterns.d.ts +144 -0
  102. package/dist/types/core/related.d.ts +40 -0
  103. package/dist/types/core/schema.d.ts +551 -56
  104. package/dist/types/core/sources/read.d.ts +5 -0
  105. package/dist/types/core/types.d.ts +1 -1
  106. package/dist/types/core/variables.d.ts +42 -0
  107. package/dist/types/deploy/node-headers.d.ts +13 -2
  108. package/dist/types/deploy/platforms/cloudflare.d.ts +5 -0
  109. package/dist/types/deploy/platforms/netlify.d.ts +7 -0
  110. package/dist/types/deploy/platforms/vercel.d.ts +6 -0
  111. package/dist/types/deploy/redirects.d.ts +39 -11
  112. package/dist/types/deploy/vercel-negotiation.d.ts +9 -0
  113. package/dist/types/markdown/code-title.d.ts +17 -0
  114. package/dist/types/markdown/features.d.ts +3 -2
  115. package/dist/types/narration/build.d.ts +70 -0
  116. package/dist/types/narration/provider.d.ts +26 -0
  117. package/dist/types/narration/script.d.ts +154 -0
  118. package/dist/types/openapi/model.d.ts +12 -6
  119. package/dist/types/openapi/overlay.d.ts +54 -0
  120. package/dist/types/openapi/parse.d.ts +13 -0
  121. package/dist/types/openapi/references.d.ts +14 -4
  122. package/dist/types/ratelimit/cloudflare.d.ts +39 -0
  123. package/dist/types/ratelimit/index.d.ts +27 -0
  124. package/dist/types/ratelimit/memory.d.ts +36 -0
  125. package/dist/types/ratelimit/schema.d.ts +111 -0
  126. package/dist/types/ratelimit/upstash.d.ts +21 -0
  127. package/dist/types/ratelimit/wrangler.d.ts +23 -0
  128. package/dist/types/reference/asyncapi.d.ts +10 -10
  129. package/dist/types/reference/graphql.d.ts +13 -10
  130. package/dist/types/reference/openapi.d.ts +33 -12
  131. package/dist/types/reference/options.d.ts +45 -5
  132. package/dist/types/reference/scalar.d.ts +13 -0
  133. package/dist/types/reference/schema.d.ts +60 -36
  134. package/dist/types/search/documents.d.ts +12 -1
  135. package/dist/types/search/orama-index.d.ts +4 -0
  136. package/dist/types/seo/metatags.d.ts +20 -0
  137. package/docs/02-deployment.mdx +41 -5
  138. package/docs/03-upgrading.mdx +4 -4
  139. package/docs/04-migrating.mdx +1 -1
  140. package/docs/advanced/changelog.mdx +2 -2
  141. package/docs/advanced/skills.mdx +14 -0
  142. package/docs/cli/audit.mdx +21 -1
  143. package/docs/cli/index.mdx +1 -0
  144. package/docs/configuration/analytics.mdx +3 -1
  145. package/docs/configuration/assistant.mdx +188 -36
  146. package/docs/configuration/consent.mdx +100 -0
  147. package/docs/configuration/customization.mdx +4 -4
  148. package/docs/configuration/index.mdx +63 -5
  149. package/docs/configuration/meta.ts +3 -0
  150. package/docs/configuration/narration.mdx +119 -0
  151. package/docs/configuration/rate-limiting.mdx +69 -0
  152. package/docs/configuration/search.mdx +29 -1
  153. package/docs/configuration/theming.mdx +3 -1
  154. package/docs/content/components.mdx +106 -0
  155. package/docs/content/frontmatter.mdx +76 -0
  156. package/docs/content/i18n.mdx +38 -3
  157. package/docs/content/includes.mdx +16 -0
  158. package/docs/content/meta.mdx +1 -0
  159. package/docs/content/meta.ts +1 -0
  160. package/docs/content/navigation.mdx +28 -6
  161. package/docs/content/sources/contentful.mdx +32 -0
  162. package/docs/content/sources/custom.mdx +39 -0
  163. package/docs/content/sources/github-releases.mdx +31 -0
  164. package/docs/content/sources/index.mdx +91 -0
  165. package/docs/content/sources/meta.ts +16 -0
  166. package/docs/content/sources/notion.mdx +32 -0
  167. package/docs/content/sources/obsidian.mdx +37 -0
  168. package/docs/content/sources/payload.mdx +30 -0
  169. package/docs/content/sources/remote-mdx.mdx +40 -0
  170. package/docs/content/sources/sanity.mdx +29 -0
  171. package/docs/content/sources/strapi.mdx +31 -0
  172. package/docs/content/syntax.mdx +67 -2
  173. package/docs/content/variables.mdx +41 -0
  174. package/docs/discoverability/agent-discovery.mdx +29 -2
  175. package/docs/discoverability/index.mdx +1 -1
  176. package/docs/discoverability/llms-txt.mdx +1 -1
  177. package/docs/discoverability/metadata.mdx +17 -0
  178. package/docs/references/api-pages.mdx +74 -0
  179. package/docs/references/asyncapi.mdx +1 -1
  180. package/docs/references/graphql.mdx +2 -2
  181. package/docs/references/meta.ts +1 -1
  182. package/docs/references/openapi.mdx +102 -3
  183. package/docs/references/scalar.mdx +3 -1
  184. package/package.json +36 -1
  185. package/skills/blume/SKILL.md +3 -0
  186. package/skills/blume-migrate/SKILL.md +5 -5
  187. package/skills/blume-migrate/references/docusaurus.md +3 -3
  188. package/skills/blume-migrate/references/mintlify.md +37 -19
  189. package/skills/blume-migrate/references/nextra.md +2 -2
  190. package/skills/blume-migrate/references/starlight.md +2 -1
  191. package/skills/blume-migrate/scripts/mintlify-codemod.mjs +60 -14
  192. package/skills/blume-write-skill/SKILL.md +82 -0
  193. package/src/ai/agent-readability.ts +2 -1
  194. package/src/ai/agent-surface.ts +9 -7
  195. package/src/ai/ai-catalog.ts +6 -3
  196. package/src/ai/ask-context.ts +73 -20
  197. package/src/ai/ask-data.ts +6 -0
  198. package/src/ai/ask-tools.ts +142 -0
  199. package/src/ai/ask.ts +354 -76
  200. package/src/ai/component-markdown.ts +75 -0
  201. package/src/ai/cors.ts +2 -0
  202. package/src/ai/index.ts +12 -0
  203. package/src/ai/llms.ts +6 -2
  204. package/src/ai/markdown.ts +2 -1
  205. package/src/ai/mcp/data.ts +6 -0
  206. package/src/ai/openapi-components.ts +9 -3
  207. package/src/ai/site-skill.ts +274 -0
  208. package/src/ai/skills.ts +35 -2
  209. package/src/ai/write-skill.ts +97 -0
  210. package/src/astro/generate.ts +132 -18
  211. package/src/astro/index.ts +1 -0
  212. package/src/astro/integration.ts +35 -0
  213. package/src/astro/module-types.ts +6 -0
  214. package/src/astro/templates.ts +283 -30
  215. package/src/astro/variables.ts +31 -0
  216. package/src/audit/catalog.ts +19 -0
  217. package/src/audit/checks/contrast.ts +183 -0
  218. package/src/audit/checks/i18n.ts +2 -3
  219. package/src/audit/checks/indexability.ts +2 -3
  220. package/src/audit/checks/links.ts +5 -12
  221. package/src/audit/checks/sitemap.ts +2 -3
  222. package/src/audit/redirects.ts +46 -15
  223. package/src/audit/run.ts +2 -0
  224. package/src/audit/types.ts +2 -1
  225. package/src/blume-modules.d.ts +7 -0
  226. package/src/captcha/client.ts +152 -0
  227. package/src/captcha/hcaptcha.ts +36 -0
  228. package/src/captcha/index.ts +28 -0
  229. package/src/captcha/schema.ts +32 -0
  230. package/src/captcha/turnstile.ts +38 -0
  231. package/src/captcha/verify.ts +71 -0
  232. package/src/cli/command-meta.ts +5 -0
  233. package/src/cli/commands/doctor.ts +22 -16
  234. package/src/cli/commands/skill.ts +96 -0
  235. package/src/cli/index.ts +5 -0
  236. package/src/cli/required-secrets.ts +71 -29
  237. package/src/components/BlumePage.astro +2 -0
  238. package/src/components/content/ApiEndpoint.astro +18 -0
  239. package/src/components/content/ApiField.astro +79 -0
  240. package/src/components/content/ApiPlayground.astro +62 -0
  241. package/src/components/content/ApiRail.astro +19 -0
  242. package/src/components/content/Color.astro +1 -0
  243. package/src/components/content/FileTree.astro +1 -0
  244. package/src/components/content/GithubInfo.astro +1 -0
  245. package/src/components/content/Panel.astro +1 -0
  246. package/src/components/content/ParamField.astro +25 -0
  247. package/src/components/content/RequestExample.astro +17 -0
  248. package/src/components/content/ResponseExample.astro +17 -0
  249. package/src/components/content/ResponseField.astro +32 -0
  250. package/src/components/content/Step.astro +1 -0
  251. package/src/components/content/Tile.astro +1 -0
  252. package/src/components/content/Tooltip.astro +1 -0
  253. package/src/components/content/Tree.astro +1 -0
  254. package/src/components/content/TypeTable.astro +4 -1
  255. package/src/components/content/View.astro +21 -0
  256. package/src/components/content/ViewSwitcher.astro +168 -0
  257. package/src/components/content/api-field.ts +100 -0
  258. package/src/components/content/api-page.ts +224 -0
  259. package/src/components/content/view-switcher.ts +71 -0
  260. package/src/components/index.ts +2 -0
  261. package/src/components/islands/Assistant.astro +10 -1
  262. package/src/components/islands/assistant.tsx +104 -14
  263. package/src/components/islands/code-question.ts +62 -0
  264. package/src/components/islands/hooks.ts +110 -21
  265. package/src/components/islands/support-link.ts +68 -0
  266. package/src/components/layout/Analytics.astro +11 -2
  267. package/src/components/layout/Banner.astro +14 -10
  268. package/src/components/layout/Breadcrumbs.astro +6 -2
  269. package/src/components/layout/ConsentBanner.astro +62 -0
  270. package/src/components/layout/ConsentHead.astro +38 -0
  271. package/src/components/layout/Directory.astro +94 -0
  272. package/src/components/layout/DrawerSwitchers.astro +51 -0
  273. package/src/components/layout/Empty.astro +2 -2
  274. package/src/components/layout/Header.astro +122 -80
  275. package/src/components/layout/LanguageSwitcher.astro +48 -15
  276. package/src/components/layout/NarrationPlayer.astro +1085 -0
  277. package/src/components/layout/NavSelector.astro +33 -7
  278. package/src/components/layout/PageFeedback.astro +54 -49
  279. package/src/components/layout/PageLayout.astro +71 -3
  280. package/src/components/layout/ReferenceLayout.astro +17 -6
  281. package/src/components/layout/RelatedPages.astro +42 -0
  282. package/src/components/layout/RootLayout.astro +308 -45
  283. package/src/components/layout/Search.astro +31 -17
  284. package/src/components/layout/SiteFooter.astro +124 -0
  285. package/src/components/layout/SiteMetatags.astro +16 -0
  286. package/src/components/layout/consent/native.ts +79 -0
  287. package/src/components/layout/consent/types.ts +37 -0
  288. package/src/components/layout/footer-links.ts +53 -0
  289. package/src/components/layout/footer-socials.ts +87 -0
  290. package/src/components/layout/locale-redirect.ts +107 -0
  291. package/src/components/layout/nav-utils.ts +83 -0
  292. package/src/components/layout/page-feedback.ts +96 -0
  293. package/src/components/layout/search/analytics.ts +98 -0
  294. package/src/components/layout/search/flexsearch.ts +17 -5
  295. package/src/components/layout/search/orama-cloud.ts +26 -14
  296. package/src/components/layout/search/types.ts +20 -0
  297. package/src/components/layout/search/typesense.ts +5 -1
  298. package/src/components/openapi/Operation.astro +161 -13
  299. package/src/components/openapi/RequestBody.astro +6 -4
  300. package/src/components/openapi/RequestPanel.astro +59 -7
  301. package/src/components/openapi/Responses.astro +6 -4
  302. package/src/components/openapi/async-snippets.ts +4 -4
  303. package/src/components/openapi/code-samples.ts +97 -0
  304. package/src/components/openapi/security.ts +6 -3
  305. package/src/components/openapi/snippets.ts +869 -8
  306. package/src/components/props.ts +6 -0
  307. package/src/consent/client.ts +95 -0
  308. package/src/consent/clients.ts +19 -0
  309. package/src/consent/ethyca.ts +71 -0
  310. package/src/consent/head.ts +24 -0
  311. package/src/consent/index.ts +37 -0
  312. package/src/consent/init.ts +29 -0
  313. package/src/consent/native.ts +36 -0
  314. package/src/consent/osano.ts +59 -0
  315. package/src/consent/schema.ts +30 -0
  316. package/src/core/builtin-tags.ts +5 -0
  317. package/src/core/client-address.ts +19 -0
  318. package/src/core/config-input.ts +194 -20
  319. package/src/core/data.ts +44 -4
  320. package/src/core/diagnostics.ts +3 -2
  321. package/src/core/footer.ts +26 -0
  322. package/src/core/graph.ts +39 -36
  323. package/src/core/i18n-ui.ts +82 -2
  324. package/src/core/includes.ts +20 -3
  325. package/src/core/links.ts +16 -2
  326. package/src/core/localizable.ts +26 -0
  327. package/src/core/navigation.ts +43 -12
  328. package/src/core/page-modes.ts +56 -0
  329. package/src/core/project-graph.ts +111 -5
  330. package/src/core/redirect-patterns.ts +491 -0
  331. package/src/core/related.ts +131 -0
  332. package/src/core/schema.ts +318 -64
  333. package/src/core/sources/normalize.ts +2 -1
  334. package/src/core/sources/read.ts +8 -3
  335. package/src/core/types.ts +1 -1
  336. package/src/core/ui-packs/ar.ts +43 -0
  337. package/src/core/ui-packs/bg.ts +45 -0
  338. package/src/core/ui-packs/bn.ts +43 -0
  339. package/src/core/ui-packs/ca.ts +46 -0
  340. package/src/core/ui-packs/cs.ts +44 -0
  341. package/src/core/ui-packs/da.ts +45 -0
  342. package/src/core/ui-packs/de.ts +46 -0
  343. package/src/core/ui-packs/el.ts +45 -0
  344. package/src/core/ui-packs/es.ts +46 -0
  345. package/src/core/ui-packs/fa.ts +45 -0
  346. package/src/core/ui-packs/fi.ts +45 -0
  347. package/src/core/ui-packs/fr.ts +46 -0
  348. package/src/core/ui-packs/he.ts +43 -0
  349. package/src/core/ui-packs/hi.ts +44 -0
  350. package/src/core/ui-packs/hr.ts +45 -0
  351. package/src/core/ui-packs/hu.ts +44 -0
  352. package/src/core/ui-packs/id.ts +45 -0
  353. package/src/core/ui-packs/it.ts +45 -0
  354. package/src/core/ui-packs/ja.ts +45 -0
  355. package/src/core/ui-packs/ko.ts +44 -0
  356. package/src/core/ui-packs/nl.ts +46 -0
  357. package/src/core/ui-packs/no.ts +44 -0
  358. package/src/core/ui-packs/pl.ts +45 -0
  359. package/src/core/ui-packs/pt-br.ts +46 -0
  360. package/src/core/ui-packs/pt.ts +45 -0
  361. package/src/core/ui-packs/ro.ts +45 -0
  362. package/src/core/ui-packs/ru.ts +45 -0
  363. package/src/core/ui-packs/sk.ts +44 -0
  364. package/src/core/ui-packs/sr.ts +45 -0
  365. package/src/core/ui-packs/sv.ts +44 -0
  366. package/src/core/ui-packs/th.ts +43 -0
  367. package/src/core/ui-packs/tr.ts +45 -0
  368. package/src/core/ui-packs/uk.ts +45 -0
  369. package/src/core/ui-packs/vi.ts +45 -0
  370. package/src/core/ui-packs/zh-tw.ts +43 -0
  371. package/src/core/ui-packs/zh.ts +43 -0
  372. package/src/core/variables.ts +103 -0
  373. package/src/deploy/artifacts.ts +77 -8
  374. package/src/deploy/cloudflare-negotiation.ts +35 -5
  375. package/src/deploy/headers.ts +2 -1
  376. package/src/deploy/node-headers.ts +63 -9
  377. package/src/deploy/platforms/cloudflare.ts +32 -0
  378. package/src/deploy/platforms/netlify.ts +33 -1
  379. package/src/deploy/platforms/vercel.ts +37 -2
  380. package/src/deploy/redirects.ts +91 -24
  381. package/src/deploy/vercel-negotiation.ts +36 -0
  382. package/src/markdown/api-rail.ts +259 -0
  383. package/src/markdown/code-title.ts +35 -9
  384. package/src/markdown/features.ts +3 -2
  385. package/src/markdown/fence-meta.ts +2 -0
  386. package/src/markdown/include.ts +11 -1
  387. package/src/markdown/index.ts +28 -5
  388. package/src/markdown/math.ts +4 -4
  389. package/src/markdown/variables.ts +56 -0
  390. package/src/markdown/views.ts +82 -0
  391. package/src/narration/build.ts +412 -0
  392. package/src/narration/player.ts +249 -0
  393. package/src/narration/provider.ts +29 -0
  394. package/src/narration/script.ts +592 -0
  395. package/src/og/card.ts +7 -6
  396. package/src/openapi/model.ts +57 -24
  397. package/src/openapi/overlay.ts +256 -0
  398. package/src/openapi/parse.ts +55 -2
  399. package/src/openapi/references.ts +21 -5
  400. package/src/openapi/render-mdx.ts +5 -1
  401. package/src/openapi/scalar.ts +40 -6
  402. package/src/openapi/source.ts +1 -1
  403. package/src/ratelimit/cloudflare.ts +54 -0
  404. package/src/ratelimit/index.ts +30 -0
  405. package/src/ratelimit/memory.ts +45 -0
  406. package/src/ratelimit/runtime.ts +229 -0
  407. package/src/ratelimit/schema.ts +28 -0
  408. package/src/ratelimit/upstash.ts +30 -0
  409. package/src/ratelimit/wrangler.ts +70 -0
  410. package/src/reference/asyncapi.ts +2 -2
  411. package/src/reference/graphql.ts +5 -2
  412. package/src/reference/openapi.ts +21 -7
  413. package/src/reference/options.ts +51 -7
  414. package/src/reference/scalar.ts +33 -8
  415. package/src/registry/eject.ts +20 -4
  416. package/src/registry/registry.ts +7 -0
  417. package/src/search/documents.ts +26 -2
  418. package/src/search/orama-index.ts +28 -3
  419. package/src/search/pagefind-ranking.ts +39 -0
  420. package/src/search/sync/algolia.ts +15 -4
  421. package/src/search/sync/orama-cloud.ts +3 -0
  422. package/src/search/sync/typesense.ts +5 -0
  423. package/src/seo/metatags.ts +67 -0
  424. package/src/theme/chrome-icons.ts +1 -0
  425. package/src/theme/color.ts +500 -0
  426. package/src/theme/entry.ts +56 -3
  427. package/src/theme/palette.ts +121 -45
  428. package/src/translate/prompts.ts +1 -0
  429. package/src/translate/validate.ts +8 -2
  430. package/src/upgrade/upgrade.ts +4 -171
  431. package/dist/cli/chunk-364znk6q.js +0 -75
  432. package/dist/cli/chunk-364znk6q.js.map +0 -11
  433. package/dist/cli/chunk-5m5nmvyq.js.map +0 -13
  434. package/dist/cli/chunk-9t7a85s3.js.map +0 -10
  435. package/dist/cli/chunk-c8chx29p.js.map +0 -36
  436. package/dist/cli/chunk-pehfxfta.js.map +0 -10
  437. package/dist/cli/chunk-pv29h0wf.js.map +0 -190
  438. package/dist/cli/chunk-q58y5e6a.js.map +0 -10
  439. package/dist/cli/chunk-wrr3j9w9.js.map +0 -35
  440. package/dist/cli/chunk-yfyb25rh.js.map +0 -14
  441. package/docs/content/sources.mdx +0 -334
  442. /package/dist/cli/{chunk-2eytanqx.js.map → chunk-1n228xqb.js.map} +0 -0
  443. /package/dist/cli/{chunk-35d4wj9f.js.map → chunk-2n4ps1b3.js.map} +0 -0
  444. /package/dist/cli/{chunk-e04dxsz1.js.map → chunk-4ejxbzee.js.map} +0 -0
  445. /package/dist/cli/{chunk-tzmab476.js.map → chunk-5ffywsmb.js.map} +0 -0
  446. /package/dist/cli/{chunk-2z928egk.js.map → chunk-5wj2qwn2.js.map} +0 -0
  447. /package/dist/cli/{chunk-b07cmahc.js.map → chunk-amrb6hgh.js.map} +0 -0
  448. /package/dist/cli/{chunk-akbpwfxc.js.map → chunk-cmtcnh9f.js.map} +0 -0
  449. /package/dist/cli/{chunk-crgn1q09.js.map → chunk-e7vvk5ya.js.map} +0 -0
  450. /package/dist/cli/{chunk-tkacnehg.js.map → chunk-gp84za0h.js.map} +0 -0
  451. /package/dist/cli/{chunk-r9rcc4w7.js.map → chunk-p804f3pe.js.map} +0 -0
  452. /package/dist/cli/{chunk-8ktnccpt.js.map → chunk-ta27feev.js.map} +0 -0
  453. /package/dist/cli/{chunk-a58773jm.js.map → chunk-y4ykbark.js.map} +0 -0
  454. /package/dist/cli/{chunk-p3v96n38.js.map → chunk-y5h4r2y0.js.map} +0 -0
  455. /package/dist/cli/{chunk-acanzt5p.js.map → chunk-yj17vs39.js.map} +0 -0
@@ -36,6 +36,41 @@ export interface ReferenceSourceOptions {
36
36
  }
37
37
  /** A spec source with every default applied. */
38
38
  export type ResolvedReferenceSource = z.output<typeof referenceSourceSchema>;
39
+ /**
40
+ * [OpenAPI Overlay](https://spec.openapis.org/overlay/latest.html) documents
41
+ * (local paths or `http(s)` URLs) applied in order to an OpenAPI spec before
42
+ * it renders: changes to a spec you don't edit by hand.
43
+ */
44
+ export declare const overlaysSchema: z.ZodDefault<z.ZodArray<z.ZodString>>;
45
+ /** Whether adapter-level `overlays` has the `spec` it belongs to. */
46
+ export declare const overlaysHaveSpec: (options: {
47
+ overlays?: string[];
48
+ spec?: string;
49
+ }) => boolean;
50
+ /** The refinement issue for `overlays` set beside `sources` instead of `spec`. */
51
+ export declare const overlaysNeedSpecIssue: {
52
+ message: string;
53
+ path: string[];
54
+ };
55
+ /** An OpenAPI spec source: the shared shape plus its `overlays`. */
56
+ export declare const openapiSourceSchema: z.ZodObject<{
57
+ includeInLlms: z.ZodDefault<z.ZodBoolean>;
58
+ includeInSearch: z.ZodDefault<z.ZodBoolean>;
59
+ label: z.ZodOptional<z.ZodString>;
60
+ noindex: z.ZodDefault<z.ZodBoolean>;
61
+ route: z.ZodOptional<z.ZodString>;
62
+ seoDescriptionSuffix: z.ZodDefault<z.ZodBoolean>;
63
+ spec: z.ZodString;
64
+ overlays: z.ZodDefault<z.ZodArray<z.ZodString>>;
65
+ }, z.core.$strict>;
66
+ /** One OpenAPI spec source, as `openapi()` accepts it. */
67
+ export interface OpenApiSourceOptions extends ReferenceSourceOptions {
68
+ /**
69
+ * OpenAPI Overlay documents (local paths or `http(s)` URLs) applied in
70
+ * order to the spec before it renders.
71
+ */
72
+ overlays?: string[];
73
+ }
39
74
  /**
40
75
  * A single GraphQL schema: the shared source shape plus `endpoint`, the live
41
76
  * GraphQL API URL the playground and code samples target (a schema, unlike an
@@ -110,8 +145,11 @@ export declare const sharedOptions: (defaults: {
110
145
  codeSamples: string[];
111
146
  route: string;
112
147
  }) => {
113
- /** Code-sample languages/tools shown per operation (Blume renderer). */
114
- codeSamples: z.ZodDefault<z.ZodArray<z.ZodString>>;
148
+ /**
149
+ * Code-sample languages/tools shown per operation (Blume renderer), or
150
+ * `false` for none: only the spec's own `x-codeSamples` then.
151
+ */
152
+ codeSamples: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodArray<z.ZodString>]>>;
115
153
  /** The "Try it" panel; see {@link playgroundSchema}. */
116
154
  playground: z.ZodPipe<z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
117
155
  enabled: z.ZodDefault<z.ZodBoolean>;
@@ -129,8 +167,9 @@ export declare const sharedOptions: (defaults: {
129
167
  spec: z.ZodOptional<z.ZodString>;
130
168
  };
131
169
  /**
132
- * Resolve the `spec` shorthand into `sources` so downstream code reads one
133
- * field: the shorthand becomes the first source (with the source defaults
170
+ * Resolve the `spec` shorthand (and, on OpenAPI kinds, the `overlays` beside
171
+ * it) into `sources` so downstream code reads one field: the shorthand becomes
172
+ * the first source (with the source defaults
134
173
  * applied through the source schema itself, so the two can never drift) and
135
174
  * the `spec` key is dropped. An adapter with neither renders nothing, which
136
175
  * is a config mistake rather than a choice — `refine` it away with
@@ -143,7 +182,8 @@ export declare const liftSpec: <Source extends {
143
182
  }>) => <Options extends {
144
183
  sources: Source[];
145
184
  spec?: string;
146
- }>({ spec, ...options }: Options) => Omit<Options, "spec">;
185
+ overlays?: string[];
186
+ }>({ overlays, spec, ...options }: Options) => Omit<Options, "spec" | "overlays">;
147
187
  /** Whether an adapter has anything to render; pairs with {@link missingSourcesIssue}. */
148
188
  export declare const hasSources: (options: {
149
189
  sources: {
@@ -15,6 +15,7 @@ export declare const SCALAR_RUNTIME_DEPS: readonly string[];
15
15
  export declare const scalarSourceSchema: z.ZodObject<{
16
16
  label: z.ZodOptional<z.ZodString>;
17
17
  noindex: z.ZodDefault<z.ZodBoolean>;
18
+ overlays: z.ZodDefault<z.ZodArray<z.ZodString>>;
18
19
  route: z.ZodOptional<z.ZodString>;
19
20
  spec: z.ZodString;
20
21
  }, z.core.$strict>;
@@ -24,6 +25,8 @@ export interface ScalarSourceOptions {
24
25
  label?: string;
25
26
  /** Emit noindex metadata and omit the page from the sitemap. Defaults to `false`. */
26
27
  noindex?: boolean;
28
+ /** OpenAPI Overlay documents applied in order to the document before it's embedded. */
29
+ overlays?: string[];
27
30
  /** Per-source route; defaults to the adapter's `route` (or a derived path). */
28
31
  route?: string;
29
32
  /** Local path or `http(s)` URL to the OpenAPI or AsyncAPI document. */
@@ -44,6 +47,8 @@ export type ResolvedScalarOptions = {
44
47
  };
45
48
  /** The options {@link scalar} maps itself. */
46
49
  export interface ScalarNamedOptions {
50
+ /** OpenAPI Overlay documents for `spec`; with `sources`, each takes its own. */
51
+ overlays?: string[];
47
52
  /** Where the reference mounts. Defaults to `/reference`. */
48
53
  route?: string;
49
54
  /** One or more documents; each renders on its own route by default. */
@@ -73,10 +78,12 @@ export type ScalarOptions = ScalarNamedOptions & {
73
78
  * the named ones is Scalar configuration and passes through untouched.
74
79
  */
75
80
  export declare const scalarOptionsSchema: z.ZodPipe<z.ZodObject<{
81
+ overlays: z.ZodOptional<z.ZodArray<z.ZodString>>;
76
82
  route: z.ZodDefault<z.ZodString>;
77
83
  sources: z.ZodDefault<z.ZodArray<z.ZodObject<{
78
84
  label: z.ZodOptional<z.ZodString>;
79
85
  noindex: z.ZodDefault<z.ZodBoolean>;
86
+ overlays: z.ZodDefault<z.ZodArray<z.ZodString>>;
80
87
  route: z.ZodOptional<z.ZodString>;
81
88
  spec: z.ZodString;
82
89
  }, z.core.$strict>>>;
@@ -87,10 +94,12 @@ export declare const scalarOptionsSchema: z.ZodPipe<z.ZodObject<{
87
94
  route: string;
88
95
  sources: {
89
96
  noindex: boolean;
97
+ overlays: string[];
90
98
  spec: string;
91
99
  label?: string | undefined;
92
100
  route?: string | undefined;
93
101
  }[];
102
+ overlays?: string[] | undefined;
94
103
  spec?: string | undefined;
95
104
  theme?: string | undefined;
96
105
  }>>;
@@ -100,10 +109,12 @@ export type ResolvedScalarAdapter = AdapterDescriptor<"scalar", ResolvedScalarOp
100
109
  export declare const scalarAdapterSchema: z.ZodObject<{
101
110
  kind: z.ZodLiteral<"scalar">;
102
111
  options: z.ZodPipe<z.ZodObject<{
112
+ overlays: z.ZodOptional<z.ZodArray<z.ZodString>>;
103
113
  route: z.ZodDefault<z.ZodString>;
104
114
  sources: z.ZodDefault<z.ZodArray<z.ZodObject<{
105
115
  label: z.ZodOptional<z.ZodString>;
106
116
  noindex: z.ZodDefault<z.ZodBoolean>;
117
+ overlays: z.ZodDefault<z.ZodArray<z.ZodString>>;
107
118
  route: z.ZodOptional<z.ZodString>;
108
119
  spec: z.ZodString;
109
120
  }, z.core.$strict>>>;
@@ -114,10 +125,12 @@ export declare const scalarAdapterSchema: z.ZodObject<{
114
125
  route: string;
115
126
  sources: {
116
127
  noindex: boolean;
128
+ overlays: string[];
117
129
  spec: string;
118
130
  label?: string | undefined;
119
131
  route?: string | undefined;
120
132
  }[];
133
+ overlays?: string[] | undefined;
121
134
  spec?: string | undefined;
122
135
  theme?: string | undefined;
123
136
  }>>;
@@ -26,7 +26,7 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
26
26
  seoDescriptionSuffix: z.ZodDefault<z.ZodBoolean>;
27
27
  spec: z.ZodString;
28
28
  }, z.core.$strict>>>;
29
- codeSamples: z.ZodDefault<z.ZodArray<z.ZodString>>;
29
+ codeSamples: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodArray<z.ZodString>]>>;
30
30
  playground: z.ZodPipe<z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
31
31
  enabled: z.ZodDefault<z.ZodBoolean>;
32
32
  proxy: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
@@ -50,14 +50,14 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
50
50
  label?: string | undefined;
51
51
  route?: string | undefined;
52
52
  }[];
53
- codeSamples: string[];
53
+ codeSamples: false | string[];
54
54
  playground: {
55
55
  enabled: boolean;
56
56
  proxy: string | boolean;
57
57
  };
58
58
  route: string;
59
59
  spec?: string | undefined;
60
- }, "spec">, {
60
+ }, "spec" | "overlays">, {
61
61
  expandSchemas: boolean;
62
62
  sources: {
63
63
  includeInLlms: boolean;
@@ -68,7 +68,7 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
68
68
  label?: string | undefined;
69
69
  route?: string | undefined;
70
70
  }[];
71
- codeSamples: string[];
71
+ codeSamples: false | string[];
72
72
  playground: {
73
73
  enabled: boolean;
74
74
  proxy: string | boolean;
@@ -92,7 +92,7 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
92
92
  spec: z.ZodString;
93
93
  endpoint: z.ZodOptional<z.ZodString>;
94
94
  }, z.core.$strict>>>;
95
- codeSamples: z.ZodDefault<z.ZodArray<z.ZodString>>;
95
+ codeSamples: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodArray<z.ZodString>]>>;
96
96
  playground: z.ZodPipe<z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
97
97
  enabled: z.ZodDefault<z.ZodBoolean>;
98
98
  proxy: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
@@ -116,7 +116,7 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
116
116
  route?: string | undefined;
117
117
  endpoint?: string | undefined;
118
118
  }[];
119
- codeSamples: string[];
119
+ codeSamples: false | string[];
120
120
  playground: {
121
121
  enabled: boolean;
122
122
  proxy: string | boolean;
@@ -124,7 +124,7 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
124
124
  route: string;
125
125
  endpoint?: string | undefined;
126
126
  spec?: string | undefined;
127
- }, "spec">, {
127
+ }, "spec" | "overlays">, {
128
128
  sources: {
129
129
  includeInLlms: boolean;
130
130
  includeInSearch: boolean;
@@ -135,7 +135,7 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
135
135
  route?: string | undefined;
136
136
  endpoint?: string | undefined;
137
137
  }[];
138
- codeSamples: string[];
138
+ codeSamples: false | string[];
139
139
  playground: {
140
140
  enabled: boolean;
141
141
  proxy: string | boolean;
@@ -150,6 +150,7 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
150
150
  kind: z.ZodLiteral<"openapi">;
151
151
  options: z.ZodPipe<z.ZodObject<{
152
152
  expandSchemas: z.ZodDefault<z.ZodBoolean>;
153
+ overlays: z.ZodOptional<z.ZodArray<z.ZodString>>;
153
154
  sources: z.ZodDefault<z.ZodArray<z.ZodObject<{
154
155
  includeInLlms: z.ZodDefault<z.ZodBoolean>;
155
156
  includeInSearch: z.ZodDefault<z.ZodBoolean>;
@@ -158,8 +159,9 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
158
159
  route: z.ZodOptional<z.ZodString>;
159
160
  seoDescriptionSuffix: z.ZodDefault<z.ZodBoolean>;
160
161
  spec: z.ZodString;
162
+ overlays: z.ZodDefault<z.ZodArray<z.ZodString>>;
161
163
  }, z.core.$strict>>>;
162
- codeSamples: z.ZodDefault<z.ZodArray<z.ZodString>>;
164
+ codeSamples: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodArray<z.ZodString>]>>;
163
165
  playground: z.ZodPipe<z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
164
166
  enabled: z.ZodDefault<z.ZodBoolean>;
165
167
  proxy: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
@@ -180,17 +182,19 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
180
182
  noindex: boolean;
181
183
  seoDescriptionSuffix: boolean;
182
184
  spec: string;
185
+ overlays: string[];
183
186
  label?: string | undefined;
184
187
  route?: string | undefined;
185
188
  }[];
186
- codeSamples: string[];
189
+ codeSamples: false | string[];
187
190
  playground: {
188
191
  enabled: boolean;
189
192
  proxy: string | boolean;
190
193
  };
191
194
  route: string;
195
+ overlays?: string[] | undefined;
192
196
  spec?: string | undefined;
193
- }, "spec">, {
197
+ }, "spec" | "overlays">, {
194
198
  expandSchemas: boolean;
195
199
  sources: {
196
200
  includeInLlms: boolean;
@@ -198,15 +202,17 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
198
202
  noindex: boolean;
199
203
  seoDescriptionSuffix: boolean;
200
204
  spec: string;
205
+ overlays: string[];
201
206
  label?: string | undefined;
202
207
  route?: string | undefined;
203
208
  }[];
204
- codeSamples: string[];
209
+ codeSamples: false | string[];
205
210
  playground: {
206
211
  enabled: boolean;
207
212
  proxy: string | boolean;
208
213
  };
209
214
  route: string;
215
+ overlays?: string[] | undefined;
210
216
  spec?: string | undefined;
211
217
  }>>;
212
218
  requiredSecrets: z.ZodArray<z.ZodString>;
@@ -214,10 +220,12 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
214
220
  }, z.core.$strict>, z.ZodObject<{
215
221
  kind: z.ZodLiteral<"scalar">;
216
222
  options: z.ZodPipe<z.ZodObject<{
223
+ overlays: z.ZodOptional<z.ZodArray<z.ZodString>>;
217
224
  route: z.ZodDefault<z.ZodString>;
218
225
  sources: z.ZodDefault<z.ZodArray<z.ZodObject<{
219
226
  label: z.ZodOptional<z.ZodString>;
220
227
  noindex: z.ZodDefault<z.ZodBoolean>;
228
+ overlays: z.ZodDefault<z.ZodArray<z.ZodString>>;
221
229
  route: z.ZodOptional<z.ZodString>;
222
230
  spec: z.ZodString;
223
231
  }, z.core.$strict>>>;
@@ -228,10 +236,12 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
228
236
  route: string;
229
237
  sources: {
230
238
  noindex: boolean;
239
+ overlays: string[];
231
240
  spec: string;
232
241
  label?: string | undefined;
233
242
  route?: string | undefined;
234
243
  }[];
244
+ overlays?: string[] | undefined;
235
245
  spec?: string | undefined;
236
246
  theme?: string | undefined;
237
247
  }>>;
@@ -255,14 +265,14 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
255
265
  label?: string | undefined;
256
266
  route?: string | undefined;
257
267
  }[];
258
- codeSamples: string[];
268
+ codeSamples: false | string[];
259
269
  playground: {
260
270
  enabled: boolean;
261
271
  proxy: string | boolean;
262
272
  };
263
273
  route: string;
264
274
  spec?: string | undefined;
265
- }, "spec">;
275
+ }, "spec" | "overlays">;
266
276
  requiredSecrets: string[];
267
277
  runtimeDeps: string[];
268
278
  } | {
@@ -278,7 +288,7 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
278
288
  route?: string | undefined;
279
289
  endpoint?: string | undefined;
280
290
  }[];
281
- codeSamples: string[];
291
+ codeSamples: false | string[];
282
292
  playground: {
283
293
  enabled: boolean;
284
294
  proxy: string | boolean;
@@ -286,7 +296,7 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
286
296
  route: string;
287
297
  endpoint?: string | undefined;
288
298
  spec?: string | undefined;
289
- }, "spec">;
299
+ }, "spec" | "overlays">;
290
300
  requiredSecrets: string[];
291
301
  runtimeDeps: string[];
292
302
  } | {
@@ -299,17 +309,19 @@ export declare const referenceAdapterSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[
299
309
  noindex: boolean;
300
310
  seoDescriptionSuffix: boolean;
301
311
  spec: string;
312
+ overlays: string[];
302
313
  label?: string | undefined;
303
314
  route?: string | undefined;
304
315
  }[];
305
- codeSamples: string[];
316
+ codeSamples: false | string[];
306
317
  playground: {
307
318
  enabled: boolean;
308
319
  proxy: string | boolean;
309
320
  };
310
321
  route: string;
322
+ overlays?: string[] | undefined;
311
323
  spec?: string | undefined;
312
- }, "spec">;
324
+ }, "spec" | "overlays">;
313
325
  requiredSecrets: string[];
314
326
  runtimeDeps: string[];
315
327
  }>>;
@@ -331,7 +343,7 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
331
343
  seoDescriptionSuffix: z.ZodDefault<z.ZodBoolean>;
332
344
  spec: z.ZodString;
333
345
  }, z.core.$strict>>>;
334
- codeSamples: z.ZodDefault<z.ZodArray<z.ZodString>>;
346
+ codeSamples: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodArray<z.ZodString>]>>;
335
347
  playground: z.ZodPipe<z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
336
348
  enabled: z.ZodDefault<z.ZodBoolean>;
337
349
  proxy: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
@@ -355,14 +367,14 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
355
367
  label?: string | undefined;
356
368
  route?: string | undefined;
357
369
  }[];
358
- codeSamples: string[];
370
+ codeSamples: false | string[];
359
371
  playground: {
360
372
  enabled: boolean;
361
373
  proxy: string | boolean;
362
374
  };
363
375
  route: string;
364
376
  spec?: string | undefined;
365
- }, "spec">, {
377
+ }, "spec" | "overlays">, {
366
378
  expandSchemas: boolean;
367
379
  sources: {
368
380
  includeInLlms: boolean;
@@ -373,7 +385,7 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
373
385
  label?: string | undefined;
374
386
  route?: string | undefined;
375
387
  }[];
376
- codeSamples: string[];
388
+ codeSamples: false | string[];
377
389
  playground: {
378
390
  enabled: boolean;
379
391
  proxy: string | boolean;
@@ -397,7 +409,7 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
397
409
  spec: z.ZodString;
398
410
  endpoint: z.ZodOptional<z.ZodString>;
399
411
  }, z.core.$strict>>>;
400
- codeSamples: z.ZodDefault<z.ZodArray<z.ZodString>>;
412
+ codeSamples: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodArray<z.ZodString>]>>;
401
413
  playground: z.ZodPipe<z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
402
414
  enabled: z.ZodDefault<z.ZodBoolean>;
403
415
  proxy: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
@@ -421,7 +433,7 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
421
433
  route?: string | undefined;
422
434
  endpoint?: string | undefined;
423
435
  }[];
424
- codeSamples: string[];
436
+ codeSamples: false | string[];
425
437
  playground: {
426
438
  enabled: boolean;
427
439
  proxy: string | boolean;
@@ -429,7 +441,7 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
429
441
  route: string;
430
442
  endpoint?: string | undefined;
431
443
  spec?: string | undefined;
432
- }, "spec">, {
444
+ }, "spec" | "overlays">, {
433
445
  sources: {
434
446
  includeInLlms: boolean;
435
447
  includeInSearch: boolean;
@@ -440,7 +452,7 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
440
452
  route?: string | undefined;
441
453
  endpoint?: string | undefined;
442
454
  }[];
443
- codeSamples: string[];
455
+ codeSamples: false | string[];
444
456
  playground: {
445
457
  enabled: boolean;
446
458
  proxy: string | boolean;
@@ -455,6 +467,7 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
455
467
  kind: z.ZodLiteral<"openapi">;
456
468
  options: z.ZodPipe<z.ZodObject<{
457
469
  expandSchemas: z.ZodDefault<z.ZodBoolean>;
470
+ overlays: z.ZodOptional<z.ZodArray<z.ZodString>>;
458
471
  sources: z.ZodDefault<z.ZodArray<z.ZodObject<{
459
472
  includeInLlms: z.ZodDefault<z.ZodBoolean>;
460
473
  includeInSearch: z.ZodDefault<z.ZodBoolean>;
@@ -463,8 +476,9 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
463
476
  route: z.ZodOptional<z.ZodString>;
464
477
  seoDescriptionSuffix: z.ZodDefault<z.ZodBoolean>;
465
478
  spec: z.ZodString;
479
+ overlays: z.ZodDefault<z.ZodArray<z.ZodString>>;
466
480
  }, z.core.$strict>>>;
467
- codeSamples: z.ZodDefault<z.ZodArray<z.ZodString>>;
481
+ codeSamples: z.ZodDefault<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodArray<z.ZodString>]>>;
468
482
  playground: z.ZodPipe<z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
469
483
  enabled: z.ZodDefault<z.ZodBoolean>;
470
484
  proxy: z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>;
@@ -485,17 +499,19 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
485
499
  noindex: boolean;
486
500
  seoDescriptionSuffix: boolean;
487
501
  spec: string;
502
+ overlays: string[];
488
503
  label?: string | undefined;
489
504
  route?: string | undefined;
490
505
  }[];
491
- codeSamples: string[];
506
+ codeSamples: false | string[];
492
507
  playground: {
493
508
  enabled: boolean;
494
509
  proxy: string | boolean;
495
510
  };
496
511
  route: string;
512
+ overlays?: string[] | undefined;
497
513
  spec?: string | undefined;
498
- }, "spec">, {
514
+ }, "spec" | "overlays">, {
499
515
  expandSchemas: boolean;
500
516
  sources: {
501
517
  includeInLlms: boolean;
@@ -503,15 +519,17 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
503
519
  noindex: boolean;
504
520
  seoDescriptionSuffix: boolean;
505
521
  spec: string;
522
+ overlays: string[];
506
523
  label?: string | undefined;
507
524
  route?: string | undefined;
508
525
  }[];
509
- codeSamples: string[];
526
+ codeSamples: false | string[];
510
527
  playground: {
511
528
  enabled: boolean;
512
529
  proxy: string | boolean;
513
530
  };
514
531
  route: string;
532
+ overlays?: string[] | undefined;
515
533
  spec?: string | undefined;
516
534
  }>>;
517
535
  requiredSecrets: z.ZodArray<z.ZodString>;
@@ -519,10 +537,12 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
519
537
  }, z.core.$strict>, z.ZodObject<{
520
538
  kind: z.ZodLiteral<"scalar">;
521
539
  options: z.ZodPipe<z.ZodObject<{
540
+ overlays: z.ZodOptional<z.ZodArray<z.ZodString>>;
522
541
  route: z.ZodDefault<z.ZodString>;
523
542
  sources: z.ZodDefault<z.ZodArray<z.ZodObject<{
524
543
  label: z.ZodOptional<z.ZodString>;
525
544
  noindex: z.ZodDefault<z.ZodBoolean>;
545
+ overlays: z.ZodDefault<z.ZodArray<z.ZodString>>;
526
546
  route: z.ZodOptional<z.ZodString>;
527
547
  spec: z.ZodString;
528
548
  }, z.core.$strict>>>;
@@ -533,10 +553,12 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
533
553
  route: string;
534
554
  sources: {
535
555
  noindex: boolean;
556
+ overlays: string[];
536
557
  spec: string;
537
558
  label?: string | undefined;
538
559
  route?: string | undefined;
539
560
  }[];
561
+ overlays?: string[] | undefined;
540
562
  spec?: string | undefined;
541
563
  theme?: string | undefined;
542
564
  }>>;
@@ -560,14 +582,14 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
560
582
  label?: string | undefined;
561
583
  route?: string | undefined;
562
584
  }[];
563
- codeSamples: string[];
585
+ codeSamples: false | string[];
564
586
  playground: {
565
587
  enabled: boolean;
566
588
  proxy: string | boolean;
567
589
  };
568
590
  route: string;
569
591
  spec?: string | undefined;
570
- }, "spec">;
592
+ }, "spec" | "overlays">;
571
593
  requiredSecrets: string[];
572
594
  runtimeDeps: string[];
573
595
  } | {
@@ -583,7 +605,7 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
583
605
  route?: string | undefined;
584
606
  endpoint?: string | undefined;
585
607
  }[];
586
- codeSamples: string[];
608
+ codeSamples: false | string[];
587
609
  playground: {
588
610
  enabled: boolean;
589
611
  proxy: string | boolean;
@@ -591,7 +613,7 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
591
613
  route: string;
592
614
  endpoint?: string | undefined;
593
615
  spec?: string | undefined;
594
- }, "spec">;
616
+ }, "spec" | "overlays">;
595
617
  requiredSecrets: string[];
596
618
  runtimeDeps: string[];
597
619
  } | {
@@ -604,17 +626,19 @@ export declare const referenceConfigSchema: z.ZodDefault<z.ZodArray<z.ZodPipe<z.
604
626
  noindex: boolean;
605
627
  seoDescriptionSuffix: boolean;
606
628
  spec: string;
629
+ overlays: string[];
607
630
  label?: string | undefined;
608
631
  route?: string | undefined;
609
632
  }[];
610
- codeSamples: string[];
633
+ codeSamples: false | string[];
611
634
  playground: {
612
635
  enabled: boolean;
613
636
  proxy: string | boolean;
614
637
  };
615
638
  route: string;
639
+ overlays?: string[] | undefined;
616
640
  spec?: string | undefined;
617
- }, "spec">;
641
+ }, "spec" | "overlays">;
618
642
  requiredSecrets: string[];
619
643
  runtimeDeps: string[];
620
644
  }>>>>;
@@ -23,6 +23,10 @@ export interface SearchDocument {
23
23
  * Filterable through the MCP tools' `filters` input.
24
24
  */
25
25
  facets?: Record<string, string>;
26
+ /** Frontmatter `search.boost`: the page's relevance multiplier, when set. */
27
+ boost?: number;
28
+ /** Frontmatter `search.keywords`: extra terms the page is found by. */
29
+ keywords?: string[];
26
30
  }
27
31
  /**
28
32
  * A record uploaded to a hosted search backend (Algolia, Orama Cloud,
@@ -45,6 +49,13 @@ export interface SearchRecord {
45
49
  version: string;
46
50
  /** Single faceting tag (the first frontmatter tag, when present). */
47
51
  tag?: string;
52
+ /**
53
+ * The page's relevance multiplier, 1 unless `search.boost` sets it: a
54
+ * ranking attribute every record carries, so the backend can sort by it.
55
+ */
56
+ boost: number;
57
+ /** Extra terms the page is found by (`search.keywords`). */
58
+ keywords?: string[];
48
59
  }
49
60
  interface BuildOptions {
50
61
  includeWhenDisabled?: boolean;
@@ -84,7 +95,7 @@ export declare const buildSearchDocuments: (project: BlumeProject, options?: Bui
84
95
  /**
85
96
  * Map per-page search documents to the flat record shape hosted backends
86
97
  * ingest. One record per page, keyed by route; the first tag becomes the
87
- * faceting `tag`.
98
+ * faceting `tag`, and every record carries a `boost` (1 by default).
88
99
  */
89
100
  export declare const toSearchRecords: (documents: SearchDocument[]) => SearchRecord[];
90
101
  export {};
@@ -24,6 +24,10 @@ export interface OramaDoc {
24
24
  * but not indexed, so they ride along on the returned document untouched. */
25
25
  breadcrumb?: string[];
26
26
  section?: string;
27
+ /** The page's relevance multiplier (`search.boost`); stored, not indexed. */
28
+ boost?: number;
29
+ /** Extra terms the page is found by (`search.keywords`). */
30
+ keywords?: string[];
27
31
  }
28
32
  /**
29
33
  * Build an in-memory Orama full-text index from search documents. Shared by the
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Site-wide meta tags (`seo.metatags`): tags written into every page's head,
3
+ * for what Blume has no setting of its own for, such as site-verification
4
+ * tokens, `theme-color`, or an app banner. The tags Blume writes itself are
5
+ * refused, each pointing at the setting that controls it, so a page never
6
+ * carries two values for one tag.
7
+ */
8
+ /**
9
+ * What sets a tag Blume writes itself, or `undefined` for a tag the site can
10
+ * add.
11
+ */
12
+ export declare const ownedMetatag: (name: string) => string | undefined;
13
+ /** One site-wide tag, as its `<meta>` element's attributes. */
14
+ export interface MetatagAttributes {
15
+ content: string;
16
+ name?: string;
17
+ property?: string;
18
+ }
19
+ /** The site's `seo.metatags` as `<meta>` attributes, in the order written. */
20
+ export declare const metatagAttributes: (tags?: Readonly<Record<string, string>> | null) => MetatagAttributes[];