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,50 @@
1
+ import { z } from "zod";
2
+ import type { AdapterDescriptor, JsonValue } from "../core/adapter.ts";
3
+ import type { HeadScript } from "./head.ts";
4
+ /** Segment's CDN, where `segment()` loads analytics.js from when `cdn` is unset. */
5
+ export declare const SEGMENT_DEFAULT_CDN = "https://cdn.segment.com";
6
+ /** The options {@link segment} maps itself. */
7
+ export interface SegmentNamedOptions {
8
+ /**
9
+ * Origin of a custom domain that proxies Segment's CDN, e.g.
10
+ * `https://cdn.example.com`. Defaults to Segment's own.
11
+ */
12
+ cdn?: string;
13
+ /** Write key of the JavaScript source. */
14
+ key: string;
15
+ }
16
+ /**
17
+ * Options for {@link segment}: the named options plus any other
18
+ * `analytics.load` option, forwarded verbatim (`integrations`, …). JSON
19
+ * values only.
20
+ */
21
+ export type SegmentOptions = SegmentNamedOptions & {
22
+ [option: string]: JsonValue;
23
+ };
24
+ export declare const segmentOptionsSchema: z.ZodObject<{
25
+ cdn: z.ZodOptional<z.ZodString>;
26
+ key: z.ZodString;
27
+ }, z.core.$catchall<z.ZodJSONSchema>>;
28
+ export type SegmentAdapter = AdapterDescriptor<"segment", SegmentOptions>;
29
+ export declare const segmentAdapterSchema: z.ZodObject<{
30
+ kind: z.ZodLiteral<"segment">;
31
+ options: z.ZodObject<{
32
+ cdn: z.ZodOptional<z.ZodString>;
33
+ key: z.ZodString;
34
+ }, z.core.$catchall<z.ZodJSONSchema>>;
35
+ requiredSecrets: z.ZodArray<z.ZodString>;
36
+ runtimeDeps: z.ZodArray<z.ZodString>;
37
+ }, z.core.$strict>;
38
+ /**
39
+ * Segment (Twilio Segment) analytics.js. The write key is meant for the
40
+ * browser — it identifies the source the SDK reports to.
41
+ */
42
+ export declare const segment: (options: SegmentOptions) => SegmentAdapter;
43
+ /**
44
+ * The install snippet, with `key` mapped to the write key, `cdn` mapped to
45
+ * the script origin (and `analytics._cdn`, so the library fetches its
46
+ * integrations from the same place), and everything else forwarded as the
47
+ * load options; the object is left off when there is nothing to pass, as the
48
+ * snippet prints it.
49
+ */
50
+ export declare const segmentHead: (options: SegmentOptions) => HeadScript[];
@@ -0,0 +1,48 @@
1
+ import { z } from "zod";
2
+ import type { AdapterDescriptor, JsonValue } from "../core/adapter.ts";
3
+ /** The props of `@vercel/analytics/astro` that {@link vercel} documents. */
4
+ export interface VercelNamedOptions {
5
+ /** Log every event to the console. Defaults to the component's own rule (on outside production). */
6
+ debug?: boolean;
7
+ /** Force the script's environment instead of letting it detect one. */
8
+ mode?: "auto" | "development" | "production";
9
+ }
10
+ /**
11
+ * Options for {@link vercel}: the documented props plus any other prop of the
12
+ * official component, forwarded verbatim (`endpoint`, `scriptSrc`, `dsn`, …).
13
+ * JSON values only; `beforeSend` is a function and can't travel through
14
+ * config — assign `window.webAnalyticsBeforeSend` from a `script()` adapter
15
+ * listed before `vercel()` instead.
16
+ */
17
+ export type VercelOptions = VercelNamedOptions & {
18
+ [option: string]: JsonValue;
19
+ };
20
+ export declare const vercelOptionsSchema: z.ZodObject<{
21
+ debug: z.ZodOptional<z.ZodBoolean>;
22
+ mode: z.ZodOptional<z.ZodEnum<{
23
+ auto: "auto";
24
+ development: "development";
25
+ production: "production";
26
+ }>>;
27
+ }, z.core.$catchall<z.ZodJSONSchema>>;
28
+ export type VercelAdapter = AdapterDescriptor<"vercel", VercelOptions>;
29
+ export declare const vercelAdapterSchema: z.ZodObject<{
30
+ kind: z.ZodLiteral<"vercel">;
31
+ options: z.ZodObject<{
32
+ debug: z.ZodOptional<z.ZodBoolean>;
33
+ mode: z.ZodOptional<z.ZodEnum<{
34
+ auto: "auto";
35
+ development: "development";
36
+ production: "production";
37
+ }>>;
38
+ }, z.core.$catchall<z.ZodJSONSchema>>;
39
+ requiredSecrets: z.ZodArray<z.ZodString>;
40
+ runtimeDeps: z.ZodArray<z.ZodString>;
41
+ }, z.core.$strict>;
42
+ /**
43
+ * Vercel Web Analytics, rendered through the official Astro component, which
44
+ * injects the first-party script Vercel serves at `/_vercel/insights` once Web
45
+ * Analytics is enabled for the project. Needs no keys. `@vercel/analytics` is
46
+ * one of Blume's own dependencies, so the adapter declares no runtime dep.
47
+ */
48
+ export declare const vercel: (options?: VercelOptions) => VercelAdapter;
@@ -0,0 +1,76 @@
1
+ import type { AstroIntegration } from "astro";
2
+ import type { CustomPageRoute } from "../core/custom-pages.ts";
3
+ import type { BlumeProject } from "../core/project-graph.ts";
4
+ import type { Diagnostic } from "../core/types.ts";
5
+ /**
6
+ * Hand the scanned project to the integration ahead of `build()`, so its
7
+ * `astro:build:done` hook can write the deploy artifacts without scanning
8
+ * again. `blume build` publishes it for a real build and nothing for an
9
+ * isolated verify build, which produces no artifacts. `null` withdraws it.
10
+ */
11
+ export declare const publishBuildProject: (project: BlumeProject | null) => void;
12
+ /**
13
+ * Publish the dev negotiation inputs for the running server: the content
14
+ * routes with a Markdown variant and the homepage `Link` header. Called by
15
+ * `generateRuntime` on every pass, so the middleware follows a route rename
16
+ * without the generated config changing. `null` withdraws a publication, so
17
+ * the middleware falls back to the options baked into the integration call
18
+ * (an ejected project has no CLI to publish).
19
+ */
20
+ export declare const publishDevNegotiation: (negotiation: {
21
+ contentRoutes: readonly string[];
22
+ homeLinkHeader?: string;
23
+ } | null) => void;
24
+ /**
25
+ * Re-run Astro's content-layer loaders against the live dev server. Returns
26
+ * `false` when no server has registered one — before the first
27
+ * `astro:server:setup`, or outside `blume dev` — so the caller can fall back.
28
+ * A route-set change (a page added, removed, or a folder renamed) is what
29
+ * needs this: Astro's glob watcher misses directory renames, and its in-place
30
+ * config restart never re-globs, so without a re-sync `getEntry` reads a
31
+ * stale store and the moved page 404s.
32
+ */
33
+ export declare const refreshBlumeContent: () => Promise<boolean>;
34
+ /**
35
+ * Surface Blume's own diagnostics (config/frontmatter/content errors) in the
36
+ * Vite/Astro browser error overlay during `blume dev`, so they don't hide in the
37
+ * terminal. A no-op when there are no errors or the dev server isn't up. The
38
+ * overlay clears itself on the next successful HMR update.
39
+ */
40
+ export declare const showBlumeErrorOverlay: (diagnostics: Diagnostic[]) => void;
41
+ /** A user page mounted into the generated runtime. */
42
+ export type BlumePageRoute = CustomPageRoute;
43
+ export interface BlumeIntegrationOptions {
44
+ pages: BlumePageRoute[];
45
+ /**
46
+ * Page routes that have a raw-Markdown variant (the content manifest). The
47
+ * hidden runtime leaves this out: the CLI publishes the live set through
48
+ * `publishDevNegotiation` on every regeneration, so a route change never
49
+ * rewrites the generated config. An ejected project, which has no CLI,
50
+ * bakes it in here.
51
+ */
52
+ contentRoutes?: string[];
53
+ /**
54
+ * Homepage `Link` header value for agent discovery (see
55
+ * `ai/link-headers.ts`); the dev-server counterpart of the `_headers` /
56
+ * Vercel-config emission, so `curl -I` against `blume dev` shows what the
57
+ * deployed site will send. Published the same way as `contentRoutes`.
58
+ */
59
+ homeLinkHeader?: string;
60
+ /**
61
+ * Blume project root to scan on `astro:build:done` for the deploy artifacts
62
+ * (search index, llms.txt, sitemap, …) when no CLI has published the
63
+ * project — an ejected app running plain `astro build`. Relative to the
64
+ * Astro root. The hidden runtime leaves it unset: `blume build` publishes
65
+ * its already-scanned project instead.
66
+ */
67
+ buildArtifactsRoot?: string;
68
+ }
69
+ /**
70
+ * Blume's Astro integration. Mounts user-authored pages from `pages/` into the
71
+ * generated runtime via `injectRoute`, keeping each file in its original
72
+ * location so relative imports and `getStaticPaths` keep working; declares
73
+ * the `blume:*` virtual modules' types through `injectTypes`; and teaches the
74
+ * dev server to honor `Accept: text/markdown`.
75
+ */
76
+ export declare const blumeIntegration: (options: BlumeIntegrationOptions) => AstroIntegration;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * HTTP content negotiation for the raw-Markdown variants. The `<route>.md`
3
+ * endpoints already serve a page's source verbatim; these helpers let the dev
4
+ * server honor `Accept: text/markdown` by transparently rewriting a page
5
+ * request to its `.md` variant.
6
+ *
7
+ * The Cloudflare negotiation Worker embeds a plain-JavaScript copy of these
8
+ * helpers (`deploy/cloudflare-negotiation.ts` — its deploy bundle is uploaded
9
+ * unbundled, so it cannot import this module); when editing here, mirror the
10
+ * change there. Parity is enforced by `test/cloudflare-negotiation.test.ts`.
11
+ */
12
+ /**
13
+ * Whether the client explicitly prefers Markdown over HTML. Browsers never send
14
+ * `text/markdown`, so an ordinary page request (`text/html` or the catch-all wildcard) is false.
15
+ */
16
+ export declare const prefersMarkdown: (accept: string | null | undefined) => boolean;
17
+ /**
18
+ * Map a page request URL to its `.md` variant, or `null` when the requested
19
+ * path is not a known content route (Vite/Astro internals, assets, API routes,
20
+ * landing pages, and user `.astro` pages all fall through). `routes` is the set
21
+ * of page paths that have a raw-Markdown variant.
22
+ */
23
+ export declare const markdownVariantUrl: (rawUrl: string | null | undefined, routes: ReadonlySet<string>, base?: string) => string | null;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Ambient declarations for the `blume:*` virtual modules the generated pages
3
+ * and Blume's own layouts import. The integration hands them to Astro through
4
+ * `injectTypes` on `astro:config:done`, so they land under
5
+ * `.astro/integrations/blume/` and are referenced from Astro's generated
6
+ * `types.d.ts` — the same channel `astro:content` and `astro:env` use — rather
7
+ * than a hand-written `src/env.d.ts` the generator and eject each had to
8
+ * write. Every project that mounts the integration gets the types with it.
9
+ *
10
+ * `examplesModule` is the path of the generated `examples.ts` relative to the
11
+ * declaration file: the `blume:examples` map is typed from that module's
12
+ * literal export so `<Component path>` lookups stay typed per project.
13
+ */
14
+ export declare const runtimeModuleDeclarations: (examplesModule: string) => string;
@@ -0,0 +1,44 @@
1
+ import type { BlumeProject } from "../core/project-graph.ts";
2
+ import type { BlumePageRoute } from "./integration.ts";
3
+ export { customStaticRoutes, discoverPages, discoverPagesSync, } from "../core/custom-pages.ts";
4
+ /**
5
+ * Whether the project already owns `route` — through a custom `.astro` page
6
+ * (injected, so matched on `pattern`) or a content page (matched on `route`).
7
+ * Used to skip a generated default page (e.g. `/404`, `/changelog`) so a
8
+ * user-authored page overrides it without a route collision.
9
+ */
10
+ export declare const routeIsTaken: (pages: {
11
+ pattern: string;
12
+ }[], contentPages: {
13
+ route: string;
14
+ }[], route: string) => boolean;
15
+ /** A custom-page route that should get a generated OG card. */
16
+ export interface OgCustomRoute {
17
+ /** `og/<slug>.png` path segment; `index` for the site root. */
18
+ slug: string;
19
+ /** Card headline. */
20
+ title: string;
21
+ }
22
+ /**
23
+ * Whether the generated `/changelog` index route exists for this project —
24
+ * `generate.ts` (which writes the page) and the sitemap/link validator all
25
+ * share this check: there are visible `type: changelog` entries — or a
26
+ * release-backed changelog source, whose route must resolve even when a fetch
27
+ * fails — and no user content or custom page already owns `/changelog`.
28
+ */
29
+ export declare const hasGeneratedChangelog: (project: BlumeProject, userPages: {
30
+ pattern: string;
31
+ }[]) => boolean;
32
+ /**
33
+ * Pick the custom-page routes that should get a generated Open Graph card, with
34
+ * the card's slug and text. OG is otherwise content-route only, so a custom page
35
+ * — most importantly the landing `/`, the most-shared URL — would have no card.
36
+ *
37
+ * Dynamic (`[param]`) routes and private segments (`_partials`, `.well-known`)
38
+ * are skipped: they aren't shareable pages. A `titles` entry (`seo.og.titles`,
39
+ * keyed by route) names a card outright — the only way to say "CLI" when the
40
+ * segment humanizes to "Cli". Otherwise the home is titled with the site title
41
+ * and a deeper page from its last path segment. The card's brand lockup,
42
+ * description, and footer come from the resolved config at render time.
43
+ */
44
+ export declare const customOgRoutes: (pages: BlumePageRoute[], siteTitle: string, titles?: Record<string, string>) => OgCustomRoute[];
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Load `.env`/`.env.local`, cascading from `startDir` up to the repository root
3
+ * (the first ancestor containing a `.git`) or the filesystem root. The ordered
4
+ * path list is handed to dotenv, whose `config` is first-wins, never clobbers
5
+ * existing `process.env` values, and treats unreadable files as best-effort —
6
+ * so shell/CI overrides are never lost, `.env.local` layers over `.env`, and a
7
+ * bad file never aborts a build. dotenv is also the parser Vite runs over
8
+ * these files at build time, so a value means the same thing to the pre-boot
9
+ * content scan and the built site — including multi-line double-quoted values
10
+ * (PEM keys), which a line-based parser silently truncates.
11
+ */
12
+ export declare const loadEnvFiles: (startDir: string) => void;
@@ -0,0 +1,154 @@
1
+ export declare const TEMPLATES: readonly ["docs", "api", "sdk", "changelog"];
2
+ export type Template = (typeof TEMPLATES)[number];
3
+ export declare const PACKAGE_MANAGERS: readonly ["npm", "pnpm", "yarn", "bun"];
4
+ export type PackageManager = (typeof PACKAGE_MANAGERS)[number];
5
+ /** The content-source kinds `init` can scaffold a config block for. */
6
+ export declare const SOURCE_KINDS: readonly ["filesystem", "obsidian", "github-releases", "notion", "sanity", "contentful", "payload", "strapi", "mdx-remote"];
7
+ export type SourceKind = (typeof SOURCE_KINDS)[number];
8
+ /** Everything the scaffolder needs, whether prompted or derived from flags. */
9
+ export interface InitAnswers {
10
+ contentDir: string;
11
+ /** Target directory as the user gave it (`.` = current directory). */
12
+ directory: string;
13
+ packageManager: PackageManager;
14
+ sources: SourceKind[];
15
+ template: Template;
16
+ title: string;
17
+ }
18
+ /** One file the scaffold plan will write; `path` is absolute. */
19
+ export interface ScaffoldFile {
20
+ content: string;
21
+ path: string;
22
+ }
23
+ /** Log sink for scaffold output — satisfied by both consola and clack's `log`. */
24
+ export interface ScaffoldLog {
25
+ info: (message: string) => void;
26
+ success: (message: string) => void;
27
+ }
28
+ export declare const STARTERS: {
29
+ api: {
30
+ configExtra: string;
31
+ configImports: string[];
32
+ files: (dir: string) => {
33
+ content: string;
34
+ path: string;
35
+ }[];
36
+ };
37
+ changelog: {
38
+ configExtra: string;
39
+ configImports: never[];
40
+ files: (dir: string) => {
41
+ content: string;
42
+ path: string;
43
+ }[];
44
+ };
45
+ docs: {
46
+ configExtra: string;
47
+ configImports: never[];
48
+ files: (dir: string) => {
49
+ content: string;
50
+ path: string;
51
+ }[];
52
+ };
53
+ sdk: {
54
+ configExtra: string;
55
+ configImports: never[];
56
+ files: (dir: string) => {
57
+ content: string;
58
+ path: string;
59
+ }[];
60
+ };
61
+ };
62
+ /**
63
+ * Add, install, and dev commands to print for the chosen package manager, plus the
64
+ * prefix that runs a locally installed bin (`exec`, e.g. `npx blume eject`) —
65
+ * dependency bins aren't on PATH, so a bare `blume …` hint would not run.
66
+ */
67
+ export declare const commandsFor: (pm: PackageManager) => {
68
+ add: string;
69
+ build: string;
70
+ dev: string;
71
+ exec: string;
72
+ install: string;
73
+ };
74
+ /**
75
+ * Derive the package manager from an npm user-agent string (the first
76
+ * `name/version` token of `npm_config_user_agent`), falling back to npm.
77
+ * Right for `init`, where the project doesn't exist yet and the invoking
78
+ * runner is the only signal.
79
+ */
80
+ export declare const detectPackageManager: (userAgent?: string) => PackageManager;
81
+ /**
82
+ * Detect an existing project's package manager from its lockfile /
83
+ * `packageManager` field (package-manager-detector), falling back to the
84
+ * user agent. Right for `eject`: the CLI is often run directly (`npx blume
85
+ * eject`, a bare `blume eject`), where `npm_config_user_agent` is absent or
86
+ * names the runner rather than the project's manager, and the old
87
+ * user-agent-only detection silently printed npm hints for a pnpm project.
88
+ */
89
+ export declare const detectProjectPackageManager: (root: string) => Promise<PackageManager>;
90
+ /**
91
+ * The content dir is joined into every scaffolded file path, so an absolute or
92
+ * `../`-escaping value would write outside the project. Returns an error
93
+ * message, or `undefined` when the dir is safe.
94
+ */
95
+ export declare const validateContentDir: (root: string, dir: string) => string | undefined;
96
+ /** Turn a directory name into a display title: `my-docs` → `My Docs`. */
97
+ export declare const titleize: (raw: string) => string;
98
+ /** The full `blume.config.ts` text for the chosen answers. */
99
+ export declare const buildConfig: (answers: InitAnswers) => string;
100
+ /**
101
+ * The major version of the Yarn that ran `init`, read off the npm user agent
102
+ * (`yarn/4.5.1 npm/? node/v22…`), or undefined when something else ran it.
103
+ */
104
+ export declare const yarnMajor: (userAgent?: string) => number | undefined;
105
+ /** Environment `buildPlan` and `workspaceNote` read, injectable for tests. */
106
+ export interface PlanEnvironment {
107
+ /** `npm_config_user_agent` of the process that ran `init`. */
108
+ userAgent?: string;
109
+ }
110
+ /**
111
+ * What the project still needs from a workspace it joins, when `init` left
112
+ * that workspace's config alone: pnpm's approval for esbuild's build script
113
+ * (pnpm 10 and later fail the install without it), or Yarn Berry's
114
+ * `node_modules` linker. Undefined when the workspace already has it, or the
115
+ * project doesn't sit in one.
116
+ */
117
+ export declare const workspaceNote: (root: string, answers: InitAnswers, env?: PlanEnvironment) => string | undefined;
118
+ /** Every file `init` should write for the given answers, package.json first. */
119
+ export declare const buildPlan: (root: string, answers: InitAnswers, env?: PlanEnvironment) => ScaffoldFile[];
120
+ /**
121
+ * Write the plan's files, skipping any that already exist. Reports whether a
122
+ * `package.json` was newly created (it decides whether `init` installs).
123
+ */
124
+ export declare const applyPlan: (files: ScaffoldFile[], log: ScaffoldLog) => Promise<{
125
+ createdPackage: boolean;
126
+ }>;
127
+ /** What an existing package.json — one `init` left alone — already wires up. */
128
+ export interface ExistingPackage {
129
+ /**
130
+ * Whether `blume` is installed where the project resolves it: its own
131
+ * `node_modules`, or an ancestor's in a hoisted workspace. Listing it isn't
132
+ * enough — a rerun of `init --no-install` lists it without installing it.
133
+ */
134
+ blumeInstalled: boolean;
135
+ /** Every package it lists in `dependencies` or `devDependencies`. */
136
+ dependencies: string[];
137
+ /** Whether its `dev` script runs Blume. */
138
+ devRunsBlume: boolean;
139
+ }
140
+ /**
141
+ * Read the package.json `init` didn't write. An unreadable or malformed one
142
+ * reads as wiring nothing up, so the next steps list everything to add.
143
+ */
144
+ export declare const readExistingPackage: (root: string) => Promise<ExistingPackage>;
145
+ /**
146
+ * The next-steps message: `cd` hint, the install command when `init` did not
147
+ * run it itself, the dev command, and token setup. With an `existing`
148
+ * package.json — which `init` never edits — it first adds whatever of `blume`
149
+ * and the sources' SDKs isn't listed yet (or installs, when everything is
150
+ * listed but `blume` was never installed), then starts the dev server through
151
+ * the package runner unless its `dev` script already runs Blume. A `note` —
152
+ * what a workspace the project joins still needs — closes the message.
153
+ */
154
+ export declare const nextSteps: (answers: InitAnswers, needsInstall: boolean, existing?: ExistingPackage, note?: string) => string;
@@ -10,6 +10,17 @@ export interface Crumb {
10
10
  label: string;
11
11
  route?: string;
12
12
  }
