blume 0.5.4 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/cli/index.js +380 -157
  2. package/dist/cli/index.js.map +23 -22
  3. package/dist/types/core/data.d.ts +4 -0
  4. package/dist/types/core/i18n-ui.d.ts +50 -0
  5. package/dist/types/core/schema.d.ts +328 -39
  6. package/dist/types/core/types.d.ts +8 -0
  7. package/docs/configuration/ai.mdx +56 -0
  8. package/docs/configuration/seo.mdx +59 -1
  9. package/docs/configuration/theming.mdx +14 -9
  10. package/docs/content/meta.mdx +3 -17
  11. package/docs/content/navigation.mdx +41 -4
  12. package/package.json +3 -1
  13. package/src/ai/agent-readability.ts +97 -0
  14. package/src/ai/ask-context.ts +131 -8
  15. package/src/ai/ask-data.ts +4 -1
  16. package/src/astro/generate.ts +4 -0
  17. package/src/astro/templates.ts +24 -5
  18. package/src/cli/commands/build.ts +15 -0
  19. package/src/cli/commands/dev.ts +31 -14
  20. package/src/cli/dev-lock.ts +94 -21
  21. package/src/components/content/GithubInfo.astro +11 -10
  22. package/src/components/content/TypeTable.astro +8 -3
  23. package/src/components/islands/AskAI.astro +66 -2
  24. package/src/components/islands/ask-ai.tsx +289 -53
  25. package/src/components/layout/Header.astro +1 -1
  26. package/src/components/layout/NavTree.astro +1 -1
  27. package/src/components/layout/PageActions.astro +73 -30
  28. package/src/components/layout/RootLayout.astro +48 -2
  29. package/src/core/data.ts +4 -0
  30. package/src/core/graph.ts +7 -2
  31. package/src/core/i18n-ui.ts +5 -0
  32. package/src/core/nav-diagnostics.ts +7 -0
  33. package/src/core/navigation.ts +38 -12
  34. package/src/core/schema.ts +124 -9
  35. package/src/core/sources/filesystem.ts +5 -1
  36. package/src/core/sources/watch.ts +43 -12
  37. package/src/core/types.ts +9 -0
  38. package/src/deploy/robots.ts +37 -4
  39. package/src/openapi/scalar.ts +1 -1
  40. package/src/search/documents.ts +9 -2
  41. package/src/theme/palette.ts +21 -14
@@ -426,21 +426,18 @@ declare const sidebarDisplaySchema: z.ZodEnum<["flat", "group", "page"]>;
426
426
  export type SidebarDisplay = z.infer<typeof sidebarDisplaySchema>;
