blume 0.5.4 → 0.6.1

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 (57) hide show
  1. package/dist/cli/index.js +759 -406
  2. package/dist/cli/index.js.map +27 -25
  3. package/dist/types/core/config-input.d.ts +759 -0
  4. package/dist/types/core/config.d.ts +126 -3
  5. package/dist/types/core/data.d.ts +4 -0
  6. package/dist/types/core/i18n-ui.d.ts +50 -0
  7. package/dist/types/core/schema.d.ts +334 -62
  8. package/dist/types/core/types.d.ts +8 -0
  9. package/dist/types/index.d.ts +2 -1
  10. package/docs/advanced/changelog.mdx +10 -2
  11. package/docs/configuration/ai.mdx +56 -0
  12. package/docs/configuration/index.mdx +0 -2
  13. package/docs/configuration/seo.mdx +59 -1
  14. package/docs/configuration/theming.mdx +14 -9
  15. package/docs/content/meta.mdx +3 -17
  16. package/docs/content/navigation.mdx +41 -4
  17. package/docs/content/syntax.mdx +4 -8
  18. package/package.json +3 -1
  19. package/src/ai/agent-readability.ts +97 -0
  20. package/src/ai/ask-context.ts +131 -8
  21. package/src/ai/ask-data.ts +4 -1
  22. package/src/astro/generate.ts +40 -11
  23. package/src/astro/templates.ts +90 -10
  24. package/src/cli/commands/build.ts +41 -1
  25. package/src/cli/commands/dev.ts +31 -14
  26. package/src/cli/dev-lock.ts +94 -21
  27. package/src/components/content/GithubInfo.astro +11 -10
  28. package/src/components/content/TypeTable.astro +8 -3
  29. package/src/components/content/Update.astro +12 -2
  30. package/src/components/content/changelog-element.ts +62 -0
  31. package/src/components/islands/AskAI.astro +66 -2
  32. package/src/components/islands/ask-ai.tsx +289 -53
  33. package/src/components/layout/Header.astro +1 -1
  34. package/src/components/layout/NavTree.astro +1 -1
  35. package/src/components/layout/PageActions.astro +73 -30
  36. package/src/components/layout/RootLayout.astro +79 -10
  37. package/src/core/config-input.ts +933 -0
  38. package/src/core/config.ts +126 -3
  39. package/src/core/data.ts +4 -0
  40. package/src/core/graph.ts +7 -2
  41. package/src/core/i18n-ui.ts +5 -0
  42. package/src/core/nav-diagnostics.ts +7 -0
  43. package/src/core/navigation.ts +38 -12
  44. package/src/core/schema.ts +130 -22
  45. package/src/core/sources/filesystem.ts +5 -1
  46. package/src/core/sources/watch.ts +43 -12
  47. package/src/core/types.ts +9 -0
  48. package/src/deploy/adapter-output.ts +82 -0
  49. package/src/deploy/robots.ts +37 -4
  50. package/src/index.ts +1 -1
  51. package/src/markdown/index.ts +28 -30
  52. package/src/markdown/math.ts +3 -2
  53. package/src/openapi/scalar.ts +1 -1
  54. package/src/registry/eject.ts +21 -14
  55. package/src/search/documents.ts +9 -2
  56. package/src/theme/entry.ts +7 -3
  57. 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
  }>>;
@@ -1615,12 +1708,6 @@ export declare const blumeConfigSchema: z.ZodObject<{
1615
1708
  * …). On by default; recognized languages only.
1616
1709
  */
1617
1710
  icons: z.ZodDefault<z.ZodBoolean>;
