blume 2.0.3 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +1 -0
- package/CHANGELOG.md +48 -0
- package/README.md +1 -1
- package/dist/cli/{chunk-1d7ve1dm.js → chunk-0gz36akr.js} +18 -2
- package/dist/cli/{chunk-1d7ve1dm.js.map → chunk-0gz36akr.js.map} +3 -3
- package/dist/cli/{chunk-2eytanqx.js → chunk-1n228xqb.js} +2 -2
- package/dist/cli/{chunk-yfyb25rh.js → chunk-2f3ndkpw.js} +24 -8
- package/dist/cli/chunk-2f3ndkpw.js.map +14 -0
- package/dist/cli/{chunk-r20tn01b.js → chunk-2f7n4qzt.js} +8 -2
- package/dist/cli/{chunk-r20tn01b.js.map → chunk-2f7n4qzt.js.map} +3 -3
- package/dist/cli/{chunk-35d4wj9f.js → chunk-2n4ps1b3.js} +7 -7
- package/dist/cli/{chunk-j85vccga.js → chunk-43zcf4gz.js} +97 -57
- package/dist/cli/{chunk-j85vccga.js.map → chunk-43zcf4gz.js.map} +6 -6
- package/dist/cli/{chunk-e04dxsz1.js → chunk-4ejxbzee.js} +1 -1
- package/dist/cli/{chunk-5m5nmvyq.js → chunk-4h8z9vv5.js} +233 -39
- package/dist/cli/chunk-4h8z9vv5.js.map +16 -0
- package/dist/cli/{chunk-5f86nr5m.js → chunk-5cg2rzgf.js} +18 -16
- package/dist/cli/{chunk-5f86nr5m.js.map → chunk-5cg2rzgf.js.map} +2 -2
- package/dist/cli/{chunk-tzmab476.js → chunk-5ffywsmb.js} +4 -4
- package/dist/cli/{chunk-2z928egk.js → chunk-5wj2qwn2.js} +5 -5
- package/dist/cli/chunk-6bm0xpgd.js +18 -0
- package/dist/cli/chunk-6bm0xpgd.js.map +10 -0
- package/dist/cli/{chunk-vg9r4eb9.js → chunk-713mngdq.js} +12 -5
- package/dist/cli/{chunk-vg9r4eb9.js.map → chunk-713mngdq.js.map} +3 -3
- package/dist/cli/{chunk-5xvm6tfj.js → chunk-9geymqns.js} +17 -15
- package/dist/cli/{chunk-5xvm6tfj.js.map → chunk-9geymqns.js.map} +2 -2
- package/dist/cli/{chunk-q58y5e6a.js → chunk-9xr4dgee.js} +26 -17
- package/dist/cli/chunk-9xr4dgee.js.map +10 -0
- package/dist/cli/{chunk-b07cmahc.js → chunk-amrb6hgh.js} +2 -2
- package/dist/cli/chunk-cm89scdv.js +443 -0
- package/dist/cli/chunk-cm89scdv.js.map +11 -0
- package/dist/cli/{chunk-akbpwfxc.js → chunk-cmtcnh9f.js} +2 -2
- package/dist/cli/chunk-cy5bm0j0.js +104 -0
- package/dist/cli/chunk-cy5bm0j0.js.map +11 -0
- package/dist/cli/{chunk-crgn1q09.js → chunk-e7vvk5ya.js} +4 -4
- package/dist/cli/{chunk-pehfxfta.js → chunk-g2z9x01v.js} +6 -98
- package/dist/cli/chunk-g2z9x01v.js.map +10 -0
- package/dist/cli/{chunk-tkacnehg.js → chunk-gp84za0h.js} +2 -2
- package/dist/cli/{chunk-wrr3j9w9.js → chunk-h2a48yhd.js} +186 -63
- package/dist/cli/chunk-h2a48yhd.js.map +36 -0
- package/dist/cli/{chunk-hm3vjy5s.js → chunk-jnwj5kjj.js} +14 -9
- package/dist/cli/{chunk-hm3vjy5s.js.map → chunk-jnwj5kjj.js.map} +4 -4
- package/dist/cli/chunk-kwrg63tm.js +31 -0
- package/dist/cli/chunk-kwrg63tm.js.map +10 -0
- package/dist/cli/{chunk-2hsdwb9n.js → chunk-nd1821sk.js} +18 -16
- package/dist/cli/{chunk-2hsdwb9n.js.map → chunk-nd1821sk.js.map} +2 -2
- package/dist/cli/{chunk-6dsbexzp.js → chunk-ntv4qrt7.js} +17 -15
- package/dist/cli/{chunk-6dsbexzp.js.map → chunk-ntv4qrt7.js.map} +2 -2
- package/dist/cli/{chunk-r9rcc4w7.js → chunk-p804f3pe.js} +7 -7
- package/dist/cli/{chunk-ey84smr6.js → chunk-py62fewh.js} +6 -6
- package/dist/cli/{chunk-ey84smr6.js.map → chunk-py62fewh.js.map} +1 -1
- package/dist/cli/chunk-q3wxxq39.js +126 -0
- package/dist/cli/chunk-q3wxxq39.js.map +11 -0
- package/dist/cli/{chunk-9t7a85s3.js → chunk-rekqz4qg.js} +23 -13
- package/dist/cli/chunk-rekqz4qg.js.map +10 -0
- package/dist/cli/{chunk-8ktnccpt.js → chunk-ta27feev.js} +1 -1
- package/dist/cli/{chunk-pv29h0wf.js → chunk-xkz5xbtv.js} +3476 -822
- package/dist/cli/chunk-xkz5xbtv.js.map +213 -0
- package/dist/cli/{chunk-a58773jm.js → chunk-y4ykbark.js} +2 -2
- package/dist/cli/{chunk-p3v96n38.js → chunk-y5h4r2y0.js} +4 -4
- package/dist/cli/{chunk-acanzt5p.js → chunk-yj17vs39.js} +6 -6
- package/dist/cli/{chunk-p73c0m7w.js → chunk-yxmk4pec.js} +16 -14
- package/dist/cli/{chunk-p73c0m7w.js.map → chunk-yxmk4pec.js.map} +2 -2
- package/dist/cli/{chunk-3em5wd2y.js → chunk-zccbjcj0.js} +4 -3
- package/dist/cli/{chunk-3em5wd2y.js.map → chunk-zccbjcj0.js.map} +2 -2
- package/dist/cli/{chunk-c8chx29p.js → chunk-zf748avv.js} +384 -207
- package/dist/cli/chunk-zf748avv.js.map +37 -0
- package/dist/cli/{chunk-g4hq16wv.js → chunk-zhvd6adm.js} +16 -14
- package/dist/cli/{chunk-g4hq16wv.js.map → chunk-zhvd6adm.js.map} +2 -2
- package/dist/cli/index.js +26 -20
- package/dist/cli/index.js.map +5 -5
- package/dist/types/ai/agent-surface.d.ts +8 -7
- package/dist/types/ai/ai-catalog.d.ts +7 -0
- package/dist/types/ai/ask-context.d.ts +22 -0
- package/dist/types/ai/ask.d.ts +271 -58
- package/dist/types/ai/index.d.ts +2 -2
- package/dist/types/ai/site-skill.d.ts +26 -0
- package/dist/types/ai/skills.d.ts +16 -0
- package/dist/types/astro/integration.d.ts +8 -0
- package/dist/types/captcha/hcaptcha.d.ts +27 -0
- package/dist/types/captcha/index.d.ts +28 -0
- package/dist/types/captcha/schema.d.ts +29 -0
- package/dist/types/captcha/turnstile.d.ts +28 -0
- package/dist/types/components/content/api-field.d.ts +59 -0
- package/dist/types/components/content/api-page.d.ts +95 -0
- package/dist/types/components/layout/nav-utils.d.ts +26 -0
- package/dist/types/components/openapi/helpers.d.ts +137 -0
- package/dist/types/components/openapi/security.d.ts +85 -0
- package/dist/types/consent/ethyca.d.ts +48 -0
- package/dist/types/consent/index.d.ts +37 -0
- package/dist/types/consent/native.d.ts +28 -0
- package/dist/types/consent/osano.d.ts +42 -0
- package/dist/types/consent/schema.d.ts +110 -0
- package/dist/types/core/config-input.d.ts +187 -20
- package/dist/types/core/data.d.ts +49 -4
- package/dist/types/core/footer.d.ts +8 -0
- package/dist/types/core/i18n-ui.d.ts +86 -0
- package/dist/types/core/includes.d.ts +8 -2
- package/dist/types/core/localizable.d.ts +7 -0
- package/dist/types/core/page-modes.d.ts +29 -0
- package/dist/types/core/redirect-patterns.d.ts +144 -0
- package/dist/types/core/related.d.ts +40 -0
- package/dist/types/core/schema.d.ts +551 -56
- package/dist/types/core/sources/read.d.ts +5 -0
- package/dist/types/core/types.d.ts +1 -1
- package/dist/types/core/variables.d.ts +42 -0
- package/dist/types/deploy/node-headers.d.ts +13 -2
- package/dist/types/deploy/platforms/cloudflare.d.ts +5 -0
- package/dist/types/deploy/platforms/netlify.d.ts +7 -0
- package/dist/types/deploy/platforms/vercel.d.ts +6 -0
- package/dist/types/deploy/redirects.d.ts +39 -11
- package/dist/types/deploy/vercel-negotiation.d.ts +9 -0
- package/dist/types/markdown/code-title.d.ts +17 -0
- package/dist/types/markdown/features.d.ts +3 -2
- package/dist/types/narration/build.d.ts +70 -0
- package/dist/types/narration/provider.d.ts +26 -0
- package/dist/types/narration/script.d.ts +154 -0
- package/dist/types/openapi/model.d.ts +12 -6
- package/dist/types/openapi/overlay.d.ts +54 -0
- package/dist/types/openapi/parse.d.ts +13 -0
- package/dist/types/openapi/references.d.ts +14 -4
- package/dist/types/ratelimit/cloudflare.d.ts +39 -0
- package/dist/types/ratelimit/index.d.ts +27 -0
- package/dist/types/ratelimit/memory.d.ts +36 -0
- package/dist/types/ratelimit/schema.d.ts +111 -0
- package/dist/types/ratelimit/upstash.d.ts +21 -0
- package/dist/types/ratelimit/wrangler.d.ts +23 -0
- package/dist/types/reference/asyncapi.d.ts +10 -10
- package/dist/types/reference/graphql.d.ts +13 -10
- package/dist/types/reference/openapi.d.ts +33 -12
- package/dist/types/reference/options.d.ts +45 -5
- package/dist/types/reference/scalar.d.ts +13 -0
- package/dist/types/reference/schema.d.ts +60 -36
- package/dist/types/search/documents.d.ts +12 -1
- package/dist/types/search/orama-index.d.ts +4 -0
- package/dist/types/seo/metatags.d.ts +20 -0
- package/docs/02-deployment.mdx +41 -5
- package/docs/03-upgrading.mdx +4 -4
- package/docs/04-migrating.mdx +1 -1
- package/docs/advanced/changelog.mdx +2 -2
- package/docs/advanced/skills.mdx +14 -0
- package/docs/cli/audit.mdx +21 -1
- package/docs/cli/index.mdx +1 -0
- package/docs/configuration/analytics.mdx +3 -1
- package/docs/configuration/assistant.mdx +188 -36
- package/docs/configuration/consent.mdx +100 -0
- package/docs/configuration/customization.mdx +4 -4
- package/docs/configuration/index.mdx +63 -5
- package/docs/configuration/meta.ts +3 -0
- package/docs/configuration/narration.mdx +119 -0
- package/docs/configuration/rate-limiting.mdx +69 -0
- package/docs/configuration/search.mdx +29 -1
- package/docs/configuration/theming.mdx +3 -1
- package/docs/content/components.mdx +106 -0
- package/docs/content/frontmatter.mdx +76 -0
- package/docs/content/i18n.mdx +38 -3
- package/docs/content/includes.mdx +16 -0
- package/docs/content/meta.mdx +1 -0
- package/docs/content/meta.ts +1 -0
- package/docs/content/navigation.mdx +28 -6
- package/docs/content/sources/contentful.mdx +32 -0
- package/docs/content/sources/custom.mdx +39 -0
- package/docs/content/sources/github-releases.mdx +31 -0
- package/docs/content/sources/index.mdx +91 -0
- package/docs/content/sources/meta.ts +16 -0
- package/docs/content/sources/notion.mdx +32 -0
- package/docs/content/sources/obsidian.mdx +37 -0
- package/docs/content/sources/payload.mdx +30 -0
- package/docs/content/sources/remote-mdx.mdx +40 -0
- package/docs/content/sources/sanity.mdx +29 -0
- package/docs/content/sources/strapi.mdx +31 -0
- package/docs/content/syntax.mdx +67 -2
- package/docs/content/variables.mdx +41 -0
- package/docs/discoverability/agent-discovery.mdx +29 -2
- package/docs/discoverability/index.mdx +1 -1
- package/docs/discoverability/llms-txt.mdx +1 -1
- package/docs/discoverability/metadata.mdx +17 -0
- package/docs/references/api-pages.mdx +74 -0
- package/docs/references/asyncapi.mdx +1 -1
- package/docs/references/graphql.mdx +2 -2
- package/docs/references/meta.ts +1 -1
- package/docs/references/openapi.mdx +102 -3
- package/docs/references/scalar.mdx +3 -1
- package/package.json +36 -1
- package/skills/blume/SKILL.md +3 -0
- package/skills/blume-migrate/SKILL.md +5 -5
- package/skills/blume-migrate/references/docusaurus.md +3 -3
- package/skills/blume-migrate/references/mintlify.md +37 -19
- package/skills/blume-migrate/references/nextra.md +2 -2
- package/skills/blume-migrate/references/starlight.md +2 -1
- package/skills/blume-migrate/scripts/mintlify-codemod.mjs +60 -14
- package/skills/blume-write-skill/SKILL.md +82 -0
- package/src/ai/agent-readability.ts +2 -1
- package/src/ai/agent-surface.ts +9 -7
- package/src/ai/ai-catalog.ts +6 -3
- package/src/ai/ask-context.ts +73 -20
- package/src/ai/ask-data.ts +6 -0
- package/src/ai/ask-tools.ts +142 -0
- package/src/ai/ask.ts +354 -76
- package/src/ai/component-markdown.ts +75 -0
- package/src/ai/cors.ts +2 -0
- package/src/ai/index.ts +12 -0
- package/src/ai/llms.ts +6 -2
- package/src/ai/markdown.ts +2 -1
- package/src/ai/mcp/data.ts +6 -0
- package/src/ai/openapi-components.ts +9 -3
- package/src/ai/site-skill.ts +274 -0
- package/src/ai/skills.ts +35 -2
- package/src/ai/write-skill.ts +97 -0
- package/src/astro/generate.ts +132 -18
- package/src/astro/index.ts +1 -0
- package/src/astro/integration.ts +35 -0
- package/src/astro/module-types.ts +6 -0
- package/src/astro/templates.ts +283 -30
- package/src/astro/variables.ts +31 -0
- package/src/audit/catalog.ts +19 -0
- package/src/audit/checks/contrast.ts +183 -0
- package/src/audit/checks/i18n.ts +2 -3
- package/src/audit/checks/indexability.ts +2 -3
- package/src/audit/checks/links.ts +5 -12
- package/src/audit/checks/sitemap.ts +2 -3
- package/src/audit/redirects.ts +46 -15
- package/src/audit/run.ts +2 -0
- package/src/audit/types.ts +2 -1
- package/src/blume-modules.d.ts +7 -0
- package/src/captcha/client.ts +152 -0
- package/src/captcha/hcaptcha.ts +36 -0
- package/src/captcha/index.ts +28 -0
- package/src/captcha/schema.ts +32 -0
- package/src/captcha/turnstile.ts +38 -0
- package/src/captcha/verify.ts +71 -0
- package/src/cli/command-meta.ts +5 -0
- package/src/cli/commands/doctor.ts +22 -16
- package/src/cli/commands/skill.ts +96 -0
- package/src/cli/index.ts +5 -0
- package/src/cli/required-secrets.ts +71 -29
- package/src/components/BlumePage.astro +2 -0
- package/src/components/content/ApiEndpoint.astro +18 -0
- package/src/components/content/ApiField.astro +79 -0
- package/src/components/content/ApiPlayground.astro +62 -0
- package/src/components/content/ApiRail.astro +19 -0
- package/src/components/content/Color.astro +1 -0
- package/src/components/content/FileTree.astro +1 -0
- package/src/components/content/GithubInfo.astro +1 -0
- package/src/components/content/Panel.astro +1 -0
- package/src/components/content/ParamField.astro +25 -0
- package/src/components/content/RequestExample.astro +17 -0
- package/src/components/content/ResponseExample.astro +17 -0
- package/src/components/content/ResponseField.astro +32 -0
- package/src/components/content/Step.astro +1 -0
- package/src/components/content/Tile.astro +1 -0
- package/src/components/content/Tooltip.astro +1 -0
- package/src/components/content/Tree.astro +1 -0
- package/src/components/content/TypeTable.astro +4 -1
- package/src/components/content/View.astro +21 -0
- package/src/components/content/ViewSwitcher.astro +168 -0
- package/src/components/content/api-field.ts +100 -0
- package/src/components/content/api-page.ts +224 -0
- package/src/components/content/view-switcher.ts +71 -0
- package/src/components/index.ts +2 -0
- package/src/components/islands/Assistant.astro +10 -1
- package/src/components/islands/assistant.tsx +104 -14
- package/src/components/islands/code-question.ts +62 -0
- package/src/components/islands/hooks.ts +110 -21
- package/src/components/islands/support-link.ts +68 -0
- package/src/components/layout/Analytics.astro +11 -2
- package/src/components/layout/Banner.astro +14 -10
- package/src/components/layout/Breadcrumbs.astro +6 -2
- package/src/components/layout/ConsentBanner.astro +62 -0
- package/src/components/layout/ConsentHead.astro +38 -0
- package/src/components/layout/Directory.astro +94 -0
- package/src/components/layout/DrawerSwitchers.astro +51 -0
- package/src/components/layout/Empty.astro +2 -2
- package/src/components/layout/Header.astro +122 -80
- package/src/components/layout/LanguageSwitcher.astro +48 -15
- package/src/components/layout/NarrationPlayer.astro +1085 -0
- package/src/components/layout/NavSelector.astro +33 -7
- package/src/components/layout/PageFeedback.astro +54 -49
- package/src/components/layout/PageLayout.astro +71 -3
- package/src/components/layout/ReferenceLayout.astro +17 -6
- package/src/components/layout/RelatedPages.astro +42 -0
- package/src/components/layout/RootLayout.astro +308 -45
- package/src/components/layout/Search.astro +31 -17
- package/src/components/layout/SiteFooter.astro +124 -0
- package/src/components/layout/SiteMetatags.astro +16 -0
- package/src/components/layout/consent/native.ts +79 -0
- package/src/components/layout/consent/types.ts +37 -0
- package/src/components/layout/footer-links.ts +53 -0
- package/src/components/layout/footer-socials.ts +87 -0
- package/src/components/layout/locale-redirect.ts +107 -0
- package/src/components/layout/nav-utils.ts +83 -0
- package/src/components/layout/page-feedback.ts +96 -0
- package/src/components/layout/search/analytics.ts +98 -0
- package/src/components/layout/search/flexsearch.ts +17 -5
- package/src/components/layout/search/orama-cloud.ts +26 -14
- package/src/components/layout/search/types.ts +20 -0
- package/src/components/layout/search/typesense.ts +5 -1
- package/src/components/openapi/Operation.astro +161 -13
- package/src/components/openapi/RequestBody.astro +6 -4
- package/src/components/openapi/RequestPanel.astro +59 -7
- package/src/components/openapi/Responses.astro +6 -4
- package/src/components/openapi/async-snippets.ts +4 -4
- package/src/components/openapi/code-samples.ts +97 -0
- package/src/components/openapi/security.ts +6 -3
- package/src/components/openapi/snippets.ts +869 -8
- package/src/components/props.ts +6 -0
- package/src/consent/client.ts +95 -0
- package/src/consent/clients.ts +19 -0
- package/src/consent/ethyca.ts +71 -0
- package/src/consent/head.ts +24 -0
- package/src/consent/index.ts +37 -0
- package/src/consent/init.ts +29 -0
- package/src/consent/native.ts +36 -0
- package/src/consent/osano.ts +59 -0
- package/src/consent/schema.ts +30 -0
- package/src/core/builtin-tags.ts +5 -0
- package/src/core/client-address.ts +19 -0
- package/src/core/config-input.ts +194 -20
- package/src/core/data.ts +44 -4
- package/src/core/diagnostics.ts +3 -2
- package/src/core/footer.ts +26 -0
- package/src/core/graph.ts +39 -36
- package/src/core/i18n-ui.ts +82 -2
- package/src/core/includes.ts +20 -3
- package/src/core/links.ts +16 -2
- package/src/core/localizable.ts +26 -0
- package/src/core/navigation.ts +43 -12
- package/src/core/page-modes.ts +56 -0
- package/src/core/project-graph.ts +111 -5
- package/src/core/redirect-patterns.ts +491 -0
- package/src/core/related.ts +131 -0
- package/src/core/schema.ts +318 -64
- package/src/core/sources/normalize.ts +2 -1
- package/src/core/sources/read.ts +8 -3
- package/src/core/types.ts +1 -1
- package/src/core/ui-packs/ar.ts +43 -0
- package/src/core/ui-packs/bg.ts +45 -0
- package/src/core/ui-packs/bn.ts +43 -0
- package/src/core/ui-packs/ca.ts +46 -0
- package/src/core/ui-packs/cs.ts +44 -0
- package/src/core/ui-packs/da.ts +45 -0
- package/src/core/ui-packs/de.ts +46 -0
- package/src/core/ui-packs/el.ts +45 -0
- package/src/core/ui-packs/es.ts +46 -0
- package/src/core/ui-packs/fa.ts +45 -0
- package/src/core/ui-packs/fi.ts +45 -0
- package/src/core/ui-packs/fr.ts +46 -0
- package/src/core/ui-packs/he.ts +43 -0
- package/src/core/ui-packs/hi.ts +44 -0
- package/src/core/ui-packs/hr.ts +45 -0
- package/src/core/ui-packs/hu.ts +44 -0
- package/src/core/ui-packs/id.ts +45 -0
- package/src/core/ui-packs/it.ts +45 -0
- package/src/core/ui-packs/ja.ts +45 -0
- package/src/core/ui-packs/ko.ts +44 -0
- package/src/core/ui-packs/nl.ts +46 -0
- package/src/core/ui-packs/no.ts +44 -0
- package/src/core/ui-packs/pl.ts +45 -0
- package/src/core/ui-packs/pt-br.ts +46 -0
- package/src/core/ui-packs/pt.ts +45 -0
- package/src/core/ui-packs/ro.ts +45 -0
- package/src/core/ui-packs/ru.ts +45 -0
- package/src/core/ui-packs/sk.ts +44 -0
- package/src/core/ui-packs/sr.ts +45 -0
- package/src/core/ui-packs/sv.ts +44 -0
- package/src/core/ui-packs/th.ts +43 -0
- package/src/core/ui-packs/tr.ts +45 -0
- package/src/core/ui-packs/uk.ts +45 -0
- package/src/core/ui-packs/vi.ts +45 -0
- package/src/core/ui-packs/zh-tw.ts +43 -0
- package/src/core/ui-packs/zh.ts +43 -0
- package/src/core/variables.ts +103 -0
- package/src/deploy/artifacts.ts +77 -8
- package/src/deploy/cloudflare-negotiation.ts +35 -5
- package/src/deploy/headers.ts +2 -1
- package/src/deploy/node-headers.ts +63 -9
- package/src/deploy/platforms/cloudflare.ts +32 -0
- package/src/deploy/platforms/netlify.ts +33 -1
- package/src/deploy/platforms/vercel.ts +37 -2
- package/src/deploy/redirects.ts +91 -24
- package/src/deploy/vercel-negotiation.ts +36 -0
- package/src/markdown/api-rail.ts +259 -0
- package/src/markdown/code-title.ts +35 -9
- package/src/markdown/features.ts +3 -2
- package/src/markdown/fence-meta.ts +2 -0
- package/src/markdown/include.ts +11 -1
- package/src/markdown/index.ts +28 -5
- package/src/markdown/math.ts +4 -4
- package/src/markdown/variables.ts +56 -0
- package/src/markdown/views.ts +82 -0
- package/src/narration/build.ts +412 -0
- package/src/narration/player.ts +249 -0
- package/src/narration/provider.ts +29 -0
- package/src/narration/script.ts +592 -0
- package/src/og/card.ts +7 -6
- package/src/openapi/model.ts +57 -24
- package/src/openapi/overlay.ts +256 -0
- package/src/openapi/parse.ts +55 -2
- package/src/openapi/references.ts +21 -5
- package/src/openapi/render-mdx.ts +5 -1
- package/src/openapi/scalar.ts +40 -6
- package/src/openapi/source.ts +1 -1
- package/src/ratelimit/cloudflare.ts +54 -0
- package/src/ratelimit/index.ts +30 -0
- package/src/ratelimit/memory.ts +45 -0
- package/src/ratelimit/runtime.ts +229 -0
- package/src/ratelimit/schema.ts +28 -0
- package/src/ratelimit/upstash.ts +30 -0
- package/src/ratelimit/wrangler.ts +70 -0
- package/src/reference/asyncapi.ts +2 -2
- package/src/reference/graphql.ts +5 -2
- package/src/reference/openapi.ts +21 -7
- package/src/reference/options.ts +51 -7
- package/src/reference/scalar.ts +33 -8
- package/src/registry/eject.ts +20 -4
- package/src/registry/registry.ts +7 -0
- package/src/search/documents.ts +26 -2
- package/src/search/orama-index.ts +28 -3
- package/src/search/pagefind-ranking.ts +39 -0
- package/src/search/sync/algolia.ts +15 -4
- package/src/search/sync/orama-cloud.ts +3 -0
- package/src/search/sync/typesense.ts +5 -0
- package/src/seo/metatags.ts +67 -0
- package/src/theme/chrome-icons.ts +1 -0
- package/src/theme/color.ts +500 -0
- package/src/theme/entry.ts +56 -3
- package/src/theme/palette.ts +121 -45
- package/src/translate/prompts.ts +1 -0
- package/src/translate/validate.ts +8 -2
- package/src/upgrade/upgrade.ts +4 -171
- package/dist/cli/chunk-364znk6q.js +0 -75
- package/dist/cli/chunk-364znk6q.js.map +0 -11
- package/dist/cli/chunk-5m5nmvyq.js.map +0 -13
- package/dist/cli/chunk-9t7a85s3.js.map +0 -10
- package/dist/cli/chunk-c8chx29p.js.map +0 -36
- package/dist/cli/chunk-pehfxfta.js.map +0 -10
- package/dist/cli/chunk-pv29h0wf.js.map +0 -190
- package/dist/cli/chunk-q58y5e6a.js.map +0 -10
- package/dist/cli/chunk-wrr3j9w9.js.map +0 -35
- package/dist/cli/chunk-yfyb25rh.js.map +0 -14
- package/docs/content/sources.mdx +0 -334
- /package/dist/cli/{chunk-2eytanqx.js.map → chunk-1n228xqb.js.map} +0 -0
- /package/dist/cli/{chunk-35d4wj9f.js.map → chunk-2n4ps1b3.js.map} +0 -0
- /package/dist/cli/{chunk-e04dxsz1.js.map → chunk-4ejxbzee.js.map} +0 -0
- /package/dist/cli/{chunk-tzmab476.js.map → chunk-5ffywsmb.js.map} +0 -0
- /package/dist/cli/{chunk-2z928egk.js.map → chunk-5wj2qwn2.js.map} +0 -0
- /package/dist/cli/{chunk-b07cmahc.js.map → chunk-amrb6hgh.js.map} +0 -0
- /package/dist/cli/{chunk-akbpwfxc.js.map → chunk-cmtcnh9f.js.map} +0 -0
- /package/dist/cli/{chunk-crgn1q09.js.map → chunk-e7vvk5ya.js.map} +0 -0
- /package/dist/cli/{chunk-tkacnehg.js.map → chunk-gp84za0h.js.map} +0 -0
- /package/dist/cli/{chunk-r9rcc4w7.js.map → chunk-p804f3pe.js.map} +0 -0
- /package/dist/cli/{chunk-8ktnccpt.js.map → chunk-ta27feev.js.map} +0 -0
- /package/dist/cli/{chunk-a58773jm.js.map → chunk-y4ykbark.js.map} +0 -0
- /package/dist/cli/{chunk-p3v96n38.js.map → chunk-y5h4r2y0.js.map} +0 -0
- /package/dist/cli/{chunk-acanzt5p.js.map → chunk-yj17vs39.js.map} +0 -0
package/dist/types/ai/ask.d.ts
CHANGED
|
@@ -34,9 +34,24 @@ export interface AssistantAdapterOptions {
|
|
|
34
34
|
*/
|
|
35
35
|
providerOptions?: AssistantProviderOptions;
|
|
36
36
|
}
|
|
37
|
+
/** The shared option schema, with the adapter's own key env var default. */
|
|
38
|
+
export declare const sharedOptions: (apiKeyEnv: string) => {
|
|
39
|
+
apiKeyEnv: z.ZodDefault<z.ZodString>;
|
|
40
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
41
|
+
providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
|
|
42
|
+
};
|
|
43
|
+
export declare const GATEWAY_API_KEY_ENV = "AI_GATEWAY_API_KEY";
|
|
37
44
|
/** Options for {@link gateway}. */
|
|
38
45
|
export interface AssistantGatewayOptions extends AssistantAdapterOptions {
|
|
39
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* Narration only: how the voice should sound, for speech models that take
|
|
48
|
+
* instructions ("Read calmly, like a teacher").
|
|
49
|
+
*/
|
|
50
|
+
instructions?: string;
|
|
51
|
+
/**
|
|
52
|
+
* A `provider/model` id routed by the gateway. Defaults to `openai/gpt-5.5`
|
|
53
|
+
* for the assistant and `openai/tts-1-hd` for narration.
|
|
54
|
+
*/
|
|
40
55
|
model?: string;
|
|
41
56
|
/**
|
|
42
57
|
* How much the model reasons before answering. Sent as the AI SDK's
|
|
@@ -45,6 +60,8 @@ export interface AssistantGatewayOptions extends AssistantAdapterOptions {
|
|
|
45
60
|
* offer the level you pick. Omitted keeps the model's default.
|
|
46
61
|
*/
|
|
47
62
|
reasoning?: AssistantReasoning;
|
|
63
|
+
/** Narration only: the speech model's voice. Defaults to `alloy`. */
|
|
64
|
+
voice?: string;
|
|
48
65
|
}
|
|
49
66
|
export type AssistantGatewayAdapter = AdapterDescriptor<"gateway", AssistantGatewayOptions>;
|
|
50
67
|
export declare const gatewayAdapterSchema: z.ZodObject<{
|
|
@@ -67,12 +84,193 @@ export declare const gatewayAdapterSchema: z.ZodObject<{
|
|
|
67
84
|
runtimeDeps: z.ZodArray<z.ZodString>;
|
|
68
85
|
}, z.core.$strict>;
|
|
69
86
|
/**
|
|
70
|
-
* Route the assistant through the Vercel AI Gateway (the default)
|
|
87
|
+
* Route the assistant through the Vercel AI Gateway (the default), or generate
|
|
88
|
+
* narration audio with one of its speech models. `model` is a
|
|
71
89
|
* `provider/model` string; the key is `AI_GATEWAY_API_KEY`, or Vercel's OIDC
|
|
72
90
|
* token when deployed there. Needs no provider SDK beyond the `ai` package
|
|
73
91
|
* Blume ships.
|
|
74
92
|
*/
|
|
75
93
|
export declare const gateway: (options?: AssistantGatewayOptions) => AssistantGatewayAdapter;
|
|
94
|
+
/** Options for {@link openai}. */
|
|
95
|
+
export interface AssistantOpenAIOptions extends AssistantAdapterOptions {
|
|
96
|
+
/**
|
|
97
|
+
* An OpenAI-compatible endpoint to call instead of OpenAI
|
|
98
|
+
* (`https://llm.internal.example.com/v1`): a self-hosted model or an
|
|
99
|
+
* internal gateway. The route then talks Chat Completions through
|
|
100
|
+
* `@ai-sdk/openai-compatible`, and the docs tools are off unless
|
|
101
|
+
* `ai.assistant.tools` turns them on, since the model may not call tools.
|
|
102
|
+
*/
|
|
103
|
+
baseUrl?: string;
|
|
104
|
+
/** The model id (`gpt-5.5`). */
|
|
105
|
+
model: string;
|
|
106
|
+
/**
|
|
107
|
+
* The provider name the AI SDK reports, which a custom endpoint also reads
|
|
108
|
+
* its `providerOptions` under. Defaults to `openai`, or `openai-compatible`
|
|
109
|
+
* with a `baseUrl`.
|
|
110
|
+
*/
|
|
111
|
+
name?: string;
|
|
112
|
+
/**
|
|
113
|
+
* How much the model reasons before answering, sent as `reasoning_effort`;
|
|
114
|
+
* with a `baseUrl`, the endpoint has to accept that parameter. Omitted
|
|
115
|
+
* keeps the model's default.
|
|
116
|
+
*/
|
|
117
|
+
reasoning?: AssistantReasoning;
|
|
118
|
+
}
|
|
119
|
+
export type AssistantOpenAIAdapter = AdapterDescriptor<"openai", AssistantOpenAIOptions>;
|
|
120
|
+
export declare const openaiAdapterSchema: z.ZodObject<{
|
|
121
|
+
kind: z.ZodLiteral<"openai">;
|
|
122
|
+
options: z.ZodObject<{
|
|
123
|
+
baseUrl: z.ZodOptional<z.ZodURL>;
|
|
124
|
+
model: z.ZodString;
|
|
125
|
+
name: z.ZodOptional<z.ZodString>;
|
|
126
|
+
reasoning: z.ZodOptional<z.ZodEnum<{
|
|
127
|
+
none: "none";
|
|
128
|
+
minimal: "minimal";
|
|
129
|
+
low: "low";
|
|
130
|
+
medium: "medium";
|
|
131
|
+
high: "high";
|
|
132
|
+
xhigh: "xhigh";
|
|
133
|
+
}>>;
|
|
134
|
+
apiKeyEnv: z.ZodDefault<z.ZodString>;
|
|
135
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
136
|
+
providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
|
|
137
|
+
}, z.core.$strict>;
|
|
138
|
+
requiredSecrets: z.ZodArray<z.ZodString>;
|
|
139
|
+
runtimeDeps: z.ZodArray<z.ZodString>;
|
|
140
|
+
}, z.core.$strict>;
|
|
141
|
+
/**
|
|
142
|
+
* Route the assistant to OpenAI, or to any OpenAI-compatible endpoint with
|
|
143
|
+
* `baseUrl`. Reads `OPENAI_API_KEY` and needs `@ai-sdk/openai` installed; a
|
|
144
|
+
* custom endpoint needs `@ai-sdk/openai-compatible` instead, since most
|
|
145
|
+
* don't serve OpenAI's Responses API.
|
|
146
|
+
*/
|
|
147
|
+
export declare const openai: (options: AssistantOpenAIOptions) => AssistantOpenAIAdapter;
|
|
148
|
+
/**
|
|
149
|
+
* Options for the deprecated {@link openaiCompatible}: {@link openai}'s, with
|
|
150
|
+
* the endpoint and its key env var required.
|
|
151
|
+
*
|
|
152
|
+
* @deprecated Use {@link AssistantOpenAIOptions}.
|
|
153
|
+
*/
|
|
154
|
+
export interface AssistantOpenAICompatibleOptions extends AssistantOpenAIOptions {
|
|
155
|
+
apiKeyEnv: string;
|
|
156
|
+
baseUrl: string;
|
|
157
|
+
}
|
|
158
|
+
/** @deprecated Use {@link AssistantOpenAIAdapter}. */
|
|
159
|
+
export type AssistantOpenAICompatibleAdapter = AssistantOpenAIAdapter;
|
|
160
|
+
/**
|
|
161
|
+
* Route the assistant through an OpenAI-compatible endpoint.
|
|
162
|
+
*
|
|
163
|
+
* @deprecated Use `openai({ baseUrl, model, apiKeyEnv })`, which this calls.
|
|
164
|
+
*/
|
|
165
|
+
export declare const openaiCompatible: (options: AssistantOpenAICompatibleOptions) => AssistantOpenAIAdapter;
|
|
166
|
+
/** Options for {@link anthropic}. */
|
|
167
|
+
export interface AssistantAnthropicOptions extends AssistantAdapterOptions {
|
|
168
|
+
/** The Claude model id (`claude-sonnet-5`). */
|
|
169
|
+
model: string;
|
|
170
|
+
/**
|
|
171
|
+
* How much the model reasons before answering. The Anthropic provider
|
|
172
|
+
* maps the level to the model's thinking: an effort on models with
|
|
173
|
+
* adaptive thinking, a thinking budget on older ones, and thinking off for
|
|
174
|
+
* `"none"`. Omitted keeps the model's default.
|
|
175
|
+
*/
|
|
176
|
+
reasoning?: AssistantReasoning;
|
|
177
|
+
}
|
|
178
|
+
export type AssistantAnthropicAdapter = AdapterDescriptor<"anthropic", AssistantAnthropicOptions>;
|
|
179
|
+
export declare const anthropicAdapterSchema: z.ZodObject<{
|
|
180
|
+
kind: z.ZodLiteral<"anthropic">;
|
|
181
|
+
options: z.ZodObject<{
|
|
182
|
+
model: z.ZodString;
|
|
183
|
+
reasoning: z.ZodOptional<z.ZodEnum<{
|
|
184
|
+
none: "none";
|
|
185
|
+
minimal: "minimal";
|
|
186
|
+
low: "low";
|
|
187
|
+
medium: "medium";
|
|
188
|
+
high: "high";
|
|
189
|
+
xhigh: "xhigh";
|
|
190
|
+
}>>;
|
|
191
|
+
apiKeyEnv: z.ZodDefault<z.ZodString>;
|
|
192
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
193
|
+
providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
|
|
194
|
+
}, z.core.$strict>;
|
|
195
|
+
requiredSecrets: z.ZodArray<z.ZodString>;
|
|
196
|
+
runtimeDeps: z.ZodArray<z.ZodString>;
|
|
197
|
+
}, z.core.$strict>;
|
|
198
|
+
/**
|
|
199
|
+
* Route the assistant to Anthropic's Claude API. Reads `ANTHROPIC_API_KEY`
|
|
200
|
+
* and needs `@ai-sdk/anthropic` installed.
|
|
201
|
+
*/
|
|
202
|
+
export declare const anthropic: (options: AssistantAnthropicOptions) => AssistantAnthropicAdapter;
|
|
203
|
+
/** Options for {@link gemini}. */
|
|
204
|
+
export interface AssistantGeminiOptions extends AssistantAdapterOptions {
|
|
205
|
+
/** The Gemini model id (`gemini-3.5-flash`). */
|
|
206
|
+
model: string;
|
|
207
|
+
/**
|
|
208
|
+
* How much the model reasons before answering. The Google provider maps
|
|
209
|
+
* the level to the model's thinking level, or to a thinking budget on
|
|
210
|
+
* models that take one. Omitted keeps the model's default.
|
|
211
|
+
*/
|
|
212
|
+
reasoning?: AssistantReasoning;
|
|
213
|
+
}
|
|
214
|
+
export type AssistantGeminiAdapter = AdapterDescriptor<"gemini", AssistantGeminiOptions>;
|
|
215
|
+
export declare const geminiAdapterSchema: z.ZodObject<{
|
|
216
|
+
kind: z.ZodLiteral<"gemini">;
|
|
217
|
+
options: z.ZodObject<{
|
|
218
|
+
model: z.ZodString;
|
|
219
|
+
reasoning: z.ZodOptional<z.ZodEnum<{
|
|
220
|
+
none: "none";
|
|
221
|
+
minimal: "minimal";
|
|
222
|
+
low: "low";
|
|
223
|
+
medium: "medium";
|
|
224
|
+
high: "high";
|
|
225
|
+
xhigh: "xhigh";
|
|
226
|
+
}>>;
|
|
227
|
+
apiKeyEnv: z.ZodDefault<z.ZodString>;
|
|
228
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
229
|
+
providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
|
|
230
|
+
}, z.core.$strict>;
|
|
231
|
+
requiredSecrets: z.ZodArray<z.ZodString>;
|
|
232
|
+
runtimeDeps: z.ZodArray<z.ZodString>;
|
|
233
|
+
}, z.core.$strict>;
|
|
234
|
+
/**
|
|
235
|
+
* Route the assistant to Google's Gemini API. Reads `GEMINI_API_KEY` and
|
|
236
|
+
* needs `@ai-sdk/google` installed.
|
|
237
|
+
*/
|
|
238
|
+
export declare const gemini: (options: AssistantGeminiOptions) => AssistantGeminiAdapter;
|
|
239
|
+
/** Options for {@link grok}. */
|
|
240
|
+
export interface AssistantGrokOptions extends AssistantAdapterOptions {
|
|
241
|
+
/** The Grok model id (`grok-4.7`). */
|
|
242
|
+
model: string;
|
|
243
|
+
/**
|
|
244
|
+
* How much the model reasons before answering, sent as xAI's reasoning
|
|
245
|
+
* effort on the models that take one. Omitted keeps the model's default.
|
|
246
|
+
*/
|
|
247
|
+
reasoning?: AssistantReasoning;
|
|
248
|
+
}
|
|
249
|
+
export type AssistantGrokAdapter = AdapterDescriptor<"grok", AssistantGrokOptions>;
|
|
250
|
+
export declare const grokAdapterSchema: z.ZodObject<{
|
|
251
|
+
kind: z.ZodLiteral<"grok">;
|
|
252
|
+
options: z.ZodObject<{
|
|
253
|
+
model: z.ZodString;
|
|
254
|
+
reasoning: z.ZodOptional<z.ZodEnum<{
|
|
255
|
+
none: "none";
|
|
256
|
+
minimal: "minimal";
|
|
257
|
+
low: "low";
|
|
258
|
+
medium: "medium";
|
|
259
|
+
high: "high";
|
|
260
|
+
xhigh: "xhigh";
|
|
261
|
+
}>>;
|
|
262
|
+
apiKeyEnv: z.ZodDefault<z.ZodString>;
|
|
263
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
264
|
+
providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
|
|
265
|
+
}, z.core.$strict>;
|
|
266
|
+
requiredSecrets: z.ZodArray<z.ZodString>;
|
|
267
|
+
runtimeDeps: z.ZodArray<z.ZodString>;
|
|
268
|
+
}, z.core.$strict>;
|
|
269
|
+
/**
|
|
270
|
+
* Route the assistant to xAI's Grok models. Reads `XAI_API_KEY` and needs
|
|
271
|
+
* `@ai-sdk/xai` installed.
|
|
272
|
+
*/
|
|
273
|
+
export declare const grok: (options: AssistantGrokOptions) => AssistantGrokAdapter;
|
|
76
274
|
/** Options for {@link openrouter}. */
|
|
77
275
|
export interface AssistantOpenRouterOptions extends AssistantAdapterOptions {
|
|
78
276
|
/** The OpenRouter model id (`anthropic/claude-sonnet-4-5`). */
|
|
@@ -176,53 +374,8 @@ export declare const inkeepAdapterSchema: z.ZodObject<{
|
|
|
176
374
|
* Reads `INKEEP_API_KEY` and needs `@ai-sdk/openai-compatible` installed.
|
|
177
375
|
*/
|
|
178
376
|
export declare const inkeep: (options: AssistantInkeepOptions) => AssistantInkeepAdapter;
|
|
179
|
-
/**
|
|
180
|
-
export
|
|
181
|
-
/** Name of the env var holding the endpoint's API key. */
|
|
182
|
-
apiKeyEnv: string;
|
|
183
|
-
/** The endpoint's base URL (`https://my-gateway.example.com/v1`). */
|
|
184
|
-
baseUrl: string;
|
|
185
|
-
/** The model id the endpoint serves. */
|
|
186
|
-
model: string;
|
|
187
|
-
/** The provider name the AI SDK reports. Defaults to `openai-compatible`. */
|
|
188
|
-
name?: string;
|
|
189
|
-
/**
|
|
190
|
-
* How much the model reasons before answering, sent in the request as
|
|
191
|
-
* `reasoning_effort`, so the endpoint has to accept that parameter.
|
|
192
|
-
* Omitted keeps the model's default.
|
|
193
|
-
*/
|
|
194
|
-
reasoning?: AssistantReasoning;
|
|
195
|
-
}
|
|
196
|
-
export type AssistantOpenAICompatibleAdapter = AdapterDescriptor<"openai-compatible", AssistantOpenAICompatibleOptions>;
|
|
197
|
-
export declare const openaiCompatibleAdapterSchema: z.ZodObject<{
|
|
198
|
-
kind: z.ZodLiteral<"openai-compatible">;
|
|
199
|
-
options: z.ZodObject<{
|
|
200
|
-
apiKeyEnv: z.ZodString;
|
|
201
|
-
baseUrl: z.ZodURL;
|
|
202
|
-
model: z.ZodString;
|
|
203
|
-
name: z.ZodDefault<z.ZodString>;
|
|
204
|
-
reasoning: z.ZodOptional<z.ZodEnum<{
|
|
205
|
-
none: "none";
|
|
206
|
-
minimal: "minimal";
|
|
207
|
-
low: "low";
|
|
208
|
-
medium: "medium";
|
|
209
|
-
high: "high";
|
|
210
|
-
xhigh: "xhigh";
|
|
211
|
-
}>>;
|
|
212
|
-
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
213
|
-
providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
|
|
214
|
-
}, z.core.$strict>;
|
|
215
|
-
requiredSecrets: z.ZodArray<z.ZodString>;
|
|
216
|
-
runtimeDeps: z.ZodArray<z.ZodString>;
|
|
217
|
-
}, z.core.$strict>;
|
|
218
|
-
/**
|
|
219
|
-
* Route the assistant through any OpenAI-compatible endpoint: supply its `baseUrl`,
|
|
220
|
-
* the `model` it serves, and the env var holding its key. Needs
|
|
221
|
-
* `@ai-sdk/openai-compatible` installed.
|
|
222
|
-
*/
|
|
223
|
-
export declare const openaiCompatible: (options: AssistantOpenAICompatibleOptions) => AssistantOpenAICompatibleAdapter;
|
|
224
|
-
/** Which backend answers the assistant: the value of `gateway()`, `openrouter()`, … */
|
|
225
|
-
export type AssistantAdapter = AssistantGatewayAdapter | AssistantOpenRouterAdapter | AssistantLlmGatewayAdapter | AssistantInkeepAdapter | AssistantOpenAICompatibleAdapter;
|
|
377
|
+
/** Which backend answers the assistant: the value of `gateway()`, `openai()`, … */
|
|
378
|
+
export type AssistantAdapter = AssistantGatewayAdapter | AssistantOpenAIAdapter | AssistantAnthropicAdapter | AssistantGeminiAdapter | AssistantGrokAdapter | AssistantOpenRouterAdapter | AssistantLlmGatewayAdapter | AssistantInkeepAdapter;
|
|
226
379
|
/**
|
|
227
380
|
* Error params for `ai.assistant`: a 1.x flat provider field (`model`, `apiKeyEnv`,
|
|
228
381
|
* `baseUrl`, `headers`, `reasoning`) names the adapter call it moves into —
|
|
@@ -256,9 +409,11 @@ export declare const assistantAdapterSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
|
|
|
256
409
|
requiredSecrets: z.ZodArray<z.ZodString>;
|
|
257
410
|
runtimeDeps: z.ZodArray<z.ZodString>;
|
|
258
411
|
}, z.core.$strict>, z.ZodObject<{
|
|
259
|
-
kind: z.ZodLiteral<"
|
|
412
|
+
kind: z.ZodLiteral<"openai">;
|
|
260
413
|
options: z.ZodObject<{
|
|
414
|
+
baseUrl: z.ZodOptional<z.ZodURL>;
|
|
261
415
|
model: z.ZodString;
|
|
416
|
+
name: z.ZodOptional<z.ZodString>;
|
|
262
417
|
reasoning: z.ZodOptional<z.ZodEnum<{
|
|
263
418
|
none: "none";
|
|
264
419
|
minimal: "minimal";
|
|
@@ -274,9 +429,8 @@ export declare const assistantAdapterSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
|
|
|
274
429
|
requiredSecrets: z.ZodArray<z.ZodString>;
|
|
275
430
|
runtimeDeps: z.ZodArray<z.ZodString>;
|
|
276
431
|
}, z.core.$strict>, z.ZodObject<{
|
|
277
|
-
kind: z.ZodLiteral<"
|
|
432
|
+
kind: z.ZodLiteral<"anthropic">;
|
|
278
433
|
options: z.ZodObject<{
|
|
279
|
-
baseUrl: z.ZodDefault<z.ZodURL>;
|
|
280
434
|
model: z.ZodString;
|
|
281
435
|
reasoning: z.ZodOptional<z.ZodEnum<{
|
|
282
436
|
none: "none";
|
|
@@ -293,10 +447,35 @@ export declare const assistantAdapterSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
|
|
|
293
447
|
requiredSecrets: z.ZodArray<z.ZodString>;
|
|
294
448
|
runtimeDeps: z.ZodArray<z.ZodString>;
|
|
295
449
|
}, z.core.$strict>, z.ZodObject<{
|
|
296
|
-
kind: z.ZodLiteral<"
|
|
450
|
+
kind: z.ZodLiteral<"gemini">;
|
|
451
|
+
options: z.ZodObject<{
|
|
452
|
+
model: z.ZodString;
|
|
453
|
+
reasoning: z.ZodOptional<z.ZodEnum<{
|
|
454
|
+
none: "none";
|
|
455
|
+
minimal: "minimal";
|
|
456
|
+
low: "low";
|
|
457
|
+
medium: "medium";
|
|
458
|
+
high: "high";
|
|
459
|
+
xhigh: "xhigh";
|
|
460
|
+
}>>;
|
|
461
|
+
apiKeyEnv: z.ZodDefault<z.ZodString>;
|
|
462
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
463
|
+
providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
|
|
464
|
+
}, z.core.$strict>;
|
|
465
|
+
requiredSecrets: z.ZodArray<z.ZodString>;
|
|
466
|
+
runtimeDeps: z.ZodArray<z.ZodString>;
|
|
467
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
468
|
+
kind: z.ZodLiteral<"grok">;
|
|
297
469
|
options: z.ZodObject<{
|
|
298
|
-
baseUrl: z.ZodDefault<z.ZodURL>;
|
|
299
470
|
model: z.ZodString;
|
|
471
|
+
reasoning: z.ZodOptional<z.ZodEnum<{
|
|
472
|
+
none: "none";
|
|
473
|
+
minimal: "minimal";
|
|
474
|
+
low: "low";
|
|
475
|
+
medium: "medium";
|
|
476
|
+
high: "high";
|
|
477
|
+
xhigh: "xhigh";
|
|
478
|
+
}>>;
|
|
300
479
|
apiKeyEnv: z.ZodDefault<z.ZodString>;
|
|
301
480
|
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
302
481
|
providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
|
|
@@ -304,12 +483,9 @@ export declare const assistantAdapterSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
|
|
|
304
483
|
requiredSecrets: z.ZodArray<z.ZodString>;
|
|
305
484
|
runtimeDeps: z.ZodArray<z.ZodString>;
|
|
306
485
|
}, z.core.$strict>, z.ZodObject<{
|
|
307
|
-
kind: z.ZodLiteral<"
|
|
486
|
+
kind: z.ZodLiteral<"openrouter">;
|
|
308
487
|
options: z.ZodObject<{
|
|
309
|
-
apiKeyEnv: z.ZodString;
|
|
310
|
-
baseUrl: z.ZodURL;
|
|
311
488
|
model: z.ZodString;
|
|
312
|
-
name: z.ZodDefault<z.ZodString>;
|
|
313
489
|
reasoning: z.ZodOptional<z.ZodEnum<{
|
|
314
490
|
none: "none";
|
|
315
491
|
minimal: "minimal";
|
|
@@ -318,6 +494,37 @@ export declare const assistantAdapterSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
|
|
|
318
494
|
high: "high";
|
|
319
495
|
xhigh: "xhigh";
|
|
320
496
|
}>>;
|
|
497
|
+
apiKeyEnv: z.ZodDefault<z.ZodString>;
|
|
498
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
499
|
+
providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
|
|
500
|
+
}, z.core.$strict>;
|
|
501
|
+
requiredSecrets: z.ZodArray<z.ZodString>;
|
|
502
|
+
runtimeDeps: z.ZodArray<z.ZodString>;
|
|
503
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
504
|
+
kind: z.ZodLiteral<"llmgateway">;
|
|
505
|
+
options: z.ZodObject<{
|
|
506
|
+
baseUrl: z.ZodDefault<z.ZodURL>;
|
|
507
|
+
model: z.ZodString;
|
|
508
|
+
reasoning: z.ZodOptional<z.ZodEnum<{
|
|
509
|
+
none: "none";
|
|
510
|
+
minimal: "minimal";
|
|
511
|
+
low: "low";
|
|
512
|
+
medium: "medium";
|
|
513
|
+
high: "high";
|
|
514
|
+
xhigh: "xhigh";
|
|
515
|
+
}>>;
|
|
516
|
+
apiKeyEnv: z.ZodDefault<z.ZodString>;
|
|
517
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
518
|
+
providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
|
|
519
|
+
}, z.core.$strict>;
|
|
520
|
+
requiredSecrets: z.ZodArray<z.ZodString>;
|
|
521
|
+
runtimeDeps: z.ZodArray<z.ZodString>;
|
|
522
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
523
|
+
kind: z.ZodLiteral<"inkeep">;
|
|
524
|
+
options: z.ZodObject<{
|
|
525
|
+
baseUrl: z.ZodDefault<z.ZodURL>;
|
|
526
|
+
model: z.ZodString;
|
|
527
|
+
apiKeyEnv: z.ZodDefault<z.ZodString>;
|
|
321
528
|
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
322
529
|
providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
|
|
323
530
|
}, z.core.$strict>;
|
|
@@ -357,6 +564,12 @@ export interface AskBackendTemplate {
|
|
|
357
564
|
export interface AskBackend {
|
|
358
565
|
/** Whether Blume grounds answers in the docs (Inkeep retrieves itself). */
|
|
359
566
|
grounded: boolean;
|
|
567
|
+
/**
|
|
568
|
+
* Whether the docs tools are on when `ai.assistant.tools` is unset: yes for
|
|
569
|
+
* the hosted model catalogs, whose models call tools, and no for an
|
|
570
|
+
* OpenAI-compatible backend, which may be a local model that can't.
|
|
571
|
+
*/
|
|
572
|
+
toolsByDefault: boolean;
|
|
360
573
|
kind: AssistantAdapterKind;
|
|
361
574
|
/** Human-readable adapter name for diagnostics ("AI Gateway"). */
|
|
362
575
|
label: string;
|
package/dist/types/ai/index.d.ts
CHANGED
|
@@ -19,6 +19,6 @@
|
|
|
19
19
|
* schema validates and the generated `/api/ask` route inlines as literals;
|
|
20
20
|
* nothing here runs at request time.
|
|
21
21
|
*/
|
|
22
|
-
export { gateway, inkeep, llmgateway, openaiCompatible, openrouter, } from "./ask.ts";
|
|
23
|
-
export type { AssistantAdapter, AssistantAdapterOptions, AssistantGatewayAdapter, AssistantGatewayOptions, AssistantInkeepAdapter, AssistantInkeepOptions, AssistantLlmGatewayAdapter, AssistantLlmGatewayOptions, AssistantOpenAICompatibleAdapter, AssistantOpenAICompatibleOptions, AssistantOpenRouterAdapter, AssistantOpenRouterOptions, AssistantProviderOptions, AssistantReasoning, } from "./ask.ts";
|
|
22
|
+
export { anthropic, gateway, gemini, grok, inkeep, llmgateway, openai, openaiCompatible, openrouter, } from "./ask.ts";
|
|
23
|
+
export type { AssistantAdapter, AssistantAdapterOptions, AssistantAnthropicAdapter, AssistantAnthropicOptions, AssistantGatewayAdapter, AssistantGatewayOptions, AssistantGeminiAdapter, AssistantGeminiOptions, AssistantGrokAdapter, AssistantGrokOptions, AssistantInkeepAdapter, AssistantInkeepOptions, AssistantLlmGatewayAdapter, AssistantLlmGatewayOptions, AssistantOpenAIAdapter, AssistantOpenAICompatibleAdapter, AssistantOpenAICompatibleOptions, AssistantOpenAIOptions, AssistantOpenRouterAdapter, AssistantOpenRouterOptions, AssistantProviderOptions, AssistantReasoning, } from "./ask.ts";
|
|
24
24
|
export type { AdapterDescriptor } from "../core/adapter.ts";
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { BlumeProject } from "../core/project-graph.ts";
|
|
2
|
+
import type { SkillArtifact } from "./skills.ts";
|
|
3
|
+
/**
|
|
4
|
+
* The site's own agent skill (`agents.skillMd`): a `SKILL.md` in the Agent
|
|
5
|
+
* Skills format, built from what the build already knows — the site's title
|
|
6
|
+
* and description, how to read any page as Markdown, llms.txt and the MCP
|
|
7
|
+
* server, the API references, and a map of the docs with each page's one-line
|
|
8
|
+
* description. No model writes it, so it costs nothing and is current with
|
|
9
|
+
* every build: a guide to the docs rather than a summary of the product. A
|
|
10
|
+
* hand-written skill of the same name in `agents.skills` replaces it.
|
|
11
|
+
*/
|
|
12
|
+
/** The most pages the map lists; llms.txt holds the rest. */
|
|
13
|
+
export declare const MAX_SKILL_PAGES = 200;
|
|
14
|
+
/** Where the site skill is served besides the discovery index. */
|
|
15
|
+
export declare const SKILL_MD_PATH = "/skill.md";
|
|
16
|
+
/**
|
|
17
|
+
* The site skill's name: the title as a skill name (lowercase alphanumerics
|
|
18
|
+
* and single hyphens), else the site's host, for a title with no Latin
|
|
19
|
+
* letters in it.
|
|
20
|
+
*/
|
|
21
|
+
export declare const siteSkillName: (project: BlumeProject) => string;
|
|
22
|
+
/**
|
|
23
|
+
* The generated site skill, or `null` when `agents.skillMd` is off or there
|
|
24
|
+
* is no `deployment.site` to make its links absolute.
|
|
25
|
+
*/
|
|
26
|
+
export declare const buildSiteSkill: (project: BlumeProject) => SkillArtifact | null;
|
|
@@ -10,6 +10,8 @@ import type { ResolvedConfig } from "../core/schema.ts";
|
|
|
10
10
|
*/
|
|
11
11
|
export declare const AGENT_SKILLS_DIR = "/.well-known/agent-skills";
|
|
12
12
|
export declare const AGENT_SKILLS_INDEX_PATH = "/.well-known/agent-skills/index.json";
|
|
13
|
+
/** The Agent Skills spec caps `description` at 1024 characters. */
|
|
14
|
+
export declare const SKILL_DESCRIPTION_MAX = 1024;
|
|
13
15
|
/** One publishable skill artifact plus its index entry. */
|
|
14
16
|
export interface SkillArtifact {
|
|
15
17
|
/** Raw bytes to publish (the digest is computed over exactly these). */
|
|
@@ -38,6 +40,20 @@ export interface CollectedSkills {
|
|
|
38
40
|
* with a warning naming both.
|
|
39
41
|
*/
|
|
40
42
|
export declare const collectSkills: (dir: string) => Promise<CollectedSkills>;
|
|
43
|
+
/** A skill that is one `SKILL.md`, published verbatim. */
|
|
44
|
+
export declare const skillMdArtifact: (name: string, description: string, markdown: string) => SkillArtifact;
|
|
45
|
+
/**
|
|
46
|
+
* Whether the build generates the site's own skill (`agents.skillMd`): on,
|
|
47
|
+
* and with a `deployment.site` to make its links absolute, since an installed
|
|
48
|
+
* skill is read away from the site.
|
|
49
|
+
*/
|
|
50
|
+
export declare const generatesSiteSkill: (config: ResolvedConfig) => boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Whether a skills discovery index is served: from `agents.skills`, or for
|
|
53
|
+
* the generated site skill alone. On an advertised config (see
|
|
54
|
+
* `advertisedConfig`), both are already switched off when nothing published.
|
|
55
|
+
*/
|
|
56
|
+
export declare const servesSkillsIndex: (config: ResolvedConfig) => boolean;
|
|
41
57
|
/**
|
|
42
58
|
* The discovery index (v0.2.0 schema). Artifact URLs are path-absolute under
|
|
43
59
|
* `deployment.base` — the RFC resolves them against the index origin.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { AstroIntegration } from "astro";
|
|
2
2
|
import type { CustomPageRoute } from "../core/custom-pages.ts";
|
|
3
3
|
import type { BlumeProject } from "../core/project-graph.ts";
|
|
4
|
+
import type { CompiledRedirect } from "../core/redirect-patterns.ts";
|
|
4
5
|
import type { Diagnostic } from "../core/types.ts";
|
|
5
6
|
/**
|
|
6
7
|
* Hand the scanned project to the integration ahead of `build()`, so its
|
|
@@ -66,6 +67,13 @@ export interface BlumeIntegrationOptions {
|
|
|
66
67
|
* its already-scanned project instead.
|
|
67
68
|
*/
|
|
68
69
|
buildArtifactsRoot?: string;
|
|
70
|
+
/**
|
|
71
|
+
* The pattern redirects (`/beta/:slug*`), compiled against base-less
|
|
72
|
+
* request paths (see `core/redirect-patterns.ts`). Astro's own `redirects`
|
|
73
|
+
* carry only the exact ones, since it can't prerender a pattern's pages, so
|
|
74
|
+
* the dev server answers these itself.
|
|
75
|
+
*/
|
|
76
|
+
redirects?: CompiledRedirect[];
|
|
69
77
|
}
|
|
70
78
|
/**
|
|
71
79
|
* Blume's Astro integration. Mounts user-authored pages from `pages/` into the
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { AdapterDescriptor } from "../core/adapter.ts";
|
|
3
|
+
/** Options for {@link hcaptcha}. */
|
|
4
|
+
export interface HcaptchaOptions {
|
|
5
|
+
/** The site key, from the hCaptcha dashboard. */
|
|
6
|
+
siteKey: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const hcaptchaOptionsSchema: z.ZodObject<{
|
|
9
|
+
siteKey: z.ZodString;
|
|
10
|
+
}, z.core.$strict>;
|
|
11
|
+
export type HcaptchaAdapter = AdapterDescriptor<"hcaptcha", HcaptchaOptions>;
|
|
12
|
+
export declare const hcaptchaAdapterSchema: z.ZodObject<{
|
|
13
|
+
kind: z.ZodLiteral<"hcaptcha">;
|
|
14
|
+
options: z.ZodObject<{
|
|
15
|
+
siteKey: z.ZodString;
|
|
16
|
+
}, z.core.$strict>;
|
|
17
|
+
requiredSecrets: z.ZodArray<z.ZodString>;
|
|
18
|
+
runtimeDeps: z.ZodArray<z.ZodString>;
|
|
19
|
+
}, z.core.$strict>;
|
|
20
|
+
/** Where the assistant's route checks an hCaptcha token. */
|
|
21
|
+
export declare const HCAPTCHA_VERIFY_URL = "https://api.hcaptcha.com/siteverify";
|
|
22
|
+
/**
|
|
23
|
+
* hCaptcha, as an invisible check: most readers never see a challenge. The
|
|
24
|
+
* site key is public and goes to the browser; the secret the route checks
|
|
25
|
+
* tokens with comes from `HCAPTCHA_SECRET_KEY`.
|
|
26
|
+
*/
|
|
27
|
+
export declare const hcaptcha: (options: HcaptchaOptions) => HcaptchaAdapter;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bot checks for the assistant (`ai.assistant.captcha` in `blume.config.ts`).
|
|
3
|
+
* The assistant gets a token from the check before each question and the
|
|
4
|
+
* generated route verifies it before calling the model:
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* import { defineConfig } from "blume";
|
|
8
|
+
* import { turnstile } from "blume/captcha";
|
|
9
|
+
*
|
|
10
|
+
* export default defineConfig({
|
|
11
|
+
* ai: {
|
|
12
|
+
* assistant: {
|
|
13
|
+
* enabled: true,
|
|
14
|
+
* captcha: turnstile({ siteKey: "0x4AAAAAAA…" }),
|
|
15
|
+
* },
|
|
16
|
+
* },
|
|
17
|
+
* });
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* Each factory returns a plain descriptor (see `core/adapter.ts`); the browser
|
|
21
|
+
* half is `client.ts`, the server half `verify.ts`.
|
|
22
|
+
*/
|
|
23
|
+
export type { AdapterDescriptor, JsonValue } from "../core/adapter.ts";
|
|
24
|
+
export { hcaptcha } from "./hcaptcha.ts";
|
|
25
|
+
export type { HcaptchaAdapter, HcaptchaOptions } from "./hcaptcha.ts";
|
|
26
|
+
export type { CaptchaAdapter, CaptchaSettings } from "./schema.ts";
|
|
27
|
+
export { turnstile } from "./turnstile.ts";
|
|
28
|
+
export type { TurnstileAdapter, TurnstileOptions } from "./turnstile.ts";
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* The configured bot check, as its factory returned it. Anything that isn't
|
|
4
|
+
* one fails with the adapter hint; an adapter's own option errors keep their
|
|
5
|
+
* messages.
|
|
6
|
+
*/
|
|
7
|
+
export declare const captchaAdapterSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
8
|
+
kind: z.ZodLiteral<"hcaptcha">;
|
|
9
|
+
options: z.ZodObject<{
|
|
10
|
+
siteKey: z.ZodString;
|
|
11
|
+
}, z.core.$strict>;
|
|
12
|
+
requiredSecrets: z.ZodArray<z.ZodString>;
|
|
13
|
+
runtimeDeps: z.ZodArray<z.ZodString>;
|
|
14
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
15
|
+
kind: z.ZodLiteral<"turnstile">;
|
|
16
|
+
options: z.ZodObject<{
|
|
17
|
+
siteKey: z.ZodString;
|
|
18
|
+
}, z.core.$strict>;
|
|
19
|
+
requiredSecrets: z.ZodArray<z.ZodString>;
|
|
20
|
+
runtimeDeps: z.ZodArray<z.ZodString>;
|
|
21
|
+
}, z.core.$strict>], "kind">;
|
|
22
|
+
export type CaptchaAdapter = z.output<typeof captchaAdapterSchema>;
|
|
23
|
+
/** What the browser needs to run the check: never the secret. */
|
|
24
|
+
export interface CaptchaSettings {
|
|
25
|
+
kind: CaptchaAdapter["kind"];
|
|
26
|
+
siteKey: string;
|
|
27
|
+
}
|
|
28
|
+
/** The public half of an adapter, for the data snapshot. */
|
|
29
|
+
export declare const captchaSettings: (adapter: CaptchaAdapter) => CaptchaSettings;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { AdapterDescriptor } from "../core/adapter.ts";
|
|
3
|
+
/** Options for {@link turnstile}. */
|
|
4
|
+
export interface TurnstileOptions {
|
|
5
|
+
/** The widget's site key, from the Cloudflare dashboard. */
|
|
6
|
+
siteKey: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const turnstileOptionsSchema: z.ZodObject<{
|
|
9
|
+
siteKey: z.ZodString;
|
|
10
|
+
}, z.core.$strict>;
|
|
11
|
+
export type TurnstileAdapter = AdapterDescriptor<"turnstile", TurnstileOptions>;
|
|
12
|
+
export declare const turnstileAdapterSchema: z.ZodObject<{
|
|
13
|
+
kind: z.ZodLiteral<"turnstile">;
|
|
14
|
+
options: z.ZodObject<{
|
|
15
|
+
siteKey: z.ZodString;
|
|
16
|
+
}, z.core.$strict>;
|
|
17
|
+
requiredSecrets: z.ZodArray<z.ZodString>;
|
|
18
|
+
runtimeDeps: z.ZodArray<z.ZodString>;
|
|
19
|
+
}, z.core.$strict>;
|
|
20
|
+
/** Where the assistant's route checks a Turnstile token. */
|
|
21
|
+
export declare const TURNSTILE_VERIFY_URL = "https://challenges.cloudflare.com/turnstile/v0/siteverify";
|
|
22
|
+
/**
|
|
23
|
+
* Cloudflare Turnstile. The site key is public and goes to the browser; the
|
|
24
|
+
* secret key the route checks tokens with comes from `TURNSTILE_SECRET_KEY`.
|
|
25
|
+
* Set the widget to Invisible or Managed in the Cloudflare dashboard: most
|
|
26
|
+
* readers never see a challenge.
|
|
27
|
+
*/
|
|
28
|
+
export declare const turnstile: (options: TurnstileOptions) => TurnstileAdapter;
|