@farming-labs/docs 0.2.60 → 0.2.62

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 (51) hide show
  1. package/README.md +1 -1
  2. package/package.json +11 -1
  3. package/dist/agent-BFqyqEnC.mjs +0 -4547
  4. package/dist/agent-DlxriaTs.mjs +0 -624
  5. package/dist/agent-evals-kJs2Y9xR.mjs +0 -2144
  6. package/dist/agent-export-BgUaiW8f.mjs +0 -869
  7. package/dist/agent-scope-CCaIY1aK.mjs +0 -283
  8. package/dist/agents-Djh-HXih.mjs +0 -219
  9. package/dist/analytics-Bx44lg6d.mjs +0 -177
  10. package/dist/cli/index.d.mts +0 -15
  11. package/dist/cli/index.mjs +0 -452
  12. package/dist/client/react.d.mts +0 -45
  13. package/dist/client/react.mjs +0 -223
  14. package/dist/cloud-BH_sHX64.mjs +0 -1615
  15. package/dist/cloud-analytics-CSyFE6SS.mjs +0 -132
  16. package/dist/cloud-ask-ai-B2WnG4fF.d.mts +0 -23
  17. package/dist/cloud-ask-ai-hnJfj8-X.mjs +0 -382
  18. package/dist/code-blocks-qe0T8-xe.mjs +0 -871
  19. package/dist/codeblocks-Bq67u32v.mjs +0 -250
  20. package/dist/config-DASewQ0x.mjs +0 -363
  21. package/dist/dev-DgY5xGl9.mjs +0 -1333
  22. package/dist/docs-cloud-server.d.mts +0 -70
  23. package/dist/docs-cloud-server.mjs +0 -310
  24. package/dist/doctor-CO1VMcF_.mjs +0 -1906
  25. package/dist/downgrade-BZs86NVr.mjs +0 -184
  26. package/dist/errors-CVqZ3kOO.mjs +0 -20
  27. package/dist/golden-evaluations-BN9u2wxw.mjs +0 -1483
  28. package/dist/i18n-CAlj1ADU.mjs +0 -40
  29. package/dist/index.d.mts +0 -1099
  30. package/dist/index.mjs +0 -9
  31. package/dist/init-Bd_k06bR.mjs +0 -1233
  32. package/dist/mcp-B_yXL5G5.mjs +0 -137
  33. package/dist/mcp.d.mts +0 -287
  34. package/dist/mcp.mjs +0 -4135
  35. package/dist/metadata-BDuewuzq.mjs +0 -237
  36. package/dist/package-version-qik_4J6C.mjs +0 -128
  37. package/dist/reading-time-BkEft6SD.mjs +0 -741
  38. package/dist/review-NC-sOdXn.mjs +0 -665
  39. package/dist/robots-DskPvGPw.mjs +0 -178
  40. package/dist/robots-ltltiLJF.mjs +0 -197
  41. package/dist/search-C1JitPwi.d.mts +0 -397
  42. package/dist/search-D57JXQLj.mjs +0 -1758
  43. package/dist/search-o4Ud6OXv.mjs +0 -102
  44. package/dist/server.d.mts +0 -341
  45. package/dist/server.mjs +0 -11
  46. package/dist/sitemap-Cq-Yj_iA.mjs +0 -247
  47. package/dist/sitemap-server-C1ibVKOy.mjs +0 -1137
  48. package/dist/templates-DNw15P-x.mjs +0 -2373
  49. package/dist/types-XHABMh_f.d.mts +0 -3248
  50. package/dist/upgrade-BCJTCW3O.mjs +0 -56
  51. package/dist/utils-6UCLxv4B.mjs +0 -225
