@farming-labs/docs 0.1.74 → 0.1.75

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.
@@ -0,0 +1,196 @@
1
+ import { $ as DocsSitemapConfig, B as DocsObservabilityEventInput, G as DocsSearchChunkingConfig, H as DocsSearchAdapter, K as DocsSearchConfig, Ot as TypesenseDocsSearchConfig, Q as DocsSearchSourcePage, R as DocsObservabilityConfig, W as DocsSearchAdapterFactory, X as DocsSearchResult, _ as DocsAnalyticsConfig, d as CustomDocsSearchConfig, k as DocsAskAIMcpConfig, m as DocsAgentTraceEventInput, ot as McpDocsSearchConfig, q as DocsSearchDocument, r as AlgoliaDocsSearchConfig, v as DocsAnalyticsEvent, vt as ResolvedDocsRelatedLink, y as DocsAnalyticsEventInput, z as DocsObservabilityEvent } from "./types-OAHZJ7NI.mjs";
2
+
3
+ //#region src/cloud-analytics.d.ts
4
+ interface DocsCloudAnalyticsOptions {
5
+ enabled?: boolean;
6
+ console?: DocsAnalyticsConfig["console"];
7
+ includeInputs?: boolean;
8
+ projectId?: string;
9
+ apiKey?: string;
10
+ }
11
+ declare function createDocsCloudAnalytics(options?: DocsCloudAnalyticsOptions): DocsAnalyticsConfig;
12
+ //#endregion
13
+ //#region src/analytics.d.ts
14
+ declare const DOCS_AGENT_TRACE_EVENT_TYPES: readonly ["run.start", "run.end", "run.error", "user.input", "prompt.build", "retrieval.query", "retrieval.result", "retrieval.error", "model.call", "model.response", "model.stream", "model.error", "tool.call", "tool.result", "tool.error", "retry", "timeout", "error", "agent.final"];
15
+ interface DocsAgentTraceContext {
16
+ traceId: string;
17
+ name: string;
18
+ startedAt: string;
19
+ startedMs: number;
20
+ }
21
+ interface ResolvedDocsAnalyticsConfig {
22
+ enabled: boolean;
23
+ console: false | "log" | "info" | "debug";
24
+ includeInputs: boolean;
25
+ onEvent?: (event: DocsAnalyticsEvent) => void | Promise<void>;
26
+ }
27
+ interface ResolvedDocsObservabilityConfig {
28
+ enabled: boolean;
29
+ console: false | "log" | "info" | "debug";
30
+ includeInputs: boolean;
31
+ onEvent?: (event: DocsObservabilityEvent) => void | Promise<void>;
32
+ }
33
+ declare function createDocsAgentTraceId(prefix?: string): string;
34
+ declare function createDocsAgentTraceContext(name?: string): DocsAgentTraceContext;
35
+ declare function resolveDocsAnalyticsConfig(analytics?: boolean | DocsAnalyticsConfig): ResolvedDocsAnalyticsConfig;
36
+ declare function resolveDocsObservabilityConfig(observability?: boolean | DocsObservabilityConfig): ResolvedDocsObservabilityConfig;
37
+ declare function emitDocsAnalyticsEvent(analytics: boolean | DocsAnalyticsConfig | undefined, event: DocsAnalyticsEventInput): Promise<void>;
38
+ declare function emitDocsObservabilityEvent(observability: boolean | DocsObservabilityConfig | undefined, event: DocsObservabilityEventInput): Promise<void>;
39
+ declare function emitDocsAgentTraceEvent(observability: boolean | DocsObservabilityConfig | undefined, event: DocsAgentTraceEventInput): Promise<void>;
40
+ //#endregion
41
+ //#region src/sitemap.d.ts
42
+ declare const DEFAULT_SITEMAP_XML_ROUTE = "/sitemap.xml";
43
+ declare const DEFAULT_SITEMAP_MD_ROUTE = "/sitemap.md";
44
+ declare const DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE = "/.well-known/sitemap.md";
45
+ declare const DEFAULT_SITEMAP_MANIFEST_PATH = ".farming-labs/sitemap-manifest.json";
46
+ type DocsSitemapFormat = "xml" | "markdown";
47
+ interface DocsSitemapPageInput {
48
+ slug?: string;
49
+ url: string;
50
+ title: string;
51
+ description?: string;
52
+ related?: ResolvedDocsRelatedLink[];
53
+ sourcePath?: string;
54
+ lastmod?: string;
55
+ lastModified?: string;
56
+ }
57
+ interface DocsSitemapManifestPage {
58
+ url: string;
59
+ absoluteUrl?: string;
60
+ markdownUrl: string;
61
+ title: string;
62
+ description?: string;
63
+ sourcePath?: string;
64
+ lastmod?: string;
65
+ lastmodSource?: "git" | "filesystem" | "frontmatter" | "manifest" | "unknown";
66
+ related?: string[];
67
+ }
68
+ interface DocsSitemapManifest {
69
+ version: 1;
70
+ generatedAt: string;
71
+ baseUrl?: string;
72
+ entry: string;
73
+ siteTitle?: string;
74
+ pages: DocsSitemapManifestPage[];
75
+ }
76
+ interface DocsSitemapResolvedConfig {
77
+ enabled: boolean;
78
+ routePrefix: string;
79
+ baseUrl?: string;
80
+ manifestPath: string;
81
+ xml: {
82
+ enabled: boolean;
83
+ includeLastmod: boolean;
84
+ route: string;
85
+ };
86
+ markdown: {
87
+ enabled: boolean;
88
+ includeDescriptions: boolean;
89
+ includeLastmod: boolean;
90
+ linkTarget: "html" | "markdown" | "both";
91
+ route: string;
92
+ wellKnownRoute: string;
93
+ };
94
+ }
95
+ interface CreateDocsSitemapResponseOptions {
96
+ request: Request;
97
+ sitemap?: boolean | DocsSitemapConfig;
98
+ entry?: string;
99
+ siteTitle?: string;
100
+ baseUrl?: string;
101
+ pages: DocsSitemapPageInput[];
102
+ manifest?: DocsSitemapManifest | null;
103
+ }
104
+ declare function resolveDocsSitemapConfig(sitemap?: boolean | DocsSitemapConfig, defaults?: {
105
+ baseUrl?: string;
106
+ }): DocsSitemapResolvedConfig;
107
+ declare function resolveDocsSitemapRequest(url: URL, sitemap?: boolean | DocsSitemapConfig): DocsSitemapFormat | null;
108
+ declare function toDocsSitemapMarkdownUrl(url: string): string;
109
+ declare function buildDocsSitemapManifest(options: {
110
+ pages: DocsSitemapPageInput[];
111
+ entry?: string;
112
+ siteTitle?: string;
113
+ baseUrl?: string;
114
+ generatedAt?: string;
115
+ resolveLastmod?: (page: DocsSitemapPageInput) => {
116
+ lastmod?: string;
117
+ lastmodSource?: DocsSitemapManifestPage["lastmodSource"];
118
+ } | undefined;
119
+ }): DocsSitemapManifest;
120
+ declare function renderDocsSitemapXml(manifest: DocsSitemapManifest, options?: {
121
+ baseUrl?: string;
122
+ includeLastmod?: boolean;
123
+ }): string;
124
+ declare function renderDocsSitemapMarkdown(manifest: DocsSitemapManifest, options?: {
125
+ baseUrl?: string;
126
+ includeDescriptions?: boolean;
127
+ includeLastmod?: boolean;
128
+ linkTarget?: "html" | "markdown" | "both";
129
+ }): string;
130
+ declare function readDocsSitemapManifestFromContentMap(contentMap?: Record<string, string> | null): DocsSitemapManifest | null;
131
+ declare function createDocsSitemapResponse({
132
+ request,
133
+ sitemap,
134
+ entry,
135
+ siteTitle,
136
+ baseUrl,
137
+ pages,
138
+ manifest
139
+ }: CreateDocsSitemapResponseOptions): Response | null;
140
+ //#endregion
141
+ //#region src/search.d.ts
142
+ interface DocsAskAIContextResult extends DocsSearchResult {
143
+ title: string;
144
+ contextContent: string;
145
+ }
146
+ interface DocsAskAIContext {
147
+ context: string;
148
+ results: DocsAskAIContextResult[];
149
+ searchResults: DocsSearchResult[];
150
+ packageHints: DocsAskAIPackageHints;
151
+ }
152
+ interface DocsAskAIPackageHints {
153
+ packages: string[];
154
+ imports: string[];
155
+ installCommands: string[];
156
+ }
157
+ declare function inferDocsAskAIPackageHints(content: string): DocsAskAIPackageHints;
158
+ declare function formatDocsAskAIPackageHints(hints: DocsAskAIPackageHints, packageName?: string): string | undefined;
159
+ declare function buildDocsSearchDocuments(pages: DocsSearchSourcePage[], chunking?: DocsSearchChunkingConfig): DocsSearchDocument[];
160
+ declare function createSimpleSearchAdapter(): DocsSearchAdapter;
161
+ declare function createTypesenseSearchAdapter(config: TypesenseDocsSearchConfig): DocsSearchAdapter;
162
+ declare function resolveSearchRequestConfig(search: boolean | DocsSearchConfig | undefined, requestUrl?: string): boolean | DocsSearchConfig | undefined;
163
+ declare function resolveAskAISearchRequestConfig(options: {
164
+ search: boolean | DocsSearchConfig | undefined;
165
+ useMcp?: boolean | DocsAskAIMcpConfig;
166
+ mcpEndpoint?: string;
167
+ mcpEnabled?: boolean;
168
+ mcpSearchEnabled?: boolean;
169
+ requestUrl?: string;
170
+ }): boolean | DocsSearchConfig | undefined;
171
+ declare function createMcpSearchAdapter(config: McpDocsSearchConfig): DocsSearchAdapter;
172
+ declare function createAlgoliaSearchAdapter(config: AlgoliaDocsSearchConfig): DocsSearchAdapter;
173
+ declare function performDocsSearch(options: {
174
+ pages: DocsSearchSourcePage[];
175
+ query: string;
176
+ search?: boolean | DocsSearchConfig;
177
+ locale?: string;
178
+ pathname?: string;
179
+ siteTitle?: string;
180
+ limit?: number;
181
+ }): Promise<DocsSearchResult[]>;
182
+ declare function buildDocsAskAIContext(options: {
183
+ pages: DocsSearchSourcePage[];
184
+ query: string;
185
+ search?: boolean | DocsSearchConfig;
186
+ locale?: string;
187
+ pathname?: string;
188
+ siteTitle?: string;
189
+ baseUrl?: string;
190
+ limit?: number;
191
+ maxContextChars?: number;
192
+ maxResultChars?: number;
193
+ }): Promise<DocsAskAIContext>;
194
+ declare function createCustomSearchAdapter(adapter: DocsSearchAdapter | DocsSearchAdapterFactory): CustomDocsSearchConfig;
195
+ //#endregion
196
+ export { DOCS_AGENT_TRACE_EVENT_TYPES as A, resolveDocsObservabilityConfig as B, createDocsSitemapResponse as C, resolveDocsSitemapConfig as D, renderDocsSitemapXml as E, createDocsAgentTraceId as F, createDocsCloudAnalytics as H, emitDocsAgentTraceEvent as I, emitDocsAnalyticsEvent as L, ResolvedDocsAnalyticsConfig as M, ResolvedDocsObservabilityConfig as N, resolveDocsSitemapRequest as O, createDocsAgentTraceContext as P, emitDocsObservabilityEvent as R, buildDocsSitemapManifest as S, renderDocsSitemapMarkdown as T, DocsCloudAnalyticsOptions as V, DocsSitemapFormat as _, createMcpSearchAdapter as a, DocsSitemapPageInput as b, formatDocsAskAIPackageHints as c, resolveAskAISearchRequestConfig as d, resolveSearchRequestConfig as f, DEFAULT_SITEMAP_XML_ROUTE as g, DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE as h, createCustomSearchAdapter as i, DocsAgentTraceContext as j, toDocsSitemapMarkdownUrl as k, inferDocsAskAIPackageHints as l, DEFAULT_SITEMAP_MD_ROUTE as m, buildDocsSearchDocuments as n, createSimpleSearchAdapter as o, DEFAULT_SITEMAP_MANIFEST_PATH as p, createAlgoliaSearchAdapter as r, createTypesenseSearchAdapter as s, buildDocsAskAIContext as t, performDocsSearch as u, DocsSitemapManifest as v, readDocsSitemapManifestFromContentMap as w, DocsSitemapResolvedConfig as x, DocsSitemapManifestPage as y, resolveDocsAnalyticsConfig as z };
@@ -1,8 +1,8 @@
1
1
  import { n as buildDocsSearchDocuments, r as createAlgoliaSearchAdapter, s as createTypesenseSearchAdapter } from "./search-kP0mAXCp.mjs";
