blume 1.7.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (677) hide show
  1. package/AGENTS.md +19 -0
  2. package/CHANGELOG.md +227 -0
  3. package/README.md +34 -21
  4. package/dist/cli/chunk-11j0384y.js +148 -0
  5. package/dist/cli/chunk-11j0384y.js.map +10 -0
  6. package/dist/cli/{chunk-xhtpx3ff.js → chunk-1w8dp3qb.js} +17 -16
  7. package/dist/cli/{chunk-xhtpx3ff.js.map → chunk-1w8dp3qb.js.map} +3 -3
  8. package/dist/cli/chunk-2q1dwty4.js +75 -0
  9. package/dist/cli/chunk-2q1dwty4.js.map +11 -0
  10. package/dist/cli/chunk-41za066z.js +122 -0
  11. package/dist/cli/chunk-41za066z.js.map +11 -0
  12. package/dist/cli/chunk-5a2z0198.js +133 -0
  13. package/dist/cli/chunk-5a2z0198.js.map +10 -0
  14. package/dist/cli/{chunk-9he6crym.js → chunk-6k8vp3ta.js} +25 -13
  15. package/dist/cli/{chunk-9he6crym.js.map → chunk-6k8vp3ta.js.map} +4 -4
  16. package/dist/cli/{chunk-mt76t7dj.js → chunk-79njf86q.js} +133 -54
  17. package/dist/cli/chunk-79njf86q.js.map +11 -0
  18. package/dist/cli/{chunk-3w7b2vcx.js → chunk-7ez8ny0t.js} +2 -2
  19. package/dist/cli/{chunk-688e0dde.js → chunk-88cpgt6h.js} +1 -1
  20. package/dist/cli/chunk-a9kptbw5.js +361 -0
  21. package/dist/cli/chunk-a9kptbw5.js.map +14 -0
  22. package/dist/cli/chunk-abh8yjkn.js +31 -0
  23. package/dist/cli/chunk-abh8yjkn.js.map +10 -0
  24. package/dist/cli/chunk-b5aj94ah.js +91 -0
  25. package/dist/cli/chunk-b5aj94ah.js.map +10 -0
  26. package/dist/cli/{chunk-hs3gbh8p.js → chunk-bctazmbk.js} +9 -5
  27. package/dist/cli/chunk-bctazmbk.js.map +10 -0
  28. package/dist/cli/chunk-beat36xx.js +279 -0
  29. package/dist/cli/chunk-beat36xx.js.map +10 -0
  30. package/dist/cli/chunk-bnbmcwfb.js +145 -0
  31. package/dist/cli/chunk-bnbmcwfb.js.map +11 -0
  32. package/dist/cli/{chunk-9bkjd11x.js → chunk-bw22s759.js} +15 -5
  33. package/dist/cli/{chunk-9bkjd11x.js.map → chunk-bw22s759.js.map} +4 -4
  34. package/dist/cli/chunk-by2290sx.js +39 -0
  35. package/dist/cli/chunk-by2290sx.js.map +10 -0
  36. package/dist/cli/chunk-d1tadaw7.js +79 -0
  37. package/dist/cli/chunk-d1tadaw7.js.map +10 -0
  38. package/dist/cli/{chunk-t3tj0dgr.js → chunk-d80hr03s.js} +24 -19
  39. package/dist/cli/chunk-d80hr03s.js.map +15 -0
  40. package/dist/cli/chunk-ernrthtr.js +97 -0
  41. package/dist/cli/chunk-ernrthtr.js.map +10 -0
  42. package/dist/cli/chunk-f2972sbt.js +374 -0
  43. package/dist/cli/chunk-f2972sbt.js.map +10 -0
  44. package/dist/cli/{chunk-exeeb35e.js → chunk-f7t03s3g.js} +2 -2
  45. package/dist/cli/{chunk-2z47ypj8.js → chunk-fa25z98p.js} +16 -3
  46. package/dist/cli/chunk-fa25z98p.js.map +11 -0
  47. package/dist/cli/{chunk-12dxjqk7.js → chunk-fh5hj5jt.js} +44 -21
  48. package/dist/cli/chunk-fh5hj5jt.js.map +10 -0
  49. package/dist/cli/{chunk-8cd8tj54.js → chunk-j8mw0za6.js} +86 -57
  50. package/dist/cli/chunk-j8mw0za6.js.map +35 -0
  51. package/dist/cli/chunk-jts8mvcz.js +106 -0
  52. package/dist/cli/{chunk-2mzebbbz.js.map → chunk-jts8mvcz.js.map} +6 -4
  53. package/dist/cli/{chunk-ejjx8znq.js → chunk-mnqj32sj.js} +505 -536
  54. package/dist/cli/chunk-mnqj32sj.js.map +12 -0
  55. package/dist/cli/{chunk-196vjxp9.js → chunk-mwt1k8n7.js} +100 -372
  56. package/dist/cli/chunk-mwt1k8n7.js.map +10 -0
  57. package/dist/cli/chunk-nk3ts2xk.js +51 -0
  58. package/dist/cli/chunk-nk3ts2xk.js.map +10 -0
  59. package/dist/cli/{chunk-n9sra6sy.js → chunk-pat2zzwc.js} +10 -14
  60. package/dist/cli/{chunk-n9sra6sy.js.map → chunk-pat2zzwc.js.map} +2 -2
  61. package/dist/cli/chunk-pnnvybbk.js +176 -0
  62. package/dist/cli/chunk-pnnvybbk.js.map +11 -0
  63. package/dist/cli/{chunk-cvky9gb2.js → chunk-sqn5t4q0.js} +81 -87
  64. package/dist/cli/chunk-sqn5t4q0.js.map +10 -0
  65. package/dist/cli/{chunk-eevwt1sc.js → chunk-tzne8qfq.js} +15 -15
  66. package/dist/cli/{chunk-eevwt1sc.js.map → chunk-tzne8qfq.js.map} +1 -1
  67. package/dist/cli/chunk-xaz13gwg.js +12449 -0
  68. package/dist/cli/chunk-xaz13gwg.js.map +182 -0
  69. package/dist/cli/chunk-y3e45rc8.js +102 -0
  70. package/dist/cli/chunk-y3e45rc8.js.map +10 -0
  71. package/dist/cli/chunk-z01ze5c1.js +261 -0
  72. package/dist/cli/chunk-z01ze5c1.js.map +10 -0
  73. package/dist/cli/{chunk-5n7t497w.js → chunk-z1f5arsg.js} +247 -755
  74. package/dist/cli/chunk-z1f5arsg.js.map +36 -0
  75. package/dist/cli/{chunk-hdm2dkd2.js → chunk-zg2gtj10.js} +1086 -2596
  76. package/dist/cli/chunk-zg2gtj10.js.map +35 -0
  77. package/dist/cli/{chunk-ppfvdcd4.js → chunk-zxccj738.js} +1 -1
  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.d.ts +368 -0
  85. package/dist/types/ai/changelog-markdown.d.ts +2 -0
  86. package/dist/types/ai/component-markdown.d.ts +2 -2
  87. package/dist/types/ai/index.d.ts +24 -0
  88. package/dist/types/ai/link-headers.d.ts +24 -0
  89. package/dist/types/ai/llms.d.ts +25 -0
  90. package/dist/types/ai/markdown.d.ts +45 -0
  91. package/dist/types/ai/mcp/discovery.d.ts +68 -0
  92. package/dist/types/ai/mcp/tools.d.ts +16 -0
  93. package/dist/types/ai/openapi-components.d.ts +43 -0
  94. package/dist/types/ai/relative-links.d.ts +26 -0
  95. package/dist/types/ai/serializers.d.ts +15 -0
  96. package/dist/types/ai/skills.d.ts +42 -0
  97. package/dist/types/ai/tar.d.ts +25 -0
  98. package/dist/types/ai/visibility.d.ts +17 -0
  99. package/dist/types/ai/web-bot-auth.d.ts +16 -0
  100. package/dist/types/analytics/adobe.d.ts +35 -0
  101. package/dist/types/analytics/amplitude.d.ts +50 -0
  102. package/dist/types/analytics/clarity.d.ts +31 -0
  103. package/dist/types/analytics/clearbit.d.ts +29 -0
  104. package/dist/types/analytics/cloudflare.d.ts +41 -0
  105. package/dist/types/analytics/fathom.d.ts +41 -0
  106. package/dist/types/analytics/google-analytics.d.ts +44 -0
  107. package/dist/types/analytics/google-tag-manager.d.ts +40 -0
  108. package/dist/types/analytics/head.d.ts +30 -0
  109. package/dist/types/analytics/heap.d.ts +40 -0
  110. package/dist/types/analytics/hightouch.d.ts +44 -0
  111. package/dist/types/analytics/hotjar.d.ts +33 -0
  112. package/dist/types/analytics/index.d.ts +61 -0
  113. package/dist/types/analytics/inline.d.ts +17 -0
  114. package/dist/types/analytics/logrocket.d.ts +44 -0
  115. package/dist/types/analytics/mixpanel.d.ts +67 -0
  116. package/dist/types/analytics/pirsch.d.ts +42 -0
  117. package/dist/types/analytics/plausible.d.ts +56 -0
  118. package/dist/types/analytics/posthog.d.ts +45 -0
  119. package/dist/types/analytics/schema.d.ts +320 -0
  120. package/dist/types/analytics/script.d.ts +46 -0
  121. package/dist/types/analytics/segment.d.ts +50 -0
  122. package/dist/types/analytics/vercel.d.ts +48 -0
  123. package/dist/types/astro/integration.d.ts +76 -0
  124. package/dist/types/astro/markdown-negotiation.d.ts +23 -0
  125. package/dist/types/astro/module-types.d.ts +14 -0
  126. package/dist/types/astro/pages.d.ts +44 -0
  127. package/dist/types/cli/env.d.ts +12 -0
  128. package/dist/types/cli/init/scaffold.d.ts +154 -0
  129. package/dist/types/components/layout/nav-utils.d.ts +11 -0
  130. package/dist/types/core/adapter.d.ts +47 -0
  131. package/dist/types/core/api-name.d.ts +7 -0
  132. package/dist/types/core/changelog-index.d.ts +13 -0
  133. package/dist/types/core/config-input.d.ts +209 -505
  134. package/dist/types/core/config.d.ts +60 -34
  135. package/dist/types/core/content-assets.d.ts +76 -0
  136. package/dist/types/core/custom-pages.d.ts +33 -0
  137. package/dist/types/core/data.d.ts +28 -11
  138. package/dist/types/core/define-components.d.ts +12 -9
  139. package/dist/types/core/deployment-env.d.ts +6 -11
  140. package/dist/types/core/frontmatter.d.ts +10 -0
  141. package/dist/types/core/graph.d.ts +18 -0
  142. package/dist/types/core/heading-markers.d.ts +54 -0
  143. package/dist/types/core/i18n-ui.d.ts +6 -2
  144. package/dist/types/core/i18n.d.ts +87 -0
  145. package/dist/types/core/includes.d.ts +138 -0
  146. package/dist/types/core/last-modified.d.ts +47 -0
  147. package/dist/types/core/links.d.ts +95 -0
  148. package/dist/types/core/locale-links.d.ts +60 -0
  149. package/dist/types/core/manifest.d.ts +17 -0
  150. package/dist/types/core/meta.d.ts +38 -0
  151. package/dist/types/core/nav-diagnostics.d.ts +26 -0
  152. package/dist/types/core/navigation.d.ts +6 -0
  153. package/dist/types/core/node-require.d.ts +19 -0
  154. package/dist/types/core/package-json.d.ts +13 -0
  155. package/dist/types/core/probe.d.ts +42 -0
  156. package/dist/types/core/project-graph.d.ts +51 -0
  157. package/dist/types/core/project.d.ts +2 -0
  158. package/dist/types/core/safe-href.d.ts +2 -0
  159. package/dist/types/core/safe-links.d.ts +26 -0
  160. package/dist/types/core/schema.d.ts +2291 -441
  161. package/dist/types/core/site-url.d.ts +16 -0
  162. package/dist/types/core/sources/assets.d.ts +36 -0
  163. package/dist/types/core/sources/cache.d.ts +37 -0
  164. package/dist/types/core/sources/collection.d.ts +28 -0
  165. package/dist/types/core/sources/contentful-rich-text.d.ts +31 -0
  166. package/dist/types/core/sources/contentful.d.ts +40 -0
  167. package/dist/types/core/sources/filesystem.d.ts +24 -0
  168. package/dist/types/core/sources/github-releases.d.ts +31 -0
  169. package/dist/types/core/sources/json.d.ts +30 -0
  170. package/dist/types/core/sources/lexical.d.ts +19 -0
  171. package/dist/types/core/sources/lower.d.ts +75 -0
  172. package/dist/types/core/sources/mdx-remote.d.ts +28 -0
  173. package/dist/types/core/sources/normalize.d.ts +147 -0
  174. package/dist/types/core/sources/notion.d.ts +131 -0
  175. package/dist/types/core/sources/obsidian.d.ts +46 -0
  176. package/dist/types/core/sources/payload.d.ts +39 -0
  177. package/dist/types/core/sources/portable-text.d.ts +42 -0
  178. package/dist/types/core/sources/read.d.ts +23 -0
  179. package/dist/types/core/sources/remote.d.ts +74 -0
  180. package/dist/types/core/sources/resolve.d.ts +19 -0
  181. package/dist/types/core/sources/sanity.d.ts +43 -0
  182. package/dist/types/core/sources/strapi-blocks.d.ts +12 -0
  183. package/dist/types/core/sources/strapi.d.ts +33 -0
  184. package/dist/types/core/sources/types.d.ts +7 -0
  185. package/dist/types/core/sources/watch.d.ts +45 -0
  186. package/dist/types/core/text-width.d.ts +11 -0
  187. package/dist/types/core/types.d.ts +20 -1
  188. package/dist/types/core/unrecognized-keys.d.ts +7 -0
  189. package/dist/types/core/versions.d.ts +72 -0
  190. package/dist/types/core/yaml.d.ts +9 -0
  191. package/dist/types/deploy/adapter-output.d.ts +45 -0
  192. package/dist/types/deploy/adapters/cloudflare.d.ts +40 -0
  193. package/dist/types/deploy/adapters/index.d.ts +29 -0
  194. package/dist/types/deploy/adapters/netlify.d.ts +37 -0
  195. package/dist/types/deploy/adapters/node.d.ts +37 -0
  196. package/dist/types/deploy/adapters/registry.d.ts +133 -0
  197. package/dist/types/deploy/adapters/types.d.ts +71 -0
  198. package/dist/types/deploy/adapters/vercel.d.ts +38 -0
  199. package/dist/types/deploy/artifacts.d.ts +65 -0
  200. package/dist/types/deploy/cloudflare-negotiation.d.ts +196 -0
  201. package/dist/types/deploy/function-bundle.d.ts +80 -0
  202. package/dist/types/deploy/headers.d.ts +50 -0
  203. package/dist/types/deploy/node-headers.d.ts +42 -0
  204. package/dist/types/deploy/platforms/cloudflare.d.ts +40 -0
  205. package/dist/types/deploy/platforms/index.d.ts +18 -0
  206. package/dist/types/deploy/platforms/netlify.d.ts +13 -0
  207. package/dist/types/deploy/platforms/node.d.ts +11 -0
  208. package/dist/types/deploy/platforms/paths.d.ts +27 -0
  209. package/dist/types/deploy/platforms/static.d.ts +10 -0
  210. package/dist/types/deploy/platforms/types.d.ts +104 -0
  211. package/dist/types/deploy/platforms/vercel.d.ts +32 -0
  212. package/dist/types/deploy/redirects.d.ts +53 -0
  213. package/dist/types/deploy/robots.d.ts +8 -0
  214. package/dist/types/deploy/rss.d.ts +31 -0
  215. package/dist/types/deploy/sitemap.d.ts +21 -0
  216. package/dist/types/deploy/vercel-negotiation.d.ts +109 -0
  217. package/dist/types/markdown/code-title.d.ts +32 -0
  218. package/dist/types/markdown/fence-meta.d.ts +23 -0
  219. package/dist/types/markdown/themes.d.ts +3 -3
  220. package/dist/types/openapi/asyncapi.d.ts +129 -0
  221. package/dist/types/openapi/graphql-build.d.ts +8 -0
  222. package/dist/types/openapi/graphql.d.ts +122 -0
  223. package/dist/types/openapi/model.d.ts +158 -0
  224. package/dist/types/openapi/parse.d.ts +57 -0
  225. package/dist/types/openapi/references.d.ts +37 -25
  226. package/dist/types/openapi/render-mdx.d.ts +33 -0
  227. package/dist/types/openapi/sentence.d.ts +7 -0
  228. package/dist/types/openapi/signature.d.ts +10 -0
  229. package/dist/types/openapi/source.d.ts +22 -0
  230. package/dist/types/openapi/spec-dependency-error.d.ts +10 -0
  231. package/dist/types/reference/asyncapi.d.ts +166 -0
  232. package/dist/types/reference/graphql.d.ts +181 -0
  233. package/dist/types/reference/index.d.ts +32 -0
  234. package/dist/types/reference/openapi.d.ts +165 -0
  235. package/dist/types/reference/options.d.ts +157 -0
  236. package/dist/types/reference/scalar.d.ts +136 -0
  237. package/dist/types/reference/schema.d.ts +630 -0
  238. package/dist/types/search/adapters/algolia.d.ts +32 -0
  239. package/dist/types/search/adapters/flexsearch.d.ts +12 -0
  240. package/dist/types/search/adapters/index.d.ts +31 -0
  241. package/dist/types/search/adapters/mixedbread.d.ts +22 -0
  242. package/dist/types/search/adapters/orama-cloud.d.ts +33 -0
  243. package/dist/types/search/adapters/orama.d.ts +13 -0
  244. package/dist/types/search/adapters/pagefind.d.ts +12 -0
  245. package/dist/types/search/adapters/registry.d.ts +228 -0
  246. package/dist/types/search/adapters/types.d.ts +34 -0
  247. package/dist/types/search/adapters/typesense.d.ts +42 -0
  248. package/dist/types/search/build.d.ts +23 -0
  249. package/dist/types/search/documents.d.ts +90 -0
  250. package/dist/types/search/facets.d.ts +3 -0
  251. package/dist/types/search/sync/algolia.d.ts +14 -0
  252. package/dist/types/search/sync/index.d.ts +14 -0
  253. package/dist/types/search/sync/orama-cloud.d.ts +10 -0
  254. package/dist/types/search/sync/typesense.d.ts +14 -0
  255. package/dist/types/sources/contentful.d.ts +68 -0
  256. package/dist/types/sources/custom.d.ts +20 -0
  257. package/dist/types/sources/filesystem.d.ts +42 -0
  258. package/dist/types/sources/github-releases.d.ts +46 -0
  259. package/dist/types/sources/index.d.ts +48 -0
  260. package/dist/types/sources/mdx-remote.d.ts +63 -0
  261. package/dist/types/sources/notion.d.ts +65 -0
  262. package/dist/types/sources/obsidian.d.ts +34 -0
  263. package/dist/types/sources/payload.d.ts +68 -0
  264. package/dist/types/sources/registry.d.ts +1414 -0
  265. package/dist/types/sources/sanity.d.ts +69 -0
  266. package/dist/types/sources/shared.d.ts +46 -0
  267. package/dist/types/sources/strapi.d.ts +66 -0
  268. package/dist/types/theme/icon-kind.d.ts +11 -0
  269. package/dist/types/theme/icons.d.ts +20 -0
  270. package/docs/01-quickstart.mdx +18 -18
  271. package/docs/02-deployment.mdx +50 -26
  272. package/docs/03-upgrading.mdx +351 -0
  273. package/docs/04-migrating.mdx +58 -0
  274. package/docs/08-faq.mdx +3 -3
  275. package/docs/advanced/blog.mdx +13 -6
  276. package/docs/advanced/changelog.mdx +23 -35
  277. package/docs/advanced/custom-pages.mdx +20 -8
  278. package/docs/advanced/meta.ts +1 -8
  279. package/docs/advanced/skills.mdx +8 -0
  280. package/docs/cli/audit.mdx +646 -0
  281. package/docs/cli/doctor.mdx +29 -0
  282. package/docs/{reference/eval.mdx → cli/evals.mdx} +9 -8
  283. package/docs/cli/index.mdx +105 -0
  284. package/docs/cli/meta.ts +7 -0
  285. package/docs/{reference → cli}/translate.mdx +1 -1
  286. package/docs/cli/validate.mdx +41 -0
  287. package/docs/cli/version.mdx +40 -0
  288. package/docs/configuration/analytics.mdx +350 -59
  289. package/docs/configuration/ask-ai.mdx +176 -61
  290. package/docs/configuration/customization.mdx +15 -9
  291. package/docs/configuration/index.mdx +52 -31
  292. package/docs/configuration/search.mdx +75 -54
  293. package/docs/configuration/theming.mdx +24 -15
  294. package/docs/content/components.mdx +21 -5
  295. package/docs/{reference → content}/frontmatter.mdx +37 -1
  296. package/docs/content/i18n.mdx +8 -6
  297. package/docs/content/includes.mdx +2 -4
  298. package/docs/content/index.mdx +1 -1
  299. package/docs/content/islands.mdx +10 -5
  300. package/docs/content/meta.mdx +1 -1
  301. package/docs/content/meta.ts +1 -0
  302. package/docs/content/navigation.mdx +12 -7
  303. package/docs/content/sources.mdx +145 -50
  304. package/docs/content/syntax.mdx +26 -12
  305. package/docs/content/versioning.mdx +3 -3
  306. package/docs/discoverability/agent-discovery.mdx +91 -10
  307. package/docs/discoverability/index.mdx +5 -5
  308. package/docs/discoverability/json-api.mdx +4 -4
  309. package/docs/discoverability/llms-txt.mdx +6 -6
  310. package/docs/discoverability/markdown.mdx +4 -4
  311. package/docs/discoverability/mcp.mdx +11 -11
  312. package/docs/discoverability/sitemap-and-robots.mdx +3 -3
  313. package/docs/index.mdx +2 -2
  314. package/docs/references/asyncapi.mdx +59 -0
  315. package/docs/{advanced → references}/graphql.mdx +45 -32
  316. package/docs/{reference → references}/meta.ts +2 -2
  317. package/docs/references/openapi.mdx +171 -0
  318. package/docs/references/scalar.mdx +64 -0
  319. package/package.json +42 -8
  320. package/skills/blume/SKILL.md +21 -8
  321. package/skills/blume-migrate/SKILL.md +22 -21
  322. package/skills/blume-migrate/assets/oxfmt@0.67.0.patch +49 -0
  323. package/skills/blume-migrate/references/docusaurus.md +5 -4
  324. package/skills/blume-migrate/references/fumadocs.md +4 -4
  325. package/skills/blume-migrate/references/mintlify.md +23 -8
  326. package/skills/blume-migrate/references/monorepo.md +6 -6
  327. package/skills/blume-migrate/references/starlight.md +4 -4
  328. package/src/ai/agent-readability.ts +26 -22
  329. package/src/ai/ai-catalog.ts +259 -0
  330. package/src/ai/api/handlers.ts +46 -11
  331. package/src/ai/api-catalog.ts +8 -8
  332. package/src/ai/ask-data.ts +1 -1
  333. package/src/ai/ask.ts +624 -100
  334. package/src/ai/changelog-markdown.ts +91 -0
  335. package/src/ai/component-markdown.ts +328 -12
  336. package/src/ai/index.ts +45 -0
  337. package/src/ai/link-headers.ts +19 -6
  338. package/src/ai/llms.ts +26 -15
  339. package/src/ai/markdown.ts +35 -5
  340. package/src/ai/mcp/data.ts +9 -5
  341. package/src/ai/mcp/discovery.ts +1 -1
  342. package/src/ai/openapi-components.ts +4 -1
  343. package/src/ai/relative-links.ts +170 -0
  344. package/src/ai/serializers.ts +2 -2
  345. package/src/ai/skills.ts +1 -1
  346. package/src/ai/web-bot-auth.ts +2 -2
  347. package/src/analytics/adobe.ts +46 -0
  348. package/src/analytics/amplitude.ts +79 -0
  349. package/src/analytics/clarity.ts +46 -0
  350. package/src/analytics/clearbit.ts +47 -0
  351. package/src/analytics/cloudflare.ts +67 -0
  352. package/src/analytics/fathom.ts +64 -0
  353. package/src/analytics/google-analytics.ts +84 -0
  354. package/src/analytics/google-tag-manager.ts +61 -0
  355. package/src/analytics/head.ts +130 -0
  356. package/src/analytics/heap.ts +65 -0
  357. package/src/analytics/hightouch.ts +77 -0
  358. package/src/analytics/hotjar.ts +47 -0
  359. package/src/analytics/index.ts +71 -0
  360. package/src/analytics/inline.ts +21 -0
  361. package/src/analytics/logrocket.ts +71 -0
  362. package/src/analytics/mixpanel.ts +92 -0
  363. package/src/analytics/pirsch.ts +66 -0
  364. package/src/analytics/plausible.ts +83 -0
  365. package/src/analytics/posthog.ts +78 -0
  366. package/src/analytics/schema.ts +60 -0
  367. package/src/analytics/script.ts +60 -0
  368. package/src/analytics/segment.ts +85 -0
  369. package/src/analytics/vercel.ts +50 -0
  370. package/src/astro/adapter-root.ts +7 -9
  371. package/src/astro/component-slots.ts +131 -91
  372. package/src/astro/generate.ts +114 -345
  373. package/src/astro/integration.ts +2 -6
  374. package/src/astro/pages.ts +13 -101
  375. package/src/astro/render-deps.ts +379 -0
  376. package/src/astro/runtime-deps.ts +201 -0
  377. package/src/astro/templates.ts +554 -541
  378. package/src/audit/agent.ts +24 -0
  379. package/src/audit/catalog.ts +2 -2
  380. package/src/audit/checks/assets.ts +2 -2
  381. package/src/audit/checks/dns-aid.ts +1 -1
  382. package/src/audit/checks/duplicates.ts +3 -1
  383. package/src/audit/checks/i18n.ts +1 -1
  384. package/src/audit/checks/indexability.ts +7 -7
  385. package/src/audit/checks/links.ts +2 -2
  386. package/src/audit/checks/llms.ts +6 -6
  387. package/src/audit/checks/network.ts +3 -3
  388. package/src/audit/checks/og-image.ts +2 -2
  389. package/src/audit/checks/robots.ts +1 -1
  390. package/src/audit/checks/sitemap.ts +2 -2
  391. package/src/audit/checks/social.ts +1 -1
  392. package/src/audit/run.ts +4 -3
  393. package/src/audit/terms.ts +31 -0
  394. package/src/audit/url.ts +13 -13
  395. package/src/cli/command-meta.ts +10 -0
  396. package/src/cli/commands/audit.ts +39 -20
  397. package/src/cli/commands/build.ts +71 -314
  398. package/src/cli/commands/check.ts +1 -0
  399. package/src/cli/commands/dev.ts +40 -1
  400. package/src/cli/commands/doctor.ts +90 -14
  401. package/src/cli/commands/eject.ts +44 -7
  402. package/src/cli/commands/eval.ts +2 -2
  403. package/src/cli/commands/init.ts +161 -41
  404. package/src/cli/commands/migrate.ts +121 -0
  405. package/src/cli/commands/preview.ts +7 -1
  406. package/src/cli/commands/translate.ts +2 -2
  407. package/src/cli/commands/upgrade.ts +141 -0
  408. package/src/cli/commands/version.ts +57 -44
  409. package/src/cli/eject-scripts.ts +121 -6
  410. package/src/cli/index.ts +11 -1
  411. package/src/cli/init/install.ts +70 -0
  412. package/src/cli/init/questions.ts +7 -0
  413. package/src/cli/init/scaffold.ts +459 -75
  414. package/src/cli/lazy-command.ts +37 -1
  415. package/src/cli/prepare.ts +40 -6
  416. package/src/cli/required-secrets.ts +38 -11
  417. package/src/cli/unknown-flags.ts +266 -0
  418. package/src/cli/yarn-pnp.ts +52 -0
  419. package/src/components/content/AccordionItem.astro +7 -1
  420. package/src/components/content/Card.astro +4 -3
  421. package/src/components/content/ColorItem.astro +22 -4
  422. package/src/components/content/GithubInfo.astro +2 -2
  423. package/src/components/content/Prompt.astro +25 -25
  424. package/src/components/content/Tabs.astro +3 -1
  425. package/src/components/content/Tile.astro +2 -3
  426. package/src/components/content/Tooltip.astro +57 -9
  427. package/src/components/content/content-strings.ts +34 -0
  428. package/src/components/content/diff.ts +1 -1
  429. package/src/components/content/mermaid-element.ts +13 -2
  430. package/src/components/content/prompt-markdown.ts +292 -0
  431. package/src/components/content/tooltip-id.ts +41 -0
  432. package/src/components/islands/hooks.ts +75 -3
  433. package/src/components/layout/Analytics.astro +21 -79
  434. package/src/components/layout/Banner.astro +3 -1
  435. package/src/components/layout/DiscoveryLinks.astro +69 -0
  436. package/src/components/layout/Header.astro +83 -20
  437. package/src/components/layout/LanguageSwitcher.astro +4 -1
  438. package/src/components/layout/Logo.astro +23 -2
  439. package/src/components/layout/NavSelector.astro +13 -2
  440. package/src/components/layout/NavTree.astro +12 -3
  441. package/src/components/layout/NavTreeScript.astro +17 -3
  442. package/src/components/layout/PageActions.astro +3 -3
  443. package/src/components/layout/PageFeedback.astro +11 -1
  444. package/src/components/layout/PageLayout.astro +52 -5
  445. package/src/components/layout/ReferenceLayout.astro +21 -12
  446. package/src/components/layout/RootLayout.astro +69 -43
  447. package/src/components/layout/Search.astro +30 -6
  448. package/src/components/layout/WebMcp.astro +1 -1
  449. package/src/components/layout/analytics-client.ts +101 -15
  450. package/src/components/layout/drawer-inert.ts +113 -15
  451. package/src/components/layout/dropdown-clamp.ts +105 -0
  452. package/src/components/layout/head-scripts.ts +15 -6
  453. package/src/components/layout/nav-utils.ts +17 -0
  454. package/src/components/layout/search/algolia.ts +8 -8
  455. package/src/components/layout/search/orama-cloud.ts +9 -7
  456. package/src/components/layout/search/typesense.ts +11 -17
  457. package/src/components/openapi/MessageComposer.astro +2 -2
  458. package/src/components/openapi/Playground.astro +2 -2
  459. package/src/components/openapi/playground-client.ts +79 -10
  460. package/src/core/changelog-index.ts +24 -0
  461. package/src/core/component-overrides.ts +399 -154
  462. package/src/core/config-input.ts +212 -543
  463. package/src/core/config.ts +130 -41
  464. package/src/core/custom-pages.ts +105 -0
  465. package/src/core/data.ts +32 -11
  466. package/src/core/define-components.ts +12 -9
  467. package/src/core/deployment-env.ts +18 -74
  468. package/src/core/diagnostics.ts +14 -7
  469. package/src/core/graph.ts +69 -25
  470. package/src/core/i18n-ui.ts +6 -2
  471. package/src/core/i18n.ts +17 -0
  472. package/src/core/includes.ts +156 -38
  473. package/src/core/last-modified.ts +6 -11
  474. package/src/core/links.ts +166 -2
  475. package/src/core/manifest.ts +10 -3
  476. package/src/core/navigation.ts +137 -19
  477. package/src/core/new-tab.ts +35 -0
  478. package/src/core/node-require.ts +21 -0
  479. package/src/core/project-graph.ts +42 -26
  480. package/src/core/project.ts +9 -4
  481. package/src/core/request-body.ts +61 -0
  482. package/src/core/safe-href.ts +28 -0
  483. package/src/core/safe-links.ts +68 -0
  484. package/src/core/schema.ts +531 -721
  485. package/src/core/server-features.ts +8 -9
  486. package/src/core/sources/assets.ts +47 -11
  487. package/src/core/sources/collection.ts +67 -0
  488. package/src/core/sources/contentful-rich-text.ts +285 -0
  489. package/src/core/sources/contentful.ts +173 -0
  490. package/src/core/sources/github-releases.ts +51 -1
  491. package/src/core/sources/json.ts +71 -0
  492. package/src/core/sources/lexical.ts +195 -0
  493. package/src/core/sources/lower.ts +226 -0
  494. package/src/core/sources/normalize.ts +52 -2
  495. package/src/core/sources/notion.ts +39 -28
  496. package/src/core/sources/payload.ts +135 -0
  497. package/src/core/sources/portable-text.ts +11 -16
  498. package/src/core/sources/remote.ts +226 -0
  499. package/src/core/sources/resolve.ts +104 -166
  500. package/src/core/sources/sanity.ts +16 -49
  501. package/src/core/sources/strapi-blocks.ts +124 -0
  502. package/src/core/sources/strapi.ts +191 -0
  503. package/src/core/sources/types.ts +12 -1
  504. package/src/core/types.ts +20 -1
  505. package/src/core/ui-packs/ar.ts +6 -2
  506. package/src/core/ui-packs/bg.ts +6 -2
  507. package/src/core/ui-packs/bn.ts +6 -2
  508. package/src/core/ui-packs/ca.ts +3 -1
  509. package/src/core/ui-packs/cs.ts +6 -2
  510. package/src/core/ui-packs/da.ts +6 -2
  511. package/src/core/ui-packs/de.ts +6 -2
  512. package/src/core/ui-packs/el.ts +3 -1
  513. package/src/core/ui-packs/es.ts +3 -1
  514. package/src/core/ui-packs/fa.ts +6 -2
  515. package/src/core/ui-packs/fi.ts +6 -2
  516. package/src/core/ui-packs/fr.ts +3 -1
  517. package/src/core/ui-packs/he.ts +6 -2
  518. package/src/core/ui-packs/hi.ts +6 -2
  519. package/src/core/ui-packs/hr.ts +6 -2
  520. package/src/core/ui-packs/hu.ts +6 -2
  521. package/src/core/ui-packs/id.ts +6 -2
  522. package/src/core/ui-packs/it.ts +3 -1
  523. package/src/core/ui-packs/ja.ts +3 -1
  524. package/src/core/ui-packs/ko.ts +3 -1
  525. package/src/core/ui-packs/nl.ts +6 -2
  526. package/src/core/ui-packs/no.ts +6 -2
  527. package/src/core/ui-packs/pl.ts +6 -2
  528. package/src/core/ui-packs/pt-br.ts +3 -1
  529. package/src/core/ui-packs/pt.ts +3 -1
  530. package/src/core/ui-packs/ro.ts +6 -2
  531. package/src/core/ui-packs/ru.ts +6 -2
  532. package/src/core/ui-packs/sk.ts +6 -2
  533. package/src/core/ui-packs/sr.ts +6 -2
  534. package/src/core/ui-packs/sv.ts +6 -2
  535. package/src/core/ui-packs/th.ts +3 -1
  536. package/src/core/ui-packs/tr.ts +6 -2
  537. package/src/core/ui-packs/uk.ts +6 -2
  538. package/src/core/ui-packs/vi.ts +3 -1
  539. package/src/core/ui-packs/zh-tw.ts +3 -1
  540. package/src/core/ui-packs/zh.ts +3 -1
  541. package/src/core/unrecognized-keys.ts +10 -0
  542. package/src/core/version-cut.ts +116 -8
  543. package/src/deploy/adapter-output.ts +57 -97
  544. package/src/deploy/adapters/cloudflare.ts +39 -0
  545. package/src/deploy/adapters/index.ts +41 -0
  546. package/src/deploy/adapters/netlify.ts +34 -0
  547. package/src/deploy/adapters/node.ts +34 -0
  548. package/src/deploy/adapters/registry.ts +127 -0
  549. package/src/deploy/adapters/types.ts +92 -0
  550. package/src/deploy/adapters/vercel.ts +35 -0
  551. package/src/deploy/artifacts.ts +67 -28
  552. package/src/deploy/cloudflare-negotiation.ts +179 -100
  553. package/src/deploy/function-bundle.ts +18 -3
  554. package/src/deploy/headers.ts +129 -22
  555. package/src/deploy/node-headers.ts +198 -0
  556. package/src/deploy/platforms/cloudflare.ts +312 -0
  557. package/src/deploy/platforms/index.ts +67 -0
  558. package/src/deploy/platforms/netlify.ts +52 -0
  559. package/src/deploy/platforms/node.ts +40 -0
  560. package/src/deploy/platforms/paths.ts +42 -0
  561. package/src/deploy/platforms/static.ts +29 -0
  562. package/src/deploy/platforms/types.ts +112 -0
  563. package/src/deploy/platforms/vercel.ts +193 -0
  564. package/src/deploy/redirects.ts +30 -18
  565. package/src/deploy/robots.ts +3 -3
  566. package/src/deploy/rss.ts +2 -2
  567. package/src/deploy/sitemap.ts +2 -2
  568. package/src/deploy/vercel-negotiation.ts +27 -4
  569. package/src/eval/agents.ts +32 -1
  570. package/src/eval/findings.ts +19 -11
  571. package/src/eval/report.ts +10 -2
  572. package/src/markdown/external-links.ts +65 -0
  573. package/src/markdown/include.ts +45 -27
  574. package/src/markdown/index.ts +34 -9
  575. package/src/markdown/inline-code.ts +12 -6
  576. package/src/markdown/relative-links.ts +324 -0
  577. package/src/markdown/themes.ts +3 -3
  578. package/src/migrate/migrate.ts +149 -0
  579. package/src/openapi/parse.ts +64 -16
  580. package/src/openapi/proxy.ts +62 -10
  581. package/src/openapi/references.ts +147 -147
  582. package/src/openapi/render-mdx.ts +32 -10
  583. package/src/openapi/scalar.ts +15 -13
  584. package/src/openapi/sentence.ts +14 -0
  585. package/src/openapi/source.ts +37 -21
  586. package/src/openapi/spec-dependency-error.ts +15 -0
  587. package/src/reference/asyncapi.ts +83 -0
  588. package/src/reference/graphql.ts +89 -0
  589. package/src/reference/index.ts +40 -0
  590. package/src/reference/openapi.ts +83 -0
  591. package/src/reference/options.ts +201 -0
  592. package/src/reference/scalar.ts +136 -0
  593. package/src/reference/schema.ts +88 -0
  594. package/src/registry/eject.ts +97 -42
  595. package/src/search/adapters/algolia.ts +46 -0
  596. package/src/search/adapters/flexsearch.ts +29 -0
  597. package/src/search/adapters/index.ts +39 -0
  598. package/src/search/adapters/mixedbread.ts +39 -0
  599. package/src/search/adapters/orama-cloud.ts +51 -0
  600. package/src/search/adapters/orama.ts +24 -0
  601. package/src/search/adapters/pagefind.ts +27 -0
  602. package/src/search/adapters/registry.ts +131 -0
  603. package/src/search/adapters/types.ts +46 -0
  604. package/src/search/adapters/typesense.ts +57 -0
  605. package/src/search/build.ts +33 -7
  606. package/src/search/documents.ts +6 -0
  607. package/src/search/sync/algolia.ts +12 -11
  608. package/src/search/sync/index.ts +35 -20
  609. package/src/search/sync/orama-cloud.ts +12 -9
  610. package/src/search/sync/typesense.ts +15 -13
  611. package/src/sources/contentful.ts +63 -0
  612. package/src/sources/custom.ts +38 -0
  613. package/src/sources/filesystem.ts +51 -0
  614. package/src/sources/github-releases.ts +52 -0
  615. package/src/sources/index.ts +60 -0
  616. package/src/sources/mdx-remote.ts +76 -0
  617. package/src/sources/notion.ts +63 -0
  618. package/src/sources/obsidian.ts +38 -0
  619. package/src/sources/payload.ts +60 -0
  620. package/src/sources/registry.ts +182 -0
  621. package/src/sources/sanity.ts +66 -0
  622. package/src/sources/shared.ts +52 -0
  623. package/src/sources/strapi.ts +58 -0
  624. package/src/theme/entry.ts +47 -2
  625. package/src/translate/report.ts +40 -7
  626. package/src/upgrade/upgrade.ts +499 -0
  627. package/dist/cli/chunk-12dxjqk7.js.map +0 -10
  628. package/dist/cli/chunk-196vjxp9.js.map +0 -13
  629. package/dist/cli/chunk-2mzebbbz.js +0 -69
  630. package/dist/cli/chunk-2z47ypj8.js.map +0 -11
  631. package/dist/cli/chunk-30e87n55.js +0 -108
  632. package/dist/cli/chunk-30e87n55.js.map +0 -10
  633. package/dist/cli/chunk-450a7rcr.js +0 -185
  634. package/dist/cli/chunk-450a7rcr.js.map +0 -11
  635. package/dist/cli/chunk-5n7t497w.js.map +0 -40
  636. package/dist/cli/chunk-61j18dwk.js +0 -5342
  637. package/dist/cli/chunk-61j18dwk.js.map +0 -58
  638. package/dist/cli/chunk-88by27n5.js +0 -17
  639. package/dist/cli/chunk-88by27n5.js.map +0 -10
  640. package/dist/cli/chunk-8cd8tj54.js.map +0 -34
  641. package/dist/cli/chunk-aztttvb3.js +0 -381
  642. package/dist/cli/chunk-aztttvb3.js.map +0 -12
  643. package/dist/cli/chunk-cvky9gb2.js.map +0 -11
  644. package/dist/cli/chunk-ejjx8znq.js.map +0 -15
  645. package/dist/cli/chunk-fmceyezb.js +0 -1007
  646. package/dist/cli/chunk-fmceyezb.js.map +0 -13
  647. package/dist/cli/chunk-hdm2dkd2.js.map +0 -48
  648. package/dist/cli/chunk-hs3gbh8p.js.map +0 -10
  649. package/dist/cli/chunk-jbj4qhfw.js +0 -30
  650. package/dist/cli/chunk-jbj4qhfw.js.map +0 -10
  651. package/dist/cli/chunk-mqb2ka8m.js +0 -68
  652. package/dist/cli/chunk-mqb2ka8m.js.map +0 -10
  653. package/dist/cli/chunk-mt76t7dj.js.map +0 -11
  654. package/dist/cli/chunk-q4rae3bg.js +0 -60
  655. package/dist/cli/chunk-q4rae3bg.js.map +0 -10
  656. package/dist/cli/chunk-ra1v2nc2.js +0 -35
  657. package/dist/cli/chunk-ra1v2nc2.js.map +0 -10
  658. package/dist/cli/chunk-t3tj0dgr.js.map +0 -15
  659. package/dist/cli/chunk-tqa1s0k8.js +0 -69
  660. package/dist/cli/chunk-tqa1s0k8.js.map +0 -11
  661. package/dist/cli/chunk-vh9w1sgp.js +0 -73
  662. package/dist/cli/chunk-vh9w1sgp.js.map +0 -10
  663. package/dist/cli/chunk-vkrsvbr5.js +0 -107
  664. package/dist/cli/chunk-vkrsvbr5.js.map +0 -11
  665. package/dist/cli/chunk-vrfp10qk.js +0 -81
  666. package/dist/cli/chunk-vrfp10qk.js.map +0 -10
  667. package/dist/cli/chunk-wjt80jps.js +0 -1049
  668. package/dist/cli/chunk-wjt80jps.js.map +0 -24
  669. package/docs/advanced/api-reference.mdx +0 -240
  670. package/docs/reference/cli.mdx +0 -197
  671. package/skills/blume-migrate/assets/oxfmt@0.55.0.patch +0 -20
  672. package/src/components/content/changelog-element.ts +0 -69
  673. package/src/search/providers.ts +0 -91
  674. /package/dist/cli/{chunk-3w7b2vcx.js.map → chunk-7ez8ny0t.js.map} +0 -0
  675. /package/dist/cli/{chunk-688e0dde.js.map → chunk-88cpgt6h.js.map} +0 -0
  676. /package/dist/cli/{chunk-exeeb35e.js.map → chunk-f7t03s3g.js.map} +0 -0
  677. /package/dist/cli/{chunk-ppfvdcd4.js.map → chunk-zxccj738.js.map} +0 -0
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Static metadata for the MCP tools Blume exposes. Shared by the server (which
3
+ * pairs each entry with a Zod input schema and handler) and the `.well-known`
4
+ * discovery documents, so tool names and descriptions never drift between the
5
+ * live server and its advertised capabilities.
6
+ */
7
+ export interface McpToolMeta {
8
+ annotations: {
9
+ openWorldHint: boolean;
10
+ readOnlyHint: boolean;
11
+ };
12
+ description: string;
13
+ name: string;
14
+ title: string;
15
+ }
16
+ export declare const MCP_TOOLS: McpToolMeta[];
@@ -0,0 +1,43 @@
1
+ import type { OpenApiData } from "../openapi/model.ts";
2
+ /**
3
+ * Agent-facing Markdown for the components a generated reference page is made
4
+ * of: `<Operation>`, `<ApiTagOperations>` and `<ApiOverview>`.
5
+ *
6
+ * `render-mdx.ts` builds each reference page as the operation's description in
7
+ * the body plus one of these components, deliberately: the structured UI is the
8
+ * component's job, and the prose stays Markdown so it indexes. That split is
9
+ * right for the rendered page and lossy everywhere else — `<route>.md`,
10
+ * llms-full.txt, MCP `get_page` and the Ask AI corpus all downlevel components
11
+ * to Markdown, and these three had no serializer, so an operation page reached
12
+ * an agent as its description followed by a bare tag. On a site whose reference
13
+ * is most of the corpus, that is most of the corpus: measured on one 449-page
14
+ * site, 266 pages and 266 raw `<Operation>` in llms-full.txt, so "which
15
+ * endpoint do I call?" had no answer anywhere in the agent surface.
16
+ *
17
+ * Each serializer emits what its component renders and no more: the endpoint
18
+ * in the spec kind's own notation ({@link operationSignature}), the version and
19
+ * addresses the overview shows ({@link specAddresses}), the linked list a tag
20
+ * section shows. Parameters, schemas and responses are deliberately left out:
21
+ * those are `operation-model.ts` plus each component's own preparation, and a
22
+ * second implementation here would be free to disagree with the page. The
23
+ * endpoint and what it does is the part that was missing altogether.
24
+ *
25
+ * `specs` is the parsed `blume:openapi` data — empty when the project has no
26
+ * API reference, in which case every serializer declines.
27
+ */
28
+ export declare const openapiComponentSerializers: (specs: OpenApiData) => {
29
+ /**
30
+ * The spec-level block at the top of the overview page: its version and
31
+ * where the API lives. The tag sections that follow are real Markdown
32
+ * headings over `<ApiTagOperations>`, so they downlevel on their own.
33
+ */
34
+ ApiOverview: ({ props }: import("./component-markdown.ts").ComponentMarkdownContext) => string | null;
35
+ /** One tag's operations, mirroring the list the rendered page shows. */
36
+ ApiTagOperations: ({ props }: import("./component-markdown.ts").ComponentMarkdownContext) => string | null;
37
+ /**
38
+ * One operation. Declines when the spec carries no such key — Blume's own
39
+ * fallback, which leaves the JSX visible rather than publishing a page that
40
+ * silently lost its endpoint.
41
+ */
42
+ Operation: ({ props }: import("./component-markdown.ts").ComponentMarkdownContext) => string | null;
43
+ };
@@ -0,0 +1,26 @@
1
+ import type { BlumeProject } from "../core/project-graph.ts";
2
+ /**
3
+ * Relative page links on the agent surfaces — the `.md`/`.mdx` mirrors,
4
+ * llms-full.txt, MCP `get_page` and `resources/read`. An agent resolves
5
+ * `[Install](./install)` against the URL it fetched (`/guides.md`), so the
6
+ * link lands on `/install`; the rendered page rewrites it to the route it
7
+ * means (`markdown/relative-links.ts`), and the Markdown an agent reads gets
8
+ * the same rewrite from the same resolver (`resolveRelativeHref`), so both
9
+ * point at one page. Inline links and reference definitions are rewritten;
10
+ * fenced and inline code, images, and anything not a relative page link are
11
+ * left as written.
12
+ */
13
+ /** The page a Markdown text was written for. */
14
+ export interface LinkedPage {
15
+ route: string;
16
+ sourcePath?: string;
17
+ }
18
+ /** Rewrite a page's relative page links to the routes they mean. */
19
+ export type RelativeLinkRewriter = (text: string, page: LinkedPage) => string;
20
+ /**
21
+ * Build the rewriter for a project: the file → route lookup a `.md`/`.mdx`
22
+ * link resolves through is built once. A file shared by every locale
23
+ * publishes once per locale, and the default locale's route stands for it;
24
+ * fallback copies render another locale's file, so they never stand for one.
25
+ */
26
+ export declare const relativeLinkRewriter: (project: BlumeProject) => RelativeLinkRewriter;
@@ -0,0 +1,15 @@
1
+ import type { BlumeProject } from "../core/project-graph.ts";
2
+ /**
3
+ * Every serializer a project brings to a downlevel pass, layered once for all
4
+ * the agent surfaces (`<route>.md`, llms-full.txt, the search and Ask AI
5
+ * corpora): the built-in families that read project data — examples, then the
6
+ * API reference — under the user's `agents.markdownComponents`, which is spread
7
+ * last so an entry of the same name still wins. One layering, so a new family
8
+ * or a new surface cannot leave one consumer printing raw JSX.
9
+ */
10
+ export declare const projectComponentSerializers: (project: Pick<BlumeProject, "config" | "examples" | "sources">) => {
11
+ ApiOverview: ({ props }: import("./component-markdown.ts").ComponentMarkdownContext) => string | null;
12
+ ApiTagOperations: ({ props }: import("./component-markdown.ts").ComponentMarkdownContext) => string | null;
13
+ Operation: ({ props }: import("./component-markdown.ts").ComponentMarkdownContext) => string | null;
14
+ Component: ({ props }: import("./component-markdown.ts").ComponentMarkdownContext) => string | null;
15
+ };
@@ -0,0 +1,42 @@
1
+ import type { ResolvedConfig } from "../core/schema.ts";
2
+ /**
3
+ * Agent Skills discovery (Cloudflare's Agent Skills Discovery RFC v0.2.0):
4
+ * the skills a site publishes are enumerated in an index at
5
+ * `/.well-known/agent-skills/index.json`, each entry pointing at its artifact
6
+ * with a SHA-256 digest. A skill that is only a `SKILL.md` publishes the file
7
+ * verbatim (`type: "skill-md"`); a skill with supporting resources (scripts,
8
+ * references, assets) is bundled into a deterministic `.tar.gz`
9
+ * (`type: "archive"`) so its relative references resolve after unpacking.
10
+ */
11
+ export declare const AGENT_SKILLS_DIR = "/.well-known/agent-skills";
12
+ export declare const AGENT_SKILLS_INDEX_PATH = "/.well-known/agent-skills/index.json";
13
+ /** One publishable skill artifact plus its index entry. */
14
+ export interface SkillArtifact {
15
+ /** Raw bytes to publish (the digest is computed over exactly these). */
16
+ content: Uint8Array;
17
+ description: string;
18
+ /** `sha256:{hex}` digest of `content`. */
19
+ digest: string;
20
+ name: string;
21
+ /** Path under the agent-skills dir: `{name}/SKILL.md` or `{name}.tar.gz`. */
22
+ path: string;
23
+ type: "archive" | "skill-md";
24
+ }
25
+ export interface CollectedSkills {
26
+ skills: SkillArtifact[];
27
+ /** Human-readable reasons for anything skipped. */
28
+ warnings: string[];
29
+ }
30
+ /**
31
+ * Collect the publishable skills from a directory whose subdirectories each
32
+ * hold a `SKILL.md` (the layout `npx skills add` consumes). Subdirectories
33
+ * without one are ignored silently — the directory may hold other assets —
34
+ * while a present-but-invalid skill earns a warning so it isn't dropped
35
+ * behind the publisher's back.
36
+ */
37
+ export declare const collectSkills: (dir: string) => Promise<CollectedSkills>;
38
+ /**
39
+ * The discovery index (v0.2.0 schema). Artifact URLs are path-absolute under
40
+ * `deployment.base` — the RFC resolves them against the index origin.
41
+ */
42
+ export declare const buildSkillsIndex: (skills: readonly SkillArtifact[], config: ResolvedConfig) => string;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * `.tar.gz` writer for agent-skill archives, on nanotar's ustar writer.
3
+ * Deterministic by construction — fixed mtime/uid/gid/owner attrs,
4
+ * caller-ordered entries, and Node's gzip header carries no timestamp — so a
5
+ * skill's archive digest only changes when its content does. That holds per
6
+ * machine: the tar bytes are portable, but zlib's compressed stream differs
7
+ * across architectures, so gzip-layer digests are not comparable across
8
+ * platforms.
9
+ */
10
+ /** One regular file to archive. Paths are `/`-separated, relative, no `..`. */
11
+ export interface TarEntry {
12
+ /** Raw file bytes. */
13
+ content: Uint8Array;
14
+ /** Preserve the owner-execute bit (e.g. a skill's scripts). */
15
+ executable?: boolean;
16
+ /** Archive-relative path, e.g. `SKILL.md` or `references/FORMS.md`. */
17
+ path: string;
18
+ }
19
+ /**
20
+ * Build a gzipped ustar archive of the given files, in the given order. Paths
21
+ * longer than the ustar `name` field or escaping the archive root throw to
22
+ * surface a programming error — nanotar would silently truncate an oversized
23
+ * name into a corrupt archive, so the validation stays here.
24
+ */
25
+ export declare const buildTarGz: (entries: readonly TarEntry[]) => Uint8Array;
@@ -0,0 +1,17 @@
1
+ /** The audience an output surface serves — the component's two `for` values. */
2
+ export type VisibilityAudience = "agents" | "web";
3
+ /**
4
+ * Resolve `<Visibility>` blocks for one audience: blocks addressed to the
5
+ * other audience are removed entirely and blocks addressed to `audience` are
6
+ * unwrapped (tags dropped, body kept), matching what the Astro component
7
+ * renders on the web. Other `for` values (the component's default) are left
8
+ * untouched, and markdown with no matching blocks is returned byte-identical,
9
+ * so raw sources stay raw.
10
+ */
11
+ export declare const applyAudienceVisibility: (markdown: string, audience: VisibilityAudience) => string;
12
+ /**
13
+ * Resolve `<Visibility>` blocks for agent-facing Markdown (llms-full.txt, the
14
+ * `.md`/`.mdx` mirrors, MCP tools, Ask AI grounding): `for="web"` content is
15
+ * removed and `for="agents"` content is unwrapped.
16
+ */
17
+ export declare const applyAgentVisibility: (markdown: string) => string;
@@ -0,0 +1,16 @@
1
+ import type { ResolvedConfig } from "../core/schema.ts";
2
+ /**
3
+ * Web Bot Auth (IETF `webbotauth` WG): an org that runs agents publishes the
4
+ * agents' HTTP Message Signature public keys in a JWKS at a well-known path
5
+ * on its domain; sites receiving the signed requests fetch it to verify them.
6
+ * Blume publishes the directory from `agents.webBotAuth.keys` — the schema admits
7
+ * public keys only, so the site can never leak signing credentials.
8
+ */
9
+ /** Well-known path (draft-meunier-http-message-signatures-directory). */
10
+ export declare const SIGNATURES_DIRECTORY_PATH = "/.well-known/http-message-signatures-directory";
11
+ /** The directory's registered media type — extensionless, so static hosts
12
+ * need an explicit Content-Type rule (see `deploy/headers.ts` and the Vercel
13
+ * `overrides` injection) to serve anything better than octet-stream. */
14
+ export declare const SIGNATURES_DIRECTORY_TYPE = "application/http-message-signatures-directory+json";
15
+ /** The JWKS document to publish, or null when no keys are configured. */
16
+ export declare const buildSignaturesDirectory: (config: ResolvedConfig) => string | null;
@@ -0,0 +1,35 @@
1
+ import { z } from "zod";
2
+ import type { AdapterDescriptor } from "../core/adapter.ts";
3
+ import type { HeadScript } from "./head.ts";
4
+ /** Options for {@link adobe}. */
5
+ export interface AdobeOptions {
6
+ /**
7
+ * The Launch (Adobe Experience Platform Tags) embed script URL for the
8
+ * environment to load, e.g. `https://assets.adobedtm.com/…/launch-….min.js`.
9
+ */
10
+ url: string;
11
+ }
12
+ export declare const adobeOptionsSchema: z.ZodObject<{
13
+ url: z.ZodString;
14
+ }, z.core.$strict>;
15
+ export type AdobeAdapter = AdapterDescriptor<"adobe", AdobeOptions>;
16
+ export declare const adobeAdapterSchema: z.ZodObject<{
17
+ kind: z.ZodLiteral<"adobe">;
18
+ options: z.ZodObject<{
19
+ url: z.ZodString;
20
+ }, z.core.$strict>;
21
+ requiredSecrets: z.ZodArray<z.ZodString>;
22
+ runtimeDeps: z.ZodArray<z.ZodString>;
23
+ }, z.core.$strict>;
24
+ /**
25
+ * Adobe Analytics through a Launch property: Blume loads the environment's
26
+ * embed script, and the property's own rules decide what to track. Copy the
27
+ * URL from the environment's install instructions in Data Collection.
28
+ */
29
+ export declare const adobe: (options: AdobeOptions) => AdobeAdapter;
30
+ /**
31
+ * The async embed tag, as Launch's install instructions render it. Pageviews
32
+ * on client-router navigations are the property's business: give it a rule on
33
+ * history changes (or `_satellite.track` from a `script()` adapter).
34
+ */
35
+ export declare const adobeHead: (options: AdobeOptions) => HeadScript[];
@@ -0,0 +1,50 @@
1
+ import { z } from "zod";
2
+ import type { AdapterDescriptor, JsonValue } from "../core/adapter.ts";
3
+ import type { HeadScript } from "./head.ts";
4
+ /** The options {@link amplitude} maps itself. */
5
+ export interface AmplitudeNamedOptions {
6
+ /** Project API key. */
7
+ key: string;
8
+ }
9
+ /**
10
+ * Options for {@link amplitude}: the key plus any other Browser SDK
11
+ * `amplitude.init` option, forwarded verbatim (`serverZone`, `autocapture`,
12
+ * `defaultTracking`, …). JSON values only.
13
+ */
14
+ export type AmplitudeOptions = AmplitudeNamedOptions & {
15
+ [option: string]: JsonValue;
16
+ };
17
+ export declare const amplitudeOptionsSchema: z.ZodObject<{
18
+ key: z.ZodString;
19
+ }, z.core.$catchall<z.ZodJSONSchema>>;
20
+ export type AmplitudeAdapter = AdapterDescriptor<"amplitude", AmplitudeOptions>;
21
+ export declare const amplitudeAdapterSchema: z.ZodObject<{
22
+ kind: z.ZodLiteral<"amplitude">;
23
+ options: z.ZodObject<{
24
+ key: z.ZodString;
25
+ }, z.core.$catchall<z.ZodJSONSchema>>;
26
+ requiredSecrets: z.ZodArray<z.ZodString>;
27
+ runtimeDeps: z.ZodArray<z.ZodString>;
28
+ }, z.core.$strict>;
29
+ /**
30
+ * Amplitude product analytics through the Browser SDK's script loader. The
31
+ * project API key is public — it's what every browser event carries.
32
+ */
33
+ export declare const amplitude: (options: AmplitudeOptions) => AmplitudeAdapter;
34
+ /** The script loader's CDN; the key picks the bundle. */
35
+ export declare const AMPLITUDE_SCRIPT_ORIGIN = "https://cdn.amplitude.com/script/";
36
+ /**
37
+ * The init options the dashboard snippet ships with. `autocapture` covers page
38
+ * views, sessions, and history changes, so client-router navigations count
39
+ * without any extra hook; a passthrough option overrides either.
40
+ */
41
+ export declare const AMPLITUDE_DEFAULT_INIT: {
42
+ autocapture: boolean;
43
+ fetchRemoteConfig: boolean;
44
+ };
45
+ /**
46
+ * The two tags from the dashboard's install snippet: the keyed SDK bundle
47
+ * (synchronous, so `window.amplitude` exists for the next tag) and the init
48
+ * call, with `key` mapped and everything else forwarded to `init` verbatim.
49
+ */
50
+ export declare const amplitudeHead: (options: AmplitudeOptions) => HeadScript[];
@@ -0,0 +1,31 @@
1
+ import { z } from "zod";
2
+ import type { AdapterDescriptor } from "../core/adapter.ts";
3
+ import type { HeadScript } from "./head.ts";
4
+ /** Options for {@link clarity}. */
5
+ export interface ClarityOptions {
6
+ /** Project ID, from the project's tracking code in the Clarity dashboard. */
7
+ id: string;
8
+ }
9
+ export declare const clarityOptionsSchema: z.ZodObject<{
10
+ id: z.ZodString;
11
+ }, z.core.$strict>;
12
+ export type ClarityAdapter = AdapterDescriptor<"clarity", ClarityOptions>;
13
+ export declare const clarityAdapterSchema: z.ZodObject<{
14
+ kind: z.ZodLiteral<"clarity">;
15
+ options: z.ZodObject<{
16
+ id: z.ZodString;
17
+ }, z.core.$strict>;
18
+ requiredSecrets: z.ZodArray<z.ZodString>;
19
+ runtimeDeps: z.ZodArray<z.ZodString>;
20
+ }, z.core.$strict>;
21
+ /**
22
+ * Microsoft Clarity session recordings and heatmaps. The project ID is public;
23
+ * it only picks the project the tag reports to.
24
+ */
25
+ export declare const clarity: (options: ClarityOptions) => ClarityAdapter;
26
+ /**
27
+ * The dashboard's tracking code: a `window.clarity` queue and the async tag
28
+ * load. Clarity follows history changes itself, so client-router navigations
29
+ * need no extra hook.
30
+ */
31
+ export declare const clarityHead: (options: ClarityOptions) => HeadScript[];
@@ -0,0 +1,29 @@
1
+ import { z } from "zod";
2
+ import type { AdapterDescriptor } from "../core/adapter.ts";
3
+ import type { HeadScript } from "./head.ts";
4
+ /** Options for {@link clearbit}. */
5
+ export interface ClearbitOptions {
6
+ /** Publishable API key (`pk_…`). */
7
+ key: string;
8
+ }
9
+ export declare const clearbitOptionsSchema: z.ZodObject<{
10
+ key: z.ZodString;
11
+ }, z.core.$strict>;
12
+ export type ClearbitAdapter = AdapterDescriptor<"clearbit", ClearbitOptions>;
13
+ export declare const clearbitAdapterSchema: z.ZodObject<{
14
+ kind: z.ZodLiteral<"clearbit">;
15
+ options: z.ZodObject<{
16
+ key: z.ZodString;
17
+ }, z.core.$strict>;
18
+ requiredSecrets: z.ZodArray<z.ZodString>;
19
+ runtimeDeps: z.ZodArray<z.ZodString>;
20
+ }, z.core.$strict>;
21
+ /**
22
+ * Clearbit's website tag (Reveal and the Clearbit tags it manages). The
23
+ * publishable key is meant for the browser.
24
+ */
25
+ export declare const clearbit: (options: ClearbitOptions) => ClearbitAdapter;
26
+ /** The tag origin; the key picks the tags bundle. */
27
+ export declare const CLEARBIT_TAG_ORIGIN = "https://tag.clearbitscripts.com/v1/";
28
+ /** The tag as Clearbit's install snippet renders it. */
29
+ export declare const clearbitHead: (options: ClearbitOptions) => HeadScript[];
@@ -0,0 +1,41 @@
1
+ import { z } from "zod";
2
+ import type { AdapterDescriptor, JsonValue } from "../core/adapter.ts";
3
+ import type { HeadScript } from "./head.ts";
4
+ /** The beacon script Cloudflare's dashboard snippet loads. */
5
+ export declare const CLOUDFLARE_BEACON_SRC = "https://static.cloudflareinsights.com/beacon.min.js";
6
+ /** The options {@link cloudflare} maps itself. */
7
+ export interface CloudflareNamedOptions {
8
+ /** Site token from the Web Analytics JS snippet (`data-cf-beacon`). */
9
+ token: string;
10
+ }
11
+ /**
12
+ * Options for {@link cloudflare}: the token plus any other `data-cf-beacon`
13
+ * setting, forwarded verbatim (`spa`, …). JSON values only.
14
+ */
15
+ export type CloudflareOptions = CloudflareNamedOptions & {
16
+ [option: string]: JsonValue;
17
+ };
18
+ export declare const cloudflareOptionsSchema: z.ZodObject<{
19
+ token: z.ZodString;
20
+ }, z.core.$catchall<z.ZodJSONSchema>>;
21
+ export type CloudflareAdapter = AdapterDescriptor<"cloudflare", CloudflareOptions>;
22
+ export declare const cloudflareAdapterSchema: z.ZodObject<{
23
+ kind: z.ZodLiteral<"cloudflare">;
24
+ options: z.ZodObject<{
25
+ token: z.ZodString;
26
+ }, z.core.$catchall<z.ZodJSONSchema>>;
27
+ requiredSecrets: z.ZodArray<z.ZodString>;
28
+ runtimeDeps: z.ZodArray<z.ZodString>;
29
+ }, z.core.$strict>;
30
+ /**
31
+ * Cloudflare Web Analytics in manual (JS snippet) mode, for a site Cloudflare
32
+ * doesn't proxy. A proxied zone with automatic RUM injection on needs no
33
+ * adapter at all — listing one there would count every pageview twice.
34
+ */
35
+ export declare const cloudflare: (options: CloudflareOptions) => CloudflareAdapter;
36
+ /**
37
+ * The beacon tag exactly as the dashboard's snippet renders it, with the whole
38
+ * option object as its `data-cf-beacon` JSON. The beacon tracks history
39
+ * changes itself, so client-router navigations need no extra hook.
40
+ */
41
+ export declare const cloudflareHead: (options: CloudflareOptions) => HeadScript[];
@@ -0,0 +1,41 @@
1
+ import { z } from "zod";
2
+ import type { AdapterDescriptor } from "../core/adapter.ts";
3
+ import type { HeadScript } from "./head.ts";
4
+ /** The script Fathom's dashboard snippet loads. */
5
+ export declare const FATHOM_SCRIPT_SRC = "https://cdn.usefathom.com/script.js";
6
+ /** The options {@link fathom} maps itself. */
7
+ export interface FathomNamedOptions {
8
+ /** Site ID, from the site's script settings. */
9
+ site: string;
10
+ }
11
+ /**
12
+ * Options for {@link fathom}: the site ID plus any other script setting,
13
+ * forwarded as a `data-` attribute on the tag (`spa` → `data-spa`,
14
+ * `"honor-dnt"` → `data-honor-dnt`, `"excluded-domains"`, `canonical`, …).
15
+ */
16
+ export type FathomOptions = FathomNamedOptions & {
17
+ [setting: string]: string;
18
+ };
19
+ export declare const fathomOptionsSchema: z.ZodObject<{
20
+ site: z.ZodString;
21
+ }, z.core.$catchall<z.ZodString>>;
22
+ export type FathomAdapter = AdapterDescriptor<"fathom", FathomOptions>;
23
+ export declare const fathomAdapterSchema: z.ZodObject<{
24
+ kind: z.ZodLiteral<"fathom">;
25
+ options: z.ZodObject<{
26
+ site: z.ZodString;
27
+ }, z.core.$catchall<z.ZodString>>;
28
+ requiredSecrets: z.ZodArray<z.ZodString>;
29
+ runtimeDeps: z.ZodArray<z.ZodString>;
30
+ }, z.core.$strict>;
31
+ /**
32
+ * Fathom Analytics. The site ID is public — it's in the tag on every page.
33
+ */
34
+ export declare const fathom: (options: FathomOptions) => FathomAdapter;
35
+ /**
36
+ * The deferred tag from the dashboard, with `site` as `data-site` and every
37
+ * other option as its own `data-` attribute. Fathom only tracks history
38
+ * changes when the tag opts in, so `spa` defaults to `"auto"` — Blume's
39
+ * client router navigates without full loads — and an explicit `spa` wins.
40
+ */
41
+ export declare const fathomHead: (options: FathomOptions) => HeadScript[];
@@ -0,0 +1,44 @@
1
+ import { z } from "zod";
2
+ import type { AdapterDescriptor, JsonValue } from "../core/adapter.ts";
3
+ import type { HeadScript } from "./head.ts";
4
+ /** The options {@link googleAnalytics} maps itself. */
5
+ export interface GoogleAnalyticsNamedOptions {
6
+ /** Measurement ID of the GA4 web data stream (`G-…`). */
7
+ id: string;
8
+ }
9
+ /**
10
+ * Options for {@link googleAnalytics}: the measurement ID plus any other
11
+ * `gtag('config', …)` parameter, forwarded verbatim (`send_page_view`,
12
+ * `anonymize_ip`, `cookie_domain`, `debug_mode`, …). JSON values only.
13
+ */
14
+ export type GoogleAnalyticsOptions = GoogleAnalyticsNamedOptions & {
15
+ [parameter: string]: JsonValue;
16
+ };
17
+ export declare const googleAnalyticsOptionsSchema: z.ZodObject<{
18
+ id: z.ZodString;
19
+ }, z.core.$catchall<z.ZodJSONSchema>>;
20
+ export type GoogleAnalyticsAdapter = AdapterDescriptor<"google-analytics", GoogleAnalyticsOptions>;
21
+ export declare const googleAnalyticsAdapterSchema: z.ZodObject<{
22
+ kind: z.ZodLiteral<"google-analytics">;
23
+ options: z.ZodObject<{
24
+ id: z.ZodString;
25
+ }, z.core.$catchall<z.ZodJSONSchema>>;
26
+ requiredSecrets: z.ZodArray<z.ZodString>;
27
+ runtimeDeps: z.ZodArray<z.ZodString>;
28
+ }, z.core.$strict>;
29
+ /**
30
+ * Google Analytics 4 through the Google tag (`gtag.js`). The measurement ID is
31
+ * public; it names the data stream the tag reports to.
32
+ */
33
+ export declare const googleAnalytics: (options: GoogleAnalyticsOptions) => GoogleAnalyticsAdapter;
34
+ /** The Google tag loader; the measurement ID travels in its query string. */
35
+ export declare const GOOGLE_TAG_SRC = "https://www.googletagmanager.com/gtag/js";
36
+ /**
37
+ * The two tags from the data stream's install instructions: the async loader
38
+ * and the `dataLayer` bootstrap with the `config` call. Extra options ride on
39
+ * the `config` call, and it is emitted bare when there are none, exactly as
40
+ * the instructions print it. GA4's enhanced measurement counts history
41
+ * changes as page views by default, so client-router navigations need no
42
+ * extra hook here.
43
+ */
44
+ export declare const googleAnalyticsHead: (options: GoogleAnalyticsOptions) => HeadScript[];
@@ -0,0 +1,40 @@
1
+ import { z } from "zod";
2
+ import type { AdapterDescriptor } from "../core/adapter.ts";
3
+ import type { HeadScript } from "./head.ts";
4
+ /** Options for {@link googleTagManager}. */
5
+ export interface GoogleTagManagerOptions {
6
+ /** Name of the data layer global the container reads. Defaults to `dataLayer`. */
7
+ dataLayer?: string;
8
+ /** Container ID (`GTM-…`). */
9
+ id: string;
10
+ }
11
+ export declare const googleTagManagerOptionsSchema: z.ZodObject<{
12
+ dataLayer: z.ZodOptional<z.ZodString>;
13
+ id: z.ZodString;
14
+ }, z.core.$strict>;
15
+ export type GoogleTagManagerAdapter = AdapterDescriptor<"google-tag-manager", GoogleTagManagerOptions>;
16
+ export declare const googleTagManagerAdapterSchema: z.ZodObject<{
17
+ kind: z.ZodLiteral<"google-tag-manager">;
18
+ options: z.ZodObject<{
19
+ dataLayer: z.ZodOptional<z.ZodString>;
20
+ id: z.ZodString;
21
+ }, z.core.$strict>;
22
+ requiredSecrets: z.ZodArray<z.ZodString>;
23
+ runtimeDeps: z.ZodArray<z.ZodString>;
24
+ }, z.core.$strict>;
25
+ /**
26
+ * Google Tag Manager. Blume loads the container; which tags fire, and on what,
27
+ * is the container's configuration. The container ID is public.
28
+ */
29
+ export declare const googleTagManager: (options: GoogleTagManagerOptions) => GoogleTagManagerAdapter;
30
+ /**
31
+ * The container snippet from the workspace's install instructions (the
32
+ * `<head>` half; the `<noscript>` iframe is for browsers without JavaScript,
33
+ * which never run analytics anyway). Client-router navigations reach the
34
+ * container as history changes — fire pageview tags from a History Change
35
+ * trigger rather than the page-load one. The snippet also keeps a reference
36
+ * to its data layer on `window.__blumeGtmLayer`, so `track()` pushes custom
37
+ * events into the layer this container reads rather than the default
38
+ * `dataLayer`.
39
+ */
40
+ export declare const googleTagManagerHead: (options: GoogleTagManagerOptions) => HeadScript[];
@@ -0,0 +1,30 @@
1
+ import type { AnalyticsAdapter } from "./schema.ts";
2
+ import type { VercelOptions } from "./vercel.ts";
3
+ /** One `<script>` tag an adapter emits into `<head>`. */
4
+ export interface HeadScript {
5
+ /**
6
+ * Attributes on the tag, including `src` for an external script. `true`
7
+ * renders a bare boolean attribute (`async`, `defer`).
8
+ */
9
+ attributes: Record<string, string | boolean>;
10
+ /** Inline body, or `null` for an external script. */
11
+ content: string | null;
12
+ }
13
+ /**
14
+ * One thing `Analytics.astro` renders, in the adapters' declared order. Vercel
15
+ * is the one adapter that renders a component rather than a tag: the official
16
+ * component injects the first-party script and resolves the deployment's base
17
+ * path itself, so it travels as its props.
18
+ */
19
+ export type HeadNode = (HeadScript & {
20
+ type: "script";
21
+ }) | {
22
+ props: VercelOptions;
23
+ type: "vercel";
24
+ };
25
+ /**
26
+ * Map the configured adapters to what `Analytics.astro` renders, in declared
27
+ * order. A second `vercel()` is dropped — two copies of the component would
28
+ * count every pageview twice — so the first one keeps its position.
29
+ */
30
+ export declare const analyticsHead: (adapters: AnalyticsAdapter[]) => HeadNode[];
@@ -0,0 +1,40 @@
1
+ import { z } from "zod";
2
+ import type { AdapterDescriptor, JsonValue } from "../core/adapter.ts";
3
+ import type { HeadScript } from "./head.ts";
4
+ /** The options {@link heap} maps itself. */
5
+ export interface HeapNamedOptions {
6
+ /** App ID (the environment ID), from the project's install settings. */
7
+ id: string;
8
+ }
9
+ /**
10
+ * Options for {@link heap}: the app ID plus any other `heap.load` config
11
+ * option, forwarded verbatim (`disableTextCapture`, `secureCookie`, …). JSON
12
+ * values only.
13
+ */
14
+ export type HeapOptions = HeapNamedOptions & {
15
+ [option: string]: JsonValue;
16
+ };
17
+ export declare const heapOptionsSchema: z.ZodObject<{
18
+ id: z.ZodString;
19
+ }, z.core.$catchall<z.ZodJSONSchema>>;
20
+ export type HeapAdapter = AdapterDescriptor<"heap", HeapOptions>;
21
+ export declare const heapAdapterSchema: z.ZodObject<{
22
+ kind: z.ZodLiteral<"heap">;
23
+ options: z.ZodObject<{
24
+ id: z.ZodString;
25
+ }, z.core.$catchall<z.ZodJSONSchema>>;
26
+ requiredSecrets: z.ZodArray<z.ZodString>;
27
+ runtimeDeps: z.ZodArray<z.ZodString>;
28
+ }, z.core.$strict>;
29
+ /**
30
+ * Heap autocapture analytics. The app ID is public — the tag carries it on
31
+ * every page.
32
+ */
33
+ export declare const heap: (options: HeapOptions) => HeapAdapter;
34
+ /**
35
+ * The loader plus `heap.load` with `id` mapped and everything else forwarded
36
+ * as the config object; the object is left off when there is nothing to pass,
37
+ * as the install snippet prints it. Heap autocaptures history changes as
38
+ * pageviews, so client-router navigations need no extra hook.
39
+ */
40
+ export declare const heapHead: (options: HeapOptions) => HeadScript[];
@@ -0,0 +1,44 @@
1
+ import { z } from "zod";
2
+ import type { AdapterDescriptor, JsonValue } from "../core/adapter.ts";
3
+ import type { HeadScript } from "./head.ts";
4
+ /** The events API host `hightouch()` uses when `host` is unset. */
5
+ export declare const HIGHTOUCH_DEFAULT_HOST = "us-east-1.hightouch-events.com";
6
+ /** The options {@link hightouch} maps itself. */
7
+ export interface HightouchNamedOptions {
8
+ /** Events API host, without a scheme. Defaults to the US East region. */
9
+ host?: string;
10
+ /** Write key of the event source. */
11
+ key: string;
12
+ }
13
+ /**
14
+ * Options for {@link hightouch}: the named options plus any other
15
+ * `htevents.load` option, forwarded verbatim. JSON values only.
16
+ */
17
+ export type HightouchOptions = HightouchNamedOptions & {
18
+ [option: string]: JsonValue;
19
+ };
20
+ export declare const hightouchOptionsSchema: z.ZodObject<{
21
+ host: z.ZodOptional<z.ZodString>;
22
+ key: z.ZodString;
23
+ }, z.core.$catchall<z.ZodJSONSchema>>;
24
+ export type HightouchAdapter = AdapterDescriptor<"hightouch", HightouchOptions>;
25
+ export declare const hightouchAdapterSchema: z.ZodObject<{
26
+ kind: z.ZodLiteral<"hightouch">;
27
+ options: z.ZodObject<{
28
+ host: z.ZodOptional<z.ZodString>;
29
+ key: z.ZodString;
30
+ }, z.core.$catchall<z.ZodJSONSchema>>;
31
+ requiredSecrets: z.ZodArray<z.ZodString>;
32
+ runtimeDeps: z.ZodArray<z.ZodString>;
33
+ }, z.core.$strict>;
34
+ /**
35
+ * Hightouch Events. The write key is meant for the browser — it identifies
36
+ * the event source the SDK reports to.
37
+ */
38
+ export declare const hightouch: (options: HightouchOptions) => HightouchAdapter;
39
+ /**
40
+ * The loader with `key` mapped to the write key and `host` to `apiHost`;
41
+ * everything else lands in the load options verbatim, after the mapped host
42
+ * so a raw `apiHost` still wins.
43
+ */
44
+ export declare const hightouchHead: (options: HightouchOptions) => HeadScript[];