13
+ /**
14
+ * Whether a group's header row reads as the current page. A routed group links
15
+ * to its folder's index page; when that index is also listed as one of the
16
+ * group's own rows (kept under a different label), the row is the more
17
+ * specific indicator, so the header stays quiet rather than lighting up beside
18
+ * it. With the index row hidden the header is the only link and takes the
19
+ * highlight.
20
+ */
21
+ export declare const isGroupRowCurrent: (group: Extract<NavNode, {
22
+ kind: "group";
23
+ }>, currentRoute: string) => boolean;
13
24
  /** Flatten the sidebar tree into ordered internal page links. */
14
25
  export declare const flattenPages: (nodes: NavNode[]) => FlatPage[];
15
26
  /** Find the breadcrumb trail (group ancestors + page) for a route. */
@@ -0,0 +1,47 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * The serializable descriptor an integration factory returns — `posthog({ key })`,
4
+ * `vercel()`, `script({ src })` and their siblings. A descriptor is plain data:
5
+ * the CLI evaluates `blume.config.ts` once, validates what came back, and
6
+ * writes it into the generated project's data snapshot as a JSON literal. That
7
+ * is where the runtime reads it — nothing generated imports the config at
8
+ * request time — so a descriptor can't carry functions, class instances, or
9
+ * anything else JSON drops.
10
+ *
11
+ * Every consumer reads the descriptor instead of switching on a provider name:
12
+ * the head emitter and `blume doctor` branch on `kind`, the generated
13
+ * `.blume/package.json` declares `runtimeDeps`, and the secrets check warns
14
+ * when an entry of `requiredSecrets` is unset.
15
+ *
16
+ * An adapter's verbatim option passthrough is typed as {@link JsonValue} and
17
+ * validated with `z.json()`, so a function, `undefined`, a bigint, or a
18
+ * non-finite number fails config validation with a path instead of vanishing
19
+ * (or throwing) when the snapshot is serialized.
20
+ */
21
+ export interface AdapterDescriptor<Kind extends string, Options> {
22
+ /** Which integration this is. */
23
+ kind: Kind;
24
+ /** The options the factory was called with, verbatim. */
25
+ options: Options;
26
+ /** Env vars the integration reads at runtime; `blume dev`/`build` warn when one is unset. */
27
+ requiredSecrets: string[];
28
+ /** Extra packages the generated `.blume/package.json` must declare. */
29
+ runtimeDeps: string[];
30
+ }
31
+ /**
32
+ * A value JSON can carry unchanged — what an adapter's passthrough options are
33
+ * typed as. Structurally identical to what `z.json()` accepts.
34
+ */
35
+ export type JsonValue = string | number | boolean | null | JsonValue[] | {
36
+ [key: string]: JsonValue;
37
+ };
38
+ /**
39
+ * The schema for one descriptor `kind`, validating its `options` with the
40
+ * adapter's own option schema. Members of a `z.discriminatedUnion("kind", …)`.
41
+ */
42
+ export declare const adapterDescriptorSchema: <Kind extends string, Options extends z.ZodType>(kind: Kind, options: Options) => z.ZodObject<{
43
+ kind: z.ZodLiteral<Kind>;
44
+ options: Options;
45
+ requiredSecrets: z.ZodArray<z.ZodString>;
46
+ runtimeDeps: z.ZodArray<z.ZodString>;
47
+ }, z.core.$strict>;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * `name` as the phrase "the ___" in generated prose — the spec title or
3
+ * reference label, followed by ` API` unless it already says so. Keeps
4
+ * "Petstore" reading as "Petstore API" without turning "Petstore API" into
5
+ * "Petstore API API".
6
+ */
7
+ export declare const apiNamePhrase: (name: string) => string;
@@ -0,0 +1,13 @@
1
+ import type { ResolvedConfig } from "./schema.ts";
2
+ import type { PageRecord } from "./types.ts";
3
+ /** Where the changelog timeline index is served. */
4
+ export declare const CHANGELOG_INDEX_ROUTE = "/changelog";
5
+ /**
6
+ * Whether the site serves a changelog index at {@link CHANGELOG_INDEX_ROUTE}:
7
+ * there are visible `type: changelog` entries, or a release-backed source
8
+ * (whose index must resolve even when a fetch fails). Blume generates the
9
+ * timeline there unless a custom or content page already owns the route —
10
+ * either way the route is servable, which is what navigation needs to point a
11
+ * `/changelog` tab at the index rather than its newest entry.
12
+ */
13
+ export declare const hasChangelogIndex: (pages: Pick<PageRecord, "contentType" | "meta">[], config: ResolvedConfig) => boolean;