427
427
  export declare const folderMetaSchema: z.ZodObject<{
428
428
  collapsed: z.ZodOptional<z.ZodBoolean>;
429
- display: z.ZodOptional<z.ZodEnum<["flat", "group", "page"]>>;
430
429
  icon: z.ZodOptional<z.ZodString>;
431
430
  order: z.ZodOptional<z.ZodNumber>;
432
431
  /** Explicit child ordering by slug segment (without numeric prefix). */
433
432
  pages: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
434
433
  title: z.ZodOptional<z.ZodString>;
435
434
  }, "strict", z.ZodTypeAny, {
436
- display?: "flat" | "page" | "group" | undefined;
437
435
  title?: string | undefined;
438
436
  icon?: string | undefined;
439
437
  order?: number | undefined;
440
438
  pages?: string[] | undefined;
441
439
  collapsed?: boolean | undefined;
442
440
  }, {
443
- display?: "flat" | "page" | "group" | undefined;
444
441
  title?: string | undefined;
445
442
  icon?: string | undefined;
446
443
  order?: number | undefined;
@@ -708,10 +705,24 @@ declare const aiConfigSchema: z.ZodObject<{
708
705
  enabled: z.ZodDefault<z.ZodBoolean>;
709
706
  model: z.ZodDefault<z.ZodString>;
710
707
  provider: z.ZodDefault<z.ZodEnum<["gateway", "openrouter", "llmgateway", "inkeep", "openai-compatible"]>>;
708
+ suggestions: z.ZodDefault<z.ZodArray<z.ZodObject<{
709
+ icon: z.ZodOptional<z.ZodString>;
710
+ label: z.ZodString;
711
+ }, "strict", z.ZodTypeAny, {
712
+ label: string;
713
+ icon?: string | undefined;
714
+ }, {
715
+ label: string;
716
+ icon?: string | undefined;
717
+ }>, "many">>;
711
718
  }, "strict", z.ZodTypeAny, {
712
719
  enabled: boolean;
713
720
  model: string;
714
721
  provider: "gateway" | "openrouter" | "llmgateway" | "inkeep" | "openai-compatible";
722
+ suggestions: {
723
+ label: string;
724
+ icon?: string | undefined;
725
+ }[];
715
726
  apiKeyEnv?: string | undefined;
716
727
  baseUrl?: string | undefined;
717
728
  }, {
@@ -720,10 +731,18 @@ declare const aiConfigSchema: z.ZodObject<{
720
731
  enabled?: boolean | undefined;
721
732
  model?: string | undefined;
722
733
  provider?: "gateway" | "openrouter" | "llmgateway" | "inkeep" | "openai-compatible" | undefined;
734
+ suggestions?: {
735
+ label: string;
736
+ icon?: string | undefined;
737
+ }[] | undefined;
723
738
  }>, {
724
739
  enabled: boolean;
725
740
  model: string;
726
741
  provider: "gateway" | "openrouter" | "llmgateway" | "inkeep" | "openai-compatible";
742
+ suggestions: {
743
+ label: string;
744
+ icon?: string | undefined;
745
+ }[];
727
746
  apiKeyEnv?: string | undefined;
728
747
  baseUrl?: string | undefined;
729
748
  }, {
@@ -732,6 +751,10 @@ declare const aiConfigSchema: z.ZodObject<{
732
751
  enabled?: boolean | undefined;
733
752
  model?: string | undefined;
734
753
  provider?: "gateway" | "openrouter" | "llmgateway" | "inkeep" | "openai-compatible" | undefined;
754
+ suggestions?: {
755
+ label: string;
756
+ icon?: string | undefined;
757
+ }[] | undefined;
735
758
  }>>;
736
759
  llmsTxt: z.ZodDefault<z.ZodBoolean>;
737
760
  }, "strict", z.ZodTypeAny, {
@@ -740,6 +763,10 @@ declare const aiConfigSchema: z.ZodObject<{
740
763
  enabled: boolean;
741
764
  model: string;
742
765
  provider: "gateway" | "openrouter" | "llmgateway" | "inkeep" | "openai-compatible";
766
+ suggestions: {
767
+ label: string;
768
+ icon?: string | undefined;
769
+ }[];
743
770
  apiKeyEnv?: string | undefined;
744
771
  baseUrl?: string | undefined;
745
772
  } | undefined;
@@ -750,6 +777,10 @@ declare const aiConfigSchema: z.ZodObject<{
750
777
  enabled?: boolean | undefined;
751
778
  model?: string | undefined;
752
779
  provider?: "gateway" | "openrouter" | "llmgateway" | "inkeep" | "openai-compatible" | undefined;
780
+ suggestions?: {
781
+ label: string;
782
+ icon?: string | undefined;
783
+ }[] | undefined;
753
784
  } | undefined;
754
785
  llmsTxt?: boolean | undefined;
755
786
  }>;
@@ -844,6 +875,34 @@ declare const i18nConfigSchema: z.ZodEffects<z.ZodObject<{
844
875
  parser?: "dir" | "dot" | undefined;
845
876
  ui?: Record<string, Record<string, Record<string, string>>> | undefined;
846
877
  }>;
878
+ /**
879
+ * Content signals accept a boolean shorthand or a per-signal object, and
880
+ * normalize to `{ search, aiInput, aiTrain }` — or `null` when disabled, so
881
+ * robots.txt omits the declaration entirely. On by default (`true`): Blume
882
+ * declares the docs open to search and agents. `false` opts out; an object
883
+ * restricts individual signals (unset signals stay `yes`).
884
+ */
885
+ declare const contentSignalsSchema: z.ZodEffects<z.ZodUnion<[z.ZodBoolean, z.ZodObject<{
886
+ aiInput: z.ZodDefault<z.ZodBoolean>;
887
+ aiTrain: z.ZodDefault<z.ZodBoolean>;
888
+ search: z.ZodDefault<z.ZodBoolean>;
889
+ }, "strict", z.ZodTypeAny, {
890
+ search: boolean;
891
+ aiInput: boolean;
892
+ aiTrain: boolean;
893
+ }, {
894
+ search?: boolean | undefined;
895
+ aiInput?: boolean | undefined;
896
+ aiTrain?: boolean | undefined;
897
+ }>]>, {
898
+ search: boolean;
899
+ aiInput: boolean;
900
+ aiTrain: boolean;
901
+ } | null, boolean | {
902
+ search?: boolean | undefined;
903
+ aiInput?: boolean | undefined;
904
+ aiTrain?: boolean | undefined;
905
+ }>;
847
906
  /**
848
907
  * A single spec rendered by the API reference. `spec` is a local path or an
849
908
  * `http(s)` URL (OpenAPI for the Blume renderer; OpenAPI or AsyncAPI for Scalar).
@@ -873,10 +932,24 @@ export declare const blumeConfigSchema: z.ZodObject<{
873
932
  enabled: z.ZodDefault<z.ZodBoolean>;
874
933
  model: z.ZodDefault<z.ZodString>;
875
934
  provider: z.ZodDefault<z.ZodEnum<["gateway", "openrouter", "llmgateway", "inkeep", "openai-compatible"]>>;
935
+ suggestions: z.ZodDefault<z.ZodArray<z.ZodObject<{
936
+ icon: z.ZodOptional<z.ZodString>;
937
+ label: z.ZodString;
938
+ }, "strict", z.ZodTypeAny, {
939
+ label: string;
940
+ icon?: string | undefined;
941
+ }, {
942
+ label: string;
943
+ icon?: string | undefined;
944
+ }>, "many">>;
876
945
  }, "strict", z.ZodTypeAny, {
877
946
  enabled: boolean;
878
947
  model: string;
879
948
  provider: "gateway" | "openrouter" | "llmgateway" | "inkeep" | "openai-compatible";
949
+ suggestions: {
950
+ label: string;
951
+ icon?: string | undefined;
952
+ }[];
880
953
  apiKeyEnv?: string | undefined;
881
954
  baseUrl?: string | undefined;
882
955
  }, {
@@ -885,10 +958,18 @@ export declare const blumeConfigSchema: z.ZodObject<{
885
958
  enabled?: boolean | undefined;
886
959
  model?: string | undefined;
887
960
  provider?: "gateway" | "openrouter" | "llmgateway" | "inkeep" | "openai-compatible" | undefined;
961
+ suggestions?: {
962
+ label: string;
963
+ icon?: string | undefined;
964
+ }[] | undefined;
888
965
  }>, {
889
966
  enabled: boolean;
890
967
  model: string;
891
968
  provider: "gateway" | "openrouter" | "llmgateway" | "inkeep" | "openai-compatible";
969
+ suggestions: {
970
+ label: string;
971
+ icon?: string | undefined;
972
+ }[];
892
973
  apiKeyEnv?: string | undefined;
893
974
  baseUrl?: string | undefined;
894
975
  }, {
@@ -897,6 +978,10 @@ export declare const blumeConfigSchema: z.ZodObject<{
897
978
  enabled?: boolean | undefined;
898
979
  model?: string | undefined;
899
980
  provider?: "gateway" | "openrouter" | "llmgateway" | "inkeep" | "openai-compatible" | undefined;
981
+ suggestions?: {
982
+ label: string;
983
+ icon?: string | undefined;
984
+ }[] | undefined;
900
985
  }>>;
901
986
  llmsTxt: z.ZodDefault<z.ZodBoolean>;
902
987
  }, "strict", z.ZodTypeAny, {
@@ -905,6 +990,10 @@ export declare const blumeConfigSchema: z.ZodObject<{
905
990
  enabled: boolean;
906
991
  model: string;
907
992
  provider: "gateway" | "openrouter" | "llmgateway" | "inkeep" | "openai-compatible";
993
+ suggestions: {
994
+ label: string;
995
+ icon?: string | undefined;
996
+ }[];
908
997
  apiKeyEnv?: string | undefined;
909
998
  baseUrl?: string | undefined;
910
999
  } | undefined;
@@ -915,6 +1004,10 @@ export declare const blumeConfigSchema: z.ZodObject<{
915
1004
  enabled?: boolean | undefined;
916
1005
  model?: string | undefined;
917
1006
  provider?: "gateway" | "openrouter" | "llmgateway" | "inkeep" | "openai-compatible" | undefined;
1007
+ suggestions?: {
1008
+ label: string;
1009
+ icon?: string | undefined;
1010
+ }[] | undefined;
918
1011
  } | undefined;
919
1012
  llmsTxt?: boolean | undefined;
920
1013
  }>>;
@@ -1723,6 +1816,20 @@ export declare const blumeConfigSchema: z.ZodObject<{
1723
1816
  instructions?: string | undefined;
1724
1817
  }>>;
1725
1818
  navigation: z.ZodDefault<z.ZodObject<{
1819
+ /** Pinned links shown above the generated sidebar sections. */
1820
+ featured: z.ZodDefault<z.ZodArray<z.ZodObject<{
1821
+ href: z.ZodString;
1822
+ icon: z.ZodOptional<z.ZodString>;
1823
+ label: z.ZodString;
1824
+ }, "strict", z.ZodTypeAny, {
1825
+ label: string;
1826
+ href: string;
1827
+ icon?: string | undefined;
1828
+ }, {
1829
+ label: string;
1830
+ href: string;
1831
+ icon?: string | undefined;
1832
+ }>, "many">>;
1726
1833
  /** Show a GitHub repo link in the header (requires `github` configured). */
1727
1834
  repo: z.ZodDefault<z.ZodBoolean>;
1728
1835
  selectors: z.ZodDefault<z.ZodArray<z.ZodObject<{
@@ -1768,8 +1875,28 @@ export declare const blumeConfigSchema: z.ZodObject<{
1768
1875
  tag?: string | undefined;
1769
1876
  }[] | undefined;
1770
1877
  }>, "many">>;
1771
- /** Explicit sidebar override; when omitted the sidebar is generated. */
1772
- sidebar: z.ZodOptional<z.ZodArray<z.ZodType<SidebarItemConfig, z.ZodTypeDef, SidebarItemConfig>, "many">>;
1878
+ /**
1879
+ * Sidebar behavior. `display` sets how every group renders (a group in an
1880
+ * explicit `items` config may still override it); `items` is an explicit
1881
+ * sidebar — when omitted the sidebar is generated from the content tree.
1882
+ * A bare array is shorthand for `{ items }`.
1883
+ */
1884
+ sidebar: z.ZodEffects<z.ZodDefault<z.ZodUnion<[z.ZodArray<z.ZodType<SidebarItemConfig, z.ZodTypeDef, SidebarItemConfig>, "many">, z.ZodObject<{
1885
+ display: z.ZodDefault<z.ZodEnum<["flat", "group", "page"]>>;
1886
+ items: z.ZodOptional<z.ZodArray<z.ZodType<SidebarItemConfig, z.ZodTypeDef, SidebarItemConfig>, "many">>;
1887
+ }, "strict", z.ZodTypeAny, {
1888
+ display: "flat" | "page" | "group";
1889
+ items?: SidebarItemConfig[] | undefined;
1890
+ }, {
1891
+ display?: "flat" | "page" | "group" | undefined;
1892
+ items?: SidebarItemConfig[] | undefined;
1893
+ }>]>>, {
1894
+ display: "flat" | "page" | "group";
1895
+ items?: SidebarItemConfig[] | undefined;
1896
+ }, SidebarItemConfig[] | {
1897
+ display?: "flat" | "page" | "group" | undefined;
1898
+ items?: SidebarItemConfig[] | undefined;
1899
+ } | undefined>;
1773
1900
  tabs: z.ZodOptional<z.ZodArray<z.ZodObject<{
1774
1901
  icon: z.ZodOptional<z.ZodString>;
1775
1902
  items: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -1817,7 +1944,16 @@ export declare const blumeConfigSchema: z.ZodObject<{
1817
1944
  }[] | undefined;
1818
1945
  }>, "many">>;
1819
1946
  }, "strict", z.ZodTypeAny, {
1947
+ sidebar: {
1948
+ display: "flat" | "page" | "group";
1949
+ items?: SidebarItemConfig[] | undefined;
1950
+ };
1820
1951
  repo: boolean;
1952
+ featured: {
1953
+ label: string;
1954
+ href: string;
1955
+ icon?: string | undefined;
1956
+ }[];
1821
1957
  selectors: {
1822
1958
  label: string;
1823
1959
  items: {
@@ -1829,7 +1965,6 @@ export declare const blumeConfigSchema: z.ZodObject<{
1829
1965
  }[];
1830
1966
  kind: "version" | "dropdown" | "language" | "product";
1831
1967
  }[];
1832
- sidebar?: SidebarItemConfig[] | undefined;
1833
1968
  tabs?: {
1834
1969
  path: string;
1835
1970
  label: string;
@@ -1843,8 +1978,16 @@ export declare const blumeConfigSchema: z.ZodObject<{
1843
1978
  }[] | undefined;
1844
1979
  }[] | undefined;
1845
1980
  }, {
1846
- sidebar?: SidebarItemConfig[] | undefined;
1981
+ sidebar?: SidebarItemConfig[] | {
1982
+ display?: "flat" | "page" | "group" | undefined;
1983
+ items?: SidebarItemConfig[] | undefined;
1984
+ } | undefined;
1847
1985
  repo?: boolean | undefined;
1986
+ featured?: {
1987
+ label: string;
1988
+ href: string;
1989
+ icon?: string | undefined;
1990
+ }[] | undefined;
1848
1991
  selectors?: {
1849
1992
  label: string;
1850
1993
  kind: "version" | "dropdown" | "language" | "product";
@@ -2104,6 +2247,34 @@ export declare const blumeConfigSchema: z.ZodObject<{
2104
2247
  } | undefined;
2105
2248
  }>>;
2106
2249
  seo: z.ZodDefault<z.ZodObject<{
2250
+ /**
2251
+ * Emit `agent-readability.json` at the site root: a manifest that indexes
2252
+ * the agent-facing surface (llms.txt, Markdown mirrors, MCP server, feeds)
2253
+ * so agents can discover it without scraping HTML.
2254
+ */
2255
+ agentReadability: z.ZodDefault<z.ZodBoolean>;
2256
+ /** robots.txt `Content-Signal` usage declaration (on by default). */
2257
+ contentSignals: z.ZodDefault<z.ZodEffects<z.ZodUnion<[z.ZodBoolean, z.ZodObject<{
2258
+ aiInput: z.ZodDefault<z.ZodBoolean>;
2259
+ aiTrain: z.ZodDefault<z.ZodBoolean>;
2260
+ search: z.ZodDefault<z.ZodBoolean>;
2261
+ }, "strict", z.ZodTypeAny, {
2262
+ search: boolean;
2263
+ aiInput: boolean;
2264
+ aiTrain: boolean;
2265
+ }, {
2266
+ search?: boolean | undefined;
2267
+ aiInput?: boolean | undefined;
2268
+ aiTrain?: boolean | undefined;
2269
+ }>]>, {
2270
+ search: boolean;
2271
+ aiInput: boolean;
2272
+ aiTrain: boolean;
2273
+ } | null, boolean | {
2274
+ search?: boolean | undefined;
2275
+ aiInput?: boolean | undefined;
2276
+ aiTrain?: boolean | undefined;
2277
+ }>>;
2107
2278
  og: z.ZodDefault<z.ZodObject<{
2108
2279
  /**
2109
2280
  * Generate a per-page Open Graph image. Defaults to on once a deployment
@@ -2139,6 +2310,12 @@ export declare const blumeConfigSchema: z.ZodObject<{
2139
2310
  /** Emit schema.org JSON-LD in each page's <head>. */
2140
2311
  structuredData: z.ZodDefault<z.ZodBoolean>;
2141
2312
  }, "strict", z.ZodTypeAny, {
2313
+ agentReadability: boolean;
2314
+ contentSignals: {
2315
+ search: boolean;
2316
+ aiInput: boolean;
2317
+ aiTrain: boolean;
2318
+ } | null;
2142
2319
  og: {
2143
2320
  enabled?: boolean | undefined;
2144
2321
  };
@@ -2151,6 +2328,12 @@ export declare const blumeConfigSchema: z.ZodObject<{
2151
2328
  sitemap: boolean;
2152
2329
  structuredData: boolean;
2153
2330
  }, {
2331
+ agentReadability?: boolean | undefined;
2332
+ contentSignals?: boolean | {
2333
+ search?: boolean | undefined;
2334
+ aiInput?: boolean | undefined;
2335
+ aiTrain?: boolean | undefined;
2336
+ } | undefined;
2154
2337
  og?: {
2155
2338
  enabled?: boolean | undefined;
2156
2339
  } | undefined;
@@ -2164,13 +2347,55 @@ export declare const blumeConfigSchema: z.ZodObject<{
2164
2347
  structuredData?: boolean | undefined;
2165
2348
  }>>;
2166
2349
  theme: z.ZodDefault<z.ZodObject<{
2167
- accent: z.ZodDefault<z.ZodString>;
2168
- accentDark: z.ZodOptional<z.ZodString>;
2350
+ accent: z.ZodEffects<z.ZodDefault<z.ZodUnion<[z.ZodString, z.ZodObject<{
2351
+ dark: z.ZodString;
2352
+ light: z.ZodString;
2353
+ }, "strict", z.ZodTypeAny, {
2354
+ dark: string;
2355
+ light: string;
2356
+ }, {
2357
+ dark: string;
2358
+ light: string;
2359
+ }>]>>, {
2360
+ dark: string;
2361
+ light: string;
2362
+ }, string | {
2363
+ dark: string;
2364
+ light: string;
2365
+ } | undefined>;
2169
2366
  action: z.ZodOptional<z.ZodString>;
2170
- background: z.ZodOptional<z.ZodString>;
2171
- backgroundDark: z.ZodOptional<z.ZodString>;
2172
- backgroundImage: z.ZodOptional<z.ZodString>;
2173
- backgroundImageDark: z.ZodOptional<z.ZodString>;
2367
+ background: z.ZodEffects<z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
2368
+ dark: z.ZodOptional<z.ZodString>;
2369
+ light: z.ZodOptional<z.ZodString>;
2370
+ }, "strict", z.ZodTypeAny, {
2371
+ dark?: string | undefined;
2372
+ light?: string | undefined;
2373
+ }, {
2374
+ dark?: string | undefined;
2375
+ light?: string | undefined;
2376
+ }>]>>, {
2377
+ dark?: string | undefined;
2378
+ light?: string | undefined;
2379
+ } | undefined, string | {
2380
+ dark?: string | undefined;
2381
+ light?: string | undefined;
2382
+ } | undefined>;
2383
+ backgroundImage: z.ZodEffects<z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
2384
+ dark: z.ZodOptional<z.ZodString>;
2385
+ light: z.ZodOptional<z.ZodString>;
2386
+ }, "strict", z.ZodTypeAny, {
2387
+ dark?: string | undefined;
2388
+ light?: string | undefined;
2389
+ }, {
2390
+ dark?: string | undefined;
2391
+ light?: string | undefined;
2392
+ }>]>>, {
2393
+ dark?: string | undefined;
2394
+ light?: string | undefined;
2395
+ } | undefined, string | {
2396
+ dark?: string | undefined;
2397
+ light?: string | undefined;
2398
+ } | undefined>;
2174
2399
  fonts: z.ZodDefault<z.ZodObject<{
2175
2400
  body: z.ZodDefault<z.ZodEffects<z.ZodString, "dm-sans" | "figtree" | "fira-code" | "geist" | "geist-mono" | "ibm-plex-mono" | "ibm-plex-sans" | "ibm-plex-serif" | "inter" | "inter-tight" | "jetbrains-mono" | "lora" | "manrope" | "merriweather" | "open-sans" | "playfair-display" | "plus-jakarta-sans" | "roboto" | "roboto-mono" | "source-code-pro" | "source-sans-3" | "source-serif-4" | "space-grotesk" | "space-mono" | "work-sans", string>>;
2176
2401
  display: z.ZodDefault<z.ZodEffects<z.ZodString, "dm-sans" | "figtree" | "fira-code" | "geist" | "geist-mono" | "ibm-plex-mono" | "ibm-plex-sans" | "ibm-plex-serif" | "inter" | "inter-tight" | "jetbrains-mono" | "lora" | "manrope" | "merriweather" | "open-sans" | "playfair-display" | "plus-jakarta-sans" | "roboto" | "roboto-mono" | "source-code-pro" | "source-sans-3" | "source-serif-4" | "space-grotesk" | "space-mono" | "work-sans", string>>;
@@ -2190,7 +2415,10 @@ export declare const blumeConfigSchema: z.ZodObject<{
2190
2415
  strict: z.ZodDefault<z.ZodBoolean>;
2191
2416
  }, "strict", z.ZodTypeAny, {
2192
2417
  strict: boolean;
2193
- accent: string;
2418
+ accent: {
2419
+ dark: string;
2420
+ light: string;
2421
+ };
2194
2422
  fonts: {
2195
2423
  mono: "dm-sans" | "figtree" | "fira-code" | "geist" | "geist-mono" | "ibm-plex-mono" | "ibm-plex-sans" | "ibm-plex-serif" | "inter" | "inter-tight" | "jetbrains-mono" | "lora" | "manrope" | "merriweather" | "open-sans" | "playfair-display" | "plus-jakarta-sans" | "roboto" | "roboto-mono" | "source-code-pro" | "source-sans-3" | "source-serif-4" | "space-grotesk" | "space-mono" | "work-sans";
2196
2424
  display: "dm-sans" | "figtree" | "fira-code" | "geist" | "geist-mono" | "ibm-plex-mono" | "ibm-plex-sans" | "ibm-plex-serif" | "inter" | "inter-tight" | "jetbrains-mono" | "lora" | "manrope" | "merriweather" | "open-sans" | "playfair-display" | "plus-jakarta-sans" | "roboto" | "roboto-mono" | "source-code-pro" | "source-sans-3" | "source-serif-4" | "space-grotesk" | "space-mono" | "work-sans";
@@ -2199,21 +2427,30 @@ export declare const blumeConfigSchema: z.ZodObject<{
2199
2427
  layout: "sidebar";
2200
2428
  mode: "dark" | "light" | "system";
2201
2429
  radius: "md" | "none" | "sm" | "lg";
2202
- accentDark?: string | undefined;
2203
2430
  action?: string | undefined;
2204
- background?: string | undefined;
2205
- backgroundDark?: string | undefined;
2206
- backgroundImage?: string | undefined;
2207
- backgroundImageDark?: string | undefined;
2431
+ background?: {
2432
+ dark?: string | undefined;
2433
+ light?: string | undefined;
2434
+ } | undefined;
2435
+ backgroundImage?: {
2436
+ dark?: string | undefined;
2437
+ light?: string | undefined;
2438
+ } | undefined;
2208
2439
  }, {
2209
2440
  strict?: boolean | undefined;
2210
- accent?: string | undefined;
2211
- accentDark?: string | undefined;
2441
+ accent?: string | {
2442
+ dark: string;
2443
+ light: string;
2444
+ } | undefined;
2212
2445
  action?: string | undefined;
2213
- background?: string | undefined;
2214
- backgroundDark?: string | undefined;
2215
- backgroundImage?: string | undefined;
2216
- backgroundImageDark?: string | undefined;
2446
+ background?: string | {
2447
+ dark?: string | undefined;
2448
+ light?: string | undefined;
2449
+ } | undefined;
2450
+ backgroundImage?: string | {
2451
+ dark?: string | undefined;
2452
+ light?: string | undefined;
2453
+ } | undefined;
2217
2454
  fonts?: {
2218
2455
  mono?: string | undefined;
2219
2456
  display?: string | undefined;
@@ -2279,6 +2516,12 @@ export declare const blumeConfigSchema: z.ZodObject<{
2279
2516
  type: "git" | "frontmatter";
2280
2517
  };
2281
2518
  seo: {
2519
+ agentReadability: boolean;
2520
+ contentSignals: {
2521
+ search: boolean;
2522
+ aiInput: boolean;
2523
+ aiTrain: boolean;
2524
+ } | null;
2282
2525
  og: {
2283
2526
  enabled?: boolean | undefined;
2284
2527
  };
@@ -2297,6 +2540,10 @@ export declare const blumeConfigSchema: z.ZodObject<{
2297
2540
  enabled: boolean;
2298
2541
  model: string;
2299
2542
  provider: "gateway" | "openrouter" | "llmgateway" | "inkeep" | "openai-compatible";
2543
+ suggestions: {
2544
+ label: string;
2545
+ icon?: string | undefined;
2546
+ }[];
2300
2547
  apiKeyEnv?: string | undefined;
2301
2548
  baseUrl?: string | undefined;
2302
2549
  } | undefined;
@@ -2370,7 +2617,10 @@ export declare const blumeConfigSchema: z.ZodObject<{
2370
2617
  };
2371
2618
  theme: {
2372
2619
  strict: boolean;
2373
- accent: string;
2620
+ accent: {
2621
+ dark: string;
2622
+ light: string;
2623
+ };
2374
2624
  fonts: {
2375
2625
  mono: "dm-sans" | "figtree" | "fira-code" | "geist" | "geist-mono" | "ibm-plex-mono" | "ibm-plex-sans" | "ibm-plex-serif" | "inter" | "inter-tight" | "jetbrains-mono" | "lora" | "manrope" | "merriweather" | "open-sans" | "playfair-display" | "plus-jakarta-sans" | "roboto" | "roboto-mono" | "source-code-pro" | "source-sans-3" | "source-serif-4" | "space-grotesk" | "space-mono" | "work-sans";
2376
2626
  display: "dm-sans" | "figtree" | "fira-code" | "geist" | "geist-mono" | "ibm-plex-mono" | "ibm-plex-sans" | "ibm-plex-serif" | "inter" | "inter-tight" | "jetbrains-mono" | "lora" | "manrope" | "merriweather" | "open-sans" | "playfair-display" | "plus-jakarta-sans" | "roboto" | "roboto-mono" | "source-code-pro" | "source-sans-3" | "source-serif-4" | "space-grotesk" | "space-mono" | "work-sans";
@@ -2379,12 +2629,15 @@ export declare const blumeConfigSchema: z.ZodObject<{
2379
2629
  layout: "sidebar";
2380
2630
  mode: "dark" | "light" | "system";
2381
2631
  radius: "md" | "none" | "sm" | "lg";
2382
- accentDark?: string | undefined;
2383
2632
  action?: string | undefined;
2384
- background?: string | undefined;
2385
- backgroundDark?: string | undefined;
2386
- backgroundImage?: string | undefined;
2387
- backgroundImageDark?: string | undefined;
2633
+ background?: {
2634
+ dark?: string | undefined;
2635
+ light?: string | undefined;
2636
+ } | undefined;
2637
+ backgroundImage?: {
2638
+ dark?: string | undefined;
2639
+ light?: string | undefined;
2640
+ } | undefined;
2388
2641
  };
2389
2642
  asyncapi: {
2390
2643
  enabled: boolean;
@@ -2431,7 +2684,16 @@ export declare const blumeConfigSchema: z.ZodObject<{
2431
2684
  instructions?: string | undefined;
2432
2685
  };
2433
2686
  navigation: {
2687
+ sidebar: {
2688
+ display: "flat" | "page" | "group";
2689
+ items?: SidebarItemConfig[] | undefined;
2690
+ };
2434
2691
  repo: boolean;
2692
+ featured: {
2693
+ label: string;
2694
+ href: string;
2695
+ icon?: string | undefined;
2696
+ }[];
2435
2697
  selectors: {
2436
2698
  label: string;
2437
2699
  items: {
@@ -2443,7 +2705,6 @@ export declare const blumeConfigSchema: z.ZodObject<{
2443
2705
  }[];
2444
2706
  kind: "version" | "dropdown" | "language" | "product";
2445
2707
  }[];
2446
- sidebar?: SidebarItemConfig[] | undefined;
2447
2708
  tabs?: {
2448
2709
  path: string;
2449
2710
  label: string;
@@ -2564,6 +2825,12 @@ export declare const blumeConfigSchema: z.ZodObject<{
2564
2825
  type?: "git" | "frontmatter" | undefined;
2565
2826
  } | undefined;
2566
2827
  seo?: {
2828
+ agentReadability?: boolean | undefined;
2829
+ contentSignals?: boolean | {
2830
+ search?: boolean | undefined;
2831
+ aiInput?: boolean | undefined;
2832
+ aiTrain?: boolean | undefined;
2833
+ } | undefined;
2567
2834
  og?: {
2568
2835
  enabled?: boolean | undefined;
2569
2836
  } | undefined;
@@ -2583,6 +2850,10 @@ export declare const blumeConfigSchema: z.ZodObject<{
2583
2850
  enabled?: boolean | undefined;
2584
2851
  model?: string | undefined;
2585
2852
  provider?: "gateway" | "openrouter" | "llmgateway" | "inkeep" | "openai-compatible" | undefined;
2853
+ suggestions?: {
2854
+ label: string;
2855
+ icon?: string | undefined;
2856
+ }[] | undefined;
2586
2857
  } | undefined;
2587
2858
  llmsTxt?: boolean | undefined;
2588
2859
  } | undefined;
@@ -2668,13 +2939,19 @@ export declare const blumeConfigSchema: z.ZodObject<{
2668
2939
  } | undefined;
2669
2940
  theme?: {
2670
2941
  strict?: boolean | undefined;
2671
- accent?: string | undefined;
2672
- accentDark?: string | undefined;
2942
+ accent?: string | {
2943
+ dark: string;
2944
+ light: string;
2945
+ } | undefined;
2673
2946
  action?: string | undefined;
2674
- background?: string | undefined;
2675
- backgroundDark?: string | undefined;
2676
- backgroundImage?: string | undefined;
2677
- backgroundImageDark?: string | undefined;
2947
+ background?: string | {
2948
+ dark?: string | undefined;
2949
+ light?: string | undefined;
2950
+ } | undefined;
2951
+ backgroundImage?: string | {
2952
+ dark?: string | undefined;
2953
+ light?: string | undefined;
2954
+ } | undefined;
2678
2955
  fonts?: {
2679
2956
  mono?: string | undefined;
2680
2957
  display?: string | undefined;
@@ -2765,8 +3042,16 @@ export declare const blumeConfigSchema: z.ZodObject<{
2765
3042
  instructions?: string | undefined;
2766
3043
  } | undefined;
2767
3044
  navigation?: {
2768
- sidebar?: SidebarItemConfig[] | undefined;
3045
+ sidebar?: SidebarItemConfig[] | {
3046
+ display?: "flat" | "page" | "group" | undefined;
3047
+ items?: SidebarItemConfig[] | undefined;
3048
+ } | undefined;
2769
3049
  repo?: boolean | undefined;
3050
+ featured?: {
3051
+ label: string;
3052
+ href: string;
3053
+ icon?: string | undefined;
3054
+ }[] | undefined;
2770
3055
  selectors?: {
2771
3056
  label: string;
2772
3057
  kind: "version" | "dropdown" | "language" | "product";
@@ -2821,4 +3106,8 @@ export type LocaleConfig = z.infer<typeof localeSchema>;
2821
3106
  export type BlumeConfig = z.input<typeof blumeConfigSchema>;
2822
3107
  /** A configured search backend. */
2823
3108
  export type SearchProvider = (typeof searchProviders)[number];
3109
+ /** Resolved robots.txt `Content-Signal` preferences (`null` when disabled). */
3110
+ export type ContentSignals = z.infer<typeof contentSignalsSchema>;
3111
+ /** The resolved per-signal policy object (present when signals are enabled). */
3112
+ export type ContentSignalPolicy = NonNullable<ContentSignals>;
2824
3113
  export {};
@@ -168,11 +168,19 @@ export interface NavSelector {
168
168
  kind: "dropdown" | "language" | "product" | "version";
169
169
  items: NavSelectorItem[];
170
170
  }
171
+ /** A pinned link rendered above the sidebar sections (external or internal). */
172
+ export interface FeaturedLink {
173
+ label: string;
174
+ href: string;
175
+ icon?: string;
176
+ }
171
177
  /** The complete navigation model derived from the content graph. */
172
178
  export interface Navigation {
173
179
  tabs: NavTab[];
174
180
  selectors: NavSelector[];
175
181
  sidebar: NavNode[];
182
+ /** Pinned links shown above the sidebar sections, unscoped by tab. */
183
+ featured: FeaturedLink[];
176
184
  /** Repo URL for the header link, or null when hidden (`navigation.repo`). */
177
185
  repoUrl?: string | null;
178
186
  }