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
@@ -5,7 +5,6 @@ export const sv: UIStringsOverride = {
5
5
  actions: {
6
6
  addToCursor: "Lägg till i Cursor",
7
7
  addToVscode: "Lägg till i VS Code",
8
- askAI: "Fråga AI om den här sidan",
9
8
  connectMcp: "Anslut till MCP",
10
9
  copied: "Kopierat!",
11
10
  copyClaudeCode: "Kopiera Claude Code-kommando",
@@ -25,7 +24,7 @@ export const sv: UIStringsOverride = {
25
24
  "Läs {url} så att jag kan ställa frågor om den här sidan.",
26
25
  scrollToTop: "Till toppen",
27
26
  },
28
- ask: {
27
+ assistant: {
29
28
  ai: "AI",
30
29
  clear: "Rensa konversationen",
31
30
  close: "Stäng",
@@ -36,16 +35,19 @@ export const sv: UIStringsOverride = {
36
35
  placeholder: "Ställ en fråga…",
37
36
  send: "Skicka",
38
37
  tip: "Tips: Du kan öppna och stänga chatten med",
39
- title: "Fråga AI",
38
+ title: "Assistent",
40
39
  you: "Du",
41
40
  },
42
41
  banner: { dismiss: "Stäng meddelandet" },
43
42
  changelog: {
44
43
  description: "Produktuppdateringar och versionsinformation.",
45
- showReleases: "Visa utgåvor för {version}",
46
44
  title: "Ändringslogg",
47
45
  },
48
- content: { diagramError: "Det här diagrammet kunde inte visas." },
46
+ content: {
47
+ copyColor: "Kopiera färgen {name} {value}",
48
+ copyPrompt: "Kopiera prompt",
49
+ diagramError: "Det här diagrammet kunde inte visas.",
50
+ },
49
51
  feedback: {
50
52
  no: "Nej",
51
53
  question: "Var den här sidan till hjälp?",
@@ -61,6 +63,7 @@ export const sv: UIStringsOverride = {
61
63
  featured: "Utvalda",
62
64
  githubRepository: "GitHub-repository",
63
65
  navigation: "Navigering",
66
+ opensInNewTab: "Öppnas i en ny flik",
64
67
  primary: "Primär",
65
68
  sections: "Avsnitt",
66
69
  toggleNavigation: "Växla navigering",
@@ -81,8 +84,8 @@ export const sv: UIStringsOverride = {
81
84
  search: {
82
85
  all: "Alla",
83
86
  allLanguages: "Alla språk",
84
- askAi: "Fråga AI",
85
- askAiHint: "Få ett omedelbart svar från AI",
87
+ assistant: "Assistent",
88
+ assistantHint: "Få ett omedelbart svar från AI",
86
89
  button: "Sök",
87
90
  devOnly: "Sökning är tillgänglig i produktionsbygget.",
88
91
  error: "Något gick fel. Försök igen.",
@@ -5,7 +5,6 @@ export const th: UIStringsOverride = {
5
5
  actions: {
6
6
  addToCursor: "เพิ่มไปยัง Cursor",
7
7
  addToVscode: "เพิ่มไปยัง VS Code",
8
- askAI: "ถาม AI เกี่ยวกับหน้านี้",
9
8
  connectMcp: "เชื่อมต่อกับ MCP",
10
9
  copied: "คัดลอกแล้ว!",
11
10
  copyClaudeCode: "คัดลอกคำสั่ง Claude Code",
@@ -24,7 +23,7 @@ export const th: UIStringsOverride = {
24
23
  openInChatPrompt: "อ่าน {url} เพื่อให้ฉันถามคำถามเกี่ยวกับหน้านี้ได้",
25
24
  scrollToTop: "กลับไปด้านบน",
26
25
  },
27
- ask: {
26
+ assistant: {
28
27
  ai: "AI",
29
28
  clear: "ล้างการสนทนา",
30
29
  close: "ปิด",
@@ -35,16 +34,17 @@ export const th: UIStringsOverride = {
35
34
  placeholder: "ถามคำถาม…",
36
35
  send: "ส่ง",
37
36
  tip: "เคล็ดลับ: คุณสามารถเปิดและปิดแชทได้ด้วย",
38
- title: "ถาม AI",
37
+ title: "ผู้ช่วย",
39
38
  you: "คุณ",
40
39
  },
41
40
  banner: { dismiss: "ปิดประกาศ" },
42
41
  changelog: {
43
42
  description: "อัปเดตผลิตภัณฑ์และบันทึกประจำรุ่น",
44
- showReleases: "แสดงรุ่นของ {version}",
45
43
  title: "บันทึกการเปลี่ยนแปลง",
46
44
  },
47
45
  content: {
46
+ copyColor: "คัดลอกสี {name} {value}",
47
+ copyPrompt: "คัดลอกพรอมต์",
48
48
  diagramError: "ไม่สามารถแสดงไดอะแกรมนี้ได้",
49
49
  },
50
50
  feedback: {
@@ -62,6 +62,7 @@ export const th: UIStringsOverride = {
62
62
  featured: "แนะนำ",
63
63
  githubRepository: "ที่เก็บ GitHub",
64
64
  navigation: "การนำทาง",
65
+ opensInNewTab: "เปิดในแท็บใหม่",
65
66
  primary: "หลัก",
66
67
  sections: "หมวด",
67
68
  toggleNavigation: "สลับการนำทาง",
@@ -82,8 +83,8 @@ export const th: UIStringsOverride = {
82
83
  search: {
83
84
  all: "ทั้งหมด",
84
85
  allLanguages: "ทุกภาษา",
85
- askAi: "ถาม AI",
86
- askAiHint: "รับคำตอบทันทีจาก AI",
86
+ assistant: "ผู้ช่วย",
87
+ assistantHint: "รับคำตอบทันทีจาก AI",
87
88
  button: "ค้นหา",
88
89
  devOnly: "การค้นหาพร้อมใช้งานในบิลด์โปรดักชัน",
89
90
  error: "เกิดข้อผิดพลาดบางอย่าง โปรดลองอีกครั้ง",
@@ -5,7 +5,6 @@ export const tr: UIStringsOverride = {
5
5
  actions: {
6
6
  addToCursor: "Cursor'a ekle",
7
7
  addToVscode: "VS Code'a ekle",
8
- askAI: "Bu sayfa hakkında yapay zekâya sor",
9
8
  connectMcp: "MCP'ye bağlan",
10
9
  copied: "Kopyalandı!",
11
10
  copyClaudeCode: "Claude Code komutunu kopyala",
@@ -25,7 +24,7 @@ export const tr: UIStringsOverride = {
25
24
  "Bu sayfa hakkında sorular sorabilmem için {url} adresini okuyun.",
26
25
  scrollToTop: "Başa dön",
27
26
  },
28
- ask: {
27
+ assistant: {
29
28
  ai: "Yapay zekâ",
30
29
  clear: "Konuşmayı temizle",
31
30
  close: "Kapat",
@@ -36,16 +35,19 @@ export const tr: UIStringsOverride = {
36
35
  placeholder: "Bir soru sorun…",
37
36
  send: "Gönder",
38
37
  tip: "İpucu: Sohbeti şu tuşla açıp kapatabilirsiniz:",
39
- title: "Yapay zekâya sor",
38
+ title: "Asistan",
40
39
  you: "Siz",
41
40
  },
42
41
  banner: { dismiss: "Duyuruyu kapat" },
43
42
  changelog: {
44
43
  description: "Ürün güncellemeleri ve sürüm notları.",
45
- showReleases: "{version} sürümlerini göster",
46
44
  title: "Değişiklik günlüğü",
47
45
  },
48
- content: { diagramError: "Bu diyagram görüntülenemedi." },
46
+ content: {
47
+ copyColor: "Rengi kopyala: {name} {value}",
48
+ copyPrompt: "İstemi kopyala",
49
+ diagramError: "Bu diyagram görüntülenemedi.",
50
+ },
49
51
  feedback: {
50
52
  no: "Hayır",
51
53
  question: "Bu sayfa yardımcı oldu mu?",
@@ -61,6 +63,7 @@ export const tr: UIStringsOverride = {
61
63
  featured: "Öne çıkan",
62
64
  githubRepository: "GitHub deposu",
63
65
  navigation: "Gezinme",
66
+ opensInNewTab: "Yeni sekmede açılır",
64
67
  primary: "Birincil",
65
68
  sections: "Bölümler",
66
69
  toggleNavigation: "Gezinmeyi aç/kapat",
@@ -81,8 +84,8 @@ export const tr: UIStringsOverride = {
81
84
  search: {
82
85
  all: "Tümü",
83
86
  allLanguages: "Tüm diller",
84
- askAi: "Yapay zekâya sor",
85
- askAiHint: "Yapay zekâdan anında yanıt alın",
87
+ assistant: "Asistan",
88
+ assistantHint: "Yapay zekâdan anında yanıt alın",
86
89
  button: "Ara",
87
90
  devOnly: "Arama, üretim derlemesinde kullanılabilir.",
88
91
  error: "Bir şeyler ters gitti. Lütfen tekrar deneyin.",
@@ -5,7 +5,6 @@ export const uk: UIStringsOverride = {
5
5
  actions: {
6
6
  addToCursor: "Додати до Cursor",
7
7
  addToVscode: "Додати до VS Code",
8
- askAI: "Запитати ШІ про цю сторінку",
9
8
  connectMcp: "Підключитися до MCP",
10
9
  copied: "Скопійовано!",
11
10
  copyClaudeCode: "Скопіювати команду Claude Code",
@@ -25,7 +24,7 @@ export const uk: UIStringsOverride = {
25
24
  "Прочитайте {url} — я ставитиму запитання щодо цієї сторінки.",
26
25
  scrollToTop: "Нагору",
27
26
  },
28
- ask: {
27
+ assistant: {
29
28
  ai: "ШІ",
30
29
  clear: "Очистити бесіду",
31
30
  close: "Закрити",
@@ -36,16 +35,19 @@ export const uk: UIStringsOverride = {
36
35
  placeholder: "Поставте запитання…",
37
36
  send: "Надіслати",
38
37
  tip: "Порада: чат можна відкрити й закрити за допомогою",
39
- title: "Запитати ШІ",
38
+ title: "Асистент",
40
39
  you: "Ви",
41
40
  },
42
41
  banner: { dismiss: "Закрити оголошення" },
43
42
  changelog: {
44
43
  description: "Оновлення продукту та примітки до випусків.",
45
- showReleases: "Показати випуски {version}",
46
44
  title: "Журнал змін",
47
45
  },
48
- content: { diagramError: "Не вдалося відобразити цю діаграму." },
46
+ content: {
47
+ copyColor: "Скопіювати колір {name} {value}",
48
+ copyPrompt: "Скопіювати промпт",
49
+ diagramError: "Не вдалося відобразити цю діаграму.",
50
+ },
49
51
  feedback: {
50
52
  no: "Ні",
51
53
  question: "Чи була ця сторінка корисною?",
@@ -61,6 +63,7 @@ export const uk: UIStringsOverride = {
61
63
  featured: "Рекомендоване",
62
64
  githubRepository: "Репозиторій GitHub",
63
65
  navigation: "Навігація",
66
+ opensInNewTab: "Відкривається в новій вкладці",
64
67
  primary: "Основне",
65
68
  sections: "Розділи",
66
69
  toggleNavigation: "Перемкнути навігацію",
@@ -81,8 +84,8 @@ export const uk: UIStringsOverride = {
81
84
  search: {
82
85
  all: "Усі",
83
86
  allLanguages: "Усі мови",
84
- askAi: "Запитати ШІ",
85
- askAiHint: "Отримайте миттєву відповідь від ШІ",
87
+ assistant: "Асистент",
88
+ assistantHint: "Отримайте миттєву відповідь від ШІ",
86
89
  button: "Пошук",
87
90
  devOnly: "Пошук доступний у production-збірці.",
88
91
  error: "Щось пішло не так. Спробуйте ще раз.",
@@ -5,7 +5,6 @@ export const vi: UIStringsOverride = {
5
5
  actions: {
6
6
  addToCursor: "Thêm vào Cursor",
7
7
  addToVscode: "Thêm vào VS Code",
8
- askAI: "Hỏi AI về trang này",
9
8
  connectMcp: "Kết nối với MCP",
10
9
  copied: "Đã sao chép!",
11
10
  copyClaudeCode: "Sao chép lệnh Claude Code",
@@ -24,7 +23,7 @@ export const vi: UIStringsOverride = {
24
23
  openInChatPrompt: "Hãy đọc {url} để tôi có thể đặt câu hỏi về trang này.",
25
24
  scrollToTop: "Lên đầu trang",
26
25
  },
27
- ask: {
26
+ assistant: {
28
27
  ai: "AI",
29
28
  clear: "Xóa cuộc trò chuyện",
30
29
  close: "Đóng",
@@ -35,16 +34,17 @@ export const vi: UIStringsOverride = {
35
34
  placeholder: "Đặt câu hỏi…",
36
35
  send: "Gửi",
37
36
  tip: "Mẹo: Bạn có thể mở và đóng trò chuyện bằng",
38
- title: "Hỏi AI",
37
+ title: "Trợ lý",
39
38
  you: "Bạn",
40
39
  },
41
40
  banner: { dismiss: "Đóng thông báo" },
42
41
  changelog: {
43
42
  description: "Cập nhật sản phẩm và ghi chú phát hành.",
44
- showReleases: "Hiện các bản phát hành {version}",
45
43
  title: "Nhật ký thay đổi",
46
44
  },
47
45
  content: {
46
+ copyColor: "Sao chép màu {name} {value}",
47
+ copyPrompt: "Sao chép prompt",
48
48
  diagramError: "Không thể hiển thị sơ đồ này.",
49
49
  },
50
50
  feedback: {
@@ -62,6 +62,7 @@ export const vi: UIStringsOverride = {
62
62
  featured: "Nổi bật",
63
63
  githubRepository: "Kho lưu trữ GitHub",
64
64
  navigation: "Điều hướng",
65
+ opensInNewTab: "Mở trong thẻ mới",
65
66
  primary: "Chính",
66
67
  sections: "Chuyên mục",
67
68
  toggleNavigation: "Chuyển đổi điều hướng",
@@ -82,8 +83,8 @@ export const vi: UIStringsOverride = {
82
83
  search: {
83
84
  all: "Tất cả",
84
85
  allLanguages: "Tất cả ngôn ngữ",
85
- askAi: "Hỏi AI",
86
- askAiHint: "Nhận câu trả lời tức thì từ AI",
86
+ assistant: "Trợ lý",
87
+ assistantHint: "Nhận câu trả lời tức thì từ AI",
87
88
  button: "Tìm kiếm",
88
89
  devOnly: "Tìm kiếm có sẵn trong bản dựng production.",
89
90
  error: "Đã xảy ra sự cố. Vui lòng thử lại.",
@@ -5,7 +5,6 @@ export const zhTW: UIStringsOverride = {
5
5
  actions: {
6
6
  addToCursor: "新增至 Cursor",
7
7
  addToVscode: "新增至 VS Code",
8
- askAI: "向 AI 詢問此頁面",
9
8
  connectMcp: "連線至 MCP",
10
9
  copied: "已複製!",
11
10
  copyClaudeCode: "複製 Claude Code 指令",
@@ -24,7 +23,7 @@ export const zhTW: UIStringsOverride = {
24
23
  openInChatPrompt: "請閱讀 {url} 以便我針對此頁面提問。",
25
24
  scrollToTop: "回到頂部",
26
25
  },
27
- ask: {
26
+ assistant: {
28
27
  ai: "AI",
29
28
  clear: "清除對話",
30
29
  close: "關閉",
@@ -35,16 +34,17 @@ export const zhTW: UIStringsOverride = {
35
34
  placeholder: "提出問題…",
36
35
  send: "傳送",
37
36
  tip: "提示:可透過以下快捷鍵開啟和關閉聊天",
38
- title: "向 AI 提問",
37
+ title: "助理",
39
38
  you: "你",
40
39
  },
41
40
  banner: { dismiss: "關閉公告" },
42
41
  changelog: {
43
42
  description: "產品更新與版本說明。",
44
- showReleases: "顯示 {version} 的發布",
45
43
  title: "更新日誌",
46
44
  },
47
45
  content: {
46
+ copyColor: "複製顏色 {name} {value}",
47
+ copyPrompt: "複製提示詞",
48
48
  diagramError: "無法顯示此圖表。",
49
49
  },
50
50
  feedback: {
@@ -62,6 +62,7 @@ export const zhTW: UIStringsOverride = {
62
62
  featured: "精選",
63
63
  githubRepository: "GitHub 儲存庫",
64
64
  navigation: "導覽",
65
+ opensInNewTab: "在新分頁中開啟",
65
66
  primary: "主要",
66
67
  sections: "章節",
67
68
  toggleNavigation: "切換導覽",
@@ -82,8 +83,8 @@ export const zhTW: UIStringsOverride = {
82
83
  search: {
83
84
  all: "全部",
84
85
  allLanguages: "所有語言",
85
- askAi: "向 AI 提問",
86
- askAiHint: "從 AI 即時取得解答",
86
+ assistant: "助理",
87
+ assistantHint: "從 AI 即時取得解答",
87
88
  button: "搜尋",
88
89
  devOnly: "搜尋在正式版組建中可用。",
89
90
  error: "發生了一些問題,請再試一次。",
@@ -5,7 +5,6 @@ export const zh: UIStringsOverride = {
5
5
  actions: {
6
6
  addToCursor: "添加到 Cursor",
7
7
  addToVscode: "添加到 VS Code",
8
- askAI: "向 AI 询问此页面",
9
8
  connectMcp: "连接到 MCP",
10
9
  copied: "已复制!",
11
10
  copyClaudeCode: "复制 Claude Code 命令",
@@ -24,7 +23,7 @@ export const zh: UIStringsOverride = {
24
23
  openInChatPrompt: "请阅读 {url} 以便我就此页面提问。",
25
24
  scrollToTop: "回到顶部",
26
25
  },
27
- ask: {
26
+ assistant: {
28
27
  ai: "AI",
29
28
  clear: "清空对话",
30
29
  close: "关闭",
@@ -35,16 +34,17 @@ export const zh: UIStringsOverride = {
35
34
  placeholder: "提出问题…",
36
35
  send: "发送",
37
36
  tip: "提示:可通过以下快捷键打开和关闭聊天",
38
- title: "向 AI 提问",
37
+ title: "助手",
39
38
  you: "你",
40
39
  },
41
40
  banner: { dismiss: "关闭公告" },
42
41
  changelog: {
43
42
  description: "产品更新与版本说明。",
44
- showReleases: "显示 {version} 的发布",
45
43
  title: "更新日志",
46
44
  },
47
45
  content: {
46
+ copyColor: "复制颜色 {name} {value}",
47
+ copyPrompt: "复制提示词",
48
48
  diagramError: "无法渲染此图表。",
49
49
  },
50
50
  feedback: {
@@ -62,6 +62,7 @@ export const zh: UIStringsOverride = {
62
62
  featured: "精选",
63
63
  githubRepository: "GitHub 仓库",
64
64
  navigation: "导航",
65
+ opensInNewTab: "在新标签页中打开",
65
66
  primary: "主要",
66
67
  sections: "章节",
67
68
  toggleNavigation: "切换导航",
@@ -82,8 +83,8 @@ export const zh: UIStringsOverride = {
82
83
  search: {
83
84
  all: "全部",
84
85
  allLanguages: "所有语言",
85
- askAi: "向 AI 提问",
86
- askAiHint: "从 AI 即时获取答案",
86
+ assistant: "助手",
87
+ assistantHint: "从 AI 即时获取答案",
87
88
  button: "搜索",
88
89
  devOnly: "搜索在生产构建中可用。",
89
90
  error: "出了点问题,请重试。",
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Zod's own wording for unknown keys no removed-key hint covers, appended to
3
+ * a hint so an unrelated typo isn't silently dropped from the diagnostic
4
+ * beside it. Shared by every config object that names a removed field's
5
+ * replacement (the root config, `ai.assistant`, `openapi()`/`asyncapi()`, …).
6
+ */
7
+ export const unrecognizedKeysMessage = (keys: string[]): string =>
8
+ `Unrecognized key${keys.length > 1 ? "s" : ""}: ${keys
9
+ .map((key) => JSON.stringify(key))
10
+ .join(", ")}`;
@@ -11,6 +11,7 @@ import { localizeRoute } from "./i18n.ts";
11
11
  import type { BlumeProject } from "./project-graph.ts";
12
12
  import { isWithin, scanProject } from "./project-graph.ts";
13
13
  import { VERSION_ID } from "./schema.ts";
14
+ import type { Diagnostic } from "./types.ts";
14
15
  import { VERSION_LIKE, versionizeRoute } from "./versions.ts";
15
16
 
16
17
  /** What `cutVersion` did, for the CLI to report. */
@@ -21,6 +22,11 @@ export interface CutResult {
21
22
  rewritten: { file: string; count: number }[];
22
23
  /** Whether `blume.config.ts` was updated in place. */
23
24
  configUpdated: boolean;
25
+ /**
26
+ * Whether that update added the whole `versions` block — the first cut of a
27
+ * project that had no versioning — rather than one `archived` entry.
28
+ */
29
+ versionsAdded: boolean;
24
30
  /** Ready-to-paste config snippet when in-place update was not possible. */
25
31
  configSnippet: string | null;
26
32
  /** Absolute path of the created snapshot directory. */
@@ -144,11 +150,17 @@ export const rewriteSnapshotLinks = (
144
150
  return { count, text: lines.join("\n") };
145
151
  };
146
152
 
153
+ /**
154
+ * The switcher label a first cut gives the live docs. `versions.current.label`
155
+ * is required, and "Latest" reads right until the author names the release.
156
+ */
157
+ const CURRENT_LABEL = "Latest";
158
+
147
159
  /** The config entry to add, as a paste-ready snippet for the fallback path. */
148
160
  const snippetFor = (id: string, hasVersions: boolean): string =>
149
161
  hasVersions
150
162
  ? `Add to versions.archived in blume.config.ts (newest first):\n\n { id: "${id}" },\n`
151
- : `Add to blume.config.ts:\n\n versions: {\n archived: [{ id: "${id}" }],\n current: { label: "…" },\n },\n`;
163
+ : `Add to blume.config.ts:\n\n versions: {\n archived: [{ id: "${id}" }],\n current: { label: "${CURRENT_LABEL}" },\n },\n`;
152
164
 
153
165
  /**
154
166
  * Best-effort in-place config update: insert the new id at the head of an
@@ -192,6 +204,101 @@ export const insertArchivedVersion = async (
192
204
  return true;
193
205
  };
194
206
 
207
+ /** The opening brace of the config object: `defineConfig({` or `export default {`. */
208
+ const CONFIG_OBJECT = /(?:defineConfig\(\s*|export\s+default\s+)\{/gu;
209
+
210
+ /**
211
+ * Best-effort in-place registration of a first version: add a `versions` block
212
+ * (the id archived, the live docs labeled {@link CURRENT_LABEL}) as the first
213
+ * property of the config object. Only the plain shape is edited — exactly one
214
+ * `defineConfig({` or `export default {` and no `versions` key yet — so a
215
+ * config built any other way falls back to the printed snippet rather than
216
+ * risk corrupting it.
217
+ */
218
+ export const insertVersionsBlock = async (
219
+ configPath: string,
220
+ id: string
221
+ ): Promise<boolean> => {
222
+ let text: string;
223
+ try {
224
+ text = await readFile(configPath, "utf-8");
225
+ } catch {
226
+ return false;
227
+ }
228
+ const matches = [...text.matchAll(CONFIG_OBJECT)];
229
+ const [match] = matches;
230
+ if (matches.length !== 1 || !match || /\bversions\s*:/u.test(text)) {
231
+ return false;
232
+ }
233
+ const insertAt = match.index + match[0].length;
234
+ const rest = text.slice(insertAt);
235
+ const eol = text.includes("\r\n") ? "\r\n" : "\n";
236
+ const lineStart = text.lastIndexOf("\n", match.index) + 1;
237
+ const outer = /^[ \t]*/u.exec(text.slice(lineStart))?.[0] ?? "";
238
+ // Match the indentation of the property on the next line, when there is one.
239
+ const indent =
240
+ /^[ \t]*\r?\n(?<indent>[ \t]*)\S/u.exec(rest)?.groups?.indent ??
241
+ `${outer} `;
242
+ const block = [
243
+ "versions: {",
244
+ ` archived: [{ id: "${id}" }],`,
245
+ ` current: { label: "${CURRENT_LABEL}" },`,
246
+ "},",
247
+ ]
248
+ .map((line) => `${indent}${line}`)
249
+ .join(eol);
250
+ const body = rest.trimStart();
251
+ let tail: string;
252
+ if (body.startsWith("}")) {
253
+ // An empty object: close it on its own line.
254
+ tail = `${eol}${outer}${body}`;
255
+ } else if (/^[ \t]*\r?\n/u.test(rest)) {
256
+ tail = rest;
257
+ } else {
258
+ // An inline object: move its first property onto the next line.
259
+ tail = `${eol}${indent}${body}`;
260
+ }
261
+ await writeTextAtomic(
262
+ configPath,
263
+ `${text.slice(0, insertAt)}${eol}${block}${tail}`
264
+ );
265
+ return true;
266
+ };
267
+
268
+ /**
269
+ * Version-shaped folders (`v1.0/`) at the top of the content root of a project
270
+ * with no `versions` config — usually a snapshot `blume version` cut but
271
+ * couldn't register — which build as ordinary content at `/v1.0/…`, so every
272
+ * page ships twice. With versioning configured, the scan's own
273
+ * `BLUME_VERSIONS_UNCONFIGURED_VERSION` covers a folder it doesn't list; this
274
+ * check is `blume doctor`'s alone, since an unversioned site can have a real
275
+ * `v1/` section that a warning on every build would only nag about.
276
+ */
277
+ export const unregisteredSnapshotDiagnostics = (
278
+ project: BlumeProject
279
+ ): Diagnostic[] => {
280
+ if (project.config.versions) {
281
+ return [];
282
+ }
283
+ const { contentRoot } = project.context;
284
+ const folders = new Set<string>();
285
+ for (const page of project.graph.pages) {
286
+ const [first, ...rest] = page.sourcePath
287
+ ? relative(contentRoot, page.sourcePath).split("/")
288
+ : [];
289
+ if (first && rest.length > 0 && VERSION_LIKE.test(first)) {
290
+ folders.add(first);
291
+ }
292
+ }
293
+ return [...folders].toSorted().map((folder) => ({
294
+ code: "BLUME_VERSIONS_UNCONFIGURED_VERSION",
295
+ file: join(contentRoot, folder),
296
+ message: `Folder "${folder}/" looks like a version snapshot, but versioning isn't configured, so its pages build as ordinary content at /${folder}/….`,
297
+ severity: "warning",
298
+ suggestion: `If it's a snapshot, register it with \`versions: { archived: [{ id: "${folder}" }], current: { label: "${CURRENT_LABEL}" } }\` in blume.config.ts; if it's an ordinary section, ignore this.`,
299
+ }));
300
+ };
301
+
195
302
  /**
196
303
  * Freeze the current docs as an archived version: copy the content tree into
197
304
  * `<contentRoot>/<id>/` (excluding existing snapshots), rewrite root-absolute
@@ -304,18 +411,19 @@ export const cutVersion = async (
304
411
  };
305
412
  await walk(dir);
306
413
 
307
- const configPath = join(root, "blume.config.ts");
308
- const configUpdated =
309
- project.config.versions !== undefined &&
310
- (await insertArchivedVersion(configPath, id));
414
+ const configPath =
415
+ project.context.configFile ?? join(root, "blume.config.ts");
416
+ const firstVersion = project.config.versions === undefined;
417
+ const configUpdated = firstVersion
418
+ ? await insertVersionsBlock(configPath, id)
419
+ : await insertArchivedVersion(configPath, id);
311
420
 
312
421
  return {
313
- configSnippet: configUpdated
314
- ? null
315
- : snippetFor(id, project.config.versions !== undefined),
422
+ configSnippet: configUpdated ? null : snippetFor(id, !firstVersion),
316
423
  configUpdated,
317
424
  copied,
318
425
  dir,
319
426
  rewritten,
427
+ versionsAdded: configUpdated && firstVersion,
320
428
  };
321
429
  };