2
- import "./prompt-utils-8nmFLQVH.mjs";
2
+ import "./sitemap-server-B370zkEo.mjs";
3
3
  import { createFilesystemDocsMcpSource } from "./mcp.mjs";
4
4
  import "./server.mjs";
5
- import { a as loadProjectEnv, d as readTopLevelStringProperty, f as resolveDocsConfigPath, p as resolveDocsContentDir } from "./config-Si-yUfM_.mjs";
5
+ import { a as loadProjectEnv, d as readTopLevelStringProperty, f as resolveDocsConfigPath, p as resolveDocsContentDir } from "./config-C7sUsMkm.mjs";
6
6
  import { readFileSync } from "node:fs";
7
7
  import pc from "picocolors";
8
8
 
package/dist/server.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { A as DocsConfig, B as DocsObservabilityEventInput, D as DocsAskAIFeedbackMessage, E as DocsAskAIFeedbackData, H as DocsSearchAdapter, K as DocsSearchConfig, O as DocsAskAIFeedbackValue, Q as DocsSearchSourcePage, R as DocsObservabilityConfig, T as DocsAskAIFeedbackConfig, U as DocsSearchAdapterContext, W as DocsSearchAdapterFactory, X as DocsSearchResult, Y as DocsSearchQuery, _ as DocsAnalyticsConfig, a as ApiReferenceRenderer, at as McpDocsSearchConfig, ct as OpenDocsProvider, g as DocsAgentTraceStatus, h as DocsAgentTraceEventType, k as DocsAskAIMcpConfig, m as DocsAgentTraceEventInput, q as DocsSearchDocument, v as DocsAnalyticsEvent, y as DocsAnalyticsEventInput, z as DocsObservabilityEvent } from "./types-OyUzNy83.mjs";
2
- import { C as resolveDocsObservabilityConfig, S as resolveDocsAnalyticsConfig, T as createDocsCloudAnalytics, _ as createDocsAgentTraceContext, a as createMcpSearchAdapter, b as emitDocsAnalyticsEvent, c as formatDocsAskAIPackageHints, d as resolveAskAISearchRequestConfig, f as resolveSearchRequestConfig, g as ResolvedDocsObservabilityConfig, h as ResolvedDocsAnalyticsConfig, i as createCustomSearchAdapter, l as inferDocsAskAIPackageHints, m as DocsAgentTraceContext, n as buildDocsSearchDocuments, o as createSimpleSearchAdapter, p as DOCS_AGENT_TRACE_EVENT_TYPES, r as createAlgoliaSearchAdapter, s as createTypesenseSearchAdapter, t as buildDocsAskAIContext, u as performDocsSearch, v as createDocsAgentTraceId, w as DocsCloudAnalyticsOptions, x as emitDocsObservabilityEvent, y as emitDocsAgentTraceEvent } from "./search-K4fg0Zzw.mjs";
1
+ import { $ as DocsSitemapConfig, A as DocsConfig, B as DocsObservabilityEventInput, D as DocsAskAIFeedbackMessage, E as DocsAskAIFeedbackData, H as DocsSearchAdapter, K as DocsSearchConfig, O as DocsAskAIFeedbackValue, Q as DocsSearchSourcePage, R as DocsObservabilityConfig, T as DocsAskAIFeedbackConfig, U as DocsSearchAdapterContext, W as DocsSearchAdapterFactory, X as DocsSearchResult, Y as DocsSearchQuery, _ as DocsAnalyticsConfig, a as ApiReferenceRenderer, g as DocsAgentTraceStatus, h as DocsAgentTraceEventType, k as DocsAskAIMcpConfig, lt as OpenDocsProvider, m as DocsAgentTraceEventInput, ot as McpDocsSearchConfig, q as DocsSearchDocument, v as DocsAnalyticsEvent, y as DocsAnalyticsEventInput, z as DocsObservabilityEvent } from "./types-OAHZJ7NI.mjs";
2
+ import { A as DOCS_AGENT_TRACE_EVENT_TYPES, B as resolveDocsObservabilityConfig, C as createDocsSitemapResponse, D as resolveDocsSitemapConfig, E as renderDocsSitemapXml, F as createDocsAgentTraceId, H as createDocsCloudAnalytics, I as emitDocsAgentTraceEvent, L as emitDocsAnalyticsEvent, M as ResolvedDocsAnalyticsConfig, N as ResolvedDocsObservabilityConfig, O as resolveDocsSitemapRequest, P as createDocsAgentTraceContext, R as emitDocsObservabilityEvent, S as buildDocsSitemapManifest, T as renderDocsSitemapMarkdown, V as DocsCloudAnalyticsOptions, _ as DocsSitemapFormat, a as createMcpSearchAdapter, b as DocsSitemapPageInput, c as formatDocsAskAIPackageHints, d as resolveAskAISearchRequestConfig, f as resolveSearchRequestConfig, g as DEFAULT_SITEMAP_XML_ROUTE, h as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, i as createCustomSearchAdapter, j as DocsAgentTraceContext, k as toDocsSitemapMarkdownUrl, l as inferDocsAskAIPackageHints, m as DEFAULT_SITEMAP_MD_ROUTE, n as buildDocsSearchDocuments, o as createSimpleSearchAdapter, p as DEFAULT_SITEMAP_MANIFEST_PATH, r as createAlgoliaSearchAdapter, s as createTypesenseSearchAdapter, t as buildDocsAskAIContext, u as performDocsSearch, v as DocsSitemapManifest, w as readDocsSitemapManifestFromContentMap, x as DocsSitemapResolvedConfig, y as DocsSitemapManifestPage, z as resolveDocsAnalyticsConfig } from "./search-D6uAGmiH.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
@@ -63,4 +63,7 @@ declare function parsePromptStringArray(value: unknown): string[] | undefined;
63
63
  declare function resolvePromptProviderChoices(availableProviders?: PromptProviderInput[], preferredNames?: string[]): PromptProviderChoice[];
