blume 2.0.0 → 2.0.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.
- package/AGENTS.md +1 -1
- package/CHANGELOG.md +110 -0
- package/README.md +2 -2
- package/dist/cli/{chunk-f2972sbt.js → chunk-00gs3wqs.js} +1 -1
- package/dist/cli/{chunk-fa25z98p.js → chunk-273ygyr4.js} +4 -3
- package/dist/cli/chunk-273ygyr4.js.map +11 -0
- package/dist/cli/{chunk-pat2zzwc.js → chunk-3yce002v.js} +21 -8
- package/dist/cli/{chunk-pat2zzwc.js.map → chunk-3yce002v.js.map} +4 -4
- package/dist/cli/{chunk-d1tadaw7.js → chunk-4e9b9ra6.js} +17 -7
- package/dist/cli/chunk-4e9b9ra6.js.map +10 -0
- package/dist/cli/{chunk-zg2gtj10.js → chunk-5r8g91qn.js} +352 -676
- package/dist/cli/chunk-5r8g91qn.js.map +34 -0
- package/dist/cli/{chunk-11j0384y.js → chunk-6dtt0zfn.js} +14 -14
- package/dist/cli/{chunk-11j0384y.js.map → chunk-6dtt0zfn.js.map} +3 -3
- package/dist/cli/{chunk-bw22s759.js → chunk-6k4ftwze.js} +38 -19
- package/dist/cli/{chunk-bw22s759.js.map → chunk-6k4ftwze.js.map} +4 -4
- package/dist/cli/{chunk-sqn5t4q0.js → chunk-7mbqtmgb.js} +16 -7
- package/dist/cli/chunk-7mbqtmgb.js.map +10 -0
- package/dist/cli/{chunk-79njf86q.js → chunk-7vtckvaw.js} +21 -19
- package/dist/cli/chunk-7vtckvaw.js.map +11 -0
- package/dist/cli/{chunk-fh5hj5jt.js → chunk-8g8ytmgx.js} +17 -18
- package/dist/cli/{chunk-fh5hj5jt.js.map → chunk-8g8ytmgx.js.map} +2 -2
- package/dist/cli/{chunk-1w8dp3qb.js → chunk-91ws1n6j.js} +18 -15
- package/dist/cli/chunk-91ws1n6j.js.map +10 -0
- package/dist/cli/{chunk-7ez8ny0t.js → chunk-bbnwccaz.js} +2 -2
- package/dist/cli/{chunk-5a2z0198.js → chunk-bfwp9vp6.js} +18 -10
- package/dist/cli/chunk-bfwp9vp6.js.map +10 -0
- package/dist/cli/{chunk-ernrthtr.js → chunk-d1v5rhy0.js} +14 -15
- package/dist/cli/{chunk-ernrthtr.js.map → chunk-d1v5rhy0.js.map} +2 -2
- package/dist/cli/{chunk-a9kptbw5.js → chunk-ddndchfr.js} +21 -6
- package/dist/cli/chunk-ddndchfr.js.map +14 -0
- package/dist/cli/{chunk-zxccj738.js → chunk-esh98wmb.js} +1 -1
- package/dist/cli/{chunk-88cpgt6h.js → chunk-fsmrqk8a.js} +1 -1
- package/dist/cli/{chunk-b5aj94ah.js → chunk-g698a744.js} +5 -5
- package/dist/cli/{chunk-jts8mvcz.js → chunk-gs7r695n.js} +9 -3
- package/dist/cli/{chunk-jts8mvcz.js.map → chunk-gs7r695n.js.map} +3 -3
- package/dist/cli/{chunk-41za066z.js → chunk-h2ez8dzb.js} +4 -4
- package/dist/cli/{chunk-by2290sx.js → chunk-h7k3nq3v.js} +2 -2
- package/dist/cli/{chunk-j8mw0za6.js → chunk-hqp2ajnh.js} +252 -123
- package/dist/cli/chunk-hqp2ajnh.js.map +35 -0
- package/dist/cli/{chunk-mnqj32sj.js → chunk-hr8ne106.js} +119 -50
- package/dist/cli/chunk-hr8ne106.js.map +13 -0
- package/dist/cli/{chunk-mwt1k8n7.js → chunk-j85scx15.js} +74 -30
- package/dist/cli/chunk-j85scx15.js.map +10 -0
- package/dist/cli/{chunk-z01ze5c1.js → chunk-k7pj68a8.js} +63 -22
- package/dist/cli/chunk-k7pj68a8.js.map +11 -0
- package/dist/cli/{chunk-2q1dwty4.js → chunk-mqc662a6.js} +8 -8
- package/dist/cli/{chunk-2q1dwty4.js.map → chunk-mqc662a6.js.map} +4 -4
- package/dist/cli/{chunk-y3e45rc8.js → chunk-n1yg3tj3.js} +4 -4
- package/dist/cli/{chunk-bctazmbk.js → chunk-nfcyttvj.js} +17 -6
- package/dist/cli/chunk-nfcyttvj.js.map +10 -0
- package/dist/cli/{chunk-6k8vp3ta.js → chunk-pbg5a4s3.js} +60 -28
- package/dist/cli/chunk-pbg5a4s3.js.map +19 -0
- package/dist/cli/{chunk-d80hr03s.js → chunk-ppzjqwx2.js} +24 -17
- package/dist/cli/{chunk-d80hr03s.js.map → chunk-ppzjqwx2.js.map} +4 -4
- package/dist/cli/{chunk-beat36xx.js → chunk-qkb5a8sa.js} +25 -10
- package/dist/cli/chunk-qkb5a8sa.js.map +10 -0
- package/dist/cli/{chunk-bnbmcwfb.js → chunk-sqw4ekg1.js} +5 -5
- package/dist/cli/{chunk-bnbmcwfb.js.map → chunk-sqw4ekg1.js.map} +3 -3
- package/dist/cli/{chunk-xaz13gwg.js → chunk-v6ya5kcb.js} +3268 -1150
- package/dist/cli/chunk-v6ya5kcb.js.map +189 -0
- package/dist/cli/{chunk-tzne8qfq.js → chunk-w4bxdvsa.js} +18 -15
- package/dist/cli/chunk-w4bxdvsa.js.map +10 -0
- package/dist/cli/{chunk-f7t03s3g.js → chunk-wdrt2k2v.js} +2 -2
- package/dist/cli/{chunk-z1f5arsg.js → chunk-xh43dwgw.js} +170 -55
- package/dist/cli/chunk-xh43dwgw.js.map +36 -0
- package/dist/cli/{chunk-pnnvybbk.js → chunk-zp79m0ts.js} +5 -5
- package/dist/cli/{chunk-pnnvybbk.js.map → chunk-zp79m0ts.js.map} +2 -2
- package/dist/cli/index.js +160 -35
- package/dist/cli/index.js.map +4 -4
- package/dist/types/ai/agent-readability.d.ts +1 -1
- package/dist/types/ai/agent-surface.d.ts +32 -0
- package/dist/types/ai/api/paths.d.ts +1 -1
- package/dist/types/ai/api-catalog.d.ts +7 -1
- package/dist/types/ai/ask-context.d.ts +14 -7
- package/dist/types/ai/ask.d.ts +43 -43
- package/dist/types/ai/component-markdown.d.ts +4 -4
- package/dist/types/ai/index.d.ts +3 -3
- package/dist/types/ai/openapi-components.d.ts +1 -1
- package/dist/types/ai/relative-links.d.ts +9 -4
- package/dist/types/ai/serializers.d.ts +1 -1
- package/dist/types/ai/static-expression.d.ts +28 -0
- package/dist/types/ai/visibility.d.ts +1 -1
- package/dist/types/analytics/databuddy.d.ts +43 -0
- package/dist/types/analytics/index.d.ts +2 -0
- package/dist/types/analytics/schema.d.ts +14 -0
- package/dist/types/cli/env.d.ts +5 -0
- package/dist/types/cli/init/scaffold.d.ts +19 -3
- package/dist/types/cli/init/starter-spec.d.ts +11 -0
- package/dist/types/core/base-path.d.ts +9 -0
- package/dist/types/core/config-input.d.ts +21 -21
- package/dist/types/core/config.d.ts +5 -5
- package/dist/types/core/data.d.ts +3 -3
- package/dist/types/core/graph.d.ts +2 -0
- package/dist/types/core/i18n-ui.d.ts +37 -8
- package/dist/types/core/i18n.d.ts +7 -1
- package/dist/types/core/links.d.ts +3 -1
- package/dist/types/core/load-module.d.ts +10 -0
- package/dist/types/core/locale-links.d.ts +12 -2
- package/dist/types/core/meta.d.ts +5 -1
- package/dist/types/core/nav-diagnostics.d.ts +10 -0
- package/dist/types/core/navigation.d.ts +38 -0
- package/dist/types/core/ordering-prefix.d.ts +4 -0
- package/dist/types/core/safe-links.d.ts +3 -1
- package/dist/types/core/schema.d.ts +57 -18
- package/dist/types/core/sources/github-releases.d.ts +5 -0
- package/dist/types/core/sources/lower.d.ts +14 -2
- package/dist/types/core/sources/normalize.d.ts +10 -1
- package/dist/types/core/sources/remote.d.ts +11 -1
- package/dist/types/core/sources/resolve.d.ts +12 -0
- package/dist/types/core/sources/types.d.ts +31 -0
- package/dist/types/core/types.d.ts +9 -0
- package/dist/types/core/unrecognized-keys.d.ts +1 -1
- package/dist/types/deploy/adapters/node.d.ts +5 -2
- package/dist/types/deploy/adapters/types.d.ts +7 -0
- package/dist/types/deploy/cloudflare-negotiation.d.ts +3 -2
- package/dist/types/deploy/headers.d.ts +31 -7
- package/dist/types/deploy/node-headers.d.ts +43 -8
- package/dist/types/deploy/platforms/netlify.d.ts +27 -2
- package/dist/types/deploy/platforms/node.d.ts +6 -5
- package/dist/types/deploy/platforms/types.d.ts +7 -0
- package/dist/types/deploy/platforms/vercel.d.ts +3 -2
- package/dist/types/deploy/redirects.d.ts +7 -2
- package/dist/types/deploy/vercel-negotiation.d.ts +3 -2
- package/dist/types/openapi/model.d.ts +20 -6
- package/dist/types/search/documents.d.ts +1 -1
- package/dist/types/search/orama-index.d.ts +1 -1
- package/dist/types/search/sync/algolia.d.ts +3 -1
- package/docs/01-quickstart.mdx +3 -2
- package/docs/02-deployment.mdx +21 -12
- package/docs/03-upgrading.mdx +22 -9
- package/docs/04-migrating.mdx +4 -4
- package/docs/08-faq.mdx +12 -5
- package/docs/advanced/changelog.mdx +1 -1
- package/docs/advanced/custom-pages.mdx +5 -3
- package/docs/advanced/skills.mdx +1 -1
- package/docs/cli/audit.mdx +5 -5
- package/docs/cli/doctor.mdx +4 -4
- package/docs/cli/evals.mdx +9 -9
- package/docs/cli/index.mdx +6 -3
- package/docs/cli/translate.mdx +8 -8
- package/docs/configuration/analytics.mdx +23 -2
- package/docs/configuration/{ask-ai.mdx → assistant.mdx} +20 -20
- package/docs/configuration/customization.mdx +5 -4
- package/docs/configuration/index.mdx +7 -5
- package/docs/configuration/meta.ts +1 -1
- package/docs/configuration/search.mdx +2 -2
- package/docs/content/components.mdx +1 -1
- package/docs/content/frontmatter.mdx +5 -1
- package/docs/content/i18n.mdx +3 -3
- package/docs/content/index.mdx +4 -2
- package/docs/content/islands.mdx +1 -1
- package/docs/content/meta.mdx +5 -3
- package/docs/content/navigation.mdx +29 -4
- package/docs/content/sources.mdx +18 -12
- package/docs/content/versioning.mdx +1 -0
- package/docs/discoverability/agent-discovery.mdx +22 -8
- package/docs/discoverability/index.mdx +3 -3
- package/docs/discoverability/llms-txt.mdx +2 -5
- package/docs/discoverability/markdown.mdx +5 -3
- package/docs/discoverability/mcp.mdx +4 -0
- package/docs/discoverability/metadata.mdx +3 -2
- package/docs/discoverability/open-graph.mdx +6 -4
- package/docs/discoverability/rss.mdx +3 -1
- package/docs/index.mdx +2 -2
- package/docs/references/asyncapi.mdx +1 -1
- package/docs/references/graphql.mdx +2 -2
- package/docs/references/openapi.mdx +3 -3
- package/package.json +1 -1
- package/skills/blume/SKILL.md +5 -5
- package/skills/blume-migrate/SKILL.md +6 -6
- package/skills/blume-migrate/references/docusaurus.md +6 -6
- package/skills/blume-migrate/references/mintlify.md +3 -3
- package/skills/blume-migrate/references/monorepo.md +1 -1
- package/skills/blume-migrate/references/nextra.md +1 -1
- package/skills/blume-migrate/references/starlight.md +5 -5
- package/skills/blume-migrate/scripts/mintlify-codemod.mjs +2 -2
- package/skills/blume-update-docs/references/audit-checklist.md +1 -1
- package/src/ai/agent-readability.ts +4 -4
- package/src/ai/agent-surface.ts +56 -0
- package/src/ai/api/paths.ts +1 -1
- package/src/ai/api/spec.ts +15 -2
- package/src/ai/api-catalog.ts +7 -1
- package/src/ai/ask-context.ts +21 -9
- package/src/ai/ask-data.ts +28 -14
- package/src/ai/ask.ts +84 -71
- package/src/ai/component-markdown.ts +43 -37
- package/src/ai/cors.ts +3 -3
- package/src/ai/index.ts +16 -16
- package/src/ai/link-headers.ts +8 -3
- package/src/ai/llms.ts +4 -3
- package/src/ai/markdown.ts +23 -11
- package/src/ai/mcp/server.ts +78 -7
- package/src/ai/openapi-components.ts +1 -1
- package/src/ai/relative-links.ts +78 -10
- package/src/ai/serializers.ts +1 -1
- package/src/ai/static-expression.ts +416 -0
- package/src/ai/visibility.ts +46 -15
- package/src/analytics/databuddy.ts +67 -0
- package/src/analytics/head.ts +4 -0
- package/src/analytics/index.ts +2 -0
- package/src/analytics/posthog.ts +21 -3
- package/src/analytics/schema.ts +2 -0
- package/src/astro/generate.ts +90 -45
- package/src/astro/module-types.ts +1 -1
- package/src/astro/runtime-deps.ts +6 -6
- package/src/astro/templates.ts +87 -49
- package/src/audit/catalog.ts +2 -2
- package/src/audit/checks/assets.ts +25 -5
- package/src/audit/checks/content.ts +20 -2
- package/src/audit/checks/i18n.ts +46 -8
- package/src/audit/checks/indexability.ts +39 -19
- package/src/audit/checks/links.ts +14 -0
- package/src/audit/checks/llms.ts +6 -3
- package/src/audit/checks/network.ts +3 -1
- package/src/audit/checks/og-image.ts +10 -0
- package/src/audit/checks/robots.ts +6 -1
- package/src/audit/checks/sitemap.ts +56 -31
- package/src/audit/checks/social.ts +21 -2
- package/src/audit/crawl.ts +88 -15
- package/src/audit/report.ts +54 -17
- package/src/audit/run.ts +1 -0
- package/src/audit/types.ts +18 -0
- package/src/audit/url.ts +37 -6
- package/src/blume-modules.d.ts +2 -2
- package/src/cli/build-failure.ts +50 -0
- package/src/cli/commands/audit.ts +8 -1
- package/src/cli/commands/build.ts +19 -5
- package/src/cli/commands/check.ts +2 -0
- package/src/cli/commands/doctor.ts +7 -5
- package/src/cli/commands/eval.ts +4 -10
- package/src/cli/commands/init.ts +15 -5
- package/src/cli/commands/migrate.ts +2 -2
- package/src/cli/commands/preview.ts +15 -0
- package/src/cli/commands/sync.ts +2 -0
- package/src/cli/commands/translate.ts +12 -9
- package/src/cli/commands/upgrade.ts +13 -2
- package/src/cli/eject-scripts.ts +32 -7
- package/src/cli/env.ts +12 -1
- package/src/cli/init/scaffold.ts +117 -11
- package/src/cli/init/starter-spec.ts +235 -0
- package/src/cli/required-secrets.ts +3 -3
- package/src/components/content/AccordionItem.astro +26 -22
- package/src/components/content/Badge.astro +2 -9
- package/src/components/content/Card.astro +2 -2
- package/src/components/content/Component.astro +9 -3
- package/src/components/content/Expandable.astro +5 -1
- package/src/components/content/Frame.astro +2 -7
- package/src/components/content/GithubInfo.astro +12 -2
- package/src/components/content/Prompt.astro +2 -7
- package/src/components/content/Tabs.astro +54 -5
- package/src/components/content/Tile.astro +1 -1
- package/src/components/content/Tooltip.astro +69 -7
- package/src/components/content/Tree.astro +7 -2
- package/src/components/content/TypeTable.astro +10 -5
- package/src/components/content/Update.astro +8 -2
- package/src/components/content/auto-type-table.ts +4 -1
- package/src/components/content/badge-color.ts +17 -0
- package/src/components/content/base-href.ts +18 -3
- package/src/components/content/inline-markdown.ts +27 -7
- package/src/components/copy-feedback.ts +36 -9
- package/src/components/islands/{AskAI.astro → Assistant.astro} +10 -10
- package/src/components/islands/{ask-ai.tsx → assistant.tsx} +39 -25
- package/src/components/islands/hooks.ts +21 -14
- package/src/components/islands/webmcp.ts +12 -8
- package/src/components/layout/Banner.astro +23 -4
- package/src/components/layout/Header.astro +32 -19
- package/src/components/layout/Logo.astro +5 -0
- package/src/components/layout/NavSelector.astro +6 -1
- package/src/components/layout/NavTabMenu.astro +133 -0
- package/src/components/layout/NavTree.astro +15 -6
- package/src/components/layout/NavTreeCache.astro +5 -2
- package/src/components/layout/NavTreeScript.astro +45 -5
- package/src/components/layout/PageLayout.astro +28 -14
- package/src/components/layout/Pagination.astro +7 -7
- package/src/components/layout/ReferenceLayout.astro +5 -2
- package/src/components/layout/RootLayout.astro +27 -14
- package/src/components/layout/Search.astro +18 -14
- package/src/components/layout/analytics-client.ts +3 -1
- package/src/components/layout/drawer-inert.ts +1 -1
- package/src/components/openapi/GraphqlType.astro +11 -3
- package/src/components/openapi/MessageComposer.astro +1 -1
- package/src/components/openapi/Operation.astro +21 -5
- package/src/components/openapi/PanelTabs.astro +4 -1
- package/src/components/openapi/Playground.astro +8 -2
- package/src/components/openapi/RequestPanel.astro +9 -5
- package/src/components/openapi/SchemaProperty.astro +11 -33
- package/src/components/openapi/SchemaTable.astro +27 -52
- package/src/components/openapi/description.ts +2 -2
- package/src/components/openapi/helpers.ts +90 -12
- package/src/components/openapi/message-composer.ts +8 -0
- package/src/components/openapi/message-model.ts +12 -2
- package/src/components/openapi/message.ts +4 -1
- package/src/components/openapi/operation-model.ts +40 -8
- package/src/components/openapi/panel.ts +29 -5
- package/src/components/openapi/playground-client.ts +37 -7
- package/src/components/openapi/playground-schema.ts +25 -6
- package/src/components/openapi/request.ts +2 -0
- package/src/components/openapi/schema-tree.ts +203 -0
- package/src/components/openapi/snippets.ts +30 -15
- package/src/components/openapi/validate-json.ts +1 -1
- package/src/core/base-path.ts +15 -0
- package/src/core/code-fences.ts +1 -1
- package/src/core/config-input.ts +23 -23
- package/src/core/config.ts +21 -7
- package/src/core/data.ts +3 -3
- package/src/core/diagnostics.ts +217 -30
- package/src/core/graph.ts +120 -11
- package/src/core/i18n-ui.ts +74 -11
- package/src/core/i18n.ts +13 -2
- package/src/core/links.ts +7 -4
- package/src/core/load-module.ts +20 -0
- package/src/core/locale-links.ts +17 -17
- package/src/core/manifest.ts +3 -2
- package/src/core/meta.ts +69 -6
- package/src/core/nav-diagnostics.ts +56 -1
- package/src/core/navigation.ts +245 -76
- package/src/core/ordering-prefix.ts +27 -0
- package/src/core/project-graph.ts +23 -1
- package/src/core/request-body.ts +1 -1
- package/src/core/safe-href.ts +53 -1
- package/src/core/safe-links.ts +11 -2
- package/src/core/schema.ts +95 -34
- package/src/core/server-features.ts +2 -2
- package/src/core/sources/assets.ts +83 -41
- package/src/core/sources/contentful-rich-text.ts +3 -2
- package/src/core/sources/contentful.ts +25 -12
- package/src/core/sources/filesystem.ts +5 -1
- package/src/core/sources/github-releases.ts +106 -5
- package/src/core/sources/lexical.ts +9 -4
- package/src/core/sources/lower.ts +79 -26
- package/src/core/sources/mdx-remote.ts +1 -0
- package/src/core/sources/normalize.ts +132 -30
- package/src/core/sources/notion.ts +26 -10
- package/src/core/sources/obsidian.ts +17 -3
- package/src/core/sources/payload.ts +1 -0
- package/src/core/sources/portable-text.ts +63 -44
- package/src/core/sources/remote.ts +18 -2
- package/src/core/sources/resolve.ts +52 -33
- package/src/core/sources/sanity.ts +1 -0
- package/src/core/sources/strapi-blocks.ts +9 -4
- package/src/core/sources/strapi.ts +1 -0
- package/src/core/sources/types.ts +31 -0
- package/src/core/types.ts +9 -0
- package/src/core/ui-packs/ar.ts +17 -5
- package/src/core/ui-packs/bg.ts +17 -5
- package/src/core/ui-packs/bn.ts +17 -5
- package/src/core/ui-packs/ca.ts +17 -5
- package/src/core/ui-packs/cs.ts +17 -5
- package/src/core/ui-packs/da.ts +17 -5
- package/src/core/ui-packs/de.ts +17 -5
- package/src/core/ui-packs/el.ts +17 -5
- package/src/core/ui-packs/es.ts +17 -5
- package/src/core/ui-packs/fa.ts +17 -5
- package/src/core/ui-packs/fi.ts +17 -5
- package/src/core/ui-packs/fr.ts +17 -5
- package/src/core/ui-packs/he.ts +17 -5
- package/src/core/ui-packs/hi.ts +17 -5
- package/src/core/ui-packs/hr.ts +17 -5
- package/src/core/ui-packs/hu.ts +17 -5
- package/src/core/ui-packs/id.ts +17 -5
- package/src/core/ui-packs/it.ts +17 -5
- package/src/core/ui-packs/ja.ts +17 -5
- package/src/core/ui-packs/ko.ts +17 -5
- package/src/core/ui-packs/nl.ts +17 -5
- package/src/core/ui-packs/no.ts +17 -5
- package/src/core/ui-packs/pl.ts +17 -5
- package/src/core/ui-packs/pt-br.ts +17 -5
- package/src/core/ui-packs/pt.ts +17 -5
- package/src/core/ui-packs/ro.ts +17 -5
- package/src/core/ui-packs/ru.ts +17 -5
- package/src/core/ui-packs/sk.ts +17 -5
- package/src/core/ui-packs/sr.ts +17 -5
- package/src/core/ui-packs/sv.ts +17 -5
- package/src/core/ui-packs/th.ts +17 -5
- package/src/core/ui-packs/tr.ts +17 -5
- package/src/core/ui-packs/uk.ts +17 -5
- package/src/core/ui-packs/vi.ts +17 -5
- package/src/core/ui-packs/zh-tw.ts +17 -5
- package/src/core/ui-packs/zh.ts +17 -5
- package/src/core/unrecognized-keys.ts +1 -1
- package/src/core/version-cut.ts +17 -2
- package/src/core/versions.ts +4 -1
- package/src/deploy/adapters/node.ts +5 -2
- package/src/deploy/adapters/registry.ts +2 -1
- package/src/deploy/adapters/types.ts +13 -1
- package/src/deploy/artifacts.ts +25 -5
- package/src/deploy/cloudflare-negotiation.ts +23 -4
- package/src/deploy/headers.ts +67 -51
- package/src/deploy/node-headers.ts +148 -27
- package/src/deploy/platforms/cloudflare.ts +1 -0
- package/src/deploy/platforms/netlify.ts +82 -5
- package/src/deploy/platforms/node.ts +7 -5
- package/src/deploy/platforms/static.ts +1 -0
- package/src/deploy/platforms/types.ts +7 -0
- package/src/deploy/platforms/vercel.ts +9 -3
- package/src/deploy/redirects.ts +14 -3
- package/src/deploy/vercel-negotiation.ts +35 -3
- package/src/eval/agents.ts +10 -2
- package/src/eval/run.ts +25 -0
- package/src/markdown/base-links.ts +55 -8
- package/src/markdown/index.ts +6 -3
- package/src/markdown/relative-links.ts +3 -23
- package/src/markdown/route-snapshot.ts +37 -0
- package/src/og/card.ts +20 -4
- package/src/og/derive.ts +145 -4
- package/src/openapi/graphql-build.ts +28 -2
- package/src/openapi/model.ts +77 -13
- package/src/openapi/render-mdx.ts +10 -1
- package/src/registry/eject.ts +135 -37
- package/src/search/documents.ts +24 -3
- package/src/search/orama-index.ts +1 -1
- package/src/search/sync/algolia.ts +36 -2
- package/src/sources/registry.ts +5 -0
- package/src/theme/entry.ts +11 -4
- package/src/translate/agents.ts +6 -1
- package/src/translate/ledger.ts +26 -3
- package/src/translate/meta.ts +11 -3
- package/src/translate/report.ts +1 -1
- package/src/translate/run.ts +11 -5
- package/src/translate/validate.ts +10 -1
- package/src/translate/work-list.ts +36 -3
- package/src/upgrade/upgrade.ts +37 -5
- package/dist/cli/chunk-1w8dp3qb.js.map +0 -10
- package/dist/cli/chunk-5a2z0198.js.map +0 -10
- package/dist/cli/chunk-6k8vp3ta.js.map +0 -19
- package/dist/cli/chunk-79njf86q.js.map +0 -11
- package/dist/cli/chunk-a9kptbw5.js.map +0 -14
- package/dist/cli/chunk-abh8yjkn.js +0 -31
- package/dist/cli/chunk-abh8yjkn.js.map +0 -10
- package/dist/cli/chunk-bctazmbk.js.map +0 -10
- package/dist/cli/chunk-beat36xx.js.map +0 -10
- package/dist/cli/chunk-d1tadaw7.js.map +0 -10
- package/dist/cli/chunk-fa25z98p.js.map +0 -11
- package/dist/cli/chunk-j8mw0za6.js.map +0 -35
- package/dist/cli/chunk-mnqj32sj.js.map +0 -12
- package/dist/cli/chunk-mwt1k8n7.js.map +0 -10
- package/dist/cli/chunk-nk3ts2xk.js +0 -51
- package/dist/cli/chunk-nk3ts2xk.js.map +0 -10
- package/dist/cli/chunk-sqn5t4q0.js.map +0 -10
- package/dist/cli/chunk-tzne8qfq.js.map +0 -10
- package/dist/cli/chunk-xaz13gwg.js.map +0 -182
- package/dist/cli/chunk-z01ze5c1.js.map +0 -10
- package/dist/cli/chunk-z1f5arsg.js.map +0 -36
- package/dist/cli/chunk-zg2gtj10.js.map +0 -35
- /package/dist/cli/{chunk-f2972sbt.js.map → chunk-00gs3wqs.js.map} +0 -0
- /package/dist/cli/{chunk-7ez8ny0t.js.map → chunk-bbnwccaz.js.map} +0 -0
- /package/dist/cli/{chunk-zxccj738.js.map → chunk-esh98wmb.js.map} +0 -0
- /package/dist/cli/{chunk-88cpgt6h.js.map → chunk-fsmrqk8a.js.map} +0 -0
- /package/dist/cli/{chunk-b5aj94ah.js.map → chunk-g698a744.js.map} +0 -0
- /package/dist/cli/{chunk-41za066z.js.map → chunk-h2ez8dzb.js.map} +0 -0
- /package/dist/cli/{chunk-by2290sx.js.map → chunk-h7k3nq3v.js.map} +0 -0
- /package/dist/cli/{chunk-y3e45rc8.js.map → chunk-n1yg3tj3.js.map} +0 -0
- /package/dist/cli/{chunk-f7t03s3g.js.map → chunk-wdrt2k2v.js.map} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AstroIntegration } from "astro";
|
|
2
|
-
import type {
|
|
2
|
+
import type { AssistantAdapter } from "../ai/ask.ts";
|
|
3
3
|
import type { ComponentMarkdown } from "../ai/component-markdown.ts";
|
|
4
4
|
import type { AnalyticsAdapter } from "../analytics/schema.ts";
|
|
5
5
|
import type { DeploymentInput } from "../deploy/adapters/registry.ts";
|
|
@@ -420,15 +420,15 @@ export interface SearchOptions {
|
|
|
420
420
|
* links and `indexing` settings.
|
|
421
421
|
*/
|
|
422
422
|
export type SearchConfig = SearchProviderConfig | SearchOptions;
|
|
423
|
-
/** An empty-state prompt shown before the first
|
|
424
|
-
export interface
|
|
423
|
+
/** An empty-state prompt shown before the first question to the assistant. */
|
|
424
|
+
export interface AssistantSuggestion {
|
|
425
425
|
/** Lucide icon name shown beside the suggestion. */
|
|
426
426
|
icon?: string;
|
|
427
427
|
/** The clickable suggestion text. */
|
|
428
428
|
label: string;
|
|
429
429
|
}
|
|
430
|
-
/** How much retrieved documentation each
|
|
431
|
-
export interface
|
|
430
|
+
/** How much retrieved documentation each question to the assistant carries. */
|
|
431
|
+
export interface AssistantRetrievalConfig {
|
|
432
432
|
/**
|
|
433
433
|
* Total injected documentation characters, across all excerpts. Defaults to
|
|
434
434
|
* `10000`. The single biggest lever on time-to-first-token — the model reads
|
|
@@ -448,8 +448,8 @@ export interface AskRetrievalConfig {
|
|
|
448
448
|
*/
|
|
449
449
|
maxResults?: number;
|
|
450
450
|
}
|
|
451
|
-
/** The
|
|
452
|
-
export interface
|
|
451
|
+
/** The chat assistant. */
|
|
452
|
+
export interface AssistantConfig {
|
|
453
453
|
/**
|
|
454
454
|
* Origins allowed to call the generated endpoint from another site — a
|
|
455
455
|
* marketing page that embeds an ask box, for example — or `"*"` to allow
|
|
@@ -462,10 +462,10 @@ export interface AskConfig {
|
|
|
462
462
|
* combined with it.
|
|
463
463
|
*/
|
|
464
464
|
cors?: string[];
|
|
465
|
-
/** Turn
|
|
465
|
+
/** Turn the assistant on. Defaults to `false`. */
|
|
466
466
|
enabled?: boolean;
|
|
467
467
|
/**
|
|
468
|
-
* Existing
|
|
468
|
+
* Existing assistant endpoint to call instead of generating one. This keeps a
|
|
469
469
|
* Blume site static while an API backend owns retrieval, model access, rate
|
|
470
470
|
* limiting, and streaming. Accepts an absolute URL or root-relative path.
|
|
471
471
|
*/
|
|
@@ -485,15 +485,15 @@ export interface AskConfig {
|
|
|
485
485
|
* mapping, and `providerOptions` passthrough. Defaults to
|
|
486
486
|
* `gateway({ model: "openai/gpt-5.5" })`.
|
|
487
487
|
*/
|
|
488
|
-
provider?:
|
|
488
|
+
provider?: AssistantAdapter;
|
|
489
489
|
/**
|
|
490
490
|
* How much documentation each question carries into the model's prompt.
|
|
491
491
|
* Lower values cut time-to-first-token — which dominates on a self-hosted
|
|
492
492
|
* backend — at the cost of recall. Defaults keep the built-in behavior.
|
|
493
493
|
*/
|
|
494
|
-
retrieval?:
|
|
494
|
+
retrieval?: AssistantRetrievalConfig;
|
|
495
495
|
/** Starter prompts shown before the first question. */
|
|
496
|
-
suggestions?:
|
|
496
|
+
suggestions?: AssistantSuggestion[];
|
|
497
497
|
}
|
|
498
498
|
/** What the AI Catalog (ARD) manifest carries. */
|
|
499
499
|
export interface AiCatalogConfig {
|
|
@@ -524,14 +524,14 @@ export interface LlmsTxtConfig {
|
|
|
524
524
|
/**
|
|
525
525
|
* Markdown placed after the title and summary in `llms.txt`, before the
|
|
526
526
|
* page sections — the llms.txt spec's "details" block. Use it to tell
|
|
527
|
-
* agents when to reach for the product and how to call it (
|
|
528
|
-
*
|
|
529
|
-
* dropped.
|
|
527
|
+
* agents when to reach for the product and how to call it (the install
|
|
528
|
+
* command, the package name). The spec allows any Markdown there but
|
|
529
|
+
* headings. Blank values are dropped.
|
|
530
530
|
*
|
|
531
531
|
* ```ts
|
|
532
532
|
* agents: {
|
|
533
533
|
* llmsTxt: {
|
|
534
|
-
* details: "
|
|
534
|
+
* details: "Use Acme when…",
|
|
535
535
|
* },
|
|
536
536
|
* }
|
|
537
537
|
* ```
|
|
@@ -557,10 +557,10 @@ export interface McpConfig {
|
|
|
557
557
|
/** Route the server mounts at. Defaults to `/mcp`. */
|
|
558
558
|
route?: string;
|
|
559
559
|
}
|
|
560
|
-
/** Model-facing features: the
|
|
560
|
+
/** Model-facing features: the assistant and the "Open in chat" action. */
|
|
561
561
|
export interface AiConfig {
|
|
562
|
-
/** The
|
|
563
|
-
|
|
562
|
+
/** The chat assistant. */
|
|
563
|
+
assistant?: AssistantConfig;
|
|
564
564
|
/**
|
|
565
565
|
* The "Open in chat" page action, which opens the current page in an AI
|
|
566
566
|
* assistant pre-filled with a prompt pointing at its raw Markdown.
|
|
@@ -728,7 +728,7 @@ export type ContentSignalsConfig = boolean | {
|
|
|
728
728
|
/**
|
|
729
729
|
* The machine-readable surface agents consume: the JSON API, `llms.txt`, the
|
|
730
730
|
* MCP server, published skills, discovery manifests, and the robots.txt usage
|
|
731
|
-
* policy. The reader-facing model features (
|
|
731
|
+
* policy. The reader-facing model features (the assistant, Open in chat) live under
|
|
732
732
|
* `ai`.
|
|
733
733
|
*/
|
|
734
734
|
export interface AgentsConfig {
|
|
@@ -1184,7 +1184,7 @@ export type TocConfig = boolean | {
|
|
|
1184
1184
|
export interface BlumeConfig {
|
|
1185
1185
|
/** The machine-readable surface for agents: JSON API, `llms.txt`, MCP, skills, discovery. */
|
|
1186
1186
|
agents?: AgentsConfig;
|
|
1187
|
-
/** Model-facing features: the
|
|
1187
|
+
/** Model-facing features: the assistant and the "Open in chat" action. */
|
|
1188
1188
|
ai?: AiConfig;
|
|
1189
1189
|
/**
|
|
1190
1190
|
* Analytics adapters from `blume/analytics`, emitted into `<head>` of every
|
|
@@ -55,8 +55,8 @@ import type { Diagnostic } from "./types.ts";
|
|
|
55
55
|
* - `theme` — `accent` color, `fonts` (curated slugs, any provider family, or
|
|
56
56
|
* local font files), `radius`,
|
|
57
57
|
* `mode` (`system`/`light`/`dark`), and `background`.
|
|
58
|
-
* - `markdown` — `code` (language icons,
|
|
59
|
-
* `
|
|
58
|
+
* - `markdown` — `code` (language icons, light/dark Shiki `theme`, line
|
|
59
|
+
* `wrap`), `externalLinks`, `headingAnchors`, and `imageZoom`.
|
|
60
60
|
* - `toc` — on-page table of contents; `true`/`false` or a heading-level range.
|
|
61
61
|
* - `lastModified` — "Last updated" stamps from `git` history or frontmatter.
|
|
62
62
|
* - `feedback` — the per-page "Was this helpful?" widget (on by default).
|
|
@@ -74,7 +74,7 @@ import type { Diagnostic } from "./types.ts";
|
|
|
74
74
|
* `flexsearch()`, `pagefind()`, `algolia({…})`, `oramaCloud({…})`,
|
|
75
75
|
* `typesense({…})`, `mixedbread({…})`, or `false`), or `{ provider,
|
|
76
76
|
* popular, indexing }` to add curated links and indexing settings.
|
|
77
|
-
* - `ai` — what faces a model at read time: `
|
|
77
|
+
* - `ai` — what faces a model at read time: `assistant` (the chat assistant, with
|
|
78
78
|
* a provider adapter from `blume/ai` such as `gateway()` or `openrouter()`)
|
|
79
79
|
* and `openInChat` (the "Open in chat" page action).
|
|
80
80
|
* - `agents` — the machine-readable surface: `llmsTxt`, the JSON `api`, the
|
|
@@ -133,7 +133,7 @@ import type { Diagnostic } from "./types.ts";
|
|
|
133
133
|
* });
|
|
134
134
|
* ```
|
|
135
135
|
*
|
|
136
|
-
* @example An OpenAPI reference with the
|
|
136
|
+
* @example An OpenAPI reference with the assistant enabled.
|
|
137
137
|
* ```ts
|
|
138
138
|
* import { openapi } from "blume/reference";
|
|
139
139
|
*
|
|
@@ -146,7 +146,7 @@ import type { Diagnostic } from "./types.ts";
|
|
|
146
146
|
* }),
|
|
147
147
|
* ],
|
|
148
148
|
* agents: { llmsTxt: true },
|
|
149
|
-
* ai: {
|
|
149
|
+
* ai: { assistant: { enabled: true } },
|
|
150
150
|
* });
|
|
151
151
|
* ```
|
|
152
152
|
*
|
|
@@ -125,10 +125,10 @@ export interface BlumeDataConfig {
|
|
|
125
125
|
analytics: ResolvedConfig["analytics"];
|
|
126
126
|
/** Apple touch icon, or `null` when none is configured/detected. */
|
|
127
127
|
appleIcon: BlumeFavicon | null;
|
|
128
|
-
/**
|
|
129
|
-
|
|
128
|
+
/** The assistant's empty-state suggestions, or `null` when the assistant is off. */
|
|
129
|
+
assistant: {
|
|
130
130
|
endpoint: string | null;
|
|
131
|
-
suggestions: NonNullable<ResolvedConfig["ai"]["
|
|
131
|
+
suggestions: NonNullable<ResolvedConfig["ai"]["assistant"]>["suggestions"];
|
|
132
132
|
} | null;
|
|
133
133
|
banner: BlumeBanner | null;
|
|
134
134
|
/** Site-wide route mount point, normalized to `""` or `/seg` (see config). */
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { FolderMeta, ResolvedConfig, ResolvedI18nConfig, ResolvedVersionsConfig } from "./schema.ts";
|
|
2
2
|
import type { ContentGraph, PageRecord } from "./types.ts";
|
|
3
3
|
interface BuildContentGraphOptions {
|
|
4
|
+
/** The banner's link target as configured (`banner.link.href`), if any. */
|
|
5
|
+
bannerHref?: string;
|
|
4
6
|
/** Site-wide route mount point (`""` or `/seg`); invisible to the nav tree. */
|
|
5
7
|
basePath?: string;
|
|
6
8
|
/** The header brand link as configured (`logo.href`, default `/`). */
|
|
@@ -11,7 +11,6 @@ declare const uiStringsObject: z.ZodObject<{
|
|
|
11
11
|
actions: z.ZodPrefault<z.ZodObject<{
|
|
12
12
|
addToCursor: z.ZodDefault<z.ZodString>;
|
|
13
13
|
addToVscode: z.ZodDefault<z.ZodString>;
|
|
14
|
-
askAI: z.ZodDefault<z.ZodString>;
|
|
15
14
|
connectMcp: z.ZodDefault<z.ZodString>;
|
|
16
15
|
copied: z.ZodDefault<z.ZodString>;
|
|
17
16
|
copyClaudeCode: z.ZodDefault<z.ZodString>;
|
|
@@ -30,7 +29,7 @@ declare const uiStringsObject: z.ZodObject<{
|
|
|
30
29
|
openInChatPrompt: z.ZodDefault<z.ZodString>;
|
|
31
30
|
scrollToTop: z.ZodDefault<z.ZodString>;
|
|
32
31
|
}, z.core.$strip>>;
|
|
33
|
-
|
|
32
|
+
assistant: z.ZodPrefault<z.ZodObject<{
|
|
34
33
|
ai: z.ZodDefault<z.ZodString>;
|
|
35
34
|
clear: z.ZodDefault<z.ZodString>;
|
|
36
35
|
close: z.ZodDefault<z.ZodString>;
|
|
@@ -52,9 +51,20 @@ declare const uiStringsObject: z.ZodObject<{
|
|
|
52
51
|
title: z.ZodDefault<z.ZodString>;
|
|
53
52
|
}, z.core.$strip>>;
|
|
54
53
|
content: z.ZodPrefault<z.ZodObject<{
|
|
54
|
+
code: z.ZodDefault<z.ZodString>;
|
|
55
55
|
copyColor: z.ZodDefault<z.ZodString>;
|
|
56
56
|
copyPrompt: z.ZodDefault<z.ZodString>;
|
|
57
|
+
default: z.ZodDefault<z.ZodString>;
|
|
57
58
|
diagramError: z.ZodDefault<z.ZodString>;
|
|
59
|
+
forks: z.ZodDefault<z.ZodString>;
|
|
60
|
+
preview: z.ZodDefault<z.ZodString>;
|
|
61
|
+
prop: z.ZodDefault<z.ZodString>;
|
|
62
|
+
selectTab: z.ZodDefault<z.ZodString>;
|
|
63
|
+
showMore: z.ZodDefault<z.ZodString>;
|
|
64
|
+
stars: z.ZodDefault<z.ZodString>;
|
|
65
|
+
tab: z.ZodDefault<z.ZodString>;
|
|
66
|
+
type: z.ZodDefault<z.ZodString>;
|
|
67
|
+
update: z.ZodDefault<z.ZodString>;
|
|
58
68
|
}, z.core.$strip>>;
|
|
59
69
|
feedback: z.ZodPrefault<z.ZodObject<{
|
|
60
70
|
no: z.ZodDefault<z.ZodString>;
|
|
@@ -100,12 +110,14 @@ declare const uiStringsObject: z.ZodObject<{
|
|
|
100
110
|
all: z.ZodDefault<z.ZodString>;
|
|
101
111
|
allLanguages: z.ZodDefault<z.ZodString>;
|
|
102
112
|
allVersions: z.ZodDefault<z.ZodString>;
|
|
103
|
-
|
|
104
|
-
|
|
113
|
+
assistant: z.ZodDefault<z.ZodString>;
|
|
114
|
+
assistantHint: z.ZodDefault<z.ZodString>;
|
|
105
115
|
button: z.ZodDefault<z.ZodString>;
|
|
106
116
|
devOnly: z.ZodDefault<z.ZodString>;
|
|
117
|
+
docs: z.ZodDefault<z.ZodString>;
|
|
107
118
|
error: z.ZodDefault<z.ZodString>;
|
|
108
119
|
label: z.ZodDefault<z.ZodString>;
|
|
120
|
+
latest: z.ZodDefault<z.ZodString>;
|
|
109
121
|
navigate: z.ZodDefault<z.ZodString>;
|
|
110
122
|
noResults: z.ZodDefault<z.ZodString>;
|
|
111
123
|
open: z.ZodDefault<z.ZodString>;
|
|
@@ -127,7 +139,6 @@ export declare const uiStringsSchema: z.ZodPrefault<z.ZodObject<{
|
|
|
127
139
|
actions: z.ZodPrefault<z.ZodObject<{
|
|
128
140
|
addToCursor: z.ZodDefault<z.ZodString>;
|
|
129
141
|
addToVscode: z.ZodDefault<z.ZodString>;
|
|
130
|
-
askAI: z.ZodDefault<z.ZodString>;
|
|
131
142
|
connectMcp: z.ZodDefault<z.ZodString>;
|
|
132
143
|
copied: z.ZodDefault<z.ZodString>;
|
|
133
144
|
copyClaudeCode: z.ZodDefault<z.ZodString>;
|
|
@@ -146,7 +157,7 @@ export declare const uiStringsSchema: z.ZodPrefault<z.ZodObject<{
|
|
|
146
157
|
openInChatPrompt: z.ZodDefault<z.ZodString>;
|
|
147
158
|
scrollToTop: z.ZodDefault<z.ZodString>;
|
|
148
159
|
}, z.core.$strip>>;
|
|
149
|
-
|
|
160
|
+
assistant: z.ZodPrefault<z.ZodObject<{
|
|
150
161
|
ai: z.ZodDefault<z.ZodString>;
|
|
151
162
|
clear: z.ZodDefault<z.ZodString>;
|
|
152
163
|
close: z.ZodDefault<z.ZodString>;
|
|
@@ -168,9 +179,20 @@ export declare const uiStringsSchema: z.ZodPrefault<z.ZodObject<{
|
|
|
168
179
|
title: z.ZodDefault<z.ZodString>;
|
|
169
180
|
}, z.core.$strip>>;
|
|
170
181
|
content: z.ZodPrefault<z.ZodObject<{
|
|
182
|
+
code: z.ZodDefault<z.ZodString>;
|
|
171
183
|
copyColor: z.ZodDefault<z.ZodString>;
|
|
172
184
|
copyPrompt: z.ZodDefault<z.ZodString>;
|
|
185
|
+
default: z.ZodDefault<z.ZodString>;
|
|
173
186
|
diagramError: z.ZodDefault<z.ZodString>;
|
|
187
|
+
forks: z.ZodDefault<z.ZodString>;
|
|
188
|
+
preview: z.ZodDefault<z.ZodString>;
|
|
189
|
+
prop: z.ZodDefault<z.ZodString>;
|
|
190
|
+
selectTab: z.ZodDefault<z.ZodString>;
|
|
191
|
+
showMore: z.ZodDefault<z.ZodString>;
|
|
192
|
+
stars: z.ZodDefault<z.ZodString>;
|
|
193
|
+
tab: z.ZodDefault<z.ZodString>;
|
|
194
|
+
type: z.ZodDefault<z.ZodString>;
|
|
195
|
+
update: z.ZodDefault<z.ZodString>;
|
|
174
196
|
}, z.core.$strip>>;
|
|
175
197
|
feedback: z.ZodPrefault<z.ZodObject<{
|
|
176
198
|
no: z.ZodDefault<z.ZodString>;
|
|
@@ -216,12 +238,14 @@ export declare const uiStringsSchema: z.ZodPrefault<z.ZodObject<{
|
|
|
216
238
|
all: z.ZodDefault<z.ZodString>;
|
|
217
239
|
allLanguages: z.ZodDefault<z.ZodString>;
|
|
218
240
|
allVersions: z.ZodDefault<z.ZodString>;
|
|
219
|
-
|
|
220
|
-
|
|
241
|
+
assistant: z.ZodDefault<z.ZodString>;
|
|
242
|
+
assistantHint: z.ZodDefault<z.ZodString>;
|
|
221
243
|
button: z.ZodDefault<z.ZodString>;
|
|
222
244
|
devOnly: z.ZodDefault<z.ZodString>;
|
|
245
|
+
docs: z.ZodDefault<z.ZodString>;
|
|
223
246
|
error: z.ZodDefault<z.ZodString>;
|
|
224
247
|
label: z.ZodDefault<z.ZodString>;
|
|
248
|
+
latest: z.ZodDefault<z.ZodString>;
|
|
225
249
|
navigate: z.ZodDefault<z.ZodString>;
|
|
226
250
|
noResults: z.ZodDefault<z.ZodString>;
|
|
227
251
|
open: z.ZodDefault<z.ZodString>;
|
|
@@ -270,6 +294,11 @@ export { UI_PACKS } from "./ui-packs/index.ts";
|
|
|
270
294
|
* English baseline ← default-locale pack ← default-locale override ←
|
|
271
295
|
* locale pack ← locale override. So a missing key falls back to the default
|
|
272
296
|
* locale's translation, then to English.
|
|
297
|
+
*
|
|
298
|
+
* English has no pack because the baseline is its complete translation, so an
|
|
299
|
+
* English locale (`en`, `en-GB`) skips the default-locale layers: on a site
|
|
300
|
+
* whose default is German, English pages keep English chrome instead of
|
|
301
|
+
* inheriting the German strings.
|
|
273
302
|
*/
|
|
274
303
|
export declare const resolveUIStrings: (locale: string, options: {
|
|
275
304
|
defaultLocale: string;
|
|
@@ -76,8 +76,14 @@ export declare const localePlacement: (rel: string, ext: string, i18n: ResolvedI
|
|
|
76
76
|
* (`x.en.mdx`) swaps it for the target's (`x.fr.mdx`) — same case-insensitive
|
|
77
77
|
* last-dot-inside-filename logic as `localePlacement`, so both spellings of a
|
|
78
78
|
* default-locale file resolve to one canonical target.
|
|
79
|
+
*
|
|
80
|
+
* Under `dir`, `folders` are the content root's existing top-level folders: one
|
|
81
|
+
* that names the locale in another casing (`pt-br/` for a configured `pt-BR`)
|
|
82
|
+
* is the locale's folder already, since {@link detectLocale} matches it case-
|
|
83
|
+
* insensitively. Writing beside it into a second `pt-BR/` would, on a case-
|
|
84
|
+
* sensitive filesystem, publish the page twice.
|
|
79
85
|
*/
|
|
80
|
-
export declare const localeTargetPath: (rel: string, ext: string, locale: string, i18n: ResolvedI18nConfig) => string;
|
|
86
|
+
export declare const localeTargetPath: (rel: string, ext: string, locale: string, i18n: ResolvedI18nConfig, folders?: readonly string[]) => string;
|
|
81
87
|
/**
|
|
82
88
|
* Warn about top-level content folders that look like a locale (a code Blume
|
|
83
89
|
* recognizes) but aren't declared in `i18n.locales`. Without this they're
|
|
@@ -35,7 +35,9 @@ export declare const resolveRelativeHref: (href: string, from: RelativeLinkBase,
|
|
|
35
35
|
* Whether a content file is its folder's index, from its name as written on
|
|
36
36
|
* disk: `index.md(x)` after an ordering prefix, optionally carrying one of
|
|
37
37
|
* `localeTokens` before the extension (`index.fr.mdx` under the `dot` locale
|
|
38
|
-
* parser, `index.$.mdx` for a file shared by every locale).
|
|
38
|
+
* parser, `index.$.mdx` for a file shared by every locale). The `index` itself
|
|
39
|
+
* is case-sensitive, as route mapping reads it: `Index.md` is a page named
|
|
40
|
+
* `Index`, not its folder's index.
|
|
39
41
|
*/
|
|
40
42
|
export declare const isIndexFileName: (name: string, localeTokens?: readonly string[]) => boolean;
|
|
41
43
|
/** Where content files publish, for resolving file links (`./setup.mdx`). */
|
|
@@ -5,3 +5,13 @@
|
|
|
5
5
|
* which is what makes dev-server regeneration reflect config/meta changes.
|
|
6
6
|
*/
|
|
7
7
|
export declare const createModuleLoader: () => ((file: string) => Promise<unknown>);
|
|
8
|
+
/**
|
|
9
|
+
* Create a loader for a module whose default export is its whole value
|
|
10
|
+
* (`blume.config.ts`). Unlike {@link createModuleLoader}, it never falls back
|
|
11
|
+
* to the module's namespace: a module with no default export, or one that
|
|
12
|
+
* exports `null`/`undefined`, resolves to `undefined` so the caller can say
|
|
13
|
+
* so, instead of validating `{}` (a bare `defineConfig({…})` call) or
|
|
14
|
+
* `{ config }` (a named export). jiti's default interop is off because it
|
|
15
|
+
* throws on `export default null`.
|
|
16
|
+
*/
|
|
17
|
+
export declare const createDefaultExportLoader: typeof createModuleLoader;
|
|
@@ -33,6 +33,11 @@ export interface LocalizeLinkOptions {
|
|
|
33
33
|
/** Every served route, base-prefixed like `path` (no `deployment.base`). */
|
|
34
34
|
routes: RouteSet;
|
|
35
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Whether `routes` serves `route` (base-prefixed, fragment-less). Routes are
|
|
38
|
+
* stored decoded, so a browser-copied `/caf%C3%A9` still finds its page.
|
|
39
|
+
*/
|
|
40
|
+
export declare const servesRoute: (routes: RouteSet, route: string) => boolean;
|
|
36
41
|
/**
|
|
37
42
|
* Move a base-prefixed, fragment-less internal path into `locale` when that
|
|
38
43
|
* route is served, else return it unchanged. Idempotent: a path already under
|
|
@@ -44,9 +49,14 @@ export interface LocalizeHrefOptions extends LocalizeLinkOptions {
|
|
|
44
49
|
deployBase: string;
|
|
45
50
|
}
|
|
46
51
|
/**
|
|
47
|
-
* Localize a rendered `href`: external URLs, relative paths, bare
|
|
48
|
-
*
|
|
52
|
+
* Localize a rendered `href`: external URLs, relative paths, and bare
|
|
53
|
+
* fragments pass through; a root-relative page link keeps its `?query` and
|
|
49
54
|
* `#fragment` and its `deployment.base` layer around the localized path.
|
|
55
|
+
*
|
|
56
|
+
* Asset links (`/logo.png`, a raw `.md` twin) pass through too, because no
|
|
57
|
+
* page is served at their localized path — the same served-route test the
|
|
58
|
+
* link checker applies. A file extension alone doesn't mark an asset: a
|
|
59
|
+
* dotted page route (`/releases/v1.2`) is localized like any other page.
|
|
50
60
|
*/
|
|
51
61
|
export declare const localizeHref: (href: string, options: LocalizeHrefOptions) => string;
|
|
52
62
|
/**
|
|
@@ -2,10 +2,14 @@ import type { FolderMeta } from "./schema.ts";
|
|
|
2
2
|
import type { Diagnostic } from "./types.ts";
|
|
3
3
|
/** A filesystem content source to scan for folder meta: its on-disk root and
|
|
4
4
|
* optional route prefix. The prefix is folded into every key so meta lines up
|
|
5
|
-
* with the sidebar group path, which carries the same prefix.
|
|
5
|
+
* with the sidebar group path, which carries the same prefix. `include` and
|
|
6
|
+
* `exclude` are the source's content globs, which scope the scan to the
|
|
7
|
+
* folders the source reads. */
|
|
6
8
|
export interface FolderMetaSource {
|
|
7
9
|
root: string;
|
|
8
10
|
prefix?: string;
|
|
11
|
+
include?: readonly string[];
|
|
12
|
+
exclude?: readonly string[];
|
|
9
13
|
}
|
|
10
14
|
/**
|
|
11
15
|
* Discover `meta.{ts,js,mjs}` files across the given filesystem sources. Keys are
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SidebarItemConfig } from "./schema.ts";
|
|
1
2
|
import type { Diagnostic, Navigation, PageRecord } from "./types.ts";
|
|
2
3
|
/** Warn about icon names that aren't in Blume's set (skipping image/SVG icons). */
|
|
3
4
|
export declare const validateNavIcons: (navigation: Navigation) => Diagnostic[];
|
|
@@ -16,6 +17,15 @@ export declare const validateSearchPopularIcons: (popular: {
|
|
|
16
17
|
* not in the content-only graph build.
|
|
17
18
|
*/
|
|
18
19
|
export declare const validateNavTargets: (navigation: Navigation, routes: Set<string>) => Diagnostic[];
|
|
20
|
+
/**
|
|
21
|
+
* Warn about explicit `navigation.sidebar` items that can't render as written,
|
|
22
|
+
* instead of dropping them without a word: a page ref that matches no page
|
|
23
|
+
* (left out of the sidebar), a `root` that matches no page (its link leads
|
|
24
|
+
* nowhere), and an item with no page, `href`, `root`, or `items` (left out).
|
|
25
|
+
* `resolves` answers whether a normalized ref (`/guides`) names a page — in
|
|
26
|
+
* any locale — or a route served outside the content tree.
|
|
27
|
+
*/
|
|
28
|
+
export declare const validateSidebarItems: (items: SidebarItemConfig[], resolves: (route: string) => boolean) => Diagnostic[];
|
|
19
29
|
/**
|
|
20
30
|
* Structural navigation diagnostics that need only the built navigation +
|
|
21
31
|
* content pages: duplicate sidebar labels at a level, and hidden pages that
|
|
@@ -18,6 +18,29 @@ export declare const isUnderPath: (route: string, base: string) => boolean;
|
|
|
18
18
|
* sidebar or highlight the wrong tab over it.
|
|
19
19
|
*/
|
|
20
20
|
export declare const isRootTab: (tab: NavTab, root: string) => boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Capitalize one word of a slug-like name for display, spelling the acronyms
|
|
23
|
+
* and brand casings in {@link WORD_FORMS} their own way (`api` → "API").
|
|
24
|
+
* Shared with page titles derived from file names, so a page and a folder
|
|
25
|
+
* named alike read alike.
|
|
26
|
+
*/
|
|
27
|
+
export declare const titleWord: (word: string) => string;
|
|
28
|
+
/**
|
|
29
|
+
* An explicit-sidebar ref (`"guides/"`, `"/guides/index"`, `"index"`) in the
|
|
30
|
+
* slashless route form pages are keyed by (`/guides`, `/`).
|
|
31
|
+
*/
|
|
32
|
+
export declare const normalizeRef: (ref: string) => string;
|
|
33
|
+
/** An explicit-config sidebar item written as a bare page-ref string. */
|
|
34
|
+
export declare const isPageRef: (item: SidebarItemConfig) => item is string;
|
|
35
|
+
/**
|
|
36
|
+
* Pages keyed the way explicit-sidebar refs look them up: by the
|
|
37
|
+
* locale-agnostic `translationKey` under i18n (`byLogical`), so one authored
|
|
38
|
+
* sidebar maps onto every locale's pages, else by route. Refs are authored as
|
|
39
|
+
* if mounted at root while `page.route` carries the base, so each page is also
|
|
40
|
+
* aliased under its base-less route (the `translationKey` is base-less
|
|
41
|
+
* already).
|
|
42
|
+
*/
|
|
43
|
+
export declare const pagesByRef: (pages: PageRecord[], basePath: string, byLogical: boolean) => Map<string, PageRecord>;
|
|
21
44
|
/** Build the complete navigation model from pages, meta, and config. */
|
|
22
45
|
export declare const buildNavigation: (pages: PageRecord[], options: {
|
|
23
46
|
/** Plain links in the header, left of the icon buttons. */
|
|
@@ -39,6 +62,13 @@ export declare const buildNavigation: (pages: PageRecord[], options: {
|
|
|
39
62
|
* group path, e.g. `fr`, `v1.0`, or `v1.0/fr`.
|
|
40
63
|
*/
|
|
41
64
|
metaPrefix?: string;
|
|
65
|
+
/**
|
|
66
|
+
* Folder-meta lookup prefix of the i18n fallback locale, whose untranslated
|
|
67
|
+
* pages pad this tree (`""` for the default locale of the current
|
|
68
|
+
* version). A group with no meta of this locale's mirrors the fallback
|
|
69
|
+
* locale's. Unset for the fallback locale itself, and without i18n.
|
|
70
|
+
*/
|
|
71
|
+
fallbackMetaPrefix?: string;
|
|
42
72
|
/**
|
|
43
73
|
* Prefix for shared `meta.$.*` lookups — the version dir inside a
|
|
44
74
|
* snapshot (`v1.0`), since shared meta is locale-agnostic but still
|
|
@@ -60,6 +90,14 @@ export declare const buildNavigation: (pages: PageRecord[], options: {
|
|
|
60
90
|
* scoping.
|
|
61
91
|
*/
|
|
62
92
|
localizedRoot?: string;
|
|
93
|
+
/**
|
|
94
|
+
* The root of the space tab paths are written in, before `basePath`: the
|
|
95
|
+
* current docs' localized root (`"/"`, `/fr`). Defaults to
|
|
96
|
+
* `localizedRoot`; an archived version tree passes it because its own
|
|
97
|
+
* root is versionized (`/fr/v1.0`) while tab paths are not, so a tab's
|
|
98
|
+
* section can be found under the version.
|
|
99
|
+
*/
|
|
100
|
+
tabRoot?: string;
|
|
63
101
|
/**
|
|
64
102
|
* Sink for diagnostics produced while building the tree (duplicate sidebar
|
|
65
103
|
* `order` values, index-page title/folder-meta-title mismatches). Pushed
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** The digits of `name`'s ordering prefix (`01` of `01-intro`), if it has one. */
|
|
2
|
+
export declare const orderingPrefix: (name: string) => string | undefined;
|
|
3
|
+
/** `name` without its ordering prefix (`01-intro` -> `intro`). */
|
|
4
|
+
export declare const stripOrderingPrefix: (name: string) => string;
|
|
@@ -21,6 +21,8 @@ export declare const unsafeLinkSpans: (tree: Root) => UnsafeLinkSpan[];
|
|
|
21
21
|
/**
|
|
22
22
|
* Markdown with every unsafe link reduced to its label text and every unsafe
|
|
23
23
|
* link definition removed. Everything else — safe links, raw HTML, code —
|
|
24
|
-
* passes through as written.
|
|
24
|
+
* passes through as written. The Markdown is read as GitHub-flavored, the way
|
|
25
|
+
* the site renders it: a link inside a footnote definition or a table cell is
|
|
26
|
+
* only a link to a GFM parser.
|
|
25
27
|
*/
|
|
26
28
|
export declare const neutralizeUnsafeLinks: (markdown: string) => string;
|
|
@@ -471,7 +471,7 @@ type SearchOptionsInput = z.input<typeof searchOptionsSchema>;
|
|
|
471
471
|
/** What `search` accepts: an adapter (or `false`) directly, or the object form. */
|
|
472
472
|
type SearchConfigInput = false | SearchAdapterInput | SearchOptionsInput;
|
|
473
473
|
declare const aiConfigSchema: z.ZodObject<{
|
|
474
|
-
|
|
474
|
+
assistant: z.ZodOptional<z.ZodObject<{
|
|
475
475
|
cors: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodLiteral<"*">, z.ZodPipe<z.ZodURL, z.ZodTransform<string, string>>]>>>;
|
|
476
476
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
477
477
|
endpoint: z.ZodOptional<z.ZodString>;
|
|
@@ -582,9 +582,9 @@ declare const aiConfigSchema: z.ZodObject<{
|
|
|
582
582
|
cursor: "cursor";
|
|
583
583
|
}>>]>>, z.ZodTransform<("v0" | "chatgpt" | "claude" | "t3" | "scira" | "cursor")[], boolean | ("v0" | "chatgpt" | "claude" | "t3" | "scira" | "cursor")[]>>;
|
|
584
584
|
}, z.core.$strict>;
|
|
585
|
-
export {
|
|
586
|
-
export type {
|
|
587
|
-
export type
|
|
585
|
+
export { assistantReasoningLevels } from "../ai/ask.ts";
|
|
586
|
+
export type { AssistantReasoning } from "../ai/ask.ts";
|
|
587
|
+
export type AssistantConfig = NonNullable<z.infer<typeof aiConfigSchema>["assistant"]>;
|
|
588
588
|
export { openInChatProviders } from "./open-in-chat.ts";
|
|
589
589
|
export type { OpenInChatProvider } from "./open-in-chat.ts";
|
|
590
590
|
/** A configured locale: ISO-ish code plus display metadata for the switcher. */
|
|
@@ -687,15 +687,7 @@ declare const contentSignalsSchema: z.ZodPipe<z.ZodUnion<readonly [z.ZodBoolean,
|
|
|
687
687
|
aiTrain: boolean;
|
|
688
688
|
search: boolean;
|
|
689
689
|
}>>;
|
|
690
|
-
|
|
691
|
-
* How the "last updated" stamp and the changelog timeline render their dates —
|
|
692
|
-
* a curated pass-through to `Intl.DateTimeFormat`, shared by both surfaces so
|
|
693
|
-
* they read alike. Defaults to `{ dateStyle: "long" }`. Both stamps format in
|
|
694
|
-
* UTC unless a `timeZone` is given, so a date reads the same regardless of the
|
|
695
|
-
* build machine's zone. `dateStyle` is a preset that can't be combined with the
|
|
696
|
-
* individual component fields (`year`, `month`, …), matching `Intl`'s own rule.
|
|
697
|
-
*/
|
|
698
|
-
declare const dateFormatConfigSchema: z.ZodObject<{
|
|
690
|
+
declare const dateFormatConfigSchema: z.ZodPipe<z.ZodObject<{
|
|
699
691
|
calendar: z.ZodOptional<z.ZodString>;
|
|
700
692
|
dateStyle: z.ZodOptional<z.ZodEnum<{
|
|
701
693
|
medium: "medium";
|
|
@@ -730,7 +722,27 @@ declare const dateFormatConfigSchema: z.ZodObject<{
|
|
|
730
722
|
numeric: "numeric";
|
|
731
723
|
"2-digit": "2-digit";
|
|
732
724
|
}>>;
|
|
733
|
-
}, z.core.$strict
|
|
725
|
+
}, z.core.$strict>, z.ZodTransform<{
|
|
726
|
+
calendar?: string | undefined;
|
|
727
|
+
dateStyle?: "medium" | "full" | "long" | "short" | undefined;
|
|
728
|
+
day?: "numeric" | "2-digit" | undefined;
|
|
729
|
+
era?: "long" | "short" | "narrow" | undefined;
|
|
730
|
+
month?: "long" | "short" | "numeric" | "2-digit" | "narrow" | undefined;
|
|
731
|
+
numberingSystem?: string | undefined;
|
|
732
|
+
timeZone?: string | undefined;
|
|
733
|
+
weekday?: "long" | "short" | "narrow" | undefined;
|
|
734
|
+
year?: "numeric" | "2-digit" | undefined;
|
|
735
|
+
}, {
|
|
736
|
+
calendar?: string | undefined;
|
|
737
|
+
dateStyle?: "medium" | "full" | "long" | "short" | undefined;
|
|
738
|
+
day?: "numeric" | "2-digit" | undefined;
|
|
739
|
+
era?: "long" | "short" | "narrow" | undefined;
|
|
740
|
+
month?: "long" | "short" | "numeric" | "2-digit" | "narrow" | undefined;
|
|
741
|
+
numberingSystem?: string | undefined;
|
|
742
|
+
timeZone?: string | undefined;
|
|
743
|
+
weekday?: "long" | "short" | "narrow" | undefined;
|
|
744
|
+
year?: "numeric" | "2-digit" | undefined;
|
|
745
|
+
}>>;
|
|
734
746
|
export declare const blumeConfigSchema: z.ZodObject<{
|
|
735
747
|
agents: z.ZodPrefault<z.ZodObject<{
|
|
736
748
|
agentReadability: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -785,7 +797,7 @@ export declare const blumeConfigSchema: z.ZodObject<{
|
|
|
785
797
|
webmcp: z.ZodDefault<z.ZodBoolean>;
|
|
786
798
|
}, z.core.$strict>>;
|
|
787
799
|
ai: z.ZodPrefault<z.ZodObject<{
|
|
788
|
-
|
|
800
|
+
assistant: z.ZodOptional<z.ZodObject<{
|
|
789
801
|
cors: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodLiteral<"*">, z.ZodPipe<z.ZodURL, z.ZodTransform<string, string>>]>>>;
|
|
790
802
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
791
803
|
endpoint: z.ZodOptional<z.ZodString>;
|
|
@@ -931,6 +943,13 @@ export declare const blumeConfigSchema: z.ZodObject<{
|
|
|
931
943
|
}, z.core.$catchall<z.ZodJSONSchema>>;
|
|
932
944
|
requiredSecrets: z.ZodArray<z.ZodString>;
|
|
933
945
|
runtimeDeps: z.ZodArray<z.ZodString>;
|
|
946
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
947
|
+
kind: z.ZodLiteral<"databuddy">;
|
|
948
|
+
options: z.ZodObject<{
|
|
949
|
+
clientId: z.ZodString;
|
|
950
|
+
}, z.core.$catchall<z.ZodString>>;
|
|
951
|
+
requiredSecrets: z.ZodArray<z.ZodString>;
|
|
952
|
+
runtimeDeps: z.ZodArray<z.ZodString>;
|
|
934
953
|
}, z.core.$strict>, z.ZodObject<{
|
|
935
954
|
kind: z.ZodLiteral<"fathom">;
|
|
936
955
|
options: z.ZodObject<{
|
|
@@ -2164,7 +2183,7 @@ export declare const blumeConfigSchema: z.ZodObject<{
|
|
|
2164
2183
|
runtimeDeps: string[];
|
|
2165
2184
|
})[] | undefined;
|
|
2166
2185
|
}>>>;
|
|
2167
|
-
dateFormat: z.ZodDefault<z.ZodObject<{
|
|
2186
|
+
dateFormat: z.ZodDefault<z.ZodPipe<z.ZodObject<{
|
|
2168
2187
|
calendar: z.ZodOptional<z.ZodString>;
|
|
2169
2188
|
dateStyle: z.ZodOptional<z.ZodEnum<{
|
|
2170
2189
|
medium: "medium";
|
|
@@ -2199,7 +2218,27 @@ export declare const blumeConfigSchema: z.ZodObject<{
|
|
|
2199
2218
|
numeric: "numeric";
|
|
2200
2219
|
"2-digit": "2-digit";
|
|
2201
2220
|
}>>;
|
|
2202
|
-
}, z.core.$strict
|
|
2221
|
+
}, z.core.$strict>, z.ZodTransform<{
|
|
2222
|
+
calendar?: string | undefined;
|
|
2223
|
+
dateStyle?: "medium" | "full" | "long" | "short" | undefined;
|
|
2224
|
+
day?: "numeric" | "2-digit" | undefined;
|
|
2225
|
+
era?: "long" | "short" | "narrow" | undefined;
|
|
2226
|
+
month?: "long" | "short" | "numeric" | "2-digit" | "narrow" | undefined;
|
|
2227
|
+
numberingSystem?: string | undefined;
|
|
2228
|
+
timeZone?: string | undefined;
|
|
2229
|
+
weekday?: "long" | "short" | "narrow" | undefined;
|
|
2230
|
+
year?: "numeric" | "2-digit" | undefined;
|
|
2231
|
+
}, {
|
|
2232
|
+
calendar?: string | undefined;
|
|
2233
|
+
dateStyle?: "medium" | "full" | "long" | "short" | undefined;
|
|
2234
|
+
day?: "numeric" | "2-digit" | undefined;
|
|
2235
|
+
era?: "long" | "short" | "narrow" | undefined;
|
|
2236
|
+
month?: "long" | "short" | "numeric" | "2-digit" | "narrow" | undefined;
|
|
2237
|
+
numberingSystem?: string | undefined;
|
|
2238
|
+
timeZone?: string | undefined;
|
|
2239
|
+
weekday?: "long" | "short" | "narrow" | undefined;
|
|
2240
|
+
year?: "numeric" | "2-digit" | undefined;
|
|
2241
|
+
}>>>;
|
|
2203
2242
|
deployment: z.ZodPrefault<z.ZodPipe<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
2204
2243
|
kind: z.ZodLiteral<"cloudflare">;
|
|
2205
2244
|
options: z.ZodObject<{
|
|
@@ -2441,7 +2480,7 @@ export declare const blumeConfigSchema: z.ZodObject<{
|
|
|
2441
2480
|
tag: z.ZodOptional<z.ZodString>;
|
|
2442
2481
|
}, z.core.$strict>>>;
|
|
2443
2482
|
label: z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>;
|
|
2444
|
-
path: z.ZodString
|
|
2483
|
+
path: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
|
|
2445
2484
|
}, z.core.$strict>>>;
|
|
2446
2485
|
}, z.core.$strict>>;
|
|
2447
2486
|
react: z.ZodPrefault<z.ZodObject<{
|
|
@@ -20,6 +20,11 @@ export interface GithubReleasesSourceOptions {
|
|
|
20
20
|
prereleases?: boolean;
|
|
21
21
|
/** Repository name. */
|
|
22
22
|
repo: string;
|
|
23
|
+
/**
|
|
24
|
+
* The site's own URL (`deployment.site`). A link in the notes back to it
|
|
25
|
+
* becomes root-relative, the way a page links to another page.
|
|
26
|
+
*/
|
|
27
|
+
site?: string;
|
|
23
28
|
}
|
|
24
29
|
/**
|
|
25
30
|
* GitHub Releases content source. Pulls a repo's releases from the REST API and
|