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,53 @@
1
+ import type { ResolvedConfig } from "../core/schema.ts";
2
+ import type { VercelHeader } from "./headers.ts";
3
+ /**
4
+ * Platform redirect files for a static build. Astro already emits redirect HTML
5
+ * (meta-refresh) pages for static output, but that's a soft client redirect.
6
+ * These give the host a real HTTP 3xx: Netlify/Cloudflare read `_redirects`,
7
+ * Vercel reads `vercel.json`, and `blume-redirects.json` is a structured
8
+ * manifest for anything else (Apache/nginx rules, an edge worker).
9
+ */
10
+ type Redirect = ResolvedConfig["redirects"][number];
11
+ /**
12
+ * Base a redirect for Astro's `redirects` config, where the two sides are not
13
+ * symmetric:
14
+ *
15
+ * - `from` gains only `basePath`. Astro builds the match pattern with
16
+ * `deployment.base` already applied (`getPattern(segments, config.base)`), so
17
+ * adding it here would serve the redirect at `{base}{base}/from`.
18
+ * - `to` gains the full `{deployment.base}{basePath}` stack. Astro resolves a
19
+ * destination that matches a known route by regenerating it from that route's
20
+ * segments, which carry no base — and passes an unmatched destination through
21
+ * verbatim. Neither path prepends `base`, so a root-relative `to` escapes the
22
+ * base entirely (withastro/astro#7774, still the behavior in Astro 7).
23
+ *
24
+ * Both sides are authored as if mounted at root; external `to` URLs pass
25
+ * through. Idempotent, so a hand-written base isn't doubled.
26
+ */
27
+ export declare const applyBaseToAstroRedirects: (redirects: Redirect[], basePath: string, deployBase: string) => Redirect[];
28
+ /**
29
+ * Base a redirect for the host platform files below. Unlike Astro's config,
30
+ * these are matched against the real served URL, so both sides carry the full
31
+ * `{deployment.base}{basePath}` stack.
32
+ */
33
+ export declare const applyBaseToPlatformRedirects: (redirects: Redirect[], basePath: string, deployBase: string) => Redirect[];
34
+ /**
35
+ * The configured redirects as the host platform matches them, via
36
+ * {@link applyBaseToPlatformRedirects}. The one basing every consumer must
37
+ * share: the emitted redirect files and the Cloudflare worker-first redirect
38
+ * exemptions both compare these paths against real served URLs.
39
+ */
40
+ export declare const platformRedirects: (config: ResolvedConfig) => Redirect[];
41
+ /** `_redirects` text (Netlify + Cloudflare Pages): `from to status` per line. */
42
+ export declare const buildNetlifyRedirects: (redirects: Redirect[]) => string;
43
+ /**
44
+ * `vercel.json` contents with a `redirects` array, and a `headers` array when
45
+ * header rules are given (see `buildVercelHeaders`). Uses `statusCode` (Vercel's
46
+ * alternative to the boolean `permanent`) so the configured code ships exactly:
47
+ * `permanent` would silently coerce a 301 to 308 and a 302 to 307, diverging
48
+ * from the `_redirects` file, which preserves exact codes.
49
+ */
50
+ export declare const buildVercelConfig: (redirects: Redirect[], headers?: readonly VercelHeader[]) => string;
51
+ /** Structured manifest for hosts that need manual wiring. */
52
+ export declare const buildRedirectManifest: (redirects: Redirect[]) => string;
53
+ export {};
@@ -0,0 +1,8 @@
1
+ import type { BlumeProject } from "../core/project-graph.ts";
2
+ /**
3
+ * Build a robots.txt that allows all crawlers, declares any configured
4
+ * `Content-Signal` usage preferences, and points to the sitemap when one is
5
+ * available (a `site` is set and the sitemap is enabled). Returns null when
6
+ * robots generation is disabled.
7
+ */
8
+ export declare const buildRobots: (project: BlumeProject) => string | null;
@@ -0,0 +1,31 @@
1
+ import type { BlumeProject } from "../core/project-graph.ts";
2
+ /** A single feed entry derived from a content page. */
3
+ export interface RssItem {
4
+ title: string;
5
+ /** Absolute item URL. */
6
+ link: string;
7
+ description?: string;
8
+ /** Publish date, when the page declares one. */
9
+ date?: Date;
10
+ }
11
+ /** A resolved RSS feed for one content type. */
12
+ export interface RssFeed {
13
+ /** Content type the feed covers, e.g. `blog`. */
14
+ type: string;
15
+ /** Feed URL path, e.g. `/blog/rss.xml`. */
16
+ path: string;
17
+ /** Channel title, e.g. `Blume — Blog`. */
18
+ title: string;
19
+ /** Absolute site link. */
20
+ link: string;
21
+ description?: string;
22
+ items: RssItem[];
23
+ }
24
+ /**
25
+ * Build an RSS feed per configured content type that has publishable pages.
26
+ * Returns an empty list when RSS is disabled or no `deployment.site` is set —
27
+ * absolute URLs are required for a valid feed, mirroring `buildSitemap`.
28
+ */
29
+ export declare const buildRssFeeds: (project: BlumeProject) => RssFeed[];
30
+ /** Serialize a resolved feed into an RSS 2.0 XML document. */
31
+ export declare const renderRssFeed: (feed: RssFeed) => string;
@@ -0,0 +1,21 @@
1
+ import type { BlumeProject } from "../core/project-graph.ts";
2
+ /** One emitted sitemap artifact: its dist-root filename and XML body. */
3
+ export interface SitemapFile {
4
+ name: string;
5
+ xml: string;
6
+ }
7
+ /** The build log line for an emitted sitemap set: one file, or an index. */
8
+ export declare const describeSitemapFiles: (files: readonly SitemapFile[]) => string;
9
+ /**
10
+ * Build the sitemap files from the route manifest plus the routes the manifest
11
+ * can't see: custom `.astro` pages (most importantly a custom landing `/`) and
12
+ * the generated `/changelog` index. Returns null when the sitemap is disabled
13
+ * or no `site` is configured (absolute URLs are required for a valid sitemap).
14
+ * Drafts, hidden, and `noindex` pages are excluded.
15
+ *
16
+ * Sites within the per-file URL cap get the single classic `sitemap.xml`;
17
+ * larger sites get `sitemap.xml` as a sitemap index over numbered
18
+ * `sitemap-N.xml` chunks, all served from the same directory robots.txt
19
+ * already points at.
20
+ */
21
+ export declare const buildSitemapFiles: (project: BlumeProject) => SitemapFile[] | null;
@@ -0,0 +1,109 @@
1
+ /**
2
+ * `Accept: text/markdown` content negotiation for Vercel server builds.
3
+ *
4
+ * Blume prerenders every content page — even in a server build (`deployment:
5
+ * vercel()`) — so a page request never reaches Astro middleware: Vercel serves
6
+ * the prerendered HTML straight from its static layer. Request-time negotiation
7
+ * therefore has to live in the platform's routing config. The Vercel adapter
8
+ * emits a Build Output API `config.json`; these helpers splice extra routes
9
+ * into it so a content-page request that prefers `text/markdown` is rewritten
10
+ * (not redirected) to the page's prerendered `.md` mirror — the deployed
11
+ * counterpart of the dev-server rewrite in `astro/markdown-negotiation.ts`.
12
+ * The same routing config also answers a *missing* page: a request that
13
+ * prefers Markdown (or asks for a `.md` URL no page backs) gets the
14
+ * prerendered Markdown 404 body with the 404 status, instead of the HTML
15
+ * shell, and one that prefers JSON (or asks for a `.json` URL) gets the
16
+ * prerendered problem-details 404.
17
+ */
18
+ /**
19
+ * Regex for the `accept` header condition. Written to hold under both matching
20
+ * semantics a router may apply — full-string and substring — by anchoring the
21
+ * end and letting `(.*,)?` absorb any earlier list entries: it requires a
22
+ * `text/markdown` or `text/x-markdown` entry terminated by `;`, `,`, or the end
23
+ * of the header. Kept lookaround-free so it stays valid in RE2, and lowercase
24
+ * only — real agents send lowercase media types, and q-values are not compared
25
+ * (a client sending `text/markdown` at `q=0` is pathological). Browsers never
26
+ * send `text/markdown`, so ordinary page requests are unaffected.
27
+ */
28
+ export declare const ACCEPT_MARKDOWN_HEADER_VALUE = "(.*,)?\\s*text/(x-)?markdown(\\s*[;,].*)?$";
29
+ /**
30
+ * The JSON counterpart, for the problem-details 404: `application/json` or
31
+ * `application/problem+json`. Browsers never send either on a navigation
32
+ * (the catch-all wildcard does not match), so ordinary page requests are
33
+ * unaffected.
34
+ */
35
+ export declare const ACCEPT_JSON_HEADER_VALUE = "(.*,)?\\s*application/(problem\\+)?json(\\s*[;,].*)?$";
36
+ /**
37
+ * A Build Output API route — the subset these helpers read and write. Parsed
38
+ * routes keep whatever other fields they carry at runtime; only these are
39
+ * typed.
40
+ */
41
+ export interface VercelRoute {
42
+ continue?: boolean;
43
+ dest?: string;
44
+ handle?: string;
45
+ has?: {
46
+ key?: string;
47
+ type: string;
48
+ value?: string;
49
+ }[];
50
+ headers?: Record<string, string>;
51
+ src?: string;
52
+ status?: number;
53
+ }
54
+ /** Which prerendered 404 twins the build emitted, so their routes get wired. */
55
+ export interface NotFoundVariants {
56
+ json?: boolean;
57
+ markdown?: boolean;
58
+ }
59
+ export interface NegotiationRoutes {
60
+ /**
61
+ * `Vary: Accept` for the plain-HTML side of every negotiated URL, so shared
62
+ * caches keep the two variants apart. Spliced *before* `handle:
63
+ * "filesystem"` with `continue`: main-phase headers accumulate and ride on
64
+ * whatever ultimately serves the request. Routes placed after the filesystem
65
+ * marker are the miss phase — they run only when no static file matches, and
66
+ * every Blume content page is a prerendered static file, so a header route
67
+ * there never fires.
68
+ */
69
+ headerRoutes: VercelRoute[];
70
+ /**
71
+ * The negotiation itself: header-conditional rewrites to the `.md` mirror.
72
+ * Spliced *before* `handle: "filesystem"` so they run ahead of static-file
73
+ * matching; the rewritten path then resolves to the prerendered `.md` file.
74
+ */
75
+ rewriteRoutes: VercelRoute[];
76
+ }
77
+ /**
78
+ * Build the routes for the given content-route paths (the routes that have a
79
+ * raw-Markdown mirror, straight from the manifest). Paths are matched with an
80
+ * optional trailing slash and rewritten `/{route}` → `/{route}.md`; the home
81
+ * page's mirror lives at `/index.md`. When `homeTokens` is given, the home
82
+ * rewrite also stamps `x-markdown-tokens` — the estimated token count of the
83
+ * homepage mirror (Cloudflare's Markdown for Agents convention). Only the home
84
+ * route can carry it: the other rewrites are chunked alternations spanning
85
+ * many pages, and a count is per-page.
86
+ */
87
+ export declare const buildNegotiationRoutes: (routePaths: readonly string[], homeTokens?: number) => NegotiationRoutes;
88
+ /**
89
+ * Splice the negotiation routes into a Build Output `config.json`, plus — when
90
+ * given — a homepage `Link` header route for agent discovery (see
91
+ * `ai/link-headers.ts`), applied the same way the `Vary` routes are: in the
92
+ * main phase before `handle: "filesystem"` with `continue`, so the header
93
+ * rides on the prerendered homepage response. `contentTypeOverrides` maps static-dir
94
+ * relative paths to media types via the Build Output `overrides` field — the
95
+ * platform's mechanism for extensionless static files (e.g. the Web Bot Auth
96
+ * signature directory). The trailing-slash redirect that collapses `/docs/`
97
+ * onto `/docs` is not spliced here: the generated config sets Astro's
98
+ * `trailingSlash: "never"`, which the adapter turns into the platform's own
99
+ * 308 route ahead of everything below (so a slashed Markdown request takes
100
+ * that hop first, then negotiates). For each 404 twin the build emitted (`notFound.markdown` for
101
+ * `404.md`, `notFound.json` for `404.json`), its routes go into the miss
102
+ * phase right before the adapter's `/404.html` fallback — and nowhere when
103
+ * that fallback is absent, since a `dest` with no file behind it would serve
104
+ * nothing. Returns the updated JSON
105
+ * text (tab-indented, like the adapter's own output), or `null` when there is
106
+ * nowhere safe to splice: an unparsable config, no `routes` array, or no
107
+ * `handle: "filesystem"` marker to anchor the splice.
108
+ */
109
+ export declare const injectNegotiationRoutes: (configText: string, routePaths: readonly string[], homeLinkHeader?: string | null, contentTypeOverrides?: Record<string, string>, homeTokens?: number, notFound?: NotFoundVariants, corsPaths?: readonly string[]) => string | null;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Code-fence meta. A Shiki transformer reads the tokens after the language and
3
+ * promotes them to attributes on the rendered `<pre>`:
4
+ *
5
+ * - a title — the first bare token (```ts blume.config.ts) or `title="..."` —
6
+ * becomes `data-title`; the theme's code header shows it, falling back to the
7
+ * language label.
8
+ * - the `lineNumbers` keyword (```ts file.ts lineNumbers) becomes
9
+ * `data-line-numbers`; the theme renders a counter-driven line-number gutter.
10
+ */
11
+ /** The slice of Shiki's transformer `this` context Blume reads. */
12
+ interface CodeMetaContext {
13
+ options: {
14
+ meta?: {
15
+ __raw?: string;
16
+ };
17
+ };
18
+ }
19
+ /** The `<pre>` hast node a Shiki `pre` hook receives. */
20
+ interface PreNode {
21
+ properties: Record<string, boolean | number | string | undefined>;
22
+ }
23
+ /** A Shiki-compatible transformer, typed structurally to avoid a Shiki dep. */
24
+ export interface CodeTitleTransformer {
25
+ name: string;
26
+ pre: (this: CodeMetaContext, node: PreNode) => void;
27
+ }
28
+ /** The title a fence's meta string promotes to `data-title`, if any. */
29
+ export declare const parseCodeTitle: (raw: string | undefined) => string | undefined;
30
+ /** Build the transformer. Runs after Shiki's built-in `data-language` hook. */
31
+ export declare const codeTitleTransformer: () => CodeTitleTransformer;
32
+ export {};
@@ -0,0 +1,23 @@
1
+ /**
2
+ * The shared fence-meta grammar: how the tokens after a code fence's language
3
+ * (```ts title="..." {1,3-5} lineNumbers) split, and which of them carry
4
+ * reserved meaning. Both the Shiki-side meta reader (`code-title.ts`) and the
5
+ * MDAST plugins that rewrite marked fences (`ts2js.ts`) consume this, so the
6
+ * two layers can't drift on token boundaries or keyword lists.
7
+ */
8
+ /**
9
+ * Any quoted `key="..."` attr (spaces allowed inside the quotes). The body
10
+ * excludes only the delimiting quote, so `title="foo's file.ts"` (an
11
+ * apostrophe inside double quotes) still matches. The left boundary stops
12
+ * `subtitle="..."` (or any `*title=` attr) from reading as a title.
13
+ */
14
+ export declare const QUOTED_ATTR: RegExp;
15
+ /** Split a raw fence meta string into its tokens. */
16
+ export declare const metaTokens: (meta: string | null | undefined) => string[];
17
+ /**
18
+ * Bare keywords with reserved meaning after the language; never promoted to
19
+ * a block title.
20
+ */
21
+ export declare const RESERVED_META_KEYWORDS: ReadonlySet<string>;
22
+ /** A Shiki `{1,3-5}` line-range token. */
23
+ export declare const isLineRange: (token: string) => boolean;
@@ -2,14 +2,14 @@
2
2
  * The light/dark Shiki themes Blume highlights code with. Every Shiki surface —
