@farming-labs/docs 0.2.103 → 0.2.105

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.
Files changed (77) hide show
  1. package/dist/{agent-BLHMoVId.mjs → agent-CaCWThBY.mjs} +4 -4
  2. package/dist/{agent-CFqECAG0.mjs → agent-DCTGj6J7.mjs} +212 -19
  3. package/dist/{agent-evals-GpcaCbRb.mjs → agent-evals-D-sPJfXz.mjs} +5 -5
  4. package/dist/{agent-export-oiWxB5aX.mjs → agent-export-GcTZPLfB.mjs} +30 -17
  5. package/dist/agent-feedback-evaluations-DQCTFegz.mjs +240 -0
  6. package/dist/agent-feedback-loop-vaC-M1sx.mjs +196 -0
  7. package/dist/agent-maintenance-CuZ7iAKq.mjs +289 -0
  8. package/dist/agent-skills-bundle.d.mts +1 -1
  9. package/dist/{agent-skills-progressive-disclosure-Da9LKEKv.mjs → agent-skills-progressive-disclosure-DL-q4JZo.mjs} +1 -1
  10. package/dist/{agent-skills-server-CICMh0zv.d.mts → agent-skills-server-D34054x5.d.mts} +2 -2
  11. package/dist/{agent-skills-server-DFqQyO_V.mjs → agent-skills-server-Ddbf15pY.mjs} +1 -1
  12. package/dist/agent-skills-vite.d.mts +3 -3
  13. package/dist/agent-skills-vite.mjs +2 -2
  14. package/dist/{agents-CtqIUW5I.mjs → agents-e1SYT64z.mjs} +11 -10
  15. package/dist/{analytics-Bx44lg6d.mjs → analytics-CqfcIBdg.mjs} +1 -1
  16. package/dist/{analytics-C75BnTEW.d.mts → analytics-aeXwEvQX.d.mts} +1 -1
  17. package/dist/authoring-Do87QzBd.mjs +41 -0
  18. package/dist/authoring-mcp-Be7quE5R.mjs +380 -0
  19. package/dist/browser.d.mts +3 -3
  20. package/dist/browser.mjs +2 -2
  21. package/dist/cli/index.mjs +103 -35
  22. package/dist/client/react.d.mts +1 -1
  23. package/dist/client/react.mjs +1 -1
  24. package/dist/{cloud-FNfcbfli.mjs → cloud-Bvof6mET.mjs} +3 -3
  25. package/dist/{cloud-ask-ai-BmbZVAT5.d.mts → cloud-ask-ai-BqfiQaNZ.d.mts} +1 -1
  26. package/dist/{cloud-ask-ai-CkCYjf2N.mjs → cloud-ask-ai-CK2qlNns.mjs} +1 -1
  27. package/dist/{code-blocks-Bel6vDqI.mjs → code-blocks-D90CCJFs.mjs} +1 -1
  28. package/dist/{codeblocks-jbWuvtJQ.mjs → codeblocks-C911CdyJ.mjs} +2 -2
  29. package/dist/{agent-lWTq6pgr.d.mts → content-change-hydration-CoYRs3pC.d.mts} +707 -675
  30. package/dist/{dev-BvbYmTLz.mjs → dev-Bx0JNglW.mjs} +3 -3
  31. package/dist/docs-cloud-server.d.mts +2 -2
  32. package/dist/docs-cloud-server.mjs +2 -2
  33. package/dist/{doctor-Bmm0uY98.mjs → doctor-CtK1CRPj.mjs} +20 -16
  34. package/dist/{downgrade-Dqm0rJMy.mjs → downgrade-BXmQMkMy.mjs} +2 -2
  35. package/dist/feedback-DWVUMrxy.mjs +72 -0
  36. package/dist/feedback-evals-k0sFDdms.mjs +146 -0
  37. package/dist/{golden-evaluations-K45fcWGW.mjs → golden-evaluations-De4KwoYr.mjs} +3 -3
  38. package/dist/index.d.mts +236 -9
  39. package/dist/index.mjs +14 -11
  40. package/dist/{init-jDQSo-Or.mjs → init-CCV2eRNB.mjs} +3 -3
  41. package/dist/markdown-rendering.mjs +1 -1
  42. package/dist/{markdown-sections-7OoA7ylx.mjs → markdown-sections-BKy4labo.mjs} +110 -2
  43. package/dist/{mcp-CwgKlbIz.mjs → mcp-DsjWxF7g.mjs} +11 -10
  44. package/dist/mcp.d.mts +20 -5
  45. package/dist/mcp.mjs +538 -56
  46. package/dist/{metadata-D4v_R1t5.mjs → metadata-7htr-Xj_.mjs} +1 -1
  47. package/dist/{content-change-hydration-BsbBXAUi.mjs → openapi-mcp-DQ3xptKo.mjs} +182 -4
  48. package/dist/openapi-mcp-node-vO3IXVGI.mjs +43 -0
  49. package/dist/{package-version--oQiHwZj.mjs → package-version-Ci99L0yo.mjs} +1 -1
  50. package/dist/{prompt-references-DW5vG5zs.mjs → prompt-references-1Wce71c7.mjs} +3 -3
  51. package/dist/propose-DJOiHu9Y.mjs +73 -0
  52. package/dist/retrieval-digest-B-SgtXKK.mjs +177 -0
  53. package/dist/retrieval-digest-DyNRD-mt.d.mts +467 -0
  54. package/dist/{review-C_5wB0rR.mjs → review-XI9FXeos.mjs} +12 -12
  55. package/dist/{robots-NQesPX5L.mjs → robots-BOjWB1ky.mjs} +2 -2
  56. package/dist/{robots-BQ42Y84a.mjs → robots-CzKesbdX.mjs} +6 -6
  57. package/dist/{search-B5etKU-v.mjs → search-DwAoC9X7.mjs} +12 -11
  58. package/dist/server.d.mts +47 -264
  59. package/dist/server.mjs +14 -11
  60. package/dist/{sidebar-CwZlgyAz.d.mts → sidebar-CJze8SBi.d.mts} +1 -1
  61. package/dist/{sitemap-DjhxvQP1.mjs → sitemap-DOaJIKJf.mjs} +11 -10
  62. package/dist/{sitemap-server-B0SiREN0.mjs → sitemap-server-NeVu8W38.mjs} +11 -1
  63. package/dist/{skills-BFang8vF.mjs → skills-BILSESek.mjs} +11 -10
  64. package/dist/{standards-discovery-Ckx0tN7B.mjs → standards-discovery-Bpz90VYq.mjs} +2 -177
  65. package/dist/{standards-discovery-D1Ys4J3h.d.mts → standards-discovery-Xm84bS4M.d.mts} +1 -1
  66. package/dist/{types-DLLefoU5.d.mts → types-QhYMnKvb.d.mts} +148 -2
  67. package/dist/{upgrade-kj2crJSk.mjs → upgrade-B92U83xo.mjs} +2 -2
  68. package/package.json +1 -1
  69. package/dist/retrieval-digest-DYEsIeCE.d.mts +0 -164
  70. /package/dist/{audience-exposure-Cw3SA4WE.d.mts → audience-exposure-CkNZNeVX.d.mts} +0 -0
  71. /package/dist/{cloud-analytics-CSyFE6SS.mjs → cloud-analytics-Ci1yiwD8.mjs} +0 -0
  72. /package/dist/{config-BaTmjDqD.mjs → config-DrZ3fXgf.mjs} +0 -0
  73. /package/dist/{errors-DZiNXv5c.mjs → errors-BDmra6mz.mjs} +0 -0
  74. /package/dist/{i18n-B3BIxShC.mjs → i18n-B1gJ9EW0.mjs} +0 -0
  75. /package/dist/{sidebar-IcpElOVH.mjs → sidebar-3W51s2sF.mjs} +0 -0
  76. /package/dist/{templates-kc7jxspR.mjs → templates-DdB4BBGq.mjs} +0 -0
  77. /package/dist/{utils-DOMeZW9V.mjs → utils-Cc1SrVza.mjs} +0 -0
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { i as wasCliErrorReported, r as shouldPrintStackTrace, t as formatCliError } from "../errors-DZiNXv5c.mjs";
2
+ import { i as wasCliErrorReported, r as shouldPrintStackTrace, t as formatCliError } from "../errors-BDmra6mz.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,70 @@ async function main() {
108
116
  ]
