@farming-labs/docs 0.2.103 → 0.2.104
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-lWTq6pgr.d.mts → agent-C9IdC__R.d.mts} +9 -3
- package/dist/{agent-BLHMoVId.mjs → agent-NerpHcQB.mjs} +3 -3
- package/dist/{agent-CFqECAG0.mjs → agent-PSrgiJD8.mjs} +165 -8
- package/dist/{agent-evals-GpcaCbRb.mjs → agent-evals-U9d_db2u.mjs} +2 -2
- package/dist/{agent-export-oiWxB5aX.mjs → agent-export-DlBUKkTt.mjs} +20 -9
- package/dist/agent-feedback-loop-CGrc-gDW.mjs +196 -0
- package/dist/agent-skills-bundle.d.mts +1 -1
- package/dist/{agent-skills-server-CICMh0zv.d.mts → agent-skills-server-CIoL58X7.d.mts} +2 -2
- package/dist/agent-skills-vite.d.mts +3 -3
- package/dist/{agents-CtqIUW5I.mjs → agents-D3SLnQet.mjs} +8 -7
- package/dist/{analytics-C75BnTEW.d.mts → analytics-B-jz7re8.d.mts} +1 -1
- package/dist/authoring-BsWXMH43.mjs +41 -0
- package/dist/authoring-mcp-BCM5CJbJ.mjs +380 -0
- package/dist/browser.d.mts +3 -3
- package/dist/cli/index.mjs +67 -35
- package/dist/client/react.d.mts +1 -1
- package/dist/{cloud-FNfcbfli.mjs → cloud-BLxt_HYO.mjs} +3 -3
- package/dist/{cloud-ask-ai-BmbZVAT5.d.mts → cloud-ask-ai-19G2HJ62.d.mts} +1 -1
- package/dist/{code-blocks-Bel6vDqI.mjs → code-blocks-c3nIrWOM.mjs} +1 -1
- package/dist/{codeblocks-jbWuvtJQ.mjs → codeblocks-qHdKGVaE.mjs} +2 -2
- package/dist/{dev-BvbYmTLz.mjs → dev-B0iHJjTz.mjs} +3 -3
- package/dist/docs-cloud-server.d.mts +2 -2
- package/dist/docs-cloud-server.mjs +1 -1
- package/dist/{doctor-Bmm0uY98.mjs → doctor-x3k6aE2I.mjs} +16 -12
- package/dist/{downgrade-Dqm0rJMy.mjs → downgrade-Dd3vvVdD.mjs} +2 -2
- package/dist/feedback-DdWc33oO.mjs +72 -0
- package/dist/{golden-evaluations-K45fcWGW.mjs → golden-evaluations-7k7Akp3R.mjs} +2 -2
- package/dist/index.d.mts +70 -8
- package/dist/index.mjs +5 -5
- package/dist/{init-jDQSo-Or.mjs → init-DKukQdOQ.mjs} +3 -3
- package/dist/{mcp-CwgKlbIz.mjs → mcp-B6ZZdp6F.mjs} +7 -6
- package/dist/mcp.d.mts +18 -5
- package/dist/mcp.mjs +457 -38
- package/dist/{content-change-hydration-BsbBXAUi.mjs → openapi-mcp-B7u7Y0gB.mjs} +116 -2
- package/dist/{package-version--oQiHwZj.mjs → package-version-P4TT_9IO.mjs} +1 -1
- package/dist/{prompt-references-DW5vG5zs.mjs → prompt-references-Ca2Rcrpw.mjs} +2 -2
- package/dist/{retrieval-digest-DYEsIeCE.d.mts → retrieval-digest-DT9Ktc4C.d.mts} +2 -2
- package/dist/{review-C_5wB0rR.mjs → review-DgaNTtP0.mjs} +8 -8
- package/dist/{robots-NQesPX5L.mjs → robots-DNod0XKB.mjs} +1 -1
- package/dist/{robots-BQ42Y84a.mjs → robots-msD1xoH5.mjs} +4 -4
- package/dist/{search-B5etKU-v.mjs → search-CNzq9S5S.mjs} +7 -6
- package/dist/server.d.mts +92 -7
- package/dist/server.mjs +9 -7
- package/dist/{sidebar-CwZlgyAz.d.mts → sidebar-DmXRpAAK.d.mts} +1 -1
- package/dist/{sitemap-DjhxvQP1.mjs → sitemap-CHvips7o.mjs} +8 -7
- package/dist/{sitemap-server-B0SiREN0.mjs → sitemap-server-C2TauhKa.mjs} +11 -1
- package/dist/{skills-BFang8vF.mjs → skills-aaE5L1go.mjs} +8 -7
- package/dist/{standards-discovery-D1Ys4J3h.d.mts → standards-discovery-Cqq8QmlH.d.mts} +1 -1
- package/dist/{types-DLLefoU5.d.mts → types-BthCiAD9.d.mts} +114 -1
- package/dist/{upgrade-kj2crJSk.mjs → upgrade-B0OA_7jE.mjs} +2 -2
- package/package.json +1 -1
- /package/dist/{agent-skills-progressive-disclosure-Da9LKEKv.mjs → agent-skills-progressive-disclosure-CfIsq4Ew.mjs} +0 -0
- /package/dist/{audience-exposure-Cw3SA4WE.d.mts → audience-exposure-BW13cI2O.d.mts} +0 -0
- /package/dist/{cloud-ask-ai-CkCYjf2N.mjs → cloud-ask-ai-DeojA5lB.mjs} +0 -0
- /package/dist/{config-BaTmjDqD.mjs → config-BhF6J2N4.mjs} +0 -0
- /package/dist/{errors-DZiNXv5c.mjs → errors-B5KTe1Xo.mjs} +0 -0
- /package/dist/{templates-kc7jxspR.mjs → templates-m_j4ARnu.mjs} +0 -0
- /package/dist/{utils-DOMeZW9V.mjs → utils-DcCUwxqS.mjs} +0 -0
package/dist/cli/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { i as wasCliErrorReported, r as shouldPrintStackTrace, t as formatCliError } from "../errors-
|
|
2
|
+
import { i as wasCliErrorReported, r as shouldPrintStackTrace, t as formatCliError } from "../errors-B5KTe1Xo.mjs";
|
|
3
3
|
import pc from "picocolors";
|
|
4
4
|
|
|
5
5
|
//#region src/cli/index.ts
|
|
@@ -32,7 +32,9 @@ function parseFlags(argv) {
|
|
|
32
32
|
"analytics",
|
|
33
33
|
"ask-ai",
|
|
34
34
|
"deploy",
|
|
35
|
-
"dry-run"
|
|
35
|
+
"dry-run",
|
|
36
|
+
"write",
|
|
37
|
+
"allow-publish"
|
|
36
38
|
]);
|
|
37
39
|
for (let i = 0; i < argv.length; i++) {
|
|
38
40
|
const arg = argv[i];
|
|
@@ -70,6 +72,12 @@ async function main() {
|
|
|
70
72
|
client: typeof flags.client === "string" ? flags.client : void 0,
|
|
71
73
|
json: typeof flags.json === "boolean" ? flags.json : void 0
|
|
72
74
|
};
|
|
75
|
+
const authoringMcpOptions = {
|
|
76
|
+
configPath: typeof flags.config === "string" ? flags.config : void 0,
|
|
77
|
+
allowPublish: typeof flags["allow-publish"] === "boolean" ? flags["allow-publish"] : void 0,
|
|
78
|
+
branchPrefix: typeof flags["branch-prefix"] === "string" ? flags["branch-prefix"] : void 0,
|
|
79
|
+
baseBranch: typeof flags["base-branch"] === "string" ? flags["base-branch"] : void 0
|
|
80
|
+
};
|
|
73
81
|
const devOptions = {
|
|
74
82
|
verbose: typeof flags.verbose === "boolean" ? flags.verbose : void 0,
|
|
75
83
|
port: typeof flags.port === "string" ? flags.port : void 0,
|
|
@@ -108,43 +116,54 @@ async function main() {
|
|
|
108
116
|
]
|
|
109
117
|
};
|
|
110
118
|
if (!parsedCommand.command || parsedCommand.command === "init") {
|
|
111
|
-
const { init } = await import("../init-
|
|
119
|
+
const { init } = await import("../init-DKukQdOQ.mjs");
|
|
112
120
|
await init(initOptions);
|
|
113
121
|
} else if (parsedCommand.command === "dev") {
|
|
114
|
-
const { dev } = await import("../dev-
|
|
122
|
+
const { dev } = await import("../dev-B0iHJjTz.mjs");
|
|
115
123
|
await dev(devOptions);
|
|
116
124
|
} else if (parsedCommand.command === "deploy") {
|
|
117
|
-
const { runCloudDeploy } = await import("../cloud-
|
|
125
|
+
const { runCloudDeploy } = await import("../cloud-BLxt_HYO.mjs");
|
|
118
126
|
await runCloudDeploy(cloudOptions);
|
|
119
127
|
} else if (parsedCommand.command === "preview") {
|
|
120
|
-
const { runCloudPreview } = await import("../cloud-
|
|
128
|
+
const { runCloudPreview } = await import("../cloud-BLxt_HYO.mjs");
|
|
121
129
|
await runCloudPreview(cloudOptions);
|
|
122
130
|
} else if (parsedCommand.command === "cloud" && subcommand === "deploy") {
|
|
123
|
-
const { runCloudDeploy } = await import("../cloud-
|
|
131
|
+
const { runCloudDeploy } = await import("../cloud-BLxt_HYO.mjs");
|
|
124
132
|
await runCloudDeploy(cloudOptions);
|
|
125
133
|
} else if (parsedCommand.command === "cloud" && subcommand === "preview") {
|
|
126
|
-
const { runCloudPreview } = await import("../cloud-
|
|
134
|
+
const { runCloudPreview } = await import("../cloud-BLxt_HYO.mjs");
|
|
127
135
|
await runCloudPreview(cloudOptions);
|
|
128
136
|
} else if (parsedCommand.command === "cloud" && subcommand === "init") {
|
|
129
|
-
const { runCloudInit } = await import("../cloud-
|
|
137
|
+
const { runCloudInit } = await import("../cloud-BLxt_HYO.mjs");
|
|
130
138
|
await runCloudInit(cloudOptions);
|
|
131
139
|
} else if (parsedCommand.command === "cloud" && subcommand === "sync") {
|
|
132
|
-
const { syncCloudConfig } = await import("../cloud-
|
|
140
|
+
const { syncCloudConfig } = await import("../cloud-BLxt_HYO.mjs");
|
|
133
141
|
await syncCloudConfig(cloudOptions);
|
|
134
142
|
} else if (parsedCommand.command === "cloud" && subcommand === "check") {
|
|
135
|
-
const { runCloudCheck } = await import("../cloud-
|
|
143
|
+
const { runCloudCheck } = await import("../cloud-BLxt_HYO.mjs");
|
|
136
144
|
await runCloudCheck(cloudOptions);
|
|
137
145
|
} else if (parsedCommand.command === "cloud") {
|
|
138
146
|
console.error(pc.red(`Unknown cloud subcommand: ${subcommand ?? "(missing)"}`));
|
|
139
147
|
console.error();
|
|
140
|
-
const { printCloudHelp } = await import("../cloud-
|
|
148
|
+
const { printCloudHelp } = await import("../cloud-BLxt_HYO.mjs");
|
|
141
149
|
printCloudHelp();
|
|
142
150
|
process.exit(1);
|
|
151
|
+
} else if (parsedCommand.command === "mcp" && subcommand === "author") {
|
|
152
|
+
const { runAuthoringMcp } = await import("../authoring-BsWXMH43.mjs");
|
|
153
|
+
await runAuthoringMcp(authoringMcpOptions);
|
|
143
154
|
} else if (parsedCommand.command === "mcp") {
|
|
144
|
-
const { runMcp } = await import("../mcp-
|
|
155
|
+
const { runMcp } = await import("../mcp-B6ZZdp6F.mjs");
|
|
145
156
|
await runMcp(mcpOptions);
|
|
157
|
+
} else if (parsedCommand.command === "agent" && subcommand === "feedback") {
|
|
158
|
+
const { parseAgentFeedbackImproveArgs, printAgentFeedbackImproveHelp, runAgentFeedbackImprove } = await import("../feedback-DdWc33oO.mjs");
|
|
159
|
+
const feedbackOptions = parseAgentFeedbackImproveArgs(args.slice(2));
|
|
160
|
+
if (feedbackOptions.help) {
|
|
161
|
+
printAgentFeedbackImproveHelp();
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
await runAgentFeedbackImprove(feedbackOptions);
|
|
146
165
|
} else if (parsedCommand.command === "agent" && subcommand === "compact") {
|
|
147
|
-
const { compactAgentDocs, parseAgentCompactArgs, printAgentCompactHelp } = await import("../agent-
|
|
166
|
+
const { compactAgentDocs, parseAgentCompactArgs, printAgentCompactHelp } = await import("../agent-NerpHcQB.mjs").then((n) => n.t);
|
|
148
167
|
const agentCompactOptions = parseAgentCompactArgs(args.slice(2));
|
|
149
168
|
if (agentCompactOptions.help) {
|
|
150
169
|
printAgentCompactHelp();
|
|
@@ -152,7 +171,7 @@ async function main() {
|
|
|
152
171
|
}
|
|
153
172
|
await compactAgentDocs(agentCompactOptions);
|
|
154
173
|
} else if (parsedCommand.command === "agent" && subcommand === "export") {
|
|
155
|
-
const { exportAgentBundle, parseAgentExportArgs, printAgentExportHelp } = await import("../agent-export-
|
|
174
|
+
const { exportAgentBundle, parseAgentExportArgs, printAgentExportHelp } = await import("../agent-export-DlBUKkTt.mjs");
|
|
156
175
|
const agentExportOptions = parseAgentExportArgs(args.slice(2));
|
|
157
176
|
if (agentExportOptions.help) {
|
|
158
177
|
printAgentExportHelp();
|
|
@@ -162,13 +181,15 @@ async function main() {
|
|
|
162
181
|
} else if (parsedCommand.command === "agent") {
|
|
163
182
|
console.error(pc.red(`Unknown agent subcommand: ${subcommand ?? "(missing)"}`));
|
|
164
183
|
console.error();
|
|
165
|
-
const { printAgentCompactHelp } = await import("../agent-
|
|
166
|
-
const { printAgentExportHelp } = await import("../agent-export-
|
|
184
|
+
const { printAgentCompactHelp } = await import("../agent-NerpHcQB.mjs").then((n) => n.t);
|
|
185
|
+
const { printAgentExportHelp } = await import("../agent-export-DlBUKkTt.mjs");
|
|
186
|
+
const { printAgentFeedbackImproveHelp } = await import("../feedback-DdWc33oO.mjs");
|
|
167
187
|
printAgentCompactHelp();
|
|
168
188
|
printAgentExportHelp();
|
|
189
|
+
printAgentFeedbackImproveHelp();
|
|
169
190
|
process.exit(1);
|
|
170
191
|
} else if (parsedCommand.command === "agents" && subcommand === "generate") {
|
|
171
|
-
const { generateAgents, parseAgentsGenerateArgs, printAgentsGenerateHelp } = await import("../agents-
|
|
192
|
+
const { generateAgents, parseAgentsGenerateArgs, printAgentsGenerateHelp } = await import("../agents-D3SLnQet.mjs");
|
|
172
193
|
const agentsOptions = parseAgentsGenerateArgs(args.slice(2));
|
|
173
194
|
if (agentsOptions.help) {
|
|
174
195
|
printAgentsGenerateHelp();
|
|
@@ -178,11 +199,11 @@ async function main() {
|
|
|
178
199
|
} else if (parsedCommand.command === "agents") {
|
|
179
200
|
console.error(pc.red(`Unknown agents subcommand: ${subcommand ?? "(missing)"}`));
|
|
180
201
|
console.error();
|
|
181
|
-
const { printAgentsGenerateHelp } = await import("../agents-
|
|
202
|
+
const { printAgentsGenerateHelp } = await import("../agents-D3SLnQet.mjs");
|
|
182
203
|
printAgentsGenerateHelp();
|
|
183
204
|
process.exit(1);
|
|
184
205
|
} else if (parsedCommand.command === "skills" && subcommand === "scaffold") {
|
|
185
|
-
const { parseSkillScaffoldArgs, printSkillScaffoldHelp, scaffoldSkillFromContracts } = await import("../skills-
|
|
206
|
+
const { parseSkillScaffoldArgs, printSkillScaffoldHelp, scaffoldSkillFromContracts } = await import("../skills-aaE5L1go.mjs");
|
|
186
207
|
const skillOptions = parseSkillScaffoldArgs(args.slice(2));
|
|
187
208
|
if (skillOptions.help) {
|
|
188
209
|
printSkillScaffoldHelp();
|
|
@@ -190,16 +211,16 @@ async function main() {
|
|
|
190
211
|
}
|
|
191
212
|
await scaffoldSkillFromContracts(skillOptions);
|
|
192
213
|
} else if (parsedCommand.command === "skills" && (subcommand === "--help" || subcommand === "-h")) {
|
|
193
|
-
const { printSkillScaffoldHelp } = await import("../skills-
|
|
214
|
+
const { printSkillScaffoldHelp } = await import("../skills-aaE5L1go.mjs");
|
|
194
215
|
printSkillScaffoldHelp();
|
|
195
216
|
} else if (parsedCommand.command === "skills") {
|
|
196
217
|
console.error(pc.red(`Unknown skills subcommand: ${subcommand ?? "(missing)"}`));
|
|
197
218
|
console.error();
|
|
198
|
-
const { printSkillScaffoldHelp } = await import("../skills-
|
|
219
|
+
const { printSkillScaffoldHelp } = await import("../skills-aaE5L1go.mjs");
|
|
199
220
|
printSkillScaffoldHelp();
|
|
200
221
|
process.exit(1);
|
|
201
222
|
} else if (parsedCommand.command === "doctor") {
|
|
202
|
-
const { parseDoctorArgs, printDoctorHelp, runDoctor } = await import("../doctor-
|
|
223
|
+
const { parseDoctorArgs, printDoctorHelp, runDoctor } = await import("../doctor-x3k6aE2I.mjs");
|
|
203
224
|
const doctorOptions = parseDoctorArgs(args.slice(1));
|
|
204
225
|
if (doctorOptions.help) {
|
|
205
226
|
printDoctorHelp();
|
|
@@ -207,7 +228,7 @@ async function main() {
|
|
|
207
228
|
}
|
|
208
229
|
await runDoctor(doctorOptions);
|
|
209
230
|
} else if (parsedCommand.command === "review") {
|
|
210
|
-
const { parseReviewArgs, printReviewHelp, runReview } = await import("../review-
|
|
231
|
+
const { parseReviewArgs, printReviewHelp, runReview } = await import("../review-DgaNTtP0.mjs");
|
|
211
232
|
const reviewOptions = parseReviewArgs(args.slice(1));
|
|
212
233
|
if (reviewOptions.help) {
|
|
213
234
|
printReviewHelp();
|
|
@@ -215,7 +236,7 @@ async function main() {
|
|
|
215
236
|
}
|
|
216
237
|
await runReview(reviewOptions);
|
|
217
238
|
} else if ((parsedCommand.command === "codeblocks" || parsedCommand.command === "code-blocks") && subcommand === "validate") {
|
|
218
|
-
const { parseCodeBlocksValidateArgs, printCodeBlocksValidateHelp, runCodeBlocksValidate } = await import("../codeblocks-
|
|
239
|
+
const { parseCodeBlocksValidateArgs, printCodeBlocksValidateHelp, runCodeBlocksValidate } = await import("../codeblocks-qHdKGVaE.mjs");
|
|
219
240
|
const codeBlocksOptions = parseCodeBlocksValidateArgs(args.slice(2));
|
|
220
241
|
if (codeBlocksOptions.help) {
|
|
221
242
|
printCodeBlocksValidateHelp();
|
|
@@ -225,11 +246,11 @@ async function main() {
|
|
|
225
246
|
} else if (parsedCommand.command === "codeblocks" || parsedCommand.command === "code-blocks") {
|
|
226
247
|
console.error(pc.red(`Unknown codeblocks subcommand: ${subcommand ?? "(missing)"}`));
|
|
227
248
|
console.error();
|
|
228
|
-
const { printCodeBlocksValidateHelp } = await import("../codeblocks-
|
|
249
|
+
const { printCodeBlocksValidateHelp } = await import("../codeblocks-qHdKGVaE.mjs");
|
|
229
250
|
printCodeBlocksValidateHelp();
|
|
230
251
|
process.exit(1);
|
|
231
252
|
} else if (parsedCommand.command === "search" && subcommand === "sync") {
|
|
232
|
-
const { syncSearch } = await import("../search-
|
|
253
|
+
const { syncSearch } = await import("../search-CNzq9S5S.mjs");
|
|
233
254
|
await syncSearch(searchSyncOptions);
|
|
234
255
|
} else if (parsedCommand.command === "search") {
|
|
235
256
|
console.error(pc.red(`Unknown search subcommand: ${subcommand ?? "(missing)"}`));
|
|
@@ -237,7 +258,7 @@ async function main() {
|
|
|
237
258
|
printHelp();
|
|
238
259
|
process.exit(1);
|
|
239
260
|
} else if (parsedCommand.command === "sitemap" && subcommand === "generate") {
|
|
240
|
-
const { generateSitemap, parseSitemapGenerateArgs, printSitemapGenerateHelp } = await import("../sitemap-
|
|
261
|
+
const { generateSitemap, parseSitemapGenerateArgs, printSitemapGenerateHelp } = await import("../sitemap-CHvips7o.mjs");
|
|
241
262
|
const sitemapOptions = parseSitemapGenerateArgs(args.slice(2));
|
|
242
263
|
if (sitemapOptions.help) {
|
|
243
264
|
printSitemapGenerateHelp();
|
|
@@ -247,11 +268,11 @@ async function main() {
|
|
|
247
268
|
} else if (parsedCommand.command === "sitemap") {
|
|
248
269
|
console.error(pc.red(`Unknown sitemap subcommand: ${subcommand ?? "(missing)"}`));
|
|
249
270
|
console.error();
|
|
250
|
-
const { printSitemapGenerateHelp } = await import("../sitemap-
|
|
271
|
+
const { printSitemapGenerateHelp } = await import("../sitemap-CHvips7o.mjs");
|
|
251
272
|
printSitemapGenerateHelp();
|
|
252
273
|
process.exit(1);
|
|
253
274
|
} else if (parsedCommand.command === "robots" && subcommand === "generate") {
|
|
254
|
-
const { generateRobots, parseRobotsGenerateArgs, printRobotsGenerateHelp } = await import("../robots-
|
|
275
|
+
const { generateRobots, parseRobotsGenerateArgs, printRobotsGenerateHelp } = await import("../robots-msD1xoH5.mjs");
|
|
255
276
|
const robotsOptions = parseRobotsGenerateArgs(args.slice(2));
|
|
256
277
|
if (robotsOptions.help) {
|
|
257
278
|
printRobotsGenerateHelp();
|
|
@@ -261,11 +282,11 @@ async function main() {
|
|
|
261
282
|
} else if (parsedCommand.command === "robots") {
|
|
262
283
|
console.error(pc.red(`Unknown robots subcommand: ${subcommand ?? "(missing)"}`));
|
|
263
284
|
console.error();
|
|
264
|
-
const { printRobotsGenerateHelp } = await import("../robots-
|
|
285
|
+
const { printRobotsGenerateHelp } = await import("../robots-msD1xoH5.mjs");
|
|
265
286
|
printRobotsGenerateHelp();
|
|
266
287
|
process.exit(1);
|
|
267
288
|
} else if (parsedCommand.command === "downgrade") {
|
|
268
|
-
const { downgrade } = await import("../downgrade-
|
|
289
|
+
const { downgrade } = await import("../downgrade-Dd3vvVdD.mjs");
|
|
269
290
|
const framework = (typeof flags.framework === "string" ? flags.framework : void 0) ?? (args[1] && !args[1].startsWith("--") ? args[1] : void 0);
|
|
270
291
|
const hasVersionFlag = args.includes("--version") || args.some((arg) => arg.startsWith("--version="));
|
|
271
292
|
await downgrade({
|
|
@@ -274,7 +295,7 @@ async function main() {
|
|
|
274
295
|
dryRun: flags["dry-run"] === true
|
|
275
296
|
});
|
|
276
297
|
} else if (parsedCommand.command === "upgrade") {
|
|
277
|
-
const { upgrade } = await import("../upgrade-
|
|
298
|
+
const { upgrade } = await import("../upgrade-B0OA_7jE.mjs");
|
|
278
299
|
const framework = (typeof flags.framework === "string" ? flags.framework : void 0) ?? (args[1] && !args[1].startsWith("--") ? args[1] : void 0);
|
|
279
300
|
const hasVersionFlag = args.includes("--version") || args.some((arg) => arg.startsWith("--version="));
|
|
280
301
|
const version = typeof flags.version === "string" ? flags.version : hasVersionFlag ? "" : void 0;
|
|
@@ -306,13 +327,13 @@ ${pc.dim("Commands:")}
|
|
|
306
327
|
${pc.cyan("deploy")} Sync cloud config and deploy hosted preview docs
|
|
307
328
|
${pc.cyan("preview")} Alias for ${pc.cyan("deploy")}
|
|
308
329
|
${pc.cyan("cloud")} Docs Cloud utilities (${pc.dim("init")}, ${pc.dim("check")}, ${pc.dim("deploy")}, ${pc.dim("preview")}, ${pc.dim("sync")})
|
|
309
|
-
${pc.cyan("agent")} Agent utilities (${pc.dim("compact")}
|
|
330
|
+
${pc.cyan("agent")} Agent utilities (${pc.dim("compact")}, ${pc.dim("export")}, ${pc.dim("feedback")})
|
|
310
331
|
${pc.cyan("agents")} AGENTS.md utilities (${pc.dim("generate")} for static agent instructions)
|
|
311
332
|
${pc.cyan("skills")} Agent Skills utilities (${pc.dim("scaffold")} from structured page contracts)
|
|
312
333
|
${pc.cyan("doctor")} Inspect and score agent or reader-facing docs quality
|
|
313
334
|
${pc.cyan("review")} Review changed docs files and wire Docs Review CI
|
|
314
335
|
${pc.cyan("codeblocks")} Validate fenced MDX code blocks (${pc.dim("validate")})
|
|
315
|
-
${pc.cyan("mcp")} Run
|
|
336
|
+
${pc.cyan("mcp")} Run read-only docs MCP or the separate protected authoring server
|
|
316
337
|
${pc.cyan("robots")} Robots.txt utilities (${pc.dim("generate")} for agent access policy)
|
|
317
338
|
${pc.cyan("search")} Search utilities (${pc.dim("sync")} for external indexes)
|
|
318
339
|
${pc.cyan("sitemap")} Sitemap utilities (${pc.dim("generate")} for sitemap XML/Markdown data)
|
|
@@ -339,6 +360,10 @@ ${pc.dim("Options for mcp:")}
|
|
|
339
360
|
${pc.cyan("--api-base-url <url>")} Override the hosted Docs Cloud API base URL for ${pc.cyan("mcp setup")}
|
|
340
361
|
${pc.cyan("--client <name>")} Emit native config for ${pc.dim("claude-code")}, ${pc.dim("cursor")}, or ${pc.dim("vscode")}
|
|
341
362
|
${pc.cyan("--json")} Print the selected MCP client JSON only for ${pc.cyan("mcp setup")}
|
|
363
|
+
${pc.cyan("mcp author")} Run the local docs-authoring MCP over stdio
|
|
364
|
+
${pc.cyan("--branch-prefix <p>")} Restrict authoring branches (default: ${pc.dim("docs/")})
|
|
365
|
+
${pc.cyan("--base-branch <name>")} Set the base used for authoring draft PRs
|
|
366
|
+
${pc.cyan("--allow-publish")} Explicitly register commit, push, and draft-PR publishing
|
|
342
367
|
|
|
343
368
|
${pc.dim("Options for dev:")}
|
|
344
369
|
${pc.cyan("--port <number>")} Run the frameworkless preview on a custom port
|
|
@@ -383,6 +408,13 @@ ${pc.dim("Options for agent export:")}
|
|
|
383
408
|
${pc.cyan("agent export --check")} Fail when the static Agent Bundle is stale
|
|
384
409
|
${pc.cyan("--config <path>")} Use a custom docs config path instead of ${pc.dim("docs.config.ts[x]")}
|
|
385
410
|
|
|
411
|
+
${pc.dim("Options for agent feedback:")}
|
|
412
|
+
${pc.cyan("agent feedback --input <path>")} Cluster JSON or JSONL agent feedback into improvement drafts
|
|
413
|
+
${pc.cyan("--min-occurrences <2-100>")} Recurrence threshold (default: 2)
|
|
414
|
+
${pc.cyan("--write")} Write the report to ${pc.dim(".farming-labs/agent-feedback-improvements.json")}
|
|
415
|
+
${pc.cyan("--output <path>")} Override the written report path
|
|
416
|
+
${pc.cyan("--json")} Print JSON while writing
|
|
417
|
+
|
|
386
418
|
${pc.dim("Options for skills scaffold:")}
|
|
387
419
|
${pc.cyan("skills scaffold [name]")} Compile page agent contracts into a compact ${pc.dim("SKILL.md")} router and focused references
|
|
388
420
|
${pc.cyan("--output <directory>")} Write to a full skill directory; defaults to ${pc.dim("skills/<name>")}
|
package/dist/client/react.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { n as markCliErrorReported } from "./errors-
|
|
2
|
-
import { _ as resolveDocsContentDir, a as loadDocsConfigModule, c as loadProjectEnv, d as readNavTitle, g as resolveDocsConfigPath, h as readTopLevelStringProperty, m as readTopLevelBooleanProperty, p as readStringProperty, t as extractNestedObjectLiteral } from "./config-
|
|
3
|
-
import { i as detectPackageManagerFromProject, t as detectFramework } from "./utils-
|
|
1
|
+
import { n as markCliErrorReported } from "./errors-B5KTe1Xo.mjs";
|
|
2
|
+
import { _ as resolveDocsContentDir, a as loadDocsConfigModule, c as loadProjectEnv, d as readNavTitle, g as resolveDocsConfigPath, h as readTopLevelStringProperty, m as readTopLevelBooleanProperty, p as readStringProperty, t as extractNestedObjectLiteral } from "./config-BhF6J2N4.mjs";
|
|
3
|
+
import { i as detectPackageManagerFromProject, t as detectFramework } from "./utils-DcCUwxqS.mjs";
|
|
4
4
|
import fs from "node:fs";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import { execFileSync } from "node:child_process";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Et as DocsCloudConfig, ft as DocsAnalyticsConfig, t as AIConfig } from "./types-
|
|
1
|
+
import { Et as DocsCloudConfig, ft as DocsAnalyticsConfig, t as AIConfig } from "./types-BthCiAD9.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/cloud-ask-ai.d.ts
|
|
4
4
|
interface DocsCloudAskAIConfig {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { existsSync, mkdtempSync, readFileSync, readdirSync, rmSync, statSync, writeFileSync } from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { execFile } from "node:child_process";
|
|
4
|
-
import { tmpdir } from "node:os";
|
|
5
4
|
import { promisify } from "node:util";
|
|
5
|
+
import { tmpdir } from "node:os";
|
|
6
6
|
|
|
7
7
|
//#region src/code-blocks.ts
|
|
8
8
|
const execFileAsync = promisify(execFile);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as validateCodeBlocks, r as resolveDocsCodeBlocksValidateConfig } from "./code-blocks-
|
|
2
|
-
import { _ as resolveDocsContentDir, a as loadDocsConfigModule, f as readNumberProperty, g as resolveDocsConfigPath, h as readTopLevelStringProperty, l as readBooleanProperty, p as readStringProperty, t as extractNestedObjectLiteral } from "./config-
|
|
1
|
+
import { a as validateCodeBlocks, r as resolveDocsCodeBlocksValidateConfig } from "./code-blocks-c3nIrWOM.mjs";
|
|
2
|
+
import { _ as resolveDocsContentDir, a as loadDocsConfigModule, f as readNumberProperty, g as resolveDocsConfigPath, h as readTopLevelStringProperty, l as readBooleanProperty, p as readStringProperty, t as extractNestedObjectLiteral } from "./config-BhF6J2N4.mjs";
|
|
3
3
|
import { existsSync, readFileSync } from "node:fs";
|
|
4
4
|
import pc from "picocolors";
|
|
5
5
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { i as detectPackageManagerFromProject } from "./utils-
|
|
2
|
-
import { $ as postcssConfigTemplate, C as globalCssTemplate, g as docsLayoutTemplate, kt as tsconfigTemplate, tt as rootLayoutTemplate } from "./templates-
|
|
1
|
+
import { i as detectPackageManagerFromProject } from "./utils-DcCUwxqS.mjs";
|
|
2
|
+
import { $ as postcssConfigTemplate, C as globalCssTemplate, g as docsLayoutTemplate, kt as tsconfigTemplate, tt as rootLayoutTemplate } from "./templates-m_j4ARnu.mjs";
|
|
3
3
|
import fs from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { spawn } from "node:child_process";
|
|
6
|
+
import { z } from "zod";
|
|
6
7
|
import os from "node:os";
|
|
7
8
|
import pc from "picocolors";
|
|
8
9
|
import { fileURLToPath } from "node:url";
|
|
9
|
-
import { z } from "zod";
|
|
10
10
|
|
|
11
11
|
//#region src/cli/dev-banner.ts
|
|
12
12
|
function createDevLogger() {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ft as DocsAnalyticsConfig, mt as DocsAnalyticsEventInput, pt as DocsAnalyticsEvent } from "./types-
|
|
2
|
-
import { n as DocsCloudAskAIResponseOptions, t as DocsCloudAskAIConfig } from "./cloud-ask-ai-
|
|
1
|
+
import { ft as DocsAnalyticsConfig, mt as DocsAnalyticsEventInput, pt as DocsAnalyticsEvent } from "./types-BthCiAD9.mjs";
|
|
2
|
+
import { n as DocsCloudAskAIResponseOptions, t as DocsCloudAskAIConfig } from "./cloud-ask-ai-19G2HJ62.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/docs-cloud-server.d.ts
|
|
5
5
|
type DocsCloudRuntimeValue<T = string> = T | undefined | null | (() => T | undefined | null);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as sendDocsCloudAnalyticsEvent } from "./cloud-analytics-CSyFE6SS.mjs";
|
|
2
|
-
import { t as createDocsCloudAskAIResponse } from "./cloud-ask-ai-
|
|
2
|
+
import { t as createDocsCloudAskAIResponse } from "./cloud-ask-ai-DeojA5lB.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/docs-cloud-server.ts
|
|
5
5
|
const DEFAULT_DOCS_CLOUD_API_BASE_URL = "https://api.farming-labs.dev";
|
|
@@ -1,22 +1,23 @@
|
|
|
1
|
-
import { i as scanDocsPageTargets, n as compactAgentDocs, r as inspectAgentCompactionState } from "./agent-
|
|
2
|
-
import { d as httpLinkHeaderHasTargetRelation, f as AGENT_SKILL_ARCHIVE_MAX_UNCOMPRESSED_BYTES, p as readAgentSkillDocumentFromTar } from "./prompt-references-
|
|
3
|
-
import { A as buildDocsAgentDiscoverySpec, At as DEFAULT_SITEMAP_XML_ROUTE, Bn as DEFAULT_MCP_PUBLIC_ROUTE, F as buildDocsMcpEndpointCandidates, Hn as DEFAULT_MCP_WELL_KNOWN_ROUTE, It as resolveDocsSitemapConfig, M as buildDocsConfigMap, Ot as DEFAULT_SITEMAP_MD_ROUTE, S as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, T as DOCS_CONFIG_MAP_TOP_LEVEL_KEYS, Wn as getDocsMcpProtectedResourceMetadataRoutes, Zn as normalizeDocsMcpAuthorizationServerUrls, c as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, h as DEFAULT_LLMS_FULL_TXT_ROUTE, i as DEFAULT_AGENT_FEEDBACK_ROUTE, kt as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, l as DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, n as DEFAULT_AGENTS_MD_WELL_KNOWN_ROUTE, pn as resolveAskAISearchRequestConfig, qn as isDocsMcpOAuthScopeToken, t as DEFAULT_AGENTS_MD_ROUTE, v as DEFAULT_LLMS_TXT_ROUTE, x as DEFAULT_SKILL_MD_ROUTE } from "./agent-
|
|
1
|
+
import { i as scanDocsPageTargets, n as compactAgentDocs, r as inspectAgentCompactionState } from "./agent-NerpHcQB.mjs";
|
|
2
|
+
import { d as httpLinkHeaderHasTargetRelation, f as AGENT_SKILL_ARCHIVE_MAX_UNCOMPRESSED_BYTES, p as readAgentSkillDocumentFromTar } from "./prompt-references-Ca2Rcrpw.mjs";
|
|
3
|
+
import { A as buildDocsAgentDiscoverySpec, At as DEFAULT_SITEMAP_XML_ROUTE, Bn as DEFAULT_MCP_PUBLIC_ROUTE, F as buildDocsMcpEndpointCandidates, Hn as DEFAULT_MCP_WELL_KNOWN_ROUTE, It as resolveDocsSitemapConfig, M as buildDocsConfigMap, Ot as DEFAULT_SITEMAP_MD_ROUTE, S as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, T as DOCS_CONFIG_MAP_TOP_LEVEL_KEYS, Wn as getDocsMcpProtectedResourceMetadataRoutes, Zn as normalizeDocsMcpAuthorizationServerUrls, c as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, h as DEFAULT_LLMS_FULL_TXT_ROUTE, i as DEFAULT_AGENT_FEEDBACK_ROUTE, kt as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, l as DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, n as DEFAULT_AGENTS_MD_WELL_KNOWN_ROUTE, or as resolveDocsOkfConfig, pn as resolveAskAISearchRequestConfig, qn as isDocsMcpOAuthScopeToken, sr as resolveDocsOkfTrustMetadata, t as DEFAULT_AGENTS_MD_ROUTE, v as DEFAULT_LLMS_TXT_ROUTE, x as DEFAULT_SKILL_MD_ROUTE } from "./agent-PSrgiJD8.mjs";
|
|
4
4
|
import { f as PAGE_AGENT_CONTRACT_FIELDS } from "./markdown-sections-7OoA7ylx.mjs";
|
|
5
5
|
import { I as resolveDocsDiscoveryApiRoute, _ as DEFAULT_API_CATALOG_FORMAT, d as DEFAULT_AGENT_SKILLS_ROUTE_PATTERN, f as DEFAULT_AGENT_SKILLS_ROUTE_PREFIX, h as DEFAULT_AGENT_SKILL_FORMAT, l as DEFAULT_AGENT_SKILLS_INDEX_FORMAT, n as API_CATALOG_MEDIA_TYPE, r as API_CATALOG_PROFILE_URI, t as AGENT_SKILLS_DISCOVERY_SCHEMA_URI, u as DEFAULT_AGENT_SKILLS_INDEX_ROUTE, v as DEFAULT_API_CATALOG_ROUTE } from "./standards-discovery-Ckx0tN7B.mjs";
|
|
6
6
|
import { isDocsAgentSkillName, validateDocsAgentSkillFrontmatter } from "./agent-skills-spec.mjs";
|
|
7
|
-
import "./
|
|
8
|
-
import { a as analyzeDocsRobotsTxt, n as DEFAULT_ROBOTS_TXT_ROUTE, u as resolveDocsRobotsConfig } from "./robots-
|
|
7
|
+
import "./openapi-mcp-B7u7Y0gB.mjs";
|
|
8
|
+
import { a as analyzeDocsRobotsTxt, n as DEFAULT_ROBOTS_TXT_ROUTE, u as resolveDocsRobotsConfig } from "./robots-DNod0XKB.mjs";
|
|
9
9
|
import { a as resolveDocsMetadataBaseUrl } from "./metadata-D4v_R1t5.mjs";
|
|
10
|
-
import "./sitemap-server-
|
|
10
|
+
import "./sitemap-server-C2TauhKa.mjs";
|
|
11
11
|
import { r as resolveConfiguredAgentSkills } from "./agent-skills-server-DFqQyO_V.mjs";
|
|
12
|
-
import { t as runDocsGoldenTasks } from "./agent-evals-
|
|
12
|
+
import { t as runDocsGoldenTasks } from "./agent-evals-U9d_db2u.mjs";
|
|
13
13
|
import { createFilesystemDocsMcpSource, getDocsConfigSchema, resolveDocsMcpConfig } from "./mcp.mjs";
|
|
14
|
-
import "./
|
|
14
|
+
import "./authoring-mcp-BCM5CJbJ.mjs";
|
|
15
|
+
import "./code-blocks-c3nIrWOM.mjs";
|
|
15
16
|
import "./server.mjs";
|
|
16
|
-
import { _ as resolveDocsContentDir, d as readNavTitle, g as resolveDocsConfigPath, h as readTopLevelStringProperty, l as readBooleanProperty, r as extractTopLevelConfigObject, s as loadDocsConfigModuleResultWithProjectEnv, t as extractNestedObjectLiteral, v as resolveDocsProjectRoot } from "./config-
|
|
17
|
-
import { t as detectFramework } from "./utils-
|
|
18
|
-
import { i as createAgentUsefulnessPagesFromMcp, n as analyzeAgentSurfaceDrift, r as analyzeAgentUsefulness, t as resolveGoldenEvaluationInput } from "./golden-evaluations-
|
|
19
|
-
import { t as analyzeConfiguredAgentSkillsProgressiveDisclosure } from "./agent-skills-progressive-disclosure-
|
|
17
|
+
import { _ as resolveDocsContentDir, d as readNavTitle, g as resolveDocsConfigPath, h as readTopLevelStringProperty, l as readBooleanProperty, r as extractTopLevelConfigObject, s as loadDocsConfigModuleResultWithProjectEnv, t as extractNestedObjectLiteral, v as resolveDocsProjectRoot } from "./config-BhF6J2N4.mjs";
|
|
18
|
+
import { t as detectFramework } from "./utils-DcCUwxqS.mjs";
|
|
19
|
+
import { i as createAgentUsefulnessPagesFromMcp, n as analyzeAgentSurfaceDrift, r as analyzeAgentUsefulness, t as resolveGoldenEvaluationInput } from "./golden-evaluations-7k7Akp3R.mjs";
|
|
20
|
+
import { t as analyzeConfiguredAgentSkillsProgressiveDisclosure } from "./agent-skills-progressive-disclosure-CfIsq4Ew.mjs";
|
|
20
21
|
import { existsSync, lstatSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from "node:fs";
|
|
21
22
|
import path from "node:path";
|
|
22
23
|
import { createHash } from "node:crypto";
|
|
@@ -1925,6 +1926,9 @@ async function inspectAgentReadiness(options = {}) {
|
|
|
1925
1926
|
const evaluationCoverage = evaluations.coverage;
|
|
1926
1927
|
const formatDimensionCoverage = (label, dimension) => `${label}: ${dimension.status} (${dimension.measuredTaskCount}/${dimension.totalTaskCount} tasks)`;
|
|
1927
1928
|
checks.push(makeCheck("golden-task-coverage", "Golden evaluation coverage", evaluationCoverage.status === "measured" ? "pass" : "warn", Math.round(evaluationCoverage.coveragePercent / 100 * 5), 5, `${evaluationCoverage.status} coverage across optional confidence dimensions (${evaluationCoverage.measuredTaskDimensions}/${evaluationCoverage.totalTaskDimensions} task-dimensions, ${evaluationCoverage.coveragePercent}%): ${formatDimensionCoverage("safety", evaluationCoverage.dimensions.safety)}; ${formatDimensionCoverage("answer quality", evaluationCoverage.dimensions.answerQuality)}; ${formatDimensionCoverage("executable examples", evaluationCoverage.dimensions.executableExamples)}.`, evaluationCoverage.status === "measured" ? void 0 : "Add golden-task safety expectations, actual-answer assertions, and execute-level example checks so each confidence dimension is measured explicitly."));
|
|
1929
|
+
const okfConfig = resolveDocsOkfConfig(config?.agent?.okf);
|
|
1930
|
+
const staleOkfPages = okfConfig.enabled ? pages.filter((page) => resolveDocsOkfTrustMetadata(page, okfConfig).stale) : [];
|
|
1931
|
+
checks.push(makeCheck("okf-trust", "OKF trust metadata", staleOkfPages.length > 0 ? "warn" : "pass", staleOkfPages.length > 0 ? 1 : 2, 2, !okfConfig.enabled ? "OKF export is optional and not configured." : staleOkfPages.length === 0 ? `OKF v0.2 trust metadata is enabled at ${okfConfig.route}; ${pages.length} page${pages.length === 1 ? "" : "s"} passed the configured staleness policy.` : `${staleOkfPages.length}/${pages.length} OKF document${staleOkfPages.length === 1 ? " is" : "s are"} beyond stale_after.`, staleOkfPages.length > 0 ? "Review or regenerate stale pages, then update okf.verified or stale_after with an auditable timestamp." : void 0));
|
|
1928
1932
|
const hosted = options.url ? await buildHostedAgentChecks(options.url, pages) : void 0;
|
|
1929
1933
|
if (hosted) checks.push(...hosted.checks);
|
|
1930
1934
|
const { score, maxScore } = normalizedDoctorScore(checks.reduce((total, check) => total + check.score, 0), checks.reduce((total, check) => total + check.maxScore, 0));
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { c as fileExists, o as exec, s as execOutput } from "./utils-
|
|
2
|
-
import { a as getPackagesForFramework, c as resolveDocsPackageManager, l as validateUpgradeVersion, r as buildDocsPackageInstallCommand, s as resolveDocsPackageFramework } from "./package-version
|
|
1
|
+
import { c as fileExists, o as exec, s as execOutput } from "./utils-DcCUwxqS.mjs";
|
|
2
|
+
import { a as getPackagesForFramework, c as resolveDocsPackageManager, l as validateUpgradeVersion, r as buildDocsPackageInstallCommand, s as resolveDocsPackageFramework } from "./package-version-P4TT_9IO.mjs";
|
|
3
3
|
import fs from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import pc from "picocolors";
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { n as analyzeDocsAgentFeedback, r as readDocsAgentFeedbackFile } from "./agent-feedback-loop-CGrc-gDW.mjs";
|
|
2
|
+
import { mkdirSync, renameSync, writeFileSync } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import pc from "picocolors";
|
|
5
|
+
|
|
6
|
+
//#region src/cli/feedback.ts
|
|
7
|
+
function parseAgentFeedbackImproveArgs(argv) {
|
|
8
|
+
const options = {};
|
|
9
|
+
for (let index = 0; index < argv.length; index += 1) {
|
|
10
|
+
const argument = argv[index];
|
|
11
|
+
if (argument === "--write") options.write = true;
|
|
12
|
+
else if (argument === "--json") options.json = true;
|
|
13
|
+
else if (argument === "--help" || argument === "-h") options.help = true;
|
|
14
|
+
else if (argument === "--input" || argument === "--output" || argument === "--min-occurrences") {
|
|
15
|
+
const value = argv[index + 1];
|
|
16
|
+
if (!value || value.startsWith("--")) throw new Error(`${argument} requires a value.`);
|
|
17
|
+
index += 1;
|
|
18
|
+
if (argument === "--input") options.input = value;
|
|
19
|
+
else if (argument === "--output") options.output = value;
|
|
20
|
+
else {
|
|
21
|
+
const parsed = Number(value);
|
|
22
|
+
if (!Number.isInteger(parsed) || parsed < 2 || parsed > 100) throw new Error("--min-occurrences must be an integer from 2 through 100.");
|
|
23
|
+
options.minOccurrences = parsed;
|
|
24
|
+
}
|
|
25
|
+
} else throw new Error(`Unknown agent feedback flag: ${argument}`);
|
|
26
|
+
}
|
|
27
|
+
return options;
|
|
28
|
+
}
|
|
29
|
+
function resolveProjectPath(rootDir, value) {
|
|
30
|
+
if (path.isAbsolute(value)) throw new Error("Feedback paths must be project-relative.");
|
|
31
|
+
const candidate = path.resolve(rootDir, value);
|
|
32
|
+
const relative = path.relative(rootDir, candidate);
|
|
33
|
+
if (relative.startsWith("..") || path.isAbsolute(relative)) throw new Error("Feedback paths must stay inside the project root.");
|
|
34
|
+
return candidate;
|
|
35
|
+
}
|
|
36
|
+
function writeReport(outputPath, report) {
|
|
37
|
+
mkdirSync(path.dirname(outputPath), { recursive: true });
|
|
38
|
+
const temporaryPath = `${outputPath}.${process.pid}.tmp`;
|
|
39
|
+
writeFileSync(temporaryPath, `${JSON.stringify(report, null, 2)}\n`, "utf8");
|
|
40
|
+
renameSync(temporaryPath, outputPath);
|
|
41
|
+
}
|
|
42
|
+
async function runAgentFeedbackImprove(options = {}) {
|
|
43
|
+
const rootDir = path.resolve(options.rootDir ?? process.cwd());
|
|
44
|
+
const input = options.input ?? ".farming-labs/agent-feedback.jsonl";
|
|
45
|
+
const output = options.output ?? ".farming-labs/agent-feedback-improvements.json";
|
|
46
|
+
const report = analyzeDocsAgentFeedback(readDocsAgentFeedbackFile(resolveProjectPath(rootDir, input)), { minOccurrences: options.minOccurrences });
|
|
47
|
+
if (options.write) {
|
|
48
|
+
const outputPath = resolveProjectPath(rootDir, output);
|
|
49
|
+
writeReport(outputPath, report);
|
|
50
|
+
if (!options.json) console.log(pc.green(`Wrote ${path.relative(rootDir, outputPath)} with ${report.recurringClusterCount} recurring cluster${report.recurringClusterCount === 1 ? "" : "s"}.`));
|
|
51
|
+
}
|
|
52
|
+
if (options.json || !options.write) console.log(JSON.stringify(report, null, 2));
|
|
53
|
+
return report;
|
|
54
|
+
}
|
|
55
|
+
function printAgentFeedbackImproveHelp() {
|
|
56
|
+
console.log(`${pc.bold("docs agent feedback")} — turn agent feedback into improvement drafts
|
|
57
|
+
|
|
58
|
+
${pc.dim("Usage:")}
|
|
59
|
+
docs agent feedback --input .farming-labs/agent-feedback.jsonl
|
|
60
|
+
docs agent feedback --input feedback.json --write
|
|
61
|
+
|
|
62
|
+
${pc.dim("Options:")}
|
|
63
|
+
${pc.cyan("--input <path>")} JSON array/object or JSON Lines feedback export
|
|
64
|
+
${pc.cyan("--min-occurrences <2-100>")} Recurrence threshold (default: 2)
|
|
65
|
+
${pc.cyan("--write")} Write the improvement report
|
|
66
|
+
${pc.cyan("--output <path>")} Output path (default: .farming-labs/agent-feedback-improvements.json)
|
|
67
|
+
${pc.cyan("--json")} Print JSON when writing
|
|
68
|
+
`);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
//#endregion
|
|
72
|
+
export { parseAgentFeedbackImproveArgs, printAgentFeedbackImproveHelp, runAgentFeedbackImprove };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Cn as findDocsAudienceMdxTags, Mn as normalizeAgentVersion, On as agentVersionConstraintsOverlap, Tn as resolveDocsAudienceMdxContent, kn as normalizeAgentFramework } from "./agent-
|
|
1
|
+
import { Cn as findDocsAudienceMdxTags, Mn as normalizeAgentVersion, On as agentVersionConstraintsOverlap, Tn as resolveDocsAudienceMdxContent, kn as normalizeAgentFramework } from "./agent-PSrgiJD8.mjs";
|
|
2
2
|
import { _ as hasStructuredPageAgentContract, v as normalizePageAgentFrontmatter } from "./markdown-sections-7OoA7ylx.mjs";
|
|
3
|
-
import { t as extractCodeBlocksFromMarkdown } from "./code-blocks-
|
|
3
|
+
import { t as extractCodeBlocksFromMarkdown } from "./code-blocks-c3nIrWOM.mjs";
|
|
4
4
|
import { isMap, isScalar, isSeq, parseDocument } from "yaml";
|
|
5
5
|
import { existsSync, lstatSync, readFileSync, readdirSync } from "node:fs";
|
|
6
6
|
import path from "node:path";
|