blume 1.7.1 → 1.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/cli/{chunk-mfm4sjwx.js → chunk-12dxjqk7.js} +32 -43
  3. package/dist/cli/{chunk-mfm4sjwx.js.map → chunk-12dxjqk7.js.map} +2 -2
  4. package/dist/cli/{chunk-vyqj481z.js → chunk-196vjxp9.js} +64 -64
  5. package/dist/cli/chunk-196vjxp9.js.map +13 -0
  6. package/dist/cli/{chunk-27gtm2ym.js → chunk-2mzebbbz.js} +1 -1
  7. package/dist/cli/{chunk-s5e5jt53.js → chunk-2z47ypj8.js} +1 -1
  8. package/dist/cli/{chunk-52cwcqvp.js → chunk-30e87n55.js} +15 -24
  9. package/dist/cli/{chunk-52cwcqvp.js.map → chunk-30e87n55.js.map} +2 -2
  10. package/dist/cli/{chunk-4trphnvy.js → chunk-3w7b2vcx.js} +10 -13
  11. package/dist/cli/{chunk-4trphnvy.js.map → chunk-3w7b2vcx.js.map} +2 -2
  12. package/dist/cli/{chunk-kmx2mydj.js → chunk-450a7rcr.js} +8 -8
  13. package/dist/cli/{chunk-kmx2mydj.js.map → chunk-450a7rcr.js.map} +1 -1
  14. package/dist/cli/{chunk-x1wvw7a8.js → chunk-5n7t497w.js} +129 -131
  15. package/dist/cli/{chunk-x1wvw7a8.js.map → chunk-5n7t497w.js.map} +4 -4
  16. package/dist/cli/{chunk-r99hynxh.js → chunk-61j18dwk.js} +36 -9
  17. package/dist/cli/{chunk-r99hynxh.js.map → chunk-61j18dwk.js.map} +3 -3
  18. package/dist/cli/{chunk-3r94j3tc.js → chunk-688e0dde.js} +2 -2
  19. package/dist/cli/{chunk-vxv4x1n8.js → chunk-88by27n5.js} +2 -2
  20. package/dist/cli/{chunk-h9ekmtz7.js → chunk-8cd8tj54.js} +28 -35
  21. package/dist/cli/{chunk-h9ekmtz7.js.map → chunk-8cd8tj54.js.map} +2 -2
  22. package/dist/cli/{chunk-8gnpdsn1.js → chunk-9bkjd11x.js} +2 -2
  23. package/dist/cli/{chunk-k0v1f8bb.js → chunk-9he6crym.js} +21 -28
  24. package/dist/cli/{chunk-k0v1f8bb.js.map → chunk-9he6crym.js.map} +2 -2
  25. package/dist/cli/{chunk-aqjvpd03.js → chunk-aztttvb3.js} +27 -33
  26. package/dist/cli/{chunk-aqjvpd03.js.map → chunk-aztttvb3.js.map} +2 -2
  27. package/dist/cli/{chunk-6mq7qkve.js → chunk-cvky9gb2.js} +18 -24
  28. package/dist/cli/{chunk-6mq7qkve.js.map → chunk-cvky9gb2.js.map} +2 -2
  29. package/dist/cli/{chunk-90pdhkpm.js → chunk-eevwt1sc.js} +23 -32
  30. package/dist/cli/{chunk-90pdhkpm.js.map → chunk-eevwt1sc.js.map} +2 -2
  31. package/dist/cli/{chunk-4ae4f395.js → chunk-ejjx8znq.js} +53 -34
  32. package/dist/cli/chunk-ejjx8znq.js.map +15 -0
  33. package/dist/cli/{chunk-8p3xe5jv.js → chunk-exeeb35e.js} +3 -3
  34. package/dist/cli/{chunk-q56730e0.js → chunk-fmceyezb.js} +41 -50
  35. package/dist/cli/{chunk-q56730e0.js.map → chunk-fmceyezb.js.map} +2 -2
  36. package/dist/cli/{chunk-12dzsn9b.js → chunk-hdm2dkd2.js} +72 -77
  37. package/dist/cli/{chunk-12dzsn9b.js.map → chunk-hdm2dkd2.js.map} +2 -2
  38. package/dist/cli/{chunk-j5f2wrj5.js → chunk-hs3gbh8p.js} +10 -15
  39. package/dist/cli/{chunk-j5f2wrj5.js.map → chunk-hs3gbh8p.js.map} +2 -2
  40. package/dist/cli/{chunk-ywn7t0pb.js → chunk-jbj4qhfw.js} +3 -3
  41. package/dist/cli/{chunk-ev67ycx0.js → chunk-jq5n4avg.js} +1 -1
  42. package/dist/cli/{chunk-he2zfgah.js → chunk-mqb2ka8m.js} +22 -30
  43. package/dist/cli/{chunk-he2zfgah.js.map → chunk-mqb2ka8m.js.map} +2 -2
  44. package/dist/cli/{chunk-5gfw0q4j.js → chunk-mt76t7dj.js} +26 -34
  45. package/dist/cli/{chunk-5gfw0q4j.js.map → chunk-mt76t7dj.js.map} +2 -2
  46. package/dist/cli/{chunk-jtb45atp.js → chunk-n9sra6sy.js} +13 -13
  47. package/dist/cli/{chunk-jtb45atp.js.map → chunk-n9sra6sy.js.map} +1 -1
  48. package/dist/cli/{chunk-x66c5yjn.js → chunk-ppfvdcd4.js} +2 -2
  49. package/dist/cli/{chunk-wd27zjcz.js → chunk-q4rae3bg.js} +1 -1
  50. package/dist/cli/{chunk-pxj10x8y.js → chunk-ra1v2nc2.js} +1 -1
  51. package/dist/cli/{chunk-np8dmfb0.js → chunk-t3tj0dgr.js} +26 -33
  52. package/dist/cli/{chunk-np8dmfb0.js.map → chunk-t3tj0dgr.js.map} +2 -2
  53. package/dist/cli/{chunk-qvvpnwaz.js → chunk-tqa1s0k8.js} +4 -4
  54. package/dist/cli/{chunk-cbjnx4s8.js → chunk-vh9w1sgp.js} +1 -1
  55. package/dist/cli/{chunk-82atea4k.js → chunk-vkrsvbr5.js} +13 -17
  56. package/dist/cli/{chunk-82atea4k.js.map → chunk-vkrsvbr5.js.map} +2 -2
  57. package/dist/cli/{chunk-sbdqrjbb.js → chunk-vrfp10qk.js} +1 -1
  58. package/dist/cli/{chunk-ka5k7cz9.js → chunk-wjt80jps.js} +27 -27
  59. package/dist/cli/{chunk-ka5k7cz9.js.map → chunk-wjt80jps.js.map} +2 -2
  60. package/dist/cli/{chunk-pdwg3q9g.js → chunk-xhtpx3ff.js} +21 -30
  61. package/dist/cli/{chunk-pdwg3q9g.js.map → chunk-xhtpx3ff.js.map} +2 -2
  62. package/dist/cli/{chunk-5hs6gb7n.js → chunk-yzhm0j9q.js} +1 -1
  63. package/dist/cli/index.js +397 -34
  64. package/dist/cli/index.js.map +12 -4
  65. package/dist/types/core/config-input.d.ts +26 -0
  66. package/dist/types/core/schema.d.ts +27 -3
  67. package/docs/configuration/ask-ai.mdx +47 -0
  68. package/package.json +1 -1
  69. package/src/ai/cors.ts +87 -0
  70. package/src/astro/generate.ts +2 -0
  71. package/src/astro/templates.ts +88 -23
  72. package/src/components/layout/NavTree.astro +75 -66
  73. package/src/components/layout/RootLayout.astro +4 -1
  74. package/src/components/layout/nav-utils.ts +17 -3
  75. package/src/core/adapter.ts +61 -0
  76. package/src/core/config-input.ts +26 -0
  77. package/src/core/schema.ts +56 -0
  78. package/src/registry/eject.ts +2 -0
  79. package/dist/cli/chunk-2aj8ddew.js +0 -72
  80. package/dist/cli/chunk-2aj8ddew.js.map +0 -10
  81. package/dist/cli/chunk-4ae4f395.js.map +0 -15
  82. package/dist/cli/chunk-4xyggvgf.js +0 -21
  83. package/dist/cli/chunk-4xyggvgf.js.map +0 -10
  84. package/dist/cli/chunk-6kzzpsx8.js +0 -26
  85. package/dist/cli/chunk-6kzzpsx8.js.map +0 -10
  86. package/dist/cli/chunk-bcy492zc.js +0 -16
  87. package/dist/cli/chunk-bcy492zc.js.map +0 -10
  88. package/dist/cli/chunk-btfr9yvw.js +0 -41
  89. package/dist/cli/chunk-btfr9yvw.js.map +0 -10
  90. package/dist/cli/chunk-ey89bjj1.js +0 -209
  91. package/dist/cli/chunk-ey89bjj1.js.map +0 -11
  92. package/dist/cli/chunk-vt8fgygt.js +0 -23
  93. package/dist/cli/chunk-vt8fgygt.js.map +0 -10
  94. package/dist/cli/chunk-vyqj481z.js.map +0 -13
  95. /package/dist/cli/{chunk-27gtm2ym.js.map → chunk-2mzebbbz.js.map} +0 -0
  96. /package/dist/cli/{chunk-s5e5jt53.js.map → chunk-2z47ypj8.js.map} +0 -0
  97. /package/dist/cli/{chunk-3r94j3tc.js.map → chunk-688e0dde.js.map} +0 -0
  98. /package/dist/cli/{chunk-vxv4x1n8.js.map → chunk-88by27n5.js.map} +0 -0
  99. /package/dist/cli/{chunk-8gnpdsn1.js.map → chunk-9bkjd11x.js.map} +0 -0
  100. /package/dist/cli/{chunk-8p3xe5jv.js.map → chunk-exeeb35e.js.map} +0 -0
  101. /package/dist/cli/{chunk-ywn7t0pb.js.map → chunk-jbj4qhfw.js.map} +0 -0
  102. /package/dist/cli/{chunk-ev67ycx0.js.map → chunk-jq5n4avg.js.map} +0 -0
  103. /package/dist/cli/{chunk-x66c5yjn.js.map → chunk-ppfvdcd4.js.map} +0 -0
  104. /package/dist/cli/{chunk-wd27zjcz.js.map → chunk-q4rae3bg.js.map} +0 -0
  105. /package/dist/cli/{chunk-pxj10x8y.js.map → chunk-ra1v2nc2.js.map} +0 -0
  106. /package/dist/cli/{chunk-qvvpnwaz.js.map → chunk-tqa1s0k8.js.map} +0 -0
  107. /package/dist/cli/{chunk-cbjnx4s8.js.map → chunk-vh9w1sgp.js.map} +0 -0
  108. /package/dist/cli/{chunk-sbdqrjbb.js.map → chunk-vrfp10qk.js.map} +0 -0
  109. /package/dist/cli/{chunk-5hs6gb7n.js.map → chunk-yzhm0j9q.js.map} +0 -0
