@farming-labs/theme 0.2.75 → 0.2.77
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/docs-api.mjs +31 -23
- package/package.json +2 -2
package/dist/docs-api.mjs
CHANGED
|
@@ -4,8 +4,8 @@ import { BoundedRouteCache } from "./bounded-route-cache.mjs";
|
|
|
4
4
|
import fs from "node:fs";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import matter from "gray-matter";
|
|
7
|
-
import { DEFAULT_A2A_AGENT_CARD_ROUTE, DEFAULT_AGENT_SKILLS_ARCHIVE_ROUTE_PATTERN, DEFAULT_AGENT_SKILLS_INDEX_ROUTE, DEFAULT_AGENT_SKILLS_ROUTE_PREFIX, DEFAULT_API_CATALOG_ROUTE, DEFAULT_LEGACY_SKILLS_INDEX_ROUTE, DEFAULT_SITEMAP_MD_DOCS_ROUTE, DOCS_AGENT_MANIFEST_FORMAT, DOCS_AGENT_MANIFEST_SCHEMA_URI, DOCS_AGENT_MANIFEST_VERSION, DOCS_MARKDOWN_SECTION_INDEX_FORMAT, acceptsDocsMarkdown, buildDocsAskAIContext, buildDocsConfigMap, buildDocsDiagnostics, createDocsAgentTraceContext, createDocsAgentTraceId, createDocsMarkdownResponse, createDocsRobotsResponse, createDocsSitemapResponse, createDocsStandardsDiscoveryResponse, detectDocsMarkdownAgentRequest, emitDocsAgentTraceEvent, emitDocsAnalyticsEvent, emitDocsTelemetryAgentSurfaceEvent, emitDocsTelemetryProjectEvent, formatDocsAskAIPackageHints, getDocsAgentManifestLinkHeader, getDocsDiscoveryLinkHeader, getDocsLlmsTxtMaxCharsIssue, getDocsMcpProtectedResourceMetadataRoutes, hasDocsMarkdownSignatureAgent, inferDocsTelemetryAgentSurface, isDocsConfigRequest, isDocsDiagnosticsRequest, normalizeDocsRelated, normalizePageAgentFrontmatter, performDocsSearch, performDocsSearchWithMetadata, renderDocsLlmsTxt, renderDocsMarkdownDocument, resolveAskAISearchRequestConfig, resolveChangelogConfig, resolveDocsAgentContractMcpTools, resolveDocsAudienceMdxContent, resolveDocsI18n, resolveDocsLlmsTxtRequest, resolveDocsLlmsTxtSections, resolveDocsLocale, resolveDocsMetadataBaseUrl, resolveDocsPublishedAgentSkill, resolveDocsRequestApiRoute, resolveDocsRetrievalLastModified, resolveDocsSearchAudience,
|
|
8
|
-
import { buildApiReferenceOpenApiDocumentAsync, createDocsMcpHttpHandler, createFilesystemDocsMcpSource, readDocsSitemapManifest,
|
|
7
|
+
import { DEFAULT_A2A_AGENT_CARD_ROUTE, DEFAULT_AGENT_SKILLS_ARCHIVE_ROUTE_PATTERN, DEFAULT_AGENT_SKILLS_INDEX_ROUTE, DEFAULT_AGENT_SKILLS_ROUTE_PREFIX, DEFAULT_API_CATALOG_ROUTE, DEFAULT_LEGACY_SKILLS_INDEX_ROUTE, DEFAULT_SITEMAP_MD_DOCS_ROUTE, DOCS_AGENT_MANIFEST_FORMAT, DOCS_AGENT_MANIFEST_SCHEMA_URI, DOCS_AGENT_MANIFEST_VERSION, DOCS_MARKDOWN_SECTION_INDEX_FORMAT, acceptsDocsMarkdown, buildDocsAskAIContext, buildDocsConfigMap, buildDocsDiagnostics, createDocsAgentTraceContext, createDocsAgentTraceId, createDocsMarkdownResponse, createDocsRobotsResponse, createDocsSitemapResponse, createDocsStandardsDiscoveryResponse, detectDocsMarkdownAgentRequest, emitDocsAgentTraceEvent, emitDocsAnalyticsEvent, emitDocsTelemetryAgentSurfaceEvent, emitDocsTelemetryProjectEvent, formatDocsAskAIPackageHints, getDocsAgentManifestLinkHeader, getDocsDiscoveryLinkHeader, getDocsLlmsTxtMaxCharsIssue, getDocsMcpProtectedResourceMetadataRoutes, hasDocsMarkdownSignatureAgent, inferDocsTelemetryAgentSurface, isDocsConfigRequest, isDocsDiagnosticsRequest, normalizeDocsRelated, normalizePageAgentFrontmatter, performDocsSearch, performDocsSearchWithMetadata, renderDocsLlmsTxt, renderDocsMarkdownDocument, resolveAskAISearchRequestConfig, resolveChangelogConfig, resolveDocsAgentContractMcpTools, resolveDocsAudienceMdxContent, resolveDocsI18n, resolveDocsLlmsTxtRequest, resolveDocsLlmsTxtSections, resolveDocsLocale, resolveDocsMetadataBaseUrl, resolveDocsPublishedAgentSkill, resolveDocsRequestApiRoute, resolveDocsRetrievalLastModified, resolveDocsSearchAudience, resolveDocsSearchError, resolveDocsSearchRequest, resolveDocsSitemapConfig, resolveDocsStandardsDiscoveryRequest, resolvePageSidebarFolderIndexBehavior, resolveSearchRequestConfig, selectDocsLlmsTxtContent, stripGeneratedAgentProvenance } from "@farming-labs/docs";
|
|
8
|
+
import { buildApiReferenceOpenApiDocumentAsync, createDocsMcpHttpHandler, createFilesystemDocsMcpSource, readDocsSitemapManifest, resolveApiReferenceOpenApiDiscovery, resolveConfiguredAgentSkills, resolveDocsMcpConfig } from "@farming-labs/docs/server";
|
|
9
9
|
|
|
10
10
|
//#region src/docs-api.ts
|
|
11
11
|
/**
|
|
@@ -197,18 +197,6 @@ function isRobotsDiscoveryEnabled(robots) {
|
|
|
197
197
|
function isApiReferenceOpenApiRequest(url) {
|
|
198
198
|
return url.searchParams.get("format")?.trim() === "openapi";
|
|
199
199
|
}
|
|
200
|
-
function resolveApiReferenceOpenApiDiscovery(value) {
|
|
201
|
-
const apiReference = resolveApiReferenceConfig(value);
|
|
202
|
-
if (!apiReference.enabled) return { enabled: false };
|
|
203
|
-
return {
|
|
204
|
-
enabled: true,
|
|
205
|
-
url: `${DEFAULT_DOCS_API_ROUTE}?format=openapi`,
|
|
206
|
-
urlSource: "default",
|
|
207
|
-
source: apiReference.specUrl ? "configured" : "generated",
|
|
208
|
-
specUrl: apiReference.specUrl,
|
|
209
|
-
apiReferencePath: `/${apiReference.path}`
|
|
210
|
-
};
|
|
211
|
-
}
|
|
212
200
|
function buildAgentSpec({ origin, entry, apiRoute, apiCatalog, i18n, search, mcp, feedback, llms, sitemap, robots, openapi, publishedSkills = [], agentCard }) {
|
|
213
201
|
const normalizedEntry = normalizePathSegment(entry) || "docs";
|
|
214
202
|
const localesEnabled = i18n !== null;
|
|
@@ -426,6 +414,10 @@ function buildAgentSpec({ origin, entry, apiRoute, apiCatalog, i18n, search, mcp
|
|
|
426
414
|
"tags"
|
|
427
415
|
],
|
|
428
416
|
warningsField: "warnings",
|
|
417
|
+
cursorParam: "cursor",
|
|
418
|
+
nextCursorField: "nextCursor",
|
|
419
|
+
hasMoreField: "hasMore",
|
|
420
|
+
totalField: "total",
|
|
429
421
|
defaultAudience: "human",
|
|
430
422
|
supportedAudiences: ["human", "agent"]
|
|
431
423
|
},
|
|
@@ -2462,8 +2454,10 @@ function readApiReferenceConfig(root) {
|
|
|
2462
2454
|
const pathMatch = block.match(/path\s*:\s*["']([^"']+)["']/);
|
|
2463
2455
|
const routeRootMatch = block.match(/routeRoot\s*:\s*["']([^"']+)["']/);
|
|
2464
2456
|
const specUrlMatch = block.match(/specUrl\s*:\s*["']([^"']+)["']/);
|
|
2457
|
+
const catalogTargetsMatch = block.match(/catalogTargets\s*:\s*\[([\s\S]*?)\]/);
|
|
2465
2458
|
const rendererMatch = block.match(/renderer\s*:\s*["'](fumadocs|scalar)["']/);
|
|
2466
2459
|
const excludeMatch = block.match(/exclude\s*:\s*\[([\s\S]*?)\]/);
|
|
2460
|
+
const catalogTargets = catalogTargetsMatch?.[1] === void 0 ? void 0 : Array.from(catalogTargetsMatch[1].matchAll(/["']([^"']+)["']/g)).map((match) => match[1]).filter(Boolean);
|
|
2467
2461
|
const exclude = excludeMatch?.[1] === void 0 ? void 0 : Array.from(excludeMatch[1].matchAll(/["']([^"']+)["']/g)).map((match) => match[1]).filter(Boolean);
|
|
2468
2462
|
const renderer = rendererMatch?.[1] === "fumadocs" || rendererMatch?.[1] === "scalar" ? rendererMatch[1] : void 0;
|
|
2469
2463
|
return {
|
|
@@ -2471,6 +2465,7 @@ function readApiReferenceConfig(root) {
|
|
|
2471
2465
|
path: pathMatch?.[1],
|
|
2472
2466
|
routeRoot: routeRootMatch?.[1],
|
|
2473
2467
|
specUrl: specUrlMatch?.[1],
|
|
2468
|
+
catalogTargets,
|
|
2474
2469
|
renderer,
|
|
2475
2470
|
exclude
|
|
2476
2471
|
};
|
|
@@ -3166,8 +3161,15 @@ function createDocsAPI(options) {
|
|
|
3166
3161
|
}
|
|
3167
3162
|
const query = url.searchParams.get("query")?.trim();
|
|
3168
3163
|
const audience = resolveDocsSearchAudience(url.searchParams.get("audience"));
|
|
3169
|
-
|
|
3170
|
-
|
|
3164
|
+
let searchRequest;
|
|
3165
|
+
try {
|
|
3166
|
+
searchRequest = resolveDocsSearchRequest(url.searchParams);
|
|
3167
|
+
} catch (error) {
|
|
3168
|
+
const searchError = resolveDocsSearchError(error);
|
|
3169
|
+
if (!searchError) throw error;
|
|
3170
|
+
return Response.json({ error: searchError }, { status: 400 });
|
|
3171
|
+
}
|
|
3172
|
+
const { filters, structured, cursor, limit } = searchRequest;
|
|
3171
3173
|
if (!query && !structured) return new Response("[]", { headers: { "Content-Type": "application/json" } });
|
|
3172
3174
|
const searchOptions = {
|
|
3173
3175
|
pages: getIndexes(ctx),
|
|
@@ -3179,19 +3181,25 @@ function createDocsAPI(options) {
|
|
|
3179
3181
|
pathname: url.searchParams.get("pathname") ?? void 0,
|
|
3180
3182
|
siteTitle: llmsConfig.siteTitle ?? "Documentation",
|
|
3181
3183
|
baseUrl: markdownMetadataBaseUrl || url.origin,
|
|
3182
|
-
syncBaseUrl: markdownMetadataBaseUrl ?? null
|
|
3184
|
+
syncBaseUrl: markdownMetadataBaseUrl ?? null,
|
|
3185
|
+
cursor,
|
|
3186
|
+
limit
|
|
3183
3187
|
};
|
|
3184
|
-
if (!query) {
|
|
3185
|
-
const searchResponse = structured ? await performDocsSearchWithMetadata(searchOptions) : [];
|
|
3186
|
-
return new Response(JSON.stringify(searchResponse), { headers: { "Content-Type": "application/json" } });
|
|
3187
|
-
}
|
|
3188
3188
|
const searchStartedAt = Date.now();
|
|
3189
|
-
|
|
3189
|
+
let searchResponse;
|
|
3190
|
+
try {
|
|
3191
|
+
searchResponse = structured ? await performDocsSearchWithMetadata(searchOptions) : query ? await performDocsSearch(searchOptions) : [];
|
|
3192
|
+
} catch (error) {
|
|
3193
|
+
const searchError = resolveDocsSearchError(error);
|
|
3194
|
+
if (!searchError) throw error;
|
|
3195
|
+
return Response.json({ error: searchError }, { status: 400 });
|
|
3196
|
+
}
|
|
3197
|
+
if (!query) return Response.json(searchResponse);
|
|
3190
3198
|
const resultCount = Array.isArray(searchResponse) ? searchResponse.length : searchResponse.resultCount;
|
|
3191
3199
|
await emitDocsAnalyticsEvent(analytics, {
|
|
3192
3200
|
type: "api_search",
|
|
3193
3201
|
source: "server",
|
|
3194
|
-
url:
|
|
3202
|
+
url: `${url.origin}${url.pathname}`,
|
|
3195
3203
|
path: url.pathname,
|
|
3196
3204
|
locale: ctx.locale,
|
|
3197
3205
|
input: { query },
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@farming-labs/theme",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.77",
|
|
4
4
|
"description": "Theme package for @farming-labs/docs — layout, provider, MDX components, and styles",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"docs",
|
|
@@ -148,7 +148,7 @@
|
|
|
148
148
|
"tsdown": "^0.20.3",
|
|
149
149
|
"typescript": "^5.9.3",
|
|
150
150
|
"vitest": "^4.1.8",
|
|
151
|
-
"@farming-labs/docs": "0.2.
|
|
151
|
+
"@farming-labs/docs": "0.2.77"
|
|
152
152
|
},
|
|
153
153
|
"peerDependencies": {
|
|
154
154
|
"@farming-labs/docs": ">=0.0.1",
|