@farming-labs/docs 0.1.124 → 0.1.126

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.
@@ -2,8 +2,8 @@ import "./reading-time-HpTq-0VB.mjs";
2
2
  import "./search-BL7o2rXk.mjs";
3
3
  import "./agent-BS39vnhS.mjs";
4
4
  import "./robots-B2BfoyVM.mjs";
5
- import "./sitemap-server-BZHoJHqC.mjs";
5
+ import "./sitemap-server-idLUrmmU.mjs";
6
6
  import "./config-B8wA38OC.mjs";
7
- import { a as readPageTokenBudget, i as printAgentCompactHelp, n as inspectAgentCompactionState, o as scanDocsPageTargets, r as parseAgentCompactArgs, t as compactAgentDocs } from "./codeblocks-RacO12_K.mjs";
7
+ import { a as readPageTokenBudget, i as printAgentCompactHelp, n as inspectAgentCompactionState, o as scanDocsPageTargets, r as parseAgentCompactArgs, t as compactAgentDocs } from "./codeblocks-B4QzFqNC.mjs";
8
8
 
9
9
  export { compactAgentDocs, parseAgentCompactArgs, printAgentCompactHelp };
@@ -1,6 +1,6 @@
1
1
  import "./search-BL7o2rXk.mjs";
2
2
  import { K as resolveDocsAgentFeedbackConfig, V as renderDocsAgentsDocument, a as DEFAULT_AGENT_MD_ROUTE, n as DEFAULT_AGENTS_MD_WELL_KNOWN_ROUTE, o as DEFAULT_AGENT_MD_WELL_KNOWN_ROUTE, t as DEFAULT_AGENTS_MD_ROUTE, y as DEFAULT_OPENAPI_SCHEMA_ROUTE } from "./agent-BS39vnhS.mjs";
3
- import { S as resolveApiReferenceConfig } from "./sitemap-server-BZHoJHqC.mjs";
3
+ import { S as resolveApiReferenceConfig } from "./sitemap-server-idLUrmmU.mjs";
4
4
  import { resolveDocsMcpConfig } from "./mcp.mjs";
5
5
  import "./server.mjs";
6
6
  import { c as readNavTitle, d as readTopLevelStringProperty, f as resolveDocsConfigPath, i as loadDocsConfigModule, o as readBooleanProperty, t as extractNestedObjectLiteral, u as readStringProperty } from "./config-B8wA38OC.mjs";
