blume 1.7.0 → 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.
- package/CHANGELOG.md +18 -0
- package/dist/cli/{chunk-9qs6acpw.js → chunk-12dxjqk7.js} +32 -43
- package/dist/cli/{chunk-9qs6acpw.js.map → chunk-12dxjqk7.js.map} +2 -2
- package/dist/cli/{chunk-s5dsk8bj.js → chunk-196vjxp9.js} +65 -64
- package/dist/cli/chunk-196vjxp9.js.map +13 -0
- 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-tnskyrej.js → chunk-30e87n55.js} +15 -24
- package/dist/cli/{chunk-tnskyrej.js.map → chunk-30e87n55.js.map} +2 -2
- package/dist/cli/{chunk-4trphnvy.js → chunk-3w7b2vcx.js} +10 -13
- package/dist/cli/{chunk-4trphnvy.js.map → chunk-3w7b2vcx.js.map} +2 -2
- package/dist/cli/{chunk-v5mm027v.js → chunk-450a7rcr.js} +8 -8
- package/dist/cli/{chunk-v5mm027v.js.map → chunk-450a7rcr.js.map} +1 -1
- package/dist/cli/{chunk-5d4q7121.js → chunk-5n7t497w.js} +142 -134
- package/dist/cli/{chunk-5d4q7121.js.map → chunk-5n7t497w.js.map} +5 -5
- package/dist/cli/{chunk-xv91q4nm.js → chunk-61j18dwk.js} +37 -9
- package/dist/cli/{chunk-xv91q4nm.js.map → chunk-61j18dwk.js.map} +3 -3
- package/dist/cli/{chunk-3r94j3tc.js → chunk-688e0dde.js} +2 -2
- package/dist/cli/{chunk-vxv4x1n8.js → chunk-88by27n5.js} +2 -2
- package/dist/cli/{chunk-cfw6x4rm.js → chunk-8cd8tj54.js} +28 -35
- package/dist/cli/{chunk-cfw6x4rm.js.map → chunk-8cd8tj54.js.map} +2 -2
- package/dist/cli/{chunk-8gnpdsn1.js → chunk-9bkjd11x.js} +2 -2
- package/dist/cli/{chunk-qq9nm3qd.js → chunk-9he6crym.js} +21 -28
- package/dist/cli/{chunk-qq9nm3qd.js.map → chunk-9he6crym.js.map} +2 -2
- package/dist/cli/{chunk-jk1zwka1.js → chunk-aztttvb3.js} +27 -33
- package/dist/cli/{chunk-jk1zwka1.js.map → chunk-aztttvb3.js.map} +2 -2
- package/dist/cli/{chunk-ckh3a410.js → chunk-cvky9gb2.js} +18 -24
- package/dist/cli/{chunk-ckh3a410.js.map → chunk-cvky9gb2.js.map} +2 -2
- package/dist/cli/{chunk-kwx90v78.js → chunk-eevwt1sc.js} +23 -32
- package/dist/cli/{chunk-kwx90v78.js.map → chunk-eevwt1sc.js.map} +2 -2
- package/dist/cli/{chunk-agy5rzxy.js → chunk-ejjx8znq.js} +126 -77
- package/dist/cli/chunk-ejjx8znq.js.map +15 -0
- package/dist/cli/{chunk-ye9zdkgv.js → chunk-exeeb35e.js} +3 -3
- package/dist/cli/{chunk-v2ymm99c.js → chunk-fmceyezb.js} +41 -50
- package/dist/cli/{chunk-v2ymm99c.js.map → chunk-fmceyezb.js.map} +2 -2
- package/dist/cli/{chunk-s102bysw.js → chunk-hdm2dkd2.js} +209 -97
- package/dist/cli/{chunk-s102bysw.js.map → chunk-hdm2dkd2.js.map} +6 -5
- package/dist/cli/{chunk-zr3ygrq3.js → chunk-hs3gbh8p.js} +10 -15
- package/dist/cli/{chunk-zr3ygrq3.js.map → chunk-hs3gbh8p.js.map} +2 -2
- package/dist/cli/{chunk-n0nyat6g.js → chunk-jbj4qhfw.js} +3 -3
- package/dist/cli/{chunk-ev67ycx0.js → chunk-jq5n4avg.js} +1 -1
- package/dist/cli/{chunk-jxkxjsc1.js → chunk-mqb2ka8m.js} +22 -30
- package/dist/cli/{chunk-jxkxjsc1.js.map → chunk-mqb2ka8m.js.map} +2 -2
- package/dist/cli/{chunk-drke6t0h.js → chunk-mt76t7dj.js} +26 -34
- package/dist/cli/{chunk-drke6t0h.js.map → chunk-mt76t7dj.js.map} +2 -2
- package/dist/cli/{chunk-jtb45atp.js → chunk-n9sra6sy.js} +13 -13
- package/dist/cli/{chunk-jtb45atp.js.map → chunk-n9sra6sy.js.map} +1 -1
- package/dist/cli/{chunk-x66c5yjn.js → chunk-ppfvdcd4.js} +2 -2
- package/dist/cli/{chunk-wd27zjcz.js → chunk-q4rae3bg.js} +1 -1
- package/dist/cli/{chunk-pxj10x8y.js → chunk-ra1v2nc2.js} +1 -1
- package/dist/cli/{chunk-y3g15rvv.js → chunk-t3tj0dgr.js} +26 -33
- package/dist/cli/{chunk-y3g15rvv.js.map → chunk-t3tj0dgr.js.map} +2 -2
- package/dist/cli/{chunk-j6pxe0dt.js → chunk-tqa1s0k8.js} +4 -4
- package/dist/cli/{chunk-cbjnx4s8.js → chunk-vh9w1sgp.js} +1 -1
- package/dist/cli/{chunk-0qhq7b8q.js → chunk-vkrsvbr5.js} +13 -17
- package/dist/cli/{chunk-0qhq7b8q.js.map → chunk-vkrsvbr5.js.map} +2 -2
- package/dist/cli/{chunk-sbdqrjbb.js → chunk-vrfp10qk.js} +1 -1
- package/dist/cli/{chunk-ynacq3ev.js → chunk-wjt80jps.js} +27 -40
- package/dist/cli/{chunk-ynacq3ev.js.map → chunk-wjt80jps.js.map} +3 -4
- package/dist/cli/{chunk-18tjv4f7.js → chunk-xhtpx3ff.js} +21 -30
- package/dist/cli/{chunk-18tjv4f7.js.map → chunk-xhtpx3ff.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/components/layout/nav-utils.d.ts +15 -2
- package/dist/types/core/config-input.d.ts +33 -0
- package/dist/types/core/schema.d.ts +29 -3
- package/docs/08-faq.mdx +21 -0
- package/docs/configuration/ask-ai.mdx +63 -0
- package/docs/content/sources.mdx +2 -2
- package/package.json +1 -1
- package/src/ai/ask.ts +31 -4
- package/src/ai/cors.ts +87 -0
- package/src/astro/generate.ts +3 -0
- package/src/astro/templates.ts +192 -83
- package/src/components/content/YouTube.astro +1 -1
- package/src/components/layout/Header.astro +1 -1
- package/src/components/layout/NavTree.astro +75 -66
- package/src/components/layout/RootLayout.astro +4 -1
- package/src/components/layout/Search.astro +11 -0
- package/src/components/layout/nav-utils.ts +47 -15
- package/src/core/adapter.ts +61 -0
- package/src/core/config-input.ts +33 -0
- package/src/core/schema.ts +61 -0
- package/src/core/sources/assets.ts +162 -26
- package/src/core/sources/notion.ts +60 -1
- package/src/registry/eject.ts +3 -0
- package/src/theme/entry.ts +9 -0
- package/dist/cli/chunk-2aj8ddew.js +0 -72
- package/dist/cli/chunk-2aj8ddew.js.map +0 -10
- 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-agy5rzxy.js.map +0 -15
- 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-s5dsk8bj.js.map +0 -13
- package/dist/cli/chunk-vt8fgygt.js +0 -23
- package/dist/cli/chunk-vt8fgygt.js.map +0 -10
- /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-3r94j3tc.js.map → chunk-688e0dde.js.map} +0 -0
- /package/dist/cli/{chunk-vxv4x1n8.js.map → chunk-88by27n5.js.map} +0 -0
- /package/dist/cli/{chunk-8gnpdsn1.js.map → chunk-9bkjd11x.js.map} +0 -0
- /package/dist/cli/{chunk-ye9zdkgv.js.map → chunk-exeeb35e.js.map} +0 -0
- /package/dist/cli/{chunk-n0nyat6g.js.map → chunk-jbj4qhfw.js.map} +0 -0
- /package/dist/cli/{chunk-ev67ycx0.js.map → chunk-jq5n4avg.js.map} +0 -0
- /package/dist/cli/{chunk-x66c5yjn.js.map → chunk-ppfvdcd4.js.map} +0 -0
- /package/dist/cli/{chunk-wd27zjcz.js.map → chunk-q4rae3bg.js.map} +0 -0
- /package/dist/cli/{chunk-pxj10x8y.js.map → chunk-ra1v2nc2.js.map} +0 -0
- /package/dist/cli/{chunk-j6pxe0dt.js.map → chunk-tqa1s0k8.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,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
absoluteUrl
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-88by27n5.js";
|
|
5
5
|
import {
|
|
6
6
|
resolveReferences
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-61j18dwk.js";
|
|
8
8
|
import {
|
|
9
9
|
normalizeBasePath,
|
|
10
10
|
withBasePath
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-2mzebbbz.js";
|
|
12
12
|
|
|
13
13
|
// src/ai/api/paths.ts
|
|
14
14
|
var OPENAPI_PATH = "/openapi.json";
|
|
@@ -66,4 +66,4 @@ var hasApiCatalog = (config) => linksetEntries(config).length > 0;
|
|
|
66
66
|
export { OPENAPI_PATH, API_PAGES_PATH, API_PAGE_PATH, API_NAVIGATION_PATH, API_SEARCH_PATH, pageJsonPath, API_CATALOG_PATH, API_CATALOG_TYPE, hasApiCatalog };
|
|
67
67
|
|
|
68
68
|
//# debugId=41C2FD41D67952F664756E2164756E21
|
|
69
|
-
//# sourceMappingURL=chunk-
|
|
69
|
+
//# sourceMappingURL=chunk-tqa1s0k8.js.map
|
|
@@ -1,28 +1,24 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
serverFeatures
|
|
4
|
-
} from "./chunk-n0nyat6g.js";
|
|
5
|
-
import {
|
|
6
|
-
reportInternalError
|
|
7
|
-
} from "./chunk-btfr9yvw.js";
|
|
8
2
|
import {
|
|
9
3
|
generateRuntime
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import {
|
|
12
|
-
loadEnvFiles
|
|
13
|
-
} from "./chunk-vt8fgygt.js";
|
|
14
|
-
import {
|
|
15
|
-
resolveAskBackend
|
|
16
|
-
} from "./chunk-agy5rzxy.js";
|
|
4
|
+
} from "./chunk-5n7t497w.js";
|
|
17
5
|
import {
|
|
18
6
|
scanProject
|
|
19
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-hdm2dkd2.js";
|
|
20
8
|
import {
|
|
9
|
+
loadEnvFiles,
|
|
10
|
+
reportInternalError,
|
|
21
11
|
BlumeError,
|
|
22
12
|
hasErrors,
|
|
23
13
|
logger,
|
|
24
14
|
reportDiagnostics
|
|
25
|
-
} from "./
|
|
15
|
+
} from "./index.js";
|
|
16
|
+
import {
|
|
17
|
+
resolveAskBackend
|
|
18
|
+
} from "./chunk-ejjx8znq.js";
|
|
19
|
+
import {
|
|
20
|
+
serverFeatures
|
|
21
|
+
} from "./chunk-jbj4qhfw.js";
|
|
26
22
|
|
|
27
23
|
// src/cli/required-secrets.ts
|
|
28
24
|
var checkRequiredSecrets = (config) => {
|
|
@@ -107,5 +103,5 @@ var prepareProject = async (options) => {
|
|
|
107
103
|
|
|
108
104
|
export { prepareProject };
|
|
109
105
|
|
|
110
|
-
//# debugId=
|
|
111
|
-
//# sourceMappingURL=chunk-
|
|
106
|
+
//# debugId=67E9473EC6A8F63864756E2164756E21
|
|
107
|
+
//# sourceMappingURL=chunk-vkrsvbr5.js.map
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"import { resolveAskBackend } from \"../ai/ask.ts\";\nimport type { ResolvedConfig } from \"../core/schema.ts\";\nimport type { Diagnostic } from \"../core/types.ts\";\n\n/**\n * Warn early when an enabled feature needs a secret env var that isn't set, so\n * the failure surfaces at `blume dev`/`build` instead of at the first request in\n * production. These are runtime secrets (the endpoint reads them on the server),\n * so this warns rather than hard-fails — the value may live only in the deploy\n * environment. Build-time secrets (search-index sync) already warn during sync.\n */\nexport const checkRequiredSecrets = (config: ResolvedConfig): Diagnostic[] => {\n const diagnostics: Diagnostic[] = [];\n const requireSecret = (feature: string, env: string, note?: string): void => {\n if (process.env[env]) {\n return;\n }\n const noteSuffix = note ? ` (${note})` : \"\";\n diagnostics.push({\n code: \"BLUME_MISSING_SECRET\",\n message: `${feature} is enabled but ${env} is not set${noteSuffix}.`,\n severity: \"warning\",\n suggestion: `Set ${env} in .env.local for local dev, or in your host's environment for production.`,\n });\n };\n\n if (config.ai.ask?.enabled && !config.ai.ask.endpoint) {\n const backend = resolveAskBackend(config.ai.ask);\n if (backend.kind === \"gateway\") {\n requireSecret(\n \"Ask AI (AI Gateway)\",\n \"AI_GATEWAY_API_KEY\",\n \"on Vercel the gateway can also authenticate via OIDC\"\n );\n } else {\n requireSecret(\"Ask AI\", backend.apiKeyEnv);\n }\n }\n\n if (config.search.provider === \"mixedbread\") {\n requireSecret(\"Mixedbread search\", \"MIXEDBREAD_API_KEY\");\n }\n\n return diagnostics;\n};\n",
|
|
6
6
|
"import { generateRuntime } from \"../astro/generate.ts\";\nimport { BlumeError, hasErrors } from \"../core/diagnostics.ts\";\nimport { scanProject } from \"../core/project-graph.ts\";\nimport type {\n BlumeProject,\n BuildMode,\n ConfigOverrides,\n} from \"../core/project-graph.ts\";\nimport { serverFeatures } from \"../core/server-features.ts\";\nimport { loadEnvFiles } from \"./env.ts\";\nimport { reportInternalError } from \"./internal-error.ts\";\nimport { logger, reportDiagnostics } from \"./log.ts\";\nimport { checkRequiredSecrets } from \"./required-secrets.ts\";\n\nexport interface PrepareOptions {\n root: string;\n mode?: BuildMode;\n strict?: boolean;\n /** Local dev server URL, used as the `deployment.site` fallback (dev only). */\n devServerUrl?: string;\n /** Render drafts and fetch unpublished CMS content. */\n preview?: boolean;\n /** Force remote sources to re-fetch instead of serving the cached snapshot. */\n refresh?: boolean;\n /** CLI config overrides (e.g. `--output`, `--content-dir`). */\n overrides?: ConfigOverrides;\n /** Relocate the generated runtime (e.g. `.blume-verify` for `--isolated`). */\n runtimeDir?: string;\n}\n\n/**\n * Scan the project, surface diagnostics, and (re)generate the `.blume` runtime.\n * In strict mode, any error aborts. Returns the resolved project.\n */\nexport const prepareProject = async (\n options: PrepareOptions\n): Promise<BlumeProject> => {\n // Load `.env` files from the project root before the scan: remote sources\n // read their tokens from `process.env` during `scanProject`, and\n // `loadEnvFiles` never overrides variables that are already set.\n loadEnvFiles(options.root);\n\n let project: BlumeProject;\n try {\n project = await scanProject(options.root, {\n devServerUrl: options.devServerUrl,\n mode: options.mode,\n overrides: options.overrides,\n preview: options.preview,\n refresh: options.refresh,\n runtimeDir: options.runtimeDir,\n });\n } catch (error) {\n if (error instanceof BlumeError) {\n reportDiagnostics([error.diagnostic], options.root);\n } else {\n reportInternalError(error);\n }\n process.exit(1);\n }\n\n // Hard gate: server-only features cannot ship in a static build.\n if (\n options.mode === \"build\" &&\n project.config.deployment.output === \"static\"\n ) {\n const features = serverFeatures(project.config);\n if (features.length > 0) {\n reportDiagnostics(\n [\n {\n code: \"BLUME_SERVER_FEATURE_REQUIRED\",\n message: `${features.join(\", \")} require server output, but deployment.output is \"static\".`,\n severity: \"error\",\n suggestion:\n 'Set deployment: { output: \"server\", adapter: \"vercel\" } in blume.config.ts.',\n },\n ],\n options.root\n );\n process.exit(1);\n }\n }\n\n const hadErrors = reportDiagnostics(project.diagnostics, options.root);\n const dropped =\n project.droppedPages > 0\n ? `${project.droppedPages} page(s) failed frontmatter validation and were dropped from the site. `\n : \"\";\n if (hadErrors && options.strict) {\n logger.error(\n `Aborting due to errors. ${dropped}Fix the diagnostics above, or pass --no-strict to continue despite them.`\n );\n process.exit(1);\n }\n if (hasErrors(project.diagnostics) && !options.strict) {\n logger.warn(\n `Continuing despite errors. ${dropped}Use --strict to fail instead.`\n );\n }\n\n const { warnings } = await generateRuntime(project);\n for (const warning of warnings) {\n logger.warn(warning);\n }\n\n // Fail-fast on missing runtime secrets: warn now, not at the first request.\n reportDiagnostics(checkRequiredSecrets(project.config), options.root);\n\n return project;\n};\n"
|
|
7
7
|
],
|
|
8
|
-
"mappings": "
|
|
9
|
-
"debugId": "
|
|
8
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAWO,IAAM,uBAAuB,CAAC,WAAyC;AAAA,EAC5E,MAAM,cAA4B,CAAC;AAAA,EACnC,MAAM,gBAAgB,CAAC,SAAiB,KAAa,SAAwB;AAAA,IAC3E,IAAI,QAAQ,IAAI,MAAM;AAAA,MACpB;AAAA,IACF;AAAA,IACA,MAAM,aAAa,OAAO,KAAK,UAAU;AAAA,IACzC,YAAY,KAAK;AAAA,MACf,MAAM;AAAA,MACN,SAAS,GAAG,0BAA0B,iBAAiB;AAAA,MACvD,UAAU;AAAA,MACV,YAAY,OAAO;AAAA,IACrB,CAAC;AAAA;AAAA,EAGH,IAAI,OAAO,GAAG,KAAK,WAAW,CAAC,OAAO,GAAG,IAAI,UAAU;AAAA,IACrD,MAAM,UAAU,kBAAkB,OAAO,GAAG,GAAG;AAAA,IAC/C,IAAI,QAAQ,SAAS,WAAW;AAAA,MAC9B,cACE,uBACA,sBACA,sDACF;AAAA,IACF,EAAO;AAAA,MACL,cAAc,UAAU,QAAQ,SAAS;AAAA;AAAA,EAE7C;AAAA,EAEA,IAAI,OAAO,OAAO,aAAa,cAAc;AAAA,IAC3C,cAAc,qBAAqB,oBAAoB;AAAA,EACzD;AAAA,EAEA,OAAO;AAAA;;;ACTF,IAAM,iBAAiB,OAC5B,YAC0B;AAAA,EAI1B,aAAa,QAAQ,IAAI;AAAA,EAEzB,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,UAAU,MAAM,YAAY,QAAQ,MAAM;AAAA,MACxC,cAAc,QAAQ;AAAA,MACtB,MAAM,QAAQ;AAAA,MACd,WAAW,QAAQ;AAAA,MACnB,SAAS,QAAQ;AAAA,MACjB,SAAS,QAAQ;AAAA,MACjB,YAAY,QAAQ;AAAA,IACtB,CAAC;AAAA,IACD,OAAO,OAAO;AAAA,IACd,IAAI,iBAAiB,YAAY;AAAA,MAC/B,kBAAkB,CAAC,MAAM,UAAU,GAAG,QAAQ,IAAI;AAAA,IACpD,EAAO;AAAA,MACL,oBAAoB,KAAK;AAAA;AAAA,IAE3B,QAAQ,KAAK,CAAC;AAAA;AAAA,EAIhB,IACE,QAAQ,SAAS,WACjB,QAAQ,OAAO,WAAW,WAAW,UACrC;AAAA,IACA,MAAM,WAAW,eAAe,QAAQ,MAAM;AAAA,IAC9C,IAAI,SAAS,SAAS,GAAG;AAAA,MACvB,kBACE;AAAA,QACE;AAAA,UACE,MAAM;AAAA,UACN,SAAS,GAAG,SAAS,KAAK,IAAI;AAAA,UAC9B,UAAU;AAAA,UACV,YACE;AAAA,QACJ;AAAA,MACF,GACA,QAAQ,IACV;AAAA,MACA,QAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF;AAAA,EAEA,MAAM,YAAY,kBAAkB,QAAQ,aAAa,QAAQ,IAAI;AAAA,EACrE,MAAM,UACJ,QAAQ,eAAe,IACnB,GAAG,QAAQ,wFACX;AAAA,EACN,IAAI,aAAa,QAAQ,QAAQ;AAAA,IAC/B,OAAO,MACL,2BAA2B,iFAC7B;AAAA,IACA,QAAQ,KAAK,CAAC;AAAA,EAChB;AAAA,EACA,IAAI,UAAU,QAAQ,WAAW,KAAK,CAAC,QAAQ,QAAQ;AAAA,IACrD,OAAO,KACL,8BAA8B,sCAChC;AAAA,EACF;AAAA,EAEA,QAAQ,aAAa,MAAM,gBAAgB,OAAO;AAAA,EAClD,WAAW,WAAW,UAAU;AAAA,IAC9B,OAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAGA,kBAAkB,qBAAqB,QAAQ,MAAM,GAAG,QAAQ,IAAI;AAAA,EAEpE,OAAO;AAAA;",
|
|
9
|
+
"debugId": "67E9473EC6A8F63864756E2164756E21",
|
|
10
10
|
"names": []
|
|
11
11
|
}
|
|
@@ -78,4 +78,4 @@ var customOgRoutes = (pages, siteTitle, titles = {}) => {
|
|
|
78
78
|
export { discoverPages, routeIsTaken, customStaticRoutes, hasGeneratedChangelog, customOgRoutes };
|
|
79
79
|
|
|
80
80
|
//# debugId=80BD00D65DB37D4C64756E2164756E21
|
|
81
|
-
//# sourceMappingURL=chunk-
|
|
81
|
+
//# sourceMappingURL=chunk-vrfp10qk.js.map
|
|
@@ -1,33 +1,34 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
frontmatter_default,
|
|
4
|
+
parseHeadingMarkers,
|
|
5
|
+
HTML_COMMENT,
|
|
6
|
+
contentIndexable,
|
|
7
|
+
specOf,
|
|
8
|
+
operationOf,
|
|
9
|
+
specAddresses,
|
|
10
|
+
operationSignature,
|
|
11
|
+
isOpenApiSource,
|
|
12
|
+
parseYouTubeId
|
|
13
|
+
} from "./chunk-hdm2dkd2.js";
|
|
2
14
|
import {
|
|
3
15
|
readExpandedEntryText,
|
|
4
16
|
rewriteRelativeImages
|
|
5
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-450a7rcr.js";
|
|
18
|
+
import {
|
|
19
|
+
siteRoot,
|
|
20
|
+
absoluteUrl
|
|
21
|
+
} from "./chunk-88by27n5.js";
|
|
6
22
|
import {
|
|
7
|
-
API_CATALOG_PATH,
|
|
8
|
-
API_PAGES_PATH,
|
|
9
23
|
OPENAPI_PATH,
|
|
24
|
+
API_PAGES_PATH,
|
|
25
|
+
API_CATALOG_PATH,
|
|
10
26
|
hasApiCatalog
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import {
|
|
13
|
-
absoluteUrl,
|
|
14
|
-
siteRoot
|
|
15
|
-
} from "./chunk-vxv4x1n8.js";
|
|
16
|
-
import {
|
|
17
|
-
HTML_COMMENT,
|
|
18
|
-
contentIndexable,
|
|
19
|
-
frontmatter_default,
|
|
20
|
-
isOpenApiSource,
|
|
21
|
-
operationOf,
|
|
22
|
-
operationSignature,
|
|
23
|
-
parseHeadingMarkers,
|
|
24
|
-
specAddresses,
|
|
25
|
-
specOf
|
|
26
|
-
} from "./chunk-s102bysw.js";
|
|
27
|
+
} from "./chunk-tqa1s0k8.js";
|
|
27
28
|
import {
|
|
28
29
|
normalizeBasePath,
|
|
29
30
|
withBasePath
|
|
30
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-2mzebbbz.js";
|
|
31
32
|
|
|
32
33
|
// src/ai/markdown.ts
|
|
33
34
|
import { readFile } from "node:fs/promises";
|
|
@@ -36,20 +37,6 @@ import { readFile } from "node:fs/promises";
|
|
|
36
37
|
import { markdownTable } from "markdown-table";
|
|
37
38
|
import { mdxToMdast } from "satteri";
|
|
38
39
|
|
|
39
|
-
// src/components/content/youtube.ts
|
|
40
|
-
var BARE_ID = /^[\w-]{11}$/u;
|
|
41
|
-
var URL_ID = /(?:youtu\.be\/|\/embed\/|\/shorts\/|\/live\/|[?&]v=)(?<id>[\w-]{11})/u;
|
|
42
|
-
var parseYouTubeId = (input) => {
|
|
43
|
-
const value = input.trim();
|
|
44
|
-
if (!value) {
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
if (BARE_ID.test(value)) {
|
|
48
|
-
return value;
|
|
49
|
-
}
|
|
50
|
-
return URL_ID.exec(value)?.groups?.id ?? null;
|
|
51
|
-
};
|
|
52
|
-
|
|
53
40
|
// src/markdown/features.ts
|
|
54
41
|
var MARKDOWN_FEATURES = {
|
|
55
42
|
subscript: true,
|
|
@@ -625,12 +612,12 @@ var buildLlmsIndex = (project, options = {}) => {
|
|
|
625
612
|
continue;
|
|
626
613
|
}
|
|
627
614
|
const rootPage = node.route ? byRoute.get(node.route) : undefined;
|
|
628
|
-
const
|
|
615
|
+
const blocks = renderLevel(node.children, depth + 1);
|
|
629
616
|
if (rootPage && !seen.has(rootPage.route)) {
|
|
630
|
-
|
|
617
|
+
blocks.unshift(line(rootPage));
|
|
631
618
|
}
|
|
632
|
-
if (
|
|
633
|
-
groupBlocks.push(`${"#".repeat(Math.min(depth, 6))} ${node.label}`, ...
|
|
619
|
+
if (blocks.length > 0) {
|
|
620
|
+
groupBlocks.push(`${"#".repeat(Math.min(depth, 6))} ${node.label}`, ...blocks);
|
|
634
621
|
}
|
|
635
622
|
}
|
|
636
623
|
return list.length > 0 ? [list.join(`
|
|
@@ -1058,5 +1045,5 @@ var buildMcpData = async (project) => {
|
|
|
1058
1045
|
|
|
1059
1046
|
export { buildRssFeeds, renderRssFeed, agentMarkdown, markdownTokenCount, buildRawMarkdown, markdownRoutePaths, buildSearchDocuments, buildMcpData };
|
|
1060
1047
|
|
|
1061
|
-
//# debugId=
|
|
1062
|
-
//# sourceMappingURL=chunk-
|
|
1048
|
+
//# debugId=C8F15B2ECD8107F364756E2164756E21
|
|
1049
|
+
//# sourceMappingURL=chunk-wjt80jps.js.map
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/ai/markdown.ts", "../src/ai/component-markdown.ts", "../src/
|
|
3
|
+
"sources": ["../src/ai/markdown.ts", "../src/ai/component-markdown.ts", "../src/markdown/features.ts", "../src/deploy/rss.ts", "../src/ai/openapi-components.ts", "../src/ai/serializers.ts", "../src/ai/skills.ts", "../src/ai/tar.ts", "../src/ai/visibility.ts", "../src/ai/llms.ts", "../src/search/documents.ts", "../src/markdown/fence-meta.ts", "../src/markdown/code-title.ts", "../src/search/facets.ts", "../src/ai/mcp/data.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import { readFile } from \"node:fs/promises\";\n\nimport { rewriteRelativeImages } from \"../core/content-assets.ts\";\nimport matter from \"../core/frontmatter.ts\";\nimport type { BlumeProject } from \"../core/project-graph.ts\";\nimport { readExpandedEntryText } from \"../core/sources/read.ts\";\nimport type { RouteManifestEntry } from \"../core/types.ts\";\nimport { downlevelComponents } from \"./component-markdown.ts\";\nimport { buildLlmsIndex } from \"./llms.ts\";\nimport { projectComponentSerializers } from \"./serializers.ts\";\nimport { applyAgentVisibility } from \"./visibility.ts\";\n\n/** One route's raw-Markdown variants. */\nexport interface RawMarkdownEntry {\n /**\n * The agent-facing Markdown served at `/<route>.md`: supported components\n * downleveled to plain Markdown (`<TypeTable>` → table, `<Callout>` →\n * blockquote, …). Present only when downleveling changed something, so\n * component-free pages aren't stored twice.\n */\n md?: string;\n /** The original source, served verbatim at `/<route>.mdx`. */\n mdx: string;\n}\n\n/** The Markdown an agent should read for a route. */\nexport const agentMarkdown = (entry: RawMarkdownEntry): string =>\n entry.md ?? entry.mdx;\n\n/**\n * Estimated token count of a Markdown document, for the `x-markdown-tokens`\n * response header (the convention Cloudflare's Markdown for Agents ships; the\n * tokenizer is unspecified there too, so this is the common ~4-characters-\n * per-token estimate). Kept in sync with the inline computation in\n * `rawMarkdownEndpointTemplate`, which can't import build-time code.\n */\nexport const markdownTokenCount = (text: string): number =>\n Math.ceil(text.length / 4);\n\n/**\n * Map every route to its raw source Markdown. Powers the `<route>.md` and\n * `<route>.mdx` endpoints: `.mdx` serves the original source so tools can see\n * exactly what the author wrote, while `.md` downlevels supported components\n * to plain Markdown for consumers that can't interpret JSX. `<Visibility>`\n * audiences are resolved for agents in both variants: web-only content is\n * removed, agents-only unwrapped. Relative image references are rewritten to\n * their served `/blume-assets/content/…` URLs in both variants too — an agent\n * fetches these endpoints by URL, where a colocated `./diagram.png` resolves\n * to nothing.\n */\nexport const buildRawMarkdown = async (\n project: BlumeProject\n): Promise<Record<string, RawMarkdownEntry>> => {\n const pageById = new Map(project.graph.pages.map((page) => [page.id, page]));\n\n const components = projectComponentSerializers(project);\n\n const readRoute = async (route: RouteManifestEntry): Promise<string> => {\n const page = pageById.get(route.id);\n if (page) {\n return await readExpandedEntryText(project, page);\n }\n return route.sourcePath ? await readFile(route.sourcePath, \"utf-8\") : \"\";\n };\n\n const entries = await Promise.all(\n project.manifest.routes.map(async (route) => {\n let text = await readRoute(route);\n if (route.sourcePath) {\n text = rewriteRelativeImages({\n deployBase: project.config.deployment.base,\n projectRoot: project.context.root,\n source: text,\n sourcePath: route.sourcePath,\n });\n }\n const source = applyAgentVisibility(text);\n // The `.md` variant keeps the front-matter block in the output, but its\n // data must also be in scope for `prop={frontmatter.*}` expressions.\n const md = downlevelComponents(source, components, matter(source).data);\n const entry: RawMarkdownEntry =\n md === source ? { mdx: source } : { md, mdx: source };\n return [route.path, entry] as const;\n })\n );\n const map = Object.fromEntries(entries);\n // A landing-page homepage (user `.astro` page, or no home route at all) has\n // no Markdown source, but agents negotiating `Accept: text/markdown` on `/`\n // still expect a Markdown answer. The llms.txt index — the machine-readable\n // representation of the site a landing page fronts — becomes its mirror, so\n // `/index.md` always exists (see `markdownRoutePaths`).\n if (!map[\"/\"]) {\n map[\"/\"] = { mdx: buildLlmsIndex(project) };\n }\n return map;\n};\n\n/**\n * Every route path with a raw-Markdown mirror: the manifest routes, plus the\n * homepage when its mirror is the synthesized llms.txt fallback (see\n * `buildRawMarkdown`). This is the route list the negotiation surfaces (dev\n * middleware, Vercel routing config) and the homepage `Link` header build\n * from, so `Accept: text/markdown` on `/` resolves even when the homepage is\n * a landing page.\n */\nexport const markdownRoutePaths = (project: BlumeProject): string[] => {\n const paths = project.manifest.routes.map((route) => route.path);\n return paths.includes(\"/\") ? paths : [...paths, \"/\"];\n};\n",
|
|
6
6
|
"import { markdownTable } from \"markdown-table\";\nimport { mdxToMdast } from \"satteri\";\n\nimport { parseYouTubeId } from \"../components/content/youtube.ts\";\nimport type { ExampleLookup } from \"../core/types.ts\";\nimport { MDX_FEATURES } from \"../markdown/features.ts\";\n\n/**\n * Downlevel Blume's MDX components to plain Markdown for agent-facing output\n * (the `/<route>.md` mirror, llms-full.txt, MCP `get_page`). Each supported\n * component has a serializer — its \"toString\" — that renders the same\n * information as the Astro component, but as portable Markdown: `<TypeTable>`\n * becomes a GFM table, `<Callout>` a blockquote, `<Steps>` an ordered list,\n * `<Tabs>` labeled sections, `<YouTube>` a link.\n *\n * The transform is a position splice, not a re-stringify: the MDX source is\n * parsed to MDAST (via Satteri, which stamps byte offsets on every node) and\n * only the matched component ranges are replaced, so all surrounding Markdown\n * stays byte-identical to what the author wrote. Anything the serializers\n * can't faithfully convert — an unknown component, a prop bound to an import —\n * is left as JSX, and fenced code that merely *shows* component markup is\n * naturally untouched because it parses as a `code` node.\n */\n\n/** Minimal structural MDAST types — we model only what this module reads. */\ninterface Offset {\n offset: number;\n}\n\n/** The structural slice of an mdast node the downlevel walk reads. */\nexport interface MdastNode {\n attributes?: MdxAttribute[];\n children?: MdastNode[];\n name?: string;\n position?: { end: Offset; start: Offset };\n type: string;\n}\n\ninterface MdxAttribute {\n name?: string;\n type: string;\n value?: string | { type: string; value: string } | null;\n}\n\n/** A single source replacement: `[start, end)` byte range → `text`. */\ninterface Splice {\n end: number;\n start: number;\n text: string;\n}\n\n/**\n * A statically-recovered data value. Parsed front matter and evaluated\n * attribute literals are both plain data — scalars, dates, arrays, and\n * nested maps — never functions or class instances.\n */\nexport type EvaluatedValue =\n | string\n | number\n | boolean\n | null\n | undefined\n | Date\n | EvaluatedValue[]\n | { [key: string]: EvaluatedValue };\n\nexport const isString = <Value>(value: Value): value is Value & string =>\n typeof value === \"string\";\n\nconst isNumber = <Value>(value: Value): value is Value & number =>\n typeof value === \"number\";\n\n/** Evaluated props plus whether any attribute resisted static evaluation. */\ninterface EvaluatedProps {\n lossy: boolean;\n props: Record<string, EvaluatedValue>;\n}\n\n/** A child component extracted by name (e.g. each `<Step>` under `<Steps>`). */\nexport interface ComponentMarkdownChild extends EvaluatedProps {\n /** The child's body, downleveled and dedented. */\n children: string;\n}\n\n/** One direct child of a component — a child component or prose — as Markdown. */\nexport interface ComponentMarkdownBlock {\n /**\n * The child downleveled: a serializable component's rendering (through the\n * registry, so a user override of that component applies), or — for prose,\n * a component with no serializer, or one that declined — its source with\n * any serializable descendants downleveled in place.\n */\n markdown: string;\n /** The JSX name of a child component; `undefined` for prose. */\n name?: string;\n}\n\n/** What a serializer receives for one component usage. */\nexport interface ComponentMarkdownContext extends EvaluatedProps {\n /**\n * Every direct child of the element in document order, components and\n * prose alike, each as a block of Markdown. For a container that is nothing\n * but its contents — `<CardGroup>` — joining these with blank lines is the\n * whole serializer.\n */\n childBlocks: () => ComponentMarkdownBlock[];\n /** Direct child components of `name`, each with evaluated props and body. */\n childComponents: (name: string) => ComponentMarkdownChild[];\n /** The element's body, downleveled and dedented (empty if self-closing). */\n children: string;\n /**\n * The page's parsed front-matter (empty when the caller has none). Lets a\n * serializer read page metadata directly, even when a prop expression is\n * not statically evaluable.\n */\n frontmatter: Record<string, EvaluatedValue>;\n}\n\n/**\n * A component's Markdown serializer. Return the replacement Markdown, or\n * `null` to leave the component's JSX in the output verbatim (the safe\n * fallback when the props can't be recovered statically).\n */\nexport type ComponentMarkdown = (\n context: ComponentMarkdownContext\n) => string | null;\n\n/**\n * Statically evaluate an MDX attribute expression (`prop={...}`). Component\n * data props are object/array/number literals in practice; evaluation runs at\n * build time over the author's own content — the same trust level as the MDX\n * itself, which Astro compiles and executes. The page's `frontmatter` is in\n * scope, mirroring what Astro provides an MDX body at render time, so\n * `prop={frontmatter.status}` resolves; expressions that reference imports or\n * other scope throw and report as not evaluable.\n */\nconst evaluateExpression = (\n raw: string,\n frontmatter: Record<string, EvaluatedValue> | undefined\n) => {\n try {\n // Build-time eval of the author's own attribute literals; a throw falls\n // back to leaving the JSX verbatim.\n // oxlint-disable-next-line no-new-func\n const value: EvaluatedValue = new Function(\n \"frontmatter\",\n `\"use strict\"; return (${raw});`\n )(frontmatter);\n return { ok: true, value };\n } catch {\n return { ok: false, value: undefined };\n }\n};\n\n/** Evaluate an element's attributes into a plain props object. */\nconst readProps = (\n node: MdastNode,\n frontmatter: Record<string, EvaluatedValue> | undefined\n): EvaluatedProps => {\n const props: Record<string, EvaluatedValue> = {};\n let lossy = false;\n for (const attribute of node.attributes ?? []) {\n // A spread ({...props}) can't be recovered statically.\n if (attribute.type !== \"mdxJsxAttribute\" || !attribute.name) {\n lossy = true;\n continue;\n }\n if (attribute.value === null || attribute.value === undefined) {\n // Boolean shorthand: `<Steps compact>`.\n props[attribute.name] = true;\n } else if (isString(attribute.value)) {\n props[attribute.name] = attribute.value;\n } else {\n const result = evaluateExpression(attribute.value.value, frontmatter);\n if (result.ok) {\n props[attribute.name] = result.value;\n } else {\n lossy = true;\n }\n }\n }\n return { lossy, props };\n};\n\n/** A node Satteri stamped with byte offsets. */\ntype Positioned = MdastNode & { position: { end: Offset; start: Offset } };\n\nconst hasOffsets = (node: MdastNode): node is Positioned =>\n typeof node.position?.start?.offset === \"number\" &&\n typeof node.position?.end?.offset === \"number\";\n\n/** Apply non-overlapping splices to `text` (offsets relative to `text`). */\nconst applySplices = (text: string, splices: Splice[]): string => {\n let result = text;\n for (const splice of [...splices].toSorted((a, b) => b.start - a.start)) {\n // An element indented under a parent starts mid-line after whitespace;\n // repeat that indent on the replacement's continuation lines so the block\n // stays uniformly indented (and dedents cleanly with its siblings).\n const lineStart = result.lastIndexOf(\"\\n\", splice.start - 1) + 1;\n const prefix = result.slice(lineStart, splice.start);\n const indent = /^[\\t ]+$/u.test(prefix) ? prefix : \"\";\n const replacement = indent\n ? splice.text\n .split(\"\\n\")\n .map((line, index) =>\n index === 0 || line === \"\" ? line : `${indent}${line}`\n )\n .join(\"\\n\")\n : splice.text;\n result =\n result.slice(0, splice.start) + replacement + result.slice(splice.end);\n }\n return result;\n};\n\n/**\n * Strip the common indentation JSX children carry in source (`<Step>` bodies\n * are typically indented two spaces under their tag). The first line starts\n * mid-line at the slice boundary, so the common prefix is measured on the\n * following lines only.\n */\nconst dedent = (text: string): string => {\n const lines = text.split(\"\\n\");\n const rest = lines.slice(1).filter((line) => line.trim() !== \"\");\n if (rest.length === 0) {\n return text;\n }\n const indent = Math.min(\n ...rest.map((line) => line.length - line.trimStart().length)\n );\n if (indent === 0) {\n return text;\n }\n return [\n lines[0],\n ...lines\n .slice(1)\n .map((line) => (line.trim() === \"\" ? \"\" : line.slice(indent))),\n ].join(\"\\n\");\n};\n\nconst isJsxElement = (node: MdastNode): boolean =>\n node.type === \"mdxJsxFlowElement\" || node.type === \"mdxJsxTextElement\";\n\n/** Flatten a value to a single Markdown table cell (pipes escaped). */\nconst cellText = (value: EvaluatedValue): string =>\n String(value ?? \"\")\n .replaceAll(/\\s*\\n\\s*/gu, \" \")\n .replaceAll(\"|\", \"\\\\|\")\n .trim();\n\n/** A cell rendered as inline code, unless the value itself uses backticks. */\nconst cellCode = (value: EvaluatedValue): string => {\n const text = cellText(value);\n return text && !text.includes(\"`\") ? `\\`${text}\\`` : text;\n};\n\n/**\n * One `<TypeTable type={{...}}>` entry, matching the component's props. The\n * index signature keeps the interface interchangeable with the evaluated\n * data-value maps it is narrowed from.\n */\ninterface TypeEntry {\n [field: string]: EvaluatedValue;\n default?: EvaluatedValue;\n description?: EvaluatedValue;\n required?: EvaluatedValue;\n type?: EvaluatedValue;\n typeDescription?: EvaluatedValue;\n typeDescriptionLink?: EvaluatedValue;\n}\n\n/**\n * The `type` data prop's entry map. Structural only: each entry's fields are\n * rendered through cellText/cellCode, which stringify any value.\n */\nconst isTypeEntryMap = (\n value: EvaluatedValue\n): value is Record<string, TypeEntry> =>\n typeof value === \"object\" && value !== null;\n\nconst typeTable: ComponentMarkdown = ({ children, props }) => {\n const { type } = props;\n if (!isTypeEntryMap(type)) {\n // The data prop is missing or wasn't statically evaluable.\n return null;\n }\n const entries = Object.entries(type);\n const rows = entries.map(([name, info]) => {\n const prop = cellCode(`${name}${info.required ? \"\" : \"?\"}`);\n const typeCell = info.typeDescriptionLink\n ? `[${cellCode(info.type)}](${cellText(info.typeDescriptionLink)})`\n : cellCode(info.type);\n const defaultCell =\n info.default === undefined ? \"-\" : cellCode(info.default);\n const description = cellText(\n [info.description, info.typeDescription]\n .filter((part) => isString(part) && part !== \"\")\n .join(\" \")\n );\n return [prop, typeCell, defaultCell, description];\n });\n const table =\n rows.length > 0\n ? markdownTable([[\"Prop\", \"Type\", \"Default\", \"Description\"], ...rows], {\n // Unpadded columns: cells hold prose and the output is for model\n // consumption, so aligned delimiter rows are wasted tokens.\n alignDelimiters: false,\n })\n : \"\";\n // The component renders its slot after the table.\n return [table, children].filter(Boolean).join(\"\\n\\n\");\n};\n\nconst callout: ComponentMarkdown = ({ children, props }) => {\n const type = isString(props.type) ? props.type : \"info\";\n const label =\n isString(props.title) && props.title !== \"\"\n ? props.title\n : type.charAt(0).toUpperCase() + type.slice(1);\n if (!children) {\n return `> **${label}**`;\n }\n const body = children\n .split(\"\\n\")\n .map((line) => (line.trim() === \"\" ? \">\" : `> ${line}`))\n .join(\"\\n\");\n return `> **${label}**\\n>\\n${body}`;\n};\n\n/** Format `content` as one ordered-list item, continuation lines indented. */\nconst listItem = (index: number, content: string): string => {\n const marker = `${index}. `;\n return content\n .split(\"\\n\")\n .map((line, lineIndex) => {\n if (lineIndex === 0) {\n return `${marker}${line}`;\n }\n return line === \"\" ? \"\" : ` ${line}`;\n })\n .join(\"\\n\");\n};\n\nconst steps: ComponentMarkdown = ({ childComponents, children }) => {\n const items = childComponents(\"Step\");\n if (items.length === 0) {\n return children;\n }\n return items\n .map((step, index) => {\n const title =\n isString(step.props.title) && step.props.title !== \"\"\n ? `**${step.props.title}**`\n : \"\";\n const content = [title, step.children].filter(Boolean).join(\"\\n\\n\");\n return listItem(index + 1, content);\n })\n .join(\"\\n\\n\");\n};\n\nconst tabs: ComponentMarkdown = ({ childComponents, children }) => {\n const items = childComponents(\"Tab\");\n if (items.length === 0) {\n return children;\n }\n return items\n .map((tab, index) => {\n const title =\n isString(tab.props.title) && tab.props.title !== \"\"\n ? tab.props.title\n : `Tab ${index + 1}`;\n return tab.children ? `**${title}**\\n\\n${tab.children}` : `**${title}**`;\n })\n .join(\"\\n\\n\");\n};\n\n/** Escape the brackets that would end a link's text early. */\nconst linkText = (value: string): string =>\n value.replaceAll(/[[\\]]/gu, String.raw`\\$&`);\n\n/**\n * A link destination. Whitespace ends one, and a `)` ends one unless it is\n * part of a balanced pair — so an href carrying either goes in the angle\n * bracket form, where only `<` and `>` are special.\n */\nexport const linkDestination = (href: string): string =>\n /[\\s()<>]/u.test(href)\n ? `<${href.replaceAll(/[<>]/gu, String.raw`\\$&`)}>`\n : href;\n\n/** A text prop: a string, or a number stringified — `title={2024}` is a title. */\nconst textProp = (value: EvaluatedValue): string => {\n if (isString(value)) {\n return value.trim();\n }\n return isNumber(value) ? String(value) : \"\";\n};\n\n/**\n * A card is a link with a blurb, so that is what it becomes: the title as the\n * link text, the body under it, and the call to action last — the order the\n * card renders in. Shaped like {@link tabs}, a bold label over the body,\n * rather than a heading: a card sits inside a page whose outline its author\n * wrote, and a heading would add a level to it.\n *\n * The icon and image are presentation and drop out. A card with no title\n * falls back to its `href`, and one with neither is just its body. `lossy`\n * declines: a title or href recovered from an expression that would not\n * evaluate is a link pointing somewhere wrong, which is worse than the\n * visible JSX.\n */\nconst card: ComponentMarkdown = ({ children, lossy, props }) => {\n if (lossy) {\n return null;\n }\n const title = textProp(props.title);\n const href = isString(props.href) ? props.href.trim() : \"\";\n const body = children.trim();\n const cta = textProp(props.cta);\n const label = title || href;\n if (label === \"\") {\n // Nothing to head the card with, so it is whatever text it carries.\n const rest = [body, cta].filter(Boolean).join(\"\\n\\n\");\n // Nothing but presentation left — keep the JSX rather than delete a card.\n return rest === \"\" ? null : rest;\n }\n const head =\n href === \"\"\n ? `**${label}**`\n : `**[${linkText(label)}](${linkDestination(href)})**`;\n return [head, body, cta].filter(Boolean).join(\"\\n\\n\");\n};\n\n/**\n * `CardGroup` is the grid its cards sit in and carries no meaning of its own,\n * so it becomes its contents: every direct child in order, each a block, a\n * blank line between them. Built on `childBlocks` rather than extracting the\n * cards so nothing the group holds is lost — a `Card` renders through the\n * registry (a user override of `Card` applies in here too), a nested group\n * recurses, prose between the cards stays, and a card that declines keeps its\n * JSX as a block of its own instead of vanishing beside a rendered sibling.\n * Passing the body slice through instead would leave each card's source\n * indentation in the output and run one card's title straight on from the\n * previous card's body as the same paragraph.\n */\nconst cardGroup: ComponentMarkdown = ({ childBlocks }) =>\n childBlocks()\n .map((block) => block.markdown)\n .join(\"\\n\\n\");\n\nconst youtube: ComponentMarkdown = ({ props }) => {\n let input = \"\";\n if (isString(props.id)) {\n input = props.id;\n } else if (isString(props.url)) {\n input = props.url;\n }\n const videoId = parseYouTubeId(input);\n if (!videoId) {\n return null;\n }\n const start =\n isNumber(props.start) && props.start > 0\n ? `&t=${Math.floor(props.start)}s`\n : \"\";\n const title =\n isString(props.title) && props.title !== \"\"\n ? props.title\n : \"Watch on YouTube\";\n return `[${title}](https://www.youtube.com/watch?v=${videoId}${start})`;\n};\n\n/**\n * `text` as an inline code span whose delimiter outlengths any backtick run\n * inside it, padded with a space when the content starts or ends with a\n * backtick (CommonMark strips one such pair) — so a spec path or address\n * carrying a backtick cannot close the span early.\n */\nexport const inlineCode = (text: string): string => {\n const runs = text.match(/`+/gu);\n const longest = runs ? Math.max(...runs.map((run) => run.length)) : 0;\n const delimiter = \"`\".repeat(longest + 1);\n const padded =\n text.startsWith(\"`\") || text.endsWith(\"`\") ? ` ${text} ` : text;\n return `${delimiter}${padded}${delimiter}`;\n};\n\n/** Fence `code` so its opening/closing run outlengths any backticks inside. */\nconst fencedBlock = (lang: string, code: string): string => {\n const trimmed = code.replace(/(?<!\\n)\\n+$/u, \"\");\n const runs = trimmed.match(/`+/gu);\n const longest = runs ? Math.max(...runs.map((run) => run.length)) : 0;\n const fence = \"`\".repeat(Math.max(3, longest + 1));\n return `${fence}${lang}\\n${trimmed}\\n${fence}`;\n};\n\n/**\n * Build the `<Component>` serializer for a project's discovered examples. The\n * live preview can't survive the trip to Markdown, so the agent-facing output\n * carries the example's source — the same code the \"Code\" tab shows — as a\n * fenced block. An unknown `path` (or a missing `path` prop) declines, leaving\n * the JSX verbatim, mirroring the \"no example found\" note the component renders\n * on the page.\n */\nexport const exampleComponentSerializers = (examples: ExampleLookup) =>\n ({\n Component: ({ props }) => {\n const path = isString(props.path) ? props.path : undefined;\n const example = path === undefined ? undefined : examples[path];\n return example ? fencedBlock(example.lang, example.source) : null;\n },\n }) satisfies Record<string, ComponentMarkdown>;\n\n/**\n * The built-in serializer registry, keyed by JSX name. `Step` and `Tab` are\n * intentionally absent: they only carry meaning inside their containers,\n * which extract them via `childComponents`; a stray one stays verbatim.\n */\nconst SERIALIZERS = {\n Callout: callout,\n Card: card,\n CardGroup: cardGroup,\n Steps: steps,\n Tabs: tabs,\n TypeTable: typeTable,\n YouTube: youtube,\n} satisfies Record<string, ComponentMarkdown>;\n\nconst escapeRegExp = (value: string): string =>\n value.replaceAll(/[$()*+.?[\\\\\\]^{|}]/gu, String.raw`\\$&`);\n\n// Skip the MDX parse when no serializable component name appears at all —\n// the common case for prose pages, and it keeps plain-Markdown sources (where\n// `<`/`{` may be literal text MDX would reject) out of the parser entirely.\nconst componentHint = (registry: Record<string, ComponentMarkdown>): RegExp =>\n new RegExp(\n `<(?:${Object.keys(registry).map(escapeRegExp).join(\"|\")})[\\\\s/>]`,\n \"u\"\n );\n\nconst BUILT_IN_HINT = componentHint(SERIALIZERS);\n\n/** One downlevel pass's inputs: the source, registry, and page metadata. */\n/** What a downlevel walk needs: the serializers, the page's front matter, and the source its nodes were parsed from. */\nexport interface DownlevelWalk {\n frontmatter: Record<string, EvaluatedValue> | undefined;\n registry: Record<string, ComponentMarkdown>;\n source: string;\n}\ntype Walk = DownlevelWalk;\n\n/** The serializer registry for a site: built-ins under a user's `ai.markdownComponents`. */\nexport const componentRegistry = (\n components?: Record<string, ComponentMarkdown>\n): Record<string, ComponentMarkdown> =>\n components && Object.keys(components).length > 0\n ? { ...SERIALIZERS, ...components }\n : SERIALIZERS;\n\n/**\n * A source slice as Markdown: the verbatim `[start, end)` range with any\n * serializable component under `nodes` downleveled in place, dedented and\n * trimmed. Mutually recursive with {@link collectSplices} (the nodes may hold\n * further serializable components), hence the forward reference.\n */\nconst renderSlice = (\n walk: Walk,\n start: number,\n end: number,\n nodes: MdastNode[]\n): string => {\n const splices: Splice[] = [];\n // oxlint-disable-next-line no-use-before-define\n collectSplices(walk, nodes, splices);\n const spliced = applySplices(\n walk.source.slice(start, end),\n splices.map((splice) => ({\n ...splice,\n end: splice.end - start,\n start: splice.start - start,\n }))\n );\n return dedent(spliced).trim();\n};\n\n/** The element's body as Markdown: the slice covering all of its children. */\nconst renderChildren = (walk: Walk, node: MdastNode): string => {\n const children = (node.children ?? []).filter(hasOffsets);\n const [first] = children;\n if (!first) {\n return \"\";\n }\n const start = first.position.start.offset;\n return renderSlice(\n walk,\n start,\n children.at(-1)?.position.end.offset ?? start,\n children\n );\n};\n\n/**\n * One direct child as a block of Markdown: a registered component's own\n * rendering, else — prose, an unknown component, or one that declined — its\n * source slice, the same choice {@link collectSplices} makes at the top level.\n */\nconst renderBlock = (walk: Walk, node: Positioned): string => {\n const serializer =\n isJsxElement(node) && node.name ? walk.registry[node.name] : undefined;\n const text = serializer\n ? // oxlint-disable-next-line no-use-before-define\n serializeElement(serializer, walk, node)\n : null;\n return (\n text ??\n renderSlice(\n walk,\n node.position.start.offset,\n node.position.end.offset,\n node.children ?? []\n )\n );\n};\n\n/** Serialize one component usage, or `null` to keep its JSX verbatim. */\nconst serializeElement = (\n serializer: ComponentMarkdown,\n walk: Walk,\n node: MdastNode\n): string | null =>\n serializer({\n ...readProps(node, walk.frontmatter),\n childBlocks: () =>\n (node.children ?? []).filter(hasOffsets).map((child) => ({\n markdown: renderBlock(walk, child),\n name: isJsxElement(child) ? child.name : undefined,\n })),\n childComponents: (name) =>\n (node.children ?? [])\n .filter((child) => isJsxElement(child) && child.name === name)\n .map((child) => ({\n ...readProps(child, walk.frontmatter),\n children: renderChildren(walk, child),\n })),\n children: renderChildren(walk, node),\n frontmatter: walk.frontmatter ?? {},\n });\n\n/**\n * Walk the tree collecting replacements. A replaced element's subtree is\n * owned by its serializer (which downlevels its own children), so the walk\n * doesn't descend into it; when a serializer declines, the walk continues\n * inside so nested serializable components still convert.\n */\n/**\n * Downlevel one parsed component to the Markdown its serializer emits, or\n * `null` when the node isn't a component, has no serializer, or its\n * serializer declines. `walk.source` must be the text `node` was parsed from.\n */\nexport const downlevelComponentNode = (\n node: MdastNode,\n walk: DownlevelWalk\n): string | null => {\n const serializer =\n node.type === \"mdxJsxFlowElement\" && node.name\n ? walk.registry[node.name]\n : undefined;\n return serializer && hasOffsets(node)\n ? serializeElement(serializer, walk, node)\n : null;\n};\n\nconst collectSplices = (\n walk: Walk,\n nodes: MdastNode[],\n out: Splice[]\n): void => {\n for (const node of nodes) {\n const text = hasOffsets(node) ? downlevelComponentNode(node, walk) : null;\n if (text !== null && hasOffsets(node)) {\n out.push({\n end: node.position.end.offset,\n start: node.position.start.offset,\n text,\n });\n continue;\n }\n collectSplices(walk, node.children ?? [], out);\n }\n};\n\n/**\n * Downlevel supported components in an MDX source to plain Markdown. Sources\n * with no supported components — and sources Satteri can't parse as MDX, e.g.\n * plain `.md` with literal `<`/`{` — are returned byte-identical.\n *\n * `components` adds user serializers from `ai.markdownComponents`, layered\n * over the built-ins: a same-name entry replaces the built-in serializer, and\n * one that always returns `null` effectively opts that component out.\n *\n * `frontmatter` is the page's parsed front-matter data. It is put in scope\n * when evaluating attribute expressions — so `prop={frontmatter.status}`\n * resolves the way it does when Astro renders the page — and handed to\n * serializers on their context.\n */\nexport const downlevelComponents = (\n source: string,\n components?: Record<string, ComponentMarkdown>,\n frontmatter?: Record<string, EvaluatedValue>\n): string => {\n const registry = componentRegistry(components);\n const hint =\n registry === SERIALIZERS ? BUILT_IN_HINT : componentHint(registry);\n if (!hint.test(source)) {\n return source;\n }\n let tree: MdastNode;\n try {\n // SAFETY: MdastNode is a structural subset of Satteri's mdast output —\n // every node carries `type`, and the walk reads only optional fields.\n tree = mdxToMdast(source, { features: MDX_FEATURES }) as MdastNode;\n } catch {\n return source;\n }\n const splices: Splice[] = [];\n collectSplices(\n { frontmatter, registry, source },\n tree.children ?? [],\n splices\n );\n return splices.length > 0 ? applySplices(source, splices) : source;\n};\n",
|
|
7
|
-
"/**\n * Helpers for the `<YouTube>` content component. Kept in a sibling `.ts` (like\n * `diff.ts`/`github-info.ts`) so the id parsing and embed-URL building are pure,\n * unit-testable functions — the `.astro` file stays a thin presentational shell.\n */\n\n// A YouTube video id is 11 characters of [A-Za-z0-9_-].\nconst BARE_ID = /^[\\w-]{11}$/u;\n\n// Pull the id out of any common YouTube URL: youtu.be/<id>, watch?v=<id>,\n// /embed/<id>, /shorts/<id>, /live/<id>.\nconst URL_ID =\n /(?:youtu\\.be\\/|\\/embed\\/|\\/shorts\\/|\\/live\\/|[?&]v=)(?<id>[\\w-]{11})/u;\n\n/**\n * Resolve a YouTube video id from either a bare id or a full URL. Returns `null`\n * when nothing that looks like an id can be found, so the component can render\n * nothing rather than a broken embed.\n */\nexport const parseYouTubeId = (input: string): string | null => {\n const value = input.trim();\n if (!value) {\n return null;\n }\n if (BARE_ID.test(value)) {\n return value;\n }\n return URL_ID.exec(value)?.groups?.id ?? null;\n};\n\n/**\n * Build a privacy-enhanced (`youtube-nocookie.com`) embed URL, optionally\n * starting at `start` seconds.\n */\nexport const youtubeEmbedUrl = (\n id: string,\n options: { start?: number } = {}\n): string => {\n const base = `https://www.youtube-nocookie.com/embed/${id}`;\n const { start } = options;\n if (start && start > 0) {\n const params = new URLSearchParams({ start: String(Math.floor(start)) });\n return `${base}?${params.toString()}`;\n }\n return base;\n};\n",
|
|
8
7
|
"import type { Features } from \"satteri\";\n\n/**\n * Sätteri's feature set for plain `.md` pages. Shared by the renderer and the\n * search extractor so the index reads the same grammar the page renders.\n */\nexport const MARKDOWN_FEATURES = {\n subscript: true,\n superscript: true,\n} satisfies Features;\n\n/**\n * The `.mdx` feature set: Markdown's plus `:::` directives (→ `<Callout>`) and\n * block-only math — `singleDollarTextMath: false` keeps a bare `$` (currency,\n * shell, code) as literal text and only parses `$$…$$`.\n */\nexport const MDX_FEATURES = {\n ...MARKDOWN_FEATURES,\n directive: true,\n math: { singleDollarTextMath: false },\n} satisfies Features;\n",
|
|
9
8
|
"// html-escaper's five-entity table is XML-safe: `'` becomes the numeric\n// `'` reference rather than `'`, which XML accepts equally.\nimport { escape as escapeXml } from \"html-escaper\";\n\nimport { normalizeBasePath, withBasePath } from \"../core/base-path.ts\";\nimport type { BlumeProject } from \"../core/project-graph.ts\";\nimport { siteRoot } from \"../core/site-url.ts\";\nimport type { PageRecord } from \"../core/types.ts\";\n\n/** A single feed entry derived from a content page. */\nexport interface RssItem {\n title: string;\n /** Absolute item URL. */\n link: string;\n description?: string;\n /** Publish date, when the page declares one. */\n date?: Date;\n}\n\n/** A resolved RSS feed for one content type. */\nexport interface RssFeed {\n /** Content type the feed covers, e.g. `blog`. */\n type: string;\n /** Feed URL path, e.g. `/blog/rss.xml`. */\n path: string;\n /** Channel title, e.g. `Blume — Blog`. */\n title: string;\n /** Absolute site link. */\n link: string;\n description?: string;\n items: RssItem[];\n}\n\nconst capitalize = (value: string): string =>\n value.charAt(0).toUpperCase() + value.slice(1);\n\n/** Publish date for a page: top-level `date`, else `changelog.date`. */\nconst pageDate = (page: PageRecord): Date | undefined => {\n const raw = page.meta.date ?? page.meta.changelog?.date;\n if (!raw) {\n return;\n }\n const date = new Date(raw);\n return Number.isNaN(date.getTime()) ? undefined : date;\n};\n\n/**\n * Build an RSS feed per configured content type that has publishable pages.\n * Returns an empty list when RSS is disabled or no `deployment.site` is set —\n * absolute URLs are required for a valid feed, mirroring `buildSitemap`.\n */\nexport const buildRssFeeds = (project: BlumeProject): RssFeed[] => {\n const { config } = project;\n const { rss } = config.seo;\n const { site } = config.deployment;\n if (!(rss.enabled && site)) {\n return [];\n }\n const base = siteRoot(site);\n // Routes carry `basePath`; a `deployment.base` subdirectory is layered on top.\n // The feed's own `link`/self URL points at the docs root under that base, while\n // `path` stays base-less (it's also the on-disk output location).\n const deployBase = normalizeBasePath(config.deployment.base);\n const rootLink = `${base}${deployBase}`;\n\n const feeds: RssFeed[] = [];\n for (const type of rss.types) {\n const pages = project.graph.pages.filter(\n (page) =>\n page.contentType === type &&\n !(page.meta.draft || page.meta.sidebar.hidden)\n );\n if (pages.length === 0) {\n continue;\n }\n\n const items: RssItem[] = pages\n .map((page) => ({\n date: pageDate(page),\n description: page.description,\n // Encode like the sitemap does: a route with spaces or non-ASCII\n // must still yield a valid <link>/<guid> URL after XML decoding.\n link: encodeURI(`${base}${withBasePath(deployBase, page.route)}`),\n title: page.title,\n }))\n .toSorted((a, b) => (b.date?.getTime() ?? 0) - (a.date?.getTime() ?? 0))\n .slice(0, rss.limit);\n\n feeds.push({\n description: config.description,\n items,\n link: rootLink,\n path: `/${type}/rss.xml`,\n title: `${config.title} — ${capitalize(type)}`,\n type,\n });\n }\n return feeds;\n};\n\nconst renderItem = (item: RssItem): string => {\n const parts = [\n ` <title>${escapeXml(item.title)}</title>`,\n ` <link>${escapeXml(item.link)}</link>`,\n ` <guid isPermaLink=\"true\">${escapeXml(item.link)}</guid>`,\n ];\n if (item.description) {\n parts.push(` <description>${escapeXml(item.description)}</description>`);\n }\n if (item.date) {\n parts.push(` <pubDate>${item.date.toUTCString()}</pubDate>`);\n }\n return ` <item>\\n${parts.join(\"\\n\")}\\n </item>`;\n};\n\n/** Serialize a resolved feed into an RSS 2.0 XML document. */\nexport const renderRssFeed = (feed: RssFeed): string => {\n const feedSelfHref = `${feed.link}${feed.path}`;\n const channel = [\n ` <title>${escapeXml(feed.title)}</title>`,\n ` <link>${escapeXml(feed.link)}</link>`,\n ` <description>${escapeXml(feed.description ?? feed.title)}</description>`,\n ` <atom:link href=\"${escapeXml(feedSelfHref)}\" rel=\"self\" type=\"application/rss+xml\" />`,\n ];\n const items = feed.items.map(renderItem).join(\"\\n\");\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n<channel>\n${channel.join(\"\\n\")}\n${items}\n</channel>\n</rss>\n`;\n};\n",
|
|
10
9
|
"import type { ApiOperationRef, OpenApiData } from \"../openapi/model.ts\";\nimport { operationOf, specAddresses, specOf } from \"../openapi/model.ts\";\nimport { operationSignature } from \"../openapi/signature.ts\";\nimport type {\n ComponentMarkdown,\n EvaluatedValue,\n} from \"./component-markdown.ts\";\nimport { inlineCode, isString, linkDestination } from \"./component-markdown.ts\";\n\n/**\n * Spec-authored prose as one line of inline Markdown. Unlike the props the\n * other serializers pass through, a summary is written by whoever wrote the\n * spec, not by the docs author, so the characters CommonMark would read as\n * markup — `<user>` as inline HTML, `*only*` as emphasis — are escaped.\n */\nconst inlineText = (text: string): string =>\n text\n .trim()\n .replaceAll(/\\s+/gu, \" \")\n .replaceAll(/[\\\\`*_[\\]<>~]/gu, String.raw`\\$&`);\n\n/** One operation as a link, for the tag listings. */\nconst listItem = (\n signature: string,\n operation: Pick<ApiOperationRef, \"deprecated\" | \"route\" | \"summary\">\n): string => {\n const tail = [\n inlineText(operation.summary),\n operation.deprecated ? \"Deprecated.\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n return `- [${inlineCode(signature)}](${linkDestination(operation.route)})${tail ? ` — ${tail}` : \"\"}`;\n};\n\n/**\n * Agent-facing Markdown for the components a generated reference page is made\n * of: `<Operation>`, `<ApiTagOperations>` and `<ApiOverview>`.\n *\n * `render-mdx.ts` builds each reference page as the operation's description in\n * the body plus one of these components, deliberately: the structured UI is the\n * component's job, and the prose stays Markdown so it indexes. That split is\n * right for the rendered page and lossy everywhere else — `<route>.md`,\n * llms-full.txt, MCP `get_page` and the Ask AI corpus all downlevel components\n * to Markdown, and these three had no serializer, so an operation page reached\n * an agent as its description followed by a bare tag. On a site whose reference\n * is most of the corpus, that is most of the corpus: measured on one 449-page\n * site, 266 pages and 266 raw `<Operation>` in llms-full.txt, so \"which\n * endpoint do I call?\" had no answer anywhere in the agent surface.\n *\n * Each serializer emits what its component renders and no more: the endpoint\n * in the spec kind's own notation ({@link operationSignature}), the version and\n * addresses the overview shows ({@link specAddresses}), the linked list a tag\n * section shows. Parameters, schemas and responses are deliberately left out:\n * those are `operation-model.ts` plus each component's own preparation, and a\n * second implementation here would be free to disagree with the page. The\n * endpoint and what it does is the part that was missing altogether.\n *\n * `specs` is the parsed `blume:openapi` data — empty when the project has no\n * API reference, in which case every serializer declines.\n */\nexport const openapiComponentSerializers = (specs: OpenApiData) => {\n const spec = (source: EvaluatedValue) =>\n isString(source) ? specOf(specs, source) : undefined;\n\n return {\n /**\n * The spec-level block at the top of the overview page: its version and\n * where the API lives. The tag sections that follow are real Markdown\n * headings over `<ApiTagOperations>`, so they downlevel on their own.\n */\n ApiOverview: ({ props }) => {\n const data = spec(props.source);\n if (!data) {\n return null;\n }\n const { addresses, label } = specAddresses(data);\n const lines = [\n data.version ? `Version ${inlineText(data.version)}` : \"\",\n addresses.length > 0\n ? `${label}: ${addresses.map(inlineCode).join(\", \")}`\n : \"\",\n ].filter(Boolean);\n return lines.length > 0 ? lines.join(\"\\n\\n\") : null;\n },\n\n /** One tag's operations, mirroring the list the rendered page shows. */\n ApiTagOperations: ({ props }) => {\n const { tag } = props;\n const data = spec(props.source);\n if (!(data && isString(tag))) {\n return null;\n }\n const items = Object.values(data.operations)\n .filter((operation) => operation.tagSlug === tag)\n .map((operation) =>\n listItem(operationSignature(data, operation), operation)\n );\n return items.length > 0 ? items.join(\"\\n\") : null;\n },\n\n /**\n * One operation. Declines when the spec carries no such key — Blume's own\n * fallback, which leaves the JSX visible rather than publishing a page that\n * silently lost its endpoint.\n */\n Operation: ({ props }) => {\n const { id } = props;\n const data = spec(props.source);\n if (!(data && isString(id))) {\n return null;\n }\n const operation = operationOf(data, id);\n if (!operation) {\n return null;\n }\n const signature = inlineCode(operationSignature(data, operation));\n return operation.deprecated\n ? `${signature}\\n\\n**Deprecated.**`\n : signature;\n },\n } satisfies Record<string, ComponentMarkdown>;\n};\n",
|
|
@@ -19,7 +18,7 @@
|
|
|
19
18
|
"import type { ResolvedConfig } from \"../core/schema.ts\";\nimport type { PageRecord } from \"../core/types.ts\";\n\n/**\n * Resolve a page's facet values: the subset of its validated custom\n * frontmatter named by its content type's `facets` declaration. Strings facet\n * as-is; numbers and booleans are stringified so an enum-like `priority: 1`\n * or `enforced: true` still filters; any other shape (objects, arrays,\n * transformed dates) is not a facet value and is skipped. Returns `undefined`\n * when nothing facets, so the field stays absent from serialized documents\n * rather than shipping as `{}` on every page.\n */\n/** Whether a custom frontmatter value stringifies into a usable facet value. */\nconst isFacetValue = <T>(value: T): value is T & (string | number | boolean) =>\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\";\n\nexport const pageFacets = (\n page: Pick<PageRecord, \"contentType\" | \"custom\">,\n config: ResolvedConfig\n): Record<string, string> | undefined => {\n const declared = config.content.types[page.contentType]?.facets;\n if (!declared || declared.length === 0 || !page.custom) {\n return;\n }\n const facets: Record<string, string> = {};\n for (const key of declared) {\n const value = page.custom[key];\n if (isFacetValue(value)) {\n facets[key] = String(value);\n }\n }\n return Object.keys(facets).length > 0 ? facets : undefined;\n};\n",
|
|
20
19
|
"import { normalizeBasePath } from \"../../core/base-path.ts\";\nimport type { BlumeProject } from \"../../core/project-graph.ts\";\nimport type { Navigation } from \"../../core/types.ts\";\nimport { buildSearchDocuments } from \"../../search/documents.ts\";\nimport { pageFacets } from \"../../search/facets.ts\";\nimport type { OramaDoc } from \"../../search/orama-index.ts\";\nimport { agentMarkdown, buildRawMarkdown } from \"../markdown.ts\";\n\n/** A page entry surfaced by the `list_pages` MCP tool. */\nexport interface McpRoute {\n contentType: string;\n description?: string;\n /** Declared facet values (`content.types.<type>.facets`), key → value. */\n facets?: Record<string, string>;\n indexable: boolean;\n lastModified: string | null;\n /** Resolved locale code (the default locale when not under i18n). */\n locale: string;\n route: string;\n title: string;\n /** Docs version (`\"\"` for the current docs). */\n version: string;\n}\n\n/**\n * The self-contained snapshot the generated MCP endpoint serves. Bundles the\n * search documents, raw page Markdown, route list, and navigation so the server\n * works regardless of the configured search provider and needs no filesystem\n * access at request time. Serialized to `generated/mcp-data.json`.\n */\nexport interface McpData {\n /**\n * Normalized `deployment.base` (`\"\"` or `/seg`), layered onto routes when\n * emitting URLs — the site is base-less and routes are base-less manifest\n * paths, matching the sitemap/llms.txt convention.\n */\n base: string;\n /**\n * The site's `i18n.defaultLocale`, when i18n is configured. Selects a\n * word-segmenting Orama tokenizer for every non-Latin script, so\n * `search_docs` can match CJK, Cyrillic, Greek, Hebrew, or Devanagari\n * content.\n */\n defaultLocale?: string;\n /**\n * Archived docs version ids, in configured order. Present only on a\n * versioned site; its presence is what makes `search_docs`/`list_pages`\n * default to the current docs.\n */\n archivedVersions?: string[];\n documents: OramaDoc[];\n instructions?: string;\n name: string;\n navigation: Navigation;\n /** Per-locale trees for a locale-aware `get_navigation` (i18n sites only). */\n navigationByLocale?: Record<string, Navigation>;\n /** Per-archived-version trees, keyed by version id then locale code. */\n navigationByVersion?: Record<string, Record<string, Navigation>>;\n pages: Record<string, string>;\n routes: McpRoute[];\n site: string | null;\n version: string;\n}\n\n/** Build the MCP data snapshot from a resolved project. */\nexport const buildMcpData = async (project: BlumeProject): Promise<McpData> => {\n const { config, graph, manifest } = project;\n const [documents, rawMarkdown] = await Promise.all([\n // The MCP server is independent of on-page search, so index docs even when\n // the search provider is `none`. Documents are agent-facing, so\n // `<Visibility>` resolves like `get_page`/llms-full.txt (web-only content\n // removed, agents-only kept).\n buildSearchDocuments(project, {\n audience: \"agents\",\n includeWhenDisabled: true,\n }),\n buildRawMarkdown(project),\n ]);\n\n // `get_page` serves the agent variant: components downleveled to Markdown.\n const pages = Object.fromEntries(\n Object.entries(rawMarkdown).map(([route, entry]) => [\n route,\n agentMarkdown(entry),\n ])\n );\n\n const pageById = new Map(graph.pages.map((page) => [page.id, page]));\n\n const routes: McpRoute[] = [];\n for (const route of manifest.routes) {\n if (route.hidden) {\n continue;\n }\n const page = pageById.get(route.id);\n const facets = page ? pageFacets(page, config) : undefined;\n const entry: McpRoute = {\n contentType: route.contentType,\n description: page?.description,\n indexable: route.indexable,\n lastModified: route.lastModified ?? null,\n locale: route.locale,\n route: route.path,\n title: route.title,\n version: route.version,\n };\n if (facets) {\n entry.facets = facets;\n }\n routes.push(entry);\n }\n\n const data: McpData = {\n base: normalizeBasePath(config.deployment.base),\n defaultLocale: config.i18n?.defaultLocale,\n documents: documents.map((doc) => {\n const document: OramaDoc = {\n content: doc.content,\n contentType: doc.contentType,\n description: doc.description,\n locale: doc.locale,\n route: doc.route,\n title: doc.title,\n version: doc.version,\n };\n if (doc.facets) {\n document.facets = doc.facets;\n }\n return document;\n }),\n instructions: config.ai.mcp.instructions,\n name: config.ai.mcp.name ?? config.title,\n navigation: graph.navigation,\n pages,\n routes,\n site: config.deployment.site ?? null,\n version: manifest.blumeVersion,\n };\n if (config.versions) {\n data.archivedVersions = config.versions.archived.map(\n (version) => version.id\n );\n data.navigationByVersion = graph.navigationByVersion;\n }\n if (config.i18n) {\n data.navigationByLocale = graph.navigationByLocale;\n }\n return data;\n};\n"
|
|
21
20
|
],
|
|
22
|
-
"mappings": "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",
|
|
23
|
-
"debugId": "
|
|
21
|
+
"mappings": "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",
|
|
22
|
+
"debugId": "C8F15B2ECD8107F364756E2164756E21",
|
|
24
23
|
"names": []
|
|
25
24
|
}
|
|
@@ -1,38 +1,29 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
ensureGitignore
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-yzhm0j9q.js";
|
|
5
|
+
import"./chunk-61j18dwk.js";
|
|
5
6
|
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
import"./chunk-btfr9yvw.js";
|
|
7
|
+
commandMeta,
|
|
8
|
+
logger
|
|
9
|
+
} from "./index.js";
|
|
10
10
|
import {
|
|
11
11
|
refuseIfDevRunning
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import"./chunk-
|
|
14
|
-
import"./chunk-
|
|
15
|
-
import"./chunk-
|
|
16
|
-
import"./chunk-
|
|
17
|
-
import"./chunk-
|
|
18
|
-
import"./chunk-
|
|
19
|
-
import"./chunk-
|
|
20
|
-
import"./chunk-
|
|
21
|
-
import"./chunk-
|
|
22
|
-
import"./chunk-
|
|
23
|
-
import"./chunk-vxv4x1n8.js";
|
|
24
|
-
import"./chunk-wd27zjcz.js";
|
|
25
|
-
import"./chunk-s102bysw.js";
|
|
26
|
-
import"./chunk-xv91q4nm.js";
|
|
27
|
-
import"./chunk-27gtm2ym.js";
|
|
28
|
-
import"./chunk-4xyggvgf.js";
|
|
29
|
-
import"./chunk-6kzzpsx8.js";
|
|
12
|
+
} from "./chunk-exeeb35e.js";
|
|
13
|
+
import"./chunk-tqa1s0k8.js";
|
|
14
|
+
import"./chunk-88by27n5.js";
|
|
15
|
+
import"./chunk-5n7t497w.js";
|
|
16
|
+
import"./chunk-wjt80jps.js";
|
|
17
|
+
import"./chunk-hdm2dkd2.js";
|
|
18
|
+
import"./chunk-450a7rcr.js";
|
|
19
|
+
import"./chunk-jq5n4avg.js";
|
|
20
|
+
import"./chunk-ejjx8znq.js";
|
|
21
|
+
import"./chunk-688e0dde.js";
|
|
22
|
+
import"./chunk-vrfp10qk.js";
|
|
30
23
|
import {
|
|
31
|
-
|
|
32
|
-
} from "./chunk-
|
|
33
|
-
import
|
|
34
|
-
commandMeta
|
|
35
|
-
} from "./chunk-2aj8ddew.js";
|
|
24
|
+
prepareProject
|
|
25
|
+
} from "./chunk-vkrsvbr5.js";
|
|
26
|
+
import"./chunk-jbj4qhfw.js";
|
|
36
27
|
|
|
37
28
|
// src/cli/commands/check.ts
|
|
38
29
|
import { existsSync } from "node:fs";
|
|
@@ -92,5 +83,5 @@ export {
|
|
|
92
83
|
checkCommand
|
|
93
84
|
};
|
|
94
85
|
|
|
95
|
-
//# debugId=
|
|
96
|
-
//# sourceMappingURL=chunk-
|
|
86
|
+
//# debugId=785FB9FFBD7A7B1164756E2164756E21
|
|
87
|
+
//# sourceMappingURL=chunk-xhtpx3ff.js.map
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import { existsSync } from \"node:fs\";\n\nimport { check } from \"@astrojs/check\";\nimport { sync } from \"astro\";\nimport { defineCommand } from \"citty\";\nimport { join } from \"pathe\";\n\nimport { ensureGitignore } from \"../../core/gitignore.ts\";\nimport { commandMeta } from \"../command-meta.ts\";\nimport { refuseIfDevRunning } from \"../dev-lock.ts\";\nimport { logger } from \"../log.ts\";\nimport { prepareProject } from \"../prepare.ts\";\n\nexport const checkCommand = defineCommand({\n args: {\n isolated: {\n description:\n \"Type-check in an isolated .blume-verify runtime so a running dev server is untouched. For verifying changes while `blume dev` runs.\",\n type: \"boolean\",\n },\n preview: {\n description: \"Include drafts and unpublished CMS content.\",\n type: \"boolean\",\n },\n strict: {\n description: \"Fail on content diagnostics as well as type errors.\",\n type: \"boolean\",\n },\n },\n meta: commandMeta.check,\n async run({ args }) {\n const root = process.cwd();\n\n // `blume check` regenerates `.blume` just like `build`, so it must refuse a\n // live dev server unless isolated. `--isolated` (or BLUME_RUNTIME_DIR)\n // relocates the runtime to `.blume-verify`, which dev never locks.\n const runtimeDir = args.isolated\n ? \".blume-verify\"\n : process.env.BLUME_RUNTIME_DIR;\n refuseIfDevRunning(root, \"checking\", { isolatedHint: true, runtimeDir });\n if (args.isolated) {\n await ensureGitignore(root, [\".blume-verify/\"]);\n }\n\n const project = await prepareProject({\n mode: \"build\",\n preview: args.preview,\n root,\n runtimeDir,\n strict: args.strict,\n });\n\n const { outDir } = project.context;\n\n // Generate Astro's content/collection and font types into `.blume/.astro`\n // so `astro:*` virtual modules resolve during the check.\n await sync({ logLevel: \"warn\", root: outDir });\n\n // The project-root tsconfig is what covers the authored `pages/` and config;\n // without it astro check only sees the generated `.blume` project. Falls back\n // to the generated project's own tsconfig when the project has none.\n const tsconfig = join(root, \"tsconfig.json\");\n\n logger.start(`Type-checking ${project.graph.pages.length} page(s)`);\n const failed = await check({\n minimumFailingSeverity: \"error\",\n minimumSeverity: \"hint\",\n root: outDir,\n tsconfig: existsSync(tsconfig) ? tsconfig : undefined,\n watch: false,\n });\n\n if (failed) {\n logger.error(\"Type check failed.\");\n process.exit(1);\n }\n\n logger.success(\"No type errors.\");\n },\n});\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAEA;AACA;AACA;AACA;AAQO,IAAM,eAAe,cAAc;AAAA,EACxC,MAAM;AAAA,IACJ,UAAU;AAAA,MACR,aACE;AAAA,MACF,MAAM;AAAA,IACR;AAAA,IACA,SAAS;AAAA,MACP,aAAa;AAAA,MACb,MAAM;AAAA,IACR;AAAA,IACA,QAAQ;AAAA,MACN,aAAa;AAAA,MACb,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,MAAM,YAAY;AAAA,OACZ,IAAG,GAAG,QAAQ;AAAA,IAClB,MAAM,OAAO,QAAQ,IAAI;AAAA,IAKzB,MAAM,aAAa,KAAK,WACpB,kBACA,QAAQ,IAAI;AAAA,IAChB,mBAAmB,MAAM,YAAY,EAAE,cAAc,MAAM,WAAW,CAAC;AAAA,IACvE,IAAI,KAAK,UAAU;AAAA,MACjB,MAAM,gBAAgB,MAAM,CAAC,gBAAgB,CAAC;AAAA,IAChD;AAAA,IAEA,MAAM,UAAU,MAAM,eAAe;AAAA,MACnC,MAAM;AAAA,MACN,SAAS,KAAK;AAAA,MACd;AAAA,MACA;AAAA,MACA,QAAQ,KAAK;AAAA,IACf,CAAC;AAAA,IAED,QAAQ,WAAW,QAAQ;AAAA,IAI3B,MAAM,KAAK,EAAE,UAAU,QAAQ,MAAM,OAAO,CAAC;AAAA,IAK7C,MAAM,WAAW,KAAK,MAAM,eAAe;AAAA,IAE3C,OAAO,MAAM,iBAAiB,QAAQ,MAAM,MAAM,gBAAgB;AAAA,IAClE,MAAM,SAAS,MAAM,MAAM;AAAA,MACzB,wBAAwB;AAAA,MACxB,iBAAiB;AAAA,MACjB,MAAM;AAAA,MACN,UAAU,WAAW,QAAQ,IAAI,WAAW;AAAA,MAC5C,OAAO;AAAA,IACT,CAAC;AAAA,IAED,IAAI,QAAQ;AAAA,MACV,OAAO,MAAM,oBAAoB;AAAA,MACjC,QAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,IAEA,OAAO,QAAQ,iBAAiB;AAAA;AAEpC,CAAC;",
|
|
8
|
+
"debugId": "785FB9FFBD7A7B1164756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|