64
64
  declare function sanitizePromptText(text: string): string;
65
65
  //#endregion
66
- export { type ApiReferenceFramework, type ApiReferenceRenderer, type ApiReferenceRoute, DEFAULT_PROMPT_PROVIDER_TEMPLATES, DOCS_AGENT_TRACE_EVENT_TYPES, type DocsAgentTraceContext, type DocsAgentTraceEventInput, type DocsAgentTraceEventType, type DocsAgentTraceStatus, type DocsAnalyticsConfig, type DocsAnalyticsEvent, type DocsAnalyticsEventInput, type DocsAskAIFeedbackConfig, type DocsAskAIFeedbackData, type DocsAskAIFeedbackMessage, type DocsAskAIFeedbackValue, type DocsAskAIMcpConfig, type DocsCloudAnalyticsOptions, type DocsMcpHttpHandlers, type DocsMcpNavigationNode, type DocsMcpNavigationTree, type DocsMcpPage, type DocsMcpResolvedConfig, type DocsMcpSource, type DocsObservabilityConfig, type DocsObservabilityEvent, type DocsObservabilityEventInput, type DocsSearchAdapter, type DocsSearchAdapterContext, type DocsSearchAdapterFactory, type DocsSearchConfig, type DocsSearchDocument, type DocsSearchQuery, type DocsSearchResult, type DocsSearchSourcePage, type McpDocsSearchConfig, type PromptAction, type PromptProviderChoice, type ResolvedApiReferenceConfig, type ResolvedDocsAnalyticsConfig, type ResolvedDocsObservabilityConfig, type SerializedOpenDocsProvider, buildApiReferenceHtmlDocument, buildApiReferenceHtmlDocumentAsync, buildApiReferenceOpenApiDocument, buildApiReferenceOpenApiDocumentAsync, buildApiReferencePageTitle, buildApiReferenceScalarCss, buildDocsAskAIContext, buildDocsSearchDocuments, createAlgoliaSearchAdapter, createCustomSearchAdapter, createDocsAgentTraceContext, createDocsAgentTraceId, createDocsCloudAnalytics, createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, createMcpSearchAdapter, createSimpleSearchAdapter, createTypesenseSearchAdapter, emitDocsAgentTraceEvent, emitDocsAnalyticsEvent, emitDocsObservabilityEvent, formatDocsAskAIPackageHints, inferDocsAskAIPackageHints, normalizeDocsMcpRoute, normalizePromptProviderName, parsePromptStringArray, performDocsSearch, resolveApiReferenceConfig, resolveApiReferenceRenderer, resolveAskAISearchRequestConfig, resolveDocsAnalyticsConfig, resolveDocsMcpConfig, resolveDocsObservabilityConfig, resolvePromptProviderChoices, resolveSearchRequestConfig, runDocsMcpStdio, sanitizePromptText, serializeDocsIcon, serializeDocsIconRegistry, serializeOpenDocsProviders };
66
+ //#region src/sitemap-server.d.ts
67
+ declare function readDocsSitemapManifest(rootDir: string, sitemap?: boolean | DocsSitemapConfig): DocsSitemapManifest | null;
68
+ //#endregion
69
+ export { type ApiReferenceFramework, type ApiReferenceRenderer, type ApiReferenceRoute, DEFAULT_PROMPT_PROVIDER_TEMPLATES, DEFAULT_SITEMAP_MANIFEST_PATH, DEFAULT_SITEMAP_MD_ROUTE, DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, DEFAULT_SITEMAP_XML_ROUTE, DOCS_AGENT_TRACE_EVENT_TYPES, type DocsAgentTraceContext, type DocsAgentTraceEventInput, type DocsAgentTraceEventType, type DocsAgentTraceStatus, type DocsAnalyticsConfig, type DocsAnalyticsEvent, type DocsAnalyticsEventInput, type DocsAskAIFeedbackConfig, type DocsAskAIFeedbackData, type DocsAskAIFeedbackMessage, type DocsAskAIFeedbackValue, type DocsAskAIMcpConfig, type DocsCloudAnalyticsOptions, type DocsMcpHttpHandlers, type DocsMcpNavigationNode, type DocsMcpNavigationTree, type DocsMcpPage, type DocsMcpResolvedConfig, type DocsMcpSource, type DocsObservabilityConfig, type DocsObservabilityEvent, type DocsObservabilityEventInput, type DocsSearchAdapter, type DocsSearchAdapterContext, type DocsSearchAdapterFactory, type DocsSearchConfig, type DocsSearchDocument, type DocsSearchQuery, type DocsSearchResult, type DocsSearchSourcePage, type DocsSitemapFormat, type DocsSitemapManifest, type DocsSitemapManifestPage, type DocsSitemapPageInput, type DocsSitemapResolvedConfig, type McpDocsSearchConfig, type PromptAction, type PromptProviderChoice, type ResolvedApiReferenceConfig, type ResolvedDocsAnalyticsConfig, type ResolvedDocsObservabilityConfig, type SerializedOpenDocsProvider, buildApiReferenceHtmlDocument, buildApiReferenceHtmlDocumentAsync, buildApiReferenceOpenApiDocument, buildApiReferenceOpenApiDocumentAsync, buildApiReferencePageTitle, buildApiReferenceScalarCss, buildDocsAskAIContext, buildDocsSearchDocuments, buildDocsSitemapManifest, createAlgoliaSearchAdapter, createCustomSearchAdapter, createDocsAgentTraceContext, createDocsAgentTraceId, createDocsCloudAnalytics, createDocsMcpHttpHandler, createDocsMcpServer, createDocsSitemapResponse, createFilesystemDocsMcpSource, createMcpSearchAdapter, createSimpleSearchAdapter, createTypesenseSearchAdapter, emitDocsAgentTraceEvent, emitDocsAnalyticsEvent, emitDocsObservabilityEvent, formatDocsAskAIPackageHints, inferDocsAskAIPackageHints, normalizeDocsMcpRoute, normalizePromptProviderName, parsePromptStringArray, performDocsSearch, readDocsSitemapManifest, readDocsSitemapManifestFromContentMap, renderDocsSitemapMarkdown, renderDocsSitemapXml, resolveApiReferenceConfig, resolveApiReferenceRenderer, resolveAskAISearchRequestConfig, resolveDocsAnalyticsConfig, resolveDocsMcpConfig, resolveDocsObservabilityConfig, resolveDocsSitemapConfig, resolveDocsSitemapRequest, resolvePromptProviderChoices, resolveSearchRequestConfig, runDocsMcpStdio, sanitizePromptText, serializeDocsIcon, serializeDocsIconRegistry, serializeOpenDocsProviders, toDocsSitemapMarkdownUrl };
package/dist/server.mjs CHANGED
@@ -1,5 +1,6 @@
1
1
  import { A as emitDocsAnalyticsEvent, D as createDocsAgentTraceContext, E as DOCS_AGENT_TRACE_EVENT_TYPES, M as resolveDocsAnalyticsConfig, N as resolveDocsObservabilityConfig, O as createDocsAgentTraceId, P as createDocsCloudAnalytics, a as createMcpSearchAdapter, c as formatDocsAskAIPackageHints, d as resolveAskAISearchRequestConfig, f as resolveSearchRequestConfig, i as createCustomSearchAdapter, j as emitDocsObservabilityEvent, k as emitDocsAgentTraceEvent, l as inferDocsAskAIPackageHints, n as buildDocsSearchDocuments, o as createSimpleSearchAdapter, r as createAlgoliaSearchAdapter, s as createTypesenseSearchAdapter, t as buildDocsAskAIContext, u as performDocsSearch } from "./search-kP0mAXCp.mjs";
