@farming-labs/docs 0.2.59 → 0.2.60
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/cli/index.mjs +6 -4
- package/dist/{dev-CAQlbguk.mjs → dev-DgY5xGl9.mjs} +1 -1
- package/dist/{init-B_9ENq8Z.mjs → init-Bd_k06bR.mjs} +1 -1
- package/dist/{mcp-BAJr3wC2.mjs → mcp-B_yXL5G5.mjs} +49 -16
- package/dist/{templates-CfQjpDWW.mjs → templates-DNw15P-x.mjs} +1 -0
- package/package.json +1 -1
package/dist/cli/index.mjs
CHANGED
|
@@ -67,6 +67,7 @@ async function main() {
|
|
|
67
67
|
setup: subcommand === "setup",
|
|
68
68
|
deploymentId: typeof flags.deployment === "string" ? flags.deployment : void 0,
|
|
69
69
|
apiBaseUrl: typeof flags["api-base-url"] === "string" ? flags["api-base-url"] : typeof flags.url === "string" ? flags.url : void 0,
|
|
70
|
+
client: typeof flags.client === "string" ? flags.client : void 0,
|
|
70
71
|
json: typeof flags.json === "boolean" ? flags.json : void 0
|
|
71
72
|
};
|
|
72
73
|
const devOptions = {
|
|
@@ -105,10 +106,10 @@ async function main() {
|
|
|
105
106
|
]
|
|
106
107
|
};
|
|
107
108
|
if (!parsedCommand.command || parsedCommand.command === "init") {
|
|
108
|
-
const { init } = await import("../init-
|
|
109
|
+
const { init } = await import("../init-Bd_k06bR.mjs");
|
|
109
110
|
await init(initOptions);
|
|
110
111
|
} else if (parsedCommand.command === "dev") {
|
|
111
|
-
const { dev } = await import("../dev-
|
|
112
|
+
const { dev } = await import("../dev-DgY5xGl9.mjs");
|
|
112
113
|
await dev(devOptions);
|
|
113
114
|
} else if (parsedCommand.command === "deploy") {
|
|
114
115
|
const { runCloudDeploy } = await import("../cloud-BH_sHX64.mjs");
|
|
@@ -138,7 +139,7 @@ async function main() {
|
|
|
138
139
|
printCloudHelp();
|
|
139
140
|
process.exit(1);
|
|
140
141
|
} else if (parsedCommand.command === "mcp") {
|
|
141
|
-
const { runMcp } = await import("../mcp-
|
|
142
|
+
const { runMcp } = await import("../mcp-B_yXL5G5.mjs");
|
|
142
143
|
await runMcp(mcpOptions);
|
|
143
144
|
} else if (parsedCommand.command === "agent" && subcommand === "compact") {
|
|
144
145
|
const { compactAgentDocs, parseAgentCompactArgs, printAgentCompactHelp } = await import("../agent-DlxriaTs.mjs").then((n) => n.t);
|
|
@@ -316,7 +317,8 @@ ${pc.dim("Options for mcp:")}
|
|
|
316
317
|
${pc.cyan("--config <path>")} Use a custom docs config path instead of ${pc.dim("docs.config.ts[x]")}
|
|
317
318
|
${pc.cyan("mcp setup --deployment <id>")} Print Docs Cloud hosted MCP setup for a deployment id
|
|
318
319
|
${pc.cyan("--api-base-url <url>")} Override the hosted Docs Cloud API base URL for ${pc.cyan("mcp setup")}
|
|
319
|
-
${pc.cyan("--
|
|
320
|
+
${pc.cyan("--client <name>")} Emit native config for ${pc.dim("claude-code")}, ${pc.dim("cursor")}, or ${pc.dim("vscode")}
|
|
321
|
+
${pc.cyan("--json")} Print the selected MCP client JSON only for ${pc.cyan("mcp setup")}
|
|
320
322
|
|
|
321
323
|
${pc.dim("Options for dev:")}
|
|
322
324
|
${pc.cyan("--port <number>")} Run the frameworkless preview on a custom port
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as detectPackageManagerFromProject } from "./utils-6UCLxv4B.mjs";
|
|
2
|
-
import { K as rootLayoutTemplate, W as postcssConfigTemplate, g as docsLayoutTemplate, v as globalCssTemplate, yt as tsconfigTemplate } from "./templates-
|
|
2
|
+
import { K as rootLayoutTemplate, W as postcssConfigTemplate, g as docsLayoutTemplate, v as globalCssTemplate, yt as tsconfigTemplate } from "./templates-DNw15P-x.mjs";
|
|
3
3
|
import fs from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { spawn } from "node:child_process";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as devInstallCommand, c as fileExists, d as readFileSafe, f as spawnAndWaitFor, i as detectPackageManagerFromProject, l as formatPackageManagerDetection, n as detectGlobalCssFiles, o as exec, p as writeFileSafe, r as detectNextAppDir, t as detectFramework, u as installCommand } from "./utils-6UCLxv4B.mjs";
|
|
2
|
-
import { $ as svelteDocsPublicHookTemplate, A as nextConfigMergedTemplate, B as nuxtServerApiDocsRouteTemplate, C as injectRootProviderIntoLayout, D as injectTanstackVitePlugins, E as injectTanstackRootProviderIntoRoute, F as nuxtDocsConfigTemplate, G as quickstartPageTemplate, H as nuxtServerDocsPublicMiddlewareTemplate, I as nuxtDocsPageTemplate, J as svelteDocsApiRouteTemplate, K as rootLayoutTemplate, L as nuxtGlobalCssTemplate, M as nextLocaleDocPageTemplate, N as nextLocalizedPageTemplate, O as installationPageTemplate, P as nuxtConfigTemplate, Q as svelteDocsPageTemplate, R as nuxtInstallationPageTemplate, S as injectNuxtCssImport, T as injectSvelteDocsPublicHook, U as nuxtWelcomePageTemplate, V as nuxtServerApiReferenceRouteTemplate, W as postcssConfigTemplate, X as svelteDocsLayoutServerTemplate, Y as svelteDocsConfigTemplate, Z as svelteDocsLayoutTemplate, _ as getAstroAdapterPkg, _t as tanstackViteConfigTemplate, a as astroDocsIndexTemplate, at as svelteWelcomePageTemplate, b as injectAstroDocsMiddleware, bt as welcomePageTemplate, c as astroDocsServerTemplate, ct as tanstackDocsCatchAllRouteTemplate, d as astroQuickstartPageTemplate, dt as tanstackDocsIndexRouteTemplate, et as svelteDocsServerTemplate, f as astroWelcomePageTemplate, ft as tanstackDocsPublicRouteTemplate, g as docsLayoutTemplate, gt as tanstackRootRouteTemplate, h as docsConfigTemplate, ht as tanstackQuickstartPageTemplate, i as astroDocsConfigTemplate, it as svelteRootLayoutTemplate, j as nextConfigTemplate, k as nextApiReferencePageTemplate, l as astroGlobalCssTemplate, lt as tanstackDocsConfigTemplate, m as customThemeTsTemplate, mt as tanstackInstallationPageTemplate, n as astroApiRouteTemplate, nt as svelteInstallationPageTemplate, o as astroDocsMiddlewareTemplate, ot as tanstackApiDocsRouteTemplate, p as customThemeCssTemplate, pt as tanstackDocsServerTemplate, q as svelteApiReferenceRouteTemplate, r as astroConfigTemplate, rt as svelteQuickstartPageTemplate, s as astroDocsPageTemplate, st as tanstackApiReferenceRouteTemplate, t as astroApiReferenceRouteTemplate, tt as svelteGlobalCssTemplate, u as astroInstallationPageTemplate, ut as tanstackDocsFunctionsTemplate, v as globalCssTemplate, vt as tanstackWelcomePageTemplate, w as injectSvelteCssImport, x as injectCssImport, y as injectAstroCssImport, yt as tsconfigTemplate, z as nuxtQuickstartPageTemplate } from "./templates-
|
|
2
|
+
import { $ as svelteDocsPublicHookTemplate, A as nextConfigMergedTemplate, B as nuxtServerApiDocsRouteTemplate, C as injectRootProviderIntoLayout, D as injectTanstackVitePlugins, E as injectTanstackRootProviderIntoRoute, F as nuxtDocsConfigTemplate, G as quickstartPageTemplate, H as nuxtServerDocsPublicMiddlewareTemplate, I as nuxtDocsPageTemplate, J as svelteDocsApiRouteTemplate, K as rootLayoutTemplate, L as nuxtGlobalCssTemplate, M as nextLocaleDocPageTemplate, N as nextLocalizedPageTemplate, O as installationPageTemplate, P as nuxtConfigTemplate, Q as svelteDocsPageTemplate, R as nuxtInstallationPageTemplate, S as injectNuxtCssImport, T as injectSvelteDocsPublicHook, U as nuxtWelcomePageTemplate, V as nuxtServerApiReferenceRouteTemplate, W as postcssConfigTemplate, X as svelteDocsLayoutServerTemplate, Y as svelteDocsConfigTemplate, Z as svelteDocsLayoutTemplate, _ as getAstroAdapterPkg, _t as tanstackViteConfigTemplate, a as astroDocsIndexTemplate, at as svelteWelcomePageTemplate, b as injectAstroDocsMiddleware, bt as welcomePageTemplate, c as astroDocsServerTemplate, ct as tanstackDocsCatchAllRouteTemplate, d as astroQuickstartPageTemplate, dt as tanstackDocsIndexRouteTemplate, et as svelteDocsServerTemplate, f as astroWelcomePageTemplate, ft as tanstackDocsPublicRouteTemplate, g as docsLayoutTemplate, gt as tanstackRootRouteTemplate, h as docsConfigTemplate, ht as tanstackQuickstartPageTemplate, i as astroDocsConfigTemplate, it as svelteRootLayoutTemplate, j as nextConfigTemplate, k as nextApiReferencePageTemplate, l as astroGlobalCssTemplate, lt as tanstackDocsConfigTemplate, m as customThemeTsTemplate, mt as tanstackInstallationPageTemplate, n as astroApiRouteTemplate, nt as svelteInstallationPageTemplate, o as astroDocsMiddlewareTemplate, ot as tanstackApiDocsRouteTemplate, p as customThemeCssTemplate, pt as tanstackDocsServerTemplate, q as svelteApiReferenceRouteTemplate, r as astroConfigTemplate, rt as svelteQuickstartPageTemplate, s as astroDocsPageTemplate, st as tanstackApiReferenceRouteTemplate, t as astroApiReferenceRouteTemplate, tt as svelteGlobalCssTemplate, u as astroInstallationPageTemplate, ut as tanstackDocsFunctionsTemplate, v as globalCssTemplate, vt as tanstackWelcomePageTemplate, w as injectSvelteCssImport, x as injectCssImport, y as injectAstroCssImport, yt as tsconfigTemplate, z as nuxtQuickstartPageTemplate } from "./templates-DNw15P-x.mjs";
|
|
3
3
|
import fs from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import pc from "picocolors";
|
|
@@ -10,6 +10,16 @@ import { readFileSync } from "node:fs";
|
|
|
10
10
|
import pc from "picocolors";
|
|
11
11
|
|
|
12
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
|
+
};
|
|
13
23
|
async function runMcp(options = {}) {
|
|
14
24
|
if (options.setup) {
|
|
15
25
|
printHostedMcpSetup(options);
|
|
@@ -35,6 +45,38 @@ async function runMcp(options = {}) {
|
|
|
35
45
|
function normalizeApiBaseUrl(value) {
|
|
36
46
|
return (value?.trim() || "https://api.farming-labs.dev").replace(/\/+$/g, "");
|
|
37
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
|
+
}
|
|
38
80
|
function printHostedMcpSetup(options) {
|
|
39
81
|
const deploymentId = options.deploymentId?.trim();
|
|
40
82
|
if (!deploymentId) {
|
|
@@ -43,17 +85,9 @@ function printHostedMcpSetup(options) {
|
|
|
43
85
|
console.error(`Run ${pc.cyan("npx @farming-labs/docs mcp setup --deployment <deployment-id>")}.`);
|
|
44
86
|
process.exit(1);
|
|
45
87
|
}
|
|
88
|
+
const client = normalizeHostedMcpClient(options.client);
|
|
89
|
+
const jsonConfig = createHostedMcpClientConfig(deploymentId, options.apiBaseUrl, client);
|
|
46
90
|
const endpoint = `${normalizeApiBaseUrl(options.apiBaseUrl)}/v1/mcp/${deploymentId}`;
|
|
47
|
-
const jsonConfig = { mcpServers: { "docs-cloud": {
|
|
48
|
-
command: "npx",
|
|
49
|
-
args: [
|
|
50
|
-
"@farming-labs/docs",
|
|
51
|
-
"mcp",
|
|
52
|
-
"setup",
|
|
53
|
-
"--deployment",
|
|
54
|
-
deploymentId
|
|
55
|
-
]
|
|
56
|
-
} } };
|
|
57
91
|
if (options.json) {
|
|
58
92
|
console.log(JSON.stringify(jsonConfig, null, 2));
|
|
59
93
|
return;
|
|
@@ -61,19 +95,18 @@ function printHostedMcpSetup(options) {
|
|
|
61
95
|
console.log(pc.bold("Docs Cloud MCP deployment"));
|
|
62
96
|
console.log(pc.dim(`Deployment: ${deploymentId}`));
|
|
63
97
|
console.log();
|
|
64
|
-
console.log(pc.cyan("
|
|
65
|
-
console.log(` npx @farming-labs/docs mcp setup --deployment ${deploymentId}`);
|
|
66
|
-
console.log();
|
|
67
|
-
console.log(pc.cyan("Streamable HTTP"));
|
|
98
|
+
console.log(pc.cyan("Streamable HTTP (recommended)"));
|
|
68
99
|
console.log(` ${endpoint}`);
|
|
69
100
|
console.log();
|
|
70
101
|
console.log(pc.cyan("SSE"));
|
|
71
102
|
console.log(` ${endpoint}/sse`);
|
|
72
103
|
console.log();
|
|
73
|
-
console.log(pc.cyan(
|
|
104
|
+
console.log(pc.cyan(`MCP client JSON (${HOSTED_MCP_CLIENT_LABELS[client]})`));
|
|
74
105
|
console.log(JSON.stringify(jsonConfig, null, 2));
|
|
75
106
|
console.log();
|
|
76
|
-
console.log(pc.dim("
|
|
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."));
|
|
77
110
|
}
|
|
78
111
|
function readMcpConfig(content) {
|
|
79
112
|
if (content.match(/mcp\s*:\s*false/)) return false;
|
|
@@ -886,6 +886,7 @@ function tanstackDocsPublicRouteTemplate(useAlias, filePath, entry) {
|
|
|
886
886
|
import { createFileRoute } from "@tanstack/react-router";
|
|
887
887
|
import { isDocsMcpRequest, isDocsPublicGetRequest } from "@farming-labs/docs";
|
|
888
888
|
import { docsServer } from "${useAlias ? "@/lib/docs.server" : relativeImport(filePath, "src/lib/docs.server.ts")}";
|
|
889
|
+
import docsConfig from "${tanstackDocsConfigImport(filePath)}";
|
|
889
890
|
|
|
890
891
|
const docsEntry = ${JSON.stringify(entry)};
|
|
891
892
|
|