blume 2.1.1 → 2.1.2

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 (171) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cli/{chunk-ncj7w596.js → chunk-0pmb4tr4.js} +22 -18
  3. package/dist/cli/{chunk-ncj7w596.js.map → chunk-0pmb4tr4.js.map} +3 -3
  4. package/dist/cli/{chunk-nq1d20w2.js → chunk-0w6hs479.js} +15 -15
  5. package/dist/cli/{chunk-ehweg4fr.js → chunk-124fvmzq.js} +1031 -903
  6. package/dist/cli/{chunk-ehweg4fr.js.map → chunk-124fvmzq.js.map} +20 -18
  7. package/dist/cli/{chunk-kma9f6sf.js → chunk-1f882900.js} +2 -2
  8. package/dist/cli/{chunk-e8xw9qkh.js → chunk-297ajdcv.js} +4 -4
  9. package/dist/cli/{chunk-e6atmn4h.js → chunk-32khwcb6.js} +7 -7
  10. package/dist/cli/{chunk-073rdvgb.js → chunk-36bxs9c7.js} +16 -16
  11. package/dist/cli/{chunk-mrcccgnh.js → chunk-53jqw8z0.js} +3 -3
  12. package/dist/cli/{chunk-ft9vfys6.js → chunk-58bt3hag.js} +4 -4
  13. package/dist/cli/{chunk-sds923fa.js → chunk-5cmts6dv.js} +3 -3
  14. package/dist/cli/{chunk-cfyg47zg.js → chunk-60hz265r.js} +4 -4
  15. package/dist/cli/{chunk-j134vrp2.js → chunk-74wfhv79.js} +1 -1
  16. package/dist/cli/{chunk-nrns10mj.js → chunk-9qzgg6mj.js} +3 -3
  17. package/dist/cli/{chunk-tphac74f.js → chunk-a57yh0h9.js} +5 -5
  18. package/dist/cli/{chunk-hebn0tpx.js → chunk-ave1wcbr.js} +1 -1
  19. package/dist/cli/{chunk-htrwgabr.js → chunk-bqxaqn5p.js} +6 -6
  20. package/dist/cli/{chunk-5vjtgs6e.js → chunk-bxwhtvw8.js} +5 -5
  21. package/dist/cli/{chunk-66w9j7p6.js → chunk-ckrcm08h.js} +5 -3
  22. package/dist/cli/{chunk-66w9j7p6.js.map → chunk-ckrcm08h.js.map} +3 -3
  23. package/dist/cli/{chunk-n0v7m8ry.js → chunk-desvm72z.js} +3 -3
  24. package/dist/cli/{chunk-3v3ffbrj.js → chunk-dhwtqnnd.js} +2 -2
  25. package/dist/cli/{chunk-gb420vvz.js → chunk-dpy8qdjf.js} +7 -4
  26. package/dist/cli/chunk-dpy8qdjf.js.map +17 -0
  27. package/dist/cli/{chunk-c1y538kd.js → chunk-dqhg54mr.js} +1 -1
  28. package/dist/cli/{chunk-42t4jxdx.js → chunk-dv2z0rzf.js} +1 -1
  29. package/dist/cli/{chunk-cm89scdv.js → chunk-es8h0v3j.js} +9 -11
  30. package/dist/cli/{chunk-cm89scdv.js.map → chunk-es8h0v3j.js.map} +3 -3
  31. package/dist/cli/{chunk-hx3xqnk9.js → chunk-gfc5fqvf.js} +14 -14
  32. package/dist/cli/{chunk-7ppf1rva.js → chunk-gxtg6ed2.js} +16 -16
  33. package/dist/cli/{chunk-8y2kmjv8.js → chunk-hvcxng5f.js} +6 -6
  34. package/dist/cli/{chunk-54ztw1nj.js → chunk-j1x92mx9.js} +1 -1
  35. package/dist/cli/{chunk-313vnn40.js → chunk-k3gr1nm9.js} +11 -9
  36. package/dist/cli/chunk-k3gr1nm9.js.map +10 -0
  37. package/dist/cli/{chunk-c887fj0s.js → chunk-kdpzw38a.js} +2 -2
  38. package/dist/cli/{chunk-t2m5j4pr.js → chunk-ms9z66nz.js} +2 -2
  39. package/dist/cli/{chunk-t2m5j4pr.js.map → chunk-ms9z66nz.js.map} +2 -2
  40. package/dist/cli/{chunk-ep6nd0rn.js → chunk-nbyvgnnm.js} +26 -14
  41. package/dist/cli/{chunk-ep6nd0rn.js.map → chunk-nbyvgnnm.js.map} +7 -7
  42. package/dist/cli/{chunk-w1r4vase.js → chunk-s0bdnc7v.js} +2 -2
  43. package/dist/cli/{chunk-fdrkhpjy.js → chunk-sc93apfs.js} +14 -14
  44. package/dist/cli/{chunk-dzwehpy7.js → chunk-tfycddbt.js} +2 -2
  45. package/dist/cli/{chunk-3x6x3pph.js → chunk-twy7psdz.js} +7 -7
  46. package/dist/cli/{chunk-e9q7a2ak.js → chunk-y4msrwm9.js} +15 -15
  47. package/dist/cli/{chunk-tdqhyxfz.js → chunk-ydp3065p.js} +5 -5
  48. package/dist/cli/index.js +18 -18
  49. package/dist/types/ai/ask.d.ts +24 -5
  50. package/dist/types/analytics/clics.d.ts +37 -0
  51. package/dist/types/analytics/index.d.ts +2 -0
  52. package/dist/types/analytics/schema.d.ts +18 -0
  53. package/dist/types/astro/integration.d.ts +6 -0
  54. package/dist/types/core/config-input.d.ts +7 -3
  55. package/dist/types/core/powered-by.d.ts +12 -0
  56. package/dist/types/core/schema.d.ts +109 -3
  57. package/dist/types/core/sources/lower.d.ts +10 -2
  58. package/dist/types/core/sources/notion.d.ts +8 -0
  59. package/dist/types/deploy/cloudflare-negotiation.d.ts +5 -2
  60. package/dist/types/deploy/node-headers.d.ts +12 -4
  61. package/dist/types/deploy/platforms/vercel.d.ts +2 -2
  62. package/dist/types/deploy/vercel-negotiation.d.ts +4 -2
  63. package/dist/types/narration/build.d.ts +34 -12
  64. package/dist/types/narration/provider.d.ts +96 -8
  65. package/dist/types/openapi/sentence.d.ts +11 -1
  66. package/dist/types/seo/jsonld.d.ts +11 -6
  67. package/dist/types/sources/notion.d.ts +8 -0
  68. package/dist/types/sources/registry.d.ts +9 -0
  69. package/docs/02-deployment.mdx +29 -1
  70. package/docs/03-upgrading.mdx +2 -1
  71. package/docs/04-migrating.mdx +9 -9
  72. package/docs/08-faq.mdx +12 -12
  73. package/docs/advanced/changelog.mdx +19 -2
  74. package/docs/advanced/custom-pages.mdx +1 -1
  75. package/docs/cli/doctor.mdx +1 -1
  76. package/docs/configuration/analytics.mdx +19 -1
  77. package/docs/configuration/index.mdx +1 -0
  78. package/docs/configuration/narration.mdx +43 -6
  79. package/docs/content/navigation.mdx +4 -2
  80. package/docs/content/sources/contentful.mdx +2 -0
  81. package/docs/content/sources/github-releases.mdx +2 -0
  82. package/docs/content/sources/notion.mdx +16 -1
  83. package/docs/content/sources/obsidian.mdx +2 -0
  84. package/docs/content/sources/payload.mdx +2 -0
  85. package/docs/content/sources/remote-mdx.mdx +2 -0
  86. package/docs/content/sources/sanity.mdx +2 -0
  87. package/docs/content/sources/strapi.mdx +2 -0
  88. package/docs/discoverability/mcp.mdx +2 -0
  89. package/docs/discoverability/structured-data.mdx +8 -6
  90. package/docs/references/asyncapi.mdx +2 -0
  91. package/docs/references/graphql.mdx +2 -0
  92. package/docs/references/openapi.mdx +14 -0
  93. package/package.json +1 -1
  94. package/skills/blume/SKILL.md +1 -1
  95. package/skills/blume-migrate/SKILL.md +1 -1
  96. package/skills/blume-migrate/assets/{oxfmt@0.67.0.patch → oxfmt@0.71.0.patch} +7 -7
  97. package/skills/blume-migrate/references/monorepo.md +5 -5
  98. package/src/ai/ask.ts +24 -6
  99. package/src/analytics/clics.ts +58 -0
  100. package/src/analytics/head.ts +5 -0
  101. package/src/analytics/index.ts +2 -0
  102. package/src/analytics/schema.ts +2 -0
  103. package/src/astro/generate.ts +13 -8
  104. package/src/astro/integration.ts +56 -9
  105. package/src/astro/render-deps.ts +10 -5
  106. package/src/astro/runtime-deps.ts +23 -2
  107. package/src/astro/templates.ts +4 -1
  108. package/src/cli/init/scaffold.ts +6 -3
  109. package/src/cli/required-secrets.ts +2 -1
  110. package/src/components/content/view-switcher.ts +7 -4
  111. package/src/components/layout/NavTree.astro +49 -5
  112. package/src/components/layout/NavTreeScript.astro +18 -0
  113. package/src/components/layout/PageLayout.astro +13 -3
  114. package/src/components/layout/RootLayout.astro +17 -12
  115. package/src/components/layout/analytics-client.ts +8 -8
  116. package/src/components/openapi/playground-client.ts +53 -53
  117. package/src/components/powered-by-middleware.ts +33 -0
  118. package/src/core/config-input.ts +11 -3
  119. package/src/core/powered-by.ts +12 -0
  120. package/src/core/schema.ts +5 -4
  121. package/src/core/sources/lower.ts +19 -3
  122. package/src/core/sources/notion.ts +27 -9
  123. package/src/deploy/cloudflare-negotiation.ts +36 -7
  124. package/src/deploy/headers.ts +15 -1
  125. package/src/deploy/node-headers.ts +32 -20
  126. package/src/deploy/platforms/cloudflare.ts +1 -0
  127. package/src/deploy/platforms/vercel.ts +4 -3
  128. package/src/deploy/vercel-negotiation.ts +38 -4
  129. package/src/markdown/base-links.ts +15 -14
  130. package/src/markdown/package-commands.ts +9 -8
  131. package/src/narration/build.ts +218 -40
  132. package/src/narration/provider.ts +89 -9
  133. package/src/openapi/render-mdx.ts +68 -8
  134. package/src/openapi/sentence.ts +29 -2
  135. package/src/registry/eject.ts +5 -1
  136. package/src/seo/jsonld.ts +38 -20
  137. package/src/sources/notion.ts +7 -0
  138. package/src/theme/color.ts +9 -10
  139. package/src/theme/entry.ts +14 -3
  140. package/dist/cli/chunk-313vnn40.js.map +0 -10
  141. package/dist/cli/chunk-gb420vvz.js.map +0 -17
  142. /package/dist/cli/{chunk-nq1d20w2.js.map → chunk-0w6hs479.js.map} +0 -0
  143. /package/dist/cli/{chunk-kma9f6sf.js.map → chunk-1f882900.js.map} +0 -0
  144. /package/dist/cli/{chunk-e8xw9qkh.js.map → chunk-297ajdcv.js.map} +0 -0
  145. /package/dist/cli/{chunk-e6atmn4h.js.map → chunk-32khwcb6.js.map} +0 -0
  146. /package/dist/cli/{chunk-073rdvgb.js.map → chunk-36bxs9c7.js.map} +0 -0
  147. /package/dist/cli/{chunk-mrcccgnh.js.map → chunk-53jqw8z0.js.map} +0 -0
  148. /package/dist/cli/{chunk-ft9vfys6.js.map → chunk-58bt3hag.js.map} +0 -0
  149. /package/dist/cli/{chunk-sds923fa.js.map → chunk-5cmts6dv.js.map} +0 -0
  150. /package/dist/cli/{chunk-cfyg47zg.js.map → chunk-60hz265r.js.map} +0 -0
  151. /package/dist/cli/{chunk-j134vrp2.js.map → chunk-74wfhv79.js.map} +0 -0
  152. /package/dist/cli/{chunk-nrns10mj.js.map → chunk-9qzgg6mj.js.map} +0 -0
  153. /package/dist/cli/{chunk-tphac74f.js.map → chunk-a57yh0h9.js.map} +0 -0
  154. /package/dist/cli/{chunk-hebn0tpx.js.map → chunk-ave1wcbr.js.map} +0 -0
  155. /package/dist/cli/{chunk-htrwgabr.js.map → chunk-bqxaqn5p.js.map} +0 -0
  156. /package/dist/cli/{chunk-5vjtgs6e.js.map → chunk-bxwhtvw8.js.map} +0 -0
  157. /package/dist/cli/{chunk-n0v7m8ry.js.map → chunk-desvm72z.js.map} +0 -0
  158. /package/dist/cli/{chunk-3v3ffbrj.js.map → chunk-dhwtqnnd.js.map} +0 -0
  159. /package/dist/cli/{chunk-c1y538kd.js.map → chunk-dqhg54mr.js.map} +0 -0
  160. /package/dist/cli/{chunk-42t4jxdx.js.map → chunk-dv2z0rzf.js.map} +0 -0
  161. /package/dist/cli/{chunk-hx3xqnk9.js.map → chunk-gfc5fqvf.js.map} +0 -0
  162. /package/dist/cli/{chunk-7ppf1rva.js.map → chunk-gxtg6ed2.js.map} +0 -0
  163. /package/dist/cli/{chunk-8y2kmjv8.js.map → chunk-hvcxng5f.js.map} +0 -0
  164. /package/dist/cli/{chunk-54ztw1nj.js.map → chunk-j1x92mx9.js.map} +0 -0
  165. /package/dist/cli/{chunk-c887fj0s.js.map → chunk-kdpzw38a.js.map} +0 -0
  166. /package/dist/cli/{chunk-w1r4vase.js.map → chunk-s0bdnc7v.js.map} +0 -0
  167. /package/dist/cli/{chunk-fdrkhpjy.js.map → chunk-sc93apfs.js.map} +0 -0
  168. /package/dist/cli/{chunk-dzwehpy7.js.map → chunk-tfycddbt.js.map} +0 -0
  169. /package/dist/cli/{chunk-3x6x3pph.js.map → chunk-twy7psdz.js.map} +0 -0
  170. /package/dist/cli/{chunk-e9q7a2ak.js.map → chunk-y4msrwm9.js.map} +0 -0
  171. /package/dist/cli/{chunk-tdqhyxfz.js.map → chunk-ydp3065p.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/core/ui-packs/ar.ts", "../src/core/ui-packs/bg.ts", "../src/core/ui-packs/bn.ts", "../src/core/ui-packs/ca.ts", "../src/core/ui-packs/cs.ts", "../src/core/ui-packs/da.ts", "../src/core/ui-packs/de.ts", "../src/core/ui-packs/el.ts", "../src/core/ui-packs/es.ts", "../src/core/ui-packs/fa.ts", "../src/core/ui-packs/fi.ts", "../src/core/ui-packs/fr.ts", "../src/core/ui-packs/he.ts", "../src/core/ui-packs/hi.ts", "../src/core/ui-packs/hr.ts", "../src/core/ui-packs/hu.ts", "../src/core/ui-packs/id.ts", "../src/core/ui-packs/it.ts", "../src/core/ui-packs/ja.ts", "../src/core/ui-packs/ko.ts", "../src/core/ui-packs/nl.ts", "../src/core/ui-packs/no.ts", "../src/core/ui-packs/pl.ts", "../src/core/ui-packs/pt-br.ts", "../src/core/ui-packs/pt.ts", "../src/core/ui-packs/ro.ts", "../src/core/ui-packs/ru.ts", "../src/core/ui-packs/sk.ts", "../src/core/ui-packs/sr.ts", "../src/core/ui-packs/sv.ts", "../src/core/ui-packs/th.ts", "../src/core/ui-packs/tr.ts", "../src/core/ui-packs/uk.ts", "../src/core/ui-packs/vi.ts", "../src/core/ui-packs/zh-tw.ts", "../src/core/ui-packs/zh.ts", "../src/core/ui-packs/index.ts", "../src/core/i18n.ts", "../src/openapi/references.ts", "../src/core/custom-pages.ts", "../src/core/localizable.ts", "../src/core/sources/collection.ts", "../src/sources/filesystem.ts", "../src/core/adapter.ts", "../src/sources/shared.ts", "../src/core/changelog-index.ts", "../src/astro/pages.ts", "../src/core/links.ts", "../src/core/content-assets.ts", "../src/core/code-fences.ts", "../src/core/sources/cache.ts", "../src/core/sources/normalize.ts", "../src/markdown/features.ts", "../src/core/heading-markers.ts", "../src/core/navigation.ts", "../src/core/ordering-prefix.ts", "../src/core/locale-links.ts", "../src/core/related.ts", "../src/core/schema.ts", "../src/ai/ask.ts", "../src/core/unrecognized-keys.ts", "../src/analytics/schema.ts", "../src/analytics/adobe.ts", "../src/analytics/amplitude.ts", "../src/analytics/inline.ts", "../src/analytics/clarity.ts", "../src/analytics/clearbit.ts", "../src/analytics/cloudflare.ts", "../src/analytics/databuddy.ts", "../src/analytics/fathom.ts", "../src/analytics/google-analytics.ts", "../src/analytics/google-tag-manager.ts", "../src/analytics/heap.ts", "../src/analytics/hightouch.ts", "../src/analytics/hotjar.ts", "../src/analytics/logrocket.ts", "../src/analytics/mixpanel.ts", "../src/analytics/one-dollar-stats.ts", "../src/analytics/pirsch.ts", "../src/analytics/plausible.ts", "../src/analytics/posthog.ts", "../src/analytics/script.ts", "../src/analytics/segment.ts", "../src/analytics/vercel.ts", "../src/captcha/schema.ts", "../src/captcha/hcaptcha.ts", "../src/captcha/turnstile.ts", "../src/components/openapi/helpers.ts", "../src/components/openapi/security.ts", "../src/components/content/api-page.ts", "../src/consent/schema.ts", "../src/consent/ethyca.ts", "../src/consent/native.ts", "../src/consent/osano.ts", "../src/deploy/adapters/registry.ts", "../src/deploy/adapters/types.ts", "../src/deploy/adapters/cloudflare.ts", "../src/deploy/adapters/netlify.ts", "../src/deploy/adapters/node.ts", "../src/deploy/adapters/vercel.ts", "../src/narration/provider.ts", "../src/ratelimit/schema.ts", "../src/ratelimit/cloudflare.ts", "../src/ratelimit/memory.ts", "../src/ratelimit/upstash.ts", "../src/reference/options.ts", "../src/reference/schema.ts", "../src/reference/asyncapi.ts", "../src/reference/graphql.ts", "../src/reference/openapi.ts", "../src/reference/scalar.ts", "../src/search/adapters/orama.ts", "../src/search/adapters/registry.ts", "../src/search/adapters/algolia.ts", "../src/search/adapters/flexsearch.ts", "../src/search/adapters/mixedbread.ts", "../src/search/adapters/orama-cloud.ts", "../src/search/adapters/pagefind.ts", "../src/search/adapters/typesense.ts", "../src/seo/metatags.ts", "../src/seo/x-handle.ts", "../src/sources/registry.ts", "../src/sources/contentful.ts", "../src/sources/custom.ts", "../src/sources/github-releases.ts", "../src/sources/mdx-remote.ts", "../src/sources/notion.ts", "../src/sources/obsidian.ts", "../src/sources/payload.ts", "../src/sources/sanity.ts", "../src/sources/strapi.ts", "../src/theme/fonts.ts", "../src/core/footer.ts", "../src/core/github.ts", "../src/core/i18n-ui.ts", "../src/core/open-in-chat.ts", "../src/core/page-modes.ts", "../src/core/redirect-patterns.ts", "../src/core/standard-schema.ts", "../src/core/variables.ts", "../src/core/versions.ts", "../src/core/sources/read.ts", "../src/core/includes.ts", "../src/core/frontmatter.ts", "../src/core/yaml.ts", "../src/core/probe.ts", "../src/cli/init/scaffold.ts", "../src/core/package-json.ts", "../src/cli/init/starter-spec.ts", "../src/deploy/platforms/cloudflare.ts", "../src/ai/api/paths.ts", "../src/core/api-name.ts", "../src/ai/api-catalog.ts", "../src/ai/mcp/discovery.ts", "../src/ai/skills.ts", "../src/ai/tar.ts", "../src/ai/ai-catalog.ts", "../src/ai/link-headers.ts", "../src/ai/markdown.ts", "../src/ai/agent-surface.ts", "../src/ai/changelog-markdown.ts", "../src/ai/component-markdown.ts", "../src/components/content/api-field.ts", "../src/components/content/youtube.ts", "../src/ai/static-expression.ts", "../src/deploy/rss.ts", "../src/ai/relative-links.ts", "../src/openapi/model.ts", "../src/openapi/asyncapi.ts", "../src/openapi/checks.ts", "../src/openapi/graphql.ts", "../src/openapi/parse.ts", "../src/core/node-require.ts", "../src/openapi/graphql-build.ts", "../src/openapi/overlay.ts", "../src/openapi/spec-dependency-error.ts", "../src/openapi/render-mdx.ts", "../src/core/safe-links.ts", "../src/core/safe-href.ts", "../src/core/sources/lower.ts", "../src/core/text-width.ts", "../src/openapi/sentence.ts", "../src/openapi/signature.ts", "../src/openapi/source.ts", "../src/components/openapi/snippets.ts", "../src/components/openapi/code-samples.ts", "../src/ai/openapi-components.ts", "../src/ai/serializers.ts", "../src/ai/visibility.ts", "../src/ai/llms.ts", "../src/ratelimit/wrangler.ts", "../src/core/sources/json.ts", "../src/ai/web-bot-auth.ts", "../src/deploy/headers.ts", "../src/deploy/cloudflare-negotiation.ts", "../src/deploy/redirects.ts", "../src/deploy/platforms/netlify.ts", "../src/deploy/platforms/paths.ts", "../src/deploy/node-headers.ts", "../src/deploy/platforms/node.ts", "../src/deploy/platforms/vercel.ts", "../src/deploy/function-bundle.ts", "../src/deploy/vercel-negotiation.ts", "../src/deploy/platforms/static.ts", "../src/deploy/platforms/index.ts", "../src/core/project.ts", "../src/core/config.ts", "../src/core/deployment-env.ts", "../src/core/load-module.ts"],
3
+ "sources": ["../src/core/ui-packs/ar.ts", "../src/core/ui-packs/bg.ts", "../src/core/ui-packs/bn.ts", "../src/core/ui-packs/ca.ts", "../src/core/ui-packs/cs.ts", "../src/core/ui-packs/da.ts", "../src/core/ui-packs/de.ts", "../src/core/ui-packs/el.ts", "../src/core/ui-packs/es.ts", "../src/core/ui-packs/fa.ts", "../src/core/ui-packs/fi.ts", "../src/core/ui-packs/fr.ts", "../src/core/ui-packs/he.ts", "../src/core/ui-packs/hi.ts", "../src/core/ui-packs/hr.ts", "../src/core/ui-packs/hu.ts", "../src/core/ui-packs/id.ts", "../src/core/ui-packs/it.ts", "../src/core/ui-packs/ja.ts", "../src/core/ui-packs/ko.ts", "../src/core/ui-packs/nl.ts", "../src/core/ui-packs/no.ts", "../src/core/ui-packs/pl.ts", "../src/core/ui-packs/pt-br.ts", "../src/core/ui-packs/pt.ts", "../src/core/ui-packs/ro.ts", "../src/core/ui-packs/ru.ts", "../src/core/ui-packs/sk.ts", "../src/core/ui-packs/sr.ts", "../src/core/ui-packs/sv.ts", "../src/core/ui-packs/th.ts", "../src/core/ui-packs/tr.ts", "../src/core/ui-packs/uk.ts", "../src/core/ui-packs/vi.ts", "../src/core/ui-packs/zh-tw.ts", "../src/core/ui-packs/zh.ts", "../src/core/ui-packs/index.ts", "../src/core/i18n.ts", "../src/openapi/references.ts", "../src/core/custom-pages.ts", "../src/core/localizable.ts", "../src/core/sources/collection.ts", "../src/sources/filesystem.ts", "../src/core/adapter.ts", "../src/sources/shared.ts", "../src/core/changelog-index.ts", "../src/astro/pages.ts", "../src/core/links.ts", "../src/core/content-assets.ts", "../src/core/code-fences.ts", "../src/core/sources/cache.ts", "../src/core/sources/normalize.ts", "../src/markdown/features.ts", "../src/core/heading-markers.ts", "../src/core/navigation.ts", "../src/core/ordering-prefix.ts", "../src/core/locale-links.ts", "../src/core/related.ts", "../src/core/schema.ts", "../src/ai/ask.ts", "../src/core/unrecognized-keys.ts", "../src/analytics/schema.ts", "../src/analytics/adobe.ts", "../src/analytics/amplitude.ts", "../src/analytics/inline.ts", "../src/analytics/clarity.ts", "../src/analytics/clearbit.ts", "../src/analytics/clics.ts", "../src/analytics/cloudflare.ts", "../src/analytics/databuddy.ts", "../src/analytics/fathom.ts", "../src/analytics/google-analytics.ts", "../src/analytics/google-tag-manager.ts", "../src/analytics/heap.ts", "../src/analytics/hightouch.ts", "../src/analytics/hotjar.ts", "../src/analytics/logrocket.ts", "../src/analytics/mixpanel.ts", "../src/analytics/one-dollar-stats.ts", "../src/analytics/pirsch.ts", "../src/analytics/plausible.ts", "../src/analytics/posthog.ts", "../src/analytics/script.ts", "../src/analytics/segment.ts", "../src/analytics/vercel.ts", "../src/captcha/schema.ts", "../src/captcha/hcaptcha.ts", "../src/captcha/turnstile.ts", "../src/components/openapi/helpers.ts", "../src/components/openapi/security.ts", "../src/components/content/api-page.ts", "../src/consent/schema.ts", "../src/consent/ethyca.ts", "../src/consent/native.ts", "../src/consent/osano.ts", "../src/deploy/adapters/registry.ts", "../src/deploy/adapters/types.ts", "../src/deploy/adapters/cloudflare.ts", "../src/deploy/adapters/netlify.ts", "../src/deploy/adapters/node.ts", "../src/deploy/adapters/vercel.ts", "../src/narration/provider.ts", "../src/ratelimit/schema.ts", "../src/ratelimit/cloudflare.ts", "../src/ratelimit/memory.ts", "../src/ratelimit/upstash.ts", "../src/reference/options.ts", "../src/reference/schema.ts", "../src/reference/asyncapi.ts", "../src/reference/graphql.ts", "../src/reference/openapi.ts", "../src/reference/scalar.ts", "../src/search/adapters/orama.ts", "../src/search/adapters/registry.ts", "../src/search/adapters/algolia.ts", "../src/search/adapters/flexsearch.ts", "../src/search/adapters/mixedbread.ts", "../src/search/adapters/orama-cloud.ts", "../src/search/adapters/pagefind.ts", "../src/search/adapters/typesense.ts", "../src/seo/metatags.ts", "../src/seo/x-handle.ts", "../src/sources/registry.ts", "../src/sources/contentful.ts", "../src/sources/custom.ts", "../src/sources/github-releases.ts", "../src/sources/mdx-remote.ts", "../src/sources/notion.ts", "../src/sources/obsidian.ts", "../src/sources/payload.ts", "../src/sources/sanity.ts", "../src/sources/strapi.ts", "../src/theme/fonts.ts", "../src/core/footer.ts", "../src/core/github.ts", "../src/core/i18n-ui.ts", "../src/core/open-in-chat.ts", "../src/core/page-modes.ts", "../src/core/redirect-patterns.ts", "../src/core/standard-schema.ts", "../src/core/variables.ts", "../src/core/versions.ts", "../src/core/sources/read.ts", "../src/core/includes.ts", "../src/core/frontmatter.ts", "../src/core/yaml.ts", "../src/core/probe.ts", "../src/cli/init/scaffold.ts", "../src/core/package-json.ts", "../src/cli/init/starter-spec.ts", "../src/deploy/platforms/cloudflare.ts", "../src/ai/api/paths.ts", "../src/core/api-name.ts", "../src/ai/api-catalog.ts", "../src/ai/mcp/discovery.ts", "../src/ai/skills.ts", "../src/ai/tar.ts", "../src/ai/ai-catalog.ts", "../src/ai/link-headers.ts", "../src/ai/markdown.ts", "../src/ai/agent-surface.ts", "../src/ai/changelog-markdown.ts", "../src/ai/component-markdown.ts", "../src/components/content/api-field.ts", "../src/components/content/youtube.ts", "../src/ai/static-expression.ts", "../src/deploy/rss.ts", "../src/ai/relative-links.ts", "../src/openapi/model.ts", "../src/openapi/asyncapi.ts", "../src/openapi/checks.ts", "../src/openapi/graphql.ts", "../src/openapi/parse.ts", "../src/core/node-require.ts", "../src/openapi/graphql-build.ts", "../src/openapi/overlay.ts", "../src/openapi/spec-dependency-error.ts", "../src/openapi/render-mdx.ts", "../src/core/safe-links.ts", "../src/core/safe-href.ts", "../src/core/sources/lower.ts", "../src/core/text-width.ts", "../src/openapi/sentence.ts", "../src/openapi/signature.ts", "../src/openapi/source.ts", "../src/components/openapi/snippets.ts", "../src/components/openapi/code-samples.ts", "../src/ai/openapi-components.ts", "../src/ai/serializers.ts", "../src/ai/visibility.ts", "../src/ai/llms.ts", "../src/ratelimit/wrangler.ts", "../src/core/sources/json.ts", "../src/core/powered-by.ts", "../src/ai/web-bot-auth.ts", "../src/deploy/headers.ts", "../src/deploy/cloudflare-negotiation.ts", "../src/deploy/redirects.ts", "../src/deploy/platforms/netlify.ts", "../src/deploy/platforms/paths.ts", "../src/deploy/node-headers.ts", "../src/deploy/platforms/node.ts", "../src/deploy/platforms/vercel.ts", "../src/deploy/function-bundle.ts", "../src/deploy/vercel-negotiation.ts", "../src/deploy/platforms/static.ts", "../src/deploy/platforms/index.ts", "../src/core/project.ts", "../src/core/config.ts", "../src/core/deployment-env.ts", "../src/core/load-module.ts"],
4
4
  "sourcesContent": [
5
5
  "import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Arabic (ar) UI strings. */\nexport const ar: UIStringsOverride = {\n actions: {\n addToCursor: \"إضافة إلى Cursor\",\n addToVscode: \"إضافة إلى VS Code\",\n askAboutCode: \"اسأل عن هذه الشيفرة\",\n connectMcp: \"الاتصال بـ MCP\",\n copied: \"تم النسخ!\",\n copyClaudeCode: \"نسخ أمر Claude Code\",\n copyCode: \"نسخ الكود\",\n copyCodex: \"نسخ أمر Codex\",\n copyFailed: \"فشل النسخ\",\n copyMarkdown: \"نسخ بصيغة Markdown\",\n copyServerUrl: \"نسخ عنوان URL للخادم\",\n edit: \"التعديل على GitHub\",\n export: \"تصدير\",\n exportEpub: \"التصدير إلى EPUB\",\n exportPdf: \"التصدير إلى PDF\",\n generating: \"جارٍ الإنشاء…\",\n openIn: \"فتح في {name}\",\n openInChat: \"فتح في المحادثة\",\n openInChatPrompt: \"اقرأ {url} حتى أتمكن من طرح أسئلة حول هذه الصفحة.\",\n scrollToTop: \"العودة إلى الأعلى\",\n },\n assistant: {\n ai: \"الذكاء الاصطناعي\",\n clear: \"مسح المحادثة\",\n close: \"إغلاق\",\n copy: \"نسخ المحادثة\",\n empty: \"اطرح سؤالاً حول الوثائق.\",\n error: \"عذراً، حدث خطأ ما.\",\n explainCode: \"اشرح هذه الشيفرة.\",\n label: \"اطرح سؤالاً\",\n open: \"فتح المساعد\",\n placeholder: \"اطرح سؤالاً…\",\n rateLimited: \"لقد طرحت الكثير من الأسئلة. حاول مرة أخرى بعد بضع دقائق.\",\n removeCode: \"إزالة الشيفرة\",\n send: \"إرسال\",\n support: \"تواصل مع الدعم\",\n supportSubject: \"سؤال من التوثيق\",\n tip: \"نصيحة: يمكنك فتح المحادثة وإغلاقها باستخدام\",\n title: \"المساعد\",\n verifyFailed: \"تعذّر التحقق من أنك إنسان. حاول مرة أخرى.\",\n you: \"أنت\",\n },\n banner: { dismiss: \"إغلاق الإعلان\" },\n changelog: {\n description: \"تحديثات المنتج وملاحظات الإصدارات.\",\n empty: \"لا توجد إدخالات في سجل التغييرات بعد.\",\n title: \"سجل التغييرات\",\n },\n consent: {\n accept: \"قبول\",\n decline: \"رفض\",\n label: \"الموافقة على ملفات تعريف الارتباط\",\n message: \"نودّ استخدام ملفات تعريف الارتباط لفهم كيفية استخدام هذا التوثيق.\",\n policy: \"سياسة الخصوصية\",\n settings: \"إعدادات ملفات تعريف الارتباط\",\n },\n content: {\n code: \"الكود\",\n copyColor: \"نسخ اللون {name} {value}\",\n copyPrompt: \"نسخ الموجّه\",\n default: \"الافتراضي\",\n diagramError: \"تعذّر عرض هذا المخطط.\",\n forks: \"التفرعات\",\n preview: \"معاينة\",\n prop: \"الخاصية\",\n selectTab: \"اختيار علامة تبويب\",\n selectView: \"اختيار طريقة العرض\",\n showLess: \"عرض أقل\",\n showMore: \"عرض المزيد\",\n stars: \"النجوم\",\n tab: \"علامة التبويب {n}\",\n type: \"النوع\",\n update: \"تحديث\",\n },\n feedback: {\n comment: \"أخبرنا بالمزيد (اختياري)\",\n no: \"لا\",\n question: \"هل كانت هذه الصفحة مفيدة؟\",\n send: \"إرسال\",\n thanks: \"شكراً على ملاحظاتك!\",\n yes: \"نعم\",\n },\n languageSwitcher: { label: \"اللغة\", untranslated: \"غير مترجم\" },\n narration: {\n cueDanger: \"خطر.\",\n cueInfo: \"معلومة.\",\n cueNote: \"ملاحظة.\",\n cueSection: \"قسم قابل للتوسيع.\",\n cueStep: \"الخطوة {n}.\",\n cueSuccess: \"نجاح.\",\n cueTab: \"علامة التبويب {title}.\",\n cueTip: \"نصيحة.\",\n cueWarning: \"تحذير.\",\n error: \"تعذّر تحميل القراءة الصوتية.\",\n follow: \"متابعة القراءة\",\n label: \"استمع إلى هذه الصفحة\",\n minutes: \"{n} دقيقة\",\n next: \"الجملة التالية\",\n pause: \"إيقاف مؤقت\",\n play: \"تشغيل\",\n previous: \"الجملة السابقة\",\n progress: \"تقدّم القراءة\",\n speed: \"سرعة التشغيل\",\n stop: \"إيقاف الاستماع\",\n },\n nav: {\n back: \"رجوع\",\n breadcrumb: \"مسار التنقل\",\n closeNavigation: \"إغلاق التنقل\",\n deprecated: \"مهمل\",\n featured: \"مميز\",\n githubRepository: \"مستودع GitHub\",\n navigation: \"التنقل\",\n opensInNewTab: \"يفتح في علامة تبويب جديدة\",\n primary: \"رئيسي\",\n sections: \"الأقسام\",\n toggleNavigation: \"تبديل التنقل\",\n toggleTheme: \"تبديل سمة الألوان\",\n },\n notFound: {\n description: \"لم نتمكن من العثور على الصفحة التي تبحث عنها.\",\n home: \"العودة إلى الصفحة الرئيسية\",\n title: \"الصفحة غير موجودة\",\n },\n page: {\n lastUpdated: \"آخر تحديث في\",\n next: \"التالي\",\n pagination: \"ترقيم الصفحات\",\n previous: \"السابق\",\n related: \"صفحات ذات صلة\",\n skipToContent: \"الانتقال إلى المحتوى\",\n },\n search: {\n all: \"الكل\",\n allLanguages: \"جميع اللغات\",\n assistant: \"المساعد\",\n assistantHint: \"احصل على إجابة فورية من الذكاء الاصطناعي\",\n button: \"بحث\",\n devOnly: \"البحث متاح في إصدار الإنتاج.\",\n docs: \"الوثائق\",\n error: \"حدث خطأ ما. يرجى المحاولة مرة أخرى.\",\n label: \"البحث في الوثائق\",\n latest: \"الأحدث\",\n navigate: \"تنقل\",\n noResults: \"لم يتم العثور على نتائج.\",\n open: \"فتح\",\n placeholder: \"البحث في الوثائق…\",\n popular: \"شائع\",\n preview: \"معاينة\",\n results: \"النتائج\",\n },\n toc: { title: \"في هذه الصفحة\" },\n};\n",
6
6
  "import type { UIStringsOverride } from \"../i18n-ui.ts\";\n\n/** Bulgarian (bg) UI strings. */\nexport const bg: UIStringsOverride = {\n actions: {\n addToCursor: \"Добави в Cursor\",\n addToVscode: \"Добави във VS Code\",\n askAboutCode: \"Попитай за този код\",\n connectMcp: \"Свържи се с MCP\",\n copied: \"Копирано!\",\n copyClaudeCode: \"Копирай командата на Claude Code\",\n copyCode: \"Копирай кода\",\n copyCodex: \"Копирай командата на Codex\",\n copyFailed: \"Копирането не бе успешно\",\n copyMarkdown: \"Копирай като Markdown\",\n copyServerUrl: \"Копирай URL на сървъра\",\n edit: \"Редактирай в GitHub\",\n export: \"Експортирай\",\n exportEpub: \"Експортирай в EPUB\",\n exportPdf: \"Експортирай в PDF\",\n generating: \"Генериране…\",\n openIn: \"Отвори в {name}\",\n openInChat: \"Отвори в чата\",\n openInChatPrompt:\n \"Прочетете {url}, за да мога да задавам въпроси за тази страница.\",\n scrollToTop: \"Нагоре\",\n },\n assistant: {\n ai: \"ИИ\",\n clear: \"Изчисти разговора\",\n close: \"Затвори\",\n copy: \"Копирай разговора\",\n empty: \"Задайте въпрос за документацията.\",\n error: \"Съжаляваме, нещо се обърка.\",\n explainCode: \"Обясни този код.\",\n label: \"Задайте въпрос\",\n open: \"Отваряне на асистента\",\n placeholder: \"Задайте въпрос…\",\n rateLimited:\n \"Зададохте много въпроси. Опитайте отново след няколко минути.\",\n removeCode: \"Премахни кода\",\n send: \"Изпрати\",\n support: \"Свържете се с поддръжката\",\n supportSubject: \"Въпрос от документацията\",\n tip: \"Съвет: Можете да отваряте и затваряте чата с\",\n title: \"Асистент\",\n verifyFailed: \"Не успяхме да потвърдим, че сте човек. Опитайте отново.\",\n you: \"Вие\",\n },\n banner: { dismiss: \"Затваряне на съобщението\" },\n changelog: {\n description: \"Актуализации на продукта и бележки към изданията.\",\n empty: \"Все още няма записи в дневника на промените.\",\n title: \"Дневник на промените\",\n },\n consent: {\n accept: \"Приемам\",\n decline: \"Отказвам\",\n label: \"Съгласие за бисквитки\",\n message:\n \"Бихме искали да използваме бисквитки, за да разберем как се използва тази документация.\",\n policy: \"Политика за поверителност\",\n settings: \"Настройки за бисквитки\",\n },\n content: {\n code: \"Код\",\n copyColor: \"Копирай цвета {name} {value}\",\n copyPrompt: \"Копирай подканата\",\n default: \"По подразбиране\",\n diagramError: \"Тази диаграма не можа да бъде показана.\",\n forks: \"Разклонения\",\n preview: \"Преглед\",\n prop: \"Свойство\",\n selectTab: \"Избери раздел\",\n selectView: \"Избери изглед\",\n showLess: \"Покажи по-малко\",\n showMore: \"Покажи още\",\n stars: \"Звезди\",\n tab: \"Раздел {n}\",\n type: \"Тип\",\n update: \"Актуализация\",\n },\n feedback: {\n comment: \"Разкажете ни повече (по избор)\",\n no: \"Не\",\n question: \"Беше ли полезна тази страница?\",\n send: \"Изпрати\",\n thanks: \"Благодарим за обратната връзка!\",\n yes: \"Да\",\n },\n languageSwitcher: { label: \"Език\", untranslated: \"Непреведено\" },\n narration: {\n cueDanger: \"Опасност.\",\n cueInfo: \"Информация.\",\n cueNote: \"Бележка.\",\n cueSection: \"Разгъваем раздел.\",\n cueStep: \"Стъпка {n}.\",\n cueSuccess: \"Успех.\",\n cueTab: \"Раздел {title}.\",\n cueTip: \"Съвет.\",\n cueWarning: \"Предупреждение.\",\n error: \"Аудиоверсията не можа да бъде заредена.\",\n follow: \"Следи четенето\",\n label: \"Слушай тази страница\",\n minutes: \"{n} мин\",\n next: \"Следващо изречение\",\n pause: \"Пауза\",\n play: \"Пусни\",\n previous: \"Предишно изречение\",\n progress: \"Напредък на четенето\",\n speed: \"Скорост на възпроизвеждане\",\n stop: \"Спри слушането\",\n },\n nav: {\n back: \"Назад\",\n breadcrumb: \"Навигационна пътека\",\n closeNavigation: \"Затвори навигацията\",\n deprecated: \"остаряло\",\n featured: \"Препоръчано\",\n githubRepository: \"Хранилище в GitHub\",\n navigation: \"Навигация\",\n opensInNewTab: \"Отваря се в нов раздел\",\n primary: \"Основно\",\n sections: \"Раздели\",\n toggleNavigation: \"Превключи навигацията\",\n toggleTheme: \"Превключи цветовата тема\",\n },\n notFound: {\n description: \"Не успяхме да намерим страницата, която търсите.\",\n home: \"Обратно към началната страница\",\n title: \"Страницата не е намерена\",\n },\n page: {\n lastUpdated: \"Последна актуализация\",\n next: \"Напред\",\n pagination: \"Пагинация\",\n previous: \"Назад\",\n related: \"Свързани страници\",\n skipToContent: \"Към съдържанието\",\n },\n search: {\n all: \"Всички\",\n allLanguages: \"Всички езици\",\n assistant: \"Асистент\",\n assistantHint: \"Получете незабавен отговор от ИИ\",\n button: \"Търсене\",\n devOnly: \"Търсенето е достъпно в производствената компилация.\",\n docs: \"Документация\",\n error: \"Нещо се обърка. Моля, опитайте отново.\",\n label: \"Търсене в документацията\",\n latest: \"най-нова\",\n navigate: \"навигация\",\n noResults: \"Няма намерени резултати.\",\n open: \"отвори\",\n placeholder: \"Търсене в документацията…\",\n popular: \"Популярни\",\n preview: \"преглед\",\n results: \"Резултати\",\n },\n toc: { title: \"На тази страница\" },\n};\n",
@@ -60,15 +60,16 @@
60
60
  "/**\n * A file or folder name's ordering prefix: digits, then a `-`, `_`, or `.`\n * separator (`01-intro`, `2_setup`). It sorts the generated sidebar and is\n * dropped from the route.\n */\nconst ORDERING_PREFIX = /^(?<order>\\d+)[-_.]/u;\n\n/**\n * Digit-led names that are names, not orders, and stay whole: a version\n * (`1.2.0`, `2.0`), which a `1.` prefix would split into `2.0`, and an ISO date\n * (`2024-01-05`, `2024-01-05-first-post`), whose year would sort the sidebar\n * and leave only `01-05…` of the route.\n */\nconst NOT_AN_ORDER = /^(?:\\d+\\.\\d|\\d{4}-\\d{2}-\\d{2}(?:[-_.]|$))/u;\n\n/** The digits of `name`'s ordering prefix (`01` of `01-intro`), if it has one. */\nexport const orderingPrefix = (name: string): string | undefined =>\n NOT_AN_ORDER.test(name)\n ? undefined\n : name.match(ORDERING_PREFIX)?.groups?.order;\n\n/** `name` without its ordering prefix (`01-intro` -> `intro`). */\nexport const stripOrderingPrefix = (name: string): string => {\n const order = orderingPrefix(name);\n // The prefix is the digits plus their one-character separator.\n return order === undefined ? name : name.slice(order.length + 1);\n};\n",
61
61
  "import {\n isInternalPath,\n mountBasePath,\n normalizePath,\n stripBasePath,\n withBasePath,\n} from \"./base-path.ts\";\nimport { localePrefix, localizeRoute } from \"./i18n.ts\";\nimport type { LocaleRouting } from \"./i18n.ts\";\n\n/**\n * Locale-aware resolution of content links.\n *\n * Authors write internal links as if mounted at the default locale's root\n * (`[x](/guide)`, `<Card href=\"/guide\">`), and translated pages are usually\n * copies of the source with the same links — so read on `/fr/…`, a link would\n * otherwise drop the reader back into the default language. These helpers move\n * such a link to the reader's locale (`/fr/guide`) when that route is served\n * (a real translation or a materialized fallback page), and leave it alone\n * otherwise: an explicit cross-locale link (`/de/guide`), a custom `.astro`\n * page or generated route that has no per-locale variant, or a missing\n * translation on a site with fallbacks disabled all keep their authored\n * target rather than pointing at a 404.\n *\n * The rewrite runs at render time (`components/layout/LocaleLinks.astro`)\n * because content is compiled once per file but served per route: a fallback\n * route renders the fallback locale's file under the missing locale's URL, and\n * a shared `page.$.mdx` renders under every locale. The link checker applies\n * the same resolution so anchors are validated against the page a reader lands\n * on.\n */\n\n/** A route set, as the runtime (`Set`) or the checker (a predicate) sees it. */\nexport interface RouteSet {\n has: (route: string) => boolean;\n}\n\nexport interface LocalizeLinkOptions {\n /** Site-wide route mount point (`\"\"` or `/seg`); routes carry it. */\n basePath: string;\n i18n: LocaleRouting;\n /** Locale of the page the link is rendered on. */\n locale: string;\n /** Every served route, base-prefixed like `path` (no `deployment.base`). */\n routes: RouteSet;\n}\n\n/** Decode a percent-encoded path for a route lookup; leave junk as-is. */\nconst decodePercent = (value: string): string => {\n try {\n return decodeURIComponent(value);\n } catch {\n return value;\n }\n};\n\n/**\n * Whether `routes` serves `route` (base-prefixed, fragment-less). Routes are\n * stored decoded, so a browser-copied `/caf%C3%A9` still finds its page.\n */\nexport const servesRoute = (routes: RouteSet, route: string): boolean =>\n routes.has(route) || routes.has(decodePercent(route));\n\n/** Whether `path` (base-stripped) already sits under some locale's prefix. */\nconst hasLocalePrefix = (path: string, i18n: LocaleRouting): boolean =>\n i18n.locales.some((locale) => {\n const prefix = localePrefix(locale.code, i18n);\n return prefix !== \"\" && (path === prefix || path.startsWith(`${prefix}/`));\n });\n\n/**\n * Move a base-prefixed, fragment-less internal path into `locale` when that\n * route is served, else return it unchanged. Idempotent: a path already under\n * any configured locale prefix is never re-prefixed.\n */\nexport const localizeLinkPath = (\n path: string,\n options: LocalizeLinkOptions\n): string => {\n const { basePath, i18n, locale, routes } = options;\n if (localePrefix(locale, i18n) === \"\") {\n return path;\n }\n const rest = normalizePath(stripBasePath(basePath, path));\n if (hasLocalePrefix(rest, i18n)) {\n return path;\n }\n const localized = withBasePath(basePath, localizeRoute(rest, locale, i18n));\n // A browser-copied `/caf%C3%A9` must still find its translation, but the\n // emitted href keeps the author's encoding.\n return servesRoute(routes, localized) ? localized : path;\n};\n\nexport interface LocalizeHrefOptions extends LocalizeLinkOptions {\n /** `deployment.base` (Astro's `BASE_URL`), layered over `basePath` in hrefs. */\n deployBase: string;\n}\n\n/**\n * Localize a rendered `href`: external URLs, relative paths, and bare\n * fragments pass through; a root-relative page link keeps its `?query` and\n * `#fragment` and its `deployment.base` layer around the localized path.\n *\n * Asset links (`/logo.png`, a raw `.md` twin) pass through too, because no\n * page is served at their localized path — the same served-route test the\n * link checker applies. A file extension alone doesn't mark an asset: a\n * dotted page route (`/releases/v1.2`) is localized like any other page.\n */\nexport const localizeHref = (\n href: string,\n options: LocalizeHrefOptions\n): string => {\n if (!isInternalPath(href)) {\n return href;\n }\n const suffixAt = href.search(/[#?]/u);\n const path = suffixAt === -1 ? href : href.slice(0, suffixAt);\n const suffix = suffixAt === -1 ? \"\" : href.slice(suffixAt);\n const based = stripBasePath(options.deployBase, path);\n const localized = localizeLinkPath(based, options);\n if (localized === based) {\n return href;\n }\n // The base came off above, so it goes back on unconditionally: a localized\n // path that starts with the base's own name (`/ja/…` under base `/ja`) is\n // still served under it.\n return `${mountBasePath(options.deployBase, localized)}${suffix}`;\n};\n\n/** Every `<a …>` opening tag; `\\s` keeps `<abbr>`/`<astro-island>` out. */\nconst ANCHOR_TAG = /<a\\s[^>]*>/giu;\n/** The tag's `href` attribute, double- or single-quoted. */\nconst HREF_ATTR = /(?<attr>\\shref=)(?:\"(?<dq>[^\"]*)\"|'(?<sq>[^']*)')/iu;\n\n/**\n * Rewrite every `<a href>` in rendered content HTML through `rewrite`. Code\n * blocks are HTML-escaped (`&lt;a`), and island props live on\n * `<astro-island>`, so neither is touched.\n */\nexport const localizeContentLinks = (\n html: string,\n rewrite: (href: string) => string\n): string =>\n html.replace(ANCHOR_TAG, (tag) =>\n tag.replace(HREF_ATTR, (_match, attr: string, dq?: string, sq?: string) => {\n const quote = dq === undefined ? \"'\" : '\"';\n return `${attr}${quote}${rewrite(dq ?? sq ?? \"\")}${quote}`;\n })\n );\n\n/**\n * The served route set for `blume:data`'s routes, built once per routes array\n * (the virtual module is evaluated once, so every page render shares it).\n */\nconst routeSets = new WeakMap<readonly { path: string }[], Set<string>>();\n\nexport const routeSetFor = (\n routes: readonly { path: string }[]\n): Set<string> => {\n const cached = routeSets.get(routes);\n if (cached) {\n return cached;\n }\n const built = new Set(routes.map((route) => route.path));\n routeSets.set(routes, built);\n return built;\n};\n",
62
62
  "/**\n * Related pages: the `related` frontmatter list a page ends with, as Mintlify\n * writes it. Each entry is a root-relative path to another page, an absolute\n * URL, or a one-key `{ Title: link }` object that names the link itself. A\n * page link resolves to the served route, in the reader's locale when that\n * page is translated, and takes the page's own title and description; an\n * internal path that matches no page is left out here and reported by the\n * link checker, which sees every entry as one of the page's links.\n */\nimport { isExternalUrl, normalizeRoute, withBasePath } from \"./base-path.ts\";\nimport type { LocaleRouting } from \"./i18n.ts\";\nimport { localizeLinkPath, routeSetFor } from \"./locale-links.ts\";\nimport type { PageLink } from \"./types.ts\";\n\n/** The most entries a page lists, as on Mintlify. */\nexport const MAX_RELATED = 10;\n\n/** A `{ Title: link }` entry: the one key is the title, its value the link. */\nexport interface TitledRelatedEntry {\n [title: string]: string;\n}\n\n/** One `related` frontmatter entry. */\nexport type RelatedEntry = string | TitledRelatedEntry;\n\n/** A resolved entry, ready to render. */\nexport interface RelatedLink {\n description?: string;\n external: boolean;\n /** A page's route (`basePath` included, deployment base not), or a URL. */\n href: string;\n title: string;\n}\n\n/** A served route, as the data snapshot lists it. */\nexport interface RelatedRoute {\n description: string | null;\n path: string;\n title: string;\n}\n\n/** What resolving needs from the site. */\nexport interface RelatedContext {\n basePath: string;\n /** The site's locales, when it has more than one. */\n i18n?: LocaleRouting | null;\n /** The locale of the page being rendered. */\n locale: string;\n routes: readonly RelatedRoute[];\n}\n\n/** An entry's link and, for a titled entry, its title. */\ninterface EntryParts {\n link: string;\n title?: string;\n}\n\nconst isPath = (entry: RelatedEntry): entry is string =>\n typeof entry === \"string\";\n\nconst partsOf = (entry: RelatedEntry): EntryParts | undefined => {\n if (isPath(entry)) {\n return { link: entry };\n }\n const [first] = Object.entries(entry);\n return first ? { link: first[1], title: first[0] } : undefined;\n};\n\n/** The links a page's `related` entries name, in the order written. */\nexport const relatedLinks = (\n entries: readonly RelatedEntry[] | false | undefined,\n context: RelatedContext\n): RelatedLink[] => {\n if (!entries) {\n return [];\n }\n const served = routeSetFor(context.routes);\n return entries.flatMap((entry): RelatedLink[] => {\n const parts = partsOf(entry);\n if (!parts) {\n return [];\n }\n if (isExternalUrl(parts.link)) {\n return [\n {\n external: true,\n href: parts.link,\n title: parts.title ?? new URL(parts.link, \"https://x\").hostname,\n },\n ];\n }\n const at = parts.link.search(/[#?]/u);\n const path = at === -1 ? parts.link : parts.link.slice(0, at);\n const suffix = at === -1 ? \"\" : parts.link.slice(at);\n const authored = withBasePath(context.basePath, normalizeRoute(path));\n const route = context.i18n\n ? localizeLinkPath(authored, {\n basePath: context.basePath,\n i18n: context.i18n,\n locale: context.locale,\n routes: served,\n })\n : authored;\n const page = context.routes.find((candidate) => candidate.path === route);\n if (!page) {\n return [];\n }\n return [\n {\n description: page.description ?? undefined,\n external: false,\n href: `${route}${suffix}`,\n title: parts.title ?? page.title,\n },\n ];\n });\n};\n\n/**\n * A page's `related` page links, as links the checker validates like any in\n * its body. Front matter has no line map, so they point at its first line.\n */\nexport const relatedPageLinks = (\n entries?: readonly RelatedEntry[] | false\n): PageLink[] =>\n (entries || []).flatMap((entry) => {\n const link = partsOf(entry)?.link;\n return link && !isExternalUrl(link)\n ? [{ column: 1, line: 1, target: link }]\n : [];\n });\n",
63
- "import type { AstroIntegration } from \"astro\";\nimport { z } from \"zod\";\n\nimport {\n assistantAdapterSchema,\n assistantMovedFieldsHint,\n DEFAULT_ASSISTANT_PROVIDER,\n} from \"../ai/ask.ts\";\nimport type { ComponentMarkdown } from \"../ai/component-markdown.ts\";\nimport { analyticsConfigSchema } from \"../analytics/schema.ts\";\nimport { captchaAdapterSchema } from \"../captcha/schema.ts\";\nimport {\n API_ENDPOINT,\n AUTH_METHODS,\n PLAYGROUND_MODES,\n} from \"../components/content/api-page.ts\";\nimport { consentConfigSchema } from \"../consent/schema.ts\";\nimport { resolvedDeploymentSchema } from \"../deploy/adapters/registry.ts\";\nimport type { CodeTheme } from \"../markdown/themes.ts\";\nimport { narrationProviderSchema } from \"../narration/provider.ts\";\nimport { normalizeRoute } from \"../openapi/references.ts\";\nimport { rateLimitConfigSchema } from \"../ratelimit/schema.ts\";\nimport { playgroundSchema } from \"../reference/options.ts\";\nimport {\n referenceConfigSchema,\n removedReferenceKeysHint,\n} from \"../reference/schema.ts\";\nimport { orama } from \"../search/adapters/orama.ts\";\nimport {\n NONE_SEARCH_ADAPTER,\n resolvedSearchAdapterSchema,\n} from \"../search/adapters/registry.ts\";\nimport type { SearchAdapterInput } from \"../search/adapters/registry.ts\";\nimport { ownedMetatag } from \"../seo/metatags.ts\";\nimport { normalizeXHandle } from \"../seo/x-handle.ts\";\nimport { filesystem } from \"../sources/filesystem.ts\";\nimport {\n contentSourcesSchema,\n resolvedSourceAdapterSchema,\n} from \"../sources/registry.ts\";\nimport { FONT_SLUGS, isFontSlug } from \"../theme/fonts.ts\";\nimport { isExternalUrl, normalizeBasePath } from \"./base-path.ts\";\nimport { FOOTER_SOCIALS } from \"./footer.ts\";\nimport { PUBLIC_HOST_URL } from \"./github.ts\";\nimport { uiLocaleOverridesSchema } from \"./i18n-ui.ts\";\nimport { openInChatProviders } from \"./open-in-chat.ts\";\nimport { PAGE_MODES } from \"./page-modes.ts\";\nimport { redirectPatternError } from \"./redirect-patterns.ts\";\nimport { MAX_RELATED } from \"./related.ts\";\nimport { isStandardSchema } from \"./standard-schema.ts\";\nimport type { StandardSchema } from \"./standard-schema.ts\";\nimport { trimEnd } from \"./trim.ts\";\nimport { unrecognizedKeysMessage } from \"./unrecognized-keys.ts\";\nimport { VARIABLE_NAME } from \"./variables.ts\";\n\n/**\n * An absolute HTTP(S) URL, for any field that lands verbatim in an `href` —\n * the header repo mark, the GitHub instance origin. Zod's bare `z.url()` also\n * admits `javascript:` and `data:`, which would render as a script link on\n * every page.\n */\nconst httpUrlSchema = z.url({ protocol: /^https?$/u });\n\n/**\n * Public Blume schemas.\n *\n * These are exported from `blume/schema` so migration tools, editor\n * integrations, and the runtime share a single source of validation truth.\n */\n\n// ---------------------------------------------------------------------------\n// Shared primitives\n// ---------------------------------------------------------------------------\n\n// `typeof` checks live in named predicates (the form the oxlint anti-slop\n// config sanctions); generic so each site keeps its own union narrowing.\nconst isString = <Value>(value: Value): value is Value & string =>\n typeof value === \"string\";\n\nconst isBoolean = <Value>(value: Value): value is Value & boolean =>\n typeof value === \"boolean\";\n\nconst isObjectLike = <Value>(value: Value): value is Value & object =>\n typeof value === \"object\" && value !== null;\n\n/** Icon inputs in serializable contexts (frontmatter, meta files). */\nconst iconName = z.string().min(1);\n\n/**\n * Error params for a strict object whose keys were removed or moved in a\n * major release. A config still carrying one of `hints`' keys fails with\n * the message that names its replacement, instead of Zod's bare\n * \"Unrecognized key\"; any other unknown key keeps the default message.\n */\nconst removedKeysHint = (hints: Record<string, string>) => ({\n error: (issue: z.core.$ZodRawIssue): string | undefined => {\n if (issue.code !== \"unrecognized_keys\") {\n return;\n }\n const messages = issue.keys.flatMap((key) =>\n Object.hasOwn(hints, key) ? [hints[key]] : []\n );\n if (messages.length === 0) {\n return;\n }\n // A hinted key beside a plain unknown one: keep Zod's wording for the\n // latter so it isn't silently dropped from the diagnostic.\n const others = issue.keys.filter((key) => !Object.hasOwn(hints, key));\n if (others.length > 0) {\n messages.push(unrecognizedKeysMessage(others));\n }\n return messages.join(\" \");\n },\n});\n\n/** Default include glob for filesystem-backed content sources. */\nconst hydrationMode = z.enum([\"load\", \"idle\", \"visible\", \"media\", \"only\"]);\nexport type HydrationMode = z.infer<typeof hydrationMode>;\n\n/**\n * A publish date in frontmatter. YAML auto-parses an unquoted `2026-01-01` into\n * a `Date`, so accept either form and normalize to an ISO string.\n */\nconst dateSchema = z\n .union([z.string(), z.date()])\n .transform((value) => (value instanceof Date ? value.toISOString() : value));\n\n/**\n * How a sidebar group renders:\n * - `flat`: a non-collapsible header with its items listed beneath (default).\n * - `group`: a collapsible `<details>` disclosure.\n * - `page`: a single row that drills into a sub-panel showing only this group's\n * items, with a back arrow at the top.\n */\nconst sidebarDisplaySchema = z.enum([\"flat\", \"group\", \"page\"]);\nexport type SidebarDisplay = z.infer<typeof sidebarDisplaySchema>;\n\n/**\n * How a group's own page lists the group's other pages below its content:\n * `card` a grid of cards, `accordion` a list with each subgroup collapsible,\n * `none` no listing (the default). A group without its own page has nowhere\n * to show one. Nested groups inherit the nearest setting above them.\n */\nconst directoryModeSchema = z.enum([\"accordion\", \"card\", \"none\"]);\nexport type DirectoryMode = z.infer<typeof directoryModeSchema>;\n\n// ---------------------------------------------------------------------------\n// Page frontmatter\n// ---------------------------------------------------------------------------\n\nconst sidebarMetaSchema = z.strictObject({\n badge: z.string().optional(),\n /**\n * Render mode for this page's folder group. Only meaningful on a folder's\n * `index` page — it configures the group, not the page. Overrides the\n * folder's `meta.ts` `display` and the global `navigation.sidebar.display`.\n */\n display: sidebarDisplaySchema.optional(),\n hidden: z.boolean().default(false),\n icon: iconName.optional(),\n label: z.string().optional(),\n order: z.number().optional(),\n});\n\n/**\n * An X handle, normalized to a leading `@` — `twitter:site`/`twitter:creator`\n * require it, and a handle configured without one is the obvious typo to absorb\n * rather than reject. The layouts normalize again on the way out, since a page's\n * `seo.x.creator` reaches them straight from unvalidated frontmatter.\n */\nconst xHandleSchema = z.string().transform(normalizeXHandle).optional();\n\nconst seoMetaSchema = z.strictObject({\n canonical: z.url().optional(),\n description: z.string().optional(),\n image: z.string().optional(),\n noindex: z.boolean().default(false),\n title: z.string().optional(),\n /** Per-page X attribution — a guest post credits its own author. */\n x: z.strictObject({ creator: xHandleSchema }).optional(),\n});\n\nconst searchMetaSchema = z.strictObject({\n /**\n * Multiply the page's search relevance: above 1 ranks it higher, below 1\n * lower. Keep it to a few key pages, and under 10: a large boost floats a\n * page over better matches.\n */\n boost: z.number().positive().optional(),\n exclude: z.boolean().default(false),\n /** Extra terms the page is found by, beyond its own text. */\n keywords: z.array(z.string()).optional(),\n tags: z.array(z.string()).optional(),\n});\n\nconst aiMetaSchema = z.strictObject({\n /** Exclude this page from llms.txt and llms-full.txt. */\n exclude: z.boolean().default(false),\n});\n\nconst changelogMetaSchema = z.strictObject({\n category: z.string().optional(),\n date: dateSchema.optional(),\n version: z.string().optional(),\n});\n\n/**\n * A post author: a bare name/handle, or an object with a name plus optional\n * avatar/URL. The object is passthrough so richer author metadata (social\n * handles, roles) survives untouched — Blume doesn't render authors yet, so\n * this exists to preserve the field (common on blog/changelog pages) rather\n * than have a strict scan reject it.\n */\nconst authorSchema = z.union([\n z.string(),\n z\n .object({\n avatar: z.string().optional(),\n image: z.string().optional(),\n name: z.string(),\n url: z.string().optional(),\n })\n .catchall(z.unknown()),\n]);\n\n// Shorthand defaults use `.prefault()`, not `.default()`, wherever the value\n// must still be parsed — Zod 4's `.default()` returns the value as-is, so a\n// `.default({})` on an object with inner defaults (or a transform) would\n// resolve to a bare `{}` instead of the fully-defaulted shape.\n\n/** A `related` link: a root-relative page path or an absolute URL. */\nconst relatedLinkSchema = z\n .string()\n .refine((link) => link.startsWith(\"/\") || isExternalUrl(link), {\n message:\n 'A related link is a root-relative path (\"/guides/setup\") or an absolute URL.',\n });\n\n/** Frontmatter accepted on any content page. */\nconst pageMetaBaseSchema = z.strictObject({\n ai: aiMetaSchema.prefault({}),\n /**\n * A hand-written endpoint: an HTTP method and a path or full URL\n * (`POST /v1/users`). The page's `<ParamField>`s build its playground and\n * request samples.\n */\n api: z\n .string()\n .refine((value) => API_ENDPOINT.test(value.trim()), {\n message:\n 'api takes an HTTP method and a path or URL, like \"POST /v1/users\" or \"GET https://api.acme.com/v1/users/{id}\".',\n })\n .optional(),\n /** How this page's endpoint authenticates, over the site's `api.auth`. */\n authMethod: z.enum(AUTH_METHODS).optional(),\n /** Post author(s) for blog/changelog content; preserved, not yet rendered. */\n authors: z.union([authorSchema, z.array(authorSchema)]).optional(),\n changelog: changelogMetaSchema.optional(),\n /** Publish date for feed-backed content like blog/changelog. */\n date: dateSchema.optional(),\n deprecated: z.boolean().default(false),\n description: z.string().optional(),\n draft: z.boolean().default(false),\n hidden: z.boolean().default(false),\n icon: iconName.optional(),\n /** Overrides the git-derived last-modified date when `lastModified` is on. */\n lastModified: dateSchema.optional(),\n /** What the page shows around its content (see `core/page-modes.ts`). */\n mode: z.enum(PAGE_MODES).optional(),\n /** `false` keeps the \"Listen to this page\" player off this page. */\n narration: z.boolean().default(true),\n noindex: z.boolean().default(false),\n /** `false` drops the previous/next links at the foot of this page. */\n pagination: z.boolean().default(true),\n /** What an `api` page's playground shows: `interactive`, `simple` (samples only), or `none`. */\n playground: z.enum(PLAYGROUND_MODES).optional(),\n /**\n * Pages to suggest at the foot of this one: root-relative paths, absolute\n * URLs, or `{ Title: link }` to name a link. `false` lists none.\n */\n related: z\n .union([\n z.literal(false),\n z\n .array(\n z.union([\n relatedLinkSchema,\n z\n .record(z.string().min(1), relatedLinkSchema)\n .refine((entry) => Object.keys(entry).length === 1, {\n message:\n 'A titled related entry has one title and one link: { \"Title\": \"/path\" }.',\n }),\n ])\n )\n .max(MAX_RELATED),\n ])\n .optional(),\n search: searchMetaSchema.prefault({}),\n seo: seoMetaSchema.prefault({}),\n sidebar: sidebarMetaSchema.prefault({}),\n slug: z.string().optional(),\n title: z.string().optional(),\n // No default: an absent `type` must fall through to `content.defaultType`.\n type: z.string().optional(),\n});\n\nexport const pageMetaSchema = pageMetaBaseSchema;\n\nexport type PageMeta = z.infer<typeof pageMetaBaseSchema>;\nexport type PageMetaInput = z.input<typeof pageMetaBaseSchema>;\n\n/** The fully-defaulted front matter of a page that declares nothing. */\nconst EMPTY_PAGE_META: PageMeta = pageMetaBaseSchema.parse({});\n\n/**\n * The page schema as the generated content collections declare it, so\n * `entry.data` is typed and normalized (dates as ISO strings, X handles with\n * their `@`) the same way the scan's `PageMeta` is. Two deliberate loosenings\n * over {@link pageMetaSchema}: custom keys (`frontmatter.extend`, per-type\n * maps) pass through instead of failing the strict parse, and a page the\n * strict parse rejects resolves to the empty defaults instead of throwing.\n * The scan has already dropped such a page with a `BLUME_FRONTMATTER_INVALID`\n * diagnostic — Blume continues without it unless `--strict` — so the\n * collection must not turn that dropped page into a failed content sync.\n */\nexport const pageCollectionSchema = pageMetaBaseSchema\n .loose()\n // oxlint-disable-next-line promise/prefer-await-to-then -- zod's catch, not a promise\n .catch(() => EMPTY_PAGE_META);\n\n/** Built-in page frontmatter keys; custom keys must never redeclare one. */\nconst BUILT_IN_PAGE_META_KEYS = new Set<string>(\n pageMetaBaseSchema.keyof().options\n);\n\n/**\n * A map of custom frontmatter keys to user-supplied validation schemas,\n * consumed through the Standard Schema `~standard` contract — never Zod's own\n * API — so the consumer's zod (any version), Valibot, or ArkType all work\n * (see `standard-schema.ts`). Shared by the site-wide `frontmatter.extend`\n * and the per-type `content.types.<type>.frontmatter` maps. Built-in\n * frontmatter fields can't be redeclared — they're load-bearing (routing,\n * sidebar, SEO), and shadowing one would silently change its semantics.\n */\nconst customKeySchemaRecord = (where: string) =>\n z\n .record(\n z.string(),\n z.custom<StandardSchema>(isStandardSchema, {\n message:\n \"Expected a Standard Schema (e.g. a Zod schema — any Zod version works).\",\n })\n )\n .default({})\n .superRefine((value, ctx) => {\n for (const key of Object.keys(value)) {\n if (BUILT_IN_PAGE_META_KEYS.has(key)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `\"${key}\" is a built-in frontmatter field and cannot be redeclared via ${where}.`,\n path: [key],\n });\n }\n }\n });\n\n// ---------------------------------------------------------------------------\n// Folder meta (meta.ts)\n// ---------------------------------------------------------------------------\n\nexport const folderMetaSchema = z.strictObject({\n collapsed: z.boolean().optional(),\n /** List the group's pages on its index page; inherited by nested folders. */\n directory: directoryModeSchema.optional(),\n /** Render mode for this group; overrides `navigation.sidebar.display`. */\n display: sidebarDisplaySchema.optional(),\n icon: iconName.optional(),\n order: z.number().optional(),\n /** Explicit child ordering by slug segment (without numeric prefix). */\n pages: z.array(z.string()).optional(),\n title: z.string().optional(),\n});\n\nexport type FolderMeta = z.infer<typeof folderMetaSchema>;\n\n// ---------------------------------------------------------------------------\n// Project config (blume.config.ts)\n// ---------------------------------------------------------------------------\n\n/** The logo mark: a single image path/URL, or light/dark variants with alt text. */\nconst logoImageSchema = z.union([\n z.string(),\n z.strictObject({\n alt: z.string().optional(),\n dark: z.string().optional(),\n light: z.string().optional(),\n }),\n]);\n\n/**\n * Site logo. A bare string is the image shorthand. The object form splits the\n * brand into an optional `image` mark and optional wordmark `text` so a site can\n * show an image-only logo (a mark with the wordmark baked in), a text-only logo,\n * or both. Omit `text` to fall back to the site title; set `text: \"\"` to render\n * the mark alone. `href` overrides the brand link (defaults to `/`).\n */\nconst logoConfigSchema = z.union([\n z.string(),\n z.strictObject({\n href: z.string().optional(),\n image: logoImageSchema.optional(),\n text: z.string().optional(),\n }),\n]);\n\n/**\n * A label that may localize (header tabs and links, the banner, the footer):\n * a plain string, or a map of locale code to label (`{ en: \"Docs\", ja: \"ドキュメント\" }`).\n * Resolved per locale by `core/localizable.ts` — the active locale's entry\n * wins, then the default locale's, then the map's first entry — so a\n * single-locale site can keep plain strings and an i18n site can translate\n * its labels without forking the config.\n */\nconst localizableLabelSchema = z.union([\n z.string(),\n z\n .record(z.string(), z.string())\n .refine((value) => Object.keys(value).length > 0, {\n message: \"Provide at least one locale's label.\",\n }),\n]);\n\nexport type LocalizableLabel = z.infer<typeof localizableLabelSchema>;\n\n/**\n * Site-wide announcement banner: a string, or text with an optional link. The\n * object form's `content` and link `text` may be per-locale maps.\n */\nconst bannerConfigSchema = z.union([\n z.string(),\n z.strictObject({\n content: localizableLabelSchema,\n /** Show a dismiss button; the choice is remembered per visitor. */\n dismissible: z.boolean().default(false),\n /**\n * Stable key for remembering dismissal; defaults to the content (the\n * default locale's, for a per-locale map).\n */\n id: z.string().optional(),\n link: z\n .strictObject({ href: z.string(), text: localizableLabelSchema })\n .optional(),\n }),\n]);\n\n/**\n * Defaults for hand-written endpoint pages (`api` frontmatter): the server a\n * path joins, how requests authenticate, and the playground, which takes an\n * OpenAPI reference's `playground` option.\n */\nconst apiConfigSchema = z.strictObject({\n auth: z\n .strictObject({\n method: z.enum(AUTH_METHODS),\n /** The header an API key goes in. Defaults to `x-api-key`. */\n name: z.string().optional(),\n })\n .optional(),\n playground: playgroundSchema,\n /** The base URL an `api` path joins (`https://api.acme.com/v1`). */\n server: z.string().optional(),\n});\n\n/**\n * The site footer: a row of links, and social profile icons. Unset, the site\n * has no footer (a `components.ts` `Footer` still renders).\n */\nconst footerConfigSchema = z.strictObject({\n /** Links in one row, in the order written. */\n links: z\n .array(z.strictObject({ href: z.string(), label: localizableLabelSchema }))\n .default([]),\n /** Social profiles, platform to URL, shown as icons in the order written. */\n socials: z.partialRecord(z.enum(FOOTER_SOCIALS), z.string()).default({}),\n});\n\n/**\n * The generated `/changelog` index. Its title and description may be\n * per-locale maps; unset, they're the `changelog` UI strings `i18n.ui`\n * translates.\n */\nconst changelogConfigSchema = z.strictObject({\n description: localizableLabelSchema.optional(),\n title: localizableLabelSchema.optional(),\n});\n\n/** A validated `content.sources` entry: an adapter descriptor from `blume/sources`. */\nexport type { ContentSourceAdapter } from \"../sources/registry.ts\";\n\n/**\n * Per-type content definition. An object (rather than a bare frontmatter map)\n * so type-scoped concerns added later — search facets, templates — have a\n * home without a breaking config change.\n */\nconst contentTypeConfigSchema = z.strictObject({\n /**\n * Custom frontmatter keys whose values become filterable facets for pages\n * of this type — surfaced in search documents and filterable through the\n * MCP tools' `filters` input. Each name must be a custom key declared for\n * the type (in its `frontmatter` map or the site-wide `frontmatter.extend`),\n * checked at the config level where both maps are visible. Only string\n * (or number/boolean, stringified) values ever facet.\n */\n facets: z.array(z.string()).default([]),\n /**\n * Custom frontmatter keys for pages of this type, layered on top of the\n * site-wide `frontmatter.extend`. Every declared key is validated on every\n * page of the type — absent ones included — so a required schema enforces\n * the key type-wide while leaving other types untouched.\n */\n frontmatter: customKeySchemaRecord(\"content.types\"),\n});\n\n/** The top-level fields that are shorthand for a single `filesystem()` source. */\nconst FILESYSTEM_SHORTHAND_KEYS = [\"exclude\", \"include\", \"root\"] as const;\n\n/**\n * `content`: where pages come from. `sources` lists adapters from\n * `blume/sources`; the top-level `root`/`include`/`exclude` are zero-config\n * shorthand that desugars to exactly one `filesystem()` entry when `sources`\n * is absent, and are rejected beside it — so after parse, `sources` is the\n * one source of truth and nothing downstream picks between the two.\n */\nconst contentConfigSchema = z\n .strictObject({\n defaultType: z.string().default(\"doc\"),\n exclude: z.array(z.string()).optional(),\n include: z.array(z.string()).optional(),\n pages: z.string().default(\"pages\"),\n root: z.string().optional(),\n sources: contentSourcesSchema.optional(),\n /**\n * Per-type content definitions, keyed by the frontmatter `type` they apply\n * to (including `defaultType`, for pages that set none).\n */\n types: z.record(z.string(), contentTypeConfigSchema).default({}),\n })\n .superRefine(\n (value, ctx) => {\n if (!value.sources) {\n return;\n }\n for (const key of FILESYSTEM_SHORTHAND_KEYS) {\n if (value[key] !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `content.${key} is shorthand for a single filesystem() source and can't be combined with content.sources — move it into a filesystem({ ${key} }) entry in content.sources.`,\n path: [key],\n });\n }\n }\n },\n // Zod skips a refinement once a field has failed, so without this a\n // Blume 1 config (`{ type: \"filesystem\" }` sources beside `content.root`)\n // would only learn about the shorthand after fixing every source entry.\n // Any object gets the check; a non-object already failed on its own.\n { when: (payload) => isObjectLike(payload.value) }\n )\n .transform(({ exclude, include, root, sources, ...rest }) => ({\n ...rest,\n sources: sources ?? [\n // The shorthand's defaults are the adapter's own, applied by its schema.\n resolvedSourceAdapterSchema.parse(filesystem({ exclude, include, root })),\n ],\n }));\n\nconst navTabSchema = z.strictObject({\n // Rejected empty rather than accepted: an empty `href` would render a link to\n // nowhere, and it can't mean \"resolve it for me\" either — that's what\n // omitting the field does.\n href: z.string().min(1).optional(),\n icon: iconName.optional(),\n items: z\n .array(\n z.strictObject({\n description: z.string().optional(),\n icon: iconName.optional(),\n label: localizableLabelSchema,\n path: z.string(),\n tag: z.string().optional(),\n })\n )\n .optional(),\n label: localizableLabelSchema,\n // Canonical like the routes it's matched against — one leading slash, no\n // trailing one — so `/guides/` still marks its pages' tab and scopes their\n // sidebar, and `api` links to `/api` rather than resolving relative to the\n // current page.\n path: z.string().transform(normalizeRoute),\n});\n\nconst navSelectorItemSchema = z.strictObject({\n description: z.string().optional(),\n icon: iconName.optional(),\n label: z.string(),\n path: z.string(),\n tag: z.string().optional(),\n});\n\nconst navSelectorSchema = z.strictObject({\n items: z.array(navSelectorItemSchema).default([]),\n kind: z.enum([\"dropdown\", \"language\", \"product\", \"version\"]),\n label: z.string(),\n});\n\n/** A node in an explicit sidebar config: a page reference or a group/link. */\nexport type SidebarItemConfig =\n | string\n | {\n label: string;\n badge?: string;\n directory?: DirectoryMode;\n display?: SidebarDisplay;\n href?: string;\n icon?: string;\n collapsed?: boolean;\n items?: SidebarItemConfig[];\n root?: string;\n };\n\n// Zod 4's `ZodType` defaults its Input parameter to `unknown` (it no longer\n// mirrors Output), so the recursive annotation names both — otherwise\n// `z.input` of anything containing this schema degrades to `unknown`.\nconst sidebarItemSchema: z.ZodType<SidebarItemConfig, SidebarItemConfig> =\n z.lazy(() =>\n z.union([\n z.string(),\n z.strictObject({\n badge: z.string().optional(),\n collapsed: z.boolean().optional(),\n directory: directoryModeSchema.optional(),\n display: sidebarDisplaySchema.optional(),\n href: z.string().optional(),\n icon: iconName.optional(),\n items: z.array(sidebarItemSchema).optional(),\n label: z.string(),\n root: z.string().optional(),\n }),\n ])\n );\n\nconst fontFallbackSchema = z.enum([\"sans\", \"serif\", \"mono\"]);\n\n/** Any family from a zero-config Astro provider, by name. */\nconst remoteFontSchema = z.strictObject({\n fallback: fontFallbackSchema.optional(),\n name: z.string().min(1),\n provider: z\n .enum([\"google\", \"fontsource\", \"bunny\", \"fontshare\"])\n .default(\"google\"),\n /** Character subsets to load; defaults to `latin` plus the locales' scripts. */\n subsets: z.array(z.string().min(1)).nonempty().optional(),\n weights: z\n .array(\n z.union([z.number().int().positive(), z.string().regex(/^\\d+\\.\\.\\d+$/u)])\n )\n .nonempty()\n .optional(),\n});\n\n/** One local `@font-face`: a file plus optional weight/style (else inferred). */\nconst localFontVariantSchema = z.strictObject({\n src: z.string().min(1),\n style: z.enum([\"normal\", \"italic\", \"oblique\"]).optional(),\n weight: z\n .union([\n z.number().int().positive(),\n z.string().regex(/^\\d+(?:\\.\\.\\d+)?$/u),\n ])\n .optional(),\n});\n\n/** A self-hosted family loaded from font files in the project. */\nconst localFontSchema = z.strictObject({\n fallback: fontFallbackSchema.optional(),\n name: z.string().min(1),\n variants: z.array(localFontVariantSchema).nonempty(),\n});\n\n/**\n * A role's font: a curated Google Font slug (see `theme/fonts.ts`), a\n * remote-provider family, or local font files. Bare strings must be curated\n * slugs so a typo fails with the supported list instead of a provider error.\n */\nconst fontValueSchema = z\n .union([z.string(), remoteFontSchema, localFontSchema])\n .superRefine((value, ctx) => {\n if (isString(value) && !isFontSlug(value)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Unknown font \"${value}\". Supported fonts: ${FONT_SLUGS.join(\", \")}. For any other family, use the object form: { name: \"...\" } (remote provider) or { name: \"...\", variants: [...] } (local files).`,\n });\n }\n });\n\n/**\n * An optional per-mode theme value: a string applies to both color modes; a\n * `{ light, dark }` object sets each mode individually (either may be\n * omitted to override a single mode).\n */\nconst perModeValueSchema = z\n .union([\n z.string(),\n z.strictObject({\n dark: z.string().optional(),\n light: z.string().optional(),\n }),\n ])\n .optional()\n .transform((value) =>\n isString(value) ? { dark: value, light: value } : value\n );\n\nconst themeConfigFields = {\n accent: z\n .union([\n z.string(),\n z.strictObject({ dark: z.string(), light: z.string() }),\n ])\n .default(\"blue\")\n .transform((value) =>\n isString(value) ? { dark: value, light: value } : value\n ),\n action: z.string().optional(),\n background: perModeValueSchema,\n backgroundImage: perModeValueSchema,\n fonts: z\n .strictObject({\n body: fontValueSchema.default(\"inter\"),\n display: fontValueSchema.default(\"inter\"),\n mono: fontValueSchema.default(\"ibm-plex-mono\"),\n })\n .prefault({}),\n mode: z.enum([\"system\", \"light\", \"dark\"]).default(\"system\"),\n radius: z.enum([\"none\", \"sm\", \"md\", \"lg\"]).default(\"md\"),\n};\n\nconst themeConfigSchema = z.strictObject(\n themeConfigFields,\n removedKeysHint({\n layout:\n \"theme.layout was removed: the sidebar layout is the only one, so delete the field.\",\n })\n);\n\n/** Curated link for the search dialog empty state (internal route or external URL). */\nconst searchPopularLinkSchema = z.strictObject({\n href: z.string(),\n icon: iconName.optional(),\n label: z.string(),\n});\n\n/**\n * The search backend: an adapter descriptor from `blume/search` (`algolia({…})`,\n * `orama()`, …) or `false` to disable search. Resolves to a descriptor either\n * way — `false` becomes the `none` adapter — so consumers read `kind`,\n * `runtimeDeps`, and `requiredSecrets` without a special case.\n */\nconst searchProviderSchema = z\n .custom<false | SearchAdapterInput>(\n // A 1.x provider name (`\"algolia\"`, `\"none\"`) fails here with the adapter\n // that replaces it, rather than the pipe's bare \"expected object\".\n (value) => value === false || isObjectLike(value),\n {\n message:\n 'search.provider takes an adapter from \"blume/search\" — algolia({…}), pagefind(), … — not a provider name. The 1.x provider string was removed, and \"none\" is now `search: false`.',\n }\n )\n .transform((value) => (value === false ? NONE_SEARCH_ADAPTER : value))\n .pipe(resolvedSearchAdapterSchema);\n\n/** Indexing behavior shared by every source-built index. */\nconst searchIndexingSchema = z\n .strictObject({\n includeCodeBlocks: z.boolean().default(false),\n includeHiddenPages: z.boolean().default(false),\n })\n .prefault({});\n\n/** What the search dialog's analytics events carry. */\nconst searchAnalyticsSchema = z\n .strictObject({\n queries: z.boolean().default(true),\n })\n .prefault({});\n\n/** The object form of `search`: the adapter plus its adapter-independent settings. */\nconst searchOptionsSchema = z.strictObject(\n {\n analytics: searchAnalyticsSchema,\n indexing: searchIndexingSchema,\n /** Curated links for the Cmd+K empty state; defaults to the first sidebar pages. */\n popular: z.array(searchPopularLinkSchema).default([]),\n provider: searchProviderSchema.default(() => orama()),\n },\n // The 1.x credential blocks, each now its adapter's options.\n removedKeysHint({\n algolia:\n 'search.algolia moved into its adapter: `search: algolia({ appId, indexName, apiKey })` from \"blume/search\", where the 1.x `searchApiKey` is now `apiKey`.',\n mixedbread:\n 'search.mixedbread moved into its adapter: `search: mixedbread({ storeId })` from \"blume/search\".',\n oramaCloud:\n 'search.oramaCloud moved into its adapter: `search: oramaCloud({ endpoint, apiKey, indexId })` from \"blume/search\".',\n typesense:\n 'search.typesense moved into its adapter: `search: typesense({ host, collection, apiKey })` from \"blume/search\", where the 1.x `searchApiKey` is now `apiKey`.',\n })\n);\n\ntype SearchOptionsInput = z.input<typeof searchOptionsSchema>;\n\n/** What `search` accepts: an adapter (or `false`) directly, or the object form. */\ntype SearchConfigInput = false | SearchAdapterInput | SearchOptionsInput;\n\n/**\n * `search` takes an adapter directly (`search: algolia({…})`, or `false`) as\n * shorthand for the object form (`search: { provider: algolia({…}), popular,\n * indexing }`). The shorthand is lifted into `provider` before the object\n * schema validates, rather than through a union: a union reports whichever\n * branch fails \"softest\", which for a descriptor missing an option is the\n * object form's \"unrecognized keys\" — pointing at the wrong problem. A\n * descriptor is recognized by its `kind`; the object form never has one.\n */\nconst searchConfigSchema = z\n .custom<SearchConfigInput>(\n // Anything else (a 1.x provider string, null, true) must become a\n // diagnostic here: the `in` check below would throw a TypeError on it.\n (value) => value === false || isObjectLike(value),\n {\n message:\n 'search must be an adapter from \"blume/search\" (orama(), algolia({…}), …), false, or { provider, popular, indexing }. The 1.x provider string was removed.',\n }\n )\n .transform((value): SearchOptionsInput =>\n value === false || \"kind\" in value ? { provider: value } : value\n )\n .pipe(searchOptionsSchema);\n\n/**\n * JWK parameters that carry private or secret key material (RFC 7518): the\n * private exponent/scalar, the RSA CRT parameters, and the symmetric key.\n * A directory is public by definition, so any of these in a configured key is\n * a leaked credential, not a config style choice — reject loudly.\n */\nconst PRIVATE_JWK_PARAMS = [\"d\", \"p\", \"q\", \"dp\", \"dq\", \"qi\", \"oth\", \"k\"];\n\n/**\n * A public JWK for the Web Bot Auth signature directory. Shape is left to the\n * signing setup (Ed25519 `OKP` keys in current deployments) — validation only\n * requires the mandatory `kty` and refuses private key material.\n */\nconst publicJwkSchema = z\n .record(z.string(), z.unknown())\n .superRefine((jwk, ctx) => {\n if (!isString(jwk.kty) || jwk.kty.length === 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'A JWK must declare its key type (\"kty\").',\n });\n }\n const leaked = PRIVATE_JWK_PARAMS.filter((param) => param in jwk);\n if (leaked.length > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `The JWK contains private key material (\"${leaked.join('\", \"')}\") — the signatures directory is public, so list only public keys and keep the private key where the signing agent runs.`,\n });\n }\n });\n\nconst mcpConfigSchema = z.strictObject({\n enabled: z.boolean().default(false),\n /** Optional system hint passed to connecting agents. */\n instructions: z.string().optional(),\n /** Server name shown to clients; defaults to the site title. */\n name: z.string().optional(),\n /**\n * Normalized like `openapi.route`: a slash-less value would otherwise be\n * string-concatenated onto the site origin (`https://acme.comdocs-mcp`).\n */\n route: z.string().default(\"/mcp\").transform(normalizeRoute),\n});\n\nconst assistantEndpointSchema = z\n .string()\n .trim()\n .min(1)\n .refine(\n (value) => {\n if (value.startsWith(\"/\") && !value.startsWith(\"//\")) {\n return true;\n }\n try {\n const url = new URL(value);\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n } catch {\n return false;\n }\n },\n {\n message:\n \"ai.assistant.endpoint must be an HTTP(S) URL or a root-relative path.\",\n }\n );\n\n/** The object form of `agents.llmsTxt`; a bare boolean normalizes onto it. */\nconst llmsTxtObjectSchema = z.strictObject({\n /**\n * Markdown inserted after the title and summary, before the page sections:\n * the llms.txt spec's \"details\" slot. The place to tell agents when to use\n * the product and how to call it; trimmed, and dropped when blank.\n */\n details: z.string().trim().min(1).optional(),\n enabled: z.boolean().default(true),\n openapi: z.boolean().default(true),\n});\n\ntype LlmsTxtResolved = z.output<typeof llmsTxtObjectSchema>;\n\n/** The object form of `agents.catalog`; a bare boolean normalizes onto it. */\nconst aiCatalogObjectSchema = z.strictObject({\n enabled: z.boolean().default(true),\n /**\n * Representative queries per catalog entry, keyed by the entry's\n * `<namespace>:<name>` (the identifier minus its `urn:air:<host>:` prefix,\n * e.g. `mcp:docs`, `skill:blume`, `api:docs`). Replaces the generated\n * defaults for that entry; 2–5 short natural-language questions the\n * resource can answer, which registries embed for semantic search.\n */\n queries: z\n .record(z.string().min(1), z.array(z.string().trim().min(1)).min(1))\n .default({}),\n});\n\ntype AiCatalogResolved = z.output<typeof aiCatalogObjectSchema>;\n\n/**\n * The keys that moved from `ai` to `agents`: `ai` now holds only what faces a\n * model at read time (the assistant, Open in chat), and the machine-readable surface\n * agents consume lives under `agents`.\n */\nconst MOVED_TO_AGENTS = [\n \"api\",\n \"catalog\",\n \"llmsTxt\",\n \"markdownComponents\",\n \"mcp\",\n \"skills\",\n \"webBotAuth\",\n \"webmcp\",\n] as const;\n\nconst movedToAgentsHints = (from: string): Record<string, string> =>\n Object.fromEntries(\n MOVED_TO_AGENTS.map((key) => [\n key,\n `${from}.${key} moved to agents.${key}.`,\n ])\n );\n\n/** Model-facing config: the assistant and the \"Open in chat\" action. */\nconst aiConfigFields = {\n assistant: z\n .strictObject(\n {\n // Origins allowed to call the generated `/api/ask` from another site (a\n // marketing page that embeds an ask box, say), or `\"*\"` for every\n // origin. Each URL is reduced to its origin so a trailing slash or path\n // can't defeat the exact match the route performs. Read by the\n // generated route only; an external `endpoint` owns its own CORS.\n // A bot check from `blume/captcha`: the panel sends a token with each\n // question and the generated route verifies it before the model runs.\n captcha: captchaAdapterSchema.optional(),\n cors: z\n .array(\n z.union([\n z.literal(\"*\"),\n z\n .url({ protocol: /^https?$/u })\n .transform((value) => new URL(value).origin),\n ])\n )\n .optional(),\n enabled: z.boolean().default(false),\n // Optional external endpoint for projects that keep their docs static\n // and host the assistant in an existing backend. Absolute URLs and root-relative\n // paths are both valid; the built-in request/stream contract is unchanged.\n endpoint: assistantEndpointSchema.optional(),\n // Extra system-prompt text (identity, language, tone) appended to the\n // built-in instructions, so the grounding contract — answer from the\n // retrieved excerpts, cite pages as Markdown links — stays intact.\n instructions: z.string().trim().min(1).optional(),\n // The adapter descriptor a `gateway()`/`openrouter()`/... factory\n // returns; each adapter validates its own options (model, key env var,\n // reasoning mapping, `providerOptions` passthrough) in `ai/ask.ts`.\n // Unset means the gateway with its default model, so the zero-config assistant\n // is unchanged.\n provider: assistantAdapterSchema.prefault(DEFAULT_ASSISTANT_PROVIDER),\n // How much documentation each question carries. Injected characters are\n // the dominant term in time-to-first-token on a self-hosted backend, so\n // these trade recall for latency. No zod defaults here: only what the\n // user set reaches the generated (and ejected) endpoint, so omitted\n // fields keep tracking the installed package's built-in defaults in\n // `ai/ask-context.ts` instead of pinning today's numbers as literals.\n retrieval: z\n .strictObject({\n contextBudget: z.number().int().positive().optional(),\n excerptChars: z.number().int().positive().optional(),\n maxResults: z.number().int().positive().optional(),\n })\n .optional(),\n // Empty-state prompts shown before the first question. Each renders as a\n // clickable suggestion; `icon` is an optional Lucide name beside it.\n suggestions: z\n .array(\n z.strictObject({\n icon: iconName.optional(),\n label: z.string().min(1),\n })\n )\n .default([]),\n // Where the panel's Contact support link goes: an email address\n // (`mailto:`, which starts an email with the conversation), a URL,\n // or a root-relative page (which get the conversation's `thread` id).\n support: z\n .string()\n .refine(\n (link) =>\n link.startsWith(\"mailto:\") ||\n link.startsWith(\"/\") ||\n isExternalUrl(link),\n {\n message:\n 'ai.assistant.support is a mailto: address, a URL, or a root-relative path, like \"mailto:help@example.com\".',\n }\n )\n .optional(),\n // Search and read-page tools the model can call over several steps.\n // No default here: unset follows the adapter (`toolsByDefault` in\n // `ai/ask.ts`), on for the hosted catalogs and off for an\n // OpenAI-compatible backend that may not speak tool calling.\n tools: z.boolean().optional(),\n },\n assistantMovedFieldsHint\n )\n .superRefine((value, ctx) => {\n // `cors` configures the generated route, which an external `endpoint`\n // replaces; accepting both would silently do nothing.\n if (value.cors && value.endpoint) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"ai.assistant.cors only applies to the generated route; with ai.assistant.endpoint, CORS is that backend's job.\",\n path: [\"cors\"],\n });\n }\n })\n .optional(),\n /**\n * The \"Open in chat\" page action. `true` (the default) lists every\n * provider, `false` hides the action entirely, and an array of provider\n * keys shows just that subset, in the given order. Normalized to the\n * provider list so consumers read a plain array.\n */\n openInChat: z\n .union([\n z.boolean(),\n z\n .array(z.enum(openInChatProviders))\n .refine((value) => new Set(value).size === value.length, {\n message: \"ai.openInChat must not repeat a provider.\",\n }),\n ])\n .default(true)\n .transform((value) => {\n if (isBoolean(value)) {\n return value ? [...openInChatProviders] : [];\n }\n return value;\n }),\n};\n\nconst aiConfigSchema = z.strictObject(\n aiConfigFields,\n removedKeysHint({\n ...movedToAgentsHints(\"ai\"),\n ask: \"ai.ask was renamed to ai.assistant.\",\n })\n);\n\n/**\n * A pinned link rendered above the sidebar sections — a blog, changelog, or\n * contact page that should always be reachable, regardless of the active tab.\n * `href` may be an external URL or an internal route.\n */\nconst featuredLinkSchema = z.strictObject({\n href: z.string(),\n icon: iconName.optional(),\n label: localizableLabelSchema,\n});\n\n/**\n * A header link: a plain one (`Log in`, `Status`), or the single call to\n * action. Same shape as a featured link minus the icon — the header row is\n * text, not iconography.\n */\nconst headerActionSchema = z.strictObject({\n href: z.string(),\n label: localizableLabelSchema,\n});\n\nconst navigationConfigSchema = z.strictObject({\n /** Plain links in the header, left of the icon buttons. */\n actions: z.array(headerActionSchema).default([]),\n /**\n * The one primary call to action in the header, as a filled button.\n *\n * Singular on purpose: a docs header has room for exactly one thing a\n * reader is being asked to do, a row of buttons asks for nothing, and\n * `featured` already takes the secondary links.\n */\n cta: headerActionSchema.optional(),\n /** Pinned links shown above the generated sidebar sections. */\n featured: z.array(featuredLinkSchema).default([]),\n /**\n * The GitHub link in the footer. `true` derives it from `github`, `false`\n * hides it, and an absolute URL points it anywhere on GitHub — an\n * organization, say, when the docs repo itself is private and `github` has\n * to stay unset. The mark stays the GitHub one, so a URL elsewhere belongs in\n * `actions`.\n */\n repo: z.union([z.boolean(), httpUrlSchema]).default(true),\n selectors: z.array(navSelectorSchema).default([]),\n /**\n * Sidebar behavior. `display` sets how every group renders (a group in an\n * explicit `items` config may still override it); `items` is an explicit\n * sidebar — when omitted the sidebar is generated from the content tree.\n * A bare array is shorthand for `{ items }`.\n */\n sidebar: z\n .union([\n z.array(sidebarItemSchema),\n z.strictObject({\n display: sidebarDisplaySchema.default(\"flat\"),\n items: z.array(sidebarItemSchema).optional(),\n }),\n ])\n .prefault({})\n .transform((value) =>\n Array.isArray(value) ? { display: \"flat\" as const, items: value } : value\n ),\n tabs: z.array(navTabSchema).default([]),\n});\n\nexport { assistantReasoningLevels } from \"../ai/ask.ts\";\nexport type { AssistantReasoning } from \"../ai/ask.ts\";\nexport type AssistantConfig = NonNullable<\n z.infer<typeof aiConfigSchema>[\"assistant\"]\n>;\nexport { openInChatProviders } from \"./open-in-chat.ts\";\nexport type { OpenInChatProvider } from \"./open-in-chat.ts\";\n\n// Reader-facing \"Export\" page action (PDF via print, EPUB via client-side\n// generation). Off by default. Accepts a shorthand boolean to toggle both\n// formats, or an object to enable them individually; both normalize to\n// `{ epub, pdf }` so consumers read plain booleans.\nconst exportConfigSchema = z\n .union([\n z.boolean(),\n z.strictObject({\n epub: z.boolean().default(false),\n pdf: z.boolean().default(false),\n }),\n ])\n .transform((value) =>\n isBoolean(value) ? { epub: value, pdf: value } : value\n );\n\n// The \"Was this page helpful?\" rating, on by default. `comments: true` adds a\n// box after the rating where the reader can say more, sent through the\n// analytics adapters as a `feedback_comment` event. Both forms normalize to\n// `{ enabled, comments }`.\nconst feedbackConfigSchema = z\n .union([\n z.boolean(),\n z.strictObject({\n comments: z.boolean().default(false),\n enabled: z.boolean().default(true),\n }),\n ])\n // With the rating off there is nothing to comment on.\n .transform((value) =>\n isBoolean(value)\n ? { comments: false, enabled: value }\n : { comments: value.enabled && value.comments, enabled: value.enabled }\n );\n\n// \"Listen to this page\". Off by default. `true` reads pages aloud with the\n// reader's browser voices, which needs no key and works on any host; an object\n// with a `provider` (`gateway()` from `blume/ai`) generates neural audio at\n// build instead, one cached clip per sentence, and falls back to the browser's\n// voices where no clips exist (`blume dev`, a build without the key). Both\n// normalize to `{ enabled, provider }`.\nconst narrationConfigSchema = z\n .union([\n z.boolean(),\n z.strictObject({\n enabled: z.boolean().default(true),\n provider: narrationProviderSchema.optional(),\n }),\n ])\n .transform((value) =>\n isBoolean(value)\n ? { enabled: value, provider: null }\n : { enabled: value.enabled, provider: value.provider ?? null }\n );\n\n/** A configured locale: ISO-ish code plus display metadata for the switcher. */\nconst localeSchema = z.strictObject({\n code: z.string().min(1),\n /** Text direction; drives `<html dir>` and a future RTL pass. */\n dir: z.enum([\"ltr\", \"rtl\"]).default(\"ltr\"),\n label: z.string(),\n /**\n * Freeform style guidance for `blume translate`, e.g. \"Brazilian\n * Portuguese, informal você\". Pins register and dialect from the first\n * translation and wins over an existing translation's style on reruns.\n */\n style: z.string().optional(),\n});\n\n/**\n * Internationalization. Opt-in: when absent, Blume is single-locale and behaves\n * exactly as before. The default locale lives at the content root; other locales\n * are top-level directories named by `code` (the `dir` parser).\n */\nconst i18nConfigSchema = z\n .strictObject({\n defaultLocale: z.string().default(\"en\"),\n /** Locale rendered for a missing translation; `null` disables fallback. */\n fallbackLocale: z.string().nullable().optional(),\n /** Drop the URL prefix for the default locale (`/`, `/fr/…`). Static-safe. */\n hideDefaultLocalePrefix: z.boolean().default(true),\n locales: z.array(localeSchema).min(1),\n /** `\"dir\"`: locale directories (`fr/page.mdx`). `\"dot\"`: filename suffix (`page.fr.mdx`). */\n parser: z.enum([\"dir\", \"dot\"]).default(\"dir\"),\n /**\n * Send a visitor who lands on the default language's home page to the\n * home page in their browser's preferred language, until they pick a\n * language with the switcher. Off by default.\n */\n routeByBrowserLanguage: z.boolean().default(false),\n /** Per-locale UI string overrides: `{ fr: { search: { button: \"…\" } } }`. */\n ui: uiLocaleOverridesSchema.optional(),\n })\n .superRefine((value, ctx) => {\n const codes = new Set(value.locales.map((locale) => locale.code));\n if (!codes.has(value.defaultLocale)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `i18n.defaultLocale \"${value.defaultLocale}\" must match one of i18n.locales.`,\n path: [\"defaultLocale\"],\n });\n }\n if (\n value.fallbackLocale !== null &&\n value.fallbackLocale !== undefined &&\n !codes.has(value.fallbackLocale)\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `i18n.fallbackLocale \"${value.fallbackLocale}\" must match one of i18n.locales.`,\n path: [\"fallbackLocale\"],\n });\n }\n });\n\n/**\n * Version ids must start with a letter (`v1.0`, not `1.0`): the id doubles as\n * the snapshot directory name, and a leading digit would collide with the\n * numeric-prefix ordering convention (`01-intro.mdx`), which strips `1.0/` to\n * `0/`. The rest allows word characters, dots, and hyphens — URL-safe as-is.\n */\nexport const VERSION_ID = /^[A-Za-z][\\w.-]*$/u;\n\n/** A frozen documentation snapshot: a directory under the content root. */\nconst archivedVersionSchema = z.strictObject({\n /**\n * The \"you're viewing an old version\" notice: `true` for the built-in\n * message, a string for custom copy, `false` to hide it.\n */\n banner: z.union([z.boolean(), z.string()]).default(true),\n /**\n * Where this version's pages point their canonical URL: `latest` targets the\n * same page in the current docs when it still exists (self otherwise), so\n * search engines treat the live page as authoritative without deindexing\n * version-only content. `self` keeps every page authoritative.\n */\n canonical: z.enum([\"latest\", \"self\"]).default(\"latest\"),\n /** Directory name under the content root, and the URL segment. */\n id: z\n .string()\n .regex(\n VERSION_ID,\n 'Version ids must start with a letter (e.g. \"v1.0\") and contain only letters, digits, dots, hyphens, and underscores.'\n ),\n /** Switcher label; defaults to the id. */\n label: z.string().optional(),\n /** Emit `noindex` on every page of this version. */\n noindex: z.boolean().default(false),\n});\n\n/**\n * Docs versioning. Opt-in: the latest docs live at the content root with\n * unprefixed URLs, and each archived version is a frozen snapshot directory\n * (`content/docs/<id>/`) cut with `blume version <id>`. Archived means frozen:\n * snapshots carry their own translations and are never retranslated.\n */\nconst versionsConfigSchema = z\n .strictObject({\n /** Frozen snapshots, newest first — this order is the switcher order. */\n archived: z.array(archivedVersionSchema).default([]),\n /** Labels the unprefixed tree (the latest docs) in the switcher. */\n current: z.strictObject({\n /** Small tag rendered next to the label (e.g. `Latest`). */\n badge: z.string().optional(),\n label: z.string(),\n }),\n switcher: z\n .strictObject({\n /**\n * Where switching lands when the page has no equivalent in the target\n * version: `same-page` goes to the equivalent when it exists (version\n * root otherwise); `root` always goes to the version root.\n */\n redirect: z.enum([\"same-page\", \"root\"]).default(\"same-page\"),\n })\n .prefault({}),\n })\n .superRefine((value, ctx) => {\n const seen = new Set<string>();\n for (const [position, version] of value.archived.entries()) {\n if (seen.has(version.id)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `versions.archived declares \"${version.id}\" more than once.`,\n path: [\"archived\", position, \"id\"],\n });\n }\n seen.add(version.id);\n }\n });\n\nconst URL_ORIGIN = /^[a-z][\\d+.a-z-]*:\\/\\/[^/]*/iu;\n\n/**\n * The shape each end must start with: `from` is always a path on this site,\n * `to` may also leave it. A path without its leading slash would never gain\n * `basePath` or the deployment base, and hosts read it relative to nothing.\n */\nconst REDIRECT_START = {\n from: {\n allows: (path: string) => path.startsWith(\"/\"),\n message:\n \"redirects take root-relative paths: `from` must start with `/` (`/old-page`, not `old-page`).\",\n },\n to: {\n allows: (path: string) => path.startsWith(\"/\") || URL_ORIGIN.test(path),\n message:\n \"redirects take root-relative paths or full URLs: `to` must start with `/` (`/new-page`, not `new-page`) or be an absolute URL (`https://…`).\",\n },\n};\n\nconst redirectPath = (end: \"from\" | \"to\") =>\n z.string().refine(REDIRECT_START[end].allows, {\n message: REDIRECT_START[end].message,\n });\n\n/**\n * A redirect: an exact path, or a pattern (`/beta/:slug*`, `/old/*`) whose\n * captures `to` may read (see `core/redirect-patterns.ts`).\n */\nconst redirectSchema = z\n .strictObject({\n from: redirectPath(\"from\"),\n status: z\n .union([z.literal(301), z.literal(302), z.literal(307), z.literal(308)])\n .default(301),\n to: redirectPath(\"to\"),\n })\n .superRefine((redirect, ctx) => {\n const error = redirectPatternError(redirect.from, redirect.to);\n if (error) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: error.message,\n path: [error.end],\n });\n }\n });\n\n/**\n * One authorized remote image source, passed through to Astro's\n * `image.remotePatterns`. Wildcards follow Astro's rules: `hostname` accepts\n * `**.example.com` (any depth) or `*.example.com` (one level), `pathname`\n * accepts `/dir/**` or `/dir/*` the same way.\n */\nconst imageRemotePatternSchema = z.strictObject({\n hostname: z.string().optional(),\n pathname: z.string().optional(),\n port: z.string().optional(),\n protocol: z.string().optional(),\n});\n\n/**\n * Image optimization (`image`). Local images referenced by relative path\n * (`![alt](./diagram.png)`) are optimized at build time automatically —\n * compressed, converted to WebP, and stamped with intrinsic dimensions.\n * Remote images are only optimized when their host is authorized here;\n * both fields map directly onto Astro's `image` config.\n */\nconst imageConfigSchema = z.strictObject({\n /** Hosts whose remote images may be optimized, e.g. `[\"cdn.example.com\"]`. */\n domains: z.array(z.string()).default([]),\n /** Pattern-based host authorization, for wildcards `domains` can't express. */\n remotePatterns: z.array(imageRemotePatternSchema).default([]),\n});\n\n/**\n * X (Twitter) attribution. The account fields feed `twitter:site` (the site's\n * account) and `twitter:creator` (the author's), which is the one piece of X\n * card metadata with no Open Graph equivalent to fall back to — everything else\n * on the card is read from `og:*`.\n */\nconst xConfigSchema = z.strictObject({\n /** The author's account, overridable per page via `seo.x.creator`. */\n creator: xHandleSchema,\n /** The site's own account, e.g. `@blume`. */\n handle: xHandleSchema,\n});\n\n/**\n * Any CSS color. Takumi parses the full grammar, so this stays unvalidated\n * here and a bad value fails the OG prerender with a parse error naming it —\n * the same fail-fast the card's accent relies on. Validating hex-only here\n * would reject `oklch(…)`, which `theme.accent` (the card's default accent)\n * already accepts.\n */\nconst ogColorSchema = z.string();\n\nconst ogPaletteSchema = z.strictObject({\n accent: ogColorSchema.optional(),\n background: ogColorSchema.optional(),\n border: ogColorSchema.optional(),\n foreground: ogColorSchema.optional(),\n muted: ogColorSchema.optional(),\n});\n\n/**\n * A font to load into the OG card renderer. A bare string is a Google Fonts\n * family name; the name-only object form pins the weight (a number, a list, or\n * a variable range like `\"100..900\"`) and style, fetched from Google Fonts at\n * build. The `src` form reads a local font file from the project instead.\n * Either way Takumi does per-glyph fallback, so a family covering a script\n * (e.g. Noto Sans JP for CJK) fixes tofu without touching how Latin renders.\n */\nconst ogFontWeightSchema = z.union([\n z.number().int().positive(),\n z.array(z.number().int().positive()),\n z.string().regex(/^\\d+\\.\\.\\d+$/u),\n]);\nconst ogFontStyleSchema = z.enum([\"normal\", \"italic\"]);\nconst ogFontSchema = z.union([\n z.string(),\n z.strictObject({\n name: z.string(),\n style: z.union([ogFontStyleSchema, z.array(ogFontStyleSchema)]).optional(),\n weight: ogFontWeightSchema.optional(),\n }),\n /** A local font file, read from the project at build. */\n z.strictObject({\n name: z.string(),\n src: z.string().min(1),\n style: ogFontStyleSchema.optional(),\n weight: z.number().int().positive().optional(),\n }),\n]);\n\nconst ogConfigSchema = z.strictObject({\n /**\n * Site-wide card subtitle, shown on pages without their own description.\n * Defaults to the site description; a string overrides it, `false` renders\n * every card without a subtitle (page descriptions included).\n */\n description: z.union([z.string(), z.literal(false)]).optional(),\n /**\n * Generate a per-page Open Graph image. Defaults to on once a deployment\n * site URL is known (set or auto-detected) and off otherwise, since\n * `og:image` must be absolute to be useful to crawlers — resolved in\n * `loadConfig`. An explicit value here always wins.\n */\n enabled: z.boolean().optional(),\n /**\n * Fonts for the generated card, replacing the default stack (Takumi's\n * Latin-only built-in font plus a Noto fallback per script). Google\n * families are fetched from Google Fonts at build.\n */\n fonts: z.array(ogFontSchema).optional(),\n /**\n * Local SVG used in the generated card instead of the site logo; `false`\n * renders the card without any brand mark.\n */\n logo: z.union([z.string(), z.literal(false)]).optional(),\n /** Optional generated-card colors. */\n palette: ogPaletteSchema.optional(),\n /**\n * Footer site text. Defaults to the deployment site's host plus\n * `deployment.base` (`docs.acme.com`, `user.github.io/repo`); a string\n * overrides it, `false` hides it.\n */\n site: z.union([z.string(), z.literal(false)]).optional(),\n /**\n * Card headlines for custom `.astro` pages, keyed by route (`\"/\"`, `\"/cli\"`).\n * A custom page has no frontmatter to read, so its card is otherwise titled\n * by humanizing its last URL segment (`/cli` → \"Cli\"); an entry here wins.\n * Content pages always take their card headline from the page title.\n */\n titles: z.record(z.string(), z.string()).optional(),\n});\n\nconst rssConfigSchema = z.strictObject({\n enabled: z.boolean().default(true),\n /** Max items per feed, newest first. */\n limit: z.number().int().positive().default(50),\n /** Content types that each get a feed at `/<type>/rss.xml`. */\n types: z.array(z.string()).default([\"blog\", \"changelog\"]),\n});\n\n/**\n * robots.txt `Content-Signal` preferences — the emerging content-usage\n * declaration for how crawlers may reuse the site. Each field maps to one\n * signal:\n * - `search` → `search` (traditional and AI search indexing)\n * - `aiInput` → `ai-input` (grounding / RAG use at answer time)\n * - `aiTrain` → `ai-train` (model training)\n */\nconst contentSignalsObjectSchema = z.strictObject({\n aiInput: z.boolean().default(true),\n aiTrain: z.boolean().default(true),\n search: z.boolean().default(true),\n});\n\n/**\n * Content signals accept a boolean shorthand or a per-signal object, and\n * normalize to `{ search, aiInput, aiTrain }` — or `null` when disabled, so\n * robots.txt omits the declaration entirely. On by default (`true`): Blume\n * declares the docs open to search and agents. `false` opts out; an object\n * restricts individual signals (unset signals stay `yes`).\n */\nconst contentSignalsSchema = z\n .union([z.boolean(), contentSignalsObjectSchema])\n .transform((value) => {\n if (value === true) {\n return contentSignalsObjectSchema.parse({});\n }\n if (value === false) {\n return null;\n }\n return value;\n });\n\n/** A schema.org `PostalAddress`, any part of which may be given. */\nconst postalAddressSchema = z.strictObject({\n addressCountry: z.string().optional(),\n addressLocality: z.string().optional(),\n addressRegion: z.string().optional(),\n postalCode: z.string().optional(),\n streetAddress: z.string().optional(),\n});\n\n/**\n * `seo.organization`: the organization behind the site, emitted on every page\n * as a schema.org `Organization` node (see `seo/jsonld.ts`). Name and URL\n * default to the site's; contact details become a `ContactPoint`, the address\n * a `PostalAddress` — what agents check to verify a business.\n */\nconst organizationConfigSchema = z.strictObject({\n address: postalAddressSchema.optional(),\n contactType: z.string().default(\"customer support\"),\n email: z.email().optional(),\n logo: z.string().optional(),\n name: z.string().optional(),\n sameAs: z.array(z.url()).default([]),\n telephone: z.string().optional(),\n url: z.url().optional(),\n});\n\n/**\n * `seo.software`: the product the site documents, emitted on the homepage as\n * a schema.org `SoftwareApplication` node. `true` takes every default (name\n * and description from the site, category `DeveloperApplication`).\n */\nconst softwareConfigSchema = z.strictObject({\n applicationCategory: z.string().default(\"DeveloperApplication\"),\n description: z.string().optional(),\n license: z.string().optional(),\n name: z.string().optional(),\n operatingSystem: z.string().optional(),\n price: z.union([z.number().nonnegative(), z.string()]).optional(),\n priceCurrency: z.string().default(\"USD\"),\n sameAs: z.array(z.url()).default([]),\n});\n\ntype SoftwareResolved = z.output<typeof softwareConfigSchema>;\n\n/** Discoverability features: OG images, feeds, sitemap, structured data. */\nconst seoConfigFields = {\n /**\n * Meta tags written into every page's head, name to content: site\n * verification, `theme-color`, and anything else Blume has no setting for.\n * A tag Blume writes itself is refused with the setting that controls it.\n */\n metatags: z\n .record(z.string().min(1), z.string())\n .optional()\n .superRefine((tags, ctx) => {\n for (const name of Object.keys(tags ?? {})) {\n const owner = ownedMetatag(name);\n if (owner) {\n ctx.addIssue({\n code: \"custom\",\n message: `seo.metatags can't set \"${name}\": Blume writes that tag. Set it with ${owner}.`,\n path: [name],\n });\n }\n }\n }),\n og: ogConfigSchema.default({}),\n /** The organization behind the site, as an `Organization` JSON-LD node. */\n organization: organizationConfigSchema.optional(),\n /** Generate robots.txt (with a Sitemap reference when available). */\n robots: z.boolean().default(true),\n rss: rssConfigSchema.prefault({}),\n /** Generate sitemap.xml (requires deployment.site). */\n sitemap: z.boolean().default(true),\n /** The documented product, as a homepage `SoftwareApplication` node. */\n software: z\n .union([z.boolean(), softwareConfigSchema])\n .optional()\n .transform((value): SoftwareResolved | undefined => {\n if (value === true) {\n return softwareConfigSchema.parse({});\n }\n return value === false ? undefined : value;\n }),\n /** Emit schema.org JSON-LD in each page's <head>. */\n structuredData: z.boolean().default(true),\n /** X (Twitter) account attribution for share cards. */\n x: xConfigSchema.default({}),\n};\n\nconst seoConfigSchema = z.strictObject(\n seoConfigFields,\n removedKeysHint({\n agentReadability: \"seo.agentReadability moved to agents.agentReadability.\",\n contentSignals: \"seo.contentSignals moved to agents.contentSignals.\",\n })\n);\n\n/**\n * The machine-readable surface agents consume: the JSON API, `llms.txt`, the\n * MCP server, published skills, discovery manifests, and the robots.txt\n * usage policy. Everything reader-facing that talks to a model (the assistant, Open\n * in chat) stays under `ai`.\n */\nconst agentsConfigSchema = z.strictObject({\n /**\n * Emit `agent-readability.json` at the site root: a manifest that indexes\n * the agent-facing surface (llms.txt, Markdown mirrors, MCP server, feeds)\n * so agents can discover it without scraping HTML.\n */\n agentReadability: z.boolean().default(true),\n /**\n * The JSON docs API: the page index, per-page JSON, and navigation under\n * `/api/docs/` (prerendered, so a static site serves them from files), the\n * live search endpoint on server output, and the OpenAPI description of\n * the whole machine-readable surface at `/openapi.json`. On by default.\n */\n api: z.boolean().default(true),\n /**\n * The AI Catalog / ARD manifest at `/.well-known/ai-catalog.json` (mirrored\n * at `/.well-known/ard.json`): one entry per agent-facing resource the site\n * publishes — the MCP server card, each agent skill, the JSON docs API's\n * OpenAPI document, each rendered API reference, and llms.txt — so agent\n * registries can index the site from its domain alone. Needs a\n * `deployment.site` (identifiers are domain-anchored URNs). On by default;\n * the object form overrides the generated representative queries.\n */\n catalog: z\n .union([z.boolean(), aiCatalogObjectSchema])\n .default(true)\n .transform((value): AiCatalogResolved =>\n isBoolean(value) ? { enabled: value, queries: {} } : value\n ),\n /** robots.txt `Content-Signal` usage declaration (on by default). */\n contentSignals: contentSignalsSchema.prefault(true),\n /**\n * `llms.txt`/`llms-full.txt` emission. A bare boolean toggles it; the object\n * form adds `openapi: false` to keep generated API reference pages out of\n * both files (e.g. when the configured spec is example content) and\n * `details`, free-form Markdown placed after the summary — the llms.txt\n * spec's details block, where a site tells agents when to reach for it.\n */\n llmsTxt: z\n .union([z.boolean(), llmsTxtObjectSchema])\n .default(true)\n .transform((value): LlmsTxtResolved =>\n isBoolean(value) ? { enabled: value, openapi: true } : value\n ),\n // Serializers for the agent-facing Markdown downlevel (the `.md` mirror,\n // llms-full.txt, MCP get_page), keyed by JSX name. Functions live here —\n // not in components.tsx — because the config file is executed at build\n // time while the components file is only statically analyzed. A same-name\n // entry replaces the built-in serializer.\n // Two-argument `z.record` — the single-argument form throws at\n // schema-construction time under Zod 4 (see uiStringsOverrideSchema).\n markdownComponents: z\n .record(\n z.string(),\n z.custom<ComponentMarkdown>(\n (value): value is ComponentMarkdown => typeof value === \"function\",\n {\n message: \"Expected a serializer function.\",\n }\n )\n )\n .default({}),\n /** Expose the docs as an MCP server for connecting agents. */\n mcp: mcpConfigSchema.prefault({}),\n /**\n * Generate the site's own agent skill: a `SKILL.md` named after the site,\n * built from its navigation, page descriptions, and agent surfaces, served\n * at `/skill.md` and in the skills discovery index. Needs a\n * `deployment.site`. A skill in `agents.skills` with the same name replaces\n * it. On by default.\n */\n skillMd: z.boolean().default(true),\n /**\n * Publish Agent Skills for discovery: a directory (resolved against the\n * project root) whose subdirectories each hold a `SKILL.md`. The build\n * copies each skill under `/.well-known/agent-skills/` — a lone `SKILL.md`\n * verbatim, a skill with supporting files as a `.tar.gz` — and emits the\n * discovery index (`index.json`) with SHA-256 digests per the Agent Skills\n * Discovery RFC.\n */\n skills: z.string().min(1).optional(),\n /**\n * Web Bot Auth (IETF `webbotauth`): publish the org's HTTP Message\n * Signature public keys at `/.well-known/http-message-signatures-directory`\n * so sites receiving requests from the org's agents can verify them.\n * Opt-in and public-keys-only — the private keys live wherever the signing\n * agents run, never in the site.\n */\n webBotAuth: z\n .strictObject({\n keys: z.array(publicJwkSchema).default([]),\n })\n .prefault({}),\n /**\n * WebMCP: register in-page tools (search, page Markdown, the docs index)\n * on the browser's model context so agentic browsers can drive the docs\n * without a separate MCP connection. A tiny script that no-ops in browsers\n * without the API; on by default.\n */\n webmcp: z.boolean().default(true),\n});\n\n/**\n * The GitHub instance's origin, normalized. Repo, edit, and API URLs are all\n * built by appending to this, so it is reduced to a bare origin: a trailing\n * slash would double the separator, and a path, query, fragment, or embedded\n * credentials would land in the middle of every generated link.\n */\nconst githubOriginSchema = httpUrlSchema.transform(\n (value) => new URL(value).origin\n);\n\n/**\n * A REST API base: an origin plus an optional path, since Enterprise Server\n * serves the API from `/api/v3`. Anything past the path is dropped for the same\n * reason the host is reduced — `/repos/{owner}/{repo}` is appended as a string,\n * so a query would swallow the route and a fragment would strip it from the\n * request entirely, leaving a lookup that silently returns the wrong thing.\n */\nconst githubApiSchema = httpUrlSchema.transform((value) => {\n const { origin, pathname } = new URL(value);\n return trimEnd(`${origin}${pathname}`, \"/\");\n});\n\nconst githubConfigSchema = z.strictObject({\n /** REST API base. Derived from `host` when unset. */\n api: githubApiSchema.optional(),\n branch: z.string().default(\"main\"),\n /** Path from the repo root to the project root (for monorepos). */\n dir: z.string().optional(),\n /** Origin of the GitHub instance, for Enterprise installations. */\n host: githubOriginSchema.default(PUBLIC_HOST_URL),\n owner: z.string(),\n repo: z.string(),\n});\n\n/** The theme fields the structural code-theme check inspects. */\ninterface CodeThemeFields {\n colors?: unknown;\n settings?: unknown;\n tokenColors?: unknown;\n}\n\n/** A non-null, non-array object — the floor for a theme and its `colors` map. */\nconst isThemeObject = <Value>(value: Value): value is Value & CodeThemeFields =>\n typeof value === \"object\" && value !== null && !Array.isArray(value);\n\nconst codeThemeSchema = z.custom<CodeTheme>((value) => {\n if (isString(value)) {\n return true;\n }\n if (!isThemeObject(value)) {\n return false;\n }\n // Token rules live in `settings` (Shiki's canonical field, also the TextMate\n // form themes like createCssVariablesTheme() produce) or `tokenColors` (the\n // VS Code spelling Shiki falls back to). A colors-only theme (editor fg/bg,\n // no token rules) is also valid — Shiki renders it from `colors` alone. Each\n // field present must have the right shape, and at least one must be present.\n const settingsValid =\n value.settings === undefined || Array.isArray(value.settings);\n const tokenColorsValid =\n value.tokenColors === undefined || Array.isArray(value.tokenColors);\n const colorsValid = value.colors === undefined || isThemeObject(value.colors);\n const hasContent =\n value.settings !== undefined ||\n value.tokenColors !== undefined ||\n value.colors !== undefined;\n return settingsValid && tokenColorsValid && colorsValid && hasContent;\n}, \"Expected a Shiki theme name or custom theme object\");\n\nconst codeBlockThemeSchema = z.strictObject({\n dark: codeThemeSchema.default(\"github-dark\"),\n light: codeThemeSchema.default(\"github-light\"),\n});\n\n/**\n * `<Component />` example previews. A string is shorthand for `{ source }`:\n * where examples live, relative to the project root (default `examples`).\n * `source` may be a glob (anything with `*`/`?`/`[]`/`{}`/`!`), in which case\n * only matching files are discovered and each `<Component path>` key is\n * relative to the glob's static prefix — use this for a registry layout that\n * colocates component sources with their examples\n * (`registry/<pkg>/**\\/examples/*`), leaving the sources (which have no\n * default export to wrap) out.\n *\n * `css` names a stylesheet (relative to the project root) injected into every\n * preview frame after Blume's default tokens. Previews render in an isolated\n * iframe that the site's docs styles never reach, so this is where design\n * tokens for the previewed components live — e.g. shadcn variables and\n * `@theme` mappings. Tailwind itself is already provided; the file should\n * hold tokens and custom styles, not another `@import \"tailwindcss\"`.\n */\nconst examplesConfigSchema = z\n .union([\n z.string(),\n z.strictObject({\n css: z.string().optional(),\n source: z.string().default(\"examples\"),\n }),\n ])\n .transform((value): { css?: string; source: string } =>\n isString(value) ? { source: value } : value\n );\n\n/**\n * \"Last updated\" timestamps for content pages. `false` (default) disables the\n * feature; `\"git\"` derives each page's date from the repository history;\n * `\"frontmatter\"` never runs git and reads only the page's own field. A page's\n * `lastModified` frontmatter always wins. The 1.x `true` and `{ type }` forms\n * fail with the hint below.\n */\nconst lastModifiedConfigSchema = z.union(\n [z.literal(false), z.enum([\"git\", \"frontmatter\"])],\n {\n error: (issue) =>\n issue.code === \"invalid_union\"\n ? 'lastModified takes false, \"git\", or \"frontmatter\": `true` became \"git\" and `{ type: \"…\" }` became the bare string.'\n : undefined,\n }\n);\n\n/**\n * How the \"last updated\" stamp and the changelog timeline render their dates —\n * a curated pass-through to `Intl.DateTimeFormat`, shared by both surfaces so\n * they read alike. Defaults to `{ dateStyle: \"long\" }`. Both stamps format in\n * UTC unless a `timeZone` is given, so a date reads the same regardless of the\n * build machine's zone. `dateStyle` is a preset that can't be combined with the\n * individual component fields (`year`, `month`, …), matching `Intl`'s own rule.\n */\n/** The `dateFormat` fields that choose the date's shape (length, components). */\nconst DATE_FORM_FIELDS = [\n \"dateStyle\",\n \"weekday\",\n \"era\",\n \"year\",\n \"month\",\n \"day\",\n] as const;\n\n/**\n * Whether `Intl` knows a time zone. An unknown one (`Asia/Tokio`) throws a\n * RangeError the first time a date is formatted, deep in a page render, so it\n * is caught here where the error can point at `dateFormat.timeZone`.\n */\nconst isKnownTimeZone = (timeZone: string): boolean => {\n try {\n Intl.DateTimeFormat(\"en\", { timeZone });\n return true;\n } catch {\n return false;\n }\n};\n\nconst dateFormatConfigSchema = z\n .strictObject({\n /** Calendar system (e.g. `japanese`, `buddhist`). */\n calendar: z.string().optional(),\n /** Preset date length; mutually exclusive with the component fields. */\n dateStyle: z.enum([\"full\", \"long\", \"medium\", \"short\"]).optional(),\n /** Day representation. */\n day: z.enum([\"numeric\", \"2-digit\"]).optional(),\n /** Era representation (e.g. the Japanese imperial era). */\n era: z.enum([\"long\", \"short\", \"narrow\"]).optional(),\n /** Month representation. */\n month: z.enum([\"numeric\", \"2-digit\", \"long\", \"short\", \"narrow\"]).optional(),\n /** Numbering system (e.g. `latn`, `arab`). */\n numberingSystem: z.string().optional(),\n /** IANA time zone (e.g. `Asia/Tokyo`). Defaults to `UTC`. */\n timeZone: z\n .string()\n .refine(isKnownTimeZone, {\n message:\n 'Unknown time zone; use an IANA name like \"Asia/Tokyo\" or \"UTC\".',\n })\n .optional(),\n /** Weekday representation. */\n weekday: z.enum([\"long\", \"short\", \"narrow\"]).optional(),\n /** Year representation. */\n year: z.enum([\"numeric\", \"2-digit\"]).optional(),\n })\n .refine(\n (value) =>\n value.dateStyle === undefined ||\n (value.weekday === undefined &&\n value.era === undefined &&\n value.year === undefined &&\n value.month === undefined &&\n value.day === undefined),\n {\n message:\n \"dateFormat.dateStyle can't be combined with weekday/era/year/month/day; use one or the other.\",\n }\n )\n // `timeZone`, `calendar`, and `numberingSystem` don't pick a shape, so a\n // format that sets only those keeps the long default instead of falling to\n // Intl's bare numeric date (`7/21/2026`).\n .transform((value) =>\n DATE_FORM_FIELDS.some((field) => value[field] !== undefined)\n ? value\n : { ...value, dateStyle: \"long\" as const }\n );\n\n/** Code rendering options (`markdown.code`). */\nconst codeConfigSchema = z.strictObject({\n /**\n * Show a brand language icon in the code-block header (TypeScript, Python,\n * …). On by default; recognized languages only.\n */\n icons: z.boolean().default(true),\n /**\n * Light/dark Shiki themes for every code surface: fenced blocks, inline\n * `` `code`{:lang} ``, `<CodeBlock>`, and `<Diff>`.\n */\n theme: codeBlockThemeSchema.prefault({}),\n /**\n * Wrap long lines instead of scrolling horizontally. Off by default, so\n * code keeps its original line breaks and overflows into a scroll area.\n */\n wrap: z.boolean().default(false),\n});\n\nconst markdownConfigFields = {\n /** Code rendering: language icons, syntax themes, and line wrapping. */\n code: codeConfigSchema.prefault({}),\n /**\n * Open external Markdown links (absolute `http(s)://` and `//host` URLs) in\n * a new tab, like Blume's own header and sidebar links: `target=\"_blank\"`,\n * `rel=\"noreferrer\"`, an arrow icon, and a screen-reader \"Opens in a new\n * tab\" hint. Off by default; site routes, fragments, and `mailto:`/`tel:`\n * links are never affected.\n */\n externalLinks: z.boolean().default(false),\n /**\n * Wrap each `##`–`######` heading in a link to its own anchor so readers can\n * click to copy, bookmark, or share a permalink to that section. On by\n * default; set to `false` to render plain headings.\n */\n headingAnchors: z.boolean().default(true),\n /**\n * Make content images click-to-zoom (open in a lightbox). On by default;\n * opt a single image out with `data-no-zoom`.\n */\n imageZoom: z.boolean().default(true),\n};\n\nconst markdownConfigSchema = z.strictObject(\n markdownConfigFields,\n removedKeysHint({\n codeBlocks:\n \"markdown.codeBlocks was merged into markdown.code: move theme: { light, dark } under markdown.code.\",\n })\n);\n\n/** React island behavior (`react`). */\nconst reactConfigSchema = z.strictObject({\n /**\n * Auto-memoize React components/hooks with the React Compiler\n * (`oxc-transform-react`). On by default whenever React is enabled\n * (a project `.tsx`/`.jsx`, a React island/example/override, or the assistant); set\n * to `false` to skip the compiler pass.\n */\n compiler: z.boolean().default(true),\n});\n\n/**\n * Opt-in custom frontmatter keys. `extend` maps each extra key a project's\n * pages may carry (e.g. `owner`, `reviewedAt`) to a validation schema; the\n * page schema stays strict for everything else, so typo-catching is preserved.\n * Schemas are consumed through the Standard Schema `~standard` contract —\n * never Zod's own API — so the consumer's zod (any version), Valibot, or\n * ArkType all work (see `standard-schema.ts`). Every declared key is validated\n * on every page, absent ones included, so a required schema enforces the key\n * site-wide; mark it `.optional()` to validate only when present. Built-in\n * frontmatter fields can't be redeclared — they're load-bearing (routing,\n * sidebar, SEO), and shadowing one would silently change its semantics.\n */\nconst frontmatterConfigSchema = z.strictObject({\n extend: customKeySchemaRecord(\"frontmatter.extend\"),\n});\n\n/** Full user-facing config schema. All fields optional with defaults. */\n/**\n * Table-of-contents config. `true`/`false` toggles it; an object narrows the\n * heading range. Normalized to `{ enabled, minLevel, maxLevel }` (default: on,\n * H2–H3, matching the historical hardcoded range).\n */\nconst tocConfigSchema = z\n .union([\n z.boolean(),\n z.strictObject({\n maxHeadingLevel: z.number().int().min(1).max(6).optional(),\n minHeadingLevel: z.number().int().min(1).max(6).optional(),\n }),\n ])\n .default(true)\n .transform((value) => {\n if (isBoolean(value)) {\n return { enabled: value, maxLevel: 3, minLevel: 2 };\n }\n return {\n enabled: true,\n maxLevel: value.maxHeadingLevel ?? 3,\n minLevel: value.minHeadingLevel ?? 2,\n };\n })\n // Checked after defaults apply, so `{ minHeadingLevel: 5 }` (default max 3)\n // is caught too — an inverted range would silently render an empty TOC.\n .refine((value) => value.minLevel <= value.maxLevel, {\n message:\n \"toc.minHeadingLevel must be less than or equal to toc.maxHeadingLevel.\",\n });\n\nexport const blumeConfigSchema = z\n .strictObject(\n {\n agents: agentsConfigSchema.prefault({}),\n ai: aiConfigSchema.prefault({}),\n // Adapters from `blume/analytics`, each a serializable descriptor.\n analytics: analyticsConfigSchema,\n api: apiConfigSchema.prefault({}),\n banner: bannerConfigSchema.optional(),\n /**\n * Site-wide mount point prepended to every generated route (e.g. `/docs`),\n * while staying invisible to the sidebar/nav tree. Distinct from a per-source\n * `prefix` (which creates a group) and from `deployment.base` (Astro's\n * host-subdirectory base); the two compose. Normalized to `\"\"` or `/seg`.\n */\n basePath: z\n .string()\n // Normalizing would turn a URL into `/https:/docs.example.com/docs`\n // and keep a query or fragment inside every route.\n .refine((value) => !URL_ORIGIN.test(value) && !/[#?]/u.test(value), {\n message:\n 'basePath takes a path like \"/docs\", not a URL: no scheme, host, query, or fragment. The site\\'s origin goes in deployment.site.',\n })\n .optional()\n .transform((value) => normalizeBasePath(value)),\n changelog: changelogConfigSchema.optional(),\n // An adapter from `blume/consent`; analytics waits for the reader.\n consent: consentConfigSchema,\n content: contentConfigSchema.prefault({}),\n /**\n * Date presentation for the \"last updated\" stamp and the changelog timeline.\n * Pass-through `Intl.DateTimeFormat` options; defaults to `{ dateStyle: \"long\" }`.\n */\n dateFormat: dateFormatConfigSchema.default({ dateStyle: \"long\" }),\n /**\n * A host adapter from `blume/deploy` (`vercel()`, `netlify()`,\n * `cloudflare()`, `node()`) for a server build on that host, or the plain\n * `{ site, base }` form for a static build anywhere. Resolves to the\n * adapter's descriptor with `output` filled in; `static` when unset.\n */\n deployment: resolvedDeploymentSchema.prefault({}),\n description: z.string().optional(),\n /**\n * Where `<Component path>` resolves live previews and their source from.\n * A string is shorthand for `{ source }` — the directory (or glob, for\n * colocated registry layouts) under the project root that holds example\n * files. The object form adds `css`: a stylesheet injected into every\n * preview frame (design tokens, shadcn variables, `@theme` mappings).\n */\n examples: examplesConfigSchema.prefault(\"examples\"),\n export: exportConfigSchema.prefault(false),\n feedback: feedbackConfigSchema.prefault(true),\n footer: footerConfigSchema.optional(),\n /** Opt-in custom frontmatter keys, validated by user-supplied schemas. */\n frontmatter: frontmatterConfigSchema.prefault({}),\n github: githubConfigSchema.optional(),\n i18n: i18nConfigSchema.optional(),\n image: imageConfigSchema.prefault({}),\n integrations: z.array(z.custom<AstroIntegration>()).default([]),\n lastModified: lastModifiedConfigSchema.default(false),\n logo: logoConfigSchema.optional(),\n markdown: markdownConfigSchema.prefault({}),\n narration: narrationConfigSchema.prefault(false),\n navigation: navigationConfigSchema.prefault({}),\n // An adapter from `blume/ratelimit`, `memory()` by default; `false` is off.\n rateLimit: rateLimitConfigSchema,\n react: reactConfigSchema.prefault({}),\n redirects: z.array(redirectSchema).default([]),\n /** API references: adapters from `blume/reference`, each a serializable descriptor. */\n reference: referenceConfigSchema,\n search: searchConfigSchema.prefault({}),\n seo: seoConfigSchema.prefault({}),\n theme: themeConfigSchema.prefault({}),\n title: z.string().default(\"Documentation\"),\n toc: tocConfigSchema,\n /**\n * Content variables: `{{name}}` in a page body reads the value (see\n * `core/variables.ts`). Names take letters, digits, `_`, and `-`;\n * values are one line, so a substitution never moves the lines a\n * diagnostic points at.\n */\n variables: z\n .record(\n z.string().regex(VARIABLE_NAME, {\n message:\n \"Variable names take letters, digits, `_`, and `-`, like `version` or `api-url`.\",\n }),\n z.string().refine((value) => !/[\\r\\n]/u.test(value), {\n message: \"A variable's value must fit on one line.\",\n })\n )\n .default({}),\n versions: versionsConfigSchema.optional(),\n },\n {\n // The 1.x `openapi`/`asyncapi`/`graphql` blocks name the `reference` list\n // that replaced them, alongside every other issue in the config.\n error: (issue) =>\n issue.code === \"unrecognized_keys\"\n ? removedReferenceKeysHint(issue.keys)\n : undefined,\n }\n )\n .superRefine((config, ctx) => {\n // A version id that is also a configured locale code would make a leading\n // `<id>/` directory ambiguous between the two axes — refuse it outright so\n // detection order (version first, then locale) never has to guess.\n if (config.versions && config.i18n) {\n const localeCodes = new Set(\n config.i18n.locales.map((locale) => locale.code.toLowerCase())\n );\n for (const [position, version] of config.versions.archived.entries()) {\n if (localeCodes.has(version.id.toLowerCase())) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Version id \"${version.id}\" is also a configured locale code — rename the version (e.g. \"v${version.id}\").`,\n path: [\"versions\", \"archived\", position, \"id\"],\n });\n }\n }\n }\n // A custom key is declared site-wide (`frontmatter.extend`) or per-type\n // (`content.types`), never both — two schemas for one key would make\n // precedence on pages of that type ambiguous.\n for (const [typeName, typeConfig] of Object.entries(config.content.types)) {\n for (const key of Object.keys(typeConfig.frontmatter)) {\n if (Object.hasOwn(config.frontmatter.extend, key)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `\"${key}\" is already declared in frontmatter.extend and cannot be redeclared for type \"${typeName}\".`,\n path: [\"content\", \"types\", typeName, \"frontmatter\", key],\n });\n }\n }\n // A facet with no declared key could never carry a value — pages can't\n // even set the key — so it's a config mistake, caught here where both\n // the per-type map and the site-wide extend are visible.\n for (const [position, facet] of typeConfig.facets.entries()) {\n if (\n !(\n Object.hasOwn(typeConfig.frontmatter, facet) ||\n Object.hasOwn(config.frontmatter.extend, facet)\n )\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Facet \"${facet}\" for type \"${typeName}\" is not a declared custom frontmatter key — add it to the type's frontmatter map or frontmatter.extend.`,\n path: [\"content\", \"types\", typeName, \"facets\", position],\n });\n }\n }\n }\n // Cloudflare's rate limiting is a Worker binding, which only a Cloudflare\n // deployment has.\n if (\n config.rateLimit?.kind === \"cloudflare\" &&\n config.deployment.kind !== \"cloudflare\"\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n 'rateLimit: cloudflare() counts with a Workers binding, so it needs `deployment: cloudflare()` from \"blume/deploy\". On another host, use upstash() or memory() from \"blume/ratelimit\".',\n path: [\"rateLimit\"],\n });\n }\n });\n\n/** Resolved config: every field present after defaults are applied. */\nexport type ResolvedConfig = z.infer<typeof blumeConfigSchema>;\n/** Resolved `dateFormat`: the `Intl.DateTimeFormat` options both date stamps share. */\nexport type ResolvedDateFormat = z.infer<typeof dateFormatConfigSchema>;\n/** Resolved `frontmatter.extend`: custom key → user-supplied schema. */\nexport type FrontmatterExtend = Record<string, StandardSchema>;\n/** Resolved i18n block (present only when the project opts into i18n). */\nexport type ResolvedI18nConfig = z.infer<typeof i18nConfigSchema>;\n/** A configured locale with display metadata. */\nexport type LocaleConfig = z.infer<typeof localeSchema>;\n/** Resolved versions block (present only when the project opts into versioning). */\nexport type ResolvedVersionsConfig = z.infer<typeof versionsConfigSchema>;\n/** A configured archived (frozen) version. */\nexport type ArchivedVersionConfig = z.infer<typeof archivedVersionSchema>;\n/**\n * User-authored config, straight off the schema. The public, hand-documented\n * authoring type is `BlumeConfig` in `./config-input.ts`, which a compile-time\n * guard keeps structurally identical to this.\n */\nexport type BlumeConfigInput = z.input<typeof blumeConfigSchema>;\n/** The resolved search backend: an adapter descriptor, or `none`. */\nexport type { ResolvedSearchAdapter } from \"../search/adapters/registry.ts\";\n/** Resolved robots.txt `Content-Signal` preferences (`null` when disabled). */\nexport type ContentSignals = z.infer<typeof contentSignalsSchema>;\n/** The resolved per-signal policy object (present when signals are enabled). */\nexport type ContentSignalPolicy = NonNullable<ContentSignals>;\n",
64
- "import { z } from \"zod\";\n\nimport type { AdapterDescriptor, JsonValue } from \"../core/adapter.ts\";\nimport { adapterDescriptorSchema } from \"../core/adapter.ts\";\nimport { unrecognizedKeysMessage } from \"../core/unrecognized-keys.ts\";\n\n/**\n * The `reasoning` levels the adapters accept: the AI SDK's top-level\n * `reasoning` values minus `provider-default`, which is what omitting the\n * option means.\n */\nexport const assistantReasoningLevels = [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n] as const;\n\n/** How much the model reasons before answering (an adapter's `reasoning`). */\nexport type AssistantReasoning = (typeof assistantReasoningLevels)[number];\n\n/**\n * The AI SDK's `providerOptions` shape, forwarded to `streamText` verbatim:\n * `{ [provider]: { [option]: value } }`. The escape hatch for model controls\n * Blume doesn't name, so a new provider knob never needs a Blume field.\n */\nexport type AssistantProviderOptions = Record<\n string,\n Record<string, JsonValue>\n>;\n\n/** The AI SDK provider package the OpenAI-compatible adapters install. */\nconst OPENAI_COMPATIBLE_DEP = \"@ai-sdk/openai-compatible\";\n\n/**\n * The AI SDK packages for the providers Blume calls directly: the package and\n * the provider factory the route imports from it.\n */\nconst OPENAI_SDK = { factory: \"createOpenAI\", pkg: \"@ai-sdk/openai\" };\nconst ANTHROPIC_SDK = { factory: \"createAnthropic\", pkg: \"@ai-sdk/anthropic\" };\nconst GEMINI_SDK = { factory: \"createGoogle\", pkg: \"@ai-sdk/google\" };\nconst GROK_SDK = { factory: \"createXai\", pkg: \"@ai-sdk/xai\" };\n\n// ---------------------------------------------------------------------------\n// Shared options\n// ---------------------------------------------------------------------------\n\n/** The options every assistant adapter accepts. */\nexport interface AssistantAdapterOptions {\n /**\n * Name of the env var holding the provider's API key. Each adapter has its\n * own default; set this only to point at a different variable.\n */\n apiKeyEnv?: string;\n /**\n * Static request headers sent to the provider on every call — a\n * caller-identifying header for a shared backend, for example. Values are\n * written into the generated route as literals, so keep secrets in\n * `apiKeyEnv` rather than here.\n */\n headers?: Record<string, string>;\n /**\n * Options passed to `streamText` as its `providerOptions`, untouched, in the\n * AI SDK's own shape (`{ openai: { textVerbosity: \"low\" } }`, say).\n */\n providerOptions?: AssistantProviderOptions;\n}\n\n/**\n * `providerOptions`, forwarded to `streamText` verbatim. JSON-only, because\n * the generated and ejected routes inline it as a literal.\n */\nconst providerOptionsSchema = z.record(\n z.string(),\n z.record(z.string(), z.json())\n);\n\n/** The shared option schema, with the adapter's own key env var default. */\nexport const sharedOptions = (apiKeyEnv: string) => ({\n apiKeyEnv: z.string().min(1).default(apiKeyEnv),\n headers: z.record(z.string(), z.string()).optional(),\n providerOptions: providerOptionsSchema.optional(),\n});\n\nconst reasoningOption = z.enum(assistantReasoningLevels).optional();\n\n// ---------------------------------------------------------------------------\n// gateway()\n// ---------------------------------------------------------------------------\n\nexport const GATEWAY_API_KEY_ENV = \"AI_GATEWAY_API_KEY\";\n/** The model the gateway adapter uses when none is configured. */\nconst DEFAULT_GATEWAY_MODEL = \"openai/gpt-5.5\";\n\n/** Options for {@link gateway}. */\nexport interface AssistantGatewayOptions extends AssistantAdapterOptions {\n /**\n * Narration only: how the voice should sound, for speech models that take\n * instructions (\"Read calmly, like a teacher\").\n */\n instructions?: string;\n /**\n * A `provider/model` id routed by the gateway. Defaults to `openai/gpt-5.5`\n * for the assistant and `openai/tts-1-hd` for narration.\n */\n model?: string;\n /**\n * How much the model reasons before answering. Sent as the AI SDK's\n * top-level `reasoning` option, which the gateway maps to the model's own\n * control (OpenAI's `reasoning_effort`, for example); the model has to\n * offer the level you pick. Omitted keeps the model's default.\n */\n reasoning?: AssistantReasoning;\n /** Narration only: the speech model's voice. Defaults to `alloy`. */\n voice?: string;\n}\n\nconst gatewayOptionsSchema = z.strictObject({\n ...sharedOptions(GATEWAY_API_KEY_ENV),\n model: z.string().min(1).default(DEFAULT_GATEWAY_MODEL),\n reasoning: reasoningOption,\n});\n\nexport type AssistantGatewayAdapter = AdapterDescriptor<\n \"gateway\",\n AssistantGatewayOptions\n>;\n\nexport const gatewayAdapterSchema = adapterDescriptorSchema(\n \"gateway\",\n gatewayOptionsSchema\n);\n\n/**\n * Route the assistant through the Vercel AI Gateway (the default), or generate\n * narration audio with one of its speech models. `model` is a\n * `provider/model` string; the key is `AI_GATEWAY_API_KEY`, or Vercel's OIDC\n * token when deployed there. Needs no provider SDK beyond the `ai` package\n * Blume ships.\n */\nexport const gateway = (\n options: AssistantGatewayOptions = {}\n): AssistantGatewayAdapter => ({\n kind: \"gateway\",\n options,\n requiredSecrets: [options.apiKeyEnv ?? GATEWAY_API_KEY_ENV],\n runtimeDeps: [],\n});\n\n// ---------------------------------------------------------------------------\n// openai()\n// ---------------------------------------------------------------------------\n\nconst OPENAI_API_KEY_ENV = \"OPENAI_API_KEY\";\n\n/** Options for {@link openai}. */\nexport interface AssistantOpenAIOptions extends AssistantAdapterOptions {\n /**\n * An OpenAI-compatible endpoint to call instead of OpenAI\n * (`https://llm.internal.example.com/v1`): a self-hosted model or an\n * internal gateway. The route then talks Chat Completions through\n * `@ai-sdk/openai-compatible`, and the docs tools are off unless\n * `ai.assistant.tools` turns them on, since the model may not call tools.\n */\n baseUrl?: string;\n /** The model id (`gpt-5.5`). */\n model: string;\n /**\n * The provider name the AI SDK reports, which a custom endpoint also reads\n * its `providerOptions` under. Defaults to `openai`, or `openai-compatible`\n * with a `baseUrl`.\n */\n name?: string;\n /**\n * How much the model reasons before answering, sent as `reasoning_effort`;\n * with a `baseUrl`, the endpoint has to accept that parameter. Omitted\n * keeps the model's default.\n */\n reasoning?: AssistantReasoning;\n}\n\nconst openaiOptionsSchema = z.strictObject({\n ...sharedOptions(OPENAI_API_KEY_ENV),\n baseUrl: z.url().optional(),\n model: z.string().min(1),\n name: z.string().min(1).optional(),\n reasoning: reasoningOption,\n});\n\nexport type AssistantOpenAIAdapter = AdapterDescriptor<\n \"openai\",\n AssistantOpenAIOptions\n>;\n\nexport const openaiAdapterSchema = adapterDescriptorSchema(\n \"openai\",\n openaiOptionsSchema\n);\n\n/**\n * Route the assistant to OpenAI, or to any OpenAI-compatible endpoint with\n * `baseUrl`. Reads `OPENAI_API_KEY` and needs `@ai-sdk/openai` installed; a\n * custom endpoint needs `@ai-sdk/openai-compatible` instead, since most\n * don't serve OpenAI's Responses API.\n */\nexport const openai = (\n options: AssistantOpenAIOptions\n): AssistantOpenAIAdapter => ({\n kind: \"openai\",\n options,\n requiredSecrets: [options.apiKeyEnv ?? OPENAI_API_KEY_ENV],\n runtimeDeps: [options.baseUrl ? OPENAI_COMPATIBLE_DEP : OPENAI_SDK.pkg],\n});\n\n/**\n * Options for the deprecated {@link openaiCompatible}: {@link openai}'s, with\n * the endpoint and its key env var required.\n *\n * @deprecated Use {@link AssistantOpenAIOptions}.\n */\nexport interface AssistantOpenAICompatibleOptions extends AssistantOpenAIOptions {\n apiKeyEnv: string;\n baseUrl: string;\n}\n\n/** @deprecated Use {@link AssistantOpenAIAdapter}. */\nexport type AssistantOpenAICompatibleAdapter = AssistantOpenAIAdapter;\n\n/**\n * Route the assistant through an OpenAI-compatible endpoint.\n *\n * @deprecated Use `openai({ baseUrl, model, apiKeyEnv })`, which this calls.\n */\nexport const openaiCompatible = (\n options: AssistantOpenAICompatibleOptions\n): AssistantOpenAIAdapter => openai(options);\n\n// ---------------------------------------------------------------------------\n// anthropic()\n// ---------------------------------------------------------------------------\n\nconst ANTHROPIC_API_KEY_ENV = \"ANTHROPIC_API_KEY\";\n\n/** Options for {@link anthropic}. */\nexport interface AssistantAnthropicOptions extends AssistantAdapterOptions {\n /** The Claude model id (`claude-sonnet-5`). */\n model: string;\n /**\n * How much the model reasons before answering. The Anthropic provider\n * maps the level to the model's thinking: an effort on models with\n * adaptive thinking, a thinking budget on older ones, and thinking off for\n * `\"none\"`. Omitted keeps the model's default.\n */\n reasoning?: AssistantReasoning;\n}\n\nconst anthropicOptionsSchema = z.strictObject({\n ...sharedOptions(ANTHROPIC_API_KEY_ENV),\n model: z.string().min(1),\n reasoning: reasoningOption,\n});\n\nexport type AssistantAnthropicAdapter = AdapterDescriptor<\n \"anthropic\",\n AssistantAnthropicOptions\n>;\n\nexport const anthropicAdapterSchema = adapterDescriptorSchema(\n \"anthropic\",\n anthropicOptionsSchema\n);\n\n/**\n * Route the assistant to Anthropic's Claude API. Reads `ANTHROPIC_API_KEY`\n * and needs `@ai-sdk/anthropic` installed.\n */\nexport const anthropic = (\n options: AssistantAnthropicOptions\n): AssistantAnthropicAdapter => ({\n kind: \"anthropic\",\n options,\n requiredSecrets: [options.apiKeyEnv ?? ANTHROPIC_API_KEY_ENV],\n runtimeDeps: [ANTHROPIC_SDK.pkg],\n});\n\n// ---------------------------------------------------------------------------\n// gemini()\n// ---------------------------------------------------------------------------\n\nconst GEMINI_API_KEY_ENV = \"GEMINI_API_KEY\";\n\n/** Options for {@link gemini}. */\nexport interface AssistantGeminiOptions extends AssistantAdapterOptions {\n /** The Gemini model id (`gemini-3.5-flash`). */\n model: string;\n /**\n * How much the model reasons before answering. The Google provider maps\n * the level to the model's thinking level, or to a thinking budget on\n * models that take one. Omitted keeps the model's default.\n */\n reasoning?: AssistantReasoning;\n}\n\nconst geminiOptionsSchema = z.strictObject({\n ...sharedOptions(GEMINI_API_KEY_ENV),\n model: z.string().min(1),\n reasoning: reasoningOption,\n});\n\nexport type AssistantGeminiAdapter = AdapterDescriptor<\n \"gemini\",\n AssistantGeminiOptions\n>;\n\nexport const geminiAdapterSchema = adapterDescriptorSchema(\n \"gemini\",\n geminiOptionsSchema\n);\n\n/**\n * Route the assistant to Google's Gemini API. Reads `GEMINI_API_KEY` and\n * needs `@ai-sdk/google` installed.\n */\nexport const gemini = (\n options: AssistantGeminiOptions\n): AssistantGeminiAdapter => ({\n kind: \"gemini\",\n options,\n requiredSecrets: [options.apiKeyEnv ?? GEMINI_API_KEY_ENV],\n runtimeDeps: [GEMINI_SDK.pkg],\n});\n\n// ---------------------------------------------------------------------------\n// grok()\n// ---------------------------------------------------------------------------\n\nconst GROK_API_KEY_ENV = \"XAI_API_KEY\";\n\n/** Options for {@link grok}. */\nexport interface AssistantGrokOptions extends AssistantAdapterOptions {\n /** The Grok model id (`grok-4.7`). */\n model: string;\n /**\n * How much the model reasons before answering, sent as xAI's reasoning\n * effort on the models that take one. Omitted keeps the model's default.\n */\n reasoning?: AssistantReasoning;\n}\n\nconst grokOptionsSchema = z.strictObject({\n ...sharedOptions(GROK_API_KEY_ENV),\n model: z.string().min(1),\n reasoning: reasoningOption,\n});\n\nexport type AssistantGrokAdapter = AdapterDescriptor<\n \"grok\",\n AssistantGrokOptions\n>;\n\nexport const grokAdapterSchema = adapterDescriptorSchema(\n \"grok\",\n grokOptionsSchema\n);\n\n/**\n * Route the assistant to xAI's Grok models. Reads `XAI_API_KEY` and needs\n * `@ai-sdk/xai` installed.\n */\nexport const grok = (options: AssistantGrokOptions): AssistantGrokAdapter => ({\n kind: \"grok\",\n options,\n requiredSecrets: [options.apiKeyEnv ?? GROK_API_KEY_ENV],\n runtimeDeps: [GROK_SDK.pkg],\n});\n\n// ---------------------------------------------------------------------------\n// openrouter()\n// ---------------------------------------------------------------------------\n\nconst OPENROUTER_API_KEY_ENV = \"OPENROUTER_API_KEY\";\n\n/** Options for {@link openrouter}. */\nexport interface AssistantOpenRouterOptions extends AssistantAdapterOptions {\n /** The OpenRouter model id (`anthropic/claude-sonnet-4-5`). */\n model: string;\n /**\n * How much the model reasons before answering. Set on the model as\n * OpenRouter's `reasoning.effort`, because its provider ignores the AI\n * SDK's call-level option. Omitted keeps the model's default.\n */\n reasoning?: AssistantReasoning;\n}\n\nconst openrouterOptionsSchema = z.strictObject({\n ...sharedOptions(OPENROUTER_API_KEY_ENV),\n model: z.string().min(1),\n reasoning: reasoningOption,\n});\n\nexport type AssistantOpenRouterAdapter = AdapterDescriptor<\n \"openrouter\",\n AssistantOpenRouterOptions\n>;\n\nexport const openrouterAdapterSchema = adapterDescriptorSchema(\n \"openrouter\",\n openrouterOptionsSchema\n);\n\n/**\n * Route the assistant through OpenRouter. Reads `OPENROUTER_API_KEY` and needs\n * `@openrouter/ai-sdk-provider` installed in the project.\n */\nexport const openrouter = (\n options: AssistantOpenRouterOptions\n): AssistantOpenRouterAdapter => ({\n kind: \"openrouter\",\n options,\n requiredSecrets: [options.apiKeyEnv ?? OPENROUTER_API_KEY_ENV],\n runtimeDeps: [\"@openrouter/ai-sdk-provider\"],\n});\n\n// ---------------------------------------------------------------------------\n// llmgateway()\n// ---------------------------------------------------------------------------\n\nconst LLMGATEWAY_API_KEY_ENV = \"LLMGATEWAY_API_KEY\";\n\n/** Options for {@link llmgateway}. */\nexport interface AssistantLlmGatewayOptions extends AssistantAdapterOptions {\n /** Overrides the preset endpoint (`https://api.llmgateway.io/v1`). */\n baseUrl?: string;\n /** The model id LLMGateway serves. */\n model: string;\n /**\n * How much the model reasons before answering, sent in the request as\n * `reasoning_effort`. Omitted keeps the model's default.\n */\n reasoning?: AssistantReasoning;\n}\n\nconst llmgatewayOptionsSchema = z.strictObject({\n ...sharedOptions(LLMGATEWAY_API_KEY_ENV),\n baseUrl: z.url().default(\"https://api.llmgateway.io/v1\"),\n model: z.string().min(1),\n reasoning: reasoningOption,\n});\n\nexport type AssistantLlmGatewayAdapter = AdapterDescriptor<\n \"llmgateway\",\n AssistantLlmGatewayOptions\n>;\n\nexport const llmgatewayAdapterSchema = adapterDescriptorSchema(\n \"llmgateway\",\n llmgatewayOptionsSchema\n);\n\n/**\n * Route the assistant through LLMGateway's OpenAI-compatible endpoint. Reads\n * `LLMGATEWAY_API_KEY` and needs `@ai-sdk/openai-compatible` installed.\n */\nexport const llmgateway = (\n options: AssistantLlmGatewayOptions\n): AssistantLlmGatewayAdapter => ({\n kind: \"llmgateway\",\n options,\n requiredSecrets: [options.apiKeyEnv ?? LLMGATEWAY_API_KEY_ENV],\n runtimeDeps: [OPENAI_COMPATIBLE_DEP],\n});\n\n// ---------------------------------------------------------------------------\n// inkeep()\n// ---------------------------------------------------------------------------\n\nconst INKEEP_API_KEY_ENV = \"INKEEP_API_KEY\";\n\n/**\n * Options for {@link inkeep}. No `reasoning`: Inkeep runs its own QA pipeline\n * behind an OpenAI-compatible endpoint with no reasoning control.\n */\nexport interface AssistantInkeepOptions extends AssistantAdapterOptions {\n /** Overrides the preset endpoint (`https://api.inkeep.com/v1`). */\n baseUrl?: string;\n /** The Inkeep QA model id. */\n model: string;\n}\n\nconst inkeepOptionsSchema = z.strictObject({\n ...sharedOptions(INKEEP_API_KEY_ENV),\n baseUrl: z.url().default(\"https://api.inkeep.com/v1\"),\n model: z.string().min(1),\n});\n\nexport type AssistantInkeepAdapter = AdapterDescriptor<\n \"inkeep\",\n AssistantInkeepOptions\n>;\n\nexport const inkeepAdapterSchema = adapterDescriptorSchema(\n \"inkeep\",\n inkeepOptionsSchema\n);\n\n/**\n * Answer with Inkeep, which retrieves from the content indexed in its own\n * dashboard, so Blume leaves it ungrounded and it takes no `reasoning`.\n * Reads `INKEEP_API_KEY` and needs `@ai-sdk/openai-compatible` installed.\n */\nexport const inkeep = (\n options: AssistantInkeepOptions\n): AssistantInkeepAdapter => ({\n kind: \"inkeep\",\n options,\n requiredSecrets: [options.apiKeyEnv ?? INKEEP_API_KEY_ENV],\n runtimeDeps: [OPENAI_COMPATIBLE_DEP],\n});\n\n// ---------------------------------------------------------------------------\n// The `ai.assistant.provider` schema\n// ---------------------------------------------------------------------------\n\n/** Which backend answers the assistant: the value of `gateway()`, `openai()`, … */\nexport type AssistantAdapter =\n | AssistantGatewayAdapter\n | AssistantOpenAIAdapter\n | AssistantAnthropicAdapter\n | AssistantGeminiAdapter\n | AssistantGrokAdapter\n | AssistantOpenRouterAdapter\n | AssistantLlmGatewayAdapter\n | AssistantInkeepAdapter;\n\n// ---------------------------------------------------------------------------\n// Blume 1 hints\n// ---------------------------------------------------------------------------\n\n/**\n * The adapters' `kind`s and the 1.x `ai.ask.provider` names, each with the\n * `blume/ai` factory that takes its place.\n */\nconst FACTORY_BY_PROVIDER = new Map([\n [\"anthropic\", \"anthropic\"],\n [\"gateway\", \"gateway\"],\n [\"gemini\", \"gemini\"],\n [\"grok\", \"grok\"],\n [\"inkeep\", \"inkeep\"],\n [\"llmgateway\", \"llmgateway\"],\n [\"openai\", \"openai\"],\n // 1.x only: an OpenAI-compatible endpoint is `openai()` with a `baseUrl`.\n [\"openai-compatible\", \"openai\"],\n [\"openrouter\", \"openrouter\"],\n]);\n\n/** The 1.x flat `ai.ask` fields: each is now an option of the provider adapter. */\nconst MOVED_TO_PROVIDER: ReadonlySet<string> = new Set([\n \"apiKeyEnv\",\n \"baseUrl\",\n \"headers\",\n \"model\",\n \"reasoning\",\n]);\n\n/** The provider an `ai.assistant` object names: a 1.x string or a descriptor's `kind`. */\nconst assistantProviderNameProbe = z.looseObject({\n provider: z.union([\n z.string(),\n z.looseObject({ kind: z.string() }).transform(({ kind }) => kind),\n ]),\n});\n\n/** The factory a failing `ai.assistant` object's provider names, or the gateway. */\nconst providerFactory = (issue: z.core.$ZodRawIssue): string => {\n const probe = assistantProviderNameProbe.safeParse(issue.input);\n return (\n (probe.success && FACTORY_BY_PROVIDER.get(probe.data.provider)) || \"gateway\"\n );\n};\n\n/**\n * Error params for `ai.assistant`: a 1.x flat provider field (`model`, `apiKeyEnv`,\n * `baseUrl`, `headers`, `reasoning`) names the adapter call it moves into —\n * the one the object's `provider` picks, 1.x string or descriptor — instead\n * of Zod's bare \"Unrecognized key\"; any other unknown key keeps its wording.\n */\nexport const assistantMovedFieldsHint = {\n error: (issue: z.core.$ZodRawIssue): string | undefined => {\n if (issue.code !== \"unrecognized_keys\") {\n return;\n }\n const moved = issue.keys.filter((key) => MOVED_TO_PROVIDER.has(key));\n if (moved.length === 0) {\n return;\n }\n const fields = moved.map((key) => `ai.assistant.${key}`).join(\", \");\n const hint = `${fields} moved into the provider adapter: \\`provider: ${providerFactory(issue)}({ ${moved.join(\", \")} })\\`, imported from \"blume/ai\".`;\n const others = issue.keys.filter((key) => !MOVED_TO_PROVIDER.has(key));\n return others.length > 0\n ? `${hint} ${unrecognizedKeysMessage(others)}`\n : hint;\n },\n};\n\n/** A value that is a 1.x provider name, for the `ai.assistant.provider` hint. */\nconst providerNameProbe = z.string();\n\n/**\n * The message for an `ai.assistant.provider` that isn't a descriptor: a 1.x\n * provider name names the factory that replaced it; anything else lists them.\n */\nconst providerNotAdapterMessage = (issue: z.core.$ZodRawIssue): string => {\n const name = providerNameProbe.safeParse(issue.input);\n const factory = name.success ? FACTORY_BY_PROVIDER.get(name.data) : undefined;\n return factory\n ? `ai.assistant.provider takes an adapter from \"blume/ai\", not a provider name: \\`provider: ${factory}({ model })\\`. The 1.x model, apiKeyEnv, baseUrl, headers, and reasoning fields move into the call.`\n : 'ai.assistant.provider takes an adapter from \"blume/ai\": openai(), anthropic(), gemini(), grok(), gateway(), openrouter(), llmgateway(), or inkeep().';\n};\n\n/**\n * `ai.assistant.provider`: the descriptor an adapter factory returned, validated\n * against that adapter's own option schema. A value that isn't a descriptor\n * at all (a 1.x provider name) names the factory that replaced it.\n */\nexport const assistantAdapterSchema = z.discriminatedUnion(\n \"kind\",\n [\n gatewayAdapterSchema,\n openaiAdapterSchema,\n anthropicAdapterSchema,\n geminiAdapterSchema,\n grokAdapterSchema,\n openrouterAdapterSchema,\n llmgatewayAdapterSchema,\n inkeepAdapterSchema,\n ],\n {\n // A non-object (a 1.x provider name) fails before any discriminator is\n // read — `invalid_type` at runtime, though Zod types the union's own\n // issues as `invalid_union` only; a bad `kind` keeps Zod's message.\n error: (issue) =>\n issue.code === \"invalid_union\"\n ? undefined\n : providerNotAdapterMessage(issue),\n }\n);\n\n/** A resolved (post-defaults) `ai.assistant.provider` descriptor. */\nexport type AssistantAdapterConfig = z.output<typeof assistantAdapterSchema>;\nexport type AssistantAdapterKind = AssistantAdapterConfig[\"kind\"];\n\n/** The provider when `ai.assistant.provider` is unset: the gateway with its defaults. */\nexport const DEFAULT_ASSISTANT_PROVIDER: AssistantAdapter = gateway();\n\n// ---------------------------------------------------------------------------\n// Resolved backend\n// ---------------------------------------------------------------------------\n\n/** The route fragments an adapter contributes to `askEndpointTemplate`. */\nexport interface AskBackendTemplate {\n /**\n * Extra `streamText` fields as `key: value` source lines: the adapter's\n * reasoning mapping (when it is a call option) and `providerOptions`.\n */\n fields: string[];\n /** Import lines after the shared `astro` and `astro:env/server` ones. */\n imports: string[];\n /**\n * The up-front credential guard: a statement that returns a 503, since the\n * endpoint exists but can't answer until the deployment sets its key.\n */\n keyCheck: string;\n /** The `model:` expression passed to `streamText`. */\n model: string;\n /** Module-level provider setup (the provider factory call). */\n setup: string;\n}\n\n/**\n * What the endpoint template and the diagnostics read from an adapter beyond\n * the descriptor itself (`kind`, `requiredSecrets`, `runtimeDeps` travel on\n * the descriptor; `generate`, `eject`, the required-secrets check, and the\n * runtime-dependency manifest read those directly).\n */\nexport interface AskBackend {\n /** Whether Blume grounds answers in the docs (Inkeep retrieves itself). */\n grounded: boolean;\n /**\n * Whether the docs tools are on when `ai.assistant.tools` is unset: yes for\n * the hosted model catalogs, whose models call tools, and no for an\n * OpenAI-compatible backend, which may be a local model that can't.\n */\n toolsByDefault: boolean;\n kind: AssistantAdapterKind;\n /** Human-readable adapter name for diagnostics (\"AI Gateway\"). */\n label: string;\n /** Appended to the missing-secret warning (an alternative credential, say). */\n secretNote?: string;\n template: AskBackendTemplate;\n}\n\nconst secretExpr = (env: string): string => `getSecret(${JSON.stringify(env)})`;\n\n/**\n * The `headers` line of a provider factory call. Every provider Blume\n * generates against takes the same option; the OpenAI-compatible provider\n * applies it after the `Authorization` header it derives from the API key, so\n * a custom header can't displace auth. An empty map is dropped so the route\n * only carries `headers` when there is something to send.\n */\nconst headersLine = (headers?: Record<string, string>): string =>\n headers && Object.keys(headers).length > 0\n ? `\\n headers: ${JSON.stringify(headers)},`\n : \"\";\n\n/** Refuse a request up front when the adapter's key env var is unset. */\nconst keyCheck = (env: string): string => ` if (!${secretExpr(env)}) {\n return new Response(\n ${JSON.stringify(`The assistant is not configured: set ${env}.`)},\n { status: 503 }\n );\n }`;\n\n/**\n * The `streamText` fields shared by the adapters that take `reasoning` as the\n * AI SDK's top-level call option, plus the verbatim `providerOptions`.\n */\nconst callFields = (options: {\n providerOptions?: z.output<typeof providerOptionsSchema>;\n reasoning?: AssistantReasoning;\n}): string[] => {\n const fields: string[] = [];\n if (options.reasoning) {\n fields.push(`reasoning: ${JSON.stringify(options.reasoning)}`);\n }\n if (options.providerOptions) {\n fields.push(`providerOptions: ${JSON.stringify(options.providerOptions)}`);\n }\n return fields;\n};\n\nconst gatewayBackend = (\n options: z.output<typeof gatewayOptionsSchema>\n): AskBackend => ({\n grounded: true,\n kind: \"gateway\",\n label: \"AI Gateway\",\n secretNote: \"on Vercel the gateway can also authenticate via OIDC\",\n template: {\n // The gateway maps the AI SDK's top-level `reasoning` to the model's own\n // control (OpenAI's `reasoning_effort`, say).\n fields: callFields(options),\n // The gateway provider reads the key (or Vercel's OIDC token) from the\n // environment itself; passing the key explicitly lets a binding-backed\n // secret store reach it too.\n imports: [\n 'import { createGateway, createTextStreamResponse, streamText, toTextStream } from \"ai\";',\n ],\n keyCheck: ` // The AI Gateway authenticates with an API key or Vercel's OIDC token.\n if (!(${secretExpr(options.apiKeyEnv)} || getSecret(\"VERCEL_OIDC_TOKEN\"))) {\n return new Response(\n ${JSON.stringify(`The assistant is not configured: set ${options.apiKeyEnv} (or deploy on Vercel with OIDC).`)},\n { status: 503 }\n );\n }`,\n model: `gateway(${JSON.stringify(options.model)})`,\n setup: `\\nconst gateway = createGateway({\n apiKey: ${secretExpr(options.apiKeyEnv)},${headersLine(options.headers)}\n});\\n`,\n },\n toolsByDefault: true,\n});\n\nconst openrouterBackend = (\n options: z.output<typeof openrouterOptionsSchema>\n): AskBackend => {\n // The OpenRouter provider ignores the AI SDK's top-level `reasoning` call\n // option and only reads its own model-level setting, so the level rides on\n // the model as `reasoning.effort` and nowhere else.\n const settings = options.reasoning\n ? `, { reasoning: { effort: ${JSON.stringify(options.reasoning)} } }`\n : \"\";\n return {\n grounded: true,\n kind: \"openrouter\",\n label: \"OpenRouter\",\n template: {\n fields: callFields({ providerOptions: options.providerOptions }),\n imports: [\n 'import { createTextStreamResponse, streamText, toTextStream } from \"ai\";',\n 'import { createOpenRouter } from \"@openrouter/ai-sdk-provider\";',\n ],\n keyCheck: keyCheck(options.apiKeyEnv),\n model: `openrouter(${JSON.stringify(options.model)}${settings})`,\n setup: `\\nconst openrouter = createOpenRouter({\n apiKey: ${secretExpr(options.apiKeyEnv)},${headersLine(options.headers)}\n});\\n`,\n },\n toolsByDefault: true,\n };\n};\n\n/**\n * The backend shared by the adapters that stream through the AI SDK's\n * OpenAI-compatible provider, which sends the top-level `reasoning` call\n * option as `reasoning_effort`.\n */\nconst openaiCompatibleBackend = (\n kind: AssistantAdapterKind,\n label: string,\n grounded: boolean,\n toolsByDefault: boolean,\n options: {\n apiKeyEnv: string;\n baseUrl: string;\n headers?: Record<string, string>;\n model: string;\n name: string;\n providerOptions?: z.output<typeof providerOptionsSchema>;\n reasoning?: AssistantReasoning;\n }\n): AskBackend => ({\n grounded,\n kind,\n label,\n template: {\n fields: callFields(options),\n imports: [\n 'import { createTextStreamResponse, streamText, toTextStream } from \"ai\";',\n 'import { createOpenAICompatible } from \"@ai-sdk/openai-compatible\";',\n ],\n keyCheck: keyCheck(options.apiKeyEnv),\n model: `provider(${JSON.stringify(options.model)})`,\n // `headers` sits between the key and the name so the API key's\n // `Authorization` header is applied first.\n setup: `\\nconst provider = createOpenAICompatible({\n apiKey: ${secretExpr(options.apiKeyEnv)},\n baseURL: ${JSON.stringify(options.baseUrl)},${headersLine(options.headers)}\n name: ${JSON.stringify(options.name)},\n});\\n`,\n },\n toolsByDefault,\n});\n\n/**\n * The backend for a provider Blume calls directly, through that provider's\n * own AI SDK package, which maps the top-level `reasoning` call option to the\n * model's control itself. Their models all call tools.\n */\nconst directBackend = (\n kind: AssistantAdapterKind,\n label: string,\n sdk: { factory: string; pkg: string },\n options: {\n apiKeyEnv: string;\n headers?: Record<string, string>;\n model: string;\n name?: string;\n providerOptions?: z.output<typeof providerOptionsSchema>;\n reasoning?: AssistantReasoning;\n }\n): AskBackend => ({\n grounded: true,\n kind,\n label,\n template: {\n fields: callFields(options),\n imports: [\n 'import { createTextStreamResponse, streamText, toTextStream } from \"ai\";',\n `import { ${sdk.factory} } from ${JSON.stringify(sdk.pkg)};`,\n ],\n keyCheck: keyCheck(options.apiKeyEnv),\n model: `provider(${JSON.stringify(options.model)})`,\n setup: `\\nconst provider = ${sdk.factory}({\n apiKey: ${secretExpr(options.apiKeyEnv)},${headersLine(options.headers)}${\n options.name ? `\\n name: ${JSON.stringify(options.name)},` : \"\"\n }\n});\\n`,\n },\n toolsByDefault: true,\n});\n\n/**\n * `openai()`: OpenAI itself through its own SDK, or, with a `baseUrl`, a\n * generic endpoint through the OpenAI-compatible provider — Chat Completions,\n * which most such endpoints serve where the Responses API isn't — with the\n * tools off by default, since a self-hosted model may not call them.\n */\nconst openaiBackend = (\n options: z.output<typeof openaiOptionsSchema>\n): AskBackend => {\n const { baseUrl } = options;\n return baseUrl\n ? openaiCompatibleBackend(\"openai\", \"OpenAI-compatible\", true, false, {\n ...options,\n baseUrl,\n name: options.name ?? \"openai-compatible\",\n })\n : directBackend(\"openai\", \"OpenAI\", OPENAI_SDK, options);\n};\n\n/** Resolve a parsed `ai.assistant.provider` descriptor into its backend. */\nexport const resolveAskBackend = (\n provider: AssistantAdapterConfig = assistantAdapterSchema.parse(\n DEFAULT_ASSISTANT_PROVIDER\n )\n): AskBackend => {\n switch (provider.kind) {\n case \"gateway\": {\n return gatewayBackend(provider.options);\n }\n case \"anthropic\": {\n return directBackend(\n \"anthropic\",\n \"Anthropic\",\n ANTHROPIC_SDK,\n provider.options\n );\n }\n case \"gemini\": {\n return directBackend(\"gemini\", \"Gemini\", GEMINI_SDK, provider.options);\n }\n case \"grok\": {\n return directBackend(\"grok\", \"Grok\", GROK_SDK, provider.options);\n }\n case \"openrouter\": {\n return openrouterBackend(provider.options);\n }\n case \"llmgateway\": {\n return openaiCompatibleBackend(\"llmgateway\", \"LLMGateway\", true, true, {\n ...provider.options,\n name: \"llmgateway\",\n });\n }\n case \"inkeep\": {\n // Inkeep answers from the content indexed in its dashboard, so injected\n // excerpts would conflict with its own retrieval.\n return openaiCompatibleBackend(\"inkeep\", \"Inkeep\", false, false, {\n ...provider.options,\n name: \"inkeep\",\n });\n }\n default: {\n return openaiBackend(provider.options);\n }\n }\n};\n",
63
+ "import type { AstroIntegration } from \"astro\";\nimport { z } from \"zod\";\n\nimport {\n assistantAdapterSchema,\n assistantMovedFieldsHint,\n DEFAULT_ASSISTANT_PROVIDER,\n} from \"../ai/ask.ts\";\nimport type { ComponentMarkdown } from \"../ai/component-markdown.ts\";\nimport { analyticsConfigSchema } from \"../analytics/schema.ts\";\nimport { captchaAdapterSchema } from \"../captcha/schema.ts\";\nimport {\n API_ENDPOINT,\n AUTH_METHODS,\n PLAYGROUND_MODES,\n} from \"../components/content/api-page.ts\";\nimport { consentConfigSchema } from \"../consent/schema.ts\";\nimport { resolvedDeploymentSchema } from \"../deploy/adapters/registry.ts\";\nimport type { CodeTheme } from \"../markdown/themes.ts\";\nimport { narrationProviderSchema } from \"../narration/provider.ts\";\nimport { normalizeRoute } from \"../openapi/references.ts\";\nimport { rateLimitConfigSchema } from \"../ratelimit/schema.ts\";\nimport { playgroundSchema } from \"../reference/options.ts\";\nimport {\n referenceConfigSchema,\n removedReferenceKeysHint,\n} from \"../reference/schema.ts\";\nimport { orama } from \"../search/adapters/orama.ts\";\nimport {\n NONE_SEARCH_ADAPTER,\n resolvedSearchAdapterSchema,\n} from \"../search/adapters/registry.ts\";\nimport type { SearchAdapterInput } from \"../search/adapters/registry.ts\";\nimport { ownedMetatag } from \"../seo/metatags.ts\";\nimport { normalizeXHandle } from \"../seo/x-handle.ts\";\nimport { filesystem } from \"../sources/filesystem.ts\";\nimport {\n contentSourcesSchema,\n resolvedSourceAdapterSchema,\n} from \"../sources/registry.ts\";\nimport { FONT_SLUGS, isFontSlug } from \"../theme/fonts.ts\";\nimport { isExternalUrl, normalizeBasePath } from \"./base-path.ts\";\nimport { FOOTER_SOCIALS } from \"./footer.ts\";\nimport { PUBLIC_HOST_URL } from \"./github.ts\";\nimport { uiLocaleOverridesSchema } from \"./i18n-ui.ts\";\nimport { openInChatProviders } from \"./open-in-chat.ts\";\nimport { PAGE_MODES } from \"./page-modes.ts\";\nimport { redirectPatternError } from \"./redirect-patterns.ts\";\nimport { MAX_RELATED } from \"./related.ts\";\nimport { isStandardSchema } from \"./standard-schema.ts\";\nimport type { StandardSchema } from \"./standard-schema.ts\";\nimport { trimEnd } from \"./trim.ts\";\nimport { unrecognizedKeysMessage } from \"./unrecognized-keys.ts\";\nimport { VARIABLE_NAME } from \"./variables.ts\";\n\n/**\n * An absolute HTTP(S) URL, for any field that lands verbatim in an `href` —\n * the header repo mark, the GitHub instance origin. Zod's bare `z.url()` also\n * admits `javascript:` and `data:`, which would render as a script link on\n * every page.\n */\nconst httpUrlSchema = z.url({ protocol: /^https?$/u });\n\n/**\n * Public Blume schemas.\n *\n * These are exported from `blume/schema` so migration tools, editor\n * integrations, and the runtime share a single source of validation truth.\n */\n\n// ---------------------------------------------------------------------------\n// Shared primitives\n// ---------------------------------------------------------------------------\n\n// `typeof` checks live in named predicates (the form the oxlint anti-slop\n// config sanctions); generic so each site keeps its own union narrowing.\nconst isString = <Value>(value: Value): value is Value & string =>\n typeof value === \"string\";\n\nconst isBoolean = <Value>(value: Value): value is Value & boolean =>\n typeof value === \"boolean\";\n\nconst isObjectLike = <Value>(value: Value): value is Value & object =>\n typeof value === \"object\" && value !== null;\n\n/** Icon inputs in serializable contexts (frontmatter, meta files). */\nconst iconName = z.string().min(1);\n\n/**\n * Error params for a strict object whose keys were removed or moved in a\n * major release. A config still carrying one of `hints`' keys fails with\n * the message that names its replacement, instead of Zod's bare\n * \"Unrecognized key\"; any other unknown key keeps the default message.\n */\nconst removedKeysHint = (hints: Record<string, string>) => ({\n error: (issue: z.core.$ZodRawIssue): string | undefined => {\n if (issue.code !== \"unrecognized_keys\") {\n return;\n }\n const messages = issue.keys.flatMap((key) =>\n Object.hasOwn(hints, key) ? [hints[key]] : []\n );\n if (messages.length === 0) {\n return;\n }\n // A hinted key beside a plain unknown one: keep Zod's wording for the\n // latter so it isn't silently dropped from the diagnostic.\n const others = issue.keys.filter((key) => !Object.hasOwn(hints, key));\n if (others.length > 0) {\n messages.push(unrecognizedKeysMessage(others));\n }\n return messages.join(\" \");\n },\n});\n\n/** Default include glob for filesystem-backed content sources. */\nconst hydrationMode = z.enum([\"load\", \"idle\", \"visible\", \"media\", \"only\"]);\nexport type HydrationMode = z.infer<typeof hydrationMode>;\n\n/**\n * A publish date in frontmatter. YAML auto-parses an unquoted `2026-01-01` into\n * a `Date`, so accept either form and normalize to an ISO string.\n */\nconst dateSchema = z\n .union([z.string(), z.date()])\n .transform((value) => (value instanceof Date ? value.toISOString() : value));\n\n/**\n * How a sidebar group renders:\n * - `flat`: a non-collapsible header with its items listed beneath (default).\n * - `group`: a collapsible `<details>` disclosure.\n * - `page`: a single row that drills into a sub-panel showing only this group's\n * items, with a back arrow at the top.\n */\nconst sidebarDisplaySchema = z.enum([\"flat\", \"group\", \"page\"]);\nexport type SidebarDisplay = z.infer<typeof sidebarDisplaySchema>;\n\n/**\n * How a group's own page lists the group's other pages below its content:\n * `card` a grid of cards, `accordion` a list with each subgroup collapsible,\n * `none` no listing (the default). A group without its own page has nowhere\n * to show one. Nested groups inherit the nearest setting above them.\n */\nconst directoryModeSchema = z.enum([\"accordion\", \"card\", \"none\"]);\nexport type DirectoryMode = z.infer<typeof directoryModeSchema>;\n\n// ---------------------------------------------------------------------------\n// Page frontmatter\n// ---------------------------------------------------------------------------\n\nconst sidebarMetaSchema = z.strictObject({\n badge: z.string().optional(),\n /**\n * Render mode for this page's folder group. Only meaningful on a folder's\n * `index` page — it configures the group, not the page. Overrides the\n * folder's `meta.ts` `display` and the global `navigation.sidebar.display`.\n */\n display: sidebarDisplaySchema.optional(),\n hidden: z.boolean().default(false),\n icon: iconName.optional(),\n label: z.string().optional(),\n order: z.number().optional(),\n});\n\n/**\n * An X handle, normalized to a leading `@` — `twitter:site`/`twitter:creator`\n * require it, and a handle configured without one is the obvious typo to absorb\n * rather than reject. The layouts normalize again on the way out, since a page's\n * `seo.x.creator` reaches them straight from unvalidated frontmatter.\n */\nconst xHandleSchema = z.string().transform(normalizeXHandle).optional();\n\nconst seoMetaSchema = z.strictObject({\n canonical: z.url().optional(),\n description: z.string().optional(),\n image: z.string().optional(),\n noindex: z.boolean().default(false),\n title: z.string().optional(),\n /** Per-page X attribution — a guest post credits its own author. */\n x: z.strictObject({ creator: xHandleSchema }).optional(),\n});\n\nconst searchMetaSchema = z.strictObject({\n /**\n * Multiply the page's search relevance: above 1 ranks it higher, below 1\n * lower. Keep it to a few key pages, and under 10: a large boost floats a\n * page over better matches.\n */\n boost: z.number().positive().optional(),\n exclude: z.boolean().default(false),\n /** Extra terms the page is found by, beyond its own text. */\n keywords: z.array(z.string()).optional(),\n tags: z.array(z.string()).optional(),\n});\n\nconst aiMetaSchema = z.strictObject({\n /** Exclude this page from llms.txt and llms-full.txt. */\n exclude: z.boolean().default(false),\n});\n\nconst changelogMetaSchema = z.strictObject({\n category: z.string().optional(),\n date: dateSchema.optional(),\n version: z.string().optional(),\n});\n\n/**\n * A post author: a bare name/handle, or an object with a name plus optional\n * avatar/URL. The object is passthrough so richer author metadata (social\n * handles, roles) survives untouched — Blume doesn't render authors yet, so\n * this exists to preserve the field (common on blog/changelog pages) rather\n * than have a strict scan reject it.\n */\nconst authorSchema = z.union([\n z.string(),\n z\n .object({\n avatar: z.string().optional(),\n image: z.string().optional(),\n name: z.string(),\n url: z.string().optional(),\n })\n .catchall(z.unknown()),\n]);\n\n// Shorthand defaults use `.prefault()`, not `.default()`, wherever the value\n// must still be parsed — Zod 4's `.default()` returns the value as-is, so a\n// `.default({})` on an object with inner defaults (or a transform) would\n// resolve to a bare `{}` instead of the fully-defaulted shape.\n\n/** A `related` link: a root-relative page path or an absolute URL. */\nconst relatedLinkSchema = z\n .string()\n .refine((link) => link.startsWith(\"/\") || isExternalUrl(link), {\n message:\n 'A related link is a root-relative path (\"/guides/setup\") or an absolute URL.',\n });\n\n/** Frontmatter accepted on any content page. */\nconst pageMetaBaseSchema = z.strictObject({\n ai: aiMetaSchema.prefault({}),\n /**\n * A hand-written endpoint: an HTTP method and a path or full URL\n * (`POST /v1/users`). The page's `<ParamField>`s build its playground and\n * request samples.\n */\n api: z\n .string()\n .refine((value) => API_ENDPOINT.test(value.trim()), {\n message:\n 'api takes an HTTP method and a path or URL, like \"POST /v1/users\" or \"GET https://api.acme.com/v1/users/{id}\".',\n })\n .optional(),\n /** How this page's endpoint authenticates, over the site's `api.auth`. */\n authMethod: z.enum(AUTH_METHODS).optional(),\n /** Post author(s) for blog/changelog content; preserved, not yet rendered. */\n authors: z.union([authorSchema, z.array(authorSchema)]).optional(),\n changelog: changelogMetaSchema.optional(),\n /** Publish date for feed-backed content like blog/changelog. */\n date: dateSchema.optional(),\n deprecated: z.boolean().default(false),\n description: z.string().optional(),\n draft: z.boolean().default(false),\n hidden: z.boolean().default(false),\n icon: iconName.optional(),\n /** Overrides the git-derived last-modified date when `lastModified` is on. */\n lastModified: dateSchema.optional(),\n /** What the page shows around its content (see `core/page-modes.ts`). */\n mode: z.enum(PAGE_MODES).optional(),\n /** `false` keeps the \"Listen to this page\" player off this page. */\n narration: z.boolean().default(true),\n noindex: z.boolean().default(false),\n /** `false` drops the previous/next links at the foot of this page. */\n pagination: z.boolean().default(true),\n /** What an `api` page's playground shows: `interactive`, `simple` (samples only), or `none`. */\n playground: z.enum(PLAYGROUND_MODES).optional(),\n /**\n * Pages to suggest at the foot of this one: root-relative paths, absolute\n * URLs, or `{ Title: link }` to name a link. `false` lists none.\n */\n related: z\n .union([\n z.literal(false),\n z\n .array(\n z.union([\n relatedLinkSchema,\n z\n .record(z.string().min(1), relatedLinkSchema)\n .refine((entry) => Object.keys(entry).length === 1, {\n message:\n 'A titled related entry has one title and one link: { \"Title\": \"/path\" }.',\n }),\n ])\n )\n .max(MAX_RELATED),\n ])\n .optional(),\n search: searchMetaSchema.prefault({}),\n seo: seoMetaSchema.prefault({}),\n sidebar: sidebarMetaSchema.prefault({}),\n slug: z.string().optional(),\n title: z.string().optional(),\n // No default: an absent `type` must fall through to `content.defaultType`.\n type: z.string().optional(),\n});\n\nexport const pageMetaSchema = pageMetaBaseSchema;\n\nexport type PageMeta = z.infer<typeof pageMetaBaseSchema>;\nexport type PageMetaInput = z.input<typeof pageMetaBaseSchema>;\n\n/** The fully-defaulted front matter of a page that declares nothing. */\nconst EMPTY_PAGE_META: PageMeta = pageMetaBaseSchema.parse({});\n\n/**\n * The page schema as the generated content collections declare it, so\n * `entry.data` is typed and normalized (dates as ISO strings, X handles with\n * their `@`) the same way the scan's `PageMeta` is. Two deliberate loosenings\n * over {@link pageMetaSchema}: custom keys (`frontmatter.extend`, per-type\n * maps) pass through instead of failing the strict parse, and a page the\n * strict parse rejects resolves to the empty defaults instead of throwing.\n * The scan has already dropped such a page with a `BLUME_FRONTMATTER_INVALID`\n * diagnostic — Blume continues without it unless `--strict` — so the\n * collection must not turn that dropped page into a failed content sync.\n */\nexport const pageCollectionSchema = pageMetaBaseSchema\n .loose()\n // oxlint-disable-next-line promise/prefer-await-to-then -- zod's catch, not a promise\n .catch(() => EMPTY_PAGE_META);\n\n/** Built-in page frontmatter keys; custom keys must never redeclare one. */\nconst BUILT_IN_PAGE_META_KEYS = new Set<string>(\n pageMetaBaseSchema.keyof().options\n);\n\n/**\n * A map of custom frontmatter keys to user-supplied validation schemas,\n * consumed through the Standard Schema `~standard` contract — never Zod's own\n * API — so the consumer's zod (any version), Valibot, or ArkType all work\n * (see `standard-schema.ts`). Shared by the site-wide `frontmatter.extend`\n * and the per-type `content.types.<type>.frontmatter` maps. Built-in\n * frontmatter fields can't be redeclared — they're load-bearing (routing,\n * sidebar, SEO), and shadowing one would silently change its semantics.\n */\nconst customKeySchemaRecord = (where: string) =>\n z\n .record(\n z.string(),\n z.custom<StandardSchema>(isStandardSchema, {\n message:\n \"Expected a Standard Schema (e.g. a Zod schema — any Zod version works).\",\n })\n )\n .default({})\n .superRefine((value, ctx) => {\n for (const key of Object.keys(value)) {\n if (BUILT_IN_PAGE_META_KEYS.has(key)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `\"${key}\" is a built-in frontmatter field and cannot be redeclared via ${where}.`,\n path: [key],\n });\n }\n }\n });\n\n// ---------------------------------------------------------------------------\n// Folder meta (meta.ts)\n// ---------------------------------------------------------------------------\n\nexport const folderMetaSchema = z.strictObject({\n collapsed: z.boolean().optional(),\n /** List the group's pages on its index page; inherited by nested folders. */\n directory: directoryModeSchema.optional(),\n /** Render mode for this group; overrides `navigation.sidebar.display`. */\n display: sidebarDisplaySchema.optional(),\n icon: iconName.optional(),\n order: z.number().optional(),\n /** Explicit child ordering by slug segment (without numeric prefix). */\n pages: z.array(z.string()).optional(),\n title: z.string().optional(),\n});\n\nexport type FolderMeta = z.infer<typeof folderMetaSchema>;\n\n// ---------------------------------------------------------------------------\n// Project config (blume.config.ts)\n// ---------------------------------------------------------------------------\n\n/** The logo mark: a single image path/URL, or light/dark variants with alt text. */\nconst logoImageSchema = z.union([\n z.string(),\n z.strictObject({\n alt: z.string().optional(),\n dark: z.string().optional(),\n light: z.string().optional(),\n }),\n]);\n\n/**\n * Site logo. A bare string is the image shorthand. The object form splits the\n * brand into an optional `image` mark and optional wordmark `text` so a site can\n * show an image-only logo (a mark with the wordmark baked in), a text-only logo,\n * or both. Omit `text` to fall back to the site title; set `text: \"\"` to render\n * the mark alone. `href` overrides the brand link (defaults to `/`).\n */\nconst logoConfigSchema = z.union([\n z.string(),\n z.strictObject({\n href: z.string().optional(),\n image: logoImageSchema.optional(),\n text: z.string().optional(),\n }),\n]);\n\n/**\n * A label that may localize (header tabs and links, the banner, the footer):\n * a plain string, or a map of locale code to label (`{ en: \"Docs\", ja: \"ドキュメント\" }`).\n * Resolved per locale by `core/localizable.ts` — the active locale's entry\n * wins, then the default locale's, then the map's first entry — so a\n * single-locale site can keep plain strings and an i18n site can translate\n * its labels without forking the config.\n */\nconst localizableLabelSchema = z.union([\n z.string(),\n z\n .record(z.string(), z.string())\n .refine((value) => Object.keys(value).length > 0, {\n message: \"Provide at least one locale's label.\",\n }),\n]);\n\nexport type LocalizableLabel = z.infer<typeof localizableLabelSchema>;\n\n/**\n * Site-wide announcement banner: a string, or text with an optional link. The\n * object form's `content` and link `text` may be per-locale maps.\n */\nconst bannerConfigSchema = z.union([\n z.string(),\n z.strictObject({\n content: localizableLabelSchema,\n /** Show a dismiss button; the choice is remembered per visitor. */\n dismissible: z.boolean().default(false),\n /**\n * Stable key for remembering dismissal; defaults to the content (the\n * default locale's, for a per-locale map).\n */\n id: z.string().optional(),\n link: z\n .strictObject({ href: z.string(), text: localizableLabelSchema })\n .optional(),\n }),\n]);\n\n/**\n * Defaults for hand-written endpoint pages (`api` frontmatter): the server a\n * path joins, how requests authenticate, and the playground, which takes an\n * OpenAPI reference's `playground` option.\n */\nconst apiConfigSchema = z.strictObject({\n auth: z\n .strictObject({\n method: z.enum(AUTH_METHODS),\n /** The header an API key goes in. Defaults to `x-api-key`. */\n name: z.string().optional(),\n })\n .optional(),\n playground: playgroundSchema,\n /** The base URL an `api` path joins (`https://api.acme.com/v1`). */\n server: z.string().optional(),\n});\n\n/**\n * The site footer: a row of links, and social profile icons. Unset, the site\n * has no footer (a `components.ts` `Footer` still renders).\n */\nconst footerConfigSchema = z.strictObject({\n /** Links in one row, in the order written. */\n links: z\n .array(z.strictObject({ href: z.string(), label: localizableLabelSchema }))\n .default([]),\n /** Social profiles, platform to URL, shown as icons in the order written. */\n socials: z.partialRecord(z.enum(FOOTER_SOCIALS), z.string()).default({}),\n});\n\n/**\n * The generated `/changelog` index. Its title and description may be\n * per-locale maps; unset, they're the `changelog` UI strings `i18n.ui`\n * translates.\n */\nconst changelogConfigSchema = z.strictObject({\n description: localizableLabelSchema.optional(),\n title: localizableLabelSchema.optional(),\n});\n\n/** A validated `content.sources` entry: an adapter descriptor from `blume/sources`. */\nexport type { ContentSourceAdapter } from \"../sources/registry.ts\";\n\n/**\n * Per-type content definition. An object (rather than a bare frontmatter map)\n * so type-scoped concerns added later — search facets, templates — have a\n * home without a breaking config change.\n */\nconst contentTypeConfigSchema = z.strictObject({\n /**\n * Custom frontmatter keys whose values become filterable facets for pages\n * of this type — surfaced in search documents and filterable through the\n * MCP tools' `filters` input. Each name must be a custom key declared for\n * the type (in its `frontmatter` map or the site-wide `frontmatter.extend`),\n * checked at the config level where both maps are visible. Only string\n * (or number/boolean, stringified) values ever facet.\n */\n facets: z.array(z.string()).default([]),\n /**\n * Custom frontmatter keys for pages of this type, layered on top of the\n * site-wide `frontmatter.extend`. Every declared key is validated on every\n * page of the type — absent ones included — so a required schema enforces\n * the key type-wide while leaving other types untouched.\n */\n frontmatter: customKeySchemaRecord(\"content.types\"),\n});\n\n/** The top-level fields that are shorthand for a single `filesystem()` source. */\nconst FILESYSTEM_SHORTHAND_KEYS = [\"exclude\", \"include\", \"root\"] as const;\n\n/**\n * `content`: where pages come from. `sources` lists adapters from\n * `blume/sources`; the top-level `root`/`include`/`exclude` are zero-config\n * shorthand that desugars to exactly one `filesystem()` entry when `sources`\n * is absent, and are rejected beside it — so after parse, `sources` is the\n * one source of truth and nothing downstream picks between the two.\n */\nconst contentConfigSchema = z\n .strictObject({\n defaultType: z.string().default(\"doc\"),\n exclude: z.array(z.string()).optional(),\n include: z.array(z.string()).optional(),\n pages: z.string().default(\"pages\"),\n root: z.string().optional(),\n sources: contentSourcesSchema.optional(),\n /**\n * Per-type content definitions, keyed by the frontmatter `type` they apply\n * to (including `defaultType`, for pages that set none).\n */\n types: z.record(z.string(), contentTypeConfigSchema).default({}),\n })\n .superRefine(\n (value, ctx) => {\n if (!value.sources) {\n return;\n }\n for (const key of FILESYSTEM_SHORTHAND_KEYS) {\n if (value[key] !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `content.${key} is shorthand for a single filesystem() source and can't be combined with content.sources — move it into a filesystem({ ${key} }) entry in content.sources.`,\n path: [key],\n });\n }\n }\n },\n // Zod skips a refinement once a field has failed, so without this a\n // Blume 1 config (`{ type: \"filesystem\" }` sources beside `content.root`)\n // would only learn about the shorthand after fixing every source entry.\n // Any object gets the check; a non-object already failed on its own.\n { when: (payload) => isObjectLike(payload.value) }\n )\n .transform(({ exclude, include, root, sources, ...rest }) => ({\n ...rest,\n sources: sources ?? [\n // The shorthand's defaults are the adapter's own, applied by its schema.\n resolvedSourceAdapterSchema.parse(filesystem({ exclude, include, root })),\n ],\n }));\n\nconst navTabSchema = z.strictObject({\n // Rejected empty rather than accepted: an empty `href` would render a link to\n // nowhere, and it can't mean \"resolve it for me\" either — that's what\n // omitting the field does.\n href: z.string().min(1).optional(),\n icon: iconName.optional(),\n items: z\n .array(\n z.strictObject({\n description: z.string().optional(),\n icon: iconName.optional(),\n label: localizableLabelSchema,\n path: z.string(),\n tag: z.string().optional(),\n })\n )\n .optional(),\n label: localizableLabelSchema,\n // Canonical like the routes it's matched against — one leading slash, no\n // trailing one — so `/guides/` still marks its pages' tab and scopes their\n // sidebar, and `api` links to `/api` rather than resolving relative to the\n // current page.\n path: z.string().transform(normalizeRoute),\n});\n\nconst navSelectorItemSchema = z.strictObject({\n description: z.string().optional(),\n icon: iconName.optional(),\n label: z.string(),\n path: z.string(),\n tag: z.string().optional(),\n});\n\nconst navSelectorSchema = z.strictObject({\n items: z.array(navSelectorItemSchema).default([]),\n kind: z.enum([\"dropdown\", \"language\", \"product\", \"version\"]),\n label: z.string(),\n});\n\n/** A node in an explicit sidebar config: a page reference or a group/link. */\nexport type SidebarItemConfig =\n | string\n | {\n label: string;\n badge?: string;\n directory?: DirectoryMode;\n display?: SidebarDisplay;\n href?: string;\n icon?: string;\n collapsed?: boolean;\n items?: SidebarItemConfig[];\n root?: string;\n };\n\n// Zod 4's `ZodType` defaults its Input parameter to `unknown` (it no longer\n// mirrors Output), so the recursive annotation names both — otherwise\n// `z.input` of anything containing this schema degrades to `unknown`.\nconst sidebarItemSchema: z.ZodType<SidebarItemConfig, SidebarItemConfig> =\n z.lazy(() =>\n z.union([\n z.string(),\n z.strictObject({\n badge: z.string().optional(),\n collapsed: z.boolean().optional(),\n directory: directoryModeSchema.optional(),\n display: sidebarDisplaySchema.optional(),\n href: z.string().optional(),\n icon: iconName.optional(),\n items: z.array(sidebarItemSchema).optional(),\n label: z.string(),\n root: z.string().optional(),\n }),\n ])\n );\n\nconst fontFallbackSchema = z.enum([\"sans\", \"serif\", \"mono\"]);\n\n/** Any family from a zero-config Astro provider, by name. */\nconst remoteFontSchema = z.strictObject({\n fallback: fontFallbackSchema.optional(),\n name: z.string().min(1),\n provider: z\n .enum([\"google\", \"fontsource\", \"bunny\", \"fontshare\"])\n .default(\"google\"),\n /** Character subsets to load; defaults to `latin` plus the locales' scripts. */\n subsets: z.array(z.string().min(1)).nonempty().optional(),\n weights: z\n .array(\n z.union([z.number().int().positive(), z.string().regex(/^\\d+\\.\\.\\d+$/u)])\n )\n .nonempty()\n .optional(),\n});\n\n/** One local `@font-face`: a file plus optional weight/style (else inferred). */\nconst localFontVariantSchema = z.strictObject({\n src: z.string().min(1),\n style: z.enum([\"normal\", \"italic\", \"oblique\"]).optional(),\n weight: z\n .union([\n z.number().int().positive(),\n z.string().regex(/^\\d+(?:\\.\\.\\d+)?$/u),\n ])\n .optional(),\n});\n\n/** A self-hosted family loaded from font files in the project. */\nconst localFontSchema = z.strictObject({\n fallback: fontFallbackSchema.optional(),\n name: z.string().min(1),\n variants: z.array(localFontVariantSchema).nonempty(),\n});\n\n/**\n * A role's font: a curated Google Font slug (see `theme/fonts.ts`), a\n * remote-provider family, or local font files. Bare strings must be curated\n * slugs so a typo fails with the supported list instead of a provider error.\n */\nconst fontValueSchema = z\n .union([z.string(), remoteFontSchema, localFontSchema])\n .superRefine((value, ctx) => {\n if (isString(value) && !isFontSlug(value)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Unknown font \"${value}\". Supported fonts: ${FONT_SLUGS.join(\", \")}. For any other family, use the object form: { name: \"...\" } (remote provider) or { name: \"...\", variants: [...] } (local files).`,\n });\n }\n });\n\n/**\n * An optional per-mode theme value: a string applies to both color modes; a\n * `{ light, dark }` object sets each mode individually (either may be\n * omitted to override a single mode).\n */\nconst perModeValueSchema = z\n .union([\n z.string(),\n z.strictObject({\n dark: z.string().optional(),\n light: z.string().optional(),\n }),\n ])\n .optional()\n .transform((value) =>\n isString(value) ? { dark: value, light: value } : value\n );\n\nconst themeConfigFields = {\n accent: z\n .union([\n z.string(),\n z.strictObject({ dark: z.string(), light: z.string() }),\n ])\n .default(\"blue\")\n .transform((value) =>\n isString(value) ? { dark: value, light: value } : value\n ),\n action: z.string().optional(),\n background: perModeValueSchema,\n backgroundImage: perModeValueSchema,\n fonts: z\n .strictObject({\n body: fontValueSchema.default(\"inter\"),\n display: fontValueSchema.default(\"inter\"),\n mono: fontValueSchema.default(\"ibm-plex-mono\"),\n })\n .prefault({}),\n mode: z.enum([\"system\", \"light\", \"dark\"]).default(\"system\"),\n radius: z.enum([\"none\", \"sm\", \"md\", \"lg\"]).default(\"md\"),\n};\n\nconst themeConfigSchema = z.strictObject(\n themeConfigFields,\n removedKeysHint({\n layout:\n \"theme.layout was removed: the sidebar layout is the only one, so delete the field.\",\n })\n);\n\n/** Curated link for the search dialog empty state (internal route or external URL). */\nconst searchPopularLinkSchema = z.strictObject({\n href: z.string(),\n icon: iconName.optional(),\n label: z.string(),\n});\n\n/**\n * The search backend: an adapter descriptor from `blume/search` (`algolia({…})`,\n * `orama()`, …) or `false` to disable search. Resolves to a descriptor either\n * way — `false` becomes the `none` adapter — so consumers read `kind`,\n * `runtimeDeps`, and `requiredSecrets` without a special case.\n */\nconst searchProviderSchema = z\n .custom<false | SearchAdapterInput>(\n // A 1.x provider name (`\"algolia\"`, `\"none\"`) fails here with the adapter\n // that replaces it, rather than the pipe's bare \"expected object\".\n (value) => value === false || isObjectLike(value),\n {\n message:\n 'search.provider takes an adapter from \"blume/search\" — algolia({…}), pagefind(), … — not a provider name. The 1.x provider string was removed, and \"none\" is now `search: false`.',\n }\n )\n .transform((value) => (value === false ? NONE_SEARCH_ADAPTER : value))\n .pipe(resolvedSearchAdapterSchema);\n\n/** Indexing behavior shared by every source-built index. */\nconst searchIndexingSchema = z\n .strictObject({\n includeCodeBlocks: z.boolean().default(false),\n includeHiddenPages: z.boolean().default(false),\n })\n .prefault({});\n\n/** What the search dialog's analytics events carry. */\nconst searchAnalyticsSchema = z\n .strictObject({\n queries: z.boolean().default(true),\n })\n .prefault({});\n\n/** The object form of `search`: the adapter plus its adapter-independent settings. */\nconst searchOptionsSchema = z.strictObject(\n {\n analytics: searchAnalyticsSchema,\n indexing: searchIndexingSchema,\n /** Curated links for the Cmd+K empty state; defaults to the first sidebar pages. */\n popular: z.array(searchPopularLinkSchema).default([]),\n provider: searchProviderSchema.default(() => orama()),\n },\n // The 1.x credential blocks, each now its adapter's options.\n removedKeysHint({\n algolia:\n 'search.algolia moved into its adapter: `search: algolia({ appId, indexName, apiKey })` from \"blume/search\", where the 1.x `searchApiKey` is now `apiKey`.',\n mixedbread:\n 'search.mixedbread moved into its adapter: `search: mixedbread({ storeId })` from \"blume/search\".',\n oramaCloud:\n 'search.oramaCloud moved into its adapter: `search: oramaCloud({ endpoint, apiKey, indexId })` from \"blume/search\".',\n typesense:\n 'search.typesense moved into its adapter: `search: typesense({ host, collection, apiKey })` from \"blume/search\", where the 1.x `searchApiKey` is now `apiKey`.',\n })\n);\n\ntype SearchOptionsInput = z.input<typeof searchOptionsSchema>;\n\n/** What `search` accepts: an adapter (or `false`) directly, or the object form. */\ntype SearchConfigInput = false | SearchAdapterInput | SearchOptionsInput;\n\n/**\n * `search` takes an adapter directly (`search: algolia({…})`, or `false`) as\n * shorthand for the object form (`search: { provider: algolia({…}), popular,\n * indexing }`). The shorthand is lifted into `provider` before the object\n * schema validates, rather than through a union: a union reports whichever\n * branch fails \"softest\", which for a descriptor missing an option is the\n * object form's \"unrecognized keys\" — pointing at the wrong problem. A\n * descriptor is recognized by its `kind`; the object form never has one.\n */\nconst searchConfigSchema = z\n .custom<SearchConfigInput>(\n // Anything else (a 1.x provider string, null, true) must become a\n // diagnostic here: the `in` check below would throw a TypeError on it.\n (value) => value === false || isObjectLike(value),\n {\n message:\n 'search must be an adapter from \"blume/search\" (orama(), algolia({…}), …), false, or { provider, popular, indexing }. The 1.x provider string was removed.',\n }\n )\n .transform((value): SearchOptionsInput =>\n value === false || \"kind\" in value ? { provider: value } : value\n )\n .pipe(searchOptionsSchema);\n\n/**\n * JWK parameters that carry private or secret key material (RFC 7518): the\n * private exponent/scalar, the RSA CRT parameters, and the symmetric key.\n * A directory is public by definition, so any of these in a configured key is\n * a leaked credential, not a config style choice — reject loudly.\n */\nconst PRIVATE_JWK_PARAMS = [\"d\", \"p\", \"q\", \"dp\", \"dq\", \"qi\", \"oth\", \"k\"];\n\n/**\n * A public JWK for the Web Bot Auth signature directory. Shape is left to the\n * signing setup (Ed25519 `OKP` keys in current deployments) — validation only\n * requires the mandatory `kty` and refuses private key material.\n */\nconst publicJwkSchema = z\n .record(z.string(), z.unknown())\n .superRefine((jwk, ctx) => {\n if (!isString(jwk.kty) || jwk.kty.length === 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'A JWK must declare its key type (\"kty\").',\n });\n }\n const leaked = PRIVATE_JWK_PARAMS.filter((param) => param in jwk);\n if (leaked.length > 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `The JWK contains private key material (\"${leaked.join('\", \"')}\") — the signatures directory is public, so list only public keys and keep the private key where the signing agent runs.`,\n });\n }\n });\n\nconst mcpConfigSchema = z.strictObject({\n enabled: z.boolean().default(false),\n /** Optional system hint passed to connecting agents. */\n instructions: z.string().optional(),\n /** Server name shown to clients; defaults to the site title. */\n name: z.string().optional(),\n /**\n * Normalized like `openapi.route`: a slash-less value would otherwise be\n * string-concatenated onto the site origin (`https://acme.comdocs-mcp`).\n */\n route: z.string().default(\"/mcp\").transform(normalizeRoute),\n});\n\nconst assistantEndpointSchema = z\n .string()\n .trim()\n .min(1)\n .refine(\n (value) => {\n if (value.startsWith(\"/\") && !value.startsWith(\"//\")) {\n return true;\n }\n try {\n const url = new URL(value);\n return url.protocol === \"http:\" || url.protocol === \"https:\";\n } catch {\n return false;\n }\n },\n {\n message:\n \"ai.assistant.endpoint must be an HTTP(S) URL or a root-relative path.\",\n }\n );\n\n/** The object form of `agents.llmsTxt`; a bare boolean normalizes onto it. */\nconst llmsTxtObjectSchema = z.strictObject({\n /**\n * Markdown inserted after the title and summary, before the page sections:\n * the llms.txt spec's \"details\" slot. The place to tell agents when to use\n * the product and how to call it; trimmed, and dropped when blank.\n */\n details: z.string().trim().min(1).optional(),\n enabled: z.boolean().default(true),\n openapi: z.boolean().default(true),\n});\n\ntype LlmsTxtResolved = z.output<typeof llmsTxtObjectSchema>;\n\n/** The object form of `agents.catalog`; a bare boolean normalizes onto it. */\nconst aiCatalogObjectSchema = z.strictObject({\n enabled: z.boolean().default(true),\n /**\n * Representative queries per catalog entry, keyed by the entry's\n * `<namespace>:<name>` (the identifier minus its `urn:air:<host>:` prefix,\n * e.g. `mcp:docs`, `skill:blume`, `api:docs`). Replaces the generated\n * defaults for that entry; 2–5 short natural-language questions the\n * resource can answer, which registries embed for semantic search.\n */\n queries: z\n .record(z.string().min(1), z.array(z.string().trim().min(1)).min(1))\n .default({}),\n});\n\ntype AiCatalogResolved = z.output<typeof aiCatalogObjectSchema>;\n\n/**\n * The keys that moved from `ai` to `agents`: `ai` now holds only what faces a\n * model at read time (the assistant, Open in chat), and the machine-readable surface\n * agents consume lives under `agents`.\n */\nconst MOVED_TO_AGENTS = [\n \"api\",\n \"catalog\",\n \"llmsTxt\",\n \"markdownComponents\",\n \"mcp\",\n \"skills\",\n \"webBotAuth\",\n \"webmcp\",\n] as const;\n\nconst movedToAgentsHints = (from: string): Record<string, string> =>\n Object.fromEntries(\n MOVED_TO_AGENTS.map((key) => [\n key,\n `${from}.${key} moved to agents.${key}.`,\n ])\n );\n\n/** Model-facing config: the assistant and the \"Open in chat\" action. */\nconst aiConfigFields = {\n assistant: z\n .strictObject(\n {\n // Origins allowed to call the generated `/api/ask` from another site (a\n // marketing page that embeds an ask box, say), or `\"*\"` for every\n // origin. Each URL is reduced to its origin so a trailing slash or path\n // can't defeat the exact match the route performs. Read by the\n // generated route only; an external `endpoint` owns its own CORS.\n // A bot check from `blume/captcha`: the panel sends a token with each\n // question and the generated route verifies it before the model runs.\n captcha: captchaAdapterSchema.optional(),\n cors: z\n .array(\n z.union([\n z.literal(\"*\"),\n z\n .url({ protocol: /^https?$/u })\n .transform((value) => new URL(value).origin),\n ])\n )\n .optional(),\n enabled: z.boolean().default(false),\n // Optional external endpoint for projects that keep their docs static\n // and host the assistant in an existing backend. Absolute URLs and root-relative\n // paths are both valid; the built-in request/stream contract is unchanged.\n endpoint: assistantEndpointSchema.optional(),\n // Extra system-prompt text (identity, language, tone) appended to the\n // built-in instructions, so the grounding contract — answer from the\n // retrieved excerpts, cite pages as Markdown links — stays intact.\n instructions: z.string().trim().min(1).optional(),\n // The adapter descriptor a `gateway()`/`openrouter()`/... factory\n // returns; each adapter validates its own options (model, key env var,\n // reasoning mapping, `providerOptions` passthrough) in `ai/ask.ts`.\n // Unset means the gateway with its default model, so the zero-config assistant\n // is unchanged.\n provider: assistantAdapterSchema.prefault(DEFAULT_ASSISTANT_PROVIDER),\n // How much documentation each question carries. Injected characters are\n // the dominant term in time-to-first-token on a self-hosted backend, so\n // these trade recall for latency. No zod defaults here: only what the\n // user set reaches the generated (and ejected) endpoint, so omitted\n // fields keep tracking the installed package's built-in defaults in\n // `ai/ask-context.ts` instead of pinning today's numbers as literals.\n retrieval: z\n .strictObject({\n contextBudget: z.number().int().positive().optional(),\n excerptChars: z.number().int().positive().optional(),\n maxResults: z.number().int().positive().optional(),\n })\n .optional(),\n // Empty-state prompts shown before the first question. Each renders as a\n // clickable suggestion; `icon` is an optional Lucide name beside it.\n suggestions: z\n .array(\n z.strictObject({\n icon: iconName.optional(),\n label: z.string().min(1),\n })\n )\n .default([]),\n // Where the panel's Contact support link goes: an email address\n // (`mailto:`, which starts an email with the conversation), a URL,\n // or a root-relative page (which get the conversation's `thread` id).\n support: z\n .string()\n .refine(\n (link) =>\n link.startsWith(\"mailto:\") ||\n link.startsWith(\"/\") ||\n isExternalUrl(link),\n {\n message:\n 'ai.assistant.support is a mailto: address, a URL, or a root-relative path, like \"mailto:help@example.com\".',\n }\n )\n .optional(),\n // Search and read-page tools the model can call over several steps.\n // No default here: unset follows the adapter (`toolsByDefault` in\n // `ai/ask.ts`), on for the hosted catalogs and off for an\n // OpenAI-compatible backend that may not speak tool calling.\n tools: z.boolean().optional(),\n },\n assistantMovedFieldsHint\n )\n .superRefine((value, ctx) => {\n // `cors` configures the generated route, which an external `endpoint`\n // replaces; accepting both would silently do nothing.\n if (value.cors && value.endpoint) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"ai.assistant.cors only applies to the generated route; with ai.assistant.endpoint, CORS is that backend's job.\",\n path: [\"cors\"],\n });\n }\n })\n .optional(),\n /**\n * The \"Open in chat\" page action. `true` (the default) lists every\n * provider, `false` hides the action entirely, and an array of provider\n * keys shows just that subset, in the given order. Normalized to the\n * provider list so consumers read a plain array.\n */\n openInChat: z\n .union([\n z.boolean(),\n z\n .array(z.enum(openInChatProviders))\n .refine((value) => new Set(value).size === value.length, {\n message: \"ai.openInChat must not repeat a provider.\",\n }),\n ])\n .default(true)\n .transform((value) => {\n if (isBoolean(value)) {\n return value ? [...openInChatProviders] : [];\n }\n return value;\n }),\n};\n\nconst aiConfigSchema = z.strictObject(\n aiConfigFields,\n removedKeysHint({\n ...movedToAgentsHints(\"ai\"),\n ask: \"ai.ask was renamed to ai.assistant.\",\n })\n);\n\n/**\n * A pinned link rendered above the sidebar sections — a blog, changelog, or\n * contact page that should always be reachable, regardless of the active tab.\n * `href` may be an external URL or an internal route.\n */\nconst featuredLinkSchema = z.strictObject({\n href: z.string(),\n icon: iconName.optional(),\n label: localizableLabelSchema,\n});\n\n/**\n * A header link: a plain one (`Log in`, `Status`), or the single call to\n * action. Same shape as a featured link minus the icon — the header row is\n * text, not iconography.\n */\nconst headerActionSchema = z.strictObject({\n href: z.string(),\n label: localizableLabelSchema,\n});\n\nconst navigationConfigSchema = z.strictObject({\n /** Plain links in the header, left of the icon buttons. */\n actions: z.array(headerActionSchema).default([]),\n /**\n * The one primary call to action in the header, as a filled button.\n *\n * Singular on purpose: a docs header has room for exactly one thing a\n * reader is being asked to do, a row of buttons asks for nothing, and\n * `featured` already takes the secondary links.\n */\n cta: headerActionSchema.optional(),\n /** Pinned links shown above the generated sidebar sections. */\n featured: z.array(featuredLinkSchema).default([]),\n /**\n * The GitHub link in the footer. `true` derives it from `github`, `false`\n * hides it, and an absolute URL points it anywhere on GitHub — an\n * organization, say, when the docs repo itself is private and `github` has\n * to stay unset. The mark stays the GitHub one, so a URL elsewhere belongs in\n * `actions`.\n */\n repo: z.union([z.boolean(), httpUrlSchema]).default(true),\n selectors: z.array(navSelectorSchema).default([]),\n /**\n * Sidebar behavior. `display` sets how every group renders (a group in an\n * explicit `items` config may still override it); `items` is an explicit\n * sidebar — when omitted the sidebar is generated from the content tree.\n * A bare array is shorthand for `{ items }`.\n */\n sidebar: z\n .union([\n z.array(sidebarItemSchema),\n z.strictObject({\n display: sidebarDisplaySchema.default(\"flat\"),\n items: z.array(sidebarItemSchema).optional(),\n }),\n ])\n .prefault({})\n .transform((value) =>\n Array.isArray(value) ? { display: \"flat\" as const, items: value } : value\n ),\n tabs: z.array(navTabSchema).default([]),\n});\n\nexport { assistantReasoningLevels } from \"../ai/ask.ts\";\nexport type { AssistantReasoning } from \"../ai/ask.ts\";\nexport type AssistantConfig = NonNullable<\n z.infer<typeof aiConfigSchema>[\"assistant\"]\n>;\nexport { openInChatProviders } from \"./open-in-chat.ts\";\nexport type { OpenInChatProvider } from \"./open-in-chat.ts\";\n\n// Reader-facing \"Export\" page action (PDF via print, EPUB via client-side\n// generation). Off by default. Accepts a shorthand boolean to toggle both\n// formats, or an object to enable them individually; both normalize to\n// `{ epub, pdf }` so consumers read plain booleans.\nconst exportConfigSchema = z\n .union([\n z.boolean(),\n z.strictObject({\n epub: z.boolean().default(false),\n pdf: z.boolean().default(false),\n }),\n ])\n .transform((value) =>\n isBoolean(value) ? { epub: value, pdf: value } : value\n );\n\n// The \"Was this page helpful?\" rating, on by default. `comments: true` adds a\n// box after the rating where the reader can say more, sent through the\n// analytics adapters as a `feedback_comment` event. Both forms normalize to\n// `{ enabled, comments }`.\nconst feedbackConfigSchema = z\n .union([\n z.boolean(),\n z.strictObject({\n comments: z.boolean().default(false),\n enabled: z.boolean().default(true),\n }),\n ])\n // With the rating off there is nothing to comment on.\n .transform((value) =>\n isBoolean(value)\n ? { comments: false, enabled: value }\n : { comments: value.enabled && value.comments, enabled: value.enabled }\n );\n\n// \"Listen to this page\". Off by default. `true` reads pages aloud with the\n// reader's browser voices, which needs no key and works on any host; an object\n// with a `provider` (`gateway()` or `openai()` from `blume/ai`) generates\n// neural audio at build instead, one cached clip per sentence, and falls back\n// to the browser's voices where no clips exist (`blume dev`, a build without\n// the key). Both normalize to `{ enabled, provider }`.\nconst narrationConfigSchema = z\n .union([\n z.boolean(),\n z.strictObject({\n enabled: z.boolean().default(true),\n provider: narrationProviderSchema.optional(),\n }),\n ])\n .transform((value) =>\n isBoolean(value)\n ? { enabled: value, provider: null }\n : { enabled: value.enabled, provider: value.provider ?? null }\n );\n\n/** A configured locale: ISO-ish code plus display metadata for the switcher. */\nconst localeSchema = z.strictObject({\n code: z.string().min(1),\n /** Text direction; drives `<html dir>` and a future RTL pass. */\n dir: z.enum([\"ltr\", \"rtl\"]).default(\"ltr\"),\n label: z.string(),\n /**\n * Freeform style guidance for `blume translate`, e.g. \"Brazilian\n * Portuguese, informal você\". Pins register and dialect from the first\n * translation and wins over an existing translation's style on reruns.\n */\n style: z.string().optional(),\n});\n\n/**\n * Internationalization. Opt-in: when absent, Blume is single-locale and behaves\n * exactly as before. The default locale lives at the content root; other locales\n * are top-level directories named by `code` (the `dir` parser).\n */\nconst i18nConfigSchema = z\n .strictObject({\n defaultLocale: z.string().default(\"en\"),\n /** Locale rendered for a missing translation; `null` disables fallback. */\n fallbackLocale: z.string().nullable().optional(),\n /** Drop the URL prefix for the default locale (`/`, `/fr/…`). Static-safe. */\n hideDefaultLocalePrefix: z.boolean().default(true),\n locales: z.array(localeSchema).min(1),\n /** `\"dir\"`: locale directories (`fr/page.mdx`). `\"dot\"`: filename suffix (`page.fr.mdx`). */\n parser: z.enum([\"dir\", \"dot\"]).default(\"dir\"),\n /**\n * Send a visitor who lands on the default language's home page to the\n * home page in their browser's preferred language, until they pick a\n * language with the switcher. Off by default.\n */\n routeByBrowserLanguage: z.boolean().default(false),\n /** Per-locale UI string overrides: `{ fr: { search: { button: \"…\" } } }`. */\n ui: uiLocaleOverridesSchema.optional(),\n })\n .superRefine((value, ctx) => {\n const codes = new Set(value.locales.map((locale) => locale.code));\n if (!codes.has(value.defaultLocale)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `i18n.defaultLocale \"${value.defaultLocale}\" must match one of i18n.locales.`,\n path: [\"defaultLocale\"],\n });\n }\n if (\n value.fallbackLocale !== null &&\n value.fallbackLocale !== undefined &&\n !codes.has(value.fallbackLocale)\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `i18n.fallbackLocale \"${value.fallbackLocale}\" must match one of i18n.locales.`,\n path: [\"fallbackLocale\"],\n });\n }\n });\n\n/**\n * Version ids must start with a letter (`v1.0`, not `1.0`): the id doubles as\n * the snapshot directory name, and a leading digit would collide with the\n * numeric-prefix ordering convention (`01-intro.mdx`), which strips `1.0/` to\n * `0/`. The rest allows word characters, dots, and hyphens — URL-safe as-is.\n */\nexport const VERSION_ID = /^[A-Za-z][\\w.-]*$/u;\n\n/** A frozen documentation snapshot: a directory under the content root. */\nconst archivedVersionSchema = z.strictObject({\n /**\n * The \"you're viewing an old version\" notice: `true` for the built-in\n * message, a string for custom copy, `false` to hide it.\n */\n banner: z.union([z.boolean(), z.string()]).default(true),\n /**\n * Where this version's pages point their canonical URL: `latest` targets the\n * same page in the current docs when it still exists (self otherwise), so\n * search engines treat the live page as authoritative without deindexing\n * version-only content. `self` keeps every page authoritative.\n */\n canonical: z.enum([\"latest\", \"self\"]).default(\"latest\"),\n /** Directory name under the content root, and the URL segment. */\n id: z\n .string()\n .regex(\n VERSION_ID,\n 'Version ids must start with a letter (e.g. \"v1.0\") and contain only letters, digits, dots, hyphens, and underscores.'\n ),\n /** Switcher label; defaults to the id. */\n label: z.string().optional(),\n /** Emit `noindex` on every page of this version. */\n noindex: z.boolean().default(false),\n});\n\n/**\n * Docs versioning. Opt-in: the latest docs live at the content root with\n * unprefixed URLs, and each archived version is a frozen snapshot directory\n * (`content/docs/<id>/`) cut with `blume version <id>`. Archived means frozen:\n * snapshots carry their own translations and are never retranslated.\n */\nconst versionsConfigSchema = z\n .strictObject({\n /** Frozen snapshots, newest first — this order is the switcher order. */\n archived: z.array(archivedVersionSchema).default([]),\n /** Labels the unprefixed tree (the latest docs) in the switcher. */\n current: z.strictObject({\n /** Small tag rendered next to the label (e.g. `Latest`). */\n badge: z.string().optional(),\n label: z.string(),\n }),\n switcher: z\n .strictObject({\n /**\n * Where switching lands when the page has no equivalent in the target\n * version: `same-page` goes to the equivalent when it exists (version\n * root otherwise); `root` always goes to the version root.\n */\n redirect: z.enum([\"same-page\", \"root\"]).default(\"same-page\"),\n })\n .prefault({}),\n })\n .superRefine((value, ctx) => {\n const seen = new Set<string>();\n for (const [position, version] of value.archived.entries()) {\n if (seen.has(version.id)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `versions.archived declares \"${version.id}\" more than once.`,\n path: [\"archived\", position, \"id\"],\n });\n }\n seen.add(version.id);\n }\n });\n\nconst URL_ORIGIN = /^[a-z][\\d+.a-z-]*:\\/\\/[^/]*/iu;\n\n/**\n * The shape each end must start with: `from` is always a path on this site,\n * `to` may also leave it. A path without its leading slash would never gain\n * `basePath` or the deployment base, and hosts read it relative to nothing.\n */\nconst REDIRECT_START = {\n from: {\n allows: (path: string) => path.startsWith(\"/\"),\n message:\n \"redirects take root-relative paths: `from` must start with `/` (`/old-page`, not `old-page`).\",\n },\n to: {\n allows: (path: string) => path.startsWith(\"/\") || URL_ORIGIN.test(path),\n message:\n \"redirects take root-relative paths or full URLs: `to` must start with `/` (`/new-page`, not `new-page`) or be an absolute URL (`https://…`).\",\n },\n};\n\nconst redirectPath = (end: \"from\" | \"to\") =>\n z.string().refine(REDIRECT_START[end].allows, {\n message: REDIRECT_START[end].message,\n });\n\n/**\n * A redirect: an exact path, or a pattern (`/beta/:slug*`, `/old/*`) whose\n * captures `to` may read (see `core/redirect-patterns.ts`).\n */\nconst redirectSchema = z\n .strictObject({\n from: redirectPath(\"from\"),\n status: z\n .union([z.literal(301), z.literal(302), z.literal(307), z.literal(308)])\n .default(301),\n to: redirectPath(\"to\"),\n })\n .superRefine((redirect, ctx) => {\n const error = redirectPatternError(redirect.from, redirect.to);\n if (error) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: error.message,\n path: [error.end],\n });\n }\n });\n\n/**\n * One authorized remote image source, passed through to Astro's\n * `image.remotePatterns`. Wildcards follow Astro's rules: `hostname` accepts\n * `**.example.com` (any depth) or `*.example.com` (one level), `pathname`\n * accepts `/dir/**` or `/dir/*` the same way.\n */\nconst imageRemotePatternSchema = z.strictObject({\n hostname: z.string().optional(),\n pathname: z.string().optional(),\n port: z.string().optional(),\n protocol: z.string().optional(),\n});\n\n/**\n * Image optimization (`image`). Local images referenced by relative path\n * (`![alt](./diagram.png)`) are optimized at build time automatically —\n * compressed, converted to WebP, and stamped with intrinsic dimensions.\n * Remote images are only optimized when their host is authorized here;\n * both fields map directly onto Astro's `image` config.\n */\nconst imageConfigSchema = z.strictObject({\n /** Hosts whose remote images may be optimized, e.g. `[\"cdn.example.com\"]`. */\n domains: z.array(z.string()).default([]),\n /** Pattern-based host authorization, for wildcards `domains` can't express. */\n remotePatterns: z.array(imageRemotePatternSchema).default([]),\n});\n\n/**\n * X (Twitter) attribution. The account fields feed `twitter:site` (the site's\n * account) and `twitter:creator` (the author's), which is the one piece of X\n * card metadata with no Open Graph equivalent to fall back to — everything else\n * on the card is read from `og:*`.\n */\nconst xConfigSchema = z.strictObject({\n /** The author's account, overridable per page via `seo.x.creator`. */\n creator: xHandleSchema,\n /** The site's own account, e.g. `@blume`. */\n handle: xHandleSchema,\n});\n\n/**\n * Any CSS color. Takumi parses the full grammar, so this stays unvalidated\n * here and a bad value fails the OG prerender with a parse error naming it —\n * the same fail-fast the card's accent relies on. Validating hex-only here\n * would reject `oklch(…)`, which `theme.accent` (the card's default accent)\n * already accepts.\n */\nconst ogColorSchema = z.string();\n\nconst ogPaletteSchema = z.strictObject({\n accent: ogColorSchema.optional(),\n background: ogColorSchema.optional(),\n border: ogColorSchema.optional(),\n foreground: ogColorSchema.optional(),\n muted: ogColorSchema.optional(),\n});\n\n/**\n * A font to load into the OG card renderer. A bare string is a Google Fonts\n * family name; the name-only object form pins the weight (a number, a list, or\n * a variable range like `\"100..900\"`) and style, fetched from Google Fonts at\n * build. The `src` form reads a local font file from the project instead.\n * Either way Takumi does per-glyph fallback, so a family covering a script\n * (e.g. Noto Sans JP for CJK) fixes tofu without touching how Latin renders.\n */\nconst ogFontWeightSchema = z.union([\n z.number().int().positive(),\n z.array(z.number().int().positive()),\n z.string().regex(/^\\d+\\.\\.\\d+$/u),\n]);\nconst ogFontStyleSchema = z.enum([\"normal\", \"italic\"]);\nconst ogFontSchema = z.union([\n z.string(),\n z.strictObject({\n name: z.string(),\n style: z.union([ogFontStyleSchema, z.array(ogFontStyleSchema)]).optional(),\n weight: ogFontWeightSchema.optional(),\n }),\n /** A local font file, read from the project at build. */\n z.strictObject({\n name: z.string(),\n src: z.string().min(1),\n style: ogFontStyleSchema.optional(),\n weight: z.number().int().positive().optional(),\n }),\n]);\n\nconst ogConfigSchema = z.strictObject({\n /**\n * Site-wide card subtitle, shown on pages without their own description.\n * Defaults to the site description; a string overrides it, `false` renders\n * every card without a subtitle (page descriptions included).\n */\n description: z.union([z.string(), z.literal(false)]).optional(),\n /**\n * Generate a per-page Open Graph image. Defaults to on once a deployment\n * site URL is known (set or auto-detected) and off otherwise, since\n * `og:image` must be absolute to be useful to crawlers — resolved in\n * `loadConfig`. An explicit value here always wins.\n */\n enabled: z.boolean().optional(),\n /**\n * Fonts for the generated card, replacing the default stack (Takumi's\n * Latin-only built-in font plus a Noto fallback per script). Google\n * families are fetched from Google Fonts at build.\n */\n fonts: z.array(ogFontSchema).optional(),\n /**\n * Local SVG used in the generated card instead of the site logo; `false`\n * renders the card without any brand mark.\n */\n logo: z.union([z.string(), z.literal(false)]).optional(),\n /** Optional generated-card colors. */\n palette: ogPaletteSchema.optional(),\n /**\n * Footer site text. Defaults to the deployment site's host plus\n * `deployment.base` (`docs.acme.com`, `user.github.io/repo`); a string\n * overrides it, `false` hides it.\n */\n site: z.union([z.string(), z.literal(false)]).optional(),\n /**\n * Card headlines for custom `.astro` pages, keyed by route (`\"/\"`, `\"/cli\"`).\n * A custom page has no frontmatter to read, so its card is otherwise titled\n * by humanizing its last URL segment (`/cli` → \"Cli\"); an entry here wins.\n * Content pages always take their card headline from the page title.\n */\n titles: z.record(z.string(), z.string()).optional(),\n});\n\nconst rssConfigSchema = z.strictObject({\n enabled: z.boolean().default(true),\n /** Max items per feed, newest first. */\n limit: z.number().int().positive().default(50),\n /** Content types that each get a feed at `/<type>/rss.xml`. */\n types: z.array(z.string()).default([\"blog\", \"changelog\"]),\n});\n\n/**\n * robots.txt `Content-Signal` preferences — the emerging content-usage\n * declaration for how crawlers may reuse the site. Each field maps to one\n * signal:\n * - `search` → `search` (traditional and AI search indexing)\n * - `aiInput` → `ai-input` (grounding / RAG use at answer time)\n * - `aiTrain` → `ai-train` (model training)\n */\nconst contentSignalsObjectSchema = z.strictObject({\n aiInput: z.boolean().default(true),\n aiTrain: z.boolean().default(true),\n search: z.boolean().default(true),\n});\n\n/**\n * Content signals accept a boolean shorthand or a per-signal object, and\n * normalize to `{ search, aiInput, aiTrain }` — or `null` when disabled, so\n * robots.txt omits the declaration entirely. On by default (`true`): Blume\n * declares the docs open to search and agents. `false` opts out; an object\n * restricts individual signals (unset signals stay `yes`).\n */\nconst contentSignalsSchema = z\n .union([z.boolean(), contentSignalsObjectSchema])\n .transform((value) => {\n if (value === true) {\n return contentSignalsObjectSchema.parse({});\n }\n if (value === false) {\n return null;\n }\n return value;\n });\n\n/** A schema.org `PostalAddress`, any part of which may be given. */\nconst postalAddressSchema = z.strictObject({\n addressCountry: z.string().optional(),\n addressLocality: z.string().optional(),\n addressRegion: z.string().optional(),\n postalCode: z.string().optional(),\n streetAddress: z.string().optional(),\n});\n\n/**\n * `seo.organization`: the organization behind the site, emitted on every page\n * as a schema.org `Organization` node (see `seo/jsonld.ts`). Name and URL\n * default to the site's; contact details become a `ContactPoint`, the address\n * a `PostalAddress` — what agents check to verify a business.\n */\nconst organizationConfigSchema = z.strictObject({\n address: postalAddressSchema.optional(),\n contactType: z.string().default(\"customer support\"),\n email: z.email().optional(),\n logo: z.string().optional(),\n name: z.string().optional(),\n sameAs: z.array(z.url()).default([]),\n telephone: z.string().optional(),\n url: z.url().optional(),\n});\n\n/**\n * `seo.software`: the product the site documents, emitted on the homepage as\n * a schema.org `SoftwareApplication` node. `true` takes every default (name\n * and description from the site, category `DeveloperApplication`).\n */\nconst softwareConfigSchema = z.strictObject({\n applicationCategory: z.string().default(\"DeveloperApplication\"),\n description: z.string().optional(),\n license: z.string().optional(),\n name: z.string().optional(),\n operatingSystem: z.string().optional(),\n price: z.union([z.number().nonnegative(), z.string()]).optional(),\n priceCurrency: z.string().default(\"USD\"),\n sameAs: z.array(z.url()).default([]),\n});\n\ntype SoftwareResolved = z.output<typeof softwareConfigSchema>;\n\n/** Discoverability features: OG images, feeds, sitemap, structured data. */\nconst seoConfigFields = {\n /**\n * Meta tags written into every page's head, name to content: site\n * verification, `theme-color`, and anything else Blume has no setting for.\n * A tag Blume writes itself is refused with the setting that controls it.\n */\n metatags: z\n .record(z.string().min(1), z.string())\n .optional()\n .superRefine((tags, ctx) => {\n for (const name of Object.keys(tags ?? {})) {\n const owner = ownedMetatag(name);\n if (owner) {\n ctx.addIssue({\n code: \"custom\",\n message: `seo.metatags can't set \"${name}\": Blume writes that tag. Set it with ${owner}.`,\n path: [name],\n });\n }\n }\n }),\n og: ogConfigSchema.default({}),\n /** The organization behind the site, as an `Organization` JSON-LD node. */\n organization: organizationConfigSchema.optional(),\n /** Generate robots.txt (with a Sitemap reference when available). */\n robots: z.boolean().default(true),\n rss: rssConfigSchema.prefault({}),\n /** Generate sitemap.xml (requires deployment.site). */\n sitemap: z.boolean().default(true),\n /** The documented product, as a homepage `SoftwareApplication` node. */\n software: z\n .union([z.boolean(), softwareConfigSchema])\n .optional()\n .transform((value): SoftwareResolved | undefined => {\n if (value === true) {\n return softwareConfigSchema.parse({});\n }\n return value === false ? undefined : value;\n }),\n /** Emit schema.org JSON-LD in each page's <head>. */\n structuredData: z.boolean().default(true),\n /** X (Twitter) account attribution for share cards. */\n x: xConfigSchema.default({}),\n};\n\nconst seoConfigSchema = z.strictObject(\n seoConfigFields,\n removedKeysHint({\n agentReadability: \"seo.agentReadability moved to agents.agentReadability.\",\n contentSignals: \"seo.contentSignals moved to agents.contentSignals.\",\n })\n);\n\n/**\n * The machine-readable surface agents consume: the JSON API, `llms.txt`, the\n * MCP server, published skills, discovery manifests, and the robots.txt\n * usage policy. Everything reader-facing that talks to a model (the assistant, Open\n * in chat) stays under `ai`.\n */\nconst agentsConfigSchema = z.strictObject({\n /**\n * Emit `agent-readability.json` at the site root: a manifest that indexes\n * the agent-facing surface (llms.txt, Markdown mirrors, MCP server, feeds)\n * so agents can discover it without scraping HTML.\n */\n agentReadability: z.boolean().default(true),\n /**\n * The JSON docs API: the page index, per-page JSON, and navigation under\n * `/api/docs/` (prerendered, so a static site serves them from files), the\n * live search endpoint on server output, and the OpenAPI description of\n * the whole machine-readable surface at `/openapi.json`. On by default.\n */\n api: z.boolean().default(true),\n /**\n * The AI Catalog / ARD manifest at `/.well-known/ai-catalog.json` (mirrored\n * at `/.well-known/ard.json`): one entry per agent-facing resource the site\n * publishes — the MCP server card, each agent skill, the JSON docs API's\n * OpenAPI document, each rendered API reference, and llms.txt — so agent\n * registries can index the site from its domain alone. Needs a\n * `deployment.site` (identifiers are domain-anchored URNs). On by default;\n * the object form overrides the generated representative queries.\n */\n catalog: z\n .union([z.boolean(), aiCatalogObjectSchema])\n .default(true)\n .transform((value): AiCatalogResolved =>\n isBoolean(value) ? { enabled: value, queries: {} } : value\n ),\n /** robots.txt `Content-Signal` usage declaration (on by default). */\n contentSignals: contentSignalsSchema.prefault(true),\n /**\n * `llms.txt`/`llms-full.txt` emission. A bare boolean toggles it; the object\n * form adds `openapi: false` to keep generated API reference pages out of\n * both files (e.g. when the configured spec is example content) and\n * `details`, free-form Markdown placed after the summary — the llms.txt\n * spec's details block, where a site tells agents when to reach for it.\n */\n llmsTxt: z\n .union([z.boolean(), llmsTxtObjectSchema])\n .default(true)\n .transform((value): LlmsTxtResolved =>\n isBoolean(value) ? { enabled: value, openapi: true } : value\n ),\n // Serializers for the agent-facing Markdown downlevel (the `.md` mirror,\n // llms-full.txt, MCP get_page), keyed by JSX name. Functions live here —\n // not in components.tsx — because the config file is executed at build\n // time while the components file is only statically analyzed. A same-name\n // entry replaces the built-in serializer.\n // Two-argument `z.record` — the single-argument form throws at\n // schema-construction time under Zod 4 (see uiStringsOverrideSchema).\n markdownComponents: z\n .record(\n z.string(),\n z.custom<ComponentMarkdown>(\n (value): value is ComponentMarkdown => typeof value === \"function\",\n {\n message: \"Expected a serializer function.\",\n }\n )\n )\n .default({}),\n /** Expose the docs as an MCP server for connecting agents. */\n mcp: mcpConfigSchema.prefault({}),\n /**\n * Generate the site's own agent skill: a `SKILL.md` named after the site,\n * built from its navigation, page descriptions, and agent surfaces, served\n * at `/skill.md` and in the skills discovery index. Needs a\n * `deployment.site`. A skill in `agents.skills` with the same name replaces\n * it. On by default.\n */\n skillMd: z.boolean().default(true),\n /**\n * Publish Agent Skills for discovery: a directory (resolved against the\n * project root) whose subdirectories each hold a `SKILL.md`. The build\n * copies each skill under `/.well-known/agent-skills/` — a lone `SKILL.md`\n * verbatim, a skill with supporting files as a `.tar.gz` — and emits the\n * discovery index (`index.json`) with SHA-256 digests per the Agent Skills\n * Discovery RFC.\n */\n skills: z.string().min(1).optional(),\n /**\n * Web Bot Auth (IETF `webbotauth`): publish the org's HTTP Message\n * Signature public keys at `/.well-known/http-message-signatures-directory`\n * so sites receiving requests from the org's agents can verify them.\n * Opt-in and public-keys-only — the private keys live wherever the signing\n * agents run, never in the site.\n */\n webBotAuth: z\n .strictObject({\n keys: z.array(publicJwkSchema).default([]),\n })\n .prefault({}),\n /**\n * WebMCP: register in-page tools (search, page Markdown, the docs index)\n * on the browser's model context so agentic browsers can drive the docs\n * without a separate MCP connection. A tiny script that no-ops in browsers\n * without the API; on by default.\n */\n webmcp: z.boolean().default(true),\n});\n\n/**\n * The GitHub instance's origin, normalized. Repo, edit, and API URLs are all\n * built by appending to this, so it is reduced to a bare origin: a trailing\n * slash would double the separator, and a path, query, fragment, or embedded\n * credentials would land in the middle of every generated link.\n */\nconst githubOriginSchema = httpUrlSchema.transform(\n (value) => new URL(value).origin\n);\n\n/**\n * A REST API base: an origin plus an optional path, since Enterprise Server\n * serves the API from `/api/v3`. Anything past the path is dropped for the same\n * reason the host is reduced — `/repos/{owner}/{repo}` is appended as a string,\n * so a query would swallow the route and a fragment would strip it from the\n * request entirely, leaving a lookup that silently returns the wrong thing.\n */\nconst githubApiSchema = httpUrlSchema.transform((value) => {\n const { origin, pathname } = new URL(value);\n return trimEnd(`${origin}${pathname}`, \"/\");\n});\n\nconst githubConfigSchema = z.strictObject({\n /** REST API base. Derived from `host` when unset. */\n api: githubApiSchema.optional(),\n branch: z.string().default(\"main\"),\n /** Path from the repo root to the project root (for monorepos). */\n dir: z.string().optional(),\n /** Origin of the GitHub instance, for Enterprise installations. */\n host: githubOriginSchema.default(PUBLIC_HOST_URL),\n owner: z.string(),\n repo: z.string(),\n});\n\n/** The theme fields the structural code-theme check inspects. */\ninterface CodeThemeFields {\n colors?: unknown;\n settings?: unknown;\n tokenColors?: unknown;\n}\n\n/** A non-null, non-array object — the floor for a theme and its `colors` map. */\nconst isThemeObject = <Value>(value: Value): value is Value & CodeThemeFields =>\n typeof value === \"object\" && value !== null && !Array.isArray(value);\n\nconst codeThemeSchema = z.custom<CodeTheme>((value) => {\n if (isString(value)) {\n return true;\n }\n if (!isThemeObject(value)) {\n return false;\n }\n // Token rules live in `settings` (Shiki's canonical field, also the TextMate\n // form themes like createCssVariablesTheme() produce) or `tokenColors` (the\n // VS Code spelling Shiki falls back to). A colors-only theme (editor fg/bg,\n // no token rules) is also valid — Shiki renders it from `colors` alone. Each\n // field present must have the right shape, and at least one must be present.\n const settingsValid =\n value.settings === undefined || Array.isArray(value.settings);\n const tokenColorsValid =\n value.tokenColors === undefined || Array.isArray(value.tokenColors);\n const colorsValid = value.colors === undefined || isThemeObject(value.colors);\n const hasContent =\n value.settings !== undefined ||\n value.tokenColors !== undefined ||\n value.colors !== undefined;\n return settingsValid && tokenColorsValid && colorsValid && hasContent;\n}, \"Expected a Shiki theme name or custom theme object\");\n\nconst codeBlockThemeSchema = z.strictObject({\n dark: codeThemeSchema.default(\"github-dark\"),\n light: codeThemeSchema.default(\"github-light\"),\n});\n\n/**\n * `<Component />` example previews. A string is shorthand for `{ source }`:\n * where examples live, relative to the project root (default `examples`).\n * `source` may be a glob (anything with `*`/`?`/`[]`/`{}`/`!`), in which case\n * only matching files are discovered and each `<Component path>` key is\n * relative to the glob's static prefix — use this for a registry layout that\n * colocates component sources with their examples\n * (`registry/<pkg>/**\\/examples/*`), leaving the sources (which have no\n * default export to wrap) out.\n *\n * `css` names a stylesheet (relative to the project root) injected into every\n * preview frame after Blume's default tokens. Previews render in an isolated\n * iframe that the site's docs styles never reach, so this is where design\n * tokens for the previewed components live — e.g. shadcn variables and\n * `@theme` mappings. Tailwind itself is already provided; the file should\n * hold tokens and custom styles, not another `@import \"tailwindcss\"`.\n */\nconst examplesConfigSchema = z\n .union([\n z.string(),\n z.strictObject({\n css: z.string().optional(),\n source: z.string().default(\"examples\"),\n }),\n ])\n .transform((value): { css?: string; source: string } =>\n isString(value) ? { source: value } : value\n );\n\n/**\n * \"Last updated\" timestamps for content pages. `false` (default) disables the\n * feature; `\"git\"` derives each page's date from the repository history;\n * `\"frontmatter\"` never runs git and reads only the page's own field. A page's\n * `lastModified` frontmatter always wins. The 1.x `true` and `{ type }` forms\n * fail with the hint below.\n */\nconst lastModifiedConfigSchema = z.union(\n [z.literal(false), z.enum([\"git\", \"frontmatter\"])],\n {\n error: (issue) =>\n issue.code === \"invalid_union\"\n ? 'lastModified takes false, \"git\", or \"frontmatter\": `true` became \"git\" and `{ type: \"…\" }` became the bare string.'\n : undefined,\n }\n);\n\n/**\n * How the \"last updated\" stamp and the changelog timeline render their dates —\n * a curated pass-through to `Intl.DateTimeFormat`, shared by both surfaces so\n * they read alike. Defaults to `{ dateStyle: \"long\" }`. Both stamps format in\n * UTC unless a `timeZone` is given, so a date reads the same regardless of the\n * build machine's zone. `dateStyle` is a preset that can't be combined with the\n * individual component fields (`year`, `month`, …), matching `Intl`'s own rule.\n */\n/** The `dateFormat` fields that choose the date's shape (length, components). */\nconst DATE_FORM_FIELDS = [\n \"dateStyle\",\n \"weekday\",\n \"era\",\n \"year\",\n \"month\",\n \"day\",\n] as const;\n\n/**\n * Whether `Intl` knows a time zone. An unknown one (`Asia/Tokio`) throws a\n * RangeError the first time a date is formatted, deep in a page render, so it\n * is caught here where the error can point at `dateFormat.timeZone`.\n */\nconst isKnownTimeZone = (timeZone: string): boolean => {\n try {\n Intl.DateTimeFormat(\"en\", { timeZone });\n return true;\n } catch {\n return false;\n }\n};\n\nconst dateFormatConfigSchema = z\n .strictObject({\n /** Calendar system (e.g. `japanese`, `buddhist`). */\n calendar: z.string().optional(),\n /** Preset date length; mutually exclusive with the component fields. */\n dateStyle: z.enum([\"full\", \"long\", \"medium\", \"short\"]).optional(),\n /** Day representation. */\n day: z.enum([\"numeric\", \"2-digit\"]).optional(),\n /** Era representation (e.g. the Japanese imperial era). */\n era: z.enum([\"long\", \"short\", \"narrow\"]).optional(),\n /** Month representation. */\n month: z.enum([\"numeric\", \"2-digit\", \"long\", \"short\", \"narrow\"]).optional(),\n /** Numbering system (e.g. `latn`, `arab`). */\n numberingSystem: z.string().optional(),\n /** IANA time zone (e.g. `Asia/Tokyo`). Defaults to `UTC`. */\n timeZone: z\n .string()\n .refine(isKnownTimeZone, {\n message:\n 'Unknown time zone; use an IANA name like \"Asia/Tokyo\" or \"UTC\".',\n })\n .optional(),\n /** Weekday representation. */\n weekday: z.enum([\"long\", \"short\", \"narrow\"]).optional(),\n /** Year representation. */\n year: z.enum([\"numeric\", \"2-digit\"]).optional(),\n })\n .refine(\n (value) =>\n value.dateStyle === undefined ||\n (value.weekday === undefined &&\n value.era === undefined &&\n value.year === undefined &&\n value.month === undefined &&\n value.day === undefined),\n {\n message:\n \"dateFormat.dateStyle can't be combined with weekday/era/year/month/day; use one or the other.\",\n }\n )\n // `timeZone`, `calendar`, and `numberingSystem` don't pick a shape, so a\n // format that sets only those keeps the long default instead of falling to\n // Intl's bare numeric date (`7/21/2026`).\n .transform((value) =>\n DATE_FORM_FIELDS.some((field) => value[field] !== undefined)\n ? value\n : { ...value, dateStyle: \"long\" as const }\n );\n\n/** Code rendering options (`markdown.code`). */\nconst codeConfigSchema = z.strictObject({\n /**\n * Show a brand language icon in the code-block header (TypeScript, Python,\n * …). On by default; recognized languages only.\n */\n icons: z.boolean().default(true),\n /**\n * Light/dark Shiki themes for every code surface: fenced blocks, inline\n * `` `code`{:lang} ``, `<CodeBlock>`, and `<Diff>`.\n */\n theme: codeBlockThemeSchema.prefault({}),\n /**\n * Wrap long lines instead of scrolling horizontally. Off by default, so\n * code keeps its original line breaks and overflows into a scroll area.\n */\n wrap: z.boolean().default(false),\n});\n\nconst markdownConfigFields = {\n /** Code rendering: language icons, syntax themes, and line wrapping. */\n code: codeConfigSchema.prefault({}),\n /**\n * Open external Markdown links (absolute `http(s)://` and `//host` URLs) in\n * a new tab, like Blume's own header and sidebar links: `target=\"_blank\"`,\n * `rel=\"noreferrer\"`, an arrow icon, and a screen-reader \"Opens in a new\n * tab\" hint. Off by default; site routes, fragments, and `mailto:`/`tel:`\n * links are never affected.\n */\n externalLinks: z.boolean().default(false),\n /**\n * Wrap each `##`–`######` heading in a link to its own anchor so readers can\n * click to copy, bookmark, or share a permalink to that section. On by\n * default; set to `false` to render plain headings.\n */\n headingAnchors: z.boolean().default(true),\n /**\n * Make content images click-to-zoom (open in a lightbox). On by default;\n * opt a single image out with `data-no-zoom`.\n */\n imageZoom: z.boolean().default(true),\n};\n\nconst markdownConfigSchema = z.strictObject(\n markdownConfigFields,\n removedKeysHint({\n codeBlocks:\n \"markdown.codeBlocks was merged into markdown.code: move theme: { light, dark } under markdown.code.\",\n })\n);\n\n/** React island behavior (`react`). */\nconst reactConfigSchema = z.strictObject({\n /**\n * Auto-memoize React components/hooks with the React Compiler\n * (`oxc-transform-react`). On by default whenever React is enabled\n * (a project `.tsx`/`.jsx`, a React island/example/override, or the assistant); set\n * to `false` to skip the compiler pass.\n */\n compiler: z.boolean().default(true),\n});\n\n/**\n * Opt-in custom frontmatter keys. `extend` maps each extra key a project's\n * pages may carry (e.g. `owner`, `reviewedAt`) to a validation schema; the\n * page schema stays strict for everything else, so typo-catching is preserved.\n * Schemas are consumed through the Standard Schema `~standard` contract —\n * never Zod's own API — so the consumer's zod (any version), Valibot, or\n * ArkType all work (see `standard-schema.ts`). Every declared key is validated\n * on every page, absent ones included, so a required schema enforces the key\n * site-wide; mark it `.optional()` to validate only when present. Built-in\n * frontmatter fields can't be redeclared — they're load-bearing (routing,\n * sidebar, SEO), and shadowing one would silently change its semantics.\n */\nconst frontmatterConfigSchema = z.strictObject({\n extend: customKeySchemaRecord(\"frontmatter.extend\"),\n});\n\n/** Full user-facing config schema. All fields optional with defaults. */\n/**\n * Table-of-contents config. `true`/`false` toggles it; an object narrows the\n * heading range. Normalized to `{ enabled, minLevel, maxLevel }` (default: on,\n * H2–H3, matching the historical hardcoded range).\n */\nconst tocConfigSchema = z\n .union([\n z.boolean(),\n z.strictObject({\n maxHeadingLevel: z.number().int().min(1).max(6).optional(),\n minHeadingLevel: z.number().int().min(1).max(6).optional(),\n }),\n ])\n .default(true)\n .transform((value) => {\n if (isBoolean(value)) {\n return { enabled: value, maxLevel: 3, minLevel: 2 };\n }\n return {\n enabled: true,\n maxLevel: value.maxHeadingLevel ?? 3,\n minLevel: value.minHeadingLevel ?? 2,\n };\n })\n // Checked after defaults apply, so `{ minHeadingLevel: 5 }` (default max 3)\n // is caught too — an inverted range would silently render an empty TOC.\n .refine((value) => value.minLevel <= value.maxLevel, {\n message:\n \"toc.minHeadingLevel must be less than or equal to toc.maxHeadingLevel.\",\n });\n\nexport const blumeConfigSchema = z\n .strictObject(\n {\n agents: agentsConfigSchema.prefault({}),\n ai: aiConfigSchema.prefault({}),\n // Adapters from `blume/analytics`, each a serializable descriptor.\n analytics: analyticsConfigSchema,\n api: apiConfigSchema.prefault({}),\n banner: bannerConfigSchema.optional(),\n /**\n * Site-wide mount point prepended to every generated route (e.g. `/docs`),\n * while staying invisible to the sidebar/nav tree. Distinct from a per-source\n * `prefix` (which creates a group) and from `deployment.base` (Astro's\n * host-subdirectory base); the two compose. Normalized to `\"\"` or `/seg`.\n */\n basePath: z\n .string()\n // Normalizing would turn a URL into `/https:/docs.example.com/docs`\n // and keep a query or fragment inside every route.\n .refine((value) => !URL_ORIGIN.test(value) && !/[#?]/u.test(value), {\n message:\n 'basePath takes a path like \"/docs\", not a URL: no scheme, host, query, or fragment. The site\\'s origin goes in deployment.site.',\n })\n .optional()\n .transform((value) => normalizeBasePath(value)),\n changelog: changelogConfigSchema.optional(),\n // An adapter from `blume/consent`; analytics waits for the reader.\n consent: consentConfigSchema,\n content: contentConfigSchema.prefault({}),\n /**\n * Date presentation for the \"last updated\" stamp and the changelog timeline.\n * Pass-through `Intl.DateTimeFormat` options; defaults to `{ dateStyle: \"long\" }`.\n */\n dateFormat: dateFormatConfigSchema.default({ dateStyle: \"long\" }),\n /**\n * A host adapter from `blume/deploy` (`vercel()`, `netlify()`,\n * `cloudflare()`, `node()`) for a server build on that host, or the plain\n * `{ site, base }` form for a static build anywhere. Resolves to the\n * adapter's descriptor with `output` filled in; `static` when unset.\n */\n deployment: resolvedDeploymentSchema.prefault({}),\n description: z.string().optional(),\n /**\n * Where `<Component path>` resolves live previews and their source from.\n * A string is shorthand for `{ source }` — the directory (or glob, for\n * colocated registry layouts) under the project root that holds example\n * files. The object form adds `css`: a stylesheet injected into every\n * preview frame (design tokens, shadcn variables, `@theme` mappings).\n */\n examples: examplesConfigSchema.prefault(\"examples\"),\n export: exportConfigSchema.prefault(false),\n feedback: feedbackConfigSchema.prefault(true),\n footer: footerConfigSchema.optional(),\n /** Opt-in custom frontmatter keys, validated by user-supplied schemas. */\n frontmatter: frontmatterConfigSchema.prefault({}),\n github: githubConfigSchema.optional(),\n i18n: i18nConfigSchema.optional(),\n image: imageConfigSchema.prefault({}),\n integrations: z.array(z.custom<AstroIntegration>()).default([]),\n lastModified: lastModifiedConfigSchema.default(false),\n logo: logoConfigSchema.optional(),\n markdown: markdownConfigSchema.prefault({}),\n narration: narrationConfigSchema.prefault(false),\n navigation: navigationConfigSchema.prefault({}),\n poweredBy: z.boolean().default(true),\n // An adapter from `blume/ratelimit`, `memory()` by default; `false` is off.\n rateLimit: rateLimitConfigSchema,\n react: reactConfigSchema.prefault({}),\n redirects: z.array(redirectSchema).default([]),\n /** API references: adapters from `blume/reference`, each a serializable descriptor. */\n reference: referenceConfigSchema,\n search: searchConfigSchema.prefault({}),\n seo: seoConfigSchema.prefault({}),\n theme: themeConfigSchema.prefault({}),\n title: z.string().default(\"Documentation\"),\n toc: tocConfigSchema,\n /**\n * Content variables: `{{name}}` in a page body reads the value (see\n * `core/variables.ts`). Names take letters, digits, `_`, and `-`;\n * values are one line, so a substitution never moves the lines a\n * diagnostic points at.\n */\n variables: z\n .record(\n z.string().regex(VARIABLE_NAME, {\n message:\n \"Variable names take letters, digits, `_`, and `-`, like `version` or `api-url`.\",\n }),\n z.string().refine((value) => !/[\\r\\n]/u.test(value), {\n message: \"A variable's value must fit on one line.\",\n })\n )\n .default({}),\n versions: versionsConfigSchema.optional(),\n },\n {\n // The 1.x `openapi`/`asyncapi`/`graphql` blocks name the `reference` list\n // that replaced them, alongside every other issue in the config.\n error: (issue) =>\n issue.code === \"unrecognized_keys\"\n ? removedReferenceKeysHint(issue.keys)\n : undefined,\n }\n )\n .superRefine((config, ctx) => {\n // A version id that is also a configured locale code would make a leading\n // `<id>/` directory ambiguous between the two axes — refuse it outright so\n // detection order (version first, then locale) never has to guess.\n if (config.versions && config.i18n) {\n const localeCodes = new Set(\n config.i18n.locales.map((locale) => locale.code.toLowerCase())\n );\n for (const [position, version] of config.versions.archived.entries()) {\n if (localeCodes.has(version.id.toLowerCase())) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Version id \"${version.id}\" is also a configured locale code — rename the version (e.g. \"v${version.id}\").`,\n path: [\"versions\", \"archived\", position, \"id\"],\n });\n }\n }\n }\n // A custom key is declared site-wide (`frontmatter.extend`) or per-type\n // (`content.types`), never both — two schemas for one key would make\n // precedence on pages of that type ambiguous.\n for (const [typeName, typeConfig] of Object.entries(config.content.types)) {\n for (const key of Object.keys(typeConfig.frontmatter)) {\n if (Object.hasOwn(config.frontmatter.extend, key)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `\"${key}\" is already declared in frontmatter.extend and cannot be redeclared for type \"${typeName}\".`,\n path: [\"content\", \"types\", typeName, \"frontmatter\", key],\n });\n }\n }\n // A facet with no declared key could never carry a value — pages can't\n // even set the key — so it's a config mistake, caught here where both\n // the per-type map and the site-wide extend are visible.\n for (const [position, facet] of typeConfig.facets.entries()) {\n if (\n !(\n Object.hasOwn(typeConfig.frontmatter, facet) ||\n Object.hasOwn(config.frontmatter.extend, facet)\n )\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Facet \"${facet}\" for type \"${typeName}\" is not a declared custom frontmatter key — add it to the type's frontmatter map or frontmatter.extend.`,\n path: [\"content\", \"types\", typeName, \"facets\", position],\n });\n }\n }\n }\n // Cloudflare's rate limiting is a Worker binding, which only a Cloudflare\n // deployment has.\n if (\n config.rateLimit?.kind === \"cloudflare\" &&\n config.deployment.kind !== \"cloudflare\"\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n 'rateLimit: cloudflare() counts with a Workers binding, so it needs `deployment: cloudflare()` from \"blume/deploy\". On another host, use upstash() or memory() from \"blume/ratelimit\".',\n path: [\"rateLimit\"],\n });\n }\n });\n\n/** Resolved config: every field present after defaults are applied. */\nexport type ResolvedConfig = z.infer<typeof blumeConfigSchema>;\n/** Resolved `dateFormat`: the `Intl.DateTimeFormat` options both date stamps share. */\nexport type ResolvedDateFormat = z.infer<typeof dateFormatConfigSchema>;\n/** Resolved `frontmatter.extend`: custom key → user-supplied schema. */\nexport type FrontmatterExtend = Record<string, StandardSchema>;\n/** Resolved i18n block (present only when the project opts into i18n). */\nexport type ResolvedI18nConfig = z.infer<typeof i18nConfigSchema>;\n/** A configured locale with display metadata. */\nexport type LocaleConfig = z.infer<typeof localeSchema>;\n/** Resolved versions block (present only when the project opts into versioning). */\nexport type ResolvedVersionsConfig = z.infer<typeof versionsConfigSchema>;\n/** A configured archived (frozen) version. */\nexport type ArchivedVersionConfig = z.infer<typeof archivedVersionSchema>;\n/**\n * User-authored config, straight off the schema. The public, hand-documented\n * authoring type is `BlumeConfig` in `./config-input.ts`, which a compile-time\n * guard keeps structurally identical to this.\n */\nexport type BlumeConfigInput = z.input<typeof blumeConfigSchema>;\n/** The resolved search backend: an adapter descriptor, or `none`. */\nexport type { ResolvedSearchAdapter } from \"../search/adapters/registry.ts\";\n/** Resolved robots.txt `Content-Signal` preferences (`null` when disabled). */\nexport type ContentSignals = z.infer<typeof contentSignalsSchema>;\n/** The resolved per-signal policy object (present when signals are enabled). */\nexport type ContentSignalPolicy = NonNullable<ContentSignals>;\n",
64
+ "import { z } from \"zod\";\n\nimport type { AdapterDescriptor, JsonValue } from \"../core/adapter.ts\";\nimport { adapterDescriptorSchema } from \"../core/adapter.ts\";\nimport { unrecognizedKeysMessage } from \"../core/unrecognized-keys.ts\";\n\n/**\n * The `reasoning` levels the adapters accept: the AI SDK's top-level\n * `reasoning` values minus `provider-default`, which is what omitting the\n * option means.\n */\nexport const assistantReasoningLevels = [\n \"none\",\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n] as const;\n\n/** How much the model reasons before answering (an adapter's `reasoning`). */\nexport type AssistantReasoning = (typeof assistantReasoningLevels)[number];\n\n/**\n * The AI SDK's `providerOptions` shape, forwarded to `streamText` verbatim:\n * `{ [provider]: { [option]: value } }`. The escape hatch for model controls\n * Blume doesn't name, so a new provider knob never needs a Blume field.\n */\nexport type AssistantProviderOptions = Record<\n string,\n Record<string, JsonValue>\n>;\n\n/** The AI SDK provider package the OpenAI-compatible adapters install. */\nconst OPENAI_COMPATIBLE_DEP = \"@ai-sdk/openai-compatible\";\n\n/**\n * The AI SDK packages for the providers Blume calls directly: the package and\n * the provider factory the route imports from it.\n */\nconst OPENAI_SDK = { factory: \"createOpenAI\", pkg: \"@ai-sdk/openai\" };\nconst ANTHROPIC_SDK = { factory: \"createAnthropic\", pkg: \"@ai-sdk/anthropic\" };\nconst GEMINI_SDK = { factory: \"createGoogle\", pkg: \"@ai-sdk/google\" };\nconst GROK_SDK = { factory: \"createXai\", pkg: \"@ai-sdk/xai\" };\n\n// ---------------------------------------------------------------------------\n// Shared options\n// ---------------------------------------------------------------------------\n\n/** The options every assistant adapter accepts. */\nexport interface AssistantAdapterOptions {\n /**\n * Name of the env var holding the provider's API key. Each adapter has its\n * own default; set this only to point at a different variable.\n */\n apiKeyEnv?: string;\n /**\n * Static request headers sent to the provider on every call — a\n * caller-identifying header for a shared backend, for example. Values are\n * written into the generated route as literals, so keep secrets in\n * `apiKeyEnv` rather than here.\n */\n headers?: Record<string, string>;\n /**\n * Options passed to `streamText` as its `providerOptions`, untouched, in the\n * AI SDK's own shape (`{ openai: { textVerbosity: \"low\" } }`, say).\n */\n providerOptions?: AssistantProviderOptions;\n}\n\n/**\n * `providerOptions`, forwarded to `streamText` verbatim. JSON-only, because\n * the generated and ejected routes inline it as a literal.\n */\nconst providerOptionsSchema = z.record(\n z.string(),\n z.record(z.string(), z.json())\n);\n\n/** The shared option schema, with the adapter's own key env var default. */\nexport const sharedOptions = (apiKeyEnv: string) => ({\n apiKeyEnv: z.string().min(1).default(apiKeyEnv),\n headers: z.record(z.string(), z.string()).optional(),\n providerOptions: providerOptionsSchema.optional(),\n});\n\nconst reasoningOption = z.enum(assistantReasoningLevels).optional();\n\n// ---------------------------------------------------------------------------\n// gateway()\n// ---------------------------------------------------------------------------\n\nexport const GATEWAY_API_KEY_ENV = \"AI_GATEWAY_API_KEY\";\n/** The model the gateway adapter uses when none is configured. */\nconst DEFAULT_GATEWAY_MODEL = \"openai/gpt-5.5\";\n\n/** Options for {@link gateway}. */\nexport interface AssistantGatewayOptions extends AssistantAdapterOptions {\n /**\n * Narration only: how the voice should sound, for speech models that take\n * instructions (\"Read calmly, like a teacher\").\n */\n instructions?: string;\n /**\n * A `provider/model` id routed by the gateway. Defaults to `openai/gpt-5.5`\n * for the assistant and `openai/tts-1-hd` for narration.\n */\n model?: string;\n /**\n * How much the model reasons before answering. Sent as the AI SDK's\n * top-level `reasoning` option, which the gateway maps to the model's own\n * control (OpenAI's `reasoning_effort`, for example); the model has to\n * offer the level you pick. Omitted keeps the model's default. Assistant\n * only.\n */\n reasoning?: AssistantReasoning;\n /** Narration only: the speech model's voice. Defaults to `alloy`. */\n voice?: string;\n}\n\nconst gatewayOptionsSchema = z.strictObject({\n ...sharedOptions(GATEWAY_API_KEY_ENV),\n model: z.string().min(1).default(DEFAULT_GATEWAY_MODEL),\n reasoning: reasoningOption,\n});\n\nexport type AssistantGatewayAdapter = AdapterDescriptor<\n \"gateway\",\n AssistantGatewayOptions\n>;\n\nexport const gatewayAdapterSchema = adapterDescriptorSchema(\n \"gateway\",\n gatewayOptionsSchema\n);\n\n/**\n * Route the assistant through the Vercel AI Gateway (the default), or generate\n * narration audio with one of its speech models. `model` is a\n * `provider/model` string; the key is `AI_GATEWAY_API_KEY`, or Vercel's OIDC\n * token when deployed there. Needs no provider SDK beyond the `ai` package\n * Blume ships.\n */\nexport const gateway = (\n options: AssistantGatewayOptions = {}\n): AssistantGatewayAdapter => ({\n kind: \"gateway\",\n options,\n requiredSecrets: [options.apiKeyEnv ?? GATEWAY_API_KEY_ENV],\n runtimeDeps: [],\n});\n\n// ---------------------------------------------------------------------------\n// openai()\n// ---------------------------------------------------------------------------\n\nexport const OPENAI_API_KEY_ENV = \"OPENAI_API_KEY\";\n\n/** Options for {@link openai}. */\nexport interface AssistantOpenAIOptions extends AssistantAdapterOptions {\n /**\n * Name of the env var holding the key. Defaults to `OPENAI_API_KEY`, except\n * for narration with a `baseUrl`, which sends only a key named here.\n */\n apiKeyEnv?: string;\n /**\n * An OpenAI-compatible endpoint to call instead of OpenAI\n * (`https://llm.internal.example.com/v1`): a self-hosted model or an\n * internal gateway. The route then talks Chat Completions through\n * `@ai-sdk/openai-compatible`, and the docs tools are off unless\n * `ai.assistant.tools` turns them on, since the model may not call tools.\n * For narration, a server with OpenAI's speech API (`/audio/speech`),\n * called through `@ai-sdk/openai` and sent only the key `apiKeyEnv` names,\n * if any.\n */\n baseUrl?: string;\n /**\n * Narration only: how the voice should sound, for speech models that take\n * instructions (\"Read calmly, like a teacher\").\n */\n instructions?: string;\n /** The model id (`gpt-5.5`, or a speech model like `gpt-4o-mini-tts`). */\n model: string;\n /**\n * The provider name the AI SDK reports, which a custom endpoint also reads\n * its `providerOptions` under. Defaults to `openai`, or `openai-compatible`\n * with a `baseUrl`. Assistant only.\n */\n name?: string;\n /**\n * How much the model reasons before answering, sent as `reasoning_effort`;\n * with a `baseUrl`, the endpoint has to accept that parameter. Omitted\n * keeps the model's default. Assistant only.\n */\n reasoning?: AssistantReasoning;\n /** Narration only: the speech model's voice. Defaults to `alloy`. */\n voice?: string;\n}\n\nconst openaiOptionsSchema = z.strictObject({\n ...sharedOptions(OPENAI_API_KEY_ENV),\n baseUrl: z.url().optional(),\n model: z.string().min(1),\n name: z.string().min(1).optional(),\n reasoning: reasoningOption,\n});\n\nexport type AssistantOpenAIAdapter = AdapterDescriptor<\n \"openai\",\n AssistantOpenAIOptions\n>;\n\nexport const openaiAdapterSchema = adapterDescriptorSchema(\n \"openai\",\n openaiOptionsSchema\n);\n\n/**\n * Route the assistant to OpenAI, or to any OpenAI-compatible endpoint with\n * `baseUrl`. Reads `OPENAI_API_KEY` and needs `@ai-sdk/openai` installed; a\n * custom endpoint needs `@ai-sdk/openai-compatible` instead, since most\n * don't serve OpenAI's Responses API. Narration generates audio with it\n * through `@ai-sdk/openai` either way, and with a `baseUrl` sends only the key\n * `apiKeyEnv` names.\n */\nexport const openai = (\n options: AssistantOpenAIOptions\n): AssistantOpenAIAdapter => ({\n kind: \"openai\",\n options,\n requiredSecrets: [options.apiKeyEnv ?? OPENAI_API_KEY_ENV],\n runtimeDeps: [options.baseUrl ? OPENAI_COMPATIBLE_DEP : OPENAI_SDK.pkg],\n});\n\n/**\n * Options for the deprecated {@link openaiCompatible}: {@link openai}'s, with\n * the endpoint and its key env var required.\n *\n * @deprecated Use {@link AssistantOpenAIOptions}.\n */\nexport interface AssistantOpenAICompatibleOptions extends AssistantOpenAIOptions {\n apiKeyEnv: string;\n baseUrl: string;\n}\n\n/** @deprecated Use {@link AssistantOpenAIAdapter}. */\nexport type AssistantOpenAICompatibleAdapter = AssistantOpenAIAdapter;\n\n/**\n * Route the assistant through an OpenAI-compatible endpoint.\n *\n * @deprecated Use `openai({ baseUrl, model, apiKeyEnv })`, which this calls.\n */\nexport const openaiCompatible = (\n options: AssistantOpenAICompatibleOptions\n): AssistantOpenAIAdapter => openai(options);\n\n// ---------------------------------------------------------------------------\n// anthropic()\n// ---------------------------------------------------------------------------\n\nconst ANTHROPIC_API_KEY_ENV = \"ANTHROPIC_API_KEY\";\n\n/** Options for {@link anthropic}. */\nexport interface AssistantAnthropicOptions extends AssistantAdapterOptions {\n /** The Claude model id (`claude-sonnet-5`). */\n model: string;\n /**\n * How much the model reasons before answering. The Anthropic provider\n * maps the level to the model's thinking: an effort on models with\n * adaptive thinking, a thinking budget on older ones, and thinking off for\n * `\"none\"`. Omitted keeps the model's default.\n */\n reasoning?: AssistantReasoning;\n}\n\nconst anthropicOptionsSchema = z.strictObject({\n ...sharedOptions(ANTHROPIC_API_KEY_ENV),\n model: z.string().min(1),\n reasoning: reasoningOption,\n});\n\nexport type AssistantAnthropicAdapter = AdapterDescriptor<\n \"anthropic\",\n AssistantAnthropicOptions\n>;\n\nexport const anthropicAdapterSchema = adapterDescriptorSchema(\n \"anthropic\",\n anthropicOptionsSchema\n);\n\n/**\n * Route the assistant to Anthropic's Claude API. Reads `ANTHROPIC_API_KEY`\n * and needs `@ai-sdk/anthropic` installed.\n */\nexport const anthropic = (\n options: AssistantAnthropicOptions\n): AssistantAnthropicAdapter => ({\n kind: \"anthropic\",\n options,\n requiredSecrets: [options.apiKeyEnv ?? ANTHROPIC_API_KEY_ENV],\n runtimeDeps: [ANTHROPIC_SDK.pkg],\n});\n\n// ---------------------------------------------------------------------------\n// gemini()\n// ---------------------------------------------------------------------------\n\nconst GEMINI_API_KEY_ENV = \"GEMINI_API_KEY\";\n\n/** Options for {@link gemini}. */\nexport interface AssistantGeminiOptions extends AssistantAdapterOptions {\n /** The Gemini model id (`gemini-3.5-flash`). */\n model: string;\n /**\n * How much the model reasons before answering. The Google provider maps\n * the level to the model's thinking level, or to a thinking budget on\n * models that take one. Omitted keeps the model's default.\n */\n reasoning?: AssistantReasoning;\n}\n\nconst geminiOptionsSchema = z.strictObject({\n ...sharedOptions(GEMINI_API_KEY_ENV),\n model: z.string().min(1),\n reasoning: reasoningOption,\n});\n\nexport type AssistantGeminiAdapter = AdapterDescriptor<\n \"gemini\",\n AssistantGeminiOptions\n>;\n\nexport const geminiAdapterSchema = adapterDescriptorSchema(\n \"gemini\",\n geminiOptionsSchema\n);\n\n/**\n * Route the assistant to Google's Gemini API. Reads `GEMINI_API_KEY` and\n * needs `@ai-sdk/google` installed.\n */\nexport const gemini = (\n options: AssistantGeminiOptions\n): AssistantGeminiAdapter => ({\n kind: \"gemini\",\n options,\n requiredSecrets: [options.apiKeyEnv ?? GEMINI_API_KEY_ENV],\n runtimeDeps: [GEMINI_SDK.pkg],\n});\n\n// ---------------------------------------------------------------------------\n// grok()\n// ---------------------------------------------------------------------------\n\nconst GROK_API_KEY_ENV = \"XAI_API_KEY\";\n\n/** Options for {@link grok}. */\nexport interface AssistantGrokOptions extends AssistantAdapterOptions {\n /** The Grok model id (`grok-4.7`). */\n model: string;\n /**\n * How much the model reasons before answering, sent as xAI's reasoning\n * effort on the models that take one. Omitted keeps the model's default.\n */\n reasoning?: AssistantReasoning;\n}\n\nconst grokOptionsSchema = z.strictObject({\n ...sharedOptions(GROK_API_KEY_ENV),\n model: z.string().min(1),\n reasoning: reasoningOption,\n});\n\nexport type AssistantGrokAdapter = AdapterDescriptor<\n \"grok\",\n AssistantGrokOptions\n>;\n\nexport const grokAdapterSchema = adapterDescriptorSchema(\n \"grok\",\n grokOptionsSchema\n);\n\n/**\n * Route the assistant to xAI's Grok models. Reads `XAI_API_KEY` and needs\n * `@ai-sdk/xai` installed.\n */\nexport const grok = (options: AssistantGrokOptions): AssistantGrokAdapter => ({\n kind: \"grok\",\n options,\n requiredSecrets: [options.apiKeyEnv ?? GROK_API_KEY_ENV],\n runtimeDeps: [GROK_SDK.pkg],\n});\n\n// ---------------------------------------------------------------------------\n// openrouter()\n// ---------------------------------------------------------------------------\n\nconst OPENROUTER_API_KEY_ENV = \"OPENROUTER_API_KEY\";\n\n/** Options for {@link openrouter}. */\nexport interface AssistantOpenRouterOptions extends AssistantAdapterOptions {\n /** The OpenRouter model id (`anthropic/claude-sonnet-4-5`). */\n model: string;\n /**\n * How much the model reasons before answering. Set on the model as\n * OpenRouter's `reasoning.effort`, because its provider ignores the AI\n * SDK's call-level option. Omitted keeps the model's default.\n */\n reasoning?: AssistantReasoning;\n}\n\nconst openrouterOptionsSchema = z.strictObject({\n ...sharedOptions(OPENROUTER_API_KEY_ENV),\n model: z.string().min(1),\n reasoning: reasoningOption,\n});\n\nexport type AssistantOpenRouterAdapter = AdapterDescriptor<\n \"openrouter\",\n AssistantOpenRouterOptions\n>;\n\nexport const openrouterAdapterSchema = adapterDescriptorSchema(\n \"openrouter\",\n openrouterOptionsSchema\n);\n\n/**\n * Route the assistant through OpenRouter. Reads `OPENROUTER_API_KEY` and needs\n * `@openrouter/ai-sdk-provider` installed in the project.\n */\nexport const openrouter = (\n options: AssistantOpenRouterOptions\n): AssistantOpenRouterAdapter => ({\n kind: \"openrouter\",\n options,\n requiredSecrets: [options.apiKeyEnv ?? OPENROUTER_API_KEY_ENV],\n runtimeDeps: [\"@openrouter/ai-sdk-provider\"],\n});\n\n// ---------------------------------------------------------------------------\n// llmgateway()\n// ---------------------------------------------------------------------------\n\nconst LLMGATEWAY_API_KEY_ENV = \"LLMGATEWAY_API_KEY\";\n\n/** Options for {@link llmgateway}. */\nexport interface AssistantLlmGatewayOptions extends AssistantAdapterOptions {\n /** Overrides the preset endpoint (`https://api.llmgateway.io/v1`). */\n baseUrl?: string;\n /** The model id LLMGateway serves. */\n model: string;\n /**\n * How much the model reasons before answering, sent in the request as\n * `reasoning_effort`. Omitted keeps the model's default.\n */\n reasoning?: AssistantReasoning;\n}\n\nconst llmgatewayOptionsSchema = z.strictObject({\n ...sharedOptions(LLMGATEWAY_API_KEY_ENV),\n baseUrl: z.url().default(\"https://api.llmgateway.io/v1\"),\n model: z.string().min(1),\n reasoning: reasoningOption,\n});\n\nexport type AssistantLlmGatewayAdapter = AdapterDescriptor<\n \"llmgateway\",\n AssistantLlmGatewayOptions\n>;\n\nexport const llmgatewayAdapterSchema = adapterDescriptorSchema(\n \"llmgateway\",\n llmgatewayOptionsSchema\n);\n\n/**\n * Route the assistant through LLMGateway's OpenAI-compatible endpoint. Reads\n * `LLMGATEWAY_API_KEY` and needs `@ai-sdk/openai-compatible` installed.\n */\nexport const llmgateway = (\n options: AssistantLlmGatewayOptions\n): AssistantLlmGatewayAdapter => ({\n kind: \"llmgateway\",\n options,\n requiredSecrets: [options.apiKeyEnv ?? LLMGATEWAY_API_KEY_ENV],\n runtimeDeps: [OPENAI_COMPATIBLE_DEP],\n});\n\n// ---------------------------------------------------------------------------\n// inkeep()\n// ---------------------------------------------------------------------------\n\nconst INKEEP_API_KEY_ENV = \"INKEEP_API_KEY\";\n\n/**\n * Options for {@link inkeep}. No `reasoning`: Inkeep runs its own QA pipeline\n * behind an OpenAI-compatible endpoint with no reasoning control.\n */\nexport interface AssistantInkeepOptions extends AssistantAdapterOptions {\n /** Overrides the preset endpoint (`https://api.inkeep.com/v1`). */\n baseUrl?: string;\n /** The Inkeep QA model id. */\n model: string;\n}\n\nconst inkeepOptionsSchema = z.strictObject({\n ...sharedOptions(INKEEP_API_KEY_ENV),\n baseUrl: z.url().default(\"https://api.inkeep.com/v1\"),\n model: z.string().min(1),\n});\n\nexport type AssistantInkeepAdapter = AdapterDescriptor<\n \"inkeep\",\n AssistantInkeepOptions\n>;\n\nexport const inkeepAdapterSchema = adapterDescriptorSchema(\n \"inkeep\",\n inkeepOptionsSchema\n);\n\n/**\n * Answer with Inkeep, which retrieves from the content indexed in its own\n * dashboard, so Blume leaves it ungrounded and it takes no `reasoning`.\n * Reads `INKEEP_API_KEY` and needs `@ai-sdk/openai-compatible` installed.\n */\nexport const inkeep = (\n options: AssistantInkeepOptions\n): AssistantInkeepAdapter => ({\n kind: \"inkeep\",\n options,\n requiredSecrets: [options.apiKeyEnv ?? INKEEP_API_KEY_ENV],\n runtimeDeps: [OPENAI_COMPATIBLE_DEP],\n});\n\n// ---------------------------------------------------------------------------\n// The `ai.assistant.provider` schema\n// ---------------------------------------------------------------------------\n\n/** Which backend answers the assistant: the value of `gateway()`, `openai()`, … */\nexport type AssistantAdapter =\n | AssistantGatewayAdapter\n | AssistantOpenAIAdapter\n | AssistantAnthropicAdapter\n | AssistantGeminiAdapter\n | AssistantGrokAdapter\n | AssistantOpenRouterAdapter\n | AssistantLlmGatewayAdapter\n | AssistantInkeepAdapter;\n\n// ---------------------------------------------------------------------------\n// Blume 1 hints\n// ---------------------------------------------------------------------------\n\n/**\n * The adapters' `kind`s and the 1.x `ai.ask.provider` names, each with the\n * `blume/ai` factory that takes its place.\n */\nconst FACTORY_BY_PROVIDER = new Map([\n [\"anthropic\", \"anthropic\"],\n [\"gateway\", \"gateway\"],\n [\"gemini\", \"gemini\"],\n [\"grok\", \"grok\"],\n [\"inkeep\", \"inkeep\"],\n [\"llmgateway\", \"llmgateway\"],\n [\"openai\", \"openai\"],\n // 1.x only: an OpenAI-compatible endpoint is `openai()` with a `baseUrl`.\n [\"openai-compatible\", \"openai\"],\n [\"openrouter\", \"openrouter\"],\n]);\n\n/** The 1.x flat `ai.ask` fields: each is now an option of the provider adapter. */\nconst MOVED_TO_PROVIDER: ReadonlySet<string> = new Set([\n \"apiKeyEnv\",\n \"baseUrl\",\n \"headers\",\n \"model\",\n \"reasoning\",\n]);\n\n/** The provider an `ai.assistant` object names: a 1.x string or a descriptor's `kind`. */\nconst assistantProviderNameProbe = z.looseObject({\n provider: z.union([\n z.string(),\n z.looseObject({ kind: z.string() }).transform(({ kind }) => kind),\n ]),\n});\n\n/** The factory a failing `ai.assistant` object's provider names, or the gateway. */\nconst providerFactory = (issue: z.core.$ZodRawIssue): string => {\n const probe = assistantProviderNameProbe.safeParse(issue.input);\n return (\n (probe.success && FACTORY_BY_PROVIDER.get(probe.data.provider)) || \"gateway\"\n );\n};\n\n/**\n * Error params for `ai.assistant`: a 1.x flat provider field (`model`, `apiKeyEnv`,\n * `baseUrl`, `headers`, `reasoning`) names the adapter call it moves into —\n * the one the object's `provider` picks, 1.x string or descriptor — instead\n * of Zod's bare \"Unrecognized key\"; any other unknown key keeps its wording.\n */\nexport const assistantMovedFieldsHint = {\n error: (issue: z.core.$ZodRawIssue): string | undefined => {\n if (issue.code !== \"unrecognized_keys\") {\n return;\n }\n const moved = issue.keys.filter((key) => MOVED_TO_PROVIDER.has(key));\n if (moved.length === 0) {\n return;\n }\n const fields = moved.map((key) => `ai.assistant.${key}`).join(\", \");\n const hint = `${fields} moved into the provider adapter: \\`provider: ${providerFactory(issue)}({ ${moved.join(\", \")} })\\`, imported from \"blume/ai\".`;\n const others = issue.keys.filter((key) => !MOVED_TO_PROVIDER.has(key));\n return others.length > 0\n ? `${hint} ${unrecognizedKeysMessage(others)}`\n : hint;\n },\n};\n\n/** A value that is a 1.x provider name, for the `ai.assistant.provider` hint. */\nconst providerNameProbe = z.string();\n\n/**\n * The message for an `ai.assistant.provider` that isn't a descriptor: a 1.x\n * provider name names the factory that replaced it; anything else lists them.\n */\nconst providerNotAdapterMessage = (issue: z.core.$ZodRawIssue): string => {\n const name = providerNameProbe.safeParse(issue.input);\n const factory = name.success ? FACTORY_BY_PROVIDER.get(name.data) : undefined;\n return factory\n ? `ai.assistant.provider takes an adapter from \"blume/ai\", not a provider name: \\`provider: ${factory}({ model })\\`. The 1.x model, apiKeyEnv, baseUrl, headers, and reasoning fields move into the call.`\n : 'ai.assistant.provider takes an adapter from \"blume/ai\": openai(), anthropic(), gemini(), grok(), gateway(), openrouter(), llmgateway(), or inkeep().';\n};\n\n/**\n * `ai.assistant.provider`: the descriptor an adapter factory returned, validated\n * against that adapter's own option schema. A value that isn't a descriptor\n * at all (a 1.x provider name) names the factory that replaced it.\n */\nexport const assistantAdapterSchema = z.discriminatedUnion(\n \"kind\",\n [\n gatewayAdapterSchema,\n openaiAdapterSchema,\n anthropicAdapterSchema,\n geminiAdapterSchema,\n grokAdapterSchema,\n openrouterAdapterSchema,\n llmgatewayAdapterSchema,\n inkeepAdapterSchema,\n ],\n {\n // A non-object (a 1.x provider name) fails before any discriminator is\n // read — `invalid_type` at runtime, though Zod types the union's own\n // issues as `invalid_union` only; a bad `kind` keeps Zod's message.\n error: (issue) =>\n issue.code === \"invalid_union\"\n ? undefined\n : providerNotAdapterMessage(issue),\n }\n);\n\n/** A resolved (post-defaults) `ai.assistant.provider` descriptor. */\nexport type AssistantAdapterConfig = z.output<typeof assistantAdapterSchema>;\nexport type AssistantAdapterKind = AssistantAdapterConfig[\"kind\"];\n\n/** The provider when `ai.assistant.provider` is unset: the gateway with its defaults. */\nexport const DEFAULT_ASSISTANT_PROVIDER: AssistantAdapter = gateway();\n\n// ---------------------------------------------------------------------------\n// Resolved backend\n// ---------------------------------------------------------------------------\n\n/** The route fragments an adapter contributes to `askEndpointTemplate`. */\nexport interface AskBackendTemplate {\n /**\n * Extra `streamText` fields as `key: value` source lines: the adapter's\n * reasoning mapping (when it is a call option) and `providerOptions`.\n */\n fields: string[];\n /** Import lines after the shared `astro` and `astro:env/server` ones. */\n imports: string[];\n /**\n * The up-front credential guard: a statement that returns a 503, since the\n * endpoint exists but can't answer until the deployment sets its key.\n */\n keyCheck: string;\n /** The `model:` expression passed to `streamText`. */\n model: string;\n /** Module-level provider setup (the provider factory call). */\n setup: string;\n}\n\n/**\n * What the endpoint template and the diagnostics read from an adapter beyond\n * the descriptor itself (`kind`, `requiredSecrets`, `runtimeDeps` travel on\n * the descriptor; `generate`, `eject`, the required-secrets check, and the\n * runtime-dependency manifest read those directly).\n */\nexport interface AskBackend {\n /** Whether Blume grounds answers in the docs (Inkeep retrieves itself). */\n grounded: boolean;\n /**\n * Whether the docs tools are on when `ai.assistant.tools` is unset: yes for\n * the hosted model catalogs, whose models call tools, and no for an\n * OpenAI-compatible backend, which may be a local model that can't.\n */\n toolsByDefault: boolean;\n kind: AssistantAdapterKind;\n /** Human-readable adapter name for diagnostics (\"AI Gateway\"). */\n label: string;\n /** Appended to the missing-secret warning (an alternative credential, say). */\n secretNote?: string;\n template: AskBackendTemplate;\n}\n\nconst secretExpr = (env: string): string => `getSecret(${JSON.stringify(env)})`;\n\n/**\n * The `headers` line of a provider factory call. Every provider Blume\n * generates against takes the same option; the OpenAI-compatible provider\n * applies it after the `Authorization` header it derives from the API key, so\n * a custom header can't displace auth. An empty map is dropped so the route\n * only carries `headers` when there is something to send.\n */\nconst headersLine = (headers?: Record<string, string>): string =>\n headers && Object.keys(headers).length > 0\n ? `\\n headers: ${JSON.stringify(headers)},`\n : \"\";\n\n/** Refuse a request up front when the adapter's key env var is unset. */\nconst keyCheck = (env: string): string => ` if (!${secretExpr(env)}) {\n return new Response(\n ${JSON.stringify(`The assistant is not configured: set ${env}.`)},\n { status: 503 }\n );\n }`;\n\n/**\n * The `streamText` fields shared by the adapters that take `reasoning` as the\n * AI SDK's top-level call option, plus the verbatim `providerOptions`.\n */\nconst callFields = (options: {\n providerOptions?: z.output<typeof providerOptionsSchema>;\n reasoning?: AssistantReasoning;\n}): string[] => {\n const fields: string[] = [];\n if (options.reasoning) {\n fields.push(`reasoning: ${JSON.stringify(options.reasoning)}`);\n }\n if (options.providerOptions) {\n fields.push(`providerOptions: ${JSON.stringify(options.providerOptions)}`);\n }\n return fields;\n};\n\nconst gatewayBackend = (\n options: z.output<typeof gatewayOptionsSchema>\n): AskBackend => ({\n grounded: true,\n kind: \"gateway\",\n label: \"AI Gateway\",\n secretNote: \"on Vercel the gateway can also authenticate via OIDC\",\n template: {\n // The gateway maps the AI SDK's top-level `reasoning` to the model's own\n // control (OpenAI's `reasoning_effort`, say).\n fields: callFields(options),\n // The gateway provider reads the key (or Vercel's OIDC token) from the\n // environment itself; passing the key explicitly lets a binding-backed\n // secret store reach it too.\n imports: [\n 'import { createGateway, createTextStreamResponse, streamText, toTextStream } from \"ai\";',\n ],\n keyCheck: ` // The AI Gateway authenticates with an API key or Vercel's OIDC token.\n if (!(${secretExpr(options.apiKeyEnv)} || getSecret(\"VERCEL_OIDC_TOKEN\"))) {\n return new Response(\n ${JSON.stringify(`The assistant is not configured: set ${options.apiKeyEnv} (or deploy on Vercel with OIDC).`)},\n { status: 503 }\n );\n }`,\n model: `gateway(${JSON.stringify(options.model)})`,\n setup: `\\nconst gateway = createGateway({\n apiKey: ${secretExpr(options.apiKeyEnv)},${headersLine(options.headers)}\n});\\n`,\n },\n toolsByDefault: true,\n});\n\nconst openrouterBackend = (\n options: z.output<typeof openrouterOptionsSchema>\n): AskBackend => {\n // The OpenRouter provider ignores the AI SDK's top-level `reasoning` call\n // option and only reads its own model-level setting, so the level rides on\n // the model as `reasoning.effort` and nowhere else.\n const settings = options.reasoning\n ? `, { reasoning: { effort: ${JSON.stringify(options.reasoning)} } }`\n : \"\";\n return {\n grounded: true,\n kind: \"openrouter\",\n label: \"OpenRouter\",\n template: {\n fields: callFields({ providerOptions: options.providerOptions }),\n imports: [\n 'import { createTextStreamResponse, streamText, toTextStream } from \"ai\";',\n 'import { createOpenRouter } from \"@openrouter/ai-sdk-provider\";',\n ],\n keyCheck: keyCheck(options.apiKeyEnv),\n model: `openrouter(${JSON.stringify(options.model)}${settings})`,\n setup: `\\nconst openrouter = createOpenRouter({\n apiKey: ${secretExpr(options.apiKeyEnv)},${headersLine(options.headers)}\n});\\n`,\n },\n toolsByDefault: true,\n };\n};\n\n/**\n * The backend shared by the adapters that stream through the AI SDK's\n * OpenAI-compatible provider, which sends the top-level `reasoning` call\n * option as `reasoning_effort`.\n */\nconst openaiCompatibleBackend = (\n kind: AssistantAdapterKind,\n label: string,\n grounded: boolean,\n toolsByDefault: boolean,\n options: {\n apiKeyEnv: string;\n baseUrl: string;\n headers?: Record<string, string>;\n model: string;\n name: string;\n providerOptions?: z.output<typeof providerOptionsSchema>;\n reasoning?: AssistantReasoning;\n }\n): AskBackend => ({\n grounded,\n kind,\n label,\n template: {\n fields: callFields(options),\n imports: [\n 'import { createTextStreamResponse, streamText, toTextStream } from \"ai\";',\n 'import { createOpenAICompatible } from \"@ai-sdk/openai-compatible\";',\n ],\n keyCheck: keyCheck(options.apiKeyEnv),\n model: `provider(${JSON.stringify(options.model)})`,\n // `headers` sits between the key and the name so the API key's\n // `Authorization` header is applied first.\n setup: `\\nconst provider = createOpenAICompatible({\n apiKey: ${secretExpr(options.apiKeyEnv)},\n baseURL: ${JSON.stringify(options.baseUrl)},${headersLine(options.headers)}\n name: ${JSON.stringify(options.name)},\n});\\n`,\n },\n toolsByDefault,\n});\n\n/**\n * The backend for a provider Blume calls directly, through that provider's\n * own AI SDK package, which maps the top-level `reasoning` call option to the\n * model's control itself. Their models all call tools.\n */\nconst directBackend = (\n kind: AssistantAdapterKind,\n label: string,\n sdk: { factory: string; pkg: string },\n options: {\n apiKeyEnv: string;\n headers?: Record<string, string>;\n model: string;\n name?: string;\n providerOptions?: z.output<typeof providerOptionsSchema>;\n reasoning?: AssistantReasoning;\n }\n): AskBackend => ({\n grounded: true,\n kind,\n label,\n template: {\n fields: callFields(options),\n imports: [\n 'import { createTextStreamResponse, streamText, toTextStream } from \"ai\";',\n `import { ${sdk.factory} } from ${JSON.stringify(sdk.pkg)};`,\n ],\n keyCheck: keyCheck(options.apiKeyEnv),\n model: `provider(${JSON.stringify(options.model)})`,\n setup: `\\nconst provider = ${sdk.factory}({\n apiKey: ${secretExpr(options.apiKeyEnv)},${headersLine(options.headers)}${\n options.name ? `\\n name: ${JSON.stringify(options.name)},` : \"\"\n }\n});\\n`,\n },\n toolsByDefault: true,\n});\n\n/**\n * `openai()`: OpenAI itself through its own SDK, or, with a `baseUrl`, a\n * generic endpoint through the OpenAI-compatible provider — Chat Completions,\n * which most such endpoints serve where the Responses API isn't — with the\n * tools off by default, since a self-hosted model may not call them.\n */\nconst openaiBackend = (\n options: z.output<typeof openaiOptionsSchema>\n): AskBackend => {\n const { baseUrl } = options;\n return baseUrl\n ? openaiCompatibleBackend(\"openai\", \"OpenAI-compatible\", true, false, {\n ...options,\n baseUrl,\n name: options.name ?? \"openai-compatible\",\n })\n : directBackend(\"openai\", \"OpenAI\", OPENAI_SDK, options);\n};\n\n/** Resolve a parsed `ai.assistant.provider` descriptor into its backend. */\nexport const resolveAskBackend = (\n provider: AssistantAdapterConfig = assistantAdapterSchema.parse(\n DEFAULT_ASSISTANT_PROVIDER\n )\n): AskBackend => {\n switch (provider.kind) {\n case \"gateway\": {\n return gatewayBackend(provider.options);\n }\n case \"anthropic\": {\n return directBackend(\n \"anthropic\",\n \"Anthropic\",\n ANTHROPIC_SDK,\n provider.options\n );\n }\n case \"gemini\": {\n return directBackend(\"gemini\", \"Gemini\", GEMINI_SDK, provider.options);\n }\n case \"grok\": {\n return directBackend(\"grok\", \"Grok\", GROK_SDK, provider.options);\n }\n case \"openrouter\": {\n return openrouterBackend(provider.options);\n }\n case \"llmgateway\": {\n return openaiCompatibleBackend(\"llmgateway\", \"LLMGateway\", true, true, {\n ...provider.options,\n name: \"llmgateway\",\n });\n }\n case \"inkeep\": {\n // Inkeep answers from the content indexed in its dashboard, so injected\n // excerpts would conflict with its own retrieval.\n return openaiCompatibleBackend(\"inkeep\", \"Inkeep\", false, false, {\n ...provider.options,\n name: \"inkeep\",\n });\n }\n default: {\n return openaiBackend(provider.options);\n }\n }\n};\n",
65
65
  "/**\n * Zod's own wording for unknown keys no removed-key hint covers, appended to\n * a hint so an unrelated typo isn't silently dropped from the diagnostic\n * beside it. Shared by every config object that names a removed field's\n * replacement (the root config, `ai.assistant`, `openapi()`/`asyncapi()`, …).\n */\nexport const unrecognizedKeysMessage = (keys: string[]): string =>\n `Unrecognized key${keys.length > 1 ? \"s\" : \"\"}: ${keys\n .map((key) => JSON.stringify(key))\n .join(\", \")}`;\n",
66
- "import { z } from \"zod\";\n\nimport { adobeAdapterSchema } from \"./adobe.ts\";\nimport { amplitudeAdapterSchema } from \"./amplitude.ts\";\nimport { clarityAdapterSchema } from \"./clarity.ts\";\nimport { clearbitAdapterSchema } from \"./clearbit.ts\";\nimport { cloudflareAdapterSchema } from \"./cloudflare.ts\";\nimport { databuddyAdapterSchema } from \"./databuddy.ts\";\nimport { fathomAdapterSchema } from \"./fathom.ts\";\nimport { googleAnalyticsAdapterSchema } from \"./google-analytics.ts\";\nimport { googleTagManagerAdapterSchema } from \"./google-tag-manager.ts\";\nimport { heapAdapterSchema } from \"./heap.ts\";\nimport { hightouchAdapterSchema } from \"./hightouch.ts\";\nimport { hotjarAdapterSchema } from \"./hotjar.ts\";\nimport { logrocketAdapterSchema } from \"./logrocket.ts\";\nimport { mixpanelAdapterSchema } from \"./mixpanel.ts\";\nimport { oneDollarStatsAdapterSchema } from \"./one-dollar-stats.ts\";\nimport { pirschAdapterSchema } from \"./pirsch.ts\";\nimport { plausibleAdapterSchema } from \"./plausible.ts\";\nimport { posthogAdapterSchema } from \"./posthog.ts\";\nimport { scriptAdapterSchema } from \"./script.ts\";\nimport { segmentAdapterSchema } from \"./segment.ts\";\nimport { vercelAdapterSchema } from \"./vercel.ts\";\n\n/** One configured analytics adapter, as its factory returned it. */\nexport const analyticsAdapterSchema = z.discriminatedUnion(\"kind\", [\n adobeAdapterSchema,\n amplitudeAdapterSchema,\n clarityAdapterSchema,\n clearbitAdapterSchema,\n cloudflareAdapterSchema,\n databuddyAdapterSchema,\n fathomAdapterSchema,\n googleAnalyticsAdapterSchema,\n googleTagManagerAdapterSchema,\n heapAdapterSchema,\n hightouchAdapterSchema,\n hotjarAdapterSchema,\n logrocketAdapterSchema,\n mixpanelAdapterSchema,\n oneDollarStatsAdapterSchema,\n pirschAdapterSchema,\n plausibleAdapterSchema,\n posthogAdapterSchema,\n scriptAdapterSchema,\n segmentAdapterSchema,\n vercelAdapterSchema,\n]);\n\nexport type AnalyticsAdapter = z.output<typeof analyticsAdapterSchema>;\n\nconst ARRAY_HINT =\n 'analytics is a list of adapters — e.g. `analytics: [posthog({ key }), vercel(), plausible({ domain }), script({ src })]`, imported from \"blume/analytics\".';\n\n/**\n * `blume.config.analytics`: the adapters to emit, in order. Unset means none.\n * A non-array (the pre-adapter object form, say) fails with the list hint;\n * element errors keep their own messages.\n */\nexport const analyticsConfigSchema = z\n .array(analyticsAdapterSchema, {\n error: (issue) => (issue.code === \"invalid_type\" ? ARRAY_HINT : undefined),\n })\n .default([]);\n",
66
+ "import { z } from \"zod\";\n\nimport { adobeAdapterSchema } from \"./adobe.ts\";\nimport { amplitudeAdapterSchema } from \"./amplitude.ts\";\nimport { clarityAdapterSchema } from \"./clarity.ts\";\nimport { clearbitAdapterSchema } from \"./clearbit.ts\";\nimport { clicsAdapterSchema } from \"./clics.ts\";\nimport { cloudflareAdapterSchema } from \"./cloudflare.ts\";\nimport { databuddyAdapterSchema } from \"./databuddy.ts\";\nimport { fathomAdapterSchema } from \"./fathom.ts\";\nimport { googleAnalyticsAdapterSchema } from \"./google-analytics.ts\";\nimport { googleTagManagerAdapterSchema } from \"./google-tag-manager.ts\";\nimport { heapAdapterSchema } from \"./heap.ts\";\nimport { hightouchAdapterSchema } from \"./hightouch.ts\";\nimport { hotjarAdapterSchema } from \"./hotjar.ts\";\nimport { logrocketAdapterSchema } from \"./logrocket.ts\";\nimport { mixpanelAdapterSchema } from \"./mixpanel.ts\";\nimport { oneDollarStatsAdapterSchema } from \"./one-dollar-stats.ts\";\nimport { pirschAdapterSchema } from \"./pirsch.ts\";\nimport { plausibleAdapterSchema } from \"./plausible.ts\";\nimport { posthogAdapterSchema } from \"./posthog.ts\";\nimport { scriptAdapterSchema } from \"./script.ts\";\nimport { segmentAdapterSchema } from \"./segment.ts\";\nimport { vercelAdapterSchema } from \"./vercel.ts\";\n\n/** One configured analytics adapter, as its factory returned it. */\nexport const analyticsAdapterSchema = z.discriminatedUnion(\"kind\", [\n adobeAdapterSchema,\n amplitudeAdapterSchema,\n clarityAdapterSchema,\n clearbitAdapterSchema,\n clicsAdapterSchema,\n cloudflareAdapterSchema,\n databuddyAdapterSchema,\n fathomAdapterSchema,\n googleAnalyticsAdapterSchema,\n googleTagManagerAdapterSchema,\n heapAdapterSchema,\n hightouchAdapterSchema,\n hotjarAdapterSchema,\n logrocketAdapterSchema,\n mixpanelAdapterSchema,\n oneDollarStatsAdapterSchema,\n pirschAdapterSchema,\n plausibleAdapterSchema,\n posthogAdapterSchema,\n scriptAdapterSchema,\n segmentAdapterSchema,\n vercelAdapterSchema,\n]);\n\nexport type AnalyticsAdapter = z.output<typeof analyticsAdapterSchema>;\n\nconst ARRAY_HINT =\n 'analytics is a list of adapters — e.g. `analytics: [posthog({ key }), vercel(), plausible({ domain }), script({ src })]`, imported from \"blume/analytics\".';\n\n/**\n * `blume.config.analytics`: the adapters to emit, in order. Unset means none.\n * A non-array (the pre-adapter object form, say) fails with the list hint;\n * element errors keep their own messages.\n */\nexport const analyticsConfigSchema = z\n .array(analyticsAdapterSchema, {\n error: (issue) => (issue.code === \"invalid_type\" ? ARRAY_HINT : undefined),\n })\n .default([]);\n",
67
67
  "import { z } from \"zod\";\n\nimport type { AdapterDescriptor } from \"../core/adapter.ts\";\nimport { adapterDescriptorSchema } from \"../core/adapter.ts\";\nimport type { HeadScript } from \"./head.ts\";\n\n/** Options for {@link adobe}. */\nexport interface AdobeOptions {\n /**\n * The Launch (Adobe Experience Platform Tags) embed script URL for the\n * environment to load, e.g. `https://assets.adobedtm.com/…/launch-….min.js`.\n */\n url: string;\n}\n\nexport const adobeOptionsSchema = z.strictObject({\n url: z.string().min(1),\n});\n\nexport type AdobeAdapter = AdapterDescriptor<\"adobe\", AdobeOptions>;\n\nexport const adobeAdapterSchema = adapterDescriptorSchema(\n \"adobe\",\n adobeOptionsSchema\n);\n\n/**\n * Adobe Analytics through a Launch property: Blume loads the environment's\n * embed script, and the property's own rules decide what to track. Copy the\n * URL from the environment's install instructions in Data Collection.\n */\nexport const adobe = (options: AdobeOptions): AdobeAdapter => ({\n kind: \"adobe\",\n options,\n requiredSecrets: [],\n runtimeDeps: [],\n});\n\n/**\n * The async embed tag, as Launch's install instructions render it. Pageviews\n * on client-router navigations are the property's business: give it a rule on\n * history changes (or `_satellite.track` from a `script()` adapter).\n */\nexport const adobeHead = (options: AdobeOptions): HeadScript[] => [\n { attributes: { async: true, src: options.url }, content: null },\n];\n",
68
68
  "import { z } from \"zod\";\n\nimport type { AdapterDescriptor, JsonValue } from \"../core/adapter.ts\";\nimport { adapterDescriptorSchema } from \"../core/adapter.ts\";\nimport type { HeadScript } from \"./head.ts\";\nimport { inlineJson } from \"./inline.ts\";\n\n/** The options {@link amplitude} maps itself. */\nexport interface AmplitudeNamedOptions {\n /** Project API key. */\n key: string;\n}\n\n/**\n * Options for {@link amplitude}: the key plus any other Browser SDK\n * `amplitude.init` option, forwarded verbatim (`serverZone`, `autocapture`,\n * `defaultTracking`, …). JSON values only.\n */\nexport type AmplitudeOptions = AmplitudeNamedOptions & {\n [option: string]: JsonValue;\n};\n\nexport const amplitudeOptionsSchema = z\n .object({\n key: z.string().min(1),\n })\n .catchall(z.json());\n\nexport type AmplitudeAdapter = AdapterDescriptor<\"amplitude\", AmplitudeOptions>;\n\nexport const amplitudeAdapterSchema = adapterDescriptorSchema(\n \"amplitude\",\n amplitudeOptionsSchema\n);\n\n/**\n * Amplitude product analytics through the Browser SDK's script loader. The\n * project API key is public — it's what every browser event carries.\n */\nexport const amplitude = (options: AmplitudeOptions): AmplitudeAdapter => ({\n kind: \"amplitude\",\n options,\n requiredSecrets: [],\n runtimeDeps: [],\n});\n\n/** The script loader's CDN; the key picks the bundle. */\nexport const AMPLITUDE_SCRIPT_ORIGIN = \"https://cdn.amplitude.com/script/\";\n\n/**\n * The init options the dashboard snippet ships with. `autocapture` covers page\n * views, sessions, and history changes, so client-router navigations count\n * without any extra hook; a passthrough option overrides either.\n */\nexport const AMPLITUDE_DEFAULT_INIT = {\n autocapture: true,\n fetchRemoteConfig: true,\n};\n\n/**\n * The two tags from the dashboard's install snippet: the keyed SDK bundle\n * (synchronous, so `window.amplitude` exists for the next tag) and the init\n * call, with `key` mapped and everything else forwarded to `init` verbatim.\n */\nexport const amplitudeHead = (options: AmplitudeOptions): HeadScript[] => {\n const { key, ...init } = options;\n return [\n {\n attributes: {\n src: `${AMPLITUDE_SCRIPT_ORIGIN}${encodeURIComponent(key)}.js`,\n },\n content: null,\n },\n {\n attributes: {},\n content: `window.amplitude.init(${inlineJson(key)},${inlineJson({ ...AMPLITUDE_DEFAULT_INIT, ...init })});`,\n },\n ];\n};\n",
69
69
  "import type { JsonValue } from \"../core/adapter.ts\";\n\n/**\n * JSON for an inline `<script>` body. `JSON.stringify` leaves `<` alone, so a\n * value like `</script>` would end the script element early; escape it the way\n * the layouts do for their JSON.\n */\nexport const inlineJson = (value: JsonValue): string =>\n JSON.stringify(value).replaceAll(\"<\", \"\\\\u003c\");\n\n/**\n * A snippet that re-sends a pageview on every client-router navigation, for a\n * provider whose loader only counts real page loads. Keyed off\n * `astro:page-load` with a path-plus-query guard held in `window[slot]`, so the\n * initial load (which the loader already counted) and same-page hash moves\n * aren't double-counted, while a query-only navigation (`?tab=a` → `?tab=b`)\n * still is. Each adapter passes its own slot: two adapters sharing one would\n * see the second always match the first's update and never fire.\n */\nexport const spaPageviews = (slot: string, capture: string): string =>\n `document.addEventListener(\"astro:page-load\",function(){var p=window.${slot},c=location.pathname+location.search;window.${slot}=c;if(p!==undefined&&p!==c){${capture}}});`;\n",
70
70
  "import { z } from \"zod\";\n\nimport type { AdapterDescriptor } from \"../core/adapter.ts\";\nimport { adapterDescriptorSchema } from \"../core/adapter.ts\";\nimport type { HeadScript } from \"./head.ts\";\nimport { inlineJson } from \"./inline.ts\";\n\n/** Options for {@link clarity}. */\nexport interface ClarityOptions {\n /** Project ID, from the project's tracking code in the Clarity dashboard. */\n id: string;\n}\n\nexport const clarityOptionsSchema = z.strictObject({\n id: z.string().min(1),\n});\n\nexport type ClarityAdapter = AdapterDescriptor<\"clarity\", ClarityOptions>;\n\nexport const clarityAdapterSchema = adapterDescriptorSchema(\n \"clarity\",\n clarityOptionsSchema\n);\n\n/**\n * Microsoft Clarity session recordings and heatmaps. The project ID is public;\n * it only picks the project the tag reports to.\n */\nexport const clarity = (options: ClarityOptions): ClarityAdapter => ({\n kind: \"clarity\",\n options,\n requiredSecrets: [],\n runtimeDeps: [],\n});\n\n/**\n * The dashboard's tracking code: a `window.clarity` queue and the async tag\n * load. Clarity follows history changes itself, so client-router navigations\n * need no extra hook.\n */\nexport const clarityHead = (options: ClarityOptions): HeadScript[] => [\n {\n attributes: {},\n content: `(function(c,l,a,r,i,t,y){c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};t=l.createElement(r);t.async=1;t.src=\"https://www.clarity.ms/tag/\"+i;y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);})(window,document,\"clarity\",\"script\",${inlineJson(encodeURIComponent(options.id))});`,\n },\n];\n",
71
71
  "import { z } from \"zod\";\n\nimport type { AdapterDescriptor } from \"../core/adapter.ts\";\nimport { adapterDescriptorSchema } from \"../core/adapter.ts\";\nimport type { HeadScript } from \"./head.ts\";\n\n/** Options for {@link clearbit}. */\nexport interface ClearbitOptions {\n /** Publishable API key (`pk_…`). */\n key: string;\n}\n\nexport const clearbitOptionsSchema = z.strictObject({\n key: z.string().min(1),\n});\n\nexport type ClearbitAdapter = AdapterDescriptor<\"clearbit\", ClearbitOptions>;\n\nexport const clearbitAdapterSchema = adapterDescriptorSchema(\n \"clearbit\",\n clearbitOptionsSchema\n);\n\n/**\n * Clearbit's website tag (Reveal and the Clearbit tags it manages). The\n * publishable key is meant for the browser.\n */\nexport const clearbit = (options: ClearbitOptions): ClearbitAdapter => ({\n kind: \"clearbit\",\n options,\n requiredSecrets: [],\n runtimeDeps: [],\n});\n\n/** The tag origin; the key picks the tags bundle. */\nexport const CLEARBIT_TAG_ORIGIN = \"https://tag.clearbitscripts.com/v1/\";\n\n/** The tag as Clearbit's install snippet renders it. */\nexport const clearbitHead = (options: ClearbitOptions): HeadScript[] => [\n {\n attributes: {\n referrerpolicy: \"strict-origin-when-cross-origin\",\n src: `${CLEARBIT_TAG_ORIGIN}${encodeURIComponent(options.key)}/tags.js`,\n },\n content: null,\n },\n];\n",
72
+ "import { z } from \"zod\";\n\nimport type { AdapterDescriptor } from \"../core/adapter.ts\";\nimport { adapterDescriptorSchema } from \"../core/adapter.ts\";\nimport type { HeadScript } from \"./head.ts\";\n\n/** The browser tracker in Clics' installation guide. */\nexport const CLICS_SCRIPT_SRC = \"https://clics.dev/tracker.js\";\n\n/** Public project ID and optional tracker flags. */\nexport interface ClicsOptions {\n /** Project ID from Configure → Tracking in the Clics dashboard. */\n projectId: string;\n /** Include localhost and 127.0.0.1 in a production build's reports. */\n allowLocalhost?: boolean;\n /** Turn off automatic outbound-link events. */\n disableOutboundLinks?: boolean;\n}\n\nexport const clicsOptionsSchema = z.strictObject({\n allowLocalhost: z.boolean().optional(),\n disableOutboundLinks: z.boolean().optional(),\n projectId: z.string().min(1),\n});\n\nexport type ClicsAdapter = AdapterDescriptor<\"clics\", ClicsOptions>;\n\nexport const clicsAdapterSchema = adapterDescriptorSchema(\n \"clics\",\n clicsOptionsSchema\n);\n\n/** Clics website analytics. The project ID is public in the tracker tag. */\nexport const clics = (options: ClicsOptions): ClicsAdapter => ({\n kind: \"clics\",\n options,\n requiredSecrets: [],\n runtimeDeps: [],\n});\n\n/**\n * The documented deferred tracker tag. Clics reads these attributes from\n * `document.currentScript` and tracks history changes without a Blume hook.\n */\nexport const clicsHead = (options: ClicsOptions): HeadScript[] => {\n const attributes: HeadScript[\"attributes\"] = {\n \"data-project-id\": options.projectId,\n defer: true,\n src: CLICS_SCRIPT_SRC,\n };\n if (options.allowLocalhost) {\n attributes[\"data-allow-localhost\"] = true;\n }\n if (options.disableOutboundLinks) {\n attributes[\"data-disable-outbound-links\"] = true;\n }\n return [{ attributes, content: null }];\n};\n",
72
73
  "import { z } from \"zod\";\n\nimport type { AdapterDescriptor, JsonValue } from \"../core/adapter.ts\";\nimport { adapterDescriptorSchema } from \"../core/adapter.ts\";\nimport type { HeadScript } from \"./head.ts\";\n\n/** The beacon script Cloudflare's dashboard snippet loads. */\nexport const CLOUDFLARE_BEACON_SRC =\n \"https://static.cloudflareinsights.com/beacon.min.js\";\n\n/** The options {@link cloudflare} maps itself. */\nexport interface CloudflareNamedOptions {\n /** Site token from the Web Analytics JS snippet (`data-cf-beacon`). */\n token: string;\n}\n\n/**\n * Options for {@link cloudflare}: the token plus any other `data-cf-beacon`\n * setting, forwarded verbatim (`spa`, …). JSON values only.\n */\nexport type CloudflareOptions = CloudflareNamedOptions & {\n [option: string]: JsonValue;\n};\n\nexport const cloudflareOptionsSchema = z\n .object({\n token: z.string().min(1),\n })\n .catchall(z.json());\n\nexport type CloudflareAdapter = AdapterDescriptor<\n \"cloudflare\",\n CloudflareOptions\n>;\n\nexport const cloudflareAdapterSchema = adapterDescriptorSchema(\n \"cloudflare\",\n cloudflareOptionsSchema\n);\n\n/**\n * Cloudflare Web Analytics in manual (JS snippet) mode, for a site Cloudflare\n * doesn't proxy. A proxied zone with automatic RUM injection on needs no\n * adapter at all — listing one there would count every pageview twice.\n */\nexport const cloudflare = (options: CloudflareOptions): CloudflareAdapter => ({\n kind: \"cloudflare\",\n options,\n requiredSecrets: [],\n runtimeDeps: [],\n});\n\n/**\n * The beacon tag exactly as the dashboard's snippet renders it, with the whole\n * option object as its `data-cf-beacon` JSON. The beacon tracks history\n * changes itself, so client-router navigations need no extra hook.\n */\nexport const cloudflareHead = (options: CloudflareOptions): HeadScript[] => [\n {\n attributes: {\n \"data-cf-beacon\": JSON.stringify(options),\n defer: true,\n src: CLOUDFLARE_BEACON_SRC,\n },\n content: null,\n },\n];\n",
73
74
  "import { z } from \"zod\";\n\nimport type { AdapterDescriptor } from \"../core/adapter.ts\";\nimport { adapterDescriptorSchema } from \"../core/adapter.ts\";\nimport type { HeadScript } from \"./head.ts\";\n\n/** The script Databuddy's install snippet loads. */\nexport const DATABUDDY_SCRIPT_SRC = \"https://cdn.databuddy.cc/databuddy.js\";\n\n/** The options {@link databuddy} maps itself. */\nexport interface DatabuddyNamedOptions {\n /** Client ID, from the website's settings in the Databuddy dashboard. */\n clientId: string;\n}\n\n/**\n * Options for {@link databuddy}: the client ID plus any other tracker setting,\n * forwarded as a `data-` attribute on the tag (`\"track-web-vitals\"` →\n * `data-track-web-vitals`, `\"track-errors\"`, `\"track-outgoing-links\"`,\n * `\"api-url\"`, …).\n */\nexport type DatabuddyOptions = DatabuddyNamedOptions & {\n [setting: string]: string;\n};\n\nexport const databuddyOptionsSchema = z\n .object({\n clientId: z.string().min(1),\n })\n .catchall(z.string());\n\nexport type DatabuddyAdapter = AdapterDescriptor<\"databuddy\", DatabuddyOptions>;\n\nexport const databuddyAdapterSchema = adapterDescriptorSchema(\n \"databuddy\",\n databuddyOptionsSchema\n);\n\n/**\n * Databuddy. The client ID is public — it's in the tag on every page.\n */\nexport const databuddy = (options: DatabuddyOptions): DatabuddyAdapter => ({\n kind: \"databuddy\",\n options,\n requiredSecrets: [],\n runtimeDeps: [],\n});\n\n/**\n * The async tag from the install instructions, with `clientId` as\n * `data-client-id` and every other option as its own `data-` attribute. The\n * tracker skips setup when `window.databuddy` already exists, so there is no\n * queue stub. Databuddy's script tracks history changes on its own, so\n * client-router navigations need no extra hook.\n */\nexport const databuddyHead = (options: DatabuddyOptions): HeadScript[] => {\n const { clientId, ...settings } = options;\n const attributes: HeadScript[\"attributes\"] = {};\n for (const [setting, value] of Object.entries(settings)) {\n attributes[`data-${setting}`] = value;\n }\n attributes[\"data-client-id\"] = clientId;\n attributes.async = true;\n attributes.crossorigin = \"anonymous\";\n attributes.src = DATABUDDY_SCRIPT_SRC;\n return [{ attributes, content: null }];\n};\n",
74
75
  "import { z } from \"zod\";\n\nimport type { AdapterDescriptor } from \"../core/adapter.ts\";\nimport { adapterDescriptorSchema } from \"../core/adapter.ts\";\nimport type { HeadScript } from \"./head.ts\";\n\n/** The script Fathom's dashboard snippet loads. */\nexport const FATHOM_SCRIPT_SRC = \"https://cdn.usefathom.com/script.js\";\n\n/** The options {@link fathom} maps itself. */\nexport interface FathomNamedOptions {\n /** Site ID, from the site's script settings. */\n site: string;\n}\n\n/**\n * Options for {@link fathom}: the site ID plus any other script setting,\n * forwarded as a `data-` attribute on the tag (`spa` → `data-spa`,\n * `\"honor-dnt\"` → `data-honor-dnt`, `\"excluded-domains\"`, `canonical`, …).\n */\nexport type FathomOptions = FathomNamedOptions & {\n [setting: string]: string;\n};\n\nexport const fathomOptionsSchema = z\n .object({\n site: z.string().min(1),\n })\n .catchall(z.string());\n\nexport type FathomAdapter = AdapterDescriptor<\"fathom\", FathomOptions>;\n\nexport const fathomAdapterSchema = adapterDescriptorSchema(\n \"fathom\",\n fathomOptionsSchema\n);\n\n/**\n * Fathom Analytics. The site ID is public — it's in the tag on every page.\n */\nexport const fathom = (options: FathomOptions): FathomAdapter => ({\n kind: \"fathom\",\n options,\n requiredSecrets: [],\n runtimeDeps: [],\n});\n\n/**\n * The deferred tag from the dashboard, with `site` as `data-site` and every\n * other option as its own `data-` attribute. Fathom only tracks history\n * changes when the tag opts in, so `spa` defaults to `\"auto\"` — Blume's\n * client router navigates without full loads — and an explicit `spa` wins.\n */\nexport const fathomHead = (options: FathomOptions): HeadScript[] => {\n const { site, ...settings } = { spa: \"auto\", ...options };\n const attributes: HeadScript[\"attributes\"] = {};\n for (const [setting, value] of Object.entries(settings)) {\n attributes[`data-${setting}`] = value;\n }\n attributes[\"data-site\"] = site;\n attributes.defer = true;\n attributes.src = FATHOM_SCRIPT_SRC;\n return [{ attributes, content: null }];\n};\n",
@@ -102,7 +103,7 @@
102
103
  "import { adapterDescriptorSchema } from \"../../core/adapter.ts\";\nimport type { DeployAdapter, DeployOptions } from \"./types.ts\";\nimport { deployOptionsSchema, serverRuntimeDeps } from \"./types.ts\";\n\n/** The Astro adapter package a Netlify server build imports. */\nexport const NETLIFY_ADAPTER_PACKAGE = \"@astrojs/netlify\";\n\n/**\n * Options for {@link netlify}: `output`, `site`, and `base`, plus any option\n * of `@astrojs/netlify` forwarded verbatim (`edgeMiddleware`, `imageCDN`,\n * `cacheOnDemandPages`, …).\n */\nexport type NetlifyOptions = DeployOptions;\n\nexport type NetlifyAdapter = DeployAdapter<\"netlify\">;\n\nexport const netlifyOptionsSchema = deployOptionsSchema;\n\nexport const netlifyAdapterSchema = adapterDescriptorSchema(\n \"netlify\",\n netlifyOptionsSchema\n);\n\n/**\n * Netlify. A server build runs on Netlify Functions from the Frameworks API\n * tree the adapter writes to `.netlify/v1`. `@astrojs/netlify` is an optional\n * peer: install it in the project (`npm install @astrojs/netlify`).\n */\nexport const netlify = (options: NetlifyOptions = {}): NetlifyAdapter => ({\n kind: \"netlify\",\n options,\n requiredSecrets: [],\n runtimeDeps: serverRuntimeDeps(options, NETLIFY_ADAPTER_PACKAGE),\n});\n",
103
104
  "import { z } from \"zod\";\n\nimport { adapterDescriptorSchema } from \"../../core/adapter.ts\";\nimport type { DeployAdapter, DeployOptions } from \"./types.ts\";\nimport { deployOptionsSchema, serverRuntimeDeps } from \"./types.ts\";\n\n/** The Astro adapter package a Node server build imports. */\nexport const NODE_ADAPTER_PACKAGE = \"@astrojs/node\";\n\n/**\n * A host the server trusts forwarded headers for, in Astro's\n * `security.allowedDomains` shape: each field set must match.\n */\n// oxlint-disable-next-line typescript/consistent-type-definitions -- interface loses the implicit index signature a deploy option's JsonValue needs\nexport type NodeAllowedDomain = {\n /** The host, like `docs.example.com`; `*.example.com` matches subdomains. */\n hostname?: string;\n /** The port, as a string. */\n port?: string;\n /** The scheme, like `https`. */\n protocol?: string;\n};\n\n/**\n * Options for {@link node}: `output`, `site`, `base`, and `allowedDomains`,\n * plus any option of `@astrojs/node` forwarded verbatim (`mode`,\n * `staticHeaders`, …). Blume defaults `mode` to `\"standalone\"`; an option you\n * pass wins. `host` and `port` are forwarded too, but `@astrojs/node`\n * replaces both with Astro's own server settings, so the standalone server\n * listens on `localhost:4321` unless the `HOST` and `PORT` environment\n * variables are set when it starts.\n */\nexport type NodeOptions = DeployOptions & {\n /**\n * The hosts a reverse proxy in front of the server answers for, set as\n * Astro's `security.allowedDomains`. A request whose `Host` (or\n * `X-Forwarded-Host`) matches one is trusted to name the reader in\n * `X-Forwarded-For`, which the rate limit counts by; otherwise every\n * reader counts as the proxy's address. Only list them when a proxy sets\n * that header on every request, since a reader could otherwise send their\n * own.\n */\n allowedDomains?: NodeAllowedDomain[];\n};\n\nexport type NodeAdapter = DeployAdapter<\"node\", NodeOptions>;\n\nexport const nodeOptionsSchema = deployOptionsSchema.extend({\n allowedDomains: z\n .array(\n z.strictObject({\n hostname: z.string().min(1).optional(),\n port: z.string().min(1).optional(),\n protocol: z.string().min(1).optional(),\n })\n )\n .optional(),\n});\n\nexport const nodeAdapterSchema = adapterDescriptorSchema(\n \"node\",\n nodeOptionsSchema\n);\n\n/**\n * A self-hosted Node server (containers, VMs). The standalone server in\n * `dist/server/entry.mjs` serves `dist/client` itself. `@astrojs/node` is one\n * of Blume's own dependencies.\n */\nexport const node = (options: NodeOptions = {}): NodeAdapter => ({\n kind: \"node\",\n options,\n requiredSecrets: [],\n runtimeDeps: serverRuntimeDeps(options, NODE_ADAPTER_PACKAGE),\n});\n",
104
105
  "import { adapterDescriptorSchema } from \"../../core/adapter.ts\";\nimport type { DeployAdapter, DeployOptions } from \"./types.ts\";\nimport { deployOptionsSchema, serverRuntimeDeps } from \"./types.ts\";\n\n/** The Astro adapter package a Vercel server build imports. */\nexport const VERCEL_ADAPTER_PACKAGE = \"@astrojs/vercel\";\n\n/**\n * Options for {@link vercel}: `output`, `site`, and `base`, plus any option of\n * `@astrojs/vercel` forwarded verbatim (`isr`, `maxDuration`, `imageService`,\n * `webAnalytics`, …).\n */\nexport type VercelOptions = DeployOptions;\n\nexport type VercelAdapter = DeployAdapter<\"vercel\">;\n\nexport const vercelOptionsSchema = deployOptionsSchema;\n\nexport const vercelAdapterSchema = adapterDescriptorSchema(\n \"vercel\",\n vercelOptionsSchema\n);\n\n/**\n * Vercel. A server build writes the Build Output tree to `.vercel/output`,\n * audits the function bundle for imports the platform's dependency trace\n * dropped, and wires `Accept: text/markdown` negotiation into the routing\n * config. `@astrojs/vercel` is one of Blume's own dependencies.\n */\nexport const vercel = (options: VercelOptions = {}): VercelAdapter => ({\n kind: \"vercel\",\n options,\n requiredSecrets: [],\n runtimeDeps: serverRuntimeDeps(options, VERCEL_ADAPTER_PACKAGE),\n});\n",
105
- "import { z } from \"zod\";\n\nimport { GATEWAY_API_KEY_ENV, sharedOptions } from \"../ai/ask.ts\";\nimport { adapterDescriptorSchema } from \"../core/adapter.ts\";\n\n/** The speech model narration uses when `gateway()` names none. */\nexport const DEFAULT_NARRATION_MODEL = \"openai/tts-1-hd\";\n\n/** The voice narration uses when `gateway()` names none. */\nexport const DEFAULT_NARRATION_VOICE = \"alloy\";\n\n/**\n * `narration.provider`: the `gateway()` descriptor from `blume/ai`, read with\n * speech defaults. `reasoning` is an assistant option and is rejected here;\n * `voice` and `instructions` are narration options and are rejected by the\n * assistant.\n */\nexport const narrationProviderSchema = adapterDescriptorSchema(\n \"gateway\",\n z.strictObject({\n ...sharedOptions(GATEWAY_API_KEY_ENV),\n instructions: z.string().min(1).optional(),\n model: z.string().min(1).default(DEFAULT_NARRATION_MODEL),\n voice: z.string().min(1).default(DEFAULT_NARRATION_VOICE),\n })\n);\n\n/** A validated narration provider, defaults filled in. */\nexport type NarrationProvider = z.output<typeof narrationProviderSchema>;\n",
106
+ "import { z } from \"zod\";\n\nimport {\n GATEWAY_API_KEY_ENV,\n OPENAI_API_KEY_ENV,\n sharedOptions,\n} from \"../ai/ask.ts\";\nimport { adapterDescriptorSchema } from \"../core/adapter.ts\";\n\n/** The speech model narration uses when `gateway()` names none. */\nexport const DEFAULT_NARRATION_MODEL = \"openai/tts-1-hd\";\n\n/** The voice narration uses when the provider names none. */\nexport const DEFAULT_NARRATION_VOICE = \"alloy\";\n\n/**\n * The AI SDK provider `openai()` narration speaks through, with or without a\n * `baseUrl`: `@ai-sdk/openai-compatible` has no speech models.\n */\nexport const OPENAI_SPEECH_DEP = \"@ai-sdk/openai\";\n\n/**\n * Whether `url` carries a username or password, which `fetch` refuses to\n * send and whose error message would print them. A URL that doesn't parse\n * has none.\n */\nexport const hasCredentials = (url: string): boolean => {\n const parsed = URL.parse(url);\n return Boolean(parsed?.username || parsed?.password);\n};\n\n/** The narration options both providers take on top of the shared ones. */\nconst speechOptions = {\n instructions: z.string().min(1).optional(),\n voice: z.string().min(1).default(DEFAULT_NARRATION_VOICE),\n};\n\nconst gatewayNarrationSchema = adapterDescriptorSchema(\n \"gateway\",\n z.strictObject({\n ...sharedOptions(GATEWAY_API_KEY_ENV),\n ...speechOptions,\n model: z.string().min(1).default(DEFAULT_NARRATION_MODEL),\n })\n);\n\nconst openaiNarrationSchema = adapterDescriptorSchema(\n \"openai\",\n z.strictObject({\n ...sharedOptions(OPENAI_API_KEY_ENV),\n ...speechOptions,\n // Replaces the shared default: whether it's OPENAI_API_KEY depends on\n // the `baseUrl` (see below).\n apiKeyEnv: z.string().min(1).optional(),\n // An unparsable URL is left to `z.url()`.\n baseUrl: z\n .url()\n .refine((url) => !hasCredentials(url), {\n message:\n \"Credentials don't go in the baseUrl: name the env var holding the key in apiKeyEnv.\",\n })\n .optional(),\n model: z.string().min(1),\n })\n);\n\n/**\n * `narration.provider`: the `gateway()` or `openai()` descriptor from\n * `blume/ai`, read with speech defaults. `reasoning` (and `openai()`'s\n * `name`, which speech models don't read) are assistant options and are\n * rejected here; `voice` and `instructions` are narration options and are\n * rejected by the assistant.\n *\n * `openai()` is read for what narration needs, not what the assistant does:\n * it speaks through `@ai-sdk/openai` whatever the `baseUrl`, and a custom\n * endpoint gets only the key `apiKeyEnv` names, never `OPENAI_API_KEY` by\n * default, so it may take none at all. A key that is named is required.\n */\nexport const narrationProviderSchema = z\n .discriminatedUnion(\"kind\", [gatewayNarrationSchema, openaiNarrationSchema])\n .transform((provider) => {\n if (provider.kind !== \"openai\") {\n return provider;\n }\n const { options } = provider;\n const apiKeyEnv =\n options.apiKeyEnv ?? (options.baseUrl ? undefined : OPENAI_API_KEY_ENV);\n return {\n ...provider,\n options: apiKeyEnv ? { ...options, apiKeyEnv } : options,\n requiredSecrets: apiKeyEnv ? [apiKeyEnv] : [],\n runtimeDeps: [OPENAI_SPEECH_DEP],\n };\n });\n\n/** A validated narration provider, defaults filled in. */\nexport type NarrationProvider = z.output<typeof narrationProviderSchema>;\n\n/** A validated `gateway()` narration provider. */\nexport type GatewayNarrationProvider = Extract<\n NarrationProvider,\n { kind: \"gateway\" }\n>;\n\n/** A validated `openai()` narration provider. */\nexport type OpenAINarrationProvider = Extract<\n NarrationProvider,\n { kind: \"openai\" }\n>;\n",
106
107
  "import { z } from \"zod\";\n\nimport { cloudflareRateLimitAdapterSchema } from \"./cloudflare.ts\";\nimport { memory, memoryAdapterSchema } from \"./memory.ts\";\nimport { upstashAdapterSchema } from \"./upstash.ts\";\n\nconst ADAPTER_HINT =\n 'rateLimit takes one adapter — e.g. `rateLimit: upstash()` or `rateLimit: memory({ requests: 60 })`, imported from \"blume/ratelimit\" — or `false` to turn it off.';\n\n/** The configured rate limiter, as its factory returned it. */\nexport const rateLimitAdapterSchema = z.discriminatedUnion(\"kind\", [\n cloudflareRateLimitAdapterSchema,\n memoryAdapterSchema,\n upstashAdapterSchema,\n]);\n\nexport type RateLimitAdapter = z.output<typeof rateLimitAdapterSchema>;\n\n/**\n * `blume.config.rateLimit`: how the server routes a reader can call (the\n * assistant, the API playground proxy, server-side search) limit requests\n * per reader. On by default with `memory()`; `false` turns it off (`null`\n * once resolved).\n */\nexport const rateLimitConfigSchema = z\n .union([z.literal(false), rateLimitAdapterSchema], { error: ADAPTER_HINT })\n .optional()\n .transform((adapter) => (adapter === false ? null : (adapter ?? memory())));\n",
107
108
  "import { z } from \"zod\";\n\nimport type { AdapterDescriptor } from \"../core/adapter.ts\";\nimport { adapterDescriptorSchema } from \"../core/adapter.ts\";\n\n/** The Worker binding Blume declares for the rate limiter. */\nexport const RATE_LIMIT_BINDING = \"BLUME_RATE_LIMIT\";\n\n/** Options for {@link cloudflare}. */\nexport interface CloudflareRateLimitOptions {\n /**\n * The rate limiting namespace, a positive integer unique in your\n * Cloudflare account. Defaults to one derived from the site.\n */\n namespaceId?: string;\n /** Requests each reader may make per window, per route. Defaults to 10. */\n requests?: number;\n /** The window, in seconds: Cloudflare allows 10 or 60. Defaults to 60. */\n window?: 10 | 60;\n}\n\nexport const cloudflareRateLimitOptionsSchema = z.strictObject({\n namespaceId: z\n .string()\n .regex(/^[1-9]\\d*$/u, \"namespaceId is a positive integer, as a string.\")\n .optional(),\n requests: z.number().int().positive().optional(),\n window: z.union([z.literal(10), z.literal(60)]).optional(),\n});\n\nexport type CloudflareRateLimitAdapter = AdapterDescriptor<\n \"cloudflare\",\n CloudflareRateLimitOptions\n>;\n\nexport const cloudflareRateLimitAdapterSchema = adapterDescriptorSchema(\n \"cloudflare\",\n cloudflareRateLimitOptionsSchema\n);\n\n/**\n * Counts with Cloudflare's Workers rate limiting, for a site deployed with\n * `deployment: cloudflare()`: Blume declares the binding in the Worker's\n * config, so there is nothing to set up. Cloudflare counts per location and\n * allows a window of 10 or 60 seconds.\n */\nexport const cloudflare = (\n options: CloudflareRateLimitOptions = {}\n): CloudflareRateLimitAdapter => ({\n kind: \"cloudflare\",\n options,\n requiredSecrets: [],\n runtimeDeps: [],\n});\n",
108
109
  "import { z } from \"zod\";\n\nimport type { AdapterDescriptor } from \"../core/adapter.ts\";\nimport { adapterDescriptorSchema } from \"../core/adapter.ts\";\n\n/** How many requests a reader gets per window, unless set. */\nexport const DEFAULT_REQUESTS = 30;\n\n/** The window those requests are counted over, in seconds, unless set. */\nexport const DEFAULT_WINDOW = 600;\n\n/** The limit every rate limiter takes: a count of requests per window. */\nexport interface RateLimitOptions {\n /** Requests each reader may make per window, per route. */\n requests?: number;\n /** The window, in seconds. */\n window?: number;\n}\n\nexport const rateLimitOptionsSchema = z.strictObject({\n requests: z.number().int().positive().optional(),\n window: z.number().int().positive().optional(),\n});\n\nexport type MemoryAdapter = AdapterDescriptor<\"memory\", RateLimitOptions>;\n\nexport const memoryAdapterSchema = adapterDescriptorSchema(\n \"memory\",\n rateLimitOptionsSchema\n);\n\n/**\n * Counts each reader's requests in the server's own memory, the default. On\n * a server that runs as one process (`node()`) the count is exact; on a\n * platform that runs many short-lived instances (Vercel, Netlify,\n * Cloudflare) each instance keeps its own, so it stops a burst from one\n * reader rather than enforcing the limit exactly. For that, share the count\n * with `upstash()` or `cloudflare()`.\n */\nexport const memory = (options: RateLimitOptions = {}): MemoryAdapter => ({\n kind: \"memory\",\n options,\n requiredSecrets: [],\n runtimeDeps: [],\n});\n",
@@ -128,7 +129,7 @@
128
129
  "import { z } from \"zod\";\n\nimport type { AdapterDescriptor } from \"../core/adapter.ts\";\nimport { adapterDescriptorSchema } from \"../core/adapter.ts\";\nimport type { ContentSource } from \"../core/sources/types.ts\";\n\n/** A user-provided {@link ContentSource} instance, validated for `name` + `load`. */\nexport const customOptionsSchema = z.custom<ContentSource>(\n (value): value is ContentSource =>\n typeof value === \"object\" &&\n value !== null &&\n \"load\" in value &&\n typeof value.load === \"function\" &&\n \"name\" in value &&\n typeof value.name === \"string\",\n { message: \"custom() takes a ContentSource (an object with name + load)\" }\n);\n\nexport type CustomAdapter = AdapterDescriptor<\"custom\", ContentSource>;\n\nexport const customAdapterSchema = adapterDescriptorSchema(\n \"custom\",\n customOptionsSchema\n);\n\n/**\n * Any object implementing the {@link ContentSource} interface, passed straight\n * through. This is the extension point for adapters with custom serializers or\n * any other backend, without their SDKs touching core. Unlike the built-in\n * adapters the descriptor carries a live instance, so it never travels through\n * the generated project's data snapshot — the CLI consumes it at scan time.\n */\nexport const custom = (source: ContentSource): CustomAdapter => ({\n kind: \"custom\",\n options: source,\n requiredSecrets: [],\n runtimeDeps: [],\n});\n",
129
130
  "import { z } from \"zod\";\n\nimport type { AdapterDescriptor } from \"../core/adapter.ts\";\nimport { adapterDescriptorSchema } from \"../core/adapter.ts\";\nimport type { SharedSourceOptions } from \"./shared.ts\";\nimport { sharedSourceOptionsSchema } from \"./shared.ts\";\n\n/** Options for {@link githubReleases}. */\nexport interface GithubReleasesOptions extends SharedSourceOptions {\n /**\n * The GitHub REST API base URL. Defaults to `https://api.github.com`; a\n * GitHub Enterprise Server's is `https://<host>/api/v3`.\n */\n baseUrl?: string;\n /** Include draft releases, tagged `Draft` (needs a token with repo write access). */\n drafts?: boolean;\n /** Cap the number of releases materialized, newest-first. Defaults to 100. */\n limit?: number;\n /** Repository owner (user or org). */\n owner: string;\n /** Include prereleases. */\n prereleases?: boolean;\n /** Repository name. */\n repo: string;\n}\n\nexport const githubReleasesOptionsSchema = sharedSourceOptionsSchema.extend({\n baseUrl: z.string().optional(),\n drafts: z.boolean().optional(),\n limit: z.number().positive().optional(),\n owner: z.string(),\n prereleases: z.boolean().optional(),\n repo: z.string(),\n});\n\nexport type GithubReleasesAdapter = AdapterDescriptor<\n \"github-releases\",\n GithubReleasesOptions\n>;\n\nexport const githubReleasesAdapterSchema = adapterDescriptorSchema(\n \"github-releases\",\n githubReleasesOptionsSchema\n);\n\n/**\n * A repo's GitHub Releases, materialized as `type: changelog` entries — release\n * notes become the changelog with no files to maintain. A private repo reads a\n * token from `GITHUB_TOKEN`; it is never inlined here.\n */\nexport const githubReleases = (\n options: GithubReleasesOptions\n): GithubReleasesAdapter => ({\n kind: \"github-releases\",\n options,\n requiredSecrets: [\"GITHUB_TOKEN\"],\n runtimeDeps: [],\n});\n",
130
131
  "import { z } from \"zod\";\n\nimport type { AdapterDescriptor } from \"../core/adapter.ts\";\nimport { adapterDescriptorSchema } from \"../core/adapter.ts\";\nimport type { SharedSourceOptions } from \"./shared.ts\";\nimport { DEFAULT_CONTENT_GLOB, sharedSourceOptionsSchema } from \"./shared.ts\";\n\n/** Options for {@link mdxRemote}. */\nexport interface MdxRemoteOptions extends SharedSourceOptions {\n /** Explicit list of source-relative file paths to fetch from `url`. */\n files?: string[];\n /** Enumerate a GitHub repo subtree via the git-trees API. */\n github?: {\n /** Repository owner (user or org). */\n owner: string;\n /** Subpath within the repo. Defaults to the repo root. */\n path?: string;\n /** Git ref (branch, tag, or SHA). Defaults to `main`. */\n ref?: string;\n /** Repository name. */\n repo: string;\n };\n /** Glob patterns applied to enumerated refs. Defaults to `[\"**\\/*.{md,mdx}\"]`. */\n include?: string[];\n /** Raw base URL, e.g. `https://raw.githubusercontent.com/acme/sdk/main/docs`. */\n url?: string;\n}\n\nexport const mdxRemoteOptionsSchema = sharedSourceOptionsSchema.extend({\n files: z.array(z.string()).optional(),\n github: z\n .strictObject({\n owner: z.string(),\n path: z.string().default(\"\"),\n ref: z.string().default(\"main\"),\n repo: z.string(),\n })\n .optional(),\n include: z.array(z.string()).default([DEFAULT_CONTENT_GLOB]),\n url: z.string().optional(),\n});\n\nexport type MdxRemoteAdapter = AdapterDescriptor<\n \"mdx-remote\",\n MdxRemoteOptions\n>;\n\nexport const mdxRemoteAdapterSchema = adapterDescriptorSchema(\n \"mdx-remote\",\n mdxRemoteOptionsSchema\n);\n\n// The hosts the source ever sends `GITHUB_TOKEN` to (the same set the fetch\n// in core/sources/mdx-remote.ts checks), so only an adapter reading from\n// GitHub declares the variable.\nconst GITHUB_HOSTS = new Set([\"api.github.com\", \"raw.githubusercontent.com\"]);\n\nconst readsFromGithub = (options: MdxRemoteOptions): boolean =>\n options.github !== undefined ||\n (options.url !== undefined &&\n URL.canParse(options.url) &&\n GITHUB_HOSTS.has(new URL(options.url).hostname));\n\n/**\n * Remote Markdown/MDX fetched over HTTP. Enumerate files explicitly against a\n * raw `url` base, or from a GitHub repo subtree via `github`. A private repo's\n * token comes from `GITHUB_TOKEN` — never inline it here. The adapter declares\n * the variable only when it reads from GitHub, since a `url` on any other host\n * is never sent the token.\n */\nexport const mdxRemote = (options: MdxRemoteOptions): MdxRemoteAdapter => ({\n kind: \"mdx-remote\",\n options,\n requiredSecrets: readsFromGithub(options) ? [\"GITHUB_TOKEN\"] : [],\n runtimeDeps: [],\n});\n",
131
- "import { z } from \"zod\";\n\nimport type { AdapterDescriptor } from \"../core/adapter.ts\";\nimport { adapterDescriptorSchema } from \"../core/adapter.ts\";\nimport type { SharedSourceOptions } from \"./shared.ts\";\nimport { sharedSourceOptionsSchema } from \"./shared.ts\";\n\n/** Options for {@link notion}. */\nexport interface NotionOptions extends SharedSourceOptions {\n /** Max concurrent Notion API requests; default 3 (Notion's per-integration pace). */\n concurrency?: number;\n /** Notion database id. */\n database: string;\n /** Notion property names mapped onto Blume meta. */\n properties?: {\n /** Property holding the page description. */\n description?: string;\n /** Property holding the sort order. */\n order?: string;\n /** Property holding the page slug. */\n slug?: string;\n /** Property holding the publish status. */\n status?: string;\n /** Property holding the page title. */\n title?: string;\n };\n /** Status value treated as published; others map to `draft`. Defaults to `Published`. */\n publishedValue?: string;\n}\n\nexport const notionOptionsSchema = sharedSourceOptionsSchema.extend({\n concurrency: z.number().positive().optional(),\n database: z.string(),\n properties: z\n .strictObject({\n description: z.string().optional(),\n order: z.string().optional(),\n slug: z.string().optional(),\n status: z.string().optional(),\n title: z.string().optional(),\n })\n .optional(),\n publishedValue: z.string().optional(),\n});\n\nexport type NotionAdapter = AdapterDescriptor<\"notion\", NotionOptions>;\n\nexport const notionAdapterSchema = adapterDescriptorSchema(\n \"notion\",\n notionOptionsSchema\n);\n\n/**\n * A Notion database; pages become entries, blocks become MDX. `@notionhq/client`\n * is the declared runtime dependency, and the integration token comes from\n * `NOTION_TOKEN`.\n */\nexport const notion = (options: NotionOptions): NotionAdapter => ({\n kind: \"notion\",\n options,\n requiredSecrets: [\"NOTION_TOKEN\"],\n runtimeDeps: [\"@notionhq/client\"],\n});\n",
132
+ "import { z } from \"zod\";\n\nimport type { AdapterDescriptor } from \"../core/adapter.ts\";\nimport { adapterDescriptorSchema } from \"../core/adapter.ts\";\nimport type { SharedSourceOptions } from \"./shared.ts\";\nimport { sharedSourceOptionsSchema } from \"./shared.ts\";\n\n/** Options for {@link notion}. */\nexport interface NotionOptions extends SharedSourceOptions {\n /** Max concurrent Notion API requests; default 3 (Notion's per-integration pace). */\n concurrency?: number;\n /** Notion database id. */\n database: string;\n /**\n * Read text typed in Notion as MDX, so components and Markdown in it\n * render. Anyone who can edit the database can then run code at build\n * time. Default false: text renders as written.\n */\n mdx?: boolean;\n /** Notion property names mapped onto Blume meta. */\n properties?: {\n /** Property holding the page description. */\n description?: string;\n /** Property holding the sort order. */\n order?: string;\n /** Property holding the page slug. */\n slug?: string;\n /** Property holding the publish status. */\n status?: string;\n /** Property holding the page title. */\n title?: string;\n };\n /** Status value treated as published; others map to `draft`. Defaults to `Published`. */\n publishedValue?: string;\n}\n\nexport const notionOptionsSchema = sharedSourceOptionsSchema.extend({\n concurrency: z.number().positive().optional(),\n database: z.string(),\n mdx: z.boolean().optional(),\n properties: z\n .strictObject({\n description: z.string().optional(),\n order: z.string().optional(),\n slug: z.string().optional(),\n status: z.string().optional(),\n title: z.string().optional(),\n })\n .optional(),\n publishedValue: z.string().optional(),\n});\n\nexport type NotionAdapter = AdapterDescriptor<\"notion\", NotionOptions>;\n\nexport const notionAdapterSchema = adapterDescriptorSchema(\n \"notion\",\n notionOptionsSchema\n);\n\n/**\n * A Notion database; pages become entries, blocks become MDX. `@notionhq/client`\n * is the declared runtime dependency, and the integration token comes from\n * `NOTION_TOKEN`.\n */\nexport const notion = (options: NotionOptions): NotionAdapter => ({\n kind: \"notion\",\n options,\n requiredSecrets: [\"NOTION_TOKEN\"],\n runtimeDeps: [\"@notionhq/client\"],\n});\n",
132
133
  "import { z } from \"zod\";\n\nimport type { AdapterDescriptor } from \"../core/adapter.ts\";\nimport { adapterDescriptorSchema } from \"../core/adapter.ts\";\nimport type { SharedSourceOptions } from \"./shared.ts\";\nimport { sharedSourceOptionsSchema } from \"./shared.ts\";\n\n/** Options for {@link obsidian}. */\nexport interface ObsidianOptions extends SharedSourceOptions {\n /** Vault folder names to skip at any depth, in addition to dot-folders. */\n exclude?: string[];\n /** Vault directory, absolute or relative to the project root. */\n vault: string;\n}\n\nexport const obsidianOptionsSchema = sharedSourceOptionsSchema.extend({\n exclude: z.array(z.string()).optional(),\n vault: z.string().min(1),\n});\n\nexport type ObsidianAdapter = AdapterDescriptor<\"obsidian\", ObsidianOptions>;\n\nexport const obsidianAdapterSchema = adapterDescriptorSchema(\n \"obsidian\",\n obsidianOptionsSchema\n);\n\n/**\n * An Obsidian vault, read in place. Wikilinks become route links and\n * `%%comments%%` are stripped at load time, so the vault stays the source of\n * truth — no export step and no generated notes in the repo.\n */\nexport const obsidian = (options: ObsidianOptions): ObsidianAdapter => ({\n kind: \"obsidian\",\n options,\n requiredSecrets: [],\n runtimeDeps: [],\n});\n",
133
134
  "import { z } from \"zod\";\n\nimport type { AdapterDescriptor } from \"../core/adapter.ts\";\nimport { adapterDescriptorSchema } from \"../core/adapter.ts\";\nimport type { SharedSourceOptions, SourceFieldMap } from \"./shared.ts\";\nimport {\n queryParamsSchema,\n sharedSourceOptionsSchema,\n sourceFieldMapSchema,\n} from \"./shared.ts\";\n\n/** Options for {@link payload}. */\nexport interface PayloadOptions extends SharedSourceOptions {\n /**\n * The auth-enabled collection the API key belongs to. Defaults to `users`;\n * it names the scheme in the `Authorization` header (`users API-Key <key>`).\n */\n authCollection?: string;\n /** The collection slug whose documents become pages. */\n collection: string;\n /** Relationship depth to populate. Defaults to `1`, enough for upload URLs. */\n depth?: number;\n /**\n * Field paths mapping a document onto Blume meta + body. Defaults to\n * `title` / `description` / `slug` / `content` / `updatedAt`.\n */\n fields?: SourceFieldMap;\n /** Extra query parameters for the collection request (`\"where[status][equals]\": \"live\"`). */\n params?: Record<string, string>;\n /** The Payload app's origin (`https://cms.acme.dev`); its REST API is at `/api`. */\n url: string;\n}\n\nexport const payloadOptionsSchema = sharedSourceOptionsSchema.extend({\n authCollection: z.string().optional(),\n collection: z.string(),\n depth: z.number().int().nonnegative().optional(),\n fields: sourceFieldMapSchema.optional(),\n params: queryParamsSchema.optional(),\n url: z.string(),\n});\n\nexport type PayloadAdapter = AdapterDescriptor<\"payload\", PayloadOptions>;\n\nexport const payloadAdapterSchema = adapterDescriptorSchema(\n \"payload\",\n payloadOptionsSchema\n);\n\n/**\n * A Payload collection read through its REST API; Lexical bodies become\n * Markdown. The API key comes from `PAYLOAD_API_KEY`, and `--preview` reads\n * drafts. Nothing to install: the adapter speaks the REST API directly.\n */\nexport const payload = (options: PayloadOptions): PayloadAdapter => ({\n kind: \"payload\",\n options,\n requiredSecrets: [\"PAYLOAD_API_KEY\"],\n runtimeDeps: [],\n});\n",
134
135
  "import { z } from \"zod\";\n\nimport type { AdapterDescriptor } from \"../core/adapter.ts\";\nimport { adapterDescriptorSchema } from \"../core/adapter.ts\";\nimport type { SharedSourceOptions } from \"./shared.ts\";\nimport { sharedSourceOptionsSchema } from \"./shared.ts\";\n\n/** Options for {@link sanity}. */\nexport interface SanityOptions extends SharedSourceOptions {\n /** Sanity API version (a date). Defaults to `2024-01-01`. */\n apiVersion?: string;\n /** Dataset name to query. */\n dataset: string;\n /** Field paths mapping a document onto Blume meta + body. */\n fields?: {\n /** Field holding the renderable body (Portable Text or Markdown). */\n body?: string;\n /** Field holding the page description. */\n description?: string;\n /** Field holding the last-modified date. */\n lastModified?: string;\n /** Field holding the page slug. */\n slug?: string;\n /** Field holding the page title. */\n title?: string;\n };\n /** Sanity project id. */\n projectId: string;\n /** GROQ query selecting the documents to import. */\n query: string;\n}\n\nexport const sanityOptionsSchema = sharedSourceOptionsSchema.extend({\n apiVersion: z.string().optional(),\n dataset: z.string(),\n fields: z\n .strictObject({\n body: z.string().optional(),\n description: z.string().optional(),\n lastModified: z.string().optional(),\n slug: z.string().optional(),\n title: z.string().optional(),\n })\n .optional(),\n projectId: z.string(),\n query: z.string(),\n});\n\nexport type SanityAdapter = AdapterDescriptor<\"sanity\", SanityOptions>;\n\nexport const sanityAdapterSchema = adapterDescriptorSchema(\n \"sanity\",\n sanityOptionsSchema\n);\n\n/**\n * A Sanity dataset queried with GROQ; Portable Text bodies become Markdown.\n * `@sanity/client` is the declared runtime dependency, and a private dataset's\n * read token comes from `SANITY_TOKEN`.\n */\nexport const sanity = (options: SanityOptions): SanityAdapter => ({\n kind: \"sanity\",\n options,\n requiredSecrets: [\"SANITY_TOKEN\"],\n runtimeDeps: [\"@sanity/client\"],\n});\n",
@@ -148,10 +149,10 @@
148
149
  "import baseMatter from \"gray-matter\";\nimport { dump, load } from \"js-yaml\";\n\nimport { YAML_SCHEMA } from \"./yaml.ts\";\n\n// gray-matter@4 binds js-yaml 3's `safeLoad`/`safeDump` as its default YAML\n// engine. In a workspace that resolves a newer js-yaml for gray-matter — v4\n// replaced those functions with throwing stubs, v5 dropped them — parsing\n// front matter throws \"Function yaml.safeLoad is removed in js-yaml 4.\" Every\n// Blume front-matter call routes through this `matter` wrapper, which supplies\n// an explicit engine built on Blume's own `load`/`dump`, so Blume is immune to\n// whichever version the consumer's install resolves for gray-matter.\n\ntype MatterInput = Parameters<typeof baseMatter>[0];\ntype MatterOptions = Parameters<typeof baseMatter>[1];\ntype ReadArgs = Parameters<typeof baseMatter.read>;\ntype StringifyArgs = Parameters<typeof baseMatter.stringify>;\n\n/** Front matter data as gray-matter types it (`GrayMatterFile[\"data\"]`). */\ntype FrontMatterData = ReturnType<typeof baseMatter>[\"data\"];\n\n/** A YAML load result: a mapping (or list) Astro keeps as front matter data. */\nconst isYamlCollection = (\n value: ReturnType<typeof load>\n): value is FrontMatterData => typeof value === \"object\" && value !== null;\n\nconst yamlEngine = {\n // A block that loads to a scalar (`title` alone, or prose between two\n // `---` lines) is no metadata: Astro reads it as `{}`, and so does Blume.\n parse: (input: string): FrontMatterData => {\n const value = load(input, { schema: YAML_SCHEMA });\n return isYamlCollection(value) ? value : {};\n },\n stringify: (data: FrontMatterData): string => dump(data),\n};\n\nconst withYamlEngine = <O extends { engines?: object } | undefined>(\n options: O\n): O =>\n // SAFETY: the spread keeps every field of `options`; adding a default yaml\n // engine (overridden by any caller-supplied `engines`) stays within O's\n // shape — TS just can't prove a spread of a generic re-satisfies O.\n ({\n ...options,\n engines: {\n yaml: yamlEngine,\n ...options?.engines,\n },\n }) as O;\n\n/**\n * True when a document's leading `---` line is a CommonMark thematic break,\n * not a front matter fence: no closing `---` line follows. Astro's own front\n * matter match requires that close too, while gray-matter would swallow the\n * whole document as one unclosed YAML block and hand it to js-yaml, which\n * crashes on ordinary Markdown (`> quote` → \"a line break is expected\").\n *\n * A blank line after the opening `---` is still front matter: Astro strips\n * the block from the page either way, so reading it as a divider here would\n * ignore its `draft`, `slug`, and `hidden` while its YAML leaked into search\n * and llms.txt.\n */\nconst opensWithThematicBreak = (input: string): boolean => {\n const [first = \"\"] = input.split(/\\r?\\n/u, 1);\n if (!/^-{3}\\s*$/u.test(first)) {\n return false;\n }\n // gray-matter closes the block at the next line-leading `---`; matching its\n // search exactly keeps this guard from firing on any document it parses.\n return !input.includes(\"\\n---\", 1);\n};\n\n/**\n * gray-matter's runtime result carries `isEmpty`, which its declared\n * GrayMatterFile type omits.\n */\ninterface MatterResult extends ReturnType<typeof baseMatter> {\n isEmpty: boolean;\n}\n\n/**\n * The parse result for a document with no front matter: the input passes\n * through as content, untouched. Shaped like gray-matter's own no-matter\n * result (every Blume call site reads only `content` and `data`).\n */\nconst passthrough = (input: string): ReturnType<typeof baseMatter> => {\n const file: MatterResult = {\n content: input,\n data: {},\n excerpt: \"\",\n isEmpty: false,\n language: \"\",\n matter: \"\",\n orig: input,\n // Recomposing a file with no matter and empty data is the content itself.\n stringify: (): string => input,\n };\n return file;\n};\n\n/** Narrows gray-matter's input union to the raw-string form. */\nconst isStringInput = (input: MatterInput): input is string =>\n typeof input === \"string\";\n\n// Every helper that parses or emits YAML (`read`, `stringify`) must be\n// re-wrapped here — Object.assign copies gray-matter's own helpers, which use\n// its default `safeLoad` engine and would reintroduce the crash. `test` only\n// checks for a delimiter, so the copied original is safe.\nconst matter = Object.assign(\n (input: MatterInput, options?: MatterOptions) =>\n isStringInput(input) && opensWithThematicBreak(input)\n ? passthrough(input)\n : baseMatter(input, withYamlEngine(options)),\n baseMatter,\n {\n read: (filepath: ReadArgs[0], options?: ReadArgs[1]) =>\n baseMatter.read(filepath, withYamlEngine(options)),\n // A string is the body to emit, not a document to parse: gray-matter\n // would otherwise run `matter()` over it, and a body that opens with a\n // `---` divider reads as a second front matter block — js-yaml either\n // throws or swallows the opening paragraph into the YAML header.\n stringify: (\n file: StringifyArgs[0],\n data: StringifyArgs[1],\n options?: StringifyArgs[2]\n ): string =>\n baseMatter.stringify(\n isStringInput(file) ? { content: file } : file,\n data,\n withYamlEngine(options)\n ),\n }\n);\n\nexport default matter;\n",
149
150
  "import {\n binaryTag,\n CORE_SCHEMA,\n mergeTag,\n omapTag,\n pairsTag,\n setTag,\n timestampTag,\n} from \"js-yaml\";\n\n/**\n * The schema js-yaml 4 loaded with by default: YAML 1.2 core scalars plus the\n * `!!timestamp`, `!!merge`, `!!binary`, `!!omap`, `!!pairs`, and `!!set` tags.\n * js-yaml 5 loads with the bare core schema instead, which turns\n * `date: 2024-01-01` into a string and leaves `<<:` merge keys unresolved — a\n * silent change to every page's front matter. Every Blume `load` call passes\n * this schema so parsing stays identical across the upgrade.\n */\nexport const YAML_SCHEMA = CORE_SCHEMA.withTags(\n timestampTag,\n mergeTag,\n binaryTag,\n omapTag,\n pairsTag,\n setTag\n);\n",
150
151
  "import pMap from \"p-map\";\n\nimport type { DiagnosticSeverity } from \"./types.ts\";\n\nexport const PROBE_CONCURRENCY = 8;\nexport const PROBE_TIMEOUT_MS = 10_000;\n\nconst STATUS_NOT_FOUND = 404;\nconst STATUS_GONE = 410;\nconst STATUS_METHOD_NOT_ALLOWED = 405;\nconst STATUS_NOT_IMPLEMENTED = 501;\n\n/** The outcome of a single HTTP probe, with failures normalized rather than thrown. */\nexport interface ProbeResult {\n ok: boolean;\n status?: number;\n timedOut?: boolean;\n error?: string;\n /** The system error code behind a request that got no response (`ENOTFOUND`). */\n code?: string;\n /** Whether the request was redirected before landing on `status`. */\n redirected?: boolean;\n /** The URL finally landed on, after following redirects. */\n finalUrl?: string;\n /** `Content-Encoding` of the response, when the server set one. */\n encoding?: string | null;\n /** Wall-clock milliseconds for the request. */\n ms?: number;\n /** `X-Robots-Tag` of the response, when the server set one. */\n robotsTag?: string | null;\n}\n\n/**\n * The reason a request got no response. Node's fetch rejects with a bare\n * \"fetch failed\" and puts the system error (`getaddrinfo ENOTFOUND …`, with\n * its `code`) on `cause`; Bun's rejects with the system error itself.\n */\nconst failure = (error: Error): Pick<ProbeResult, \"code\" | \"error\"> => {\n const reason = error.cause instanceof Error ? error.cause : error;\n return \"code\" in reason\n ? { code: String(reason.code), error: reason.message }\n : { error: reason.message };\n};\n\n/** Probe a URL with the given method, normalizing failures to a result. */\nconst request = async (\n url: string,\n method: \"GET\" | \"HEAD\",\n timeoutMs: number\n): Promise<ProbeResult> => {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), timeoutMs);\n const started = performance.now();\n try {\n const response = await fetch(url, {\n method,\n redirect: \"follow\",\n signal: controller.signal,\n });\n return {\n encoding: response.headers.get(\"content-encoding\"),\n finalUrl: response.url,\n ms: Math.round(performance.now() - started),\n ok: response.ok,\n redirected: response.redirected,\n robotsTag: response.headers.get(\"x-robots-tag\"),\n status: response.status,\n };\n } catch (error) {\n if (error instanceof Error && error.name === \"AbortError\") {\n return { ok: false, timedOut: true };\n }\n const reason =\n error instanceof Error ? failure(error) : { error: String(error) };\n return { ...reason, ok: false };\n } finally {\n clearTimeout(timer);\n }\n};\n\n/**\n * Probe a single URL: HEAD first, falling back to GET.\n *\n * Plenty of servers reject HEAD outright (405/501) or drop the connection, so a\n * HEAD-only probe would report healthy pages as dead.\n */\nexport const probe = async (\n url: string,\n options: { timeoutMs?: number } = {}\n): Promise<ProbeResult> => {\n const timeoutMs = options.timeoutMs ?? PROBE_TIMEOUT_MS;\n const head = await request(url, \"HEAD\", timeoutMs);\n const unreachable = !head.ok && head.status === undefined && !head.timedOut;\n const retry =\n head.status === STATUS_METHOD_NOT_ALLOWED ||\n head.status === STATUS_NOT_IMPLEMENTED ||\n unreachable;\n return retry ? await request(url, \"GET\", timeoutMs) : head;\n};\n\n/** Grade a probe result into a severity + detail, or null when the URL is fine. */\nexport const gradeExternal = (\n result: ProbeResult\n): { severity: DiagnosticSeverity; detail: string } | null => {\n if (result.ok) {\n return null;\n }\n if (result.timedOut) {\n return { detail: \"request timed out\", severity: \"warning\" };\n }\n // No response at all. A host name that doesn't resolve is as dead as a 404;\n // a refused, reset, or failed connection is more often someone else's outage\n // or the runner's own network, so it's graded like a timeout.\n if (result.status === undefined) {\n return {\n detail: result.error ?? \"unreachable\",\n severity: result.code === \"ENOTFOUND\" ? \"error\" : \"warning\",\n };\n }\n // A 404/410 is definitively dead. Any other status — a 401/403 from a site\n // that turns bots away, a 429, a 5xx — may well be rate limiting or a\n // transient blip, which is not the author's bug to fix.\n if (result.status === STATUS_NOT_FOUND || result.status === STATUS_GONE) {\n return { detail: `HTTP ${result.status}`, severity: \"error\" };\n }\n return { detail: `HTTP ${result.status}`, severity: \"warning\" };\n};\n\n/**\n * Probe many URLs with bounded concurrency, deduplicating first. Returns a map\n * from URL to its result — the caller decides what each one means.\n */\nexport const probeAll = async (\n urls: readonly string[],\n options: { concurrency?: number; timeoutMs?: number } = {}\n): Promise<Map<string, ProbeResult>> => {\n const unique = [...new Set(urls)];\n const entries = await pMap(\n unique,\n async (url) => [url, await probe(url, options)] as const,\n { concurrency: Math.max(1, options.concurrency ?? PROBE_CONCURRENCY) }\n );\n return new Map(entries);\n};\n",
151
- "import { existsSync, readFileSync } from \"node:fs\";\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\n\nimport { loadAll } from \"js-yaml\";\nimport { detect } from \"package-manager-detector/detect\";\nimport { basename, dirname, isAbsolute, join, relative } from \"pathe\";\nimport picomatch from \"picomatch\";\nimport { z } from \"zod\";\n\nimport { blumePackageJson, toPackageName } from \"../../core/package-json.ts\";\nimport { contentful } from \"../../sources/contentful.ts\";\nimport { githubReleases } from \"../../sources/github-releases.ts\";\nimport { mdxRemote } from \"../../sources/mdx-remote.ts\";\nimport { notion } from \"../../sources/notion.ts\";\nimport { obsidian } from \"../../sources/obsidian.ts\";\nimport { payload } from \"../../sources/payload.ts\";\nimport type { AnySourceAdapter } from \"../../sources/registry.ts\";\nimport { sanity } from \"../../sources/sanity.ts\";\nimport { strapi } from \"../../sources/strapi.ts\";\nimport { STARTER_OPENAPI_JSON } from \"./starter-spec.ts\";\n\nexport const TEMPLATES = [\"docs\", \"api\", \"sdk\", \"changelog\"] as const;\nexport type Template = (typeof TEMPLATES)[number];\n\nexport const PACKAGE_MANAGERS = [\"npm\", \"pnpm\", \"yarn\", \"bun\"] as const;\nexport type PackageManager = (typeof PACKAGE_MANAGERS)[number];\n\n/** The content-source kinds `init` can scaffold a config block for. */\nexport const SOURCE_KINDS = [\n \"filesystem\",\n \"obsidian\",\n \"github-releases\",\n \"notion\",\n \"sanity\",\n \"contentful\",\n \"payload\",\n \"strapi\",\n \"mdx-remote\",\n] as const;\nexport type SourceKind = (typeof SOURCE_KINDS)[number];\n\n/** Everything the scaffolder needs, whether prompted or derived from flags. */\nexport interface InitAnswers {\n contentDir: string;\n /** Target directory as the user gave it (`.` = current directory). */\n directory: string;\n packageManager: PackageManager;\n sources: SourceKind[];\n template: Template;\n title: string;\n}\n\n/** One file the scaffold plan will write; `path` is absolute. */\nexport interface ScaffoldFile {\n content: string;\n path: string;\n}\n\n/** Log sink for scaffold output — satisfied by both consola and clack's `log`. */\nexport interface ScaffoldLog {\n info: (message: string) => void;\n success: (message: string) => void;\n}\n\n/** A starter: a config fragment plus seed content files (paths relative to root). */\ninterface Starter {\n configExtra: string;\n /** Import lines the fragment needs, placed after the `defineConfig` import. */\n configImports: string[];\n files: (contentDir: string) => { content: string; path: string }[];\n /**\n * Files the config itself reads (the `api` starter's spec), written beside\n * it whichever content sources are selected.\n */\n projectFiles?: { content: string; path: string }[];\n}\n\nconst page = (title: string, description: string, body: string): string =>\n `---\\ntitle: ${title}\\ndescription: ${description}\\n---\\n\\n${body}\\n`;\n\nexport const STARTERS = {\n api: {\n configExtra: `\n reference: [\n openapi({\n route: \"/api\",\n sources: [\n {\n label: \"Pet Store\",\n spec: \"./openapi.json\",\n },\n ],\n }),\n ],`,\n configImports: ['import { openapi } from \"blume/reference\";'],\n files: (dir) => [\n {\n content: page(\n \"API Reference\",\n \"Reference documentation for the API, generated from its OpenAPI spec, with every endpoint, its parameters, request bodies, and responses.\",\n \"The example spec in `openapi.json` renders at [`/api`](/api). Replace it with your own, or point `openapi()` at your spec in `blume.config.ts`.\"\n ),\n path: join(dir, \"index.mdx\"),\n },\n ],\n projectFiles: [{ content: STARTER_OPENAPI_JSON, path: \"openapi.json\" }],\n },\n changelog: {\n configExtra: `\n navigation: {\n tabs: [\n { label: \"Docs\", path: \"/\" },\n { label: \"Changelog\", path: \"/changelog\" },\n ],\n },`,\n configImports: [],\n files: (dir) => [\n {\n content: page(\n \"Introduction\",\n \"Welcome to your new documentation site. Write guides as Markdown pages here, and log each release as an entry in the changelog folder.\",\n \"Write your docs here, and log releases under `changelog/`: each entry joins the [changelog](/changelog), newest first.\"\n ),\n path: join(dir, \"index.mdx\"),\n },\n {\n content: `---\\ntitle: v1.0.0\\ndescription: The first release of the project. Replace this entry with your own release notes, and add a new file beside it for every version.\\ntype: changelog\\ndate: 2026-01-01\\n---\\n\\nThe first release. Edit \\`${dir}/changelog/v1-0-0.mdx\\` or add new entries beside it.\\n`,\n path: join(dir, \"changelog\", \"v1-0-0.mdx\"),\n },\n ],\n },\n docs: {\n configExtra: \"\",\n configImports: [],\n files: (dir) => [\n {\n content: page(\n \"Introduction\",\n \"Welcome to your new documentation site. Edit this page or add Markdown files beside it, and Blume turns each file into a page.\",\n `Welcome to **Blume**, the open-source docs framework for humans and agents.\\n\\nEdit \\`${dir}/index.mdx\\` and save: this page reloads with your changes.`\n ),\n path: join(dir, \"index.mdx\"),\n },\n ],\n },\n sdk: {\n configExtra: \"\",\n configImports: [],\n files: (dir) => [\n {\n content: page(\n \"Introduction\",\n \"Get started with the SDK. Install the package, configure a client, and make your first call in a few lines of code in your own app.\",\n \"Install the SDK and make your first call. See [Installation](/installation).\"\n ),\n path: join(dir, \"index.mdx\"),\n },\n {\n content: page(\n \"Installation\",\n \"Install the SDK with the package manager your project already uses, then import it into your code to start making requests to the API.\",\n \"```package-install\\nyour-sdk\\n```\"\n ),\n path: join(dir, \"installation.mdx\"),\n },\n ],\n },\n} satisfies Record<Template, Starter>;\n\n/**\n * Add, install, and dev commands to print for the chosen package manager, plus the\n * prefix that runs a locally installed bin (`exec`, e.g. `npx blume eject`) —\n * dependency bins aren't on PATH, so a bare `blume …` hint would not run.\n */\nexport const commandsFor = (pm: PackageManager) => ({\n // Adds a dependency: npm spells the verb `install`, the others `add`.\n add: pm === \"npm\" ? \"npm install\" : `${pm} add`,\n // `bun build` invokes Bun's bundler, not the package.json `build` script —\n // unlike `bun dev`, the script name is shadowed by a builtin subcommand.\n build: pm === \"npm\" || pm === \"bun\" ? `${pm} run build` : `${pm} build`,\n dev: pm === \"npm\" ? \"npm run dev\" : `${pm} dev`,\n exec: { bun: \"bunx\", npm: \"npx\", pnpm: \"pnpm exec\", yarn: \"yarn\" }[pm],\n install: `${pm} install`,\n});\n\n// A path every shell (POSIX, cmd, PowerShell) takes as one bare word.\nconst SHELL_SAFE_PATH = /^[\\w./:-]+$/u;\n// What a double-quoted POSIX word still interprets.\nconst DOUBLE_QUOTE_SPECIAL = /[\"$\\\\`]/gu;\n\n/**\n * The `cd` into the new project, quoting a directory a shell would split or\n * expand: `blume init \"my docs\"` prints `cd \"my docs\"`, not `cd my docs`.\n */\nexport const cdCommand = (directory: string): string =>\n SHELL_SAFE_PATH.test(directory)\n ? `cd ${directory}`\n : `cd \"${directory.replaceAll(DOUBLE_QUOTE_SPECIAL, String.raw`\\$&`)}\"`;\n\nconst isPackageManager = (value: string): value is PackageManager =>\n PACKAGE_MANAGERS.some((pm) => pm === value);\n\n/**\n * Derive the package manager from an npm user-agent string (the first\n * `name/version` token of `npm_config_user_agent`), falling back to npm.\n * Right for `init`, where the project doesn't exist yet and the invoking\n * runner is the only signal.\n */\nexport const detectPackageManager = (userAgent?: string): PackageManager => {\n const name = userAgent?.split(\"/\")[0];\n return name !== undefined && isPackageManager(name) ? name : \"npm\";\n};\n\n/**\n * The nearest directory at or above `root` holding `.git` (a directory, or\n * the file a worktree or submodule carries), or null outside a repository.\n * Checked by presence rather than by asking git, so no path spelling is ever\n * compared: git prints its toplevel with symlinks and Windows 8.3 short\n * names resolved, which nothing in Node canonicalizes to.\n */\nconst repositoryRootOf = (root: string): string | null => {\n let dir = root;\n while (!existsSync(join(dir, \".git\"))) {\n const parent = dirname(dir);\n if (parent === dir) {\n return null;\n }\n dir = parent;\n }\n return dir;\n};\n\n/**\n * Detect an existing project's package manager from its lockfile /\n * `packageManager` field (package-manager-detector), falling back to the\n * user agent. Right for `eject`: the CLI is often run directly (`npx blume\n * eject`, a bare `blume eject`), where `npm_config_user_agent` is absent or\n * names the runner rather than the project's manager, and the old\n * user-agent-only detection silently printed npm hints for a pnpm project.\n */\nexport const detectProjectPackageManager = async (\n root: string\n): Promise<PackageManager> => {\n // A workspace package keeps its lockfile and `packageManager` field at the\n // repository root, so the walk climbs that far — but no further, or a\n // `package.json` in an unrelated ancestor (a user's home directory, say)\n // decides the project's commands. Outside a repository the project root is\n // the only directory that can be trusted.\n const detected = await detect({\n cwd: root,\n stopDir: repositoryRootOf(root) ?? root,\n });\n const name = detected?.name;\n return name !== undefined && isPackageManager(name)\n ? name\n : detectPackageManager(process.env.npm_config_user_agent);\n};\n\n/**\n * The content dir is joined into every scaffolded file path, so an absolute or\n * `../`-escaping value would write outside the project. Returns an error\n * message, or `undefined` when the dir is safe.\n */\nexport const validateContentDir = (\n root: string,\n dir: string\n): string | undefined =>\n isAbsolute(dir) || relative(root, join(root, dir)).startsWith(\"..\")\n ? \"Must be a relative path inside the project.\"\n : undefined;\n\n/** Turn a directory name into a display title: `my-docs` → `My Docs`. */\nexport const titleize = (raw: string): string => {\n const words = raw\n .replaceAll(/[-_.]+/gu, \" \")\n .split(/\\s+/u)\n .filter(Boolean);\n return words.length === 0\n ? \"My Docs\"\n : words\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n};\n\n/**\n * True when any selected source needs an explicit `content.sources` array —\n * everything except `filesystem`, which is what the implicit default already\n * desugars to.\n */\nconst needsExplicitSources = (sources: SourceKind[]): boolean =>\n sources.some((source) => source !== \"filesystem\");\n\n/** The `blume/sources` factory each source kind is written with. */\nconst SOURCE_FACTORIES = {\n contentful: \"contentful\",\n filesystem: \"filesystem\",\n \"github-releases\": \"githubReleases\",\n \"mdx-remote\": \"mdxRemote\",\n notion: \"notion\",\n obsidian: \"obsidian\",\n payload: \"payload\",\n sanity: \"sanity\",\n strapi: \"strapi\",\n} satisfies Record<SourceKind, string>;\n\n/**\n * The descriptor each remote source kind scaffolds — the same placeholder\n * options the emitted snippet shows — so the SDK deps and env vars `init`\n * sets up are read off the adapter rather than kept in a parallel table.\n */\nconst SOURCE_DESCRIPTORS = {\n contentful: contentful({\n contentType: \"doc\",\n prefix: \"contentful\",\n space: \"your-space-id\",\n }),\n \"github-releases\": githubReleases({\n owner: \"your-org\",\n prefix: \"changelog\",\n repo: \"your-repo\",\n }),\n \"mdx-remote\": mdxRemote({\n github: { owner: \"your-org\", path: \"docs\", repo: \"your-repo\" },\n prefix: \"remote\",\n }),\n notion: notion({ database: \"your-database-id\", prefix: \"notion\" }),\n obsidian: obsidian({ prefix: \"notes\", vault: \"vault\" }),\n payload: payload({\n collection: \"docs\",\n prefix: \"payload\",\n url: \"https://cms.example.com\",\n }),\n sanity: sanity({\n dataset: \"production\",\n prefix: \"sanity\",\n projectId: \"your-project-id\",\n query: '*[_type == \"doc\"]',\n }),\n strapi: strapi({\n contentType: \"docs\",\n prefix: \"strapi\",\n url: \"https://cms.example.com\",\n }),\n} satisfies Record<Exclude<SourceKind, \"filesystem\">, AnySourceAdapter>;\n\n/**\n * Config snippets for each remote source kind, with placeholder values to\n * replace and comments naming the env var each source authenticates with.\n */\nconst SOURCE_SNIPPETS = {\n contentful: ` // Entries of a Contentful content type. Reads CONTENTFUL_ACCESS_TOKEN\n // from the environment.\n contentful({\n space: \"your-space-id\",\n contentType: \"doc\",\n prefix: \"contentful\",\n }),`,\n \"github-releases\": ` // Changelog entries from GitHub Releases. Private repos read\n // GITHUB_TOKEN from the environment.\n githubReleases({\n owner: \"your-org\",\n repo: \"your-repo\",\n prefix: \"changelog\",\n }),`,\n \"mdx-remote\": ` // MDX fetched from a GitHub repo. Private repos read GITHUB_TOKEN\n // from the environment.\n mdxRemote({\n github: { owner: \"your-org\", repo: \"your-repo\", path: \"docs\" },\n prefix: \"remote\",\n }),`,\n notion: ` // Pages from a Notion database. Reads NOTION_TOKEN from the environment.\n notion({\n database: \"your-database-id\",\n prefix: \"notion\",\n }),`,\n obsidian: ` // An Obsidian vault, read in place. No export step, and no\n // generated notes in your repo. Point \\`vault\\` at your vault directory,\n // relative to this config file.\n obsidian({\n vault: \"vault\",\n prefix: \"notes\",\n }),`,\n payload: ` // Documents from a Payload collection. Reads PAYLOAD_API_KEY from\n // the environment.\n payload({\n url: \"https://cms.example.com\",\n collection: \"docs\",\n prefix: \"payload\",\n }),`,\n sanity: ` // Documents from a Sanity dataset. Private datasets read SANITY_TOKEN\n // from the environment.\n sanity({\n projectId: \"your-project-id\",\n dataset: \"production\",\n query: \\`*[_type == \"doc\"]\\`,\n prefix: \"sanity\",\n }),`,\n strapi: ` // Entries of a Strapi content type. Reads STRAPI_API_TOKEN from\n // the environment.\n strapi({\n url: \"https://cms.example.com\",\n contentType: \"docs\",\n prefix: \"strapi\",\n }),`,\n} satisfies Record<Exclude<SourceKind, \"filesystem\">, string>;\n\n/** The selected kinds in canonical order (the multiselect returns pick order). */\nconst orderedSources = (sources: SourceKind[]): SourceKind[] =>\n SOURCE_KINDS.filter((kind) => sources.includes(kind));\n\n/** The `blume/sources` import line for the selected kinds, in canonical order. */\nconst sourcesImportFor = (sources: SourceKind[]): string =>\n `import { ${orderedSources(sources)\n .map((kind) => SOURCE_FACTORIES[kind])\n .join(\", \")} } from \"blume/sources\";\\n`;\n\n/** The chosen source kinds; no selection means the implicit local source. */\nconst selectedSources = (answers: InitAnswers): SourceKind[] =>\n answers.sources.length === 0 ? [\"filesystem\"] : answers.sources;\n\n/**\n * The `content` block for the generated config, or an empty string when the\n * defaults (filesystem source, `docs` root) apply — keeping the default\n * scaffold byte-identical to a config with no `content` key at all.\n */\nconst contentBlockFor = (answers: InitAnswers): string => {\n const sources = selectedSources(answers);\n if (!needsExplicitSources(sources)) {\n return answers.contentDir === \"docs\"\n ? \"\"\n : `\n content: {\n root: ${JSON.stringify(answers.contentDir)},\n },`;\n }\n // Explicit sources replace the implicit filesystem desugar, so the local\n // content dir must be listed alongside the other sources to stay included.\n const entries = orderedSources(sources).map((kind) =>\n kind === \"filesystem\"\n ? ` filesystem({ root: ${JSON.stringify(answers.contentDir)} }),`\n : SOURCE_SNIPPETS[kind]\n );\n return `\n content: {\n sources: [\n${entries.join(\"\\n\")}\n ],\n },`;\n};\n\n/** The full `blume.config.ts` text for the chosen answers. */\nexport const buildConfig = (answers: InitAnswers): string => {\n const starter = STARTERS[answers.template];\n const sources = selectedSources(answers);\n // Only an explicit `sources` array calls factories; the shorthand `root`\n // (or no content block at all) needs no import.\n const sourcesImport = needsExplicitSources(sources)\n ? sourcesImportFor(sources)\n : \"\";\n const imports = [\n 'import { defineConfig } from \"blume\";',\n ...starter.configImports,\n ].join(\"\\n\");\n return `${imports}\n${sourcesImport}\nexport default defineConfig({\n title: ${JSON.stringify(answers.title)},\n description: \"Documentation powered by Blume.\",${starter.configExtra}${contentBlockFor(answers)}\n});\n`;\n};\n\n/** The version range `init` pins for each SDK an adapter declares. */\nconst SDK_VERSIONS = new Map([\n [\"@notionhq/client\", \"^5.26.0\"],\n [\"@sanity/client\", \"^8.6.1\"],\n]);\n\n/** The scaffolded descriptors for the selected remote source kinds. */\nconst descriptorsFor = (sources: SourceKind[]): AnySourceAdapter[] =>\n orderedSources(sources).flatMap((kind) =>\n kind === \"filesystem\" ? [] : [SOURCE_DESCRIPTORS[kind]]\n );\n\n/** SDK dependencies the selected sources declare, read off their descriptors. */\nconst extraDepsFor = (sources: SourceKind[]) => {\n const deps: Record<string, string> = {};\n for (const descriptor of descriptorsFor(sources)) {\n for (const dep of descriptor.runtimeDeps) {\n deps[dep] = SDK_VERSIONS.get(dep) ?? \"latest\";\n }\n }\n return deps;\n};\n\n/**\n * `pnpm-workspace.yaml` for a new pnpm project. pnpm runs a dependency's\n * build script only once it's approved, and fails the install over any it\n * wasn't told about. esbuild's postinstall checks its platform binary;\n * `@scarf/scarf` is a telemetry postinstall a transitive dependency pulls in,\n * and Blume doesn't need it to run.\n */\nconst PNPM_WORKSPACE = `allowBuilds:\n esbuild: true\n \"@scarf/scarf\": false\n`;\n\n/**\n * `.yarnrc.yml` for a new Yarn Berry project. Berry installs with Plug'n'Play\n * by default, which writes no `node_modules`; Blume's generated Astro project\n * resolves its packages from one. Yarn Classic never reads this file.\n */\nconst YARNRC = `# Blume's generated Astro project resolves packages from node_modules, which\n# Yarn's default Plug'n'Play install doesn't create.\nnodeLinker: node-modules\n`;\n\n/**\n * The nearest directory at or above `root` where `found` holds, searching up\n * to the repository root — or to the filesystem root outside a repository,\n * where a workspace can still enclose the project.\n */\nconst nearestAncestor = (\n root: string,\n found: (dir: string) => boolean\n): string | null => {\n const stop = repositoryRootOf(root);\n let dir = root;\n while (!found(dir)) {\n const parent = dirname(dir);\n if (dir === stop || parent === dir) {\n return null;\n }\n dir = parent;\n }\n return dir;\n};\n\n/** Read a file, or `\"\"` when it can't be read. */\nconst readText = (path: string): string => {\n try {\n return readFileSync(path, \"utf-8\");\n } catch {\n return \"\";\n }\n};\n\n/** The pnpm workspace enclosing `root`: the directory of its `pnpm-workspace.yaml`. */\nconst pnpmWorkspaceRoot = (root: string): string | null =>\n nearestAncestor(root, (dir) => existsSync(join(dir, \"pnpm-workspace.yaml\")));\n\n/** The slice of `pnpm-workspace.yaml` the membership check reads. */\nconst pnpmWorkspaceSchema = z.looseObject({\n packages: z.array(z.string()).default([]),\n});\n\n// A glob's leading `./` and trailing `/`, which pnpm ignores.\nconst GLOB_EDGES = /^\\.\\/|\\/+$/gu;\n\n/** Whether any of `globs` matches the workspace-relative path `at`. */\nconst matchesAny = (globs: string[], at: string): boolean =>\n globs.length > 0 && picomatch(globs)(at);\n\n/**\n * Whether the pnpm workspace at `workspace` lists `root` as one of its\n * packages: the workspace root itself, or a folder its `packages` globs match\n * and no `!` glob excludes. pnpm installs only those, so an install run in any\n * other folder beneath it succeeds without installing that folder's\n * dependencies. A workspace file that doesn't parse counts as listing it, so\n * `init` never claims what it can't tell.\n */\nconst listsPackage = (workspace: string, root: string): boolean => {\n const at = relative(workspace, root);\n if (at === \"\") {\n return true;\n }\n let parsed: ReturnType<typeof pnpmWorkspaceSchema.safeParse>;\n try {\n // `loadAll`, not `load`: js-yaml 5 throws on a file with no document (empty,\n // or comments only), which pnpm reads as a workspace of the root alone.\n const [document] = loadAll(\n readText(join(workspace, \"pnpm-workspace.yaml\"))\n );\n parsed = pnpmWorkspaceSchema.safeParse(document ?? {});\n } catch {\n return true;\n }\n if (!parsed.success) {\n return true;\n }\n const globs = parsed.data.packages;\n const pattern = (glob: string): string => glob.replaceAll(GLOB_EDGES, \"\");\n const included = globs.filter((glob) => !glob.startsWith(\"!\")).map(pattern);\n const excluded = globs\n .filter((glob) => glob.startsWith(\"!\"))\n .map((glob) => pattern(glob.slice(1)));\n return matchesAny(included, at) && !matchesAny(excluded, at);\n};\n\n/**\n * Whether `init` installs with pnpm into a folder that sits inside a pnpm\n * workspace without being one of its packages. pnpm would install that\n * workspace's own packages from there and exit 0, leaving `blume` uninstalled.\n */\nexport const outsidePnpmWorkspace = (\n root: string,\n answers: InitAnswers\n): boolean => {\n if (answers.packageManager !== \"pnpm\") {\n return false;\n }\n const workspace = pnpmWorkspaceRoot(root);\n return workspace !== null && !listsPackage(workspace, root);\n};\n\n/**\n * The Yarn project enclosing `root`: a directory holding a lockfile, a\n * `.yarnrc.yml`, or a `package.json` that declares workspaces.\n */\nconst yarnProjectRoot = (root: string): string | null =>\n nearestAncestor(\n root,\n (dir) =>\n existsSync(join(dir, \"yarn.lock\")) ||\n existsSync(join(dir, \".yarnrc.yml\")) ||\n /\"workspaces\"\\s*:/u.test(readText(join(dir, \"package.json\")))\n );\n\n/**\n * The major version of the Yarn that ran `init`, read off the npm user agent\n * (`yarn/4.5.1 npm/? node/v22…`), or undefined when something else ran it.\n */\nexport const yarnMajor = (userAgent?: string): number | undefined => {\n const match = /^yarn\\/(?<major>\\d+)\\./u.exec(userAgent ?? \"\");\n return match?.groups?.major === undefined\n ? undefined\n : Number(match.groups.major);\n};\n\n/** Environment `buildPlan` and `workspaceNote` read, injectable for tests. */\nexport interface PlanEnvironment {\n /** `npm_config_user_agent` of the process that ran `init`. */\n userAgent?: string;\n}\n\n/**\n * The package-manager config file a project `init` creates from scratch\n * needs: pnpm's build approvals, or Yarn Berry's `node_modules` linker. An\n * existing package.json, or a workspace the project joins, already owns that\n * decision (see {@link workspaceNote}); Yarn Classic ignores `.yarnrc.yml`, so\n * a user agent naming Yarn 1 skips it.\n */\nconst packageManagerConfigFor = (\n root: string,\n answers: InitAnswers,\n env: PlanEnvironment\n): ScaffoldFile[] => {\n if (existsSync(join(root, \"package.json\"))) {\n return [];\n }\n if (answers.packageManager === \"pnpm\" && pnpmWorkspaceRoot(root) === null) {\n return [\n { content: PNPM_WORKSPACE, path: join(root, \"pnpm-workspace.yaml\") },\n ];\n }\n if (\n answers.packageManager === \"yarn\" &&\n yarnMajor(env.userAgent) !== 1 &&\n yarnProjectRoot(root) === null\n ) {\n return [{ content: YARNRC, path: join(root, \".yarnrc.yml\") }];\n }\n return [];\n};\n\nconst ESBUILD_APPROVAL = \" allowBuilds:\\n esbuild: true\";\n\n/**\n * What the project still needs from a workspace it sits in, when `init` left\n * that workspace's config alone: a place in a pnpm workspace's `packages`\n * (pnpm skips a folder it doesn't list), pnpm's approval for esbuild's build\n * script (pnpm 11 and later fail the install without it), or Yarn Berry's\n * `node_modules` linker. Undefined when the workspace already has it, or the\n * project doesn't sit in one.\n */\nexport const workspaceNote = (\n root: string,\n answers: InitAnswers,\n env: PlanEnvironment = {}\n): string | undefined => {\n if (answers.packageManager === \"pnpm\") {\n const workspace = pnpmWorkspaceRoot(root);\n if (!workspace) {\n return;\n }\n const file = join(workspace, \"pnpm-workspace.yaml\");\n const approved = readText(file).includes(\"esbuild\");\n if (!listsPackage(workspace, root)) {\n const entry = ` packages:\\n - ${relative(workspace, root)}`;\n return approved\n ? `This folder sits inside the pnpm workspace at ${file}, which doesn't list it under packages, so pnpm won't install it. Add it there before installing:\\n\\n${entry}`\n : `This folder sits inside the pnpm workspace at ${file}, which doesn't list it under packages, so pnpm won't install it. Add it there before installing, and approve esbuild's build script, or pnpm 11 and later stop the install:\\n\\n${entry}\\n${ESBUILD_APPROVAL}`;\n }\n if (approved) {\n return;\n }\n return `This project joins the pnpm workspace at ${file}. Approve esbuild's build script there before installing, or pnpm 11 and later stop the install:\\n\\n${ESBUILD_APPROVAL}`;\n }\n if (answers.packageManager !== \"yarn\" || yarnMajor(env.userAgent) === 1) {\n return;\n }\n const project = yarnProjectRoot(root);\n const rc = project && join(project, \".yarnrc.yml\");\n if (!rc || /^nodeLinker:\\s*[\"']?(?:node-modules|pnpm)/mu.test(readText(rc))) {\n return;\n }\n return `This project joins the Yarn project at ${project}. With Yarn 2 or later, set its linker in ${rc} so installs write the node_modules Blume's generated Astro project resolves packages from:\\n\\n nodeLinker: node-modules`;\n};\n\n/** Every file `init` should write for the given answers, package.json first. */\nexport const buildPlan = (\n root: string,\n answers: InitAnswers,\n env: PlanEnvironment = {}\n): ScaffoldFile[] => {\n const starter: Starter = STARTERS[answers.template];\n const files: ScaffoldFile[] = [\n {\n content: blumePackageJson(\n toPackageName(basename(root)),\n extraDepsFor(answers.sources)\n ),\n path: join(root, \"package.json\"),\n },\n ...packageManagerConfigFor(root, answers, env),\n { content: buildConfig(answers), path: join(root, \"blume.config.ts\") },\n ...(starter.projectFiles ?? []).map((file) => ({\n ...file,\n path: join(root, file.path),\n })),\n ];\n // Seed pages only make sense when a local filesystem source will read them.\n if (answers.sources.length === 0 || answers.sources.includes(\"filesystem\")) {\n files.push(\n ...starter\n .files(answers.contentDir)\n .map((file) => ({ ...file, path: join(root, file.path) }))\n );\n }\n // The obsidian snippet points at `vault/`; seed the directory with a first\n // note so the scaffolded project passes the source's `validate()` and boots\n // before the user has opened Obsidian at all.\n if (answers.sources.includes(\"obsidian\")) {\n files.push({\n content:\n \"# Welcome\\n\\nThis folder is read by Blume's `obsidian` source. Open it as a vault in Obsidian and write notes — `[[Wikilinks]]` become site links.\\n\",\n path: join(root, \"vault\", \"Welcome.md\"),\n });\n }\n return files;\n};\n\nconst writeFileSafe = async (\n file: ScaffoldFile,\n log: ScaffoldLog\n): Promise<boolean> => {\n if (existsSync(file.path)) {\n log.info(`Skipped existing ${file.path}`);\n return false;\n }\n await mkdir(dirname(file.path), { recursive: true });\n await writeFile(file.path, file.content, \"utf-8\");\n log.success(`Created ${file.path}`);\n return true;\n};\n\n/**\n * Write the plan's files, skipping any that already exist. Reports whether a\n * `package.json` was newly created (it decides whether `init` installs).\n */\nexport const applyPlan = async (\n files: ScaffoldFile[],\n log: ScaffoldLog\n): Promise<{ createdPackage: boolean }> => {\n const created = await Promise.all(\n files.map((file) => writeFileSafe(file, log))\n );\n const createdPackage = files.some(\n (file, index) => created[index] && basename(file.path) === \"package.json\"\n );\n return { createdPackage };\n};\n\n/** Env vars the selected sources declare, deduplicated in a stable order. */\nconst envVarsFor = (sources: SourceKind[]): string[] => [\n ...new Set(\n descriptorsFor(sources).flatMap((descriptor) => descriptor.requiredSecrets)\n ),\n];\n\n/** What an existing package.json — one `init` left alone — already wires up. */\nexport interface ExistingPackage {\n /**\n * Whether `blume` is installed where the project resolves it: its own\n * `node_modules`, or an ancestor's in a hoisted workspace. Listing it isn't\n * enough — a rerun of `init --no-install` lists it without installing it.\n */\n blumeInstalled: boolean;\n /** Every package it lists in `dependencies` or `devDependencies`. */\n dependencies: string[];\n /** Whether its `dev` script runs Blume. */\n devRunsBlume: boolean;\n}\n\n/** Whether a `node_modules/blume` sits in `root` or any directory above it. */\nconst blumeResolves = (root: string): boolean => {\n let dir = root;\n while (!existsSync(join(dir, \"node_modules\", \"blume\", \"package.json\"))) {\n const parent = dirname(dir);\n if (parent === dir) {\n return false;\n }\n dir = parent;\n }\n return true;\n};\n\n/**\n * Read the package.json `init` didn't write. An unreadable or malformed one\n * reads as wiring nothing up, so the next steps list everything to add.\n */\nexport const readExistingPackage = async (\n root: string\n): Promise<ExistingPackage> => {\n try {\n // SAFETY: only the two dependency maps and the `dev` script are read, all\n // optional; `String()` absorbs a script that isn't a string.\n const pkg = JSON.parse(\n await readFile(join(root, \"package.json\"), \"utf-8\")\n ) as {\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n scripts?: Record<string, string>;\n };\n return {\n blumeInstalled: blumeResolves(root),\n dependencies: Object.keys({\n ...pkg.dependencies,\n ...pkg.devDependencies,\n }),\n devRunsBlume: String(pkg.scripts?.dev ?? \"\").includes(\"blume\"),\n };\n } catch {\n return {\n blumeInstalled: blumeResolves(root),\n dependencies: [],\n devRunsBlume: false,\n };\n }\n};\n\n/**\n * The next-steps message: `cd` hint, the install command when `init` did not\n * run it itself, the dev command, and token setup. With an `existing`\n * package.json — which `init` never edits — it first adds whatever of `blume`\n * and the sources' SDKs isn't listed yet (or installs, when everything is\n * listed but `blume` was never installed), then starts the dev server through\n * the package runner unless its `dev` script already runs Blume. A `note` —\n * what a workspace the project joins still needs — closes the message.\n */\nexport const nextSteps = (\n answers: InitAnswers,\n needsInstall: boolean,\n existing?: ExistingPackage,\n note?: string\n): string => {\n const commands = commandsFor(answers.packageManager);\n const lines: string[] = [];\n if (answers.directory !== \".\") {\n lines.push(cdCommand(answers.directory));\n }\n if (needsInstall) {\n lines.push(commands.install);\n }\n if (existing) {\n const missing = [\n \"blume\",\n ...Object.keys(extraDepsFor(answers.sources)),\n ].filter((dep) => !existing.dependencies.includes(dep));\n if (missing.length > 0) {\n lines.push(`${commands.add} ${missing.join(\" \")}`);\n } else if (!(needsInstall || existing.blumeInstalled)) {\n lines.push(commands.install);\n }\n }\n lines.push(\n existing && !existing.devRunsBlume\n ? `${commands.exec} blume dev`\n : commands.dev\n );\n const envVars = envVarsFor(answers.sources);\n const auth =\n envVars.length > 0\n ? `\\nSet ${envVars.join(\" and \")} in .env.local so your sources can authenticate.\\n`\n : \"\";\n const workspace = note ? `\\n${note}\\n` : \"\";\n return `Next steps:\\n\\n ${lines.join(\"\\n \")}\\n${auth}${workspace}`;\n};\n",
152
+ "import { existsSync, readFileSync } from \"node:fs\";\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\n\nimport { loadAll } from \"js-yaml\";\nimport { detect } from \"package-manager-detector/detect\";\nimport { basename, dirname, isAbsolute, join, relative } from \"pathe\";\nimport picomatch from \"picomatch\";\nimport { z } from \"zod\";\n\nimport { blumePackageJson, toPackageName } from \"../../core/package-json.ts\";\nimport { contentful } from \"../../sources/contentful.ts\";\nimport { githubReleases } from \"../../sources/github-releases.ts\";\nimport { mdxRemote } from \"../../sources/mdx-remote.ts\";\nimport { notion } from \"../../sources/notion.ts\";\nimport { obsidian } from \"../../sources/obsidian.ts\";\nimport { payload } from \"../../sources/payload.ts\";\nimport type { AnySourceAdapter } from \"../../sources/registry.ts\";\nimport { sanity } from \"../../sources/sanity.ts\";\nimport { strapi } from \"../../sources/strapi.ts\";\nimport { STARTER_OPENAPI_JSON } from \"./starter-spec.ts\";\n\nexport const TEMPLATES = [\"docs\", \"api\", \"sdk\", \"changelog\"] as const;\nexport type Template = (typeof TEMPLATES)[number];\n\nexport const PACKAGE_MANAGERS = [\"npm\", \"pnpm\", \"yarn\", \"bun\"] as const;\nexport type PackageManager = (typeof PACKAGE_MANAGERS)[number];\n\n/** The content-source kinds `init` can scaffold a config block for. */\nexport const SOURCE_KINDS = [\n \"filesystem\",\n \"obsidian\",\n \"github-releases\",\n \"notion\",\n \"sanity\",\n \"contentful\",\n \"payload\",\n \"strapi\",\n \"mdx-remote\",\n] as const;\nexport type SourceKind = (typeof SOURCE_KINDS)[number];\n\n/** Everything the scaffolder needs, whether prompted or derived from flags. */\nexport interface InitAnswers {\n contentDir: string;\n /** Target directory as the user gave it (`.` = current directory). */\n directory: string;\n packageManager: PackageManager;\n sources: SourceKind[];\n template: Template;\n title: string;\n}\n\n/** One file the scaffold plan will write; `path` is absolute. */\nexport interface ScaffoldFile {\n content: string;\n path: string;\n}\n\n/** Log sink for scaffold output — satisfied by both consola and clack's `log`. */\nexport interface ScaffoldLog {\n info: (message: string) => void;\n success: (message: string) => void;\n}\n\n/** A starter: a config fragment plus seed content files (paths relative to root). */\ninterface Starter {\n configExtra: string;\n /** Import lines the fragment needs, placed after the `defineConfig` import. */\n configImports: string[];\n files: (contentDir: string) => { content: string; path: string }[];\n /**\n * Files the config itself reads (the `api` starter's spec), written beside\n * it whichever content sources are selected.\n */\n projectFiles?: { content: string; path: string }[];\n}\n\nconst page = (title: string, description: string, body: string): string =>\n `---\\ntitle: ${title}\\ndescription: ${description}\\n---\\n\\n${body}\\n`;\n\nexport const STARTERS = {\n api: {\n configExtra: `\n reference: [\n openapi({\n route: \"/api\",\n sources: [\n {\n label: \"Pet Store\",\n spec: \"./openapi.json\",\n },\n ],\n }),\n ],`,\n configImports: ['import { openapi } from \"blume/reference\";'],\n files: (dir) => [\n {\n content: page(\n \"API Reference\",\n \"Reference documentation for the API, generated from its OpenAPI spec, with every endpoint, its parameters, request bodies, and responses.\",\n \"The example spec in `openapi.json` renders at [`/api`](/api). Replace it with your own, or point `openapi()` at your spec in `blume.config.ts`.\"\n ),\n path: join(dir, \"index.mdx\"),\n },\n ],\n projectFiles: [{ content: STARTER_OPENAPI_JSON, path: \"openapi.json\" }],\n },\n changelog: {\n configExtra: `\n navigation: {\n tabs: [\n { label: \"Docs\", path: \"/\" },\n { label: \"Changelog\", path: \"/changelog\" },\n ],\n },`,\n configImports: [],\n files: (dir) => [\n {\n content: page(\n \"Introduction\",\n \"Welcome to your new documentation site. Write guides as Markdown pages here, and log each release as an entry in the changelog folder.\",\n \"Write your docs here, and log releases under `changelog/`: each entry joins the [changelog](/changelog), newest first.\"\n ),\n path: join(dir, \"index.mdx\"),\n },\n {\n content: `---\\ntitle: v1.0.0\\ndescription: The first release of the project. Replace this entry with your own release notes, and add a new file beside it for every version.\\ntype: changelog\\ndate: 2026-01-01\\n---\\n\\nThe first release. Edit \\`${dir}/changelog/v1-0-0.mdx\\` or add new entries beside it.\\n`,\n path: join(dir, \"changelog\", \"v1-0-0.mdx\"),\n },\n ],\n },\n docs: {\n configExtra: \"\",\n configImports: [],\n files: (dir) => [\n {\n content: page(\n \"Introduction\",\n \"Welcome to your new documentation site. Edit this page or add Markdown files beside it, and Blume turns each file into a page.\",\n `Welcome to **Blume**, the open-source docs framework for humans and agents.\\n\\nEdit \\`${dir}/index.mdx\\` and save: this page reloads with your changes.`\n ),\n path: join(dir, \"index.mdx\"),\n },\n ],\n },\n sdk: {\n configExtra: \"\",\n configImports: [],\n files: (dir) => [\n {\n content: page(\n \"Introduction\",\n \"Get started with the SDK. Install the package, configure a client, and make your first call in a few lines of code in your own app.\",\n \"Install the SDK and make your first call. See [Installation](/installation).\"\n ),\n path: join(dir, \"index.mdx\"),\n },\n {\n content: page(\n \"Installation\",\n \"Install the SDK with the package manager your project already uses, then import it into your code to start making requests to the API.\",\n \"```package-install\\nyour-sdk\\n```\"\n ),\n path: join(dir, \"installation.mdx\"),\n },\n ],\n },\n} satisfies Record<Template, Starter>;\n\n/**\n * Add, install, and dev commands to print for the chosen package manager, plus the\n * prefix that runs a locally installed bin (`exec`, e.g. `npx blume eject`) —\n * dependency bins aren't on PATH, so a bare `blume …` hint would not run.\n */\nexport const commandsFor = (pm: PackageManager) => ({\n // Adds a dependency: npm spells the verb `install`, the others `add`.\n add: pm === \"npm\" ? \"npm install\" : `${pm} add`,\n // `bun build` invokes Bun's bundler, not the package.json `build` script —\n // unlike `bun dev`, the script name is shadowed by a builtin subcommand.\n build: pm === \"npm\" || pm === \"bun\" ? `${pm} run build` : `${pm} build`,\n dev: pm === \"npm\" ? \"npm run dev\" : `${pm} dev`,\n exec: { bun: \"bunx\", npm: \"npx\", pnpm: \"pnpm exec\", yarn: \"yarn\" }[pm],\n install: `${pm} install`,\n});\n\n// A path every shell (POSIX, cmd, PowerShell) takes as one bare word.\nconst SHELL_SAFE_PATH = /^[\\w./:-]+$/u;\n// What a double-quoted POSIX word still interprets.\nconst DOUBLE_QUOTE_SPECIAL = /[\"$\\\\`]/gu;\n\n/**\n * The `cd` into the new project, quoting a directory a shell would split or\n * expand: `blume init \"my docs\"` prints `cd \"my docs\"`, not `cd my docs`.\n */\nexport const cdCommand = (directory: string): string =>\n SHELL_SAFE_PATH.test(directory)\n ? `cd ${directory}`\n : `cd \"${directory.replaceAll(DOUBLE_QUOTE_SPECIAL, String.raw`\\$&`)}\"`;\n\nconst isPackageManager = (value: string): value is PackageManager =>\n PACKAGE_MANAGERS.some((pm) => pm === value);\n\n/**\n * Derive the package manager from an npm user-agent string (the first\n * `name/version` token of `npm_config_user_agent`), falling back to npm.\n * Right for `init`, where the project doesn't exist yet and the invoking\n * runner is the only signal.\n */\nexport const detectPackageManager = (userAgent?: string): PackageManager => {\n const name = userAgent?.split(\"/\")[0];\n return name !== undefined && isPackageManager(name) ? name : \"npm\";\n};\n\n/**\n * The nearest directory at or above `root` holding `.git` (a directory, or\n * the file a worktree or submodule carries), or null outside a repository.\n * Checked by presence rather than by asking git, so no path spelling is ever\n * compared: git prints its toplevel with symlinks and Windows 8.3 short\n * names resolved, which nothing in Node canonicalizes to.\n */\nconst repositoryRootOf = (root: string): string | null => {\n let dir = root;\n while (!existsSync(join(dir, \".git\"))) {\n const parent = dirname(dir);\n if (parent === dir) {\n return null;\n }\n dir = parent;\n }\n return dir;\n};\n\n/**\n * Detect an existing project's package manager from its lockfile /\n * `packageManager` field (package-manager-detector), falling back to the\n * user agent. Right for `eject`: the CLI is often run directly (`npx blume\n * eject`, a bare `blume eject`), where `npm_config_user_agent` is absent or\n * names the runner rather than the project's manager, and the old\n * user-agent-only detection silently printed npm hints for a pnpm project.\n */\nexport const detectProjectPackageManager = async (\n root: string\n): Promise<PackageManager> => {\n // A workspace package keeps its lockfile and `packageManager` field at the\n // repository root, so the walk climbs that far — but no further, or a\n // `package.json` in an unrelated ancestor (a user's home directory, say)\n // decides the project's commands. Outside a repository the project root is\n // the only directory that can be trusted.\n const detected = await detect({\n cwd: root,\n stopDir: repositoryRootOf(root) ?? root,\n });\n const name = detected?.name;\n return name !== undefined && isPackageManager(name)\n ? name\n : detectPackageManager(process.env.npm_config_user_agent);\n};\n\n/**\n * The content dir is joined into every scaffolded file path, so an absolute or\n * `../`-escaping value would write outside the project. Returns an error\n * message, or `undefined` when the dir is safe.\n */\nexport const validateContentDir = (\n root: string,\n dir: string\n): string | undefined =>\n isAbsolute(dir) || relative(root, join(root, dir)).startsWith(\"..\")\n ? \"Must be a relative path inside the project.\"\n : undefined;\n\n/** Turn a directory name into a display title: `my-docs` → `My Docs`. */\nexport const titleize = (raw: string): string => {\n const words = raw\n .replaceAll(/[-_.]+/gu, \" \")\n .split(/\\s+/u)\n .filter(Boolean);\n return words.length === 0\n ? \"My Docs\"\n : words\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n};\n\n/**\n * True when any selected source needs an explicit `content.sources` array —\n * everything except `filesystem`, which is what the implicit default already\n * desugars to.\n */\nconst needsExplicitSources = (sources: SourceKind[]): boolean =>\n sources.some((source) => source !== \"filesystem\");\n\n/** The `blume/sources` factory each source kind is written with. */\nconst SOURCE_FACTORIES = {\n contentful: \"contentful\",\n filesystem: \"filesystem\",\n \"github-releases\": \"githubReleases\",\n \"mdx-remote\": \"mdxRemote\",\n notion: \"notion\",\n obsidian: \"obsidian\",\n payload: \"payload\",\n sanity: \"sanity\",\n strapi: \"strapi\",\n} satisfies Record<SourceKind, string>;\n\n/**\n * The descriptor each remote source kind scaffolds — the same placeholder\n * options the emitted snippet shows — so the SDK deps and env vars `init`\n * sets up are read off the adapter rather than kept in a parallel table.\n */\nconst SOURCE_DESCRIPTORS = {\n contentful: contentful({\n contentType: \"doc\",\n prefix: \"contentful\",\n space: \"your-space-id\",\n }),\n \"github-releases\": githubReleases({\n owner: \"your-org\",\n prefix: \"changelog\",\n repo: \"your-repo\",\n }),\n \"mdx-remote\": mdxRemote({\n github: { owner: \"your-org\", path: \"docs\", repo: \"your-repo\" },\n prefix: \"remote\",\n }),\n notion: notion({ database: \"your-database-id\", prefix: \"notion\" }),\n obsidian: obsidian({ prefix: \"notes\", vault: \"vault\" }),\n payload: payload({\n collection: \"docs\",\n prefix: \"payload\",\n url: \"https://cms.example.com\",\n }),\n sanity: sanity({\n dataset: \"production\",\n prefix: \"sanity\",\n projectId: \"your-project-id\",\n query: '*[_type == \"doc\"]',\n }),\n strapi: strapi({\n contentType: \"docs\",\n prefix: \"strapi\",\n url: \"https://cms.example.com\",\n }),\n} satisfies Record<Exclude<SourceKind, \"filesystem\">, AnySourceAdapter>;\n\n/**\n * Config snippets for each remote source kind, with placeholder values to\n * replace and comments naming the env var each source authenticates with.\n */\nconst SOURCE_SNIPPETS = {\n contentful: ` // Entries of a Contentful content type. Reads CONTENTFUL_ACCESS_TOKEN\n // from the environment.\n contentful({\n space: \"your-space-id\",\n contentType: \"doc\",\n prefix: \"contentful\",\n }),`,\n \"github-releases\": ` // Changelog entries from GitHub Releases. Private repos read\n // GITHUB_TOKEN from the environment.\n githubReleases({\n owner: \"your-org\",\n repo: \"your-repo\",\n prefix: \"changelog\",\n }),`,\n \"mdx-remote\": ` // MDX fetched from a GitHub repo. Private repos read GITHUB_TOKEN\n // from the environment.\n mdxRemote({\n github: { owner: \"your-org\", repo: \"your-repo\", path: \"docs\" },\n prefix: \"remote\",\n }),`,\n notion: ` // Pages from a Notion database. Reads NOTION_TOKEN from the environment.\n notion({\n database: \"your-database-id\",\n prefix: \"notion\",\n }),`,\n obsidian: ` // An Obsidian vault, read in place. No export step, and no\n // generated notes in your repo. Point \\`vault\\` at your vault directory,\n // relative to this config file.\n obsidian({\n vault: \"vault\",\n prefix: \"notes\",\n }),`,\n payload: ` // Documents from a Payload collection. Reads PAYLOAD_API_KEY from\n // the environment.\n payload({\n url: \"https://cms.example.com\",\n collection: \"docs\",\n prefix: \"payload\",\n }),`,\n sanity: ` // Documents from a Sanity dataset. Private datasets read SANITY_TOKEN\n // from the environment.\n sanity({\n projectId: \"your-project-id\",\n dataset: \"production\",\n query: \\`*[_type == \"doc\"]\\`,\n prefix: \"sanity\",\n }),`,\n strapi: ` // Entries of a Strapi content type. Reads STRAPI_API_TOKEN from\n // the environment.\n strapi({\n url: \"https://cms.example.com\",\n contentType: \"docs\",\n prefix: \"strapi\",\n }),`,\n} satisfies Record<Exclude<SourceKind, \"filesystem\">, string>;\n\n/** The selected kinds in canonical order (the multiselect returns pick order). */\nconst orderedSources = (sources: SourceKind[]): SourceKind[] =>\n SOURCE_KINDS.filter((kind) => sources.includes(kind));\n\n/** The `blume/sources` import line for the selected kinds, in canonical order. */\nconst sourcesImportFor = (sources: SourceKind[]): string =>\n `import { ${orderedSources(sources)\n .map((kind) => SOURCE_FACTORIES[kind])\n .join(\", \")} } from \"blume/sources\";\\n`;\n\n/** The chosen source kinds; no selection means the implicit local source. */\nconst selectedSources = (answers: InitAnswers): SourceKind[] =>\n answers.sources.length === 0 ? [\"filesystem\"] : answers.sources;\n\n/**\n * The `content` block for the generated config, or an empty string when the\n * defaults (filesystem source, `docs` root) apply — keeping the default\n * scaffold byte-identical to a config with no `content` key at all.\n */\nconst contentBlockFor = (answers: InitAnswers): string => {\n const sources = selectedSources(answers);\n if (!needsExplicitSources(sources)) {\n return answers.contentDir === \"docs\"\n ? \"\"\n : `\n content: {\n root: ${JSON.stringify(answers.contentDir)},\n },`;\n }\n // Explicit sources replace the implicit filesystem desugar, so the local\n // content dir must be listed alongside the other sources to stay included.\n const entries = orderedSources(sources).map((kind) =>\n kind === \"filesystem\"\n ? ` filesystem({ root: ${JSON.stringify(answers.contentDir)} }),`\n : SOURCE_SNIPPETS[kind]\n );\n return `\n content: {\n sources: [\n${entries.join(\"\\n\")}\n ],\n },`;\n};\n\n/** The full `blume.config.ts` text for the chosen answers. */\nexport const buildConfig = (answers: InitAnswers): string => {\n const starter = STARTERS[answers.template];\n const sources = selectedSources(answers);\n // Only an explicit `sources` array calls factories; the shorthand `root`\n // (or no content block at all) needs no import.\n const sourcesImport = needsExplicitSources(sources)\n ? sourcesImportFor(sources)\n : \"\";\n const imports = [\n 'import { defineConfig } from \"blume\";',\n ...starter.configImports,\n ].join(\"\\n\");\n return `${imports}\n${sourcesImport}\nexport default defineConfig({\n title: ${JSON.stringify(answers.title)},\n description: \"Documentation powered by Blume.\",${starter.configExtra}${contentBlockFor(answers)}\n});\n`;\n};\n\n/** The version range `init` pins for each SDK an adapter declares. */\nconst SDK_VERSIONS = new Map([\n [\"@notionhq/client\", \"^5.26.0\"],\n [\"@sanity/client\", \"^8.6.1\"],\n]);\n\n/** The scaffolded descriptors for the selected remote source kinds. */\nconst descriptorsFor = (sources: SourceKind[]): AnySourceAdapter[] =>\n orderedSources(sources).flatMap((kind) =>\n kind === \"filesystem\" ? [] : [SOURCE_DESCRIPTORS[kind]]\n );\n\n/** SDK dependencies the selected sources declare, read off their descriptors. */\nconst extraDepsFor = (sources: SourceKind[]) => {\n const deps: Record<string, string> = {};\n for (const descriptor of descriptorsFor(sources)) {\n for (const dep of descriptor.runtimeDeps) {\n deps[dep] = SDK_VERSIONS.get(dep) ?? \"latest\";\n }\n }\n return deps;\n};\n\n/**\n * `pnpm-workspace.yaml` for a new pnpm project. pnpm runs a dependency's\n * build script only once it's approved, and fails the install over any it\n * wasn't told about. esbuild's postinstall checks its platform binary;\n * `@scarf/scarf` is a telemetry postinstall a transitive dependency pulls in,\n * and Blume doesn't need it to run.\n */\nconst PNPM_WORKSPACE = `allowBuilds:\n esbuild: true\n \"@scarf/scarf\": false\n`;\n\n/**\n * `.yarnrc.yml` for a new Yarn Berry project. Berry installs with Plug'n'Play\n * by default, which writes no `node_modules`; Blume's generated Astro project\n * resolves its packages from one. Yarn Classic never reads this file.\n */\nconst YARNRC = `# Blume's generated Astro project resolves packages from node_modules, which\n# Yarn's default Plug'n'Play install doesn't create.\nnodeLinker: node-modules\n`;\n\n/**\n * The nearest directory at or above `root` where `found` holds, searching up\n * to the repository root — or to the filesystem root outside a repository,\n * where a workspace can still enclose the project.\n */\nconst nearestAncestor = (\n root: string,\n found: (dir: string) => boolean\n): string | null => {\n const stop = repositoryRootOf(root);\n let dir = root;\n while (!found(dir)) {\n const parent = dirname(dir);\n if (dir === stop || parent === dir) {\n return null;\n }\n dir = parent;\n }\n return dir;\n};\n\n/** Read a file, or `\"\"` when it can't be read. */\nconst readText = (path: string): string => {\n try {\n return readFileSync(path, \"utf-8\");\n } catch {\n return \"\";\n }\n};\n\n/** The pnpm workspace enclosing `root`: the directory of its `pnpm-workspace.yaml`. */\nconst pnpmWorkspaceRoot = (root: string): string | null =>\n nearestAncestor(root, (dir) => existsSync(join(dir, \"pnpm-workspace.yaml\")));\n\n/** The slice of `pnpm-workspace.yaml` the membership check reads. */\nconst pnpmWorkspaceSchema = z.looseObject({\n packages: z.array(z.string()).default([]),\n});\n\n// A glob's leading `./` and trailing `/`, which pnpm ignores.\nconst GLOB_EDGES = /^\\.\\/|\\/+$/gu;\n\nconst globPattern = (glob: string): string => glob.replaceAll(GLOB_EDGES, \"\");\n\n/** Whether any of `globs` matches the workspace-relative path `at`. */\nconst matchesAny = (globs: string[], at: string): boolean =>\n globs.length > 0 && picomatch(globs)(at);\n\n/**\n * Whether the pnpm workspace at `workspace` lists `root` as one of its\n * packages: the workspace root itself, or a folder its `packages` globs match\n * and no `!` glob excludes. pnpm installs only those, so an install run in any\n * other folder beneath it succeeds without installing that folder's\n * dependencies. A workspace file that doesn't parse counts as listing it, so\n * `init` never claims what it can't tell.\n */\nconst listsPackage = (workspace: string, root: string): boolean => {\n const at = relative(workspace, root);\n if (at === \"\") {\n return true;\n }\n let parsed: ReturnType<typeof pnpmWorkspaceSchema.safeParse>;\n try {\n // `loadAll`, not `load`: js-yaml 5 throws on a file with no document (empty,\n // or comments only), which pnpm reads as a workspace of the root alone.\n const [document] = loadAll(\n readText(join(workspace, \"pnpm-workspace.yaml\"))\n );\n parsed = pnpmWorkspaceSchema.safeParse(document ?? {});\n } catch {\n return true;\n }\n if (!parsed.success) {\n return true;\n }\n const globs = parsed.data.packages;\n const included = globs\n .filter((glob) => !glob.startsWith(\"!\"))\n .map(globPattern);\n const excluded = globs\n .filter((glob) => glob.startsWith(\"!\"))\n .map((glob) => globPattern(glob.slice(1)));\n return matchesAny(included, at) && !matchesAny(excluded, at);\n};\n\n/**\n * Whether `init` installs with pnpm into a folder that sits inside a pnpm\n * workspace without being one of its packages. pnpm would install that\n * workspace's own packages from there and exit 0, leaving `blume` uninstalled.\n */\nexport const outsidePnpmWorkspace = (\n root: string,\n answers: InitAnswers\n): boolean => {\n if (answers.packageManager !== \"pnpm\") {\n return false;\n }\n const workspace = pnpmWorkspaceRoot(root);\n return workspace !== null && !listsPackage(workspace, root);\n};\n\n/**\n * The Yarn project enclosing `root`: a directory holding a lockfile, a\n * `.yarnrc.yml`, or a `package.json` that declares workspaces.\n */\nconst yarnProjectRoot = (root: string): string | null =>\n nearestAncestor(\n root,\n (dir) =>\n existsSync(join(dir, \"yarn.lock\")) ||\n existsSync(join(dir, \".yarnrc.yml\")) ||\n /\"workspaces\"\\s*:/u.test(readText(join(dir, \"package.json\")))\n );\n\n/**\n * The major version of the Yarn that ran `init`, read off the npm user agent\n * (`yarn/4.5.1 npm/? node/v22…`), or undefined when something else ran it.\n */\nexport const yarnMajor = (userAgent?: string): number | undefined => {\n const match = /^yarn\\/(?<major>\\d+)\\./u.exec(userAgent ?? \"\");\n return match?.groups?.major === undefined\n ? undefined\n : Number(match.groups.major);\n};\n\n/** Environment `buildPlan` and `workspaceNote` read, injectable for tests. */\nexport interface PlanEnvironment {\n /** `npm_config_user_agent` of the process that ran `init`. */\n userAgent?: string;\n}\n\n/**\n * The package-manager config file a project `init` creates from scratch\n * needs: pnpm's build approvals, or Yarn Berry's `node_modules` linker. An\n * existing package.json, or a workspace the project joins, already owns that\n * decision (see {@link workspaceNote}); Yarn Classic ignores `.yarnrc.yml`, so\n * a user agent naming Yarn 1 skips it.\n */\nconst packageManagerConfigFor = (\n root: string,\n answers: InitAnswers,\n env: PlanEnvironment\n): ScaffoldFile[] => {\n if (existsSync(join(root, \"package.json\"))) {\n return [];\n }\n if (answers.packageManager === \"pnpm\" && pnpmWorkspaceRoot(root) === null) {\n return [\n { content: PNPM_WORKSPACE, path: join(root, \"pnpm-workspace.yaml\") },\n ];\n }\n if (\n answers.packageManager === \"yarn\" &&\n yarnMajor(env.userAgent) !== 1 &&\n yarnProjectRoot(root) === null\n ) {\n return [{ content: YARNRC, path: join(root, \".yarnrc.yml\") }];\n }\n return [];\n};\n\nconst ESBUILD_APPROVAL = \" allowBuilds:\\n esbuild: true\";\n\n/**\n * What the project still needs from a workspace it sits in, when `init` left\n * that workspace's config alone: a place in a pnpm workspace's `packages`\n * (pnpm skips a folder it doesn't list), pnpm's approval for esbuild's build\n * script (pnpm 11 and later fail the install without it), or Yarn Berry's\n * `node_modules` linker. Undefined when the workspace already has it, or the\n * project doesn't sit in one.\n */\nexport const workspaceNote = (\n root: string,\n answers: InitAnswers,\n env: PlanEnvironment = {}\n): string | undefined => {\n if (answers.packageManager === \"pnpm\") {\n const workspace = pnpmWorkspaceRoot(root);\n if (!workspace) {\n return;\n }\n const file = join(workspace, \"pnpm-workspace.yaml\");\n const approved = readText(file).includes(\"esbuild\");\n if (!listsPackage(workspace, root)) {\n const entry = ` packages:\\n - ${relative(workspace, root)}`;\n return approved\n ? `This folder sits inside the pnpm workspace at ${file}, which doesn't list it under packages, so pnpm won't install it. Add it there before installing:\\n\\n${entry}`\n : `This folder sits inside the pnpm workspace at ${file}, which doesn't list it under packages, so pnpm won't install it. Add it there before installing, and approve esbuild's build script, or pnpm 11 and later stop the install:\\n\\n${entry}\\n${ESBUILD_APPROVAL}`;\n }\n if (approved) {\n return;\n }\n return `This project joins the pnpm workspace at ${file}. Approve esbuild's build script there before installing, or pnpm 11 and later stop the install:\\n\\n${ESBUILD_APPROVAL}`;\n }\n if (answers.packageManager !== \"yarn\" || yarnMajor(env.userAgent) === 1) {\n return;\n }\n const project = yarnProjectRoot(root);\n const rc = project && join(project, \".yarnrc.yml\");\n if (!rc || /^nodeLinker:\\s*[\"']?(?:node-modules|pnpm)/mu.test(readText(rc))) {\n return;\n }\n return `This project joins the Yarn project at ${project}. With Yarn 2 or later, set its linker in ${rc} so installs write the node_modules Blume's generated Astro project resolves packages from:\\n\\n nodeLinker: node-modules`;\n};\n\n/** Every file `init` should write for the given answers, package.json first. */\nexport const buildPlan = (\n root: string,\n answers: InitAnswers,\n env: PlanEnvironment = {}\n): ScaffoldFile[] => {\n const starter: Starter = STARTERS[answers.template];\n const files: ScaffoldFile[] = [\n {\n content: blumePackageJson(\n toPackageName(basename(root)),\n extraDepsFor(answers.sources)\n ),\n path: join(root, \"package.json\"),\n },\n ...packageManagerConfigFor(root, answers, env),\n { content: buildConfig(answers), path: join(root, \"blume.config.ts\") },\n ...(starter.projectFiles ?? []).map((file) => ({\n ...file,\n path: join(root, file.path),\n })),\n ];\n // Seed pages only make sense when a local filesystem source will read them.\n if (answers.sources.length === 0 || answers.sources.includes(\"filesystem\")) {\n files.push(\n ...starter\n .files(answers.contentDir)\n .map((file) => ({ ...file, path: join(root, file.path) }))\n );\n }\n // The obsidian snippet points at `vault/`; seed the directory with a first\n // note so the scaffolded project passes the source's `validate()` and boots\n // before the user has opened Obsidian at all.\n if (answers.sources.includes(\"obsidian\")) {\n files.push({\n content:\n \"# Welcome\\n\\nThis folder is read by Blume's `obsidian` source. Open it as a vault in Obsidian and write notes — `[[Wikilinks]]` become site links.\\n\",\n path: join(root, \"vault\", \"Welcome.md\"),\n });\n }\n return files;\n};\n\nconst writeFileSafe = async (\n file: ScaffoldFile,\n log: ScaffoldLog\n): Promise<boolean> => {\n if (existsSync(file.path)) {\n log.info(`Skipped existing ${file.path}`);\n return false;\n }\n await mkdir(dirname(file.path), { recursive: true });\n await writeFile(file.path, file.content, \"utf-8\");\n log.success(`Created ${file.path}`);\n return true;\n};\n\n/**\n * Write the plan's files, skipping any that already exist. Reports whether a\n * `package.json` was newly created (it decides whether `init` installs).\n */\nexport const applyPlan = async (\n files: ScaffoldFile[],\n log: ScaffoldLog\n): Promise<{ createdPackage: boolean }> => {\n const created = await Promise.all(\n files.map((file) => writeFileSafe(file, log))\n );\n const createdPackage = files.some(\n (file, index) => created[index] && basename(file.path) === \"package.json\"\n );\n return { createdPackage };\n};\n\n/** Env vars the selected sources declare, deduplicated in a stable order. */\nconst envVarsFor = (sources: SourceKind[]): string[] => [\n ...new Set(\n descriptorsFor(sources).flatMap((descriptor) => descriptor.requiredSecrets)\n ),\n];\n\n/** What an existing package.json — one `init` left alone — already wires up. */\nexport interface ExistingPackage {\n /**\n * Whether `blume` is installed where the project resolves it: its own\n * `node_modules`, or an ancestor's in a hoisted workspace. Listing it isn't\n * enough — a rerun of `init --no-install` lists it without installing it.\n */\n blumeInstalled: boolean;\n /** Every package it lists in `dependencies` or `devDependencies`. */\n dependencies: string[];\n /** Whether its `dev` script runs Blume. */\n devRunsBlume: boolean;\n}\n\n/** Whether a `node_modules/blume` sits in `root` or any directory above it. */\nconst blumeResolves = (root: string): boolean => {\n let dir = root;\n while (!existsSync(join(dir, \"node_modules\", \"blume\", \"package.json\"))) {\n const parent = dirname(dir);\n if (parent === dir) {\n return false;\n }\n dir = parent;\n }\n return true;\n};\n\n/**\n * Read the package.json `init` didn't write. An unreadable or malformed one\n * reads as wiring nothing up, so the next steps list everything to add.\n */\nexport const readExistingPackage = async (\n root: string\n): Promise<ExistingPackage> => {\n try {\n // SAFETY: only the two dependency maps and the `dev` script are read, all\n // optional; `String()` absorbs a script that isn't a string.\n const pkg = JSON.parse(\n await readFile(join(root, \"package.json\"), \"utf-8\")\n ) as {\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n scripts?: Record<string, string>;\n };\n return {\n blumeInstalled: blumeResolves(root),\n dependencies: Object.keys({\n ...pkg.dependencies,\n ...pkg.devDependencies,\n }),\n devRunsBlume: String(pkg.scripts?.dev ?? \"\").includes(\"blume\"),\n };\n } catch {\n return {\n blumeInstalled: blumeResolves(root),\n dependencies: [],\n devRunsBlume: false,\n };\n }\n};\n\n/**\n * The next-steps message: `cd` hint, the install command when `init` did not\n * run it itself, the dev command, and token setup. With an `existing`\n * package.json — which `init` never edits — it first adds whatever of `blume`\n * and the sources' SDKs isn't listed yet (or installs, when everything is\n * listed but `blume` was never installed), then starts the dev server through\n * the package runner unless its `dev` script already runs Blume. A `note` —\n * what a workspace the project joins still needs — closes the message.\n */\nexport const nextSteps = (\n answers: InitAnswers,\n needsInstall: boolean,\n existing?: ExistingPackage,\n note?: string\n): string => {\n const commands = commandsFor(answers.packageManager);\n const lines: string[] = [];\n if (answers.directory !== \".\") {\n lines.push(cdCommand(answers.directory));\n }\n if (needsInstall) {\n lines.push(commands.install);\n }\n if (existing) {\n const missing = [\n \"blume\",\n ...Object.keys(extraDepsFor(answers.sources)),\n ].filter((dep) => !existing.dependencies.includes(dep));\n if (missing.length > 0) {\n lines.push(`${commands.add} ${missing.join(\" \")}`);\n } else if (!(needsInstall || existing.blumeInstalled)) {\n lines.push(commands.install);\n }\n }\n lines.push(\n existing && !existing.devRunsBlume\n ? `${commands.exec} blume dev`\n : commands.dev\n );\n const envVars = envVarsFor(answers.sources);\n const auth =\n envVars.length > 0\n ? `\\nSet ${envVars.join(\" and \")} in .env.local so your sources can authenticate.\\n`\n : \"\";\n const workspace = note ? `\\n${note}\\n` : \"\";\n return `Next steps:\\n\\n ${lines.join(\"\\n \")}\\n${auth}${workspace}`;\n};\n",
152
153
  "import { getBlumeVersion } from \"./version.ts\";\n\n/**\n * Derive a valid npm package name from a directory name, falling back to\n * `docs` when nothing usable remains.\n */\nexport const toPackageName = (raw: string): string =>\n raw\n .toLowerCase()\n .replaceAll(/[^a-z0-9._-]+/gu, \"-\")\n .replaceAll(/^[-_.]+|[-_.]+$/gu, \"\") || \"docs\";\n\n/**\n * A minimal, runnable `package.json` body for a Blume project: the `blume`\n * dependency pinned to the installed version plus `dev`/`build`/`doctor`\n * scripts, so `npm install && npm run dev` works immediately. Shared by\n * `blume init` and the migrators, which scaffold one when a project has none.\n * `extraDeps` adds source SDKs (e.g. `@notionhq/client`) beside `blume`.\n */\nexport const blumePackageJson = (\n name: string,\n extraDeps: Record<string, string> = {}\n): string => {\n const dependencies = Object.entries({\n blume: `^${getBlumeVersion()}`,\n ...extraDeps,\n })\n .toSorted(([a], [b]) => (a < b ? -1 : 1))\n .map(\n ([dep, range]) => ` ${JSON.stringify(dep)}: ${JSON.stringify(range)}`\n )\n .join(\",\\n\");\n return `{\n \"name\": ${JSON.stringify(name)},\n \"private\": true,\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \"blume dev\",\n \"build\": \"blume build\",\n \"doctor\": \"blume doctor\"\n },\n \"dependencies\": {\n${dependencies}\n }\n}\n`;\n};\n",
153
154
  "/**\n * The OpenAPI document the `api` starter writes beside `blume.config.ts`, so a\n * new project's first build reads a local file instead of depending on a\n * third-party server. Small, but it exercises what a real reference renders:\n * path and query parameters, request bodies, shared schemas, error responses,\n * and bearer auth. Each operation's description is sized so its page's meta\n * description, with the endpoint sentence Blume appends, fits the range\n * `blume audit` checks.\n */\n\nconst petId = {\n description: \"The pet's ID.\",\n in: \"path\",\n name: \"petId\",\n required: true,\n schema: { type: \"string\" },\n};\n\nconst errorResponse = (description: string) => ({\n content: {\n \"application/json\": { schema: { $ref: \"#/components/schemas/Error\" } },\n },\n description,\n});\n\nconst petResponse = (description: string) => ({\n content: {\n \"application/json\": { schema: { $ref: \"#/components/schemas/Pet\" } },\n },\n description,\n});\n\n// Built from entries rather than a literal so the written file keeps the\n// conventional section order (`openapi`, `info`, …) instead of the sorted one.\nconst STARTER_SPEC = Object.fromEntries([\n [\"openapi\", \"3.1.0\"],\n [\n \"info\",\n {\n description:\n \"A small example API for a pet store: list, create, read, update, and delete pets. Replace openapi.json with your own spec to document your API.\",\n title: \"Pet Store API\",\n version: \"1.0.0\",\n },\n ],\n [\"servers\", [{ url: \"https://api.example.com/v1\" }]],\n [\"security\", [{ bearerAuth: [] }]],\n [\n \"tags\",\n [\n {\n description:\n \"Every pet in the store, with its name, species, and status.\",\n name: \"Pets\",\n },\n ],\n ],\n [\n \"paths\",\n {\n \"/pets\": {\n get: {\n description:\n \"Returns the pets in the store, newest first, filtered by status and paged with a cursor.\",\n operationId: \"listPets\",\n parameters: [\n {\n description: \"Only return pets with this status.\",\n in: \"query\",\n name: \"status\",\n schema: { $ref: \"#/components/schemas/Status\" },\n },\n {\n description: \"The most pets to return.\",\n in: \"query\",\n name: \"limit\",\n schema: {\n default: 20,\n maximum: 100,\n minimum: 1,\n type: \"integer\",\n },\n },\n {\n description: \"The `nextCursor` from the previous page.\",\n in: \"query\",\n name: \"cursor\",\n schema: { type: \"string\" },\n },\n ],\n responses: {\n \"200\": {\n content: {\n \"application/json\": {\n schema: { $ref: \"#/components/schemas/PetList\" },\n },\n },\n description: \"A page of pets.\",\n },\n },\n summary: \"List pets\",\n tags: [\"Pets\"],\n },\n post: {\n description:\n \"Adds a pet to the store and returns it with its new ID and an available status.\",\n operationId: \"createPet\",\n requestBody: {\n content: {\n \"application/json\": {\n schema: { $ref: \"#/components/schemas/NewPet\" },\n },\n },\n required: true,\n },\n responses: {\n \"201\": petResponse(\"The new pet.\"),\n \"422\": errorResponse(\"The pet's fields are invalid.\"),\n },\n summary: \"Create a pet\",\n tags: [\"Pets\"],\n },\n },\n \"/pets/{petId}\": {\n delete: {\n description:\n \"Removes a pet from the store for good, or returns a 404 error when no pet has that ID.\",\n operationId: \"deletePet\",\n parameters: [petId],\n responses: {\n \"204\": { description: \"The pet was deleted.\" },\n \"404\": errorResponse(\"No pet has that ID.\"),\n },\n summary: \"Delete a pet\",\n tags: [\"Pets\"],\n },\n get: {\n description:\n \"Returns a single pet by its ID, or a 404 error when no pet has that ID.\",\n operationId: \"getPet\",\n parameters: [petId],\n responses: {\n \"200\": petResponse(\"The pet.\"),\n \"404\": errorResponse(\"No pet has that ID.\"),\n },\n summary: \"Get a pet\",\n tags: [\"Pets\"],\n },\n patch: {\n description:\n \"Changes the fields you send on an existing pet and leaves the rest as they were.\",\n operationId: \"updatePet\",\n parameters: [petId],\n requestBody: {\n content: {\n \"application/json\": {\n schema: { $ref: \"#/components/schemas/PetUpdate\" },\n },\n },\n required: true,\n },\n responses: {\n \"200\": petResponse(\"The updated pet.\"),\n \"404\": errorResponse(\"No pet has that ID.\"),\n },\n summary: \"Update a pet\",\n tags: [\"Pets\"],\n },\n },\n },\n ],\n [\n \"components\",\n {\n schemas: {\n Error: {\n properties: {\n code: { example: \"not_found\", type: \"string\" },\n message: { example: \"No pet has that ID.\", type: \"string\" },\n },\n required: [\"code\", \"message\"],\n type: \"object\",\n },\n NewPet: {\n properties: {\n name: { example: \"Mochi\", type: \"string\" },\n species: { $ref: \"#/components/schemas/Species\" },\n },\n required: [\"name\", \"species\"],\n type: \"object\",\n },\n Pet: {\n properties: {\n createdAt: { format: \"date-time\", type: \"string\" },\n id: { example: \"pet_01h2x\", type: \"string\" },\n name: { example: \"Mochi\", type: \"string\" },\n species: { $ref: \"#/components/schemas/Species\" },\n status: { $ref: \"#/components/schemas/Status\" },\n },\n required: [\"id\", \"name\", \"species\", \"status\", \"createdAt\"],\n type: \"object\",\n },\n PetList: {\n properties: {\n data: {\n items: { $ref: \"#/components/schemas/Pet\" },\n type: \"array\",\n },\n nextCursor: {\n description: \"Pass as `cursor` to fetch the next page.\",\n type: [\"string\", \"null\"],\n },\n },\n required: [\"data\", \"nextCursor\"],\n type: \"object\",\n },\n PetUpdate: {\n properties: {\n name: { type: \"string\" },\n status: { $ref: \"#/components/schemas/Status\" },\n },\n type: \"object\",\n },\n Species: { enum: [\"cat\", \"dog\", \"bird\", \"rabbit\"], type: \"string\" },\n Status: { enum: [\"available\", \"pending\", \"adopted\"], type: \"string\" },\n },\n securitySchemes: {\n bearerAuth: { scheme: \"bearer\", type: \"http\" },\n },\n },\n ],\n]);\n\n/** The starter spec as the `openapi.json` text `init` writes. */\nexport const STARTER_OPENAPI_JSON = `${JSON.stringify(STARTER_SPEC, null, 2)}\\n`;\n",
154
- "import { existsSync } from \"node:fs\";\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\n\nimport { basename, dirname, join, relative, resolve } from \"pathe\";\n\nimport { pageJsonPath } from \"../../ai/api/paths.ts\";\nimport { buildHomeLinkHeader } from \"../../ai/link-headers.ts\";\nimport {\n agentMarkdown,\n buildRawMarkdown,\n markdownRoutePaths,\n markdownTokenCount,\n} from \"../../ai/markdown.ts\";\nimport { normalizeBasePath } from \"../../core/base-path.ts\";\nimport type { BlumeProject } from \"../../core/project-graph.ts\";\nimport type { ProjectContext } from \"../../core/types.ts\";\nimport { withRateLimitBinding } from \"../../ratelimit/wrangler.ts\";\nimport { CLOUDFLARE_ADAPTER_PACKAGE } from \"../adapters/cloudflare.ts\";\nimport {\n injectWorkerNegotiation,\n NEGOTIATION_WORKER_FILE,\n} from \"../cloudflare-negotiation.ts\";\nimport { platformRedirects } from \"../redirects.ts\";\nimport { REDIRECTS_FILE } from \"./netlify.ts\";\nimport { clientDir, distDir, toSiteUrl } from \"./paths.ts\";\nimport type { BuildLog, DeployPlatform } from \"./types.ts\";\n\nconst WRANGLER_CONFIG_FILES = [\n \"wrangler.jsonc\",\n \"wrangler.json\",\n \"wrangler.toml\",\n];\n\n/**\n * The adapter's constructor options. Every Blume HTML route prerenders (the\n * only server routes are API endpoints), so images are optimized at build\n * time with sharp: the adapter's default (`cloudflare-binding`) would instead\n * declare a runtime `IMAGES` binding in the generated wrangler config that\n * nothing uses. A wrangler config at the project root is pointed at\n * explicitly, because the adapter would otherwise look beside the Astro\n * root — the hidden runtime — and the dev workerd runtime would miss\n * `nodejs_compat`.\n */\nconst adapterOptions = (context: ProjectContext) => {\n const options = { imageService: \"compile\", prerenderEnvironment: \"node\" };\n const wranglerPath = WRANGLER_CONFIG_FILES.map((file) =>\n join(context.root, file)\n ).find((file) => existsSync(file));\n if (!wranglerPath) {\n return options;\n }\n let configPath = relative(context.outDir, wranglerPath);\n // The wrangler config always lives at the project root, above the `.blume`\n // runtime, so `relative` yields a `../…` path; normalize the theoretical\n // sibling case to an explicit `./` so it reads as relative.\n if (!configPath.startsWith(\".\") && !configPath.startsWith(\"/\")) {\n configPath = `./${configPath}`;\n }\n return { ...options, configPath };\n};\n\nconst warnNegotiationSkipped = (log: BuildLog): void =>\n log.warn(\n \"Could not wire Accept: text/markdown negotiation into dist/server/wrangler.json — raw Markdown stays available at the .md URLs.\"\n );\n\n/**\n * Wire `Accept: text/markdown` negotiation into a server build. The ASSETS\n * binding serves the prerendered content pages before the Worker runs — and\n * even a request that reaches the Worker is answered by the adapter's handler\n * from that binding, ahead of the only place middleware runs — so the\n * negotiation lives in a generated wrapper Worker, routed to by\n * `assets.run_worker_first` (see `deploy/cloudflare-negotiation.ts`). Both\n * pieces are spliced into the adapter's emitted `dist/server` bundle.\n */\nexport const emitCloudflareNegotiation = async (\n project: BlumeProject,\n log: BuildLog\n): Promise<void> => {\n const { config, context } = project;\n const serverDir = join(distDir(context), \"server\");\n const wranglerPath = join(serverDir, \"wrangler.json\");\n if (!existsSync(wranglerPath)) {\n warnNegotiationSkipped(log);\n return;\n }\n const routePaths = markdownRoutePaths(project);\n // The homepage mirror is served from the static layer, so its\n // `x-markdown-tokens` estimate rides the wrapper Worker, mirroring the\n // Vercel routing config.\n const rawMarkdown = await buildRawMarkdown(project);\n const home = rawMarkdown[\"/\"];\n // The 404 twins the wrapper may substitute for the HTML shell; only wired\n // when the build actually emitted them (a project that owns `/404` gets\n // neither), like the Vercel routing config. The adapter writes the\n // prerendered files under the deployment base (`dist/client/<base>/`),\n // where the wrapper fetches them from.\n const staticDir = join(\n clientDir(context),\n normalizeBasePath(config.deployment.options.base)\n );\n const injected = injectWorkerNegotiation(\n await readFile(wranglerPath, \"utf-8\"),\n {\n base: config.deployment.options.base,\n // The manifest routes guard the wrapper's redirect table; `routePaths`\n // also carries the synthesized homepage mirror, which must not block a\n // configured root redirect.\n contentRoutePaths: project.manifest.routes.map((route) => route.path),\n homeLinkHeader: buildHomeLinkHeader(config, routePaths),\n homeTokens: home ? markdownTokenCount(agentMarkdown(home)) : undefined,\n notFound: {\n json: existsSync(join(staticDir, \"404.json\")),\n markdown: existsSync(join(staticDir, \"404.md\")),\n },\n // Exactly the per-page JSON documents the API emits (see `pageParams`):\n // the non-hidden routes with agent Markdown, when the API is on.\n pageJsonPaths: config.agents.api\n ? project.manifest.routes\n .filter(\n (route) => !route.hidden && rawMarkdown[route.path] !== undefined\n )\n .map((route) => pageJsonPath(route.path))\n : [],\n // The wrapper Worker matches full served URLs, so the redirects are\n // based the same way the platform files are — it answers any the\n // worker-first rules claim, where `_redirects` is never consulted and\n // Astro would default their status.\n redirects: platformRedirects(project),\n routePaths,\n }\n );\n if (injected === null) {\n warnNegotiationSkipped(log);\n return;\n }\n await writeFile(\n join(serverDir, NEGOTIATION_WORKER_FILE),\n injected.worker,\n \"utf-8\"\n );\n await writeFile(wranglerPath, injected.wrangler, \"utf-8\");\n log.success(\n \"Wired Accept: text/markdown negotiation into the Cloudflare Worker\"\n );\n};\n\n/**\n * Where Cloudflare's deploy tooling looks for the redirect to the built\n * config, relative to the directory `wrangler deploy` runs in (or any parent).\n */\nconst DEPLOY_CONFIG = join(\".wrangler\", \"deploy\", \"config.json\");\n\n/** The redirect file the Cloudflare Vite plugin writes. */\ninterface DeployConfig {\n auxiliaryWorkers?: { configPath: string }[];\n configPath: string;\n prerenderWorkerConfigPath?: string;\n}\n\n/**\n * Point `wrangler deploy` run from the project root at the built Worker.\n * The adapter's Vite plugin writes its redirect beside the Astro root — the\n * hidden `.blume` runtime, where nobody runs wrangler — and wrangler only\n * looks in the working directory and its parents, so from the project root it\n * finds no config and fails with \"Could not detect a directory containing\n * static files\". This writes the same redirect at the project root, its paths\n * rebased there. A user wrangler config at the project root stays compatible:\n * wrangler accepts a redirect in the same directory's `.wrangler/deploy/`.\n */\nexport const emitCloudflareDeployConfig = async (\n context: ProjectContext\n): Promise<void> => {\n const builtConfig = join(distDir(context), \"server\", \"wrangler.json\");\n if (!existsSync(builtConfig)) {\n return;\n }\n const source = join(context.outDir, DEPLOY_CONFIG);\n const target = join(context.root, DEPLOY_CONFIG);\n const rebase = (path: string): string =>\n relative(dirname(target), resolve(dirname(source), path));\n const deployConfig: DeployConfig = existsSync(source)\n ? JSON.parse(await readFile(source, \"utf-8\"))\n : { configPath: relative(dirname(source), builtConfig) };\n const rebased: DeployConfig = {\n auxiliaryWorkers: (deployConfig.auxiliaryWorkers ?? []).map((worker) => ({\n configPath: rebase(worker.configPath),\n })),\n configPath: rebase(deployConfig.configPath),\n };\n if (deployConfig.prerenderWorkerConfigPath) {\n rebased.prerenderWorkerConfigPath = rebase(\n deployConfig.prerenderWorkerConfigPath\n );\n }\n await mkdir(dirname(target), { recursive: true });\n await writeFile(target, `${JSON.stringify(rebased)}\\n`, \"utf-8\");\n};\n\n/**\n * The name the Worker gets when the build names it: the generated runtime's\n * package name, which every Blume site shares. Left as is, two sites deployed\n * to one account would overwrite each other's Worker.\n */\nconst RUNTIME_WORKER_NAME = \"blume-runtime\";\n\n/**\n * A Worker name from free text: lowercase letters, digits, and dashes, no\n * leading or trailing dash, at most 63 characters (a Worker name is also a\n * `workers.dev` hostname label).\n */\nconst toWorkerName = (text: string): string =>\n text\n .toLowerCase()\n .replaceAll(/[^\\da-z]+/gu, \"-\")\n .slice(0, 63)\n .replaceAll(/^-+|-+$/gu, \"\");\n\n/**\n * The Worker name for a project that doesn't name its own: the project's\n * `package.json` name (a scope folded in, `@acme/docs` → `acme-docs`), else the\n * site's hostname, else the project folder's name.\n */\nconst projectWorkerName = async (\n project: BlumeProject\n): Promise<string | undefined> => {\n const { config, context } = project;\n const packageFile = join(context.root, \"package.json\");\n const manifest: { name?: string } = existsSync(packageFile)\n ? JSON.parse(await readFile(packageFile, \"utf-8\"))\n : {};\n const { site } = config.deployment.options;\n return [\n String(manifest.name ?? \"\"),\n site ? new URL(site).hostname : \"\",\n basename(context.root),\n ]\n .map(toWorkerName)\n .find((name) => name.length > 0);\n};\n\n/**\n * Name the built Worker after the project when it still carries the shared\n * runtime name. A name set in the project's own wrangler config reaches the\n * built config instead, and is left alone.\n */\nexport const nameCloudflareWorker = async (\n project: BlumeProject,\n log: BuildLog\n): Promise<void> => {\n const wranglerPath = join(\n distDir(project.context),\n \"server\",\n \"wrangler.json\"\n );\n if (!existsSync(wranglerPath)) {\n return;\n }\n // Only the two name fields are read; every other key rides through as parsed.\n const wrangler: { name?: string; topLevelName?: string } = JSON.parse(\n await readFile(wranglerPath, \"utf-8\")\n );\n const name = await projectWorkerName(project);\n if (wrangler.name !== RUNTIME_WORKER_NAME || name === undefined) {\n return;\n }\n wrangler.name = name;\n if (wrangler.topLevelName === RUNTIME_WORKER_NAME) {\n wrangler.topLevelName = name;\n }\n await writeFile(wranglerPath, JSON.stringify(wrangler), \"utf-8\");\n log.info(\n `Named the Cloudflare Worker \"${name}\"; set \"name\" in a wrangler.jsonc at the project root to choose another.`\n );\n};\n\n/**\n * Declare the Workers rate limiting binding `rateLimit: cloudflare()` counts\n * with in the built Worker's config, which `wrangler deploy` reads.\n */\nexport const bindCloudflareRateLimit = async (\n project: BlumeProject,\n log: BuildLog\n): Promise<void> => {\n const { rateLimit } = project.config;\n if (rateLimit?.kind !== \"cloudflare\") {\n return;\n }\n const wranglerPath = join(\n distDir(project.context),\n \"server\",\n \"wrangler.json\"\n );\n const bound = existsSync(wranglerPath)\n ? withRateLimitBinding(await readFile(wranglerPath, \"utf-8\"), rateLimit)\n : null;\n if (bound === null) {\n log.warn(\n \"Could not declare the rate limiting binding in dist/server/wrangler.json — the routes count in memory instead.\"\n );\n return;\n }\n await writeFile(wranglerPath, bound, \"utf-8\");\n log.success(\"Declared the Workers rate limiting binding\");\n};\n\n/**\n * Cloudflare. A server build targets Workers only (`@astrojs/cloudflare`\n * dropped Pages in v13): it emits the Worker into `dist/server` and serves\n * `dist/client` through the ASSETS binding, which honors `_headers` from that\n * directory exactly as Pages does — so the file applies to both output modes\n * here. A static build never loads the adapter; its `dist/` deploys to Pages,\n * whose build environment `env` detects, or to Workers static assets (Workers\n * Builds exposes no site URL to detect). Without a configured driver the\n * adapter force-enables KV-backed sessions and declares a `SESSION` binding\n * that `wrangler deploy` then demands a namespace for, even though Blume\n * never reads `Astro.session`; `session: false` opts the project out.\n */\nexport const cloudflarePlatform: DeployPlatform = {\n astro: {\n config: () => ({ session: false }),\n configOptions: [],\n options: adapterOptions,\n package: CLOUDFLARE_ADAPTER_PACKAGE,\n },\n env: {\n detect: (env) => Boolean(env.CF_PAGES),\n site: (env) => toSiteUrl(env.CF_PAGES_URL),\n },\n finalizeBuild: async ({ isolated, log, project }) => {\n // The Worker's name, the wrapper Worker, and the deploy redirect are\n // deploy artifacts; an isolated verify skips them.\n if (!isolated) {\n await nameCloudflareWorker(project, log);\n await emitCloudflareNegotiation(project, log);\n await bindCloudflareRateLimit(project, log);\n await emitCloudflareDeployConfig(project.context);\n }\n return true;\n },\n hiddenRuntime: {\n // The redirected deploy config `wrangler deploy` reads from the project\n // root lands in `.wrangler/`, a build artifact like Vercel's `.vercel/`.\n ignoreDir: \".wrangler/\",\n showProjectRoot: false,\n surfacePath: null,\n },\n kind: \"cloudflare\",\n negotiatesMarkdown: true,\n previewDeploy: null,\n readsHeaderFiles: { server: true, static: true },\n redirectFiles: [REDIRECTS_FILE],\n // The adapter points `build.client` at `dist/client/<base>/` for a server\n // build, and hoists its own `_headers`/`_redirects` back up to `dist/client`.\n serverClientUnderBase: true,\n serverOutputDir: distDir,\n serverStaticDir: (context, base) => join(clientDir(context), base),\n};\n",
155
+ "import { existsSync } from \"node:fs\";\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\n\nimport { basename, dirname, join, relative, resolve } from \"pathe\";\n\nimport { pageJsonPath } from \"../../ai/api/paths.ts\";\nimport { buildHomeLinkHeader } from \"../../ai/link-headers.ts\";\nimport {\n agentMarkdown,\n buildRawMarkdown,\n markdownRoutePaths,\n markdownTokenCount,\n} from \"../../ai/markdown.ts\";\nimport { normalizeBasePath } from \"../../core/base-path.ts\";\nimport type { BlumeProject } from \"../../core/project-graph.ts\";\nimport type { ProjectContext } from \"../../core/types.ts\";\nimport { withRateLimitBinding } from \"../../ratelimit/wrangler.ts\";\nimport { CLOUDFLARE_ADAPTER_PACKAGE } from \"../adapters/cloudflare.ts\";\nimport {\n injectWorkerNegotiation,\n NEGOTIATION_WORKER_FILE,\n} from \"../cloudflare-negotiation.ts\";\nimport { platformRedirects } from \"../redirects.ts\";\nimport { REDIRECTS_FILE } from \"./netlify.ts\";\nimport { clientDir, distDir, toSiteUrl } from \"./paths.ts\";\nimport type { BuildLog, DeployPlatform } from \"./types.ts\";\n\nconst WRANGLER_CONFIG_FILES = [\n \"wrangler.jsonc\",\n \"wrangler.json\",\n \"wrangler.toml\",\n];\n\n/**\n * The adapter's constructor options. Every Blume HTML route prerenders (the\n * only server routes are API endpoints), so images are optimized at build\n * time with sharp: the adapter's default (`cloudflare-binding`) would instead\n * declare a runtime `IMAGES` binding in the generated wrangler config that\n * nothing uses. A wrangler config at the project root is pointed at\n * explicitly, because the adapter would otherwise look beside the Astro\n * root — the hidden runtime — and the dev workerd runtime would miss\n * `nodejs_compat`.\n */\nconst adapterOptions = (context: ProjectContext) => {\n const options = { imageService: \"compile\", prerenderEnvironment: \"node\" };\n const wranglerPath = WRANGLER_CONFIG_FILES.map((file) =>\n join(context.root, file)\n ).find((file) => existsSync(file));\n if (!wranglerPath) {\n return options;\n }\n let configPath = relative(context.outDir, wranglerPath);\n // The wrangler config always lives at the project root, above the `.blume`\n // runtime, so `relative` yields a `../…` path; normalize the theoretical\n // sibling case to an explicit `./` so it reads as relative.\n if (!configPath.startsWith(\".\") && !configPath.startsWith(\"/\")) {\n configPath = `./${configPath}`;\n }\n return { ...options, configPath };\n};\n\nconst warnNegotiationSkipped = (log: BuildLog): void =>\n log.warn(\n \"Could not wire Accept: text/markdown negotiation into dist/server/wrangler.json — raw Markdown stays available at the .md URLs.\"\n );\n\n/**\n * Wire `Accept: text/markdown` negotiation into a server build. The ASSETS\n * binding serves the prerendered content pages before the Worker runs — and\n * even a request that reaches the Worker is answered by the adapter's handler\n * from that binding, ahead of the only place middleware runs — so the\n * negotiation lives in a generated wrapper Worker, routed to by\n * `assets.run_worker_first` (see `deploy/cloudflare-negotiation.ts`). Both\n * pieces are spliced into the adapter's emitted `dist/server` bundle.\n */\nexport const emitCloudflareNegotiation = async (\n project: BlumeProject,\n log: BuildLog\n): Promise<void> => {\n const { config, context } = project;\n const serverDir = join(distDir(context), \"server\");\n const wranglerPath = join(serverDir, \"wrangler.json\");\n if (!existsSync(wranglerPath)) {\n warnNegotiationSkipped(log);\n return;\n }\n const routePaths = markdownRoutePaths(project);\n // The homepage mirror is served from the static layer, so its\n // `x-markdown-tokens` estimate rides the wrapper Worker, mirroring the\n // Vercel routing config.\n const rawMarkdown = await buildRawMarkdown(project);\n const home = rawMarkdown[\"/\"];\n // The 404 twins the wrapper may substitute for the HTML shell; only wired\n // when the build actually emitted them (a project that owns `/404` gets\n // neither), like the Vercel routing config. The adapter writes the\n // prerendered files under the deployment base (`dist/client/<base>/`),\n // where the wrapper fetches them from.\n const staticDir = join(\n clientDir(context),\n normalizeBasePath(config.deployment.options.base)\n );\n const injected = injectWorkerNegotiation(\n await readFile(wranglerPath, \"utf-8\"),\n {\n base: config.deployment.options.base,\n // The manifest routes guard the wrapper's redirect table; `routePaths`\n // also carries the synthesized homepage mirror, which must not block a\n // configured root redirect.\n contentRoutePaths: project.manifest.routes.map((route) => route.path),\n homeLinkHeader: buildHomeLinkHeader(config, routePaths),\n homeTokens: home ? markdownTokenCount(agentMarkdown(home)) : undefined,\n notFound: {\n json: existsSync(join(staticDir, \"404.json\")),\n markdown: existsSync(join(staticDir, \"404.md\")),\n },\n // Exactly the per-page JSON documents the API emits (see `pageParams`):\n // the non-hidden routes with agent Markdown, when the API is on.\n pageJsonPaths: config.agents.api\n ? project.manifest.routes\n .filter(\n (route) => !route.hidden && rawMarkdown[route.path] !== undefined\n )\n .map((route) => pageJsonPath(route.path))\n : [],\n poweredBy: config.poweredBy,\n // The wrapper Worker matches full served URLs, so the redirects are\n // based the same way the platform files are — it answers any the\n // worker-first rules claim, where `_redirects` is never consulted and\n // Astro would default their status.\n redirects: platformRedirects(project),\n routePaths,\n }\n );\n if (injected === null) {\n warnNegotiationSkipped(log);\n return;\n }\n await writeFile(\n join(serverDir, NEGOTIATION_WORKER_FILE),\n injected.worker,\n \"utf-8\"\n );\n await writeFile(wranglerPath, injected.wrangler, \"utf-8\");\n log.success(\n \"Wired Accept: text/markdown negotiation into the Cloudflare Worker\"\n );\n};\n\n/**\n * Where Cloudflare's deploy tooling looks for the redirect to the built\n * config, relative to the directory `wrangler deploy` runs in (or any parent).\n */\nconst DEPLOY_CONFIG = join(\".wrangler\", \"deploy\", \"config.json\");\n\n/** The redirect file the Cloudflare Vite plugin writes. */\ninterface DeployConfig {\n auxiliaryWorkers?: { configPath: string }[];\n configPath: string;\n prerenderWorkerConfigPath?: string;\n}\n\n/**\n * Point `wrangler deploy` run from the project root at the built Worker.\n * The adapter's Vite plugin writes its redirect beside the Astro root — the\n * hidden `.blume` runtime, where nobody runs wrangler — and wrangler only\n * looks in the working directory and its parents, so from the project root it\n * finds no config and fails with \"Could not detect a directory containing\n * static files\". This writes the same redirect at the project root, its paths\n * rebased there. A user wrangler config at the project root stays compatible:\n * wrangler accepts a redirect in the same directory's `.wrangler/deploy/`.\n */\nexport const emitCloudflareDeployConfig = async (\n context: ProjectContext\n): Promise<void> => {\n const builtConfig = join(distDir(context), \"server\", \"wrangler.json\");\n if (!existsSync(builtConfig)) {\n return;\n }\n const source = join(context.outDir, DEPLOY_CONFIG);\n const target = join(context.root, DEPLOY_CONFIG);\n const rebase = (path: string): string =>\n relative(dirname(target), resolve(dirname(source), path));\n const deployConfig: DeployConfig = existsSync(source)\n ? JSON.parse(await readFile(source, \"utf-8\"))\n : { configPath: relative(dirname(source), builtConfig) };\n const rebased: DeployConfig = {\n auxiliaryWorkers: (deployConfig.auxiliaryWorkers ?? []).map((worker) => ({\n configPath: rebase(worker.configPath),\n })),\n configPath: rebase(deployConfig.configPath),\n };\n if (deployConfig.prerenderWorkerConfigPath) {\n rebased.prerenderWorkerConfigPath = rebase(\n deployConfig.prerenderWorkerConfigPath\n );\n }\n await mkdir(dirname(target), { recursive: true });\n await writeFile(target, `${JSON.stringify(rebased)}\\n`, \"utf-8\");\n};\n\n/**\n * The name the Worker gets when the build names it: the generated runtime's\n * package name, which every Blume site shares. Left as is, two sites deployed\n * to one account would overwrite each other's Worker.\n */\nconst RUNTIME_WORKER_NAME = \"blume-runtime\";\n\n/**\n * A Worker name from free text: lowercase letters, digits, and dashes, no\n * leading or trailing dash, at most 63 characters (a Worker name is also a\n * `workers.dev` hostname label).\n */\nconst toWorkerName = (text: string): string =>\n text\n .toLowerCase()\n .replaceAll(/[^\\da-z]+/gu, \"-\")\n .slice(0, 63)\n .replaceAll(/^-+|-+$/gu, \"\");\n\n/**\n * The Worker name for a project that doesn't name its own: the project's\n * `package.json` name (a scope folded in, `@acme/docs` → `acme-docs`), else the\n * site's hostname, else the project folder's name.\n */\nconst projectWorkerName = async (\n project: BlumeProject\n): Promise<string | undefined> => {\n const { config, context } = project;\n const packageFile = join(context.root, \"package.json\");\n const manifest: { name?: string } = existsSync(packageFile)\n ? JSON.parse(await readFile(packageFile, \"utf-8\"))\n : {};\n const { site } = config.deployment.options;\n return [\n String(manifest.name ?? \"\"),\n site ? new URL(site).hostname : \"\",\n basename(context.root),\n ]\n .map(toWorkerName)\n .find((name) => name.length > 0);\n};\n\n/**\n * Name the built Worker after the project when it still carries the shared\n * runtime name. A name set in the project's own wrangler config reaches the\n * built config instead, and is left alone.\n */\nexport const nameCloudflareWorker = async (\n project: BlumeProject,\n log: BuildLog\n): Promise<void> => {\n const wranglerPath = join(\n distDir(project.context),\n \"server\",\n \"wrangler.json\"\n );\n if (!existsSync(wranglerPath)) {\n return;\n }\n // Only the two name fields are read; every other key rides through as parsed.\n const wrangler: { name?: string; topLevelName?: string } = JSON.parse(\n await readFile(wranglerPath, \"utf-8\")\n );\n const name = await projectWorkerName(project);\n if (wrangler.name !== RUNTIME_WORKER_NAME || name === undefined) {\n return;\n }\n wrangler.name = name;\n if (wrangler.topLevelName === RUNTIME_WORKER_NAME) {\n wrangler.topLevelName = name;\n }\n await writeFile(wranglerPath, JSON.stringify(wrangler), \"utf-8\");\n log.info(\n `Named the Cloudflare Worker \"${name}\"; set \"name\" in a wrangler.jsonc at the project root to choose another.`\n );\n};\n\n/**\n * Declare the Workers rate limiting binding `rateLimit: cloudflare()` counts\n * with in the built Worker's config, which `wrangler deploy` reads.\n */\nexport const bindCloudflareRateLimit = async (\n project: BlumeProject,\n log: BuildLog\n): Promise<void> => {\n const { rateLimit } = project.config;\n if (rateLimit?.kind !== \"cloudflare\") {\n return;\n }\n const wranglerPath = join(\n distDir(project.context),\n \"server\",\n \"wrangler.json\"\n );\n const bound = existsSync(wranglerPath)\n ? withRateLimitBinding(await readFile(wranglerPath, \"utf-8\"), rateLimit)\n : null;\n if (bound === null) {\n log.warn(\n \"Could not declare the rate limiting binding in dist/server/wrangler.json — the routes count in memory instead.\"\n );\n return;\n }\n await writeFile(wranglerPath, bound, \"utf-8\");\n log.success(\"Declared the Workers rate limiting binding\");\n};\n\n/**\n * Cloudflare. A server build targets Workers only (`@astrojs/cloudflare`\n * dropped Pages in v13): it emits the Worker into `dist/server` and serves\n * `dist/client` through the ASSETS binding, which honors `_headers` from that\n * directory exactly as Pages does — so the file applies to both output modes\n * here. A static build never loads the adapter; its `dist/` deploys to Pages,\n * whose build environment `env` detects, or to Workers static assets (Workers\n * Builds exposes no site URL to detect). Without a configured driver the\n * adapter force-enables KV-backed sessions and declares a `SESSION` binding\n * that `wrangler deploy` then demands a namespace for, even though Blume\n * never reads `Astro.session`; `session: false` opts the project out.\n */\nexport const cloudflarePlatform: DeployPlatform = {\n astro: {\n config: () => ({ session: false }),\n configOptions: [],\n options: adapterOptions,\n package: CLOUDFLARE_ADAPTER_PACKAGE,\n },\n env: {\n detect: (env) => Boolean(env.CF_PAGES),\n site: (env) => toSiteUrl(env.CF_PAGES_URL),\n },\n finalizeBuild: async ({ isolated, log, project }) => {\n // The Worker's name, the wrapper Worker, and the deploy redirect are\n // deploy artifacts; an isolated verify skips them.\n if (!isolated) {\n await nameCloudflareWorker(project, log);\n await emitCloudflareNegotiation(project, log);\n await bindCloudflareRateLimit(project, log);\n await emitCloudflareDeployConfig(project.context);\n }\n return true;\n },\n hiddenRuntime: {\n // The redirected deploy config `wrangler deploy` reads from the project\n // root lands in `.wrangler/`, a build artifact like Vercel's `.vercel/`.\n ignoreDir: \".wrangler/\",\n showProjectRoot: false,\n surfacePath: null,\n },\n kind: \"cloudflare\",\n negotiatesMarkdown: true,\n previewDeploy: null,\n readsHeaderFiles: { server: true, static: true },\n redirectFiles: [REDIRECTS_FILE],\n // The adapter points `build.client` at `dist/client/<base>/` for a server\n // build, and hoists its own `_headers`/`_redirects` back up to `dist/client`.\n serverClientUnderBase: true,\n serverOutputDir: distDir,\n serverStaticDir: (context, base) => join(clientDir(context), base),\n};\n",
155
156
  "/**\n * Where the JSON docs API and its OpenAPI description are served. Base-less\n * (like every route Blume emits); callers layer `deployment.base` on top.\n * Under `/api/` alongside the assistant endpoint (`/api/ask`) so the namespace a\n * Blume site reserves for live endpoints stays one prefix, and under its own\n * `docs` segment so a search provider's proxy at `/api/search` never collides.\n */\n\nexport const OPENAPI_PATH = \"/openapi.json\";\nexport const API_BASE = \"/api/docs\";\nexport const API_PAGES_PATH = `${API_BASE}/pages.json`;\nexport const API_PAGE_PATH = `${API_BASE}/pages/{route}.json`;\nexport const API_NAVIGATION_PATH = `${API_BASE}/navigation.json`;\nexport const API_SEARCH_PATH = `${API_BASE}/search`;\n\n/** The `pages/{route}.json` path segment for a route (`index` for home). */\nexport const pageParam = (route: string): string =>\n route === \"/\" ? \"index\" : route.slice(1);\n\n/** The base-less served path of a route's per-page JSON document. */\nexport const pageJsonPath = (route: string): string =>\n `${API_BASE}/pages/${pageParam(route)}.json`;\n",
156
157
  "/**\n * Whether a name already reads as an API's name: it contains `API` or `APIs`\n * as a whole word, anywhere. Word-bounded on both sides, so \"OpenAPI\" and\n * \"AsyncAPI\" are product names rather than API names and still take the\n * suffix; unanchored at the end, so \"Petstore API v2\" is left alone too.\n */\nconst NAMES_AN_API = /\\bAPIs?\\b/iu;\n\n/**\n * `name` as the phrase \"the ___\" in generated prose — the spec title or\n * reference label, followed by ` API` unless it already says so. Keeps\n * \"Petstore\" reading as \"Petstore API\" without turning \"Petstore API\" into\n * \"Petstore API API\".\n */\nexport const apiNamePhrase = (name: string): string => {\n const trimmed = name.trim();\n return NAMES_AN_API.test(trimmed) ? trimmed : `${trimmed} API`;\n};\n",
157
158
  "import {\n mountBasePath,\n normalizeBasePath,\n withBasePath,\n} from \"../core/base-path.ts\";\nimport type { ResolvedConfig } from \"../core/schema.ts\";\nimport { absoluteUrl } from \"../core/site-url.ts\";\nimport { resolveReferences } from \"../openapi/references.ts\";\nimport { API_BASE, OPENAPI_PATH } from \"./api/paths.ts\";\n\n/**\n * RFC 9727 API catalog: a linkset (RFC 9264) at `/.well-known/api-catalog`\n * enumerating the APIs a publisher offers, so agents can discover them from\n * the domain alone. Blume already knows the site's APIs — the configured\n * OpenAPI/AsyncAPI references and the hosted MCP server — so the catalog is\n * generated, never hand-written: one entry per API, anchored at its docs\n * route (the RFC's own examples anchor on developer-portal pages), with\n * `service-doc` pointing at the rendered reference and `service-desc` at the\n * spec when it lives at a fetchable URL. The site's own JSON docs API is an\n * entry too, described by its generated `/openapi.json`.\n */\n\nexport const API_CATALOG_PATH = \"/.well-known/api-catalog\";\n/** The profile URI RFC 9727 registers for an API catalog linkset. */\nexport const API_CATALOG_PROFILE = \"https://www.rfc-editor.org/info/rfc9727\";\n/**\n * The catalog's media type: a linkset carrying the RFC 9727 profile\n * parameter, which the RFC says an API catalog SHOULD be served with.\n */\nexport const API_CATALOG_TYPE = `application/linkset+json; profile=\"${API_CATALOG_PROFILE}\"`;\n\n/** An RFC 9264 linkset entry, restricted to the relations Blume emits. */\ninterface LinksetEntry {\n anchor: string;\n \"service-desc\"?: { href: string; type?: string }[];\n \"service-doc\"?: { href: string; type: string }[];\n}\n\nconst HTTP_URL = /^https?:\\/\\//u;\n\n/** The catalog's linkset entries; empty when the site publishes no APIs. */\nconst linksetEntries = (config: ResolvedConfig): LinksetEntry[] => {\n const site = config.deployment.options.site ?? null;\n const deployBase = normalizeBasePath(config.deployment.options.base);\n const abs = (path: string): string => {\n const based = mountBasePath(deployBase, path);\n return site ? absoluteUrl(site, based) : based;\n };\n\n const entries: LinksetEntry[] = [];\n for (const reference of resolveReferences(config)) {\n // Blume-rendered pages mount under `basePath`; Scalar pages stay at the\n // raw route (see `referenceRoutes`).\n const docRoute =\n reference.kind === \"scalar\"\n ? reference.route\n : withBasePath(reference.basePath, reference.route);\n const entry: LinksetEntry = {\n anchor: abs(docRoute),\n \"service-doc\": [{ href: abs(docRoute), type: \"text/html\" }],\n };\n // A local spec file is parsed into pages, not served, so only a remote\n // spec has a fetchable `service-desc` URL.\n if (HTTP_URL.test(reference.spec)) {\n entry[\"service-desc\"] = [{ href: reference.spec }];\n }\n entries.push(entry);\n }\n\n if (config.agents.api) {\n entries.push({\n anchor: abs(API_BASE),\n \"service-desc\": [{ href: abs(OPENAPI_PATH), type: \"application/json\" }],\n \"service-doc\": [{ href: abs(\"/\"), type: \"text/html\" }],\n });\n }\n\n if (config.agents.mcp.enabled) {\n entries.push({\n anchor: abs(config.agents.mcp.route),\n \"service-desc\": [\n { href: abs(\"/.well-known/mcp.json\"), type: \"application/json\" },\n ],\n \"service-doc\": [{ href: abs(\"/\"), type: \"text/html\" }],\n });\n }\n return entries;\n};\n\n/** Whether the site has anything to catalog — gates every emission surface. */\nexport const hasApiCatalog = (config: ResolvedConfig): boolean =>\n linksetEntries(config).length > 0;\n\n/** The `application/linkset+json` document, or null when there are no APIs. */\nexport const buildApiCatalog = (config: ResolvedConfig): string | null => {\n const linkset = linksetEntries(config);\n if (linkset.length === 0) {\n return null;\n }\n return `${JSON.stringify({ linkset }, null, 2)}\\n`;\n};\n",
@@ -178,12 +179,12 @@
178
179
  "import type {\n DocumentNode,\n GraphQLArgument,\n GraphQLEnumType,\n GraphQLField,\n GraphQLInputField,\n GraphQLInputObjectType,\n GraphQLInterfaceType,\n GraphQLNamedType,\n GraphQLObjectType,\n GraphQLScalarType,\n GraphQLSchema,\n GraphQLUnionType,\n} from \"graphql\";\nimport {\n buildASTSchema,\n buildClientSchema,\n getNamedType,\n isEnumType,\n isInputObjectType,\n isInterfaceType,\n isObjectType,\n isSpecifiedScalarType,\n isUnionType,\n Kind,\n parse,\n print,\n specifiedDirectives,\n valueFromASTUntyped,\n visit,\n} from \"graphql\";\n\nimport type {\n GraphqlDocument,\n GraphqlEnumValue,\n GraphqlField as ModelField,\n GraphqlInputValue,\n GraphqlJsonValue,\n GraphqlTypeDef,\n GraphqlTypeRef,\n} from \"./graphql.ts\";\n\n/**\n * Lower schema text — SDL or an introspection result — into the serializable\n * {@link GraphqlDocument} the reference renders from. This is the only module\n * that imports `graphql`-js, and it runs Node-side at parse time only (see\n * `parseGraphqlSpec` in `parse.ts`), so the parser never reaches the generated\n * runtime or the browser. Throws plain Errors for unreadable schemas; the\n * caller wraps them as content problems.\n */\n\n/** A type expression flattened to its display form and core named type. */\nconst typeRef = (\n type: GraphQLField<unknown, unknown>[\"type\"] | GraphQLInputField[\"type\"]\n): GraphqlTypeRef => ({\n display: String(type),\n name: getNamedType(type).name,\n});\n\n/**\n * An argument's or input field's default, printed as a GraphQL literal. Both\n * SDL- and introspection-built schemas carry the default as a const AST node\n * (`default.literal`); a schema constructed programmatically with a coerced\n * `value` instead never reaches this module (it only builds from text).\n */\nconst defaultLiteral = (\n input: GraphQLArgument | GraphQLInputField\n): string | undefined => {\n const literal = input.default?.literal;\n return literal ? print(literal) : undefined;\n};\n\n/**\n * The same default as the JSON a client sends in `variables`, which the\n * example variables start from.\n */\nconst defaultJson = (\n input: GraphQLArgument | GraphQLInputField\n): GraphqlJsonValue | undefined => {\n const literal = input.default?.literal;\n // SAFETY: a const literal has no variables, so it lowers to JSON values\n // only: numbers, strings, booleans, null, enum names, lists and objects.\n return literal\n ? (valueFromASTUntyped(literal) as GraphqlJsonValue)\n : undefined;\n};\n\nconst inputValue = (\n input: GraphQLArgument | GraphQLInputField\n): GraphqlInputValue => {\n const value: GraphqlInputValue = {\n description: input.description ?? \"\",\n name: input.name,\n type: typeRef(input.type),\n };\n const printed = defaultLiteral(input);\n if (printed !== undefined) {\n value.default = printed;\n }\n const json = defaultJson(input);\n if (json !== undefined) {\n value.defaultValue = json;\n }\n // `deprecationReason` is null on non-deprecated members in some builds;\n // absent means \"not deprecated\" downstream, so both collapse to absent.\n if (\n input.deprecationReason !== null &&\n input.deprecationReason !== undefined\n ) {\n value.deprecationReason = input.deprecationReason;\n }\n return value;\n};\n\nconst outputField = (field: GraphQLField<unknown, unknown>): ModelField => {\n const value: ModelField = {\n args: field.args.map(inputValue),\n description: field.description ?? \"\",\n name: field.name,\n type: typeRef(field.type),\n };\n if (\n field.deprecationReason !== null &&\n field.deprecationReason !== undefined\n ) {\n value.deprecationReason = field.deprecationReason;\n }\n return value;\n};\n\nconst enumValues = (type: GraphQLEnumType): GraphqlEnumValue[] =>\n type.getValues().map((value) => {\n const member: GraphqlEnumValue = {\n description: value.description ?? \"\",\n name: value.name,\n };\n if (\n value.deprecationReason !== null &&\n value.deprecationReason !== undefined\n ) {\n member.deprecationReason = value.deprecationReason;\n }\n return member;\n });\n\nconst objectDef = (\n type: GraphQLObjectType | GraphQLInterfaceType,\n kind: \"object\" | \"interface\"\n): GraphqlTypeDef => {\n const interfaces = type.getInterfaces().map((iface) => iface.name);\n const def: GraphqlTypeDef = {\n description: type.description ?? \"\",\n fields: Object.values(type.getFields()).map(outputField),\n kind,\n name: type.name,\n };\n if (interfaces.length > 0) {\n def.interfaces = interfaces;\n }\n return def;\n};\n\nconst inputDef = (type: GraphQLInputObjectType): GraphqlTypeDef => ({\n description: type.description ?? \"\",\n inputFields: Object.values(type.getFields()).map(inputValue),\n kind: \"input\",\n name: type.name,\n});\n\nconst unionDef = (type: GraphQLUnionType): GraphqlTypeDef => ({\n description: type.description ?? \"\",\n kind: \"union\",\n name: type.name,\n possibleTypes: type.getTypes().map((member) => member.name),\n});\n\nconst scalarDef = (type: GraphQLScalarType): GraphqlTypeDef => {\n const def: GraphqlTypeDef = {\n description: type.description ?? \"\",\n kind: \"scalar\",\n name: type.name,\n };\n if (type.specifiedByURL !== null && type.specifiedByURL !== undefined) {\n def.specifiedByUrl = type.specifiedByURL;\n }\n if (isSpecifiedScalarType(type)) {\n def.builtIn = true;\n }\n return def;\n};\n\nconst typeDef = (\n type: GraphQLNamedType,\n schema: GraphQLSchema\n): GraphqlTypeDef => {\n if (isObjectType(type)) {\n return objectDef(type, \"object\");\n }\n if (isInterfaceType(type)) {\n const def = objectDef(type, \"interface\");\n // Implementations are indexed on the schema, not the type — captured here\n // so the type page can list \"implemented by\" without a schema in hand.\n const implementers = schema\n .getImplementations(type)\n .objects.map((object) => object.name);\n if (implementers.length > 0) {\n def.possibleTypes = implementers;\n }\n return def;\n }\n if (isInputObjectType(type)) {\n return inputDef(type);\n }\n if (isEnumType(type)) {\n return {\n description: type.description ?? \"\",\n enumValues: enumValues(type),\n kind: \"enum\",\n name: type.name,\n };\n }\n if (isUnionType(type)) {\n return unionDef(type);\n }\n // SAFETY: the named-type union is exhaustive — after the object, interface,\n // input, enum, and union guards, only scalars remain.\n return scalarDef(type as GraphQLScalarType);\n};\n\n/** Lower a built schema to the serializable document. */\nconst documentOf = (schema: GraphQLSchema): GraphqlDocument => {\n const types: Record<string, GraphqlTypeDef> = {};\n for (const [name, type] of Object.entries(schema.getTypeMap())) {\n // Introspection meta-types (`__Schema`, `__Type`, …) are machinery, not API.\n if (name.startsWith(\"__\")) {\n continue;\n }\n types[name] = typeDef(type, schema);\n }\n const roots: GraphqlDocument[\"roots\"] = {};\n const query = schema.getQueryType();\n const mutation = schema.getMutationType();\n const subscription = schema.getSubscriptionType();\n if (query) {\n roots.query = query.name;\n }\n if (mutation) {\n roots.mutation = mutation.name;\n }\n if (subscription) {\n roots.subscription = subscription.name;\n }\n return {\n info: { description: schema.description ?? \"\" },\n roots,\n types,\n };\n};\n\n/**\n * A parsed JSON value carrying an introspection result's `__schema` key —\n * possibly under the standard `{ data: … }` GraphQL response envelope. The\n * generic-guard shape mirrors the document checks in `parse.ts`; the real\n * validation is `buildClientSchema`'s, which throws a descriptive error on\n * anything malformed inside `__schema`.\n */\nconst hasSchemaKey = <Value>(\n value: Value\n): value is Value & { __schema: object } =>\n typeof value === \"object\" && value !== null && \"__schema\" in value;\n\n/** A parsed JSON value shaped like a GraphQL response envelope. */\nconst hasDataEnvelope = <Value>(\n value: Value\n): value is Value & { data: unknown } =>\n typeof value === \"object\" && value !== null && \"data\" in value;\n\n/** The introspection result inside a parsed JSON value, if it carries one. */\nconst introspectionOf = <Value>(parsed: Value): object | undefined => {\n if (hasSchemaKey(parsed)) {\n return parsed;\n }\n return hasDataEnvelope(parsed) && hasSchemaKey(parsed.data)\n ? parsed.data\n : undefined;\n};\n\n/**\n * SDL with every use of an undeclared directive removed. Subgraph and platform\n * schemas lean on directives their server defines out of band — Apollo\n * Federation's `@key` and `@link`, AppSync's `@aws_*` — and strict SDL\n * validation rejects each one as `Unknown directive`. The reference renders\n * none of them, so they are dropped rather than declared; every other check\n * (syntax, unknown types, duplicates) still runs.\n */\nconst withoutUnknownDirectives = (document: DocumentNode): DocumentNode => {\n const known = new Set(specifiedDirectives.map((directive) => directive.name));\n for (const definition of document.definitions) {\n if (definition.kind === Kind.DIRECTIVE_DEFINITION) {\n known.add(definition.name.value);\n }\n }\n return visit(document, {\n // `null` deletes the node; `undefined` leaves it in place.\n Directive: (node) => (known.has(node.name.value) ? undefined : null),\n });\n};\n\n/**\n * Build the document from schema text: an introspection JSON result (the raw\n * `{ __schema }` shape or a `{ data: { __schema } }` response envelope) or\n * SDL. Anything else throws — JSON that isn't an introspection result names\n * that problem directly instead of earning SDL syntax errors for a `{`.\n */\nexport const buildGraphqlDocument = (text: string): GraphqlDocument => {\n let parsed: unknown;\n let isJson = true;\n try {\n parsed = JSON.parse(text);\n } catch {\n isJson = false;\n }\n if (isJson) {\n const introspection = introspectionOf(parsed);\n if (!introspection) {\n throw new Error(\n \"the JSON document is not a GraphQL introspection result (no `__schema` key).\"\n );\n }\n // SAFETY: the guard above only establishes the `__schema` key;\n // `buildClientSchema` validates the full introspection shape itself and\n // throws a descriptive error on anything malformed.\n return documentOf(\n buildClientSchema(\n introspection as Parameters<typeof buildClientSchema>[0]\n )\n );\n }\n return documentOf(buildASTSchema(withoutUnknownDirectives(parse(text))));\n};\n",
179
180
  "import { exec, query } from \"jsonpath-rfc9535\";\nimport { z } from \"zod\";\n\nimport type { JsonValue } from \"../core/adapter.ts\";\n\n/**\n * OpenAPI Overlays: the OpenAPI Initiative's format for changing an API\n * description without editing it — an ordered list of actions, each an RFC\n * 9535 JSONPath `target` with an `update` to merge in, a `copy` of another\n * node to merge in, or `remove`. A spec generated by another tool or owned by\n * another team can then carry docs-only changes (better descriptions, hidden\n * internal operations, a public server URL) in a file of its own.\n *\n * Implements Overlay Specification 1.0 and 1.1 over `jsonpath-rfc9535`, which\n * passes the JSONPath compliance suite in full, as the spec requires. The\n * documents here are already parsed; `parse.ts` reads the files.\n */\n\n/** An overlay document or action that doesn't follow the spec. */\nexport class OverlayError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"OverlayError\";\n }\n}\n\n/** An object node, the only kind that holds named properties. */\ninterface JsonObject {\n [key: string]: JsonValue;\n}\n\n/** A node that holds other nodes: where a match's parent can be. */\ntype JsonContainer = JsonObject | JsonValue[];\n\nconst isObject = (value: JsonValue | undefined): value is JsonObject =>\n typeof value === \"object\" && value !== null && !Array.isArray(value);\n\n/**\n * A parsed YAML or JSON mapping, as the document an overlay acts on: the\n * parser's own types say nothing of JSON, but what it parses is JSON.\n */\nexport const isJsonObject = <Value>(\n value: Value\n): value is Value & JsonObject =>\n typeof value === \"object\" && value !== null && !Array.isArray(value);\n\nconst isContainer = (value: JsonValue | undefined): value is JsonContainer =>\n typeof value === \"object\" && value !== null;\n\nconst isIndex = (key: string | number | undefined): key is number =>\n typeof key === \"number\";\n\n/** An object, an array, or anything else: what update merging keys on. */\ntype MergeKind = \"array\" | \"object\" | \"primitive\";\n\nconst mergeKindOf = (value: JsonValue): MergeKind => {\n if (Array.isArray(value)) {\n return \"array\";\n }\n return isObject(value) ? \"object\" : \"primitive\";\n};\n\n/** A merge kind in a sentence. */\nconst MERGE_KIND_PHRASE: Record<MergeKind, string> = {\n array: \"an array\",\n object: \"an object\",\n primitive: \"a primitive value\",\n};\n\nconst actionSchema = z.looseObject({\n /** A JSONPath expression selecting one node to merge into the targets (1.1). */\n copy: z.string().optional(),\n description: z.string().optional(),\n /** Remove every target from the map or array it's in. */\n remove: z.boolean().default(false),\n /** An RFC 9535 JSONPath expression selecting the nodes to act on. */\n target: z.string().min(1),\n /** A value merged into every target. */\n update: z.json().optional(),\n});\n\n/** A validated overlay action. */\ntype OverlayAction = z.output<typeof actionSchema>;\n\nconst overlaySchema = z.looseObject({\n actions: z.array(actionSchema).min(1),\n extends: z.string().optional(),\n info: z.looseObject({ title: z.string(), version: z.string() }),\n overlay: z.string().regex(/^1\\.[01]\\.\\d+$/u, {\n message: \"must be an Overlay Specification version, 1.0.x or 1.1.x\",\n }),\n});\n\n/** A validated overlay document. */\nexport type OverlayDocument = z.output<typeof overlaySchema>;\n\n/** Validate a parsed overlay document, naming the file in any error. */\nexport const overlayDocument = <Value>(\n value: Value,\n name: string\n): OverlayDocument => {\n const parsed = overlaySchema.safeParse(value);\n if (parsed.success) {\n return parsed.data;\n }\n const [issue] = parsed.error.issues;\n const at = issue?.path.length ? `\\`${issue.path.join(\".\")}\\` ` : \"\";\n throw new OverlayError(\n `${name} is not an overlay document: ${at}${issue?.message ?? \"invalid\"}.`\n );\n};\n\n/** A matched node, where it sits, and how to reach it. */\ninterface Match {\n key?: string | number;\n parent?: JsonContainer;\n value: JsonValue;\n}\n\n/** The nodes `expression` selects, each with its parent (none for the root). */\nconst select = (document: JsonValue, expression: string): Match[] => {\n const matches: Match[] = [];\n exec(document, expression, (value, path) => {\n let parent: JsonValue = document;\n for (const key of path.slice(0, -1)) {\n // SAFETY: the path is one the query walked, so every step is a key of\n // the container before it.\n parent = (parent as Record<string | number, JsonValue>)[key] ?? null;\n }\n const key = path.at(-1);\n matches.push(\n key === undefined || !isContainer(parent)\n ? { value }\n : { key, parent, value }\n );\n });\n return matches;\n};\n\n/**\n * Merge `patch` into `target` as the spec says: objects recursively, arrays\n * by concatenation, a primitive replaced by a primitive. Returns the merged\n * value; any other pairing throws.\n */\nconst merge = (target: JsonValue, patch: JsonValue, at: string): JsonValue => {\n if (isObject(target) && isObject(patch)) {\n for (const [key, value] of Object.entries(patch)) {\n // Only recurse into the target's own keys, so a `__proto__` or\n // `constructor` key can't reach a prototype.\n target[key] = Object.hasOwn(target, key)\n ? merge(target[key] ?? null, value, `${at}.${key}`)\n : structuredClone(value);\n }\n return target;\n }\n if (Array.isArray(target) && Array.isArray(patch)) {\n target.push(...structuredClone(patch));\n return target;\n }\n if (\n mergeKindOf(target) === \"primitive\" &&\n mergeKindOf(patch) === \"primitive\"\n ) {\n return patch;\n }\n throw new OverlayError(\n `can't merge ${MERGE_KIND_PHRASE[mergeKindOf(patch)]} into ${MERGE_KIND_PHRASE[mergeKindOf(target)]} at ${at}`\n );\n};\n\n/** Remove each match from its container, later siblings first. */\nconst removeAll = (matches: Match[]): void => {\n for (const { key, parent } of matches.toReversed()) {\n if (Array.isArray(parent) && isIndex(key)) {\n parent.splice(key, 1);\n } else if (isObject(parent) && key !== undefined && !isIndex(key)) {\n // oxlint-disable-next-line typescript/no-dynamic-delete -- an overlay target's key is only known at run time\n delete parent[key];\n } else {\n throw new OverlayError(\"can't remove the document itself\");\n }\n }\n};\n\n/**\n * Merge `patch` into every match, which must all be objects, all arrays, or\n * all primitives. A primitive match is replaced in its parent.\n */\nconst mergeAll = (matches: Match[], patch: JsonValue, target: string) => {\n const kinds = new Set(matches.map((match) => mergeKindOf(match.value)));\n if (kinds.size > 1) {\n throw new OverlayError(\n `its target selects a mix of ${[...kinds].toSorted().join(\", \")} values, and an update needs all one kind`\n );\n }\n for (const { key, parent, value } of matches) {\n const merged = merge(value, patch, target);\n if (merged !== value && parent !== undefined && key !== undefined) {\n // SAFETY: `key` came from walking `parent`, so it indexes it.\n (parent as Record<string | number, JsonValue>)[key] = merged;\n }\n }\n};\n\n/** The single node a `copy` expression selects, cloned. */\nconst copied = (document: JsonValue, expression: string): JsonValue => {\n const values = query(document, expression);\n const [value] = values;\n if (values.length !== 1 || value === undefined) {\n throw new OverlayError(\n `its copy expression \"${expression}\" selects ${values.length} nodes, and copy needs exactly one`\n );\n }\n return structuredClone(value);\n};\n\nconst applyAction = (document: JsonValue, action: OverlayAction): void => {\n const matches = select(document, action.target);\n if (matches.length === 0) {\n return;\n }\n if (action.remove) {\n removeAll(matches);\n return;\n }\n const patch =\n action.update ??\n (action.copy === undefined ? undefined : copied(document, action.copy));\n if (patch !== undefined) {\n mergeAll(matches, patch, action.target);\n }\n};\n\n/**\n * Apply an overlay to a parsed document, in place and in action order: each\n * action sees the result of the one before. A target that matches nothing\n * changes nothing. Throws an {@link OverlayError} naming the overlay file and\n * the action that failed.\n */\nexport const applyOverlay = (\n document: JsonValue,\n overlay: OverlayDocument,\n name: string\n): void => {\n for (const [index, action] of overlay.actions.entries()) {\n try {\n applyAction(document, action);\n } catch (error) {\n // SAFETY: the JSONPath parser and this module throw Error instances.\n const { message } = error as Error;\n throw new OverlayError(\n `${name} action ${index + 1} (${action.target}): ${message}`\n );\n }\n }\n};\n",
180
181
  "/**\n * Reading a spec needs an optional package the project hasn't installed (the\n * AsyncAPI converter, for a pre-3.0 document). Carries its own suggestion —\n * the install command — because neither of the other spec failures fits: the\n * file is fine and so is the network.\n */\nexport class SpecDependencyError extends Error {\n readonly suggestion: string;\n\n constructor(message: string, suggestion: string) {\n super(message);\n this.name = \"SpecDependencyError\";\n this.suggestion = suggestion;\n }\n}\n",
181
- "import type { Nodes, Root } from \"mdast\";\nimport { fromMarkdown } from \"mdast-util-from-markdown\";\nimport { toString as mdastToString } from \"mdast-util-to-string\";\nimport stringWidth from \"string-width\";\n\nimport { apiNamePhrase } from \"../core/api-name.ts\";\nimport { unsafeLinkSpans } from \"../core/safe-links.ts\";\nimport { columnsPrefix } from \"../core/text-width.ts\";\nimport type { GraphqlMember } from \"./graphql.ts\";\nimport { isGraphqlOperationKind } from \"./graphql.ts\";\nimport type { ApiOperationRef, ApiSpecData } from \"./model.ts\";\nimport type { ReferenceSource } from \"./references.ts\";\nimport { asSentence } from \"./sentence.ts\";\nimport { operationSignature } from \"./signature.ts\";\n\n/**\n * Lower a parsed spec into MDX for the staged content source. Each operation and\n * the spec overview become a thin MDX page: the frontmatter carries the\n * searchable `title` (so operations flow into Blume's search, OG, and llms.txt),\n * the operation/overview **description is emitted as markdown in the body** so it\n * renders parsed (links, formatting) and is indexed, and the structured UI is\n * deferred to a Blume-owned component (`<Operation>` / `<ApiOverview>`). The\n * catch-all renders the frontmatter title as the page `<h1>`, so the components\n * omit their own top heading.\n */\n\n// Neutralize the few characters MDX treats specially (`{` expressions, `<`\n// JSX) so an arbitrary spec description can be embedded in the body verbatim\n// without breaking compilation. They render as their literal selves. `>` is\n// deliberately not escaped: it isn't MDX-special on its own, and escaping it\n// turns a `> Note:` blockquote into literal \"&gt; Note:\" text.\nconst MDX_UNSAFE = /[<{}]/gu;\nconst ENTITIES = new Map([\n [\"<\", \"&lt;\"],\n [\"{\", \"&#123;\"],\n [\"}\", \"&#125;\"],\n]);\n// MDX also parses lines starting with `import`/`export` as ESM (\"import the\n// SDK…\" is common spec prose). Entity-escape the keyword's first letter so the\n// construct can't match; it still renders as the literal word.\nconst MDX_ESM_KEYWORD = /^(?<keyword>import|export)\\b/gmu;\nconst escapeProse = (text: string): string =>\n text\n .replace(MDX_UNSAFE, (char) => ENTITIES.get(char) ?? char)\n .replace(\n MDX_ESM_KEYWORD,\n (keyword) => `&#${keyword.codePointAt(0)};${keyword.slice(1)}`\n );\n\n/**\n * The source offset ranges of code constructs — inline spans and fences —\n * that MDX treats as literal (entities are NOT decoded inside them, so\n * escaping there would render `/pets/&#123;petId&#125;` verbatim). The ranges\n * come from a CommonMark parse rather than fence-emulating regexes: the\n * parser is the authority on equal-length backtick pairing, longer tilde\n * closers, unclosed fences running to EOF, and fences nested in blockquotes —\n * each of which the replaced regexes had to re-derive (two with a recorded\n * bug history in this file).\n *\n * One CommonMark construct is deliberately *not* masked: indented code. MDX\n * disables indented code blocks, so a 4-space-indented sample is a paragraph\n * whose braces genuinely need escaping; fence-or-backtick is told apart from\n * indentation by the construct's first character.\n */\nconst codeSpans = (text: string, tree: Root): [number, number][] => {\n const spans: [number, number][] = [];\n const collect = (node: Nodes): void => {\n if (node.type === \"inlineCode\" || node.type === \"code\") {\n // fromMarkdown always stamps positions; -1 is an unreachable guard.\n const start = node.position?.start.offset ?? -1;\n const end = node.position?.end.offset ?? -1;\n const head = text.slice(Math.max(start, 0), Math.max(end, 0)).trimStart();\n if (\n start >= 0 &&\n (node.type === \"inlineCode\" ||\n head.startsWith(\"`\") ||\n head.startsWith(\"~\"))\n ) {\n spans.push([start, end]);\n }\n return;\n }\n if (\"children\" in node) {\n for (const child of node.children) {\n collect(child);\n }\n }\n };\n collect(tree);\n return spans;\n};\n\n/** Stands in for `<` when locating code spans (see `mdxSafe`). */\nconst HTML_MASK = \"\";\n\n/**\n * Escape MDX-special syntax in prose while leaving code verbatim. A spec is\n * someone else's content, so a link whose destination isn't a web, mail, or\n * relative address (`javascript:`, `data:`) is reduced to its label rather\n * than rendered clickable on the docs site (see `core/safe-links.ts`).\n */\nconst mdxSafe = (text: string): string => {\n const tree = fromMarkdown(text);\n const unsafe = unsafeLinkSpans(tree);\n const insideUnsafe = (offset: number): boolean =>\n unsafe.some((span) => offset >= span.start && offset < span.end);\n // Code spans come from a parse with every `<` masked. The emitted MDX\n // escapes each `<` outside code to `&lt;`, so no line of it is an HTML\n // block — but CommonMark reads `<div>` as one and never looks for the code\n // spans inside it, which would leave their braces to be escaped and shown\n // as a literal `&#123;`. The mask is one code unit, so offsets line up.\n const masked = text.replaceAll(\"<\", HTML_MASK);\n const segments = [\n ...codeSpans(masked, fromMarkdown(masked))\n .filter(([start]) => !insideUnsafe(start))\n .map(([start, end]) => ({ end, start, text: text.slice(start, end) })),\n ...unsafe,\n ].toSorted((a, b) => a.start - b.start);\n let out = \"\";\n let cursor = 0;\n for (const segment of segments) {\n out += escapeProse(text.slice(cursor, segment.start));\n out += segment.text;\n cursor = segment.end;\n }\n return out + escapeProse(text.slice(cursor));\n};\n\n// A fence opener: up to three columns of indentation, then a run of three or\n// more backticks or tildes.\nconst FENCE_OPEN = /^ {0,3}(?<fence>`{3,}|~{3,})/u;\n\n/**\n * Close a fenced code block the text leaves open. An unclosed fence runs to\n * the end of the document, so the component appended after a description\n * would render as code, and the page would lose its parameters, responses,\n * and playground. Only the last top-level block can run that far — a fence in\n * a quote or list closes with its container — and it's read from the same\n * `<`-masked parse as `mdxSafe`, since the emitted MDX has no HTML blocks to\n * hide a fence in.\n */\nconst closeOpenFence = (text: string): string => {\n const last = fromMarkdown(text.replaceAll(\"<\", HTML_MASK)).children.at(-1);\n if (last?.type !== \"code\") {\n return text;\n }\n // fromMarkdown always stamps positions; 0 is an unreachable guard.\n const block = text.slice(last.position?.start.offset ?? 0);\n const fence = FENCE_OPEN.exec(block)?.groups?.fence;\n // No fence: indented code, which MDX reads as a paragraph.\n if (!fence) {\n return text;\n }\n const lines = block.split(\"\\n\");\n const closer = new RegExp(\n `^ {0,3}${fence[0]}{${fence.length},}[ \\\\t\\\\r]*$`,\n \"u\"\n );\n return lines.length > 1 && closer.test(lines.at(-1) ?? \"\")\n ? text\n : `${text}\\n${fence}`;\n};\n\n/** Spec prose as MDX that is safe to follow with a component. */\nconst descriptionMdx = (text: string): string =>\n mdxSafe(closeOpenFence(text.trim()));\n\n/**\n * Frontmatter emitted for one operation or overview page. Boolean flags are\n * assigned only when set, so absent keys stay absent in the staged MDX.\n */\nexport interface RenderedPageData {\n ai?: { exclude: boolean };\n deprecated?: boolean;\n search?: { exclude?: boolean; tags?: string[] };\n seo: { description: string; noindex?: boolean };\n sidebar: { badge?: string; label: string };\n title: string;\n type?: string;\n}\n\n/** Frontmatter + body for one operation or overview page. */\nexport interface RenderedPage {\n data: RenderedPageData;\n body: string;\n}\n\n// Meta descriptions. A page that sets none falls back to the site-wide default,\n// so a spec's pages would otherwise all ship one identical description — what\n// search engines treat as duplicate content. These go in `seo.description`, not\n// `description`: the prose already renders in the body, and a `description`\n// frontmatter field would print it a second time as the page subtitle.\nconst META_DESCRIPTION_MAX = 160;\nconst WHITESPACE = /\\s+/gu;\nconst TRAILING_WORD = /\\s+\\S*$/u;\n\n/**\n * Flatten markdown prose to its first paragraph as single-line plain text,\n * via a real parse (`mdast-util-to-string`). The regex strip this replaces\n * was lossy on literal prose — `snake_case` → `snakecase`, `C#` → `C` — and\n * these strings ship as `seo.description` meta tags. A description with no\n * paragraph (say, only a heading or list) falls back to its first block.\n */\nconst plainProse = (markdown: string): string => {\n const tree = fromMarkdown(markdown);\n const first =\n tree.children.find((node) => node.type === \"paragraph\") ?? tree.children[0];\n return first ? mdastToString(first).replace(WHITESPACE, \" \").trim() : \"\";\n};\n\n/** Cap `text` at `max` display columns, cutting on a word boundary. */\nconst clip = (text: string, max: number): string => {\n if (max <= 0) {\n return \"\";\n }\n if (stringWidth(text) <= max) {\n return text;\n }\n const head = columnsPrefix(text, max - 1);\n const onWordBoundary = head.replace(TRAILING_WORD, \"\");\n // One very long token — an endpoint path has no spaces — would be dropped\n // whole, leaving a stub. Hard-cut it instead of losing it.\n return `${stringWidth(onWordBoundary) >= max / 2 ? onWordBoundary : head}…`;\n};\n\nconst apiName = (spec: ApiSpecData): string => spec.title || spec.label;\n/** The spec's name as \"the ___\" in generated prose (see `apiNamePhrase`). */\nconst apiPhrase = (spec: ApiSpecData): string => apiNamePhrase(apiName(spec));\n\n/** Human phrase for each GraphQL page kind, for meta descriptions. */\nconst GRAPHQL_MEMBER_PHRASES = {\n enum: \"enum type\",\n input: \"input object type\",\n interface: \"interface type\",\n mutation: \"mutation\",\n object: \"object type\",\n query: \"query\",\n scalar: \"scalar type\",\n subscription: \"subscription\",\n union: \"union type\",\n} satisfies Record<GraphqlMember, string>;\n\n/**\n * The spec's own prose for the operation, followed by the endpoint it documents\n * — so every operation page carries a distinct, self-describing meta\n * description even when the spec's summaries are terse. With the suffix\n * switched off (`seoDescriptionSuffix: false`, for sites whose prose isn't\n * English) the description is the prose alone, or the page `title` — a\n * language-neutral `GET /pets`, channel, or field name — when the operation\n * has no prose at all, so no page ships an empty description.\n */\nconst operationDescription = (\n spec: ApiSpecData,\n operation: ApiOperationRef,\n options: { suffix: boolean; title: string }\n): string => {\n if (!options.suffix) {\n return clip(\n plainProse(operation.description || operation.summary) || options.title,\n META_DESCRIPTION_MAX\n );\n }\n // AsyncAPI operations act on a channel, not an HTTP endpoint; GraphQL pages\n // document a root field or a named type.\n let subject: string;\n if (spec.kind === \"asyncapi\") {\n subject = `${operation.method} operation on ${operation.path}`;\n } else if (spec.kind === \"graphql\") {\n // SAFETY: the GraphQL extractor only ever assigns member kinds as the\n // method (see `extractGraphqlOperations`).\n subject = `${operation.path} ${GRAPHQL_MEMBER_PHRASES[operation.method as GraphqlMember]}`;\n } else {\n // A webhook is a request the API sends, named rather than pathed.\n subject = `${operation.method.toUpperCase()} ${operation.path} ${operation.webhook ? \"webhook\" : \"endpoint\"}`;\n }\n const suffix = `Reference for the ${subject} in the ${apiPhrase(spec)}.`;\n // Room for the joining space and the period `asSentence` may add, so a\n // title-like summary (\"Get a flag\") ends before the suffix begins.\n const prose = clip(\n plainProse(operation.description || operation.summary),\n META_DESCRIPTION_MAX - stringWidth(suffix) - 2\n );\n return clip(\n [asSentence(prose), suffix].filter(Boolean).join(\" \"),\n META_DESCRIPTION_MAX\n );\n};\n\n/** Prepend a markdown description (if any) above a component invocation. */\nconst withDescription = (description: string, component: string): string =>\n description.trim()\n ? `${descriptionMdx(description)}\\n\\n${component}`\n : component;\n\nexport const operationMdx = (\n spec: ApiSpecData,\n operation: ApiOperationRef,\n reference?: Pick<\n ReferenceSource,\n \"includeInLlms\" | \"includeInSearch\" | \"noindex\" | \"seoDescriptionSuffix\"\n >\n): RenderedPage => {\n const method = operation.method.toUpperCase();\n const graphql = spec.kind === \"graphql\";\n // A GraphQL page IS its field/type — `query pets` would double the badge the\n // page already renders; the other kinds title an endpoint or channel action.\n const fallbackTitle = graphql\n ? operation.path\n : operationSignature(spec, operation);\n const title = operation.summary || fallbackTitle;\n // Skip the body description when it only repeats the summary (the `<h1>`) —\n // common in specs that set summary and description to the same string.\n const description =\n operation.description.trim() === operation.summary.trim()\n ? \"\"\n : operation.description;\n const flags: Pick<RenderedPageData, \"ai\" | \"deprecated\"> = {};\n if (reference?.includeInLlms === false) {\n flags.ai = { exclude: true };\n }\n if (operation.deprecated) {\n flags.deprecated = true;\n }\n const searchFlags: Pick<\n NonNullable<RenderedPageData[\"search\"]>,\n \"exclude\"\n > = {};\n if (reference?.includeInSearch === false) {\n searchFlags.exclude = true;\n }\n const seo: RenderedPageData[\"seo\"] = {\n description: operationDescription(spec, operation, {\n suffix: reference?.seoDescriptionSuffix !== false,\n title,\n }),\n };\n if (reference?.noindex) {\n seo.noindex = true;\n }\n const sidebar: RenderedPageData[\"sidebar\"] = {\n label: operation.summary || operation.path,\n };\n // GraphQL operation kinds badge like HTTP methods, but a type page's kind\n // already heads its sidebar group (\"Objects\", \"Enums\", …) — an `OBJECT`\n // badge on every row would only repeat it, so type pages get none. The\n // uppercased method is likewise an internal token on GraphQL pages, so\n // their search tags carry only the group name.\n if (!graphql || isGraphqlOperationKind(operation.method)) {\n sidebar.badge = method;\n }\n const tags = graphql ? [operation.tag] : [operation.tag, method];\n if (operation.webhook) {\n tags.push(\"Webhook\");\n }\n return {\n body: withDescription(\n description,\n `<Operation source=\"${spec.slug}\" id=\"${operation.key}\" />`\n ),\n data: {\n ...flags,\n search: { ...searchFlags, tags },\n seo,\n sidebar,\n title,\n // Signals the two-column API layout (request panel instead of the TOC).\n type: \"openapi-operation\",\n },\n };\n};\n\nexport const overviewMdx = (\n spec: ApiSpecData,\n reference?: Pick<\n ReferenceSource,\n \"includeInLlms\" | \"includeInSearch\" | \"noindex\"\n >\n): RenderedPage => {\n // Tag sections: declared tags in spec order, then any tag an operation\n // references that isn't declared under `tags`. The section headings are\n // emitted as real markdown `##` (not markup inside a component) so the\n // markdown pipeline gives them ids, permalink anchors, and table-of-contents\n // entries; only the operation-link list defers to a component.\n const operations = Object.values(spec.operations);\n // Dedupe by slug: two declared tags that slugify identically (`Store` and\n // `store`) must render one section, not the same operation list twice.\n const sections: typeof spec.tags = [];\n const known = new Set<string>();\n for (const tag of spec.tags) {\n if (!known.has(tag.slug)) {\n known.add(tag.slug);\n sections.push(tag);\n }\n }\n for (const operation of operations) {\n if (!known.has(operation.tagSlug)) {\n known.add(operation.tagSlug);\n sections.push({\n description: \"\",\n name: operation.tag,\n slug: operation.tagSlug,\n });\n }\n }\n const tagSections: string[] = [];\n for (const tag of sections) {\n if (!operations.some((operation) => operation.tagSlug === tag.slug)) {\n continue;\n }\n const description = tag.description.trim()\n ? [descriptionMdx(tag.description)]\n : [];\n tagSections.push(\n [\n `## ${mdxSafe(tag.name)}`,\n ...description,\n `<ApiTagOperations source=\"${spec.slug}\" tag=\"${tag.slug}\" />`,\n ].join(\"\\n\\n\")\n );\n }\n const flags: Pick<RenderedPageData, \"ai\" | \"search\"> = {};\n if (reference?.includeInLlms === false) {\n flags.ai = { exclude: true };\n }\n if (reference?.includeInSearch === false) {\n flags.search = { exclude: true };\n }\n const seo: RenderedPageData[\"seo\"] = {\n description:\n clip(plainProse(spec.description), META_DESCRIPTION_MAX) ||\n `${apiPhrase(spec)} reference.`,\n };\n if (reference?.noindex) {\n seo.noindex = true;\n }\n return {\n body: [\n withDescription(\n spec.description,\n `<ApiOverview source=\"${spec.slug}\" />`\n ),\n ...tagSections,\n ].join(\"\\n\\n\"),\n data: {\n ...flags,\n seo,\n sidebar: { label: \"Overview\" },\n title: apiName(spec),\n },\n };\n};\n",
182
+ "import type { List, Nodes, Paragraph, Root } from \"mdast\";\nimport { fromMarkdown } from \"mdast-util-from-markdown\";\nimport { toString as mdastToString } from \"mdast-util-to-string\";\nimport stringWidth from \"string-width\";\n\nimport { apiNamePhrase } from \"../core/api-name.ts\";\nimport { unsafeLinkSpans } from \"../core/safe-links.ts\";\nimport { columnsPrefix } from \"../core/text-width.ts\";\nimport type { GraphqlMember } from \"./graphql.ts\";\nimport { isGraphqlOperationKind } from \"./graphql.ts\";\nimport type { ApiOperationRef, ApiSpecData } from \"./model.ts\";\nimport type { ReferenceSource } from \"./references.ts\";\nimport { asSentence, closeSentence, endsInLeadIn } from \"./sentence.ts\";\nimport { operationSignature } from \"./signature.ts\";\n\n/**\n * Lower a parsed spec into MDX for the staged content source. Each operation and\n * the spec overview become a thin MDX page: the frontmatter carries the\n * searchable `title` (so operations flow into Blume's search, OG, and llms.txt),\n * the operation/overview **description is emitted as markdown in the body** so it\n * renders parsed (links, formatting) and is indexed, and the structured UI is\n * deferred to a Blume-owned component (`<Operation>` / `<ApiOverview>`). The\n * catch-all renders the frontmatter title as the page `<h1>`, so the components\n * omit their own top heading.\n */\n\n// Neutralize the few characters MDX treats specially (`{` expressions, `<`\n// JSX) so an arbitrary spec description can be embedded in the body verbatim\n// without breaking compilation. They render as their literal selves. `>` is\n// deliberately not escaped: it isn't MDX-special on its own, and escaping it\n// turns a `> Note:` blockquote into literal \"&gt; Note:\" text.\nconst MDX_UNSAFE = /[<{}]/gu;\nconst ENTITIES = new Map([\n [\"<\", \"&lt;\"],\n [\"{\", \"&#123;\"],\n [\"}\", \"&#125;\"],\n]);\n// MDX also parses lines starting with `import`/`export` as ESM (\"import the\n// SDK…\" is common spec prose). Entity-escape the keyword's first letter so the\n// construct can't match; it still renders as the literal word.\nconst MDX_ESM_KEYWORD = /^(?<keyword>import|export)\\b/gmu;\nconst escapeProse = (text: string): string =>\n text\n .replace(MDX_UNSAFE, (char) => ENTITIES.get(char) ?? char)\n .replace(\n MDX_ESM_KEYWORD,\n (keyword) => `&#${keyword.codePointAt(0)};${keyword.slice(1)}`\n );\n\n/**\n * The source offset ranges of code constructs — inline spans and fences —\n * that MDX treats as literal (entities are NOT decoded inside them, so\n * escaping there would render `/pets/&#123;petId&#125;` verbatim). The ranges\n * come from a CommonMark parse rather than fence-emulating regexes: the\n * parser is the authority on equal-length backtick pairing, longer tilde\n * closers, unclosed fences running to EOF, and fences nested in blockquotes —\n * each of which the replaced regexes had to re-derive (two with a recorded\n * bug history in this file).\n *\n * One CommonMark construct is deliberately *not* masked: indented code. MDX\n * disables indented code blocks, so a 4-space-indented sample is a paragraph\n * whose braces genuinely need escaping; fence-or-backtick is told apart from\n * indentation by the construct's first character.\n */\nconst codeSpans = (text: string, tree: Root): [number, number][] => {\n const spans: [number, number][] = [];\n const collect = (node: Nodes): void => {\n if (node.type === \"inlineCode\" || node.type === \"code\") {\n // fromMarkdown always stamps positions; -1 is an unreachable guard.\n const start = node.position?.start.offset ?? -1;\n const end = node.position?.end.offset ?? -1;\n const head = text.slice(Math.max(start, 0), Math.max(end, 0)).trimStart();\n if (\n start >= 0 &&\n (node.type === \"inlineCode\" ||\n head.startsWith(\"`\") ||\n head.startsWith(\"~\"))\n ) {\n spans.push([start, end]);\n }\n return;\n }\n if (\"children\" in node) {\n for (const child of node.children) {\n collect(child);\n }\n }\n };\n collect(tree);\n return spans;\n};\n\n/** Stands in for `<` when locating code spans (see `mdxSafe`). */\nconst HTML_MASK = \"\";\n\n/**\n * Escape MDX-special syntax in prose while leaving code verbatim. A spec is\n * someone else's content, so a link whose destination isn't a web, mail, or\n * relative address (`javascript:`, `data:`) is reduced to its label rather\n * than rendered clickable on the docs site (see `core/safe-links.ts`).\n */\nconst mdxSafe = (text: string): string => {\n const tree = fromMarkdown(text);\n const unsafe = unsafeLinkSpans(tree);\n const insideUnsafe = (offset: number): boolean =>\n unsafe.some((span) => offset >= span.start && offset < span.end);\n // Code spans come from a parse with every `<` masked. The emitted MDX\n // escapes each `<` outside code to `&lt;`, so no line of it is an HTML\n // block — but CommonMark reads `<div>` as one and never looks for the code\n // spans inside it, which would leave their braces to be escaped and shown\n // as a literal `&#123;`. The mask is one code unit, so offsets line up.\n const masked = text.replaceAll(\"<\", HTML_MASK);\n const segments = [\n ...codeSpans(masked, fromMarkdown(masked))\n .filter(([start]) => !insideUnsafe(start))\n .map(([start, end]) => ({ end, start, text: text.slice(start, end) })),\n ...unsafe,\n ].toSorted((a, b) => a.start - b.start);\n let out = \"\";\n let cursor = 0;\n for (const segment of segments) {\n out += escapeProse(text.slice(cursor, segment.start));\n out += segment.text;\n cursor = segment.end;\n }\n return out + escapeProse(text.slice(cursor));\n};\n\n// A fence opener: up to three columns of indentation, then a run of three or\n// more backticks or tildes.\nconst FENCE_OPEN = /^ {0,3}(?<fence>`{3,}|~{3,})/u;\n\n/**\n * Close a fenced code block the text leaves open. An unclosed fence runs to\n * the end of the document, so the component appended after a description\n * would render as code, and the page would lose its parameters, responses,\n * and playground. Only the last top-level block can run that far — a fence in\n * a quote or list closes with its container — and it's read from the same\n * `<`-masked parse as `mdxSafe`, since the emitted MDX has no HTML blocks to\n * hide a fence in.\n */\nconst closeOpenFence = (text: string): string => {\n const last = fromMarkdown(text.replaceAll(\"<\", HTML_MASK)).children.at(-1);\n if (last?.type !== \"code\") {\n return text;\n }\n // fromMarkdown always stamps positions; 0 is an unreachable guard.\n const block = text.slice(last.position?.start.offset ?? 0);\n const fence = FENCE_OPEN.exec(block)?.groups?.fence;\n // No fence: indented code, which MDX reads as a paragraph.\n if (!fence) {\n return text;\n }\n const lines = block.split(\"\\n\");\n const closer = new RegExp(\n `^ {0,3}${fence[0]}{${fence.length},}[ \\\\t\\\\r]*$`,\n \"u\"\n );\n return lines.length > 1 && closer.test(lines.at(-1) ?? \"\")\n ? text\n : `${text}\\n${fence}`;\n};\n\n/** Spec prose as MDX that is safe to follow with a component. */\nconst descriptionMdx = (text: string): string =>\n mdxSafe(closeOpenFence(text.trim()));\n\n/**\n * Frontmatter emitted for one operation or overview page. Boolean flags are\n * assigned only when set, so absent keys stay absent in the staged MDX.\n */\nexport interface RenderedPageData {\n ai?: { exclude: boolean };\n deprecated?: boolean;\n search?: { exclude?: boolean; tags?: string[] };\n seo: { description: string; noindex?: boolean };\n sidebar: { badge?: string; label: string };\n title: string;\n type?: string;\n}\n\n/** Frontmatter + body for one operation or overview page. */\nexport interface RenderedPage {\n data: RenderedPageData;\n body: string;\n}\n\n// Meta descriptions. A page that sets none falls back to the site-wide default,\n// so a spec's pages would otherwise all ship one identical description — what\n// search engines treat as duplicate content. These go in `seo.description`, not\n// `description`: the prose already renders in the body, and a `description`\n// frontmatter field would print it a second time as the page subtitle.\nconst META_DESCRIPTION_MAX = 160;\nconst WHITESPACE = /\\s+/gu;\nconst TRAILING_WORD = /\\s+\\S*$/u;\n// A list item's own closing mark, dropped where the items join into one line.\nconst ITEM_END = /[.;。;]$/u;\n\n/** Markdown as single-line plain text. */\nconst flatten = (node: Nodes): string =>\n mdastToString(node).replace(WHITESPACE, \" \").trim();\n\n/** The innermost last node of `node`: the one its text ends in. */\nconst lastLeaf = (node: Nodes): Nodes => {\n const last = \"children\" in node ? node.children.at(-1) : undefined;\n return last ? lastLeaf(last) : node;\n};\n\n/**\n * Whether a paragraph ends in a lead-in colon. Only a colon in the prose\n * counts: one closing inline code (`tenant:`) is part of the literal.\n */\nconst leadsIn = (paragraph: Paragraph): boolean => {\n const leaf = lastLeaf(paragraph);\n return leaf.type === \"text\" && endsInLeadIn(leaf.value);\n};\n\n/** A list as one line: each item's first paragraph, joined by semicolons. */\nconst listProse = (list: List): string =>\n list.children\n .map((item) => {\n const paragraph = item.children.find(\n (child) => child.type === \"paragraph\"\n );\n if (!paragraph) {\n return \"\";\n }\n const text = flatten(paragraph);\n // A closing mark in inline code (`SELECT 1;`) is part of the literal.\n if (lastLeaf(paragraph).type !== \"text\") {\n return text;\n }\n // A nested list's lead-in (\"Modes:\") closes like any other.\n return (leadsIn(paragraph) ? asSentence(text) : text).replace(\n ITEM_END,\n \"\"\n );\n })\n .filter(Boolean)\n .join(\"; \");\n\n/**\n * Flatten markdown prose to its first paragraph as single-line plain text,\n * via a real parse (`mdast-util-to-string`). The regex strip this replaces\n * was lossy on literal prose — `snake_case` → `snakecase`, `C#` → `C` — and\n * these strings ship as `seo.description` meta tags. A description with no\n * paragraph (say, only a heading or list) falls back to its first block.\n *\n * A first paragraph that leads in to a list (\"Supports two modes:\") is cut\n * from what it introduces, so the list's items follow it on the same line. A\n * lead-in to anything else, such as a code block, is closed as a sentence.\n */\nconst plainProse = (markdown: string): string => {\n const { children } = fromMarkdown(markdown);\n const index = children.findIndex((node) => node.type === \"paragraph\");\n const paragraph = children[index];\n if (paragraph?.type !== \"paragraph\") {\n return children[0] ? flatten(children[0]) : \"\";\n }\n const text = flatten(paragraph);\n if (!leadsIn(paragraph)) {\n return text;\n }\n const next = children[index + 1];\n const items = next?.type === \"list\" ? listProse(next) : \"\";\n return items ? `${text} ${items}` : asSentence(text);\n};\n\n/** Cap `text` at `max` display columns, cutting on a word boundary. */\nconst clip = (text: string, max: number): string => {\n if (max <= 0) {\n return \"\";\n }\n if (stringWidth(text) <= max) {\n return text;\n }\n const head = columnsPrefix(text, max - 1);\n const onWordBoundary = head.replace(TRAILING_WORD, \"\");\n // One very long token — an endpoint path has no spaces — would be dropped\n // whole, leaving a stub. Hard-cut it instead of losing it.\n return `${stringWidth(onWordBoundary) >= max / 2 ? onWordBoundary : head}…`;\n};\n\nconst apiName = (spec: ApiSpecData): string => spec.title || spec.label;\n/** The spec's name as \"the ___\" in generated prose (see `apiNamePhrase`). */\nconst apiPhrase = (spec: ApiSpecData): string => apiNamePhrase(apiName(spec));\n\n/** Human phrase for each GraphQL page kind, for meta descriptions. */\nconst GRAPHQL_MEMBER_PHRASES = {\n enum: \"enum type\",\n input: \"input object type\",\n interface: \"interface type\",\n mutation: \"mutation\",\n object: \"object type\",\n query: \"query\",\n scalar: \"scalar type\",\n subscription: \"subscription\",\n union: \"union type\",\n} satisfies Record<GraphqlMember, string>;\n\n/**\n * The spec's own prose for the operation, followed by the endpoint it documents\n * — so every operation page carries a distinct, self-describing meta\n * description even when the spec's summaries are terse. With the suffix\n * switched off (`seoDescriptionSuffix: false`, for sites whose prose isn't\n * English) the description is the prose alone, or the page `title` — a\n * language-neutral `GET /pets`, channel, or field name — when the operation\n * has no prose at all, so no page ships an empty description.\n */\nconst operationDescription = (\n spec: ApiSpecData,\n operation: ApiOperationRef,\n options: { suffix: boolean; title: string }\n): string => {\n if (!options.suffix) {\n return clip(\n plainProse(operation.description || operation.summary) || options.title,\n META_DESCRIPTION_MAX\n );\n }\n // AsyncAPI operations act on a channel, not an HTTP endpoint; GraphQL pages\n // document a root field or a named type.\n let subject: string;\n if (spec.kind === \"asyncapi\") {\n subject = `${operation.method} operation on ${operation.path}`;\n } else if (spec.kind === \"graphql\") {\n // SAFETY: the GraphQL extractor only ever assigns member kinds as the\n // method (see `extractGraphqlOperations`).\n subject = `${operation.path} ${GRAPHQL_MEMBER_PHRASES[operation.method as GraphqlMember]}`;\n } else {\n // A webhook is a request the API sends, named rather than pathed.\n subject = `${operation.method.toUpperCase()} ${operation.path} ${operation.webhook ? \"webhook\" : \"endpoint\"}`;\n }\n const suffix = `Reference for the ${subject} in the ${apiPhrase(spec)}.`;\n // Room for the joining space and the period `closeSentence` may add, so a\n // title-like summary (\"Get a flag\") ends before the suffix begins.\n const prose = clip(\n plainProse(operation.description || operation.summary),\n META_DESCRIPTION_MAX - stringWidth(suffix) - 2\n );\n // `plainProse` has already closed a lead-in colon, so one still at the end\n // is a literal (`tenant:`) and keeps its period after it.\n return clip(\n [closeSentence(prose), suffix].filter(Boolean).join(\" \"),\n META_DESCRIPTION_MAX\n );\n};\n\n/** Prepend a markdown description (if any) above a component invocation. */\nconst withDescription = (description: string, component: string): string =>\n description.trim()\n ? `${descriptionMdx(description)}\\n\\n${component}`\n : component;\n\nexport const operationMdx = (\n spec: ApiSpecData,\n operation: ApiOperationRef,\n reference?: Pick<\n ReferenceSource,\n \"includeInLlms\" | \"includeInSearch\" | \"noindex\" | \"seoDescriptionSuffix\"\n >\n): RenderedPage => {\n const method = operation.method.toUpperCase();\n const graphql = spec.kind === \"graphql\";\n // A GraphQL page IS its field/type — `query pets` would double the badge the\n // page already renders; the other kinds title an endpoint or channel action.\n const fallbackTitle = graphql\n ? operation.path\n : operationSignature(spec, operation);\n const title = operation.summary || fallbackTitle;\n // Skip the body description when it only repeats the summary (the `<h1>`) —\n // common in specs that set summary and description to the same string.\n const description =\n operation.description.trim() === operation.summary.trim()\n ? \"\"\n : operation.description;\n const flags: Pick<RenderedPageData, \"ai\" | \"deprecated\"> = {};\n if (reference?.includeInLlms === false) {\n flags.ai = { exclude: true };\n }\n if (operation.deprecated) {\n flags.deprecated = true;\n }\n const searchFlags: Pick<\n NonNullable<RenderedPageData[\"search\"]>,\n \"exclude\"\n > = {};\n if (reference?.includeInSearch === false) {\n searchFlags.exclude = true;\n }\n const seo: RenderedPageData[\"seo\"] = {\n description: operationDescription(spec, operation, {\n suffix: reference?.seoDescriptionSuffix !== false,\n title,\n }),\n };\n if (reference?.noindex) {\n seo.noindex = true;\n }\n const sidebar: RenderedPageData[\"sidebar\"] = {\n label: operation.summary || operation.path,\n };\n // GraphQL operation kinds badge like HTTP methods, but a type page's kind\n // already heads its sidebar group (\"Objects\", \"Enums\", …) — an `OBJECT`\n // badge on every row would only repeat it, so type pages get none. The\n // uppercased method is likewise an internal token on GraphQL pages, so\n // their search tags carry only the group name.\n if (!graphql || isGraphqlOperationKind(operation.method)) {\n sidebar.badge = method;\n }\n const tags = graphql ? [operation.tag] : [operation.tag, method];\n if (operation.webhook) {\n tags.push(\"Webhook\");\n }\n return {\n body: withDescription(\n description,\n `<Operation source=\"${spec.slug}\" id=\"${operation.key}\" />`\n ),\n data: {\n ...flags,\n search: { ...searchFlags, tags },\n seo,\n sidebar,\n title,\n // Signals the two-column API layout (request panel instead of the TOC).\n type: \"openapi-operation\",\n },\n };\n};\n\nexport const overviewMdx = (\n spec: ApiSpecData,\n reference?: Pick<\n ReferenceSource,\n \"includeInLlms\" | \"includeInSearch\" | \"noindex\"\n >\n): RenderedPage => {\n // Tag sections: declared tags in spec order, then any tag an operation\n // references that isn't declared under `tags`. The section headings are\n // emitted as real markdown `##` (not markup inside a component) so the\n // markdown pipeline gives them ids, permalink anchors, and table-of-contents\n // entries; only the operation-link list defers to a component.\n const operations = Object.values(spec.operations);\n // Dedupe by slug: two declared tags that slugify identically (`Store` and\n // `store`) must render one section, not the same operation list twice.\n const sections: typeof spec.tags = [];\n const known = new Set<string>();\n for (const tag of spec.tags) {\n if (!known.has(tag.slug)) {\n known.add(tag.slug);\n sections.push(tag);\n }\n }\n for (const operation of operations) {\n if (!known.has(operation.tagSlug)) {\n known.add(operation.tagSlug);\n sections.push({\n description: \"\",\n name: operation.tag,\n slug: operation.tagSlug,\n });\n }\n }\n const tagSections: string[] = [];\n for (const tag of sections) {\n if (!operations.some((operation) => operation.tagSlug === tag.slug)) {\n continue;\n }\n const description = tag.description.trim()\n ? [descriptionMdx(tag.description)]\n : [];\n tagSections.push(\n [\n `## ${mdxSafe(tag.name)}`,\n ...description,\n `<ApiTagOperations source=\"${spec.slug}\" tag=\"${tag.slug}\" />`,\n ].join(\"\\n\\n\")\n );\n }\n const flags: Pick<RenderedPageData, \"ai\" | \"search\"> = {};\n if (reference?.includeInLlms === false) {\n flags.ai = { exclude: true };\n }\n if (reference?.includeInSearch === false) {\n flags.search = { exclude: true };\n }\n const seo: RenderedPageData[\"seo\"] = {\n description:\n clip(plainProse(spec.description), META_DESCRIPTION_MAX) ||\n `${apiPhrase(spec)} reference.`,\n };\n if (reference?.noindex) {\n seo.noindex = true;\n }\n return {\n body: [\n withDescription(\n spec.description,\n `<ApiOverview source=\"${spec.slug}\" />`\n ),\n ...tagSections,\n ].join(\"\\n\\n\"),\n data: {\n ...flags,\n seo,\n sidebar: { label: \"Overview\" },\n title: apiName(spec),\n },\n };\n};\n",
182
183
  "import type { Nodes, Root } from \"mdast\";\nimport { fromMarkdown } from \"mdast-util-from-markdown\";\nimport { gfmFromMarkdown } from \"mdast-util-gfm\";\nimport { toString } from \"mdast-util-to-string\";\nimport { gfm } from \"micromark-extension-gfm\";\n\nimport { isSafeHref } from \"./safe-href.ts\";\nimport { escapeMarkdownText } from \"./sources/lower.ts\";\n\n/** A link (or link definition) whose destination isn't safe. */\nexport interface UnsafeLinkSpan {\n /** End offset in the source, exclusive. */\n end: number;\n /** Start offset in the source. */\n start: number;\n /**\n * What replaces it: the link's label, escaped so it can't form a link\n * again; empty for a definition.\n */\n text: string;\n}\n\n/**\n * The unsafe links in a parsed Markdown tree, in source order: inline and\n * reference links (autolinks included) and link definitions whose parsed\n * destination fails {@link isSafeHref}. The parsed `url` is what a browser\n * would get, character references and all, so `java&#115;cript:` is caught.\n */\nexport const unsafeLinkSpans = (tree: Root): UnsafeLinkSpan[] => {\n const spans: UnsafeLinkSpan[] = [];\n const visit = (node: Nodes): void => {\n if (\n (node.type === \"link\" || node.type === \"definition\") &&\n !isSafeHref(node.url)\n ) {\n // fromMarkdown stamps every node's position.\n const start = node.position?.start.offset ?? 0;\n const end = node.position?.end.offset ?? 0;\n spans.push({\n end,\n start,\n text: node.type === \"link\" ? escapeMarkdownText(toString(node)) : \"\",\n });\n return;\n }\n if (\"children\" in node) {\n for (const child of node.children) {\n visit(child);\n }\n }\n };\n visit(tree);\n return spans;\n};\n\n/**\n * Markdown with every unsafe link reduced to its label text and every unsafe\n * link definition removed. Everything else — safe links, raw HTML, code —\n * passes through as written. The Markdown is read as GitHub-flavored, the way\n * the site renders it: a link inside a footnote definition or a table cell is\n * only a link to a GFM parser.\n */\nexport const neutralizeUnsafeLinks = (markdown: string): string => {\n const spans = unsafeLinkSpans(\n fromMarkdown(markdown, {\n extensions: [gfm()],\n mdastExtensions: [gfmFromMarkdown()],\n })\n );\n let out = \"\";\n let cursor = 0;\n for (const span of spans) {\n out += markdown.slice(cursor, span.start) + span.text;\n cursor = span.end;\n }\n return out + markdown.slice(cursor);\n};\n",
183
184
  "/**\n * Link destinations in content Blume imports from someone else — an API spec's\n * descriptions, a repository's release notes, CMS rich text — that are safe to\n * render as a clickable link. Author-written pages are trusted and never pass\n * through here; imported content can carry a `javascript:` (or `data:`,\n * `vbscript:`) link that would run as the docs site when a reader clicks it.\n * A destination with no scheme (a relative path, a fragment) stays a link, as\n * does one whose scheme is on this list.\n */\nconst SAFE_SCHEMES = new Set([\"http\", \"https\", \"mailto\", \"tel\"]);\n\nconst SCHEME = /^(?<scheme>[a-z][\\d+.a-z-]*):/iu;\n\n// Markdown decodes a destination before the browser sees it: a backslash\n// escape (`javascript\\:`) and a character reference (`java&#115;cript:`,\n// `javascript&colon;`) both reach the `href` as the plain character, so the\n// check reads the destination decoded. Of HTML's named references, these are\n// the only ones that decode to a scheme character, a colon, or a character\n// the URL parser strips; every other one leaves the scheme a browser reads\n// unchanged.\nconst MARKDOWN_DECODED =\n /\\\\(?<escaped>[!-/:-@[-`{-~])|&(?:#[Xx](?<hex>[\\dA-Fa-f]{1,6})|#(?<decimal>\\d{1,7})|(?<named>colon|fjlig|NewLine|period|plus|Tab));/gu;\n\nconst NAMED_REFERENCES = new Map([\n [\"colon\", \":\"],\n [\"fjlig\", \"fj\"],\n [\"NewLine\", \"\\n\"],\n [\"period\", \".\"],\n [\"plus\", \"+\"],\n [\"Tab\", \"\\t\"],\n]);\n\nconst MAX_CODE_POINT = 0x10_ff_ff;\nconst SURROGATES = { end: 0xdf_ff, start: 0xd8_00 };\n\n/** A numeric reference's character; U+FFFD for NUL, surrogates, and overflow. */\nconst fromReference = (code: number): string =>\n code === 0 ||\n code > MAX_CODE_POINT ||\n (code >= SURROGATES.start && code <= SURROGATES.end)\n ? \"�\"\n : String.fromCodePoint(code);\n\nconst decodeMarkdown = (href: string): string =>\n href.replaceAll(\n MARKDOWN_DECODED,\n (\n _match: string,\n escaped?: string,\n hex?: string,\n decimal?: string,\n named?: string\n ) => {\n if (escaped !== undefined) {\n return escaped;\n }\n if (named !== undefined) {\n return NAMED_REFERENCES.get(named) ?? \"\";\n }\n const code =\n hex === undefined ? Number(decimal) : Number.parseInt(hex, 16);\n return fromReference(code);\n }\n );\n\n// The URL parser removes ASCII tabs and newlines anywhere, and strips leading\n// C0 controls and spaces, before it reads a scheme — so `java\\tscript:` is a\n// `javascript:` URL to a browser, and the check must see it the same way.\nconst URL_IGNORED = /[\\t\\n\\r]/gu;\n\n/** Whether a link destination from imported content is safe to keep. */\nexport const isSafeHref = (href: string): boolean => {\n const cleaned = decodeMarkdown(href).replaceAll(URL_IGNORED, \"\");\n let start = 0;\n while (start < cleaned.length && (cleaned.codePointAt(start) ?? 0) <= 0x20) {\n start += 1;\n }\n const scheme = SCHEME.exec(cleaned.slice(start))?.groups?.scheme;\n return scheme === undefined || SAFE_SCHEMES.has(scheme.toLowerCase());\n};\n",
184
- "/**\n * Shared primitives for lowering a CMS's rich-text tree to Markdown text.\n * Every rich-text lowerer (Portable Text, Contentful, Lexical, Strapi\n * blocks) renders inline runs, wraps them in block syntax, and joins blocks\n * with blank lines; these helpers keep that Markdown identical across them.\n */\n\nimport { isSafeHref } from \"../safe-href.ts\";\n\n// Markdown/raw-HTML structure characters. Rich-text leaves are *plain text* —\n// formatting arrives as marks, never as syntax in the text — so a literal\n// `*`, `_`, `[`, backtick, `~`, `^`, or `<` typed in the CMS must render as\n// itself. Unescaped, it opened emphasis, a code span, or a superscript\n// (`2^10 and 2^20`) mid-paragraph, and `<` let CMS prose inject raw HTML into\n// the rendered page. `{` and `}` open an expression once an entry is written\n// as MDX (see {@link writesMdx}), and `$$` opens math there. CommonMark\n// backslash-escapes every ASCII punctuation character, so `\\*` is always the\n// literal asterisk, in `.md` and `.mdx` alike.\nconst MARKDOWN_SPECIALS = /[\\\\`*_{}[\\]~<$^]/gu;\n\n// MDX reads a colon ahead of a letter or digit as a text directive (`10:30`,\n// `og:image`, `pets:read`), so that colon is escaped too. One inside a bare\n// URL (`http://localhost:3000`) stays as written: an escape there would end\n// the autolink early.\nconst DIRECTIVE_COLON = /(?<!(?:[a-z][\\w+.-]*:\\/\\/|www\\.)\\S*):(?=[a-z\\d])/giu;\n\n// GFM autolinks a bare `http://`, `https://`, or `www.` URL in prose, taking\n// its characters verbatim up to the next space or `<`: an escape inside one\n// reaches the href as a backslash (`a\\_b`), so prose leaves a bare URL's\n// characters as written. That includes a trailing `*`, `_`, or `~`, which\n// GFM leaves out of the link: escaped, its backslash would still land inside.\n// A link label is the exception — GFM links nothing inside one, so there\n// every special is escaped (see `linkParts`).\nconst BARE_URL = /\\b(?:https?:\\/\\/|www\\.)[\\w-][^\\s<]*/giu;\n\n// An entity or numeric character reference (`&copy;`, `&#38;`) is decoded\n// even in plain text, so one typed in the CMS would render as the character\n// it names rather than as written. A bare `&` is left alone.\nconst CHARACTER_REFERENCE = /&(?=#?[a-z0-9]+;)/giu;\n\n// Block syntax is only syntax at the start of a line: `# ` (through\n// `###### `), `- `, `+ ` and `1. `/`1) ` need the space (or line end) to\n// become a heading or list item, while `>` opens a quote on its own, and a\n// line of only `=` or `-` turns the line above it into a heading (or, alone,\n// into a rule). Indentation of up to three spaces still counts. A CMS\n// paragraph that begins with one of these — a soft break inside it counts as\n// a line start too — must stay prose.\nconst BLOCK_START =\n /^(?<indent>[ \\t]*)(?:(?<marker>#+|[+-]|\\d+[.)])(?=[ \\t]|$)|(?<quote>>)|(?<rule>=+|-{2,})(?=[ \\t]*$))/gmu;\n\n// MDX reads a top-level line that opens with `import` or `export` followed by\n// a space, a tab, `{`, or `*` as an ESM statement, and prose like \"import the\n// CSV first\" then fails the whole page. The keyword's first letter as a\n// character reference renders the same in `.md` and `.mdx`, and MDX no longer\n// sees the keyword. The keyword is escaped wherever a word ends on it, which\n// covers every character that opens a statement. Only a block's first line\n// counts; a blank line inside the text starts a new block.\nconst ESM_START = /(?<=^|\\n[ \\t]*\\n)(?<keyword>import|export)(?![\\w$])/gu;\n\n// Whitespace opening a block: four columns of it (or a tab) make an indented\n// code block, and a paragraph drops it when it renders anyway.\nconst BLOCK_INDENT = /(?<=^|\\n[ \\t]*\\n)[ \\t]+/gu;\n\nconst escapeBlockStart = (text: string): string =>\n text.replaceAll(BLOCK_START, (match: string, indent: string) => {\n // A numbered marker escapes its punctuation (`1\\.`), the rest themselves.\n const marker = match.slice(indent.length);\n const index = marker.search(/[.)]/u);\n return index === -1\n ? `${indent}\\\\${marker}`\n : `${indent}${marker.slice(0, index)}\\\\${marker.slice(index)}`;\n });\n\nconst escapeEsmStart = (text: string): string =>\n text.replaceAll(\n ESM_START,\n (keyword: string) => `&#${keyword.codePointAt(0)};${keyword.slice(1)}`\n );\n\nconst escapeSpecials = (text: string): string =>\n text.replaceAll(MARKDOWN_SPECIALS, String.raw`\\$&`);\n\n/** The escapes that apply everywhere, once the specials are escaped. */\nconst escapeRest = (text: string): string =>\n escapeEsmStart(\n escapeBlockStart(\n text\n .replaceAll(DIRECTIVE_COLON, String.raw`\\:`)\n .replaceAll(CHARACTER_REFERENCE, String.raw`\\&`)\n )\n );\n\n/**\n * CMS text as Markdown that renders as written, wherever it lands — a link\n * label included, where GFM autolinks nothing, so every special is escaped.\n */\nexport const escapeMarkdownText = (text: string): string =>\n escapeRest(escapeSpecials(text));\n\n/** CMS prose as {@link escapeMarkdownText}, except inside a bare URL. */\nconst escapeProse = (text: string): string => {\n let out = \"\";\n let last = 0;\n for (const match of text.matchAll(BARE_URL)) {\n out += escapeSpecials(text.slice(last, match.index)) + match[0];\n last = match.index + match[0].length;\n }\n return escapeRest(out + escapeSpecials(text.slice(last)));\n};\n\n/** The marks a lowerer can put on an inline run. */\nexport interface InlineMarks {\n bold?: boolean;\n code?: boolean;\n italic?: boolean;\n strike?: boolean;\n}\n\n/** A run of CMS text and the marks on it. */\nexport interface InlineRun {\n marks: InlineMarks;\n text: string;\n}\n\n/** Inline Markdown a lowerer rendered itself: a link, an embed, a break. */\nexport interface InlineMarkdown {\n markdown: string;\n}\n\n/** One piece of a block's inline content, in order. */\nexport type InlinePart = InlineMarkdown | InlineRun;\n\nconst BACKTICK_RUN = /`+/gu;\n\n/** The longest run of backticks in `text`, 0 when there is none. */\nconst longestBacktickRun = (text: string): number => {\n let longest = 0;\n for (const run of text.match(BACKTICK_RUN) ?? []) {\n longest = Math.max(longest, run.length);\n }\n return longest;\n};\n\n/**\n * A code span whose delimiter outruns any backtick run inside it, padded with\n * a space on each side when the code starts or ends with a backtick (the\n * CommonMark rule that keeps the padding out of the rendered code).\n */\nexport const codeSpan = (code: string): string => {\n const fence = \"`\".repeat(longestBacktickRun(code) + 1);\n const pad = code.startsWith(\"`\") || code.endsWith(\"`\") ? \" \" : \"\";\n return `${fence}${pad}${code}${pad}${fence}`;\n};\n\n// Two struck runs side by side meet as `~~~~`: a closer and an opener that\n// GFM reads as one four-tilde run, so both print as literal tildes. A literal\n// `~` is escaped outside a bare URL, so an unescaped `~~~~` outside a code\n// span, a link destination, or a bare URL is exactly that seam, and dropping\n// it merges the runs into one strikethrough. The other alternatives only step\n// over escapes, code spans, destinations, and bare URLs so the seam is never\n// matched inside them.\nconst SEAM_STEPS =\n /\\\\[\\s\\S]|(?<ticks>`+)[\\s\\S]*?(?<!`)\\k<ticks>(?!`)|\\]\\((?:<(?:\\\\.|[^\\\\<>\\n])*>|(?:\\\\.|[^\\\\\\s)])+)\\)/u;\nconst STRIKE_SEAM = new RegExp(\n `${SEAM_STEPS.source}|${BARE_URL.source}|~~~~`,\n \"giu\"\n);\n\n// A heading that ends in a space and a run of `#` reads that run as the\n// optional closing sequence and drops it (`## Issue #` renders \"Issue\").\nconst CLOSING_HASHES = /(?<=[ \\t])#+(?=[ \\t]*$)/u;\n\n/**\n * A block's inline text, guarded where only the whole block can tell. Runs\n * are escaped one at a time, but \"import\" ending one run and a space or code\n * span opening the next form an MDX `import` statement only once they are\n * joined, whitespace the first runs put in front of a block turns it into\n * an indented code block, two struck runs fuse into literal tildes, and a\n * trailing ` #` is a heading's closing sequence. Apply it to the joined text\n * of a paragraph, heading, quote, or list item — never to code.\n */\nexport const guardBlockStart = (text: string): string =>\n escapeEsmStart(\n text\n .replaceAll(BLOCK_INDENT, \"\")\n .replaceAll(STRIKE_SEAM, (match: string) =>\n match === \"~~~~\" ? \"\" : match\n )\n .replace(CLOSING_HASHES, String.raw`\\$&`)\n );\n\nconst EDGE_SPACE = /^(?<lead>\\s*)(?<body>[\\s\\S]*?)(?<trail>\\s*)$/u;\n\n/**\n * `text` with `render` applied between its edge whitespace, or as it is when\n * it is only whitespace.\n */\nconst betweenEdges = (\n text: string,\n render: (body: string) => string\n): string => {\n const match = EDGE_SPACE.exec(text);\n const body = match?.groups?.body ?? \"\";\n if (body === \"\") {\n return text;\n }\n return `${match?.groups?.lead ?? \"\"}${render(body)}${match?.groups?.trail ?? \"\"}`;\n};\n\nconst MARK_NAMES = [\"bold\", \"code\", \"italic\", \"strike\"] as const;\n\nconst sameMarks = (\n a: InlineMarks,\n b: InlineMarks,\n names: readonly (keyof InlineMarks)[] = MARK_NAMES\n): boolean => names.every((mark) => Boolean(a[mark]) === Boolean(b[mark]));\n\n/** A stretch of neighboring runs that share marks, and those marks. */\ninterface RunGroup {\n marks: InlineMarks;\n runs: InlineRun[];\n}\n\n/** Runs split into stretches of neighbors that share the `names` marks. */\nconst groupRuns = (\n runs: InlineRun[],\n names: readonly (keyof InlineMarks)[] = MARK_NAMES\n): RunGroup[] => {\n const groups: RunGroup[] = [];\n for (const run of runs) {\n const group = groups.at(-1);\n if (group && sameMarks(group.marks, run.marks, names)) {\n group.runs.push(run);\n } else {\n groups.push({ marks: run.marks, runs: [run] });\n }\n }\n return groups;\n};\n\n/**\n * Consecutive text runs as Markdown. Neighbors with the same bold, italic,\n * and strikethrough share one set of delimiters — rendered one run at a\n * time, two bold runs met as `****` and two italic ones as `**`, which print\n * as literal asterisks. Code stays verbatim inside the backticks (an escape\n * would render as a backslash), and neighboring code joins into one span;\n * everything else is escaped. Whitespace at either edge moves outside the\n * delimiters, since `** bold **` is not strong emphasis but `**bold**` is —\n * editors routinely bold a word together with the space after it.\n */\nconst renderRuns = (\n runs: InlineRun[],\n escape: (text: string) => string\n): string =>\n groupRuns(runs, [\"bold\", \"italic\", \"strike\"])\n .map(({ marks, runs: shared }) => {\n const inner = groupRuns(shared)\n .map((same) =>\n betweenEdges(same.runs.map((run) => run.text).join(\"\"), (body) =>\n same.marks.code ? codeSpan(body) : escape(body)\n )\n )\n .join(\"\");\n return betweenEdges(inner, (body) => {\n let out = body;\n if (marks.bold) {\n out = `**${out}**`;\n }\n if (marks.italic) {\n out = `*${out}*`;\n }\n if (marks.strike) {\n out = `~~${out}~~`;\n }\n return out;\n });\n })\n .join(\"\");\n\n/** Inline parts as Markdown, each stretch of runs through {@link renderRuns}. */\nconst renderParts = (\n parts: InlinePart[],\n escape: (text: string) => string\n): string => {\n let out = \"\";\n let runs: InlineRun[] = [];\n for (const part of parts) {\n if (\"markdown\" in part) {\n out += renderRuns(runs, escape) + part.markdown;\n runs = [];\n } else {\n runs.push(part);\n }\n }\n return out + renderRuns(runs, escape);\n};\n\n/** A block's inline content as Markdown. */\nexport const renderInline = (parts: InlinePart[]): string =>\n renderParts(parts, escapeProse);\n\n// A destination with whitespace, a control character, or parentheses ends\n// early in `[label](…)`; CommonMark's pointy-bracket form carries it intact.\n// oxlint-disable-next-line no-control-regex -- control characters are exactly what the bare form refuses.\nconst UNSAFE_DESTINATION = /[\\s()\\u0000-\\u001F\\u007F]/u;\n\n// Markdown decodes a destination before the browser sees it: a backslash\n// escape or a character reference becomes its character, so\n// `java&#115;cript:` would reach the `href` as `javascript:` after the safety\n// check passed it. Escaping both — and `<`/`>`, which would close the\n// pointy form early and let the rest of the URL open a second link — keeps\n// the `href` exactly the URL the CMS holds.\nconst DESTINATION_SPECIALS = /[\\\\<>]|&(?=#?[a-z0-9]+;)/giu;\n\n// A destination can't hold a line break, and the URL parser drops tabs and\n// line breaks anyway, so removing them leaves the same URL.\nconst DESTINATION_IGNORED = /[\\t\\n\\r]/gu;\n\n/** A link or image destination as Markdown carries it verbatim. */\nexport const destination = (url: string): string => {\n const escaped = url\n .replaceAll(DESTINATION_IGNORED, \"\")\n .replaceAll(DESTINATION_SPECIALS, String.raw`\\$&`);\n return UNSAFE_DESTINATION.test(escaped) ? `<${escaped}>` : escaped;\n};\n\n/**\n * A Markdown link over inline parts, or the parts alone when the target is\n * missing — or unsafe: CMS content is the editor's, not the site author's, so\n * a destination that isn't a web, mail, or relative address (`javascript:`,\n * `data:`) never becomes a clickable link on the docs site (see\n * `safe-links.ts`). The parts stay parts then, so their runs merge with their\n * neighbors'. A label escapes a bare URL too: GFM autolinks nothing inside a\n * link, so its specials would read as syntax.\n */\nexport const linkParts = (parts: InlinePart[], href?: string): InlinePart[] =>\n href && isSafeHref(href)\n ? [\n {\n markdown: `[${renderParts(parts, escapeMarkdownText)}](${destination(href)})`,\n },\n ]\n : parts;\n\n/** The ATX prefix for a heading level, clamped to Markdown's six. */\nexport const headingPrefix = (level: number): string =>\n `${\"#\".repeat(Math.min(Math.max(Math.trunc(level), 1), 6))} `;\n\n/** Quote every line of a block. */\nexport const blockquote = (text: string): string =>\n text\n .split(\"\\n\")\n .map((line) => (line === \"\" ? \">\" : `> ${line}`))\n .join(\"\\n\");\n\n/**\n * A list item: the marker on the first line, and every continuation line\n * indented to the marker's width so nested blocks stay inside the item.\n */\nexport const listItem = (marker: string, body: string): string => {\n const [first = \"\", ...rest] = body.split(\"\\n\");\n const pad = \" \".repeat(marker.length + 1);\n return [\n `${marker} ${first}`,\n ...rest.map((line) => (line === \"\" ? \"\" : `${pad}${line}`)),\n ].join(\"\\n\");\n};\n\n/** Indent every non-empty line, for a nested list hanging off an item. */\nexport const indent = (text: string, width: number): string => {\n const pad = \" \".repeat(width);\n return text\n .split(\"\\n\")\n .map((line) => (line === \"\" ? \"\" : `${pad}${line}`))\n .join(\"\\n\");\n};\n\n// A fence's language is one word of its info string. A backtick in it keeps\n// the fence from opening at all, so the code renders as Markdown and HTML,\n// and whitespace would start the meta Blume reads code titles from; a\n// language that isn't a single such word is dropped.\nconst FENCE_LANGUAGE = /^[^\\s`]+$/u;\n\n/**\n * A fenced code block whose fence outruns any backtick run in the code,\n * labeled with its language when that is one word a fence can carry.\n */\nexport const codeFence = (code: string, language = \"\"): string => {\n const fence = \"`\".repeat(Math.max(3, longestBacktickRun(code) + 1));\n const label = FENCE_LANGUAGE.test(language) ? language : \"\";\n return `${fence}${label}\\n${code}\\n${fence}`;\n};\n\n/** A Markdown image; the alt is escaped so a `]` in a caption can't close it. */\nexport const image = (alt: string, url: string): string =>\n `![${escapeMarkdownText(alt)}](${destination(url)})`;\n\n/**\n * Whether a lowerer's output is written as MDX. Serializers are how a CMS\n * block becomes a Blume component, and components (like directives) only\n * render in MDX, so configuring any serializer switches the source's\n * rich-text bodies to `.mdx`. The escaping above keeps the rest of the\n * lowered text valid there.\n */\nexport const writesMdx = <Node>(\n serializers?: Record<string, (node: Node) => string>\n): boolean => serializers !== undefined && Object.keys(serializers).length > 0;\n\n// A node's type is the CMS's data too: a `*/` (or `--`) in it would close the\n// comment early and let the rest run as MDX (or render as HTML). A space\n// between the two characters keeps it inside.\nconst COMMENT_END = /\\*\\/|--/gu;\n\n/**\n * A comment marking a node the lowerer has no Markdown for — an MDX comment\n * when the output is MDX, which rejects `<!-- -->`.\n */\nexport const unsupported = (what: string, mdx = false): string => {\n const label = what.replaceAll(COMMENT_END, (end) => [...end].join(\" \"));\n return mdx ? `{/* unsupported ${label} */}` : `<!-- unsupported ${label} -->`;\n};\n\n/** Blocks separated by blank lines; empty blocks are dropped. */\nexport const joinBlocks = (blocks: string[]): string =>\n blocks.filter((block) => block !== \"\").join(\"\\n\\n\");\n\n/** A whole document: its blocks plus the trailing newline a file ends with. */\nexport const markdownDocument = (blocks: string[]): string =>\n `${joinBlocks(blocks)}\\n`;\n\nconst ABSOLUTE = /^[a-z][a-z0-9+.-]*:/iu;\n\n/**\n * A media URL as a static site can reference it. A protocol-relative\n * Contentful asset (`//images.ctfassets.net/…`) gets `https:`; a path a\n * self-hosted CMS serves (`/uploads/x.png`) resolves against the CMS origin.\n */\nexport const absoluteUrl = (url: string, base?: string): string => {\n if (url.startsWith(\"//\")) {\n return `https:${url}`;\n }\n if (ABSOLUTE.test(url) || base === undefined) {\n return url;\n }\n return new URL(url, base).href;\n};\n",
185
+ "/**\n * Shared primitives for lowering a CMS's rich-text tree to Markdown text.\n * Every rich-text lowerer (Portable Text, Contentful, Lexical, Strapi\n * blocks) renders inline runs, wraps them in block syntax, and joins blocks\n * with blank lines; these helpers keep that Markdown identical across them.\n */\n\nimport { isSafeHref } from \"../safe-href.ts\";\n\n// Markdown/raw-HTML structure characters. Rich-text leaves are *plain text* —\n// formatting arrives as marks, never as syntax in the text — so a literal\n// `*`, `_`, `[`, backtick, `~`, `^`, or `<` typed in the CMS must render as\n// itself. Unescaped, it opened emphasis, a code span, or a superscript\n// (`2^10 and 2^20`) mid-paragraph, and `<` let CMS prose inject raw HTML into\n// the rendered page. `{` and `}` open an expression once an entry is written\n// as MDX (see {@link writesMdx}), and `$$` opens math there. CommonMark\n// backslash-escapes every ASCII punctuation character, so `\\*` is always the\n// literal asterisk, in `.md` and `.mdx` alike.\nconst MARKDOWN_SPECIALS = /[\\\\`*_{}[\\]~<$^]/gu;\n\n// MDX reads a colon ahead of a letter or digit as a text directive (`10:30`,\n// `og:image`, `pets:read`), so that colon is escaped too. One inside a bare\n// URL (`http://localhost:3000`) stays as written: an escape there would end\n// the autolink early.\nconst DIRECTIVE_COLON = /(?<!(?:[a-z][\\w+.-]*:\\/\\/|www\\.)\\S*):(?=[a-z\\d])/giu;\n\n// GFM autolinks a bare `http://`, `https://`, or `www.` URL in prose, taking\n// its characters verbatim up to the next space or `<`: an escape inside one\n// reaches the href as a backslash (`a\\_b`), so prose leaves a bare URL's\n// characters as written. That includes a trailing `*`, `_`, or `~`, which\n// GFM leaves out of the link: escaped, its backslash would still land inside.\n// A link label is the exception — GFM links nothing inside one, so there\n// every special is escaped (see `linkParts`).\nconst BARE_URL = /\\b(?:https?:\\/\\/|www\\.)[\\w-][^\\s<]*/giu;\n\n// An entity or numeric character reference (`&copy;`, `&#38;`) is decoded\n// even in plain text, so one typed in the CMS would render as the character\n// it names rather than as written. A bare `&` is left alone.\nconst CHARACTER_REFERENCE = /&(?=#?[a-z0-9]+;)/giu;\n\n// Block syntax is only syntax at the start of a line: `# ` (through\n// `###### `), `- `, `+ ` and `1. `/`1) ` need the space (or line end) to\n// become a heading or list item, while `>` opens a quote on its own, and a\n// line of only `=` or `-` turns the line above it into a heading (or, alone,\n// into a rule). Indentation of up to three spaces still counts. A CMS\n// paragraph that begins with one of these — a soft break inside it counts as\n// a line start too — must stay prose.\nconst BLOCK_START =\n /^(?<indent>[ \\t]*)(?:(?<marker>#+|[+-]|\\d+[.)])(?=[ \\t]|$)|(?<quote>>)|(?<rule>=+|-{2,})(?=[ \\t]*$))/gmu;\n\n// MDX reads a top-level line that opens with `import` or `export` followed by\n// a space, a tab, `{`, or `*` as an ESM statement, and prose like \"import the\n// CSV first\" then fails the whole page. The keyword's first letter as a\n// character reference renders the same in `.md` and `.mdx`, and MDX no longer\n// sees the keyword. The keyword is escaped wherever a word ends on it, which\n// covers every character that opens a statement. Only a block's first line\n// counts; a blank line inside the text starts a new block.\nconst ESM_START = /(?<=^|\\n[ \\t]*\\n)(?<keyword>import|export)(?![\\w$])/gu;\n\n// Whitespace opening a block: four columns of it (or a tab) make an indented\n// code block, and a paragraph drops it when it renders anyway.\nconst BLOCK_INDENT = /(?<=^|\\n[ \\t]*\\n)[ \\t]+/gu;\n\nconst escapeBlockStart = (text: string): string =>\n text.replaceAll(BLOCK_START, (match: string, indent: string) => {\n // A numbered marker escapes its punctuation (`1\\.`), the rest themselves.\n const marker = match.slice(indent.length);\n const index = marker.search(/[.)]/u);\n return index === -1\n ? `${indent}\\\\${marker}`\n : `${indent}${marker.slice(0, index)}\\\\${marker.slice(index)}`;\n });\n\nconst escapeEsmStart = (text: string): string =>\n text.replaceAll(\n ESM_START,\n (keyword: string) => `&#${keyword.codePointAt(0)};${keyword.slice(1)}`\n );\n\nconst escapeSpecials = (text: string): string =>\n text.replaceAll(MARKDOWN_SPECIALS, String.raw`\\$&`);\n\n/** The escapes that apply everywhere, once the specials are escaped. */\nconst escapeRest = (text: string): string =>\n escapeEsmStart(\n escapeBlockStart(\n text\n .replaceAll(DIRECTIVE_COLON, String.raw`\\:`)\n .replaceAll(CHARACTER_REFERENCE, String.raw`\\&`)\n )\n );\n\n/**\n * CMS text as Markdown that renders as written, wherever it lands — a link\n * label included, where GFM autolinks nothing, so every special is escaped.\n */\nexport const escapeMarkdownText = (text: string): string =>\n escapeRest(escapeSpecials(text));\n\n/** CMS prose as {@link escapeMarkdownText}, except inside a bare URL. */\nconst escapeProse = (text: string): string => {\n let out = \"\";\n let last = 0;\n for (const match of text.matchAll(BARE_URL)) {\n out += escapeSpecials(text.slice(last, match.index)) + match[0];\n last = match.index + match[0].length;\n }\n return escapeRest(out + escapeSpecials(text.slice(last)));\n};\n\n/** The marks a lowerer can put on an inline run. */\nexport interface InlineMarks {\n bold?: boolean;\n code?: boolean;\n italic?: boolean;\n strike?: boolean;\n}\n\n/** A run of CMS text and the marks on it. */\nexport interface InlineRun {\n marks: InlineMarks;\n text: string;\n}\n\n/** Inline Markdown a lowerer rendered itself: a link, an embed, a break. */\nexport interface InlineMarkdown {\n markdown: string;\n}\n\n/** One piece of a block's inline content, in order. */\nexport type InlinePart = InlineMarkdown | InlineRun;\n\nconst BACKTICK_RUN = /`+/gu;\n\n/** The longest run of backticks in `text`, 0 when there is none. */\nconst longestBacktickRun = (text: string): number => {\n let longest = 0;\n for (const run of text.match(BACKTICK_RUN) ?? []) {\n longest = Math.max(longest, run.length);\n }\n return longest;\n};\n\n/**\n * A code span whose delimiter outruns any backtick run inside it, padded with\n * a space on each side when the code starts or ends with a backtick (the\n * CommonMark rule that keeps the padding out of the rendered code).\n */\nexport const codeSpan = (code: string): string => {\n const fence = \"`\".repeat(longestBacktickRun(code) + 1);\n const pad = code.startsWith(\"`\") || code.endsWith(\"`\") ? \" \" : \"\";\n return `${fence}${pad}${code}${pad}${fence}`;\n};\n\n// Two struck runs side by side meet as `~~~~`: a closer and an opener that\n// GFM reads as one four-tilde run, so both print as literal tildes. A literal\n// `~` is escaped outside a bare URL, so an unescaped `~~~~` outside a code\n// span, a link destination, or a bare URL is exactly that seam, and dropping\n// it merges the runs into one strikethrough. The other alternatives only step\n// over escapes, code spans, destinations, and bare URLs so the seam is never\n// matched inside them.\nconst SEAM_STEPS =\n /\\\\[\\s\\S]|(?<ticks>`+)[\\s\\S]*?(?<!`)\\k<ticks>(?!`)|\\]\\((?:<(?:\\\\.|[^\\\\<>\\n])*>|(?:\\\\.|[^\\\\\\s)])+)\\)/u;\nconst STRIKE_SEAM = new RegExp(\n `${SEAM_STEPS.source}|${BARE_URL.source}|~~~~`,\n \"giu\"\n);\n\n// A heading that ends in a space and a run of `#` reads that run as the\n// optional closing sequence and drops it (`## Issue #` renders \"Issue\").\nconst CLOSING_HASHES = /(?<=[ \\t])#+(?=[ \\t]*$)/u;\n\n/**\n * A block's inline text, guarded where only the whole block can tell. Runs\n * are escaped one at a time, but \"import\" ending one run and a space or code\n * span opening the next form an MDX `import` statement only once they are\n * joined, whitespace the first runs put in front of a block turns it into\n * an indented code block, two struck runs fuse into literal tildes, and a\n * trailing ` #` is a heading's closing sequence. Apply it to the joined text\n * of a paragraph, heading, quote, or list item — never to code.\n */\nexport const guardBlockStart = (text: string): string =>\n escapeEsmStart(\n text\n .replaceAll(BLOCK_INDENT, \"\")\n .replaceAll(STRIKE_SEAM, (match: string) =>\n match === \"~~~~\" ? \"\" : match\n )\n .replace(CLOSING_HASHES, String.raw`\\$&`)\n );\n\nconst EDGE_SPACE = /^(?<lead>\\s*)(?<body>[\\s\\S]*?)(?<trail>\\s*)$/u;\n\n/**\n * `text` with `render` applied between its edge whitespace, or as it is when\n * it is only whitespace.\n */\nconst betweenEdges = (\n text: string,\n render: (body: string) => string\n): string => {\n const match = EDGE_SPACE.exec(text);\n const body = match?.groups?.body ?? \"\";\n if (body === \"\") {\n return text;\n }\n return `${match?.groups?.lead ?? \"\"}${render(body)}${match?.groups?.trail ?? \"\"}`;\n};\n\nconst MARK_NAMES = [\"bold\", \"code\", \"italic\", \"strike\"] as const;\n\nconst sameMarks = (\n a: InlineMarks,\n b: InlineMarks,\n names: readonly (keyof InlineMarks)[] = MARK_NAMES\n): boolean => names.every((mark) => Boolean(a[mark]) === Boolean(b[mark]));\n\n/** A stretch of neighboring runs that share marks, and those marks. */\ninterface RunGroup {\n marks: InlineMarks;\n runs: InlineRun[];\n}\n\n/** Runs split into stretches of neighbors that share the `names` marks. */\nconst groupRuns = (\n runs: InlineRun[],\n names: readonly (keyof InlineMarks)[] = MARK_NAMES\n): RunGroup[] => {\n const groups: RunGroup[] = [];\n for (const run of runs) {\n const group = groups.at(-1);\n if (group && sameMarks(group.marks, run.marks, names)) {\n group.runs.push(run);\n } else {\n groups.push({ marks: run.marks, runs: [run] });\n }\n }\n return groups;\n};\n\n/**\n * Consecutive text runs as Markdown. Neighbors with the same bold, italic,\n * and strikethrough share one set of delimiters — rendered one run at a\n * time, two bold runs met as `****` and two italic ones as `**`, which print\n * as literal asterisks. Code stays verbatim inside the backticks (an escape\n * would render as a backslash), and neighboring code joins into one span;\n * everything else is escaped. Whitespace at either edge moves outside the\n * delimiters, since `** bold **` is not strong emphasis but `**bold**` is —\n * editors routinely bold a word together with the space after it.\n */\nconst renderRuns = (\n runs: InlineRun[],\n escape: (text: string) => string\n): string =>\n groupRuns(runs, [\"bold\", \"italic\", \"strike\"])\n .map(({ marks, runs: shared }) => {\n const inner = groupRuns(shared)\n .map((same) =>\n betweenEdges(same.runs.map((run) => run.text).join(\"\"), (body) =>\n same.marks.code ? codeSpan(body) : escape(body)\n )\n )\n .join(\"\");\n return betweenEdges(inner, (body) => {\n let out = body;\n if (marks.bold) {\n out = `**${out}**`;\n }\n if (marks.italic) {\n out = `*${out}*`;\n }\n if (marks.strike) {\n out = `~~${out}~~`;\n }\n return out;\n });\n })\n .join(\"\");\n\n/** Inline parts as Markdown, each stretch of runs through {@link renderRuns}. */\nconst renderParts = (\n parts: InlinePart[],\n escape: (text: string) => string\n): string => {\n let out = \"\";\n let runs: InlineRun[] = [];\n for (const part of parts) {\n if (\"markdown\" in part) {\n out += renderRuns(runs, escape) + part.markdown;\n runs = [];\n } else {\n runs.push(part);\n }\n }\n return out + renderRuns(runs, escape);\n};\n\n/** A block's inline content as Markdown. */\nexport const renderInline = (parts: InlinePart[]): string =>\n renderParts(parts, escapeProse);\n\nconst asTyped = (text: string): string => text;\n\n/**\n * A block's inline content as MDX source, for a source whose site author\n * opted in to reading its text that way: marks still become delimiters and\n * code stays a code span, but the text goes in as typed, so a component, an\n * expression, or Markdown written in the CMS renders.\n */\nexport const renderInlineMdx = (parts: InlinePart[]): string =>\n renderParts(parts, asTyped);\n\n// A destination with whitespace, a control character, or parentheses ends\n// early in `[label](…)`; CommonMark's pointy-bracket form carries it intact.\n// oxlint-disable-next-line no-control-regex -- control characters are exactly what the bare form refuses.\nconst UNSAFE_DESTINATION = /[\\s()\\u0000-\\u001F\\u007F]/u;\n\n// Markdown decodes a destination before the browser sees it: a backslash\n// escape or a character reference becomes its character, so\n// `java&#115;cript:` would reach the `href` as `javascript:` after the safety\n// check passed it. Escaping both — and `<`/`>`, which would close the\n// pointy form early and let the rest of the URL open a second link — keeps\n// the `href` exactly the URL the CMS holds.\nconst DESTINATION_SPECIALS = /[\\\\<>]|&(?=#?[a-z0-9]+;)/giu;\n\n// A destination can't hold a line break, and the URL parser drops tabs and\n// line breaks anyway, so removing them leaves the same URL.\nconst DESTINATION_IGNORED = /[\\t\\n\\r]/gu;\n\n/** A link or image destination as Markdown carries it verbatim. */\nexport const destination = (url: string): string => {\n const escaped = url\n .replaceAll(DESTINATION_IGNORED, \"\")\n .replaceAll(DESTINATION_SPECIALS, String.raw`\\$&`);\n return UNSAFE_DESTINATION.test(escaped) ? `<${escaped}>` : escaped;\n};\n\n/**\n * A Markdown link over inline parts, or the parts alone when the target is\n * missing — or unsafe: CMS content is the editor's, not the site author's, so\n * a destination that isn't a web, mail, or relative address (`javascript:`,\n * `data:`) never becomes a clickable link on the docs site (see\n * `safe-links.ts`). The parts stay parts then, so their runs merge with their\n * neighbors'. A label escapes a bare URL too: GFM autolinks nothing inside a\n * link, so its specials would read as syntax — unless `mdx` reads the label\n * as MDX source, like {@link renderInlineMdx}.\n */\nexport const linkParts = (\n parts: InlinePart[],\n href?: string,\n mdx = false\n): InlinePart[] =>\n href && isSafeHref(href)\n ? [\n {\n markdown: `[${renderParts(parts, mdx ? asTyped : escapeMarkdownText)}](${destination(href)})`,\n },\n ]\n : parts;\n\n/** The ATX prefix for a heading level, clamped to Markdown's six. */\nexport const headingPrefix = (level: number): string =>\n `${\"#\".repeat(Math.min(Math.max(Math.trunc(level), 1), 6))} `;\n\n/** Quote every line of a block. */\nexport const blockquote = (text: string): string =>\n text\n .split(\"\\n\")\n .map((line) => (line === \"\" ? \">\" : `> ${line}`))\n .join(\"\\n\");\n\n/**\n * A list item: the marker on the first line, and every continuation line\n * indented to the marker's width so nested blocks stay inside the item.\n */\nexport const listItem = (marker: string, body: string): string => {\n const [first = \"\", ...rest] = body.split(\"\\n\");\n const pad = \" \".repeat(marker.length + 1);\n return [\n `${marker} ${first}`,\n ...rest.map((line) => (line === \"\" ? \"\" : `${pad}${line}`)),\n ].join(\"\\n\");\n};\n\n/** Indent every non-empty line, for a nested list hanging off an item. */\nexport const indent = (text: string, width: number): string => {\n const pad = \" \".repeat(width);\n return text\n .split(\"\\n\")\n .map((line) => (line === \"\" ? \"\" : `${pad}${line}`))\n .join(\"\\n\");\n};\n\n// A fence's language is one word of its info string. A backtick in it keeps\n// the fence from opening at all, so the code renders as Markdown and HTML,\n// and whitespace would start the meta Blume reads code titles from; a\n// language that isn't a single such word is dropped.\nconst FENCE_LANGUAGE = /^[^\\s`]+$/u;\n\n/**\n * A fenced code block whose fence outruns any backtick run in the code,\n * labeled with its language when that is one word a fence can carry.\n */\nexport const codeFence = (code: string, language = \"\"): string => {\n const fence = \"`\".repeat(Math.max(3, longestBacktickRun(code) + 1));\n const label = FENCE_LANGUAGE.test(language) ? language : \"\";\n return `${fence}${label}\\n${code}\\n${fence}`;\n};\n\n/** A Markdown image; the alt is escaped so a `]` in a caption can't close it. */\nexport const image = (alt: string, url: string): string =>\n `![${escapeMarkdownText(alt)}](${destination(url)})`;\n\n/**\n * Whether a lowerer's output is written as MDX. Serializers are how a CMS\n * block becomes a Blume component, and components (like directives) only\n * render in MDX, so configuring any serializer switches the source's\n * rich-text bodies to `.mdx`. The escaping above keeps the rest of the\n * lowered text valid there.\n */\nexport const writesMdx = <Node>(\n serializers?: Record<string, (node: Node) => string>\n): boolean => serializers !== undefined && Object.keys(serializers).length > 0;\n\n// A node's type is the CMS's data too: a `*/` (or `--`) in it would close the\n// comment early and let the rest run as MDX (or render as HTML). A space\n// between the two characters keeps it inside.\nconst COMMENT_END = /\\*\\/|--/gu;\n\n/**\n * A comment marking a node the lowerer has no Markdown for — an MDX comment\n * when the output is MDX, which rejects `<!-- -->`.\n */\nexport const unsupported = (what: string, mdx = false): string => {\n const label = what.replaceAll(COMMENT_END, (end) => [...end].join(\" \"));\n return mdx ? `{/* unsupported ${label} */}` : `<!-- unsupported ${label} -->`;\n};\n\n/** Blocks separated by blank lines; empty blocks are dropped. */\nexport const joinBlocks = (blocks: string[]): string =>\n blocks.filter((block) => block !== \"\").join(\"\\n\\n\");\n\n/** A whole document: its blocks plus the trailing newline a file ends with. */\nexport const markdownDocument = (blocks: string[]): string =>\n `${joinBlocks(blocks)}\\n`;\n\nconst ABSOLUTE = /^[a-z][a-z0-9+.-]*:/iu;\n\n/**\n * A media URL as a static site can reference it. A protocol-relative\n * Contentful asset (`//images.ctfassets.net/…`) gets `https:`; a path a\n * self-hosted CMS serves (`/uploads/x.png`) resolves against the CMS origin.\n */\nexport const absoluteUrl = (url: string, base?: string): string => {\n if (url.startsWith(\"//\")) {\n return `https:${url}`;\n }\n if (ABSOLUTE.test(url) || base === undefined) {\n return url;\n }\n return new URL(url, base).href;\n};\n",
185
186
  "import stringWidth from \"string-width\";\n\n/**\n * The longest prefix of `text` that renders within `max` display columns\n * without cutting inside a grapheme cluster. Columns are `string-width`'s: a\n * fullwidth or wide character counts 2, a combining mark 0, everything else 1\n * — the same measure `blume audit` grades titles and meta descriptions with,\n * so text cut here stays inside the audit's thresholds for every script, not\n * just Latin. Grapheme segmentation is rule-based (UAX #29), so unlike word\n * segmentation it does not drift across ICU builds, and it can never split a\n * surrogate pair or halve an emoji sequence.\n */\nexport const columnsPrefix = (text: string, max: number): string => {\n let end = 0;\n let used = 0;\n const graphemes = new Intl.Segmenter(undefined, { granularity: \"grapheme\" });\n for (const { index, segment } of graphemes.segment(text)) {\n const width = stringWidth(segment);\n if (used + width > max) {\n break;\n }\n used += width;\n end = index + segment.length;\n }\n return text.slice(0, end);\n};\n",
186
- "/**\n * A sentence's closing punctuation, allowing trailing closing quotes or\n * brackets (`…done.\")`) and the CJK full-width marks.\n */\nconst TERMINAL_PUNCTUATION = /[.!?…。!?][\"'”’)\\]]*$/u;\n\n/**\n * Close a fragment of spec prose as a sentence. OpenAPI `summary` values are\n * usually title-like (\"Get a flag\", no period), so prose that runs straight\n * into the next generated sentence (\"Get a flag Reference for …\") needs one.\n * Empty text stays empty.\n */\nexport const asSentence = (text: string): string =>\n text === \"\" || TERMINAL_PUNCTUATION.test(text) ? text : `${text}.`;\n",
187
+ "/**\n * A sentence's closing punctuation, allowing trailing closing quotes or\n * brackets (`…done.\")`) and the CJK full-width marks.\n */\nconst TERMINAL_PUNCTUATION = /[.!?…。!?][\"'”’)\\]]*$/u;\n\n/**\n * A colon closing the fragment introduces a list or block it was cut from\n * (\"Supports two modes:\" before its bullets). The ASCII or full-width colon,\n * with the space French typesetting puts before it (\"Deux modes :\").\n */\nconst LEAD_IN_COLON = /\\s*[::]\\s*$/u;\n\n/**\n * A trailing colon that belongs to a literal rather than the prose: an emoji\n * shortcode (`:rocket:`) or a `Foo::` scope.\n */\nconst LITERAL_COLON = /(?:[::]{2}|:[\\w+-]+:)\\s*$/u;\n\n/** Whether `text` ends in a colon that leads in to what follows it. */\nexport const endsInLeadIn = (text: string): boolean =>\n LEAD_IN_COLON.test(text) && !LITERAL_COLON.test(text);\n\n/**\n * Close prose with a period unless it already ends a sentence. A colon at the\n * end is kept and gains the period: use this when the caller has already told\n * a lead-in apart from a literal (`tenant:` in inline code). Empty text stays\n * empty.\n */\nexport const closeSentence = (text: string): string =>\n text === \"\" || TERMINAL_PUNCTUATION.test(text) ? text : `${text}.`;\n\n/**\n * Close a fragment of spec prose as a sentence. OpenAPI `summary` values are\n * usually title-like (\"Get a flag\", no period), so prose that runs straight\n * into the next generated sentence (\"Get a flag Reference for …\") needs one.\n * A lead-in colon becomes the period rather than gaining one after it, and\n * prose that already ended before it (\"e.g.:\") keeps its own mark.\n */\nexport const asSentence = (text: string): string =>\n closeSentence(endsInLeadIn(text) ? text.replace(LEAD_IN_COLON, \"\") : text);\n",
187
188
  "import { graphqlSignature } from \"./graphql.ts\";\nimport type { ApiOperationRef, ApiSpecData } from \"./model.ts\";\n\n/**\n * The one-line name of what an operation page documents, in the notation of\n * its spec kind: `GET /pets/{id}` for an HTTP endpoint, `SEND user/signup`\n * for an AsyncAPI channel action, `query pets` or `type Pet` for a GraphQL\n * member. The page titles an untitled operation with it and the agent\n * surfaces (`<route>.md`, llms-full.txt, MCP `get_page`) downlevel\n * `<Operation>` to it, so the two can never disagree about the endpoint.\n */\nexport const operationSignature = (\n spec: Pick<ApiSpecData, \"kind\">,\n operation: Pick<ApiOperationRef, \"method\" | \"path\">\n): string =>\n spec.kind === \"graphql\"\n ? graphqlSignature(operation)\n : `${operation.method.toUpperCase()} ${operation.path}`;\n",
188
189
  "import { withBasePath } from \"../core/base-path.ts\";\nimport matter from \"../core/frontmatter.ts\";\nimport type { FolderMeta } from \"../core/schema.ts\";\nimport { hashText } from \"../core/sources/cache.ts\";\nimport type {\n ContentSource,\n SourceContext,\n SourceEntry,\n SourceLoadResult,\n} from \"../core/sources/types.ts\";\nimport type { Diagnostic } from \"../core/types.ts\";\nimport { extractAsyncApiOperations } from \"./asyncapi.ts\";\nimport type { AsyncApiDocument } from \"./asyncapi.ts\";\nimport { specIssues } from \"./checks.ts\";\nimport type { SpecIssue } from \"./checks.ts\";\nimport { extractGraphqlOperations } from \"./graphql.ts\";\nimport type { GraphqlDocument } from \"./graphql.ts\";\nimport { extractOperations } from \"./model.ts\";\nimport type {\n ApiDocument,\n ApiOperationRef,\n ApiSpecData,\n ApiTagRef,\n OpenApiData,\n} from \"./model.ts\";\nimport {\n InvalidSpecError,\n parseAsyncApiSpec,\n parseGraphqlSpec,\n parseSpec,\n} from \"./parse.ts\";\nimport type { BlumeReferenceSource } from \"./references.ts\";\nimport { operationMdx, overviewMdx } from \"./render-mdx.ts\";\nimport type { RenderedPage } from \"./render-mdx.ts\";\nimport { SpecDependencyError } from \"./spec-dependency-error.ts\";\n\n/**\n * The staged content source behind Blume's own API reference renderer (OpenAPI\n * and AsyncAPI alike). Each configured spec is parsed once here, then lowered\n * into one MDX page per operation plus an overview page — so operations become\n * first-class Blume pages (real routes, sidebar, search, i18n, OG) and the\n * parsed documents are handed to the generated `blume:openapi` module for the\n * UI components to render. The source keeps its historical `openapi` name for\n * both kinds — downstream consumers (`agents.llmsTxt.openapi`, the llms noindex\n * exemption) key on it as \"the generated API reference source\".\n */\n\n/** A content source that also exposes the specs it parsed during `load()`. */\nexport interface OpenApiContentSource extends ContentSource {\n readonly kind: \"openapi-source\";\n /** Parsed spec data, populated by `load()`; `{}` before the first load. */\n openApiData: () => OpenApiData;\n}\n\n/** Narrow a content source to the OpenAPI source (to read its parsed specs). */\nexport const isOpenApiSource = (\n source: ContentSource\n): source is OpenApiContentSource =>\n \"kind\" in source && source.kind === \"openapi-source\";\n\n/** Route (`/reference/pet/add-pet`) to a staged content ref, without extension. */\nconst routeToRef = (route: string): string => route.replace(/^\\/+/u, \"\");\n\n/** Human label per spec kind, so one kind's failure never reads as another's. */\nconst KIND_LABELS = {\n asyncapi: \"AsyncAPI\",\n graphql: \"GraphQL\",\n openapi: \"OpenAPI\",\n} satisfies Record<BlumeReferenceSource[\"kind\"], string>;\n\n/** Diagnostic-code prefix per spec kind. */\nconst CODE_PREFIXES = {\n asyncapi: \"BLUME_ASYNCAPI\",\n graphql: \"BLUME_GRAPHQL\",\n openapi: \"BLUME_OPENAPI\",\n} satisfies Record<BlumeReferenceSource[\"kind\"], string>;\n\n/**\n * Parse-level warning code per kind: an offline cache fallback for any kind,\n * plus lossy 2.x→3.0 conversion notes for AsyncAPI — hence the broader codes\n * there and for GraphQL (OpenAPI keeps its historical one).\n */\nconst SPEC_WARNING_CODES = {\n asyncapi: \"BLUME_ASYNCAPI_SPEC_WARNING\",\n graphql: \"BLUME_GRAPHQL_SPEC_WARNING\",\n openapi: \"BLUME_OPENAPI_STALE\",\n} satisfies Record<BlumeReferenceSource[\"kind\"], string>;\n\n/**\n * Extract-level skip code per kind. OpenAPI keeps its historical code (the\n * only extract warning it emits is the unresolved $ref path item); the\n * GraphQL extractor currently skips nothing, so its code is reserved.\n */\nconst SKIPPED_CODES = {\n asyncapi: \"BLUME_ASYNCAPI_SKIPPED_OPERATION\",\n graphql: \"BLUME_GRAPHQL_SKIPPED\",\n openapi: \"BLUME_OPENAPI_REF_PATH_ITEM\",\n} satisfies Record<BlumeReferenceSource[\"kind\"], string>;\n\n/** `_EMPTY` diagnostic suggestion per kind. */\nconst EMPTY_SUGGESTIONS = {\n asyncapi:\n \"Check the spec points at an AsyncAPI document with `channels` and `operations`.\",\n graphql:\n \"Check the spec points at a GraphQL schema (SDL or introspection JSON) whose root types declare fields.\",\n openapi:\n \"Check the spec points at an OpenAPI document with operations under `paths`.\",\n} satisfies Record<BlumeReferenceSource[\"kind\"], string>;\n\n/** `_UNAVAILABLE` suggestion for a readable-but-invalid spec, per kind. */\nconst INVALID_SUGGESTIONS = {\n asyncapi:\n \"Point the spec at an AsyncAPI document (a YAML or JSON file with an object at the top level).\",\n graphql:\n \"Point the spec at a GraphQL schema — SDL text or an introspection JSON result.\",\n openapi:\n \"Point the spec at an OpenAPI document (a YAML or JSON file with an object at the top level).\",\n} satisfies Record<BlumeReferenceSource[\"kind\"], string>;\n\n/**\n * What to suggest for a spec that failed to load: the install command when\n * reading it needs a package the project lacks, a fix to the file when it\n * isn't a spec of its kind, and reachability for everything else (a fetch or\n * read failure).\n */\nconst failureSuggestion = (\n error: Error,\n kind: BlumeReferenceSource[\"kind\"]\n): string => {\n if (error instanceof SpecDependencyError) {\n return error.suggestion;\n }\n if (error instanceof InvalidSpecError) {\n return INVALID_SUGGESTIONS[kind];\n }\n return \"Check the spec URL/path is reachable from the build environment; behind a proxy, set HTTP(S)_PROXY.\";\n};\n\nconst toEntry = (rendered: RenderedPage, ref: string): SourceEntry => {\n const raw = matter.stringify(`${rendered.body}\\n`, rendered.data);\n return {\n body: { format: \"mdx\", text: rendered.body },\n // Spread so the named frontmatter shape satisfies the open metadata\n // dictionary every source entry carries.\n data: { ...rendered.data },\n hash: hashText(raw),\n raw,\n ref,\n };\n};\n\n/** All staged entries for one spec: operations first, overview last. */\nconst specEntries = (\n spec: ApiSpecData,\n operations: ApiOperationRef[],\n reference: BlumeReferenceSource\n): SourceEntry[] => {\n const entries = operations.map((operation) =>\n toEntry(\n operationMdx(spec, operation, reference),\n `${routeToRef(operation.route)}.mdx`\n )\n );\n // Overview last so an operation sets the section's routePath before the index\n // page is inserted (the group's routePath is derived from its first child).\n // A root-mounted reference refs `index.mdx`, not `/index.mdx`.\n const base = routeToRef(spec.route);\n entries.push(\n toEntry(\n overviewMdx(spec, reference),\n base ? `${base}/index.mdx` : \"index.mdx\"\n )\n );\n return entries;\n};\n\n/**\n * Label each tag's sidebar group with the spec's own tag name, and order the\n * groups as the overview does: the spec's declared tag order, then first use\n * (see `operationCollector`), not alphabetically. The group label is\n * otherwise re-humanized from the tag's route slug (split on hyphens,\n * title-cased), which mangles authored casing and symbols — `OAuth2` →\n * \"Oauth2\", `Größe` → \"Größe\" only by luck of the slug. A source that names\n * its own `label` gets it on its route's group the same way (`GitHub (v2)`,\n * not \"Github V2\"). Keys are the directories under the reference route, the\n * same group paths `meta.ts` files use, so user-authored meta still\n * overrides these.\n */\nconst tagFolderMeta = (\n spec: ApiSpecData,\n tags: { slug: string; name: string }[],\n groupLabel: string | undefined\n): Record<string, FolderMeta> => {\n const base = routeToRef(spec.route);\n const meta: Record<string, FolderMeta> = Object.fromEntries(\n tags.map((tag, order) => [\n base ? `${base}/${tag.slug}` : tag.slug,\n { order, title: tag.name },\n ])\n );\n // A root-mounted reference has no group of its own to name.\n if (groupLabel !== undefined && base) {\n meta[base] = { title: groupLabel };\n }\n return meta;\n};\n\ninterface LoadedSpec {\n slug: string;\n spec: ApiSpecData;\n entries: SourceEntry[];\n /** Sidebar-group labels for the spec's tag directories. */\n folderMeta: Record<string, FolderMeta>;\n /** Non-fatal notes from the load (e.g. an offline cache fallback). */\n diagnostics: Diagnostic[];\n}\n\n/** One parsed spec, whichever front-end read it — the kind dispatch seam. */\ninterface ParsedReference {\n document: ApiDocument | AsyncApiDocument | GraphqlDocument;\n warnings: string[];\n operations: ApiOperationRef[];\n tags: ApiTagRef[];\n extractWarnings: string[];\n /** Spec mistakes that would render silently wrong (OpenAPI only). */\n issues?: SpecIssue[];\n}\n\nconst parseReference = async (\n reference: BlumeReferenceSource,\n ctx: SourceContext\n): Promise<ParsedReference> => {\n const options = { cacheDir: ctx.cacheDir, refresh: ctx.refresh };\n if (reference.kind === \"asyncapi\") {\n const { document, warnings } = await parseAsyncApiSpec(\n reference.spec,\n ctx.projectRoot,\n options\n );\n const extracted = extractAsyncApiOperations(document, reference.route);\n return {\n document,\n extractWarnings: extracted.warnings,\n operations: extracted.operations,\n tags: extracted.tags,\n warnings,\n };\n }\n if (reference.kind === \"graphql\") {\n const { document, warnings } = await parseGraphqlSpec(\n reference.spec,\n ctx.projectRoot,\n options\n );\n const extracted = extractGraphqlOperations(document, reference.route);\n return {\n document,\n extractWarnings: extracted.warnings,\n operations: extracted.operations,\n tags: extracted.tags,\n warnings,\n };\n }\n const { document, issues, warnings } = await parseSpec(\n reference.spec,\n ctx.projectRoot,\n { ...options, overlays: reference.overlays }\n );\n const extracted = extractOperations(document, reference.route);\n return {\n document,\n extractWarnings: extracted.warnings,\n issues: [...issues, ...specIssues(document)],\n operations: extracted.operations,\n tags: extracted.tags,\n warnings,\n };\n};\n\nexport const openApiSource = (\n references: BlumeReferenceSource[],\n ctx: SourceContext\n): OpenApiContentSource => {\n let parsed: OpenApiData = {};\n\n const loadReference = async (\n reference: BlumeReferenceSource\n ): Promise<LoadedSpec | Diagnostic> => {\n // Human label and diagnostic-code prefix for the spec's kind, so an\n // AsyncAPI failure never reads as an OpenAPI one.\n const kindLabel = KIND_LABELS[reference.kind];\n const codePrefix = CODE_PREFIXES[reference.kind];\n try {\n const { document, warnings, operations, tags, extractWarnings, issues } =\n await parseReference(reference, ctx);\n const info = document.info ?? { title: reference.label, version: \"\" };\n // The playground proxy resolves here, not client-side: `true` selects\n // the built-in `/_api-proxy` route (mounted under the site `basePath`,\n // like every served URL this module emits), a non-empty string is an\n // external proxy used verbatim, and anything else (`false`, `\"\"`)\n // means the Send button fetches the API directly.\n const { proxy: configuredProxy } = reference.display.playground;\n let proxy: string | false = false;\n if (configuredProxy === true) {\n proxy = withBasePath(reference.basePath, \"/_api-proxy\");\n } else if (configuredProxy !== false && configuredProxy !== \"\") {\n proxy = configuredProxy;\n }\n const spec: ApiSpecData = {\n codeSamples: reference.display.codeSamples,\n description: info.description ?? \"\",\n document,\n expandSchemas: reference.display.expandSchemas,\n kind: reference.kind,\n label: reference.label,\n // Operation pages flow through the content pipeline, which mounts them\n // under the site-wide `basePath` (staged entry refs below stay\n // base-less); serialize the served route so components link to the\n // pages' real URLs.\n operations: Object.fromEntries(\n operations.map((operation) => [\n operation.key,\n {\n ...operation,\n route: withBasePath(reference.basePath, operation.route),\n },\n ])\n ),\n playground: { enabled: reference.display.playground.enabled, proxy },\n route: reference.route,\n slug: reference.slug,\n tags,\n title: info.title ?? reference.label,\n version: info.version ?? \"\",\n };\n // Only GraphQL references carry a live endpoint and its auth (a schema\n // names no server); assigned separately so the keys stay absent\n // otherwise.\n if (reference.endpoint !== undefined) {\n spec.endpoint = reference.endpoint;\n }\n if (reference.auth !== undefined) {\n spec.auth = reference.auth;\n }\n return {\n diagnostics: [\n ...warnings.map((message) => ({\n code: SPEC_WARNING_CODES[reference.kind],\n message,\n severity: \"warning\" as const,\n })),\n ...extractWarnings.map((message) => ({\n code: SKIPPED_CODES[reference.kind],\n message: `In ${kindLabel} spec \"${reference.spec}\": ${message}`,\n severity: \"warning\" as const,\n })),\n ...(issues ?? []).map((issue) => ({\n code: issue.code,\n message: `In ${kindLabel} spec \"${reference.spec}\": ${issue.message}`,\n severity: \"warning\" as const,\n suggestion: issue.suggestion,\n })),\n // A document with no operations (say, a config file that happens to\n // parse as YAML) would otherwise build a nav tab onto an empty\n // reference with no hint why.\n ...(operations.length === 0\n ? [\n {\n code: `${codePrefix}_EMPTY`,\n message: `${kindLabel} spec \"${reference.spec}\" for ${reference.route} declares no operations; its API reference is empty.`,\n severity: \"warning\" as const,\n suggestion: EMPTY_SUGGESTIONS[reference.kind],\n },\n ]\n : []),\n ],\n entries: specEntries(spec, operations, reference),\n folderMeta: tagFolderMeta(spec, tags, reference.groupLabel),\n slug: reference.slug,\n spec,\n };\n } catch (error) {\n // SAFETY: spec loading fails with Error instances (fetch, read, parse,\n // and missing-package errors alike).\n const failure = error as Error;\n return {\n code: `${codePrefix}_UNAVAILABLE`,\n message: `Could not load ${kindLabel} spec \"${reference.spec}\" for ${reference.route} (${failure.message}); its reference pages were skipped.`,\n // A configured-but-unloadable spec ships a dead nav tab (a 404 route),\n // so fail loudly in build (blocks under --strict) while staying a warning\n // in dev so offline work still runs.\n severity: ctx.mode === \"build\" ? \"error\" : \"warning\",\n suggestion: failureSuggestion(failure, reference.kind),\n };\n }\n };\n\n const load = async (): Promise<SourceLoadResult> => {\n const results = await Promise.all(references.map(loadReference));\n const entries: SourceEntry[] = [];\n // Route collisions recorded while deduping (see `blumeReferences`): a\n // dropped source loses a whole spec's pages, so warn even when the kept\n // spec loads cleanly.\n const diagnostics: Diagnostic[] = references.flatMap((reference) =>\n (reference.collisions ?? []).map((message) => ({\n code: \"BLUME_OPENAPI_ROUTE_COLLISION\",\n message,\n severity: \"warning\" as const,\n }))\n );\n const data: OpenApiData = {};\n const folderMeta: Record<string, FolderMeta> = {};\n for (const result of results) {\n if (\"severity\" in result) {\n diagnostics.push(result);\n continue;\n }\n data[result.slug] = result.spec;\n entries.push(...result.entries);\n Object.assign(folderMeta, result.folderMeta);\n diagnostics.push(...result.diagnostics);\n }\n parsed = data;\n return { diagnostics, entries, folderMeta };\n };\n\n return {\n kind: \"openapi-source\",\n load,\n name: \"openapi\",\n openApiData: () => parsed,\n staged: true,\n };\n};\n",
189
190
  "/**\n * Code-sample generation for an operation. Deliberately dependency-free: the\n * playground client renders samples live in the browser, so this module must\n * stay out of the server-only dependency graph (no helpers.ts, no\n * openapi-sampler). Requests are assembled once by `buildRequest` in\n * `request.ts`; the builders here only render a finished `RequestSample` as\n * simple, copy-pasteable starter code — not an exhaustive SDK.\n */\n\nexport interface RequestSample {\n method: string;\n url: string;\n headers: Record<string, string>;\n /**\n * The request body as sent, when the operation takes one: JSON text,\n * form-urlencoded pairs, or a raw media type's text.\n */\n body?: string;\n bodyValue?: unknown;\n /**\n * A `multipart/form-data` body's parts as `[name, value]` pairs, set\n * instead of `body`. The request carries no Content-Type of its own for\n * them: the client writes one with the parts' boundary.\n */\n formData?: [string, string][];\n}\n\nconst headerLines = (\n headers: Record<string, string>,\n format: (key: string, value: string) => string\n): string[] =>\n Object.entries(headers).map(([key, value]) => format(key, value));\n\n/**\n * A single-quoted POSIX shell word. Nothing expands inside single quotes — no\n * `$`, backtick, `!`, or `\\` — so a value reaches curl byte for byte; a\n * literal `'` closes the quote, adds an escaped one, and reopens it.\n */\nconst shellQuote = (value: string): string =>\n `'${value.replaceAll(\"'\", String.raw`'\\''`)}'`;\n\n/**\n * A double-quoted string literal for the JavaScript and Python samples. JSON's\n * string escapes are a subset of both languages' — a quote in a header value\n * (`If-Match: \"33a64df5\"`) or a backslash becomes an escape rather than\n * ending the literal early.\n */\nconst stringLiteral = (value: string): string => JSON.stringify(value);\n\nconst curlSnippet = (sample: RequestSample): string => {\n const lines = [\n // `-X HEAD` sends a HEAD but still waits for the body the response\n // announces, so the command hangs; `--head` knows there is none.\n sample.method === \"HEAD\"\n ? `curl --head ${shellQuote(sample.url)}`\n : `curl -X ${sample.method} ${shellQuote(sample.url)}`,\n ...headerLines(\n sample.headers,\n (key, value) => ` -H ${shellQuote(`${key}: ${value}`)}`\n ),\n ];\n if (sample.body) {\n lines.push(` -d ${shellQuote(sample.body)}`);\n }\n // `--form-string`, not `-F`: `-F` reads a value starting with `@` or `<` as\n // a file to upload.\n for (const [name, value] of sample.formData ?? []) {\n lines.push(` --form-string ${shellQuote(`${name}=${value}`)}`);\n }\n return lines.join(\" \\\\\\n\");\n};\n\n/**\n * Whether fetch refuses to send `method` (an upper-case HTTP method). TRACE is\n * one of the Fetch standard's forbidden methods, and the only one an OpenAPI\n * spec can declare: browsers and Node's fetch alike throw a TypeError before\n * any request goes out.\n */\nexport const fetchRefusesMethod = (method: string): boolean =>\n method === \"TRACE\";\n\n/**\n * The JavaScript sample for a method fetch refuses: a note in place of a call\n * that could only throw.\n */\nconst FETCH_REFUSED_NOTE = [\n \"// fetch() refuses the TRACE method: browsers and Node both throw before\",\n \"// sending, so there's no fetch sample for this operation. Send it with\",\n \"// curl or another HTTP client instead.\",\n].join(\"\\n\");\n\nconst fetchCall = (sample: RequestSample, declaration: string): string => {\n if (fetchRefusesMethod(sample.method)) {\n return FETCH_REFUSED_NOTE;\n }\n const options = [` method: ${stringLiteral(sample.method)}`];\n if (Object.keys(sample.headers).length > 0) {\n const headers = headerLines(\n sample.headers,\n (key, value) => ` ${stringLiteral(key)}: ${stringLiteral(value)}`\n ).join(\",\\n\");\n options.push(` headers: {\\n${headers}\\n }`);\n }\n if (sample.body) {\n // Always the raw editor text as a string literal, never re-read as a JS\n // expression: the sample must send byte-for-byte what the live request\n // sends, and an object literal doesn't round-trip every valid JSON\n // document — `{\"__proto__\":{\"x\":1}}` sets a prototype instead of a key,\n // and an id past 2^53 loses digits through a JS number. The string\n // literal also stays syntactically valid while the editor holds mid-edit\n // text that isn't JSON yet.\n options.push(` body: ${stringLiteral(sample.body)}`);\n }\n // A FormData body: fetch writes the multipart Content-Type and boundary.\n let form = \"\";\n if (sample.formData) {\n form = [\n \"const form = new FormData();\\n\",\n ...sample.formData.map(\n ([name, value]) =>\n `form.append(${stringLiteral(name)}, ${stringLiteral(value)});\\n`\n ),\n \"\\n\",\n ].join(\"\");\n options.push(\" body: form\");\n }\n return `${form}const ${declaration} = await fetch(${stringLiteral(sample.url)}, {\\n${options.join(\n \",\\n\"\n )}\\n});`;\n};\n\nconst fetchSnippet = (sample: RequestSample): string =>\n fetchCall(sample, \"response\");\n\nconst typescriptSnippet = (sample: RequestSample): string =>\n fetchCall(sample, \"response: Response\");\n\n/** The methods `requests` has a module-level helper for. */\nconst PYTHON_METHODS = new Set([\n \"delete\",\n \"get\",\n \"head\",\n \"options\",\n \"patch\",\n \"post\",\n \"put\",\n]);\n\nconst pythonSnippet = (sample: RequestSample): string => {\n const args = [` ${stringLiteral(sample.url)}`];\n if (Object.keys(sample.headers).length > 0) {\n const headers = headerLines(\n sample.headers,\n (key, value) => ` ${stringLiteral(key)}: ${stringLiteral(value)}`\n ).join(\",\\n\");\n args.push(` headers={\\n${headers}\\n }`);\n }\n if (sample.body) {\n // Same rule as the fetch snippet: the raw text travels as a string via\n // `data=` rather than a `json=` dict — a Python literal re-serializes\n // `1e400` as `Infinity` and would otherwise diverge from the live send.\n args.push(` data=${stringLiteral(sample.body)}`);\n }\n if (sample.formData) {\n // `files=` is what makes requests encode multipart; a `(None, value)`\n // tuple is a plain field rather than an upload.\n const parts = sample.formData.map(\n ([name, value]) =>\n ` (${stringLiteral(name)}, (None, ${stringLiteral(value)})),\\n`\n );\n args.push(` files=[\\n${parts.join(\"\")} ]`);\n }\n // requests has a helper per common method; anything else (TRACE) goes\n // through `requests.request` with the method named.\n const method = sample.method.toLowerCase();\n let call = `requests.${method}`;\n if (!PYTHON_METHODS.has(method)) {\n call = \"requests.request\";\n args.unshift(` ${stringLiteral(sample.method)}`);\n }\n return `import requests\\n\\nresponse = ${call}(\\n${args.join(\",\\n\")},\\n)`;\n};\n\n// ---------------------------------------------------------------------------\n// Shared helpers for the compiled and scripting languages below\n// ---------------------------------------------------------------------------\n\nconst hex = (code: number, width: number): string =>\n code.toString(16).padStart(width, \"0\");\n\n/**\n * A string literal for a language with C-style escapes: the delimiter and\n * `\\` escaped, newline, carriage return, and tab by name, any other control\n * character through `control` (each language spells a code point\n * differently, and some reject JSON's `\\uXXXX`), and each character in\n * `sigils` backslash-escaped so it can't start an interpolation (`$` in\n * Kotlin and Dart, `#` in Ruby).\n */\nconst quoted = (\n value: string,\n control: (code: number) => string,\n sigils = \"\",\n delimiter = '\"'\n): string => {\n let out = delimiter;\n for (const char of value) {\n const code = char.codePointAt(0) ?? 0;\n if (char === delimiter || char === \"\\\\\" || sigils.includes(char)) {\n out += `\\\\${char}`;\n } else if (char === \"\\n\") {\n out += String.raw`\\n`;\n } else if (char === \"\\r\") {\n out += String.raw`\\r`;\n } else if (char === \"\\t\") {\n out += String.raw`\\t`;\n } else if (code < 0x20 || code === 0x7f) {\n out += control(code);\n } else {\n out += char;\n }\n }\n return `${out}${delimiter}`;\n};\n\nconst goString = (value: string): string =>\n quoted(value, (code) => `\\\\x${hex(code, 2)}`);\n// Java decodes `\\uXXXX` before it tokenizes, which is safe for a control\n// character inside a string literal (only a line break isn't, and those are\n// spelled `\\n` and `\\r`).\nconst javaString = (value: string): string =>\n quoted(value, (code) => `\\\\u${hex(code, 4)}`);\nconst csharpString = javaString;\n// C and C++ reject a `\\u` escape below U+00A0; octal always works. A `?`\n// before another is escaped too, so no `??=`-style trigraph can form (strict\n// C modes still translate them).\nconst cString = (value: string): string =>\n quoted(value, (code) => `\\\\${code.toString(8).padStart(3, \"0\")}`).replaceAll(\n /\\?(?=\\?)/gu,\n \"?\\\\\"\n );\nconst braceString = (value: string): string =>\n quoted(value, (code) => `\\\\u{${hex(code, 1)}}`);\nconst kotlinString = (value: string): string =>\n quoted(value, (code) => `\\\\u${hex(code, 4)}`, \"$\");\nconst rubyString = (value: string): string =>\n quoted(value, (code) => `\\\\u${hex(code, 4)}`, \"#\");\nconst dartString = (value: string): string =>\n quoted(value, (code) => `\\\\x${hex(code, 2)}`, \"$\", \"'\");\n\n/**\n * A single-quoted PHP string: nothing interpolates, and only `\\` and `'`\n * need escaping.\n */\nconst phpString = (value: string): string =>\n `'${value.replaceAll(\"\\\\\", \"\\\\\\\\\").replaceAll(\"'\", String.raw`\\'`)}'`;\n\n/**\n * A single-quoted PowerShell string: nothing expands, and a quote is doubled.\n * PowerShell also closes a string on the typographic single quotes, so those\n * are doubled too.\n */\nconst powershellString = (value: string): string =>\n `'${value.replaceAll(/['‘’‚‛]/gu, (quote) => quote + quote)}'`;\n\n/** A request's `Content-Type` apart from its other headers. */\ninterface ContentTypeSplit {\n contentType: string | undefined;\n rest: [string, string][];\n}\n\n/** The request's `Content-Type`, and its other headers without it. */\nconst splitContentType = (\n headers: Record<string, string>\n): ContentTypeSplit => {\n const entries = Object.entries(headers);\n const match = entries.find(([key]) => key.toLowerCase() === \"content-type\");\n return {\n contentType: match?.[1],\n rest: entries.filter(([key]) => key.toLowerCase() !== \"content-type\"),\n };\n};\n\n/**\n * The boundary for a multipart body written out by hand, for clients with no\n * form builder of their own (Java's and Swift's).\n */\nconst MULTIPART_BOUNDARY = \"BlumeFormBoundary7MA4YWxkTrZu0gW\";\n\n/** A `multipart/form-data` body for `parts`, as the bytes on the wire. */\nconst multipartBody = (parts: [string, string][]): string =>\n [\n ...parts.map(\n ([name, value]) =>\n `--${MULTIPART_BOUNDARY}\\r\\nContent-Disposition: form-data; name=\"${name\n .replaceAll('\"', \"%22\")\n .replaceAll(\"\\r\", \"%0D\")\n .replaceAll(\"\\n\", \"%0A\")}\"\\r\\n\\r\\n${value}\\r\\n`\n ),\n `--${MULTIPART_BOUNDARY}--\\r\\n`,\n ].join(\"\");\n\n/** A note in place of a sample whose client can't send `method`. */\nconst unsupportedMethod = (\n comment: string,\n client: string,\n method: string\n): string =>\n `${comment} ${client} has no ${method} method, so there's no sample for this\\n${comment} operation here. Send it with curl or another HTTP client instead.`;\n\n// ---------------------------------------------------------------------------\n// Node.js (axios)\n// ---------------------------------------------------------------------------\n\nconst nodeSnippet = (sample: RequestSample): string => {\n const config = [\n ` method: ${stringLiteral(sample.method)}`,\n ` url: ${stringLiteral(sample.url)}`,\n ];\n if (Object.keys(sample.headers).length > 0) {\n const headers = headerLines(\n sample.headers,\n (key, value) => ` ${stringLiteral(key)}: ${stringLiteral(value)}`\n ).join(\",\\n\");\n config.push(` headers: {\\n${headers}\\n }`);\n }\n if (sample.body) {\n config.push(` data: ${stringLiteral(sample.body)}`);\n }\n let form = \"\";\n if (sample.formData) {\n form = [\n \"const form = new FormData();\\n\",\n ...sample.formData.map(\n ([name, value]) =>\n `form.append(${stringLiteral(name)}, ${stringLiteral(value)});\\n`\n ),\n \"\\n\",\n ].join(\"\");\n config.push(\" data: form\");\n }\n return `import axios from \"axios\";\\n\\n${form}const response = await axios.request({\\n${config.join(\",\\n\")}\\n});`;\n};\n\n// ---------------------------------------------------------------------------\n// PHP (the curl extension)\n// ---------------------------------------------------------------------------\n\nconst phpSnippet = (sample: RequestSample): string => {\n const options = [\n ` CURLOPT_URL => ${phpString(sample.url)}`,\n \" CURLOPT_RETURNTRANSFER => true\",\n // As with `curl --head`: a HEAD request expects no body.\n sample.method === \"HEAD\"\n ? \" CURLOPT_NOBODY => true\"\n : ` CURLOPT_CUSTOMREQUEST => ${phpString(sample.method)}`,\n ];\n const headers = Object.entries(sample.headers);\n if (headers.length > 0) {\n const lines = headers.map(\n ([key, value]) => ` ${phpString(`${key}: ${value}`)},\\n`\n );\n options.push(` CURLOPT_HTTPHEADER => [\\n${lines.join(\"\")} ]`);\n }\n if (sample.body) {\n options.push(` CURLOPT_POSTFIELDS => ${phpString(sample.body)}`);\n }\n if (sample.formData) {\n // An array (rather than a string) makes curl send multipart/form-data.\n const fields = sample.formData.map(\n ([name, value]) => ` ${phpString(name)} => ${phpString(value)},\\n`\n );\n options.push(` CURLOPT_POSTFIELDS => [\\n${fields.join(\"\")} ]`);\n }\n return `<?php\\n\\n$curl = curl_init();\\n\\ncurl_setopt_array($curl, [\\n${options.join(\",\\n\")},\\n]);\\n\\n$response = curl_exec($curl);`;\n};\n\n// ---------------------------------------------------------------------------\n// Go (net/http)\n// ---------------------------------------------------------------------------\n\nconst goSnippet = (sample: RequestSample): string => {\n const imports = new Set([\"fmt\", \"io\", \"net/http\"]);\n const lines: string[] = [];\n let body = \"nil\";\n if (sample.formData) {\n imports.add(\"bytes\");\n imports.add(\"mime/multipart\");\n lines.push(\n \"\\tvar body bytes.Buffer\",\n \"\\tform := multipart.NewWriter(&body)\",\n ...sample.formData.map(\n ([name, value]) =>\n `\\tform.WriteField(${goString(name)}, ${goString(value)})`\n ),\n \"\\tform.Close()\",\n \"\"\n );\n body = \"&body\";\n } else if (sample.body) {\n imports.add(\"strings\");\n lines.push(`\\tbody := strings.NewReader(${goString(sample.body)})`);\n body = \"body\";\n }\n lines.push(\n `\\treq, err := http.NewRequest(${goString(sample.method)}, ${goString(sample.url)}, ${body})`,\n \"\\tif err != nil {\",\n \"\\t\\tpanic(err)\",\n \"\\t}\"\n );\n for (const [key, value] of Object.entries(sample.headers)) {\n lines.push(`\\treq.Header.Set(${goString(key)}, ${goString(value)})`);\n }\n if (sample.formData) {\n lines.push('\\treq.Header.Set(\"Content-Type\", form.FormDataContentType())');\n }\n lines.push(\n \"\",\n \"\\tres, err := http.DefaultClient.Do(req)\",\n \"\\tif err != nil {\",\n \"\\t\\tpanic(err)\",\n \"\\t}\",\n \"\\tdefer res.Body.Close()\",\n \"\",\n \"\\tdata, _ := io.ReadAll(res.Body)\",\n \"\\tfmt.Println(string(data))\"\n );\n const importBlock = [...imports]\n .toSorted()\n .map((path) => `\\t\"${path}\"`)\n .join(\"\\n\");\n return `package main\\n\\nimport (\\n${importBlock}\\n)\\n\\nfunc main() {\\n${lines.join(\"\\n\")}\\n}`;\n};\n\n// ---------------------------------------------------------------------------\n// Java (java.net.http)\n// ---------------------------------------------------------------------------\n\nconst javaSnippet = (sample: RequestSample): string => {\n const builder = [` .uri(URI.create(${javaString(sample.url)}))`];\n for (const [key, value] of Object.entries(sample.headers)) {\n builder.push(` .header(${javaString(key)}, ${javaString(value)})`);\n }\n let body = \"HttpRequest.BodyPublishers.noBody()\";\n if (sample.formData) {\n builder.push(\n ` .header(\"Content-Type\", ${javaString(`multipart/form-data; boundary=${MULTIPART_BOUNDARY}`)})`\n );\n body = `HttpRequest.BodyPublishers.ofString(${javaString(multipartBody(sample.formData))})`;\n } else if (sample.body) {\n body = `HttpRequest.BodyPublishers.ofString(${javaString(sample.body)})`;\n }\n builder.push(\n ` .method(${javaString(sample.method)}, ${body})`,\n \" .build();\"\n );\n return [\n \"import java.net.URI;\",\n \"import java.net.http.HttpClient;\",\n \"import java.net.http.HttpRequest;\",\n \"import java.net.http.HttpResponse;\",\n \"\",\n \"HttpRequest request = HttpRequest.newBuilder()\",\n ...builder,\n \"HttpResponse<String> response = HttpClient.newHttpClient()\",\n \" .send(request, HttpResponse.BodyHandlers.ofString());\",\n ].join(\"\\n\");\n};\n\n// ---------------------------------------------------------------------------\n// Ruby (net/http)\n// ---------------------------------------------------------------------------\n\n/** The `Net::HTTP` request class for each method it names. */\nconst RUBY_METHODS = new Map([\n [\"DELETE\", \"Delete\"],\n [\"GET\", \"Get\"],\n [\"HEAD\", \"Head\"],\n [\"OPTIONS\", \"Options\"],\n [\"PATCH\", \"Patch\"],\n [\"POST\", \"Post\"],\n [\"PUT\", \"Put\"],\n [\"TRACE\", \"Trace\"],\n]);\n\nconst rubySnippet = (sample: RequestSample): string => {\n const known = RUBY_METHODS.get(sample.method);\n const lines = [\n 'require \"net/http\"',\n \"\",\n `uri = URI(${rubyString(sample.url)})`,\n known\n ? `request = Net::HTTP::${known}.new(uri)`\n : `request = Net::HTTPGenericRequest.new(${rubyString(sample.method)}, true, true, uri)`,\n ];\n for (const [key, value] of Object.entries(sample.headers)) {\n lines.push(`request[${rubyString(key)}] = ${rubyString(value)}`);\n }\n if (sample.body) {\n lines.push(`request.body = ${rubyString(sample.body)}`);\n }\n if (sample.formData) {\n const fields = sample.formData\n .map(([name, value]) => `[${rubyString(name)}, ${rubyString(value)}]`)\n .join(\", \");\n lines.push(`request.set_form([${fields}], \"multipart/form-data\")`);\n }\n lines.push(\n \"\",\n 'response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == \"https\") do |http|',\n \" http.request(request)\",\n \"end\"\n );\n return lines.join(\"\\n\");\n};\n\n// ---------------------------------------------------------------------------\n// PowerShell (Invoke-RestMethod)\n// ---------------------------------------------------------------------------\n\n/** The methods `Invoke-RestMethod -Method` names; others take `-CustomMethod`. */\nconst POWERSHELL_METHODS = new Set([\n \"DELETE\",\n \"GET\",\n \"HEAD\",\n \"OPTIONS\",\n \"PATCH\",\n \"POST\",\n \"PUT\",\n \"TRACE\",\n]);\n\nconst powershellSnippet = (sample: RequestSample): string => {\n const { contentType, rest } = splitContentType(sample.headers);\n const lines: string[] = [];\n const args = [\n `-Uri ${powershellString(sample.url)}`,\n POWERSHELL_METHODS.has(sample.method)\n ? `-Method ${sample.method}`\n : `-CustomMethod ${powershellString(sample.method)}`,\n ];\n if (rest.length > 0) {\n lines.push(\n \"$headers = @{\",\n ...rest.map(\n ([key, value]) =>\n ` ${powershellString(key)} = ${powershellString(value)}`\n ),\n \"}\"\n );\n args.push(\"-Headers $headers\");\n }\n // Invoke-RestMethod takes the body's type as a parameter, not a header.\n if (contentType) {\n args.push(`-ContentType ${powershellString(contentType)}`);\n }\n if (sample.body) {\n args.push(`-Body ${powershellString(sample.body)}`);\n }\n if (sample.formData) {\n lines.push(\n \"$form = @{\",\n ...sample.formData.map(\n ([name, value]) =>\n ` ${powershellString(name)} = ${powershellString(value)}`\n ),\n \"}\"\n );\n args.push(\"-Form $form\");\n }\n lines.push(`$response = Invoke-RestMethod ${args.join(\" \")}`);\n return lines.join(\"\\n\");\n};\n\n// ---------------------------------------------------------------------------\n// Swift (URLSession)\n// ---------------------------------------------------------------------------\n\nconst swiftSnippet = (sample: RequestSample): string => {\n const lines = [\n \"import Foundation\",\n \"\",\n `var request = URLRequest(url: URL(string: ${braceString(sample.url)})!)`,\n `request.httpMethod = ${braceString(sample.method)}`,\n ];\n for (const [key, value] of Object.entries(sample.headers)) {\n lines.push(\n `request.setValue(${braceString(value)}, forHTTPHeaderField: ${braceString(key)})`\n );\n }\n if (sample.formData) {\n lines.push(\n `request.setValue(${braceString(`multipart/form-data; boundary=${MULTIPART_BOUNDARY}`)}, forHTTPHeaderField: \"Content-Type\")`,\n `request.httpBody = Data(${braceString(multipartBody(sample.formData))}.utf8)`\n );\n } else if (sample.body) {\n lines.push(`request.httpBody = Data(${braceString(sample.body)}.utf8)`);\n }\n lines.push(\n \"\",\n \"let (data, response) = try await URLSession.shared.data(for: request)\"\n );\n return lines.join(\"\\n\");\n};\n\n// ---------------------------------------------------------------------------\n// C# (HttpClient)\n// ---------------------------------------------------------------------------\n\nconst csharpSnippet = (sample: RequestSample): string => {\n const { contentType, rest } = splitContentType(sample.headers);\n const lines = [\n \"using System.Net.Http;\",\n \"using System.Net.Http.Headers;\",\n \"\",\n \"using var client = new HttpClient();\",\n `var request = new HttpRequestMessage(new HttpMethod(${csharpString(sample.method)}), ${csharpString(sample.url)});`,\n ];\n // Without validation, so a header .NET would reformat is sent as written.\n for (const [key, value] of rest) {\n lines.push(\n `request.Headers.TryAddWithoutValidation(${csharpString(key)}, ${csharpString(value)});`\n );\n }\n if (sample.body) {\n lines.push(\n `request.Content = new StringContent(${csharpString(sample.body)});`\n );\n // The body's type is a content header in .NET, not a request header.\n if (contentType) {\n lines.push(\n `request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse(${csharpString(contentType)});`\n );\n }\n }\n if (sample.formData) {\n lines.push(\n \"var form = new MultipartFormDataContent();\",\n ...sample.formData.map(\n ([name, value]) =>\n `form.Add(new StringContent(${csharpString(value)}), ${csharpString(name)});`\n ),\n \"request.Content = form;\"\n );\n }\n lines.push(\n \"\",\n \"var response = await client.SendAsync(request);\",\n \"var body = await response.Content.ReadAsStringAsync();\"\n );\n return lines.join(\"\\n\");\n};\n\n// ---------------------------------------------------------------------------\n// .NET (RestSharp)\n// ---------------------------------------------------------------------------\n\n/** RestSharp's `Method` members, by HTTP method. */\nconst RESTSHARP_METHODS = new Map([\n [\"DELETE\", \"Delete\"],\n [\"GET\", \"Get\"],\n [\"HEAD\", \"Head\"],\n [\"OPTIONS\", \"Options\"],\n [\"PATCH\", \"Patch\"],\n [\"POST\", \"Post\"],\n [\"PUT\", \"Put\"],\n]);\n\nconst dotnetSnippet = (sample: RequestSample): string => {\n const method = RESTSHARP_METHODS.get(sample.method);\n if (!method) {\n return unsupportedMethod(\"//\", \"RestSharp\", sample.method);\n }\n const { contentType, rest } = splitContentType(sample.headers);\n const lines = [\n \"using RestSharp;\",\n \"\",\n \"var client = new RestClient();\",\n `var request = new RestRequest(${csharpString(sample.url)}, Method.${method});`,\n ];\n for (const [key, value] of rest) {\n lines.push(\n `request.AddHeader(${csharpString(key)}, ${csharpString(value)});`\n );\n }\n if (sample.body) {\n // The body carries its own type; a Content-Type header would be ignored.\n lines.push(\n `request.AddStringBody(${csharpString(sample.body)}, ${csharpString(contentType ?? \"text/plain\")});`\n );\n }\n if (sample.formData) {\n lines.push(\n \"request.AlwaysMultipartFormData = true;\",\n ...sample.formData.map(\n ([name, value]) =>\n `request.AddParameter(${csharpString(name)}, ${csharpString(value)});`\n )\n );\n }\n lines.push(\"\", \"var response = await client.ExecuteAsync(request);\");\n return lines.join(\"\\n\");\n};\n\n// ---------------------------------------------------------------------------\n// C (libcurl)\n// ---------------------------------------------------------------------------\n\nconst cSnippet = (sample: RequestSample): string => {\n const lines = [\n \"#include <curl/curl.h>\",\n \"\",\n \"int main(void) {\",\n \" CURL *curl = curl_easy_init();\",\n ];\n const headers = Object.entries(sample.headers);\n if (headers.length > 0) {\n lines.push(\" struct curl_slist *headers = NULL;\");\n for (const [key, value] of headers) {\n lines.push(\n ` headers = curl_slist_append(headers, ${cString(`${key}: ${value}`)});`\n );\n }\n }\n lines.push(\n \"\",\n ` curl_easy_setopt(curl, CURLOPT_URL, ${cString(sample.url)});`,\n // As with `curl --head`: a HEAD request expects no body.\n sample.method === \"HEAD\"\n ? \" curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);\"\n : ` curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, ${cString(sample.method)});`\n );\n if (headers.length > 0) {\n lines.push(\" curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);\");\n }\n if (sample.body) {\n lines.push(\n ` curl_easy_setopt(curl, CURLOPT_POSTFIELDS, ${cString(sample.body)});`\n );\n }\n if (sample.formData) {\n lines.push(\n \"\",\n \" curl_mime *form = curl_mime_init(curl);\",\n \" curl_mimepart *part;\"\n );\n for (const [name, value] of sample.formData) {\n lines.push(\n \" part = curl_mime_addpart(form);\",\n ` curl_mime_name(part, ${cString(name)});`,\n ` curl_mime_data(part, ${cString(value)}, CURL_ZERO_TERMINATED);`\n );\n }\n lines.push(\" curl_easy_setopt(curl, CURLOPT_MIMEPOST, form);\");\n }\n lines.push(\"\", \" CURLcode result = curl_easy_perform(curl);\", \"\");\n if (sample.formData) {\n lines.push(\" curl_mime_free(form);\");\n }\n if (headers.length > 0) {\n lines.push(\" curl_slist_free_all(headers);\");\n }\n lines.push(\n \" curl_easy_cleanup(curl);\",\n \" return result == CURLE_OK ? 0 : 1;\",\n \"}\"\n );\n return lines.join(\"\\n\");\n};\n\n// ---------------------------------------------------------------------------\n// C++ (cpr)\n// ---------------------------------------------------------------------------\n\n/** cpr's request functions, by HTTP method. */\nconst CPR_METHODS = new Map([\n [\"DELETE\", \"Delete\"],\n [\"GET\", \"Get\"],\n [\"HEAD\", \"Head\"],\n [\"OPTIONS\", \"Options\"],\n [\"PATCH\", \"Patch\"],\n [\"POST\", \"Post\"],\n [\"PUT\", \"Put\"],\n]);\n\nconst cppSnippet = (sample: RequestSample): string => {\n const method = CPR_METHODS.get(sample.method);\n if (!method) {\n return unsupportedMethod(\"//\", \"cpr\", sample.method);\n }\n const args = [` cpr::Url{${cString(sample.url)}}`];\n const headers = Object.entries(sample.headers);\n if (headers.length > 0) {\n const pairs = headers\n .map(([key, value]) => `{${cString(key)}, ${cString(value)}}`)\n .join(\", \");\n args.push(` cpr::Header{${pairs}}`);\n }\n if (sample.body) {\n args.push(` cpr::Body{${cString(sample.body)}}`);\n }\n if (sample.formData) {\n const parts = sample.formData\n .map(([name, value]) => `{${cString(name)}, ${cString(value)}}`)\n .join(\", \");\n args.push(` cpr::Multipart{${parts}}`);\n }\n return [\n \"#include <cpr/cpr.h>\",\n \"\",\n \"int main() {\",\n ` cpr::Response response = cpr::${method}(`,\n `${args.join(\",\\n\")});`,\n \"}\",\n ].join(\"\\n\");\n};\n\n// ---------------------------------------------------------------------------\n// Kotlin (OkHttp)\n// ---------------------------------------------------------------------------\n\n/** Methods OkHttp refuses to send a body with, and ones it requires one for. */\nconst OKHTTP_NO_BODY = new Set([\"GET\", \"HEAD\"]);\nconst OKHTTP_NEEDS_BODY = new Set([\"PATCH\", \"POST\", \"PUT\"]);\n\nconst kotlinSnippet = (sample: RequestSample): string => {\n const { contentType, rest } = splitContentType(sample.headers);\n const imports = new Set([\"okhttp3.OkHttpClient\", \"okhttp3.Request\"]);\n let body = \"null\";\n if (sample.formData) {\n imports.add(\"okhttp3.MultipartBody\");\n const parts = sample.formData\n .map(\n ([name, value]) =>\n `\\n .addFormDataPart(${kotlinString(name)}, ${kotlinString(value)})`\n )\n .join(\"\");\n body = `MultipartBody.Builder()\\n .setType(MultipartBody.FORM)${parts}\\n .build()`;\n } else if (sample.body && !OKHTTP_NO_BODY.has(sample.method)) {\n imports.add(\"okhttp3.RequestBody.Companion.toRequestBody\");\n // OkHttp takes the body's type from the body, not from a header.\n let mediaType = \"\";\n if (contentType) {\n imports.add(\"okhttp3.MediaType.Companion.toMediaType\");\n mediaType = `${kotlinString(contentType)}.toMediaType()`;\n }\n body = `${kotlinString(sample.body)}.toRequestBody(${mediaType})`;\n } else if (OKHTTP_NEEDS_BODY.has(sample.method)) {\n imports.add(\"okhttp3.RequestBody.Companion.toRequestBody\");\n body = '\"\".toRequestBody()';\n }\n const builder = [` .url(${kotlinString(sample.url)})`];\n builder.push(\n ` .method(${kotlinString(sample.method)}, ${body.replaceAll(\"\\n\", \"\\n \")})`\n );\n for (const [key, value] of rest) {\n builder.push(` .addHeader(${kotlinString(key)}, ${kotlinString(value)})`);\n }\n builder.push(\" .build()\");\n const importLines = [...imports]\n .toSorted()\n .map((name) => `import ${name}`)\n .join(\"\\n\");\n return [\n importLines,\n \"\",\n \"val client = OkHttpClient()\",\n \"\",\n \"val request = Request.Builder()\",\n ...builder,\n \"\",\n \"client.newCall(request).execute().use { response ->\",\n \" println(response.body?.string())\",\n \"}\",\n ].join(\"\\n\");\n};\n\n// ---------------------------------------------------------------------------\n// Rust (reqwest)\n// ---------------------------------------------------------------------------\n\n/** The methods `reqwest::Method` has a constant for. */\nconst RUST_METHODS = new Set([\n \"CONNECT\",\n \"DELETE\",\n \"GET\",\n \"HEAD\",\n \"OPTIONS\",\n \"PATCH\",\n \"POST\",\n \"PUT\",\n \"TRACE\",\n]);\n\nconst rustSnippet = (sample: RequestSample): string => {\n const method = RUST_METHODS.has(sample.method)\n ? `reqwest::Method::${sample.method}`\n : `reqwest::Method::from_bytes(${braceString(sample.method)}.as_bytes()).unwrap()`;\n const chain = [` .request(${method}, ${braceString(sample.url)})`];\n for (const [key, value] of Object.entries(sample.headers)) {\n chain.push(` .header(${braceString(key)}, ${braceString(value)})`);\n }\n if (sample.body) {\n chain.push(` .body(${braceString(sample.body)})`);\n }\n const lines = [\n \"#[tokio::main]\",\n \"async fn main() -> Result<(), reqwest::Error> {\",\n ];\n if (sample.formData) {\n // Needs reqwest's `multipart` feature.\n const parts = sample.formData\n .map(\n ([name, value]) =>\n `\\n .text(${braceString(name)}, ${braceString(value)})`\n )\n .join(\"\");\n lines.push(` let form = reqwest::multipart::Form::new()${parts};`, \"\");\n chain.push(\" .multipart(form)\");\n }\n lines.push(\n \" let response = reqwest::Client::new()\",\n ...chain,\n \" .send()\",\n \" .await?;\",\n \"\",\n ' println!(\"{}\", response.text().await?);',\n \" Ok(())\",\n \"}\"\n );\n return lines.join(\"\\n\");\n};\n\n// ---------------------------------------------------------------------------\n// Dart (package:http)\n// ---------------------------------------------------------------------------\n\nconst dartSnippet = (sample: RequestSample): string => {\n const lines = [\"import 'package:http/http.dart' as http;\", \"\"];\n const target = `${dartString(sample.method)}, Uri.parse(${dartString(sample.url)})`;\n if (sample.formData) {\n lines.push(`final request = http.MultipartRequest(${target});`);\n for (const [name, value] of sample.formData) {\n lines.push(`request.fields[${dartString(name)}] = ${dartString(value)};`);\n }\n } else {\n lines.push(`final request = http.Request(${target});`);\n }\n const headers = Object.entries(sample.headers);\n if (headers.length > 0) {\n lines.push(\n \"request.headers.addAll({\",\n ...headers.map(\n ([key, value]) => ` ${dartString(key)}: ${dartString(value)},`\n ),\n \"});\"\n );\n }\n if (sample.body) {\n lines.push(`request.body = ${dartString(sample.body)};`);\n }\n lines.push(\n \"\",\n \"final response = await request.send();\",\n \"print(await response.stream.bytesToString());\"\n );\n return lines.join(\"\\n\");\n};\n\n/** A code-sample language: config id -> label, Shiki lang, and builder. */\nexport interface SampleLanguage {\n id: string;\n label: string;\n lang: string;\n build: (sample: RequestSample) => string;\n}\n\nconst LANGUAGES: SampleLanguage[] = [\n { build: curlSnippet, id: \"curl\", label: \"cURL\", lang: \"bash\" },\n { build: pythonSnippet, id: \"python\", label: \"Python\", lang: \"python\" },\n { build: fetchSnippet, id: \"js\", label: \"JavaScript\", lang: \"js\" },\n { build: nodeSnippet, id: \"node\", label: \"Node.js\", lang: \"js\" },\n {\n build: typescriptSnippet,\n id: \"typescript\",\n label: \"TypeScript\",\n lang: \"ts\",\n },\n { build: phpSnippet, id: \"php\", label: \"PHP\", lang: \"php\" },\n { build: goSnippet, id: \"go\", label: \"Go\", lang: \"go\" },\n { build: javaSnippet, id: \"java\", label: \"Java\", lang: \"java\" },\n { build: rubySnippet, id: \"ruby\", label: \"Ruby\", lang: \"ruby\" },\n {\n build: powershellSnippet,\n id: \"powershell\",\n label: \"PowerShell\",\n lang: \"powershell\",\n },\n { build: swiftSnippet, id: \"swift\", label: \"Swift\", lang: \"swift\" },\n { build: csharpSnippet, id: \"csharp\", label: \"C#\", lang: \"csharp\" },\n { build: dotnetSnippet, id: \"dotnet\", label: \".NET\", lang: \"csharp\" },\n { build: cSnippet, id: \"c\", label: \"C\", lang: \"c\" },\n { build: cppSnippet, id: \"cpp\", label: \"C++\", lang: \"cpp\" },\n { build: kotlinSnippet, id: \"kotlin\", label: \"Kotlin\", lang: \"kotlin\" },\n { build: rustSnippet, id: \"rust\", label: \"Rust\", lang: \"rust\" },\n { build: dartSnippet, id: \"dart\", label: \"Dart\", lang: \"dart\" },\n];\n\n/** Every id `codeSamples` accepts for a generated sample. */\nexport const SAMPLE_LANGUAGE_IDS = LANGUAGES.map((language) => language.id);\n\n/** Other spellings of the ids, including every alias Mintlify accepts. */\nconst ALIASES = new Map([\n [\".net\", \"dotnet\"],\n [\"bash\", \"curl\"],\n [\"c#\", \"csharp\"],\n [\"c++\", \"cpp\"],\n [\"cs\", \"csharp\"],\n [\"dot-net\", \"dotnet\"],\n [\"flutter\", \"dart\"],\n [\"golang\", \"go\"],\n [\"javascript\", \"js\"],\n [\"kt\", \"kotlin\"],\n [\"node.js\", \"node\"],\n [\"nodejs\", \"node\"],\n [\"ps1\", \"powershell\"],\n [\"py\", \"python\"],\n [\"rb\", \"ruby\"],\n [\"rs\", \"rust\"],\n [\"sh\", \"curl\"],\n [\"shell\", \"curl\"],\n [\"ts\", \"typescript\"],\n]);\n\n/** A configured id or alias, as the id it names (lowercased). */\nexport const sampleLanguageId = (raw: string): string => {\n const lower = raw.toLowerCase();\n return ALIASES.get(lower) ?? lower;\n};\n\n/** A language's display name and the Shiki language that highlights it. */\nexport interface SampleLanguageInfo {\n label: string;\n lang: string;\n}\n\n/**\n * The display name and Shiki language of a language id or alias, or `null`\n * when Blume doesn't generate that language.\n */\nexport const sampleLanguageInfo = (raw: string): SampleLanguageInfo | null => {\n const id = sampleLanguageId(raw);\n const language = LANGUAGES.find((entry) => entry.id === id);\n return language ? { label: language.label, lang: language.lang } : null;\n};\n\n/** `openapi()`'s default `codeSamples`, which hand-written endpoint pages always use. */\nexport const DEFAULT_SAMPLE_LANGUAGES = [\"curl\", \"js\", \"python\"];\n\n/**\n * The sample languages to render, resolved from config ids (unknown ids\n * dropped), in order. `false` and an empty list both render none.\n */\nexport const sampleLanguages = (ids: string[] | false): SampleLanguage[] => {\n if (ids === false) {\n return [];\n }\n const byId = new Map(LANGUAGES.map((entry) => [entry.id, entry]));\n const out: SampleLanguage[] = [];\n const seen = new Set<string>();\n for (const raw of ids) {\n const id = sampleLanguageId(raw);\n const language = byId.get(id);\n if (language && !seen.has(id)) {\n seen.add(id);\n out.push(language);\n }\n }\n return out;\n};\n",
@@ -194,17 +195,18 @@
194
195
  "import { mountBasePath, normalizeBasePath } from \"../core/base-path.ts\";\nimport { rewriteRelativeImages } from \"../core/content-assets.ts\";\nimport matter from \"../core/frontmatter.ts\";\nimport type { BlumeProject } from \"../core/project-graph.ts\";\nimport { absoluteUrl } from \"../core/site-url.ts\";\nimport { readExpandedEntryText } from \"../core/sources/read.ts\";\nimport type { NavNode, Navigation, PageRecord } from \"../core/types.ts\";\nimport { buildRssFeeds } from \"../deploy/rss.ts\";\nimport { AI_CATALOG_PATH, hasAiCatalog } from \"./ai-catalog.ts\";\nimport { API_CATALOG_PATH, hasApiCatalog } from \"./api-catalog.ts\";\nimport { API_PAGES_PATH, OPENAPI_PATH } from \"./api/paths.ts\";\nimport { downlevelComponents } from \"./component-markdown.ts\";\nimport { relativeLinkRewriter } from \"./relative-links.ts\";\nimport { projectComponentSerializers } from \"./serializers.ts\";\nimport {\n AGENT_SKILLS_DIR,\n AGENT_SKILLS_INDEX_PATH,\n servesSkillsIndex,\n} from \"./skills.ts\";\nimport type { SkillArtifact } from \"./skills.ts\";\nimport { applyAgentVisibility } from \"./visibility.ts\";\n\n// Routes carry `basePath`; a `deployment.base` subdirectory is layered on top —\n// with or without a `site` (the mcp.json convention), and even over a route\n// that starts with the base's own name — so the emitted URL matches where the\n// page is served. Encoded like the sitemap: a route with spaces or non-ASCII\n// must still yield a valid Markdown link.\nconst pageUrl = (route: string, site?: string, base = \"\"): string => {\n const path = mountBasePath(base, route);\n return encodeURI(site ? absoluteUrl(site, path) : path);\n};\n\n/**\n * A title as Markdown link text. An unescaped bracket in it — `[Beta] Webhooks`\n * — closes or nests the text early, and the line stops being a link.\n */\nconst linkText = (title: string): string =>\n title.replaceAll(/[\\\\[\\]]/gu, String.raw`\\$&`);\n\n/** Inputs only the build has: the published skills, collected once per build. */\nexport interface LlmsIndexOptions {\n /**\n * The Agent Skills the build publishes under `/.well-known/agent-skills/`,\n * listed in their own section with each skill's description — which is\n * where a skill says when to use it. Absent (empty) for the homepage\n * Markdown mirror, which is synthesized before the skills are collected.\n */\n skills?: readonly SkillArtifact[];\n}\n\n/** A skill description on one line — SKILL.md frontmatter may wrap it. */\nconst oneLine = (text: string): string => text.replaceAll(/\\s+/gu, \" \").trim();\n\n/**\n * The \"Agent resources\" section: every machine-readable artifact the site\n * publishes, so an agent that only reads llms.txt still finds the full\n * Markdown dump, the per-page Markdown mirrors, the JSON docs API, the MCP\n * server, the skills index, the API catalog, the readability manifest, and\n * the sitemap. The\n * same artifact set `agent-readability.json` indexes, in prose an agent can\n * act on without a second fetch.\n */\nconst agentResourceLines = (project: BlumeProject): string[] => {\n const { config } = project;\n const { site } = config.deployment.options;\n const url = (path: string): string =>\n pageUrl(path, site, normalizeBasePath(config.deployment.options.base));\n const lines = [\n `- [llms-full.txt](${url(\"/llms-full.txt\")}): The full Markdown of every page in one file.`,\n `- [Page Markdown](${url(\"/index.md\")}): Append \\`.md\\` to any page URL to fetch that page as raw Markdown.`,\n ];\n if (config.agents.api) {\n lines.push(\n `- [JSON API](${url(API_PAGES_PATH)}): Page index of the JSON docs API; each entry links the page's JSON and Markdown forms. Described by the OpenAPI document at ${url(OPENAPI_PATH)}.`\n );\n }\n if (config.agents.mcp.enabled) {\n lines.push(\n `- [MCP server](${url(config.agents.mcp.route)}): Streamable HTTP Model Context Protocol server with search_docs, get_page, list_pages, and get_navigation tools, plus every page as a resource. Discovery document: ${url(\"/.well-known/mcp.json\")}`\n );\n }\n if (servesSkillsIndex(config)) {\n lines.push(\n `- [Agent skills](${url(AGENT_SKILLS_INDEX_PATH)}): Agent Skills discovery index of the skills this site publishes.`\n );\n }\n if (hasApiCatalog(config)) {\n lines.push(\n `- [API catalog](${url(API_CATALOG_PATH)}): RFC 9727 linkset of the APIs documented here.`\n );\n }\n if (hasAiCatalog(config)) {\n lines.push(\n `- [AI catalog](${url(AI_CATALOG_PATH)}): ARD manifest of the agent-facing resources on this site (MCP server, skills, APIs).`\n );\n }\n if (config.agents.agentReadability) {\n lines.push(\n `- [agent-readability.json](${url(\"/agent-readability.json\")}): Manifest of every agent-facing artifact on this site.`\n );\n }\n if (site && config.seo.sitemap) {\n lines.push(\n `- [Sitemap](${url(\"/sitemap.xml\")}): Every indexable page URL with its last-modified date.`\n );\n }\n return lines;\n};\n\n// Drafts, hidden, and ordinary `noindex` pages are excluded. Generated API\n// references keep crawler visibility (`noindex`) separate from LLM visibility\n// (`ai.exclude`), and are excluded wholesale when `agents.llmsTxt.openapi` is off.\n// `versions: \"current\"` additionally drops archived-snapshot pages — the flat\n// llms-full.txt dump serves agents the live docs, not every frozen copy.\nconst eligiblePages = (\n project: BlumeProject,\n options: { versions?: \"all\" | \"current\" } = {}\n): PageRecord[] =>\n project.graph.pages.filter(\n (page) =>\n !(\n page.meta.ai.exclude ||\n page.meta.draft ||\n page.meta.sidebar.hidden ||\n (page.meta.seo.noindex && page.source.name !== \"openapi\") ||\n (options.versions === \"current\" && page.version !== \"\")\n ) &&\n (project.config.agents.llmsTxt.openapi || page.source.name !== \"openapi\")\n );\n\n/**\n * The navigation trees the index mirrors: the site tree, or one per locale\n * under i18n (each labeled with the locale except the default, so sections\n * don't repeat ambiguously). On a versioned site each archived snapshot's\n * trees follow the current ones, labeled with the version (and locale) so an\n * agent reading the index knows which docs are frozen.\n */\nconst indexedNavigations = (\n project: BlumeProject\n): { label?: string; nav: Navigation }[] => {\n const { i18n, versions } = project.config;\n const current: { label?: string; nav: Navigation }[] = i18n\n ? i18n.locales.flatMap(({ code, label }) => {\n const nav = project.graph.navigationByLocale[code];\n if (!nav) {\n return [];\n }\n return [\n { label: code === i18n.defaultLocale ? undefined : label, nav },\n ];\n })\n : [{ nav: project.graph.navigation }];\n\n const archived = (versions?.archived ?? []).flatMap((version) => {\n const byLocale = project.graph.navigationByVersion[version.id] ?? {};\n const versionLabel = `${version.label ?? version.id} (archived)`;\n return Object.entries(byLocale).flatMap(([code, nav]) => {\n const locale = i18n?.locales.find((entry) => entry.code === code);\n const label =\n locale && code !== i18n?.defaultLocale\n ? `${locale.label} — ${versionLabel}`\n : versionLabel;\n return [{ label, nav }];\n });\n });\n\n return [...current, ...archived];\n};\n\n/**\n * Build the compact `llms.txt` index: title and summary, then the sidebar tree\n * rendered as sections — group labels become headings, pages become link lists —\n * so the file mirrors how the docs are organized rather than one flat blob.\n * Also serves as the homepage's synthesized Markdown mirror when the home\n * route is a landing page (see `buildRawMarkdown`).\n */\nexport const buildLlmsIndex = (\n project: BlumeProject,\n options: LlmsIndexOptions = {}\n): string => {\n const { config } = project;\n const { site } = config.deployment.options;\n const base = normalizeBasePath(config.deployment.options.base);\n const eligible = eligiblePages(project);\n const byRoute = new Map(eligible.map((page) => [page.route, page]));\n const seen = new Set<string>();\n\n const line = (page: PageRecord): string => {\n seen.add(page.route);\n const summary = page.description ? `: ${page.description}` : \"\";\n return `- [${linkText(page.title)}](${pageUrl(page.route, site, base)})${summary}`;\n };\n\n // One nav level -> Markdown blocks: the level's loose pages as a link list,\n // then each group as a heading (depth-capped at h6) followed by its own\n // blocks. Nav entries whose route has no eligible page — external links,\n // padded i18n fallbacks, `noindex` pages, excluded API references — are\n // skipped, and a group left with nothing emits no heading at all.\n const renderLevel = (nodes: NavNode[], depth: number): string[] => {\n const list: string[] = [];\n const groupBlocks: string[] = [];\n for (const node of nodes) {\n if (node.kind === \"page\") {\n const page = byRoute.get(node.route);\n if (page && !seen.has(page.route)) {\n list.push(line(page));\n }\n continue;\n }\n // An explicit-config group may link its index page on the group itself\n // (`root`) rather than as a child; keep it at the top of the section.\n const rootPage = node.route ? byRoute.get(node.route) : undefined;\n const blocks = renderLevel(node.children, depth + 1);\n if (rootPage && !seen.has(rootPage.route)) {\n blocks.unshift(line(rootPage));\n }\n if (blocks.length > 0) {\n groupBlocks.push(\n `${\"#\".repeat(Math.min(depth, 6))} ${node.label}`,\n ...blocks\n );\n }\n }\n return list.length > 0 ? [list.join(\"\\n\"), ...groupBlocks] : groupBlocks;\n };\n\n // Loose pages at a tree's root get a \"Docs\" section of their own, so every\n // link sits under an h2 as llms.txt consumers expect.\n const renderNav = (nav: Navigation, depth: number): string[] => {\n const loose = nav.sidebar.filter((node) => node.kind === \"page\");\n const groups = nav.sidebar.filter((node) => node.kind === \"group\");\n const looseBlocks = renderLevel(loose, depth + 1);\n return [\n ...(looseBlocks.length > 0\n ? [`${\"#\".repeat(depth)} Docs`, ...looseBlocks]\n : []),\n ...renderLevel(groups, depth),\n ];\n };\n\n const blocks: string[] = [];\n for (const { label, nav } of indexedNavigations(project)) {\n if (label) {\n const localized = renderNav(nav, 3);\n if (localized.length > 0) {\n blocks.push(`## ${label}`, ...localized);\n }\n continue;\n }\n blocks.push(...renderNav(nav, 2));\n }\n\n // Pages the navigation doesn't reach (an explicit sidebar that omits them,\n // or a hand-rolled tree) still belong in the index.\n const leftover = eligible\n .filter((page) => !seen.has(page.route))\n .toSorted((a, b) => a.route.localeCompare(b.route));\n if (leftover.length > 0) {\n blocks.push(\n blocks.length > 0 ? \"## Other\" : \"## Docs\",\n leftover.map(line).join(\"\\n\")\n );\n }\n\n // Surface the RSS feeds so agents can find fresh content (new blog posts,\n // changelog entries) without re-crawling the index. `buildRssFeeds` is empty\n // unless RSS is enabled and an absolute `site` is set — the same condition\n // under which agent-readability.json lists `artifacts.feeds`.\n const feeds = buildRssFeeds(project);\n if (feeds.length > 0) {\n blocks.push(\n \"## RSS Feeds\",\n feeds\n .map(\n (feed) =>\n `- [${linkText(feed.title)}](${pageUrl(feed.path, site, base)})`\n )\n .join(\"\\n\")\n );\n }\n\n // The published skills, each with its description — the one place a skill\n // states when an agent should reach for it.\n const skills = options.skills ?? [];\n if (skills.length > 0) {\n blocks.push(\n \"## Agent skills\",\n skills\n .map(\n (skill) =>\n `- [${skill.name}](${pageUrl(`${AGENT_SKILLS_DIR}/${skill.path}`, site, base)}): ${oneLine(skill.description)}`\n )\n .join(\"\\n\")\n );\n }\n\n blocks.push(\"## Agent resources\", agentResourceLines(project).join(\"\\n\"));\n\n const header = config.description\n ? `# ${config.title}\\n\\n> ${config.description}`\n : `# ${config.title}`;\n // `details` is the llms.txt spec's free-form block between the summary and\n // the file sections — \"when to use this\" guidance in the site's own words.\n const { details } = config.agents.llmsTxt;\n const lead = details ? `${header}\\n\\n${details}` : header;\n return `${[lead, ...blocks].join(\"\\n\\n\")}\\n`;\n};\n\n/** Build `llms-full.txt`: the full Markdown body of every current-docs page. */\nconst buildFull = async (project: BlumeProject): Promise<string> => {\n const { config } = project;\n const pages = eligiblePages(project, { versions: \"current\" }).toSorted(\n (a, b) => a.route.localeCompare(b.route)\n );\n const components = projectComponentSerializers(project);\n const rewriteLinks = relativeLinkRewriter(project);\n\n const sections = await Promise.all(\n pages.map(async (page) => {\n let raw = await readExpandedEntryText(project, page);\n // Colocated `./image.png` references resolve to nothing for a reader of\n // llms-full.txt; point them at the served originals instead.\n if (page.sourcePath) {\n raw = rewriteRelativeImages({\n deployBase: config.deployment.options.base,\n projectRoot: project.context.root,\n source: raw,\n sourcePath: page.sourcePath,\n });\n }\n // Page links too: a reader of one flat file has no page URL to resolve\n // `./install` against, and `/install` needs the base the site is\n // served under.\n raw = rewriteLinks(raw, page);\n // Resolve `<Visibility>` audiences (web-only content omitted from the\n // agent-facing output, agents-only unwrapped), then downlevel supported\n // components to plain Markdown.\n const parsed = matter(raw);\n const body = downlevelComponents(\n applyAgentVisibility(parsed.content),\n components,\n parsed.data\n ).trim();\n const url = pageUrl(\n page.route,\n config.deployment.options.site,\n normalizeBasePath(config.deployment.options.base)\n );\n return [`# ${page.title}`, `Source: ${url}`, \"\", body].join(\"\\n\");\n })\n );\n\n const header = config.description\n ? `# ${config.title}\\n\\n> ${config.description}\\n`\n : `# ${config.title}\\n`;\n\n return `${header}\\n${sections.join(\"\\n\\n---\\n\\n\")}\\n`;\n};\n\n/** Build both LLM text artifacts for a project. */\nexport const buildLlmsFiles = async (\n project: BlumeProject,\n options: LlmsIndexOptions = {}\n): Promise<{ index: string; full: string }> => ({\n full: await buildFull(project),\n index: buildLlmsIndex(project, options),\n});\n",
195
196
  "import { createHash } from \"node:crypto\";\n\nimport type { JsonValue } from \"../core/adapter.ts\";\nimport { isJsonObject } from \"../core/sources/json.ts\";\nimport { RATE_LIMIT_BINDING } from \"./cloudflare.ts\";\nimport type { CloudflareRateLimitAdapter } from \"./cloudflare.ts\";\n\n/** The Workers rate limiting binding, as the Worker's config declares it. */\nexport interface RateLimitBindingConfig {\n name: string;\n namespace_id: string;\n simple: { limit: number; period: 10 | 60 };\n}\n\n/**\n * A namespace id for a Worker that sets none: a positive integer derived from\n * its name, so two Blume sites on one account don't share one.\n */\nexport const rateLimitNamespace = (workerName: string): string => {\n const digest = createHash(\"sha256\").update(workerName).digest(\"hex\");\n return String((Number.parseInt(digest.slice(0, 8), 16) % 2_000_000_000) + 1);\n};\n\nconst isText = <Value>(value: Value): value is Value & string =>\n typeof value === \"string\";\n\n/** The binding `cloudflare()` asks for, on the Worker named `workerName`. */\nexport const rateLimitBinding = (\n adapter: CloudflareRateLimitAdapter,\n workerName: string\n): RateLimitBindingConfig => ({\n name: RATE_LIMIT_BINDING,\n namespace_id: adapter.options.namespaceId ?? rateLimitNamespace(workerName),\n simple: {\n limit: adapter.options.requests ?? 10,\n period: adapter.options.window ?? 60,\n },\n});\n\n/**\n * The built Worker's config (`dist/server/wrangler.json`) with Blume's rate\n * limiting binding in `ratelimits`, replacing an earlier one of the same name\n * and keeping any others. `null` when the config isn't a JSON object.\n */\nexport const withRateLimitBinding = (\n wranglerText: string,\n adapter: CloudflareRateLimitAdapter\n): string | null => {\n let config: JsonValue;\n try {\n config = JSON.parse(wranglerText);\n } catch {\n return null;\n }\n if (!isJsonObject(config) || Array.isArray(config)) {\n return null;\n }\n const { name, ratelimits } = config;\n const others = Array.isArray(ratelimits)\n ? ratelimits.filter(\n (entry) => !(isJsonObject(entry) && entry.name === RATE_LIMIT_BINDING)\n )\n : [];\n const binding = rateLimitBinding(adapter, isText(name) ? name : \"\");\n config.ratelimits = [\n ...others,\n { ...binding, simple: { ...binding.simple } },\n ];\n return JSON.stringify(config);\n};\n",
196
197
  "/**\n * The JSON a CMS API returns: arbitrary values a query or REST endpoint\n * hands back, typed as a closed union so a source narrows with predicates\n * instead of casting.\n */\nexport type JsonValue =\n | string\n | number\n | boolean\n | null\n | JsonValue[]\n | { [key: string]: JsonValue };\n\n/** A JSON object: a document, a node in a rich-text tree, an API envelope. */\nexport interface JsonObject {\n [key: string]: JsonValue;\n}\n\n/**\n * A node a dot path can descend into. Arrays pass too (matching their runtime\n * string-key indexing, e.g. `items.0`), so the predicate types them as the\n * keyed form both traverse through.\n */\nexport const isJsonObject = (\n value: JsonValue | undefined\n): value is JsonObject => typeof value === \"object\" && value !== null;\n\n/** Resolve a dot path (`slug.current`) against a document. */\nexport const getPath = (\n doc: JsonObject,\n path: string\n): JsonValue | undefined => {\n let current: JsonValue | undefined = doc;\n for (const key of path.split(\".\")) {\n if (isJsonObject(current)) {\n current = current[key];\n } else {\n return;\n }\n }\n return current;\n};\n\nexport const isStringValue = (value: JsonValue | undefined): value is string =>\n typeof value === \"string\";\n\nexport const asString = (value: JsonValue | undefined): string | undefined =>\n isStringValue(value) ? value : undefined;\n\n/** The elements of an array value, or none when the value is not an array. */\nexport const asArray = (value: JsonValue | undefined): JsonValue[] =>\n Array.isArray(value) ? value : [];\n\n/** The object form of a value, or none when it is a scalar, array, or absent. */\nexport const asObject = (\n value: JsonValue | undefined\n): JsonObject | undefined =>\n isJsonObject(value) && !Array.isArray(value) ? value : undefined;\n\nexport const isNumberValue = (value: JsonValue | undefined): value is number =>\n typeof value === \"number\";\n\nexport const asNumber = (value: JsonValue | undefined): number | undefined =>\n isNumberValue(value) ? value : undefined;\n\n/** The object elements of an array value; scalars and nested arrays are dropped. */\nexport const objectsIn = (value: JsonValue | undefined): JsonObject[] =>\n asArray(value).flatMap((item) => {\n const object = asObject(item);\n return object ? [object] : [];\n });\n",
198
+ "/**\n * The header that names Blume as the framework behind a response, sent unless\n * `poweredBy` is `false`. The dev server and Blume's runtime middleware\n * (`components/powered-by-middleware.ts`) send it, and so does every host\n * for the built site: static hosts through `deploy/headers.ts`'s rules,\n * server builds through each platform's own mechanism (`deploy/platforms`).\n * It lives apart from those modules so the runtime middleware can import it\n * without pulling in the deploy code.\n */\nexport const POWERED_BY_HEADERS = {\n \"X-Powered-By\": \"Blume\",\n} satisfies Record<string, string>;\n",
197
199
  "import type { ResolvedConfig } from \"../core/schema.ts\";\n\n/**\n * Web Bot Auth (IETF `webbotauth` WG): an org that runs agents publishes the\n * agents' HTTP Message Signature public keys in a JWKS at a well-known path\n * on its domain; sites receiving the signed requests fetch it to verify them.\n * Blume publishes the directory from `agents.webBotAuth.keys` — the schema admits\n * public keys only, so the site can never leak signing credentials.\n */\n\n/** Well-known path (draft-meunier-http-message-signatures-directory). */\nexport const SIGNATURES_DIRECTORY_PATH =\n \"/.well-known/http-message-signatures-directory\";\n\n/** The directory's registered media type — extensionless, so static hosts\n * need an explicit Content-Type rule (see `deploy/headers.ts` and the Vercel\n * `overrides` injection) to serve anything better than octet-stream. */\nexport const SIGNATURES_DIRECTORY_TYPE =\n \"application/http-message-signatures-directory+json\";\n\n/** The JWKS document to publish, or null when no keys are configured. */\nexport const buildSignaturesDirectory = (\n config: ResolvedConfig\n): string | null => {\n const { keys } = config.agents.webBotAuth;\n if (keys.length === 0) {\n return null;\n }\n return `${JSON.stringify({ keys }, null, 2)}\\n`;\n};\n",
198
- "import { crossOriginDiscoveryPaths } from \"../ai/ai-catalog.ts\";\nimport {\n API_CATALOG_PATH,\n API_CATALOG_TYPE,\n hasApiCatalog,\n} from \"../ai/api-catalog.ts\";\nimport { servesSkillsIndex } from \"../ai/skills.ts\";\nimport {\n SIGNATURES_DIRECTORY_PATH,\n SIGNATURES_DIRECTORY_TYPE,\n} from \"../ai/web-bot-auth.ts\";\nimport { normalizeBasePath } from \"../core/base-path.ts\";\nimport type { ResolvedConfig } from \"../core/schema.ts\";\n\n/**\n * The `_headers` file for a static build (Netlify + Cloudflare Pages/Workers\n * static assets). Blume's raw AI-ready endpoints — `/<route>.md`, `/<route>.mdx`,\n * and the `.txt` files (`llms.txt`, `llms-full.txt`) — are valid UTF-8, but a\n * static host serves them from the file extension alone, and common hosts send\n * `text/markdown` / `text/plain` with **no** `charset`. Browsers then fall back\n * to Windows-1252 for non-HTML text, so any non-ASCII docs (Japanese, accented\n * Latin, …) render as mojibake when the raw URL is opened directly. HTML pages\n * escape this because they carry `<meta charset>`; the raw endpoints have only\n * the HTTP header. Pinning `charset=utf-8` here matches the Content-Type these\n * same routes already send from the dev/server runtime (see\n * `astro/templates.ts`). Hosts that don't read `_headers` ignore the file\n * harmlessly; Vercel gets the same rules in `vercel.json` (see\n * {@link buildVercelHeaders}).\n */\n\n/**\n * One rule per served extension. `.mdx` uses `text/markdown` to match the\n * runtime endpoint, which serves both variants as `text/markdown`. Every rule\n * sits at the deployment base, not under `basePath`: most Markdown mirrors\n * live under the page routes, but the section home's mirror (`/docs.md`) sits\n * beside `basePath`, and the synthesized `/index.md`, `/changelog.md`, and\n * `/404.md` sit at the root, as do the `.txt` files (`llms.txt`,\n * `llms-full.txt`).\n */\nconst HEADER_RULES: readonly { contentType: string; ext: string }[] = [\n { contentType: \"text/markdown; charset=utf-8\", ext: \"md\" },\n { contentType: \"text/markdown; charset=utf-8\", ext: \"mdx\" },\n { contentType: \"text/plain; charset=utf-8\", ext: \"txt\" },\n];\n\n/** Where the generated endpoint serves content-source images from. */\nexport const CONTENT_ASSETS_ROOT = \"/blume-assets\";\n\n/**\n * The policy a content-source SVG is served with: an opaque origin with\n * scripts off, so an uploaded SVG that carries a `<script>` stays inert when\n * opened directly.\n */\nexport const SVG_ASSET_POLICY = \"sandbox\";\n\n/**\n * The headers a content-source SVG is served with: the sandbox policy, and no\n * MIME sniffing. The endpoint sends them from the dev runtime; every host\n * gets them for the built files — static hosts through {@link headerRules},\n * server builds through each platform's own mechanism (`deploy/platforms`).\n */\nexport const SVG_ASSET_HEADERS = {\n \"Content-Security-Policy\": SVG_ASSET_POLICY,\n \"X-Content-Type-Options\": \"nosniff\",\n} satisfies Record<string, string>;\n\n/** The served glob of content-source SVGs, under the deployment base. */\nexport const svgAssetPath = (config: ResolvedConfig): string =>\n `${normalizeBasePath(config.deployment.options.base)}${CONTENT_ASSETS_ROOT}/*.svg`;\n\n/**\n * One static-host header rule: a served path (a `*` glob spanning path\n * segments, or an exact path) and the header it sets there.\n */\nexport interface HeaderRule {\n name: string;\n path: string;\n value: string;\n}\n\n/**\n * The header rules every static host should apply, in `_headers` glob syntax.\n * The glob carries the deployment base so the rules still match once the site\n * is mounted under a subpath (`/docs/*.md`); the wildcard spans path\n * segments, so a nested route like `/docs/ja/intro.md` matches too.\n *\n * When a homepage `Link` header is provided (see `ai/link-headers.ts`), an\n * exact-path rule for the root page advertises the agent-discovery resources —\n * the static-host counterpart of the Vercel routing-config injection.\n */\nexport const headerRules = (\n config: ResolvedConfig,\n homeLinkHeader?: string | null\n): HeaderRule[] => {\n const deployBase = normalizeBasePath(config.deployment.options.base);\n const rules: HeaderRule[] = HEADER_RULES.map((rule) => ({\n name: \"Content-Type\",\n path: `${deployBase}/*.${rule.ext}`,\n value: rule.contentType,\n }));\n if (homeLinkHeader) {\n rules.push({ name: \"Link\", path: `${deployBase}/`, value: homeLinkHeader });\n }\n // The well-known discovery files are extensionless, so without an explicit\n // rule a static host serves their registered media types as octet-stream or\n // text/plain.\n if (hasApiCatalog(config)) {\n rules.push({\n name: \"Content-Type\",\n path: `${deployBase}${API_CATALOG_PATH}`,\n value: API_CATALOG_TYPE,\n });\n }\n if (config.agents.webBotAuth.keys.length > 0) {\n rules.push({\n name: \"Content-Type\",\n path: `${deployBase}${SIGNATURES_DIRECTORY_PATH}`,\n value: SIGNATURES_DIRECTORY_TYPE,\n });\n }\n // Agent registries fetch the discovery documents cross-origin; a static\n // host sends no CORS header unless told to.\n for (const path of crossOriginDiscoveryPaths(config)) {\n rules.push({\n name: \"Access-Control-Allow-Origin\",\n path: `${deployBase}${path}`,\n value: \"*\",\n });\n }\n // Published skills live at the deployment base, and the RFC wants their\n // archives served as application/gzip explicitly.\n if (servesSkillsIndex(config)) {\n rules.push(\n {\n name: \"Content-Type\",\n path: `${deployBase}/.well-known/agent-skills/*.md`,\n value: \"text/markdown; charset=utf-8\",\n },\n {\n name: \"Content-Type\",\n path: `${deployBase}/.well-known/agent-skills/*.tar.gz`,\n value: \"application/gzip\",\n }\n );\n }\n // Images a content source downloads (a CMS upload, a remote page's figure)\n // are served from the docs origin, and an SVG opened directly is a document\n // that can run script. A sandbox policy keeps it inert; an `<img>` that\n // embeds it is unaffected.\n for (const [name, value] of Object.entries(SVG_ASSET_HEADERS)) {\n rules.push({ name, path: svgAssetPath(config), value });\n }\n return rules;\n};\n\n/**\n * `_headers` contents: each {@link headerRules} entry as its path with an\n * indented header line, in the two-space format Netlify and Cloudflare read.\n */\nexport const buildNetlifyHeaders = (\n config: ResolvedConfig,\n homeLinkHeader?: string | null\n): string =>\n `${headerRules(config, homeLinkHeader)\n .map((rule) => `${rule.path}\\n ${rule.name}: ${rule.value}`)\n .join(\"\\n\")}\\n`;\n\n/** One entry of Netlify's Frameworks API config `headers` array. */\nexport interface NetlifyConfigHeaders {\n for: string;\n values: Record<string, string>;\n}\n\n/**\n * The {@link headerRules} as Netlify Frameworks API `headers` entries\n * (`.netlify/v1/config.json`), one per path with every header it sets. A\n * `netlify()` server build reads no `_headers` file, so it carries the same\n * rules here, in the `for`/`values` form that follows `netlify.toml`'s\n * `[[headers]]` and the same path syntax as `_headers`.\n */\nexport const buildNetlifyConfigHeaders = (\n config: ResolvedConfig,\n homeLinkHeader?: string | null\n): NetlifyConfigHeaders[] => {\n const byPath = new Map<string, Record<string, string>>();\n for (const rule of headerRules(config, homeLinkHeader)) {\n byPath.set(rule.path, {\n ...byPath.get(rule.path),\n [rule.name]: rule.value,\n });\n }\n return [...byPath].map(([path, values]) => ({ for: path, values }));\n};\n\n/** One entry of `vercel.json`'s `headers` array. */\nexport interface VercelHeader {\n headers: { key: string; value: string }[];\n source: string;\n}\n\n/** The characters `path-to-regexp` would read as syntax in a literal path. */\nconst SOURCE_SYNTAX = /[\\\\(){}?+:]/gu;\n\n/**\n * A literal path as `path-to-regexp` source text — what a `vercel.json`\n * `source` is — with each syntax character escaped, so it matches only itself.\n */\nexport const escapeVercelSource = (path: string): string =>\n path.replaceAll(SOURCE_SYNTAX, String.raw`\\$&`);\n\n/**\n * A `_headers` path as a `vercel.json` `source`, which `path-to-regexp` reads:\n * the literal parts are escaped, and a `*` glob becomes the `(.*)` group that\n * spans path segments as the glob does. An exact directory path (the homepage\n * rule's `/docs/`) drops its trailing slash, the URL Vercel serves it at.\n */\nconst vercelSource = (path: string): string => {\n const trimmed =\n path.length > 1 && path.endsWith(\"/\") ? path.slice(0, -1) : path;\n return trimmed.split(\"*\").map(escapeVercelSource).join(\"(.*)\");\n};\n\n/**\n * The {@link headerRules} as `vercel.json` `headers` entries. Vercel reads no\n * `_headers` file, so a static deploy of `dist/` carries the same rules here —\n * the charset on the raw Markdown and text files, the homepage `Link` header,\n * and the media types and CORS header of the discovery files.\n */\nexport const buildVercelHeaders = (\n config: ResolvedConfig,\n homeLinkHeader?: string | null\n): VercelHeader[] =>\n headerRules(config, homeLinkHeader).map((rule) => ({\n headers: [{ key: rule.name, value: rule.value }],\n source: vercelSource(rule.path),\n }));\n",
199
- "/**\n * `Accept: text/markdown` content negotiation for Cloudflare server builds.\n *\n * Blume prerenders every content page — even in a server build (`deployment:\n * cloudflare()`) — and on Cloudflare the ASSETS binding serves those files before\n * the Worker script runs, so no server-side code (Astro middleware included)\n * ever sees a content-page request. Worse, even a content-page request that\n * does reach the Worker is answered by `@astrojs/cloudflare`'s handler\n * straight from the ASSETS binding, ahead of `app.render` — the only place\n * middleware runs — because `app.match` resolves a prerendered route to\n * nothing and the handler then falls back to the binding.\n *\n * Negotiation therefore needs two coordinated pieces, both applied to the\n * adapter's emitted deploy bundle after `astro build`:\n *\n * 1. `assets.run_worker_first` in `dist/server/wrangler.json`, claiming every\n * path except the static files that never negotiate, so the platform\n * routes page requests — and requests for pages that do not exist — to\n * the Worker instead of serving the static HTML directly (see\n * `buildRunWorkerFirstRules`).\n * 2. A generated entry Worker that fronts the adapter's: when the client\n * prefers `text/markdown` it serves the page's prerendered `.md` mirror\n * from the ASSETS binding, and it delegates everything else to the Astro\n * Worker untouched.\n *\n * The prerendered per-page JSON documents (`/api/docs/pages/{route}.json`)\n * are the one prerendered surface the adapter's fallback does *not* cover.\n * They come from a prerendered *dynamic* route, and for those Astro's\n * `matchRequest` returns the first non-prerendered route matching the same\n * path — on a server build that is the `/api/[...path]` catch-all, which\n * answers with a 404 problem document; `fallbackToAssets` never runs. The\n * static-pathname endpoints (`pages.json`, `navigation.json`) are unaffected:\n * they sit in the manifest's asset set, which the handler serves from the\n * binding first. So whenever a worker-first rule claims a page JSON URL, the\n * wrapper answers it from the binding itself, keyed by the exact set of\n * documents the build emitted. The generated rule set claims them (a miss\n * must reach the API's `PAGE_NOT_FOUND` answer, see `STATIC_EXEMPTIONS`), and\n * so do user-configured rules or a bare `true`.\n *\n * Cloudflare does not apply `_headers` to worker-first routes, so the wrapper\n * also re-stamps what the static layer would otherwise add on the routes it\n * takes over: the homepage agent-discovery `Link` header, the Markdown\n * `charset=utf-8`, and the sandbox on the SVGs a content source downloaded\n * (see `deploy/headers.ts`). The raw `.md`/`.mdx` URLs are\n * exempted from worker-first routing with negative rules, keeping their\n * `_headers` treatment and their zero-Worker serving path.\n *\n * Configured redirects are baked into the wrapper as well, and answered there\n * with their exact configured status. On a server build Blume routes\n * `redirects` through Astro's own config, and `@astrojs/cloudflare` turns\n * those into `_redirects` entries carrying the exact status — but only\n * Cloudflare's static layer reads that file, and a worker-first route never\n * reaches it. Astro's SSR redirect handler would answer instead, and it honors\n * the configured status only when the destination resolves to a discrete\n * route: Blume serves every page from `[...slug]`, so it never does, and\n * `computeRedirectStatus` defaults a GET to **301** — a permanent redirect\n * that browsers cache indefinitely. The wrapper checking its own redirect\n * table before delegating closes that hole at zero rule cost: unlike negative\n * `run_worker_first` exemptions, a baked-in table spends nothing against\n * Wrangler's 100-rule / 100-character limits, cannot collide with\n * user-configured rules (or a bare `true`), and needs no basing gymnastics —\n * its keys are full served URLs, which is exactly what the Worker sees.\n * Redirects outside every worker-first rule still never invoke the Worker;\n * the static layer serves them from `_redirects` as before.\n *\n * Missing pages negotiate too. Under an explicit `run_worker_first` list the\n * platform answers every request outside the rules from the static layer —\n * an asset miss included, as the nearest `404.html` — which is why the rules\n * claim every path: a request for a URL no page backs then reaches the\n * Worker, and the Astro Worker answers it with the HTML 404 shell from the\n * binding (`not_found_handling: \"404-page\"`). When the client prefers\n * Markdown the wrapper swaps that shell for the prerendered `/404.md` twin,\n * and when it prefers JSON for the `/404.json` problem document, keeping the\n * 404 status either way — the counterpart of the miss-phase routes in\n * `deploy/vercel-negotiation.ts`. A raw `.md` or `.json` URL no file backs\n * asks for the same twin implicitly, but on this platform such a request only\n * reaches the Worker for `.json` (the generated set keeps `.md` on the static\n * layer for its `_headers`). Only an HTML 404 is swapped, so an API endpoint's\n * own problem document is never overwritten.\n */\n\nimport {\n API_NAVIGATION_PATH,\n API_PAGES_PATH,\n OPENAPI_PATH,\n} from \"../ai/api/paths.ts\";\nimport { normalizeBasePath, normalizePath } from \"../core/base-path.ts\";\nimport { compileRedirects, isPatternPath } from \"../core/redirect-patterns.ts\";\nimport { CONTENT_ASSETS_ROOT, SVG_ASSET_HEADERS } from \"./headers.ts\";\nimport type { NotFoundVariants } from \"./vercel-negotiation.ts\";\n\n/** Filename of the generated wrapper Worker, next to the adapter's entry. */\nexport const NEGOTIATION_WORKER_FILE = \"blume-worker.mjs\";\n\n/**\n * Wrangler's limits on `assets.run_worker_first`: at most 100 rules of at\n * most 100 characters each. A rule set over either limit fails\n * `wrangler deploy` outright, so the injection is skipped instead — only\n * user-configured rules can push the generated set over.\n */\nconst MAX_RULES = 100;\nconst MAX_RULE_LENGTH = 100;\n\n/**\n * The paths the generated rules leave on the static layer, relative to the\n * deployment base: the fingerprinted build assets, and the files whose\n * response headers come from `_headers` — which Cloudflare does not apply to\n * a response the Worker produced — and which never negotiate. Those are the\n * raw AI-ready endpoints (`charset=utf-8` on `.md`/`.mdx`/`.txt`) and the\n * `.well-known` discovery documents (the extensionless api-catalog's content\n * type, the CORS headers).\n *\n * The JSON Blume writes at fixed paths stays there too, but JSON as a whole\n * does not: a negative rule outranks every positive one, so a `*.json`\n * exemption would keep a request for a page JSON that doesn't exist\n * (`/api/docs/pages/nope.json`) off the Worker, and the platform would answer\n * it with an empty 404 instead of the API's `PAGE_NOT_FOUND` problem document.\n * The per-page documents themselves reach the wrapper, which serves them from\n * the binding (see the module comment); any other JSON goes through the Astro\n * Worker, which serves a static file from the binding as well.\n */\nconst STATIC_EXEMPTIONS = [\n \"/_astro/*\",\n \"/*.md\",\n \"/*.mdx\",\n \"/*.txt\",\n \"/.well-known/*\",\n \"/404.json\",\n \"/agent-readability.json\",\n \"/blume-search.json\",\n OPENAPI_PATH,\n API_PAGES_PATH,\n API_NAVIGATION_PATH,\n];\n\n/** A value as `JSON.parse` produces it (the wrangler config's value space). */\ntype JsonValue =\n | string\n | number\n | boolean\n | null\n | JsonValue[]\n | { [key: string]: JsonValue };\n\n/** Narrow a parsed JSON value to a plain (non-array) object. */\nconst isJsonObject = (\n value: JsonValue | undefined\n): value is { [key: string]: JsonValue } =>\n typeof value === \"object\" && value !== null && !Array.isArray(value);\n\n/** Narrow a parsed JSON value to a string. */\nconst isJsonString = (value: JsonValue | undefined): value is string =>\n typeof value === \"string\";\n\nconst isNegativeRule = (rule: string): boolean => rule.startsWith(\"!\");\n\nconst ruleBody = (rule: string): string =>\n isNegativeRule(rule) ? rule.slice(1) : rule;\n\n/**\n * The `run_worker_first` rules: every path under the deployment base goes\n * through the Worker except the {@link STATIC_EXEMPTIONS}. Claiming\n * everything — rather than only the content routes — is what lets a\n * *missing* page negotiate: under an explicit rule list the platform answers\n * any request outside every rule from the static layer, an asset miss\n * included (as the nearest `404.html`), so a rule set scoped to the content\n * routes would never let the Worker see a request for a URL that has no\n * page. The price is a Worker hop on every page request the site does serve.\n * On a subpath deploy the base is claimed in both request spellings.\n *\n * Configured redirects need no exemption from these rules: the wrapper Worker\n * answers any it claims from its baked-in redirect table with the configured\n * status (see the module comment).\n */\nexport const buildRunWorkerFirstRules = (base?: string): string[] => {\n const prefix = encodeURI(normalizeBasePath(base));\n const exemptions = STATIC_EXEMPTIONS.map((path) => `!${prefix}${path}`);\n return prefix\n ? [prefix, `${prefix}/*`, ...exemptions]\n : [`/*`, ...exemptions];\n};\n\n/**\n * Whether `other` is a same-polarity glob that already covers `rule`.\n * Wrangler's deploy-time validator *rejects* a rule set containing a rule\n * another glob makes redundant, so covered rules must be dropped, not kept.\n */\nconst coveredBy = (rule: string, other: string): boolean =>\n other !== rule &&\n isNegativeRule(other) === isNegativeRule(rule) &&\n ruleBody(other).endsWith(\"*\") &&\n ruleBody(rule).startsWith(ruleBody(other).slice(0, -1));\n\n/**\n * Merge the generated rules into a user-configured `run_worker_first` (which\n * flows into the adapter's emitted config from the project's own wrangler\n * file). `true` already routes everything through the Worker, so it is kept\n * as-is; an array is unioned with the generated rules and then swept for\n * redundancy, since coverage by a glob is equivalent routing but a hard\n * validation error at deploy time.\n */\nexport const mergeRunWorkerFirstRules = (\n existing: JsonValue | undefined,\n added: readonly string[]\n): string[] | true => {\n if (existing === true) {\n return true;\n }\n const user = Array.isArray(existing)\n ? existing.filter((rule): rule is string => typeof rule === \"string\")\n : [];\n const merged = [...user, ...added.filter((rule) => !user.includes(rule))];\n return merged.filter(\n (rule) => !merged.some((other) => coveredBy(rule, other))\n );\n};\n\nconst withinWranglerLimits = (rules: string[] | true): boolean =>\n rules === true ||\n (rules.length <= MAX_RULES &&\n rules.every((rule) => rule.length <= MAX_RULE_LENGTH));\n\n/** A configured redirect the wrapper Worker serves itself. */\nexport interface WorkerRedirect {\n /**\n * Served path of the redirect, based the way the host platform matches it\n * (see `applyBaseToPlatformRedirects`) — the full URL path the Worker sees.\n */\n from: string;\n /** Configured HTTP status (301, 302, 307, or 308). */\n status: number;\n /** Destination, percent-encoded into the `Location` header. */\n to: string;\n}\n\nexport interface NegotiationWorkerOptions {\n /** Import specifier of the adapter's built entry, relative to the Worker. */\n mainSpecifier: string;\n /** Content routes with a raw-Markdown mirror (see `markdownRoutePaths`). */\n routePaths: readonly string[];\n /** Name of the assets binding the wrapper serves the `.md` mirrors from. */\n assetsBinding: string;\n /** `deployment.base` for subpath deploys. */\n base?: string;\n /** Homepage agent-discovery `Link` header (see `ai/link-headers.ts`). */\n homeLinkHeader?: string | null;\n /** Estimated token count of the homepage Markdown mirror. */\n homeTokens?: number;\n /** Configured redirects the wrapper answers with their exact status. */\n redirects?: readonly WorkerRedirect[];\n /**\n * Base-less served paths of the prerendered per-page JSON documents the\n * build emitted (see `pageJsonPath`), decoded. The wrapper answers exactly\n * these from the assets binding, since the Astro Worker would route them to\n * the `/api/` catch-all (see the module comment).\n */\n pageJsonPaths?: readonly string[];\n /**\n * Which prerendered 404 twins the build emitted (`404.md`, `404.json`), so\n * the wrapper only substitutes a twin that exists. A project that owns\n * `/404` emits neither and keeps the HTML answer.\n */\n notFound?: NotFoundVariants;\n}\n\n/**\n * The wrapper Worker module. The negotiation helpers are a JavaScript copy of\n * `astro/markdown-negotiation.ts` — the deploy bundle is uploaded with\n * `no_bundle`, so the module must be self-contained; behavioral parity with\n * the dev middleware is enforced by `test/cloudflare-negotiation.test.ts`.\n */\nexport const buildNegotiationWorker = (\n options: NegotiationWorkerOptions\n): string => {\n const routes = JSON.stringify(options.routePaths);\n const pageJson = JSON.stringify(options.pageJsonPaths ?? []);\n const binding = JSON.stringify(options.assetsBinding);\n const prefix = JSON.stringify(encodeURI(normalizeBasePath(options.base)));\n const homeLinkHeader = JSON.stringify(options.homeLinkHeader ?? null);\n const homeTokens = JSON.stringify(\n options.homeTokens === undefined ? null : String(options.homeTokens)\n );\n const notFound = JSON.stringify({\n json: options.notFound?.json === true,\n markdown: options.notFound?.markdown === true,\n });\n // Keyed by the normalized served path; the runtime lookup decodes and\n // trims the request path the same way, so both spellings of a URL match.\n // The destination is percent-encoded here because it ships as a `Location`\n // header, which cannot carry non-ASCII.\n const redirects = JSON.stringify(\n Object.fromEntries(\n (options.redirects ?? [])\n .filter((redirect) => !isPatternPath(redirect.from))\n .map((redirect) => [\n normalizePath(redirect.from),\n [encodeURI(redirect.to), redirect.status],\n ])\n )\n );\n // Patterns (`/beta/:slug*`) are tried in order after the exact paths.\n const patternRedirects = JSON.stringify(\n compileRedirects(options.redirects ?? [])\n );\n return `// Generated by Blume. Do not edit; this file is recreated on each build.\n//\n// Request-time \\`Accept: text/markdown\\` negotiation for a Cloudflare server\n// build. \\`assets.run_worker_first\\` routes content-page requests here instead\n// of the platform's static layer; a client that prefers Markdown gets the\n// page's prerendered \\`.md\\` mirror from the assets binding, a configured\n// redirect is answered with its exact configured status, and a prerendered\n// per-page JSON document is served from the binding (the Astro Worker would\n// route it to the \\`/api/\\` catch-all, because Astro resolves a prerendered\n// dynamic route to the first live route on the same path). Every other\n// request is delegated to the Astro Worker untouched — except a missing\n// page, whose HTML 404 shell is swapped for the prerendered Markdown or JSON\n// 404 twin when the client prefers one. \\`_headers\\` does not apply to\n// worker-first routes, so the homepage Link header, the Markdown charset, and\n// the sandbox on downloaded SVGs are re-stamped here.\nimport server from ${JSON.stringify(options.mainSpecifier)};\n\nconst ROUTES = new Set(${routes});\nconst PAGE_JSON = new Set(${pageJson});\nconst BASE_PREFIX = ${prefix};\nconst ASSETS_BINDING = ${binding};\nconst HOME_LINK_HEADER = ${homeLinkHeader};\nconst HOME_TOKENS = ${homeTokens};\nconst REDIRECTS = ${redirects};\nconst PATTERN_REDIRECTS = ${patternRedirects}.map(\n ([source, location, status]) => [new RegExp(source, \"u\"), location, status]\n);\nconst NOT_FOUND = ${notFound};\nconst SVG_ASSET_HEADERS = ${JSON.stringify(SVG_ASSET_HEADERS)};\n\n// An SVG a content source downloaded: a document that could run script as the\n// docs site if opened directly, so it goes out sandboxed. Matched on the\n// decoded path, ignoring case — the file the assets binding serves.\nconst isSvgAsset = (pathname) => {\n const path = safeDecode(pathname).toLowerCase();\n const prefix = (safeDecode(BASE_PREFIX) + \"${CONTENT_ASSETS_ROOT}/\").toLowerCase();\n return path.startsWith(prefix) && path.endsWith(\".svg\");\n};\n\n// Configured redirects live in \\`_redirects\\`, which only the static layer\n// reads — a worker-first route never reaches it. Answering from this baked-in\n// copy keeps the exact configured status; delegating instead would let Astro's\n// SSR handler default a GET to a permanent 301.\n// An exact path is looked up first, then each pattern is tried in order, its\n// Location template filled with the captures, encoded so a capture can't grow\n// a query or fragment.\nconst redirectFor = (pathname) => {\n const trimmed =\n pathname !== \"/\" && pathname.endsWith(\"/\") ? pathname.slice(0, -1) : pathname;\n const path = safeDecode(trimmed);\n if (Object.hasOwn(REDIRECTS, path)) {\n return REDIRECTS[path];\n }\n const decoded = safeDecode(pathname);\n for (const [pattern, location, status] of PATTERN_REDIRECTS) {\n const match = pattern.exec(decoded);\n if (match) {\n return [\n location.replace(/\\\\$(\\\\d+)/gu, (_reference, index) =>\n encodeURI(match[Number(index)] ?? \"\")\n .replaceAll(\"?\", \"%3F\")\n .replaceAll(\"#\", \"%23\")\n ),\n status,\n ];\n }\n }\n return null;\n};\n\n// The request path with the deployment base removed: the whole path on a\n// root deploy, \\`\"\"\\` for the bare base, \\`null\\` for a path outside the base.\nconst stripBase = (pathname) => {\n if (!BASE_PREFIX) {\n return pathname;\n }\n if (pathname === BASE_PREFIX) {\n return \"\";\n }\n return pathname.startsWith(BASE_PREFIX + \"/\")\n ? pathname.slice(BASE_PREFIX.length)\n : null;\n};\n\n// Decoded for the lookups, which are keyed by decoded paths; a malformed\n// escape keeps the raw path, which simply won't match anything.\nconst safeDecode = (path) => {\n try {\n return decodeURIComponent(path);\n } catch {\n return path;\n }\n};\n\n// \\`_redirects\\` semantics, which the static layer applies to these same\n// paths: the request's query string is forwarded unless the destination\n// carries its own, and a destination fragment stays after the query.\nconst redirectLocation = (destination, search) => {\n const hashIndex = destination.indexOf(\"#\");\n const bare = hashIndex === -1 ? destination : destination.slice(0, hashIndex);\n if (!search || bare.includes(\"?\")) {\n return destination;\n }\n return hashIndex === -1\n ? bare + search\n : bare + search + destination.slice(hashIndex);\n};\n\nconst parseAccept = (accept) =>\n accept.split(\",\").map((part) => {\n const segments = part.trim().split(\";\");\n const type = (segments[0] ?? \"\").trim().toLowerCase();\n const qSegment = segments\n .slice(1)\n .map((segment) => segment.trim())\n .find((segment) => segment.startsWith(\"q=\"));\n const q = qSegment ? Number(qSegment.slice(2)) : 1;\n return { q: Number.isNaN(q) ? 1 : q, type };\n });\n\n// Whether the client explicitly prefers one of \\`types\\` over HTML. Browsers\n// never send these, so an ordinary page request is false.\nconst prefers = (accept, types) => {\n if (!accept) {\n return false;\n }\n let wantedQ = -1;\n let htmlQ = 0;\n for (const { q, type } of parseAccept(accept)) {\n if (types.includes(type)) {\n wantedQ = Math.max(wantedQ, q);\n } else if (type === \"text/html\") {\n htmlQ = Math.max(htmlQ, q);\n }\n }\n return wantedQ > 0 && wantedQ >= htmlQ;\n};\n\nconst prefersMarkdown = (accept) =>\n prefers(accept, [\"text/markdown\", \"text/x-markdown\"]);\n\nconst prefersJson = (accept) =>\n prefers(accept, [\"application/json\", \"application/problem+json\"]);\n\n// The prerendered 404 twins, in the order a client asking for both is\n// answered: which twin, when a client prefers it, the raw URL extension that\n// asks for it implicitly, where it lives, and the content type to re-pin.\nconst NOT_FOUND_TWINS = [\n {\n contentType: \"text/markdown; charset=utf-8\",\n extension: /\\\\.mdx?$/u,\n key: \"markdown\",\n path: \"/404.md\",\n prefers: prefersMarkdown,\n },\n {\n contentType: \"application/problem+json; charset=utf-8\",\n extension: /\\\\.json$/u,\n key: \"json\",\n path: \"/404.json\",\n prefers: prefersJson,\n },\n];\n\n// A missing page comes back from the Astro Worker as the HTML 404 shell (the\n// binding's \\`not_found_handling\\`); a client that prefers Markdown or JSON —\n// or asked for a raw \\`.md\\`/\\`.json\\` URL no file backs — gets the prerendered\n// twin instead, with the same 404 status. Anything but an HTML 404 (an API\n// endpoint's own problem document, a missing image) is left alone. The twin\n// is fetched without the request's conditional headers, so a stray ETag match\n// cannot turn the 404 into a 304.\nconst notFoundTwin = async (request, url, response, assets) => {\n if (response.status !== 404 || assets === undefined) {\n return null;\n }\n const type = response.headers.get(\"content-type\") ?? \"\";\n if (!type.startsWith(\"text/html\")) {\n return null;\n }\n const accept = request.headers.get(\"accept\");\n for (const twin of NOT_FOUND_TWINS) {\n if (!NOT_FOUND[twin.key]) {\n continue;\n }\n const negotiated = twin.prefers(accept);\n if (!negotiated && !twin.extension.test(url.pathname)) {\n continue;\n }\n const asset = await assets.fetch(\n new Request(new URL(BASE_PREFIX + twin.path, url), {\n method: request.method,\n })\n );\n if (!asset.ok) {\n return null;\n }\n const patched = new Response(asset.body, {\n headers: asset.headers,\n status: 404,\n });\n patched.headers.set(\"content-type\", twin.contentType);\n if (negotiated) {\n patched.headers.append(\"vary\", \"Accept\");\n }\n return patched;\n }\n return null;\n};\n\nconst markdownVariantUrl = (rawUrl) => {\n const queryIndex = rawUrl.indexOf(\"?\");\n const query = queryIndex === -1 ? \"\" : rawUrl.slice(queryIndex);\n const rawPath = queryIndex === -1 ? rawUrl : rawUrl.slice(0, queryIndex);\n const rest = stripBase(rawPath);\n if (rest === null) {\n return null;\n }\n const path = rest || \"/\";\n const trimmed = path !== \"/\" && path.endsWith(\"/\") ? path.slice(0, -1) : path;\n const pathname = safeDecode(trimmed);\n if (!ROUTES.has(pathname)) {\n return null;\n }\n const target = pathname === \"/\" ? \"/index\" : pathname;\n return BASE_PREFIX + encodeURI(target) + \".md\" + query;\n};\n\n// Exactly the per-page JSON documents the build emitted, so a URL the site\n// never generated (a hidden page, a path outside the API) takes the normal\n// route to the Astro Worker and its problem document.\nconst isPageJson = (pathname) => {\n const rest = stripBase(pathname);\n return rest !== null && PAGE_JSON.has(safeDecode(rest));\n};\n\nconst isHomePath = (pathname) => {\n const rest = stripBase(pathname);\n return rest === \"\" || rest === \"/\";\n};\n\nconst withHeaders = (response, apply) => {\n const patched = new Response(response.body, response);\n apply(patched.headers);\n return patched;\n};\n\nexport default {\n async fetch(request, env, context) {\n const url = new URL(request.url);\n // Before the method guard: the static layer applies \\`_redirects\\` to every\n // method, so the wrapper does too.\n const redirect = redirectFor(url.pathname);\n if (redirect !== null) {\n return new Response(null, {\n headers: { location: redirectLocation(redirect[0], url.search) },\n status: redirect[1],\n });\n }\n if (isSvgAsset(url.pathname)) {\n return withHeaders(await server.fetch(request, env, context), (headers) => {\n for (const [name, value] of Object.entries(SVG_ASSET_HEADERS)) {\n headers.set(name, value);\n }\n });\n }\n if (request.method !== \"GET\" && request.method !== \"HEAD\") {\n return server.fetch(request, env, context);\n }\n const assets = env[ASSETS_BINDING];\n // The request goes through untouched, so a conditional revalidation\n // reaches the binding and comes back as a 304 — anything but a miss is\n // the document's own answer. A miss falls through to the Astro Worker.\n if (assets !== undefined && isPageJson(url.pathname)) {\n const asset = await assets.fetch(request);\n if (asset.status !== 404) {\n return asset;\n }\n }\n const variant = markdownVariantUrl(url.pathname + url.search);\n const home = isHomePath(url.pathname);\n if (\n variant !== null &&\n assets !== undefined &&\n prefersMarkdown(request.headers.get(\"accept\"))\n ) {\n const asset = await assets.fetch(\n new Request(new URL(variant, url), request)\n );\n if (asset.ok) {\n return withHeaders(asset, (headers) => {\n headers.set(\"content-type\", \"text/markdown; charset=utf-8\");\n headers.append(\"vary\", \"Accept\");\n if (home) {\n if (HOME_LINK_HEADER !== null) {\n headers.set(\"link\", HOME_LINK_HEADER);\n }\n if (HOME_TOKENS !== null) {\n headers.set(\"x-markdown-tokens\", HOME_TOKENS);\n }\n }\n });\n }\n }\n const response = await server.fetch(request, env, context);\n const twin = await notFoundTwin(request, url, response, assets);\n if (twin !== null) {\n return twin;\n }\n if (variant === null && !(home && HOME_LINK_HEADER !== null)) {\n return response;\n }\n return withHeaders(response, (headers) => {\n if (variant !== null) {\n headers.append(\"vary\", \"Accept\");\n }\n if (home && HOME_LINK_HEADER !== null && !headers.has(\"link\")) {\n headers.set(\"link\", HOME_LINK_HEADER);\n }\n });\n },\n};\n`;\n};\n\nexport interface WorkerNegotiation {\n /** Updated `wrangler.json` text (worker-first rules + swapped `main`). */\n wrangler: string;\n /** The wrapper Worker module, to write as {@link NEGOTIATION_WORKER_FILE}. */\n worker: string;\n}\n\nexport interface WorkerNegotiationOptions extends Omit<\n NegotiationWorkerOptions,\n \"assetsBinding\" | \"mainSpecifier\"\n> {\n /**\n * The manifest content routes, based like `routePaths` — the guard that\n * keeps the wrapper's redirect table off real pages. Defaults to\n * `routePaths`, which also carries the synthesized homepage mirror (see\n * `markdownRoutePaths`); passing the manifest routes keeps that synthetic\n * `/` from blocking a configured root redirect.\n */\n contentRoutePaths?: readonly string[];\n}\n\n/**\n * Wire the negotiation into the adapter's emitted `dist/server/wrangler.json`:\n * point `main` at the wrapper Worker and scope `assets.run_worker_first` to\n * the content routes (merged with any user-configured rules). Returns the\n * updated config text plus the wrapper module, or `null` when there is\n * nothing to do or nowhere safe to do it: no routes, unparsable config, no\n * usable `main` or assets binding (the wrapper serves the `.md` mirrors from\n * it), an already-swapped `main` (the original entry is unrecoverable), or\n * user-configured rules that push the set over Wrangler's limits.\n *\n * The configured redirects are baked into the wrapper, which answers any the\n * worker-first rules claim with the exact configured status (see the module\n * comment) — whichever rules do the claiming: the generated `/*`, or the\n * user's own (including a bare `true`). A\n * redirect at a content route's own path is never baked: the page owns it,\n * and answering a redirect there would take a real page off the air. When\n * `null` is returned no rule set is written at all, so every request stays on\n * the static layer and `_redirects` serves the configured statuses as before.\n */\nexport const injectWorkerNegotiation = (\n wranglerText: string,\n options: WorkerNegotiationOptions\n): WorkerNegotiation | null => {\n if (options.routePaths.length === 0) {\n return null;\n }\n let config: JsonValue;\n try {\n config = JSON.parse(wranglerText);\n } catch {\n return null;\n }\n if (!isJsonObject(config)) {\n return null;\n }\n const { main } = config;\n if (\n !isJsonString(main) ||\n main.length === 0 ||\n main === NEGOTIATION_WORKER_FILE\n ) {\n return null;\n }\n const { assets } = config;\n if (!isJsonObject(assets) || !isJsonString(assets.binding)) {\n return null;\n }\n const {\n contentRoutePaths = options.routePaths,\n redirects = [],\n ...workerOptions\n } = options;\n // The content-route guard compares against redirect `from`s, which carry the\n // full `{deployment.base}{basePath}` stack; the routes carry only\n // `basePath`, so the deployment base is applied here.\n const deployPrefix = normalizeBasePath(options.base);\n const guardRoutes = new Set(\n contentRoutePaths.map((route) =>\n normalizePath(\n deployPrefix && route !== \"/\"\n ? `${deployPrefix}${route}`\n : deployPrefix || route\n )\n )\n );\n const workerRedirects = redirects.filter(\n (redirect) =>\n redirect.from.startsWith(\"/\") &&\n !guardRoutes.has(normalizePath(redirect.from))\n );\n const rules = mergeRunWorkerFirstRules(\n assets.run_worker_first,\n buildRunWorkerFirstRules(options.base)\n );\n if (!withinWranglerLimits(rules)) {\n return null;\n }\n if (rules !== true) {\n assets.run_worker_first = rules;\n }\n config.main = NEGOTIATION_WORKER_FILE;\n const mainSpecifier =\n main.startsWith(\".\") || main.startsWith(\"/\") ? main : `./${main}`;\n const worker = buildNegotiationWorker({\n ...workerOptions,\n assetsBinding: assets.binding,\n mainSpecifier,\n redirects: workerRedirects,\n });\n // The adapter and Wrangler both write this file unformatted; match them.\n return { worker, wrangler: JSON.stringify(config) };\n};\n",
200
+ "import { crossOriginDiscoveryPaths } from \"../ai/ai-catalog.ts\";\nimport {\n API_CATALOG_PATH,\n API_CATALOG_TYPE,\n hasApiCatalog,\n} from \"../ai/api-catalog.ts\";\nimport { servesSkillsIndex } from \"../ai/skills.ts\";\nimport {\n SIGNATURES_DIRECTORY_PATH,\n SIGNATURES_DIRECTORY_TYPE,\n} from \"../ai/web-bot-auth.ts\";\nimport { normalizeBasePath } from \"../core/base-path.ts\";\nimport { POWERED_BY_HEADERS } from \"../core/powered-by.ts\";\nimport type { ResolvedConfig } from \"../core/schema.ts\";\n\n/**\n * The `_headers` file for a static build (Netlify + Cloudflare Pages/Workers\n * static assets). Blume's raw AI-ready endpoints — `/<route>.md`, `/<route>.mdx`,\n * and the `.txt` files (`llms.txt`, `llms-full.txt`) — are valid UTF-8, but a\n * static host serves them from the file extension alone, and common hosts send\n * `text/markdown` / `text/plain` with **no** `charset`. Browsers then fall back\n * to Windows-1252 for non-HTML text, so any non-ASCII docs (Japanese, accented\n * Latin, …) render as mojibake when the raw URL is opened directly. HTML pages\n * escape this because they carry `<meta charset>`; the raw endpoints have only\n * the HTTP header. Pinning `charset=utf-8` here matches the Content-Type these\n * same routes already send from the dev/server runtime (see\n * `astro/templates.ts`). Hosts that don't read `_headers` ignore the file\n * harmlessly; Vercel gets the same rules in `vercel.json` (see\n * {@link buildVercelHeaders}).\n */\n\n/**\n * One rule per served extension. `.mdx` uses `text/markdown` to match the\n * runtime endpoint, which serves both variants as `text/markdown`. Every rule\n * sits at the deployment base, not under `basePath`: most Markdown mirrors\n * live under the page routes, but the section home's mirror (`/docs.md`) sits\n * beside `basePath`, and the synthesized `/index.md`, `/changelog.md`, and\n * `/404.md` sit at the root, as do the `.txt` files (`llms.txt`,\n * `llms-full.txt`).\n */\nconst HEADER_RULES: readonly { contentType: string; ext: string }[] = [\n { contentType: \"text/markdown; charset=utf-8\", ext: \"md\" },\n { contentType: \"text/markdown; charset=utf-8\", ext: \"mdx\" },\n { contentType: \"text/plain; charset=utf-8\", ext: \"txt\" },\n];\n\n/** Where the generated endpoint serves content-source images from. */\nexport const CONTENT_ASSETS_ROOT = \"/blume-assets\";\n\n/**\n * The policy a content-source SVG is served with: an opaque origin with\n * scripts off, so an uploaded SVG that carries a `<script>` stays inert when\n * opened directly.\n */\nexport const SVG_ASSET_POLICY = \"sandbox\";\n\n/**\n * The headers a content-source SVG is served with: the sandbox policy, and no\n * MIME sniffing. The endpoint sends them from the dev runtime; every host\n * gets them for the built files — static hosts through {@link headerRules},\n * server builds through each platform's own mechanism (`deploy/platforms`).\n */\nexport const SVG_ASSET_HEADERS = {\n \"Content-Security-Policy\": SVG_ASSET_POLICY,\n \"X-Content-Type-Options\": \"nosniff\",\n} satisfies Record<string, string>;\n\n/** The served glob of content-source SVGs, under the deployment base. */\nexport const svgAssetPath = (config: ResolvedConfig): string =>\n `${normalizeBasePath(config.deployment.options.base)}${CONTENT_ASSETS_ROOT}/*.svg`;\n\n/**\n * One static-host header rule: a served path (a `*` glob spanning path\n * segments, or an exact path) and the header it sets there.\n */\nexport interface HeaderRule {\n name: string;\n path: string;\n value: string;\n}\n\n/**\n * The header rules every static host should apply, in `_headers` glob syntax.\n * The glob carries the deployment base so the rules still match once the site\n * is mounted under a subpath (`/docs/*.md`); the wildcard spans path\n * segments, so a nested route like `/docs/ja/intro.md` matches too.\n *\n * When a homepage `Link` header is provided (see `ai/link-headers.ts`), an\n * exact-path rule for the root page advertises the agent-discovery resources —\n * the static-host counterpart of the Vercel routing-config injection.\n */\nexport const headerRules = (\n config: ResolvedConfig,\n homeLinkHeader?: string | null\n): HeaderRule[] => {\n const deployBase = normalizeBasePath(config.deployment.options.base);\n const rules: HeaderRule[] = HEADER_RULES.map((rule) => ({\n name: \"Content-Type\",\n path: `${deployBase}/*.${rule.ext}`,\n value: rule.contentType,\n }));\n // One rule for the whole site: `/*` matches the homepage too, and a host\n // that joins the values of overlapping rules would send a second one twice.\n if (config.poweredBy) {\n for (const [name, value] of Object.entries(POWERED_BY_HEADERS)) {\n rules.push({ name, path: `${deployBase}/*`, value });\n }\n }\n if (homeLinkHeader) {\n rules.push({ name: \"Link\", path: `${deployBase}/`, value: homeLinkHeader });\n }\n // The well-known discovery files are extensionless, so without an explicit\n // rule a static host serves their registered media types as octet-stream or\n // text/plain.\n if (hasApiCatalog(config)) {\n rules.push({\n name: \"Content-Type\",\n path: `${deployBase}${API_CATALOG_PATH}`,\n value: API_CATALOG_TYPE,\n });\n }\n if (config.agents.webBotAuth.keys.length > 0) {\n rules.push({\n name: \"Content-Type\",\n path: `${deployBase}${SIGNATURES_DIRECTORY_PATH}`,\n value: SIGNATURES_DIRECTORY_TYPE,\n });\n }\n // Agent registries fetch the discovery documents cross-origin; a static\n // host sends no CORS header unless told to.\n for (const path of crossOriginDiscoveryPaths(config)) {\n rules.push({\n name: \"Access-Control-Allow-Origin\",\n path: `${deployBase}${path}`,\n value: \"*\",\n });\n }\n // Published skills live at the deployment base, and the RFC wants their\n // archives served as application/gzip explicitly.\n if (servesSkillsIndex(config)) {\n rules.push(\n {\n name: \"Content-Type\",\n path: `${deployBase}/.well-known/agent-skills/*.md`,\n value: \"text/markdown; charset=utf-8\",\n },\n {\n name: \"Content-Type\",\n path: `${deployBase}/.well-known/agent-skills/*.tar.gz`,\n value: \"application/gzip\",\n }\n );\n }\n // Images a content source downloads (a CMS upload, a remote page's figure)\n // are served from the docs origin, and an SVG opened directly is a document\n // that can run script. A sandbox policy keeps it inert; an `<img>` that\n // embeds it is unaffected.\n for (const [name, value] of Object.entries(SVG_ASSET_HEADERS)) {\n rules.push({ name, path: svgAssetPath(config), value });\n }\n return rules;\n};\n\n/**\n * `_headers` contents: each {@link headerRules} entry as its path with an\n * indented header line, in the two-space format Netlify and Cloudflare read.\n */\nexport const buildNetlifyHeaders = (\n config: ResolvedConfig,\n homeLinkHeader?: string | null\n): string =>\n `${headerRules(config, homeLinkHeader)\n .map((rule) => `${rule.path}\\n ${rule.name}: ${rule.value}`)\n .join(\"\\n\")}\\n`;\n\n/** One entry of Netlify's Frameworks API config `headers` array. */\nexport interface NetlifyConfigHeaders {\n for: string;\n values: Record<string, string>;\n}\n\n/**\n * The {@link headerRules} as Netlify Frameworks API `headers` entries\n * (`.netlify/v1/config.json`), one per path with every header it sets. A\n * `netlify()` server build reads no `_headers` file, so it carries the same\n * rules here, in the `for`/`values` form that follows `netlify.toml`'s\n * `[[headers]]` and the same path syntax as `_headers`.\n */\nexport const buildNetlifyConfigHeaders = (\n config: ResolvedConfig,\n homeLinkHeader?: string | null\n): NetlifyConfigHeaders[] => {\n const byPath = new Map<string, Record<string, string>>();\n for (const rule of headerRules(config, homeLinkHeader)) {\n byPath.set(rule.path, {\n ...byPath.get(rule.path),\n [rule.name]: rule.value,\n });\n }\n return [...byPath].map(([path, values]) => ({ for: path, values }));\n};\n\n/** One entry of `vercel.json`'s `headers` array. */\nexport interface VercelHeader {\n headers: { key: string; value: string }[];\n source: string;\n}\n\n/** The characters `path-to-regexp` would read as syntax in a literal path. */\nconst SOURCE_SYNTAX = /[\\\\(){}?+:]/gu;\n\n/**\n * A literal path as `path-to-regexp` source text — what a `vercel.json`\n * `source` is — with each syntax character escaped, so it matches only itself.\n */\nexport const escapeVercelSource = (path: string): string =>\n path.replaceAll(SOURCE_SYNTAX, String.raw`\\$&`);\n\n/**\n * A `_headers` path as a `vercel.json` `source`, which `path-to-regexp` reads:\n * the literal parts are escaped, and a `*` glob becomes the `(.*)` group that\n * spans path segments as the glob does. An exact directory path (the homepage\n * rule's `/docs/`) drops its trailing slash, the URL Vercel serves it at. A\n * whole-directory glob (`/docs/*`) becomes an optional group,\n * `/docs/:path(.*)?`, so it matches that bare URL as well as every path\n * beneath it.\n */\nconst vercelSource = (path: string): string => {\n if (path.endsWith(\"/*\")) {\n return `${escapeVercelSource(path.slice(0, -2))}/:path(.*)?`;\n }\n const trimmed =\n path.length > 1 && path.endsWith(\"/\") ? path.slice(0, -1) : path;\n return trimmed.split(\"*\").map(escapeVercelSource).join(\"(.*)\");\n};\n\n/**\n * The {@link headerRules} as `vercel.json` `headers` entries. Vercel reads no\n * `_headers` file, so a static deploy of `dist/` carries the same rules here —\n * the charset on the raw Markdown and text files, the homepage `Link` header,\n * and the media types and CORS header of the discovery files.\n */\nexport const buildVercelHeaders = (\n config: ResolvedConfig,\n homeLinkHeader?: string | null\n): VercelHeader[] =>\n headerRules(config, homeLinkHeader).map((rule) => ({\n headers: [{ key: rule.name, value: rule.value }],\n source: vercelSource(rule.path),\n }));\n",
201
+ "/**\n * `Accept: text/markdown` content negotiation for Cloudflare server builds.\n *\n * Blume prerenders every content page — even in a server build (`deployment:\n * cloudflare()`) — and on Cloudflare the ASSETS binding serves those files before\n * the Worker script runs, so no server-side code (Astro middleware included)\n * ever sees a content-page request. Worse, even a content-page request that\n * does reach the Worker is answered by `@astrojs/cloudflare`'s handler\n * straight from the ASSETS binding, ahead of `app.render` — the only place\n * middleware runs — because `app.match` resolves a prerendered route to\n * nothing and the handler then falls back to the binding.\n *\n * Negotiation therefore needs two coordinated pieces, both applied to the\n * adapter's emitted deploy bundle after `astro build`:\n *\n * 1. `assets.run_worker_first` in `dist/server/wrangler.json`, claiming every\n * path except the static files that never negotiate, so the platform\n * routes page requests — and requests for pages that do not exist — to\n * the Worker instead of serving the static HTML directly (see\n * `buildRunWorkerFirstRules`).\n * 2. A generated entry Worker that fronts the adapter's: when the client\n * prefers `text/markdown` it serves the page's prerendered `.md` mirror\n * from the ASSETS binding, and it delegates everything else to the Astro\n * Worker untouched.\n *\n * The prerendered per-page JSON documents (`/api/docs/pages/{route}.json`)\n * are the one prerendered surface the adapter's fallback does *not* cover.\n * They come from a prerendered *dynamic* route, and for those Astro's\n * `matchRequest` returns the first non-prerendered route matching the same\n * path — on a server build that is the `/api/[...path]` catch-all, which\n * answers with a 404 problem document; `fallbackToAssets` never runs. The\n * static-pathname endpoints (`pages.json`, `navigation.json`) are unaffected:\n * they sit in the manifest's asset set, which the handler serves from the\n * binding first. So whenever a worker-first rule claims a page JSON URL, the\n * wrapper answers it from the binding itself, keyed by the exact set of\n * documents the build emitted. The generated rule set claims them (a miss\n * must reach the API's `PAGE_NOT_FOUND` answer, see `STATIC_EXEMPTIONS`), and\n * so do user-configured rules or a bare `true`.\n *\n * Cloudflare does not apply `_headers` to worker-first routes, so the wrapper\n * also re-stamps what the static layer would otherwise add on the routes it\n * takes over: the homepage agent-discovery `Link` header, the Markdown\n * `charset=utf-8`, the sandbox on the SVGs a content source downloaded (see\n * `deploy/headers.ts`), and `X-Powered-By` unless `poweredBy` is `false`. The\n * raw `.md`/`.mdx` URLs are\n * exempted from worker-first routing with negative rules, keeping their\n * `_headers` treatment and their zero-Worker serving path.\n *\n * Configured redirects are baked into the wrapper as well, and answered there\n * with their exact configured status. On a server build Blume routes\n * `redirects` through Astro's own config, and `@astrojs/cloudflare` turns\n * those into `_redirects` entries carrying the exact status — but only\n * Cloudflare's static layer reads that file, and a worker-first route never\n * reaches it. Astro's SSR redirect handler would answer instead, and it honors\n * the configured status only when the destination resolves to a discrete\n * route: Blume serves every page from `[...slug]`, so it never does, and\n * `computeRedirectStatus` defaults a GET to **301** — a permanent redirect\n * that browsers cache indefinitely. The wrapper checking its own redirect\n * table before delegating closes that hole at zero rule cost: unlike negative\n * `run_worker_first` exemptions, a baked-in table spends nothing against\n * Wrangler's 100-rule / 100-character limits, cannot collide with\n * user-configured rules (or a bare `true`), and needs no basing gymnastics —\n * its keys are full served URLs, which is exactly what the Worker sees.\n * Redirects outside every worker-first rule still never invoke the Worker;\n * the static layer serves them from `_redirects` as before.\n *\n * Missing pages negotiate too. Under an explicit `run_worker_first` list the\n * platform answers every request outside the rules from the static layer —\n * an asset miss included, as the nearest `404.html` — which is why the rules\n * claim every path: a request for a URL no page backs then reaches the\n * Worker, and the Astro Worker answers it with the HTML 404 shell from the\n * binding (`not_found_handling: \"404-page\"`). When the client prefers\n * Markdown the wrapper swaps that shell for the prerendered `/404.md` twin,\n * and when it prefers JSON for the `/404.json` problem document, keeping the\n * 404 status either way — the counterpart of the miss-phase routes in\n * `deploy/vercel-negotiation.ts`. A raw `.md` or `.json` URL no file backs\n * asks for the same twin implicitly, but on this platform such a request only\n * reaches the Worker for `.json` (the generated set keeps `.md` on the static\n * layer for its `_headers`). Only an HTML 404 is swapped, so an API endpoint's\n * own problem document is never overwritten.\n */\n\nimport {\n API_NAVIGATION_PATH,\n API_PAGES_PATH,\n OPENAPI_PATH,\n} from \"../ai/api/paths.ts\";\nimport { normalizeBasePath, normalizePath } from \"../core/base-path.ts\";\nimport { POWERED_BY_HEADERS } from \"../core/powered-by.ts\";\nimport { compileRedirects, isPatternPath } from \"../core/redirect-patterns.ts\";\nimport { CONTENT_ASSETS_ROOT, SVG_ASSET_HEADERS } from \"./headers.ts\";\nimport type { NotFoundVariants } from \"./vercel-negotiation.ts\";\n\n/** Filename of the generated wrapper Worker, next to the adapter's entry. */\nexport const NEGOTIATION_WORKER_FILE = \"blume-worker.mjs\";\n\n/**\n * Wrangler's limits on `assets.run_worker_first`: at most 100 rules of at\n * most 100 characters each. A rule set over either limit fails\n * `wrangler deploy` outright, so the injection is skipped instead — only\n * user-configured rules can push the generated set over.\n */\nconst MAX_RULES = 100;\nconst MAX_RULE_LENGTH = 100;\n\n/**\n * The paths the generated rules leave on the static layer, relative to the\n * deployment base: the fingerprinted build assets, and the files whose\n * response headers come from `_headers` — which Cloudflare does not apply to\n * a response the Worker produced — and which never negotiate. Those are the\n * raw AI-ready endpoints (`charset=utf-8` on `.md`/`.mdx`/`.txt`) and the\n * `.well-known` discovery documents (the extensionless api-catalog's content\n * type, the CORS headers).\n *\n * The JSON Blume writes at fixed paths stays there too, but JSON as a whole\n * does not: a negative rule outranks every positive one, so a `*.json`\n * exemption would keep a request for a page JSON that doesn't exist\n * (`/api/docs/pages/nope.json`) off the Worker, and the platform would answer\n * it with an empty 404 instead of the API's `PAGE_NOT_FOUND` problem document.\n * The per-page documents themselves reach the wrapper, which serves them from\n * the binding (see the module comment); any other JSON goes through the Astro\n * Worker, which serves a static file from the binding as well.\n */\nconst STATIC_EXEMPTIONS = [\n \"/_astro/*\",\n \"/*.md\",\n \"/*.mdx\",\n \"/*.txt\",\n \"/.well-known/*\",\n \"/404.json\",\n \"/agent-readability.json\",\n \"/blume-search.json\",\n OPENAPI_PATH,\n API_PAGES_PATH,\n API_NAVIGATION_PATH,\n];\n\n/** A value as `JSON.parse` produces it (the wrangler config's value space). */\ntype JsonValue =\n | string\n | number\n | boolean\n | null\n | JsonValue[]\n | { [key: string]: JsonValue };\n\n/** Narrow a parsed JSON value to a plain (non-array) object. */\nconst isJsonObject = (\n value: JsonValue | undefined\n): value is { [key: string]: JsonValue } =>\n typeof value === \"object\" && value !== null && !Array.isArray(value);\n\n/** Narrow a parsed JSON value to a string. */\nconst isJsonString = (value: JsonValue | undefined): value is string =>\n typeof value === \"string\";\n\nconst isNegativeRule = (rule: string): boolean => rule.startsWith(\"!\");\n\nconst ruleBody = (rule: string): string =>\n isNegativeRule(rule) ? rule.slice(1) : rule;\n\n/**\n * The `run_worker_first` rules: every path under the deployment base goes\n * through the Worker except the {@link STATIC_EXEMPTIONS}. Claiming\n * everything — rather than only the content routes — is what lets a\n * *missing* page negotiate: under an explicit rule list the platform answers\n * any request outside every rule from the static layer, an asset miss\n * included (as the nearest `404.html`), so a rule set scoped to the content\n * routes would never let the Worker see a request for a URL that has no\n * page. The price is a Worker hop on every page request the site does serve.\n * On a subpath deploy the base is claimed in both request spellings.\n *\n * Configured redirects need no exemption from these rules: the wrapper Worker\n * answers any it claims from its baked-in redirect table with the configured\n * status (see the module comment).\n */\nexport const buildRunWorkerFirstRules = (base?: string): string[] => {\n const prefix = encodeURI(normalizeBasePath(base));\n const exemptions = STATIC_EXEMPTIONS.map((path) => `!${prefix}${path}`);\n return prefix\n ? [prefix, `${prefix}/*`, ...exemptions]\n : [`/*`, ...exemptions];\n};\n\n/**\n * Whether `other` is a same-polarity glob that already covers `rule`.\n * Wrangler's deploy-time validator *rejects* a rule set containing a rule\n * another glob makes redundant, so covered rules must be dropped, not kept.\n */\nconst coveredBy = (rule: string, other: string): boolean =>\n other !== rule &&\n isNegativeRule(other) === isNegativeRule(rule) &&\n ruleBody(other).endsWith(\"*\") &&\n ruleBody(rule).startsWith(ruleBody(other).slice(0, -1));\n\n/**\n * Merge the generated rules into a user-configured `run_worker_first` (which\n * flows into the adapter's emitted config from the project's own wrangler\n * file). `true` already routes everything through the Worker, so it is kept\n * as-is; an array is unioned with the generated rules and then swept for\n * redundancy, since coverage by a glob is equivalent routing but a hard\n * validation error at deploy time.\n */\nexport const mergeRunWorkerFirstRules = (\n existing: JsonValue | undefined,\n added: readonly string[]\n): string[] | true => {\n if (existing === true) {\n return true;\n }\n const user = Array.isArray(existing)\n ? existing.filter((rule): rule is string => typeof rule === \"string\")\n : [];\n const merged = [...user, ...added.filter((rule) => !user.includes(rule))];\n return merged.filter(\n (rule) => !merged.some((other) => coveredBy(rule, other))\n );\n};\n\nconst withinWranglerLimits = (rules: string[] | true): boolean =>\n rules === true ||\n (rules.length <= MAX_RULES &&\n rules.every((rule) => rule.length <= MAX_RULE_LENGTH));\n\n/** A configured redirect the wrapper Worker serves itself. */\nexport interface WorkerRedirect {\n /**\n * Served path of the redirect, based the way the host platform matches it\n * (see `applyBaseToPlatformRedirects`) — the full URL path the Worker sees.\n */\n from: string;\n /** Configured HTTP status (301, 302, 307, or 308). */\n status: number;\n /** Destination, percent-encoded into the `Location` header. */\n to: string;\n}\n\nexport interface NegotiationWorkerOptions {\n /** Import specifier of the adapter's built entry, relative to the Worker. */\n mainSpecifier: string;\n /** Content routes with a raw-Markdown mirror (see `markdownRoutePaths`). */\n routePaths: readonly string[];\n /** Name of the assets binding the wrapper serves the `.md` mirrors from. */\n assetsBinding: string;\n /** `deployment.base` for subpath deploys. */\n base?: string;\n /** Homepage agent-discovery `Link` header (see `ai/link-headers.ts`). */\n homeLinkHeader?: string | null;\n /** Whether responses identify Blume with `X-Powered-By`. Defaults to `true`. */\n poweredBy?: boolean;\n /** Estimated token count of the homepage Markdown mirror. */\n homeTokens?: number;\n /** Configured redirects the wrapper answers with their exact status. */\n redirects?: readonly WorkerRedirect[];\n /**\n * Base-less served paths of the prerendered per-page JSON documents the\n * build emitted (see `pageJsonPath`), decoded. The wrapper answers exactly\n * these from the assets binding, since the Astro Worker would route them to\n * the `/api/` catch-all (see the module comment).\n */\n pageJsonPaths?: readonly string[];\n /**\n * Which prerendered 404 twins the build emitted (`404.md`, `404.json`), so\n * the wrapper only substitutes a twin that exists. A project that owns\n * `/404` emits neither and keeps the HTML answer.\n */\n notFound?: NotFoundVariants;\n}\n\n/**\n * The wrapper Worker module. The negotiation helpers are a JavaScript copy of\n * `astro/markdown-negotiation.ts` — the deploy bundle is uploaded with\n * `no_bundle`, so the module must be self-contained; behavioral parity with\n * the dev middleware is enforced by `test/cloudflare-negotiation.test.ts`.\n */\nexport const buildNegotiationWorker = (\n options: NegotiationWorkerOptions\n): string => {\n const routes = JSON.stringify(options.routePaths);\n const pageJson = JSON.stringify(options.pageJsonPaths ?? []);\n const binding = JSON.stringify(options.assetsBinding);\n const prefix = JSON.stringify(encodeURI(normalizeBasePath(options.base)));\n const homeLinkHeader = JSON.stringify(options.homeLinkHeader ?? null);\n const poweredBy = JSON.stringify(\n options.poweredBy === false ? {} : POWERED_BY_HEADERS\n );\n const homeTokens = JSON.stringify(\n options.homeTokens === undefined ? null : String(options.homeTokens)\n );\n const notFound = JSON.stringify({\n json: options.notFound?.json === true,\n markdown: options.notFound?.markdown === true,\n });\n // Keyed by the normalized served path; the runtime lookup decodes and\n // trims the request path the same way, so both spellings of a URL match.\n // The destination is percent-encoded here because it ships as a `Location`\n // header, which cannot carry non-ASCII.\n const redirects = JSON.stringify(\n Object.fromEntries(\n (options.redirects ?? [])\n .filter((redirect) => !isPatternPath(redirect.from))\n .map((redirect) => [\n normalizePath(redirect.from),\n [encodeURI(redirect.to), redirect.status],\n ])\n )\n );\n // Patterns (`/beta/:slug*`) are tried in order after the exact paths.\n const patternRedirects = JSON.stringify(\n compileRedirects(options.redirects ?? [])\n );\n return `// Generated by Blume. Do not edit; this file is recreated on each build.\n//\n// Request-time \\`Accept: text/markdown\\` negotiation for a Cloudflare server\n// build. \\`assets.run_worker_first\\` routes content-page requests here instead\n// of the platform's static layer; a client that prefers Markdown gets the\n// page's prerendered \\`.md\\` mirror from the assets binding, a configured\n// redirect is answered with its exact configured status, and a prerendered\n// per-page JSON document is served from the binding (the Astro Worker would\n// route it to the \\`/api/\\` catch-all, because Astro resolves a prerendered\n// dynamic route to the first live route on the same path). Every other\n// request is delegated to the Astro Worker untouched — except a missing\n// page, whose HTML 404 shell is swapped for the prerendered Markdown or JSON\n// 404 twin when the client prefers one. \\`_headers\\` does not apply to\n// worker-first routes, so the homepage Link header, the Markdown charset, and\n// the sandbox on downloaded SVGs are re-stamped here.\nimport server from ${JSON.stringify(options.mainSpecifier)};\n\nconst ROUTES = new Set(${routes});\nconst PAGE_JSON = new Set(${pageJson});\nconst BASE_PREFIX = ${prefix};\nconst ASSETS_BINDING = ${binding};\nconst HOME_LINK_HEADER = ${homeLinkHeader};\nconst HOME_TOKENS = ${homeTokens};\nconst REDIRECTS = ${redirects};\nconst PATTERN_REDIRECTS = ${patternRedirects}.map(\n ([source, location, status]) => [new RegExp(source, \"u\"), location, status]\n);\nconst NOT_FOUND = ${notFound};\nconst SVG_ASSET_HEADERS = ${JSON.stringify(SVG_ASSET_HEADERS)};\nconst POWERED_BY = ${poweredBy};\n\n// An SVG a content source downloaded: a document that could run script as the\n// docs site if opened directly, so it goes out sandboxed. Matched on the\n// decoded path, ignoring case — the file the assets binding serves.\nconst isSvgAsset = (pathname) => {\n const path = safeDecode(pathname).toLowerCase();\n const prefix = (safeDecode(BASE_PREFIX) + \"${CONTENT_ASSETS_ROOT}/\").toLowerCase();\n return path.startsWith(prefix) && path.endsWith(\".svg\");\n};\n\n// Configured redirects live in \\`_redirects\\`, which only the static layer\n// reads — a worker-first route never reaches it. Answering from this baked-in\n// copy keeps the exact configured status; delegating instead would let Astro's\n// SSR handler default a GET to a permanent 301.\n// An exact path is looked up first, then each pattern is tried in order, its\n// Location template filled with the captures, encoded so a capture can't grow\n// a query or fragment.\nconst redirectFor = (pathname) => {\n const trimmed =\n pathname !== \"/\" && pathname.endsWith(\"/\") ? pathname.slice(0, -1) : pathname;\n const path = safeDecode(trimmed);\n if (Object.hasOwn(REDIRECTS, path)) {\n return REDIRECTS[path];\n }\n const decoded = safeDecode(pathname);\n for (const [pattern, location, status] of PATTERN_REDIRECTS) {\n const match = pattern.exec(decoded);\n if (match) {\n return [\n location.replace(/\\\\$(\\\\d+)/gu, (_reference, index) =>\n encodeURI(match[Number(index)] ?? \"\")\n .replaceAll(\"?\", \"%3F\")\n .replaceAll(\"#\", \"%23\")\n ),\n status,\n ];\n }\n }\n return null;\n};\n\n// The request path with the deployment base removed: the whole path on a\n// root deploy, \\`\"\"\\` for the bare base, \\`null\\` for a path outside the base.\nconst stripBase = (pathname) => {\n if (!BASE_PREFIX) {\n return pathname;\n }\n if (pathname === BASE_PREFIX) {\n return \"\";\n }\n return pathname.startsWith(BASE_PREFIX + \"/\")\n ? pathname.slice(BASE_PREFIX.length)\n : null;\n};\n\n// Decoded for the lookups, which are keyed by decoded paths; a malformed\n// escape keeps the raw path, which simply won't match anything.\nconst safeDecode = (path) => {\n try {\n return decodeURIComponent(path);\n } catch {\n return path;\n }\n};\n\n// \\`_redirects\\` semantics, which the static layer applies to these same\n// paths: the request's query string is forwarded unless the destination\n// carries its own, and a destination fragment stays after the query.\nconst redirectLocation = (destination, search) => {\n const hashIndex = destination.indexOf(\"#\");\n const bare = hashIndex === -1 ? destination : destination.slice(0, hashIndex);\n if (!search || bare.includes(\"?\")) {\n return destination;\n }\n return hashIndex === -1\n ? bare + search\n : bare + search + destination.slice(hashIndex);\n};\n\nconst parseAccept = (accept) =>\n accept.split(\",\").map((part) => {\n const segments = part.trim().split(\";\");\n const type = (segments[0] ?? \"\").trim().toLowerCase();\n const qSegment = segments\n .slice(1)\n .map((segment) => segment.trim())\n .find((segment) => segment.startsWith(\"q=\"));\n const q = qSegment ? Number(qSegment.slice(2)) : 1;\n return { q: Number.isNaN(q) ? 1 : q, type };\n });\n\n// Whether the client explicitly prefers one of \\`types\\` over HTML. Browsers\n// never send these, so an ordinary page request is false.\nconst prefers = (accept, types) => {\n if (!accept) {\n return false;\n }\n let wantedQ = -1;\n let htmlQ = 0;\n for (const { q, type } of parseAccept(accept)) {\n if (types.includes(type)) {\n wantedQ = Math.max(wantedQ, q);\n } else if (type === \"text/html\") {\n htmlQ = Math.max(htmlQ, q);\n }\n }\n return wantedQ > 0 && wantedQ >= htmlQ;\n};\n\nconst prefersMarkdown = (accept) =>\n prefers(accept, [\"text/markdown\", \"text/x-markdown\"]);\n\nconst prefersJson = (accept) =>\n prefers(accept, [\"application/json\", \"application/problem+json\"]);\n\n// The prerendered 404 twins, in the order a client asking for both is\n// answered: which twin, when a client prefers it, the raw URL extension that\n// asks for it implicitly, where it lives, and the content type to re-pin.\nconst NOT_FOUND_TWINS = [\n {\n contentType: \"text/markdown; charset=utf-8\",\n extension: /\\\\.mdx?$/u,\n key: \"markdown\",\n path: \"/404.md\",\n prefers: prefersMarkdown,\n },\n {\n contentType: \"application/problem+json; charset=utf-8\",\n extension: /\\\\.json$/u,\n key: \"json\",\n path: \"/404.json\",\n prefers: prefersJson,\n },\n];\n\n// A missing page comes back from the Astro Worker as the HTML 404 shell (the\n// binding's \\`not_found_handling\\`); a client that prefers Markdown or JSON —\n// or asked for a raw \\`.md\\`/\\`.json\\` URL no file backs — gets the prerendered\n// twin instead, with the same 404 status. Anything but an HTML 404 (an API\n// endpoint's own problem document, a missing image) is left alone. The twin\n// is fetched without the request's conditional headers, so a stray ETag match\n// cannot turn the 404 into a 304.\nconst notFoundTwin = async (request, url, response, assets) => {\n if (response.status !== 404 || assets === undefined) {\n return null;\n }\n const type = response.headers.get(\"content-type\") ?? \"\";\n if (!type.startsWith(\"text/html\")) {\n return null;\n }\n const accept = request.headers.get(\"accept\");\n for (const twin of NOT_FOUND_TWINS) {\n if (!NOT_FOUND[twin.key]) {\n continue;\n }\n const negotiated = twin.prefers(accept);\n if (!negotiated && !twin.extension.test(url.pathname)) {\n continue;\n }\n const asset = await assets.fetch(\n new Request(new URL(BASE_PREFIX + twin.path, url), {\n method: request.method,\n })\n );\n if (!asset.ok) {\n return null;\n }\n const patched = new Response(asset.body, {\n headers: asset.headers,\n status: 404,\n });\n patched.headers.set(\"content-type\", twin.contentType);\n if (negotiated) {\n patched.headers.append(\"vary\", \"Accept\");\n }\n return patched;\n }\n return null;\n};\n\nconst markdownVariantUrl = (rawUrl) => {\n const queryIndex = rawUrl.indexOf(\"?\");\n const query = queryIndex === -1 ? \"\" : rawUrl.slice(queryIndex);\n const rawPath = queryIndex === -1 ? rawUrl : rawUrl.slice(0, queryIndex);\n const rest = stripBase(rawPath);\n if (rest === null) {\n return null;\n }\n const path = rest || \"/\";\n const trimmed = path !== \"/\" && path.endsWith(\"/\") ? path.slice(0, -1) : path;\n const pathname = safeDecode(trimmed);\n if (!ROUTES.has(pathname)) {\n return null;\n }\n const target = pathname === \"/\" ? \"/index\" : pathname;\n return BASE_PREFIX + encodeURI(target) + \".md\" + query;\n};\n\n// Exactly the per-page JSON documents the build emitted, so a URL the site\n// never generated (a hidden page, a path outside the API) takes the normal\n// route to the Astro Worker and its problem document.\nconst isPageJson = (pathname) => {\n const rest = stripBase(pathname);\n return rest !== null && PAGE_JSON.has(safeDecode(rest));\n};\n\nconst isHomePath = (pathname) => {\n const rest = stripBase(pathname);\n return rest === \"\" || rest === \"/\";\n};\n\n// Blume's X-Powered-By, on every answer the wrapper gives unless the\n// response already names its own (the project's middleware, say).\nconst identify = (headers) => {\n for (const [name, value] of Object.entries(POWERED_BY)) {\n if (!headers.has(name)) {\n headers.set(name, value);\n }\n }\n};\n\nconst withHeaders = (response, apply) => {\n const patched = new Response(response.body, response);\n apply(patched.headers);\n identify(patched.headers);\n return patched;\n};\n\n// A response that already carries the header (Blume's runtime middleware sets\n// it on every page Astro renders) goes out as it is.\nconst withPoweredBy = (response) =>\n Object.keys(POWERED_BY).every((name) => response.headers.has(name))\n ? response\n : withHeaders(response, () => {});\n\nexport default {\n async fetch(request, env, context) {\n const url = new URL(request.url);\n // Before the method guard: the static layer applies \\`_redirects\\` to every\n // method, so the wrapper does too.\n const redirect = redirectFor(url.pathname);\n if (redirect !== null) {\n return new Response(null, {\n headers: {\n ...POWERED_BY,\n location: redirectLocation(redirect[0], url.search),\n },\n status: redirect[1],\n });\n }\n if (isSvgAsset(url.pathname)) {\n return withHeaders(await server.fetch(request, env, context), (headers) => {\n for (const [name, value] of Object.entries(SVG_ASSET_HEADERS)) {\n headers.set(name, value);\n }\n });\n }\n if (request.method !== \"GET\" && request.method !== \"HEAD\") {\n return withPoweredBy(await server.fetch(request, env, context));\n }\n const assets = env[ASSETS_BINDING];\n // The request goes through untouched, so a conditional revalidation\n // reaches the binding and comes back as a 304 — anything but a miss is\n // the document's own answer. A miss falls through to the Astro Worker.\n if (assets !== undefined && isPageJson(url.pathname)) {\n const asset = await assets.fetch(request);\n if (asset.status !== 404) {\n return withPoweredBy(asset);\n }\n }\n const variant = markdownVariantUrl(url.pathname + url.search);\n const home = isHomePath(url.pathname);\n if (\n variant !== null &&\n assets !== undefined &&\n prefersMarkdown(request.headers.get(\"accept\"))\n ) {\n const asset = await assets.fetch(\n new Request(new URL(variant, url), request)\n );\n if (asset.ok) {\n return withHeaders(asset, (headers) => {\n headers.set(\"content-type\", \"text/markdown; charset=utf-8\");\n headers.append(\"vary\", \"Accept\");\n if (home) {\n if (HOME_LINK_HEADER !== null) {\n headers.set(\"link\", HOME_LINK_HEADER);\n }\n if (HOME_TOKENS !== null) {\n headers.set(\"x-markdown-tokens\", HOME_TOKENS);\n }\n }\n });\n }\n }\n const response = await server.fetch(request, env, context);\n const twin = await notFoundTwin(request, url, response, assets);\n if (twin !== null) {\n return withPoweredBy(twin);\n }\n if (variant === null && !(home && HOME_LINK_HEADER !== null)) {\n return withPoweredBy(response);\n }\n return withHeaders(response, (headers) => {\n if (variant !== null) {\n headers.append(\"vary\", \"Accept\");\n }\n if (home && HOME_LINK_HEADER !== null && !headers.has(\"link\")) {\n headers.set(\"link\", HOME_LINK_HEADER);\n }\n });\n },\n};\n`;\n};\n\nexport interface WorkerNegotiation {\n /** Updated `wrangler.json` text (worker-first rules + swapped `main`). */\n wrangler: string;\n /** The wrapper Worker module, to write as {@link NEGOTIATION_WORKER_FILE}. */\n worker: string;\n}\n\nexport interface WorkerNegotiationOptions extends Omit<\n NegotiationWorkerOptions,\n \"assetsBinding\" | \"mainSpecifier\"\n> {\n /**\n * The manifest content routes, based like `routePaths` — the guard that\n * keeps the wrapper's redirect table off real pages. Defaults to\n * `routePaths`, which also carries the synthesized homepage mirror (see\n * `markdownRoutePaths`); passing the manifest routes keeps that synthetic\n * `/` from blocking a configured root redirect.\n */\n contentRoutePaths?: readonly string[];\n}\n\n/**\n * Wire the negotiation into the adapter's emitted `dist/server/wrangler.json`:\n * point `main` at the wrapper Worker and scope `assets.run_worker_first` to\n * the content routes (merged with any user-configured rules). Returns the\n * updated config text plus the wrapper module, or `null` when there is\n * nothing to do or nowhere safe to do it: no routes, unparsable config, no\n * usable `main` or assets binding (the wrapper serves the `.md` mirrors from\n * it), an already-swapped `main` (the original entry is unrecoverable), or\n * user-configured rules that push the set over Wrangler's limits.\n *\n * The configured redirects are baked into the wrapper, which answers any the\n * worker-first rules claim with the exact configured status (see the module\n * comment) — whichever rules do the claiming: the generated `/*`, or the\n * user's own (including a bare `true`). A\n * redirect at a content route's own path is never baked: the page owns it,\n * and answering a redirect there would take a real page off the air. When\n * `null` is returned no rule set is written at all, so every request stays on\n * the static layer and `_redirects` serves the configured statuses as before.\n */\nexport const injectWorkerNegotiation = (\n wranglerText: string,\n options: WorkerNegotiationOptions\n): WorkerNegotiation | null => {\n if (options.routePaths.length === 0) {\n return null;\n }\n let config: JsonValue;\n try {\n config = JSON.parse(wranglerText);\n } catch {\n return null;\n }\n if (!isJsonObject(config)) {\n return null;\n }\n const { main } = config;\n if (\n !isJsonString(main) ||\n main.length === 0 ||\n main === NEGOTIATION_WORKER_FILE\n ) {\n return null;\n }\n const { assets } = config;\n if (!isJsonObject(assets) || !isJsonString(assets.binding)) {\n return null;\n }\n const {\n contentRoutePaths = options.routePaths,\n redirects = [],\n ...workerOptions\n } = options;\n // The content-route guard compares against redirect `from`s, which carry the\n // full `{deployment.base}{basePath}` stack; the routes carry only\n // `basePath`, so the deployment base is applied here.\n const deployPrefix = normalizeBasePath(options.base);\n const guardRoutes = new Set(\n contentRoutePaths.map((route) =>\n normalizePath(\n deployPrefix && route !== \"/\"\n ? `${deployPrefix}${route}`\n : deployPrefix || route\n )\n )\n );\n const workerRedirects = redirects.filter(\n (redirect) =>\n redirect.from.startsWith(\"/\") &&\n !guardRoutes.has(normalizePath(redirect.from))\n );\n const rules = mergeRunWorkerFirstRules(\n assets.run_worker_first,\n buildRunWorkerFirstRules(options.base)\n );\n if (!withinWranglerLimits(rules)) {\n return null;\n }\n if (rules !== true) {\n assets.run_worker_first = rules;\n }\n config.main = NEGOTIATION_WORKER_FILE;\n const mainSpecifier =\n main.startsWith(\".\") || main.startsWith(\"/\") ? main : `./${main}`;\n const worker = buildNegotiationWorker({\n ...workerOptions,\n assetsBinding: assets.binding,\n mainSpecifier,\n redirects: workerRedirects,\n });\n // The adapter and Wrangler both write this file unformatted; match them.\n return { worker, wrangler: JSON.stringify(config) };\n};\n",
200
202
  "import {\n normalizeBasePath,\n normalizePath,\n stripBasePath,\n withAuthoredBasePath,\n withBasePath,\n withComposedBasePath,\n} from \"../core/base-path.ts\";\nimport { routeSetFor, servesRoute } from \"../core/locale-links.ts\";\nimport type { RouteSet } from \"../core/locale-links.ts\";\nimport type { BlumeProject } from \"../core/project-graph.ts\";\nimport {\n compileRedirects,\n exactFirst,\n expandRedirect,\n isPatternPath,\n underscoreRedirect,\n vercelRedirect,\n} from \"../core/redirect-patterns.ts\";\nimport type { RedirectRule } from \"../core/redirect-patterns.ts\";\nimport type { ResolvedConfig } from \"../core/schema.ts\";\nimport { escapeVercelSource } from \"./headers.ts\";\nimport type { VercelHeader } from \"./headers.ts\";\nimport type { VercelRoute } from \"./vercel-negotiation.ts\";\n\n/**\n * Platform redirect files for a static build. Astro already emits redirect HTML\n * (meta-refresh) pages for static output, but that's a soft client redirect.\n * These give the host a real HTTP 3xx: Netlify/Cloudflare read `_redirects`,\n * Vercel reads `vercel.json`, and `blume-redirects.json` is a structured\n * manifest for anything else (Apache/nginx rules, an edge worker). A pattern\n * redirect (`/beta/:slug*`) gets no redirect page, since Astro can't\n * prerender one for paths it doesn't know; each host file carries it in that\n * host's syntax (see `core/redirect-patterns.ts`).\n */\n\ntype Redirect = ResolvedConfig[\"redirects\"][number];\n\n/**\n * Base a redirect destination authored as if mounted at root by what it\n * names (see `withAuthoredBasePath`): a page gains the full\n * `{deployment.base}{basePath}` stack, a public file (`/files/spec.pdf`, with\n * no page in `routes`) only the deployment base — `public/` is served there\n * whatever `basePath` is. External URLs pass through.\n */\nconst baseRedirectTarget = (\n to: string,\n basePath: string,\n base: string,\n routes: RouteSet\n): string =>\n withAuthoredBasePath(base, basePath, to, (route) =>\n servesRoute(routes, route)\n );\n\n/**\n * Base a redirect for Astro's `redirects` config, where the two sides are not\n * symmetric:\n *\n * - `from` gains only `basePath`. Astro builds the match pattern with\n * `deployment.base` already applied (`getPattern(segments, config.base)`), so\n * adding it here would serve the redirect at `{base}{base}/from`.\n * - `to` gains the full `{deployment.base}{basePath}` stack, or the deployment\n * base alone for a public file (see {@link baseRedirectTarget}). Astro\n * resolves a destination that matches a known route by regenerating it from\n * that route's segments, which carry no base — and passes an unmatched\n * destination through verbatim. Neither path prepends `base`, so a\n * root-relative `to` escapes the base entirely (withastro/astro#7774, still\n * the behavior in Astro 7).\n *\n * Both sides are authored as if mounted at root; `routes` (the served page\n * routes, carrying `basePath`) tell a dotted page route like `/releases/v1.2`\n * from a file. Idempotent, so a hand-written base isn't doubled.\n */\nexport const applyBaseToAstroRedirects = (\n redirects: Redirect[],\n basePath: string,\n deployBase: string,\n routes: RouteSet\n): Redirect[] => {\n // `deployment.base` arrives as the user wrote it (Astro accepts `/base/`,\n // even `base`); normalizing here keeps the composed paths well-formed.\n const base = normalizeBasePath(deployBase);\n return basePath || base\n ? redirects.map((redirect) => ({\n ...redirect,\n from: withBasePath(basePath, redirect.from),\n to: baseRedirectTarget(redirect.to, basePath, base, routes),\n }))\n : redirects;\n};\n\n/**\n * Base a redirect for the host platform files below. Unlike Astro's config,\n * these are matched against the real served URL, so `from` carries the full\n * `{deployment.base}{basePath}` stack, and so does `to` unless it names a\n * public file (see {@link baseRedirectTarget}).\n */\nexport const applyBaseToPlatformRedirects = (\n redirects: Redirect[],\n basePath: string,\n deployBase: string,\n routes: RouteSet\n): Redirect[] => {\n const base = normalizeBasePath(deployBase);\n return basePath || base\n ? redirects.map((redirect) => ({\n ...redirect,\n from: withComposedBasePath(base, basePath, redirect.from),\n to: baseRedirectTarget(redirect.to, basePath, base, routes),\n }))\n : redirects;\n};\n\n/**\n * The raw-Markdown copies Blume serves beside every page (`/guide.md`,\n * `/guide.mdx`; see `rawMarkdownEndpointTemplate`).\n */\nconst MIRROR_EXTENSIONS = [\".md\", \".mdx\"] as const;\n\n/**\n * Where a page's Markdown copy is served, from the page's served path and the\n * deployment base that path carries: the endpoints name the root `index`.\n */\nconst mirrorPath = (path: string, base: string, extension: string): string => {\n const route = stripBasePath(base, path);\n return `${base}${route === \"/\" ? \"/index\" : route}${extension}`;\n};\n\n/**\n * Based `redirects`, each exact one that moves a page followed by the same\n * redirect for the page's Markdown copies: from a path no page is served at\n * to one a page is, `/old.md` goes to `/new.md` (and `.mdx` alike), where it\n * would otherwise 404 for an agent still reading the old URL. A pattern gets\n * none; one that carries its capture over (`/beta/:slug*` → `/v2/:slug*`)\n * already moves `/beta/guide.md` along. `pages` are the served page routes\n * (carrying `basePath`, not `deployment.base`), and `bases` the deployment\n * base each end carries: Astro's config leaves it off `from` (see\n * {@link applyBaseToAstroRedirects}).\n */\nexport const withMirrorRedirects = (\n redirects: Redirect[],\n pages: RouteSet,\n bases: { from: string; to: string }\n): Redirect[] =>\n redirects.flatMap((redirect) => {\n const from = normalizePath(redirect.from);\n const to = normalizePath(redirect.to);\n const movesPage =\n !isPatternPath(redirect.from) &&\n servesRoute(pages, stripBasePath(bases.to, to)) &&\n !servesRoute(pages, stripBasePath(bases.from, from));\n return movesPage\n ? [\n redirect,\n ...MIRROR_EXTENSIONS.map((extension) => ({\n from: mirrorPath(from, bases.from, extension),\n status: redirect.status,\n to: mirrorPath(to, bases.to, extension),\n })),\n ]\n : [redirect];\n });\n\n/**\n * The configured redirects as the host platform matches them, via\n * {@link applyBaseToPlatformRedirects} plus the Markdown copies of each moved\n * page ({@link withMirrorRedirects}), exact paths ahead of patterns: hosts\n * try rules in order, and an exact redirect wins over a pattern that also\n * covers its path. The one basing every consumer must share: the emitted\n * redirect files and the server wrappers all compare these paths against\n * real served URLs.\n */\nexport const platformRedirects = (project: {\n config: ResolvedConfig;\n manifest: Pick<BlumeProject[\"manifest\"], \"routes\">;\n}): Redirect[] => {\n const { config } = project;\n const base = normalizeBasePath(config.deployment.options.base);\n const pages = routeSetFor(project.manifest.routes);\n return exactFirst(\n withMirrorRedirects(\n applyBaseToPlatformRedirects(\n config.redirects,\n config.basePath,\n base,\n pages\n ),\n pages,\n { from: base, to: base }\n )\n );\n};\n\n/**\n * A redirect as the entries a host file lists: itself when its path is\n * exact, else the rules its pattern expands to, in the host's syntax.\n */\nconst hostEntries = <Entry>(\n redirect: Redirect,\n exact: (redirect: Redirect) => Entry,\n pattern: (rule: RedirectRule) => Entry\n): Entry[] => {\n const rules = expandRedirect(redirect);\n return rules.length > 0 ? rules.map(pattern) : [exact(redirect)];\n};\n\n/**\n * `_redirects` text (Netlify + Cloudflare Pages): `from to status` per line,\n * a pattern as `:placeholder`s and a `*` splat the destination reads as\n * `:splat`. `force` appends Netlify's `!` to each status (`301!`), so the rule\n * wins over the redirect page Astro writes at `from`; Cloudflare, which always\n * applies its rules first, rejects a line carrying it.\n */\nexport const buildNetlifyRedirects = (\n redirects: Redirect[],\n force = false\n): string =>\n `${redirects\n .flatMap((redirect) =>\n hostEntries(redirect, (exact) => exact, underscoreRedirect).map(\n (entry) =>\n `${entry.from} ${entry.to} ${redirect.status}${force ? \"!\" : \"\"}`\n )\n )\n .join(\"\\n\")}\\n`;\n\n/** The `vercel.json` Blume writes for a static deploy of `dist/`. */\ninterface VercelConfig {\n headers?: readonly VercelHeader[];\n redirects: { destination: string; source: string; statusCode: number }[];\n}\n\n/**\n * `vercel.json` contents with a `redirects` array, and a `headers` array when\n * header rules are given (see `buildVercelHeaders`). Uses `statusCode` (Vercel's\n * alternative to the boolean `permanent`) so the configured code ships exactly:\n * `permanent` would silently coerce a 301 to 308 and a 302 to 307, diverging\n * from the `_redirects` file, which preserves exact codes. A `source` is a\n * `path-to-regexp` pattern, so each literal run of a `from` path is escaped:\n * unescaped, `/c++-guide` fails the whole config and `/faq(old)` never\n * matches. A pattern's captures are `path-to-regexp` params.\n */\nexport const buildVercelConfig = (\n redirects: Redirect[],\n headers: readonly VercelHeader[] = []\n): string => {\n const config: VercelConfig = {\n redirects: redirects.flatMap((redirect) =>\n hostEntries(\n redirect,\n (exact) => ({\n destination: exact.to,\n source: escapeVercelSource(exact.from),\n }),\n (rule) => vercelRedirect(rule, escapeVercelSource)\n ).map((entry) => ({ ...entry, statusCode: redirect.status }))\n ),\n };\n if (headers.length > 0) {\n config.headers = headers;\n }\n return `${JSON.stringify(config, null, 2)}\\n`;\n};\n\n/**\n * The pattern redirects as `_redirects` entries, for the `redirects` of a\n * Netlify server build's Frameworks API config (see\n * {@link buildNetlifyRedirects} for the syntax).\n */\nexport const netlifyPatternRedirects = (\n redirects: Redirect[]\n): { from: string; status: number; to: string }[] =>\n redirects.flatMap(expandRedirect).map((rule) => ({\n ...underscoreRedirect(rule),\n status: rule.status,\n }));\n\n/**\n * The pattern redirects as Build Output API routes, for a Vercel server\n * build: the adapter routes only the exact redirects Astro's config carries.\n * Each matches the served path, a trailing slash optional, and fills its\n * `Location` from numbered captures, as the adapter's own redirect routes do.\n */\nexport const vercelPatternRoutes = (redirects: Redirect[]): VercelRoute[] =>\n compileRedirects(redirects).map(([src, location, status]) => ({\n headers: { Location: location },\n src,\n status,\n }));\n\n/**\n * Structured manifest for hosts that need manual wiring. A pattern stays as\n * configured (`/beta/:slug*`), for the rule it becomes to be written by hand.\n */\nexport const buildRedirectManifest = (redirects: Redirect[]): string =>\n `${JSON.stringify(\n redirects.map((redirect) => ({\n from: redirect.from,\n status: redirect.status,\n to: redirect.to,\n })),\n null,\n 2\n )}\\n`;\n",
201
203
  "import { existsSync } from \"node:fs\";\nimport { readFile, writeFile } from \"node:fs/promises\";\n\nimport { join } from \"pathe\";\n\nimport { buildHomeLinkHeader } from \"../../ai/link-headers.ts\";\nimport { markdownRoutePaths } from \"../../ai/markdown.ts\";\nimport type { BlumeProject } from \"../../core/project-graph.ts\";\nimport { NETLIFY_ADAPTER_PACKAGE } from \"../adapters/netlify.ts\";\nimport { buildNetlifyConfigHeaders } from \"../headers.ts\";\nimport type { NetlifyConfigHeaders } from \"../headers.ts\";\nimport {\n buildNetlifyRedirects,\n netlifyPatternRedirects,\n platformRedirects,\n} from \"../redirects.ts\";\nimport { distDir, toSiteUrl } from \"./paths.ts\";\nimport type { BuildLog, DeployPlatform, RedirectFile } from \"./types.ts\";\n\n/**\n * `_redirects`, the format Netlify and Cloudflare Pages/Workers read, in the\n * form both accept: a static build for Cloudflare, or for no named host.\n */\nexport const REDIRECTS_FILE: RedirectFile = {\n build: buildNetlifyRedirects,\n name: \"_redirects\",\n};\n\n/**\n * `_redirects` for a `netlify()` static build, every rule forced (`301!`).\n * Astro writes a redirect page at each `from` (`dist/old/index.html`), and\n * Netlify serves a file that exists ahead of an unforced rule, so without the\n * flag that page would answer with a 200 instead of the redirect.\n */\nexport const NETLIFY_REDIRECTS_FILE: RedirectFile = {\n build: (redirects) => buildNetlifyRedirects(redirects, true),\n name: \"_redirects\",\n};\n\n/** The Frameworks API config, once the build surfaced it to the project root. */\nexport const NETLIFY_CONFIG_FILE = join(\".netlify\", \"v1\", \"config.json\");\n\n/**\n * Carry the static header rules into a server build. A static `netlify()`\n * build gets them from `_headers` (see `deploy/artifacts.ts`), but a server\n * build's header rules go in the Frameworks API config the adapter writes\n * (`.netlify/v1/config.json`, beside its own `Cache-Control` rule for\n * `/_astro/*`), which follows the same rules as `netlify.toml`'s\n * `[[headers]]`: the charset on the raw Markdown and text files, the homepage\n * `Link` header, the discovery files' media types and CORS header, and the\n * sandbox on downloaded SVGs, which Netlify serves from the publish directory\n * as static files, so the prerendered endpoint's own headers never ship.\n */\nexport const emitNetlifyHeaders = async (\n project: BlumeProject,\n log: BuildLog\n): Promise<void> => {\n const { config, context } = project;\n const configPath = join(context.root, NETLIFY_CONFIG_FILE);\n if (!existsSync(configPath)) {\n log.warn(\n `Could not find Netlify's deploy config at ${configPath}, so the site is served without its header rules (the homepage Link header, the discovery files' media types and CORS header, and the sandbox on downloaded SVGs).`\n );\n return;\n }\n // Only `headers` is read; every other key rides through as parsed.\n const frameworks: { headers?: NetlifyConfigHeaders[] } = JSON.parse(\n await readFile(configPath, \"utf-8\")\n );\n const ours = buildNetlifyConfigHeaders(\n config,\n buildHomeLinkHeader(config, markdownRoutePaths(project))\n );\n // A second pass over the same build replaces its own entries.\n const paths = new Set(ours.map((entry) => entry.for));\n frameworks.headers = [\n ...(frameworks.headers ?? []).filter((entry) => !paths.has(entry.for)),\n ...ours,\n ];\n await writeFile(configPath, JSON.stringify(frameworks), \"utf-8\");\n};\n\n/**\n * Carry the pattern redirects (`/beta/:slug*`) into a server build, as\n * `redirects` in the Frameworks API config: Astro's `redirects` carry only\n * the exact ones, since it can't prerender a pattern's pages, so the adapter\n * never writes these. Netlify appends them after any rules of the user's own.\n */\nexport const emitNetlifyPatternRedirects = async (\n project: BlumeProject\n): Promise<void> => {\n const ours = netlifyPatternRedirects(platformRedirects(project));\n const configPath = join(project.context.root, NETLIFY_CONFIG_FILE);\n if (ours.length === 0 || !existsSync(configPath)) {\n return;\n }\n // Only `redirects` is read; every other key rides through as parsed.\n const frameworks: { redirects?: { from: string }[] } = JSON.parse(\n await readFile(configPath, \"utf-8\")\n );\n // A second pass over the same build replaces its own entries.\n const froms = new Set(ours.map((entry) => entry.from));\n frameworks.redirects = [\n ...(frameworks.redirects ?? []).filter((entry) => !froms.has(entry.from)),\n ...ours,\n ];\n await writeFile(configPath, JSON.stringify(frameworks), \"utf-8\");\n};\n\n/**\n * Netlify. A server build runs on Netlify Functions from the Frameworks API\n * tree the adapter writes to `.netlify/v1`, relative to the Astro root —\n * which for Blume is the hidden `.blume` runtime, so the tree is moved up to\n * the project root after the build (the `.netlify/build` sibling is only the\n * intermediate SSR bundle, already traced into `v1/functions`, and moving\n * `v1` alone keeps the `.netlify/state.json` from `netlify link` intact).\n * Static assets are served from `dist/` either way.\n */\nexport const netlifyPlatform: DeployPlatform = {\n astro: {\n config: () => ({}),\n configOptions: [],\n options: () => ({}),\n package: NETLIFY_ADAPTER_PACKAGE,\n },\n env: {\n detect: (env) => Boolean(env.NETLIFY),\n // Fall through per *resolved* value, not per variable — a platform can\n // set a var to the empty string, which `??` on the raw values treats as\n // present, dead-ending the chain and silently losing the site URL.\n site: (env) =>\n toSiteUrl(env.URL) ??\n toSiteUrl(env.DEPLOY_PRIME_URL) ??\n toSiteUrl(env.DEPLOY_URL),\n },\n finalizeBuild: async ({ isolated, log, project }) => {\n // The Frameworks API config is a deploy artifact; an isolated verify\n // never surfaces it.\n if (!isolated) {\n await emitNetlifyHeaders(project, log);\n await emitNetlifyPatternRedirects(project);\n }\n return true;\n },\n hiddenRuntime: {\n ignoreDir: \".netlify/\",\n showProjectRoot: false,\n surfacePath: \".netlify/v1\",\n },\n kind: \"netlify\",\n negotiatesMarkdown: false,\n // @astrojs/netlify declares no preview entrypoint.\n previewDeploy: \"netlify deploy\",\n // Netlify reads `_headers` from the publish directory of a static deploy.\n // A server build's static assets ride the Frameworks API tree instead,\n // where the file has never been applied, so `finalizeBuild` writes the\n // same rules into that tree's config.\n readsHeaderFiles: { server: false, static: true },\n redirectFiles: [NETLIFY_REDIRECTS_FILE],\n serverClientUnderBase: false,\n serverOutputDir: distDir,\n serverStaticDir: distDir,\n};\n",
202
204
  "import { dirname, join } from \"pathe\";\n\nimport type { ProjectContext } from \"../../core/types.ts\";\n\n/** Astro's build output dir: the runtime's own `distDir`, else `<root>/dist`. */\nexport const distDir = (context: ProjectContext): string =>\n context.distDir ?? join(context.root, \"dist\");\n\n/**\n * The `client/` half of a server build that keeps Astro's `dist/client` +\n * `dist/server` split and serves only the client half: the Node standalone\n * server's static handler reads only `build.client`, and `@astrojs/cloudflare`\n * declares `preserveBuildClientDir: true` and points the ASSETS binding in the\n * `dist/server/wrangler.json` it generates at `../client`.\n */\nexport const clientDir = (context: ProjectContext): string =>\n join(distDir(context), \"client\");\n\n/**\n * The root a deploy adapter is shown, in place of the `.blume` runtime Astro\n * actually roots at. Adapters assume `outDir` is `<root>/dist` and resolve\n * their own output (and Vercel's dependency trace) against `root`, so the\n * root implied by Blume's `outDir` is the one that keeps that assumption\n * true. See `withAdapterRoot`.\n *\n * For a normal build that is the project root (`<project>/dist` ->\n * `<project>`). For a relocated runtime (`blume build --isolated`) it is the\n * runtime dir itself (`<runtime>/dist` -> `<runtime>`), keeping a verify\n * build's adapter output self-contained instead of overwriting the real\n * `.vercel/output`.\n */\nexport const adapterRoot = (context: ProjectContext): string =>\n dirname(distDir(context));\n\n/** Prefix a bare host with `https://`; pass values that are already absolute. */\nexport const toSiteUrl = (value: string | undefined): string | null => {\n const trimmed = value?.trim();\n if (!trimmed) {\n return null;\n }\n return /^https?:\\/\\//u.test(trimmed) ? trimmed : `https://${trimmed}`;\n};\n",
203
- "import { existsSync } from \"node:fs\";\nimport { readFile, rename, writeFile } from \"node:fs/promises\";\n\nimport { join } from \"pathe\";\n\nimport { crossOriginDiscoveryPaths } from \"../ai/ai-catalog.ts\";\nimport {\n API_CATALOG_PATH,\n API_CATALOG_TYPE,\n hasApiCatalog,\n} from \"../ai/api-catalog.ts\";\nimport {\n SIGNATURES_DIRECTORY_PATH,\n SIGNATURES_DIRECTORY_TYPE,\n} from \"../ai/web-bot-auth.ts\";\nimport { normalizeBasePath, normalizePath } from \"../core/base-path.ts\";\nimport type { BlumeProject } from \"../core/project-graph.ts\";\nimport { compileRedirects, isPatternPath } from \"../core/redirect-patterns.ts\";\nimport type { CompiledRedirect } from \"../core/redirect-patterns.ts\";\nimport type { ResolvedConfig } from \"../core/schema.ts\";\nimport { SVG_ASSET_HEADERS, svgAssetPath } from \"./headers.ts\";\nimport { distDir } from \"./platforms/paths.ts\";\nimport type { BuildLog } from \"./platforms/types.ts\";\nimport { platformRedirects } from \"./redirects.ts\";\n\n/**\n * The response headers the Node standalone server can't set itself. Its static\n * handler (`send`) types a file by its extension alone and sends no CORS\n * header, so the extensionless well-known files go out as\n * `application/octet-stream` and a registry reading the discovery documents\n * from another origin is blocked — the half of the `_headers` rules\n * (`deploy/headers.ts`) that a Node server has no file to read from. The Markdown\n * and text charsets need no rule here: `send` already adds `charset=UTF-8` to\n * `text/*` types.\n *\n * The same wrapper answers the configured redirects. Astro's own handler\n * honors a redirect's configured status only when its destination resolves\n * to a discrete route, and Blume serves every page from `[...slug]`, so a\n * `302` or `307` would go out as a `301` or `308` — permanent redirects that\n * browsers cache.\n */\n\n/** The headers one exact served path (deployment base included) gets. */\nexport interface NodeHeaderRule {\n headers: Record<string, string>;\n path: string;\n}\n\n/** The server entry `@astrojs/node` writes, which the wrapper takes over. */\nexport const NODE_ENTRY_FILE = \"entry.mjs\";\n/** Where Astro's own entry moves, beside the wrapper that imports it. */\nexport const NODE_ASTRO_ENTRY_FILE = \"astro-entry.mjs\";\n/** First line of the wrapper, so a second pass over the same build is a no-op. */\nconst WRAPPER_MARKER = \"// blume:node-headers\";\n\n/** The header rules for this config, merged per path. */\nexport const nodeHeaderRules = (config: ResolvedConfig): NodeHeaderRule[] => {\n const deployBase = normalizeBasePath(config.deployment.options.base);\n const byPath = new Map<string, Record<string, string>>();\n const add = (path: string, name: string, value: string): void => {\n byPath.set(path, { ...byPath.get(path), [name]: value });\n };\n if (hasApiCatalog(config)) {\n add(API_CATALOG_PATH, \"Content-Type\", API_CATALOG_TYPE);\n }\n if (config.agents.webBotAuth.keys.length > 0) {\n add(SIGNATURES_DIRECTORY_PATH, \"Content-Type\", SIGNATURES_DIRECTORY_TYPE);\n }\n for (const path of crossOriginDiscoveryPaths(config)) {\n add(path, \"Access-Control-Allow-Origin\", \"*\");\n }\n return [...byPath].map(([path, headers]) => ({\n headers,\n path: `${deployBase}${path}`,\n }));\n};\n\n/** Exact-path rules, as `[path, headers]` pairs for the wrapper's lookup. */\nconst exactRules = (\n rules: readonly NodeHeaderRule[]\n): [string, Record<string, string>][] =>\n rules\n .filter((rule) => !rule.path.includes(\"*\"))\n .map((rule) => [rule.path, rule.headers]);\n\n/**\n * Glob rules (`/blume-assets/*.svg`), as `[prefix, suffix, headers]` — the\n * text before and after the one `*`, which spans path segments.\n */\nconst patternRules = (\n rules: readonly NodeHeaderRule[]\n): [string, string, Record<string, string>][] =>\n rules\n .filter((rule) => rule.path.includes(\"*\"))\n .map((rule) => {\n const star = rule.path.indexOf(\"*\");\n return [\n rule.path.slice(0, star),\n rule.path.slice(star + 1),\n rule.headers,\n ];\n });\n\n/**\n * The configured redirects the wrapper answers, keyed by served path (the\n * trailing slash trimmed), each to its `Location` and exact status.\n */\nexport type NodeRedirects = Record<string, [string, number]>;\n\n/**\n * The configured exact redirects, based the way the host matches them (see\n * `platformRedirects`) and keyed for the wrapper's lookup, the `Location`\n * percent-encoded as Astro sends it. A redirect at a content route's own path\n * is left out: the prerendered page owns that URL, and the static handler\n * serves it before Astro's redirect ever could. Patterns are compiled apart\n * ({@link nodePatternRedirects}).\n */\nexport const nodeRedirects = (project: BlumeProject): NodeRedirects => {\n const { config } = project;\n if (config.redirects.length === 0) {\n return {};\n }\n const base = normalizeBasePath(config.deployment.options.base);\n const pages = new Set(\n project.manifest.routes.map((route) =>\n normalizePath(`${base}${route.path}`)\n )\n );\n return Object.fromEntries(\n platformRedirects(project)\n .filter(\n (redirect) =>\n !(\n isPatternPath(redirect.from) ||\n pages.has(normalizePath(redirect.from))\n )\n )\n .map((redirect) => [\n normalizePath(redirect.from),\n [encodeURI(redirect.to), redirect.status],\n ])\n );\n};\n\n/**\n * The configured pattern redirects (`/beta/:slug*`), based the way the host\n * matches them and compiled for the wrapper, which tries them in order after\n * the exact ones. None can match a page: the scan rejects a pattern that\n * does (`BLUME_REDIRECT_MATCHES_PAGE`).\n */\nexport const nodePatternRedirects = (\n project: BlumeProject\n): CompiledRedirect[] =>\n project.config.redirects.length === 0\n ? []\n : compileRedirects(platformRedirects(project));\n\n/** What the wrapper needs beyond the header rules. */\nexport interface NodeEntryOptions {\n /** `deployment.base`, normalized (`\"\"` at the root). */\n base?: string;\n /** The configured redirects, from {@link nodeRedirects}. */\n redirects?: NodeRedirects;\n /** The configured pattern redirects, from {@link nodePatternRedirects}. */\n patternRedirects?: CompiledRedirect[];\n}\n\n/**\n * The entry that replaces Astro's: it answers a configured redirect with its\n * exact status, and otherwise stamps the rules' headers on the response and\n * hands the request to Astro's handler. `send` leaves a Content-Type that is\n * already set alone, so the registered media type wins.\n *\n * A rule matches the file the static handler will serve, not the raw URL:\n * Astro strips the base when it leads the path and serves the rest from the\n * client directory either way, and `send` decodes and normalizes the path —\n * so `/docs/blume-assets/a.sv%67`, `/blume-assets/a.svg`, and\n * `/docs//x/../blume-assets/a.svg` are all the same SVG. The comparison\n * ignores case, as a case-insensitive disk and `send`'s MIME lookup do.\n *\n * It keeps Astro's contract — the `handler`, `options`, and `startServer`\n * exports `astro preview` and a middleware-mode host import — and its\n * autostart: Astro's entry is imported with autostart off (the env var is read\n * when that module evaluates, so the import has to be dynamic), and the\n * wrapper starts the server itself, taking over its request listener so a\n * redirect is answered before Astro sees the request.\n */\nexport const nodeEntryWrapper = (\n rules: readonly NodeHeaderRule[],\n options: NodeEntryOptions = {}\n): string =>\n `${WRAPPER_MARKER}\n// Written by \\`blume build\\`: Astro's server entry is ./${NODE_ASTRO_ENTRY_FILE}.\n// This wrapper answers the configured redirects with their exact status and\n// sets the headers the standalone server's static handler can't (the media\n// types and CORS headers of the .well-known discovery files, the sandbox on\n// downloaded SVGs), then hands every other request to Astro.\nimport { posix } from \"node:path\";\n\nconst BASE = ${JSON.stringify(options.base ?? \"\")};\nconst RULES = new Map(${JSON.stringify(exactRules(rules))});\nconst PATTERNS = ${JSON.stringify(patternRules(rules))};\nconst REDIRECTS = ${JSON.stringify(options.redirects ?? {})};\nconst PATTERN_REDIRECTS = ${JSON.stringify(options.patternRedirects ?? [])}.map(\n ([source, location, status]) => [new RegExp(source, \"u\"), location, status]\n);\nconst safeDecode = (path) => {\n try {\n return decodeURIComponent(path);\n } catch {\n return path;\n }\n};\nconst urlPath = (req) => (req.url ?? \"\").split(\"#\")[0].split(\"?\")[0];\n// The file the static handler serves for a request, spelled with the base.\nconst servedPath = (req) => {\n const path = posix.normalize(\"/\" + safeDecode(urlPath(req)));\n const rest =\n BASE && (path === BASE || path.startsWith(BASE + \"/\"))\n ? path.slice(BASE.length)\n : path;\n return BASE + (rest || \"/\");\n};\nconst applyHeaders = (req, res) => {\n const path = servedPath(req);\n const lower = path.toLowerCase();\n const headers =\n RULES.get(path) ??\n PATTERNS.find(\n ([prefix, suffix]) =>\n lower.startsWith(prefix.toLowerCase()) &&\n lower.endsWith(suffix.toLowerCase())\n )?.[2];\n if (headers) {\n for (const [name, value] of Object.entries(headers)) {\n res.setHeader(name, value);\n }\n }\n};\n// A pattern redirect's Location: its template, each $n filled with that\n// capture, encoded so it can't grow a query or fragment.\nconst fillLocation = (location, match) =>\n location.replace(/\\\\$(\\\\d+)/gu, (_reference, index) =>\n encodeURI(match[Number(index)] ?? \"\")\n .replaceAll(\"?\", \"%3F\")\n .replaceAll(\"#\", \"%23\")\n );\n// The configured redirect for a decoded path: an exact one, else the first\n// pattern that matches it.\nconst redirectFor = (path) => {\n const trimmed = path !== \"/\" && path.endsWith(\"/\") ? path.slice(0, -1) : path;\n if (Object.hasOwn(REDIRECTS, trimmed)) {\n return REDIRECTS[trimmed];\n }\n for (const [pattern, location, status] of PATTERN_REDIRECTS) {\n const match = pattern.exec(path);\n if (match) {\n return [fillLocation(location, match), status];\n }\n }\n return null;\n};\n// Answer a configured redirect with its exact status; Astro's handler would\n// send a 301 (a 308 for other methods) whatever the configured one.\nconst answerRedirect = (req, res) => {\n const redirect = redirectFor(safeDecode(urlPath(req)));\n if (redirect === null) {\n return false;\n }\n const [location, status] = redirect;\n res.writeHead(status, { location });\n res.end();\n return true;\n};\nconst previous = process.env.ASTRO_NODE_AUTOSTART;\nprocess.env.ASTRO_NODE_AUTOSTART = \"disabled\";\nconst astro = await import(\"./${NODE_ASTRO_ENTRY_FILE}\");\nif (previous === undefined) {\n delete process.env.ASTRO_NODE_AUTOSTART;\n} else {\n process.env.ASTRO_NODE_AUTOSTART = previous;\n}\nexport const { options } = astro;\nexport const handler = (req, res, ...rest) => {\n if (answerRedirect(req, res)) {\n return;\n }\n applyHeaders(req, res);\n return astro.handler(req, res, ...rest);\n};\nexport const startServer = () => {\n const started = astro.startServer();\n // Take over the adapter's request listener only where it exposes its HTTP\n // server as expected; a different shape serves without the headers and\n // redirect statuses rather than failing to start.\n const httpServer = started?.server?.server;\n if (typeof httpServer?.listeners === \"function\") {\n const astroListeners = httpServer.listeners(\"request\");\n httpServer.removeAllListeners(\"request\");\n httpServer.on(\"request\", (req, res) => {\n if (answerRedirect(req, res)) {\n return;\n }\n applyHeaders(req, res);\n for (const listener of astroListeners) {\n listener.call(httpServer, req, res);\n }\n });\n }\n return started;\n};\nif (options.mode === \"standalone\" && previous !== \"disabled\") {\n startServer();\n}\n`;\n\n/**\n * Put the wrapper in front of a Node server build's entry. A build with no\n * rule (no API catalog, AI catalog, MCP server, signatures directory, or\n * downloaded content assets) and no redirect leaves Astro's entry alone.\n */\nexport const wrapNodeEntry = async (\n project: BlumeProject,\n log: BuildLog\n): Promise<void> => {\n // Content assets a CMS source downloaded ship as static files, which the\n // standalone server serves without the SVG sandbox static hosts get from\n // `_headers`; only a build that has them needs the rule.\n const assetsDir = join(distDir(project.context), \"client\", \"blume-assets\");\n const rules = [\n ...nodeHeaderRules(project.config),\n ...(existsSync(assetsDir)\n ? [\n {\n headers: { ...SVG_ASSET_HEADERS },\n path: svgAssetPath(project.config),\n },\n ]\n : []),\n ];\n const redirects = nodeRedirects(project);\n const patternRedirects = nodePatternRedirects(project);\n if (\n rules.length === 0 &&\n Object.keys(redirects).length === 0 &&\n patternRedirects.length === 0\n ) {\n return;\n }\n const serverDir = join(distDir(project.context), \"server\");\n const entry = join(serverDir, NODE_ENTRY_FILE);\n if (!existsSync(entry)) {\n log.warn(\n `Could not find the Node server entry at ${entry}, so the server runs without the headers and redirect statuses Blume sets there.`\n );\n return;\n }\n const source = await readFile(entry, \"utf-8\");\n if (source.startsWith(WRAPPER_MARKER)) {\n return;\n }\n await rename(entry, join(serverDir, NODE_ASTRO_ENTRY_FILE));\n await writeFile(\n entry,\n nodeEntryWrapper(rules, {\n base: normalizeBasePath(project.config.deployment.options.base),\n patternRedirects,\n redirects,\n }),\n \"utf-8\"\n );\n log.success(\"Wired headers and redirects into the Node server entry\");\n};\n",
205
+ "import { existsSync } from \"node:fs\";\nimport { readFile, rename, writeFile } from \"node:fs/promises\";\n\nimport { join } from \"pathe\";\n\nimport { crossOriginDiscoveryPaths } from \"../ai/ai-catalog.ts\";\nimport {\n API_CATALOG_PATH,\n API_CATALOG_TYPE,\n hasApiCatalog,\n} from \"../ai/api-catalog.ts\";\nimport {\n SIGNATURES_DIRECTORY_PATH,\n SIGNATURES_DIRECTORY_TYPE,\n} from \"../ai/web-bot-auth.ts\";\nimport { normalizeBasePath, normalizePath } from \"../core/base-path.ts\";\nimport { POWERED_BY_HEADERS } from \"../core/powered-by.ts\";\nimport type { BlumeProject } from \"../core/project-graph.ts\";\nimport { compileRedirects, isPatternPath } from \"../core/redirect-patterns.ts\";\nimport type { CompiledRedirect } from \"../core/redirect-patterns.ts\";\nimport type { ResolvedConfig } from \"../core/schema.ts\";\nimport { SVG_ASSET_HEADERS, svgAssetPath } from \"./headers.ts\";\nimport { distDir } from \"./platforms/paths.ts\";\nimport type { BuildLog } from \"./platforms/types.ts\";\nimport { platformRedirects } from \"./redirects.ts\";\n\n/**\n * The response headers the Node standalone server can't set itself. Its static\n * handler (`send`) types a file by its extension alone and sends no CORS\n * header, so the extensionless well-known files go out as\n * `application/octet-stream` and a registry reading the discovery documents\n * from another origin is blocked — the half of the `_headers` rules\n * (`deploy/headers.ts`) that a Node server has no file to read from. The Markdown\n * and text charsets need no rule here: `send` already adds `charset=UTF-8` to\n * `text/*` types.\n *\n * The same wrapper answers the configured redirects. Astro's own handler\n * honors a redirect's configured status only when its destination resolves\n * to a discrete route, and Blume serves every page from `[...slug]`, so a\n * `302` or `307` would go out as a `301` or `308` — permanent redirects that\n * browsers cache.\n */\n\n/** The headers one exact served path (deployment base included) gets. */\nexport interface NodeHeaderRule {\n headers: Record<string, string>;\n path: string;\n}\n\n/** The server entry `@astrojs/node` writes, which the wrapper takes over. */\nexport const NODE_ENTRY_FILE = \"entry.mjs\";\n/** Where Astro's own entry moves, beside the wrapper that imports it. */\nexport const NODE_ASTRO_ENTRY_FILE = \"astro-entry.mjs\";\n/** First line of the wrapper, so a second pass over the same build is a no-op. */\nconst WRAPPER_MARKER = \"// blume:node-headers\";\n\n/** The header rules for this config, merged per path. */\nexport const nodeHeaderRules = (config: ResolvedConfig): NodeHeaderRule[] => {\n const deployBase = normalizeBasePath(config.deployment.options.base);\n const byPath = new Map<string, Record<string, string>>();\n const add = (path: string, name: string, value: string): void => {\n byPath.set(path, { ...byPath.get(path), [name]: value });\n };\n if (hasApiCatalog(config)) {\n add(API_CATALOG_PATH, \"Content-Type\", API_CATALOG_TYPE);\n }\n if (config.agents.webBotAuth.keys.length > 0) {\n add(SIGNATURES_DIRECTORY_PATH, \"Content-Type\", SIGNATURES_DIRECTORY_TYPE);\n }\n for (const path of crossOriginDiscoveryPaths(config)) {\n add(path, \"Access-Control-Allow-Origin\", \"*\");\n }\n return [...byPath].map(([path, headers]) => ({\n headers,\n path: `${deployBase}${path}`,\n }));\n};\n\n/** Exact-path rules, as `[path, headers]` pairs for the wrapper's lookup. */\nconst exactRules = (\n rules: readonly NodeHeaderRule[]\n): [string, Record<string, string>][] =>\n rules\n .filter((rule) => !rule.path.includes(\"*\"))\n .map((rule) => [rule.path, rule.headers]);\n\n/**\n * Glob rules (`/blume-assets/*.svg`), as `[prefix, suffix, headers]` — the\n * text before and after the one `*`, which spans path segments.\n */\nconst patternRules = (\n rules: readonly NodeHeaderRule[]\n): [string, string, Record<string, string>][] =>\n rules\n .filter((rule) => rule.path.includes(\"*\"))\n .map((rule) => {\n const star = rule.path.indexOf(\"*\");\n return [\n rule.path.slice(0, star),\n rule.path.slice(star + 1),\n rule.headers,\n ];\n });\n\n/**\n * The configured redirects the wrapper answers, keyed by served path (the\n * trailing slash trimmed), each to its `Location` and exact status.\n */\nexport type NodeRedirects = Record<string, [string, number]>;\n\n/**\n * The configured exact redirects, based the way the host matches them (see\n * `platformRedirects`) and keyed for the wrapper's lookup, the `Location`\n * percent-encoded as Astro sends it. A redirect at a content route's own path\n * is left out: the prerendered page owns that URL, and the static handler\n * serves it before Astro's redirect ever could. Patterns are compiled apart\n * ({@link nodePatternRedirects}).\n */\nexport const nodeRedirects = (project: BlumeProject): NodeRedirects => {\n const { config } = project;\n if (config.redirects.length === 0) {\n return {};\n }\n const base = normalizeBasePath(config.deployment.options.base);\n const pages = new Set(\n project.manifest.routes.map((route) =>\n normalizePath(`${base}${route.path}`)\n )\n );\n return Object.fromEntries(\n platformRedirects(project)\n .filter(\n (redirect) =>\n !(\n isPatternPath(redirect.from) ||\n pages.has(normalizePath(redirect.from))\n )\n )\n .map((redirect) => [\n normalizePath(redirect.from),\n [encodeURI(redirect.to), redirect.status],\n ])\n );\n};\n\n/**\n * The configured pattern redirects (`/beta/:slug*`), based the way the host\n * matches them and compiled for the wrapper, which tries them in order after\n * the exact ones. None can match a page: the scan rejects a pattern that\n * does (`BLUME_REDIRECT_MATCHES_PAGE`).\n */\nexport const nodePatternRedirects = (\n project: BlumeProject\n): CompiledRedirect[] =>\n project.config.redirects.length === 0\n ? []\n : compileRedirects(platformRedirects(project));\n\n/** What the wrapper needs beyond the header rules. */\nexport interface NodeEntryOptions {\n /** `deployment.base`, normalized (`\"\"` at the root). */\n base?: string;\n /** Whether responses identify Blume with `X-Powered-By`. Defaults to `true`. */\n poweredBy?: boolean;\n /** The configured redirects, from {@link nodeRedirects}. */\n redirects?: NodeRedirects;\n /** The configured pattern redirects, from {@link nodePatternRedirects}. */\n patternRedirects?: CompiledRedirect[];\n}\n\n/**\n * The entry that replaces Astro's: it answers a configured redirect with its\n * exact status, and otherwise stamps the rules' headers on the response and\n * hands the request to Astro's handler. `send` leaves a Content-Type that is\n * already set alone, so the registered media type wins. Unless `poweredBy` is\n * `false`, every answer also names Blume in `X-Powered-By` — the redirects,\n * and the prerendered pages and files the static handler serves, which\n * Blume's runtime middleware never sees. A middleware-mode entry leaves that\n * header to the middleware: Astro hands a request it has no route for back to\n * the host app through `next()`, and that response is the host's own.\n *\n * A rule matches the file the static handler will serve, not the raw URL:\n * Astro strips the base when it leads the path and serves the rest from the\n * client directory either way, and `send` decodes and normalizes the path —\n * so `/docs/blume-assets/a.sv%67`, `/blume-assets/a.svg`, and\n * `/docs//x/../blume-assets/a.svg` are all the same SVG. The comparison\n * ignores case, as a case-insensitive disk and `send`'s MIME lookup do.\n *\n * It keeps Astro's contract — the `handler`, `options`, and `startServer`\n * exports `astro preview` and a middleware-mode host import — and its\n * autostart: Astro's entry is imported with autostart off (the env var is read\n * when that module evaluates, so the import has to be dynamic), and the\n * wrapper starts the server itself, taking over its request listener so a\n * redirect is answered before Astro sees the request.\n */\nexport const nodeEntryWrapper = (\n rules: readonly NodeHeaderRule[],\n options: NodeEntryOptions = {}\n): string =>\n `${WRAPPER_MARKER}\n// Written by \\`blume build\\`: Astro's server entry is ./${NODE_ASTRO_ENTRY_FILE}.\n// This wrapper answers the configured redirects with their exact status and\n// sets the headers the standalone server's static handler can't (the media\n// types and CORS headers of the .well-known discovery files, the sandbox on\n// downloaded SVGs, X-Powered-By), then hands every other request to Astro.\nimport { posix } from \"node:path\";\n\nconst BASE = ${JSON.stringify(options.base ?? \"\")};\nconst POWERED_BY = ${JSON.stringify(options.poweredBy === false ? {} : POWERED_BY_HEADERS)};\nconst RULES = new Map(${JSON.stringify(exactRules(rules))});\nconst PATTERNS = ${JSON.stringify(patternRules(rules))};\nconst REDIRECTS = ${JSON.stringify(options.redirects ?? {})};\nconst PATTERN_REDIRECTS = ${JSON.stringify(options.patternRedirects ?? [])}.map(\n ([source, location, status]) => [new RegExp(source, \"u\"), location, status]\n);\nconst safeDecode = (path) => {\n try {\n return decodeURIComponent(path);\n } catch {\n return path;\n }\n};\nconst urlPath = (req) => (req.url ?? \"\").split(\"#\")[0].split(\"?\")[0];\n// The file the static handler serves for a request, spelled with the base.\nconst servedPath = (req) => {\n const path = posix.normalize(\"/\" + safeDecode(urlPath(req)));\n const rest =\n BASE && (path === BASE || path.startsWith(BASE + \"/\"))\n ? path.slice(BASE.length)\n : path;\n return BASE + (rest || \"/\");\n};\nconst applyHeaders = (req, res, identify) => {\n const path = servedPath(req);\n const lower = path.toLowerCase();\n const headers = {\n ...(identify ? POWERED_BY : {}),\n ...(RULES.get(path) ??\n PATTERNS.find(\n ([prefix, suffix]) =>\n lower.startsWith(prefix.toLowerCase()) &&\n lower.endsWith(suffix.toLowerCase())\n )?.[2]),\n };\n for (const [name, value] of Object.entries(headers)) {\n res.setHeader(name, value);\n }\n};\n// A pattern redirect's Location: its template, each $n filled with that\n// capture, encoded so it can't grow a query or fragment.\nconst fillLocation = (location, match) =>\n location.replace(/\\\\$(\\\\d+)/gu, (_reference, index) =>\n encodeURI(match[Number(index)] ?? \"\")\n .replaceAll(\"?\", \"%3F\")\n .replaceAll(\"#\", \"%23\")\n );\n// The configured redirect for a decoded path: an exact one, else the first\n// pattern that matches it.\nconst redirectFor = (path) => {\n const trimmed = path !== \"/\" && path.endsWith(\"/\") ? path.slice(0, -1) : path;\n if (Object.hasOwn(REDIRECTS, trimmed)) {\n return REDIRECTS[trimmed];\n }\n for (const [pattern, location, status] of PATTERN_REDIRECTS) {\n const match = pattern.exec(path);\n if (match) {\n return [fillLocation(location, match), status];\n }\n }\n return null;\n};\n// Answer a configured redirect with its exact status; Astro's handler would\n// send a 301 (a 308 for other methods) whatever the configured one.\nconst answerRedirect = (req, res) => {\n const redirect = redirectFor(safeDecode(urlPath(req)));\n if (redirect === null) {\n return false;\n }\n const [location, status] = redirect;\n res.writeHead(status, { ...POWERED_BY, location });\n res.end();\n return true;\n};\nconst previous = process.env.ASTRO_NODE_AUTOSTART;\nprocess.env.ASTRO_NODE_AUTOSTART = \"disabled\";\nconst astro = await import(\"./${NODE_ASTRO_ENTRY_FILE}\");\nif (previous === undefined) {\n delete process.env.ASTRO_NODE_AUTOSTART;\n} else {\n process.env.ASTRO_NODE_AUTOSTART = previous;\n}\nexport const { options } = astro;\nexport const handler = (req, res, ...rest) => {\n if (answerRedirect(req, res)) {\n return;\n }\n applyHeaders(req, res, options.mode !== \"middleware\");\n return astro.handler(req, res, ...rest);\n};\nexport const startServer = () => {\n const started = astro.startServer();\n // Take over the adapter's request listener only where it exposes its HTTP\n // server as expected; a different shape serves without the headers and\n // redirect statuses rather than failing to start.\n const httpServer = started?.server?.server;\n if (typeof httpServer?.listeners === \"function\") {\n const astroListeners = httpServer.listeners(\"request\");\n httpServer.removeAllListeners(\"request\");\n httpServer.on(\"request\", (req, res) => {\n if (answerRedirect(req, res)) {\n return;\n }\n applyHeaders(req, res, true);\n for (const listener of astroListeners) {\n listener.call(httpServer, req, res);\n }\n });\n }\n return started;\n};\nif (options.mode === \"standalone\" && previous !== \"disabled\") {\n startServer();\n}\n`;\n\n/**\n * Put the wrapper in front of a Node server build's entry. A build with\n * `poweredBy` off, no rule (no API catalog, AI catalog, MCP server,\n * signatures directory, or downloaded content assets), and no redirect leaves\n * Astro's entry alone.\n */\nexport const wrapNodeEntry = async (\n project: BlumeProject,\n log: BuildLog\n): Promise<void> => {\n // Content assets a CMS source downloaded ship as static files, which the\n // standalone server serves without the SVG sandbox static hosts get from\n // `_headers`; only a build that has them needs the rule.\n const assetsDir = join(distDir(project.context), \"client\", \"blume-assets\");\n const rules = [\n ...nodeHeaderRules(project.config),\n ...(existsSync(assetsDir)\n ? [\n {\n headers: { ...SVG_ASSET_HEADERS },\n path: svgAssetPath(project.config),\n },\n ]\n : []),\n ];\n const redirects = nodeRedirects(project);\n const patternRedirects = nodePatternRedirects(project);\n if (\n !project.config.poweredBy &&\n rules.length === 0 &&\n Object.keys(redirects).length === 0 &&\n patternRedirects.length === 0\n ) {\n return;\n }\n const serverDir = join(distDir(project.context), \"server\");\n const entry = join(serverDir, NODE_ENTRY_FILE);\n if (!existsSync(entry)) {\n log.warn(\n `Could not find the Node server entry at ${entry}, so the server runs without the headers and redirect statuses Blume sets there.`\n );\n return;\n }\n const source = await readFile(entry, \"utf-8\");\n if (source.startsWith(WRAPPER_MARKER)) {\n return;\n }\n await rename(entry, join(serverDir, NODE_ASTRO_ENTRY_FILE));\n await writeFile(\n entry,\n nodeEntryWrapper(rules, {\n base: normalizeBasePath(project.config.deployment.options.base),\n patternRedirects,\n poweredBy: project.config.poweredBy,\n redirects,\n }),\n \"utf-8\"\n );\n log.success(\"Wired headers and redirects into the Node server entry\");\n};\n",
204
206
  "import type { JsonValue } from \"../../core/adapter.ts\";\nimport { NODE_ADAPTER_PACKAGE } from \"../adapters/node.ts\";\nimport { wrapNodeEntry } from \"../node-headers.ts\";\nimport { clientDir, distDir } from \"./paths.ts\";\nimport type { DeployPlatform } from \"./types.ts\";\n\n/**\n * A self-hosted Node server. The standalone server in `dist/server` serves\n * `dist/client` through its own static handler, which has no `_headers` or\n * `_redirects` support, so a file written there would be inert. A wrapper\n * around the server entry (`deploy/node-headers.ts`) sets the headers the\n * discovery files and downloaded SVGs need instead, and answers the\n * configured redirects with their exact status, which Astro's own handler\n * would default to 301 or 308. No platform env to detect: the site URL has to\n * be configured. `allowedDomains` becomes Astro's `security.allowedDomains`,\n * which a server behind a reverse proxy needs before Astro reads the reader's\n * address from `X-Forwarded-For`.\n */\nexport const nodePlatform: DeployPlatform = {\n astro: {\n config: ({ allowedDomains }) => {\n const config: Record<string, JsonValue> = {};\n if (allowedDomains) {\n config.security = { allowedDomains };\n }\n return config;\n },\n configOptions: [\"allowedDomains\"],\n options: () => ({ mode: \"standalone\" }),\n package: NODE_ADAPTER_PACKAGE,\n },\n env: null,\n finalizeBuild: async ({ isolated, log, project }) => {\n // The wrapped entry is a deploy artifact; an isolated verify skips it.\n if (!isolated) {\n await wrapNodeEntry(project, log);\n }\n return true;\n },\n hiddenRuntime: {\n ignoreDir: null,\n showProjectRoot: false,\n surfacePath: null,\n },\n kind: \"node\",\n negotiatesMarkdown: false,\n previewDeploy: null,\n readsHeaderFiles: { server: false, static: false },\n redirectFiles: [],\n serverClientUnderBase: false,\n serverOutputDir: distDir,\n serverStaticDir: clientDir,\n};\n",
205
- "import { existsSync } from \"node:fs\";\nimport { mkdir, readFile, rename, writeFile } from \"node:fs/promises\";\n\nimport { dirname, join } from \"pathe\";\n\nimport { crossOriginDiscoveryPaths } from \"../../ai/ai-catalog.ts\";\nimport {\n API_CATALOG_PATH,\n API_CATALOG_TYPE,\n hasApiCatalog,\n} from \"../../ai/api-catalog.ts\";\nimport { buildHomeLinkHeader } from \"../../ai/link-headers.ts\";\nimport {\n agentMarkdown,\n buildRawMarkdown,\n markdownRoutePaths,\n markdownTokenCount,\n} from \"../../ai/markdown.ts\";\nimport {\n SIGNATURES_DIRECTORY_PATH,\n SIGNATURES_DIRECTORY_TYPE,\n} from \"../../ai/web-bot-auth.ts\";\nimport { mountBasePath, normalizeBasePath } from \"../../core/base-path.ts\";\nimport type { BlumeProject } from \"../../core/project-graph.ts\";\nimport { isPatternPath, regexRedirect } from \"../../core/redirect-patterns.ts\";\nimport type { ResolvedConfig } from \"../../core/schema.ts\";\nimport type { ProjectContext } from \"../../core/types.ts\";\nimport { VERCEL_ADAPTER_PACKAGE } from \"../adapters/vercel.ts\";\nimport {\n addDevDependencyCommand,\n auditVercelFunctions,\n blumeDependencyNames,\n functionBundleVerdict,\n} from \"../function-bundle.ts\";\nimport {\n buildVercelConfig,\n platformRedirects,\n vercelPatternRoutes,\n} from \"../redirects.ts\";\nimport {\n injectNegotiationRoutes,\n injectRedirectRoutes,\n rebaseAdapterRoutes,\n} from \"../vercel-negotiation.ts\";\nimport type { VercelRoute } from \"../vercel-negotiation.ts\";\nimport { adapterRoot, toSiteUrl } from \"./paths.ts\";\nimport type { BuildLog, DeployPlatform, RedirectFile } from \"./types.ts\";\n\n/** `vercel.json` with a `redirects` array, for a static deploy of `dist/`. */\nexport const VERCEL_JSON_FILE: RedirectFile = {\n build: buildVercelConfig,\n name: \"vercel.json\",\n};\n\n/**\n * The Build Output tree. The adapter is shown the project root (see\n * `hiddenRuntime.showProjectRoot`), so for a real build this is\n * `<project>/.vercel/output`; an isolated build keeps it under the relocated\n * runtime.\n */\nconst buildOutputDir = (context: ProjectContext): string =>\n join(adapterRoot(context), \".vercel\", \"output\");\n\n/** The static files a server build serves, under the base's directory. */\nconst staticDir = (context: ProjectContext, base: string): string =>\n join(buildOutputDir(context), \"static\", base);\n\n/** The project's normalized `deployment.base`, `\"\"` for none. */\nconst deploymentBase = (project: BlumeProject): string =>\n normalizeBasePath(project.config.deployment.options.base);\n\n/**\n * Refuse to ship a function bundle that would crash at runtime: a bare import\n * the adapter's dependency trace silently dropped (see\n * `deploy/function-bundle.ts`). A missing package that is one of Blume's own\n * dependencies is fatal — the generated runtime imports it, so every request\n * would die; a project's own external import is reported as a warning and\n * left to the author. Resolves to whether the bundle may ship.\n */\nexport const checkVercelFunctionBundles = async (\n outputDir: string,\n root: string,\n log: BuildLog\n): Promise<boolean> => {\n const audits = await auditVercelFunctions(outputDir);\n const own = blumeDependencyNames();\n // The remedy names the project's own package manager (`pnpm add -D`, …).\n const addDevCommand = await addDevDependencyCommand(root);\n let fatal = false;\n for (const audit of audits) {\n const verdict = functionBundleVerdict(audit, root, own, addDevCommand);\n if (verdict.fatal) {\n fatal = true;\n log.error(verdict.message);\n } else {\n log.warn(verdict.message);\n }\n }\n return !fatal;\n};\n\n/**\n * Splice `Accept: text/markdown` negotiation routes into the adapter's Build\n * Output config, so a content-page request that prefers Markdown gets the\n * page's prerendered `.md` mirror (content pages are prerendered even in\n * server output, so Astro middleware never sees them — the routing layer is\n * the only request-time hook). The adapter writes the config straight to the\n * root it was shown.\n */\nexport const emitVercelNegotiation = async (\n project: BlumeProject,\n log: BuildLog\n): Promise<void> => {\n const { config, context } = project;\n const configPath = join(buildOutputDir(context), \"config.json\");\n if (!existsSync(configPath)) {\n return;\n }\n const base = deploymentBase(project);\n const routePaths = markdownRoutePaths(project);\n // Keyed by the file's path in `static/`, under the base's directory.\n const overrides: Record<string, string> = {};\n if (hasApiCatalog(config)) {\n overrides[mountBasePath(base, API_CATALOG_PATH).slice(1)] =\n API_CATALOG_TYPE;\n }\n if (config.agents.webBotAuth.keys.length > 0) {\n overrides[mountBasePath(base, SIGNATURES_DIRECTORY_PATH).slice(1)] =\n SIGNATURES_DIRECTORY_TYPE;\n }\n // The homepage rewrite serves `/index.md` from the static layer, so its\n // `x-markdown-tokens` estimate has to ride the routing config; the runtime\n // endpoint stamps it on dev/server-rendered responses itself.\n const rawMarkdown = await buildRawMarkdown(project);\n const home = rawMarkdown[\"/\"];\n // The Markdown and JSON 404 routes point at the prerendered twins; only\n // wire each when the build actually emitted it (a project that owns `/404`\n // gets none).\n const builtDir = staticDir(context, base);\n const injected = injectNegotiationRoutes(\n await readFile(configPath, \"utf-8\"),\n routePaths,\n buildHomeLinkHeader(config, routePaths),\n overrides,\n home ? markdownTokenCount(agentMarkdown(home)) : undefined,\n {\n json: existsSync(join(builtDir, \"404.json\")),\n markdown: existsSync(join(builtDir, \"404.md\")),\n },\n crossOriginDiscoveryPaths(config),\n // Downloaded content assets are prerendered static files; only a build\n // that has them needs the SVG sandbox route.\n existsSync(join(builtDir, \"blume-assets\")),\n base\n );\n if (injected === null) {\n log.warn(\n \"Could not wire Accept: text/markdown negotiation into .vercel/output/config.json — raw Markdown stays available at the .md URLs.\"\n );\n return;\n }\n await writeFile(configPath, injected, \"utf-8\");\n log.success(\n \"Wired Accept: text/markdown negotiation into the Vercel routing config\"\n );\n};\n\n/**\n * Route the pattern redirects (`/beta/:slug*`) in the adapter's Build Output\n * config: Astro's `redirects` carry only the exact ones, since it can't\n * prerender a pattern's pages, so the adapter never sees these.\n */\nexport const emitVercelPatternRedirects = async (\n project: BlumeProject,\n log: BuildLog\n): Promise<void> => {\n const routes = vercelPatternRoutes(platformRedirects(project));\n const configPath = join(buildOutputDir(project.context), \"config.json\");\n if (routes.length === 0 || !existsSync(configPath)) {\n return;\n }\n const injected = injectRedirectRoutes(\n await readFile(configPath, \"utf-8\"),\n routes\n );\n if (injected === null) {\n log.warn(\n \"Could not route the pattern redirects in .vercel/output/config.json, so paths they cover answer 404.\"\n );\n return;\n }\n await writeFile(configPath, injected, \"utf-8\");\n};\n\ntype Redirect = ResolvedConfig[\"redirects\"][number];\n\n/**\n * The exact redirects as Build Output routes, matched the way the pattern ones\n * are (see `regexRedirect`): the served path, a trailing slash optional.\n */\nconst exactRedirectRoutes = (redirects: Redirect[]): VercelRoute[] =>\n redirects\n .filter((redirect) => !isPatternPath(redirect.from))\n .map(({ from, status, to }) => ({\n headers: { Location: encodeURI(to) },\n src: regexRedirect({ parts: [{ kind: \"text\", text: from }], status, to })\n .source,\n status,\n }));\n\n/**\n * Move a server build's static files under `deployment.base`.\n * `@astrojs/vercel` copies them to the root of the Build Output tree's\n * `static/`, while the pages request `<base>/_astro/…` and link to\n * `<base>/…`, so nothing the site asks for would be found. Moved to\n * `static/<base>/`, they're served at the base, as the routes that\n * {@link rebaseVercelRoutes} moves there expect.\n */\nexport const moveStaticUnderBase = async (\n context: ProjectContext,\n base: string\n): Promise<void> => {\n const root = staticDir(context, \"\");\n if (!base || !existsSync(root)) {\n return;\n }\n // Through a sibling, since the target lies inside the directory it moves.\n const staging = join(buildOutputDir(context), \"static-unbased\");\n await rename(root, staging);\n const target = staticDir(context, base);\n await mkdir(dirname(target), { recursive: true });\n await rename(staging, target);\n};\n\n/**\n * Move the adapter's routing config under `deployment.base` to match the\n * static files (see `rebaseAdapterRoutes`), its exact redirects rebuilt from\n * the configured ones. Resolves to false when the config can't be read: the\n * adapter's routes would then miss every path under the base.\n */\nexport const rebaseVercelRoutes = async (\n project: BlumeProject,\n log: BuildLog\n): Promise<boolean> => {\n const base = deploymentBase(project);\n const configPath = join(buildOutputDir(project.context), \"config.json\");\n if (!base || !existsSync(configPath)) {\n return true;\n }\n const rebased = rebaseAdapterRoutes(\n await readFile(configPath, \"utf-8\"),\n base,\n exactRedirectRoutes(platformRedirects(project))\n );\n if (rebased === null) {\n log.error(\n `Could not move the routes in .vercel/output/config.json under the deployment base \"${base}\", so the site would not be served there.`\n );\n return false;\n }\n await writeFile(configPath, rebased, \"utf-8\");\n return true;\n};\n\n/**\n * Vercel. A server build's Build Output tree lands at `.vercel/output` — at\n * the project root, because the adapter is handed that root up front: its\n * `@vercel/nft` dependency trace is rooted there too, and tracing from the\n * hidden runtime silently drops the function's chunks and `node_modules`.\n * Static assets are served from the tree's `static/` half, so the deploy\n * artifacts are written there; headers (the discovery files', the sandbox on\n * downloaded SVGs) arrive through the routing config rather than a\n * `_headers` file, which Vercel never reads. The adapter ignores\n * `deployment.base`, so under one the build moves the static files and the\n * routes beneath it.\n */\nexport const vercelPlatform: DeployPlatform = {\n astro: {\n config: () => ({}),\n configOptions: [],\n options: () => ({}),\n package: VERCEL_ADAPTER_PACKAGE,\n },\n env: {\n detect: (env) => Boolean(env.VERCEL),\n // The stable production domain wins over the per-deployment preview URL\n // so the inferred origin (sitemap, OG, RSS) stays put across deploys;\n // the chain falls through per resolved value, so an empty\n // VERCEL_PROJECT_PRODUCTION_URL doesn't dead-end it.\n site: (env) =>\n toSiteUrl(env.VERCEL_PROJECT_PRODUCTION_URL) ?? toSiteUrl(env.VERCEL_URL),\n },\n finalizeBuild: async ({ isolated, log, project }) => {\n const { context } = project;\n const ok = await checkVercelFunctionBundles(\n buildOutputDir(context),\n context.root,\n log\n );\n if (!ok) {\n return false;\n }\n // A verify build moves its static files too, where the budget gate reads\n // them (`serverStaticDir`).\n await moveStaticUnderBase(context, deploymentBase(project));\n // An isolated verify only proves the bundle would ship; the routing\n // config is a deploy artifact and stays untouched.\n if (isolated) {\n return true;\n }\n if (!(await rebaseVercelRoutes(project, log))) {\n return false;\n }\n await emitVercelNegotiation(project, log);\n await emitVercelPatternRedirects(project, log);\n return true;\n },\n hiddenRuntime: {\n ignoreDir: \".vercel/\",\n showProjectRoot: true,\n surfacePath: null,\n },\n kind: \"vercel\",\n negotiatesMarkdown: true,\n // @astrojs/vercel declares no preview entrypoint.\n previewDeploy: \"vercel deploy\",\n readsHeaderFiles: { server: false, static: false },\n redirectFiles: [VERCEL_JSON_FILE],\n serverClientUnderBase: false,\n serverOutputDir: buildOutputDir,\n serverStaticDir: staticDir,\n};\n",
207
+ "import { existsSync } from \"node:fs\";\nimport { mkdir, readFile, rename, writeFile } from \"node:fs/promises\";\n\nimport { dirname, join } from \"pathe\";\n\nimport { crossOriginDiscoveryPaths } from \"../../ai/ai-catalog.ts\";\nimport {\n API_CATALOG_PATH,\n API_CATALOG_TYPE,\n hasApiCatalog,\n} from \"../../ai/api-catalog.ts\";\nimport { buildHomeLinkHeader } from \"../../ai/link-headers.ts\";\nimport {\n agentMarkdown,\n buildRawMarkdown,\n markdownRoutePaths,\n markdownTokenCount,\n} from \"../../ai/markdown.ts\";\nimport {\n SIGNATURES_DIRECTORY_PATH,\n SIGNATURES_DIRECTORY_TYPE,\n} from \"../../ai/web-bot-auth.ts\";\nimport { mountBasePath, normalizeBasePath } from \"../../core/base-path.ts\";\nimport type { BlumeProject } from \"../../core/project-graph.ts\";\nimport { isPatternPath, regexRedirect } from \"../../core/redirect-patterns.ts\";\nimport type { ResolvedConfig } from \"../../core/schema.ts\";\nimport type { ProjectContext } from \"../../core/types.ts\";\nimport { VERCEL_ADAPTER_PACKAGE } from \"../adapters/vercel.ts\";\nimport {\n addDevDependencyCommand,\n auditVercelFunctions,\n blumeDependencyNames,\n functionBundleVerdict,\n} from \"../function-bundle.ts\";\nimport {\n buildVercelConfig,\n platformRedirects,\n vercelPatternRoutes,\n} from \"../redirects.ts\";\nimport {\n injectNegotiationRoutes,\n injectRedirectRoutes,\n rebaseAdapterRoutes,\n} from \"../vercel-negotiation.ts\";\nimport type { VercelRoute } from \"../vercel-negotiation.ts\";\nimport { adapterRoot, toSiteUrl } from \"./paths.ts\";\nimport type { BuildLog, DeployPlatform, RedirectFile } from \"./types.ts\";\n\n/** `vercel.json` with a `redirects` array, for a static deploy of `dist/`. */\nexport const VERCEL_JSON_FILE: RedirectFile = {\n build: buildVercelConfig,\n name: \"vercel.json\",\n};\n\n/**\n * The Build Output tree. The adapter is shown the project root (see\n * `hiddenRuntime.showProjectRoot`), so for a real build this is\n * `<project>/.vercel/output`; an isolated build keeps it under the relocated\n * runtime.\n */\nconst buildOutputDir = (context: ProjectContext): string =>\n join(adapterRoot(context), \".vercel\", \"output\");\n\n/** The static files a server build serves, under the base's directory. */\nconst staticDir = (context: ProjectContext, base: string): string =>\n join(buildOutputDir(context), \"static\", base);\n\n/** The project's normalized `deployment.base`, `\"\"` for none. */\nconst deploymentBase = (project: BlumeProject): string =>\n normalizeBasePath(project.config.deployment.options.base);\n\n/**\n * Refuse to ship a function bundle that would crash at runtime: a bare import\n * the adapter's dependency trace silently dropped (see\n * `deploy/function-bundle.ts`). A missing package that is one of Blume's own\n * dependencies is fatal — the generated runtime imports it, so every request\n * would die; a project's own external import is reported as a warning and\n * left to the author. Resolves to whether the bundle may ship.\n */\nexport const checkVercelFunctionBundles = async (\n outputDir: string,\n root: string,\n log: BuildLog\n): Promise<boolean> => {\n const audits = await auditVercelFunctions(outputDir);\n const own = blumeDependencyNames();\n // The remedy names the project's own package manager (`pnpm add -D`, …).\n const addDevCommand = await addDevDependencyCommand(root);\n let fatal = false;\n for (const audit of audits) {\n const verdict = functionBundleVerdict(audit, root, own, addDevCommand);\n if (verdict.fatal) {\n fatal = true;\n log.error(verdict.message);\n } else {\n log.warn(verdict.message);\n }\n }\n return !fatal;\n};\n\n/**\n * Splice `Accept: text/markdown` negotiation routes into the adapter's Build\n * Output config, so a content-page request that prefers Markdown gets the\n * page's prerendered `.md` mirror (content pages are prerendered even in\n * server output, so Astro middleware never sees them — the routing layer is\n * the only request-time hook). The adapter writes the config straight to the\n * root it was shown.\n */\nexport const emitVercelNegotiation = async (\n project: BlumeProject,\n log: BuildLog\n): Promise<void> => {\n const { config, context } = project;\n const configPath = join(buildOutputDir(context), \"config.json\");\n if (!existsSync(configPath)) {\n return;\n }\n const base = deploymentBase(project);\n const routePaths = markdownRoutePaths(project);\n // Keyed by the file's path in `static/`, under the base's directory.\n const overrides: Record<string, string> = {};\n if (hasApiCatalog(config)) {\n overrides[mountBasePath(base, API_CATALOG_PATH).slice(1)] =\n API_CATALOG_TYPE;\n }\n if (config.agents.webBotAuth.keys.length > 0) {\n overrides[mountBasePath(base, SIGNATURES_DIRECTORY_PATH).slice(1)] =\n SIGNATURES_DIRECTORY_TYPE;\n }\n // The homepage rewrite serves `/index.md` from the static layer, so its\n // `x-markdown-tokens` estimate has to ride the routing config; the runtime\n // endpoint stamps it on dev/server-rendered responses itself.\n const rawMarkdown = await buildRawMarkdown(project);\n const home = rawMarkdown[\"/\"];\n // The Markdown and JSON 404 routes point at the prerendered twins; only\n // wire each when the build actually emitted it (a project that owns `/404`\n // gets none).\n const builtDir = staticDir(context, base);\n const injected = injectNegotiationRoutes(\n await readFile(configPath, \"utf-8\"),\n routePaths,\n buildHomeLinkHeader(config, routePaths),\n overrides,\n home ? markdownTokenCount(agentMarkdown(home)) : undefined,\n {\n json: existsSync(join(builtDir, \"404.json\")),\n markdown: existsSync(join(builtDir, \"404.md\")),\n },\n crossOriginDiscoveryPaths(config),\n // Downloaded content assets are prerendered static files; only a build\n // that has them needs the SVG sandbox route.\n existsSync(join(builtDir, \"blume-assets\")),\n base,\n config.poweredBy\n );\n if (injected === null) {\n log.warn(\n \"Could not wire Accept: text/markdown negotiation into .vercel/output/config.json — raw Markdown stays available at the .md URLs.\"\n );\n return;\n }\n await writeFile(configPath, injected, \"utf-8\");\n log.success(\n \"Wired Accept: text/markdown negotiation into the Vercel routing config\"\n );\n};\n\n/**\n * Route the pattern redirects (`/beta/:slug*`) in the adapter's Build Output\n * config: Astro's `redirects` carry only the exact ones, since it can't\n * prerender a pattern's pages, so the adapter never sees these.\n */\nexport const emitVercelPatternRedirects = async (\n project: BlumeProject,\n log: BuildLog\n): Promise<void> => {\n const routes = vercelPatternRoutes(platformRedirects(project));\n const configPath = join(buildOutputDir(project.context), \"config.json\");\n if (routes.length === 0 || !existsSync(configPath)) {\n return;\n }\n const injected = injectRedirectRoutes(\n await readFile(configPath, \"utf-8\"),\n routes\n );\n if (injected === null) {\n log.warn(\n \"Could not route the pattern redirects in .vercel/output/config.json, so paths they cover answer 404.\"\n );\n return;\n }\n await writeFile(configPath, injected, \"utf-8\");\n};\n\ntype Redirect = ResolvedConfig[\"redirects\"][number];\n\n/**\n * The exact redirects as Build Output routes, matched the way the pattern ones\n * are (see `regexRedirect`): the served path, a trailing slash optional.\n */\nconst exactRedirectRoutes = (redirects: Redirect[]): VercelRoute[] =>\n redirects\n .filter((redirect) => !isPatternPath(redirect.from))\n .map(({ from, status, to }) => ({\n headers: { Location: encodeURI(to) },\n src: regexRedirect({ parts: [{ kind: \"text\", text: from }], status, to })\n .source,\n status,\n }));\n\n/**\n * Move a server build's static files under `deployment.base`.\n * `@astrojs/vercel` copies them to the root of the Build Output tree's\n * `static/`, while the pages request `<base>/_astro/…` and link to\n * `<base>/…`, so nothing the site asks for would be found. Moved to\n * `static/<base>/`, they're served at the base, as the routes that\n * {@link rebaseVercelRoutes} moves there expect.\n */\nexport const moveStaticUnderBase = async (\n context: ProjectContext,\n base: string\n): Promise<void> => {\n const root = staticDir(context, \"\");\n if (!base || !existsSync(root)) {\n return;\n }\n // Through a sibling, since the target lies inside the directory it moves.\n const staging = join(buildOutputDir(context), \"static-unbased\");\n await rename(root, staging);\n const target = staticDir(context, base);\n await mkdir(dirname(target), { recursive: true });\n await rename(staging, target);\n};\n\n/**\n * Move the adapter's routing config under `deployment.base` to match the\n * static files (see `rebaseAdapterRoutes`), its exact redirects rebuilt from\n * the configured ones. Resolves to false when the config can't be read: the\n * adapter's routes would then miss every path under the base.\n */\nexport const rebaseVercelRoutes = async (\n project: BlumeProject,\n log: BuildLog\n): Promise<boolean> => {\n const base = deploymentBase(project);\n const configPath = join(buildOutputDir(project.context), \"config.json\");\n if (!base || !existsSync(configPath)) {\n return true;\n }\n const rebased = rebaseAdapterRoutes(\n await readFile(configPath, \"utf-8\"),\n base,\n exactRedirectRoutes(platformRedirects(project))\n );\n if (rebased === null) {\n log.error(\n `Could not move the routes in .vercel/output/config.json under the deployment base \"${base}\", so the site would not be served there.`\n );\n return false;\n }\n await writeFile(configPath, rebased, \"utf-8\");\n return true;\n};\n\n/**\n * Vercel. A server build's Build Output tree lands at `.vercel/output` — at\n * the project root, because the adapter is handed that root up front: its\n * `@vercel/nft` dependency trace is rooted there too, and tracing from the\n * hidden runtime silently drops the function's chunks and `node_modules`.\n * Static assets are served from the tree's `static/` half, so the deploy\n * artifacts are written there; headers (the discovery files', the sandbox on\n * downloaded SVGs, `X-Powered-By`) arrive through the routing config rather\n * than a `_headers` file, which Vercel never reads. The adapter ignores\n * `deployment.base`, so under one the build moves the static files and the\n * routes beneath it.\n */\nexport const vercelPlatform: DeployPlatform = {\n astro: {\n config: () => ({}),\n configOptions: [],\n options: () => ({}),\n package: VERCEL_ADAPTER_PACKAGE,\n },\n env: {\n detect: (env) => Boolean(env.VERCEL),\n // The stable production domain wins over the per-deployment preview URL\n // so the inferred origin (sitemap, OG, RSS) stays put across deploys;\n // the chain falls through per resolved value, so an empty\n // VERCEL_PROJECT_PRODUCTION_URL doesn't dead-end it.\n site: (env) =>\n toSiteUrl(env.VERCEL_PROJECT_PRODUCTION_URL) ?? toSiteUrl(env.VERCEL_URL),\n },\n finalizeBuild: async ({ isolated, log, project }) => {\n const { context } = project;\n const ok = await checkVercelFunctionBundles(\n buildOutputDir(context),\n context.root,\n log\n );\n if (!ok) {\n return false;\n }\n // A verify build moves its static files too, where the budget gate reads\n // them (`serverStaticDir`).\n await moveStaticUnderBase(context, deploymentBase(project));\n // An isolated verify only proves the bundle would ship; the routing\n // config is a deploy artifact and stays untouched.\n if (isolated) {\n return true;\n }\n if (!(await rebaseVercelRoutes(project, log))) {\n return false;\n }\n await emitVercelNegotiation(project, log);\n await emitVercelPatternRedirects(project, log);\n return true;\n },\n hiddenRuntime: {\n ignoreDir: \".vercel/\",\n showProjectRoot: true,\n surfacePath: null,\n },\n kind: \"vercel\",\n negotiatesMarkdown: true,\n // @astrojs/vercel declares no preview entrypoint.\n previewDeploy: \"vercel deploy\",\n readsHeaderFiles: { server: false, static: false },\n redirectFiles: [VERCEL_JSON_FILE],\n serverClientUnderBase: false,\n serverOutputDir: buildOutputDir,\n serverStaticDir: staticDir,\n};\n",
206
208
  "import { existsSync, readFileSync } from \"node:fs\";\nimport { readdir, readFile } from \"node:fs/promises\";\nimport { builtinModules } from \"node:module\";\n\nimport { init, parse } from \"es-module-lexer\";\nimport { dirname, join, relative } from \"pathe\";\nimport { z } from \"zod\";\n\nimport {\n commandsFor,\n detectProjectPackageManager,\n} from \"../cli/init/scaffold.ts\";\nimport { packageRoot } from \"../core/package-root.ts\";\n\n/**\n * Post-build audit of a Vercel serverless function bundle.\n *\n * The Vercel adapter traces the server entry with `@vercel/nft` and copies\n * every file it reaches into `.vercel/output/functions/_render.func`. A bare\n * import the trace cannot resolve — a package that isn't reachable by walking\n * `node_modules` up from the chunk that imports it — is dropped *silently*,\n * and the deployed function dies on its first request with\n * `ERR_MODULE_NOT_FOUND` (Vercel reports it as `FUNCTION_INVOCATION_FAILED`).\n * Under an isolated linker (pnpm, Bun's `isolated` mode) that is exactly the\n * shape of Blume's own runtime dependencies: the SSR build leaves them\n * external, and they live under `blume`'s store directory, not the project\n * root. Nothing before deploy surfaces it — the build is green, a warm-cache\n * preview is green — so the bundle is re-checked here with Node's own\n * resolution rule: a package is present when some `node_modules/<name>` on\n * the walk from the importing chunk up to the function root exists.\n */\n\n/** A bare package import the function bundle cannot satisfy. */\nexport interface MissingPackage {\n /** Function-relative paths of the chunks that import the package. */\n importers: string[];\n name: string;\n}\n\n/** One function directory's audit result. */\nexport interface FunctionBundleAudit {\n /** Absolute path of the `*.func` directory. */\n dir: string;\n missing: MissingPackage[];\n}\n\nconst BUILTINS = new Set(builtinModules);\n\n/** Specifier prefixes that never name an installed package. */\nconst NON_PACKAGE_PREFIXES = [\"node:\", \"astro:\", \"virtual:\", \"data:\", \"\\0\"];\n\n/**\n * The package a bare specifier resolves through (`@scope/name` or `name`), or\n * null for relative/absolute paths, Node builtins, and virtual ids.\n */\nexport const packageName = (specifier: string): string | null => {\n if (\n specifier.startsWith(\".\") ||\n specifier.startsWith(\"/\") ||\n NON_PACKAGE_PREFIXES.some((prefix) => specifier.startsWith(prefix)) ||\n BUILTINS.has(specifier)\n ) {\n return null;\n }\n const segments = specifier.split(\"/\");\n if (specifier.startsWith(\"@\")) {\n return segments.length >= 2 ? `${segments[0]}/${segments[1]}` : null;\n }\n return segments[0] || null;\n};\n\n/**\n * Fallback static specifiers for a module the lexer rejects: a side-effect\n * `import \"x\"` or an `import`/`export … from \"x\"` clause. Only `import` takes\n * the bare-string form — `export \"x\"` is not syntax, so a runtime message\n * quoting `export 'ALL'` must not match.\n */\nconst STATIC_IMPORT =\n /(?:^|[;\\s}])(?:import\\s*[\"'](?<bare>[^\"'\\n]+)[\"']|(?:import|export)\\s*[\\w$*{},\\s]*?\\s*from\\s*[\"'](?<from>[^\"'\\n]+)[\"'])/gu;\n\n/** Fallback dynamic `import(\"…\")` specifiers. */\nconst DYNAMIC_IMPORT = /\\bimport\\(\\s*[\"'](?<dynamic>[^\"'\\n]+)[\"']\\s*\\)/gu;\n\n/**\n * Textual best effort for a module `es-module-lexer` cannot parse: every\n * quoted specifier in import position, string contents included.\n */\nconst scannedSpecifiers = (source: string): string[] => {\n const specifiers: string[] = [];\n for (const pattern of [STATIC_IMPORT, DYNAMIC_IMPORT]) {\n for (const match of source.matchAll(pattern)) {\n const groups = match.groups ?? {};\n specifiers.push(groups.bare ?? groups.from ?? groups.dynamic ?? \"\");\n }\n }\n return specifiers;\n};\n\n/**\n * Every specifier a module's syntax imports, read with `es-module-lexer` so\n * text inside string literals never counts. That matters for Blume's data\n * chunks: the MCP snapshot is `JSON.parse(\"…\")` over every page's Markdown,\n * and a code sample there reading `import { config } from 'dotenv'` is prose\n * to a bundle audit, not a module the function needs. `import.meta` carries no\n * specifier and a template-literal `import(\\`pkg/${x}\\`)` is a glob the\n * bundler already resolved, so neither names a package.\n */\nconst lexedSpecifiers = (source: string, name: string): string[] => {\n const [imports] = parse(source, name);\n const specifiers: string[] = [];\n for (const entry of imports) {\n if (entry.type === \"dynamic\" && entry.glob) {\n continue;\n }\n if (entry.specifier) {\n specifiers.push(entry.specifier);\n }\n }\n return specifiers;\n};\n\n/**\n * Every bare package name a module's source imports. A module the lexer\n * rejects (an unterminated string, an invalid escape in a specifier) falls\n * back to the textual scan rather than going unaudited.\n */\nexport const importedPackages = async (\n source: string,\n name = \"module\"\n): Promise<string[]> => {\n await init();\n let specifiers: string[];\n try {\n specifiers = lexedSpecifiers(source, name);\n } catch {\n specifiers = scannedSpecifiers(source);\n }\n const names = new Set<string>();\n for (const specifier of specifiers) {\n const packageId = packageName(specifier);\n if (packageId) {\n names.add(packageId);\n }\n }\n return [...names];\n};\n\n/** Whether `node_modules/<name>` exists on the walk from `from` up to `root`. */\nconst resolvable = (name: string, from: string, root: string): boolean => {\n let dir = from;\n for (;;) {\n if (existsSync(join(dir, \"node_modules\", name, \"package.json\"))) {\n return true;\n }\n if (dir === root) {\n return false;\n }\n const parent = dirname(dir);\n if (parent === dir) {\n return false;\n }\n dir = parent;\n }\n};\n\nconst MODULE_FILE = /\\.(?:m?js|cjs)$/u;\n\n/** The one `.vc-config.json` field the audit reads; the rest passes through. */\nconst vcConfigSchema = z.looseObject({ handler: z.string().optional() });\n\n/** Every JavaScript module under `dir`, skipping any `node_modules`. */\nconst listModules = async (dir: string): Promise<string[]> => {\n const files: string[] = [];\n const entries = await readdir(dir, { withFileTypes: true });\n for (const entry of entries) {\n const path = join(dir, entry.name);\n if (entry.isDirectory()) {\n if (entry.name !== \"node_modules\") {\n // oxlint-disable-next-line no-await-in-loop -- sequential walk keeps ordering deterministic\n files.push(...(await listModules(path)));\n }\n } else if (entry.isFile() && MODULE_FILE.test(entry.name)) {\n files.push(path);\n }\n }\n return files;\n};\n\n/**\n * Audit one function directory: read its `.vc-config.json` handler, scan\n * every module beside the handler (the adapter's `dist/server` tree) for bare\n * imports, and report the packages no `node_modules` on the walk up to the\n * function root provides. A function without a handler has nothing to check.\n */\nexport const auditFunctionBundle = async (\n funcDir: string\n): Promise<MissingPackage[]> => {\n const configPath = join(funcDir, \".vc-config.json\");\n if (!existsSync(configPath)) {\n return [];\n }\n const config = vcConfigSchema.safeParse(\n JSON.parse(await readFile(configPath, \"utf-8\"))\n );\n if (!config.success || !config.data.handler) {\n return [];\n }\n const serverDir = dirname(join(funcDir, config.data.handler));\n if (!existsSync(serverDir)) {\n return [];\n }\n const missing = new Map<string, string[]>();\n for (const file of await listModules(serverDir)) {\n // oxlint-disable-next-line no-await-in-loop -- sequential read keeps the importer lists ordered\n const source = await readFile(file, \"utf-8\");\n // oxlint-disable-next-line no-await-in-loop -- the lexer runs per file, in the same order\n for (const name of await importedPackages(source, file)) {\n if (resolvable(name, dirname(file), funcDir)) {\n continue;\n }\n const importers = missing.get(name) ?? [];\n importers.push(relative(funcDir, file));\n missing.set(name, importers);\n }\n }\n return [...missing]\n .map(([name, importers]) => ({ importers, name }))\n .toSorted((a, b) => a.name.localeCompare(b.name));\n};\n\n/**\n * Audit every function in a Vercel Build Output tree (`.vercel/output`).\n * Functions with nothing missing are omitted; an output tree without a\n * `functions/` directory (a static build) yields nothing.\n */\nexport const auditVercelFunctions = async (\n outputDir: string\n): Promise<FunctionBundleAudit[]> => {\n const functionsDir = join(outputDir, \"functions\");\n if (!existsSync(functionsDir)) {\n return [];\n }\n const audits: FunctionBundleAudit[] = [];\n const entries = await readdir(functionsDir, { withFileTypes: true });\n for (const entry of entries.toSorted((a, b) => (a.name < b.name ? -1 : 1))) {\n if (!(entry.isDirectory() && entry.name.endsWith(\".func\"))) {\n continue;\n }\n const dir = join(functionsDir, entry.name);\n // oxlint-disable-next-line no-await-in-loop -- sequential audit keeps the report ordered\n const missing = await auditFunctionBundle(dir);\n if (missing.length > 0) {\n audits.push({ dir, missing });\n }\n }\n return audits;\n};\n\n/** Blume's own runtime dependency names, from its published `package.json`. */\nexport const blumeDependencyNames = (): Set<string> => {\n const manifest: { dependencies?: Record<string, string> } = JSON.parse(\n readFileSync(join(packageRoot(), \"package.json\"), \"utf-8\")\n );\n return new Set(Object.keys(manifest.dependencies ?? {}));\n};\n\n/** What a build should do about an audit: nothing, warn, or fail. */\nexport interface FunctionBundleVerdict {\n /**\n * A missing package is one of Blume's own dependencies — the runtime Blume\n * generated imports it, so the function is certain to crash. Anything else\n * (a project's own external import) is reported but left to the author.\n */\n fatal: boolean;\n message: string;\n}\n\n/**\n * The command that adds a dev dependency with the project's package manager\n * (`pnpm add -D`, `npm install -D`, …), for the fix a verdict prints. The\n * missing packages are an isolated-linker problem, so the project is often\n * not on npm at all.\n */\nexport const addDevDependencyCommand = async (root: string): Promise<string> =>\n `${commandsFor(await detectProjectPackageManager(root)).add} -D`;\n\n/**\n * Describe a function's missing packages and how to fix them. Vercel's trace\n * only reaches packages resolvable from the project root, so the remedy is a\n * root-level dependency entry for each — the same mirror rule Blume's native\n * dependencies (`sharp`, `takumi-js`) already follow — added with\n * `addDevCommand` (see {@link addDevDependencyCommand}).\n */\nexport const functionBundleVerdict = (\n audit: FunctionBundleAudit,\n root: string,\n ownDependencies: ReadonlySet<string>,\n addDevCommand = \"npm install -D\"\n): FunctionBundleVerdict => {\n const names = audit.missing.map((entry) => entry.name);\n const lines = audit.missing.map(\n (entry) => ` - ${entry.name} (imported by ${entry.importers.join(\", \")})`\n );\n const fatal = names.some((name) => ownDependencies.has(name));\n const message = [\n `The Vercel function bundle at ${relative(root, audit.dir) || audit.dir} is missing packages its server code imports, so the deployed function would fail on every request with ERR_MODULE_NOT_FOUND:`,\n ...lines,\n \"Vercel's dependency trace only includes packages resolvable from the project root; under an isolated linker (pnpm, Bun's isolated mode) Blume's own dependencies are not. Add them to the project's package.json so the trace can find them:\",\n ` ${addDevCommand} ${names.join(\" \")}`,\n ].join(\"\\n\");\n return { fatal, message };\n};\n",
207
- "/**\n * `Accept: text/markdown` content negotiation for Vercel server builds.\n *\n * Blume prerenders every content page — even in a server build (`deployment:\n * vercel()`) — so a page request never reaches Astro middleware: Vercel serves\n * the prerendered HTML straight from its static layer. Request-time negotiation\n * therefore has to live in the platform's routing config. The Vercel adapter\n * emits a Build Output API `config.json`; these helpers splice extra routes\n * into it so a content-page request that prefers `text/markdown` is rewritten\n * (not redirected) to the page's prerendered `.md` mirror — the deployed\n * counterpart of the dev-server rewrite in `astro/markdown-negotiation.ts`.\n * The same routing config also answers a *missing* page: a request that\n * prefers Markdown (or asks for a `.md` URL no page backs) gets the\n * prerendered Markdown 404 body with the 404 status, instead of the HTML\n * shell, and one that prefers JSON (or asks for a `.json` URL) gets the\n * prerendered problem-details 404.\n *\n * Under `deployment.base` every route here matches the served URL, base\n * included, and names the files where Blume moves them (`static/<base>/`, see\n * {@link rebaseAdapterRoutes}); `base` is the normalized base, `\"\"` for none.\n */\n\nimport { mountBasePath } from \"../core/base-path.ts\";\nimport { SVG_ASSET_HEADERS } from \"./headers.ts\";\n\n/*\n * The `accept` header conditions. Dev and the Cloudflare Worker negotiate the\n * way `prefersMarkdown` (`astro/markdown-negotiation.ts`) does: media types in\n * any case, and Markdown only when its q-value is above zero and at least\n * HTML's. A routing condition is a regex over the whole header, with no\n * arithmetic, so the comparison is spelled as two routes per rewrite:\n *\n * - a Markdown entry at full weight (no q-value, or `q=1`) always wins, since\n * nothing can outrank it;\n * - a Markdown entry below full weight wins only when the header has no\n * `text/html` entry above zero (a `missing` condition), since two q-values\n * below 1 can't be compared. That case, like `text/markdown;q=0.9,\n * text/html;q=0.8`, gets HTML on Vercel where dev and Cloudflare send\n * Markdown.\n *\n * Every pattern is anchored at both ends and lets `(?:.*,)?` absorb the\n * earlier list entries, so it holds under full-string and substring matching\n * alike. Case-insensitivity is spelled out letter by letter and the patterns\n * are lookaround-free, so they read the same in RE2, PCRE, and JavaScript.\n * Like dev, only the first `q=` parameter of an entry counts, and a `q=`\n * value is read as a decimal. Browsers never send `text/markdown`, so\n * ordinary page requests are unaffected.\n */\n\n/** `word` in any case, one character class per letter: `[Tt][Ee][Xx][Tt]`. */\nconst anyCase = (word: string): string =>\n word.replaceAll(/[a-z]/gu, (letter) => `[${letter.toUpperCase()}${letter}]`);\n\n/** An entry's parameters before its first `q=`: any that isn't one. */\nconst OTHER_PARAMS = String.raw`(?:;\\s*(?:[^\\sq;,][^;,]*|q(?:[^=;,][^;,]*)?)?)*`;\n\n/** Everything after an entry's first `q=` value, up to the next entry. */\nconst LATER_PARAMS = \"(?:;[^,]*)?\";\n\n/** A `q=` value of 1 or more: full weight. */\nconst FULL_WEIGHT = String.raw`0*[1-9][0-9]*(?:\\.[0-9]*)?`;\n\n/** A `q=` value above zero and below 1. */\nconst PARTIAL_WEIGHT = String.raw`0*\\.[0-9]*[1-9][0-9]*`;\n\n/** A `q=` value that isn't zero: it has a character besides `0` and `.`. */\nconst NONZERO_WEIGHT = String.raw`[\\s0.]*[^\\s0.;,][^;,]*`;\n\n/** A header with an entry of `type` weighed by `weight`, or by no `q=` when it's optional. */\nconst acceptEntry = (type: string, weight: string, optional: boolean) =>\n String.raw`^(?:.*,)?\\s*${type}\\s*${OTHER_PARAMS}(?:;\\s*q=\\s*${weight}\\s*${LATER_PARAMS})${optional ? \"?\" : \"\"}(?:,.*)?$`;\n\n/** A header with a `type` entry at full weight. */\nconst fullWeight = (type: string) => acceptEntry(type, FULL_WEIGHT, true);\n\n/** A header with a `type` entry weighed above zero and below 1. */\nconst partialWeight = (type: string) =>\n acceptEntry(type, PARTIAL_WEIGHT, false);\n\n/** A header with a `text/html` entry weighed above zero. */\nconst ACCEPT_HTML = acceptEntry(anyCase(\"text/html\"), NONZERO_WEIGHT, true);\n\nconst MARKDOWN_TYPE = `${anyCase(\"text/\")}(?:${anyCase(\"x-\")})?${anyCase(\"markdown\")}`;\n\nconst JSON_TYPE = `${anyCase(\"application/\")}(?:${anyCase(\"problem\")}\\\\+)?${anyCase(\"json\")}`;\n\n/** One header condition on a Build Output route. */\nexport interface VercelCondition {\n key?: string;\n type: string;\n value?: string;\n}\n\n/** The conditions of one route: all of `has`, none of `missing`. */\nexport interface AcceptConditions {\n has: VercelCondition[];\n missing?: VercelCondition[];\n}\n\nconst accept = (value: string): VercelCondition => ({\n key: \"accept\",\n type: \"header\",\n value,\n});\n\n/** The pair of conditions a route answering `type` is written once for each. */\nconst preferring = (type: string): AcceptConditions[] => [\n { has: [accept(fullWeight(type))] },\n { has: [accept(partialWeight(type))], missing: [accept(ACCEPT_HTML)] },\n];\n\n/** When a client prefers `text/markdown` (or `text/x-markdown`) over HTML. */\nexport const ACCEPT_MARKDOWN_CONDITIONS = preferring(MARKDOWN_TYPE);\n\n/**\n * The JSON counterpart, for the problem-details 404: `application/json` or\n * `application/problem+json`. Browsers never send either on a navigation\n * (the catch-all wildcard does not match), so ordinary page requests are\n * unaffected.\n */\nexport const ACCEPT_JSON_CONDITIONS = preferring(JSON_TYPE);\n\n/**\n * A Build Output API route — the subset these helpers read and write. Parsed\n * routes keep whatever other fields they carry at runtime; only these are\n * typed.\n */\nexport interface VercelRoute {\n continue?: boolean;\n dest?: string;\n handle?: string;\n has?: VercelCondition[];\n headers?: Record<string, string>;\n missing?: VercelCondition[];\n src?: string;\n status?: number;\n}\n\n/** `route` once per condition pair, so it fires when either holds. */\nconst conditioned = (\n route: VercelRoute,\n conditions: readonly AcceptConditions[]\n): VercelRoute[] => conditions.map((condition) => ({ ...route, ...condition }));\n\n/** Whether a parsed route field is a real string (the config is raw JSON). */\nconst isString = (value: string | undefined): value is string =>\n typeof value === \"string\";\n\n/** The Markdown conditions' `has` values, to recognize a route this module wrote. */\nconst MARKDOWN_VALUES = new Set(\n ACCEPT_MARKDOWN_CONDITIONS.flatMap(({ has }) =>\n has.map((condition) => condition.value)\n )\n);\n\nconst VARY_ACCEPT = { vary: \"Accept\" };\n\n/** Where the prerendered Markdown 404 (`pages/404.md.ts`) lands. */\nconst NOT_FOUND_MARKDOWN_DEST = \"/404.md\";\n\n/** Where the prerendered JSON 404 (`pages/404.json.ts`) lands. */\nconst NOT_FOUND_JSON_DEST = \"/404.json\";\n\n/** The adapter's own not-found fallback — the anchor the Markdown 404 precedes. */\nconst NOT_FOUND_HTML_DEST = \"/404.html\";\n\n/** Which prerendered 404 twins the build emitted, so their routes get wired. */\nexport interface NotFoundVariants {\n json?: boolean;\n markdown?: boolean;\n}\n\n/**\n * Vercel rejects route `src` patterns longer than 4096 characters, so route\n * alternations are split across as many route entries as needed. The budget\n * leaves headroom for the `^(` … `)/?$` wrapper.\n */\nconst MAX_ALTERNATION_LENGTH = 3900;\n\nconst REGEX_SPECIALS = /[$()*+.?[\\]^{|}\\\\]/gu;\n\n/**\n * A route path as it appears on the wire (percent-encoded, matching the layout\n * of the prerendered files), escaped for literal use inside the alternation.\n * Escaping runs after encoding; the `%` an encode introduces is not a regex\n * metacharacter.\n */\nconst routePattern = (route: string): string =>\n encodeURI(route).replace(REGEX_SPECIALS, \"\\\\$&\");\n\n/**\n * The `src` matching the homepage: `^/$`, or the base itself under one, served\n * without a trailing slash (the adapter's trailing-slash route strips it).\n */\nconst homeSource = (base: string): string =>\n `^${routePattern(mountBasePath(base, \"/\"))}$`;\n\n/**\n * Miss-phase routes that answer a missing page with the Markdown 404 body: any\n * path when the client prefers Markdown, and any `.md`/`.mdx` URL (a request\n * for a raw-Markdown mirror that has no page wants Markdown back, not the HTML\n * shell). Both keep the 404 status. Spliced immediately before the adapter's\n * `/404.html` fallback, so they run after every server route (the MCP\n * endpoint, server islands, images) has had its turn and never hijack a\n * request one of those would have answered.\n */\nconst notFoundMarkdownRoutes = (base: string): VercelRoute[] => {\n const dest = mountBasePath(base, NOT_FOUND_MARKDOWN_DEST);\n const prefix = routePattern(base);\n return [\n ...conditioned(\n { dest, headers: VARY_ACCEPT, src: `^${prefix}/.*$`, status: 404 },\n ACCEPT_MARKDOWN_CONDITIONS\n ),\n { dest, src: `^${prefix}/.*\\\\.mdx?$`, status: 404 },\n ];\n};\n\n/**\n * The JSON 404's miss-phase routes, the problem-details twin of the Markdown\n * ones: any path when the client prefers JSON, and any `.json` URL no file\n * backs. Spliced at the same anchor, after every server route — so the\n * `/api/` catch-all (which answers its own namespace with a problem document)\n * has already had its turn.\n */\nconst notFoundJsonRoutes = (base: string): VercelRoute[] => {\n const dest = mountBasePath(base, NOT_FOUND_JSON_DEST);\n const prefix = routePattern(base);\n return [\n ...conditioned(\n { dest, headers: VARY_ACCEPT, src: `^${prefix}/.*$`, status: 404 },\n ACCEPT_JSON_CONDITIONS\n ),\n { dest, src: `^${prefix}/.*\\\\.json$`, status: 404 },\n ];\n};\n\n/** Group patterns so each group's alternation stays under the `src` limit. */\nconst chunkPatterns = (patterns: readonly string[]): string[][] => {\n const chunks: string[][] = [];\n let current: string[] = [];\n let length = 0;\n for (const pattern of patterns) {\n if (\n current.length > 0 &&\n length + pattern.length + 1 > MAX_ALTERNATION_LENGTH\n ) {\n chunks.push(current);\n current = [];\n length = 0;\n }\n current.push(pattern);\n length += pattern.length + 1;\n }\n if (current.length > 0) {\n chunks.push(current);\n }\n return chunks;\n};\n\nexport interface NegotiationRoutes {\n /**\n * `Vary: Accept` for the plain-HTML side of every negotiated URL, so shared\n * caches keep the two variants apart. Spliced *before* `handle:\n * \"filesystem\"` with `continue`: main-phase headers accumulate and ride on\n * whatever ultimately serves the request. Routes placed after the filesystem\n * marker are the miss phase — they run only when no static file matches, and\n * every Blume content page is a prerendered static file, so a header route\n * there never fires.\n */\n headerRoutes: VercelRoute[];\n /**\n * The negotiation itself: header-conditional rewrites to the `.md` mirror.\n * Spliced *before* `handle: \"filesystem\"` so they run ahead of static-file\n * matching; the rewritten path then resolves to the prerendered `.md` file.\n */\n rewriteRoutes: VercelRoute[];\n}\n\n/**\n * Build the routes for the given content-route paths (the routes that have a\n * raw-Markdown mirror, straight from the manifest). Paths are matched with an\n * optional trailing slash and rewritten `/{route}` → `/{route}.md`; the home\n * page's mirror lives at `/index.md`. When `homeTokens` is given, the home\n * rewrite also stamps `x-markdown-tokens` — the estimated token count of the\n * homepage mirror (Cloudflare's Markdown for Agents convention). Only the home\n * route can carry it: the other rewrites are chunked alternations spanning\n * many pages, and a count is per-page. Under a `base`, each path is matched\n * and rewritten where it's served (`/docs` → `/docs/index.md`).\n */\nexport const buildNegotiationRoutes = (\n routePaths: readonly string[],\n homeTokens?: number,\n base = \"\"\n): NegotiationRoutes => {\n const home = routePaths.includes(\"/\");\n const rest = routePaths\n .filter((path) => path !== \"/\")\n .map((path) => routePattern(mountBasePath(base, path)));\n const chunks = chunkPatterns(rest);\n\n const rewriteRoutes: VercelRoute[] = home\n ? conditioned(\n {\n dest: mountBasePath(base, \"/index.md\"),\n headers:\n homeTokens === undefined\n ? VARY_ACCEPT\n : { ...VARY_ACCEPT, \"x-markdown-tokens\": String(homeTokens) },\n src: homeSource(base),\n },\n ACCEPT_MARKDOWN_CONDITIONS\n )\n : [];\n for (const chunk of chunks) {\n rewriteRoutes.push(\n ...conditioned(\n {\n dest: \"$1.md\",\n headers: VARY_ACCEPT,\n src: `^(${chunk.join(\"|\")})/?$`,\n },\n ACCEPT_MARKDOWN_CONDITIONS\n )\n );\n }\n\n const headerChunks = chunkPatterns(\n home ? [routePattern(mountBasePath(base, \"/\")), ...rest] : rest\n );\n const headerRoutes: VercelRoute[] = headerChunks.map((chunk) => ({\n continue: true,\n headers: VARY_ACCEPT,\n src: `^(?:${chunk.join(\"|\")})/?$`,\n }));\n\n return { headerRoutes, rewriteRoutes };\n};\n\nconst ALLOW_ANY_ORIGIN = \"*\";\n\n/**\n * A main-phase `continue` route stamping `Access-Control-Allow-Origin: *` on\n * one static discovery document (see `crossOriginDiscoveryPaths`), so a\n * registry reading it from another origin isn't refused by the browser.\n */\nconst corsRoute = (path: string, base: string): VercelRoute => ({\n continue: true,\n headers: { \"access-control-allow-origin\": ALLOW_ANY_ORIGIN },\n src: `^${routePattern(mountBasePath(base, path))}$`,\n});\n\n/**\n * The `src` of the route stamping the content-source SVG headers: every `.svg`\n * under `/blume-assets/`.\n */\nconst svgAssetSource = (base: string): string =>\n String.raw`^${routePattern(base)}/blume-assets/.+\\.svg$`;\n\n/**\n * A main-phase `continue` route stamping the sandbox headers\n * (`deploy/headers.ts`) on a downloaded SVG, which Vercel serves from the\n * static layer — where the prerendered asset endpoint's own headers never\n * reach.\n */\nconst svgAssetRoute = (base: string): VercelRoute => ({\n continue: true,\n headers: Object.fromEntries(\n Object.entries(SVG_ASSET_HEADERS).map(([name, value]) => [\n name.toLowerCase(),\n value,\n ])\n ),\n src: svgAssetSource(base),\n});\n\n/** Whether a route is a `corsRoute` — the same three-field shape test as the others. */\nconst isCorsRoute = (route: VercelRoute): boolean =>\n route.continue === true &&\n route.headers?.[\"access-control-allow-origin\"] === ALLOW_ANY_ORIGIN &&\n isString(route.src) &&\n Object.keys(route).length === 3;\n\n/**\n * Whether a route is one this module previously injected, so re-injection\n * replaces rather than duplicates. Rewrites are identified by their `accept`\n * condition; the `Vary` routes by their exact three-field shape (a\n * user-authored route of that identical shape would be semantically equal to\n * the one re-added); the homepage `Link` route by its three-field\n * continue-with-link shape (the Build Output config is adapter-generated, so\n * no user-authored route competes in this file); the Markdown 404 routes by\n * their `/404.md` destination.\n */\nconst isNegotiationRoute = (route: VercelRoute, base: string): boolean =>\n route.has?.some((condition) => MARKDOWN_VALUES.has(condition.value)) ===\n true ||\n (route.dest === mountBasePath(base, NOT_FOUND_MARKDOWN_DEST) &&\n route.status === 404) ||\n (route.dest === mountBasePath(base, NOT_FOUND_JSON_DEST) &&\n route.status === 404) ||\n (route.continue === true &&\n route.headers?.vary === \"Accept\" &&\n isString(route.src) &&\n Object.keys(route).length === 3) ||\n (route.continue === true &&\n isString(route.headers?.link) &&\n route.src === homeSource(base) &&\n Object.keys(route).length === 3) ||\n isCorsRoute(route) ||\n (route.continue === true && route.src === svgAssetSource(base));\n\n/**\n * Splice the negotiation routes into a Build Output `config.json`, plus — when\n * given — a homepage `Link` header route for agent discovery (see\n * `ai/link-headers.ts`), applied the same way the `Vary` routes are: in the\n * main phase before `handle: \"filesystem\"` with `continue`, so the header\n * rides on the prerendered homepage response. `contentTypeOverrides` maps static-dir\n * relative paths to media types via the Build Output `overrides` field — the\n * platform's mechanism for extensionless static files (e.g. the Web Bot Auth\n * signature directory). The trailing-slash redirect that collapses `/docs/`\n * onto `/docs` is not spliced here: the generated config sets Astro's\n * `trailingSlash: \"never\"`, which the adapter turns into the platform's own\n * 308 route ahead of everything below (so a slashed Markdown request takes\n * that hop first, then negotiates). For each 404 twin the build emitted (`notFound.markdown` for\n * `404.md`, `notFound.json` for `404.json`), its routes go into the miss\n * phase right before the adapter's `/404.html` fallback — and nowhere when\n * that fallback is absent, since a `dest` with no file behind it would serve\n * nothing. With `svgAssets`, a main-phase route also sandboxes the SVGs a\n * content source downloaded (see {@link svgAssetRoute}). Under a `base`, every\n * route matches and names paths beneath it, and the fallback anchor is the\n * one {@link rebaseAdapterRoutes} moved there. Returns the updated JSON\n * text (tab-indented, like the adapter's own output), or `null` when there is\n * nowhere safe to splice: an unparsable config, no `routes` array, or no\n * `handle: \"filesystem\"` marker to anchor the splice.\n */\nexport const injectNegotiationRoutes = (\n configText: string,\n routePaths: readonly string[],\n homeLinkHeader?: string | null,\n contentTypeOverrides?: Record<string, string>,\n homeTokens?: number,\n notFound: NotFoundVariants = {},\n corsPaths: readonly string[] = [],\n svgAssets = false,\n base = \"\"\n): string | null => {\n const overrideEntries = Object.entries(contentTypeOverrides ?? {});\n let config: {\n overrides?: Record<string, { contentType?: string; path?: string }>;\n routes?: VercelRoute[];\n };\n try {\n config = JSON.parse(configText);\n } catch {\n return null;\n }\n if (!Array.isArray(config.routes)) {\n return null;\n }\n for (const [path, contentType] of overrideEntries) {\n // Keyed assignment, so re-injection replaces rather than duplicates and a\n // user's own override of the same path is simply refreshed.\n config.overrides = { ...config.overrides, [path]: { contentType } };\n }\n const routes = config.routes.filter(\n (route) => !isNegotiationRoute(route, base)\n );\n const filesystemIndex = routes.findIndex(\n (route) => route.handle === \"filesystem\"\n );\n if (filesystemIndex === -1) {\n return null;\n }\n const { headerRoutes, rewriteRoutes } = buildNegotiationRoutes(\n routePaths,\n homeTokens,\n base\n );\n if (homeLinkHeader) {\n headerRoutes.push({\n continue: true,\n headers: { link: homeLinkHeader },\n src: homeSource(base),\n });\n }\n headerRoutes.push(...corsPaths.map((path) => corsRoute(path, base)));\n if (svgAssets) {\n headerRoutes.push(svgAssetRoute(base));\n }\n // Headers first: `continue` routes accumulate, so a request the rewrite\n // route then terminates (Markdown negotiation on the homepage) still carries\n // the Link header.\n routes.splice(filesystemIndex, 0, ...headerRoutes, ...rewriteRoutes);\n const notFoundRoutes = [\n ...(notFound.markdown ? notFoundMarkdownRoutes(base) : []),\n ...(notFound.json ? notFoundJsonRoutes(base) : []),\n ];\n if (notFoundRoutes.length > 0) {\n const fallbackDest = mountBasePath(base, NOT_FOUND_HTML_DEST);\n const fallbackIndex = routes.findIndex(\n (route) => route.status === 404 && route.dest === fallbackDest\n );\n if (fallbackIndex !== -1) {\n routes.splice(fallbackIndex, 0, ...notFoundRoutes);\n }\n }\n config.routes = routes;\n return `${JSON.stringify(config, null, \"\\t\")}\\n`;\n};\n\n/**\n * Splice routes for the pattern redirects (see `vercelPatternRoutes`) into a\n * Build Output `config.json`, in the main phase just ahead of\n * `handle: \"filesystem\"`: after the exact redirects the adapter puts first,\n * so an exact path still wins. A second pass replaces its own routes. Returns\n * the updated JSON text, or `null` when there is nowhere safe to splice: an\n * unparsable config, no `routes` array, or no `handle: \"filesystem\"` marker.\n */\nexport const injectRedirectRoutes = (\n configText: string,\n redirectRoutes: readonly VercelRoute[]\n): string | null => {\n let config: { routes?: VercelRoute[] };\n try {\n config = JSON.parse(configText);\n } catch {\n return null;\n }\n if (!Array.isArray(config.routes)) {\n return null;\n }\n const ours = new Set(redirectRoutes.map((route) => route.src));\n const routes = config.routes.filter(\n (route) => !(ours.has(route.src) && isString(route.headers?.Location))\n );\n const filesystemIndex = routes.findIndex(\n (route) => route.handle === \"filesystem\"\n );\n if (filesystemIndex === -1) {\n return null;\n }\n routes.splice(filesystemIndex, 0, ...redirectRoutes);\n config.routes = routes;\n return `${JSON.stringify(config, null, \"\\t\")}\\n`;\n};\n\n/**\n * The trailing-slash route `trailingSlash: \"never\"` gives the adapter's config\n * (`^/(.*)/$` → `/$1`): it keeps whatever path it strips the slash from, base\n * and all, so it already serves a based site.\n */\nconst isTrailingSlashRoute = (route: VercelRoute): boolean =>\n route.headers?.Location === \"/$1\";\n\n/** The pattern body of the root route, anchored (`^/$`) or not (`/`). */\nconst ROOT_BODY = /^\\/\\$?$/u;\n\n/**\n * Re-anchor an adapter route pattern under the base, whose escaped form is\n * `prefix`: each matches a base-less path from its start, and the root route\n * becomes the base itself, served without a trailing slash.\n */\nconst rebaseSource = (src: string, prefix: string): string => {\n const body = src.startsWith(\"^\") ? src.slice(1) : src;\n return `^${prefix}${ROOT_BODY.test(body) ? \"$\" : body}`;\n};\n\n/**\n * Move the adapter's routes under `deployment.base`, to match the static files\n * Blume moves to `static/<base>/`. `@astrojs/vercel` routes a server build as\n * if it were served from the root: its route patterns (the `_astro/` cache\n * header, every server route) match base-less paths, its 404 fallback names\n * `/404.html`, and it joins the base onto each redirect with no slash on the\n * `from` side and a second time on the `to` side, which Astro hands it\n * already based (`^/docsold$` → `/docs/docs/new`). Each pattern is\n * re-anchored under the base and the fallback names the base's `404.html`;\n * the adapter's redirects make way for `redirectRoutes`, the exact redirects\n * as the host matches them. Returns the updated JSON text, or `null` when\n * there is nowhere safe to splice: an unparsable config, no `routes` array,\n * or no `handle: \"filesystem\"` marker.\n */\nexport const rebaseAdapterRoutes = (\n configText: string,\n base: string,\n redirectRoutes: readonly VercelRoute[]\n): string | null => {\n let config: { routes?: VercelRoute[] };\n try {\n config = JSON.parse(configText);\n } catch {\n return null;\n }\n if (!Array.isArray(config.routes)) {\n return null;\n }\n const filesystemIndex = config.routes.findIndex(\n (route) => route.handle === \"filesystem\"\n );\n if (filesystemIndex === -1) {\n return null;\n }\n const prefix = routePattern(base);\n const routes = config.routes.flatMap((route, index): VercelRoute[] => {\n // Ahead of the filesystem handler, the adapter writes its redirects and\n // nothing else with a `Location`.\n if (index < filesystemIndex && isString(route.headers?.Location)) {\n return isTrailingSlashRoute(route) ? [route] : [];\n }\n const rebased = { ...route };\n if (isString(route.src)) {\n rebased.src = rebaseSource(route.src, prefix);\n }\n if (route.status === 404 && route.dest === NOT_FOUND_HTML_DEST) {\n rebased.dest = mountBasePath(base, NOT_FOUND_HTML_DEST);\n }\n return [rebased];\n });\n routes.splice(\n routes.findIndex((route) => route.handle === \"filesystem\"),\n 0,\n ...redirectRoutes\n );\n config.routes = routes;\n return `${JSON.stringify(config, null, \"\\t\")}\\n`;\n};\n",
209
+ "/**\n * `Accept: text/markdown` content negotiation for Vercel server builds.\n *\n * Blume prerenders every content page — even in a server build (`deployment:\n * vercel()`) — so a page request never reaches Astro middleware: Vercel serves\n * the prerendered HTML straight from its static layer. Request-time negotiation\n * therefore has to live in the platform's routing config. The Vercel adapter\n * emits a Build Output API `config.json`; these helpers splice extra routes\n * into it so a content-page request that prefers `text/markdown` is rewritten\n * (not redirected) to the page's prerendered `.md` mirror — the deployed\n * counterpart of the dev-server rewrite in `astro/markdown-negotiation.ts`.\n * The same routing config also answers a *missing* page: a request that\n * prefers Markdown (or asks for a `.md` URL no page backs) gets the\n * prerendered Markdown 404 body with the 404 status, instead of the HTML\n * shell, and one that prefers JSON (or asks for a `.json` URL) gets the\n * prerendered problem-details 404.\n *\n * Under `deployment.base` every route here matches the served URL, base\n * included, and names the files where Blume moves them (`static/<base>/`, see\n * {@link rebaseAdapterRoutes}); `base` is the normalized base, `\"\"` for none.\n */\n\nimport { mountBasePath } from \"../core/base-path.ts\";\nimport { POWERED_BY_HEADERS } from \"../core/powered-by.ts\";\nimport { SVG_ASSET_HEADERS } from \"./headers.ts\";\n\n/*\n * The `accept` header conditions. Dev and the Cloudflare Worker negotiate the\n * way `prefersMarkdown` (`astro/markdown-negotiation.ts`) does: media types in\n * any case, and Markdown only when its q-value is above zero and at least\n * HTML's. A routing condition is a regex over the whole header, with no\n * arithmetic, so the comparison is spelled as two routes per rewrite:\n *\n * - a Markdown entry at full weight (no q-value, or `q=1`) always wins, since\n * nothing can outrank it;\n * - a Markdown entry below full weight wins only when the header has no\n * `text/html` entry above zero (a `missing` condition), since two q-values\n * below 1 can't be compared. That case, like `text/markdown;q=0.9,\n * text/html;q=0.8`, gets HTML on Vercel where dev and Cloudflare send\n * Markdown.\n *\n * Every pattern is anchored at both ends and lets `(?:.*,)?` absorb the\n * earlier list entries, so it holds under full-string and substring matching\n * alike. Case-insensitivity is spelled out letter by letter and the patterns\n * are lookaround-free, so they read the same in RE2, PCRE, and JavaScript.\n * Like dev, only the first `q=` parameter of an entry counts, and a `q=`\n * value is read as a decimal. Browsers never send `text/markdown`, so\n * ordinary page requests are unaffected.\n */\n\n/** `word` in any case, one character class per letter: `[Tt][Ee][Xx][Tt]`. */\nconst anyCase = (word: string): string =>\n word.replaceAll(/[a-z]/gu, (letter) => `[${letter.toUpperCase()}${letter}]`);\n\n/** An entry's parameters before its first `q=`: any that isn't one. */\nconst OTHER_PARAMS = String.raw`(?:;\\s*(?:[^\\sq;,][^;,]*|q(?:[^=;,][^;,]*)?)?)*`;\n\n/** Everything after an entry's first `q=` value, up to the next entry. */\nconst LATER_PARAMS = \"(?:;[^,]*)?\";\n\n/** A `q=` value of 1 or more: full weight. */\nconst FULL_WEIGHT = String.raw`0*[1-9][0-9]*(?:\\.[0-9]*)?`;\n\n/** A `q=` value above zero and below 1. */\nconst PARTIAL_WEIGHT = String.raw`0*\\.[0-9]*[1-9][0-9]*`;\n\n/** A `q=` value that isn't zero: it has a character besides `0` and `.`. */\nconst NONZERO_WEIGHT = String.raw`[\\s0.]*[^\\s0.;,][^;,]*`;\n\n/** A header with an entry of `type` weighed by `weight`, or by no `q=` when it's optional. */\nconst acceptEntry = (type: string, weight: string, optional: boolean) =>\n String.raw`^(?:.*,)?\\s*${type}\\s*${OTHER_PARAMS}(?:;\\s*q=\\s*${weight}\\s*${LATER_PARAMS})${optional ? \"?\" : \"\"}(?:,.*)?$`;\n\n/** A header with a `type` entry at full weight. */\nconst fullWeight = (type: string) => acceptEntry(type, FULL_WEIGHT, true);\n\n/** A header with a `type` entry weighed above zero and below 1. */\nconst partialWeight = (type: string) =>\n acceptEntry(type, PARTIAL_WEIGHT, false);\n\n/** A header with a `text/html` entry weighed above zero. */\nconst ACCEPT_HTML = acceptEntry(anyCase(\"text/html\"), NONZERO_WEIGHT, true);\n\nconst MARKDOWN_TYPE = `${anyCase(\"text/\")}(?:${anyCase(\"x-\")})?${anyCase(\"markdown\")}`;\n\nconst JSON_TYPE = `${anyCase(\"application/\")}(?:${anyCase(\"problem\")}\\\\+)?${anyCase(\"json\")}`;\n\n/** One header condition on a Build Output route. */\nexport interface VercelCondition {\n key?: string;\n type: string;\n value?: string;\n}\n\n/** The conditions of one route: all of `has`, none of `missing`. */\nexport interface AcceptConditions {\n has: VercelCondition[];\n missing?: VercelCondition[];\n}\n\nconst accept = (value: string): VercelCondition => ({\n key: \"accept\",\n type: \"header\",\n value,\n});\n\n/** The pair of conditions a route answering `type` is written once for each. */\nconst preferring = (type: string): AcceptConditions[] => [\n { has: [accept(fullWeight(type))] },\n { has: [accept(partialWeight(type))], missing: [accept(ACCEPT_HTML)] },\n];\n\n/** When a client prefers `text/markdown` (or `text/x-markdown`) over HTML. */\nexport const ACCEPT_MARKDOWN_CONDITIONS = preferring(MARKDOWN_TYPE);\n\n/**\n * The JSON counterpart, for the problem-details 404: `application/json` or\n * `application/problem+json`. Browsers never send either on a navigation\n * (the catch-all wildcard does not match), so ordinary page requests are\n * unaffected.\n */\nexport const ACCEPT_JSON_CONDITIONS = preferring(JSON_TYPE);\n\n/**\n * A Build Output API route — the subset these helpers read and write. Parsed\n * routes keep whatever other fields they carry at runtime; only these are\n * typed.\n */\nexport interface VercelRoute {\n continue?: boolean;\n dest?: string;\n handle?: string;\n has?: VercelCondition[];\n headers?: Record<string, string>;\n missing?: VercelCondition[];\n src?: string;\n status?: number;\n}\n\n/** `route` once per condition pair, so it fires when either holds. */\nconst conditioned = (\n route: VercelRoute,\n conditions: readonly AcceptConditions[]\n): VercelRoute[] => conditions.map((condition) => ({ ...route, ...condition }));\n\n/** Whether a parsed route field is a real string (the config is raw JSON). */\nconst isString = (value: string | undefined): value is string =>\n typeof value === \"string\";\n\n/** The Markdown conditions' `has` values, to recognize a route this module wrote. */\nconst MARKDOWN_VALUES = new Set(\n ACCEPT_MARKDOWN_CONDITIONS.flatMap(({ has }) =>\n has.map((condition) => condition.value)\n )\n);\n\nconst VARY_ACCEPT = { vary: \"Accept\" };\n\n/** Where the prerendered Markdown 404 (`pages/404.md.ts`) lands. */\nconst NOT_FOUND_MARKDOWN_DEST = \"/404.md\";\n\n/** Where the prerendered JSON 404 (`pages/404.json.ts`) lands. */\nconst NOT_FOUND_JSON_DEST = \"/404.json\";\n\n/** The adapter's own not-found fallback — the anchor the Markdown 404 precedes. */\nconst NOT_FOUND_HTML_DEST = \"/404.html\";\n\n/** Which prerendered 404 twins the build emitted, so their routes get wired. */\nexport interface NotFoundVariants {\n json?: boolean;\n markdown?: boolean;\n}\n\n/**\n * Vercel rejects route `src` patterns longer than 4096 characters, so route\n * alternations are split across as many route entries as needed. The budget\n * leaves headroom for the `^(` … `)/?$` wrapper.\n */\nconst MAX_ALTERNATION_LENGTH = 3900;\n\nconst REGEX_SPECIALS = /[$()*+.?[\\]^{|}\\\\]/gu;\n\n/**\n * A route path as it appears on the wire (percent-encoded, matching the layout\n * of the prerendered files), escaped for literal use inside the alternation.\n * Escaping runs after encoding; the `%` an encode introduces is not a regex\n * metacharacter.\n */\nconst routePattern = (route: string): string =>\n encodeURI(route).replace(REGEX_SPECIALS, \"\\\\$&\");\n\n/**\n * The `src` matching the homepage: `^/$`, or the base itself under one, served\n * without a trailing slash (the adapter's trailing-slash route strips it).\n */\nconst homeSource = (base: string): string =>\n `^${routePattern(mountBasePath(base, \"/\"))}$`;\n\n/**\n * Miss-phase routes that answer a missing page with the Markdown 404 body: any\n * path when the client prefers Markdown, and any `.md`/`.mdx` URL (a request\n * for a raw-Markdown mirror that has no page wants Markdown back, not the HTML\n * shell). Both keep the 404 status. Spliced immediately before the adapter's\n * `/404.html` fallback, so they run after every server route (the MCP\n * endpoint, server islands, images) has had its turn and never hijack a\n * request one of those would have answered.\n */\nconst notFoundMarkdownRoutes = (base: string): VercelRoute[] => {\n const dest = mountBasePath(base, NOT_FOUND_MARKDOWN_DEST);\n const prefix = routePattern(base);\n return [\n ...conditioned(\n { dest, headers: VARY_ACCEPT, src: `^${prefix}/.*$`, status: 404 },\n ACCEPT_MARKDOWN_CONDITIONS\n ),\n { dest, src: `^${prefix}/.*\\\\.mdx?$`, status: 404 },\n ];\n};\n\n/**\n * The JSON 404's miss-phase routes, the problem-details twin of the Markdown\n * ones: any path when the client prefers JSON, and any `.json` URL no file\n * backs. Spliced at the same anchor, after every server route — so the\n * `/api/` catch-all (which answers its own namespace with a problem document)\n * has already had its turn.\n */\nconst notFoundJsonRoutes = (base: string): VercelRoute[] => {\n const dest = mountBasePath(base, NOT_FOUND_JSON_DEST);\n const prefix = routePattern(base);\n return [\n ...conditioned(\n { dest, headers: VARY_ACCEPT, src: `^${prefix}/.*$`, status: 404 },\n ACCEPT_JSON_CONDITIONS\n ),\n { dest, src: `^${prefix}/.*\\\\.json$`, status: 404 },\n ];\n};\n\n/** Group patterns so each group's alternation stays under the `src` limit. */\nconst chunkPatterns = (patterns: readonly string[]): string[][] => {\n const chunks: string[][] = [];\n let current: string[] = [];\n let length = 0;\n for (const pattern of patterns) {\n if (\n current.length > 0 &&\n length + pattern.length + 1 > MAX_ALTERNATION_LENGTH\n ) {\n chunks.push(current);\n current = [];\n length = 0;\n }\n current.push(pattern);\n length += pattern.length + 1;\n }\n if (current.length > 0) {\n chunks.push(current);\n }\n return chunks;\n};\n\nexport interface NegotiationRoutes {\n /**\n * `Vary: Accept` for the plain-HTML side of every negotiated URL, so shared\n * caches keep the two variants apart. Spliced *before* `handle:\n * \"filesystem\"` with `continue`: main-phase headers accumulate and ride on\n * whatever ultimately serves the request. Routes placed after the filesystem\n * marker are the miss phase — they run only when no static file matches, and\n * every Blume content page is a prerendered static file, so a header route\n * there never fires.\n */\n headerRoutes: VercelRoute[];\n /**\n * The negotiation itself: header-conditional rewrites to the `.md` mirror.\n * Spliced *before* `handle: \"filesystem\"` so they run ahead of static-file\n * matching; the rewritten path then resolves to the prerendered `.md` file.\n */\n rewriteRoutes: VercelRoute[];\n}\n\n/**\n * Build the routes for the given content-route paths (the routes that have a\n * raw-Markdown mirror, straight from the manifest). Paths are matched with an\n * optional trailing slash and rewritten `/{route}` → `/{route}.md`; the home\n * page's mirror lives at `/index.md`. When `homeTokens` is given, the home\n * rewrite also stamps `x-markdown-tokens` — the estimated token count of the\n * homepage mirror (Cloudflare's Markdown for Agents convention). Only the home\n * route can carry it: the other rewrites are chunked alternations spanning\n * many pages, and a count is per-page. Under a `base`, each path is matched\n * and rewritten where it's served (`/docs` → `/docs/index.md`).\n */\nexport const buildNegotiationRoutes = (\n routePaths: readonly string[],\n homeTokens?: number,\n base = \"\"\n): NegotiationRoutes => {\n const home = routePaths.includes(\"/\");\n const rest = routePaths\n .filter((path) => path !== \"/\")\n .map((path) => routePattern(mountBasePath(base, path)));\n const chunks = chunkPatterns(rest);\n\n const rewriteRoutes: VercelRoute[] = home\n ? conditioned(\n {\n dest: mountBasePath(base, \"/index.md\"),\n headers:\n homeTokens === undefined\n ? VARY_ACCEPT\n : { ...VARY_ACCEPT, \"x-markdown-tokens\": String(homeTokens) },\n src: homeSource(base),\n },\n ACCEPT_MARKDOWN_CONDITIONS\n )\n : [];\n for (const chunk of chunks) {\n rewriteRoutes.push(\n ...conditioned(\n {\n dest: \"$1.md\",\n headers: VARY_ACCEPT,\n src: `^(${chunk.join(\"|\")})/?$`,\n },\n ACCEPT_MARKDOWN_CONDITIONS\n )\n );\n }\n\n const headerChunks = chunkPatterns(\n home ? [routePattern(mountBasePath(base, \"/\")), ...rest] : rest\n );\n const headerRoutes: VercelRoute[] = headerChunks.map((chunk) => ({\n continue: true,\n headers: VARY_ACCEPT,\n src: `^(?:${chunk.join(\"|\")})/?$`,\n }));\n\n return { headerRoutes, rewriteRoutes };\n};\n\nconst ALLOW_ANY_ORIGIN = \"*\";\n\n/**\n * A main-phase `continue` route stamping `Access-Control-Allow-Origin: *` on\n * one static discovery document (see `crossOriginDiscoveryPaths`), so a\n * registry reading it from another origin isn't refused by the browser.\n */\nconst corsRoute = (path: string, base: string): VercelRoute => ({\n continue: true,\n headers: { \"access-control-allow-origin\": ALLOW_ANY_ORIGIN },\n src: `^${routePattern(mountBasePath(base, path))}$`,\n});\n\n/**\n * The `src` of the route stamping the content-source SVG headers: every `.svg`\n * under `/blume-assets/`.\n */\nconst svgAssetSource = (base: string): string =>\n String.raw`^${routePattern(base)}/blume-assets/.+\\.svg$`;\n\n/**\n * A main-phase `continue` route stamping the sandbox headers\n * (`deploy/headers.ts`) on a downloaded SVG, which Vercel serves from the\n * static layer — where the prerendered asset endpoint's own headers never\n * reach.\n */\nconst svgAssetRoute = (base: string): VercelRoute => ({\n continue: true,\n headers: Object.fromEntries(\n Object.entries(SVG_ASSET_HEADERS).map(([name, value]) => [\n name.toLowerCase(),\n value,\n ])\n ),\n src: svgAssetSource(base),\n});\n\n/** The `src` of the `X-Powered-By` route: the base and every path beneath it. */\nconst poweredBySource = (base: string): string =>\n `^${routePattern(base)}(?:/.*)?$`;\n\n/**\n * A main-phase `continue` route naming Blume in `X-Powered-By` (see\n * `core/powered-by.ts`) on every response: the prerendered pages and files\n * the static layer serves, which Blume's runtime middleware never sees, the\n * functions, and the redirects.\n */\nconst poweredByRoute = (base: string): VercelRoute => ({\n continue: true,\n headers: Object.fromEntries(\n Object.entries(POWERED_BY_HEADERS).map(([name, value]) => [\n name.toLowerCase(),\n value,\n ])\n ),\n src: poweredBySource(base),\n});\n\n/** Whether a route is the {@link poweredByRoute}. */\nconst isPoweredByRoute = (route: VercelRoute, base: string): boolean =>\n route.continue === true && route.src === poweredBySource(base);\n\n/** Whether a route is a `corsRoute` — the same three-field shape test as the others. */\nconst isCorsRoute = (route: VercelRoute): boolean =>\n route.continue === true &&\n route.headers?.[\"access-control-allow-origin\"] === ALLOW_ANY_ORIGIN &&\n isString(route.src) &&\n Object.keys(route).length === 3;\n\n/**\n * Whether a route is one this module previously injected, so re-injection\n * replaces rather than duplicates. Rewrites are identified by their `accept`\n * condition; the `Vary` routes by their exact three-field shape (a\n * user-authored route of that identical shape would be semantically equal to\n * the one re-added); the homepage `Link` route by its three-field\n * continue-with-link shape (the Build Output config is adapter-generated, so\n * no user-authored route competes in this file); the Markdown 404 routes by\n * their `/404.md` destination; the SVG and `X-Powered-By` routes by their\n * `src`.\n */\nconst isNegotiationRoute = (route: VercelRoute, base: string): boolean =>\n route.has?.some((condition) => MARKDOWN_VALUES.has(condition.value)) ===\n true ||\n (route.dest === mountBasePath(base, NOT_FOUND_MARKDOWN_DEST) &&\n route.status === 404) ||\n (route.dest === mountBasePath(base, NOT_FOUND_JSON_DEST) &&\n route.status === 404) ||\n (route.continue === true &&\n route.headers?.vary === \"Accept\" &&\n isString(route.src) &&\n Object.keys(route).length === 3) ||\n (route.continue === true &&\n isString(route.headers?.link) &&\n route.src === homeSource(base) &&\n Object.keys(route).length === 3) ||\n isCorsRoute(route) ||\n (route.continue === true && route.src === svgAssetSource(base)) ||\n isPoweredByRoute(route, base);\n\n/**\n * Splice the negotiation routes into a Build Output `config.json`, plus — when\n * given — a homepage `Link` header route for agent discovery (see\n * `ai/link-headers.ts`), applied the same way the `Vary` routes are: in the\n * main phase before `handle: \"filesystem\"` with `continue`, so the header\n * rides on the prerendered homepage response. `contentTypeOverrides` maps static-dir\n * relative paths to media types via the Build Output `overrides` field — the\n * platform's mechanism for extensionless static files (e.g. the Web Bot Auth\n * signature directory). The trailing-slash redirect that collapses `/docs/`\n * onto `/docs` is not spliced here: the generated config sets Astro's\n * `trailingSlash: \"never\"`, which the adapter turns into the platform's own\n * 308 route ahead of everything below (so a slashed Markdown request takes\n * that hop first, then negotiates). For each 404 twin the build emitted (`notFound.markdown` for\n * `404.md`, `notFound.json` for `404.json`), its routes go into the miss\n * phase right before the adapter's `/404.html` fallback — and nowhere when\n * that fallback is absent, since a `dest` with no file behind it would serve\n * nothing. With `svgAssets`, a main-phase route also sandboxes the SVGs a\n * content source downloaded (see {@link svgAssetRoute}). With `poweredBy`, a\n * route at the head of the config, ahead of the adapter's redirects, names\n * Blume on every response (see {@link poweredByRoute}). Under a `base`, every\n * route matches and names paths beneath it, and the fallback anchor is the\n * one {@link rebaseAdapterRoutes} moved there. Returns the updated JSON\n * text (tab-indented, like the adapter's own output), or `null` when there is\n * nowhere safe to splice: an unparsable config, no `routes` array, or no\n * `handle: \"filesystem\"` marker to anchor the splice.\n */\nexport const injectNegotiationRoutes = (\n configText: string,\n routePaths: readonly string[],\n homeLinkHeader?: string | null,\n contentTypeOverrides?: Record<string, string>,\n homeTokens?: number,\n notFound: NotFoundVariants = {},\n corsPaths: readonly string[] = [],\n svgAssets = false,\n base = \"\",\n poweredBy = false\n): string | null => {\n const overrideEntries = Object.entries(contentTypeOverrides ?? {});\n let config: {\n overrides?: Record<string, { contentType?: string; path?: string }>;\n routes?: VercelRoute[];\n };\n try {\n config = JSON.parse(configText);\n } catch {\n return null;\n }\n if (!Array.isArray(config.routes)) {\n return null;\n }\n for (const [path, contentType] of overrideEntries) {\n // Keyed assignment, so re-injection replaces rather than duplicates and a\n // user's own override of the same path is simply refreshed.\n config.overrides = { ...config.overrides, [path]: { contentType } };\n }\n const routes = config.routes.filter(\n (route) => !isNegotiationRoute(route, base)\n );\n const filesystemIndex = routes.findIndex(\n (route) => route.handle === \"filesystem\"\n );\n if (filesystemIndex === -1) {\n return null;\n }\n const { headerRoutes, rewriteRoutes } = buildNegotiationRoutes(\n routePaths,\n homeTokens,\n base\n );\n if (homeLinkHeader) {\n headerRoutes.push({\n continue: true,\n headers: { link: homeLinkHeader },\n src: homeSource(base),\n });\n }\n headerRoutes.push(...corsPaths.map((path) => corsRoute(path, base)));\n if (svgAssets) {\n headerRoutes.push(svgAssetRoute(base));\n }\n // Headers first: `continue` routes accumulate, so a request the rewrite\n // route then terminates (Markdown negotiation on the homepage) still carries\n // the Link header.\n routes.splice(filesystemIndex, 0, ...headerRoutes, ...rewriteRoutes);\n if (poweredBy) {\n routes.unshift(poweredByRoute(base));\n }\n const notFoundRoutes = [\n ...(notFound.markdown ? notFoundMarkdownRoutes(base) : []),\n ...(notFound.json ? notFoundJsonRoutes(base) : []),\n ];\n if (notFoundRoutes.length > 0) {\n const fallbackDest = mountBasePath(base, NOT_FOUND_HTML_DEST);\n const fallbackIndex = routes.findIndex(\n (route) => route.status === 404 && route.dest === fallbackDest\n );\n if (fallbackIndex !== -1) {\n routes.splice(fallbackIndex, 0, ...notFoundRoutes);\n }\n }\n config.routes = routes;\n return `${JSON.stringify(config, null, \"\\t\")}\\n`;\n};\n\n/**\n * Splice routes for the pattern redirects (see `vercelPatternRoutes`) into a\n * Build Output `config.json`, in the main phase just ahead of\n * `handle: \"filesystem\"`: after the exact redirects the adapter puts first,\n * so an exact path still wins. A second pass replaces its own routes. Returns\n * the updated JSON text, or `null` when there is nowhere safe to splice: an\n * unparsable config, no `routes` array, or no `handle: \"filesystem\"` marker.\n */\nexport const injectRedirectRoutes = (\n configText: string,\n redirectRoutes: readonly VercelRoute[]\n): string | null => {\n let config: { routes?: VercelRoute[] };\n try {\n config = JSON.parse(configText);\n } catch {\n return null;\n }\n if (!Array.isArray(config.routes)) {\n return null;\n }\n const ours = new Set(redirectRoutes.map((route) => route.src));\n const routes = config.routes.filter(\n (route) => !(ours.has(route.src) && isString(route.headers?.Location))\n );\n const filesystemIndex = routes.findIndex(\n (route) => route.handle === \"filesystem\"\n );\n if (filesystemIndex === -1) {\n return null;\n }\n routes.splice(filesystemIndex, 0, ...redirectRoutes);\n config.routes = routes;\n return `${JSON.stringify(config, null, \"\\t\")}\\n`;\n};\n\n/**\n * The trailing-slash route `trailingSlash: \"never\"` gives the adapter's config\n * (`^/(.*)/$` → `/$1`): it keeps whatever path it strips the slash from, base\n * and all, so it already serves a based site.\n */\nconst isTrailingSlashRoute = (route: VercelRoute): boolean =>\n route.headers?.Location === \"/$1\";\n\n/** The pattern body of the root route, anchored (`^/$`) or not (`/`). */\nconst ROOT_BODY = /^\\/\\$?$/u;\n\n/**\n * Re-anchor an adapter route pattern under the base, whose escaped form is\n * `prefix`: each matches a base-less path from its start, and the root route\n * becomes the base itself, served without a trailing slash.\n */\nconst rebaseSource = (src: string, prefix: string): string => {\n const body = src.startsWith(\"^\") ? src.slice(1) : src;\n return `^${prefix}${ROOT_BODY.test(body) ? \"$\" : body}`;\n};\n\n/**\n * Move the adapter's routes under `deployment.base`, to match the static files\n * Blume moves to `static/<base>/`. `@astrojs/vercel` routes a server build as\n * if it were served from the root: its route patterns (the `_astro/` cache\n * header, every server route) match base-less paths, its 404 fallback names\n * `/404.html`, and it joins the base onto each redirect with no slash on the\n * `from` side and a second time on the `to` side, which Astro hands it\n * already based (`^/docsold$` → `/docs/docs/new`). Each pattern is\n * re-anchored under the base and the fallback names the base's `404.html`;\n * the adapter's redirects make way for `redirectRoutes`, the exact redirects\n * as the host matches them. Returns the updated JSON text, or `null` when\n * there is nowhere safe to splice: an unparsable config, no `routes` array,\n * or no `handle: \"filesystem\"` marker.\n */\nexport const rebaseAdapterRoutes = (\n configText: string,\n base: string,\n redirectRoutes: readonly VercelRoute[]\n): string | null => {\n let config: { routes?: VercelRoute[] };\n try {\n config = JSON.parse(configText);\n } catch {\n return null;\n }\n if (!Array.isArray(config.routes)) {\n return null;\n }\n const filesystemIndex = config.routes.findIndex(\n (route) => route.handle === \"filesystem\"\n );\n if (filesystemIndex === -1) {\n return null;\n }\n const prefix = routePattern(base);\n const routes = config.routes.flatMap((route, index): VercelRoute[] => {\n // Ahead of the filesystem handler, the adapter writes its redirects and\n // nothing else with a `Location`.\n if (index < filesystemIndex && isString(route.headers?.Location)) {\n return isTrailingSlashRoute(route) ? [route] : [];\n }\n const rebased = { ...route };\n if (isString(route.src)) {\n rebased.src = rebaseSource(route.src, prefix);\n }\n if (route.status === 404 && route.dest === NOT_FOUND_HTML_DEST) {\n rebased.dest = mountBasePath(base, NOT_FOUND_HTML_DEST);\n }\n return [rebased];\n });\n routes.splice(\n routes.findIndex((route) => route.handle === \"filesystem\"),\n 0,\n ...redirectRoutes\n );\n config.routes = routes;\n return `${JSON.stringify(config, null, \"\\t\")}\\n`;\n};\n",
208
210
  "import { REDIRECTS_FILE } from \"./netlify.ts\";\nimport { distDir } from \"./paths.ts\";\nimport type { DeployPlatform } from \"./types.ts\";\nimport { VERCEL_JSON_FILE } from \"./vercel.ts\";\n\n/**\n * A static build for an unnamed host — the default. Nothing is known about\n * where `dist/` ends up, so the build writes every platform's redirect file\n * (`_redirects` for Netlify and Cloudflare, `vercel.json` for Vercel, plus the\n * manifest for everything else) and the `_headers` file; a host that reads\n * none of them ignores them harmlessly. The site URL is still inferred from\n * whichever platform env the build runs in.\n */\nexport const staticPlatform: DeployPlatform = {\n astro: null,\n env: null,\n finalizeBuild: null,\n hiddenRuntime: {\n ignoreDir: null,\n showProjectRoot: false,\n surfacePath: null,\n },\n kind: \"static\",\n negotiatesMarkdown: false,\n previewDeploy: null,\n readsHeaderFiles: { server: false, static: true },\n redirectFiles: [REDIRECTS_FILE, VERCEL_JSON_FILE],\n serverClientUnderBase: false,\n serverOutputDir: distDir,\n serverStaticDir: distDir,\n};\n",
209
211
  "import type {\n DeployAdapterKind,\n ResolvedDeployment,\n} from \"../adapters/registry.ts\";\nimport { cloudflarePlatform } from \"./cloudflare.ts\";\nimport { netlifyPlatform } from \"./netlify.ts\";\nimport { nodePlatform } from \"./node.ts\";\nimport { staticPlatform } from \"./static.ts\";\nimport type { DeployPlatform } from \"./types.ts\";\nimport { vercelPlatform } from \"./vercel.ts\";\n\n/**\n * Every platform, in the order their env detection is tried when a build's\n * own adapter says nothing about where it runs (a static build on Vercel\n * still gets its site URL from `VERCEL_URL`).\n */\nexport const DEPLOY_PLATFORMS: readonly DeployPlatform[] = [\n vercelPlatform,\n netlifyPlatform,\n cloudflarePlatform,\n nodePlatform,\n staticPlatform,\n];\n\nconst byKind = new Map<DeployAdapterKind, DeployPlatform>(\n DEPLOY_PLATFORMS.map((platform) => [platform.kind, platform])\n);\n\n/** The behaviors behind a resolved deployment descriptor. */\nexport const deployPlatform = (\n deployment: Pick<ResolvedDeployment, \"kind\">\n): DeployPlatform => {\n const platform = byKind.get(deployment.kind);\n if (!platform) {\n throw new Error(`Unknown deployment adapter \"${deployment.kind}\".`);\n }\n return platform;\n};\n\n/**\n * The site URL the platform env implies, or null. The configured adapter's\n * own platform is asked first, then the rest in registration order, so a\n * static build (which names no host) still picks up the URL of whichever\n * platform it is building on.\n */\nexport const inferDeploymentSite = (\n deployment: Pick<ResolvedDeployment, \"kind\">,\n env: NodeJS.ProcessEnv\n): string | null => {\n const own = deployPlatform(deployment);\n const candidates = [own, ...DEPLOY_PLATFORMS.filter((p) => p !== own)];\n const detected = candidates.find(\n (platform) => platform.env?.detect(env) ?? false\n );\n // `find` only returns a platform whose `env` matched, so it is present.\n return detected?.env?.site(env) ?? null;\n};\n\nexport type {\n AstroAdapterSpec,\n BuildLog,\n DeployPlatform,\n FinalizeBuildOptions,\n HiddenRuntime,\n PlatformEnv,\n RedirectFile,\n} from \"./types.ts\";\n",
210
212
  "import { existsSync } from \"node:fs\";\n\nimport { isAbsolute, join, resolve } from \"pathe\";\n\nimport type { ResolvedConfig } from \"./schema.ts\";\nimport { resolveDocsCollection } from \"./sources/collection.ts\";\nimport type { ProjectContext } from \"./types.ts\";\n\nconst CONFIG_FILENAMES = [\n \"blume.config.ts\",\n \"blume.config.mjs\",\n \"blume.config.js\",\n];\n\nconst THEME_FILENAMES = [\"theme.css\"];\nconst COMPONENTS_FILENAMES = [\"components.tsx\", \"components.ts\"];\n\nconst firstExisting = (root: string, names: string[]): string | null => {\n for (const name of names) {\n const candidate = join(root, name);\n if (existsSync(candidate)) {\n return candidate;\n }\n }\n return null;\n};\n\n/** Locate the Blume config file for a project root, if any. */\nexport const findConfigFile = (root: string): string | null =>\n firstExisting(root, CONFIG_FILENAMES);\n\n/** Locate the project's `components.ts`/`.tsx` override file, if any. */\nexport const findComponentsFile = (root: string): string | null =>\n firstExisting(root, COMPONENTS_FILENAMES);\n\n/**\n * Resolve the generated runtime directory for a project. Defaults to\n * `<root>/.blume`; an override (e.g. `.blume-verify` for an isolated build that\n * runs alongside a live `blume dev`) may be relative to the root or absolute.\n */\nexport const resolveRuntimeDir = (\n root: string,\n runtimeDir = \".blume\"\n): string =>\n isAbsolute(runtimeDir) ? runtimeDir : join(resolve(root), runtimeDir);\n\n/**\n * Resolve every path Blume needs from a project root and its resolved config.\n * Paths are absolute and normalized. `options.runtimeDir` relocates the whole\n * generated runtime (and its build output) so a verify build/check can run\n * without touching a live dev server's `.blume/` or the real `dist/`.\n */\nexport const resolveProjectContext = (\n root: string,\n config: ResolvedConfig,\n options?: { runtimeDir?: string }\n): ProjectContext => {\n const absoluteRoot = resolve(root);\n // The content root is where the `docs` collection roots: the first\n // filesystem source (the implicit one, for a zero-config project).\n const contentRoot = resolveDocsCollection(config, absoluteRoot).base;\n\n const pagesPath = join(absoluteRoot, config.content.pages);\n const pagesRoot = existsSync(pagesPath) ? pagesPath : null;\n\n const outDir = resolveRuntimeDir(absoluteRoot, options?.runtimeDir);\n // A relocated runtime keeps its build output self-contained under itself, so a\n // verify build never empties the user's real `<root>/dist`.\n const distDir = options?.runtimeDir\n ? join(outDir, \"dist\")\n : join(absoluteRoot, \"dist\");\n\n return {\n componentsFile: findComponentsFile(absoluteRoot),\n configFile: findConfigFile(absoluteRoot),\n contentRoot,\n distDir,\n outDir,\n pagesRoot,\n root: absoluteRoot,\n themeFile: firstExisting(absoluteRoot, THEME_FILENAMES),\n };\n};\n",
@@ -212,7 +214,7 @@
212
214
  "import { inferDeploymentSite } from \"../deploy/platforms/index.ts\";\nimport type { ResolvedConfig } from \"./schema.ts\";\n\n/**\n * Fill in the deployment `site` from platform env vars (Vercel, Netlify,\n * Cloudflare Pages) when the config hasn't set one. Explicit config always\n * wins. Each adapter's platform declares its own detection and URL vars (see\n * `deploy/platforms/*`); the configured adapter is asked first, then every\n * other platform, so a static build deployed to a known host gets a working\n * canonical origin for free, mirroring Astro's platform auto-detection.\n */\nexport const applyDeploymentEnv = (\n config: ResolvedConfig,\n env: NodeJS.ProcessEnv = process.env\n): ResolvedConfig => {\n const { deployment } = config;\n if (deployment.options.site) {\n return config;\n }\n const site = inferDeploymentSite(deployment, env);\n if (!site) {\n return config;\n }\n return {\n ...config,\n deployment: {\n ...deployment,\n options: { ...deployment.options, site },\n },\n };\n};\n",
213
215
  "import { createJiti } from \"jiti\";\n\n/**\n * Create a loader for user-authored ESM/TS modules (`blume.config.ts`,\n * `meta.ts`). One jiti instance is reused across every file the returned loader\n * is called with. `moduleCache: false` ensures edits are picked up on each load,\n * which is what makes dev-server regeneration reflect config/meta changes.\n */\n// oxlint-disable-next-line anti-slop/no-unknown-returns -- user-authored modules can export anything; callers validate the loaded value at their own boundary\nexport const createModuleLoader = (): ((file: string) => Promise<unknown>) => {\n const jiti = createJiti(import.meta.url, { moduleCache: false });\n return async (file: string) => {\n const loaded = await jiti.import<{ default?: unknown }>(file);\n return loaded?.default ?? loaded;\n };\n};\n\n/**\n * Create a loader for a module whose default export is its whole value\n * (`blume.config.ts`). Unlike {@link createModuleLoader}, it never falls back\n * to the module's namespace: a module with no default export, or one that\n * exports `null`/`undefined`, resolves to `undefined` so the caller can say\n * so, instead of validating `{}` (a bare `defineConfig({…})` call) or\n * `{ config }` (a named export). jiti's default interop is off because it\n * throws on `export default null`.\n */\nexport const createDefaultExportLoader: typeof createModuleLoader = () => {\n const jiti = createJiti(import.meta.url, {\n interopDefault: false,\n moduleCache: false,\n });\n return async (file: string) => {\n const loaded = await jiti.import<{ default?: unknown }>(file);\n return loaded.default ?? undefined;\n };\n};\n"
214
216
  ],
215
- "mappings": "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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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",
216
- "debugId": "868F391FE86A3B3764756E2164756E21",
217
+ "mappings": "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AAA;AAAA;AAAA;AAAA,+CAO0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA8VxC,IAAM,0BAA0B,CACrC,cACA,YAC6B;AAAA,EAC7B,IAAI,QAAQ,WAAW,WAAW,GAAG;AAAA,IACnC,OAAO;AAAA,EACT;AAAA,EACA,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,SAAS,KAAK,MAAM,YAAY;AAAA,IAChC,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET,IAAI,CAAC,cAAa,MAAM,GAAG;AAAA,IACzB,OAAO;AAAA,EACT;AAAA,EACA,QAAQ,SAAS;AAAA,EACjB,IACE,CAAC,aAAa,IAAI,KAClB,KAAK,WAAW,KAChB,SAAS,yBACT;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,QAAQ,WAAW;AAAA,EACnB,IAAI,CAAC,cAAa,MAAM,KAAK,CAAC,aAAa,OAAO,OAAO,GAAG;AAAA,IAC1D,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,oBAAoB,QAAQ;AAAA,IAC5B,YAAY,CAAC;AAAA,OACV;AAAA,MACD;AAAA,EAIJ,MAAM,eAAe,kBAAkB,QAAQ,IAAI;AAAA,EACnD,MAAM,cAAc,IAAI,IACtB,kBAAkB,IAAI,CAAC,UACrB,cACE,gBAAgB,UAAU,MACtB,GAAG,eAAe,UAClB,gBAAgB,KACtB,CACF,CACF;AAAA,EACA,MAAM,kBAAkB,UAAU,OAChC,CAAC,aACC,SAAS,KAAK,WAAW,GAAG,KAC5B,CAAC,YAAY,IAAI,cAAc,SAAS,IAAI,CAAC,CACjD;AAAA,EACA,MAAM,QAAQ,yBACZ,OAAO,kBACP,yBAAyB,QAAQ,IAAI,CACvC;AAAA,EACA,IAAI,CAAC,qBAAqB,KAAK,GAAG;AAAA,IAChC,OAAO;AAAA,EACT;AAAA,EACA,IAAI,UAAU,MAAM;AAAA,IAClB,OAAO,mBAAmB;AAAA,EAC5B;AAAA,EACA,OAAO,OAAO;AAAA,EACd,MAAM,gBACJ,KAAK,WAAW,GAAG,KAAK,KAAK,WAAW,GAAG,IAAI,OAAO,KAAK;AAAA,EAC7D,MAAM,SAAS,uBAAuB;AAAA,OACjC;AAAA,IACH,eAAe,OAAO;AAAA,IACtB;AAAA,IACA,WAAW;AAAA,EACb,CAAC;AAAA,EAED,OAAO,EAAE,QAAQ,UAAU,KAAK,UAAU,MAAM,EAAE;AAAA;;;ACntBpD,IAAM,qBAAqB,CACzB,IACA,UACA,MACA,WAEA,qBAAqB,MAAM,UAAU,IAAI,CAAC,UACxC,YAAY,QAAQ,KAAK,CAC3B;AAqBK,IAAM,4BAA4B,CACvC,WACA,UACA,YACA,WACe;AAAA,EAGf,MAAM,OAAO,kBAAkB,UAAU;AAAA,EACzC,OAAO,YAAY,OACf,UAAU,IAAI,CAAC,cAAc;AAAA,OACxB;AAAA,IACH,MAAM,aAAa,UAAU,SAAS,IAAI;AAAA,IAC1C,IAAI,mBAAmB,SAAS,IAAI,UAAU,MAAM,MAAM;AAAA,EAC5D,EAAE,IACF;AAAA;AASC,IAAM,+BAA+B,CAC1C,WACA,UACA,YACA,WACe;AAAA,EACf,MAAM,OAAO,kBAAkB,UAAU;AAAA,EACzC,OAAO,YAAY,OACf,UAAU,IAAI,CAAC,cAAc;AAAA,OACxB;AAAA,IACH,MAAM,qBAAqB,MAAM,UAAU,SAAS,IAAI;AAAA,IACxD,IAAI,mBAAmB,SAAS,IAAI,UAAU,MAAM,MAAM;AAAA,EAC5D,EAAE,IACF;AAAA;AAON,IAAM,oBAAoB,CAAC,OAAO,MAAM;AAMxC,IAAM,aAAa,CAAC,MAAc,MAAc,cAA8B;AAAA,EAC5E,MAAM,QAAQ,cAAc,MAAM,IAAI;AAAA,EACtC,OAAO,GAAG,OAAO,UAAU,MAAM,WAAW,QAAQ;AAAA;AAc/C,IAAM,sBAAsB,CACjC,WACA,OACA,UAEA,UAAU,QAAQ,CAAC,aAAa;AAAA,EAC9B,MAAM,OAAO,cAAc,SAAS,IAAI;AAAA,EACxC,MAAM,KAAK,cAAc,SAAS,EAAE;AAAA,EACpC,MAAM,YACJ,CAAC,cAAc,SAAS,IAAI,KAC5B,YAAY,OAAO,cAAc,MAAM,IAAI,EAAE,CAAC,KAC9C,CAAC,YAAY,OAAO,cAAc,MAAM,MAAM,IAAI,CAAC;AAAA,EACrD,OAAO,YACH;AAAA,IACE;AAAA,IACA,GAAG,kBAAkB,IAAI,CAAC,eAAe;AAAA,MACvC,MAAM,WAAW,MAAM,MAAM,MAAM,SAAS;AAAA,MAC5C,QAAQ,SAAS;AAAA,MACjB,IAAI,WAAW,IAAI,MAAM,IAAI,SAAS;AAAA,IACxC,EAAE;AAAA,EACJ,IACA,CAAC,QAAQ;AAAA,CACd;AAWI,IAAM,oBAAoB,CAAC,YAGhB;AAAA,EAChB,QAAQ,WAAW;AAAA,EACnB,MAAM,OAAO,kBAAkB,OAAO,WAAW,QAAQ,IAAI;AAAA,EAC7D,MAAM,QAAQ,YAAY,QAAQ,SAAS,MAAM;AAAA,EACjD,OAAO,WACL,oBACE,6BACE,OAAO,WACP,OAAO,UACP,MACA,KACF,GACA,OACA,EAAE,MAAM,MAAM,IAAI,KAAK,CACzB,CACF;AAAA;AAOF,IAAM,cAAc,CAClB,UACA,OACA,YACY;AAAA,EACZ,MAAM,QAAQ,eAAe,QAAQ;AAAA,EACrC,OAAO,MAAM,SAAS,IAAI,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,QAAQ,CAAC;AAAA;AAU1D,IAAM,wBAAwB,CACnC,WACA,QAAQ,UAER,GAAG,UACA,QAAQ,CAAC,aACR,YAAY,UAAU,CAAC,UAAU,OAAO,kBAAkB,EAAE,IAC1D,CAAC,UACC,GAAG,MAAM,QAAQ,MAAM,MAAM,SAAS,SAAS,QAAQ,MAAM,IACjE,CACF,EACC,KAAK;AAAA,CAAI;AAAA;AAkBP,IAAM,oBAAoB,CAC/B,WACA,UAAmC,CAAC,MACzB;AAAA,EACX,MAAM,SAAuB;AAAA,IAC3B,WAAW,UAAU,QAAQ,CAAC,aAC5B,YACE,UACA,CAAC,WAAW;AAAA,MACV,aAAa,MAAM;AAAA,MACnB,QAAQ,mBAAmB,MAAM,IAAI;AAAA,IACvC,IACA,CAAC,SAAS,eAAe,MAAM,kBAAkB,CACnD,EAAE,IAAI,CAAC,WAAW,KAAK,OAAO,YAAY,SAAS,OAAO,EAAE,CAC9D;AAAA,EACF;AAAA,EACA,IAAI,QAAQ,SAAS,GAAG;AAAA,IACtB,OAAO,UAAU;AAAA,EACnB;AAAA,EACA,OAAO,GAAG,KAAK,UAAU,QAAQ,MAAM,CAAC;AAAA;AAAA;AAQnC,IAAM,0BAA0B,CACrC,cAEA,UAAU,QAAQ,cAAc,EAAE,IAAI,CAAC,UAAU;AAAA,KAC5C,mBAAmB,IAAI;AAAA,EAC1B,QAAQ,KAAK;AACf,EAAE;AAQG,IAAM,sBAAsB,CAAC,cAClC,iBAAiB,SAAS,EAAE,IAAI,EAAE,KAAK,UAAU,aAAa;AAAA,EAC5D,SAAS,EAAE,UAAU,SAAS;AAAA,EAC9B;AAAA,EACA;AACF,EAAE;;;ACjSJ,uBAAS;AACT,qBAAS,wBAAU;AAEnB,iBAAS;;;ACHT,oBAAS,kBAAS;AAKX,IAAM,UAAU,CAAC,YACtB,QAAQ,WAAW,MAAK,QAAQ,MAAM,MAAM;AASvC,IAAM,YAAY,CAAC,YACxB,MAAK,QAAQ,OAAO,GAAG,QAAQ;AAe1B,IAAM,cAAc,CAAC,YAC1B,SAAQ,QAAQ,OAAO,CAAC;AAGnB,IAAM,YAAY,CAAC,UAA6C;AAAA,EACrE,MAAM,UAAU,OAAO,KAAK;AAAA,EAC5B,IAAI,CAAC,SAAS;AAAA,IACZ,OAAO;AAAA,EACT;AAAA,EACA,OAAO,gBAAgB,KAAK,OAAO,IAAI,UAAU,WAAW;AAAA;;;ADjBvD,IAAM,iBAA+B;AAAA,EAC1C,OAAO;AAAA,EACP,MAAM;AACR;AAQO,IAAM,yBAAuC;AAAA,EAClD,OAAO,CAAC,cAAc,sBAAsB,WAAW,IAAI;AAAA,EAC3D,MAAM;AACR;AAGO,IAAM,sBAAsB,OAAK,YAAY,MAAM,aAAa;AAahE,IAAM,qBAAqB,OAChC,SACA,QACkB;AAAA,EAClB,QAAQ,QAAQ,YAAY;AAAA,EAC5B,MAAM,aAAa,OAAK,QAAQ,MAAM,mBAAmB;AAAA,EACzD,IAAI,CAAC,YAAW,UAAU,GAAG;AAAA,IAC3B,IAAI,KACF,6CAA6C,8KAC/C;AAAA,IACA;AAAA,EACF;AAAA,EAEA,MAAM,aAAmD,KAAK,MAC5D,MAAM,UAAS,YAAY,OAAO,CACpC;AAAA,EACA,MAAM,OAAO,0BACX,QACA,oBAAoB,QAAQ,mBAAmB,OAAO,CAAC,CACzD;AAAA,EAEA,MAAM,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,UAAU,MAAM,GAAG,CAAC;AAAA,EACpD,WAAW,UAAU;AAAA,IACnB,IAAI,WAAW,WAAW,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,IAAI,MAAM,GAAG,CAAC;AAAA,IACrE,GAAG;AAAA,EACL;AAAA,EACA,MAAM,WAAU,YAAY,KAAK,UAAU,UAAU,GAAG,OAAO;AAAA;AAS1D,IAAM,8BAA8B,OACzC,YACkB;AAAA,EAClB,MAAM,OAAO,wBAAwB,kBAAkB,OAAO,CAAC;AAAA,EAC/D,MAAM,aAAa,OAAK,QAAQ,QAAQ,MAAM,mBAAmB;AAAA,EACjE,IAAI,KAAK,WAAW,KAAK,CAAC,YAAW,UAAU,GAAG;AAAA,IAChD;AAAA,EACF;AAAA,EAEA,MAAM,aAAiD,KAAK,MAC1D,MAAM,UAAS,YAAY,OAAO,CACpC;AAAA,EAEA,MAAM,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,UAAU,MAAM,IAAI,CAAC;AAAA,EACrD,WAAW,YAAY;AAAA,IACrB,IAAI,WAAW,aAAa,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,IAAI,MAAM,IAAI,CAAC;AAAA,IACxE,GAAG;AAAA,EACL;AAAA,EACA,MAAM,WAAU,YAAY,KAAK,UAAU,UAAU,GAAG,OAAO;AAAA;AAY1D,IAAM,kBAAkC;AAAA,EAC7C,OAAO;AAAA,IACL,QAAQ,OAAO,CAAC;AAAA,IAChB,eAAe,CAAC;AAAA,IAChB,SAAS,OAAO,CAAC;AAAA,IACjB,SAAS;AAAA,EACX;AAAA,EACA,KAAK;AAAA,IACH,QAAQ,CAAC,QAAQ,QAAQ,IAAI,OAAO;AAAA,IAIpC,MAAM,CAAC,QACL,UAAU,IAAI,GAAG,KACjB,UAAU,IAAI,gBAAgB,KAC9B,UAAU,IAAI,UAAU;AAAA,EAC5B;AAAA,EACA,eAAe,SAAS,UAAU,KAAK,cAAc;AAAA,IAGnD,IAAI,CAAC,UAAU;AAAA,MACb,MAAM,mBAAmB,SAAS,GAAG;AAAA,MACrC,MAAM,4BAA4B,OAAO;AAAA,IAC3C;AAAA,IACA,OAAO;AAAA;AAAA,EAET,eAAe;AAAA,IACb,WAAW;AAAA,IACX,iBAAiB;AAAA,IACjB,aAAa;AAAA,EACf;AAAA,EACA,MAAM;AAAA,EACN,oBAAoB;AAAA,EAEpB,eAAe;AAAA,EAKf,kBAAkB,EAAE,QAAQ,OAAO,QAAQ,KAAK;AAAA,EAChD,eAAe,CAAC,sBAAsB;AAAA,EACtC,uBAAuB;AAAA,EACvB,iBAAiB;AAAA,EACjB,iBAAiB;AACnB;;;AhDvIA,IAAM,wBAAwB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AACF;AAYA,IAAM,iBAAiB,CAAC,YAA4B;AAAA,EAClD,MAAM,UAAU,EAAE,cAAc,WAAW,sBAAsB,OAAO;AAAA,EACxE,MAAM,eAAe,sBAAsB,IAAI,CAAC,SAC9C,OAAK,QAAQ,MAAM,IAAI,CACzB,EAAE,KAAK,CAAC,SAAS,YAAW,IAAI,CAAC;AAAA,EACjC,IAAI,CAAC,cAAc;AAAA,IACjB,OAAO;AAAA,EACT;AAAA,EACA,IAAI,aAAa,UAAS,QAAQ,QAAQ,YAAY;AAAA,EAItD,IAAI,CAAC,WAAW,WAAW,GAAG,KAAK,CAAC,WAAW,WAAW,GAAG,GAAG;AAAA,IAC9D,aAAa,KAAK;AAAA,EACpB;AAAA,EACA,OAAO,KAAK,SAAS,WAAW;AAAA;AAGlC,IAAM,yBAAyB,CAAC,QAC9B,IAAI,KACF,iIACF;AAWK,IAAM,4BAA4B,OACvC,SACA,QACkB;AAAA,EAClB,QAAQ,QAAQ,YAAY;AAAA,EAC5B,MAAM,YAAY,OAAK,QAAQ,OAAO,GAAG,QAAQ;AAAA,EACjD,MAAM,eAAe,OAAK,WAAW,eAAe;AAAA,EACpD,IAAI,CAAC,YAAW,YAAY,GAAG;AAAA,IAC7B,uBAAuB,GAAG;AAAA,IAC1B;AAAA,EACF;AAAA,EACA,MAAM,aAAa,mBAAmB,OAAO;AAAA,EAI7C,MAAM,cAAc,MAAM,iBAAiB,OAAO;AAAA,EAClD,MAAM,OAAO,YAAY;AAAA,EAMzB,MAAM,YAAY,OAChB,UAAU,OAAO,GACjB,kBAAkB,OAAO,WAAW,QAAQ,IAAI,CAClD;AAAA,EACA,MAAM,WAAW,wBACf,MAAM,UAAS,cAAc,OAAO,GACpC;AAAA,IACE,MAAM,OAAO,WAAW,QAAQ;AAAA,IAIhC,mBAAmB,QAAQ,SAAS,OAAO,IAAI,CAAC,UAAU,MAAM,IAAI;AAAA,IACpE,gBAAgB,oBAAoB,QAAQ,UAAU;AAAA,IACtD,YAAY,OAAO,mBAAmB,cAAc,IAAI,CAAC,IAAI;AAAA,IAC7D,UAAU;AAAA,MACR,MAAM,YAAW,OAAK,WAAW,UAAU,CAAC;AAAA,MAC5C,UAAU,YAAW,OAAK,WAAW,QAAQ,CAAC;AAAA,IAChD;AAAA,IAGA,eAAe,OAAO,OAAO,MACzB,QAAQ,SAAS,OACd,OACC,CAAC,UAAU,CAAC,MAAM,UAAU,YAAY,MAAM,UAAU,SAC1D,EACC,IAAI,CAAC,UAAU,aAAa,MAAM,IAAI,CAAC,IAC1C,CAAC;AAAA,IACL,WAAW,OAAO;AAAA,IAKlB,WAAW,kBAAkB,OAAO;AAAA,IACpC;AAAA,EACF,CACF;AAAA,EACA,IAAI,aAAa,MAAM;AAAA,IACrB,uBAAuB,GAAG;AAAA,IAC1B;AAAA,EACF;AAAA,EACA,MAAM,WACJ,OAAK,WAAW,uBAAuB,GACvC,SAAS,QACT,OACF;AAAA,EACA,MAAM,WAAU,cAAc,SAAS,UAAU,OAAO;AAAA,EACxD,IAAI,QACF,oEACF;AAAA;AAOF,IAAM,gBAAgB,OAAK,aAAa,UAAU,aAAa;AAmBxD,IAAM,6BAA6B,OACxC,YACkB;AAAA,EAClB,MAAM,cAAc,OAAK,QAAQ,OAAO,GAAG,UAAU,eAAe;AAAA,EACpE,IAAI,CAAC,YAAW,WAAW,GAAG;AAAA,IAC5B;AAAA,EACF;AAAA,EACA,MAAM,SAAS,OAAK,QAAQ,QAAQ,aAAa;AAAA,EACjD,MAAM,SAAS,OAAK,QAAQ,MAAM,aAAa;AAAA,EAC/C,MAAM,SAAS,CAAC,SACd,UAAS,SAAQ,MAAM,GAAG,SAAQ,SAAQ,MAAM,GAAG,IAAI,CAAC;AAAA,EAC1D,MAAM,eAA6B,YAAW,MAAM,IAChD,KAAK,MAAM,MAAM,UAAS,QAAQ,OAAO,CAAC,IAC1C,EAAE,YAAY,UAAS,SAAQ,MAAM,GAAG,WAAW,EAAE;AAAA,EACzD,MAAM,UAAwB;AAAA,IAC5B,mBAAmB,aAAa,oBAAoB,CAAC,GAAG,IAAI,CAAC,YAAY;AAAA,MACvE,YAAY,OAAO,OAAO,UAAU;AAAA,IACtC,EAAE;AAAA,IACF,YAAY,OAAO,aAAa,UAAU;AAAA,EAC5C;AAAA,EACA,IAAI,aAAa,2BAA2B;AAAA,IAC1C,QAAQ,4BAA4B,OAClC,aAAa,yBACf;AAAA,EACF;AAAA,EACA,MAAM,OAAM,SAAQ,MAAM,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EAChD,MAAM,WAAU,QAAQ,GAAG,KAAK,UAAU,OAAO;AAAA,GAAO,OAAO;AAAA;AAQjE,IAAM,sBAAsB;AAO5B,IAAM,eAAe,CAAC,SACpB,KACG,YAAY,EACZ,WAAW,eAAe,GAAG,EAC7B,MAAM,GAAG,EAAE,EACX,WAAW,aAAa,EAAE;AAO/B,IAAM,oBAAoB,OACxB,YACgC;AAAA,EAChC,QAAQ,QAAQ,YAAY;AAAA,EAC5B,MAAM,cAAc,OAAK,QAAQ,MAAM,cAAc;AAAA,EACrD,MAAM,WAA8B,YAAW,WAAW,IACtD,KAAK,MAAM,MAAM,UAAS,aAAa,OAAO,CAAC,IAC/C,CAAC;AAAA,EACL,QAAQ,SAAS,OAAO,WAAW;AAAA,EACnC,OAAO;AAAA,IACL,OAAO,SAAS,QAAQ,EAAE;AAAA,IAC1B,OAAO,IAAI,IAAI,IAAI,EAAE,WAAW;AAAA,IAChC,UAAS,QAAQ,IAAI;AAAA,EACvB,EACG,IAAI,YAAY,EAChB,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC;AAAA;AAQ5B,IAAM,uBAAuB,OAClC,SACA,QACkB;AAAA,EAClB,MAAM,eAAe,OACnB,QAAQ,QAAQ,OAAO,GACvB,UACA,eACF;AAAA,EACA,IAAI,CAAC,YAAW,YAAY,GAAG;AAAA,IAC7B;AAAA,EACF;AAAA,EAEA,MAAM,WAAqD,KAAK,MAC9D,MAAM,UAAS,cAAc,OAAO,CACtC;AAAA,EACA,MAAM,OAAO,MAAM,kBAAkB,OAAO;AAAA,EAC5C,IAAI,SAAS,SAAS,uBAAuB,SAAS,WAAW;AAAA,IAC/D;AAAA,EACF;AAAA,EACA,SAAS,OAAO;AAAA,EAChB,IAAI,SAAS,iBAAiB,qBAAqB;AAAA,IACjD,SAAS,eAAe;AAAA,EAC1B;AAAA,EACA,MAAM,WAAU,cAAc,KAAK,UAAU,QAAQ,GAAG,OAAO;AAAA,EAC/D,IAAI,KACF,gCAAgC,8EAClC;AAAA;AAOK,IAAM,0BAA0B,OACrC,SACA,QACkB;AAAA,EAClB,QAAQ,cAAc,QAAQ;AAAA,EAC9B,IAAI,WAAW,SAAS,cAAc;AAAA,IACpC;AAAA,EACF;AAAA,EACA,MAAM,eAAe,OACnB,QAAQ,QAAQ,OAAO,GACvB,UACA,eACF;AAAA,EACA,MAAM,QAAQ,YAAW,YAAY,IACjC,qBAAqB,MAAM,UAAS,cAAc,OAAO,GAAG,SAAS,IACrE;AAAA,EACJ,IAAI,UAAU,MAAM;AAAA,IAClB,IAAI,KACF,gHACF;AAAA,IACA;AAAA,EACF;AAAA,EACA,MAAM,WAAU,cAAc,OAAO,OAAO;AAAA,EAC5C,IAAI,QAAQ,4CAA4C;AAAA;AAenD,IAAM,qBAAqC;AAAA,EAChD,OAAO;AAAA,IACL,QAAQ,OAAO,EAAE,SAAS,MAAM;AAAA,IAChC,eAAe,CAAC;AAAA,IAChB,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AAAA,EACA,KAAK;AAAA,IACH,QAAQ,CAAC,QAAQ,QAAQ,IAAI,QAAQ;AAAA,IACrC,MAAM,CAAC,QAAQ,UAAU,IAAI,YAAY;AAAA,EAC3C;AAAA,EACA,eAAe,SAAS,UAAU,KAAK,cAAc;AAAA,IAGnD,IAAI,CAAC,UAAU;AAAA,MACb,MAAM,qBAAqB,SAAS,GAAG;AAAA,MACvC,MAAM,0BAA0B,SAAS,GAAG;AAAA,MAC5C,MAAM,wBAAwB,SAAS,GAAG;AAAA,MAC1C,MAAM,2BAA2B,QAAQ,OAAO;AAAA,IAClD;AAAA,IACA,OAAO;AAAA;AAAA,EAET,eAAe;AAAA,IAGb,WAAW;AAAA,IACX,iBAAiB;AAAA,IACjB,aAAa;AAAA,EACf;AAAA,EACA,MAAM;AAAA,EACN,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,kBAAkB,EAAE,QAAQ,MAAM,QAAQ,KAAK;AAAA,EAC/C,eAAe,CAAC,cAAc;AAAA,EAG9B,uBAAuB;AAAA,EACvB,iBAAiB;AAAA,EACjB,iBAAiB,CAAC,SAAS,SAAS,OAAK,UAAU,OAAO,GAAG,IAAI;AACnE;;;AkDtWA,uBAAS;AACT,qBAAS,iCAAkB;AAE3B,iBAAS;AA+CF,IAAM,kBAAkB;AAExB,IAAM,wBAAwB;AAErC,IAAM,iBAAiB;AAGhB,IAAM,kBAAkB,CAAC,WAA6C;AAAA,EAC3E,MAAM,aAAa,kBAAkB,OAAO,WAAW,QAAQ,IAAI;AAAA,EACnE,MAAM,SAAS,IAAI;AAAA,EACnB,MAAM,MAAM,CAAC,MAAc,MAAc,UAAwB;AAAA,IAC/D,OAAO,IAAI,MAAM,KAAK,OAAO,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC;AAAA;AAAA,EAEzD,IAAI,cAAc,MAAM,GAAG;AAAA,IACzB,IAAI,kBAAkB,gBAAgB,gBAAgB;AAAA,EACxD;AAAA,EACA,IAAI,OAAO,OAAO,WAAW,KAAK,SAAS,GAAG;AAAA,IAC5C,IAAI,2BAA2B,gBAAgB,yBAAyB;AAAA,EAC1E;AAAA,EACA,WAAW,QAAQ,0BAA0B,MAAM,GAAG;AAAA,IACpD,IAAI,MAAM,+BAA+B,GAAG;AAAA,EAC9C;AAAA,EACA,OAAO,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,cAAc;AAAA,IAC3C;AAAA,IACA,MAAM,GAAG,aAAa;AAAA,EACxB,EAAE;AAAA;AAIJ,IAAM,aAAa,CACjB,UAEA,MACG,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK,SAAS,GAAG,CAAC,EACzC,IAAI,CAAC,SAAS,CAAC,KAAK,MAAM,KAAK,OAAO,CAAC;AAM5C,IAAM,eAAe,CACnB,UAEA,MACG,OAAO,CAAC,SAAS,KAAK,KAAK,SAAS,GAAG,CAAC,EACxC,IAAI,CAAC,SAAS;AAAA,EACb,MAAM,OAAO,KAAK,KAAK,QAAQ,GAAG;AAAA,EAClC,OAAO;AAAA,IACL,KAAK,KAAK,MAAM,GAAG,IAAI;AAAA,IACvB,KAAK,KAAK,MAAM,OAAO,CAAC;AAAA,IACxB,KAAK;AAAA,EACP;AAAA,CACD;AAgBE,IAAM,gBAAgB,CAAC,YAAyC;AAAA,EACrE,QAAQ,WAAW;AAAA,EACnB,IAAI,OAAO,UAAU,WAAW,GAAG;AAAA,IACjC,OAAO,CAAC;AAAA,EACV;AAAA,EACA,MAAM,OAAO,kBAAkB,OAAO,WAAW,QAAQ,IAAI;AAAA,EAC7D,MAAM,QAAQ,IAAI,IAChB,QAAQ,SAAS,OAAO,IAAI,CAAC,UAC3B,cAAc,GAAG,OAAO,MAAM,MAAM,CACtC,CACF;AAAA,EACA,OAAO,OAAO,YACZ,kBAAkB,OAAO,EACtB,OACC,CAAC,aACC,EACE,cAAc,SAAS,IAAI,KAC3B,MAAM,IAAI,cAAc,SAAS,IAAI,CAAC,EAE5C,EACC,IAAI,CAAC,aAAa;AAAA,IACjB,cAAc,SAAS,IAAI;AAAA,IAC3B,CAAC,UAAU,SAAS,EAAE,GAAG,SAAS,MAAM;AAAA,EAC1C,CAAC,CACL;AAAA;AASK,IAAM,uBAAuB,CAClC,YAEA,QAAQ,OAAO,UAAU,WAAW,IAChC,CAAC,IACD,iBAAiB,kBAAkB,OAAO,CAAC;AAuC1C,IAAM,mBAAmB,CAC9B,OACA,UAA4B,CAAC,MAE7B,GAAG;AAAA,2DACsD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAO5C,KAAK,UAAU,QAAQ,QAAQ,EAAE;AAAA,qBAC3B,KAAK,UAAU,QAAQ,cAAc,QAAQ,CAAC,IAAI,kBAAkB;AAAA,wBACjE,KAAK,UAAU,WAAW,KAAK,CAAC;AAAA,mBACrC,KAAK,UAAU,aAAa,KAAK,CAAC;AAAA,oBACjC,KAAK,UAAU,QAAQ,aAAa,CAAC,CAAC;AAAA,4BAC9B,KAAK,UAAU,QAAQ,oBAAoB,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gCAyEzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA8CzB,IAAM,gBAAgB,OAC3B,SACA,QACkB;AAAA,EAIlB,MAAM,YAAY,OAAK,QAAQ,QAAQ,OAAO,GAAG,UAAU,cAAc;AAAA,EACzE,MAAM,QAAQ;AAAA,IACZ,GAAG,gBAAgB,QAAQ,MAAM;AAAA,IACjC,GAAI,YAAW,SAAS,IACpB;AAAA,MACE;AAAA,QACE,SAAS,KAAK,kBAAkB;AAAA,QAChC,MAAM,aAAa,QAAQ,MAAM;AAAA,MACnC;AAAA,IACF,IACA,CAAC;AAAA,EACP;AAAA,EACA,MAAM,YAAY,cAAc,OAAO;AAAA,EACvC,MAAM,mBAAmB,qBAAqB,OAAO;AAAA,EACrD,IACE,CAAC,QAAQ,OAAO,aAChB,MAAM,WAAW,KACjB,OAAO,KAAK,SAAS,EAAE,WAAW,KAClC,iBAAiB,WAAW,GAC5B;AAAA,IACA;AAAA,EACF;AAAA,EACA,MAAM,YAAY,OAAK,QAAQ,QAAQ,OAAO,GAAG,QAAQ;AAAA,EACzD,MAAM,QAAQ,OAAK,WAAW,eAAe;AAAA,EAC7C,IAAI,CAAC,YAAW,KAAK,GAAG;AAAA,IACtB,IAAI,KACF,2CAA2C,uFAC7C;AAAA,IACA;AAAA,EACF;AAAA,EACA,MAAM,SAAS,MAAM,WAAS,OAAO,OAAO;AAAA,EAC5C,IAAI,OAAO,WAAW,cAAc,GAAG;AAAA,IACrC;AAAA,EACF;AAAA,EACA,MAAM,OAAO,OAAO,OAAK,WAAW,qBAAqB,CAAC;AAAA,EAC1D,MAAM,WACJ,OACA,iBAAiB,OAAO;AAAA,IACtB,MAAM,kBAAkB,QAAQ,OAAO,WAAW,QAAQ,IAAI;AAAA,IAC9D;AAAA,IACA,WAAW,QAAQ,OAAO;AAAA,IAC1B;AAAA,EACF,CAAC,GACD,OACF;AAAA,EACA,IAAI,QAAQ,wDAAwD;AAAA;;;AC7W/D,IAAM,eAA+B;AAAA,EAC1C,OAAO;AAAA,IACL,QAAQ,GAAG,qBAAqB;AAAA,MAC9B,MAAM,SAAoC,CAAC;AAAA,MAC3C,IAAI,gBAAgB;AAAA,QAClB,OAAO,WAAW,EAAE,eAAe;AAAA,MACrC;AAAA,MACA,OAAO;AAAA;AAAA,IAET,eAAe,CAAC,gBAAgB;AAAA,IAChC,SAAS,OAAO,EAAE,MAAM,aAAa;AAAA,IACrC,SAAS;AAAA,EACX;AAAA,EACA,KAAK;AAAA,EACL,eAAe,SAAS,UAAU,KAAK,cAAc;AAAA,IAEnD,IAAI,CAAC,UAAU;AAAA,MACb,MAAM,cAAc,SAAS,GAAG;AAAA,IAClC;AAAA,IACA,OAAO;AAAA;AAAA,EAET,eAAe;AAAA,IACb,WAAW;AAAA,IACX,iBAAiB;AAAA,IACjB,aAAa;AAAA,EACf;AAAA,EACA,MAAM;AAAA,EACN,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,kBAAkB,EAAE,QAAQ,OAAO,QAAQ,MAAM;AAAA,EACjD,eAAe,CAAC;AAAA,EAChB,uBAAuB;AAAA,EACvB,iBAAiB;AAAA,EACjB,iBAAiB;AACnB;;;ACpDA,uBAAS;AACT,kBAAS,oBAAO,sBAAU,sBAAQ;AAElC,oBAAS,kBAAS;;;ACHlB,uBAAS,6BAAY;AACrB,8BAAkB;AAClB;AAEA,wBAAe;AACf,oBAAS,kBAAS,oBAAM;AACxB,cAAS;AAwCT,IAAM,WAAW,IAAI,IAAI,cAAc;AAGvC,IAAM,uBAAuB,CAAC,SAAS,UAAU,YAAY,SAAS,MAAI;AAMnE,IAAM,cAAc,CAAC,cAAqC;AAAA,EAC/D,IACE,UAAU,WAAW,GAAG,KACxB,UAAU,WAAW,GAAG,KACxB,qBAAqB,KAAK,CAAC,WAAW,UAAU,WAAW,MAAM,CAAC,KAClE,SAAS,IAAI,SAAS,GACtB;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,MAAM,WAAW,UAAU,MAAM,GAAG;AAAA,EACpC,IAAI,UAAU,WAAW,GAAG,GAAG;AAAA,IAC7B,OAAO,SAAS,UAAU,IAAI,GAAG,SAAS,MAAM,SAAS,OAAO;AAAA,EAClE;AAAA,EACA,OAAO,SAAS,MAAM;AAAA;AASxB,IAAM,gBACJ;AAGF,IAAM,iBAAiB;AAMvB,IAAM,oBAAoB,CAAC,WAA6B;AAAA,EACtD,MAAM,aAAuB,CAAC;AAAA,EAC9B,WAAW,WAAW,CAAC,eAAe,cAAc,GAAG;AAAA,IACrD,WAAW,SAAS,OAAO,SAAS,OAAO,GAAG;AAAA,MAC5C,MAAM,SAAS,MAAM,UAAU,CAAC;AAAA,MAChC,WAAW,KAAK,OAAO,QAAQ,OAAO,QAAQ,OAAO,WAAW,EAAE;AAAA,IACpE;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAYT,IAAM,kBAAkB,CAAC,QAAgB,SAA2B;AAAA,EAClE,OAAO,WAAW,OAAM,QAAQ,IAAI;AAAA,EACpC,MAAM,aAAuB,CAAC;AAAA,EAC9B,WAAW,SAAS,SAAS;AAAA,IAC3B,IAAI,MAAM,SAAS,aAAa,MAAM,MAAM;AAAA,MAC1C;AAAA,IACF;AAAA,IACA,IAAI,MAAM,WAAW;AAAA,MACnB,WAAW,KAAK,MAAM,SAAS;AAAA,IACjC;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAQF,IAAM,mBAAmB,OAC9B,QACA,OAAO,aACe;AAAA,EACtB,MAAM,KAAK;AAAA,EACX,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,aAAa,gBAAgB,QAAQ,IAAI;AAAA,IACzC,MAAM;AAAA,IACN,aAAa,kBAAkB,MAAM;AAAA;AAAA,EAEvC,MAAM,QAAQ,IAAI;AAAA,EAClB,WAAW,aAAa,YAAY;AAAA,IAClC,MAAM,YAAY,YAAY,SAAS;AAAA,IACvC,IAAI,WAAW;AAAA,MACb,MAAM,IAAI,SAAS;AAAA,IACrB;AAAA,EACF;AAAA,EACA,OAAO,CAAC,GAAG,KAAK;AAAA;AAIlB,IAAM,aAAa,CAAC,MAAc,MAAc,SAA0B;AAAA,EACxE,IAAI,MAAM;AAAA,EACV,UAAS;AAAA,IACP,IAAI,YAAW,OAAK,KAAK,gBAAgB,MAAM,cAAc,CAAC,GAAG;AAAA,MAC/D,OAAO;AAAA,IACT;AAAA,IACA,IAAI,QAAQ,MAAM;AAAA,MAChB,OAAO;AAAA,IACT;AAAA,IACA,MAAM,SAAS,SAAQ,GAAG;AAAA,IAC1B,IAAI,WAAW,KAAK;AAAA,MAClB,OAAO;AAAA,IACT;AAAA,IACA,MAAM;AAAA,EACR;AAAA;AAGF,IAAM,cAAc;AAGpB,IAAM,iBAAiB,IAAE,YAAY,EAAE,SAAS,IAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAGvE,IAAM,cAAc,OAAO,QAAmC;AAAA,EAC5D,MAAM,QAAkB,CAAC;AAAA,EACzB,MAAM,UAAU,MAAM,QAAQ,KAAK,EAAE,eAAe,KAAK,CAAC;AAAA,EAC1D,WAAW,SAAS,SAAS;AAAA,IAC3B,MAAM,OAAO,OAAK,KAAK,MAAM,IAAI;AAAA,IACjC,IAAI,MAAM,YAAY,GAAG;AAAA,MACvB,IAAI,MAAM,SAAS,gBAAgB;AAAA,QAEjC,MAAM,KAAK,GAAI,MAAM,YAAY,IAAI,CAAE;AAAA,MACzC;AAAA,IACF,EAAO,SAAI,MAAM,OAAO,KAAK,YAAY,KAAK,MAAM,IAAI,GAAG;AAAA,MACzD,MAAM,KAAK,IAAI;AAAA,IACjB;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AASF,IAAM,sBAAsB,OACjC,YAC8B;AAAA,EAC9B,MAAM,aAAa,OAAK,SAAS,iBAAiB;AAAA,EAClD,IAAI,CAAC,YAAW,UAAU,GAAG;AAAA,IAC3B,OAAO,CAAC;AAAA,EACV;AAAA,EACA,MAAM,SAAS,eAAe,UAC5B,KAAK,MAAM,MAAM,WAAS,YAAY,OAAO,CAAC,CAChD;AAAA,EACA,IAAI,CAAC,OAAO,WAAW,CAAC,OAAO,KAAK,SAAS;AAAA,IAC3C,OAAO,CAAC;AAAA,EACV;AAAA,EACA,MAAM,YAAY,SAAQ,OAAK,SAAS,OAAO,KAAK,OAAO,CAAC;AAAA,EAC5D,IAAI,CAAC,YAAW,SAAS,GAAG;AAAA,IAC1B,OAAO,CAAC;AAAA,EACV;AAAA,EACA,MAAM,UAAU,IAAI;AAAA,EACpB,WAAW,QAAQ,MAAM,YAAY,SAAS,GAAG;AAAA,IAE/C,MAAM,SAAS,MAAM,WAAS,MAAM,OAAO;AAAA,IAE3C,WAAW,QAAQ,MAAM,iBAAiB,QAAQ,IAAI,GAAG;AAAA,MACvD,IAAI,WAAW,MAAM,SAAQ,IAAI,GAAG,OAAO,GAAG;AAAA,QAC5C;AAAA,MACF;AAAA,MACA,MAAM,YAAY,QAAQ,IAAI,IAAI,KAAK,CAAC;AAAA,MACxC,UAAU,KAAK,UAAS,SAAS,IAAI,CAAC;AAAA,MACtC,QAAQ,IAAI,MAAM,SAAS;AAAA,IAC7B;AAAA,EACF;AAAA,EACA,OAAO,CAAC,GAAG,OAAO,EACf,IAAI,EAAE,MAAM,gBAAgB,EAAE,WAAW,KAAK,EAAE,EAChD,SAAS,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AAAA;AAQ7C,IAAM,uBAAuB,OAClC,cACmC;AAAA,EACnC,MAAM,eAAe,OAAK,WAAW,WAAW;AAAA,EAChD,IAAI,CAAC,YAAW,YAAY,GAAG;AAAA,IAC7B,OAAO,CAAC;AAAA,EACV;AAAA,EACA,MAAM,SAAgC,CAAC;AAAA,EACvC,MAAM,UAAU,MAAM,QAAQ,cAAc,EAAE,eAAe,KAAK,CAAC;AAAA,EACnE,WAAW,SAAS,QAAQ,SAAS,CAAC,GAAG,MAAO,EAAE,OAAO,EAAE,OAAO,KAAK,CAAE,GAAG;AAAA,IAC1E,IAAI,EAAE,MAAM,YAAY,KAAK,MAAM,KAAK,SAAS,OAAO,IAAI;AAAA,MAC1D;AAAA,IACF;AAAA,IACA,MAAM,MAAM,OAAK,cAAc,MAAM,IAAI;AAAA,IAEzC,MAAM,UAAU,MAAM,oBAAoB,GAAG;AAAA,IAC7C,IAAI,QAAQ,SAAS,GAAG;AAAA,MACtB,OAAO,KAAK,EAAE,KAAK,QAAQ,CAAC;AAAA,IAC9B;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAIF,IAAM,uBAAuB,MAAmB;AAAA,EACrD,MAAM,WAAsD,KAAK,MAC/D,cAAa,OAAK,YAAY,GAAG,cAAc,GAAG,OAAO,CAC3D;AAAA,EACA,OAAO,IAAI,IAAI,OAAO,KAAK,SAAS,gBAAgB,CAAC,CAAC,CAAC;AAAA;AAoBlD,IAAM,0BAA0B,OAAO,SAC5C,GAAG,YAAY,MAAM,4BAA4B,IAAI,CAAC,EAAE;AASnD,IAAM,wBAAwB,CACnC,OACA,MACA,iBACA,gBAAgB,qBACU;AAAA,EAC1B,MAAM,QAAQ,MAAM,QAAQ,IAAI,CAAC,UAAU,MAAM,IAAI;AAAA,EACrD,MAAM,QAAQ,MAAM,QAAQ,IAC1B,CAAC,UAAU,OAAO,MAAM,qBAAqB,MAAM,UAAU,KAAK,IAAI,IACxE;AAAA,EACA,MAAM,QAAQ,MAAM,KAAK,CAAC,SAAS,gBAAgB,IAAI,IAAI,CAAC;AAAA,EAC5D,MAAM,UAAU;AAAA,IACd,iCAAiC,UAAS,MAAM,MAAM,GAAG,KAAK,MAAM;AAAA,IACpE,GAAG;AAAA,IACH;AAAA,IACA,KAAK,iBAAiB,MAAM,KAAK,GAAG;AAAA,EACtC,EAAE,KAAK;AAAA,CAAI;AAAA,EACX,OAAO,EAAE,OAAO,QAAQ;AAAA;;;ACnQ1B,IAAM,UAAU,CAAC,SACf,KAAK,WAAW,WAAW,CAAC,WAAW,IAAI,OAAO,YAAY,IAAI,SAAS;AAG7E,IAAM,eAAe,OAAO;AAG5B,IAAM,eAAe;AAGrB,IAAM,cAAc,OAAO;AAG3B,IAAM,iBAAiB,OAAO;AAG9B,IAAM,iBAAiB,OAAO;AAG9B,IAAM,cAAc,CAAC,MAAc,QAAgB,aACjD,OAAO,kBAAkB,UAAU,2BAA2B,YAAY,gBAAgB,WAAW,MAAM;AAG7G,IAAM,aAAa,CAAC,SAAiB,YAAY,MAAM,aAAa,IAAI;AAGxE,IAAM,gBAAgB,CAAC,SACrB,YAAY,MAAM,gBAAgB,KAAK;AAGzC,IAAM,cAAc,YAAY,QAAQ,WAAW,GAAG,gBAAgB,IAAI;AAE1E,IAAM,gBAAgB,GAAG,QAAQ,OAAO,OAAO,QAAQ,IAAI,MAAM,QAAQ,UAAU;AAEnF,IAAM,YAAY,GAAG,QAAQ,cAAc,OAAO,QAAQ,SAAS,SAAS,QAAQ,MAAM;AAe1F,IAAM,SAAS,CAAC,WAAoC;AAAA,EAClD,KAAK;AAAA,EACL,MAAM;AAAA,EACN;AACF;AAGA,IAAM,aAAa,CAAC,SAAqC;AAAA,EACvD,EAAE,KAAK,CAAC,OAAO,WAAW,IAAI,CAAC,CAAC,EAAE;AAAA,EAClC,EAAE,KAAK,CAAC,OAAO,cAAc,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,OAAO,WAAW,CAAC,EAAE;AACvE;AAGO,IAAM,6BAA6B,WAAW,aAAa;AAQ3D,IAAM,yBAAyB,WAAW,SAAS;AAmB1D,IAAM,cAAc,CAClB,OACA,eACkB,WAAW,IAAI,CAAC,eAAe,KAAK,UAAU,UAAU,EAAE;AAG9E,IAAM,YAAW,CAAC,UAChB,OAAO,UAAU;AAGnB,IAAM,kBAAkB,IAAI,IAC1B,2BAA2B,QAAQ,GAAG,UACpC,IAAI,IAAI,CAAC,cAAc,UAAU,KAAK,CACxC,CACF;AAEA,IAAM,cAAc,EAAE,MAAM,SAAS;AAGrC,IAAM,0BAA0B;AAGhC,IAAM,sBAAsB;AAG5B,IAAM,sBAAsB;AAa5B,IAAM,yBAAyB;AAE/B,IAAM,iBAAiB;AAQvB,IAAM,eAAe,CAAC,UACpB,UAAU,KAAK,EAAE,QAAQ,gBAAgB,MAAM;AAMjD,IAAM,aAAa,CAAC,SAClB,IAAI,aAAa,cAAc,MAAM,GAAG,CAAC;AAW3C,IAAM,yBAAyB,CAAC,SAAgC;AAAA,EAC9D,MAAM,OAAO,cAAc,MAAM,uBAAuB;AAAA,EACxD,MAAM,SAAS,aAAa,IAAI;AAAA,EAChC,OAAO;AAAA,IACL,GAAG,YACD,EAAE,MAAM,SAAS,aAAa,KAAK,IAAI,cAAc,QAAQ,IAAI,GACjE,0BACF;AAAA,IACA,EAAE,MAAM,KAAK,IAAI,qBAAqB,QAAQ,IAAI;AAAA,EACpD;AAAA;AAUF,IAAM,qBAAqB,CAAC,SAAgC;AAAA,EAC1D,MAAM,OAAO,cAAc,MAAM,mBAAmB;AAAA,EACpD,MAAM,SAAS,aAAa,IAAI;AAAA,EAChC,OAAO;AAAA,IACL,GAAG,YACD,EAAE,MAAM,SAAS,aAAa,KAAK,IAAI,cAAc,QAAQ,IAAI,GACjE,sBACF;AAAA,IACA,EAAE,MAAM,KAAK,IAAI,qBAAqB,QAAQ,IAAI;AAAA,EACpD;AAAA;AAIF,IAAM,gBAAgB,CAAC,aAA4C;AAAA,EACjE,MAAM,SAAqB,CAAC;AAAA,EAC5B,IAAI,UAAoB,CAAC;AAAA,EACzB,IAAI,SAAS;AAAA,EACb,WAAW,WAAW,UAAU;AAAA,IAC9B,IACE,QAAQ,SAAS,KACjB,SAAS,QAAQ,SAAS,IAAI,wBAC9B;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,MACnB,UAAU,CAAC;AAAA,MACX,SAAS;AAAA,IACX;AAAA,IACA,QAAQ,KAAK,OAAO;AAAA,IACpB,UAAU,QAAQ,SAAS;AAAA,EAC7B;AAAA,EACA,IAAI,QAAQ,SAAS,GAAG;AAAA,IACtB,OAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EACA,OAAO;AAAA;AAiCF,IAAM,yBAAyB,CACpC,YACA,YACA,OAAO,OACe;AAAA,EACtB,MAAM,OAAO,WAAW,SAAS,GAAG;AAAA,EACpC,MAAM,OAAO,WACV,OAAO,CAAC,SAAS,SAAS,GAAG,EAC7B,IAAI,CAAC,SAAS,aAAa,cAAc,MAAM,IAAI,CAAC,CAAC;AAAA,EACxD,MAAM,SAAS,cAAc,IAAI;AAAA,EAEjC,MAAM,gBAA+B,OACjC,YACE;AAAA,IACE,MAAM,cAAc,MAAM,WAAW;AAAA,IACrC,SACE,eAAe,YACX,cACA,KAAK,aAAa,qBAAqB,OAAO,UAAU,EAAE;AAAA,IAChE,KAAK,WAAW,IAAI;AAAA,EACtB,GACA,0BACF,IACA,CAAC;AAAA,EACL,WAAW,SAAS,QAAQ;AAAA,IAC1B,cAAc,KACZ,GAAG,YACD;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,MACT,KAAK,KAAK,MAAM,KAAK,GAAG;AAAA,IAC1B,GACA,0BACF,CACF;AAAA,EACF;AAAA,EAEA,MAAM,eAAe,cACnB,OAAO,CAAC,aAAa,cAAc,MAAM,GAAG,CAAC,GAAG,GAAG,IAAI,IAAI,IAC7D;AAAA,EACA,MAAM,eAA8B,aAAa,IAAI,CAAC,WAAW;AAAA,IAC/D,UAAU;AAAA,IACV,SAAS;AAAA,IACT,KAAK,OAAO,MAAM,KAAK,GAAG;AAAA,EAC5B,EAAE;AAAA,EAEF,OAAO,EAAE,cAAc,cAAc;AAAA;AAGvC,IAAM,mBAAmB;AAOzB,IAAM,YAAY,CAAC,MAAc,UAA+B;AAAA,EAC9D,UAAU;AAAA,EACV,SAAS,EAAE,+BAA+B,iBAAiB;AAAA,EAC3D,KAAK,IAAI,aAAa,cAAc,MAAM,IAAI,CAAC;AACjD;AAMA,IAAM,iBAAiB,CAAC,SACtB,OAAO,OAAO,aAAa,IAAI;AAQjC,IAAM,gBAAgB,CAAC,UAA+B;AAAA,EACpD,UAAU;AAAA,EACV,SAAS,OAAO,YACd,OAAO,QAAQ,iBAAiB,EAAE,IAAI,EAAE,MAAM,WAAW;AAAA,IACvD,KAAK,YAAY;AAAA,IACjB;AAAA,EACF,CAAC,CACH;AAAA,EACA,KAAK,eAAe,IAAI;AAC1B;AAGA,IAAM,kBAAkB,CAAC,SACvB,IAAI,aAAa,IAAI;AAQvB,IAAM,iBAAiB,CAAC,UAA+B;AAAA,EACrD,UAAU;AAAA,EACV,SAAS,OAAO,YACd,OAAO,QAAQ,kBAAkB,EAAE,IAAI,EAAE,MAAM,WAAW;AAAA,IACxD,KAAK,YAAY;AAAA,IACjB;AAAA,EACF,CAAC,CACH;AAAA,EACA,KAAK,gBAAgB,IAAI;AAC3B;AAGA,IAAM,mBAAmB,CAAC,OAAoB,SAC5C,MAAM,aAAa,QAAQ,MAAM,QAAQ,gBAAgB,IAAI;AAG/D,IAAM,cAAc,CAAC,UACnB,MAAM,aAAa,QACnB,MAAM,UAAU,mCAAmC,oBACnD,UAAS,MAAM,GAAG,KAClB,OAAO,KAAK,KAAK,EAAE,WAAW;AAahC,IAAM,qBAAqB,CAAC,OAAoB,SAC9C,MAAM,KAAK,KAAK,CAAC,cAAc,gBAAgB,IAAI,UAAU,KAAK,CAAC,MACjE,QACD,MAAM,SAAS,cAAc,MAAM,uBAAuB,KACzD,MAAM,WAAW,OAClB,MAAM,SAAS,cAAc,MAAM,mBAAmB,KACrD,MAAM,WAAW,OAClB,MAAM,aAAa,QAClB,MAAM,SAAS,SAAS,YACxB,UAAS,MAAM,GAAG,KAClB,OAAO,KAAK,KAAK,EAAE,WAAW,KAC/B,MAAM,aAAa,QAClB,UAAS,MAAM,SAAS,IAAI,KAC5B,MAAM,QAAQ,WAAW,IAAI,KAC7B,OAAO,KAAK,KAAK,EAAE,WAAW,KAChC,YAAY,KAAK,KAChB,MAAM,aAAa,QAAQ,MAAM,QAAQ,eAAe,IAAI,KAC7D,iBAAiB,OAAO,IAAI;AA4BvB,IAAM,0BAA0B,CACrC,YACA,YACA,gBACA,sBACA,YACA,WAA6B,CAAC,GAC9B,YAA+B,CAAC,GAChC,YAAY,OACZ,OAAO,IACP,YAAY,UACM;AAAA,EAClB,MAAM,kBAAkB,OAAO,QAAQ,wBAAwB,CAAC,CAAC;AAAA,EACjE,IAAI;AAAA,EAIJ,IAAI;AAAA,IACF,SAAS,KAAK,MAAM,UAAU;AAAA,IAC9B,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET,IAAI,CAAC,MAAM,QAAQ,OAAO,MAAM,GAAG;AAAA,IACjC,OAAO;AAAA,EACT;AAAA,EACA,YAAY,MAAM,gBAAgB,iBAAiB;AAAA,IAGjD,OAAO,YAAY,KAAK,OAAO,YAAY,OAAO,EAAE,YAAY,EAAE;AAAA,EACpE;AAAA,EACA,MAAM,SAAS,OAAO,OAAO,OAC3B,CAAC,UAAU,CAAC,mBAAmB,OAAO,IAAI,CAC5C;AAAA,EACA,MAAM,kBAAkB,OAAO,UAC7B,CAAC,UAAU,MAAM,WAAW,YAC9B;AAAA,EACA,IAAI,oBAAoB,IAAI;AAAA,IAC1B,OAAO;AAAA,EACT;AAAA,EACA,QAAQ,cAAc,kBAAkB,uBACtC,YACA,YACA,IACF;AAAA,EACA,IAAI,gBAAgB;AAAA,IAClB,aAAa,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,SAAS,EAAE,MAAM,eAAe;AAAA,MAChC,KAAK,WAAW,IAAI;AAAA,IACtB,CAAC;AAAA,EACH;AAAA,EACA,aAAa,KAAK,GAAG,UAAU,IAAI,CAAC,SAAS,UAAU,MAAM,IAAI,CAAC,CAAC;AAAA,EACnE,IAAI,WAAW;AAAA,IACb,aAAa,KAAK,cAAc,IAAI,CAAC;AAAA,EACvC;AAAA,EAIA,OAAO,OAAO,iBAAiB,GAAG,GAAG,cAAc,GAAG,aAAa;AAAA,EACnE,IAAI,WAAW;AAAA,IACb,OAAO,QAAQ,eAAe,IAAI,CAAC;AAAA,EACrC;AAAA,EACA,MAAM,iBAAiB;AAAA,IACrB,GAAI,SAAS,WAAW,uBAAuB,IAAI,IAAI,CAAC;AAAA,IACxD,GAAI,SAAS,OAAO,mBAAmB,IAAI,IAAI,CAAC;AAAA,EAClD;AAAA,EACA,IAAI,eAAe,SAAS,GAAG;AAAA,IAC7B,MAAM,eAAe,cAAc,MAAM,mBAAmB;AAAA,IAC5D,MAAM,gBAAgB,OAAO,UAC3B,CAAC,UAAU,MAAM,WAAW,OAAO,MAAM,SAAS,YACpD;AAAA,IACA,IAAI,kBAAkB,IAAI;AAAA,MACxB,OAAO,OAAO,eAAe,GAAG,GAAG,cAAc;AAAA,IACnD;AAAA,EACF;AAAA,EACA,OAAO,SAAS;AAAA,EAChB,OAAO,GAAG,KAAK,UAAU,QAAQ,MAAM,IAAI;AAAA;AAAA;AAWtC,IAAM,uBAAuB,CAClC,YACA,mBACkB;AAAA,EAClB,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,SAAS,KAAK,MAAM,UAAU;AAAA,IAC9B,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET,IAAI,CAAC,MAAM,QAAQ,OAAO,MAAM,GAAG;AAAA,IACjC,OAAO;AAAA,EACT;AAAA,EACA,MAAM,OAAO,IAAI,IAAI,eAAe,IAAI,CAAC,UAAU,MAAM,GAAG,CAAC;AAAA,EAC7D,MAAM,SAAS,OAAO,OAAO,OAC3B,CAAC,UAAU,EAAE,KAAK,IAAI,MAAM,GAAG,KAAK,UAAS,MAAM,SAAS,QAAQ,EACtE;AAAA,EACA,MAAM,kBAAkB,OAAO,UAC7B,CAAC,UAAU,MAAM,WAAW,YAC9B;AAAA,EACA,IAAI,oBAAoB,IAAI;AAAA,IAC1B,OAAO;AAAA,EACT;AAAA,EACA,OAAO,OAAO,iBAAiB,GAAG,GAAG,cAAc;AAAA,EACnD,OAAO,SAAS;AAAA,EAChB,OAAO,GAAG,KAAK,UAAU,QAAQ,MAAM,IAAI;AAAA;AAAA;AAQ7C,IAAM,uBAAuB,CAAC,UAC5B,MAAM,SAAS,aAAa;AAG9B,IAAM,YAAY;AAOlB,IAAM,eAAe,CAAC,KAAa,WAA2B;AAAA,EAC5D,MAAM,OAAO,IAAI,WAAW,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI;AAAA,EAClD,OAAO,IAAI,SAAS,UAAU,KAAK,IAAI,IAAI,MAAM;AAAA;AAiB5C,IAAM,sBAAsB,CACjC,YACA,MACA,mBACkB;AAAA,EAClB,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,SAAS,KAAK,MAAM,UAAU;AAAA,IAC9B,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET,IAAI,CAAC,MAAM,QAAQ,OAAO,MAAM,GAAG;AAAA,IACjC,OAAO;AAAA,EACT;AAAA,EACA,MAAM,kBAAkB,OAAO,OAAO,UACpC,CAAC,UAAU,MAAM,WAAW,YAC9B;AAAA,EACA,IAAI,oBAAoB,IAAI;AAAA,IAC1B,OAAO;AAAA,EACT;AAAA,EACA,MAAM,SAAS,aAAa,IAAI;AAAA,EAChC,MAAM,SAAS,OAAO,OAAO,QAAQ,CAAC,OAAO,UAAyB;AAAA,IAGpE,IAAI,QAAQ,mBAAmB,UAAS,MAAM,SAAS,QAAQ,GAAG;AAAA,MAChE,OAAO,qBAAqB,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC;AAAA,IAClD;AAAA,IACA,MAAM,UAAU,KAAK,MAAM;AAAA,IAC3B,IAAI,UAAS,MAAM,GAAG,GAAG;AAAA,MACvB,QAAQ,MAAM,aAAa,MAAM,KAAK,MAAM;AAAA,IAC9C;AAAA,IACA,IAAI,MAAM,WAAW,OAAO,MAAM,SAAS,qBAAqB;AAAA,MAC9D,QAAQ,OAAO,cAAc,MAAM,mBAAmB;AAAA,IACxD;AAAA,IACA,OAAO,CAAC,OAAO;AAAA,GAChB;AAAA,EACD,OAAO,OACL,OAAO,UAAU,CAAC,UAAU,MAAM,WAAW,YAAY,GACzD,GACA,GAAG,cACL;AAAA,EACA,OAAO,SAAS;AAAA,EAChB,OAAO,GAAG,KAAK,UAAU,QAAQ,MAAM,IAAI;AAAA;AAAA;;;AFhmBtC,IAAM,mBAAiC;AAAA,EAC5C,OAAO;AAAA,EACP,MAAM;AACR;AAQA,IAAM,iBAAiB,CAAC,YACtB,OAAK,YAAY,OAAO,GAAG,WAAW,QAAQ;AAGhD,IAAM,YAAY,CAAC,SAAyB,SAC1C,OAAK,eAAe,OAAO,GAAG,UAAU,IAAI;AAG9C,IAAM,iBAAiB,CAAC,YACtB,kBAAkB,QAAQ,OAAO,WAAW,QAAQ,IAAI;AAUnD,IAAM,6BAA6B,OACxC,WACA,MACA,QACqB;AAAA,EACrB,MAAM,SAAS,MAAM,qBAAqB,SAAS;AAAA,EACnD,MAAM,MAAM,qBAAqB;AAAA,EAEjC,MAAM,gBAAgB,MAAM,wBAAwB,IAAI;AAAA,EACxD,IAAI,QAAQ;AAAA,EACZ,WAAW,SAAS,QAAQ;AAAA,IAC1B,MAAM,UAAU,sBAAsB,OAAO,MAAM,KAAK,aAAa;AAAA,IACrE,IAAI,QAAQ,OAAO;AAAA,MACjB,QAAQ;AAAA,MACR,IAAI,MAAM,QAAQ,OAAO;AAAA,IAC3B,EAAO;AAAA,MACL,IAAI,KAAK,QAAQ,OAAO;AAAA;AAAA,EAE5B;AAAA,EACA,OAAO,CAAC;AAAA;AAWH,IAAM,wBAAwB,OACnC,SACA,QACkB;AAAA,EAClB,QAAQ,QAAQ,YAAY;AAAA,EAC5B,MAAM,aAAa,OAAK,eAAe,OAAO,GAAG,aAAa;AAAA,EAC9D,IAAI,CAAC,YAAW,UAAU,GAAG;AAAA,IAC3B;AAAA,EACF;AAAA,EACA,MAAM,OAAO,eAAe,OAAO;AAAA,EACnC,MAAM,aAAa,mBAAmB,OAAO;AAAA,EAE7C,MAAM,YAAoC,CAAC;AAAA,EAC3C,IAAI,cAAc,MAAM,GAAG;AAAA,IACzB,UAAU,cAAc,MAAM,gBAAgB,EAAE,MAAM,CAAC,KACrD;AAAA,EACJ;AAAA,EACA,IAAI,OAAO,OAAO,WAAW,KAAK,SAAS,GAAG;AAAA,IAC5C,UAAU,cAAc,MAAM,yBAAyB,EAAE,MAAM,CAAC,KAC9D;AAAA,EACJ;AAAA,EAIA,MAAM,cAAc,MAAM,iBAAiB,OAAO;AAAA,EAClD,MAAM,OAAO,YAAY;AAAA,EAIzB,MAAM,WAAW,UAAU,SAAS,IAAI;AAAA,EACxC,MAAM,WAAW,wBACf,MAAM,WAAS,YAAY,OAAO,GAClC,YACA,oBAAoB,QAAQ,UAAU,GACtC,WACA,OAAO,mBAAmB,cAAc,IAAI,CAAC,IAAI,WACjD;AAAA,IACE,MAAM,YAAW,OAAK,UAAU,UAAU,CAAC;AAAA,IAC3C,UAAU,YAAW,OAAK,UAAU,QAAQ,CAAC;AAAA,EAC/C,GACA,0BAA0B,MAAM,GAGhC,YAAW,OAAK,UAAU,cAAc,CAAC,GACzC,MACA,OAAO,SACT;AAAA,EACA,IAAI,aAAa,MAAM;AAAA,IACrB,IAAI,KACF,kIACF;AAAA,IACA;AAAA,EACF;AAAA,EACA,MAAM,WAAU,YAAY,UAAU,OAAO;AAAA,EAC7C,IAAI,QACF,wEACF;AAAA;AAQK,IAAM,6BAA6B,OACxC,SACA,QACkB;AAAA,EAClB,MAAM,SAAS,oBAAoB,kBAAkB,OAAO,CAAC;AAAA,EAC7D,MAAM,aAAa,OAAK,eAAe,QAAQ,OAAO,GAAG,aAAa;AAAA,EACtE,IAAI,OAAO,WAAW,KAAK,CAAC,YAAW,UAAU,GAAG;AAAA,IAClD;AAAA,EACF;AAAA,EACA,MAAM,WAAW,qBACf,MAAM,WAAS,YAAY,OAAO,GAClC,MACF;AAAA,EACA,IAAI,aAAa,MAAM;AAAA,IACrB,IAAI,KACF,sGACF;AAAA,IACA;AAAA,EACF;AAAA,EACA,MAAM,WAAU,YAAY,UAAU,OAAO;AAAA;AAS/C,IAAM,sBAAsB,CAAC,cAC3B,UACG,OAAO,CAAC,aAAa,CAAC,cAAc,SAAS,IAAI,CAAC,EAClD,IAAI,GAAG,MAAM,QAAQ,UAAU;AAAA,EAC9B,SAAS,EAAE,UAAU,UAAU,EAAE,EAAE;AAAA,EACnC,KAAK,cAAc,EAAE,OAAO,CAAC,EAAE,MAAM,QAAQ,MAAM,KAAK,CAAC,GAAG,QAAQ,GAAG,CAAC,EACrE;AAAA,EACH;AACF,EAAE;AAUC,IAAM,sBAAsB,OACjC,SACA,SACkB;AAAA,EAClB,MAAM,OAAO,UAAU,SAAS,EAAE;AAAA,EAClC,IAAI,CAAC,QAAQ,CAAC,YAAW,IAAI,GAAG;AAAA,IAC9B;AAAA,EACF;AAAA,EAEA,MAAM,UAAU,OAAK,eAAe,OAAO,GAAG,gBAAgB;AAAA,EAC9D,MAAM,QAAO,MAAM,OAAO;AAAA,EAC1B,MAAM,SAAS,UAAU,SAAS,IAAI;AAAA,EACtC,MAAM,OAAM,SAAQ,MAAM,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EAChD,MAAM,QAAO,SAAS,MAAM;AAAA;AASvB,IAAM,qBAAqB,OAChC,SACA,QACqB;AAAA,EACrB,MAAM,OAAO,eAAe,OAAO;AAAA,EACnC,MAAM,aAAa,OAAK,eAAe,QAAQ,OAAO,GAAG,aAAa;AAAA,EACtE,IAAI,CAAC,QAAQ,CAAC,YAAW,UAAU,GAAG;AAAA,IACpC,OAAO;AAAA,EACT;AAAA,EACA,MAAM,UAAU,oBACd,MAAM,WAAS,YAAY,OAAO,GAClC,MACA,oBAAoB,kBAAkB,OAAO,CAAC,CAChD;AAAA,EACA,IAAI,YAAY,MAAM;AAAA,IACpB,IAAI,MACF,sFAAsF,+CACxF;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,MAAM,WAAU,YAAY,SAAS,OAAO;AAAA,EAC5C,OAAO;AAAA;AAeF,IAAM,iBAAiC;AAAA,EAC5C,OAAO;AAAA,IACL,QAAQ,OAAO,CAAC;AAAA,IAChB,eAAe,CAAC;AAAA,IAChB,SAAS,OAAO,CAAC;AAAA,IACjB,SAAS;AAAA,EACX;AAAA,EACA,KAAK;AAAA,IACH,QAAQ,CAAC,QAAQ,QAAQ,IAAI,MAAM;AAAA,IAKnC,MAAM,CAAC,QACL,UAAU,IAAI,6BAA6B,KAAK,UAAU,IAAI,UAAU;AAAA,EAC5E;AAAA,EACA,eAAe,SAAS,UAAU,KAAK,cAAc;AAAA,IACnD,QAAQ,YAAY;AAAA,IACpB,MAAM,KAAK,MAAM,2BACf,eAAe,OAAO,GACtB,QAAQ,MACR,GACF;AAAA,IACA,IAAI,CAAC,IAAI;AAAA,MACP,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,oBAAoB,SAAS,eAAe,OAAO,CAAC;AAAA,IAG1D,IAAI,UAAU;AAAA,MACZ,OAAO;AAAA,IACT;AAAA,IACA,IAAI,CAAE,MAAM,mBAAmB,SAAS,GAAG,GAAI;AAAA,MAC7C,OAAO;AAAA,IACT;AAAA,IACA,MAAM,sBAAsB,SAAS,GAAG;AAAA,IACxC,MAAM,2BAA2B,SAAS,GAAG;AAAA,IAC7C,OAAO;AAAA;AAAA,EAET,eAAe;AAAA,IACb,WAAW;AAAA,IACX,iBAAiB;AAAA,IACjB,aAAa;AAAA,EACf;AAAA,EACA,MAAM;AAAA,EACN,oBAAoB;AAAA,EAEpB,eAAe;AAAA,EACf,kBAAkB,EAAE,QAAQ,OAAO,QAAQ,MAAM;AAAA,EACjD,eAAe,CAAC,gBAAgB;AAAA,EAChC,uBAAuB;AAAA,EACvB,iBAAiB;AAAA,EACjB,iBAAiB;AACnB;;;AG/TO,IAAM,iBAAiC;AAAA,EAC5C,OAAO;AAAA,EACP,KAAK;AAAA,EACL,eAAe;AAAA,EACf,eAAe;AAAA,IACb,WAAW;AAAA,IACX,iBAAiB;AAAA,IACjB,aAAa;AAAA,EACf;AAAA,EACA,MAAM;AAAA,EACN,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,kBAAkB,EAAE,QAAQ,OAAO,QAAQ,KAAK;AAAA,EAChD,eAAe,CAAC,gBAAgB,gBAAgB;AAAA,EAChD,uBAAuB;AAAA,EACvB,iBAAiB;AAAA,EACjB,iBAAiB;AACnB;;;ACdO,IAAM,mBAA8C;AAAA,EACzD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,SAAS,IAAI,IACjB,iBAAiB,IAAI,CAAC,aAAa,CAAC,SAAS,MAAM,QAAQ,CAAC,CAC9D;AAGO,IAAM,iBAAiB,CAC5B,eACmB;AAAA,EACnB,MAAM,WAAW,OAAO,IAAI,WAAW,IAAI;AAAA,EAC3C,IAAI,CAAC,UAAU;AAAA,IACb,MAAM,IAAI,MAAM,+BAA+B,WAAW,QAAQ;AAAA,EACpE;AAAA,EACA,OAAO;AAAA;AASF,IAAM,sBAAsB,CACjC,YACA,QACkB;AAAA,EAClB,MAAM,MAAM,eAAe,UAAU;AAAA,EACrC,MAAM,aAAa,CAAC,KAAK,GAAG,iBAAiB,OAAO,CAAC,MAAM,MAAM,GAAG,CAAC;AAAA,EACrE,MAAM,WAAW,WAAW,KAC1B,CAAC,aAAa,SAAS,KAAK,OAAO,GAAG,KAAK,KAC7C;AAAA,EAEA,OAAO,UAAU,KAAK,KAAK,GAAG,KAAK;AAAA;;;ACvDrC,uBAAS;AAET,uBAAS,qBAAY,mBAAM;AAM3B,IAAM,mBAAmB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,kBAAkB,CAAC,WAAW;AACpC,IAAM,uBAAuB,CAAC,kBAAkB,eAAe;AAE/D,IAAM,gBAAgB,CAAC,MAAc,UAAmC;AAAA,EACtE,WAAW,QAAQ,OAAO;AAAA,IACxB,MAAM,YAAY,OAAK,MAAM,IAAI;AAAA,IACjC,IAAI,YAAW,SAAS,GAAG;AAAA,MACzB,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAIF,IAAM,iBAAiB,CAAC,SAC7B,cAAc,MAAM,gBAAgB;AAG/B,IAAM,qBAAqB,CAAC,SACjC,cAAc,MAAM,oBAAoB;AAOnC,IAAM,oBAAoB,CAC/B,MACA,aAAa,aAEb,YAAW,UAAU,IAAI,aAAa,OAAK,SAAQ,IAAI,GAAG,UAAU;AAQ/D,IAAM,wBAAwB,CACnC,MACA,QACA,YACmB;AAAA,EACnB,MAAM,eAAe,SAAQ,IAAI;AAAA,EAGjC,MAAM,cAAc,sBAAsB,QAAQ,YAAY,EAAE;AAAA,EAEhE,MAAM,YAAY,OAAK,cAAc,OAAO,QAAQ,KAAK;AAAA,EACzD,MAAM,YAAY,YAAW,SAAS,IAAI,YAAY;AAAA,EAEtD,MAAM,SAAS,kBAAkB,cAAc,SAAS,UAAU;AAAA,EAGlE,MAAM,UAAU,SAAS,aACrB,OAAK,QAAQ,MAAM,IACnB,OAAK,cAAc,MAAM;AAAA,EAE7B,OAAO;AAAA,IACL,gBAAgB,mBAAmB,YAAY;AAAA,IAC/C,YAAY,eAAe,YAAY;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN,WAAW,cAAc,cAAc,eAAe;AAAA,EACxD;AAAA;;;ACjFF,uBAAS,8BAAY;AAErB,qBAAS;AACT,cAAS;;;ACQF,IAAM,qBAAqB,CAChC,QACA,MAAyB,QAAQ,QACd;AAAA,EACnB,QAAQ,eAAe;AAAA,EACvB,IAAI,WAAW,QAAQ,MAAM;AAAA,IAC3B,OAAO;AAAA,EACT;AAAA,EACA,MAAM,OAAO,oBAAoB,YAAY,GAAG;AAAA,EAChD,IAAI,CAAC,MAAM;AAAA,IACT,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA,OACF;AAAA,IACH,YAAY;AAAA,SACP;AAAA,MACH,SAAS,KAAK,WAAW,SAAS,KAAK;AAAA,IACzC;AAAA,EACF;AAAA;;;AC7BF;AASO,IAAM,qBAAqB,MAA4C;AAAA,EAC5E,MAAM,OAAO,WAAW,YAAY,KAAK,EAAE,aAAa,MAAM,CAAC;AAAA,EAC/D,OAAO,OAAO,SAAiB;AAAA,IAC7B,MAAM,SAAS,MAAM,KAAK,OAA8B,IAAI;AAAA,IAC5D,OAAO,QAAQ,WAAW;AAAA;AAAA;AAavB,IAAM,4BAAuD,MAAM;AAAA,EACxE,MAAM,OAAO,WAAW,YAAY,KAAK;AAAA,IACvC,gBAAgB;AAAA,IAChB,aAAa;AAAA,EACf,CAAC;AAAA,EACD,OAAO,OAAO,SAAiB;AAAA,IAC7B,MAAM,SAAS,MAAM,KAAK,OAA8B,IAAI;AAAA,IAC5D,OAAO,OAAO,WAAW;AAAA;AAAA;;;AFgJtB,MAAM,8BAA8B,WAAW;AAAA,EAC3C;AAAA,EAET,WAAW,CAAC,YAAwB,QAAsB;AAAA,IACxD,MAAM,UAAU;AAAA,IAChB,KAAK,OAAO;AAAA,IACZ,KAAK,SAAS;AAAA;AAElB;AAiBA,IAAM,qBAAqB,0BAA0B;AASrD,IAAM,wBAAwB,IAAE,YAAY;AAAA,EAC1C,OAAO,IAAE,YAAY,EAAE,OAAO,IAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS;AACnE,CAAC;AAED,IAAM,gBAAgB,CAAC,YACrB,OAAO,YAAY;AAOrB,IAAM,eAAe,CAAC,UAAiD;AAAA,EACrE,GAAG,MAAM,KAAK,OAAO,aAAa;AAAA,EAClC,GAAI,MAAM,SAAS,sBAAsB,MAAM,KAAK,MAAM,GAAG,CAAC,IAAI,CAAC;AACrE;AAGA,IAAM,WAAW,CAAC,eAChB,WAAW,QAAQ,OAAO;AAQ5B,IAAM,eAAe,CACnB,OACA,YACiB;AAAA,EACjB,MAAM,OAAO;AAAA,EACb,MAAM,UAAU,sBACd,MAAM,OAAO,IAAI,CAAC,WAAW;AAAA,IAC3B,SAAS,MAAM;AAAA,IACf,MAAM,aAAa,KAAK;AAAA,EAC1B,EAAE,GACF,EAAE,MAAM,QAAQ,QAAQ,OAAO,CACjC;AAAA,EACA,OAAO,mBAAmB,OAAO,EAAE,SAAS,QAAQ,CAAC,EAClD,IAAI,CAAC,YAAY,WAAW;AAAA,OACxB;AAAA,IACH,QAAQ,QAAQ,QAAQ;AAAA,IACxB,MAAM,QAAQ,QAAQ;AAAA,EACxB,EAAE,EACD,SACC,CAAC,GAAG,MACF,OAAO,QAAQ,EAAE,UAAU,CAAC,IAAI,OAAO,QAAQ,EAAE,UAAU,CAAC,KAC5D,SAAS,CAAC,IAAI,SAAS,CAAC,CAC5B;AAAA;AAOG,IAAM,aAAa,OACxB,MAMA,UAAqC,CAAC,MACR;AAAA,EAC9B,MAAM,aAAa,eAAe,IAAI;AAAA,EAEtC,IAAI;AAAA,EACJ,IAAI,YAAY;AAAA,IACd,IAAI;AAAA,MACF,MAAM,MAAM,mBAAmB,UAAU;AAAA,MACzC,OAAO,OAAO;AAAA,MAId,MAAM,IAAI,WAAW;AAAA,QACnB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS,0BAA2B,MAAgB;AAAA,QACpD,UAAU;AAAA,MACZ,CAAC;AAAA;AAAA,IAKH,IAAI,QAAQ,WAAW;AAAA,MACrB,MAAM,IAAI,WAAW;AAAA,QACnB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS,GAAG,UAAS,UAAU;AAAA,QAC/B,UAAU;AAAA,QACV,YACE;AAAA,MACJ,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAGA,MAAM,QAAQ,sBAAsB,UAAU,GAAG;AAAA,EACjD,MAAM,uBACJ,MAAM,WAAW,MAAM,KAAK,OAAO,UAAU;AAAA,EAE/C,MAAM,SAAS,kBAAkB,UAAU,OAAO,CAAC,CAAC;AAAA,EACpD,IAAI,CAAC,OAAO,SAAS;AAAA,IAEnB,MAAM,SACJ,cAAc,aAAW,UAAU,IAC/B,cAAa,YAAY,OAAO,IAChC;AAAA,IACN,MAAM,cAAc,aAAa,OAAO,OAAO;AAAA,MAC7C,MAAM,cAAc;AAAA,MACpB;AAAA,IACF,CAAC;AAAA,IACD,OAAO,UAAU,QAAQ;AAAA,IACzB,MAAM,UAAU,SAAS;AAAA,MACvB,MAAM;AAAA,MACN,MAAM,cAAc;AAAA,MACpB,SAAS;AAAA,MACT,UAAU;AAAA,IACZ;AAAA,IAGA,MAAM,aAAa,KAAK,IAAI,CAAC,MAAM,OAAO,EAAE,SAAS,EAAE,KAAK;AAAA,CAAI;AAAA,IAChE,MAAM,SACJ,KAAK,SAAS,IACV;AAAA,SACK;AAAA,MACH,SAAS,GAAG,QAAQ;AAAA,EAAY,KAAK;AAAA,EAAiC;AAAA,IACxE,IACA;AAAA,IACN,MAAM,IAAI,sBAAsB,QAAQ,WAAW;AAAA,EACrD;AAAA,EAKA,MAAM,SAAS,mBAAmB,OAAO,IAAI;AAAA,EAC7C,MAAM,OAAO,OAAO,WAAW,QAAQ,QAAQ,QAAQ;AAAA,EAIvD,MAAM,YAAY,OAAO,IAAI,GAAG,WAAW,QAAQ,IAAI;AAAA,EAEvD,OAAO;AAAA,IACL,QAAQ;AAAA,SACH;AAAA,MACH,YAAY,OACR;AAAA,WACK,OAAO;AAAA,QACV,SAAS,KAAK,OAAO,WAAW,SAAS,KAAK;AAAA,MAChD,IACA,OAAO;AAAA,MACX,KAAK,KAAK,OAAO,KAAK,IAAI,KAAK,OAAO,IAAI,IAAI,SAAS,UAAU,EAAE;AAAA,IACrE;AAAA,IACA;AAAA,IACA,aAAa,CAAC;AAAA,IACd;AAAA,EACF;AAAA;",
218
+ "debugId": "9459B0EE70BDAF3C64756E2164756E21",
217
219
  "names": []
218
220
  }