blume 1.7.2 → 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.
Files changed (101) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/cli/chunk-0qymqwzz.js +164 -0
  3. package/dist/cli/chunk-0qymqwzz.js.map +15 -0
  4. package/dist/cli/{chunk-9bkjd11x.js → chunk-0xjyb285.js} +1 -1
  5. package/dist/cli/{chunk-hdm2dkd2.js → chunk-1jefwnfs.js} +13 -7
  6. package/dist/cli/{chunk-hdm2dkd2.js.map → chunk-1jefwnfs.js.map} +3 -3
  7. package/dist/cli/{chunk-n9sra6sy.js → chunk-3r45185y.js} +5 -7
  8. package/dist/cli/{chunk-n9sra6sy.js.map → chunk-3r45185y.js.map} +2 -2
  9. package/dist/cli/{chunk-cvky9gb2.js → chunk-4x36ddpw.js} +3 -3
  10. package/dist/cli/{chunk-mqb2ka8m.js → chunk-5093q3n7.js} +12 -12
  11. package/dist/cli/{chunk-9he6crym.js → chunk-5g0w1e2c.js} +4 -4
  12. package/dist/cli/{chunk-mt76t7dj.js → chunk-5qk08vmp.js} +11 -11
  13. package/dist/cli/{chunk-61j18dwk.js → chunk-7s8hm3b6.js} +7 -2
  14. package/dist/cli/{chunk-61j18dwk.js.map → chunk-7s8hm3b6.js.map} +3 -3
  15. package/dist/cli/{chunk-196vjxp9.js → chunk-8cjtbafj.js} +11 -9
  16. package/dist/cli/{chunk-196vjxp9.js.map → chunk-8cjtbafj.js.map} +2 -2
  17. package/dist/cli/{chunk-aztttvb3.js → chunk-97r59kpr.js} +4 -4
  18. package/dist/cli/{chunk-t3tj0dgr.js → chunk-ahnw3kxw.js} +8 -8
  19. package/dist/cli/{chunk-hs3gbh8p.js → chunk-b27xqwn9.js} +3 -3
  20. package/dist/cli/{chunk-450a7rcr.js → chunk-bf6bt1xt.js} +2 -2
  21. package/dist/cli/{chunk-eevwt1sc.js → chunk-bvwwhd84.js} +13 -13
  22. package/dist/cli/{chunk-12dxjqk7.js → chunk-cjtn640a.js} +17 -17
  23. package/dist/cli/{chunk-12dxjqk7.js.map → chunk-cjtn640a.js.map} +1 -1
  24. package/dist/cli/{chunk-ra1v2nc2.js → chunk-ct47dqpx.js} +14 -3
  25. package/dist/cli/{chunk-ra1v2nc2.js.map → chunk-ct47dqpx.js.map} +4 -3
  26. package/dist/cli/{chunk-ppfvdcd4.js → chunk-dwgcp5sm.js} +1 -1
  27. package/dist/cli/{chunk-3w7b2vcx.js → chunk-e7f42gdj.js} +2 -2
  28. package/dist/cli/{chunk-vkrsvbr5.js → chunk-esphfr8p.js} +8 -8
  29. package/dist/cli/{chunk-vkrsvbr5.js.map → chunk-esphfr8p.js.map} +1 -1
  30. package/dist/cli/{chunk-fmceyezb.js → chunk-ex56aa81.js} +27 -18
  31. package/dist/cli/chunk-ex56aa81.js.map +13 -0
  32. package/dist/cli/{chunk-jbj4qhfw.js → chunk-garjf5z9.js} +2 -2
  33. package/dist/cli/{chunk-wjt80jps.js → chunk-js7saxwm.js} +14 -18
  34. package/dist/cli/{chunk-wjt80jps.js.map → chunk-js7saxwm.js.map} +4 -6
  35. package/dist/cli/{chunk-5n7t497w.js → chunk-k79xp7av.js} +53 -91
  36. package/dist/cli/chunk-k79xp7av.js.map +39 -0
  37. package/dist/cli/{chunk-688e0dde.js → chunk-nn13znc2.js} +1 -1
  38. package/dist/cli/{chunk-ejjx8znq.js → chunk-ps4m1xh4.js} +15 -9
  39. package/dist/cli/{chunk-ejjx8znq.js.map → chunk-ps4m1xh4.js.map} +3 -3
  40. package/dist/cli/{chunk-xhtpx3ff.js → chunk-rqy0s5wh.js} +13 -13
  41. package/dist/cli/{chunk-30e87n55.js → chunk-rz9jmfhz.js} +4 -4
  42. package/dist/cli/{chunk-exeeb35e.js → chunk-vacwm2hv.js} +2 -2
  43. package/dist/cli/{chunk-8cd8tj54.js → chunk-yg63d42r.js} +7 -7
  44. package/dist/cli/index.js +15 -15
  45. package/dist/types/core/config-input.d.ts +33 -0
  46. package/dist/types/core/data.d.ts +2 -0
  47. package/dist/types/core/schema.d.ts +20 -0
  48. package/dist/types/core/types.d.ts +5 -0
  49. package/docs/configuration/ask-ai.mdx +14 -0
  50. package/docs/configuration/index.mdx +3 -1
  51. package/docs/content/navigation.mdx +3 -0
  52. package/docs/content/syntax.mdx +10 -0
  53. package/docs/discoverability/agent-discovery.mdx +82 -1
  54. package/docs/discoverability/index.mdx +1 -1
  55. package/docs/discoverability/llms-txt.mdx +1 -1
  56. package/docs/reference/frontmatter.mdx +2 -0
  57. package/package.json +1 -1
  58. package/src/ai/agent-readability.ts +5 -0
  59. package/src/ai/ai-catalog.ts +241 -0
  60. package/src/ai/link-headers.ts +12 -0
  61. package/src/ai/llms.ts +6 -0
  62. package/src/ai/mcp/discovery.ts +1 -1
  63. package/src/astro/generate.ts +2 -0
  64. package/src/cli/commands/build.ts +3 -1
  65. package/src/components/islands/hooks.ts +50 -1
  66. package/src/components/layout/RootLayout.astro +24 -1
  67. package/src/components/layout/analytics-client.ts +36 -7
  68. package/src/core/config-input.ts +34 -0
  69. package/src/core/data.ts +2 -0
  70. package/src/core/navigation.ts +22 -3
  71. package/src/core/schema.ts +32 -0
  72. package/src/core/types.ts +5 -0
  73. package/src/deploy/artifacts.ts +12 -1
  74. package/src/deploy/headers.ts +6 -0
  75. package/src/deploy/vercel-negotiation.ts +25 -2
  76. package/src/search/build.ts +25 -3
  77. package/src/theme/entry.ts +23 -0
  78. package/dist/cli/chunk-5n7t497w.js.map +0 -40
  79. package/dist/cli/chunk-88by27n5.js +0 -17
  80. package/dist/cli/chunk-88by27n5.js.map +0 -10
  81. package/dist/cli/chunk-fmceyezb.js.map +0 -13
  82. package/dist/cli/chunk-tqa1s0k8.js +0 -69
  83. package/dist/cli/chunk-tqa1s0k8.js.map +0 -11
  84. /package/dist/cli/{chunk-9bkjd11x.js.map → chunk-0xjyb285.js.map} +0 -0
  85. /package/dist/cli/{chunk-cvky9gb2.js.map → chunk-4x36ddpw.js.map} +0 -0
  86. /package/dist/cli/{chunk-mqb2ka8m.js.map → chunk-5093q3n7.js.map} +0 -0
  87. /package/dist/cli/{chunk-9he6crym.js.map → chunk-5g0w1e2c.js.map} +0 -0
  88. /package/dist/cli/{chunk-mt76t7dj.js.map → chunk-5qk08vmp.js.map} +0 -0
  89. /package/dist/cli/{chunk-aztttvb3.js.map → chunk-97r59kpr.js.map} +0 -0
  90. /package/dist/cli/{chunk-t3tj0dgr.js.map → chunk-ahnw3kxw.js.map} +0 -0
  91. /package/dist/cli/{chunk-hs3gbh8p.js.map → chunk-b27xqwn9.js.map} +0 -0
  92. /package/dist/cli/{chunk-450a7rcr.js.map → chunk-bf6bt1xt.js.map} +0 -0
  93. /package/dist/cli/{chunk-eevwt1sc.js.map → chunk-bvwwhd84.js.map} +0 -0
  94. /package/dist/cli/{chunk-ppfvdcd4.js.map → chunk-dwgcp5sm.js.map} +0 -0
  95. /package/dist/cli/{chunk-3w7b2vcx.js.map → chunk-e7f42gdj.js.map} +0 -0
  96. /package/dist/cli/{chunk-jbj4qhfw.js.map → chunk-garjf5z9.js.map} +0 -0
  97. /package/dist/cli/{chunk-688e0dde.js.map → chunk-nn13znc2.js.map} +0 -0
  98. /package/dist/cli/{chunk-xhtpx3ff.js.map → chunk-rqy0s5wh.js.map} +0 -0
  99. /package/dist/cli/{chunk-30e87n55.js.map → chunk-rz9jmfhz.js.map} +0 -0
  100. /package/dist/cli/{chunk-exeeb35e.js.map → chunk-vacwm2hv.js.map} +0 -0
  101. /package/dist/cli/{chunk-8cd8tj54.js.map → chunk-yg63d42r.js.map} +0 -0