@@ -1,27 +1,27 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
- API_CATALOG_PATH,
4
3
  OPENAPI_PATH,
4
+ API_CATALOG_PATH,
5
5
  hasApiCatalog
6
- } from "./chunk-qvvpnwaz.js";
6
+ } from "./chunk-tqa1s0k8.js";
7
7
  import {
8
- searchProviderMeta
9
- } from "./chunk-wd27zjcz.js";
8
+ hasScalarReferences,
9
+ fontLocaleCodes,
10
+ buildFontEntries
11
+ } from "./chunk-61j18dwk.js";
10
12
  import {
11
- BLUME_IGNORE_DIRS,
12
- TOC_HIDDEN_KEY
13
- } from "./chunk-12dzsn9b.js";
13
+ searchProviderMeta
14
+ } from "./chunk-q4rae3bg.js";
14
15
  import {
15
- buildFontEntries,
16
- fontLocaleCodes,
17
- hasScalarReferences
18
- } from "./chunk-r99hynxh.js";
16
+ TOC_HIDDEN_KEY,
17
+ BLUME_IGNORE_DIRS
18
+ } from "./chunk-hdm2dkd2.js";
19
19
  import {
20
- normalizeBasePath,
21
20
  trimChar,
21
+ normalizeBasePath,
22
22
  withBasePath,
23
23
  withComposedBasePath
24
- } from "./chunk-27gtm2ym.js";
24
+ } from "./chunk-2mzebbbz.js";
25
25
 
