@farming-labs/docs 0.2.124 → 0.2.125
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.
- package/dist/mcp.d.mts +4 -1
- package/dist/mcp.mjs +40 -26
- package/dist/types.d.mts +2 -0
- package/package.json +2 -2
package/dist/mcp.d.mts
CHANGED
|
@@ -254,6 +254,8 @@ interface DocsMcpResolvedSecurityConfig {
|
|
|
254
254
|
authenticate?: DocsMcpAuthenticate;
|
|
255
255
|
protectedResource?: DocsMcpResolvedProtectedResourceConfig;
|
|
256
256
|
maxBodyBytes: number;
|
|
257
|
+
/** Optional for manually constructed resolved configs from older releases. */
|
|
258
|
+
maxToolInputElements?: number;
|
|
257
259
|
cors: DocsMcpResolvedCorsConfig;
|
|
258
260
|
}
|
|
259
261
|
interface DocsMcpResolvedProtectedResourceConfig {
|
|
@@ -364,6 +366,7 @@ declare const DOCS_MCP_CONTENT_CHANGES_CURRENT_URI = "docs://changes/current";
|
|
|
364
366
|
declare const DOCS_MCP_CONTENT_CHANGES_URI_TEMPLATE = "docs://changes/{generation}";
|
|
365
367
|
declare const DEFAULT_DOCS_MCP_CONTENT_CHANGE_POLL_INTERVAL_MS = 30000;
|
|
366
368
|
declare const DEFAULT_DOCS_MCP_MAX_BODY_BYTES: number;
|
|
369
|
+
declare const DEFAULT_DOCS_MCP_MAX_TOOL_INPUT_ELEMENTS = 10000;
|
|
367
370
|
declare const DEFAULT_DOCS_MCP_CORS_MAX_AGE_SECONDS = 600;
|
|
368
371
|
declare const DEFAULT_DOCS_MCP_CORS_ALLOWED_HEADERS: readonly string[];
|
|
369
372
|
declare const DEFAULT_DOCS_MCP_CORS_EXPOSED_HEADERS: readonly string[];
|
|
@@ -385,4 +388,4 @@ declare function getDocsConfigSchema(filters?: {
|
|
|
385
388
|
}): DocsMcpConfigSchema;
|
|
386
389
|
declare function buildDocsMcpContext(options: DocsMcpContextOptions): Promise<DocsMcpContextResult>;
|
|
387
390
|
//#endregion
|
|
388
|
-
export { CreateDocsMcpServerOptions, DEFAULT_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET, DEFAULT_DOCS_MCP_CONTENT_CHANGE_POLL_INTERVAL_MS, 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, DOCS_CONTENT_CHANGE_HYDRATION_FORMAT, DOCS_MCP_CONTENT_CHANGES_CURRENT_URI, DOCS_MCP_CONTENT_CHANGES_URI_TEMPLATE, type DocsContentChangeHydrationBudget, type DocsContentChangeHydrationContent, type DocsContentChangeHydrationResponse, type DocsContentChangeHydrationSection, type DocsContentChangeHydrationTombstone, DocsMcpAgentContractSummary, DocsMcpApiReferenceSource, DocsMcpCodeExample, DocsMcpConfigSchema, DocsMcpConfigSchemaOption, DocsMcpContextOptions, DocsMcpContextResult, DocsMcpContextSource, DocsMcpDocsList, DocsMcpDocsPageSummary, DocsMcpDocsSection, DocsMcpFolderNode, DocsMcpHttpHandlers, DocsMcpNavigationNode, DocsMcpNavigationTree, DocsMcpPage, DocsMcpPageNode, DocsMcpPageSectionIndex, DocsMcpPageSectionList, DocsMcpPaginatedDocsList, DocsMcpPagination, DocsMcpRequestContext, DocsMcpResolvedConfig, DocsMcpResolvedCorsConfig, DocsMcpResolvedPromptsConfig, DocsMcpResolvedProtectedResourceConfig, DocsMcpResolvedSecurityConfig, DocsMcpSource, DocsMcpTaskSummary, type HydrateDocsContentChangesOptions, MAX_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET, MIN_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET, buildDocsMcpContext, createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, getDocsConfigSchema, hydrateDocsContentChanges, normalizeDocsMcpRoute, resolveDocsMcpConfig, resolveDocsMcpPromptsConfig, runDocsMcpStdio };
|
|
391
|
+
export { CreateDocsMcpServerOptions, DEFAULT_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET, DEFAULT_DOCS_MCP_CONTENT_CHANGE_POLL_INTERVAL_MS, 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, DEFAULT_DOCS_MCP_MAX_TOOL_INPUT_ELEMENTS, DOCS_CONFIG_SCHEMA_OPTIONS, DOCS_CONTENT_CHANGE_HYDRATION_FORMAT, DOCS_MCP_CONTENT_CHANGES_CURRENT_URI, DOCS_MCP_CONTENT_CHANGES_URI_TEMPLATE, type DocsContentChangeHydrationBudget, type DocsContentChangeHydrationContent, type DocsContentChangeHydrationResponse, type DocsContentChangeHydrationSection, type DocsContentChangeHydrationTombstone, DocsMcpAgentContractSummary, DocsMcpApiReferenceSource, DocsMcpCodeExample, DocsMcpConfigSchema, DocsMcpConfigSchemaOption, DocsMcpContextOptions, DocsMcpContextResult, DocsMcpContextSource, DocsMcpDocsList, DocsMcpDocsPageSummary, DocsMcpDocsSection, DocsMcpFolderNode, DocsMcpHttpHandlers, DocsMcpNavigationNode, DocsMcpNavigationTree, DocsMcpPage, DocsMcpPageNode, DocsMcpPageSectionIndex, DocsMcpPageSectionList, DocsMcpPaginatedDocsList, DocsMcpPagination, DocsMcpRequestContext, DocsMcpResolvedConfig, DocsMcpResolvedCorsConfig, DocsMcpResolvedPromptsConfig, DocsMcpResolvedProtectedResourceConfig, DocsMcpResolvedSecurityConfig, DocsMcpSource, DocsMcpTaskSummary, type HydrateDocsContentChangesOptions, MAX_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET, MIN_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET, buildDocsMcpContext, createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, getDocsConfigSchema, hydrateDocsContentChanges, normalizeDocsMcpRoute, resolveDocsMcpConfig, resolveDocsMcpPromptsConfig, runDocsMcpStdio };
|
package/dist/mcp.mjs
CHANGED
|
@@ -62,6 +62,7 @@ const DOCS_MCP_CONTENT_CHANGES_URI_TEMPLATE = "docs://changes/{generation}";
|
|
|
62
62
|
const DEFAULT_DOCS_MCP_CONTENT_CHANGE_POLL_INTERVAL_MS = 3e4;
|
|
63
63
|
const UTF8_ENCODER = new TextEncoder();
|
|
64
64
|
const DEFAULT_DOCS_MCP_MAX_BODY_BYTES = 1024 * 1024;
|
|
65
|
+
const DEFAULT_DOCS_MCP_MAX_TOOL_INPUT_ELEMENTS = 1e4;
|
|
65
66
|
const DEFAULT_DOCS_MCP_CORS_MAX_AGE_SECONDS = 600;
|
|
66
67
|
const DEFAULT_DOCS_MCP_CORS_ALLOWED_HEADERS = Object.freeze([
|
|
67
68
|
"Accept",
|
|
@@ -1767,6 +1768,13 @@ const DOCS_CONFIG_SCHEMA_OPTIONS_TEMPLATE = [
|
|
|
1767
1768
|
default: DEFAULT_DOCS_MCP_MAX_BODY_BYTES,
|
|
1768
1769
|
description: "Maximum accepted Streamable HTTP POST body size in bytes."
|
|
1769
1770
|
},
|
|
1771
|
+
{
|
|
1772
|
+
path: "mcp.security.maxToolInputElements",
|
|
1773
|
+
name: "maxToolInputElements",
|
|
1774
|
+
type: "number",
|
|
1775
|
+
default: DEFAULT_DOCS_MCP_MAX_TOOL_INPUT_ELEMENTS,
|
|
1776
|
+
description: "Maximum total array items and object keys in Streamable HTTP tool arguments, checked before schema validation. Does not affect stdio."
|
|
1777
|
+
},
|
|
1770
1778
|
{
|
|
1771
1779
|
path: "mcp.security.cors",
|
|
1772
1780
|
name: "cors",
|
|
@@ -2962,11 +2970,14 @@ function normalizeDocsMcpPromptSelectorList(value, configPath) {
|
|
|
2962
2970
|
function resolveDocsMcpSecurityConfig(security) {
|
|
2963
2971
|
const configuredMaxBodyBytes = security?.maxBodyBytes;
|
|
2964
2972
|
const maxBodyBytes = typeof configuredMaxBodyBytes === "number" && Number.isFinite(configuredMaxBodyBytes) && configuredMaxBodyBytes > 0 ? Math.floor(configuredMaxBodyBytes) : DEFAULT_DOCS_MCP_MAX_BODY_BYTES;
|
|
2973
|
+
const configuredMaxToolInputElements = security?.maxToolInputElements;
|
|
2974
|
+
const maxToolInputElements = typeof configuredMaxToolInputElements === "number" && Number.isSafeInteger(Math.floor(configuredMaxToolInputElements)) && configuredMaxToolInputElements >= 1 ? Math.floor(configuredMaxToolInputElements) : DEFAULT_DOCS_MCP_MAX_TOOL_INPUT_ELEMENTS;
|
|
2965
2975
|
return {
|
|
2966
2976
|
allowedOrigins: security?.allowedOrigins ?? "same-origin",
|
|
2967
2977
|
authenticate: security?.authenticate,
|
|
2968
2978
|
protectedResource: resolveDocsMcpProtectedResourceConfig(security?.protectedResource),
|
|
2969
2979
|
maxBodyBytes,
|
|
2980
|
+
maxToolInputElements,
|
|
2970
2981
|
cors: resolveDocsMcpCorsConfig(security?.cors)
|
|
2971
2982
|
};
|
|
2972
2983
|
}
|
|
@@ -3387,32 +3398,35 @@ async function createDocsMcpServer(options) {
|
|
|
3387
3398
|
const server = new McpServer({
|
|
3388
3399
|
name: resolved.name,
|
|
3389
3400
|
version: resolved.version
|
|
3390
|
-
}, {
|
|
3391
|
-
"
|
|
3392
|
-
|
|
3393
|
-
|
|
3394
|
-
|
|
3395
|
-
|
|
3396
|
-
|
|
3397
|
-
|
|
3398
|
-
|
|
3399
|
-
|
|
3400
|
-
|
|
3401
|
-
|
|
3402
|
-
|
|
3403
|
-
|
|
3404
|
-
|
|
3405
|
-
|
|
3406
|
-
|
|
3407
|
-
|
|
3408
|
-
|
|
3409
|
-
|
|
3410
|
-
|
|
3411
|
-
|
|
3412
|
-
|
|
3413
|
-
|
|
3401
|
+
}, {
|
|
3402
|
+
...options.requestContext?.transport === "http" ? { maxToolInputElements: resolved.security?.maxToolInputElements ?? DEFAULT_DOCS_MCP_MAX_TOOL_INPUT_ELEMENTS } : {},
|
|
3403
|
+
cacheHints: {
|
|
3404
|
+
"server/discover": {
|
|
3405
|
+
ttlMs: DOCS_MCP_DISCOVERY_CACHE_TTL_MS,
|
|
3406
|
+
cacheScope
|
|
3407
|
+
},
|
|
3408
|
+
"tools/list": {
|
|
3409
|
+
ttlMs: DOCS_MCP_LIST_CACHE_TTL_MS,
|
|
3410
|
+
cacheScope
|
|
3411
|
+
},
|
|
3412
|
+
"prompts/list": {
|
|
3413
|
+
ttlMs: DOCS_MCP_LIST_CACHE_TTL_MS,
|
|
3414
|
+
cacheScope
|
|
3415
|
+
},
|
|
3416
|
+
"resources/list": {
|
|
3417
|
+
ttlMs: DOCS_MCP_LIST_CACHE_TTL_MS,
|
|
3418
|
+
cacheScope
|
|
3419
|
+
},
|
|
3420
|
+
"resources/templates/list": {
|
|
3421
|
+
ttlMs: DOCS_MCP_LIST_CACHE_TTL_MS,
|
|
3422
|
+
cacheScope
|
|
3423
|
+
},
|
|
3424
|
+
"resources/read": {
|
|
3425
|
+
ttlMs: DOCS_MCP_RESOURCE_CACHE_TTL_MS,
|
|
3426
|
+
cacheScope
|
|
3427
|
+
}
|
|
3414
3428
|
}
|
|
3415
|
-
}
|
|
3429
|
+
});
|
|
3416
3430
|
installDocsMcpSdkRegistrationPagination(server, protocolScope);
|
|
3417
3431
|
if (contentChangesEnabled) server.server.registerCapabilities({ resources: { subscribe: true } });
|
|
3418
3432
|
const registerResource = (name, uri, metadata, callback) => {
|
|
@@ -7149,4 +7163,4 @@ function toPageResourceUri(url) {
|
|
|
7149
7163
|
}
|
|
7150
7164
|
|
|
7151
7165
|
//#endregion
|
|
7152
|
-
export { DEFAULT_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET, DEFAULT_DOCS_MCP_CONTENT_CHANGE_POLL_INTERVAL_MS, 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, DOCS_CONTENT_CHANGE_HYDRATION_FORMAT, DOCS_MCP_CONTENT_CHANGES_CURRENT_URI, DOCS_MCP_CONTENT_CHANGES_URI_TEMPLATE, MAX_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET, MIN_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET, buildDocsMcpContext, createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, getDocsConfigSchema, hydrateDocsContentChanges, normalizeDocsMcpRoute, resolveDocsMcpConfig, resolveDocsMcpPromptsConfig, runDocsMcpStdio };
|
|
7166
|
+
export { DEFAULT_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET, DEFAULT_DOCS_MCP_CONTENT_CHANGE_POLL_INTERVAL_MS, 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, DEFAULT_DOCS_MCP_MAX_TOOL_INPUT_ELEMENTS, DOCS_CONFIG_SCHEMA_OPTIONS, DOCS_CONTENT_CHANGE_HYDRATION_FORMAT, DOCS_MCP_CONTENT_CHANGES_CURRENT_URI, DOCS_MCP_CONTENT_CHANGES_URI_TEMPLATE, MAX_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET, MIN_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET, buildDocsMcpContext, createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, getDocsConfigSchema, hydrateDocsContentChanges, normalizeDocsMcpRoute, resolveDocsMcpConfig, resolveDocsMcpPromptsConfig, runDocsMcpStdio };
|
package/dist/types.d.mts
CHANGED
|
@@ -1403,6 +1403,8 @@ interface DocsMcpSecurityConfig {
|
|
|
1403
1403
|
protectedResource?: DocsMcpProtectedResourceConfig;
|
|
1404
1404
|
/** Maximum POST body size in bytes. Defaults to 1 MiB. */
|
|
1405
1405
|
maxBodyBytes?: number;
|
|
1406
|
+
/** Maximum total array items and object keys in HTTP tool arguments. Defaults to 10,000. */
|
|
1407
|
+
maxToolInputElements?: number;
|
|
1406
1408
|
/**
|
|
1407
1409
|
* CORS responses for accepted browser Origins. Defaults to enabled with exact-Origin responses;
|
|
1408
1410
|
* set `false` to suppress CORS headers or use an object for credential/header controls.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@farming-labs/docs",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.125",
|
|
4
4
|
"description": "Modern, flexible MDX-based docs framework — core types, config, and CLI",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"docs",
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
},
|
|
98
98
|
"dependencies": {
|
|
99
99
|
"@clack/prompts": "^1.7.0",
|
|
100
|
-
"@modelcontextprotocol/server": "2.
|
|
100
|
+
"@modelcontextprotocol/server": "2.3.0",
|
|
101
101
|
"@scalar/core": "^0.4.3",
|
|
102
102
|
"github-slugger": "^2.0.0",
|
|
103
103
|
"gray-matter": "^4.0.3",
|