3
3
  * fenced code (the generated Astro `shikiConfig.themes`), inline `` `code`{:lang} ``,
4
4
  * out-of-pipeline `highlightCode`, and `<Diff>` — resolves to the same pair so a
5
- * project's `markdown.codeBlocks.theme` shifts them all in lockstep. This is the
5
+ * project's `markdown.code.theme` shifts them all in lockstep. This is the
6
6
  * single home for the github fallback used when nothing is configured.
7
7
  */
8
8
  import type { ThemeRegistrationAny } from "shiki";
9
9
  /** A bundled Shiki theme name or an inline custom Shiki theme definition. */
10
10
  export type CodeTheme = string | ThemeRegistrationAny;
11
11
  /**
12
- * A light/dark Shiki theme pair (`markdown.codeBlocks.theme`). A `type` (not an
12
+ * A light/dark Shiki theme pair (`markdown.code.theme`). A `type` (not an
13
13
  * `interface`) so it keeps the implicit index signature Shiki's `themes`
14
14
  * parameter (`Partial<Record<string, …>>`) expects.
15
15
  */
@@ -17,5 +17,5 @@ export type CodeThemes = {
17
17
  dark: CodeTheme;
18
18
  light: CodeTheme;
19
19
  };
20
- /** The default pair, used when `markdown.codeBlocks.theme` is unset. */
20
+ /** The default pair, used when `markdown.code.theme` is unset. */
21
21
  export declare const DEFAULT_CODE_THEMES: CodeThemes;
