blume 1.7.3 → 2.0.1

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 (690) hide show
  1. package/AGENTS.md +19 -0
  2. package/CHANGELOG.md +245 -0
  3. package/README.md +34 -21
  4. package/dist/cli/{chunk-vacwm2hv.js → chunk-27g6wdth.js} +2 -2
  5. package/dist/cli/{chunk-ps4m1xh4.js → chunk-2hn4b8z7.js} +513 -550
  6. package/dist/cli/chunk-2hn4b8z7.js.map +12 -0
  7. package/dist/cli/chunk-5shv93fd.js +39 -0
  8. package/dist/cli/chunk-5shv93fd.js.map +10 -0
  9. package/dist/cli/chunk-6crbhc3x.js +361 -0
  10. package/dist/cli/chunk-6crbhc3x.js.map +14 -0
  11. package/dist/cli/{chunk-8cjtbafj.js → chunk-6hsn950k.js} +109 -383
  12. package/dist/cli/chunk-6hsn950k.js.map +10 -0
  13. package/dist/cli/chunk-6vm74dry.js +148 -0
  14. package/dist/cli/chunk-6vm74dry.js.map +10 -0
  15. package/dist/cli/{chunk-yg63d42r.js → chunk-79jhk4py.js} +87 -58
  16. package/dist/cli/chunk-79jhk4py.js.map +35 -0
  17. package/dist/cli/chunk-82bbrxdn.js +51 -0
  18. package/dist/cli/chunk-82bbrxdn.js.map +10 -0
  19. package/dist/cli/chunk-abh8yjkn.js +31 -0
  20. package/dist/cli/chunk-abh8yjkn.js.map +10 -0
  21. package/dist/cli/chunk-ah61y8py.js +75 -0
  22. package/dist/cli/chunk-ah61y8py.js.map +11 -0
  23. package/dist/cli/{chunk-dwgcp5sm.js → chunk-ce574jw2.js} +1 -1
  24. package/dist/cli/chunk-ch6g3ar0.js +102 -0
  25. package/dist/cli/chunk-ch6g3ar0.js.map +10 -0
  26. package/dist/cli/chunk-dh8cwk36.js +279 -0
  27. package/dist/cli/chunk-dh8cwk36.js.map +10 -0
  28. package/dist/cli/{chunk-rqy0s5wh.js → chunk-epjnccmv.js} +17 -16
  29. package/dist/cli/{chunk-rqy0s5wh.js.map → chunk-epjnccmv.js.map} +3 -3
  30. package/dist/cli/chunk-f2z5v128.js +97 -0
  31. package/dist/cli/chunk-f2z5v128.js.map +10 -0
  32. package/dist/cli/{chunk-2z47ypj8.js → chunk-fa25z98p.js} +16 -3
  33. package/dist/cli/chunk-fa25z98p.js.map +11 -0
  34. package/dist/cli/{chunk-1jefwnfs.js → chunk-fs23ddbb.js} +1076 -2592
  35. package/dist/cli/chunk-fs23ddbb.js.map +35 -0
  36. package/dist/cli/{chunk-e7f42gdj.js → chunk-fxypxtvm.js} +2 -2
  37. package/dist/cli/{chunk-bvwwhd84.js → chunk-fz5wtpmh.js} +15 -15
  38. package/dist/cli/{chunk-bvwwhd84.js.map → chunk-fz5wtpmh.js.map} +1 -1
  39. package/dist/cli/chunk-hdpx1tax.js +91 -0
  40. package/dist/cli/chunk-hdpx1tax.js.map +10 -0
  41. package/dist/cli/{chunk-ct47dqpx.js → chunk-jts8mvcz.js} +67 -7
  42. package/dist/cli/{chunk-2mzebbbz.js.map → chunk-jts8mvcz.js.map} +6 -4
  43. package/dist/cli/{chunk-ahnw3kxw.js → chunk-jwyddg7y.js} +27 -22
  44. package/dist/cli/chunk-jwyddg7y.js.map +15 -0
  45. package/dist/cli/{chunk-cjtn640a.js → chunk-kdp5q7ke.js} +43 -20
  46. package/dist/cli/chunk-kdp5q7ke.js.map +10 -0
  47. package/dist/cli/{chunk-5g0w1e2c.js → chunk-kpf8rrjc.js} +28 -16
  48. package/dist/cli/{chunk-5g0w1e2c.js.map → chunk-kpf8rrjc.js.map} +4 -4
  49. package/dist/cli/chunk-m3vmjgmq.js +133 -0
  50. package/dist/cli/chunk-m3vmjgmq.js.map +10 -0
  51. package/dist/cli/{chunk-b27xqwn9.js → chunk-mb2919y2.js} +9 -5
  52. package/dist/cli/chunk-mb2919y2.js.map +10 -0
  53. package/dist/cli/{chunk-5qk08vmp.js → chunk-q5163e60.js} +133 -54
  54. package/dist/cli/chunk-q5163e60.js.map +11 -0
  55. package/dist/cli/chunk-qkqwkpte.js +12437 -0
  56. package/dist/cli/chunk-qkqwkpte.js.map +182 -0
  57. package/dist/cli/{chunk-4x36ddpw.js → chunk-qs4q5p4e.js} +81 -87
  58. package/dist/cli/chunk-qs4q5p4e.js.map +10 -0
  59. package/dist/cli/{chunk-0xjyb285.js → chunk-qwsrynx5.js} +15 -5
  60. package/dist/cli/{chunk-0xjyb285.js.map → chunk-qwsrynx5.js.map} +4 -4
  61. package/dist/cli/chunk-s1p84fyh.js +261 -0
  62. package/dist/cli/chunk-s1p84fyh.js.map +10 -0
  63. package/dist/cli/chunk-s6jhgk0q.js +176 -0
  64. package/dist/cli/chunk-s6jhgk0q.js.map +11 -0
  65. package/dist/cli/chunk-vtk4a6dg.js +374 -0
  66. package/dist/cli/chunk-vtk4a6dg.js.map +10 -0
  67. package/dist/cli/{chunk-k79xp7av.js → chunk-wgm7m9qk.js} +230 -700
  68. package/dist/cli/chunk-wgm7m9qk.js.map +36 -0
  69. package/dist/cli/chunk-wm7js3j9.js +145 -0
  70. package/dist/cli/chunk-wm7js3j9.js.map +11 -0
  71. package/dist/cli/chunk-yt5n7ppj.js +79 -0
  72. package/dist/cli/chunk-yt5n7ppj.js.map +10 -0
  73. package/dist/cli/{chunk-3r45185y.js → chunk-yw7dm696.js} +9 -11
  74. package/dist/cli/{chunk-3r45185y.js.map → chunk-yw7dm696.js.map} +3 -3
  75. package/dist/cli/{chunk-nn13znc2.js → chunk-zxcczpyx.js} +1 -1
  76. package/dist/cli/chunk-zxh4d9vy.js +122 -0
  77. package/dist/cli/chunk-zxh4d9vy.js.map +11 -0
  78. package/dist/cli/index.js +214 -57
  79. package/dist/cli/index.js.map +8 -7
  80. package/dist/types/ai/agent-readability.d.ts +52 -0
  81. package/dist/types/ai/ai-catalog.d.ts +42 -0
  82. package/dist/types/ai/api/paths.d.ts +17 -0
  83. package/dist/types/ai/api-catalog.d.ts +18 -0
  84. package/dist/types/ai/ask-context.d.ts +7 -7
  85. package/dist/types/ai/ask.d.ts +368 -0
  86. package/dist/types/ai/changelog-markdown.d.ts +2 -0
  87. package/dist/types/ai/component-markdown.d.ts +2 -2
  88. package/dist/types/ai/index.d.ts +24 -0
  89. package/dist/types/ai/link-headers.d.ts +24 -0
  90. package/dist/types/ai/llms.d.ts +25 -0
  91. package/dist/types/ai/markdown.d.ts +45 -0
  92. package/dist/types/ai/mcp/discovery.d.ts +68 -0
  93. package/dist/types/ai/mcp/tools.d.ts +16 -0
  94. package/dist/types/ai/openapi-components.d.ts +43 -0
  95. package/dist/types/ai/relative-links.d.ts +26 -0
  96. package/dist/types/ai/serializers.d.ts +15 -0
  97. package/dist/types/ai/skills.d.ts +42 -0
  98. package/dist/types/ai/tar.d.ts +25 -0
  99. package/dist/types/ai/visibility.d.ts +17 -0
  100. package/dist/types/ai/web-bot-auth.d.ts +16 -0
  101. package/dist/types/analytics/adobe.d.ts +35 -0
  102. package/dist/types/analytics/amplitude.d.ts +50 -0
  103. package/dist/types/analytics/clarity.d.ts +31 -0
  104. package/dist/types/analytics/clearbit.d.ts +29 -0
  105. package/dist/types/analytics/cloudflare.d.ts +41 -0
  106. package/dist/types/analytics/fathom.d.ts +41 -0
  107. package/dist/types/analytics/google-analytics.d.ts +44 -0
  108. package/dist/types/analytics/google-tag-manager.d.ts +40 -0
  109. package/dist/types/analytics/head.d.ts +30 -0
  110. package/dist/types/analytics/heap.d.ts +40 -0
  111. package/dist/types/analytics/hightouch.d.ts +44 -0
  112. package/dist/types/analytics/hotjar.d.ts +33 -0
  113. package/dist/types/analytics/index.d.ts +61 -0
  114. package/dist/types/analytics/inline.d.ts +17 -0
  115. package/dist/types/analytics/logrocket.d.ts +44 -0
  116. package/dist/types/analytics/mixpanel.d.ts +67 -0
  117. package/dist/types/analytics/pirsch.d.ts +42 -0
  118. package/dist/types/analytics/plausible.d.ts +56 -0
  119. package/dist/types/analytics/posthog.d.ts +45 -0
  120. package/dist/types/analytics/schema.d.ts +320 -0
  121. package/dist/types/analytics/script.d.ts +46 -0
  122. package/dist/types/analytics/segment.d.ts +50 -0
  123. package/dist/types/analytics/vercel.d.ts +48 -0
  124. package/dist/types/astro/integration.d.ts +76 -0
  125. package/dist/types/astro/markdown-negotiation.d.ts +23 -0
  126. package/dist/types/astro/module-types.d.ts +14 -0
  127. package/dist/types/astro/pages.d.ts +44 -0
  128. package/dist/types/cli/env.d.ts +12 -0
  129. package/dist/types/cli/init/scaffold.d.ts +154 -0
  130. package/dist/types/components/layout/nav-utils.d.ts +11 -0
  131. package/dist/types/core/adapter.d.ts +47 -0
  132. package/dist/types/core/api-name.d.ts +7 -0
  133. package/dist/types/core/changelog-index.d.ts +13 -0
  134. package/dist/types/core/config-input.d.ts +197 -526
  135. package/dist/types/core/config.d.ts +61 -35
  136. package/dist/types/core/content-assets.d.ts +76 -0
  137. package/dist/types/core/custom-pages.d.ts +33 -0
  138. package/dist/types/core/data.d.ts +30 -15
  139. package/dist/types/core/define-components.d.ts +12 -9
  140. package/dist/types/core/deployment-env.d.ts +6 -11
  141. package/dist/types/core/frontmatter.d.ts +10 -0
  142. package/dist/types/core/graph.d.ts +18 -0
  143. package/dist/types/core/heading-markers.d.ts +54 -0
  144. package/dist/types/core/i18n-ui.d.ts +12 -10
  145. package/dist/types/core/i18n.d.ts +87 -0
  146. package/dist/types/core/includes.d.ts +138 -0
  147. package/dist/types/core/last-modified.d.ts +47 -0
  148. package/dist/types/core/links.d.ts +95 -0
  149. package/dist/types/core/locale-links.d.ts +60 -0
  150. package/dist/types/core/manifest.d.ts +17 -0
  151. package/dist/types/core/meta.d.ts +38 -0
  152. package/dist/types/core/nav-diagnostics.d.ts +26 -0
  153. package/dist/types/core/navigation.d.ts +6 -0
  154. package/dist/types/core/node-require.d.ts +19 -0
  155. package/dist/types/core/package-json.d.ts +13 -0
  156. package/dist/types/core/probe.d.ts +42 -0
  157. package/dist/types/core/project-graph.d.ts +51 -0
  158. package/dist/types/core/project.d.ts +2 -0
  159. package/dist/types/core/safe-href.d.ts +2 -0
  160. package/dist/types/core/safe-links.d.ts +26 -0
  161. package/dist/types/core/schema.d.ts +2284 -454
  162. package/dist/types/core/site-url.d.ts +16 -0
  163. package/dist/types/core/sources/assets.d.ts +36 -0
  164. package/dist/types/core/sources/cache.d.ts +37 -0
  165. package/dist/types/core/sources/collection.d.ts +28 -0
  166. package/dist/types/core/sources/contentful-rich-text.d.ts +31 -0
  167. package/dist/types/core/sources/contentful.d.ts +40 -0
  168. package/dist/types/core/sources/filesystem.d.ts +24 -0
  169. package/dist/types/core/sources/github-releases.d.ts +31 -0
  170. package/dist/types/core/sources/json.d.ts +30 -0
  171. package/dist/types/core/sources/lexical.d.ts +19 -0
  172. package/dist/types/core/sources/lower.d.ts +75 -0
  173. package/dist/types/core/sources/mdx-remote.d.ts +28 -0
  174. package/dist/types/core/sources/normalize.d.ts +147 -0
  175. package/dist/types/core/sources/notion.d.ts +131 -0
  176. package/dist/types/core/sources/obsidian.d.ts +46 -0
  177. package/dist/types/core/sources/payload.d.ts +39 -0
  178. package/dist/types/core/sources/portable-text.d.ts +42 -0
  179. package/dist/types/core/sources/read.d.ts +23 -0
  180. package/dist/types/core/sources/remote.d.ts +74 -0
  181. package/dist/types/core/sources/resolve.d.ts +19 -0
  182. package/dist/types/core/sources/sanity.d.ts +43 -0
  183. package/dist/types/core/sources/strapi-blocks.d.ts +12 -0
  184. package/dist/types/core/sources/strapi.d.ts +33 -0
  185. package/dist/types/core/sources/types.d.ts +7 -0
  186. package/dist/types/core/sources/watch.d.ts +45 -0
  187. package/dist/types/core/text-width.d.ts +11 -0
  188. package/dist/types/core/types.d.ts +15 -1
  189. package/dist/types/core/unrecognized-keys.d.ts +7 -0
  190. package/dist/types/core/versions.d.ts +72 -0
  191. package/dist/types/core/yaml.d.ts +9 -0
  192. package/dist/types/deploy/adapter-output.d.ts +45 -0
  193. package/dist/types/deploy/adapters/cloudflare.d.ts +40 -0
  194. package/dist/types/deploy/adapters/index.d.ts +29 -0
  195. package/dist/types/deploy/adapters/netlify.d.ts +37 -0
  196. package/dist/types/deploy/adapters/node.d.ts +37 -0
  197. package/dist/types/deploy/adapters/registry.d.ts +133 -0
  198. package/dist/types/deploy/adapters/types.d.ts +71 -0
  199. package/dist/types/deploy/adapters/vercel.d.ts +38 -0
  200. package/dist/types/deploy/artifacts.d.ts +65 -0
  201. package/dist/types/deploy/cloudflare-negotiation.d.ts +196 -0
  202. package/dist/types/deploy/function-bundle.d.ts +80 -0
  203. package/dist/types/deploy/headers.d.ts +50 -0
  204. package/dist/types/deploy/node-headers.d.ts +42 -0
  205. package/dist/types/deploy/platforms/cloudflare.d.ts +40 -0
  206. package/dist/types/deploy/platforms/index.d.ts +18 -0
  207. package/dist/types/deploy/platforms/netlify.d.ts +13 -0
  208. package/dist/types/deploy/platforms/node.d.ts +11 -0
  209. package/dist/types/deploy/platforms/paths.d.ts +27 -0
  210. package/dist/types/deploy/platforms/static.d.ts +10 -0
  211. package/dist/types/deploy/platforms/types.d.ts +104 -0
  212. package/dist/types/deploy/platforms/vercel.d.ts +32 -0
  213. package/dist/types/deploy/redirects.d.ts +53 -0
  214. package/dist/types/deploy/robots.d.ts +8 -0
  215. package/dist/types/deploy/rss.d.ts +31 -0
  216. package/dist/types/deploy/sitemap.d.ts +21 -0
  217. package/dist/types/deploy/vercel-negotiation.d.ts +109 -0
  218. package/dist/types/markdown/code-title.d.ts +32 -0
  219. package/dist/types/markdown/fence-meta.d.ts +23 -0
  220. package/dist/types/markdown/themes.d.ts +3 -3
  221. package/dist/types/openapi/asyncapi.d.ts +129 -0
  222. package/dist/types/openapi/graphql-build.d.ts +8 -0
  223. package/dist/types/openapi/graphql.d.ts +122 -0
  224. package/dist/types/openapi/model.d.ts +158 -0
  225. package/dist/types/openapi/parse.d.ts +57 -0
  226. package/dist/types/openapi/references.d.ts +37 -25
  227. package/dist/types/openapi/render-mdx.d.ts +33 -0
  228. package/dist/types/openapi/sentence.d.ts +7 -0
  229. package/dist/types/openapi/signature.d.ts +10 -0
  230. package/dist/types/openapi/source.d.ts +22 -0
  231. package/dist/types/openapi/spec-dependency-error.d.ts +10 -0
  232. package/dist/types/reference/asyncapi.d.ts +166 -0
  233. package/dist/types/reference/graphql.d.ts +181 -0
  234. package/dist/types/reference/index.d.ts +32 -0
  235. package/dist/types/reference/openapi.d.ts +165 -0
  236. package/dist/types/reference/options.d.ts +157 -0
  237. package/dist/types/reference/scalar.d.ts +136 -0
  238. package/dist/types/reference/schema.d.ts +630 -0
  239. package/dist/types/search/adapters/algolia.d.ts +32 -0
  240. package/dist/types/search/adapters/flexsearch.d.ts +12 -0
  241. package/dist/types/search/adapters/index.d.ts +31 -0
  242. package/dist/types/search/adapters/mixedbread.d.ts +22 -0
  243. package/dist/types/search/adapters/orama-cloud.d.ts +33 -0
  244. package/dist/types/search/adapters/orama.d.ts +13 -0
  245. package/dist/types/search/adapters/pagefind.d.ts +12 -0
  246. package/dist/types/search/adapters/registry.d.ts +228 -0
  247. package/dist/types/search/adapters/types.d.ts +34 -0
  248. package/dist/types/search/adapters/typesense.d.ts +42 -0
  249. package/dist/types/search/build.d.ts +23 -0
  250. package/dist/types/search/documents.d.ts +90 -0
  251. package/dist/types/search/facets.d.ts +3 -0
  252. package/dist/types/search/orama-index.d.ts +1 -1
  253. package/dist/types/search/sync/algolia.d.ts +14 -0
  254. package/dist/types/search/sync/index.d.ts +14 -0
  255. package/dist/types/search/sync/orama-cloud.d.ts +10 -0
  256. package/dist/types/search/sync/typesense.d.ts +14 -0
  257. package/dist/types/sources/contentful.d.ts +68 -0
  258. package/dist/types/sources/custom.d.ts +20 -0
  259. package/dist/types/sources/filesystem.d.ts +42 -0
  260. package/dist/types/sources/github-releases.d.ts +46 -0
  261. package/dist/types/sources/index.d.ts +48 -0
  262. package/dist/types/sources/mdx-remote.d.ts +63 -0
  263. package/dist/types/sources/notion.d.ts +65 -0
  264. package/dist/types/sources/obsidian.d.ts +34 -0
  265. package/dist/types/sources/payload.d.ts +68 -0
  266. package/dist/types/sources/registry.d.ts +1414 -0
  267. package/dist/types/sources/sanity.d.ts +69 -0
  268. package/dist/types/sources/shared.d.ts +46 -0
  269. package/dist/types/sources/strapi.d.ts +66 -0
  270. package/dist/types/theme/icon-kind.d.ts +11 -0
  271. package/dist/types/theme/icons.d.ts +20 -0
  272. package/docs/01-quickstart.mdx +18 -18
  273. package/docs/02-deployment.mdx +52 -28
  274. package/docs/03-upgrading.mdx +364 -0
  275. package/docs/04-migrating.mdx +58 -0
  276. package/docs/08-faq.mdx +5 -5
  277. package/docs/advanced/blog.mdx +13 -6
  278. package/docs/advanced/changelog.mdx +23 -35
  279. package/docs/advanced/custom-pages.mdx +22 -10
  280. package/docs/advanced/meta.ts +1 -8
  281. package/docs/advanced/skills.mdx +8 -0
  282. package/docs/cli/audit.mdx +646 -0
  283. package/docs/cli/doctor.mdx +29 -0
  284. package/docs/{reference/eval.mdx → cli/evals.mdx} +12 -11
  285. package/docs/cli/index.mdx +105 -0
  286. package/docs/cli/meta.ts +7 -0
  287. package/docs/{reference → cli}/translate.mdx +9 -9
  288. package/docs/cli/validate.mdx +41 -0
  289. package/docs/cli/version.mdx +40 -0
  290. package/docs/configuration/analytics.mdx +350 -59
  291. package/docs/configuration/assistant.mdx +357 -0
  292. package/docs/configuration/customization.mdx +16 -10
  293. package/docs/configuration/index.mdx +50 -31
  294. package/docs/configuration/meta.ts +1 -1
  295. package/docs/configuration/search.mdx +76 -55
  296. package/docs/configuration/theming.mdx +24 -15
  297. package/docs/content/components.mdx +21 -5
  298. package/docs/{reference → content}/frontmatter.mdx +35 -1
  299. package/docs/content/i18n.mdx +9 -7
  300. package/docs/content/includes.mdx +2 -4
  301. package/docs/content/index.mdx +1 -1
  302. package/docs/content/islands.mdx +11 -6
  303. package/docs/content/meta.mdx +1 -1
  304. package/docs/content/meta.ts +1 -0
  305. package/docs/content/navigation.mdx +9 -7
  306. package/docs/content/sources.mdx +145 -50
  307. package/docs/content/syntax.mdx +16 -12
  308. package/docs/content/versioning.mdx +3 -3
  309. package/docs/discoverability/agent-discovery.mdx +12 -12
  310. package/docs/discoverability/index.mdx +4 -4
  311. package/docs/discoverability/json-api.mdx +4 -4
  312. package/docs/discoverability/llms-txt.mdx +6 -6
  313. package/docs/discoverability/markdown.mdx +4 -4
  314. package/docs/discoverability/mcp.mdx +11 -11
  315. package/docs/discoverability/sitemap-and-robots.mdx +3 -3
  316. package/docs/index.mdx +4 -4
  317. package/docs/references/asyncapi.mdx +59 -0
  318. package/docs/{advanced → references}/graphql.mdx +45 -32
  319. package/docs/{reference → references}/meta.ts +2 -2
  320. package/docs/references/openapi.mdx +171 -0
  321. package/docs/references/scalar.mdx +64 -0
  322. package/package.json +42 -8
  323. package/skills/blume/SKILL.md +23 -10
  324. package/skills/blume-migrate/SKILL.md +22 -21
  325. package/skills/blume-migrate/assets/oxfmt@0.67.0.patch +49 -0
  326. package/skills/blume-migrate/references/docusaurus.md +5 -4
  327. package/skills/blume-migrate/references/fumadocs.md +4 -4
  328. package/skills/blume-migrate/references/mintlify.md +23 -8
  329. package/skills/blume-migrate/references/monorepo.md +6 -6
  330. package/skills/blume-migrate/references/starlight.md +4 -4
  331. package/src/ai/agent-readability.ts +25 -26
  332. package/src/ai/ai-catalog.ts +50 -32
  333. package/src/ai/api/handlers.ts +46 -11
  334. package/src/ai/api/paths.ts +1 -1
  335. package/src/ai/api-catalog.ts +8 -8
  336. package/src/ai/ask-context.ts +7 -7
  337. package/src/ai/ask-data.ts +3 -3
  338. package/src/ai/ask.ts +637 -100
  339. package/src/ai/changelog-markdown.ts +91 -0
  340. package/src/ai/component-markdown.ts +328 -12
  341. package/src/ai/cors.ts +3 -3
  342. package/src/ai/index.ts +45 -0
  343. package/src/ai/link-headers.ts +7 -6
  344. package/src/ai/llms.ts +20 -15
  345. package/src/ai/markdown.ts +35 -5
  346. package/src/ai/mcp/data.ts +9 -5
  347. package/src/ai/openapi-components.ts +5 -2
  348. package/src/ai/relative-links.ts +170 -0
  349. package/src/ai/serializers.ts +3 -3
  350. package/src/ai/skills.ts +1 -1
  351. package/src/ai/visibility.ts +1 -1
  352. package/src/ai/web-bot-auth.ts +2 -2
  353. package/src/analytics/adobe.ts +46 -0
  354. package/src/analytics/amplitude.ts +79 -0
  355. package/src/analytics/clarity.ts +46 -0
  356. package/src/analytics/clearbit.ts +47 -0
  357. package/src/analytics/cloudflare.ts +67 -0
  358. package/src/analytics/fathom.ts +64 -0
  359. package/src/analytics/google-analytics.ts +84 -0
  360. package/src/analytics/google-tag-manager.ts +61 -0
  361. package/src/analytics/head.ts +130 -0
  362. package/src/analytics/heap.ts +65 -0
  363. package/src/analytics/hightouch.ts +77 -0
  364. package/src/analytics/hotjar.ts +47 -0
  365. package/src/analytics/index.ts +71 -0
  366. package/src/analytics/inline.ts +21 -0
  367. package/src/analytics/logrocket.ts +71 -0
  368. package/src/analytics/mixpanel.ts +92 -0
  369. package/src/analytics/pirsch.ts +66 -0
  370. package/src/analytics/plausible.ts +83 -0
  371. package/src/analytics/posthog.ts +78 -0
  372. package/src/analytics/schema.ts +60 -0
  373. package/src/analytics/script.ts +60 -0
  374. package/src/analytics/segment.ts +85 -0
  375. package/src/analytics/vercel.ts +50 -0
  376. package/src/astro/adapter-root.ts +7 -9
  377. package/src/astro/component-slots.ts +131 -91
  378. package/src/astro/generate.ts +129 -361
  379. package/src/astro/integration.ts +2 -6
  380. package/src/astro/module-types.ts +1 -1
  381. package/src/astro/pages.ts +13 -101
  382. package/src/astro/render-deps.ts +379 -0
  383. package/src/astro/runtime-deps.ts +201 -0
  384. package/src/astro/templates.ts +575 -562
  385. package/src/audit/agent.ts +24 -0
  386. package/src/audit/catalog.ts +2 -2
  387. package/src/audit/checks/assets.ts +2 -2
  388. package/src/audit/checks/dns-aid.ts +1 -1
  389. package/src/audit/checks/duplicates.ts +3 -1
  390. package/src/audit/checks/i18n.ts +1 -1
  391. package/src/audit/checks/indexability.ts +7 -7
  392. package/src/audit/checks/links.ts +2 -2
  393. package/src/audit/checks/llms.ts +6 -6
  394. package/src/audit/checks/network.ts +3 -3
  395. package/src/audit/checks/og-image.ts +2 -2
  396. package/src/audit/checks/robots.ts +1 -1
  397. package/src/audit/checks/sitemap.ts +2 -2
  398. package/src/audit/checks/social.ts +1 -1
  399. package/src/audit/run.ts +4 -3
  400. package/src/audit/terms.ts +31 -0
  401. package/src/audit/url.ts +13 -13
  402. package/src/blume-modules.d.ts +2 -2
  403. package/src/cli/command-meta.ts +10 -0
  404. package/src/cli/commands/audit.ts +40 -21
  405. package/src/cli/commands/build.ts +71 -316
  406. package/src/cli/commands/check.ts +1 -0
  407. package/src/cli/commands/dev.ts +40 -1
  408. package/src/cli/commands/doctor.ts +92 -14
  409. package/src/cli/commands/eject.ts +44 -7
  410. package/src/cli/commands/eval.ts +5 -5
  411. package/src/cli/commands/init.ts +161 -41
  412. package/src/cli/commands/migrate.ts +121 -0
  413. package/src/cli/commands/preview.ts +7 -1
  414. package/src/cli/commands/translate.ts +5 -5
  415. package/src/cli/commands/upgrade.ts +141 -0
  416. package/src/cli/commands/version.ts +57 -44
  417. package/src/cli/eject-scripts.ts +121 -6
  418. package/src/cli/index.ts +11 -1
  419. package/src/cli/init/install.ts +70 -0
  420. package/src/cli/init/questions.ts +7 -0
  421. package/src/cli/init/scaffold.ts +459 -75
  422. package/src/cli/lazy-command.ts +37 -1
  423. package/src/cli/prepare.ts +40 -6
  424. package/src/cli/required-secrets.ts +39 -12
  425. package/src/cli/unknown-flags.ts +266 -0
  426. package/src/cli/yarn-pnp.ts +52 -0
  427. package/src/components/content/AccordionItem.astro +7 -1
  428. package/src/components/content/Card.astro +4 -3
  429. package/src/components/content/ColorItem.astro +22 -4
  430. package/src/components/content/GithubInfo.astro +2 -2
  431. package/src/components/content/Prompt.astro +25 -25
  432. package/src/components/content/Tabs.astro +3 -1
  433. package/src/components/content/Tile.astro +2 -3
  434. package/src/components/content/Tooltip.astro +57 -9
  435. package/src/components/content/content-strings.ts +34 -0
  436. package/src/components/content/diff.ts +1 -1
  437. package/src/components/content/mermaid-element.ts +13 -2
  438. package/src/components/content/prompt-markdown.ts +292 -0
  439. package/src/components/content/tooltip-id.ts +41 -0
  440. package/src/components/copy-feedback.ts +1 -1
  441. package/src/components/islands/{AskAI.astro → Assistant.astro} +10 -10
  442. package/src/components/islands/{ask-ai.tsx → assistant.tsx} +23 -23
  443. package/src/components/islands/hooks.ts +36 -11
  444. package/src/components/layout/Analytics.astro +21 -79
  445. package/src/components/layout/Banner.astro +3 -1
  446. package/src/components/layout/DiscoveryLinks.astro +69 -0
  447. package/src/components/layout/Header.astro +93 -30
  448. package/src/components/layout/LanguageSwitcher.astro +4 -1
  449. package/src/components/layout/Logo.astro +23 -2
  450. package/src/components/layout/NavSelector.astro +13 -2
  451. package/src/components/layout/NavTree.astro +12 -3
  452. package/src/components/layout/NavTreeScript.astro +17 -3
  453. package/src/components/layout/PageActions.astro +3 -3
  454. package/src/components/layout/PageFeedback.astro +11 -1
  455. package/src/components/layout/PageLayout.astro +58 -11
  456. package/src/components/layout/Pagination.astro +7 -7
  457. package/src/components/layout/ReferenceLayout.astro +22 -13
  458. package/src/components/layout/RootLayout.astro +75 -72
  459. package/src/components/layout/Search.astro +43 -19
  460. package/src/components/layout/WebMcp.astro +1 -1
  461. package/src/components/layout/analytics-client.ts +73 -16
  462. package/src/components/layout/drawer-inert.ts +113 -15
  463. package/src/components/layout/dropdown-clamp.ts +105 -0
  464. package/src/components/layout/head-scripts.ts +15 -6
  465. package/src/components/layout/nav-utils.ts +17 -0
  466. package/src/components/layout/search/algolia.ts +8 -8
  467. package/src/components/layout/search/orama-cloud.ts +9 -7
  468. package/src/components/layout/search/typesense.ts +11 -17
  469. package/src/components/openapi/MessageComposer.astro +2 -2
  470. package/src/components/openapi/Playground.astro +2 -2
  471. package/src/components/openapi/description.ts +2 -2
  472. package/src/components/openapi/playground-client.ts +79 -10
  473. package/src/core/changelog-index.ts +24 -0
  474. package/src/core/code-fences.ts +1 -1
  475. package/src/core/component-overrides.ts +399 -154
  476. package/src/core/config-input.ts +201 -566
  477. package/src/core/config.ts +131 -42
  478. package/src/core/custom-pages.ts +105 -0
  479. package/src/core/data.ts +34 -15
  480. package/src/core/define-components.ts +12 -9
  481. package/src/core/deployment-env.ts +18 -74
  482. package/src/core/diagnostics.ts +14 -7
  483. package/src/core/graph.ts +69 -25
  484. package/src/core/i18n-ui.ts +41 -11
  485. package/src/core/i18n.ts +17 -0
  486. package/src/core/includes.ts +156 -38
  487. package/src/core/last-modified.ts +6 -11
  488. package/src/core/links.ts +166 -2
  489. package/src/core/manifest.ts +10 -3
  490. package/src/core/navigation.ts +115 -16
  491. package/src/core/new-tab.ts +35 -0
  492. package/src/core/node-require.ts +21 -0
  493. package/src/core/project-graph.ts +42 -26
  494. package/src/core/project.ts +9 -4
  495. package/src/core/request-body.ts +61 -0
  496. package/src/core/safe-href.ts +28 -0
  497. package/src/core/safe-links.ts +68 -0
  498. package/src/core/schema.ts +528 -745
  499. package/src/core/server-features.ts +10 -11
  500. package/src/core/sources/assets.ts +47 -11
  501. package/src/core/sources/collection.ts +67 -0
  502. package/src/core/sources/contentful-rich-text.ts +285 -0
  503. package/src/core/sources/contentful.ts +173 -0
  504. package/src/core/sources/github-releases.ts +51 -1
  505. package/src/core/sources/json.ts +71 -0
  506. package/src/core/sources/lexical.ts +195 -0
  507. package/src/core/sources/lower.ts +226 -0
  508. package/src/core/sources/normalize.ts +52 -2
  509. package/src/core/sources/notion.ts +39 -28
  510. package/src/core/sources/payload.ts +135 -0
  511. package/src/core/sources/portable-text.ts +11 -16
  512. package/src/core/sources/remote.ts +226 -0
  513. package/src/core/sources/resolve.ts +104 -166
  514. package/src/core/sources/sanity.ts +16 -49
  515. package/src/core/sources/strapi-blocks.ts +124 -0
  516. package/src/core/sources/strapi.ts +191 -0
  517. package/src/core/sources/types.ts +12 -1
  518. package/src/core/types.ts +15 -1
  519. package/src/core/ui-packs/ar.ts +10 -7
  520. package/src/core/ui-packs/bg.ts +10 -7
  521. package/src/core/ui-packs/bn.ts +10 -7
  522. package/src/core/ui-packs/ca.ts +7 -6
  523. package/src/core/ui-packs/cs.ts +10 -7
  524. package/src/core/ui-packs/da.ts +10 -7
  525. package/src/core/ui-packs/de.ts +10 -7
  526. package/src/core/ui-packs/el.ts +7 -6
  527. package/src/core/ui-packs/es.ts +7 -6
  528. package/src/core/ui-packs/fa.ts +10 -7
  529. package/src/core/ui-packs/fi.ts +10 -7
  530. package/src/core/ui-packs/fr.ts +7 -6
  531. package/src/core/ui-packs/he.ts +10 -7
  532. package/src/core/ui-packs/hi.ts +10 -7
  533. package/src/core/ui-packs/hr.ts +10 -7
  534. package/src/core/ui-packs/hu.ts +10 -7
  535. package/src/core/ui-packs/id.ts +10 -7
  536. package/src/core/ui-packs/it.ts +7 -6
  537. package/src/core/ui-packs/ja.ts +7 -6
  538. package/src/core/ui-packs/ko.ts +7 -6
  539. package/src/core/ui-packs/nl.ts +10 -7
  540. package/src/core/ui-packs/no.ts +10 -7
  541. package/src/core/ui-packs/pl.ts +10 -7
  542. package/src/core/ui-packs/pt-br.ts +7 -6
  543. package/src/core/ui-packs/pt.ts +7 -6
  544. package/src/core/ui-packs/ro.ts +10 -7
  545. package/src/core/ui-packs/ru.ts +10 -7
  546. package/src/core/ui-packs/sk.ts +10 -7
  547. package/src/core/ui-packs/sr.ts +10 -7
  548. package/src/core/ui-packs/sv.ts +10 -7
  549. package/src/core/ui-packs/th.ts +7 -6
  550. package/src/core/ui-packs/tr.ts +10 -7
  551. package/src/core/ui-packs/uk.ts +10 -7
  552. package/src/core/ui-packs/vi.ts +7 -6
  553. package/src/core/ui-packs/zh-tw.ts +7 -6
  554. package/src/core/ui-packs/zh.ts +7 -6
  555. package/src/core/unrecognized-keys.ts +10 -0
  556. package/src/core/version-cut.ts +116 -8
  557. package/src/deploy/adapter-output.ts +57 -97
  558. package/src/deploy/adapters/cloudflare.ts +39 -0
  559. package/src/deploy/adapters/index.ts +41 -0
  560. package/src/deploy/adapters/netlify.ts +34 -0
  561. package/src/deploy/adapters/node.ts +34 -0
  562. package/src/deploy/adapters/registry.ts +127 -0
  563. package/src/deploy/adapters/types.ts +92 -0
  564. package/src/deploy/adapters/vercel.ts +35 -0
  565. package/src/deploy/artifacts.ts +55 -27
  566. package/src/deploy/cloudflare-negotiation.ts +179 -100
  567. package/src/deploy/function-bundle.ts +18 -3
  568. package/src/deploy/headers.ts +124 -23
  569. package/src/deploy/node-headers.ts +198 -0
  570. package/src/deploy/platforms/cloudflare.ts +312 -0
  571. package/src/deploy/platforms/index.ts +67 -0
  572. package/src/deploy/platforms/netlify.ts +52 -0
  573. package/src/deploy/platforms/node.ts +40 -0
  574. package/src/deploy/platforms/paths.ts +42 -0
  575. package/src/deploy/platforms/static.ts +29 -0
  576. package/src/deploy/platforms/types.ts +112 -0
  577. package/src/deploy/platforms/vercel.ts +193 -0
  578. package/src/deploy/redirects.ts +30 -18
  579. package/src/deploy/robots.ts +3 -3
  580. package/src/deploy/rss.ts +2 -2
  581. package/src/deploy/sitemap.ts +2 -2
  582. package/src/deploy/vercel-negotiation.ts +2 -2
  583. package/src/eval/agents.ts +32 -1
  584. package/src/eval/findings.ts +19 -11
  585. package/src/eval/report.ts +10 -2
  586. package/src/markdown/external-links.ts +65 -0
  587. package/src/markdown/include.ts +45 -27
  588. package/src/markdown/index.ts +34 -9
  589. package/src/markdown/inline-code.ts +12 -6
  590. package/src/markdown/relative-links.ts +324 -0
  591. package/src/markdown/themes.ts +3 -3
  592. package/src/migrate/migrate.ts +149 -0
  593. package/src/openapi/parse.ts +64 -16
  594. package/src/openapi/proxy.ts +62 -10
  595. package/src/openapi/references.ts +147 -147
  596. package/src/openapi/render-mdx.ts +32 -10
  597. package/src/openapi/scalar.ts +15 -13
  598. package/src/openapi/sentence.ts +14 -0
  599. package/src/openapi/source.ts +37 -21
  600. package/src/openapi/spec-dependency-error.ts +15 -0
  601. package/src/reference/asyncapi.ts +83 -0
  602. package/src/reference/graphql.ts +89 -0
  603. package/src/reference/index.ts +40 -0
  604. package/src/reference/openapi.ts +83 -0
  605. package/src/reference/options.ts +201 -0
  606. package/src/reference/scalar.ts +136 -0
  607. package/src/reference/schema.ts +88 -0
  608. package/src/registry/eject.ts +109 -53
  609. package/src/search/adapters/algolia.ts +46 -0
  610. package/src/search/adapters/flexsearch.ts +29 -0
  611. package/src/search/adapters/index.ts +39 -0
  612. package/src/search/adapters/mixedbread.ts +39 -0
  613. package/src/search/adapters/orama-cloud.ts +51 -0
  614. package/src/search/adapters/orama.ts +24 -0
  615. package/src/search/adapters/pagefind.ts +27 -0
  616. package/src/search/adapters/registry.ts +131 -0
  617. package/src/search/adapters/types.ts +46 -0
  618. package/src/search/adapters/typesense.ts +57 -0
  619. package/src/search/build.ts +8 -4
  620. package/src/search/documents.ts +8 -2
  621. package/src/search/orama-index.ts +1 -1
  622. package/src/search/sync/algolia.ts +12 -11
  623. package/src/search/sync/index.ts +35 -20
  624. package/src/search/sync/orama-cloud.ts +12 -9
  625. package/src/search/sync/typesense.ts +15 -13
  626. package/src/sources/contentful.ts +63 -0
  627. package/src/sources/custom.ts +38 -0
  628. package/src/sources/filesystem.ts +51 -0
  629. package/src/sources/github-releases.ts +52 -0
  630. package/src/sources/index.ts +60 -0
  631. package/src/sources/mdx-remote.ts +76 -0
  632. package/src/sources/notion.ts +63 -0
  633. package/src/sources/obsidian.ts +38 -0
  634. package/src/sources/payload.ts +60 -0
  635. package/src/sources/registry.ts +182 -0
  636. package/src/sources/sanity.ts +66 -0
  637. package/src/sources/shared.ts +52 -0
  638. package/src/sources/strapi.ts +58 -0
  639. package/src/theme/entry.ts +24 -2
  640. package/src/translate/report.ts +40 -7
  641. package/src/upgrade/upgrade.ts +499 -0
  642. package/dist/cli/chunk-0qymqwzz.js +0 -164
  643. package/dist/cli/chunk-0qymqwzz.js.map +0 -15
  644. package/dist/cli/chunk-1jefwnfs.js.map +0 -48
  645. package/dist/cli/chunk-2mzebbbz.js +0 -69
  646. package/dist/cli/chunk-2z47ypj8.js.map +0 -11
  647. package/dist/cli/chunk-4x36ddpw.js.map +0 -11
  648. package/dist/cli/chunk-5093q3n7.js +0 -68
  649. package/dist/cli/chunk-5093q3n7.js.map +0 -10
  650. package/dist/cli/chunk-5qk08vmp.js.map +0 -11
  651. package/dist/cli/chunk-7s8hm3b6.js +0 -5347
  652. package/dist/cli/chunk-7s8hm3b6.js.map +0 -58
  653. package/dist/cli/chunk-8cjtbafj.js.map +0 -13
  654. package/dist/cli/chunk-97r59kpr.js +0 -381
  655. package/dist/cli/chunk-97r59kpr.js.map +0 -12
  656. package/dist/cli/chunk-ahnw3kxw.js.map +0 -15
  657. package/dist/cli/chunk-b27xqwn9.js.map +0 -10
  658. package/dist/cli/chunk-bf6bt1xt.js +0 -185
  659. package/dist/cli/chunk-bf6bt1xt.js.map +0 -11
  660. package/dist/cli/chunk-cjtn640a.js.map +0 -10
  661. package/dist/cli/chunk-ct47dqpx.js.map +0 -11
  662. package/dist/cli/chunk-esphfr8p.js +0 -107
  663. package/dist/cli/chunk-esphfr8p.js.map +0 -11
  664. package/dist/cli/chunk-ex56aa81.js +0 -1016
  665. package/dist/cli/chunk-ex56aa81.js.map +0 -13
  666. package/dist/cli/chunk-garjf5z9.js +0 -30
  667. package/dist/cli/chunk-garjf5z9.js.map +0 -10
  668. package/dist/cli/chunk-js7saxwm.js +0 -1045
  669. package/dist/cli/chunk-js7saxwm.js.map +0 -22
  670. package/dist/cli/chunk-k79xp7av.js.map +0 -39
  671. package/dist/cli/chunk-ps4m1xh4.js.map +0 -15
  672. package/dist/cli/chunk-q4rae3bg.js +0 -60
  673. package/dist/cli/chunk-q4rae3bg.js.map +0 -10
  674. package/dist/cli/chunk-rz9jmfhz.js +0 -108
  675. package/dist/cli/chunk-rz9jmfhz.js.map +0 -10
  676. package/dist/cli/chunk-vh9w1sgp.js +0 -73
  677. package/dist/cli/chunk-vh9w1sgp.js.map +0 -10
  678. package/dist/cli/chunk-vrfp10qk.js +0 -81
  679. package/dist/cli/chunk-vrfp10qk.js.map +0 -10
  680. package/dist/cli/chunk-yg63d42r.js.map +0 -34
  681. package/docs/advanced/api-reference.mdx +0 -240
  682. package/docs/configuration/ask-ai.mdx +0 -256
  683. package/docs/reference/cli.mdx +0 -197
  684. package/skills/blume-migrate/assets/oxfmt@0.55.0.patch +0 -20
  685. package/src/components/content/changelog-element.ts +0 -69
  686. package/src/search/providers.ts +0 -91
  687. /package/dist/cli/{chunk-vacwm2hv.js.map → chunk-27g6wdth.js.map} +0 -0
  688. /package/dist/cli/{chunk-dwgcp5sm.js.map → chunk-ce574jw2.js.map} +0 -0
  689. /package/dist/cli/{chunk-e7f42gdj.js.map → chunk-fxypxtvm.js.map} +0 -0
  690. /package/dist/cli/{chunk-nn13znc2.js.map → chunk-zxcczpyx.js.map} +0 -0