2
- import { a as sanitizePromptText, c as serializeOpenDocsProviders, d as buildApiReferenceOpenApiDocument, f as buildApiReferenceOpenApiDocumentAsync, g as resolveApiReferenceRenderer, h as resolveApiReferenceConfig, i as resolvePromptProviderChoices, l as buildApiReferenceHtmlDocument, m as buildApiReferenceScalarCss, n as normalizePromptProviderName, o as serializeDocsIcon, p as buildApiReferencePageTitle, r as parsePromptStringArray, s as serializeDocsIconRegistry, t as DEFAULT_PROMPT_PROVIDER_TEMPLATES, u as buildApiReferenceHtmlDocumentAsync } from "./prompt-utils-8nmFLQVH.mjs";
2
+ import { a as buildDocsSitemapManifest, c as renderDocsSitemapMarkdown, d as resolveDocsSitemapRequest, f as toDocsSitemapMarkdownUrl, i as DEFAULT_SITEMAP_XML_ROUTE, l as renderDocsSitemapXml, n as DEFAULT_SITEMAP_MD_ROUTE, o as createDocsSitemapResponse, r as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, s as readDocsSitemapManifestFromContentMap, t as DEFAULT_SITEMAP_MANIFEST_PATH, u as resolveDocsSitemapConfig } from "./sitemap-Buobvabq.mjs";
3
+ import { _ as resolveApiReferenceRenderer, a as resolvePromptProviderChoices, c as serializeDocsIconRegistry, d as buildApiReferenceHtmlDocumentAsync, f as buildApiReferenceOpenApiDocument, g as resolveApiReferenceConfig, h as buildApiReferenceScalarCss, i as parsePromptStringArray, l as serializeOpenDocsProviders, m as buildApiReferencePageTitle, n as DEFAULT_PROMPT_PROVIDER_TEMPLATES, o as sanitizePromptText, p as buildApiReferenceOpenApiDocumentAsync, r as normalizePromptProviderName, s as serializeDocsIcon, t as readDocsSitemapManifest, u as buildApiReferenceHtmlDocument } from "./sitemap-server-B370zkEo.mjs";
3
4
  import { createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, normalizeDocsMcpRoute, resolveDocsMcpConfig, runDocsMcpStdio } from "./mcp.mjs";