@@ -0,0 +1,129 @@
1
+ import type { ApiOperationRef, ApiTagRef } from "./model.ts";
2
+ /**
3
+ * Blume's own AsyncAPI model — the second front-end of the API reference
4
+ * pipeline. Specs are normalized to AsyncAPI 3.x at parse time (see
5
+ * `parseAsyncApiSpec` in `parse.ts`), so this module only handles one shape:
6
+ * top-level `operations` with `action: send | receive` pointing at `channels`.
7
+ * Internal `$ref`s are deliberately left in place, mirroring `model.ts` — the
8
+ * components resolve them lazily, which keeps circular schemas serializable
9
+ * and lets type labels keep their `#/components/schemas/<name>` names.
10
+ * Browser-safe: no Node imports (the components import from here).
11
+ */
12
+ /** The two AsyncAPI 3.x operation actions, from the application's perspective. */
13
+ export declare const ASYNCAPI_ACTIONS: readonly ["send", "receive"];
14
+ export type AsyncApiAction = (typeof ASYNCAPI_ACTIONS)[number];
15
+ /**
16
+ * A value carried by a parsed spec document: JSON-compatible data whose exact
17
+ * position in the document is not modeled (extension fields, bindings,
18
+ * protocol-specific extras). `undefined` covers absent optional members.
19
+ */
20
+ export type AsyncApiSpecValue = string | number | boolean | null | undefined | AsyncApiSpecValue[] | {
21
+ [key: string]: AsyncApiSpecValue;
22
+ };
23
+ /** A permissive view of an AsyncAPI reference object. */
24
+ export interface AsyncApiRefLike {
25
+ $ref?: string;
26
+ [key: string]: AsyncApiSpecValue;
27
+ }
28
+ /** A permissive view of an AsyncAPI 3.x channel — only the fields we render. */
29
+ export interface AsyncApiChannelObject {
30
+ address?: string | null;
31
+ title?: string;
32
+ summary?: string;
33
+ description?: string;
34
+ messages?: Record<string, AsyncApiRefLike>;
35
+ parameters?: Record<string, AsyncApiRefLike>;
36
+ servers?: AsyncApiRefLike[];
37
+ bindings?: Record<string, Record<string, AsyncApiSpecValue>>;
38
+ [key: string]: AsyncApiSpecValue;
39
+ }
40
+ /** A permissive view of an AsyncAPI 3.x operation — only the fields we render. */
41
+ export interface AsyncApiOperationObject {
42
+ action?: string;
43
+ channel?: AsyncApiRefLike;
44
+ title?: string;
45
+ summary?: string;
46
+ description?: string;
47
+ deprecated?: boolean;
48
+ tags?: {
49
+ name?: string;
50
+ description?: string;
51
+ }[];
52
+ security?: AsyncApiRefLike[];
53
+ messages?: AsyncApiRefLike[];
54
+ bindings?: Record<string, Record<string, AsyncApiSpecValue>>;
55
+ [key: string]: AsyncApiSpecValue;
56
+ }
57
+ /** A permissive view of an AsyncAPI 3.x server object. */
58
+ export interface AsyncApiServerObject {
59
+ host?: string;
60
+ protocol?: string;
61
+ pathname?: string;
62
+ description?: string;
63
+ security?: AsyncApiRefLike[];
64
+ [key: string]: AsyncApiSpecValue;
65
+ }
66
+ /** A normalized AsyncAPI 3.x document, internal `$ref`s intact. */
67
+ export interface AsyncApiDocument {
68
+ asyncapi?: string;
69
+ info?: {
70
+ title?: string;
71
+ version?: string;
72
+ description?: string;
73
+ tags?: {
74
+ name?: string;
75
+ description?: string;
76
+ }[];
77
+ [key: string]: AsyncApiSpecValue;
78
+ };
79
+ defaultContentType?: string;
80
+ servers?: Record<string, AsyncApiServerObject>;
81
+ channels?: Record<string, AsyncApiChannelObject>;
82
+ operations?: Record<string, AsyncApiOperationObject>;
83
+ components?: Record<string, Record<string, AsyncApiSpecValue>>;
84
+ [key: string]: AsyncApiSpecValue;
85
+ }
86
+ /** The channel id an operation's `channel.$ref` points at, if resolvable. */
87
+ export declare const channelIdOf: (channel?: AsyncApiRefLike) => string | undefined;
88
+ /**
89
+ * A channel's display address. AsyncAPI 3.x allows `address: null` (unknown at
90
+ * design time) — fall back to the channel id so the operation still shows
91
+ * where it lives.
92
+ */
93
+ export declare const channelAddress: (channelId: string, channel?: AsyncApiChannelObject) => string;
94
+ /**
95
+ * Merge `traits` into their operation/message objects, in declaration order,
96
+ * with the object's own properties taking precedence (the spec's merge rule;
97
+ * applied shallowly, which covers the fields traits carry in practice —
98
+ * bindings, security, tags, headers). Runs once at parse time so the
99
+ * serialized document and every downstream consumer are trait-free; the
100
+ * `traits` key itself is dropped. Unresolvable trait `$ref`s are skipped.
101
+ */
102
+ export declare const applyAsyncApiTraits: (document: AsyncApiDocument) => AsyncApiDocument;
103
+ /**
104
+ * The parse-time normalization pass: component channel/operation refs inlined,
105
+ * then traits merged. The serialized document and every downstream consumer
106
+ * see plain channel/operation objects, trait-free.
107
+ */
108
+ export declare const normalizeAsyncApiDocument: (document: AsyncApiDocument) => AsyncApiDocument;
109
+ /** The route-mapped operations, ordered tags, and skip warnings of one document. */
110
+ export interface AsyncApiOperationCatalog {
111
+ operations: ApiOperationRef[];
112
+ tags: ApiTagRef[];
113
+ warnings: string[];
114
+ }
115
+ /**
116
+ * Flatten a normalized AsyncAPI 3.x document into a route-mapped operation
117
+ * list and its ordered tags — the AsyncAPI counterpart of `extractOperations`
118
+ * in `model.ts`, built on the same `operationCollector`. Operations group by
119
+ * their first tag; untagged operations fall back to their channel address, so
120
+ * a spec with no tags still gets one sidebar group per channel. Keys come from
121
+ * the operation id (the `operations` map key), which the official 2.x
122
+ * converter synthesizes deterministically (`<channel>.publish` /
123
+ * `<channel>.subscribe`) — so a 2.x spec and its converter-upgraded 3.x form
124
+ * yield identical URLs. An id that slugifies to nothing falls back to
125
+ * action + address, the same scheme `operationKey` uses for method + path.
126
+ */
127
+ export declare const extractAsyncApiOperations: (document: AsyncApiDocument, baseRoute: string) => AsyncApiOperationCatalog;
128
+ /** Resolve the operation object for a ref out of its (AsyncAPI) document. */
129
+ export declare const asyncApiOperationObject: (document: AsyncApiDocument, ref: ApiOperationRef) => AsyncApiOperationObject | undefined;
@@ -0,0 +1,8 @@
1
+ import type { GraphqlDocument } from "./graphql.ts";
2
+ /**
3
+ * Build the document from schema text: an introspection JSON result (the raw
4
+ * `{ __schema }` shape or a `{ data: { __schema } }` response envelope) or
5
+ * SDL. Anything else throws — JSON that isn't an introspection result names
6
+ * that problem directly instead of earning SDL syntax errors for a `{`.
7
+ */
8
+ export declare const buildGraphqlDocument: (text: string) => GraphqlDocument;
@@ -0,0 +1,122 @@
1
+ import type { ApiOperationRef, ExtractedOperations } from "./model.ts";
2
+ /**
3
+ * Blume's own GraphQL model — the third front-end of the API reference
4
+ * pipeline. Schemas are lowered to this JSON-serializable document at parse
5
+ * time (see `buildGraphqlDocument` in `graphql-build.ts`, kept separate so
6
+ * `graphql`-js stays out of this module's import graph), so the components
7
+ * render entirely from plain data, mirroring how `model.ts` keeps OpenAPI
8
+ * documents serializable. Browser-safe: no Node imports (the components
9
+ * import from here).
10
+ */
11
+ /** The three GraphQL operation kinds, each a sidebar group of root fields. */
12
+ export declare const GRAPHQL_OPERATION_KINDS: readonly ["query", "mutation", "subscription"];
13
+ export type GraphqlOperationKind = (typeof GRAPHQL_OPERATION_KINDS)[number];
14
+ /** The named-type kinds that get reference pages, in sidebar-group order. */
15
+ export declare const GRAPHQL_TYPE_KINDS: readonly ["object", "input", "enum", "interface", "union", "scalar"];
16
+ export type GraphqlTypeKind = (typeof GRAPHQL_TYPE_KINDS)[number];
17
+ /** Everything a GraphQL operation ref's `method` can carry. */
18
+ export type GraphqlMember = GraphqlOperationKind | GraphqlTypeKind;
19
+ /** Sidebar/overview group label for each member kind. */
20
+ export declare const GRAPHQL_GROUP_LABELS: {
21
+ enum: string;
22
+ input: string;
23
+ interface: string;
24
+ mutation: string;
25
+ object: string;
26
+ query: string;
27
+ scalar: string;
28
+ subscription: string;
29
+ union: string;
30
+ };
31
+ /**
32
+ * A type expression as it appears in the schema: the rendered display form
33
+ * (`[String!]!`) plus the named type at its core (`String`), so components can
34
+ * print the exact wrapper shape and still link to the named type's page.
35
+ */
36
+ export interface GraphqlTypeRef {
37
+ display: string;
38
+ name: string;
39
+ }
40
+ /** An argument or input-object field. */
41
+ export interface GraphqlInputValue {
42
+ name: string;
43
+ description: string;
44
+ type: GraphqlTypeRef;
45
+ /** Default value printed as a GraphQL literal (`10`, `"asc"`, `[1, 2]`). */
46
+ default?: string;
47
+ deprecationReason?: string;
48
+ }
49
+ /** An output field of an object or interface type (root fields included). */
50
+ export interface GraphqlField {
51
+ name: string;
52
+ description: string;
53
+ type: GraphqlTypeRef;
54
+ args: GraphqlInputValue[];
55
+ deprecationReason?: string;
56
+ }
57
+ /** One member of an enum type. */
58
+ export interface GraphqlEnumValue {
59
+ name: string;
60
+ description: string;
61
+ deprecationReason?: string;
62
+ }
63
+ /** One named type of the schema, flattened to the fields the reference renders. */
64
+ export interface GraphqlTypeDef {
65
+ name: string;
66
+ kind: GraphqlTypeKind;
67
+ description: string;
68
+ /** Output fields (object and interface types). */
69
+ fields?: GraphqlField[];
70
+ /** Input fields (input object types). */
71
+ inputFields?: GraphqlInputValue[];
72
+ /** Members (enum types). */
73
+ enumValues?: GraphqlEnumValue[];
74
+ /** Member type names (unions) or implementing object types (interfaces). */
75
+ possibleTypes?: string[];
76
+ /** Interfaces this object/interface type implements. */
77
+ interfaces?: string[];
78
+ /** `specifiedBy` URL (custom scalars). */
79
+ specifiedByUrl?: string;
80
+ /**
81
+ * A spec-defined scalar (`String`, `Int`, …): kept for type refs to resolve
82
+ * against, but never given a reference page of its own.
83
+ */
84
+ builtIn?: boolean;
85
+ }
86
+ /** A normalized GraphQL schema, lowered to serializable data at parse time. */
87
+ export interface GraphqlDocument {
88
+ /** Mirrors the OpenAPI `info` block so `source.ts` reads one shape. */
89
+ info?: {
90
+ title?: string;
91
+ version?: string;
92
+ description?: string;
93
+ };
94
+ /** Root operation type names (`Query`, `Mutation`, `Subscription`). */
95
+ roots: Partial<Record<GraphqlOperationKind, string>>;
96
+ /** Named types by name, spec-defined scalars included, introspection types excluded. */
97
+ types: Record<string, GraphqlTypeDef>;
98
+ }
99
+ /** Whether an operation ref's method is a root-field kind (vs a type page). */
100
+ export declare const isGraphqlOperationKind: (method: string) => method is GraphqlOperationKind;
101
+ /**
102
+ * A GraphQL member in the schema's own notation — `query pets` for a root
103
+ * field, `type Pet` / `input PetInput` / `enum Status` for a named type. The
104
+ * rendered page shows the same pair as a kind badge beside the name; the
105
+ * text form spells the kind the way SDL does, so a reader who knows GraphQL
106
+ * and not Blume's badges reads it right.
107
+ */
108
+ export declare const graphqlSignature: (operation: Pick<ApiOperationRef, "method" | "path">) => string;
109
+ /**
110
+ * Flatten a GraphQL document into a route-mapped page list and its ordered
111
+ * groups — the GraphQL counterpart of `extractOperations` in `model.ts`, built
112
+ * on the same `operationCollector`. Root fields become operation pages grouped
113
+ * as Queries/Mutations/Subscriptions; every other named type becomes a type
114
+ * page grouped by kind (Objects, Input Objects, …). Spec-defined scalars and
115
+ * the root types themselves get no page — the roots' fields ARE the operation
116
+ * pages, and `String`/`Int`/… document nothing.
117
+ */
118
+ export declare const extractGraphqlOperations: (document: GraphqlDocument, baseRoute: string) => ExtractedOperations;
119
+ /** Resolve the root field behind an operation-kind ref, if it still exists. */
120
+ export declare const graphqlRootField: (document: GraphqlDocument, ref: ApiOperationRef) => GraphqlField | undefined;
121
+ /** Resolve the named type behind a type-page ref, if it still exists. */
122
+ export declare const graphqlTypeDef: (document: GraphqlDocument, ref: ApiOperationRef) => GraphqlTypeDef | undefined;