@farming-labs/svelte 0.1.95 → 0.1.97
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/server.js +60 -1
- package/package.json +2 -2
package/dist/server.js
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
import fs from "node:fs";
|
|
31
31
|
import path from "node:path";
|
|
32
32
|
import matter from "gray-matter";
|
|
33
|
-
import { applySidebarFolderIndexBehavior, buildDocsAskAIContext, buildDocsAgentDiscoverySpec, createDocsSitemapResponse, createDocsAgentTraceContext, createDocsAgentTraceId, emitDocsAgentTraceEvent, emitDocsAnalyticsEvent, formatDocsAskAIPackageHints, findDocsMarkdownPage, getDocsLlmsTxtMaxCharsIssue, getDocsMarkdownCanonicalLinkHeader, getDocsMarkdownVaryHeader, isDocsAgentDiscoveryRequest, isDocsSkillRequest, normalizeDocsRelated, performDocsSearch, renderDocsMarkdownDocument, renderDocsMarkdownNotFound, renderDocsLlmsTxt, renderDocsSkillDocument, readDocsSitemapManifestFromContentMap, stripGeneratedAgentProvenance, resolveDocsAgentMdxContent, resolvePageSidebarFolderIndexBehavior, resolveAskAISearchRequestConfig, resolveSearchRequestConfig, resolveDocsI18n, resolveDocsLlmsTxtRequest, resolveDocsLocale, resolveDocsMarkdownRequest, resolveDocsMetadataBaseUrl, resolveDocsPath, resolvePageReadingTime, resolveReadingTimeOptions, resolveDocsSitemapPageLastmod, resolveDocsSkillFormat, renderDocsPageStructuredDataJson, selectDocsLlmsTxtContent, } from "@farming-labs/docs";
|
|
33
|
+
import { applySidebarFolderIndexBehavior, buildDocsAskAIContext, buildDocsAgentDiscoverySpec, createDocsRobotsResponse, createDocsSitemapResponse, createDocsAgentTraceContext, createDocsAgentTraceId, emitDocsAgentTraceEvent, emitDocsAnalyticsEvent, formatDocsAskAIPackageHints, findDocsMarkdownPage, getDocsLlmsTxtMaxCharsIssue, getDocsMarkdownCanonicalLinkHeader, getDocsMarkdownVaryHeader, isDocsAgentDiscoveryRequest, isDocsSkillRequest, normalizeDocsRelated, parseDocsAgentFeedbackData, performDocsSearch, renderDocsMarkdownDocument, renderDocsMarkdownNotFound, renderDocsLlmsTxt, renderDocsSkillDocument, readDocsSitemapManifestFromContentMap, stripGeneratedAgentProvenance, resolveDocsAgentMdxContent, resolveDocsAgentFeedbackConfig, resolveDocsAgentFeedbackRequest, resolvePageSidebarFolderIndexBehavior, resolveAskAISearchRequestConfig, resolveSearchRequestConfig, resolveDocsI18n, resolveDocsLlmsTxtRequest, resolveDocsLocale, resolveDocsMarkdownRequest, resolveDocsMetadataBaseUrl, resolveDocsPath, resolvePageReadingTime, resolveReadingTimeOptions, resolveDocsSitemapPageLastmod, resolveDocsSkillFormat, renderDocsPageStructuredDataJson, selectDocsLlmsTxtContent, validateDocsAgentFeedbackPayload, } from "@farming-labs/docs";
|
|
34
34
|
import { createDocsMcpHttpHandler, readDocsSitemapManifest, resolveDocsMcpConfig, serializeDocsIconRegistry, serializeOpenDocsProviders, } from "@farming-labs/docs/server";
|
|
35
35
|
import { loadDocsNavTree, loadDocsContent, flattenNavTree } from "./content.js";
|
|
36
36
|
import { renderMarkdown } from "./markdown.js";
|
|
@@ -582,6 +582,12 @@ export function createDocsServer(config = {}) {
|
|
|
582
582
|
const mcpConfig = resolveDocsMcpConfig(config.mcp, {
|
|
583
583
|
defaultName: llmsTitle,
|
|
584
584
|
});
|
|
585
|
+
const agentFeedbackConfig = resolveDocsAgentFeedbackConfig(config.feedback);
|
|
586
|
+
const agentFeedbackDiscovery = {
|
|
587
|
+
enabled: agentFeedbackConfig.enabled,
|
|
588
|
+
route: "/api/docs?feedback=agent",
|
|
589
|
+
schemaRoute: "/api/docs?feedback=agent&schema=1",
|
|
590
|
+
};
|
|
585
591
|
const llmsCache = new Map();
|
|
586
592
|
function getLlmsContent(ctx) {
|
|
587
593
|
const key = ctx.locale ?? "__default__";
|
|
@@ -619,6 +625,7 @@ export function createDocsServer(config = {}) {
|
|
|
619
625
|
i18n,
|
|
620
626
|
search: config.search,
|
|
621
627
|
mcp: mcpConfig,
|
|
628
|
+
feedback: agentFeedbackDiscovery,
|
|
622
629
|
llms: {
|
|
623
630
|
enabled: llmsEnabled,
|
|
624
631
|
baseUrl: llmsBaseUrl || undefined,
|
|
@@ -640,6 +647,25 @@ export function createDocsServer(config = {}) {
|
|
|
640
647
|
},
|
|
641
648
|
});
|
|
642
649
|
}
|
|
650
|
+
const agentFeedbackRequest = resolveDocsAgentFeedbackRequest(event.url, agentFeedbackConfig);
|
|
651
|
+
if (agentFeedbackRequest) {
|
|
652
|
+
if (agentFeedbackRequest.kind === "submit") {
|
|
653
|
+
return new Response(JSON.stringify({ error: "Method Not Allowed" }), {
|
|
654
|
+
status: 405,
|
|
655
|
+
headers: {
|
|
656
|
+
Allow: "POST",
|
|
657
|
+
"Content-Type": "application/json; charset=utf-8",
|
|
658
|
+
},
|
|
659
|
+
});
|
|
660
|
+
}
|
|
661
|
+
return new Response(JSON.stringify(agentFeedbackConfig.schema, null, 2), {
|
|
662
|
+
headers: {
|
|
663
|
+
"Content-Type": "application/schema+json; charset=utf-8",
|
|
664
|
+
"Cache-Control": "public, max-age=0, s-maxage=3600",
|
|
665
|
+
"X-Robots-Tag": "noindex",
|
|
666
|
+
},
|
|
667
|
+
});
|
|
668
|
+
}
|
|
643
669
|
if (isDocsSkillRequest(event.url) || resolveDocsSkillFormat(event.url) === "skill") {
|
|
644
670
|
return new Response(readRootSkillDocument(preloaded, rootDir) ??
|
|
645
671
|
renderDocsSkillDocument({
|
|
@@ -647,6 +673,7 @@ export function createDocsServer(config = {}) {
|
|
|
647
673
|
entry,
|
|
648
674
|
search: config.search,
|
|
649
675
|
mcp: mcpConfig,
|
|
676
|
+
feedback: agentFeedbackDiscovery,
|
|
650
677
|
llms: {
|
|
651
678
|
enabled: llmsEnabled,
|
|
652
679
|
baseUrl: llmsBaseUrl || undefined,
|
|
@@ -679,6 +706,15 @@ export function createDocsServer(config = {}) {
|
|
|
679
706
|
});
|
|
680
707
|
if (sitemapResponse)
|
|
681
708
|
return sitemapResponse;
|
|
709
|
+
const robotsResponse = createDocsRobotsResponse({
|
|
710
|
+
request: event.request,
|
|
711
|
+
entry,
|
|
712
|
+
sitemap: config.sitemap,
|
|
713
|
+
baseUrl: llmsBaseUrl || event.url.origin,
|
|
714
|
+
robots: config.robots,
|
|
715
|
+
});
|
|
716
|
+
if (robotsResponse)
|
|
717
|
+
return robotsResponse;
|
|
682
718
|
const markdownRequest = resolveDocsMarkdownRequest(entry, event.url, event.request);
|
|
683
719
|
if (markdownRequest) {
|
|
684
720
|
const document = getMarkdownDocument(ctx, markdownRequest.requestedPath);
|
|
@@ -815,6 +851,29 @@ export function createDocsServer(config = {}) {
|
|
|
815
851
|
const DEFAULT_SYSTEM_PROMPT = buildDefaultSystemPrompt();
|
|
816
852
|
async function POST(event) {
|
|
817
853
|
const requestUrl = new URL(event.request.url);
|
|
854
|
+
const agentFeedbackRequest = resolveDocsAgentFeedbackRequest(requestUrl, agentFeedbackConfig);
|
|
855
|
+
if (agentFeedbackRequest) {
|
|
856
|
+
if (agentFeedbackRequest.kind === "schema") {
|
|
857
|
+
return new Response(JSON.stringify({ error: "Method Not Allowed" }), {
|
|
858
|
+
status: 405,
|
|
859
|
+
headers: {
|
|
860
|
+
Allow: "GET",
|
|
861
|
+
"Content-Type": "application/json; charset=utf-8",
|
|
862
|
+
},
|
|
863
|
+
});
|
|
864
|
+
}
|
|
865
|
+
const parsed = await parseDocsAgentFeedbackData(event.request);
|
|
866
|
+
if (!parsed.ok)
|
|
867
|
+
return parsed.response;
|
|
868
|
+
const payloadError = validateDocsAgentFeedbackPayload(parsed.data.payload, agentFeedbackConfig.payloadSchema);
|
|
869
|
+
if (payloadError)
|
|
870
|
+
return Response.json({ error: payloadError }, { status: 400 });
|
|
871
|
+
if (!agentFeedbackConfig.onFeedback) {
|
|
872
|
+
return Response.json({ ok: true, handled: false }, { status: 202 });
|
|
873
|
+
}
|
|
874
|
+
await agentFeedbackConfig.onFeedback(parsed.data);
|
|
875
|
+
return Response.json({ ok: true, handled: true }, { status: 201 });
|
|
876
|
+
}
|
|
818
877
|
const requestStartedAt = Date.now();
|
|
819
878
|
const trace = createDocsAgentTraceContext("ask-ai");
|
|
820
879
|
const runSpanId = createDocsAgentTraceId("span");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@farming-labs/svelte",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.97",
|
|
4
4
|
"description": "SvelteKit adapter for @farming-labs/docs — content loading and navigation utilities",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"docs",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"devDependencies": {
|
|
57
57
|
"@types/node": "^22.10.0",
|
|
58
58
|
"typescript": "^5.9.3",
|
|
59
|
-
"@farming-labs/docs": "0.1.
|
|
59
|
+
"@farming-labs/docs": "0.1.97"
|
|
60
60
|
},
|
|
61
61
|
"peerDependencies": {
|
|
62
62
|
"@farming-labs/docs": "*"
|