@@ -0,0 +1,72 @@
1
+ import type { ArchivedVersionConfig, ResolvedConfig, ResolvedI18nConfig, ResolvedVersionsConfig } from "./schema.ts";
2
+ import type { Diagnostic, PageRecord } from "./types.ts";
3
+ /**
4
+ * Version logic, centralized. Every seam that needs to reason about docs
5
+ * versions (content discovery, navigation, manifest, runtime generation, the
6
+ * catch-all) goes through these helpers so the routing rules live in exactly
7
+ * one place — the same contract `./i18n.ts` holds for locales.
8
+ *
9
+ * The current version is the empty string `""`: the latest docs live at the
10
+ * content root with unprefixed URLs, and only archived snapshots have a
11
+ * directory and a URL segment.
12
+ */
13
+ /**
14
+ * Top-level folders that look like a version (`v1`, `V2.0`) — used by the
15
+ * unconfigured-snapshot diagnostic and by `blume version` to keep such folders
16
+ * out of new snapshots.
17
+ */
18
+ export declare const VERSION_LIKE: RegExp;
19
+ /** True when the project opts into versioning. */
20
+ export declare const versionsEnabled: (config: ResolvedConfig) => config is ResolvedConfig & {
21
+ versions: ResolvedVersionsConfig;
22
+ };
23
+ /** All archived version ids, in configured (switcher) order. */
24
+ export declare const archivedIds: (versions: ResolvedVersionsConfig) => string[];
25
+ /** Switcher label for a version: the current label for `""`, else per config. */
26
+ export declare const versionLabel: (id: string, versions: ResolvedVersionsConfig) => string;
27
+ /** The archived version config for an id (`undefined` for current/unknown). */
28
+ export declare const archivedVersion: (id: string, versions: ResolvedVersionsConfig) => ArchivedVersionConfig | undefined;
29
+ /** A resolved version (`""` for current) and the version-stripped remainder. */
30
+ export interface DetectedVersion {
31
+ version: string;
32
+ rest: string[];
33
+ }
34
+ /** {@link DetectedVersion} for a slash-joined source ref. */
35
+ export interface DetectedVersionRef {
36
+ version: string;
37
+ rest: string;
38
+ }
39
+ /**
40
+ * Detect a leading archived-version directory in a path's segments. The
41
+ * current version lives at the content root, so only archived ids are matched
42
+ * as a leading segment. Returns the resolved version (`""` for current) and
43
+ * the remaining (version-stripped) segments. Runs BEFORE locale detection —
44
+ * the snapshot directory is outermost on disk, so the locale parser must see
45
+ * a version-stripped path.
46
+ */
47
+ export declare const detectVersion: (parts: string[], versions: ResolvedVersionsConfig) => DetectedVersion;
48
+ /**
49
+ * {@link detectVersion} over a slash-joined source ref (`v1.0/fr/x.mdx`):
50
+ * returns the version and the version-stripped ref for the locale parser and
51
+ * route mapping to consume.
52
+ */
53
+ export declare const detectVersionRef: (ref: string, versions: ResolvedVersionsConfig) => DetectedVersionRef;
54
+ /**
55
+ * Prefix a version-agnostic logical route with its version: `/guides/x`
56
+ * becomes `/v1.0/guides/x`, `/` becomes `/v1.0`. The current version (`""`)
57
+ * is the identity.
58
+ */
59
+ export declare const versionizeRoute: (logicalRoute: string, version: string) => string;
60
+ /**
61
+ * The localized root route of a version: `/`, `/fr`, `/v1.0`, or `/fr/v1.0`.
62
+ * The locale prefix stays outermost, matching how page routes compose
63
+ * (`localizeRoute(versionizeRoute(...))`).
64
+ */
65
+ export declare const versionRoot: (version: string, locale?: string, i18n?: ResolvedI18nConfig) => string;
66
+ /**
67
+ * Warn about top-level content folders shaped like a version (`v1`, `v2.0`)
68
+ * that aren't declared in `versions.archived`. Without this they're silently
69
+ * treated as current-version content under a `/<folder>/…` route — usually a
70
+ * snapshot that wasn't registered in config.
71
+ */
72
+ export declare const versionsDiagnostics: (pages: PageRecord[], versions: ResolvedVersionsConfig) => Diagnostic[];
@@ -0,0 +1,9 @@
1
+ /**
2
+ * The schema js-yaml 4 loaded with by default: YAML 1.2 core scalars plus the
3
+ * `!!timestamp`, `!!merge`, `!!binary`, `!!omap`, `!!pairs`, and `!!set` tags.
4
+ * js-yaml 5 loads with the bare core schema instead, which turns
5
+ * `date: 2024-01-01` into a string and leaves `<<:` merge keys unresolved — a
6
+ * silent change to every page's front matter. Every Blume `load` call passes
7
+ * this schema so parsing stays identical across the upgrade.
8
+ */
9
+ export declare const YAML_SCHEMA: import("js-yaml").Schema;
@@ -0,0 +1,45 @@
1
+ import type { ResolvedConfig } from "../core/schema.ts";
2
+ import type { ProjectContext } from "../core/types.ts";
3
+ import type { ResolvedDeployment } from "./adapters/registry.ts";
4
+ /**
5
+ * Where a build's output lands. Every static build and most server builds
6
+ * write to Astro's `outDir`; the Vercel adapter writes its Build Output tree
7
+ * beside it instead. Each platform declares its own (see `deploy/platforms`).
8
+ */
9
+ export declare const deployOutputDir: (config: ResolvedConfig, context: ProjectContext) => string;
10
+ /**
11
+ * Directory whose contents the deploy platform serves as static files. Build
12
+ * artifacts (robots.txt, sitemap.xml, llms.txt, …) must be written here to be
13
+ * served. A static build serves `dist/` wherever it lands; a server build
14
+ * serves what its platform declares — the Build Output tree's `static/` half
15
+ * on Vercel, Astro's `build.client` dir (`dist/client/`) on Node and
16
+ * Cloudflare, `dist/` on Netlify.
17
+ */
18
+ export declare const deployStaticDir: (config: ResolvedConfig, context: ProjectContext) => string;
19
+ /**
20
+ * Whether the platform applies a `_headers` file to the static assets it
21
+ * serves — true where Netlify or Cloudflare read one, including a Cloudflare
22
+ * **server** build (the Worker serves `dist/client` through its ASSETS
23
+ * binding, which honors `_headers` exactly as Pages does), and for a static
24
+ * build with no named host. Deliberately false where the file would be inert:
25
+ * Node's standalone server has its own static handler with no `_headers`
26
+ * support, and Vercel's headers arrive through the routing config instead.
27
+ * Reporting a header that is not applied is worse than omitting it.
28
+ */
29
+ export declare const readsHeaderFiles: (deployment: ResolvedDeployment) => boolean;
30
+ /** Outcome of {@link surfaceAdapterOutput}, for logging. */
31
+ export type SurfaceResult = {
32
+ moved: false;
33
+ } | {
34
+ from: string;
35
+ moved: true;
36
+ to: string;
37
+ };
38
+ /**
39
+ * Move a server adapter's deploy bundle out of the hidden `.blume` runtime and
40
+ * up to the project root, where the deploy platform expects it. A no-op for
41
+ * static builds, for platforms whose bundle already lands where they look
42
+ * (`hiddenRuntime.surfacePath` is null), and when the expected output is
43
+ * absent.
44
+ */
45
+ export declare const surfaceAdapterOutput: (config: ResolvedConfig, context: ProjectContext) => Promise<SurfaceResult>;
@@ -0,0 +1,40 @@
1
+ import type { DeployAdapter, DeployOptions } from "./types.ts";
2
+ /** The Astro adapter package a Cloudflare server build imports. */
3
+ export declare const CLOUDFLARE_ADAPTER_PACKAGE = "@astrojs/cloudflare";
4
+ /**
5
+ * Options for {@link cloudflare}: `output`, `site`, and `base`, plus any
6
+ * option of `@astrojs/cloudflare` forwarded verbatim (`platformProxy`,
7
+ * `routes`, `cloudflareModules`, …). Blume sets `prerenderEnvironment`,
8
+ * `imageService`, and `configPath` itself; an option you pass wins.
9
+ */
10
+ export type CloudflareOptions = DeployOptions;
11
+ export type CloudflareAdapter = DeployAdapter<"cloudflare">;
12
+ export declare const cloudflareOptionsSchema: import("zod").ZodObject<{
13
+ base: import("zod").ZodOptional<import("zod").ZodString>;
14
+ output: import("zod").ZodOptional<import("zod").ZodEnum<{
15
+ static: "static";
16
+ server: "server";
17
+ }>>;
18
+ site: import("zod").ZodOptional<import("zod").ZodURL>;
19
+ }, import("zod/v4/core").$catchall<import("zod").ZodJSONSchema>>;
20
+ export declare const cloudflareAdapterSchema: import("zod").ZodObject<{
21
+ kind: import("zod").ZodLiteral<"cloudflare">;
22
+ options: import("zod").ZodObject<{
23
+ base: import("zod").ZodOptional<import("zod").ZodString>;
24
+ output: import("zod").ZodOptional<import("zod").ZodEnum<{
25
+ static: "static";
26
+ server: "server";
27
+ }>>;
28
+ site: import("zod").ZodOptional<import("zod").ZodURL>;
29
+ }, import("zod/v4/core").$catchall<import("zod").ZodJSONSchema>>;
30
+ requiredSecrets: import("zod").ZodArray<import("zod").ZodString>;
31
+ runtimeDeps: import("zod").ZodArray<import("zod").ZodString>;
32
+ }, import("zod/v4/core").$strict>;
33
+ /**
34
+ * Cloudflare Workers and Pages. A server build emits a Worker into
35
+ * `dist/server` (with a generated wrapper that answers `Accept:
36
+ * text/markdown`) and serves `dist/client` through the ASSETS binding.
37
+ * `@astrojs/cloudflare` is an optional peer: install it in the project
38
+ * (`npm install @astrojs/cloudflare`).
39
+ */
40
+ export declare const cloudflare: (options?: CloudflareOptions) => CloudflareAdapter;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Deployment adapters for `blume.config.ts`:
3
+ *
4
+ * ```ts
5
+ * import { defineConfig } from "blume";
6
+ * import { vercel } from "blume/deploy";
7
+ *
8
+ * export default defineConfig({
9
+ * deployment: vercel({ site: "https://docs.example.com" }),
10
+ * });
11
+ * ```
12
+ *
13
+ * Naming a host switches the build to server output on that host; leave
14
+ * `deployment` unset (or `{ site, base }`) for a static build anywhere. Each
15
+ * factory returns a plain descriptor (see `core/adapter.ts`) that the schema
16
+ * validates; the generated `astro.config.mjs` imports the real `@astrojs/*`
17
+ * adapter and passes the options through verbatim.
18
+ */
19
+ export type { AdapterDescriptor, JsonValue } from "../../core/adapter.ts";
20
+ export { cloudflare } from "./cloudflare.ts";
21
+ export type { CloudflareAdapter, CloudflareOptions } from "./cloudflare.ts";
22
+ export { netlify } from "./netlify.ts";
23
+ export type { NetlifyAdapter, NetlifyOptions } from "./netlify.ts";
24
+ export { node } from "./node.ts";
25
+ export type { NodeAdapter, NodeOptions } from "./node.ts";
26
+ export type { AnyDeployAdapter, DeployAdapterKind, DeploymentInput, ResolvedDeployment, ResolvedDeployOptions, } from "./registry.ts";
27
+ export type { DeployAdapter, DeployNamedOptions, DeployOptions, DeployOutput, StaticDeployment, } from "./types.ts";
28
+ export { vercel } from "./vercel.ts";
29
+ export type { VercelAdapter, VercelOptions } from "./vercel.ts";
@@ -0,0 +1,37 @@
1
+ import type { DeployAdapter, DeployOptions } from "./types.ts";
2
+ /** The Astro adapter package a Netlify server build imports. */
3
+ export declare const NETLIFY_ADAPTER_PACKAGE = "@astrojs/netlify";
4
+ /**
5
+ * Options for {@link netlify}: `output`, `site`, and `base`, plus any option
6
+ * of `@astrojs/netlify` forwarded verbatim (`edgeMiddleware`, `imageCDN`,
7
+ * `cacheOnDemandPages`, …).
8
+ */
9
+ export type NetlifyOptions = DeployOptions;
10
+ export type NetlifyAdapter = DeployAdapter<"netlify">;
11
+ export declare const netlifyOptionsSchema: import("zod").ZodObject<{
12
+ base: import("zod").ZodOptional<import("zod").ZodString>;
13
+ output: import("zod").ZodOptional<import("zod").ZodEnum<{
14
+ static: "static";
15
+ server: "server";
16
+ }>>;
17
+ site: import("zod").ZodOptional<import("zod").ZodURL>;
18
+ }, import("zod/v4/core").$catchall<import("zod").ZodJSONSchema>>;
19
+ export declare const netlifyAdapterSchema: import("zod").ZodObject<{
20
+ kind: import("zod").ZodLiteral<"netlify">;
21
+ options: import("zod").ZodObject<{
22
+ base: import("zod").ZodOptional<import("zod").ZodString>;
23
+ output: import("zod").ZodOptional<import("zod").ZodEnum<{
24
+ static: "static";
25
+ server: "server";
26
+ }>>;
27
+ site: import("zod").ZodOptional<import("zod").ZodURL>;
28
+ }, import("zod/v4/core").$catchall<import("zod").ZodJSONSchema>>;
29
+ requiredSecrets: import("zod").ZodArray<import("zod").ZodString>;
30
+ runtimeDeps: import("zod").ZodArray<import("zod").ZodString>;
31
+ }, import("zod/v4/core").$strict>;
32
+ /**
33
+ * Netlify. A server build runs on Netlify Functions from the Frameworks API
34
+ * tree the adapter writes to `.netlify/v1`. `@astrojs/netlify` is an optional
35
+ * peer: install it in the project (`npm install @astrojs/netlify`).
36
+ */
37
+ export declare const netlify: (options?: NetlifyOptions) => NetlifyAdapter;
@@ -0,0 +1,37 @@
1
+ import type { DeployAdapter, DeployOptions } from "./types.ts";
2
+ /** The Astro adapter package a Node server build imports. */
3
+ export declare const NODE_ADAPTER_PACKAGE = "@astrojs/node";
4
+ /**
5
+ * Options for {@link node}: `output`, `site`, and `base`, plus any option of
6
+ * `@astrojs/node` forwarded verbatim (`mode`, `host`, `port`, …). Blume
7
+ * defaults `mode` to `"standalone"`; an option you pass wins.
8
+ */
9
+ export type NodeOptions = DeployOptions;
10
+ export type NodeAdapter = DeployAdapter<"node">;
11
+ export declare const nodeOptionsSchema: import("zod").ZodObject<{
12
+ base: import("zod").ZodOptional<import("zod").ZodString>;
13
+ output: import("zod").ZodOptional<import("zod").ZodEnum<{
14
+ static: "static";
15
+ server: "server";
16
+ }>>;
17
+ site: import("zod").ZodOptional<import("zod").ZodURL>;
18
+ }, import("zod/v4/core").$catchall<import("zod").ZodJSONSchema>>;
19
+ export declare const nodeAdapterSchema: import("zod").ZodObject<{
20
+ kind: import("zod").ZodLiteral<"node">;
21
+ options: import("zod").ZodObject<{
22
+ base: import("zod").ZodOptional<import("zod").ZodString>;
23
+ output: import("zod").ZodOptional<import("zod").ZodEnum<{
24
+ static: "static";
25
+ server: "server";
26
+ }>>;
27
+ site: import("zod").ZodOptional<import("zod").ZodURL>;
28
+ }, import("zod/v4/core").$catchall<import("zod").ZodJSONSchema>>;
29
+ requiredSecrets: import("zod").ZodArray<import("zod").ZodString>;
30
+ runtimeDeps: import("zod").ZodArray<import("zod").ZodString>;
31
+ }, import("zod/v4/core").$strict>;
32
+ /**
33
+ * A self-hosted Node server (containers, VMs). The standalone server in
34
+ * `dist/server/entry.mjs` serves `dist/client` itself. `@astrojs/node` is one
35
+ * of Blume's own dependencies.
36
+ */
37
+ export declare const node: (options?: NodeOptions) => NodeAdapter;
@@ -0,0 +1,133 @@
1
+ import { z } from "zod";
2
+ import type { AdapterDescriptor, JsonValue } from "../../core/adapter.ts";
3
+ import type { CloudflareAdapter } from "./cloudflare.ts";
4
+ import type { NetlifyAdapter } from "./netlify.ts";
5
+ import type { NodeAdapter } from "./node.ts";
6
+ import type { DeployOutput, StaticDeployment } from "./types.ts";
7
+ import type { VercelAdapter } from "./vercel.ts";
8
+ /** Every descriptor a host adapter factory can return. */
9
+ export type AnyDeployAdapter = CloudflareAdapter | NetlifyAdapter | NodeAdapter | VercelAdapter;
10
+ /** Every adapter identity, including the resolved `static` default. */
11
+ export type DeployAdapterKind = "static" | AnyDeployAdapter["kind"];
12
+ /**
13
+ * A resolved deployment's options: `output` is always present (a host adapter
14
+ * defaults to `server`, the static form is `static`), and anything else the
15
+ * adapter was given rides along for the `@astrojs/*` constructor.
16
+ */
17
+ export type ResolvedDeployOptions = {
18
+ base?: string;
19
+ output: DeployOutput;
20
+ site?: string;
21
+ } & {
22
+ [option: string]: JsonValue;
23
+ };
24
+ /**
25
+ * What `config.deployment` resolves to: the descriptor the factory returned
26
+ * with `output` filled in, or the `static` descriptor for the plain form.
27
+ */
28
+ export type ResolvedDeployment = AdapterDescriptor<DeployAdapterKind, ResolvedDeployOptions>;
29
+ /** What `blume.config.ts` accepts under `deployment`. */
30
+ export type DeploymentInput = AnyDeployAdapter | StaticDeployment;
31
+ /**
32
+ * Validates what a factory returned (or the plain static form) and resolves
33
+ * it to the canonical descriptor, re-derived through the factory so a
34
+ * descriptor that went through JSON carries the same metadata Blume ships.
35
+ * `static` is internal: `kind: "static"` is admitted but never needed.
36
+ */
37
+ export declare const resolvedDeploymentSchema: z.ZodPipe<z.ZodDiscriminatedUnion<[z.ZodObject<{
38
+ kind: z.ZodLiteral<"cloudflare">;
39
+ options: z.ZodObject<{
40
+ base: z.ZodOptional<z.ZodString>;
41
+ output: z.ZodOptional<z.ZodEnum<{
42
+ static: "static";
43
+ server: "server";
44
+ }>>;
45
+ site: z.ZodOptional<z.ZodURL>;
46
+ }, z.core.$catchall<z.ZodJSONSchema>>;
47
+ requiredSecrets: z.ZodArray<z.ZodString>;
48
+ runtimeDeps: z.ZodArray<z.ZodString>;
49
+ }, z.core.$strict>, z.ZodObject<{
50
+ kind: z.ZodLiteral<"netlify">;
51
+ options: z.ZodObject<{
52
+ base: z.ZodOptional<z.ZodString>;
53
+ output: z.ZodOptional<z.ZodEnum<{
54
+ static: "static";
55
+ server: "server";
56
+ }>>;
57
+ site: z.ZodOptional<z.ZodURL>;
58
+ }, z.core.$catchall<z.ZodJSONSchema>>;
59
+ requiredSecrets: z.ZodArray<z.ZodString>;
60
+ runtimeDeps: z.ZodArray<z.ZodString>;
61
+ }, z.core.$strict>, z.ZodObject<{
62
+ kind: z.ZodLiteral<"node">;
63
+ options: z.ZodObject<{
64
+ base: z.ZodOptional<z.ZodString>;
65
+ output: z.ZodOptional<z.ZodEnum<{
66
+ static: "static";
67
+ server: "server";
68
+ }>>;
69
+ site: z.ZodOptional<z.ZodURL>;
70
+ }, z.core.$catchall<z.ZodJSONSchema>>;
71
+ requiredSecrets: z.ZodArray<z.ZodString>;
72
+ runtimeDeps: z.ZodArray<z.ZodString>;
73
+ }, z.core.$strict>, z.ZodObject<{
74
+ kind: z.ZodLiteral<"vercel">;
75
+ options: z.ZodObject<{
76
+ base: z.ZodOptional<z.ZodString>;
77
+ output: z.ZodOptional<z.ZodEnum<{
78
+ static: "static";
79
+ server: "server";
80
+ }>>;
81
+ site: z.ZodOptional<z.ZodURL>;
82
+ }, z.core.$catchall<z.ZodJSONSchema>>;
83
+ requiredSecrets: z.ZodArray<z.ZodString>;
84
+ runtimeDeps: z.ZodArray<z.ZodString>;
85
+ }, z.core.$strict>, z.ZodObject<{
86
+ base: z.ZodOptional<z.ZodString>;
87
+ kind: z.ZodOptional<z.ZodLiteral<"static">>;
88
+ site: z.ZodOptional<z.ZodURL>;
89
+ }, z.core.$strict>], "kind">, z.ZodTransform<ResolvedDeployment, {
90
+ kind: "cloudflare";
91
+ options: {
92
+ [x: string]: z.core.util.JSONType;
93
+ base?: string | undefined;
94
+ output?: "static" | "server" | undefined;
95
+ site?: string | undefined;
96
+ };
97
+ requiredSecrets: string[];
98
+ runtimeDeps: string[];
99
+ } | {
100
+ kind: "netlify";
101
+ options: {
102
+ [x: string]: z.core.util.JSONType;
103
+ base?: string | undefined;
104
+ output?: "static" | "server" | undefined;
105
+ site?: string | undefined;
106
+ };
107
+ requiredSecrets: string[];
108
+ runtimeDeps: string[];
109
+ } | {
110
+ kind: "node";
111
+ options: {
112
+ [x: string]: z.core.util.JSONType;
113
+ base?: string | undefined;
114
+ output?: "static" | "server" | undefined;
115
+ site?: string | undefined;
116
+ };
117
+ requiredSecrets: string[];
118
+ runtimeDeps: string[];
119
+ } | {
120
+ kind: "vercel";
121
+ options: {
122
+ [x: string]: z.core.util.JSONType;
123
+ base?: string | undefined;
124
+ output?: "static" | "server" | undefined;
125
+ site?: string | undefined;
126
+ };
127
+ requiredSecrets: string[];
128
+ runtimeDeps: string[];
129
+ } | {
130
+ base?: string | undefined;
131
+ kind?: "static" | undefined;
132
+ site?: string | undefined;
133
+ }>>;
@@ -0,0 +1,71 @@
1
+ import { z } from "zod";
2
+ import type { AdapterDescriptor, JsonValue } from "../../core/adapter.ts";
3
+ /** Build output mode: prerendered HTML only, or a server that can also answer requests. */
4
+ export type DeployOutput = "static" | "server";
5
+ /** The options every host adapter maps itself. */
6
+ export interface DeployNamedOptions {
7
+ /** Base path when the site is served from a subdirectory (`/docs`). */
8
+ base?: string;
9
+ /**
10
+ * Build output mode. Defaults to `server`: naming a host adapter is how a
11
+ * site opts into server rendering. Pass `"static"` to keep a static build
12
+ * on that host, with its site detection and platform files.
13
+ */
14
+ output?: DeployOutput;
15
+ /**
16
+ * Canonical site URL. Needed for absolute links, the sitemap, and OG images;
17
+ * detected from the platform's env at build time when unset.
18
+ */
19
+ site?: string;
20
+ }
21
+ /**
22
+ * Options for a host adapter: the named options plus anything else, forwarded
23
+ * verbatim to the underlying `@astrojs/*` adapter's constructor. JSON values
24
+ * only — the descriptor is inlined into the generated `astro.config.mjs`.
25
+ */
26
+ export type DeployOptions = DeployNamedOptions & {
27
+ [option: string]: JsonValue;
28
+ };
29
+ /**
30
+ * The descriptor a host adapter factory returns and `blume.config.ts` carries
31
+ * under `deployment`: the shared {@link AdapterDescriptor} contract, with the
32
+ * options a host takes. Plain data, never an Astro integration — the generated
33
+ * config imports the real adapter package itself.
34
+ */
35
+ export type DeployAdapter<Kind extends string, Options extends DeployOptions = DeployOptions> = AdapterDescriptor<Kind, Options>;
36
+ /**
37
+ * A static build for any host — the form `deployment` takes when no adapter is
38
+ * named: `{ site, base }`, or nothing at all. `kind` is the resolved
39
+ * discriminator; leave it unset.
40
+ */
41
+ export interface StaticDeployment {
42
+ /** Base path when the site is served from a subdirectory (`/docs`). */
43
+ base?: string;
44
+ /** The resolved kind; never needed in a config. */
45
+ kind?: "static";
46
+ /**
47
+ * Canonical site URL. Needed for absolute links, the sitemap, and OG images;
48
+ * detected from the platform's env at build time when unset.
49
+ */
50
+ site?: string;
51
+ }
52
+ /** The named options' schema; every host adapter extends it with `z.json()` passthrough. */
53
+ export declare const deployOptionsSchema: z.ZodObject<{
54
+ base: z.ZodOptional<z.ZodString>;
55
+ output: z.ZodOptional<z.ZodEnum<{
56
+ static: "static";
57
+ server: "server";
58
+ }>>;
59
+ site: z.ZodOptional<z.ZodURL>;
60
+ }, z.core.$catchall<z.ZodJSONSchema>>;
61
+ /**
62
+ * The options Blume does not name — what reaches the `@astrojs/*` adapter's
63
+ * constructor verbatim.
64
+ */
65
+ export declare const deployPassthrough: (options: DeployOptions) => Record<string, JsonValue>;
66
+ /**
67
+ * The runtime dependency a host adapter declares: its `@astrojs/*` package,
68
+ * which the generated `astro.config.mjs` imports for a server build and
69
+ * nothing imports for a static one. Unset `output` means server.
70
+ */
71
+ export declare const serverRuntimeDeps: (options: DeployNamedOptions, adapterPackage: string) => string[];
@@ -0,0 +1,38 @@
1
+ import type { DeployAdapter, DeployOptions } from "./types.ts";
2
+ /** The Astro adapter package a Vercel server build imports. */
3
+ export declare const VERCEL_ADAPTER_PACKAGE = "@astrojs/vercel";
4
+ /**
5
+ * Options for {@link vercel}: `output`, `site`, and `base`, plus any option of
6
+ * `@astrojs/vercel` forwarded verbatim (`isr`, `maxDuration`, `imageService`,
7
+ * `webAnalytics`, …).
8
+ */
9
+ export type VercelOptions = DeployOptions;
10
+ export type VercelAdapter = DeployAdapter<"vercel">;
11
+ export declare const vercelOptionsSchema: import("zod").ZodObject<{
12
+ base: import("zod").ZodOptional<import("zod").ZodString>;
13
+ output: import("zod").ZodOptional<import("zod").ZodEnum<{
14
+ static: "static";
15
+ server: "server";
16
+ }>>;
17
+ site: import("zod").ZodOptional<import("zod").ZodURL>;
18
+ }, import("zod/v4/core").$catchall<import("zod").ZodJSONSchema>>;
19
+ export declare const vercelAdapterSchema: import("zod").ZodObject<{
20
+ kind: import("zod").ZodLiteral<"vercel">;
21
+ options: import("zod").ZodObject<{
22
+ base: import("zod").ZodOptional<import("zod").ZodString>;
23
+ output: import("zod").ZodOptional<import("zod").ZodEnum<{
24
+ static: "static";
25
+ server: "server";
26
+ }>>;
27
+ site: import("zod").ZodOptional<import("zod").ZodURL>;
28
+ }, import("zod/v4/core").$catchall<import("zod").ZodJSONSchema>>;
29
+ requiredSecrets: import("zod").ZodArray<import("zod").ZodString>;
30
+ runtimeDeps: import("zod").ZodArray<import("zod").ZodString>;
31
+ }, import("zod/v4/core").$strict>;
32
+ /**
33
+ * Vercel. A server build writes the Build Output tree to `.vercel/output`,
34
+ * audits the function bundle for imports the platform's dependency trace
35
+ * dropped, and wires `Accept: text/markdown` negotiation into the routing
36
+ * config. `@astrojs/vercel` is one of Blume's own dependencies.
37
+ */
38
+ export declare const vercel: (options?: VercelOptions) => VercelAdapter;
@@ -0,0 +1,65 @@
1
+ import type { BlumeProject } from "../core/project-graph.ts";
2
+ /**
3
+ * The deploy artifacts Blume layers onto Astro's build output: the search
4
+ * index (and hosted-provider sync), llms.txt, sitemap, robots, the
5
+ * agent-readability manifest, the `.well-known` discovery files, Agent
6
+ * Skills, and the platform `_redirects`/`_headers` files.
7
+ *
8
+ * Written from the integration's `astro:build:done` hook — Astro's channel
9
+ * for exactly this kind of post-build work — into the directory Astro
10
+ * reports as the client output (`dist/`, or `dist/client` for a server
11
+ * build). The Vercel adapter copies that directory into its Build Output
12
+ * static tree in a later hook, so the artifacts ride along; every other
13
+ * adapter serves it directly. Running inside the hook rather than after
14
+ * `astro build` returns means an ejected project keeps producing them.
15
+ *
16
+ * Every file yields to one the user ships in `public/` (Astro copied it into
17
+ * the output before this runs).
18
+ */
19
+ /** The log surface the writers report through (Astro's integration logger). */
20
+ export interface ArtifactLogger {
21
+ info: (message: string) => void;
22
+ warn: (message: string) => void;
23
+ }
24
+ /**
25
+ * Emit a `_headers` file so Netlify / Cloudflare serve the raw AI-ready
26
+ * endpoints (`*.md`, `*.mdx`, `*.txt`) with an explicit `charset=utf-8`. Without
27
+ * it those hosts send `text/markdown` / `text/plain` with no charset and
28
+ * browsers fall back to Windows-1252, garbling any non-ASCII docs (#82).
29
+ *
30
+ * The same file carries the rest of the agent-discovery surface that only a
31
+ * response header can express: the homepage `Link` header (RFC 8288, see
32
+ * `ai/link-headers.ts`), and the registered media types for the extensionless
33
+ * well-known files — `application/linkset+json` for the API catalog, the
34
+ * signatures directory, and the Agent Skills archives. A static host serves
35
+ * those as `octet-stream` or nothing at all without a rule.
36
+ *
37
+ * A `_headers` shipped in `public/` wins, exactly like `_redirects` — the opt-out
38
+ * is checked at its source rather than in `dist`, because on Cloudflare the file
39
+ * in `dist` is not necessarily the user's: `@astrojs/cloudflare` writes its own
40
+ * `_headers` (an immutable `Cache-Control` rule for `/_astro/*`) during the
41
+ * build, before this runs. Testing `dist` therefore read an adapter-generated
42
+ * file as a user opt-out and skipped silently. When both exist, the adapter's
43
+ * rules are preserved and ours are appended.
44
+ *
45
+ * Gated on {@link readsHeaderFiles}, not on `output === "static"`. A **Cloudflare
46
+ * server** build serves `dist/client` through the Worker's ASSETS binding, and
47
+ * Workers static assets honor `_headers` from that directory — so the file
48
+ * applies there too, and skipping it left every Cloudflare server build with no
49
+ * `Link` header and no media type on its own discovery files. The charset half
50
+ * of this file *is* redundant on a server build, because the runtime endpoint
51
+ * sets Content-Type on the Response itself; the `Link` and well-known halves are
52
+ * not, and one conclusion about the first was applied to all three.
53
+ *
54
+ * Exported for the test suite, which exercises it in a subprocess like the
55
+ * command helpers.
56
+ */
57
+ export declare const emitHeaderFiles: (project: BlumeProject, distDir: string, logger: ArtifactLogger) => Promise<void>;
58
+ /**
59
+ * Write every deploy artifact into `distDir`, the directory the platform
60
+ * serves as static files (see the module comment). A user's own `public/`
61
+ * file always wins. `indexSearch` is the Pagefind indexer, replaceable by
62
+ * tests: Pagefind's in-process service cannot be reopened once a build has
63
+ * closed it, so only one suite may run the real one.
64
+ */
65
+ export declare const publishBuildArtifacts: (project: BlumeProject, distDir: string, logger: ArtifactLogger, indexSearch?: (outDir: string) => Promise<number>) => Promise<void>;