@farming-labs/docs 0.1.35 → 0.1.36

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.
@@ -75,7 +75,7 @@ async function main() {
75
75
  const { runMcp } = await import("../mcp-DLP94P1H.mjs");
76
76
  await runMcp(mcpOptions);
77
77
  } else if (parsedCommand.command === "search" && subcommand === "sync") {
78
- const { syncSearch } = await import("../search-CLaNOUrd.mjs");
78
+ const { syncSearch } = await import("../search-CNesqs89.mjs");
79
79
  await syncSearch(searchSyncOptions);
80
80
  } else if (parsedCommand.command === "search") {
81
81
  console.error(pc.red(`Unknown search subcommand: ${subcommand ?? "(missing)"}`));
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { $ as SidebarPageNode, A as DocsSearchResult, B as OGConfig, C as DocsSearchAdapterContext, D as DocsSearchDocument, E as DocsSearchConfig, F as FontStyle, G as PageActionsConfig, H as OpenDocsProvider, I as GithubConfig, J as PageTwitter, K as PageFrontmatter, L as LastUpdatedConfig, M as DocsSearchSourcePage, N as DocsTheme, O as DocsSearchEmbeddingsConfig, P as FeedbackConfig, Q as SidebarNode, R as LlmsTxtConfig, S as DocsSearchAdapter, T as DocsSearchChunkingConfig, U as OpenGraphImage, V as OpenDocsConfig, W as OrderingItem, X as SidebarConfig, Y as SidebarComponentProps, Z as SidebarFolderNode, _ as DocsI18nConfig, a as ApiReferenceRenderer, at as UIConfig, b as DocsMetadata, c as ChangelogFrontmatter, d as CustomDocsSearchConfig, et as SidebarTree, f as DocsAgentFeedbackContext, g as DocsFeedbackValue, h as DocsFeedbackData, i as ApiReferenceConfig, it as TypographyConfig, j as DocsSearchResultType, k as DocsSearchQuery, l as CodeBlockCopyData, m as DocsConfig, n as AgentFeedbackConfig, nt as ThemeToggleConfig, o as BreadcrumbConfig, p as DocsAgentFeedbackData, q as PageOpenGraph, r as AlgoliaDocsSearchConfig, rt as TypesenseDocsSearchConfig, s as ChangelogConfig, t as AIConfig, tt as SimpleDocsSearchConfig, u as CopyMarkdownConfig, v as DocsMcpConfig, w as DocsSearchAdapterFactory, x as DocsNav, y as DocsMcpToolsConfig, z as McpDocsSearchConfig } from "./types-CP8OcVgL.mjs";
2
- import { a as createSimpleSearchAdapter, c as resolveSearchRequestConfig, i as createMcpSearchAdapter, n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, r as createCustomSearchAdapter, s as performDocsSearch, t as buildDocsSearchDocuments } from "./search-zClNrbqL.mjs";
1
+ import { $ as SidebarFolderNode, A as DocsSearchQuery, B as McpDocsSearchConfig, C as DocsSearchAdapter, D as DocsSearchConfig, E as DocsSearchChunkingConfig, F as FeedbackConfig, G as OrderingItem, H as OpenDocsConfig, I as FontStyle, J as PageOpenGraph, K as PageActionsConfig, L as GithubConfig, M as DocsSearchResultType, N as DocsSearchSourcePage, O as DocsSearchDocument, P as DocsTheme, Q as SidebarConfig, R as LastUpdatedConfig, S as DocsRelatedItem, T as DocsSearchAdapterFactory, U as OpenDocsProvider, V as OGConfig, W as OpenGraphImage, X as ResolvedDocsRelatedLink, Y as PageTwitter, Z as SidebarComponentProps, _ as DocsI18nConfig, a as ApiReferenceRenderer, at as TypesenseDocsSearchConfig, b as DocsMetadata, c as ChangelogFrontmatter, d as CustomDocsSearchConfig, et as SidebarNode, f as DocsAgentFeedbackContext, g as DocsFeedbackValue, h as DocsFeedbackData, i as ApiReferenceConfig, it as ThemeToggleConfig, j as DocsSearchResult, k as DocsSearchEmbeddingsConfig, l as CodeBlockCopyData, m as DocsConfig, n as AgentFeedbackConfig, nt as SidebarTree, o as BreadcrumbConfig, ot as TypographyConfig, p as DocsAgentFeedbackData, q as PageFrontmatter, r as AlgoliaDocsSearchConfig, rt as SimpleDocsSearchConfig, s as ChangelogConfig, st as UIConfig, t as AIConfig, tt as SidebarPageNode, u as CopyMarkdownConfig, v as DocsMcpConfig, w as DocsSearchAdapterContext, x as DocsNav, y as DocsMcpToolsConfig, z as LlmsTxtConfig } from "./types-ByCOEOnE.mjs";
2
+ import { a as createSimpleSearchAdapter, c as resolveSearchRequestConfig, i as createMcpSearchAdapter, n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, r as createCustomSearchAdapter, s as performDocsSearch, t as buildDocsSearchDocuments } from "./search-HA-ofcyh.mjs";
3
3
 
4
4
  //#region src/define-docs.d.ts
5
5
  /**
@@ -115,4 +115,8 @@ declare function buildPageOpenGraph(page: Pick<PageFrontmatter, "title" | "descr
115
115
  */
116
116
  declare function buildPageTwitter(page: Pick<PageFrontmatter, "title" | "description" | "ogImage" | "openGraph" | "twitter">, ogConfig?: OGConfig, baseUrl?: string): PageTwitter | undefined;
117
117
  //#endregion
118
- export { type AIConfig, type AgentFeedbackConfig, type AlgoliaDocsSearchConfig, type ApiReferenceConfig, type ApiReferenceRenderer, type BreadcrumbConfig, type ChangelogConfig, type ChangelogEntrySummary, type ChangelogFrontmatter, type CodeBlockCopyData, type CopyMarkdownConfig, type CustomDocsSearchConfig, type DocsAgentFeedbackContext, type DocsAgentFeedbackData, type DocsConfig, type DocsFeedbackData, type DocsFeedbackValue, type DocsI18nConfig, type DocsMcpConfig, type DocsMcpToolsConfig, type DocsMetadata, type DocsNav, type DocsPathMatch, type DocsSearchAdapter, type DocsSearchAdapterContext, type DocsSearchAdapterFactory, type DocsSearchChunkingConfig, type DocsSearchConfig, type DocsSearchDocument, type DocsSearchEmbeddingsConfig, type DocsSearchQuery, type DocsSearchResult, type DocsSearchResultType, type DocsSearchSourcePage, type DocsTheme, type FeedbackConfig, type FontStyle, type GithubConfig, type LastUpdatedConfig, type LlmsTxtConfig, type McpDocsSearchConfig, type OGConfig, type OpenDocsConfig, type OpenDocsProvider, type OpenGraphImage, type OrderingItem, type PageActionsConfig, type PageFrontmatter, type PageOpenGraph, type PageTwitter, type ResolvedChangelogConfig, type ResolvedDocsI18n, type SidebarComponentProps, type SidebarConfig, type SidebarFolderNode, type SidebarNode, type SidebarPageNode, type SidebarTree, type SimpleDocsSearchConfig, type ThemeToggleConfig, type TypesenseDocsSearchConfig, type TypographyConfig, type UIConfig, buildDocsSearchDocuments, buildPageOpenGraph, buildPageTwitter, createAlgoliaSearchAdapter, createCustomSearchAdapter, createMcpSearchAdapter, createSimpleSearchAdapter, createTheme, createTypesenseSearchAdapter, deepMerge, defineDocs, extendTheme, performDocsSearch, resolveChangelogConfig, resolveDocsI18n, resolveDocsLocale, resolveDocsPath, resolveOGImage, resolveSearchRequestConfig, resolveTitle };
118
+ //#region src/related.d.ts
119
+ declare function normalizeDocsRelated(value: unknown): ResolvedDocsRelatedLink[];
120
+ declare function renderDocsRelatedMarkdownLines(related: ResolvedDocsRelatedLink[] | undefined): string[];
121
+ //#endregion
122
+ export { type AIConfig, type AgentFeedbackConfig, type AlgoliaDocsSearchConfig, type ApiReferenceConfig, type ApiReferenceRenderer, type BreadcrumbConfig, type ChangelogConfig, type ChangelogEntrySummary, type ChangelogFrontmatter, type CodeBlockCopyData, type CopyMarkdownConfig, type CustomDocsSearchConfig, type DocsAgentFeedbackContext, type DocsAgentFeedbackData, type DocsConfig, type DocsFeedbackData, type DocsFeedbackValue, type DocsI18nConfig, type DocsMcpConfig, type DocsMcpToolsConfig, type DocsMetadata, type DocsNav, type DocsPathMatch, type DocsRelatedItem, type DocsSearchAdapter, type DocsSearchAdapterContext, type DocsSearchAdapterFactory, type DocsSearchChunkingConfig, type DocsSearchConfig, type DocsSearchDocument, type DocsSearchEmbeddingsConfig, type DocsSearchQuery, type DocsSearchResult, type DocsSearchResultType, type DocsSearchSourcePage, type DocsTheme, type FeedbackConfig, type FontStyle, type GithubConfig, type LastUpdatedConfig, type LlmsTxtConfig, type McpDocsSearchConfig, type OGConfig, type OpenDocsConfig, type OpenDocsProvider, type OpenGraphImage, type OrderingItem, type PageActionsConfig, type PageFrontmatter, type PageOpenGraph, type PageTwitter, type ResolvedChangelogConfig, type ResolvedDocsI18n, type ResolvedDocsRelatedLink, type SidebarComponentProps, type SidebarConfig, type SidebarFolderNode, type SidebarNode, type SidebarPageNode, type SidebarTree, type SimpleDocsSearchConfig, type ThemeToggleConfig, type TypesenseDocsSearchConfig, type TypographyConfig, type UIConfig, buildDocsSearchDocuments, buildPageOpenGraph, buildPageTwitter, createAlgoliaSearchAdapter, createCustomSearchAdapter, createMcpSearchAdapter, createSimpleSearchAdapter, createTheme, createTypesenseSearchAdapter, deepMerge, defineDocs, extendTheme, normalizeDocsRelated, performDocsSearch, renderDocsRelatedMarkdownLines, resolveChangelogConfig, resolveDocsI18n, resolveDocsLocale, resolveDocsPath, resolveOGImage, resolveSearchRequestConfig, resolveTitle };
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { a as createSimpleSearchAdapter, c as resolveSearchRequestConfig, i as createMcpSearchAdapter, n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, r as createCustomSearchAdapter, s as performDocsSearch, t as buildDocsSearchDocuments } from "./search-BS6C5N1i.mjs";
1
+ import { a as createSimpleSearchAdapter, c as resolveSearchRequestConfig, i as createMcpSearchAdapter, l as normalizeDocsRelated, n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, r as createCustomSearchAdapter, s as performDocsSearch, t as buildDocsSearchDocuments, u as renderDocsRelatedMarkdownLines } from "./search-CfnJVeh-.mjs";
2
2
 
3
3
  //#region src/define-docs.ts
4
4
  /**
@@ -266,4 +266,4 @@ function buildPageTwitter(page, ogConfig, baseUrl) {
266
266
  }
267
267
 
268
268
  //#endregion
269
- export { buildDocsSearchDocuments, buildPageOpenGraph, buildPageTwitter, createAlgoliaSearchAdapter, createCustomSearchAdapter, createMcpSearchAdapter, createSimpleSearchAdapter, createTheme, createTypesenseSearchAdapter, deepMerge, defineDocs, extendTheme, performDocsSearch, resolveChangelogConfig, resolveDocsI18n, resolveDocsLocale, resolveDocsPath, resolveOGImage, resolveSearchRequestConfig, resolveTitle };
269
+ export { buildDocsSearchDocuments, buildPageOpenGraph, buildPageTwitter, createAlgoliaSearchAdapter, createCustomSearchAdapter, createMcpSearchAdapter, createSimpleSearchAdapter, createTheme, createTypesenseSearchAdapter, deepMerge, defineDocs, extendTheme, normalizeDocsRelated, performDocsSearch, renderDocsRelatedMarkdownLines, resolveChangelogConfig, resolveDocsI18n, resolveDocsLocale, resolveDocsPath, resolveOGImage, resolveSearchRequestConfig, resolveTitle };
package/dist/mcp.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { E as DocsSearchConfig, W as OrderingItem, v as DocsMcpConfig } from "./types-CP8OcVgL.mjs";
1
+ import { D as DocsSearchConfig, G as OrderingItem, N as DocsSearchSourcePage, v as DocsMcpConfig } from "./types-ByCOEOnE.mjs";
2
2
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
3
 
4
4
  //#region src/mcp.d.ts
@@ -7,6 +7,7 @@ interface DocsMcpPage {
7
7
  url: string;
8
8
  title: string;
9
9
  description?: string;
10
+ related?: DocsSearchSourcePage["related"];
10
11
  icon?: string;
11
12
  content: string;
12
13
  rawContent?: string;
package/dist/mcp.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { s as performDocsSearch } from "./search-BS6C5N1i.mjs";
1
+ import { l as normalizeDocsRelated, s as performDocsSearch, u as renderDocsRelatedMarkdownLines } from "./search-CfnJVeh-.mjs";
2
2
  import fs from "node:fs";
3
3
  import path from "node:path";
4
4
  import { randomUUID } from "node:crypto";
@@ -330,6 +330,7 @@ function scanFilesystemDocsPages(contentDirAbs, entry) {
330
330
  url,
331
331
  title,
332
332
  description: data.description,
333
+ relatedInput: data.related,
333
334
  icon: data.icon,
334
335
  content: stripMarkdownForMcp(humanRawContent),
335
336
  rawContent: humanRawContent,
@@ -341,7 +342,7 @@ function scanFilesystemDocsPages(contentDirAbs, entry) {
341
342
  }
342
343
  }
343
344
  scan(contentDirAbs, []);
344
- return pages;
345
+ return resolveRelatedForMcpPages(pages);
345
346
  }
346
347
  function readFilesystemAgentDoc(dir) {
347
348
  const agentPath = path.join(dir, "agent.md");
@@ -352,6 +353,15 @@ function readFilesystemAgentDoc(dir) {
352
353
  agentRawContent: content
353
354
  };
354
355
  }
356
+ function resolveRelatedForMcpPages(pages) {
357
+ return pages.map(({ relatedInput, ...page }) => {
358
+ const related = normalizeDocsRelated(relatedInput);
359
+ return related.length > 0 ? {
360
+ ...page,
361
+ related
362
+ } : page;
363
+ });
364
+ }
355
365
  function buildNavigationTreeFromPages(pages, siteTitle, ordering) {
356
366
  const bySlug = new Map(pages.map((page) => [page.slug, page]));
357
367
  const rootPage = bySlug.get("");
@@ -465,7 +475,8 @@ function toSearchSourcePages(pages) {
465
475
  agentRawContent: page.agentRawContent,
466
476
  agentFallbackContent: page.agentFallbackContent,
467
477
  agentFallbackRawContent: page.agentFallbackRawContent,
468
- description: page.description
478
+ description: page.description,
479
+ related: page.related
469
480
  }));
470
481
  }
471
482
  function isSelfMcpSearchEndpoint(search, route) {
@@ -522,8 +533,10 @@ function normalizeUrlPath(value) {
522
533
  }
523
534
  function renderPageDocument(page) {
524
535
  if (page.agentRawContent !== void 0) return page.agentRawContent;
536
+ const relatedLines = renderDocsRelatedMarkdownLines(page.related);
525
537
  const lines = [`# ${page.title}`, `URL: ${page.url}`];
526
538
  if (page.description) lines.push(`Description: ${page.description}`);
539
+ lines.push(...relatedLines);
527
540
  lines.push("", page.agentFallbackRawContent ?? page.rawContent ?? page.content);
528
541
  return lines.join("\n");
529
542
  }
@@ -1,4 +1,4 @@
1
- import { n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, t as buildDocsSearchDocuments } from "./search-BS6C5N1i.mjs";
1
+ import { n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, t as buildDocsSearchDocuments } from "./search-CfnJVeh-.mjs";
2
2
  import "./api-reference-BQ16eRPP.mjs";
3
3
  import { createFilesystemDocsMcpSource } from "./mcp.mjs";
4
4
  import "./server.mjs";
@@ -1,3 +1,52 @@
1
+ //#region src/related.ts
2
+ function normalizeDocsRelated(value) {
3
+ if (!Array.isArray(value)) return [];
4
+ const seen = /* @__PURE__ */ new Set();
5
+ const links = [];
6
+ for (const item of value) {
7
+ const parsed = parseRelatedInput(item);
8
+ if (!parsed) continue;
9
+ const dedupeKey = normalizeRelatedLookupPath(parsed.href) ?? parsed.href;
10
+ if (seen.has(dedupeKey)) continue;
11
+ seen.add(dedupeKey);
12
+ links.push({ href: parsed.href });
13
+ }
14
+ return links;
15
+ }
16
+ function renderDocsRelatedMarkdownLines(related) {
17
+ if (!related?.length) return [];
18
+ return [`Related: ${related.map((link) => normalizeInlineText(link.href)).join(", ")}`];
19
+ }
20
+ function parseRelatedInput(value) {
21
+ if (typeof value === "string") {
22
+ const href = cleanString(value);
23
+ return href ? { href } : null;
24
+ }
25
+ return null;
26
+ }
27
+ function cleanString(value) {
28
+ if (typeof value !== "string") return void 0;
29
+ return value.trim() || void 0;
30
+ }
31
+ function normalizeRelatedLookupPath(value) {
32
+ const trimmed = value.trim();
33
+ if (!trimmed) return null;
34
+ let pathname = trimmed;
35
+ try {
36
+ pathname = new URL(trimmed, "https://docs.local").pathname;
37
+ } catch {
38
+ pathname = trimmed.split(/[?#]/, 1)[0] ?? trimmed;
39
+ }
40
+ pathname = pathname.replace(/\/+/g, "/").replace(/\.md$/i, "");
41
+ if (!pathname.startsWith("/")) pathname = `/${pathname}`;
42
+ if (pathname !== "/") pathname = pathname.replace(/\/+$/, "");
43
+ return pathname;
44
+ }
45
+ function normalizeInlineText(value) {
46
+ return value.replace(/\s+/g, " ").trim();
47
+ }
48
+
49
+ //#endregion
1
50
  //#region src/search.ts
2
51
  const DEFAULT_SEARCH_LIMIT = 10;
3
52
  const DEFAULT_MCP_PROTOCOL_VERSION = "2025-11-25";
@@ -668,4 +717,4 @@ function createCustomSearchAdapter(adapter) {
668
717
  }
669
718
 
670
719
  //#endregion
671
- export { createSimpleSearchAdapter as a, resolveSearchRequestConfig as c, createMcpSearchAdapter as i, createAlgoliaSearchAdapter as n, createTypesenseSearchAdapter as o, createCustomSearchAdapter as r, performDocsSearch as s, buildDocsSearchDocuments as t };
720
+ export { createSimpleSearchAdapter as a, resolveSearchRequestConfig as c, createMcpSearchAdapter as i, normalizeDocsRelated as l, createAlgoliaSearchAdapter as n, createTypesenseSearchAdapter as o, createCustomSearchAdapter as r, performDocsSearch as s, buildDocsSearchDocuments as t, renderDocsRelatedMarkdownLines as u };
@@ -1,4 +1,4 @@
1
- import { A as DocsSearchResult, D as DocsSearchDocument, E as DocsSearchConfig, M as DocsSearchSourcePage, S as DocsSearchAdapter, T as DocsSearchChunkingConfig, d as CustomDocsSearchConfig, r as AlgoliaDocsSearchConfig, rt as TypesenseDocsSearchConfig, w as DocsSearchAdapterFactory, z as McpDocsSearchConfig } from "./types-CP8OcVgL.mjs";
1
+ import { B as McpDocsSearchConfig, C as DocsSearchAdapter, D as DocsSearchConfig, E as DocsSearchChunkingConfig, N as DocsSearchSourcePage, O as DocsSearchDocument, T as DocsSearchAdapterFactory, at as TypesenseDocsSearchConfig, d as CustomDocsSearchConfig, j as DocsSearchResult, r as AlgoliaDocsSearchConfig } from "./types-ByCOEOnE.mjs";
2
2
 
3
3
  //#region src/search.d.ts
4
4
  declare function buildDocsSearchDocuments(pages: DocsSearchSourcePage[], chunking?: DocsSearchChunkingConfig): DocsSearchDocument[];
package/dist/server.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { A as DocsSearchResult, C as DocsSearchAdapterContext, D as DocsSearchDocument, E as DocsSearchConfig, M as DocsSearchSourcePage, S as DocsSearchAdapter, a as ApiReferenceRenderer, k as DocsSearchQuery, m as DocsConfig, w as DocsSearchAdapterFactory, z as McpDocsSearchConfig } from "./types-CP8OcVgL.mjs";
2
- import { a as createSimpleSearchAdapter, c as resolveSearchRequestConfig, i as createMcpSearchAdapter, n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, r as createCustomSearchAdapter, s as performDocsSearch, t as buildDocsSearchDocuments } from "./search-zClNrbqL.mjs";
1
+ import { A as DocsSearchQuery, B as McpDocsSearchConfig, C as DocsSearchAdapter, D as DocsSearchConfig, N as DocsSearchSourcePage, O as DocsSearchDocument, T as DocsSearchAdapterFactory, a as ApiReferenceRenderer, j as DocsSearchResult, m as DocsConfig, w as DocsSearchAdapterContext } from "./types-ByCOEOnE.mjs";
2
+ import { a as createSimpleSearchAdapter, c as resolveSearchRequestConfig, i as createMcpSearchAdapter, n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, r as createCustomSearchAdapter, s as performDocsSearch, t as buildDocsSearchDocuments } from "./search-HA-ofcyh.mjs";
3
3
  import { DocsMcpHttpHandlers, DocsMcpNavigationNode, DocsMcpNavigationTree, DocsMcpPage, DocsMcpResolvedConfig, DocsMcpSource, createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, normalizeDocsMcpRoute, resolveDocsMcpConfig, runDocsMcpStdio } from "./mcp.mjs";
4
4
 
5
5
  //#region src/api-reference.d.ts
package/dist/server.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { a as createSimpleSearchAdapter, c as resolveSearchRequestConfig, i as createMcpSearchAdapter, n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, r as createCustomSearchAdapter, s as performDocsSearch, t as buildDocsSearchDocuments } from "./search-BS6C5N1i.mjs";
1
+ import { a as createSimpleSearchAdapter, c as resolveSearchRequestConfig, i as createMcpSearchAdapter, n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, r as createCustomSearchAdapter, s as performDocsSearch, t as buildDocsSearchDocuments } from "./search-CfnJVeh-.mjs";
2
2
  import { a as buildApiReferencePageTitle, c as resolveApiReferenceRenderer, i as buildApiReferenceOpenApiDocumentAsync, n as buildApiReferenceHtmlDocumentAsync, o as buildApiReferenceScalarCss, r as buildApiReferenceOpenApiDocument, s as resolveApiReferenceConfig, t as buildApiReferenceHtmlDocument } from "./api-reference-BQ16eRPP.mjs";
3
3
  import { createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, normalizeDocsMcpRoute, resolveDocsMcpConfig, runDocsMcpStdio } from "./mcp.mjs";
4
4
 
@@ -242,9 +242,15 @@ interface PageTwitter {
242
242
  title?: string;
243
243
  description?: string;
244
244
  }
245
+ type DocsRelatedItem = string;
246
+ interface ResolvedDocsRelatedLink {
247
+ href: string;
248
+ }
245
249
  interface PageFrontmatter {
246
250
  title: string;
247
251
  description?: string;
252
+ /** Related doc URLs rendered into machine-readable markdown routes and MCP page output. */
253
+ related?: DocsRelatedItem[];
248
254
  tags?: string[];
249
255
  icon?: string;
250
256
  /** Path to custom OG image for this page (shorthand). Ignored if `openGraph` is set. */
@@ -620,6 +626,7 @@ interface DocsSearchSourcePage {
620
626
  url: string;
621
627
  content: string;
622
628
  description?: string;
629
+ related?: ResolvedDocsRelatedLink[];
623
630
  rawContent?: string;
624
631
  agentContent?: string;
625
632
  agentRawContent?: string;
@@ -1811,4 +1818,4 @@ interface DocsConfig {
1811
1818
  og?: OGConfig;
1812
1819
  }
1813
1820
  //#endregion
1814
- export { SidebarPageNode as $, DocsSearchResult as A, OGConfig as B, DocsSearchAdapterContext as C, DocsSearchDocument as D, DocsSearchConfig as E, FontStyle as F, PageActionsConfig as G, OpenDocsProvider as H, GithubConfig as I, PageTwitter as J, PageFrontmatter as K, LastUpdatedConfig as L, DocsSearchSourcePage as M, DocsTheme as N, DocsSearchEmbeddingsConfig as O, FeedbackConfig as P, SidebarNode as Q, LlmsTxtConfig as R, DocsSearchAdapter as S, DocsSearchChunkingConfig as T, OpenGraphImage as U, OpenDocsConfig as V, OrderingItem as W, SidebarConfig as X, SidebarComponentProps as Y, SidebarFolderNode as Z, DocsI18nConfig as _, ApiReferenceRenderer as a, UIConfig as at, DocsMetadata as b, ChangelogFrontmatter as c, CustomDocsSearchConfig as d, SidebarTree as et, DocsAgentFeedbackContext as f, DocsFeedbackValue as g, DocsFeedbackData as h, ApiReferenceConfig as i, TypographyConfig as it, DocsSearchResultType as j, DocsSearchQuery as k, CodeBlockCopyData as l, DocsConfig as m, AgentFeedbackConfig as n, ThemeToggleConfig as nt, BreadcrumbConfig as o, DocsAgentFeedbackData as p, PageOpenGraph as q, AlgoliaDocsSearchConfig as r, TypesenseDocsSearchConfig as rt, ChangelogConfig as s, AIConfig as t, SimpleDocsSearchConfig as tt, CopyMarkdownConfig as u, DocsMcpConfig as v, DocsSearchAdapterFactory as w, DocsNav as x, DocsMcpToolsConfig as y, McpDocsSearchConfig as z };
1821
+ export { SidebarFolderNode as $, DocsSearchQuery as A, McpDocsSearchConfig as B, DocsSearchAdapter as C, DocsSearchConfig as D, DocsSearchChunkingConfig as E, FeedbackConfig as F, OrderingItem as G, OpenDocsConfig as H, FontStyle as I, PageOpenGraph as J, PageActionsConfig as K, GithubConfig as L, DocsSearchResultType as M, DocsSearchSourcePage as N, DocsSearchDocument as O, DocsTheme as P, SidebarConfig as Q, LastUpdatedConfig as R, DocsRelatedItem as S, DocsSearchAdapterFactory as T, OpenDocsProvider as U, OGConfig as V, OpenGraphImage as W, ResolvedDocsRelatedLink as X, PageTwitter as Y, SidebarComponentProps as Z, DocsI18nConfig as _, ApiReferenceRenderer as a, TypesenseDocsSearchConfig as at, DocsMetadata as b, ChangelogFrontmatter as c, CustomDocsSearchConfig as d, SidebarNode as et, DocsAgentFeedbackContext as f, DocsFeedbackValue as g, DocsFeedbackData as h, ApiReferenceConfig as i, ThemeToggleConfig as it, DocsSearchResult as j, DocsSearchEmbeddingsConfig as k, CodeBlockCopyData as l, DocsConfig as m, AgentFeedbackConfig as n, SidebarTree as nt, BreadcrumbConfig as o, TypographyConfig as ot, DocsAgentFeedbackData as p, PageFrontmatter as q, AlgoliaDocsSearchConfig as r, SimpleDocsSearchConfig as rt, ChangelogConfig as s, UIConfig as st, AIConfig as t, SidebarPageNode as tt, CopyMarkdownConfig as u, DocsMcpConfig as v, DocsSearchAdapterContext as w, DocsNav as x, DocsMcpToolsConfig as y, LlmsTxtConfig as z };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@farming-labs/docs",
3
- "version": "0.1.35",
3
+ "version": "0.1.36",
4
4
  "description": "Modern, flexible MDX-based docs framework — core types, config, and CLI",
5
5
  "keywords": [
6
6
  "docs",