26
26
  // src/deploy/adapter-output.ts
27
27
  import { existsSync } from "node:fs";
@@ -715,8 +715,21 @@ export const collections = { docs${options.staged ? ", staged" : ""} };
715
715
  `;
716
716
  };
717
717
  var ASK_FALLBACK_PROMPT = "You are a helpful documentation assistant. Answer using the project's documentation.";
718
+ var askCorsTemplate = (cors = []) => cors.length > 0 ? {
719
+ close: "});",
720
+ imports: [
721
+ 'import { preflightResponse, withCors } from "blume/ai/cors.ts";'
722
+ ],
723
+ open: "withCors(ALLOWED_ORIGINS, async ({ request }) => {",
724
+ setup: `
725
+ const ALLOWED_ORIGINS = ${JSON.stringify(cors)};
726
+
727
+ export const OPTIONS: APIRoute = ({ request }) =>
728
+ preflightResponse(request, ALLOWED_ORIGINS);
729
+ `
730
+ } : { close: "};", imports: [], open: "async ({ request }) => {", setup: "" };
718
731
  var askEndpointTemplate = (backend, grounded, options) => {
719
- const instructions = options?.instructions;
732
+ const { instructions, reasoning, retrieval } = options ?? {};
720
733
  const fallbackPrompt = instructions ? `${ASK_FALLBACK_PROMPT}