4
5
 
5
- export { DEFAULT_PROMPT_PROVIDER_TEMPLATES, DOCS_AGENT_TRACE_EVENT_TYPES, buildApiReferenceHtmlDocument, buildApiReferenceHtmlDocumentAsync, buildApiReferenceOpenApiDocument, buildApiReferenceOpenApiDocumentAsync, buildApiReferencePageTitle, buildApiReferenceScalarCss, buildDocsAskAIContext, buildDocsSearchDocuments, createAlgoliaSearchAdapter, createCustomSearchAdapter, createDocsAgentTraceContext, createDocsAgentTraceId, createDocsCloudAnalytics, createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, createMcpSearchAdapter, createSimpleSearchAdapter, createTypesenseSearchAdapter, emitDocsAgentTraceEvent, emitDocsAnalyticsEvent, emitDocsObservabilityEvent, formatDocsAskAIPackageHints, inferDocsAskAIPackageHints, normalizeDocsMcpRoute, normalizePromptProviderName, parsePromptStringArray, performDocsSearch, resolveApiReferenceConfig, resolveApiReferenceRenderer, resolveAskAISearchRequestConfig, resolveDocsAnalyticsConfig, resolveDocsMcpConfig, resolveDocsObservabilityConfig, resolvePromptProviderChoices, resolveSearchRequestConfig, runDocsMcpStdio, sanitizePromptText, serializeDocsIcon, serializeDocsIconRegistry, serializeOpenDocsProviders };
6
+ export { DEFAULT_PROMPT_PROVIDER_TEMPLATES, DEFAULT_SITEMAP_MANIFEST_PATH, DEFAULT_SITEMAP_MD_ROUTE, DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, DEFAULT_SITEMAP_XML_ROUTE, DOCS_AGENT_TRACE_EVENT_TYPES, buildApiReferenceHtmlDocument, buildApiReferenceHtmlDocumentAsync, buildApiReferenceOpenApiDocument, buildApiReferenceOpenApiDocumentAsync, buildApiReferencePageTitle, buildApiReferenceScalarCss, buildDocsAskAIContext, buildDocsSearchDocuments, buildDocsSitemapManifest, createAlgoliaSearchAdapter, createCustomSearchAdapter, createDocsAgentTraceContext, createDocsAgentTraceId, createDocsCloudAnalytics, createDocsMcpHttpHandler, createDocsMcpServer, createDocsSitemapResponse, createFilesystemDocsMcpSource, createMcpSearchAdapter, createSimpleSearchAdapter, createTypesenseSearchAdapter, emitDocsAgentTraceEvent, emitDocsAnalyticsEvent, emitDocsObservabilityEvent, formatDocsAskAIPackageHints, inferDocsAskAIPackageHints, normalizeDocsMcpRoute, normalizePromptProviderName, parsePromptStringArray, performDocsSearch, readDocsSitemapManifest, readDocsSitemapManifestFromContentMap, renderDocsSitemapMarkdown, renderDocsSitemapXml, resolveApiReferenceConfig, resolveApiReferenceRenderer, resolveAskAISearchRequestConfig, resolveDocsAnalyticsConfig, resolveDocsMcpConfig, resolveDocsObservabilityConfig, resolveDocsSitemapConfig, resolveDocsSitemapRequest, resolvePromptProviderChoices, resolveSearchRequestConfig, runDocsMcpStdio, sanitizePromptText, serializeDocsIcon, serializeDocsIconRegistry, serializeOpenDocsProviders, toDocsSitemapMarkdownUrl };
@@ -0,0 +1,244 @@
1
+ //#region src/sitemap.ts
2
+ const DEFAULT_SITEMAP_XML_ROUTE = "/sitemap.xml";
3
+ const DEFAULT_SITEMAP_MD_ROUTE = "/sitemap.md";
4
+ const DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE = "/.well-known/sitemap.md";
5
+ const DEFAULT_SITEMAP_MANIFEST_PATH = ".farming-labs/sitemap-manifest.json";
6
+ function normalizeUrlPath(value) {
7
+ const normalized = value.replace(/\/+/g, "/");
8
+ if (normalized === "/") return normalized;
9
+ return normalized.replace(/\/+$/, "");
10
+ }
11
+ function normalizeRoutePrefix(value) {
12
+ if (!value) return "";
13
+ const normalized = normalizeUrlPath(`/${value.replace(/^\/+|\/+$/g, "")}`);
14
+ return normalized === "/" ? "" : normalized;
15
+ }
16
+ function joinRoute(prefix, route) {
17
+ return normalizeUrlPath(`${prefix}/${route.replace(/^\/+/, "")}`);
18
+ }
19
+ function normalizeDateOnly(value) {
20
+ if (!value) return void 0;
21
+ const trimmed = value.trim();
22
+ if (!trimmed) return void 0;
23
+ const dateOnly = trimmed.match(/^(\d{4}-\d{2}-\d{2})/);
24
+ if (dateOnly) return dateOnly[1];
25
+ const parsed = new Date(trimmed);
26
+ if (Number.isNaN(parsed.getTime())) return void 0;
27
+ return parsed.toISOString().slice(0, 10);
28
+ }
29
+ function normalizeBaseUrl(value) {
30
+ if (!value) return void 0;
31
+ return value.trim().replace(/\/+$/, "") || void 0;
32
+ }
33
+ function isEnabledObject(config) {
34
+ if (config === false || config === void 0) return false;
35
+ if (config === true) return true;
36
+ return config.enabled !== false;
37
+ }
38
+ function resolveDocsSitemapConfig(sitemap, defaults = {}) {
39
+ const objectConfig = sitemap && typeof sitemap === "object" ? sitemap : {};
40
+ const routePrefix = normalizeRoutePrefix(objectConfig.routePrefix);
41
+ const xmlConfig = objectConfig.xml;
42
+ const markdownConfig = objectConfig.markdown;
43
+ const xmlEnabled = xmlConfig === false ? false : typeof xmlConfig === "object" ? xmlConfig.enabled ?? true : true;
44
+ const markdownEnabled = markdownConfig === false ? false : typeof markdownConfig === "object" ? markdownConfig.enabled ?? true : true;
45
+ return {
46
+ enabled: isEnabledObject(sitemap),
47
+ routePrefix,
48
+ baseUrl: normalizeBaseUrl(objectConfig.baseUrl ?? defaults.baseUrl),
49
+ manifestPath: objectConfig.manifestPath ?? DEFAULT_SITEMAP_MANIFEST_PATH,
50
+ xml: {
51
+ enabled: xmlEnabled,
52
+ includeLastmod: typeof xmlConfig === "object" ? xmlConfig.includeLastmod ?? true : true,
53
+ route: joinRoute(routePrefix, DEFAULT_SITEMAP_XML_ROUTE)
54
+ },
55
+ markdown: {
56
+ enabled: markdownEnabled,
57
+ includeDescriptions: typeof markdownConfig === "object" ? markdownConfig.includeDescriptions ?? true : true,
58
+ includeLastmod: typeof markdownConfig === "object" ? markdownConfig.includeLastmod ?? true : true,
59
+ linkTarget: typeof markdownConfig === "object" ? markdownConfig.linkTarget ?? "both" : "both",
60
+ route: joinRoute(routePrefix, DEFAULT_SITEMAP_MD_ROUTE),
61
+ wellKnownRoute: joinRoute(routePrefix, DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE)
62
+ }
63
+ };
64
+ }
65
+ function resolveDocsSitemapRequest(url, sitemap) {
66
+ const pathname = normalizeUrlPath(url.pathname);
67
+ const format = url.searchParams.get("format")?.trim();
68
+ if (pathname === "/api/docs") {
69
+ if (format === "sitemap-xml") return "xml";
70
+ if (format === "sitemap-md" || format === "sitemap-markdown") return "markdown";
71
+ }
72
+ const resolved = resolveDocsSitemapConfig(sitemap);
73
+ if (!resolved.enabled) return null;
74
+ if (resolved.xml.enabled && pathname === resolved.xml.route) return "xml";
75
+ if (resolved.markdown.enabled && (pathname === resolved.markdown.route || pathname === resolved.markdown.wellKnownRoute)) return "markdown";
76
+ return null;
77
+ }
78
+ function toDocsSitemapMarkdownUrl(url) {
79
+ const normalized = normalizeUrlPath(url);
80
+ return normalized.endsWith(".md") ? normalized : `${normalized}.md`;
81
+ }
82
+ function absolutizeUrl(baseUrl, url) {
83
+ if (/^https?:\/\//i.test(url)) return url;
84
+ const base = normalizeBaseUrl(baseUrl);
85
+ return base ? `${base}${url.startsWith("/") ? url : `/${url}`}` : url;
86
+ }
87
+ function escapeXml(value) {
88
+ return value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;");
89
+ }
90
+ function hashString(value) {
91
+ let hash = 14695981039346656037n;
92
+ const bytes = new TextEncoder().encode(value);
93
+ for (const byte of bytes) {
94
+ hash ^= BigInt(byte);
95
+ hash = BigInt.asUintN(64, hash * 1099511628211n);
96
+ }
97
+ return `"fnv1a64-${hash.toString(16).padStart(16, "0")}"`;
98
+ }
99
+ function newestLastmod(pages) {
100
+ let newest;
101
+ for (const page of pages) {
102
+ const date = normalizeDateOnly(page.lastmod);
103
+ if (!date) continue;
104
+ if (!newest || date > newest) newest = date;
105
+ }
106
+ return newest;
107
+ }
108
+ function titleize(value) {
109
+ return value.replace(/-/g, " ").replace(/\b\w/g, (char) => char.toUpperCase());
110
+ }
111
+ function sitemapSectionName(entry, pageUrl) {
112
+ const normalizedEntry = `/${entry.replace(/^\/+|\/+$/g, "") || "docs"}`;
113
+ const normalizedUrl = normalizeUrlPath(pageUrl);
114
+ if (normalizedUrl === normalizedEntry) return "Overview";
115
+ const firstSegment = (normalizedUrl.startsWith(`${normalizedEntry}/`) ? normalizedUrl.slice(normalizedEntry.length + 1) : normalizedUrl.replace(/^\/+/, "")).split("/").filter(Boolean)[0];
116
+ return firstSegment ? titleize(firstSegment) : "Pages";
117
+ }
118
+ function buildDocsSitemapManifest(options) {
119
+ const baseUrl = normalizeBaseUrl(options.baseUrl);
120
+ const seen = /* @__PURE__ */ new Set();
121
+ const pages = [];
122
+ for (const page of options.pages) {
123
+ const url = normalizeUrlPath(page.url);
124
+ if (seen.has(url)) continue;
125
+ seen.add(url);
126
+ const resolvedLastmod = options.resolveLastmod?.(page);
127
+ const fallbackLastmod = normalizeDateOnly(page.lastmod ?? page.lastModified);
128
+ const lastmod = normalizeDateOnly(resolvedLastmod?.lastmod) ?? fallbackLastmod;
129
+ pages.push({
130
+ url,
131
+ absoluteUrl: absolutizeUrl(baseUrl, url),
132
+ markdownUrl: toDocsSitemapMarkdownUrl(url),
133
+ title: page.title,
134
+ description: page.description,
135
+ sourcePath: page.sourcePath,
136
+ lastmod,
137
+ lastmodSource: resolvedLastmod?.lastmodSource ?? (lastmod ? "unknown" : void 0),
138
+ related: page.related?.map((link) => link.href)
139
+ });
140
+ }
141
+ pages.sort((left, right) => left.url.localeCompare(right.url));
142
+ return {
143
+ version: 1,
144
+ generatedAt: options.generatedAt ?? (/* @__PURE__ */ new Date()).toISOString(),
145
+ baseUrl,
146
+ entry: options.entry ?? "docs",
147
+ siteTitle: options.siteTitle,
148
+ pages
149
+ };
150
+ }
151
+ function renderDocsSitemapXml(manifest, options = {}) {
152
+ const baseUrl = normalizeBaseUrl(options.baseUrl ?? manifest.baseUrl);
153
+ const includeLastmod = options.includeLastmod ?? true;
154
+ const lines = ["<?xml version=\"1.0\" encoding=\"UTF-8\"?>", "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">"];
155
+ for (const page of manifest.pages) {
156
+ lines.push(" <url>");
157
+ lines.push(` <loc>${escapeXml(page.absoluteUrl ?? absolutizeUrl(baseUrl, page.url))}</loc>`);
158
+ const lastmod = normalizeDateOnly(page.lastmod);
159
+ if (includeLastmod && lastmod) lines.push(` <lastmod>${lastmod}</lastmod>`);
160
+ lines.push(" </url>");
161
+ }
162
+ lines.push("</urlset>");
163
+ return `${lines.join("\n")}\n`;
164
+ }
165
+ function renderDocsSitemapMarkdown(manifest, options = {}) {
166
+ const siteTitle = manifest.siteTitle ?? "Documentation";
167
+ const includeDescriptions = options.includeDescriptions ?? true;
168
+ const includeLastmod = options.includeLastmod ?? true;
169
+ const linkTarget = options.linkTarget ?? "both";
170
+ const lines = [`# ${siteTitle} Sitemap`, ""];
171
+ const baseUrl = normalizeBaseUrl(options.baseUrl ?? manifest.baseUrl);
172
+ if (baseUrl) lines.push(`Base URL: ${baseUrl}`);
173
+ lines.push(`Docs entry: /${manifest.entry.replace(/^\/+|\/+$/g, "") || "docs"}`);
174
+ lines.push(`Generated: ${normalizeDateOnly(manifest.generatedAt) ?? manifest.generatedAt}`, "");
175
+ const groups = /* @__PURE__ */ new Map();
176
+ for (const page of manifest.pages) {
177
+ const sectionName = sitemapSectionName(manifest.entry, page.url);
178
+ groups.set(sectionName, [...groups.get(sectionName) ?? [], page]);
179
+ }
180
+ for (const [sectionName, pages] of groups) {
181
+ lines.push(`## ${sectionName}`, "");
182
+ for (const page of pages) {
183
+ const primaryHref = linkTarget === "markdown" ? page.markdownUrl : page.url;
184
+ lines.push(`- [${page.title}](${primaryHref})`);
185
+ if (linkTarget === "both" || linkTarget === "markdown") lines.push(` Markdown: ${page.markdownUrl}`);
186
+ if (includeDescriptions && page.description) lines.push(` Description: ${page.description}`);
187
+ const lastmod = normalizeDateOnly(page.lastmod);
188
+ if (includeLastmod && lastmod) lines.push(` Last updated: ${lastmod}`);
189
+ if (page.related && page.related.length > 0) lines.push(` Related: ${page.related.join(", ")}`);
190
+ lines.push("");
191
+ }
192
+ }
193
+ return lines.join("\n").replace(/\n{3,}/g, "\n\n");
194
+ }
195
+ function readDocsSitemapManifestFromContentMap(contentMap) {
196
+ if (!contentMap) return null;
197
+ const raw = contentMap[`/${DEFAULT_SITEMAP_MANIFEST_PATH}`] ?? contentMap[DEFAULT_SITEMAP_MANIFEST_PATH];
198
+ if (!raw) return null;
199
+ try {
200
+ return JSON.parse(raw);
201
+ } catch {
202
+ return null;
203
+ }
204
+ }
205
+ function createDocsSitemapResponse({ request, sitemap, entry = "docs", siteTitle, baseUrl, pages, manifest }) {
206
+ const url = new URL(request.url);
207
+ const format = resolveDocsSitemapRequest(url, sitemap);
208
+ if (!format) return null;
209
+ const resolved = resolveDocsSitemapConfig(sitemap, { baseUrl });
210
+ if (!resolved.enabled) return null;
211
+ if (format === "xml" && !resolved.xml.enabled) return null;
212
+ if (format === "markdown" && !resolved.markdown.enabled) return null;
213
+ const nextManifest = manifest ?? buildDocsSitemapManifest({
214
+ pages,
215
+ entry,
216
+ siteTitle,
217
+ baseUrl: resolved.baseUrl ?? url.origin
218
+ });
219
+ const responseBaseUrl = resolved.baseUrl ?? nextManifest.baseUrl ?? url.origin;
220
+ const body = format === "xml" ? renderDocsSitemapXml(nextManifest, {
221
+ baseUrl: responseBaseUrl,
222
+ includeLastmod: resolved.xml.includeLastmod
223
+ }) : renderDocsSitemapMarkdown(nextManifest, {
224
+ baseUrl: responseBaseUrl,
225
+ includeDescriptions: resolved.markdown.includeDescriptions,
226
+ includeLastmod: resolved.markdown.includeLastmod,
227
+ linkTarget: resolved.markdown.linkTarget
228
+ });
229
+ const headers = new Headers({
230
+ "Content-Type": format === "xml" ? "application/xml; charset=utf-8" : "text/markdown; charset=utf-8",
231
+ "Cache-Control": "public, max-age=0, must-revalidate",
232
+ ETag: hashString(body)
233
+ });
234
+ const lastModified = newestLastmod(nextManifest.pages);
235
+ if (lastModified) headers.set("Last-Modified", (/* @__PURE__ */ new Date(`${lastModified}T00:00:00.000Z`)).toUTCString());
236
+ if (request.headers.get("if-none-match") === headers.get("ETag")) return new Response(null, {
237
+ status: 304,
238
+ headers
239
+ });
240
+ return new Response(body, { headers });
241
+ }
242
+
243
+ //#endregion
244
+ export { buildDocsSitemapManifest as a, renderDocsSitemapMarkdown as c, resolveDocsSitemapRequest as d, toDocsSitemapMarkdownUrl as f, DEFAULT_SITEMAP_XML_ROUTE as i, renderDocsSitemapXml as l, DEFAULT_SITEMAP_MD_ROUTE as n, createDocsSitemapResponse as o, DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE as r, readDocsSitemapManifestFromContentMap as s, DEFAULT_SITEMAP_MANIFEST_PATH as t, resolveDocsSitemapConfig as u };