@@ -21,7 +21,7 @@ import {
21
21
  apiUrl,
22
22
  EN_UI,
23
23
  resolveUIStrings
24
- } from "./chunk-61j18dwk.js";
24
+ } from "./chunk-7s8hm3b6.js";
25
25
  import {
26
26
  resolveFallbackLocale,
27
27
  validateSearchPopularIcons,
@@ -30,11 +30,11 @@ import {
30
30
  apiNamePhrase,
31
31
  isOpenApiSource,
32
32
  resolveDocsCollection
33
- } from "./chunk-hdm2dkd2.js";
33
+ } from "./chunk-1jefwnfs.js";
34
34
  import {
35
35
  siteRoot,
36
36
  absoluteUrl
37
- } from "./chunk-88by27n5.js";
37
+ } from "./chunk-ct47dqpx.js";
38
38
  import {
39
39
  buildRssFeeds,
40
40
  renderRssFeed,
@@ -42,18 +42,21 @@ import {
42
42
  markdownRoutePaths,
43
43
  buildSearchDocuments,
44
44
  buildMcpData
45
- } from "./chunk-wjt80jps.js";
45
+ } from "./chunk-js7saxwm.js";
46
46
  import {
47
47
  OPENAPI_PATH,
48
48
  API_PAGES_PATH,
49
49
  API_PAGE_PATH,
50
50
  API_NAVIGATION_PATH,
51
- API_SEARCH_PATH
52
- } from "./chunk-tqa1s0k8.js";
51
+ API_SEARCH_PATH,
52
+ buildMcpDiscovery,
53
+ buildMcpServerCard,
54
+ hasAiCatalog
55
+ } from "./chunk-0qymqwzz.js";
53
56
  import {
54
57
  rewriteRelativeImages,
55
58
  collectContentAssets
56
- } from "./chunk-450a7rcr.js";
59
+ } from "./chunk-bf6bt1xt.js";
57
60
  import {
58
61
  resolveAskBackend,
59
62
  askBackendRuntimeDep,
@@ -97,7 +100,7 @@ import {
97
100
  examplesPageTemplate,
98
101
  runtimePackageTemplate,
99
102
  runtimeTsconfigTemplate
100
- } from "./chunk-ejjx8znq.js";
103
+ } from "./chunk-ps4m1xh4.js";
101
104
  import {
102
105
  discoverPages,
103
106
  routeIsTaken,
@@ -109,10 +112,7 @@ import {
109
112
  } from "./chunk-jq5n4avg.js";
110
113
  import {
111
114
  registry
112
- } from "./chunk-688e0dde.js";
113
- import {
114
- MCP_TOOLS
115
- } from "./chunk-ra1v2nc2.js";
115
+ } from "./chunk-nn13znc2.js";
116
116
  import {
117
117
  searchProviderMeta,
118
118
  servesStaticIndex
@@ -131,10 +131,10 @@ var SIGNATURES_DIRECTORY_TYPE = "application/http-message-signatures-directory+j
131
131
  import { join as join3, relative, resolve as resolve2 } from "pathe";
132
132
 
133
133
  // src/deploy/artifacts.ts
134
- import { dirname, join as join2, resolve } from "pathe";
134
+ import { dirname as dirname2, join as join2, resolve } from "pathe";
135
135
 
136
136
  // src/search/build.ts
137
- import { join } from "pathe";
137
+ import { dirname, join } from "pathe";
138
138
 
139
139
  // src/deploy/sitemap.ts
140
140
  import { escape as escapeXml } from "html-escaper";
@@ -219,7 +219,7 @@ import {
219
219
  rm,
220
220
  writeFile
221
221
  } from "node:fs/promises";
222
- import { dirname as dirname2, join as join4 } from "pathe";
222
+ import { dirname as dirname3, join as join4 } from "pathe";
223
223
  var ogCacheDir = (context) => existsSync(join4(context.root, "node_modules")) ? join4(context.root, "node_modules", ".cache", "blume", "og") : join4(context.outDir, ".cache", "og");
224
224
  var REGISTRY_KEY2 = Symbol.for("blume.og-cache");
225
225
  var registry3 = () => {
@@ -263,7 +263,7 @@ import { pathToFileURL } from "node:url";
263
263
  import pMap3 from "p-map";
264
264
  import {
265
265
  basename as basename2,
266
- dirname as dirname6,
266
+ dirname as dirname7,
267
267
  isAbsolute as isAbsolute6,
268
268
  join as join11,
269
269
  normalize,
@@ -805,68 +805,6 @@ var buildAskData = async (project) => {
805
805
  };
806
806
  };
807
807
 
808
- // src/ai/mcp/discovery.ts
809
- var serverUrl2 = (input) => {
810
- const path = withBasePath(input.base, input.route);
811
- return input.site ? absoluteUrl(input.site, path) : path;
812
- };
813
- var buildMcpDiscovery = (input) => ({
814
- servers: [
815
- {
816
- name: input.name,
817
- transport: "streamable-http",
818
- url: serverUrl2(input)
819
- }
820
- ]
821
- });
822
- var SERVER_CARD_SCHEMA = "https://static.modelcontextprotocol.io/schemas/v1/server-card.schema.json";
823
- var CARD_TEXT_MAX = 100;
824
- var truncate = (text) => text.length > CARD_TEXT_MAX ? `${text.slice(0, CARD_TEXT_MAX - 1)}…` : text;
825
- var NON_ASCII_SLUG = /[^a-z0-9]+/gu;
826
- var COMBINING_MARKS = /\p{M}+/gu;
827
- var asciiSlugify = (text) => trimChar(text.normalize("NFKD").replace(COMBINING_MARKS, "").toLowerCase().replace(NON_ASCII_SLUG, "-"), "-");
828
- var reverseDnsName = (input) => {
829
- let namespace = "localhost";
830
- if (input.site) {
831
- try {
832
- namespace = new URL(input.site).hostname.split(".").toReversed().join(".");
833
- } catch {}
834
- }
835
- return `${namespace}/${asciiSlugify(input.name) || "docs"}`;
836
- };
837
- var HTTP_URL = /^https?:\/\//u;
838
- var buildMcpServerCard = (input) => {
839
- const url = serverUrl2(input);
840
- const card = {
841
- $schema: SERVER_CARD_SCHEMA,
842
- capabilities: {
843
- resources: { listChanged: false, subscribe: false },
844
- tools: { listChanged: false }
845
- },
846
- description: truncate(`Model Context Protocol server for the ${input.name} documentation.`),
847
- name: reverseDnsName(input),
848
- serverInfo: { name: input.name, version: input.version },
849
- title: truncate(input.name),
850
- tools: MCP_TOOLS.map((tool) => ({
851
- annotations: tool.annotations,
852
- description: tool.description,
853
- name: tool.name,
854
- title: tool.title
855
- })),
856
- transport: "streamable-http",
857
- transports: [{ endpoint: url, type: "streamable-http" }],
858
- url,
859
- version: input.version
860
- };
861
- if (HTTP_URL.test(url)) {
862
- card.remotes = [{ type: "streamable-http", url }];
863
- }
864
- if (input.site) {
865
- card.websiteUrl = siteRoot(input.site);
866
- }
867
- return card;
868
- };
869
-
870
808
  // src/components/layout/nav-utils.ts
871
809
  var hasDeferrableGroups = (sidebar) => sidebar.some((node) => node.kind === "group" && ((node.display ?? "flat") !== "flat" || hasDeferrableGroups(node.children)));
872
810
  var navVariants = (data, hiddenDefault = null) => [
@@ -949,7 +887,7 @@ var validateUsedComponents = (pages, extraTags, registryNames) => {
949
887
 
950
888
  // src/core/component-overrides.ts
951
889
  import { existsSync as existsSync2 } from "node:fs";
952
- import { dirname as dirname3, extname, isAbsolute, resolve as resolve3 } from "pathe";
890
+ import { dirname as dirname4, extname, isAbsolute, resolve as resolve3 } from "pathe";
953
891
  import ts from "typescript";
954
892
  var GROUPS = ["mdx", "layout", "islands"];
955
893
  var GROUP_SET = new Set(GROUPS);
@@ -1205,7 +1143,7 @@ var analyzeComponentOverrides = (source, filePath) => {
1205
1143
  return result;
1206
1144
  }
1207
1145
  const imports = collectImports(sourceFile);
1208
- const dir = dirname3(filePath);
1146
+ const dir = dirname4(filePath);
1209
1147
  for (const property of object.properties) {
1210
1148
  collectGroupOverrides(property, imports, dir, result);
1211
1149
  }
@@ -1277,7 +1215,7 @@ var svgDimensions = (svg) => {
1277
1215
 
1278
1216
  // src/core/tsconfig-aliases.ts
1279
1217
  import { existsSync as existsSync3 } from "node:fs";
1280
- import { dirname as dirname4, join as join5, resolve as resolve4 } from "pathe";
1218
+ import { dirname as dirname5, join as join5, resolve as resolve4 } from "pathe";
1281
1219
  import ts2 from "typescript";
1282
1220
  var PARSE_HOST = {
1283
1221
  fileExists: ts2.sys.fileExists,
@@ -1307,7 +1245,7 @@ var resolveTsconfigAliases = (root) => {
1307
1245
  if (error) {
1308
1246
  return {};
1309
1247
  }
1310
- const configDir = dirname4(entry);
1248
+ const configDir = dirname5(entry);
1311
1249
  const { options } = ts2.parseJsonConfigFileContent(config, PARSE_HOST, configDir, undefined, entry);
1312
1250
  const { paths } = options;
1313
1251
  if (!paths) {
@@ -2009,6 +1947,11 @@ ${THEME_MAPPING}
2009
1947
  --tw-prose-pre-bg: var(--blume-code-background);
2010
1948
  --tw-prose-th-borders: var(--blume-border);
2011
1949
  --tw-prose-td-borders: var(--blume-border);
1950
+ /* Neutralized: the plugin defaults are near-black text and shadow with no
1951
+ dark counterpart (Blume never applies prose-invert), and the kbd rule
1952
+ below draws the badge with Blume tokens instead. */
1953
+ --tw-prose-kbd: inherit;
1954
+ --tw-prose-kbd-shadows: transparent;
2012
1955
  color: var(--blume-muted-foreground);
2013
1956
  font-size: 0.875rem;
2014
1957
  line-height: 1.7;
@@ -2538,6 +2481,24 @@ pre:has(.line.focused):hover .line:not(.focused) {
2538
2481
  content: none;
2539
2482
  }
2540
2483
 
2484
+ /* Keyboard keys (<kbd>) render as the same bordered badge the search dialog
2485
+ uses for its shortcut hints. Typography's own kbd rule is scoped with
2486
+ :not(.not-prose *), so it never reaches a key inside <Steps>, <Callout>,
2487
+ <Card>, or any other not-prose component; this rule is deliberately
2488
+ unscoped from that exclusion so a key looks the same everywhere in the
2489
+ content column. Unlayered, so it outranks the plugin's layered rule. */
2490
+ .prose kbd {
2491
+ background: var(--blume-muted);
2492
+ border: 1px solid var(--blume-border);
2493
+ border-radius: 0.25rem;
2494
+ box-shadow: none;
2495
+ color: inherit;
2496
+ font-family: var(--font-mono);
2497
+ font-size: 0.85em;
2498
+ font-weight: 500;
2499
+ padding: 0.125rem 0.25rem;
2500
+ }
2501
+
2541
2502
  /* Inline code highlighting: Shiki colors the tokens of a \`code\`{:lang} snippet
2542
2503
  via the same dual-theme CSS variables as fenced blocks, keeping the inline
2543
2504
  pill background. Always on — it only fires on the trailing {:lang} marker. */
@@ -2629,10 +2590,10 @@ ${options.userCss}
2629
2590
  `;
2630
2591
 
2631
2592
  // src/theme/sources.ts
2632
- import { dirname as dirname5, isAbsolute as isAbsolute4, relative as relative2, resolve as resolve5 } from "pathe";
2593
+ import { dirname as dirname6, isAbsolute as isAbsolute4, relative as relative2, resolve as resolve5 } from "pathe";
2633
2594
  var SOURCE_DIRECTIVE = /@source(?<not>\s+not)?\s+(?<quote>["'])(?<path>[^"']+)\k<quote>/gu;
2634
2595
  var rebaseSourceDirectives = (css, options) => {
2635
- const base = dirname5(options.from);
2596
+ const base = dirname6(options.from);
2636
2597
  return css.replace(SOURCE_DIRECTIVE, (directive, not, quote, path) => {
2637
2598
  if (isAbsolute4(path)) {
2638
2599
  return directive;
@@ -3019,7 +2980,7 @@ var resolvedAstroHit = (fromDir) => {
3019
2980
  if (pkg) {
3020
2981
  return { modulesDir, pkg };
3021
2982
  }
3022
- const parent = dirname6(dir);
2983
+ const parent = dirname7(dir);
3023
2984
  if (parent === dir) {
3024
2985
  return null;
3025
2986
  }
@@ -3035,7 +2996,7 @@ var sameRealDir = (a, b) => {
3035
2996
  };
3036
2997
  var depsCandidates = (pkgDir) => [
3037
2998
  join11(pkgDir, "node_modules"),
3038
- dirname6(pkgDir)
2999
+ dirname7(pkgDir)
3039
3000
  ];
3040
3001
  var candidateHolding = (pkgDir, ...segments) => depsCandidates(pkgDir).find((dir) => existsSync6(join11(dir, ...segments))) ?? null;
3041
3002
  var symlinkDir = async (target, link) => {
@@ -3057,13 +3018,13 @@ var linkDepsJunction = async (link, depsDir) => {
3057
3018
  return;
3058
3019
  }
3059
3020
  try {
3060
- if (resolve6(dirname6(link), await readlink(link)) === resolve6(depsDir)) {
3021
+ if (resolve6(dirname7(link), await readlink(link)) === resolve6(depsDir)) {
3061
3022
  return;
3062
3023
  }
3063
3024
  } catch {}
3064
3025
  await rm2(link, { force: true });
3065
3026
  }
3066
- await mkdir2(dirname6(link), { recursive: true });
3027
+ await mkdir2(dirname7(link), { recursive: true });
3067
3028
  await symlinkDir(depsDir, link);
3068
3029
  };
3069
3030
  var readPkgVersion = (pkgJsonPath) => {
@@ -3512,6 +3473,7 @@ var buildRuntimeData = (project) => {
3512
3473
  description: config.description,
3513
3474
  discovery: {
3514
3475
  agentReadability: config.seo.agentReadability,
3476
+ aiCatalog: hasAiCatalog(config),
3515
3477
  api: config.ai.api,
3516
3478
  llmsTxt: config.ai.llmsTxt.enabled,
3517
3479
  sitemap: config.seo.sitemap && Boolean(config.deployment.site)
@@ -4066,7 +4028,7 @@ var generateRuntime = async (project) => {
4066
4028
  return { structuralChange: structural.some(Boolean), warnings };
4067
4029
  };
4068
4030
 
4069
- export { SIGNATURES_DIRECTORY_PATH, SIGNATURES_DIRECTORY_TYPE, publishBuildProject, refreshBlumeContent, showBlumeErrorOverlay, ogCacheDir, pruneCardCache, cardCacheTally, buildAskData, buildMcpDiscovery, buildMcpServerCard, buildThemeCss, buildReferenceFiles, tailwindEntryTemplate, examplesEntryTemplate, rebaseSourceDirectives, twoslashCss, planComponentSlots, discoverIslands, EXAMPLE_SCAN_GLOB, exampleScanRoots, discoverExamples, exampleMarkdownLookup, detectNeedsReact, detectUsesMath, collectStaged, buildRuntimeData, languageIconCssFor, clientFeaturesFor, generateRuntime };
4031
+ export { SIGNATURES_DIRECTORY_PATH, SIGNATURES_DIRECTORY_TYPE, publishBuildProject, refreshBlumeContent, showBlumeErrorOverlay, ogCacheDir, pruneCardCache, cardCacheTally, buildAskData, buildThemeCss, buildReferenceFiles, tailwindEntryTemplate, examplesEntryTemplate, rebaseSourceDirectives, twoslashCss, planComponentSlots, discoverIslands, EXAMPLE_SCAN_GLOB, exampleScanRoots, discoverExamples, exampleMarkdownLookup, detectNeedsReact, detectUsesMath, collectStaged, buildRuntimeData, languageIconCssFor, clientFeaturesFor, generateRuntime };
4070
4032
 
4071
- //# debugId=851B0C91E17092DD64756E2164756E21
4072
- //# sourceMappingURL=chunk-5n7t497w.js.map
4033
+ //# debugId=54E9E2185852692F64756E2164756E21
4034
+ //# sourceMappingURL=chunk-k79xp7av.js.map