@@ -1,137 +0,0 @@
1
- import "./agent-BFqyqEnC.mjs";
2
- import "./search-D57JXQLj.mjs";
3
- import "./sitemap-server-C1ibVKOy.mjs";
4
- import "./agent-evals-kJs2Y9xR.mjs";
5
- import { createFilesystemDocsMcpSource, resolveDocsMcpConfig, runDocsMcpStdio } from "./mcp.mjs";
6
- import "./code-blocks-qe0T8-xe.mjs";
7
- import "./server.mjs";
8
- import { d as readStringProperty, h as resolveDocsContentDir, l as readNavTitle, m as resolveDocsConfigPath, n as extractObjectLiteral, s as readBooleanProperty } from "./config-DASewQ0x.mjs";
9
- import { readFileSync } from "node:fs";
10
- import pc from "picocolors";
11
-
12
- //#region src/cli/mcp.ts
13
- const HOSTED_MCP_CLIENTS = [
14
- "claude-code",
15
- "cursor",
16
- "vscode"
17
- ];
18
- const HOSTED_MCP_CLIENT_LABELS = {
19
- "claude-code": "Claude Code",
20
- cursor: "Cursor",
21
- vscode: "VS Code"
22
- };
23
- async function runMcp(options = {}) {
24
- if (options.setup) {
25
- printHostedMcpSetup(options);
26
- return;
27
- }
28
- const rootDir = process.cwd();
29
- const content = readFileSync(resolveDocsConfigPath(rootDir, options.configPath), "utf-8");
30
- const entry = readStringProperty(content, "entry") ?? "docs";
31
- const contentDir = resolveDocsContentDir(rootDir, content, entry);
32
- const navTitle = readNavTitle(content);
33
- const mcp = readMcpConfig(content);
34
- await runDocsMcpStdio({
35
- source: createFilesystemDocsMcpSource({
36
- rootDir,
37
- entry,
38
- contentDir,
39
- siteTitle: navTitle ?? "Documentation"
40
- }),
41
- mcp: resolveDocsMcpConfig(mcp ?? true, { defaultName: navTitle ?? "@farming-labs/docs" }),
42
- defaultName: navTitle ?? "@farming-labs/docs"
43
- });
44
- }
45
- function normalizeApiBaseUrl(value) {
46
- return (value?.trim() || "https://api.farming-labs.dev").replace(/\/+$/g, "");
47
- }
48
- function normalizeHostedMcpClient(value) {
49
- const normalized = value?.trim().toLowerCase() || "claude-code";
50
- if (normalized === "claude") return "claude-code";
51
- if (HOSTED_MCP_CLIENTS.includes(normalized)) return normalized;
52
- throw new Error(`Unsupported MCP client "${value}". Expected one of: ${HOSTED_MCP_CLIENTS.join(", ")}.`);
53
- }
54
- function createHostedMcpClientConfig(deploymentId, apiBaseUrl, clientName) {
55
- const endpoint = `${normalizeApiBaseUrl(apiBaseUrl)}/v1/mcp/${deploymentId.trim()}`;
56
- const client = normalizeHostedMcpClient(clientName);
57
- if (client === "cursor") return { mcpServers: { "docs-cloud": {
58
- url: endpoint,
59
- headers: { Authorization: "Bearer ${env:DOCS_CLOUD_API_KEY}" }
60
- } } };
61
- if (client === "vscode") return {
62
- inputs: [{
63
- type: "promptString",
64
- id: "docs-cloud-api-key",
65
- description: "Docs Cloud API key",
66
- password: true
67
- }],
68
- servers: { "docs-cloud": {
69
- type: "http",
70
- url: endpoint,
71
- headers: { Authorization: "Bearer ${input:docs-cloud-api-key}" }
72
- } }
73
- };
74
- return { mcpServers: { "docs-cloud": {
75
- type: "http",
76
- url: endpoint,
77
- headers: { Authorization: "Bearer ${DOCS_CLOUD_API_KEY}" }
78
- } } };
79
- }
80
- function printHostedMcpSetup(options) {
81
- const deploymentId = options.deploymentId?.trim();
82
- if (!deploymentId) {
83
- console.error(pc.red("Missing MCP deployment id."));
84
- console.error();
85
- console.error(`Run ${pc.cyan("npx @farming-labs/docs mcp setup --deployment <deployment-id>")}.`);
86
- process.exit(1);
87
- }
88
- const client = normalizeHostedMcpClient(options.client);
89
- const jsonConfig = createHostedMcpClientConfig(deploymentId, options.apiBaseUrl, client);
90
- const endpoint = `${normalizeApiBaseUrl(options.apiBaseUrl)}/v1/mcp/${deploymentId}`;
91
- if (options.json) {
92
- console.log(JSON.stringify(jsonConfig, null, 2));
93
- return;
94
- }
95
- console.log(pc.bold("Docs Cloud MCP deployment"));
96
- console.log(pc.dim(`Deployment: ${deploymentId}`));
97
- console.log();
98
- console.log(pc.cyan("Streamable HTTP (recommended)"));
99
- console.log(` ${endpoint}`);
100
- console.log();
101
- console.log(pc.cyan("SSE"));
102
- console.log(` ${endpoint}/sse`);
103
- console.log();
104
- console.log(pc.cyan(`MCP client JSON (${HOSTED_MCP_CLIENT_LABELS[client]})`));
105
- console.log(JSON.stringify(jsonConfig, null, 2));
106
- console.log();
107
- if (client === "vscode") console.log(pc.dim("VS Code prompts for the API key once and stores it securely."));
108
- else console.log(pc.dim("The config reads DOCS_CLOUD_API_KEY from the MCP client environment; no secret is embedded."));
109
- console.log(pc.dim("Use --client cursor or --client vscode to emit another native format."));
110
- }
111
- function readMcpConfig(content) {
112
- if (content.match(/mcp\s*:\s*false/)) return false;
113
- if (content.match(/mcp\s*:\s*true/)) return true;
114
- const block = extractObjectLiteral(content, "mcp");
115
- if (!block) return void 0;
116
- return {
117
- enabled: readBooleanProperty(block, "enabled"),
118
- route: readStringProperty(block, "route"),
119
- name: readStringProperty(block, "name"),
120
- version: readStringProperty(block, "version"),
121
- tools: {
122
- listDocs: readBooleanProperty(block, "listDocs"),
123
- listPages: readBooleanProperty(block, "listPages"),
124
- listTasks: readBooleanProperty(block, "listTasks"),
125
- readTask: readBooleanProperty(block, "readTask"),
126
- readPage: readBooleanProperty(block, "readPage"),
127
- searchDocs: readBooleanProperty(block, "searchDocs"),
128
- getNavigation: readBooleanProperty(block, "getNavigation"),
129
- getCodeExamples: readBooleanProperty(block, "getCodeExamples"),
130
- getConfigSchema: readBooleanProperty(block, "getConfigSchema"),
131
- getContext: readBooleanProperty(block, "getContext")
132
- }
133
- };
134
- }
135
-
136
- //#endregion
137
- export { runMcp };
package/dist/mcp.d.mts DELETED
@@ -1,287 +0,0 @@
1
- import { $t as DocsTelemetryFramework, Ct as DocsObservabilityConfig, F as DocsAnalyticsConfig, Gt as DocsSearchSourcePage, Jt as DocsTelemetryConfig, Sn as PageAgentFrontmatter, _n as OrderingItem, dt as DocsMcpAllowedOrigins, ft as DocsMcpAuthPrincipal, gt as DocsMcpConfig, pt as DocsMcpAuthenticate, zt as DocsSearchConfig } from "./types-XHABMh_f.mjs";
2
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
-
4
- //#region src/mcp.d.ts
5
- interface DocsMcpPage {
6
- slug: string;
7
- url: string;
8
- title: string;
9
- description?: string;
10
- related?: DocsSearchSourcePage["related"];
11
- agent?: PageAgentFrontmatter;
12
- icon?: string;
13
- sourcePath?: string;
14
- lastModified?: string;
15
- locale?: string;
16
- framework?: string;
17
- version?: string;
18
- tags?: string[];
19
- content: string;
20
- rawContent?: string;
21
- agentContent?: string;
22
- agentRawContent?: string;
23
- agentFallbackContent?: string;
24
- agentFallbackRawContent?: string;
25
- }
26
- interface DocsMcpCodeExample {
27
- id: string;
28
- page: {
29
- slug: string;
30
- url: string;
31
- title: string;
32
- description?: string;
33
- sourcePath?: string;
34
- lastModified?: string;
35
- };
36
- language?: string;
37
- title?: string;
38
- framework?: string;
39
- packageManager?: string;
40
- runnable: boolean;
41
- meta: Record<string, string | boolean>;
42
- code: string;
43
- }
44
- interface DocsMcpDocsPageSummary {
45
- slug: string;
46
- url: string;
47
- title: string;
48
- description?: string;
49
- agent?: DocsMcpAgentContractSummary;
50
- icon?: string;
51
- sourcePath?: string;
52
- lastModified?: string;
53
- }
54
- interface DocsMcpAgentContractSummary {
55
- hasContract: boolean;
56
- task?: string;
57
- outcome?: string;
58
- appliesTo?: PageAgentFrontmatter["appliesTo"];
59
- }
60
- interface DocsMcpTaskSummary {
61
- slug: string;
62
- url: string;
63
- title: string;
64
- description?: string;
65
- task?: string;
66
- outcome?: string;
67
- appliesTo?: PageAgentFrontmatter["appliesTo"];
68
- }
69
- interface DocsMcpDocsSection {
70
- slug: string;
71
- title: string;
72
- url?: string;
73
- description?: string;
74
- icon?: string;
75
- pageCount: number;
76
- pages: DocsMcpDocsPageSummary[];
77
- sections: DocsMcpDocsSection[];
78
- }
79
- interface DocsMcpDocsList {
80
- section?: string;
81
- resultCount: number;
82
- sectionCount: number;
83
- pages: DocsMcpDocsPageSummary[];
84
- rootPages: DocsMcpDocsPageSummary[];
85
- sections: DocsMcpDocsSection[];
86
- }
87
- interface DocsMcpConfigSchemaOption {
88
- path: string;
89
- name: string;
90
- type: string;
91
- default?: string | boolean | number | null;
92
- description: string;
93
- docs?: string;
94
- values?: readonly string[];
95
- children?: readonly DocsMcpConfigSchemaOption[];
96
- }
97
- interface DocsMcpConfigSchema {
98
- schemaVersion: 1;
99
- configFile: "docs.config.ts";
100
- description: string;
101
- filters?: {
102
- option?: string;
103
- query?: string;
104
- };
105
- resultCount: number;
106
- options: DocsMcpConfigSchemaOption[];
107
- examples: Array<{
108
- title: string;
109
- code: string;
110
- }>;
111
- }
112
- interface DocsMcpContextSource {
113
- id: string;
114
- title: string;
115
- /** Page URL without a fragment. */
116
- pageUrl: string;
117
- /** Source URL for this exact context chunk, including its heading anchor when available. */
118
- url: string;
119
- section?: string;
120
- anchor?: string;
121
- sourcePath?: string;
122
- lastModified?: string;
123
- locale?: string;
124
- framework?: string;
125
- version?: string;
126
- tags?: string[];
127
- score?: number;
128
- content: string;
129
- /** JavaScript string length for this source's content only. */
130
- chars: number;
131
- /** Encoded UTF-8 bytes for this source's content only. */
132
- utf8Bytes: number;
133
- truncated: boolean;
134
- }
135
- interface DocsMcpContextResult {
136
- query: string;
137
- filters: {
138
- framework?: string;
139
- version?: string;
140
- locale?: string;
141
- };
142
- budget: {
143
- /** Caller-provided token target; retained as the stable input contract. */requestedTokens: number; /** Dependency-free conservative accounting strategy. */
144
- strategy: "utf8-bytes"; /** Hard UTF-8 byte ceiling for the complete assembled `context`. */
145
- maxUtf8Bytes: number; /** Exact UTF-8 bytes used by the complete assembled `context`. */
146
- usedUtf8Bytes: number; /** Conservative token-count upper bound derived from `usedUtf8Bytes`. */
147
- conservativeTokenUpperBound: number;
148
- remainingUtf8Bytes: number;
149
- truncated: boolean;
150
- };
151
- resultCount: number;
152
- candidateCount: number;
153
- context: string;
154
- sources: DocsMcpContextSource[];
155
- }
156
- interface DocsMcpContextOptions {
157
- pages: readonly DocsMcpPage[];
158
- query: string;
159
- framework?: string;
160
- version?: string;
161
- locale?: string;
162
- tokenBudget: number;
163
- entry?: string;
164
- siteTitle?: string;
165
- /** Maximum number of ranked, deduplicated candidates to render. Defaults to 50. */
166
- maxResults?: number;
167
- }
168
- interface DocsMcpPageNode {
169
- type: "page";
170
- name: string;
171
- url: string;
172
- icon?: string;
173
- description?: string;
174
- }
175
- interface DocsMcpFolderNode {
176
- type: "folder";
177
- name: string;
178
- icon?: string;
179
- index?: DocsMcpPageNode;
180
- children: DocsMcpNavigationNode[];
181
- }
182
- type DocsMcpNavigationNode = DocsMcpPageNode | DocsMcpFolderNode;
183
- interface DocsMcpNavigationTree {
184
- name: string;
185
- children: DocsMcpNavigationNode[];
186
- }
187
- interface DocsMcpSource {
188
- entry?: string;
189
- siteTitle?: string;
190
- getPages(locale?: string, context?: DocsMcpRequestContext): DocsMcpPage[] | Promise<DocsMcpPage[]>;
191
- getNavigation(locale?: string, context?: DocsMcpRequestContext): DocsMcpNavigationTree | Promise<DocsMcpNavigationTree>;
192
- }
193
- /** Request-scoped identity available to custom MCP sources. */
194
- interface DocsMcpRequestContext {
195
- transport: "http" | "stdio";
196
- request?: Request;
197
- auth?: DocsMcpAuthPrincipal;
198
- }
199
- interface DocsMcpResolvedSecurityConfig {
200
- allowedOrigins: DocsMcpAllowedOrigins;
201
- authenticate?: DocsMcpAuthenticate;
202
- maxBodyBytes: number;
203
- cors: DocsMcpResolvedCorsConfig;
204
- }
205
- interface DocsMcpResolvedCorsConfig {
206
- enabled: boolean;
207
- allowedHeaders: string[];
208
- exposedHeaders: string[];
209
- allowCredentials: boolean;
210
- maxAgeSeconds: number;
211
- }
212
- interface DocsMcpResolvedConfig {
213
- enabled: boolean;
214
- route: string;
215
- name: string;
216
- version: string;
217
- tools: {
218
- listDocs: boolean;
219
- listPages: boolean;
220
- readPage: boolean;
221
- listTasks?: boolean;
222
- readTask?: boolean;
223
- searchDocs: boolean;
224
- getNavigation: boolean;
225
- getCodeExamples: boolean;
226
- getConfigSchema: boolean;
227
- getContext: boolean;
228
- };
229
- /** Resolved HTTP-only security policy. Omitted on manually constructed legacy values. */
230
- security?: DocsMcpResolvedSecurityConfig;
231
- }
232
- interface DocsMcpHttpHandlers {
233
- GET: (context: {
234
- request: Request;
235
- }) => Promise<Response>;
236
- POST: (context: {
237
- request: Request;
238
- }) => Promise<Response>;
239
- DELETE: (context: {
240
- request: Request;
241
- }) => Promise<Response>;
242
- OPTIONS: (context: {
243
- request: Request;
244
- }) => Promise<Response>;
245
- }
246
- interface CreateDocsMcpServerOptions {
247
- source: DocsMcpSource;
248
- mcp?: boolean | DocsMcpConfig;
249
- search?: boolean | DocsSearchConfig;
250
- analytics?: boolean | DocsAnalyticsConfig;
251
- telemetry?: boolean | DocsTelemetryConfig;
252
- telemetryFramework?: DocsTelemetryFramework;
253
- observability?: boolean | DocsObservabilityConfig;
254
- defaultName?: string;
255
- defaultVersion?: string;
256
- /** Internal request context used to expose an authenticated principal to custom sources. */
257
- requestContext?: DocsMcpRequestContext;
258
- }
259
- interface CreateFilesystemDocsMcpSourceOptions {
260
- rootDir?: string;
261
- entry?: string;
262
- contentDir?: string;
263
- siteTitle?: string;
264
- ordering?: "alphabetical" | "numeric" | OrderingItem[];
265
- }
266
- declare const DEFAULT_DOCS_MCP_MAX_BODY_BYTES: number;
267
- declare const DEFAULT_DOCS_MCP_CORS_MAX_AGE_SECONDS = 600;
268
- declare const DEFAULT_DOCS_MCP_CORS_ALLOWED_HEADERS: readonly string[];
269
- declare const DEFAULT_DOCS_MCP_CORS_EXPOSED_HEADERS: readonly string[];
270
- declare const DOCS_CONFIG_SCHEMA_OPTIONS: readonly DocsMcpConfigSchemaOption[];
271
- declare function normalizeDocsMcpRoute(route?: string): string;
272
- declare function resolveDocsMcpConfig(mcp?: boolean | DocsMcpConfig, defaults?: {
273
- defaultName?: string;
274
- defaultVersion?: string;
275
- defaultRoute?: string;
276
- }): DocsMcpResolvedConfig;
277
- declare function createFilesystemDocsMcpSource(options?: CreateFilesystemDocsMcpSourceOptions): DocsMcpSource;
278
- declare function createDocsMcpServer(options: CreateDocsMcpServerOptions): Promise<McpServer>;
279
- declare function createDocsMcpHttpHandler(options: CreateDocsMcpServerOptions): DocsMcpHttpHandlers;
280
- declare function runDocsMcpStdio(options: CreateDocsMcpServerOptions): Promise<void>;
281
- declare function getDocsConfigSchema(filters?: {
282
- option?: string;
283
- query?: string;
284
- }): DocsMcpConfigSchema;
285
- declare function buildDocsMcpContext(options: DocsMcpContextOptions): Promise<DocsMcpContextResult>;
286
- //#endregion
287
- export { CreateDocsMcpServerOptions, DEFAULT_DOCS_MCP_CORS_ALLOWED_HEADERS, DEFAULT_DOCS_MCP_CORS_EXPOSED_HEADERS, DEFAULT_DOCS_MCP_CORS_MAX_AGE_SECONDS, DEFAULT_DOCS_MCP_MAX_BODY_BYTES, DOCS_CONFIG_SCHEMA_OPTIONS, DocsMcpAgentContractSummary, DocsMcpCodeExample, DocsMcpConfigSchema, DocsMcpConfigSchemaOption, DocsMcpContextOptions, DocsMcpContextResult, DocsMcpContextSource, DocsMcpDocsList, DocsMcpDocsPageSummary, DocsMcpDocsSection, DocsMcpFolderNode, DocsMcpHttpHandlers, DocsMcpNavigationNode, DocsMcpNavigationTree, DocsMcpPage, DocsMcpPageNode, DocsMcpRequestContext, DocsMcpResolvedConfig, DocsMcpResolvedCorsConfig, DocsMcpResolvedSecurityConfig, DocsMcpSource, DocsMcpTaskSummary, buildDocsMcpContext, createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, getDocsConfigSchema, normalizeDocsMcpRoute, resolveDocsMcpConfig, runDocsMcpStdio };