blume 1.7.1 → 1.7.3
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/CHANGELOG.md +18 -0
- package/dist/cli/chunk-0qymqwzz.js +164 -0
- package/dist/cli/chunk-0qymqwzz.js.map +15 -0
- package/dist/cli/{chunk-8gnpdsn1.js → chunk-0xjyb285.js} +2 -2
- package/dist/cli/{chunk-12dzsn9b.js → chunk-1jefwnfs.js} +82 -81
- package/dist/cli/{chunk-12dzsn9b.js.map → chunk-1jefwnfs.js.map} +3 -3
- package/dist/cli/{chunk-27gtm2ym.js → chunk-2mzebbbz.js} +1 -1
- package/dist/cli/{chunk-s5e5jt53.js → chunk-2z47ypj8.js} +1 -1
- package/dist/cli/{chunk-jtb45atp.js → chunk-3r45185y.js} +10 -12
- package/dist/cli/{chunk-jtb45atp.js.map → chunk-3r45185y.js.map} +2 -2
- package/dist/cli/{chunk-6mq7qkve.js → chunk-4x36ddpw.js} +18 -24
- package/dist/cli/{chunk-6mq7qkve.js.map → chunk-4x36ddpw.js.map} +2 -2
- package/dist/cli/{chunk-he2zfgah.js → chunk-5093q3n7.js} +22 -30
- package/dist/cli/{chunk-he2zfgah.js.map → chunk-5093q3n7.js.map} +2 -2
- package/dist/cli/{chunk-k0v1f8bb.js → chunk-5g0w1e2c.js} +21 -28
- package/dist/cli/{chunk-k0v1f8bb.js.map → chunk-5g0w1e2c.js.map} +2 -2
- package/dist/cli/{chunk-5gfw0q4j.js → chunk-5qk08vmp.js} +26 -34
- package/dist/cli/{chunk-5gfw0q4j.js.map → chunk-5qk08vmp.js.map} +2 -2
- package/dist/cli/{chunk-r99hynxh.js → chunk-7s8hm3b6.js} +41 -9
- package/dist/cli/{chunk-r99hynxh.js.map → chunk-7s8hm3b6.js.map} +3 -3
- package/dist/cli/{chunk-vyqj481z.js → chunk-8cjtbafj.js} +68 -66
- package/dist/cli/chunk-8cjtbafj.js.map +13 -0
- package/dist/cli/{chunk-aqjvpd03.js → chunk-97r59kpr.js} +27 -33
- package/dist/cli/{chunk-aqjvpd03.js.map → chunk-97r59kpr.js.map} +2 -2
- package/dist/cli/{chunk-np8dmfb0.js → chunk-ahnw3kxw.js} +26 -33
- package/dist/cli/{chunk-np8dmfb0.js.map → chunk-ahnw3kxw.js.map} +2 -2
- package/dist/cli/{chunk-j5f2wrj5.js → chunk-b27xqwn9.js} +10 -15
- package/dist/cli/{chunk-j5f2wrj5.js.map → chunk-b27xqwn9.js.map} +2 -2
- package/dist/cli/{chunk-kmx2mydj.js → chunk-bf6bt1xt.js} +8 -8
- package/dist/cli/{chunk-kmx2mydj.js.map → chunk-bf6bt1xt.js.map} +1 -1
- package/dist/cli/{chunk-90pdhkpm.js → chunk-bvwwhd84.js} +23 -32
- package/dist/cli/{chunk-90pdhkpm.js.map → chunk-bvwwhd84.js.map} +2 -2
- package/dist/cli/{chunk-mfm4sjwx.js → chunk-cjtn640a.js} +32 -43
- package/dist/cli/{chunk-mfm4sjwx.js.map → chunk-cjtn640a.js.map} +2 -2
- package/dist/cli/{chunk-pxj10x8y.js → chunk-ct47dqpx.js} +14 -3
- package/dist/cli/{chunk-pxj10x8y.js.map → chunk-ct47dqpx.js.map} +4 -3
- package/dist/cli/{chunk-x66c5yjn.js → chunk-dwgcp5sm.js} +2 -2
- package/dist/cli/{chunk-4trphnvy.js → chunk-e7f42gdj.js} +10 -13
- package/dist/cli/{chunk-4trphnvy.js.map → chunk-e7f42gdj.js.map} +2 -2
- package/dist/cli/{chunk-82atea4k.js → chunk-esphfr8p.js} +14 -18
- package/dist/cli/{chunk-82atea4k.js.map → chunk-esphfr8p.js.map} +2 -2
- package/dist/cli/{chunk-q56730e0.js → chunk-ex56aa81.js} +53 -53
- package/dist/cli/chunk-ex56aa81.js.map +13 -0
- package/dist/cli/{chunk-ywn7t0pb.js → chunk-garjf5z9.js} +3 -3
- package/dist/cli/{chunk-ev67ycx0.js → chunk-jq5n4avg.js} +1 -1
- package/dist/cli/{chunk-ka5k7cz9.js → chunk-js7saxwm.js} +35 -39
- package/dist/cli/{chunk-ka5k7cz9.js.map → chunk-js7saxwm.js.map} +4 -6
- package/dist/cli/{chunk-x1wvw7a8.js → chunk-k79xp7av.js} +168 -208
- package/dist/cli/chunk-k79xp7av.js.map +39 -0
- package/dist/cli/{chunk-3r94j3tc.js → chunk-nn13znc2.js} +2 -2
- package/dist/cli/{chunk-4ae4f395.js → chunk-ps4m1xh4.js} +60 -35
- package/dist/cli/chunk-ps4m1xh4.js.map +15 -0
- package/dist/cli/{chunk-wd27zjcz.js → chunk-q4rae3bg.js} +1 -1
- package/dist/cli/{chunk-pdwg3q9g.js → chunk-rqy0s5wh.js} +21 -30
- package/dist/cli/{chunk-pdwg3q9g.js.map → chunk-rqy0s5wh.js.map} +2 -2
- package/dist/cli/{chunk-52cwcqvp.js → chunk-rz9jmfhz.js} +15 -24
- package/dist/cli/{chunk-52cwcqvp.js.map → chunk-rz9jmfhz.js.map} +2 -2
- package/dist/cli/{chunk-8p3xe5jv.js → chunk-vacwm2hv.js} +3 -3
- package/dist/cli/{chunk-cbjnx4s8.js → chunk-vh9w1sgp.js} +1 -1
- package/dist/cli/{chunk-sbdqrjbb.js → chunk-vrfp10qk.js} +1 -1
- package/dist/cli/{chunk-h9ekmtz7.js → chunk-yg63d42r.js} +28 -35
- package/dist/cli/{chunk-h9ekmtz7.js.map → chunk-yg63d42r.js.map} +2 -2
- package/dist/cli/{chunk-5hs6gb7n.js → chunk-yzhm0j9q.js} +1 -1
- package/dist/cli/index.js +397 -34
- package/dist/cli/index.js.map +12 -4
- package/dist/types/core/config-input.d.ts +59 -0
- package/dist/types/core/data.d.ts +2 -0
- package/dist/types/core/schema.d.ts +47 -3
- package/dist/types/core/types.d.ts +5 -0
- package/docs/configuration/ask-ai.mdx +61 -0
- package/docs/configuration/index.mdx +3 -1
- package/docs/content/navigation.mdx +3 -0
- package/docs/content/syntax.mdx +10 -0
- package/docs/discoverability/agent-discovery.mdx +82 -1
- package/docs/discoverability/index.mdx +1 -1
- package/docs/discoverability/llms-txt.mdx +1 -1
- package/docs/reference/frontmatter.mdx +2 -0
- package/package.json +1 -1
- package/src/ai/agent-readability.ts +5 -0
- package/src/ai/ai-catalog.ts +241 -0
- package/src/ai/cors.ts +87 -0
- package/src/ai/link-headers.ts +12 -0
- package/src/ai/llms.ts +6 -0
- package/src/ai/mcp/discovery.ts +1 -1
- package/src/astro/generate.ts +4 -0
- package/src/astro/templates.ts +88 -23
- package/src/cli/commands/build.ts +3 -1
- package/src/components/islands/hooks.ts +50 -1
- package/src/components/layout/NavTree.astro +75 -66
- package/src/components/layout/RootLayout.astro +28 -2
- package/src/components/layout/analytics-client.ts +36 -7
- package/src/components/layout/nav-utils.ts +17 -3
- package/src/core/adapter.ts +61 -0
- package/src/core/config-input.ts +60 -0
- package/src/core/data.ts +2 -0
- package/src/core/navigation.ts +22 -3
- package/src/core/schema.ts +88 -0
- package/src/core/types.ts +5 -0
- package/src/deploy/artifacts.ts +12 -1
- package/src/deploy/headers.ts +6 -0
- package/src/deploy/vercel-negotiation.ts +25 -2
- package/src/registry/eject.ts +2 -0
- package/src/search/build.ts +25 -3
- package/src/theme/entry.ts +23 -0
- package/dist/cli/chunk-2aj8ddew.js +0 -72
- package/dist/cli/chunk-2aj8ddew.js.map +0 -10
- package/dist/cli/chunk-4ae4f395.js.map +0 -15
- package/dist/cli/chunk-4xyggvgf.js +0 -21
- package/dist/cli/chunk-4xyggvgf.js.map +0 -10
- package/dist/cli/chunk-6kzzpsx8.js +0 -26
- package/dist/cli/chunk-6kzzpsx8.js.map +0 -10
- package/dist/cli/chunk-bcy492zc.js +0 -16
- package/dist/cli/chunk-bcy492zc.js.map +0 -10
- package/dist/cli/chunk-btfr9yvw.js +0 -41
- package/dist/cli/chunk-btfr9yvw.js.map +0 -10
- package/dist/cli/chunk-ey89bjj1.js +0 -209
- package/dist/cli/chunk-ey89bjj1.js.map +0 -11
- package/dist/cli/chunk-q56730e0.js.map +0 -13
- package/dist/cli/chunk-qvvpnwaz.js +0 -69
- package/dist/cli/chunk-qvvpnwaz.js.map +0 -11
- package/dist/cli/chunk-vt8fgygt.js +0 -23
- package/dist/cli/chunk-vt8fgygt.js.map +0 -10
- package/dist/cli/chunk-vxv4x1n8.js +0 -17
- package/dist/cli/chunk-vxv4x1n8.js.map +0 -10
- package/dist/cli/chunk-vyqj481z.js.map +0 -13
- package/dist/cli/chunk-x1wvw7a8.js.map +0 -40
- /package/dist/cli/{chunk-8gnpdsn1.js.map → chunk-0xjyb285.js.map} +0 -0
- /package/dist/cli/{chunk-27gtm2ym.js.map → chunk-2mzebbbz.js.map} +0 -0
- /package/dist/cli/{chunk-s5e5jt53.js.map → chunk-2z47ypj8.js.map} +0 -0
- /package/dist/cli/{chunk-x66c5yjn.js.map → chunk-dwgcp5sm.js.map} +0 -0
- /package/dist/cli/{chunk-ywn7t0pb.js.map → chunk-garjf5z9.js.map} +0 -0
- /package/dist/cli/{chunk-ev67ycx0.js.map → chunk-jq5n4avg.js.map} +0 -0
- /package/dist/cli/{chunk-3r94j3tc.js.map → chunk-nn13znc2.js.map} +0 -0
- /package/dist/cli/{chunk-wd27zjcz.js.map → chunk-q4rae3bg.js.map} +0 -0
- /package/dist/cli/{chunk-8p3xe5jv.js.map → chunk-vacwm2hv.js.map} +0 -0
- /package/dist/cli/{chunk-cbjnx4s8.js.map → chunk-vh9w1sgp.js.map} +0 -0
- /package/dist/cli/{chunk-sbdqrjbb.js.map → chunk-vrfp10qk.js.map} +0 -0
- /package/dist/cli/{chunk-5hs6gb7n.js.map → chunk-yzhm0j9q.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
packageRoot
|
|
4
|
-
} from "./
|
|
4
|
+
} from "./index.js";
|
|
5
5
|
|
|
6
6
|
// src/registry/registry.ts
|
|
7
7
|
import { join } from "pathe";
|
|
@@ -218,4 +218,4 @@ var findItem = (name) => registry.find((item) => item.name === name);
|
|
|
218
218
|
export { packageSrc, registry, findItem };
|
|
219
219
|
|
|
220
220
|
//# debugId=2BDCE672B82B453C64756E2164756E21
|
|
221
|
-
//# sourceMappingURL=chunk-
|
|
221
|
+
//# sourceMappingURL=chunk-nn13znc2.js.map
|
|
@@ -1,27 +1,30 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
|
-
API_CATALOG_PATH,
|
|
4
3
|
OPENAPI_PATH,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
API_CATALOG_PATH,
|
|
5
|
+
hasApiCatalog,
|
|
6
|
+
AI_CATALOG_PATH,
|
|
7
|
+
AI_CATALOG_TYPE,
|
|
8
|
+
hasAiCatalog
|
|
9
|
+
} from "./chunk-0qymqwzz.js";
|
|
10
10
|
import {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
} from "./chunk-
|
|
11
|
+
TOC_HIDDEN_KEY,
|
|
12
|
+
BLUME_IGNORE_DIRS
|
|
13
|
+
} from "./chunk-1jefwnfs.js";
|
|
14
14
|
import {
|
|
15
|
-
|
|
15
|
+
hasScalarReferences,
|
|
16
16
|
fontLocaleCodes,
|
|
17
|
-
|
|
18
|
-
} from "./chunk-
|
|
17
|
+
buildFontEntries
|
|
18
|
+
} from "./chunk-7s8hm3b6.js";
|
|
19
|
+
import {
|
|
20
|
+
searchProviderMeta
|
|
21
|
+
} from "./chunk-q4rae3bg.js";
|
|
19
22
|
import {
|
|
20
|
-
normalizeBasePath,
|
|
21
23
|
trimChar,
|
|
24
|
+
normalizeBasePath,
|
|
22
25
|
withBasePath,
|
|
23
26
|
withComposedBasePath
|
|
24
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-2mzebbbz.js";
|
|
25
28
|
|
|
26
29
|
// src/deploy/adapter-output.ts
|
|
27
30
|
import { existsSync } from "node:fs";
|
|
@@ -74,6 +77,9 @@ var buildHomeLinkHeader = (config, routePaths) => {
|
|
|
74
77
|
if (hasApiCatalog(config)) {
|
|
75
78
|
links.push(`<${deployBase}${API_CATALOG_PATH}>; rel="api-catalog"; type="application/linkset+json"`);
|
|
76
79
|
}
|
|
80
|
+
if (hasAiCatalog(config)) {
|
|
81
|
+
links.push(`<${deployBase}${AI_CATALOG_PATH}>; rel="ai-catalog"; type="${AI_CATALOG_TYPE}"`);
|
|
82
|
+
}
|
|
77
83
|
if (config.ai.api) {
|
|
78
84
|
links.push(`<${deployBase}${OPENAPI_PATH}>; rel="service-desc"; type="application/json"`);
|
|
79
85
|
}
|
|
@@ -715,8 +721,21 @@ export const collections = { docs${options.staged ? ", staged" : ""} };
|
|
|
715
721
|
`;
|
|
716
722
|
};
|
|
717
723
|
var ASK_FALLBACK_PROMPT = "You are a helpful documentation assistant. Answer using the project's documentation.";
|
|
724
|
+
var askCorsTemplate = (cors = []) => cors.length > 0 ? {
|
|
725
|
+
close: "});",
|
|
726
|
+
imports: [
|
|
727
|
+
'import { preflightResponse, withCors } from "blume/ai/cors.ts";'
|
|
728
|
+
],
|
|
729
|
+
open: "withCors(ALLOWED_ORIGINS, async ({ request }) => {",
|
|
730
|
+
setup: `
|
|
731
|
+
const ALLOWED_ORIGINS = ${JSON.stringify(cors)};
|
|
732
|
+
|
|
733
|
+
export const OPTIONS: APIRoute = ({ request }) =>
|
|
734
|
+
preflightResponse(request, ALLOWED_ORIGINS);
|
|
735
|
+
`
|
|
736
|
+
} : { close: "};", imports: [], open: "async ({ request }) => {", setup: "" };
|
|
718
737
|
var askEndpointTemplate = (backend, grounded, options) => {
|
|
719
|
-
const instructions = options
|
|
738
|
+
const { instructions, reasoning, retrieval } = options ?? {};
|
|
720
739
|
const fallbackPrompt = instructions ? `${ASK_FALLBACK_PROMPT}
|
|
721
740
|
|
|
722
741
|
${instructions}` : ASK_FALLBACK_PROMPT;
|
|
@@ -743,7 +762,8 @@ const openrouter = createOpenRouter({
|
|
|
743
762
|
apiKey: getSecret(${JSON.stringify(backend.apiKeyEnv)}),${headersField}
|
|
744
763
|
});
|
|
745
764
|
`;
|
|
746
|
-
|
|
765
|
+
const settings = reasoning ? `, { reasoning: { effort: ${JSON.stringify(reasoning)} } }` : "";
|
|
766
|
+
modelExpr = `openrouter(${JSON.stringify(backend.model)}${settings})`;
|
|
747
767
|
} else if (backend.kind === "openai-compatible") {
|
|
748
768
|
imports.push('import { createOpenAICompatible } from "@ai-sdk/openai-compatible";');
|
|
749
769
|
setup = `
|
|
@@ -761,14 +781,16 @@ const provider = createOpenAICompatible({
|
|
|
761
781
|
if (instructions) {
|
|
762
782
|
groundFields.push(`instructions: ${JSON.stringify(instructions)}`);
|
|
763
783
|
}
|
|
764
|
-
if (
|
|
765
|
-
groundFields.push(`retrieval: ${JSON.stringify(
|
|
784
|
+
if (retrieval) {
|
|
785
|
+
groundFields.push(`retrieval: ${JSON.stringify(retrieval)}`);
|
|
766
786
|
}
|
|
767
787
|
const groundOptions = groundFields.length > 0 ? `, { ${groundFields.join(", ")} }` : "";
|
|
768
788
|
setup += `
|
|
769
789
|
const ground = createAskContext(askData${groundOptions});
|
|
770
790
|
`;
|
|
771
791
|
}
|
|
792
|
+
const cors = askCorsTemplate(options?.cors);
|
|
793
|
+
imports.push(...cors.imports);
|
|
772
794
|
const validate = ` const body = await request.json().catch(() => null);
|
|
773
795
|
const raw = body?.messages;
|
|
774
796
|
const valid =
|
|
@@ -809,22 +831,25 @@ const ground = createAskContext(askData${groundOptions});
|
|
|
809
831
|
const onError = ` onError({ error }) {
|
|
810
832
|
console.error("Ask AI provider error:", error);
|
|
811
833
|
},`;
|
|
834
|
+
const streamFields = [
|
|
835
|
+
`model: ${modelExpr}`,
|
|
836
|
+
grounded ? "instructions" : `instructions:
|
|
837
|
+
${JSON.stringify(fallbackPrompt)}`,
|
|
838
|
+
"messages"
|
|
839
|
+
];
|
|
840
|
+
if (reasoning && backend.kind !== "openrouter") {
|
|
841
|
+
streamFields.push(`reasoning: ${JSON.stringify(reasoning)}`);
|
|
842
|
+
}
|
|
843
|
+
const call = ` const result = streamText({
|
|
844
|
+
${streamFields.join(`,
|
|
845
|
+
`)},
|
|
846
|
+
${onError}
|
|
847
|
+
});`;
|
|
812
848
|
const stream = grounded ? ` const instructions =
|
|
813
849
|
(await ground(messages, body.page)) ??
|
|
814
850
|
${JSON.stringify(fallbackPrompt)};
|
|
815
|
-
|
|
816
|
-
|
|
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 }) => {
|
|
851
|
+
${call}` : call;
|
|
852
|
+
const handler = `export const POST: APIRoute = ${cors.open}
|
|
828
853
|
${validate}
|
|
829
854
|
${keyCheck}
|
|
830
855
|
try {
|
|
@@ -833,13 +858,13 @@ ${stream}
|
|
|
833
858
|
} catch {
|
|
834
859
|
return new Response("Failed to generate a response.", { status: 500 });
|
|
835
860
|
}
|
|
836
|
-
}
|
|
861
|
+
${cors.close}`;
|
|
837
862
|
return `// Generated by Blume. Do not edit.
|
|
838
863
|
${imports.join(`
|
|
839
864
|
`)}
|
|
840
865
|
|
|
841
866
|
export const prerender = false;
|
|
842
|
-
${setup}
|
|
867
|
+
${setup}${cors.setup}
|
|
843
868
|
${handler}
|
|
844
869
|
`;
|
|
845
870
|
};
|
|
@@ -2479,5 +2504,5 @@ var runtimeTsconfigTemplate = () => `${JSON.stringify({
|
|
|
2479
2504
|
|
|
2480
2505
|
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
2506
|
|
|
2482
|
-
//# debugId=
|
|
2483
|
-
//# sourceMappingURL=chunk-
|
|
2507
|
+
//# debugId=27833C6A2810E0DD64756E2164756E21
|
|
2508
|
+
//# sourceMappingURL=chunk-ps4m1xh4.js.map
|