109
117
  };
110
118
  if (!parsedCommand.command || parsedCommand.command === "init") {
111
- const { init } = await import("../init-jDQSo-Or.mjs");
119
+ const { init } = await import("../init-CCV2eRNB.mjs");
112
120
  await init(initOptions);
113
121
  } else if (parsedCommand.command === "dev") {
114
- const { dev } = await import("../dev-BvbYmTLz.mjs");
122
+ const { dev } = await import("../dev-Bx0JNglW.mjs");
115
123
  await dev(devOptions);
116
124
  } else if (parsedCommand.command === "deploy") {
117
- const { runCloudDeploy } = await import("../cloud-FNfcbfli.mjs");
125
+ const { runCloudDeploy } = await import("../cloud-Bvof6mET.mjs");
118
126
  await runCloudDeploy(cloudOptions);
119
127
  } else if (parsedCommand.command === "preview") {
120
- const { runCloudPreview } = await import("../cloud-FNfcbfli.mjs");
128
+ const { runCloudPreview } = await import("../cloud-Bvof6mET.mjs");
121
129
  await runCloudPreview(cloudOptions);
122
130
  } else if (parsedCommand.command === "cloud" && subcommand === "deploy") {
123
- const { runCloudDeploy } = await import("../cloud-FNfcbfli.mjs");
131
+ const { runCloudDeploy } = await import("../cloud-Bvof6mET.mjs");
124
132
  await runCloudDeploy(cloudOptions);
125
133
  } else if (parsedCommand.command === "cloud" && subcommand === "preview") {
126
- const { runCloudPreview } = await import("../cloud-FNfcbfli.mjs");
134
+ const { runCloudPreview } = await import("../cloud-Bvof6mET.mjs");
127
135
  await runCloudPreview(cloudOptions);
128
136
  } else if (parsedCommand.command === "cloud" && subcommand === "init") {
129
- const { runCloudInit } = await import("../cloud-FNfcbfli.mjs");
137
+ const { runCloudInit } = await import("../cloud-Bvof6mET.mjs");
130
138
  await runCloudInit(cloudOptions);
131
139
  } else if (parsedCommand.command === "cloud" && subcommand === "sync") {
132
- const { syncCloudConfig } = await import("../cloud-FNfcbfli.mjs");
140
+ const { syncCloudConfig } = await import("../cloud-Bvof6mET.mjs");
133
141
  await syncCloudConfig(cloudOptions);
134
142
  } else if (parsedCommand.command === "cloud" && subcommand === "check") {
135
- const { runCloudCheck } = await import("../cloud-FNfcbfli.mjs");
143
+ const { runCloudCheck } = await import("../cloud-Bvof6mET.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-FNfcbfli.mjs");
148
+ const { printCloudHelp } = await import("../cloud-Bvof6mET.mjs");
141
149
  printCloudHelp();
142
150
  process.exit(1);
151
+ } else if (parsedCommand.command === "mcp" && subcommand === "author") {
152
+ const { runAuthoringMcp } = await import("../authoring-Do87QzBd.mjs");
153
+ await runAuthoringMcp(authoringMcpOptions);
143
154
  } else if (parsedCommand.command === "mcp") {
144
- const { runMcp } = await import("../mcp-CwgKlbIz.mjs");
155
+ const { runMcp } = await import("../mcp-DsjWxF7g.mjs");
145
156
  await runMcp(mcpOptions);
157
+ } else if (parsedCommand.command === "agent" && subcommand === "feedback") {
158
+ const { parseAgentFeedbackImproveArgs, printAgentFeedbackImproveHelp, runAgentFeedbackImprove } = await import("../feedback-DWVUMrxy.mjs");
159
+ const feedbackOptions = parseAgentFeedbackImproveArgs(args.slice(2));
160
+ if (feedbackOptions.help) {
161
+ printAgentFeedbackImproveHelp();
162
+ return;
163
+ }
164
+ await runAgentFeedbackImprove(feedbackOptions);
165
+ } else if (parsedCommand.command === "agent" && subcommand === "feedback-evals") {
166
+ const { parseAgentFeedbackEvaluationsArgs, printAgentFeedbackEvaluationsHelp, runAgentFeedbackEvaluations } = await import("../feedback-evals-k0sFDdms.mjs");
167
+ const evaluationOptions = parseAgentFeedbackEvaluationsArgs(args.slice(2));
168
+ if (evaluationOptions.help) {
169
+ printAgentFeedbackEvaluationsHelp();
170
+ return;
171
+ }
172
+ await runAgentFeedbackEvaluations(evaluationOptions);
173
+ } else if (parsedCommand.command === "agent" && subcommand === "propose") {
174
+ const { parseAgentMaintenanceProposeArgs, printAgentMaintenanceProposeHelp, runAgentMaintenancePropose } = await import("../propose-DJOiHu9Y.mjs");
175
+ const proposeOptions = parseAgentMaintenanceProposeArgs(args.slice(2));
176
+ if (proposeOptions.help) {
177
+ printAgentMaintenanceProposeHelp();
178
+ return;
179
+ }
180
+ await runAgentMaintenancePropose(proposeOptions);
146
181
  } else if (parsedCommand.command === "agent" && subcommand === "compact") {
147
- const { compactAgentDocs, parseAgentCompactArgs, printAgentCompactHelp } = await import("../agent-BLHMoVId.mjs").then((n) => n.t);
182
+ const { compactAgentDocs, parseAgentCompactArgs, printAgentCompactHelp } = await import("../agent-CaCWThBY.mjs").then((n) => n.t);
148
183
  const agentCompactOptions = parseAgentCompactArgs(args.slice(2));
149
184
  if (agentCompactOptions.help) {
150
185
  printAgentCompactHelp();
@@ -152,7 +187,7 @@ async function main() {
152
187
  }
153
188
  await compactAgentDocs(agentCompactOptions);
154
189
  } else if (parsedCommand.command === "agent" && subcommand === "export") {
155
- const { exportAgentBundle, parseAgentExportArgs, printAgentExportHelp } = await import("../agent-export-oiWxB5aX.mjs");
190
+ const { exportAgentBundle, parseAgentExportArgs, printAgentExportHelp } = await import("../agent-export-GcTZPLfB.mjs");
156
191
  const agentExportOptions = parseAgentExportArgs(args.slice(2));
157
192
  if (agentExportOptions.help) {
158
193
  printAgentExportHelp();
@@ -162,13 +197,19 @@ async function main() {
162
197
  } else if (parsedCommand.command === "agent") {
163
198
  console.error(pc.red(`Unknown agent subcommand: ${subcommand ?? "(missing)"}`));
164
199
  console.error();
165
- const { printAgentCompactHelp } = await import("../agent-BLHMoVId.mjs").then((n) => n.t);
166
- const { printAgentExportHelp } = await import("../agent-export-oiWxB5aX.mjs");
200
+ const { printAgentCompactHelp } = await import("../agent-CaCWThBY.mjs").then((n) => n.t);
201
+ const { printAgentExportHelp } = await import("../agent-export-GcTZPLfB.mjs");
202
+ const { printAgentFeedbackImproveHelp } = await import("../feedback-DWVUMrxy.mjs");
203
+ const { printAgentFeedbackEvaluationsHelp } = await import("../feedback-evals-k0sFDdms.mjs");
204
+ const { printAgentMaintenanceProposeHelp } = await import("../propose-DJOiHu9Y.mjs");
167
205
  printAgentCompactHelp();
168
206
  printAgentExportHelp();
207
+ printAgentFeedbackImproveHelp();
208
+ printAgentFeedbackEvaluationsHelp();
209
+ printAgentMaintenanceProposeHelp();
169
210
  process.exit(1);
170
211
  } else if (parsedCommand.command === "agents" && subcommand === "generate") {
171
- const { generateAgents, parseAgentsGenerateArgs, printAgentsGenerateHelp } = await import("../agents-CtqIUW5I.mjs");
212
+ const { generateAgents, parseAgentsGenerateArgs, printAgentsGenerateHelp } = await import("../agents-e1SYT64z.mjs");
172
213
  const agentsOptions = parseAgentsGenerateArgs(args.slice(2));
173
214
  if (agentsOptions.help) {
174
215
  printAgentsGenerateHelp();
@@ -178,11 +219,11 @@ async function main() {
178
219
  } else if (parsedCommand.command === "agents") {
179
220
  console.error(pc.red(`Unknown agents subcommand: ${subcommand ?? "(missing)"}`));
180
221
  console.error();
181
- const { printAgentsGenerateHelp } = await import("../agents-CtqIUW5I.mjs");
222
+ const { printAgentsGenerateHelp } = await import("../agents-e1SYT64z.mjs");
182
223
  printAgentsGenerateHelp();
183
224
  process.exit(1);
184
225
  } else if (parsedCommand.command === "skills" && subcommand === "scaffold") {
185
- const { parseSkillScaffoldArgs, printSkillScaffoldHelp, scaffoldSkillFromContracts } = await import("../skills-BFang8vF.mjs");
226
+ const { parseSkillScaffoldArgs, printSkillScaffoldHelp, scaffoldSkillFromContracts } = await import("../skills-BILSESek.mjs");
186
227
  const skillOptions = parseSkillScaffoldArgs(args.slice(2));
187
228
  if (skillOptions.help) {
188
229
  printSkillScaffoldHelp();
@@ -190,16 +231,16 @@ async function main() {
190
231
  }
191
232
  await scaffoldSkillFromContracts(skillOptions);
192
233
  } else if (parsedCommand.command === "skills" && (subcommand === "--help" || subcommand === "-h")) {
193
- const { printSkillScaffoldHelp } = await import("../skills-BFang8vF.mjs");
234
+ const { printSkillScaffoldHelp } = await import("../skills-BILSESek.mjs");
194
235
  printSkillScaffoldHelp();
195
236
  } else if (parsedCommand.command === "skills") {
196
237
  console.error(pc.red(`Unknown skills subcommand: ${subcommand ?? "(missing)"}`));
197
238
  console.error();
198
- const { printSkillScaffoldHelp } = await import("../skills-BFang8vF.mjs");
239
+ const { printSkillScaffoldHelp } = await import("../skills-BILSESek.mjs");
199
240
  printSkillScaffoldHelp();
200
241
  process.exit(1);
201
242
  } else if (parsedCommand.command === "doctor") {
202
- const { parseDoctorArgs, printDoctorHelp, runDoctor } = await import("../doctor-Bmm0uY98.mjs");
243
+ const { parseDoctorArgs, printDoctorHelp, runDoctor } = await import("../doctor-CtK1CRPj.mjs");
203
244
  const doctorOptions = parseDoctorArgs(args.slice(1));
204
245
  if (doctorOptions.help) {
205
246
  printDoctorHelp();
@@ -207,7 +248,7 @@ async function main() {
207
248
  }
208
249
  await runDoctor(doctorOptions);
209
250
  } else if (parsedCommand.command === "review") {
210
- const { parseReviewArgs, printReviewHelp, runReview } = await import("../review-C_5wB0rR.mjs");
251
+ const { parseReviewArgs, printReviewHelp, runReview } = await import("../review-XI9FXeos.mjs");
211
252
  const reviewOptions = parseReviewArgs(args.slice(1));
212
253
  if (reviewOptions.help) {
213
254
  printReviewHelp();
@@ -215,7 +256,7 @@ async function main() {
215
256
  }
216
257
  await runReview(reviewOptions);
217
258
  } else if ((parsedCommand.command === "codeblocks" || parsedCommand.command === "code-blocks") && subcommand === "validate") {
218
- const { parseCodeBlocksValidateArgs, printCodeBlocksValidateHelp, runCodeBlocksValidate } = await import("../codeblocks-jbWuvtJQ.mjs");
259
+ const { parseCodeBlocksValidateArgs, printCodeBlocksValidateHelp, runCodeBlocksValidate } = await import("../codeblocks-C911CdyJ.mjs");
219
260
  const codeBlocksOptions = parseCodeBlocksValidateArgs(args.slice(2));
220
261
  if (codeBlocksOptions.help) {
221
262
  printCodeBlocksValidateHelp();
@@ -225,11 +266,11 @@ async function main() {
225
266
  } else if (parsedCommand.command === "codeblocks" || parsedCommand.command === "code-blocks") {
226
267
  console.error(pc.red(`Unknown codeblocks subcommand: ${subcommand ?? "(missing)"}`));
227
268
  console.error();
228
- const { printCodeBlocksValidateHelp } = await import("../codeblocks-jbWuvtJQ.mjs");
269
+ const { printCodeBlocksValidateHelp } = await import("../codeblocks-C911CdyJ.mjs");
229
270
  printCodeBlocksValidateHelp();
230
271
  process.exit(1);
231
272
  } else if (parsedCommand.command === "search" && subcommand === "sync") {
232
- const { syncSearch } = await import("../search-B5etKU-v.mjs");
273
+ const { syncSearch } = await import("../search-DwAoC9X7.mjs");
233
274
  await syncSearch(searchSyncOptions);
234
275
  } else if (parsedCommand.command === "search") {
235
276
  console.error(pc.red(`Unknown search subcommand: ${subcommand ?? "(missing)"}`));
@@ -237,7 +278,7 @@ async function main() {
237
278
  printHelp();
238
279
  process.exit(1);
239
280
  } else if (parsedCommand.command === "sitemap" && subcommand === "generate") {
240
- const { generateSitemap, parseSitemapGenerateArgs, printSitemapGenerateHelp } = await import("../sitemap-DjhxvQP1.mjs");
281
+ const { generateSitemap, parseSitemapGenerateArgs, printSitemapGenerateHelp } = await import("../sitemap-DOaJIKJf.mjs");
241
282
  const sitemapOptions = parseSitemapGenerateArgs(args.slice(2));
242
283
  if (sitemapOptions.help) {
243
284
  printSitemapGenerateHelp();
@@ -247,11 +288,11 @@ async function main() {
247
288
  } else if (parsedCommand.command === "sitemap") {
248
289
  console.error(pc.red(`Unknown sitemap subcommand: ${subcommand ?? "(missing)"}`));
249
290
  console.error();
250
- const { printSitemapGenerateHelp } = await import("../sitemap-DjhxvQP1.mjs");
291
+ const { printSitemapGenerateHelp } = await import("../sitemap-DOaJIKJf.mjs");
251
292
  printSitemapGenerateHelp();
252
293
  process.exit(1);
253
294
  } else if (parsedCommand.command === "robots" && subcommand === "generate") {
254
- const { generateRobots, parseRobotsGenerateArgs, printRobotsGenerateHelp } = await import("../robots-BQ42Y84a.mjs");
295
+ const { generateRobots, parseRobotsGenerateArgs, printRobotsGenerateHelp } = await import("../robots-CzKesbdX.mjs");
255
296
  const robotsOptions = parseRobotsGenerateArgs(args.slice(2));
256
297
  if (robotsOptions.help) {
257
298
  printRobotsGenerateHelp();
@@ -261,11 +302,11 @@ async function main() {
261
302
  } else if (parsedCommand.command === "robots") {
262
303
  console.error(pc.red(`Unknown robots subcommand: ${subcommand ?? "(missing)"}`));
263
304
  console.error();
264
- const { printRobotsGenerateHelp } = await import("../robots-BQ42Y84a.mjs");
305
+ const { printRobotsGenerateHelp } = await import("../robots-CzKesbdX.mjs");
265
306
  printRobotsGenerateHelp();
266
307
  process.exit(1);
267
308
  } else if (parsedCommand.command === "downgrade") {
268
- const { downgrade } = await import("../downgrade-Dqm0rJMy.mjs");
309
+ const { downgrade } = await import("../downgrade-BXmQMkMy.mjs");
269
310
  const framework = (typeof flags.framework === "string" ? flags.framework : void 0) ?? (args[1] && !args[1].startsWith("--") ? args[1] : void 0);
270
311
  const hasVersionFlag = args.includes("--version") || args.some((arg) => arg.startsWith("--version="));
271
312
  await downgrade({
@@ -274,7 +315,7 @@ async function main() {
274
315
  dryRun: flags["dry-run"] === true
275
316
  });
276
317
  } else if (parsedCommand.command === "upgrade") {
277
- const { upgrade } = await import("../upgrade-kj2crJSk.mjs");
318
+ const { upgrade } = await import("../upgrade-B92U83xo.mjs");
278
319
  const framework = (typeof flags.framework === "string" ? flags.framework : void 0) ?? (args[1] && !args[1].startsWith("--") ? args[1] : void 0);
279
320
  const hasVersionFlag = args.includes("--version") || args.some((arg) => arg.startsWith("--version="));
280
321
  const version = typeof flags.version === "string" ? flags.version : hasVersionFlag ? "" : void 0;
@@ -306,13 +347,13 @@ ${pc.dim("Commands:")}
306
347
  ${pc.cyan("deploy")} Sync cloud config and deploy hosted preview docs
307
348
  ${pc.cyan("preview")} Alias for ${pc.cyan("deploy")}
308
349
  ${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")} page context, ${pc.dim("export")} static bundles)
350
+ ${pc.cyan("agent")} Agent utilities (${pc.dim("compact")}, ${pc.dim("export")}, ${pc.dim("feedback")})
310
351
  ${pc.cyan("agents")} AGENTS.md utilities (${pc.dim("generate")} for static agent instructions)
311
352
  ${pc.cyan("skills")} Agent Skills utilities (${pc.dim("scaffold")} from structured page contracts)
312
353
  ${pc.cyan("doctor")} Inspect and score agent or reader-facing docs quality
313
354
  ${pc.cyan("review")} Review changed docs files and wire Docs Review CI
314
355
  ${pc.cyan("codeblocks")} Validate fenced MDX code blocks (${pc.dim("validate")})
315
- ${pc.cyan("mcp")} Run the built-in docs MCP server over stdio
356
+ ${pc.cyan("mcp")} Run read-only docs MCP or the separate protected authoring server
316
357
  ${pc.cyan("robots")} Robots.txt utilities (${pc.dim("generate")} for agent access policy)
317
358
  ${pc.cyan("search")} Search utilities (${pc.dim("sync")} for external indexes)
318
359
  ${pc.cyan("sitemap")} Sitemap utilities (${pc.dim("generate")} for sitemap XML/Markdown data)
@@ -339,6 +380,10 @@ ${pc.dim("Options for mcp:")}
339
380
  ${pc.cyan("--api-base-url <url>")} Override the hosted Docs Cloud API base URL for ${pc.cyan("mcp setup")}
340
381
  ${pc.cyan("--client <name>")} Emit native config for ${pc.dim("claude-code")}, ${pc.dim("cursor")}, or ${pc.dim("vscode")}
341
382
  ${pc.cyan("--json")} Print the selected MCP client JSON only for ${pc.cyan("mcp setup")}
383
+ ${pc.cyan("mcp author")} Run the local docs-authoring MCP over stdio
384
+ ${pc.cyan("--branch-prefix <p>")} Restrict authoring branches (default: ${pc.dim("docs/")})
385
+ ${pc.cyan("--base-branch <name>")} Set the base used for authoring draft PRs
386
+ ${pc.cyan("--allow-publish")} Explicitly register commit, push, and draft-PR publishing
342
387
 
343
388
  ${pc.dim("Options for dev:")}
344
389
  ${pc.cyan("--port <number>")} Run the frameworkless preview on a custom port
@@ -383,6 +428,29 @@ ${pc.dim("Options for agent export:")}
383
428
  ${pc.cyan("agent export --check")} Fail when the static Agent Bundle is stale
384
429
  ${pc.cyan("--config <path>")} Use a custom docs config path instead of ${pc.dim("docs.config.ts[x]")}
385
430
 
431
+ ${pc.dim("Options for agent feedback:")}
432
+ ${pc.cyan("agent feedback --input <path>")} Cluster JSON or JSONL agent feedback into improvement drafts
433
+ ${pc.cyan("--min-occurrences <2-100>")} Recurrence threshold (default: 2)
434
+ ${pc.cyan("--write")} Write the report to ${pc.dim(".farming-labs/agent-feedback-improvements.json")}
435
+ ${pc.cyan("--output <path>")} Override the written report path
436
+ ${pc.cyan("--json")} Print JSON while writing
437
+
438
+ ${pc.dim("Options for feedback-derived evaluations:")}
439
+ ${pc.cyan("agent feedback-evals --write")} Sanitize and deduplicate feedback-derived golden-task candidates
440
+ ${pc.cyan("--existing <path>")} Compare against an existing candidate registry, task list, or config JSON
441
+ ${pc.cyan("--results <path> --baseline <path>")} Read golden-task or doctor JSON for baseline comparison
442
+ ${pc.cyan("--write-baseline")} Create or replace an explicit evaluation baseline
443
+ ${pc.cyan("--check")} Fail CI when suite/task results regress
444
+ ${pc.cyan("--max-score-drop <0-100>")} Allow a bounded suite/task score decrease
445
+
446
+ ${pc.dim("Options for agent maintenance proposals:")}
447
+ ${pc.cyan("agent propose --input <path>")} Combine JSON/JSONL feedback, search, MCP, issue, support, and git signals
448
+ ${pc.cyan("--input <path>")} Repeat to combine multiple signal exports
449
+ ${pc.cyan("--min-occurrences <1-100>")} Proposal threshold (default: 2)
450
+ ${pc.cyan("--write")} Write the draft-only report to ${pc.dim(".farming-labs/agent-maintenance-proposals.json")}
451
+ ${pc.cyan("--output <path>")} Override the written report path
452
+ ${pc.cyan("--json")} Print JSON while writing
453
+
386
454
  ${pc.dim("Options for skills scaffold:")}
387
455
  ${pc.cyan("skills scaffold [name]")} Compile page agent contracts into a compact ${pc.dim("SKILL.md")} router and focused references
388
456
  ${pc.cyan("--output <directory>")} Write to a full skill directory; defaults to ${pc.dim("skills/<name>")}
@@ -1,4 +1,4 @@
1
- import { ft as DocsAnalyticsConfig } from "../types-DLLefoU5.mjs";
1
+ import { mt as DocsAnalyticsConfig } from "../types-QhYMnKvb.mjs";
2
2
  import { ReactNode } from "react";
3
3
 
4
4
  //#region src/docs-cloud-client.d.ts
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { n as sendDocsCloudAnalyticsEvent } from "../cloud-analytics-CSyFE6SS.mjs";
3
+ import { n as sendDocsCloudAnalyticsEvent } from "../cloud-analytics-Ci1yiwD8.mjs";
4
4
  import { useEffect } from "react";
5
5
 
6
6
  //#region src/docs-cloud-client.ts
@@ -1,6 +1,6 @@
1
- import { n as markCliErrorReported } from "./errors-DZiNXv5c.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-BaTmjDqD.mjs";
3
- import { i as detectPackageManagerFromProject, t as detectFramework } from "./utils-DOMeZW9V.mjs";
1
+ import { n as markCliErrorReported } from "./errors-BDmra6mz.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-DrZ3fXgf.mjs";
3
+ import { i as detectPackageManagerFromProject, t as detectFramework } from "./utils-Cc1SrVza.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-DLLefoU5.mjs";
1
+ import { Ot as DocsCloudConfig, mt as DocsAnalyticsConfig, t as AIConfig } from "./types-QhYMnKvb.mjs";
2
2
 
3
3
  //#region src/cloud-ask-ai.d.ts
4
4
  interface DocsCloudAskAIConfig {
@@ -1,4 +1,4 @@
1
- import { a as emitDocsAnalyticsEvent } from "./analytics-Bx44lg6d.mjs";
1
+ import { a as emitDocsAnalyticsEvent } from "./analytics-CqfcIBdg.mjs";
2
2
 
3
3
  //#region src/cloud-ask-ai.ts
4
4
  const DEFAULT_DOCS_CLOUD_API_BASE_URL = "https://api.farming-labs.dev";
@@ -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-Bel6vDqI.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-BaTmjDqD.mjs";
1
+ import { a as validateCodeBlocks, r as resolveDocsCodeBlocksValidateConfig } from "./code-blocks-D90CCJFs.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-DrZ3fXgf.mjs";
3
3
  import { existsSync, readFileSync } from "node:fs";
4
4
  import pc from "picocolors";
5
5