1618
- /**
1619
- * Syntax-highlight inline `` `code{:lang}` `` snippets. Off by default — most
1620
- * inline code (flags, file names) reads better plain; opt a snippet in with
1621
- * a trailing `{:lang}` marker.
1622
- */
1623
- inline: z.ZodDefault<z.ZodBoolean>;
1624
1711
  /**
1625
1712
  * Wrap long lines instead of scrolling horizontally. Off by default, so
1626
1713
  * code keeps its original line breaks and overflows into a scroll area.
@@ -1628,11 +1715,9 @@ export declare const blumeConfigSchema: z.ZodObject<{
1628
1715
  wrap: z.ZodDefault<z.ZodBoolean>;
1629
1716
  }, "strict", z.ZodTypeAny, {
1630
1717
  icons: boolean;
1631
- inline: boolean;
1632
1718
  wrap: boolean;
1633
1719
  }, {
1634
1720
  icons?: boolean | undefined;
1635
- inline?: boolean | undefined;
1636
1721
  wrap?: boolean | undefined;
1637
1722
  }>>;
1638
1723
  codeBlocks: z.ZodDefault<z.ZodObject<{
@@ -1668,15 +1753,9 @@ export declare const blumeConfigSchema: z.ZodObject<{
1668
1753
  * opt a single image out with `data-no-zoom`.
1669
1754
  */
1670
1755
  imageZoom: z.ZodDefault<z.ZodBoolean>;
