@farm.js/core 0.1.41 → 0.1.42
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/{agent-mcp-D0eZKfci.d.ts → agent-mcp-SSD6L3VZ.d.ts} +1 -1
- package/dist/{agent-mcp-BOqIxJLI.d.mts → agent-mcp-ssVy_tea.d.mts} +1 -1
- package/dist/agent-runtime.d.mts +1 -1
- package/dist/agent-runtime.d.ts +1 -1
- package/dist/api/route-manager.d.mts +3 -3
- package/dist/api/route-manager.d.ts +3 -3
- package/dist/api/runtime.d.mts +2 -2
- package/dist/api/runtime.d.ts +2 -2
- package/dist/api.d.mts +3 -3
- package/dist/api.d.ts +3 -3
- package/dist/{app-CzTSMJaf.d.mts → app-1h3lVT4a.d.mts} +4 -4
- package/dist/{app-DM8e1z3G.d.ts → app-KjFzdCqy.d.ts} +4 -4
- package/dist/app-manifest-D3RkVNuS.d.mts +120 -0
- package/dist/app-manifest-DaW8-tvX.d.ts +120 -0
- package/dist/app-markdown.d.mts +2 -2
- package/dist/app-markdown.d.ts +2 -2
- package/dist/{chunk-PYHPXPSW.mjs → chunk-2JZHQDUY.mjs} +1 -1
- package/dist/{chunk-R65GCA6A.mjs → chunk-375K2ZVU.mjs} +7 -7
- package/dist/{chunk-L6HYACBE.cjs → chunk-7YHSD3Z6.cjs} +77 -113
- package/dist/{chunk-EH3464KF.cjs → chunk-AHFRQMRX.cjs} +1 -1
- package/dist/{chunk-EX4MKHXN.cjs → chunk-BXJ5HJTJ.cjs} +7 -6
- package/dist/{chunk-BYQVROIP.mjs → chunk-DMRPN25V.mjs} +69 -0
- package/dist/{chunk-4C7KTKX7.mjs → chunk-IVQY6UTY.mjs} +1 -1
- package/dist/{chunk-3TB5QGUW.cjs → chunk-JAXDRRRC.cjs} +70 -1
- package/dist/{chunk-32TZ3QTP.cjs → chunk-JG3MEQUH.cjs} +85 -85
- package/dist/{chunk-ENOBPDKZ.mjs → chunk-NU25TRIO.mjs} +3 -2
- package/dist/{chunk-SVPGWJZF.mjs → chunk-PIZXONIS.mjs} +71 -107
- package/dist/{chunk-JOTUZIM4.cjs → chunk-QKZMB7LY.cjs} +2 -2
- package/dist/{chunk-FJGIVDA5.mjs → chunk-QTEJGB5A.mjs} +3 -3
- package/dist/{chunk-OQ4YXWH4.cjs → chunk-TCJ4A4A2.cjs} +57 -62
- package/dist/{chunk-BGGWKZ2V.mjs → chunk-TUL355PH.mjs} +6 -11
- package/dist/{chunk-VLPII2JJ.mjs → chunk-U2UC7UGP.mjs} +1 -1
- package/dist/{chunk-ROQ4C4LJ.cjs → chunk-ZATTDMBW.cjs} +48 -48
- package/dist/{chunk-PN676AZF.cjs → chunk-ZS6HDNOM.cjs} +6 -6
- package/dist/{client-plugins-CkYwvDJ0.d.mts → client-plugins-C9Py_50W.d.mts} +78 -6
- package/dist/{client-plugins-DfeKd0sD.d.ts → client-plugins-DIem0I0W.d.ts} +78 -6
- package/dist/client-plugins.d.mts +1 -1
- package/dist/client-plugins.d.ts +1 -1
- package/dist/client.d.mts +5 -5
- package/dist/client.d.ts +5 -5
- package/dist/config.d.mts +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/{devtools-2YHAJYH6.cjs → devtools-2RY3EKHL.cjs} +3 -3
- package/dist/{devtools-N3QLRIQU.mjs → devtools-Q3LBNUJ7.mjs} +2 -2
- package/dist/docs.cjs +4 -4
- package/dist/docs.d.mts +2 -2
- package/dist/docs.d.ts +2 -2
- package/dist/docs.mjs +3 -3
- package/dist/index.cjs +9 -9
- package/dist/index.d.mts +14 -13
- package/dist/index.d.ts +14 -13
- package/dist/index.mjs +8 -8
- package/dist/integrations.d.mts +1 -1
- package/dist/integrations.d.ts +1 -1
- package/dist/internal/app-markdown-runtime.d.mts +2 -2
- package/dist/internal/app-markdown-runtime.d.ts +2 -2
- package/dist/internal/build-runtime.cjs +9 -9
- package/dist/internal/build-runtime.d.mts +3 -3
- package/dist/internal/build-runtime.d.ts +3 -3
- package/dist/internal/build-runtime.mjs +8 -8
- package/dist/internal/cli-runtime.cjs +3 -3
- package/dist/internal/cli-runtime.mjs +2 -2
- package/dist/internal/client-error-overlay.cjs +4 -4
- package/dist/internal/client-error-overlay.mjs +1 -1
- package/dist/internal/compression-runtime.d.mts +1 -1
- package/dist/internal/compression-runtime.d.ts +1 -1
- package/dist/internal/config-runtime.cjs +3 -3
- package/dist/internal/config-runtime.d.mts +2 -2
- package/dist/internal/config-runtime.d.ts +2 -2
- package/dist/internal/config-runtime.mjs +2 -2
- package/dist/internal/product-telemetry-runtime.cjs +2 -2
- package/dist/internal/product-telemetry-runtime.mjs +1 -1
- package/dist/internal/production-runtime.cjs +5 -5
- package/dist/internal/production-runtime.d.mts +10 -127
- package/dist/internal/production-runtime.d.ts +10 -127
- package/dist/internal/production-runtime.mjs +4 -4
- package/dist/markdown.d.mts +1 -1
- package/dist/markdown.d.ts +1 -1
- package/dist/middleware.d.mts +3 -3
- package/dist/middleware.d.ts +3 -3
- package/dist/navigation.d.mts +4 -4
- package/dist/navigation.d.ts +4 -4
- package/dist/plugin.cjs +6 -6
- package/dist/plugin.d.mts +3 -3
- package/dist/plugin.d.ts +3 -3
- package/dist/plugin.mjs +5 -5
- package/dist/{production-runtime-BTkXQdYy.d.mts → production-runtime-CHFKIgpW.d.mts} +1 -1
- package/dist/{production-runtime-DFC7pgbp.d.ts → production-runtime-bjjWq-DA.d.ts} +1 -1
- package/dist/{render-plan-BoAK9xFC.d.ts → render-plan-B2UndB4x.d.ts} +1 -1
- package/dist/{render-plan-5rFeWmk7.d.mts → render-plan-DOHg6wdO.d.mts} +1 -1
- package/dist/renderer-client.d.mts +3 -3
- package/dist/renderer-client.d.ts +3 -3
- package/dist/{request-BxBWigtl.d.mts → request-DQcGfdgQ.d.mts} +1 -1
- package/dist/{request-fciwmd3n.d.ts → request-DVNXRQrI.d.ts} +1 -1
- package/dist/request.d.mts +2 -2
- package/dist/request.d.ts +2 -2
- package/dist/{route-rendering-BLZT0IP0.d.ts → route-rendering-B_6fj-GG.d.ts} +1 -1
- package/dist/{route-rendering-BCM1QzEf.d.mts → route-rendering-CEX4mFn-.d.mts} +1 -1
- package/dist/{router-CkheNX3-.d.ts → router-CHEMHm1P.d.ts} +1 -1
- package/dist/{router-DyZJWc1_.d.mts → router-CKHPBKXX.d.mts} +1 -1
- package/dist/routes.d.mts +1 -1
- package/dist/routes.d.ts +1 -1
- package/dist/{runtime-DfU4sKa5.d.ts → runtime-Br2ZDTAv.d.ts} +1 -1
- package/dist/{runtime-wexvUN5J.d.mts → runtime-jj8TKNsy.d.mts} +1 -1
- package/dist/server-plugins.d.mts +2 -2
- package/dist/server-plugins.d.ts +2 -2
- package/dist/server.cjs +22 -22
- package/dist/server.d.mts +9 -9
- package/dist/server.d.ts +9 -9
- package/dist/server.mjs +6 -6
- package/dist/{spa-router-DgsMXqfX.d.mts → spa-router-BEvS9Erj.d.mts} +2 -2
- package/dist/{spa-router-CcejECnG.d.ts → spa-router-DmCuH5B7.d.ts} +2 -2
- package/dist/{ssg-Bg4bMMhM.d.mts → ssg-57v6cZcW.d.mts} +2 -2
- package/dist/{ssg-1FGaFISl.d.ts → ssg-gT093ETk.d.ts} +2 -2
- package/dist/testing.d.mts +1 -1
- package/dist/testing.d.ts +1 -1
- package/dist/{utils-Dxbh6Hgj.d.ts → utils-CCTKvR-P.d.ts} +1 -1
- package/dist/{utils-8wtTYiH4.d.mts → utils-raHHQVyL.d.mts} +1 -1
- package/dist/version.cjs +2 -2
- package/dist/version.mjs +1 -1
- package/dist/vite.cjs +6 -6
- package/dist/vite.d.mts +4 -4
- package/dist/vite.d.ts +4 -4
- package/dist/vite.mjs +5 -5
- package/package.json +1 -1
|
@@ -22,9 +22,10 @@ import {
|
|
|
22
22
|
import {
|
|
23
23
|
resolveFarmAgentCrawlers,
|
|
24
24
|
resolveFarmAgentSitemap,
|
|
25
|
+
resolveFarmAppManifestConfig,
|
|
25
26
|
resolveFarmNoindexPreviews,
|
|
26
27
|
resolveFarmPerformanceConfig
|
|
27
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-DMRPN25V.mjs";
|
|
28
29
|
import {
|
|
29
30
|
resolveFarmLlmsTxtConfig
|
|
30
31
|
} from "./chunk-ETPEZLS3.mjs";
|
|
@@ -154,7 +155,7 @@ function resolveFarmAgentConfig(input, context = {}) {
|
|
|
154
155
|
crawlers: resolveFarmAgentCrawlers(input?.crawlers),
|
|
155
156
|
apiCatalog: resolveFarmAgentBoolean(input?.apiCatalog, "apiCatalog", false),
|
|
156
157
|
aiCatalog: resolveFarmAgentBoolean(input?.aiCatalog, "aiCatalog", true),
|
|
157
|
-
manifest:
|
|
158
|
+
manifest: resolveFarmAppManifestConfig(input?.manifest),
|
|
158
159
|
// Same rule as llms.txt: the docs engine serves its own MCP server at /mcp.
|
|
159
160
|
mcp: resolveFarmAgentBoolean(input?.mcp, "mcp", !context.docs)
|
|
160
161
|
};
|
|
@@ -4,6 +4,9 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
DEFAULT_ERROR_STYLES
|
|
6
6
|
} from "./chunk-XAXTTBUT.mjs";
|
|
7
|
+
import {
|
|
8
|
+
resolveFarmAppManifestConfig
|
|
9
|
+
} from "./chunk-DMRPN25V.mjs";
|
|
7
10
|
import {
|
|
8
11
|
serializeFarmLlmsTxt
|
|
9
12
|
} from "./chunk-ETPEZLS3.mjs";
|
|
@@ -42,7 +45,7 @@ import {
|
|
|
42
45
|
} from "./chunk-ZZGQD7A4.mjs";
|
|
43
46
|
import {
|
|
44
47
|
FARM_VERSION
|
|
45
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-U2UC7UGP.mjs";
|
|
46
49
|
import {
|
|
47
50
|
localizeFarmPathname
|
|
48
51
|
} from "./chunk-L3KT7IXV.mjs";
|
|
@@ -961,13 +964,11 @@ function isFarmAppManifestPath(pathname) {
|
|
|
961
964
|
return pathname === FARM_APP_MANIFEST_PATH || pathname === FARM_APP_MANIFEST_LEGACY_PATH;
|
|
962
965
|
}
|
|
963
966
|
__name(isFarmAppManifestPath, "isFarmAppManifestPath");
|
|
964
|
-
var FARM_INFRA_SIGNATURE_HEADER = "farmjs-infra-signature";
|
|
965
|
-
var SIGNED_PURPOSE = "farmjs-manifest-v1";
|
|
966
|
-
var SIGNATURE_WINDOW_SECONDS = 300;
|
|
967
967
|
function resolveFarmAppManifestInput(config, extra) {
|
|
968
968
|
const llms = config.agent?.llmsTxt;
|
|
969
969
|
const plugins = (config.plugins ?? []).map(({ name }) => name);
|
|
970
970
|
const webmcp = plugins.includes("farm:webmcp");
|
|
971
|
+
const sections = resolveFarmAppManifestConfig(config.agent?.manifest);
|
|
971
972
|
return {
|
|
972
973
|
renderer: config.renderer?.name ?? "react",
|
|
973
974
|
basePath: config.basePath || "/",
|
|
@@ -984,7 +985,7 @@ function resolveFarmAppManifestInput(config, extra) {
|
|
|
984
985
|
openapi: config.openapi?.enabled && config.openapi.specRoute ? config.openapi.specRoute : null
|
|
985
986
|
},
|
|
986
987
|
plugins,
|
|
987
|
-
|
|
988
|
+
...sections ? { sections } : {}
|
|
988
989
|
};
|
|
989
990
|
}
|
|
990
991
|
__name(resolveFarmAppManifestInput, "resolveFarmAppManifestInput");
|
|
@@ -993,56 +994,71 @@ var SOURCES = {
|
|
|
993
994
|
standalone: "defineTool",
|
|
994
995
|
serverFunction: "serverFunction"
|
|
995
996
|
};
|
|
996
|
-
|
|
997
|
-
|
|
997
|
+
var DEFAULT_SECTIONS = resolveFarmAppManifestConfig(void 0);
|
|
998
|
+
function createFarmAppManifest(input) {
|
|
999
|
+
const sections = input.sections ?? DEFAULT_SECTIONS;
|
|
1000
|
+
const { app, mcp, webmcp } = sections;
|
|
1001
|
+
return {
|
|
998
1002
|
schemaVersion: 1,
|
|
999
|
-
app: {
|
|
1000
|
-
farm: FARM_VERSION,
|
|
1001
|
-
renderer: input.renderer,
|
|
1003
|
+
app: app ? {
|
|
1004
|
+
...app.version ? { farm: FARM_VERSION } : {},
|
|
1005
|
+
...app.renderer ? { renderer: input.renderer } : {},
|
|
1002
1006
|
basePath: input.basePath,
|
|
1003
|
-
build: input.build
|
|
1004
|
-
},
|
|
1005
|
-
packages: input.packages,
|
|
1006
|
-
mcp: {
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
authorization: open ? "none" : "required",
|
|
1015
|
-
resources: listed ? [...details?.resources ?? []] : [],
|
|
1016
|
-
prompts: listed ? [...details?.prompts ?? []] : [],
|
|
1017
|
-
tools: (listed ? tools : []).map((tool) => {
|
|
1018
|
-
const schemas = details?.schemas?.[tool.name];
|
|
1019
|
-
const hints = Object.fromEntries(
|
|
1020
|
-
["readOnlyHint", "destructiveHint", "idempotentHint", "openWorldHint"].filter((hint) => typeof tool[hint] === "boolean").map((hint) => [hint, tool[hint]])
|
|
1021
|
-
);
|
|
1022
|
-
return {
|
|
1023
|
-
name: tool.name,
|
|
1024
|
-
...tool.title ? { title: tool.title } : {},
|
|
1025
|
-
...tool.description ? { description: tool.description } : {},
|
|
1026
|
-
source: SOURCES[tool.kind],
|
|
1027
|
-
// MCP clients never see the route behind a tool; only Infra's view names it.
|
|
1028
|
-
...full && tool.kind === "endpoint" ? { method: tool.method, path: tool.path } : {},
|
|
1029
|
-
...hints,
|
|
1030
|
-
...schemas ? { inputSchema: schemas.input } : {},
|
|
1031
|
-
...schemas?.output ? { outputSchema: schemas.output } : {}
|
|
1032
|
-
};
|
|
1033
|
-
})
|
|
1034
|
-
};
|
|
1035
|
-
})
|
|
1036
|
-
},
|
|
1037
|
-
webmcp: input.webmcp,
|
|
1038
|
-
integrations: input.integrations,
|
|
1039
|
-
agent: input.agent,
|
|
1040
|
-
plugins: input.plugins
|
|
1007
|
+
...app.build ? { build: input.build } : {}
|
|
1008
|
+
} : null,
|
|
1009
|
+
packages: sections.packages === "names" ? Object.fromEntries(Object.keys(input.packages).map((name) => [name, null])) : sections.packages ? input.packages : null,
|
|
1010
|
+
mcp: mcp ? { servers: listServers(input, mcp) } : null,
|
|
1011
|
+
webmcp: webmcp ? {
|
|
1012
|
+
enabled: input.webmcp.enabled,
|
|
1013
|
+
tools: input.webmcp.tools.filter((tool) => !webmcp.hide.includes(tool.name))
|
|
1014
|
+
} : null,
|
|
1015
|
+
integrations: sections.integrations ? input.integrations : null,
|
|
1016
|
+
agent: sections.agent ? input.agent : null,
|
|
1017
|
+
plugins: sections.plugins ? input.plugins : null
|
|
1041
1018
|
};
|
|
1042
|
-
manifest.mcp.servers.push(...listDefaultServer(input));
|
|
1043
|
-
return manifest;
|
|
1044
1019
|
}
|
|
1045
1020
|
__name(createFarmAppManifest, "createFarmAppManifest");
|
|
1021
|
+
function listServers(input, mcp) {
|
|
1022
|
+
const servers = _listFarmMCPCatalogs().map(({ server, tools, details }) => {
|
|
1023
|
+
const open = details?.public === true && !input.guardCoversPath?.(server.path);
|
|
1024
|
+
return {
|
|
1025
|
+
name: server.name,
|
|
1026
|
+
version: server.version,
|
|
1027
|
+
path: server.path,
|
|
1028
|
+
authorization: open ? "none" : "required",
|
|
1029
|
+
resources: open ? [...details?.resources ?? []] : [],
|
|
1030
|
+
prompts: open ? [...details?.prompts ?? []] : [],
|
|
1031
|
+
tools: (open ? tools : []).map((tool) => {
|
|
1032
|
+
const schemas = details?.schemas?.[tool.name];
|
|
1033
|
+
const hints = Object.fromEntries(
|
|
1034
|
+
["readOnlyHint", "destructiveHint", "idempotentHint", "openWorldHint"].filter((hint) => typeof tool[hint] === "boolean").map((hint) => [hint, tool[hint]])
|
|
1035
|
+
);
|
|
1036
|
+
return {
|
|
1037
|
+
name: tool.name,
|
|
1038
|
+
...tool.title ? { title: tool.title } : {},
|
|
1039
|
+
...tool.description ? { description: tool.description } : {},
|
|
1040
|
+
source: SOURCES[tool.kind],
|
|
1041
|
+
...hints,
|
|
1042
|
+
...schemas ? { inputSchema: schemas.input } : {},
|
|
1043
|
+
...schemas?.output ? { outputSchema: schemas.output } : {}
|
|
1044
|
+
};
|
|
1045
|
+
})
|
|
1046
|
+
};
|
|
1047
|
+
});
|
|
1048
|
+
return [...servers, ...listDefaultServer(input)].filter((server) => !mcp.hide.includes(server.name)).map((server) => ({
|
|
1049
|
+
...server,
|
|
1050
|
+
tools: server.tools.filter((tool) => !mcp.hide.includes(`${server.name}/${tool.name}`)).map((tool) => mcp.schemas ? tool : withoutSchemas(tool))
|
|
1051
|
+
}));
|
|
1052
|
+
}
|
|
1053
|
+
__name(listServers, "listServers");
|
|
1054
|
+
function withoutSchemas({
|
|
1055
|
+
inputSchema: _input,
|
|
1056
|
+
outputSchema: _output,
|
|
1057
|
+
...tool
|
|
1058
|
+
}) {
|
|
1059
|
+
return tool;
|
|
1060
|
+
}
|
|
1061
|
+
__name(withoutSchemas, "withoutSchemas");
|
|
1046
1062
|
function listDefaultServer(input) {
|
|
1047
1063
|
const server = input.defaultMCP?.();
|
|
1048
1064
|
if (!server) return [];
|
|
@@ -1068,57 +1084,13 @@ function listDefaultServer(input) {
|
|
|
1068
1084
|
];
|
|
1069
1085
|
}
|
|
1070
1086
|
__name(listDefaultServer, "listDefaultServer");
|
|
1071
|
-
var encoder = new TextEncoder();
|
|
1072
|
-
var hex = /* @__PURE__ */ __name((bytes) => [...new Uint8Array(bytes)].map((byte) => byte.toString(16).padStart(2, "0")).join(""), "hex");
|
|
1073
|
-
async function sha256Hex(value) {
|
|
1074
|
-
return hex(await crypto.subtle.digest("SHA-256", encoder.encode(value)));
|
|
1075
|
-
}
|
|
1076
|
-
__name(sha256Hex, "sha256Hex");
|
|
1077
|
-
async function hmacHex(secret, message) {
|
|
1078
|
-
const key = await crypto.subtle.importKey(
|
|
1079
|
-
"raw",
|
|
1080
|
-
encoder.encode(secret),
|
|
1081
|
-
{ name: "HMAC", hash: "SHA-256" },
|
|
1082
|
-
false,
|
|
1083
|
-
["sign"]
|
|
1084
|
-
);
|
|
1085
|
-
return hex(await crypto.subtle.sign("HMAC", key, encoder.encode(message)));
|
|
1086
|
-
}
|
|
1087
|
-
__name(hmacHex, "hmacHex");
|
|
1088
|
-
function sameHex(a, b) {
|
|
1089
|
-
if (a.length !== b.length) return false;
|
|
1090
|
-
let difference = 0;
|
|
1091
|
-
for (let index = 0; index < a.length; index++)
|
|
1092
|
-
difference |= a.charCodeAt(index) ^ b.charCodeAt(index);
|
|
1093
|
-
return difference === 0;
|
|
1094
|
-
}
|
|
1095
|
-
__name(sameHex, "sameHex");
|
|
1096
|
-
async function verifyFarmInfraManifestSignature(header, key, now = Date.now()) {
|
|
1097
|
-
if (!header || header.length > 2048) return false;
|
|
1098
|
-
const parts = header.split(",").map((part) => part.trim());
|
|
1099
|
-
const timestamp = Number(
|
|
1100
|
-
/^t=(\d{1,12})$/.exec(parts.find((part) => part.startsWith("t=")) ?? "")?.[1]
|
|
1101
|
-
);
|
|
1102
|
-
if (!Number.isSafeInteger(timestamp)) return false;
|
|
1103
|
-
if (Math.abs(now / 1e3 - timestamp) > SIGNATURE_WINDOW_SECONDS) return false;
|
|
1104
|
-
const signatures = parts.filter((part) => part.startsWith("v1=")).map((part) => part.slice(3)).filter((value) => /^[0-9a-f]{64}$/.test(value));
|
|
1105
|
-
if (!signatures.length || signatures.length > 8) return false;
|
|
1106
|
-
const expected = await hmacHex(await sha256Hex(key), `${SIGNED_PURPOSE}
|
|
1107
|
-
${timestamp}`);
|
|
1108
|
-
return signatures.some((signature) => sameHex(signature, expected));
|
|
1109
|
-
}
|
|
1110
|
-
__name(verifyFarmInfraManifestSignature, "verifyFarmInfraManifestSignature");
|
|
1111
|
-
function processEnv() {
|
|
1112
|
-
return globalThis.process?.env ?? {};
|
|
1113
|
-
}
|
|
1114
|
-
__name(processEnv, "processEnv");
|
|
1115
1087
|
var CORS_HEADERS = {
|
|
1116
1088
|
"access-control-allow-origin": "*",
|
|
1117
1089
|
"access-control-allow-methods": "GET, HEAD, OPTIONS",
|
|
1118
|
-
"access-control-allow-headers":
|
|
1090
|
+
"access-control-allow-headers": "If-None-Match",
|
|
1119
1091
|
"access-control-expose-headers": "ETag"
|
|
1120
1092
|
};
|
|
1121
|
-
async function createFarmAppManifestResponse(request, input
|
|
1093
|
+
async function createFarmAppManifestResponse(request, input) {
|
|
1122
1094
|
const method = request.method.toUpperCase();
|
|
1123
1095
|
if (method === "OPTIONS") return new Response(null, { status: 204, headers: CORS_HEADERS });
|
|
1124
1096
|
if (method !== "GET" && method !== "HEAD") {
|
|
@@ -1127,23 +1099,16 @@ async function createFarmAppManifestResponse(request, input, options = {}) {
|
|
|
1127
1099
|
headers: { ...CORS_HEADERS, allow: "GET, HEAD, OPTIONS", "content-type": "text/plain" }
|
|
1128
1100
|
});
|
|
1129
1101
|
}
|
|
1130
|
-
const
|
|
1131
|
-
const key = input.analytics ? (options.env ?? processEnv()).FARMJS_API_KEY?.trim() : void 0;
|
|
1132
|
-
const full = Boolean(
|
|
1133
|
-
signature && key && await verifyFarmInfraManifestSignature(signature, key)
|
|
1134
|
-
);
|
|
1135
|
-
const body = JSON.stringify(createFarmAppManifest(input, { full }));
|
|
1102
|
+
const body = JSON.stringify(createFarmAppManifest(input));
|
|
1136
1103
|
const etag = createFarmWeakETag(body);
|
|
1137
1104
|
const headers = {
|
|
1138
1105
|
...CORS_HEADERS,
|
|
1139
1106
|
"content-type": "application/json; charset=utf-8",
|
|
1140
|
-
|
|
1141
|
-
"cache-control": full ? "private, no-store" : "public, max-age=0, must-revalidate",
|
|
1142
|
-
vary: FARM_INFRA_SIGNATURE_HEADER,
|
|
1107
|
+
"cache-control": "public, max-age=0, must-revalidate",
|
|
1143
1108
|
etag,
|
|
1144
1109
|
"x-content-type-options": "nosniff"
|
|
1145
1110
|
};
|
|
1146
|
-
if (
|
|
1111
|
+
if (matchesFarmIfNoneMatch(request.headers.get("if-none-match"), etag)) {
|
|
1147
1112
|
return new Response(null, { status: 304, headers });
|
|
1148
1113
|
}
|
|
1149
1114
|
return new Response(method === "HEAD" ? null : body, { status: 200, headers });
|
|
@@ -1186,7 +1151,6 @@ export {
|
|
|
1186
1151
|
FARM_APP_MANIFEST_PATH,
|
|
1187
1152
|
FARM_APP_MANIFEST_LEGACY_PATH,
|
|
1188
1153
|
isFarmAppManifestPath,
|
|
1189
|
-
FARM_INFRA_SIGNATURE_HEADER,
|
|
1190
1154
|
resolveFarmAppManifestInput,
|
|
1191
1155
|
createFarmAppManifestResponse
|
|
1192
1156
|
};
|
|
@@ -11,7 +11,7 @@ var _chunkMY5PZYADcjs = require('./chunk-MY5PZYAD.cjs');
|
|
|
11
11
|
var _chunkIK6LVLKCcjs = require('./chunk-IK6LVLKC.cjs');
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _chunkBXJ5HJTJcjs = require('./chunk-BXJ5HJTJ.cjs');
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
|
|
@@ -564,7 +564,7 @@ async function resolveAPIContext(options) {
|
|
|
564
564
|
config: options.config,
|
|
565
565
|
configPath: options.configPath
|
|
566
566
|
}));
|
|
567
|
-
const docs = isResolvedDocsConfig(docsInput) ? docsInput : await
|
|
567
|
+
const docs = isResolvedDocsConfig(docsInput) ? docsInput : await _chunkBXJ5HJTJcjs.resolveDocsConfig.call(void 0, docsInput, { root, srcDir });
|
|
568
568
|
const guardedPaths = new Set(_nullishCoalesce(_optionalChain([runtimeConfig, 'optionalAccess', _20 => _20.guardedPaths]), () => ( [])));
|
|
569
569
|
return {
|
|
570
570
|
root,
|
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
renderFarmLocaleAlternateLinks,
|
|
25
25
|
resolveDefaultErrorStatus,
|
|
26
26
|
routeBoundaryCoversDirectory
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-PIZXONIS.mjs";
|
|
28
28
|
import {
|
|
29
29
|
FARM_DEFAULT_MCP_PATH,
|
|
30
30
|
collectFarmDefaultMCPPages,
|
|
@@ -81,7 +81,7 @@ import {
|
|
|
81
81
|
resolveFarmAgentCrawlers,
|
|
82
82
|
resolveFarmAgentSitemap,
|
|
83
83
|
resolveFarmPerformanceConfig
|
|
84
|
-
} from "./chunk-
|
|
84
|
+
} from "./chunk-DMRPN25V.mjs";
|
|
85
85
|
import {
|
|
86
86
|
collectFarmLlmsTxtPages,
|
|
87
87
|
createFarmDefaultLlmsTxt,
|
|
@@ -237,7 +237,7 @@ import {
|
|
|
237
237
|
} from "./chunk-P7XDC7UJ.mjs";
|
|
238
238
|
import {
|
|
239
239
|
FARM_VERSION
|
|
240
|
-
} from "./chunk-
|
|
240
|
+
} from "./chunk-U2UC7UGP.mjs";
|
|
241
241
|
import {
|
|
242
242
|
resolveFarmTrailingSlashRedirect,
|
|
243
243
|
setFarmTrailingSlashPreference
|