@@ -83,10 +83,10 @@ async function main() {
83
83
  const { dev } = await import("../dev-1VFeAWUi.mjs");
84
84
  await dev(devOptions);
85
85
  } else if (parsedCommand.command === "mcp") {
86
- const { runMcp } = await import("../mcp-BvERlrP_.mjs");
86
+ const { runMcp } = await import("../mcp-DxIxIGjq.mjs");
87
87
  await runMcp(mcpOptions);
88
88
  } else if (parsedCommand.command === "agent" && subcommand === "compact") {
89
- const { compactAgentDocs, parseAgentCompactArgs, printAgentCompactHelp } = await import("../agent-BtZrMCt8.mjs");
89
+ const { compactAgentDocs, parseAgentCompactArgs, printAgentCompactHelp } = await import("../agent-DO7T2pnN.mjs");
90
90
  const agentCompactOptions = parseAgentCompactArgs(args.slice(2));
91
91
  if (agentCompactOptions.help) {
92
92
  printAgentCompactHelp();
@@ -96,11 +96,11 @@ async function main() {
96
96
  } else if (parsedCommand.command === "agent") {
97
97
  console.error(pc.red(`Unknown agent subcommand: ${subcommand ?? "(missing)"}`));
98
98
  console.error();
99
- const { printAgentCompactHelp } = await import("../agent-BtZrMCt8.mjs");
99
+ const { printAgentCompactHelp } = await import("../agent-DO7T2pnN.mjs");
100
100
  printAgentCompactHelp();
101
101
  process.exit(1);
102
102
  } else if (parsedCommand.command === "agents" && subcommand === "generate") {
103
- const { generateAgents, parseAgentsGenerateArgs, printAgentsGenerateHelp } = await import("../agents-BPX4YRPs.mjs");
103
+ const { generateAgents, parseAgentsGenerateArgs, printAgentsGenerateHelp } = await import("../agents-B11bgT3b.mjs");
104
104
  const agentsOptions = parseAgentsGenerateArgs(args.slice(2));
105
105
  if (agentsOptions.help) {
106
106
  printAgentsGenerateHelp();
@@ -110,11 +110,11 @@ async function main() {
110
110
  } else if (parsedCommand.command === "agents") {
111
111
  console.error(pc.red(`Unknown agents subcommand: ${subcommand ?? "(missing)"}`));
112
112
  console.error();
113
- const { printAgentsGenerateHelp } = await import("../agents-BPX4YRPs.mjs");
113
+ const { printAgentsGenerateHelp } = await import("../agents-B11bgT3b.mjs");
114
114
  printAgentsGenerateHelp();
115
115
  process.exit(1);
116
116
  } else if (parsedCommand.command === "doctor") {
117
- const { parseDoctorArgs, printDoctorHelp, runDoctor } = await import("../doctor-B0nFg8oM.mjs");
117
+ const { parseDoctorArgs, printDoctorHelp, runDoctor } = await import("../doctor-ylvdBm1D.mjs");
118
118
  const doctorOptions = parseDoctorArgs(args.slice(1));
119
119
  if (doctorOptions.help) {
120
120
  printDoctorHelp();
@@ -130,7 +130,7 @@ async function main() {
130
130
  }
131
131
  await runReview(reviewOptions);
132
132
  } else if ((parsedCommand.command === "codeblocks" || parsedCommand.command === "code-blocks") && subcommand === "validate") {
133
- const { parseCodeBlocksValidateArgs, printCodeBlocksValidateHelp, runCodeBlocksValidate } = await import("../codeblocks-RacO12_K.mjs");
133
+ const { parseCodeBlocksValidateArgs, printCodeBlocksValidateHelp, runCodeBlocksValidate } = await import("../codeblocks-B4QzFqNC.mjs");
134
134
  const codeBlocksOptions = parseCodeBlocksValidateArgs(args.slice(2));
135
135
  if (codeBlocksOptions.help) {
136
136
  printCodeBlocksValidateHelp();
@@ -140,11 +140,11 @@ async function main() {
140
140
  } else if (parsedCommand.command === "codeblocks" || parsedCommand.command === "code-blocks") {
141
141
  console.error(pc.red(`Unknown codeblocks subcommand: ${subcommand ?? "(missing)"}`));
142
142
  console.error();
143
- const { printCodeBlocksValidateHelp } = await import("../codeblocks-RacO12_K.mjs");
143
+ const { printCodeBlocksValidateHelp } = await import("../codeblocks-B4QzFqNC.mjs");
144
144
  printCodeBlocksValidateHelp();
145
145
  process.exit(1);
146
146
  } else if (parsedCommand.command === "search" && subcommand === "sync") {
147
- const { syncSearch } = await import("../search-BjyDm30M.mjs");
147
+ const { syncSearch } = await import("../search-D9iNWiKQ.mjs");
148
148
  await syncSearch(searchSyncOptions);
149
149
  } else if (parsedCommand.command === "search") {
150
150
  console.error(pc.red(`Unknown search subcommand: ${subcommand ?? "(missing)"}`));
@@ -152,7 +152,7 @@ async function main() {
152
152
  printHelp();
153
153
  process.exit(1);
154
154
  } else if (parsedCommand.command === "sitemap" && subcommand === "generate") {
155
- const { generateSitemap, parseSitemapGenerateArgs, printSitemapGenerateHelp } = await import("../sitemap-BdSdcAmS.mjs");
155
+ const { generateSitemap, parseSitemapGenerateArgs, printSitemapGenerateHelp } = await import("../sitemap-ChZG2_Bv.mjs");
156
156
  const sitemapOptions = parseSitemapGenerateArgs(args.slice(2));
157
157
  if (sitemapOptions.help) {
158
158
  printSitemapGenerateHelp();
@@ -162,7 +162,7 @@ async function main() {
162
162
  } else if (parsedCommand.command === "sitemap") {
163
163
  console.error(pc.red(`Unknown sitemap subcommand: ${subcommand ?? "(missing)"}`));
164
164
  console.error();
165
- const { printSitemapGenerateHelp } = await import("../sitemap-BdSdcAmS.mjs");
165
+ const { printSitemapGenerateHelp } = await import("../sitemap-ChZG2_Bv.mjs");
166
166
  printSitemapGenerateHelp();
167
167
  process.exit(1);
168
168
  } else if (parsedCommand.command === "robots" && subcommand === "generate") {
@@ -614,6 +614,8 @@ function resolveDocsCodeBlocksValidateConfig(input) {
614
614
  teamIdEnv: "VERCEL_TEAM_ID",
615
615
  projectJson: ".vercel/project.json",
616
616
  runtime: "node24",
617
+ apiUrlEnv: "DAYTONA_API_URL",
618
+ targetEnv: "DAYTONA_TARGET",
617
619
  timeoutMs: DEFAULT_COMMAND_TIMEOUT_MS
618
620
  },
619
621
  envFile: DEFAULT_ENV_FILES,
@@ -724,7 +726,7 @@ async function validateCodeBlockPlans(input) {
724
726
  const skippedOrFailed = preflight.filter((result) => result.status === "SKIP" || result.reason);
725
727
  const plansToRun = runnable.map((result) => result.plan);
726
728
  if (plansToRun.length === 0) return skippedOrFailed;
727
- const runResults = input.config.runner.provider === "vercel-sandbox" ? await runPlansInVercelSandbox(plansToRun, input.rootDir, input.config, validationEnv.env) : await runPlansLocally(plansToRun, input.config, validationEnv.env);
729
+ const runResults = await runPlansWithConfiguredRunner(plansToRun, input.rootDir, input.config, validationEnv.env);
728
730
  return [...skippedOrFailed, ...runResults].sort((a, b) => a.id.localeCompare(b.id));
729
731
  }
730
732
  async function validateCodeBlocks(input) {
@@ -775,16 +777,24 @@ function normalizePlannerConfig(input) {
775
777
  }
776
778
  function normalizeRunnerConfig(input) {
777
779
  const config = typeof input === "string" ? { provider: input } : input ?? {};
780
+ const provider = config.provider ?? "local";
778
781
  return {
779
- provider: config.provider ?? "local",
780
- tokenEnv: config.tokenEnv ?? "VERCEL_TOKEN",
782
+ provider,
783
+ tokenEnv: config.tokenEnv ?? defaultRunnerTokenEnv(provider),
781
784
  projectIdEnv: config.projectIdEnv ?? "VERCEL_PROJECT_ID",
782
785
  teamIdEnv: config.teamIdEnv ?? "VERCEL_TEAM_ID",
783
786
  projectJson: config.projectJson === void 0 ? ".vercel/project.json" : config.projectJson,
784
787
  runtime: config.runtime ?? "node24",
788
+ apiUrlEnv: config.apiUrlEnv ?? "DAYTONA_API_URL",
789
+ targetEnv: config.targetEnv ?? "DAYTONA_TARGET",
785
790
  timeoutMs: config.timeoutMs ?? DEFAULT_COMMAND_TIMEOUT_MS
786
791
  };
787
792
  }
793
+ function defaultRunnerTokenEnv(provider) {
794
+ if (provider === "e2b") return "E2B_API_KEY";
795
+ if (provider === "daytona") return "DAYTONA_API_KEY";
796
+ return "VERCEL_TOKEN";
797
+ }
788
798
  function buildMetadataExecutionPlan(target, config) {
789
799
  const language = normalizeLanguage(target.language);
790
800
  const template = target.framework ?? templateFromLanguage(language);
@@ -1029,6 +1039,15 @@ async function runPlansLocally(plans, config, env) {
1029
1039
  });
1030
1040
  }
1031
1041
  }
1042
+ async function runPlansWithConfiguredRunner(plans, rootDir, config, env) {
1043
+ switch (config.runner.provider) {
1044
+ case "local": return runPlansLocally(plans, config, env);
1045
+ case "vercel-sandbox": return runPlansInVercelSandbox(plans, rootDir, config, env);
1046
+ case "e2b": return runPlansInE2B(plans, config, env);
1047
+ case "daytona": return runPlansInDaytona(plans, config, env);
1048
+ case "cloud": return plans.map((plan) => skippedResult(plan, "cloud runner is not available in this package yet"));
1049
+ }
1050
+ }
1032
1051
  async function runPlansInVercelSandbox(plans, rootDir, config, env) {
1033
1052
  const credentials = await resolveVercelSandboxCredentials(rootDir, config);
1034
1053
  if (credentials.missing.length > 0) return plans.map((plan) => skippedResult(plan, `missing ${credentials.missing.join(", ")}`));
@@ -1075,6 +1094,79 @@ async function runPlansInVercelSandbox(plans, rootDir, config, env) {
1075
1094
  return plans.map((plan) => skippedResult(plan, `vercel-sandbox unavailable: ${message}`));
1076
1095
  }
1077
1096
  }
1097
+ async function runPlansInE2B(plans, config, env) {
1098
+ const token = process.env[config.runner.tokenEnv];
1099
+ if (!token) return plans.map((plan) => skippedResult(plan, `missing ${config.runner.tokenEnv}`));
1100
+ const module = await importOptionalModule("e2b");
1101
+ if (!module) return plans.map((plan) => skippedResult(plan, "e2b unavailable: install the \"e2b\" package"));
1102
+ try {
1103
+ const E2BSandbox = readProviderExport(module, "default") ?? readProviderExport(module, "Sandbox");
1104
+ if (!hasCreateMethod(E2BSandbox)) return plans.map((plan) => skippedResult(plan, "e2b unavailable: missing Sandbox.create"));
1105
+ const sandbox = await withTemporaryEnv("E2B_API_KEY", token, () => E2BSandbox.create());
1106
+ try {
1107
+ return await Promise.all(plans.map(async (plan) => {
1108
+ if (!plan.command || !plan.filePath) return skippedResult(plan, "no executable command in plan");
1109
+ const command = buildSandboxShellCommand(plan);
1110
+ const runner = readObject(sandbox).commands;
1111
+ if (!hasRunMethod(runner)) return skippedResult(plan, "e2b unavailable: missing commands.run");
1112
+ try {
1113
+ return sandboxCommandResult(plan, await runner.run(command, {
1114
+ envs: env,
1115
+ timeoutMs: config.runner.timeoutMs
1116
+ }));
1117
+ } catch (error) {
1118
+ return failedSandboxResult(plan, error);
1119
+ }
1120
+ }));
1121
+ } finally {
1122
+ await cleanupProviderSandbox(sandbox);
1123
+ }
1124
+ } catch (error) {
1125
+ const message = error instanceof Error ? error.message : String(error);
1126
+ return plans.map((plan) => skippedResult(plan, `e2b unavailable: ${message}`));
1127
+ }
1128
+ }
1129
+ async function runPlansInDaytona(plans, config, env) {
1130
+ const token = process.env[config.runner.tokenEnv];
1131
+ if (!token) return plans.map((plan) => skippedResult(plan, `missing ${config.runner.tokenEnv}`));
1132
+ const module = await importOptionalModule("@daytona/sdk");
1133
+ if (!module) return plans.map((plan) => skippedResult(plan, "daytona unavailable: install the \"@daytona/sdk\" package"));
1134
+ try {
1135
+ const Daytona = readProviderExport(module, "Daytona");
1136
+ if (!hasConstructor(Daytona)) return plans.map((plan) => skippedResult(plan, "daytona unavailable: missing Daytona SDK"));
1137
+ const apiUrl = process.env[config.runner.apiUrlEnv];
1138
+ const target = process.env[config.runner.targetEnv];
1139
+ const daytona = new Daytona({
1140
+ apiKey: token,
1141
+ ...apiUrl ? { apiUrl } : {},
1142
+ ...target ? { target } : {}
1143
+ });
1144
+ if (!hasCreateMethod(daytona)) return plans.map((plan) => skippedResult(plan, "daytona unavailable: missing create"));
1145
+ const sandbox = await daytona.create({
1146
+ ephemeral: true,
1147
+ language: "typescript",
1148
+ ...Object.keys(env).length > 0 ? { envVars: env } : {}
1149
+ });
1150
+ try {
1151
+ return await Promise.all(plans.map(async (plan) => {
1152
+ if (!plan.command || !plan.filePath) return skippedResult(plan, "no executable command in plan");
1153
+ const processApi = readObject(sandbox).process;
1154
+ if (!hasExecuteCommandMethod(processApi)) return skippedResult(plan, "daytona unavailable: missing process.executeCommand");
1155
+ try {
1156
+ return sandboxCommandResult(plan, await processApi.executeCommand(buildSandboxShellCommand(plan)));
1157
+ } catch (error) {
1158
+ return failedSandboxResult(plan, error);
1159
+ }
1160
+ }));
1161
+ } finally {
1162
+ await cleanupProviderSandbox(sandbox);
1163
+ await cleanupProviderSandbox(daytona);
1164
+ }
1165
+ } catch (error) {
1166
+ const message = error instanceof Error ? error.message : String(error);
1167
+ return plans.map((plan) => skippedResult(plan, `daytona unavailable: ${message}`));
1168
+ }
1169
+ }
1078
1170
  async function resolveVercelSandboxCredentials(rootDir, config) {
1079
1171
  const projectJson = readVercelProjectJson(rootDir, config.runner.projectJson);
1080
1172
  const token = process.env[config.runner.tokenEnv];
@@ -1120,6 +1212,122 @@ function readVercelProjectJson(rootDir, projectJson) {
1120
1212
  return;
1121
1213
  }
1122
1214
  }
1215
+ async function importOptionalModule(specifier) {
1216
+ const importer = globalThis.__DOCS_CODE_BLOCKS_MODULE_IMPORTER__ ?? ((id) => import(id));
1217
+ try {
1218
+ return await importer(specifier);
1219
+ } catch {
1220
+ return;
1221
+ }
1222
+ }
1223
+ function buildSandboxShellCommand(plan) {
1224
+ const command = plan.command;
1225
+ const filePath = plan.filePath;
1226
+ if (!command || !filePath) return "";
1227
+ const sandboxDir = "/tmp/docs-codeblocks";
1228
+ const writeFileCommand = [
1229
+ "printf",
1230
+ "%s",
1231
+ Buffer.from(plan.target.code, "utf-8").toString("base64"),
1232
+ "|",
1233
+ "base64",
1234
+ "-d",
1235
+ ">",
1236
+ filePath
1237
+ ].map((part) => part === "|" || part === ">" ? part : shellEscape(part)).join(" ");
1238
+ return [
1239
+ `mkdir -p ${shellEscape(sandboxDir)}`,
1240
+ `cd ${shellEscape(sandboxDir)}`,
1241
+ writeFileCommand,
1242
+ shellJoin([command.cmd, ...command.args])
1243
+ ].join(" && ");
1244
+ }
1245
+ function shellJoin(parts) {
1246
+ return parts.map(shellEscape).join(" ");
1247
+ }
1248
+ function shellEscape(value) {
1249
+ return `'${value.replace(/'/g, "'\\''")}'`;
1250
+ }
1251
+ async function withTemporaryEnv(key, value, callback) {
1252
+ const previous = process.env[key];
1253
+ process.env[key] = value;
1254
+ try {
1255
+ return await callback();
1256
+ } finally {
1257
+ if (previous === void 0) delete process.env[key];
1258
+ else process.env[key] = previous;
1259
+ }
1260
+ }
1261
+ function sandboxCommandResult(plan, result) {
1262
+ const record = readObject(result);
1263
+ const error = readStringValue(record.error);
1264
+ const exitCode = readNumberValue(record.exitCode) ?? readNumberValue(record.code) ?? readNumberValue(record.exit_code) ?? (error ? 1 : 0);
1265
+ const stdout = readStringValue(record.stdout) ?? readStringValue(record.result) ?? readStringValue(record.text) ?? "";
1266
+ const stderr = readStringValue(record.stderr) ?? error ?? "";
1267
+ return {
1268
+ id: plan.id,
1269
+ target: plan.target,
1270
+ plan,
1271
+ status: exitCode === 0 ? "PASS" : "FAIL",
1272
+ stdout,
1273
+ stderr,
1274
+ exitCode,
1275
+ reason: exitCode === 0 ? void 0 : `exit code ${exitCode}`
1276
+ };
1277
+ }
1278
+ function failedSandboxResult(plan, error) {
1279
+ const record = readObject(error);
1280
+ return {
1281
+ id: plan.id,
1282
+ target: plan.target,
1283
+ plan,
1284
+ status: "FAIL",
1285
+ stdout: readStringValue(record.stdout),
1286
+ stderr: readStringValue(record.stderr),
1287
+ exitCode: readNumberValue(record.exitCode) ?? readNumberValue(record.code) ?? null,
1288
+ reason: error instanceof Error ? error.message : String(error)
1289
+ };
1290
+ }
1291
+ async function cleanupProviderSandbox(value) {
1292
+ const record = readObject(value);
1293
+ for (const methodName of [
1294
+ "kill",
1295
+ "close",
1296
+ "stop",
1297
+ "delete",
1298
+ "remove",
1299
+ "destroy"
1300
+ ]) {
1301
+ const method = record[methodName];
1302
+ if (typeof method !== "function") continue;
1303
+ await Promise.resolve(method.call(value)).catch(() => {});
1304
+ return;
1305
+ }
1306
+ }
1307
+ function readProviderExport(module, name) {
1308
+ return readObject(module)[name];
1309
+ }
1310
+ function readObject(value) {
1311
+ return value !== null && (typeof value === "object" || typeof value === "function") ? value : {};
1312
+ }
1313
+ function readStringValue(value) {
1314
+ return typeof value === "string" ? value : void 0;
1315
+ }
1316
+ function readNumberValue(value) {
1317
+ return typeof value === "number" ? value : void 0;
1318
+ }
1319
+ function hasCreateMethod(value) {
1320
+ return typeof readObject(value).create === "function";
1321
+ }
1322
+ function hasRunMethod(value) {
1323
+ return typeof readObject(value).run === "function";
1324
+ }
1325
+ function hasExecuteCommandMethod(value) {
1326
+ return typeof readObject(value).executeCommand === "function";
1327
+ }
1328
+ function hasConstructor(value) {
1329
+ return typeof value === "function";
1330
+ }
1123
1331
  function loadValidationEnv(rootDir, config) {
1124
1332
  const fileEnv = {};
1125
1333
  for (const file of config.envFile) {
@@ -1420,8 +1628,10 @@ function readStaticRunnerConfig(block) {
1420
1628
  const teamIdEnv = readStringProperty(block, "teamIdEnv");
1421
1629
  const projectJson = readStringProperty(block, "projectJson");
1422
1630
  const runtime = readStringProperty(block, "runtime");
1631
+ const apiUrlEnv = readStringProperty(block, "apiUrlEnv");
1632
+ const targetEnv = readStringProperty(block, "targetEnv");
1423
1633
  const timeoutMs = readNumberProperty(block, "timeoutMs");
1424
- if (provider !== "local" && provider !== "vercel-sandbox" && provider !== "cloud") return;
1634
+ if (provider !== "local" && provider !== "vercel-sandbox" && provider !== "e2b" && provider !== "daytona" && provider !== "cloud") return;
1425
1635
  return {
1426
1636
  provider,
1427
1637
  ...tokenEnv ? { tokenEnv } : {},
@@ -1429,6 +1639,8 @@ function readStaticRunnerConfig(block) {
1429
1639
  ...teamIdEnv ? { teamIdEnv } : {},
1430
1640
  ...projectJson ? { projectJson } : {},
1431
1641
  ...runtime === "node24" || runtime === "node22" || runtime === "python3.13" ? { runtime } : {},
1642
+ ...apiUrlEnv ? { apiUrlEnv } : {},
1643
+ ...targetEnv ? { targetEnv } : {},
1432
1644
  ...timeoutMs !== void 0 ? { timeoutMs } : {}
1433
1645
  };
1434
1646
  }
@@ -3,12 +3,12 @@ import "./search-BL7o2rXk.mjs";
3
3
  import { a as DEFAULT_SITEMAP_XML_ROUTE, d as resolveDocsSitemapConfig, i as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, r as DEFAULT_SITEMAP_MD_ROUTE } from "./sitemap-CMNj0Pt3.mjs";
4
4
  import { T as buildDocsMcpEndpointCandidates, b as DEFAULT_SKILL_MD_ROUTE, c as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, d as DEFAULT_LLMS_FULL_TXT_ROUTE, g as DEFAULT_MCP_PUBLIC_ROUTE, i as DEFAULT_AGENT_FEEDBACK_ROUTE, l as DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, m as DEFAULT_LLMS_TXT_ROUTE, n as DEFAULT_AGENTS_MD_WELL_KNOWN_ROUTE, t as DEFAULT_AGENTS_MD_ROUTE, v as DEFAULT_MCP_WELL_KNOWN_ROUTE, x as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE } from "./agent-BS39vnhS.mjs";
5
5
  import { a as analyzeDocsRobotsTxt, n as DEFAULT_ROBOTS_TXT_ROUTE, u as resolveDocsRobotsConfig } from "./robots-B2BfoyVM.mjs";
6
- import "./sitemap-server-BZHoJHqC.mjs";
6
+ import "./sitemap-server-idLUrmmU.mjs";
7
7
  import { createFilesystemDocsMcpSource, resolveDocsMcpConfig } from "./mcp.mjs";
8
8
  import "./server.mjs";
9
9
  import { a as loadProjectEnv, c as readNavTitle, d as readTopLevelStringProperty, f as resolveDocsConfigPath, i as loadDocsConfigModule, o as readBooleanProperty, p as resolveDocsContentDir, r as extractTopLevelConfigObject, t as extractNestedObjectLiteral } from "./config-B8wA38OC.mjs";
10
10
  import { t as detectFramework } from "./utils-x5EtYWjC.mjs";
11
- import { n as inspectAgentCompactionState, o as scanDocsPageTargets } from "./codeblocks-RacO12_K.mjs";
11
+ import { n as inspectAgentCompactionState, o as scanDocsPageTargets } from "./codeblocks-B4QzFqNC.mjs";
12
12
  import { existsSync, lstatSync, readFileSync, readdirSync } from "node:fs";
13
13
  import path from "node:path";
14
14
  import { LATEST_PROTOCOL_VERSION } from "@modelcontextprotocol/sdk/types.js";
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { $ as DocsReviewRulesConfig, A as DocsCodeBlocksConfig, At as OpenDocsProviderId, B as DocsFeedbackValue, Bt as ResolvedDocsRelatedLink, C as DocsAskAIActionData, Ct as LlmsTxtMaxCharsMode, D as DocsAskAIFeedbackMessage, Dt as OpenDocsConfig, E as DocsAskAIFeedbackData, Et as OGConfig, F as DocsCodeBlocksValidateConfig, Ft as PageFrontmatter, G as DocsNav, Gt as SidebarNode, H as DocsMcpConfig, Ht as SidebarConfig, I as DocsCodeBlocksValidationMode, It as PageOpenGraph, J as DocsObservabilityEventInput, Jt as SimpleDocsSearchConfig, K as DocsObservabilityConfig, Kt as SidebarPageNode, L as DocsCodeBlocksValidationPolicy, Lt as PageSidebarFrontmatter, M as DocsCodeBlocksPlannerProvider, Mt as OpenGraphImage, N as DocsCodeBlocksRunnerConfig, Nt as OrderingItem, O as DocsAskAIFeedbackValue, Ot as OpenDocsProvider, P as DocsCodeBlocksRunnerProvider, Pt as PageActionsConfig, Q as DocsReviewConfig, Qt as UIConfig, R as DocsConfig, Rt as PageTwitter, S as DocsAnalyticsSource, St as LlmsTxtMaxCharsConfig, T as DocsAskAIFeedbackConfig, Tt as McpDocsSearchConfig, U as DocsMcpToolsConfig, Ut as SidebarFolderIndexBehavior, V as DocsI18nConfig, Vt as SidebarComponentProps, W as DocsMetadata, Wt as SidebarFolderNode, X as DocsReviewCiConfig, Xt as TypesenseDocsSearchConfig, Y as DocsRelatedItem, Yt as ThemeToggleConfig, Z as DocsReviewCiMode, Zt as TypographyConfig, _ as DocsAnalyticsConfig, _t as FeedbackConfig, a as ApiReferenceRenderer, at as DocsSearchAdapterContext, b as DocsAnalyticsEventType, bt as LastUpdatedConfig, c as ChangelogFrontmatter, ct as DocsSearchConfig, d as CustomDocsSearchConfig, dt as DocsSearchQuery, et as DocsReviewScoreConfig, f as DocsAgentFeedbackContext, ft as DocsSearchResult, g as DocsAgentTraceStatus, gt as DocsTheme, h as DocsAgentTraceEventType, ht as DocsSitemapConfig, i as ApiReferenceConfig, it as DocsSearchAdapter, j as DocsCodeBlocksPlannerConfig, jt as OpenDocsTarget, k as DocsAskAIMcpConfig, kt as OpenDocsProviderConfig, l as CodeBlockCopyData, lt as DocsSearchDocument, m as DocsAgentTraceEventInput, mt as DocsSearchSourcePage, n as AgentFeedbackConfig, nt as DocsRobotsConfig, o as BreadcrumbConfig, ot as DocsSearchAdapterFactory, p as DocsAgentFeedbackData, pt as DocsSearchResultType, q as DocsObservabilityEvent, qt as SidebarTree, r as AlgoliaDocsSearchConfig, rt as DocsRobotsRule, s as ChangelogConfig, st as DocsSearchChunkingConfig, t as AIConfig, tt as DocsReviewSeverity, u as CopyMarkdownConfig, ut as DocsSearchEmbeddingsConfig, v as DocsAnalyticsEvent, vt as FontStyle, w as DocsAskAIActionType, wt as LlmsTxtSectionConfig, x as DocsAnalyticsInput, xt as LlmsTxtConfig, y as DocsAnalyticsEventInput, yt as GithubConfig, z as DocsFeedbackData, zt as ReadingTimeConfig } from "./types-hDUu4K7W.mjs";
2
- import { $ as createDocsAgentTraceId, A as resolveDocsSitemapRequest, C as buildDocsSitemapManifest, D as renderDocsSitemapXml, E as renderDocsSitemapMarkdown, I as PromptAction, J as DOCS_AGENT_TRACE_EVENT_TYPES, L as PromptProviderChoice, O as resolveDocsSitemapConfig, Q as createDocsAgentTraceContext, R as SerializeOpenDocsProviderOptions, S as DocsSitemapResolvedConfig, T as readDocsSitemapManifestFromContentMap, X as ResolvedDocsAnalyticsConfig, Y as DocsAgentTraceContext, Z as ResolvedDocsObservabilityConfig, _ as DEFAULT_SITEMAP_XML_ROUTE, a as createMcpSearchAdapter, at as DocsCloudAnalyticsOptions, b as DocsSitemapManifestPage, c as formatDocsAskAIPackageHints, d as resolveAskAISearchRequestConfig, et as emitDocsAgentTraceEvent, f as resolveSearchRequestConfig, g as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, h as DEFAULT_SITEMAP_MD_ROUTE, i as createCustomSearchAdapter, it as resolveDocsObservabilityConfig, j as toDocsSitemapMarkdownUrl, k as resolveDocsSitemapPageLastmod, l as inferDocsAskAIPackageHints, m as DEFAULT_SITEMAP_MD_DOCS_ROUTE, n as buildDocsSearchDocuments, nt as emitDocsObservabilityEvent, o as createSimpleSearchAdapter, ot as createDocsCloudAnalytics, p as DEFAULT_SITEMAP_MANIFEST_PATH, r as createAlgoliaSearchAdapter, rt as resolveDocsAnalyticsConfig, s as createTypesenseSearchAdapter, t as buildDocsAskAIContext, tt as emitDocsAnalyticsEvent, u as performDocsSearch, v as DocsSitemapFormat, w as createDocsSitemapResponse, x as DocsSitemapPageInput, y as DocsSitemapManifest, z as SerializedOpenDocsProvider } from "./search-mF8wT9LQ.mjs";
1
+ import { $ as DocsReviewRulesConfig, A as DocsCodeBlocksConfig, At as OpenDocsProviderId, B as DocsFeedbackValue, Bt as ResolvedDocsRelatedLink, C as DocsAskAIActionData, Ct as LlmsTxtMaxCharsMode, D as DocsAskAIFeedbackMessage, Dt as OpenDocsConfig, E as DocsAskAIFeedbackData, Et as OGConfig, F as DocsCodeBlocksValidateConfig, Ft as PageFrontmatter, G as DocsNav, Gt as SidebarNode, H as DocsMcpConfig, Ht as SidebarConfig, I as DocsCodeBlocksValidationMode, It as PageOpenGraph, J as DocsObservabilityEventInput, Jt as SimpleDocsSearchConfig, K as DocsObservabilityConfig, Kt as SidebarPageNode, L as DocsCodeBlocksValidationPolicy, Lt as PageSidebarFrontmatter, M as DocsCodeBlocksPlannerProvider, Mt as OpenGraphImage, N as DocsCodeBlocksRunnerConfig, Nt as OrderingItem, O as DocsAskAIFeedbackValue, Ot as OpenDocsProvider, P as DocsCodeBlocksRunnerProvider, Pt as PageActionsConfig, Q as DocsReviewConfig, Qt as UIConfig, R as DocsConfig, Rt as PageTwitter, S as DocsAnalyticsSource, St as LlmsTxtMaxCharsConfig, T as DocsAskAIFeedbackConfig, Tt as McpDocsSearchConfig, U as DocsMcpToolsConfig, Ut as SidebarFolderIndexBehavior, V as DocsI18nConfig, Vt as SidebarComponentProps, W as DocsMetadata, Wt as SidebarFolderNode, X as DocsReviewCiConfig, Xt as TypesenseDocsSearchConfig, Y as DocsRelatedItem, Yt as ThemeToggleConfig, Z as DocsReviewCiMode, Zt as TypographyConfig, _ as DocsAnalyticsConfig, _t as FeedbackConfig, a as ApiReferenceRenderer, at as DocsSearchAdapterContext, b as DocsAnalyticsEventType, bt as LastUpdatedConfig, c as ChangelogFrontmatter, ct as DocsSearchConfig, d as CustomDocsSearchConfig, dt as DocsSearchQuery, et as DocsReviewScoreConfig, f as DocsAgentFeedbackContext, ft as DocsSearchResult, g as DocsAgentTraceStatus, gt as DocsTheme, h as DocsAgentTraceEventType, ht as DocsSitemapConfig, i as ApiReferenceConfig, it as DocsSearchAdapter, j as DocsCodeBlocksPlannerConfig, jt as OpenDocsTarget, k as DocsAskAIMcpConfig, kt as OpenDocsProviderConfig, l as CodeBlockCopyData, lt as DocsSearchDocument, m as DocsAgentTraceEventInput, mt as DocsSearchSourcePage, n as AgentFeedbackConfig, nt as DocsRobotsConfig, o as BreadcrumbConfig, ot as DocsSearchAdapterFactory, p as DocsAgentFeedbackData, pt as DocsSearchResultType, q as DocsObservabilityEvent, qt as SidebarTree, r as AlgoliaDocsSearchConfig, rt as DocsRobotsRule, s as ChangelogConfig, st as DocsSearchChunkingConfig, t as AIConfig, tt as DocsReviewSeverity, u as CopyMarkdownConfig, ut as DocsSearchEmbeddingsConfig, v as DocsAnalyticsEvent, vt as FontStyle, w as DocsAskAIActionType, wt as LlmsTxtSectionConfig, x as DocsAnalyticsInput, xt as LlmsTxtConfig, y as DocsAnalyticsEventInput, yt as GithubConfig, z as DocsFeedbackData, zt as ReadingTimeConfig } from "./types-Dg82p0Fm.mjs";
2
+ import { $ as createDocsAgentTraceId, A as resolveDocsSitemapRequest, C as buildDocsSitemapManifest, D as renderDocsSitemapXml, E as renderDocsSitemapMarkdown, I as PromptAction, J as DOCS_AGENT_TRACE_EVENT_TYPES, L as PromptProviderChoice, O as resolveDocsSitemapConfig, Q as createDocsAgentTraceContext, R as SerializeOpenDocsProviderOptions, S as DocsSitemapResolvedConfig, T as readDocsSitemapManifestFromContentMap, X as ResolvedDocsAnalyticsConfig, Y as DocsAgentTraceContext, Z as ResolvedDocsObservabilityConfig, _ as DEFAULT_SITEMAP_XML_ROUTE, a as createMcpSearchAdapter, at as DocsCloudAnalyticsOptions, b as DocsSitemapManifestPage, c as formatDocsAskAIPackageHints, d as resolveAskAISearchRequestConfig, et as emitDocsAgentTraceEvent, f as resolveSearchRequestConfig, g as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, h as DEFAULT_SITEMAP_MD_ROUTE, i as createCustomSearchAdapter, it as resolveDocsObservabilityConfig, j as toDocsSitemapMarkdownUrl, k as resolveDocsSitemapPageLastmod, l as inferDocsAskAIPackageHints, m as DEFAULT_SITEMAP_MD_DOCS_ROUTE, n as buildDocsSearchDocuments, nt as emitDocsObservabilityEvent, o as createSimpleSearchAdapter, ot as createDocsCloudAnalytics, p as DEFAULT_SITEMAP_MANIFEST_PATH, r as createAlgoliaSearchAdapter, rt as resolveDocsAnalyticsConfig, s as createTypesenseSearchAdapter, t as buildDocsAskAIContext, tt as emitDocsAnalyticsEvent, u as performDocsSearch, v as DocsSitemapFormat, w as createDocsSitemapResponse, x as DocsSitemapPageInput, y as DocsSitemapManifest, z as SerializedOpenDocsProvider } from "./search-G0otDMfP.mjs";
3
3
  import { DocsMcpPage, DocsMcpResolvedConfig } from "./mcp.mjs";
4
4
 
5
5
  //#region src/define-docs.d.ts
@@ -1,5 +1,5 @@
1
1
  import "./search-BL7o2rXk.mjs";
2
- import "./sitemap-server-BZHoJHqC.mjs";
2
+ import "./sitemap-server-idLUrmmU.mjs";
3
3
  import { createFilesystemDocsMcpSource, resolveDocsMcpConfig, runDocsMcpStdio } from "./mcp.mjs";
4
4
  import "./server.mjs";
5
5
  import { c as readNavTitle, f as resolveDocsConfigPath, n as extractObjectLiteral, o as readBooleanProperty, p as resolveDocsContentDir, u as readStringProperty } from "./config-B8wA38OC.mjs";
package/dist/mcp.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { H as DocsMcpConfig, K as DocsObservabilityConfig, Nt as OrderingItem, _ as DocsAnalyticsConfig, ct as DocsSearchConfig, mt as DocsSearchSourcePage } from "./types-hDUu4K7W.mjs";
1
+ import { H as DocsMcpConfig, K as DocsObservabilityConfig, Nt as OrderingItem, _ as DocsAnalyticsConfig, ct as DocsSearchConfig, mt as DocsSearchSourcePage } from "./types-Dg82p0Fm.mjs";
2
2
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
3
 
4
4
  //#region src/mcp.d.ts
package/dist/mcp.mjs CHANGED
@@ -394,9 +394,9 @@ const DOCS_CONFIG_SCHEMA_OPTIONS = [
394
394
  {
395
395
  path: "codeBlocks.validate.runner",
396
396
  name: "runner",
397
- type: "\"local\" | \"vercel-sandbox\" | \"cloud\" | DocsCodeBlocksRunnerConfig",
397
+ type: "\"local\" | \"vercel-sandbox\" | \"e2b\" | \"daytona\" | \"cloud\" | DocsCodeBlocksRunnerConfig",
398
398
  default: "local",
399
- description: "Runner used to execute planned snippets. The Vercel Sandbox runner can work from `VERCEL_TOKEN` alone by auto-discovering an accessible project."
399
+ description: "Runner used to execute planned snippets. Vercel Sandbox, E2B, and Daytona use provider tokens from env vars."
400
400
  },
401
401
  {
402
402
  path: "codeBlocks.validate.env",
@@ -1,5 +1,5 @@
1
1
  import { n as buildDocsSearchDocuments, r as createAlgoliaSearchAdapter, s as createTypesenseSearchAdapter } from "./search-BL7o2rXk.mjs";
2
- import "./sitemap-server-BZHoJHqC.mjs";
2
+ import "./sitemap-server-idLUrmmU.mjs";
3
3
  import { createFilesystemDocsMcpSource } from "./mcp.mjs";
4
4
  import "./server.mjs";
5
5
  import { a as loadProjectEnv, d as readTopLevelStringProperty, f as resolveDocsConfigPath, p as resolveDocsContentDir } from "./config-B8wA38OC.mjs";
@@ -1,4 +1,4 @@
1
- import { Bt as ResolvedDocsRelatedLink, J as DocsObservabilityEventInput, K as DocsObservabilityConfig, Ot as OpenDocsProvider, Tt as McpDocsSearchConfig, Xt as TypesenseDocsSearchConfig, _ as DocsAnalyticsConfig, ct as DocsSearchConfig, d as CustomDocsSearchConfig, ft as DocsSearchResult, ht as DocsSitemapConfig, it as DocsSearchAdapter, jt as OpenDocsTarget, k as DocsAskAIMcpConfig, lt as DocsSearchDocument, m as DocsAgentTraceEventInput, mt as DocsSearchSourcePage, ot as DocsSearchAdapterFactory, q as DocsObservabilityEvent, r as AlgoliaDocsSearchConfig, st as DocsSearchChunkingConfig, v as DocsAnalyticsEvent, y as DocsAnalyticsEventInput } from "./types-hDUu4K7W.mjs";
1
+ import { Bt as ResolvedDocsRelatedLink, J as DocsObservabilityEventInput, K as DocsObservabilityConfig, Ot as OpenDocsProvider, Tt as McpDocsSearchConfig, Xt as TypesenseDocsSearchConfig, _ as DocsAnalyticsConfig, ct as DocsSearchConfig, d as CustomDocsSearchConfig, ft as DocsSearchResult, ht as DocsSitemapConfig, it as DocsSearchAdapter, jt as OpenDocsTarget, k as DocsAskAIMcpConfig, lt as DocsSearchDocument, m as DocsAgentTraceEventInput, mt as DocsSearchSourcePage, ot as DocsSearchAdapterFactory, q as DocsObservabilityEvent, r as AlgoliaDocsSearchConfig, st as DocsSearchChunkingConfig, v as DocsAnalyticsEvent, y as DocsAnalyticsEventInput } from "./types-Dg82p0Fm.mjs";
2
2
 
3
3
  //#region src/cloud-analytics.d.ts
4
4
  interface DocsCloudAnalyticsOptions {
package/dist/server.d.mts CHANGED
@@ -1,7 +1,17 @@
1
- import { $ as DocsReviewRulesConfig, D as DocsAskAIFeedbackMessage, E as DocsAskAIFeedbackData, J as DocsObservabilityEventInput, K as DocsObservabilityConfig, O as DocsAskAIFeedbackValue, Q as DocsReviewConfig, R as DocsConfig, T as DocsAskAIFeedbackConfig, Tt as McpDocsSearchConfig, Z as DocsReviewCiMode, _ as DocsAnalyticsConfig, a as ApiReferenceRenderer, at as DocsSearchAdapterContext, ct as DocsSearchConfig, dt as DocsSearchQuery, ft as DocsSearchResult, g as DocsAgentTraceStatus, h as DocsAgentTraceEventType, ht as DocsSitemapConfig, it as DocsSearchAdapter, k as DocsAskAIMcpConfig, lt as DocsSearchDocument, m as DocsAgentTraceEventInput, mt as DocsSearchSourcePage, ot as DocsSearchAdapterFactory, q as DocsObservabilityEvent, v as DocsAnalyticsEvent, y as DocsAnalyticsEventInput } from "./types-hDUu4K7W.mjs";
2
- import { $ as createDocsAgentTraceId, A as resolveDocsSitemapRequest, B as normalizePromptProviderName, C as buildDocsSitemapManifest, D as renderDocsSitemapXml, E as renderDocsSitemapMarkdown, F as DEFAULT_PROMPT_PROVIDER_TEMPLATES, G as serializeDocsIconRegistry, H as resolvePromptProviderChoices, I as PromptAction, J as DOCS_AGENT_TRACE_EVENT_TYPES, K as serializeOpenDocsProvider, L as PromptProviderChoice, M as DEFAULT_OPEN_DOCS_PROMPT, N as DEFAULT_OPEN_DOCS_PROVIDER_IDS, O as resolveDocsSitemapConfig, P as DEFAULT_OPEN_DOCS_TARGET, Q as createDocsAgentTraceContext, R as SerializeOpenDocsProviderOptions, S as DocsSitemapResolvedConfig, T as readDocsSitemapManifestFromContentMap, U as sanitizePromptText, V as parsePromptStringArray, W as serializeDocsIcon, X as ResolvedDocsAnalyticsConfig, Y as DocsAgentTraceContext, Z as ResolvedDocsObservabilityConfig, _ as DEFAULT_SITEMAP_XML_ROUTE, a as createMcpSearchAdapter, at as DocsCloudAnalyticsOptions, b as DocsSitemapManifestPage, c as formatDocsAskAIPackageHints, d as resolveAskAISearchRequestConfig, et as emitDocsAgentTraceEvent, f as resolveSearchRequestConfig, g as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, h as DEFAULT_SITEMAP_MD_ROUTE, i as createCustomSearchAdapter, it as resolveDocsObservabilityConfig, j as toDocsSitemapMarkdownUrl, k as resolveDocsSitemapPageLastmod, l as inferDocsAskAIPackageHints, m as DEFAULT_SITEMAP_MD_DOCS_ROUTE, n as buildDocsSearchDocuments, nt as emitDocsObservabilityEvent, o as createSimpleSearchAdapter, ot as createDocsCloudAnalytics, p as DEFAULT_SITEMAP_MANIFEST_PATH, q as serializeOpenDocsProviders, r as createAlgoliaSearchAdapter, rt as resolveDocsAnalyticsConfig, s as createTypesenseSearchAdapter, t as buildDocsAskAIContext, tt as emitDocsAnalyticsEvent, u as performDocsSearch, v as DocsSitemapFormat, w as createDocsSitemapResponse, x as DocsSitemapPageInput, y as DocsSitemapManifest, z as SerializedOpenDocsProvider } from "./search-mF8wT9LQ.mjs";
1
+ import { $ as DocsReviewRulesConfig, D as DocsAskAIFeedbackMessage, E as DocsAskAIFeedbackData, J as DocsObservabilityEventInput, K as DocsObservabilityConfig, O as DocsAskAIFeedbackValue, Q as DocsReviewConfig, R as DocsConfig, T as DocsAskAIFeedbackConfig, Tt as McpDocsSearchConfig, Z as DocsReviewCiMode, _ as DocsAnalyticsConfig, a as ApiReferenceRenderer, at as DocsSearchAdapterContext, ct as DocsSearchConfig, dt as DocsSearchQuery, ft as DocsSearchResult, g as DocsAgentTraceStatus, h as DocsAgentTraceEventType, ht as DocsSitemapConfig, it as DocsSearchAdapter, k as DocsAskAIMcpConfig, lt as DocsSearchDocument, m as DocsAgentTraceEventInput, mt as DocsSearchSourcePage, ot as DocsSearchAdapterFactory, q as DocsObservabilityEvent, v as DocsAnalyticsEvent, y as DocsAnalyticsEventInput } from "./types-Dg82p0Fm.mjs";
2
+ import { $ as createDocsAgentTraceId, A as resolveDocsSitemapRequest, B as normalizePromptProviderName, C as buildDocsSitemapManifest, D as renderDocsSitemapXml, E as renderDocsSitemapMarkdown, F as DEFAULT_PROMPT_PROVIDER_TEMPLATES, G as serializeDocsIconRegistry, H as resolvePromptProviderChoices, I as PromptAction, J as DOCS_AGENT_TRACE_EVENT_TYPES, K as serializeOpenDocsProvider, L as PromptProviderChoice, M as DEFAULT_OPEN_DOCS_PROMPT, N as DEFAULT_OPEN_DOCS_PROVIDER_IDS, O as resolveDocsSitemapConfig, P as DEFAULT_OPEN_DOCS_TARGET, Q as createDocsAgentTraceContext, R as SerializeOpenDocsProviderOptions, S as DocsSitemapResolvedConfig, T as readDocsSitemapManifestFromContentMap, U as sanitizePromptText, V as parsePromptStringArray, W as serializeDocsIcon, X as ResolvedDocsAnalyticsConfig, Y as DocsAgentTraceContext, Z as ResolvedDocsObservabilityConfig, _ as DEFAULT_SITEMAP_XML_ROUTE, a as createMcpSearchAdapter, at as DocsCloudAnalyticsOptions, b as DocsSitemapManifestPage, c as formatDocsAskAIPackageHints, d as resolveAskAISearchRequestConfig, et as emitDocsAgentTraceEvent, f as resolveSearchRequestConfig, g as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, h as DEFAULT_SITEMAP_MD_ROUTE, i as createCustomSearchAdapter, it as resolveDocsObservabilityConfig, j as toDocsSitemapMarkdownUrl, k as resolveDocsSitemapPageLastmod, l as inferDocsAskAIPackageHints, m as DEFAULT_SITEMAP_MD_DOCS_ROUTE, n as buildDocsSearchDocuments, nt as emitDocsObservabilityEvent, o as createSimpleSearchAdapter, ot as createDocsCloudAnalytics, p as DEFAULT_SITEMAP_MANIFEST_PATH, q as serializeOpenDocsProviders, r as createAlgoliaSearchAdapter, rt as resolveDocsAnalyticsConfig, s as createTypesenseSearchAdapter, t as buildDocsAskAIContext, tt as emitDocsAnalyticsEvent, u as performDocsSearch, v as DocsSitemapFormat, w as createDocsSitemapResponse, x as DocsSitemapPageInput, y as DocsSitemapManifest, z as SerializedOpenDocsProvider } from "./search-G0otDMfP.mjs";
3
3
  import { DocsMcpCodeExample, DocsMcpConfigSchema, DocsMcpConfigSchemaOption, DocsMcpDocsList, DocsMcpDocsPageSummary, DocsMcpDocsSection, DocsMcpHttpHandlers, DocsMcpNavigationNode, DocsMcpNavigationTree, DocsMcpPage, DocsMcpResolvedConfig, DocsMcpSource, createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, normalizeDocsMcpRoute, resolveDocsMcpConfig, runDocsMcpStdio } from "./mcp.mjs";
4
4
 
5
+ //#region src/code-group-mdx.d.ts
6
+ interface MarkdownNode {
7
+ type: string;
8
+ name?: string;
9
+ children?: MarkdownNode[];
10
+ lang?: string | null;
11
+ meta?: string | null;
12
+ }
13
+ declare function remarkCodeGroup(): (tree: MarkdownNode) => void;
14
+ //#endregion
5
15
  //#region src/api-reference.d.ts
6
16
  type HttpMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "OPTIONS" | "HEAD";
7
17
  type ApiReferenceFramework = "next" | "tanstack-start" | "sveltekit" | "astro" | "nuxt";
@@ -121,4 +131,4 @@ declare function buildDocsReviewWorkflowPathFilters(options: {
121
131
  //#region src/sitemap-server.d.ts
122
132
  declare function readDocsSitemapManifest(rootDir: string, sitemap?: boolean | DocsSitemapConfig): DocsSitemapManifest | null;
123
133
  //#endregion
124
- export { type ApiReferenceFramework, type ApiReferenceOpenApiDiscovery, type ApiReferenceRenderer, type ApiReferenceRoute, DEFAULT_API_REFERENCE_OPENAPI_ROUTE, DEFAULT_DOCS_REVIEW_SCORE_THRESHOLD, DEFAULT_DOCS_REVIEW_WORKFLOW_PATH, DEFAULT_OPEN_DOCS_PROMPT, DEFAULT_OPEN_DOCS_PROVIDER_IDS, DEFAULT_OPEN_DOCS_TARGET, DEFAULT_PROMPT_PROVIDER_TEMPLATES, DEFAULT_SITEMAP_MANIFEST_PATH, DEFAULT_SITEMAP_MD_DOCS_ROUTE, DEFAULT_SITEMAP_MD_ROUTE, DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, DEFAULT_SITEMAP_XML_ROUTE, DOCS_AGENT_TRACE_EVENT_TYPES, type DocsAgentTraceContext, type DocsAgentTraceEventInput, type DocsAgentTraceEventType, type DocsAgentTraceStatus, type DocsAnalyticsConfig, type DocsAnalyticsEvent, type DocsAnalyticsEventInput, type DocsAskAIFeedbackConfig, type DocsAskAIFeedbackData, type DocsAskAIFeedbackMessage, type DocsAskAIFeedbackValue, type DocsAskAIMcpConfig, type DocsCloudAnalyticsOptions, type DocsMcpCodeExample, type DocsMcpConfigSchema, type DocsMcpConfigSchemaOption, type DocsMcpDocsList, type DocsMcpDocsPageSummary, type DocsMcpDocsSection, type DocsMcpHttpHandlers, type DocsMcpNavigationNode, type DocsMcpNavigationTree, type DocsMcpPage, type DocsMcpResolvedConfig, type DocsMcpSource, type DocsObservabilityConfig, type DocsObservabilityEvent, type DocsObservabilityEventInput, type DocsSearchAdapter, type DocsSearchAdapterContext, type DocsSearchAdapterFactory, type DocsSearchConfig, type DocsSearchDocument, type DocsSearchQuery, type DocsSearchResult, type DocsSearchSourcePage, type DocsSitemapFormat, type DocsSitemapManifest, type DocsSitemapManifestPage, type DocsSitemapPageInput, type DocsSitemapResolvedConfig, type McpDocsSearchConfig, type PromptAction, type PromptProviderChoice, type ResolvedApiReferenceConfig, type ResolvedDocsAnalyticsConfig, type ResolvedDocsObservabilityConfig, type ResolvedDocsReviewConfig, type SerializeOpenDocsProviderOptions, type SerializedOpenDocsProvider, buildApiReferenceHtmlDocument, buildApiReferenceHtmlDocumentAsync, buildApiReferenceOpenApiDocument, buildApiReferenceOpenApiDocumentAsync, buildApiReferencePageTitle, buildApiReferenceScalarCss, buildDocsAskAIContext, buildDocsReviewWorkflow, buildDocsReviewWorkflowPathFilters, buildDocsSearchDocuments, buildDocsSitemapManifest, createAlgoliaSearchAdapter, createCustomSearchAdapter, createDocsAgentTraceContext, createDocsAgentTraceId, createDocsCloudAnalytics, createDocsMcpHttpHandler, createDocsMcpServer, createDocsSitemapResponse, createFilesystemDocsMcpSource, createMcpSearchAdapter, createSimpleSearchAdapter, createTypesenseSearchAdapter, emitDocsAgentTraceEvent, emitDocsAnalyticsEvent, emitDocsObservabilityEvent, ensureDocsReviewWorkflow, formatDocsAskAIPackageHints, inferDocsAskAIPackageHints, isApiReferenceOpenApiRequest, normalizeDocsMcpRoute, normalizePromptProviderName, parsePromptStringArray, performDocsSearch, readDocsReviewConfigFromSource, readDocsSitemapManifest, readDocsSitemapManifestFromContentMap, renderDocsSitemapMarkdown, renderDocsSitemapXml, resolveApiReferenceConfig, resolveApiReferenceOpenApiDiscovery, resolveApiReferenceRenderer, resolveAskAISearchRequestConfig, resolveDocsAnalyticsConfig, resolveDocsMcpConfig, resolveDocsObservabilityConfig, resolveDocsReviewConfig, resolveDocsSitemapConfig, resolveDocsSitemapPageLastmod, resolveDocsSitemapRequest, resolvePromptProviderChoices, resolveSearchRequestConfig, runDocsMcpStdio, sanitizePromptText, serializeDocsIcon, serializeDocsIconRegistry, serializeOpenDocsProvider, serializeOpenDocsProviders, toDocsSitemapMarkdownUrl };
134
+ export { type ApiReferenceFramework, type ApiReferenceOpenApiDiscovery, type ApiReferenceRenderer, type ApiReferenceRoute, DEFAULT_API_REFERENCE_OPENAPI_ROUTE, DEFAULT_DOCS_REVIEW_SCORE_THRESHOLD, DEFAULT_DOCS_REVIEW_WORKFLOW_PATH, DEFAULT_OPEN_DOCS_PROMPT, DEFAULT_OPEN_DOCS_PROVIDER_IDS, DEFAULT_OPEN_DOCS_TARGET, DEFAULT_PROMPT_PROVIDER_TEMPLATES, DEFAULT_SITEMAP_MANIFEST_PATH, DEFAULT_SITEMAP_MD_DOCS_ROUTE, DEFAULT_SITEMAP_MD_ROUTE, DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, DEFAULT_SITEMAP_XML_ROUTE, DOCS_AGENT_TRACE_EVENT_TYPES, type DocsAgentTraceContext, type DocsAgentTraceEventInput, type DocsAgentTraceEventType, type DocsAgentTraceStatus, type DocsAnalyticsConfig, type DocsAnalyticsEvent, type DocsAnalyticsEventInput, type DocsAskAIFeedbackConfig, type DocsAskAIFeedbackData, type DocsAskAIFeedbackMessage, type DocsAskAIFeedbackValue, type DocsAskAIMcpConfig, type DocsCloudAnalyticsOptions, type DocsMcpCodeExample, type DocsMcpConfigSchema, type DocsMcpConfigSchemaOption, type DocsMcpDocsList, type DocsMcpDocsPageSummary, type DocsMcpDocsSection, type DocsMcpHttpHandlers, type DocsMcpNavigationNode, type DocsMcpNavigationTree, type DocsMcpPage, type DocsMcpResolvedConfig, type DocsMcpSource, type DocsObservabilityConfig, type DocsObservabilityEvent, type DocsObservabilityEventInput, type DocsSearchAdapter, type DocsSearchAdapterContext, type DocsSearchAdapterFactory, type DocsSearchConfig, type DocsSearchDocument, type DocsSearchQuery, type DocsSearchResult, type DocsSearchSourcePage, type DocsSitemapFormat, type DocsSitemapManifest, type DocsSitemapManifestPage, type DocsSitemapPageInput, type DocsSitemapResolvedConfig, type McpDocsSearchConfig, type PromptAction, type PromptProviderChoice, type ResolvedApiReferenceConfig, type ResolvedDocsAnalyticsConfig, type ResolvedDocsObservabilityConfig, type ResolvedDocsReviewConfig, type SerializeOpenDocsProviderOptions, type SerializedOpenDocsProvider, buildApiReferenceHtmlDocument, buildApiReferenceHtmlDocumentAsync, buildApiReferenceOpenApiDocument, buildApiReferenceOpenApiDocumentAsync, buildApiReferencePageTitle, buildApiReferenceScalarCss, buildDocsAskAIContext, buildDocsReviewWorkflow, buildDocsReviewWorkflowPathFilters, buildDocsSearchDocuments, buildDocsSitemapManifest, createAlgoliaSearchAdapter, createCustomSearchAdapter, createDocsAgentTraceContext, createDocsAgentTraceId, createDocsCloudAnalytics, createDocsMcpHttpHandler, createDocsMcpServer, createDocsSitemapResponse, createFilesystemDocsMcpSource, createMcpSearchAdapter, createSimpleSearchAdapter, createTypesenseSearchAdapter, emitDocsAgentTraceEvent, emitDocsAnalyticsEvent, emitDocsObservabilityEvent, ensureDocsReviewWorkflow, formatDocsAskAIPackageHints, inferDocsAskAIPackageHints, isApiReferenceOpenApiRequest, normalizeDocsMcpRoute, normalizePromptProviderName, parsePromptStringArray, performDocsSearch, readDocsReviewConfigFromSource, readDocsSitemapManifest, readDocsSitemapManifestFromContentMap, remarkCodeGroup, renderDocsSitemapMarkdown, renderDocsSitemapXml, resolveApiReferenceConfig, resolveApiReferenceOpenApiDiscovery, resolveApiReferenceRenderer, resolveAskAISearchRequestConfig, resolveDocsAnalyticsConfig, resolveDocsMcpConfig, resolveDocsObservabilityConfig, resolveDocsReviewConfig, resolveDocsSitemapConfig, resolveDocsSitemapPageLastmod, resolveDocsSitemapRequest, resolvePromptProviderChoices, resolveSearchRequestConfig, runDocsMcpStdio, sanitizePromptText, serializeDocsIcon, serializeDocsIconRegistry, serializeOpenDocsProvider, serializeOpenDocsProviders, toDocsSitemapMarkdownUrl };
package/dist/server.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { A as resolveDocsAnalyticsConfig, D as emitDocsAgentTraceEvent, E as createDocsAgentTraceId, M as createDocsCloudAnalytics, O as emitDocsAnalyticsEvent, T as createDocsAgentTraceContext, a as createMcpSearchAdapter, c as formatDocsAskAIPackageHints, d as resolveAskAISearchRequestConfig, f as resolveSearchRequestConfig, i as createCustomSearchAdapter, j as resolveDocsObservabilityConfig, k as emitDocsObservabilityEvent, l as inferDocsAskAIPackageHints, n as buildDocsSearchDocuments, o as createSimpleSearchAdapter, r as createAlgoliaSearchAdapter, s as createTypesenseSearchAdapter, t as buildDocsAskAIContext, u as performDocsSearch, w as DOCS_AGENT_TRACE_EVENT_TYPES } from "./search-BL7o2rXk.mjs";
2
2
  import { a as DEFAULT_SITEMAP_XML_ROUTE, c as readDocsSitemapManifestFromContentMap, d as resolveDocsSitemapConfig, f as resolveDocsSitemapPageLastmod, i as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, l as renderDocsSitemapMarkdown, m as toDocsSitemapMarkdownUrl, n as DEFAULT_SITEMAP_MD_DOCS_ROUTE, o as buildDocsSitemapManifest, p as resolveDocsSitemapRequest, r as DEFAULT_SITEMAP_MD_ROUTE, s as createDocsSitemapResponse, t as DEFAULT_SITEMAP_MANIFEST_PATH, u as renderDocsSitemapXml } from "./sitemap-CMNj0Pt3.mjs";
3
- import { C as resolveApiReferenceOpenApiDiscovery, S as resolveApiReferenceConfig, _ as buildApiReferenceOpenApiDocument, a as DEFAULT_PROMPT_PROVIDER_TEMPLATES, b as buildApiReferenceScalarCss, c as resolvePromptProviderChoices, d as serializeDocsIconRegistry, f as serializeOpenDocsProvider, g as buildApiReferenceHtmlDocumentAsync, h as buildApiReferenceHtmlDocument, i as DEFAULT_OPEN_DOCS_TARGET, l as sanitizePromptText, m as DEFAULT_API_REFERENCE_OPENAPI_ROUTE, n as DEFAULT_OPEN_DOCS_PROMPT, o as normalizePromptProviderName, p as serializeOpenDocsProviders, r as DEFAULT_OPEN_DOCS_PROVIDER_IDS, s as parsePromptStringArray, t as readDocsSitemapManifest, u as serializeDocsIcon, v as buildApiReferenceOpenApiDocumentAsync, w as resolveApiReferenceRenderer, x as isApiReferenceOpenApiRequest, y as buildApiReferencePageTitle } from "./sitemap-server-BZHoJHqC.mjs";
3
+ import { C as resolveApiReferenceOpenApiDiscovery, S as resolveApiReferenceConfig, T as remarkCodeGroup, _ as buildApiReferenceOpenApiDocument, a as DEFAULT_PROMPT_PROVIDER_TEMPLATES, b as buildApiReferenceScalarCss, c as resolvePromptProviderChoices, d as serializeDocsIconRegistry, f as serializeOpenDocsProvider, g as buildApiReferenceHtmlDocumentAsync, h as buildApiReferenceHtmlDocument, i as DEFAULT_OPEN_DOCS_TARGET, l as sanitizePromptText, m as DEFAULT_API_REFERENCE_OPENAPI_ROUTE, n as DEFAULT_OPEN_DOCS_PROMPT, o as normalizePromptProviderName, p as serializeOpenDocsProviders, r as DEFAULT_OPEN_DOCS_PROVIDER_IDS, s as parsePromptStringArray, t as readDocsSitemapManifest, u as serializeDocsIcon, v as buildApiReferenceOpenApiDocumentAsync, w as resolveApiReferenceRenderer, x as isApiReferenceOpenApiRequest, y as buildApiReferencePageTitle } from "./sitemap-server-idLUrmmU.mjs";
4
4
  import { a as ensureDocsReviewWorkflow, i as buildDocsReviewWorkflowPathFilters, n as DEFAULT_DOCS_REVIEW_WORKFLOW_PATH, o as readDocsReviewConfigFromSource, r as buildDocsReviewWorkflow, s as resolveDocsReviewConfig, t as DEFAULT_DOCS_REVIEW_SCORE_THRESHOLD } from "./review-B7goPYUb.mjs";
5
5
  import { createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, normalizeDocsMcpRoute, resolveDocsMcpConfig, runDocsMcpStdio } from "./mcp.mjs";
6
6
 
7
- export { DEFAULT_API_REFERENCE_OPENAPI_ROUTE, DEFAULT_DOCS_REVIEW_SCORE_THRESHOLD, DEFAULT_DOCS_REVIEW_WORKFLOW_PATH, DEFAULT_OPEN_DOCS_PROMPT, DEFAULT_OPEN_DOCS_PROVIDER_IDS, DEFAULT_OPEN_DOCS_TARGET, DEFAULT_PROMPT_PROVIDER_TEMPLATES, DEFAULT_SITEMAP_MANIFEST_PATH, DEFAULT_SITEMAP_MD_DOCS_ROUTE, DEFAULT_SITEMAP_MD_ROUTE, DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, DEFAULT_SITEMAP_XML_ROUTE, DOCS_AGENT_TRACE_EVENT_TYPES, buildApiReferenceHtmlDocument, buildApiReferenceHtmlDocumentAsync, buildApiReferenceOpenApiDocument, buildApiReferenceOpenApiDocumentAsync, buildApiReferencePageTitle, buildApiReferenceScalarCss, buildDocsAskAIContext, buildDocsReviewWorkflow, buildDocsReviewWorkflowPathFilters, buildDocsSearchDocuments, buildDocsSitemapManifest, createAlgoliaSearchAdapter, createCustomSearchAdapter, createDocsAgentTraceContext, createDocsAgentTraceId, createDocsCloudAnalytics, createDocsMcpHttpHandler, createDocsMcpServer, createDocsSitemapResponse, createFilesystemDocsMcpSource, createMcpSearchAdapter, createSimpleSearchAdapter, createTypesenseSearchAdapter, emitDocsAgentTraceEvent, emitDocsAnalyticsEvent, emitDocsObservabilityEvent, ensureDocsReviewWorkflow, formatDocsAskAIPackageHints, inferDocsAskAIPackageHints, isApiReferenceOpenApiRequest, normalizeDocsMcpRoute, normalizePromptProviderName, parsePromptStringArray, performDocsSearch, readDocsReviewConfigFromSource, readDocsSitemapManifest, readDocsSitemapManifestFromContentMap, renderDocsSitemapMarkdown, renderDocsSitemapXml, resolveApiReferenceConfig, resolveApiReferenceOpenApiDiscovery, resolveApiReferenceRenderer, resolveAskAISearchRequestConfig, resolveDocsAnalyticsConfig, resolveDocsMcpConfig, resolveDocsObservabilityConfig, resolveDocsReviewConfig, resolveDocsSitemapConfig, resolveDocsSitemapPageLastmod, resolveDocsSitemapRequest, resolvePromptProviderChoices, resolveSearchRequestConfig, runDocsMcpStdio, sanitizePromptText, serializeDocsIcon, serializeDocsIconRegistry, serializeOpenDocsProvider, serializeOpenDocsProviders, toDocsSitemapMarkdownUrl };
7
+ export { DEFAULT_API_REFERENCE_OPENAPI_ROUTE, DEFAULT_DOCS_REVIEW_SCORE_THRESHOLD, DEFAULT_DOCS_REVIEW_WORKFLOW_PATH, DEFAULT_OPEN_DOCS_PROMPT, DEFAULT_OPEN_DOCS_PROVIDER_IDS, DEFAULT_OPEN_DOCS_TARGET, DEFAULT_PROMPT_PROVIDER_TEMPLATES, DEFAULT_SITEMAP_MANIFEST_PATH, DEFAULT_SITEMAP_MD_DOCS_ROUTE, DEFAULT_SITEMAP_MD_ROUTE, DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, DEFAULT_SITEMAP_XML_ROUTE, DOCS_AGENT_TRACE_EVENT_TYPES, buildApiReferenceHtmlDocument, buildApiReferenceHtmlDocumentAsync, buildApiReferenceOpenApiDocument, buildApiReferenceOpenApiDocumentAsync, buildApiReferencePageTitle, buildApiReferenceScalarCss, buildDocsAskAIContext, buildDocsReviewWorkflow, buildDocsReviewWorkflowPathFilters, buildDocsSearchDocuments, buildDocsSitemapManifest, createAlgoliaSearchAdapter, createCustomSearchAdapter, createDocsAgentTraceContext, createDocsAgentTraceId, createDocsCloudAnalytics, createDocsMcpHttpHandler, createDocsMcpServer, createDocsSitemapResponse, createFilesystemDocsMcpSource, createMcpSearchAdapter, createSimpleSearchAdapter, createTypesenseSearchAdapter, emitDocsAgentTraceEvent, emitDocsAnalyticsEvent, emitDocsObservabilityEvent, ensureDocsReviewWorkflow, formatDocsAskAIPackageHints, inferDocsAskAIPackageHints, isApiReferenceOpenApiRequest, normalizeDocsMcpRoute, normalizePromptProviderName, parsePromptStringArray, performDocsSearch, readDocsReviewConfigFromSource, readDocsSitemapManifest, readDocsSitemapManifestFromContentMap, remarkCodeGroup, renderDocsSitemapMarkdown, renderDocsSitemapXml, resolveApiReferenceConfig, resolveApiReferenceOpenApiDiscovery, resolveApiReferenceRenderer, resolveAskAISearchRequestConfig, resolveDocsAnalyticsConfig, resolveDocsMcpConfig, resolveDocsObservabilityConfig, resolveDocsReviewConfig, resolveDocsSitemapConfig, resolveDocsSitemapPageLastmod, resolveDocsSitemapRequest, resolvePromptProviderChoices, resolveSearchRequestConfig, runDocsMcpStdio, sanitizePromptText, serializeDocsIcon, serializeDocsIconRegistry, serializeOpenDocsProvider, serializeOpenDocsProviders, toDocsSitemapMarkdownUrl };
@@ -1,6 +1,6 @@
1
1
  import "./search-BL7o2rXk.mjs";
2
2
  import { d as resolveDocsSitemapConfig, l as renderDocsSitemapMarkdown, o as buildDocsSitemapManifest, u as renderDocsSitemapXml } from "./sitemap-CMNj0Pt3.mjs";
3
- import "./sitemap-server-BZHoJHqC.mjs";
3
+ import "./sitemap-server-idLUrmmU.mjs";
4
4
  import { createFilesystemDocsMcpSource } from "./mcp.mjs";
5
5
  import "./server.mjs";
6
6
  import { c as readNavTitle, d as readTopLevelStringProperty, f as resolveDocsConfigPath, i as loadDocsConfigModule, o as readBooleanProperty, p as resolveDocsContentDir, t as extractNestedObjectLiteral, u as readStringProperty } from "./config-B8wA38OC.mjs";
@@ -4,6 +4,62 @@ import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
4
4
  import path, { basename, join, relative } from "node:path";
5
5
  import { getHtmlDocument } from "@scalar/core/libs/html-rendering";
6
6
 
7
+ //#region src/code-group-mdx.ts
8
+ const codeGroupTitleAttributes = [
9
+ "title",
10
+ "filename",
11
+ "file",
12
+ "name",
13
+ "label"
14
+ ];
15
+ const ignoredBareMetaTokens = new Set([
16
+ "copy",
17
+ "no-copy",
18
+ "nocopy",
19
+ "line-numbers",
20
+ "linenumbers",
21
+ "runnable",
22
+ "show-line-numbers",
23
+ "showlinenumbers",
24
+ "wrap"
25
+ ]);
26
+ function escapeMetaAttribute(value) {
27
+ return value.replace(/\\/g, "\\\\").replace(/"/g, "\\\"");
28
+ }
29
+ function readCodeGroupTitleAttribute(meta) {
30
+ for (const name of codeGroupTitleAttributes) {
31
+ const match = meta.match(new RegExp(`(?:^|\\s)${name}=["']([^"']+)["']`));
32
+ if (match?.[1]?.trim()) return match[1].trim();
33
+ }
34
+ }
35
+ function readBareCodeGroupTitle(meta) {
36
+ return meta.replace(/\{[^}]*\}/g, " ").split(/\s+/).find((part) => part && !part.includes("=") && !ignoredBareMetaTokens.has(part.toLowerCase()))?.replace(/^["']|["']$/g, "");
37
+ }
38
+ function resolveCodeGroupCodeTitle(meta) {
39
+ const trimmed = meta?.trim();
40
+ if (!trimmed) return void 0;
41
+ return readCodeGroupTitleAttribute(trimmed) ?? readBareCodeGroupTitle(trimmed);
42
+ }
43
+ function ensureCodeGroupCodeTitle(node) {
44
+ const title = resolveCodeGroupCodeTitle(node.meta);
45
+ if (!title) return;
46
+ const meta = node.meta?.trim() ?? "";
47
+ if (/(?:^|\s)title=["']/.test(meta)) return;
48
+ node.meta = `title="${escapeMetaAttribute(title)}"${meta ? ` ${meta}` : ""}`;
49
+ }
50
+ function visitCodeGroups(node) {
51
+ if (node.type === "mdxJsxFlowElement" && node.name === "CodeGroup") {
52
+ for (const child of node.children ?? []) if (child.type === "code") ensureCodeGroupCodeTitle(child);
53
+ }
54
+ for (const child of node.children ?? []) visitCodeGroups(child);
55
+ }
56
+ function remarkCodeGroup() {
57
+ return (tree) => {
58
+ visitCodeGroups(tree);
59
+ };
60
+ }
61
+
62
+ //#endregion
7
63
  //#region src/api-reference.ts
8
64
  const NEXT_ROUTE_FILE_RE = /^route\.(ts|tsx|js|jsx)$/;
9
65
  const SVELTE_ROUTE_FILE_RE = /^\+server\.(ts|js)$/;
@@ -1071,4 +1127,4 @@ function readDocsSitemapManifest(rootDir, sitemap) {
1071
1127
  }
1072
1128
 
1073
1129
  //#endregion
1074
- export { resolveApiReferenceOpenApiDiscovery as C, resolveApiReferenceConfig as S, buildApiReferenceOpenApiDocument as _, DEFAULT_PROMPT_PROVIDER_TEMPLATES as a, buildApiReferenceScalarCss as b, resolvePromptProviderChoices as c, serializeDocsIconRegistry as d, serializeOpenDocsProvider as f, buildApiReferenceHtmlDocumentAsync as g, buildApiReferenceHtmlDocument as h, DEFAULT_OPEN_DOCS_TARGET as i, sanitizePromptText as l, DEFAULT_API_REFERENCE_OPENAPI_ROUTE as m, DEFAULT_OPEN_DOCS_PROMPT as n, normalizePromptProviderName as o, serializeOpenDocsProviders as p, DEFAULT_OPEN_DOCS_PROVIDER_IDS as r, parsePromptStringArray as s, readDocsSitemapManifest as t, serializeDocsIcon as u, buildApiReferenceOpenApiDocumentAsync as v, resolveApiReferenceRenderer as w, isApiReferenceOpenApiRequest as x, buildApiReferencePageTitle as y };
1130
+ export { resolveApiReferenceOpenApiDiscovery as C, resolveApiReferenceConfig as S, remarkCodeGroup as T, buildApiReferenceOpenApiDocument as _, DEFAULT_PROMPT_PROVIDER_TEMPLATES as a, buildApiReferenceScalarCss as b, resolvePromptProviderChoices as c, serializeDocsIconRegistry as d, serializeOpenDocsProvider as f, buildApiReferenceHtmlDocumentAsync as g, buildApiReferenceHtmlDocument as h, DEFAULT_OPEN_DOCS_TARGET as i, sanitizePromptText as l, DEFAULT_API_REFERENCE_OPENAPI_ROUTE as m, DEFAULT_OPEN_DOCS_PROMPT as n, normalizePromptProviderName as o, serializeOpenDocsProviders as p, DEFAULT_OPEN_DOCS_PROVIDER_IDS as r, parsePromptStringArray as s, readDocsSitemapManifest as t, serializeDocsIcon as u, buildApiReferenceOpenApiDocumentAsync as v, resolveApiReferenceRenderer as w, isApiReferenceOpenApiRequest as x, buildApiReferencePageTitle as y };
@@ -2121,7 +2121,7 @@ interface DocsReviewConfig {
2121
2121
  rules?: DocsReviewRulesConfig;
2122
2122
  }
2123
2123
  type DocsCodeBlocksPlannerProvider = "metadata" | "openai" | "openai-compatible" | "cloud";
2124
- type DocsCodeBlocksRunnerProvider = "local" | "vercel-sandbox" | "cloud";
2124
+ type DocsCodeBlocksRunnerProvider = "local" | "vercel-sandbox" | "e2b" | "daytona" | "cloud";
2125
2125
  type DocsCodeBlocksValidationMode = "plan" | "report";
2126
2126
  type DocsCodeBlocksValidationPolicy = "skip" | "warn" | "error";
2127
2127
  interface DocsCodeBlocksPlannerConfig {
@@ -2154,7 +2154,7 @@ interface DocsCodeBlocksRunnerConfig {
2154
2154
  * @default "local"
2155
2155
  */
2156
2156
  provider?: DocsCodeBlocksRunnerProvider;
2157
- /** Environment variable containing the Vercel token for `provider: "vercel-sandbox"`. */
2157
+ /** Environment variable containing the sandbox provider token. */
2158
2158
  tokenEnv?: string;
2159
2159
  /** Advanced override for the Vercel project id env var used by `provider: "vercel-sandbox"`. */
2160
2160
  projectIdEnv?: string;
@@ -2171,6 +2171,10 @@ interface DocsCodeBlocksRunnerConfig {
2171
2171
  projectJson?: string | false;
2172
2172
  /** Vercel Sandbox runtime. */
2173
2173
  runtime?: "node24" | "node22" | "python3.13";
2174
+ /** Daytona API URL env var used by `provider: "daytona"`. */
2175
+ apiUrlEnv?: string;
2176
+ /** Daytona target/region env var used by `provider: "daytona"`. */
2177
+ targetEnv?: string;
2174
2178
  /** Per-command timeout in milliseconds. */
2175
2179
  timeoutMs?: number;
2176
2180
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@farming-labs/docs",
3
- "version": "0.1.124",
3
+ "version": "0.1.126",
4
4
  "description": "Modern, flexible MDX-based docs framework — core types, config, and CLI",
5
5
  "keywords": [
6
6
  "docs",