1671
- /**
1672
- * Enable LaTeX math (`$…$` inline, `$$…$$` block) rendered with KaTeX.
1673
- * Off by default since `$` is common in prose, shell, and code. MDX only.
1674
- */
1675
- math: z.ZodDefault<z.ZodBoolean>;
1676
1756
  }, "strict", z.ZodTypeAny, {
1677
1757
  code: {
1678
1758
  icons: boolean;
1679
- inline: boolean;
1680
1759
  wrap: boolean;
1681
1760
  };
1682
1761
  codeBlocks: {
@@ -1687,11 +1766,9 @@ export declare const blumeConfigSchema: z.ZodObject<{
1687
1766
  };
1688
1767
  headingAnchors: boolean;
1689
1768
  imageZoom: boolean;
1690
- math: boolean;
1691
1769
  }, {
1692
1770
  code?: {
1693
1771
  icons?: boolean | undefined;
1694
- inline?: boolean | undefined;
1695
1772
  wrap?: boolean | undefined;
1696
1773
  } | undefined;
1697
1774
  codeBlocks?: {
@@ -1702,7 +1779,6 @@ export declare const blumeConfigSchema: z.ZodObject<{
1702
1779
  } | undefined;
1703
1780
  headingAnchors?: boolean | undefined;
1704
1781
  imageZoom?: boolean | undefined;
1705
- math?: boolean | undefined;
1706
1782
  }>>;
1707
1783
  mcp: z.ZodDefault<z.ZodObject<{
1708
1784
  enabled: z.ZodDefault<z.ZodBoolean>;
@@ -1723,6 +1799,20 @@ export declare const blumeConfigSchema: z.ZodObject<{
1723
1799
  instructions?: string | undefined;
1724
1800
  }>>;
1725
1801
  navigation: z.ZodDefault<z.ZodObject<{
1802
+ /** Pinned links shown above the generated sidebar sections. */
1803
+ featured: z.ZodDefault<z.ZodArray<z.ZodObject<{
1804
+ href: z.ZodString;
1805
+ icon: z.ZodOptional<z.ZodString>;
1806
+ label: z.ZodString;
1807
+ }, "strict", z.ZodTypeAny, {
1808
+ label: string;
1809
+ href: string;
1810
+ icon?: string | undefined;
1811
+ }, {
1812
+ label: string;
1813
+ href: string;
1814
+ icon?: string | undefined;
1815
+ }>, "many">>;
1726
1816
  /** Show a GitHub repo link in the header (requires `github` configured). */
1727
1817
  repo: z.ZodDefault<z.ZodBoolean>;
1728
1818
  selectors: z.ZodDefault<z.ZodArray<z.ZodObject<{
@@ -1768,8 +1858,28 @@ export declare const blumeConfigSchema: z.ZodObject<{
1768
1858
  tag?: string | undefined;
1769
1859
  }[] | undefined;
1770
1860
  }>, "many">>;
1771
- /** Explicit sidebar override; when omitted the sidebar is generated. */
1772
- sidebar: z.ZodOptional<z.ZodArray<z.ZodType<SidebarItemConfig, z.ZodTypeDef, SidebarItemConfig>, "many">>;
1861
+ /**
1862
+ * Sidebar behavior. `display` sets how every group renders (a group in an
1863
+ * explicit `items` config may still override it); `items` is an explicit
1864
+ * sidebar — when omitted the sidebar is generated from the content tree.
1865
+ * A bare array is shorthand for `{ items }`.
1866
+ */
1867
+ sidebar: z.ZodEffects<z.ZodDefault<z.ZodUnion<[z.ZodArray<z.ZodType<SidebarItemConfig, z.ZodTypeDef, SidebarItemConfig>, "many">, z.ZodObject<{
1868
+ display: z.ZodDefault<z.ZodEnum<["flat", "group", "page"]>>;
1869
+ items: z.ZodOptional<z.ZodArray<z.ZodType<SidebarItemConfig, z.ZodTypeDef, SidebarItemConfig>, "many">>;
1870
+ }, "strict", z.ZodTypeAny, {
1871
+ display: "flat" | "page" | "group";
1872
+ items?: SidebarItemConfig[] | undefined;
1873
+ }, {
1874
+ display?: "flat" | "page" | "group" | undefined;
1875
+ items?: SidebarItemConfig[] | undefined;
1876
+ }>]>>, {
1877
+ display: "flat" | "page" | "group";
1878
+ items?: SidebarItemConfig[] | undefined;
1879
+ }, SidebarItemConfig[] | {
1880
+ display?: "flat" | "page" | "group" | undefined;
1881
+ items?: SidebarItemConfig[] | undefined;
1882
+ } | undefined>;
1773
1883
  tabs: z.ZodOptional<z.ZodArray<z.ZodObject<{
1774
1884
  icon: z.ZodOptional<z.ZodString>;
1775
1885
  items: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -1817,7 +1927,16 @@ export declare const blumeConfigSchema: z.ZodObject<{
1817
1927
  }[] | undefined;
1818
1928
  }>, "many">>;
1819
1929
  }, "strict", z.ZodTypeAny, {
1930
+ sidebar: {
1931
+ display: "flat" | "page" | "group";
1932
+ items?: SidebarItemConfig[] | undefined;
1933
+ };
1820
1934
  repo: boolean;
1935
+ featured: {
1936
+ label: string;
1937
+ href: string;
1938
+ icon?: string | undefined;
1939
+ }[];
1821
1940
  selectors: {
1822
1941
  label: string;
1823
1942
  items: {
@@ -1829,7 +1948,6 @@ export declare const blumeConfigSchema: z.ZodObject<{
1829
1948
  }[];
1830
1949
  kind: "version" | "dropdown" | "language" | "product";
1831
1950
  }[];
1832
- sidebar?: SidebarItemConfig[] | undefined;
1833
1951
  tabs?: {
1834
1952
  path: string;
1835
1953
  label: string;
@@ -1843,8 +1961,16 @@ export declare const blumeConfigSchema: z.ZodObject<{
1843
1961
  }[] | undefined;
1844
1962
  }[] | undefined;
1845
1963
  }, {
1846
- sidebar?: SidebarItemConfig[] | undefined;
1964
+ sidebar?: SidebarItemConfig[] | {
1965
+ display?: "flat" | "page" | "group" | undefined;
1966
+ items?: SidebarItemConfig[] | undefined;
1967
+ } | undefined;
1847
1968
  repo?: boolean | undefined;
1969
+ featured?: {
1970
+ label: string;
1971
+ href: string;
1972
+ icon?: string | undefined;
1973
+ }[] | undefined;
1848
1974
  selectors?: {
1849
1975
  label: string;
1850
1976
  kind: "version" | "dropdown" | "language" | "product";
@@ -2104,6 +2230,34 @@ export declare const blumeConfigSchema: z.ZodObject<{
2104
2230
  } | undefined;
2105
2231
  }>>;
2106
2232
  seo: z.ZodDefault<z.ZodObject<{
2233
+ /**
2234
+ * Emit `agent-readability.json` at the site root: a manifest that indexes
2235
+ * the agent-facing surface (llms.txt, Markdown mirrors, MCP server, feeds)
2236
+ * so agents can discover it without scraping HTML.
2237
+ */
2238
+ agentReadability: z.ZodDefault<z.ZodBoolean>;
2239
+ /** robots.txt `Content-Signal` usage declaration (on by default). */
2240
+ contentSignals: z.ZodDefault<z.ZodEffects<z.ZodUnion<[z.ZodBoolean, z.ZodObject<{
2241
+ aiInput: z.ZodDefault<z.ZodBoolean>;
2242
+ aiTrain: z.ZodDefault<z.ZodBoolean>;
2243
+ search: z.ZodDefault<z.ZodBoolean>;
2244
+ }, "strict", z.ZodTypeAny, {
2245
+ search: boolean;
2246
+ aiInput: boolean;
2247
+ aiTrain: boolean;
2248
+ }, {
2249
+ search?: boolean | undefined;
2250
+ aiInput?: boolean | undefined;
2251
+ aiTrain?: boolean | undefined;
2252
+ }>]>, {
2253
+ search: boolean;
2254
+ aiInput: boolean;
2255
+ aiTrain: boolean;
2256
+ } | null, boolean | {
2257
+ search?: boolean | undefined;
2258
+ aiInput?: boolean | undefined;
2259
+ aiTrain?: boolean | undefined;
2260
+ }>>;
2107
2261
  og: z.ZodDefault<z.ZodObject<{
2108
2262
  /**
2109
2263
  * Generate a per-page Open Graph image. Defaults to on once a deployment
@@ -2139,6 +2293,12 @@ export declare const blumeConfigSchema: z.ZodObject<{
2139
2293
  /** Emit schema.org JSON-LD in each page's <head>. */
2140
2294
  structuredData: z.ZodDefault<z.ZodBoolean>;
2141
2295
  }, "strict", z.ZodTypeAny, {
2296
+ agentReadability: boolean;
2297
+ contentSignals: {
2298
+ search: boolean;
2299
+ aiInput: boolean;
2300
+ aiTrain: boolean;
2301
+ } | null;
2142
2302
  og: {
2143
2303
  enabled?: boolean | undefined;
2144
2304
  };
@@ -2151,6 +2311,12 @@ export declare const blumeConfigSchema: z.ZodObject<{
2151
2311
  sitemap: boolean;
2152
2312
  structuredData: boolean;
2153
2313
  }, {
2314
+ agentReadability?: boolean | undefined;
2315
+ contentSignals?: boolean | {
2316
+ search?: boolean | undefined;
2317
+ aiInput?: boolean | undefined;
2318
+ aiTrain?: boolean | undefined;
2319
+ } | undefined;
2154
2320
  og?: {
2155
2321
  enabled?: boolean | undefined;
2156
2322
  } | undefined;
@@ -2164,13 +2330,55 @@ export declare const blumeConfigSchema: z.ZodObject<{
2164
2330
  structuredData?: boolean | undefined;
2165
2331
  }>>;
2166
2332
  theme: z.ZodDefault<z.ZodObject<{
2167
- accent: z.ZodDefault<z.ZodString>;
2168
- accentDark: z.ZodOptional<z.ZodString>;
2333
+ accent: z.ZodEffects<z.ZodDefault<z.ZodUnion<[z.ZodString, z.ZodObject<{
2334
+ dark: z.ZodString;
2335
+ light: z.ZodString;
2336
+ }, "strict", z.ZodTypeAny, {
2337
+ dark: string;
2338
+ light: string;
2339
+ }, {
2340
+ dark: string;
2341
+ light: string;
2342
+ }>]>>, {
2343
+ dark: string;
2344
+ light: string;
2345
+ }, string | {
2346
+ dark: string;
2347
+ light: string;
2348
+ } | undefined>;
2169
2349
  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>;
2350
+ background: z.ZodEffects<z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
2351
+ dark: z.ZodOptional<z.ZodString>;
2352
+ light: z.ZodOptional<z.ZodString>;
2353
+ }, "strict", z.ZodTypeAny, {
2354
+ dark?: string | undefined;
2355
+ light?: string | undefined;
2356
+ }, {
2357
+ dark?: string | undefined;
2358
+ light?: string | undefined;
2359
+ }>]>>, {
2360
+ dark?: string | undefined;
2361
+ light?: string | undefined;
2362
+ } | undefined, string | {
2363
+ dark?: string | undefined;
2364
+ light?: string | undefined;
2365
+ } | undefined>;
2366
+ backgroundImage: z.ZodEffects<z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<{
2367
+ dark: z.ZodOptional<z.ZodString>;
2368
+ light: z.ZodOptional<z.ZodString>;
2369
+ }, "strict", z.ZodTypeAny, {
2370
+ dark?: string | undefined;
2371
+ light?: string | undefined;
2372
+ }, {
2373
+ dark?: string | undefined;
2374
+ light?: string | undefined;
2375
+ }>]>>, {
2376
+ dark?: string | undefined;
2377
+ light?: string | undefined;
2378
+ } | undefined, string | {
2379
+ dark?: string | undefined;
2380
+ light?: string | undefined;
2381
+ } | undefined>;
2174
2382
  fonts: z.ZodDefault<z.ZodObject<{
2175
2383
  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
2384
  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 +2398,10 @@ export declare const blumeConfigSchema: z.ZodObject<{
2190
2398
  strict: z.ZodDefault<z.ZodBoolean>;
2191
2399
  }, "strict", z.ZodTypeAny, {
2192
2400
  strict: boolean;
2193
- accent: string;
2401
+ accent: {
2402
+ dark: string;
2403
+ light: string;
2404
+ };
2194
2405
  fonts: {
2195
2406
  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
2407
  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 +2410,30 @@ export declare const blumeConfigSchema: z.ZodObject<{
2199
2410
  layout: "sidebar";
2200
2411
  mode: "dark" | "light" | "system";
2201
2412
  radius: "md" | "none" | "sm" | "lg";
2202
- accentDark?: string | undefined;
2203
2413
  action?: string | undefined;
2204
- background?: string | undefined;
2205
- backgroundDark?: string | undefined;
2206
- backgroundImage?: string | undefined;
2207
- backgroundImageDark?: string | undefined;
2414
+ background?: {
2415
+ dark?: string | undefined;
2416
+ light?: string | undefined;
2417
+ } | undefined;
2418
+ backgroundImage?: {
2419
+ dark?: string | undefined;
2420
+ light?: string | undefined;
2421
+ } | undefined;
2208
2422
  }, {
2209
2423
  strict?: boolean | undefined;
2210
- accent?: string | undefined;
2211
- accentDark?: string | undefined;
2424
+ accent?: string | {
2425
+ dark: string;
2426
+ light: string;
2427
+ } | undefined;
2212
2428
  action?: string | undefined;
2213
- background?: string | undefined;
2214
- backgroundDark?: string | undefined;
2215
- backgroundImage?: string | undefined;
2216
- backgroundImageDark?: string | undefined;
2429
+ background?: string | {
2430
+ dark?: string | undefined;
2431
+ light?: string | undefined;
2432
+ } | undefined;
2433
+ backgroundImage?: string | {
2434
+ dark?: string | undefined;
2435
+ light?: string | undefined;
2436
+ } | undefined;
2217
2437
  fonts?: {
2218
2438
  mono?: string | undefined;
2219
2439
  display?: string | undefined;
@@ -2279,6 +2499,12 @@ export declare const blumeConfigSchema: z.ZodObject<{
2279
2499
  type: "git" | "frontmatter";
2280
2500
  };
2281
2501
  seo: {
2502
+ agentReadability: boolean;
2503
+ contentSignals: {
2504
+ search: boolean;
2505
+ aiInput: boolean;
2506
+ aiTrain: boolean;
2507
+ } | null;
2282
2508
  og: {
2283
2509
  enabled?: boolean | undefined;
2284
2510
  };
@@ -2297,6 +2523,10 @@ export declare const blumeConfigSchema: z.ZodObject<{
2297
2523
  enabled: boolean;
2298
2524
  model: string;
2299
2525
  provider: "gateway" | "openrouter" | "llmgateway" | "inkeep" | "openai-compatible";
2526
+ suggestions: {
2527
+ label: string;
2528
+ icon?: string | undefined;
2529
+ }[];
2300
2530
  apiKeyEnv?: string | undefined;
2301
2531
  baseUrl?: string | undefined;
2302
2532
  } | undefined;
@@ -2370,7 +2600,10 @@ export declare const blumeConfigSchema: z.ZodObject<{
2370
2600
  };
2371
2601
  theme: {
2372
2602
  strict: boolean;
2373
- accent: string;
2603
+ accent: {
2604
+ dark: string;
2605
+ light: string;
2606
+ };
2374
2607
  fonts: {
2375
2608
  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
2609
  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 +2612,15 @@ export declare const blumeConfigSchema: z.ZodObject<{
2379
2612
  layout: "sidebar";
2380
2613
  mode: "dark" | "light" | "system";
2381
2614
  radius: "md" | "none" | "sm" | "lg";
2382
- accentDark?: string | undefined;
2383
2615
  action?: string | undefined;
2384
- background?: string | undefined;
2385
- backgroundDark?: string | undefined;
2386
- backgroundImage?: string | undefined;
2387
- backgroundImageDark?: string | undefined;
2616
+ background?: {
2617
+ dark?: string | undefined;
2618
+ light?: string | undefined;
2619
+ } | undefined;
2620
+ backgroundImage?: {
2621
+ dark?: string | undefined;
2622
+ light?: string | undefined;
2623
+ } | undefined;
2388
2624
  };
2389
2625
  asyncapi: {
2390
2626
  enabled: boolean;
@@ -2411,7 +2647,6 @@ export declare const blumeConfigSchema: z.ZodObject<{
2411
2647
  markdown: {
2412
2648
  code: {
2413
2649
  icons: boolean;
2414
- inline: boolean;
2415
2650
  wrap: boolean;
2416
2651
  };
2417
2652
  codeBlocks: {
@@ -2422,7 +2657,6 @@ export declare const blumeConfigSchema: z.ZodObject<{
2422
2657
  };
2423
2658
  headingAnchors: boolean;
2424
2659
  imageZoom: boolean;
2425
- math: boolean;
2426
2660
  };
2427
2661
  mcp: {
2428
2662
  enabled: boolean;
@@ -2431,7 +2665,16 @@ export declare const blumeConfigSchema: z.ZodObject<{
2431
2665
  instructions?: string | undefined;
2432
2666
  };
2433
2667
  navigation: {
2668
+ sidebar: {
2669
+ display: "flat" | "page" | "group";
2670
+ items?: SidebarItemConfig[] | undefined;
2671
+ };
2434
2672
  repo: boolean;
2673
+ featured: {
2674
+ label: string;
2675
+ href: string;
2676
+ icon?: string | undefined;
2677
+ }[];
2435
2678
  selectors: {
2436
2679
  label: string;
2437
2680
  items: {
@@ -2443,7 +2686,6 @@ export declare const blumeConfigSchema: z.ZodObject<{
2443
2686
  }[];
2444
2687
  kind: "version" | "dropdown" | "language" | "product";
2445
2688
  }[];
2446
- sidebar?: SidebarItemConfig[] | undefined;
2447
2689
  tabs?: {
2448
2690
  path: string;
2449
2691
  label: string;
@@ -2564,6 +2806,12 @@ export declare const blumeConfigSchema: z.ZodObject<{
2564
2806
  type?: "git" | "frontmatter" | undefined;
2565
2807
  } | undefined;
2566
2808
  seo?: {
2809
+ agentReadability?: boolean | undefined;
2810
+ contentSignals?: boolean | {
2811
+ search?: boolean | undefined;
2812
+ aiInput?: boolean | undefined;
2813
+ aiTrain?: boolean | undefined;
2814
+ } | undefined;
2567
2815
  og?: {
2568
2816
  enabled?: boolean | undefined;
2569
2817
  } | undefined;
@@ -2583,6 +2831,10 @@ export declare const blumeConfigSchema: z.ZodObject<{
2583
2831
  enabled?: boolean | undefined;
2584
2832
  model?: string | undefined;
2585
2833
  provider?: "gateway" | "openrouter" | "llmgateway" | "inkeep" | "openai-compatible" | undefined;
2834
+ suggestions?: {
2835
+ label: string;
2836
+ icon?: string | undefined;
2837
+ }[] | undefined;
2586
2838
  } | undefined;
2587
2839
  llmsTxt?: boolean | undefined;
2588
2840
  } | undefined;
@@ -2668,13 +2920,19 @@ export declare const blumeConfigSchema: z.ZodObject<{
2668
2920
  } | undefined;
2669
2921
  theme?: {
2670
2922
  strict?: boolean | undefined;
2671
- accent?: string | undefined;
2672
- accentDark?: string | undefined;
2923
+ accent?: string | {
2924
+ dark: string;
2925
+ light: string;
2926
+ } | undefined;
2673
2927
  action?: string | undefined;
2674
- background?: string | undefined;
2675
- backgroundDark?: string | undefined;
2676
- backgroundImage?: string | undefined;
2677
- backgroundImageDark?: string | undefined;
2928
+ background?: string | {
2929
+ dark?: string | undefined;
2930
+ light?: string | undefined;
2931
+ } | undefined;
2932
+ backgroundImage?: string | {
2933
+ dark?: string | undefined;
2934
+ light?: string | undefined;
2935
+ } | undefined;
2678
2936
  fonts?: {
2679
2937
  mono?: string | undefined;
2680
2938
  display?: string | undefined;
@@ -2745,7 +3003,6 @@ export declare const blumeConfigSchema: z.ZodObject<{
2745
3003
  markdown?: {
2746
3004
  code?: {
2747
3005
  icons?: boolean | undefined;
2748
- inline?: boolean | undefined;
2749
3006
  wrap?: boolean | undefined;
2750
3007
  } | undefined;
2751
3008
  codeBlocks?: {
@@ -2756,7 +3013,6 @@ export declare const blumeConfigSchema: z.ZodObject<{
2756
3013
  } | undefined;
2757
3014
  headingAnchors?: boolean | undefined;
2758
3015
  imageZoom?: boolean | undefined;
2759
- math?: boolean | undefined;
2760
3016
  } | undefined;
2761
3017
  mcp?: {
2762
3018
  name?: string | undefined;
@@ -2765,8 +3021,16 @@ export declare const blumeConfigSchema: z.ZodObject<{
2765
3021
  instructions?: string | undefined;
2766
3022
  } | undefined;
2767
3023
  navigation?: {
2768
- sidebar?: SidebarItemConfig[] | undefined;
3024
+ sidebar?: SidebarItemConfig[] | {
3025
+ display?: "flat" | "page" | "group" | undefined;
3026
+ items?: SidebarItemConfig[] | undefined;
3027
+ } | undefined;
2769
3028
  repo?: boolean | undefined;
3029
+ featured?: {
3030
+ label: string;
3031
+ href: string;
3032
+ icon?: string | undefined;
3033
+ }[] | undefined;
2770
3034
  selectors?: {
2771
3035
  label: string;
2772
3036
  kind: "version" | "dropdown" | "language" | "product";
@@ -2817,8 +3081,16 @@ export type ResolvedConfig = z.infer<typeof blumeConfigSchema>;
2817
3081
  export type ResolvedI18nConfig = z.infer<typeof i18nConfigSchema>;
2818
3082
  /** A configured locale with display metadata. */
2819
3083
  export type LocaleConfig = z.infer<typeof localeSchema>;
2820
- /** User-authored config: the shape accepted by `defineConfig`. */
2821
- export type BlumeConfig = z.input<typeof blumeConfigSchema>;
3084
+ /**
3085
+ * User-authored config, straight off the schema. The public, hand-documented
3086
+ * authoring type is `BlumeConfig` in `./config-input.ts`, which a compile-time
3087
+ * guard keeps structurally identical to this.
3088
+ */
3089
+ export type BlumeConfigInput = z.input<typeof blumeConfigSchema>;
2822
3090
  /** A configured search backend. */
2823
3091
  export type SearchProvider = (typeof searchProviders)[number];
3092
+ /** Resolved robots.txt `Content-Signal` preferences (`null` when disabled). */
3093
+ export type ContentSignals = z.infer<typeof contentSignalsSchema>;
3094
+ /** The resolved per-signal policy object (present when signals are enabled). */
3095
+ export type ContentSignalPolicy = NonNullable<ContentSignals>;
2824
3096
  export {};