721
734
 
722
735
  ${instructions}` : ASK_FALLBACK_PROMPT;
@@ -743,7 +756,8 @@ const openrouter = createOpenRouter({
743
756
  apiKey: getSecret(${JSON.stringify(backend.apiKeyEnv)}),${headersField}
744
757
  });
745
758
  `;
746
- modelExpr = `openrouter(${JSON.stringify(backend.model)})`;
759
+ const settings = reasoning ? `, { reasoning: { effort: ${JSON.stringify(reasoning)} } }` : "";
760
+ modelExpr = `openrouter(${JSON.stringify(backend.model)}${settings})`;
747
761
  } else if (backend.kind === "openai-compatible") {
748
762
  imports.push('import { createOpenAICompatible } from "@ai-sdk/openai-compatible";');
749
763
  setup = `
@@ -761,14 +775,16 @@ const provider = createOpenAICompatible({
761
775
  if (instructions) {
762
776
  groundFields.push(`instructions: ${JSON.stringify(instructions)}`);
763
777
  }
764
- if (options?.retrieval) {
765
- groundFields.push(`retrieval: ${JSON.stringify(options.retrieval)}`);
778
+ if (retrieval) {
779
+ groundFields.push(`retrieval: ${JSON.stringify(retrieval)}`);
766
780
  }
767
781
  const groundOptions = groundFields.length > 0 ? `, { ${groundFields.join(", ")} }` : "";
768
782
  setup += `
769
783
  const ground = createAskContext(askData${groundOptions});
770
784
  `;
771
785
  }
786
+ const cors = askCorsTemplate(options?.cors);
787
+ imports.push(...cors.imports);
772
788
  const validate = ` const body = await request.json().catch(() => null);
773
789
  const raw = body?.messages;
774
790
  const valid =
@@ -809,22 +825,25 @@ const ground = createAskContext(askData${groundOptions});
809
825
  const onError = ` onError({ error }) {
810
826
  console.error("Ask AI provider error:", error);
811
827
  },`;
828
+ const streamFields = [
829
+ `model: ${modelExpr}`,
830
+ grounded ? "instructions" : `instructions:
831
+ ${JSON.stringify(fallbackPrompt)}`,
832
+ "messages"
833
+ ];
834
+ if (reasoning && backend.kind !== "openrouter") {
835
+ streamFields.push(`reasoning: ${JSON.stringify(reasoning)}`);
836
+ }
837
+ const call = ` const result = streamText({
838
+ ${streamFields.join(`,
839
+ `)},
840
+ ${onError}
841
+ });`;
812
842
  const stream = grounded ? ` const instructions =
813
843
  (await ground(messages, body.page)) ??
814
844
  ${JSON.stringify(fallbackPrompt)};
815
- const result = streamText({
816
- model: ${modelExpr},
817
- instructions,
818
- messages,
819
- ${onError}
820
- });` : ` const result = streamText({
821
- model: ${modelExpr},
822
- instructions:
823
- ${JSON.stringify(fallbackPrompt)},
824
- messages,
825
- ${onError}
826
- });`;
827
- const handler = `export const POST: APIRoute = async ({ request }) => {
845
+ ${call}` : call;
846
+ const handler = `export const POST: APIRoute = ${cors.open}
828
847
  ${validate}
829
848
  ${keyCheck}
830
849
  try {
@@ -833,13 +852,13 @@ ${stream}
833
852
  } catch {
834
853
  return new Response("Failed to generate a response.", { status: 500 });
835
854
  }
836
- };`;
855
+ ${cors.close}`;
837
856
  return `// Generated by Blume. Do not edit.
838
857
  ${imports.join(`
839
858
  `)}
840
859
 
841
860
  export const prerender = false;
842
- ${setup}
861
+ ${setup}${cors.setup}
843
862
  ${handler}
844
863
  `;
845
864
  };
@@ -2479,5 +2498,5 @@ var runtimeTsconfigTemplate = () => `${JSON.stringify({
2479
2498
 
2480
2499
  export { ADAPTER_IGNORE_DIRS, servesClientSubdir, deployStaticDir, surfaceAdapterOutput, resolveAskBackend, askBackendRuntimeDep, buildHomeLinkHeader, platformRedirects, publishRuntimeModules, runtimeDependencies, astroConfigTemplate, stagedContentDir, contentConfigTemplate, askEndpointTemplate, askComponentTemplate, searchEndpointTemplate, featuresTemplate, searchClientTemplate, mixedbreadSearchEndpointTemplate, rawMarkdownEndpointTemplate, contentAssetsEndpointTemplate, mcpPageFile, mcpEndpointTemplate, playgroundProxyTemplate, staticJsonEndpointTemplate, rssEndpointTemplate, navFragmentTemplate, ogEndpointTemplate, scalarReferenceTemplate, catchAllPageTemplate, changelogIndexTemplate, notFoundPageTemplate, notFoundMarkdownTemplate, notFoundJsonTemplate, apiPagesIndexTemplate, apiPageTemplate, apiNavigationTemplate, apiSearchTemplate, apiNotFoundTemplate, islandWrapperTemplate, islandMapTemplate, exampleSlug, exampleWrapperTemplate, examplesRouteBase, exampleMapTemplate, examplesPageTemplate, runtimePackageTemplate, runtimeTsconfigTemplate };
2481
2500
 
2482
- //# debugId=5A77D8072A1C21F564756E2164756E21
2483
- //# sourceMappingURL=chunk-4ae4f395.js.map
2501
+ //# debugId=53365D3EDA449FFB64756E2164756E21
2502
+ //# sourceMappingURL=chunk-ejjx8znq.js.map