@farming-labs/docs 0.2.65 → 0.2.67

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 (37) hide show
  1. package/dist/{agent-CQTH7NFu.mjs → agent-B81ztzxZ.mjs} +2 -2
  2. package/dist/{agent-DKKptIgy.mjs → agent-CcR8_Yyd.mjs} +1 -1
  3. package/dist/{agent-evals-B7MIxuEX.mjs → agent-evals-Bn_dA1_A.mjs} +1 -1
  4. package/dist/{agent-export-CBgWgPvH.mjs → agent-export-COoZT--d.mjs} +7 -7
  5. package/dist/agent-skills-bundle.d.mts +1 -1
  6. package/dist/{agent-skills-server-CPja6Syt.d.mts → agent-skills-server-CHvqnM4R.d.mts} +2 -2
  7. package/dist/{agent-skills-server-DraIb6FV.mjs → agent-skills-server-Cuoqu8Jv.mjs} +1 -1
  8. package/dist/agent-skills-vite.d.mts +3 -3
  9. package/dist/agent-skills-vite.mjs +2 -2
  10. package/dist/{agents-XWZBub6f.mjs → agents-BZ_hXI_Z.mjs} +6 -6
  11. package/dist/cli/index.mjs +14 -14
  12. package/dist/client/react.d.mts +1 -1
  13. package/dist/{cloud-ask-ai-zpwkdwnF.d.mts → cloud-ask-ai-BD1SeVZv.d.mts} +1 -1
  14. package/dist/docs-cloud-server.d.mts +2 -2
  15. package/dist/{doctor-DtGYZ41i.mjs → doctor-C3NA15Kd.mjs} +36 -12
  16. package/dist/{golden-evaluations-Dj-9Eo3v.mjs → golden-evaluations-D7lSUeQl.mjs} +1 -1
  17. package/dist/index.d.mts +9 -5
  18. package/dist/index.mjs +7 -7
  19. package/dist/{mcp-B9dcsivk.mjs → mcp-jGoU4pLD.mjs} +6 -6
  20. package/dist/mcp.d.mts +2 -2
  21. package/dist/mcp.mjs +314 -14
  22. package/dist/{metadata-DWExHQnx.mjs → metadata-Cna0CtWZ.mjs} +1 -1
  23. package/dist/{reading-time-CYZ5VvKU.mjs → reading-time-DsyUuHR4.mjs} +3 -3
  24. package/dist/{review-CLoHTywU.mjs → review-CUo6iXMw.mjs} +6 -6
  25. package/dist/{robots-BIpC4j4P.mjs → robots-DonzDfBW.mjs} +91 -23
  26. package/dist/{robots-CUTahhoY.mjs → robots-rzriLh_d.mjs} +18 -8
  27. package/dist/{search-CaSyi6H6.d.mts → search-B-BfnROL.d.mts} +2 -2
  28. package/dist/{search-DSjCeOk7.mjs → search-B_CixCu9.mjs} +6 -6
  29. package/dist/{search-B6V6qtiI.mjs → search-D0A9lRGJ.mjs} +1 -1
  30. package/dist/server.d.mts +4 -4
  31. package/dist/server.mjs +6 -6
  32. package/dist/{sitemap-Cykpe3Tz.mjs → sitemap-B4mIK0ka.mjs} +6 -6
  33. package/dist/{sitemap-server-C_6Wes83.mjs → sitemap-server-atbbiVzW.mjs} +1 -1
  34. package/dist/{standards-discovery-jkykaXq1.mjs → standards-discovery-C7p5lBhc.mjs} +314 -37
  35. package/dist/{standards-discovery-C4HUqMd2.d.mts → standards-discovery-iOmUel-o.d.mts} +21 -38
  36. package/dist/{types-lMBIdZg0.d.mts → types-BQC05SQm.d.mts} +203 -9
  37. package/package.json +1 -1
package/dist/mcp.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { a as emitDocsAnalyticsEvent, i as emitDocsAgentTraceEvent, n as createDocsAgentTraceContext, r as createDocsAgentTraceId } from "./analytics-Bx44lg6d.mjs";
2
- import { Bt as renderDocsRelatedMarkdownLines, Jt as normalizePageAgentFrontmatter, Qt as upsertPageAgentContractMarkdown, cn as isDocsMcpProtectedResourceMetadataPath, dn as normalizeDocsMcpAuthorizationServerUrls, fn as normalizeDocsMcpEndpointPath, mn as resolveDocsMcpResourceLocation, pn as resolveDocsMcpProtectedResourceMetadataLocation, qt as hasStructuredPageAgentContract, sn as isDocsMcpOAuthScopeToken, un as isDocsMcpResourcePath, wt as resolveDocsAudienceMdxContent, zt as normalizeDocsRelated } from "./agent-DKKptIgy.mjs";
3
- import "./standards-discovery-jkykaXq1.mjs";
4
- import { A as emitDocsTelemetryProjectEvent, D as emitDocsTelemetryAgentSurfaceEvent, S as stripGeneratedAgentProvenance, h as parseDocsMarkdownSections, k as emitDocsTelemetryMcpToolEvent, m as findDocsMarkdownSection, u as performDocsSearch, w as resolvePageSidebarFolderIndexBehavior } from "./search-B6V6qtiI.mjs";
2
+ import { Bt as renderDocsRelatedMarkdownLines, Jt as normalizePageAgentFrontmatter, Qt as upsertPageAgentContractMarkdown, cn as isDocsMcpProtectedResourceMetadataPath, dn as normalizeDocsMcpAuthorizationServerUrls, fn as normalizeDocsMcpEndpointPath, mn as resolveDocsMcpResourceLocation, pn as resolveDocsMcpProtectedResourceMetadataLocation, qt as hasStructuredPageAgentContract, sn as isDocsMcpOAuthScopeToken, un as isDocsMcpResourcePath, wt as resolveDocsAudienceMdxContent, zt as normalizeDocsRelated } from "./agent-CcR8_Yyd.mjs";
3
+ import "./standards-discovery-C7p5lBhc.mjs";
4
+ import { A as emitDocsTelemetryProjectEvent, D as emitDocsTelemetryAgentSurfaceEvent, S as stripGeneratedAgentProvenance, h as parseDocsMarkdownSections, k as emitDocsTelemetryMcpToolEvent, m as findDocsMarkdownSection, u as performDocsSearch, w as resolvePageSidebarFolderIndexBehavior } from "./search-D0A9lRGJ.mjs";
5
5
  import { a as normalizeAgentScopeValues, i as normalizeAgentLocale, n as agentVersionConstraintsOverlap, r as normalizeAgentFramework, t as agentVersionConstraintMatches } from "./agent-scope-C_U--OZ7.mjs";
6
6
  import matter from "gray-matter";
7
7
  import fs from "node:fs";
@@ -246,11 +246,51 @@ const DOCS_CONFIG_SCHEMA_OPTIONS_TEMPLATE = [
246
246
  type: "DocsAgentA2AConfig",
247
247
  description: "Opt-in Agent Card metadata for a separately implemented real A2A service.",
248
248
  children: [
249
+ {
250
+ path: "agent.a2a.supportedInterfaces",
251
+ name: "supportedInterfaces",
252
+ type: "readonly DocsAgentA2AInterfaceConfig[]",
253
+ description: "Ordered A2A v1 interfaces implemented by the service; the first entry is preferred.",
254
+ children: [
255
+ {
256
+ path: "agent.a2a.supportedInterfaces[]",
257
+ name: "interface",
258
+ type: "DocsAgentA2AInterfaceConfig",
259
+ description: "One implemented A2A protocol interface."
260
+ },
261
+ {
262
+ path: "agent.a2a.supportedInterfaces[].url",
263
+ name: "url",
264
+ type: "string",
265
+ description: "Absolute binding-appropriate URL; core bindings require HTTPS outside loopback development."
266
+ },
267
+ {
268
+ path: "agent.a2a.supportedInterfaces[].protocolBinding",
269
+ name: "protocolBinding",
270
+ type: "DocsAgentA2AProtocolBinding",
271
+ default: "HTTP+JSON",
272
+ description: "Core binding JSONRPC, GRPC, or HTTP+JSON, or an absolute URI for a custom binding."
273
+ },
274
+ {
275
+ path: "agent.a2a.supportedInterfaces[].protocolVersion",
276
+ name: "protocolVersion",
277
+ type: "string",
278
+ default: "1.0",
279
+ description: "A2A major.minor protocol version implemented by this interface."
280
+ },
281
+ {
282
+ path: "agent.a2a.supportedInterfaces[].tenant",
283
+ name: "tenant",
284
+ type: "string",
285
+ description: "Optional tenant identifier required by this interface."
286
+ }
287
+ ]
288
+ },
249
289
  {
250
290
  path: "agent.a2a.interfaceUrl",
251
291
  name: "interfaceUrl",
252
292
  type: "string",
253
- description: "HTTP(S) URL of the real A2A interface."
293
+ description: "Deprecated single-interface shorthand. Prefer supportedInterfaces for new A2A v1 configurations."
254
294
  },
255
295
  {
256
296
  path: "agent.a2a.name",
@@ -268,19 +308,279 @@ const DOCS_CONFIG_SCHEMA_OPTIONS_TEMPLATE = [
268
308
  path: "agent.a2a.documentationUrl",
269
309
  name: "documentationUrl",
270
310
  type: "string",
271
- description: "HTTP(S) documentation URL for the A2A service."
311
+ description: "Optional absolute HTTPS documentation URL; HTTP is limited to loopback development."
272
312
  },
273
313
  {
274
- path: "agent.a2a.provider.organization",
275
- name: "organization",
276
- type: "string",
277
- description: "A2A service provider organization."
314
+ path: "agent.a2a.provider",
315
+ name: "provider",
316
+ type: "{ organization: string; url: string }",
317
+ description: "Optional A2A service provider identity.",
318
+ children: [{
319
+ path: "agent.a2a.provider.organization",
320
+ name: "organization",
321
+ type: "string",
322
+ description: "A2A service provider organization."
323
+ }, {
324
+ path: "agent.a2a.provider.url",
325
+ name: "url",
326
+ type: "string",
327
+ description: "Absolute HTTPS provider URL; HTTP is limited to loopback development."
328
+ }]
278
329
  },
279
330
  {
280
- path: "agent.a2a.provider.url",
281
- name: "url",
331
+ path: "agent.a2a.iconUrl",
332
+ name: "iconUrl",
282
333
  type: "string",
283
- description: "HTTP(S) provider URL."
334
+ description: "Optional absolute HTTPS icon URL; HTTP is limited to loopback development."
335
+ },
336
+ {
337
+ path: "agent.a2a.capabilities",
338
+ name: "capabilities",
339
+ type: "DocsAgentA2ACapabilities",
340
+ description: "Capabilities actually implemented by the A2A service.",
341
+ children: [
342
+ {
343
+ path: "agent.a2a.capabilities.streaming",
344
+ name: "streaming",
345
+ type: "boolean",
346
+ default: false,
347
+ description: "Whether the A2A service implements streaming."
348
+ },
349
+ {
350
+ path: "agent.a2a.capabilities.pushNotifications",
351
+ name: "pushNotifications",
352
+ type: "boolean",
353
+ default: false,
354
+ description: "Whether the A2A service implements push notifications."
355
+ },
356
+ {
357
+ path: "agent.a2a.capabilities.extensions",
358
+ name: "extensions",
359
+ type: "readonly DocsAgentA2AExtension[]",
360
+ description: "URI-identified A2A protocol extensions implemented by the service.",
361
+ children: [
362
+ {
363
+ path: "agent.a2a.capabilities.extensions[]",
364
+ name: "extension",
365
+ type: "DocsAgentA2AExtension",
366
+ description: "One protocol extension implemented by the service."
367
+ },
368
+ {
369
+ path: "agent.a2a.capabilities.extensions[].uri",
370
+ name: "uri",
371
+ type: "string",
372
+ description: "Absolute URI identifying the extension."
373
+ },
374
+ {
375
+ path: "agent.a2a.capabilities.extensions[].description",
376
+ name: "description",
377
+ type: "string",
378
+ description: "How this agent implements the extension."
379
+ },
380
+ {
381
+ path: "agent.a2a.capabilities.extensions[].required",
382
+ name: "required",
383
+ type: "boolean",
384
+ default: false,
385
+ description: "Whether clients must understand this extension."
386
+ },
387
+ {
388
+ path: "agent.a2a.capabilities.extensions[].params",
389
+ name: "params",
390
+ type: "Readonly<Record<string, unknown>>",
391
+ description: "Extension-specific JSON parameters."
392
+ }
393
+ ]
394
+ },
395
+ {
396
+ path: "agent.a2a.capabilities.extendedAgentCard",
397
+ name: "extendedAgentCard",
398
+ type: "boolean",
399
+ description: "Whether the service implements authenticated GetExtendedAgentCard; requires a declared scheme and non-empty requirement."
400
+ }
401
+ ]
402
+ },
403
+ {
404
+ path: "agent.a2a.defaultInputModes",
405
+ name: "defaultInputModes",
406
+ type: "readonly string[]",
407
+ description: "Agent-wide input media types; defaults to [\"text/plain\"]."
408
+ },
409
+ {
410
+ path: "agent.a2a.defaultOutputModes",
411
+ name: "defaultOutputModes",
412
+ type: "readonly string[]",
413
+ description: "Agent-wide output media types; defaults to [\"text/plain\"]."
414
+ },
415
+ {
416
+ path: "agent.a2a.skills",
417
+ name: "skills",
418
+ type: "readonly DocsAgentA2ASkill[]",
419
+ description: "A2A capabilities implemented by the service. Required with supportedInterfaces; distinct from published Agent Skill files.",
420
+ children: [
421
+ {
422
+ path: "agent.a2a.skills[]",
423
+ name: "skill",
424
+ type: "DocsAgentA2ASkill",
425
+ description: "One capability implemented by the A2A service."
426
+ },
427
+ {
428
+ path: "agent.a2a.skills[].id",
429
+ name: "id",
430
+ type: "string",
431
+ description: "Stable unique capability identifier."
432
+ },
433
+ {
434
+ path: "agent.a2a.skills[].name",
435
+ name: "name",
436
+ type: "string",
437
+ description: "Human-readable capability name."
438
+ },
439
+ {
440
+ path: "agent.a2a.skills[].description",
441
+ name: "description",
442
+ type: "string",
443
+ description: "Capability purpose and behavior."
444
+ },
445
+ {
446
+ path: "agent.a2a.skills[].tags",
447
+ name: "tags",
448
+ type: "readonly string[]",
449
+ description: "Non-empty discovery tags for the capability."
450
+ },
451
+ {
452
+ path: "agent.a2a.skills[].examples",
453
+ name: "examples",
454
+ type: "readonly string[]",
455
+ description: "Optional example prompts for this capability."
456
+ },
457
+ {
458
+ path: "agent.a2a.skills[].inputModes",
459
+ name: "inputModes",
460
+ type: "readonly string[]",
461
+ description: "Optional capability-specific input media types."
462
+ },
463
+ {
464
+ path: "agent.a2a.skills[].outputModes",
465
+ name: "outputModes",
466
+ type: "readonly string[]",
467
+ description: "Optional capability-specific output media types."
468
+ },
469
+ {
470
+ path: "agent.a2a.skills[].securityRequirements",
471
+ name: "securityRequirements",
472
+ type: "readonly DocsAgentA2ASecurityRequirement[]",
473
+ description: "Optional capability-specific alternatives over named security schemes."
474
+ }
475
+ ]
476
+ },
477
+ {
478
+ path: "agent.a2a.securitySchemes",
479
+ name: "securitySchemes",
480
+ type: "Readonly<Record<string, DocsAgentA2ASecurityScheme>>",
481
+ description: "Optional named A2A v1 API key, HTTP auth, OAuth 2, OpenID Connect, or mutual TLS schemes.",
482
+ children: [
483
+ {
484
+ path: "agent.a2a.securitySchemes.<name>",
485
+ name: "scheme",
486
+ type: "DocsAgentA2ASecurityScheme",
487
+ description: "One named scheme containing exactly one wrapper: apiKeySecurityScheme, httpAuthSecurityScheme, oauth2SecurityScheme, openIdConnectSecurityScheme, or mtlsSecurityScheme."
488
+ },
489
+ {
490
+ path: "agent.a2a.securitySchemes.<name>.apiKeySecurityScheme",
491
+ name: "apiKeySecurityScheme",
492
+ type: "{ description?: string; location: \"query\" | \"header\" | \"cookie\"; name: string }",
493
+ description: "API key location and parameter name."
494
+ },
495
+ {
496
+ path: "agent.a2a.securitySchemes.<name>.httpAuthSecurityScheme",
497
+ name: "httpAuthSecurityScheme",
498
+ type: "{ description?: string; scheme: string; bearerFormat?: string }",
499
+ description: "HTTP authentication scheme such as bearer."
500
+ },
501
+ {
502
+ path: "agent.a2a.securitySchemes.<name>.oauth2SecurityScheme",
503
+ name: "oauth2SecurityScheme",
504
+ type: "DocsAgentA2AOAuth2SecurityScheme",
505
+ description: "OAuth 2 metadata with exactly one authorizationCode, clientCredentials, deviceCode, implicit, or password flow. Implicit and password are deprecated A2A v1 compatibility flows.",
506
+ children: [
507
+ {
508
+ path: "agent.a2a.securitySchemes.<name>.oauth2SecurityScheme.flows.authorizationCode",
509
+ name: "authorizationCode",
510
+ type: "DocsAgentA2AOAuthAuthorizationCodeFlow",
511
+ description: "Authorization code flow with HTTPS authorizationUrl, tokenUrl, scopes, and optional refreshUrl/pkceRequired."
512
+ },
513
+ {
514
+ path: "agent.a2a.securitySchemes.<name>.oauth2SecurityScheme.flows.clientCredentials",
515
+ name: "clientCredentials",
516
+ type: "DocsAgentA2AOAuthClientCredentialsFlow",
517
+ description: "Client credentials flow with HTTPS tokenUrl, scopes, and optional refreshUrl."
518
+ },
519
+ {
520
+ path: "agent.a2a.securitySchemes.<name>.oauth2SecurityScheme.flows.deviceCode",
521
+ name: "deviceCode",
522
+ type: "DocsAgentA2AOAuthDeviceCodeFlow",
523
+ description: "Device code flow with HTTPS deviceAuthorizationUrl, tokenUrl, scopes, and optional refreshUrl."
524
+ },
525
+ {
526
+ path: "agent.a2a.securitySchemes.<name>.oauth2SecurityScheme.flows.implicit",
527
+ name: "implicit",
528
+ type: "DocsAgentA2AOAuthImplicitFlow",
529
+ description: "Deprecated A2A v1 compatibility flow with HTTPS authorizationUrl, scopes, and optional refreshUrl."
530
+ },
531
+ {
532
+ path: "agent.a2a.securitySchemes.<name>.oauth2SecurityScheme.flows.password",
533
+ name: "password",
534
+ type: "DocsAgentA2AOAuthPasswordFlow",
535
+ description: "Deprecated A2A v1 compatibility flow with HTTPS tokenUrl, scopes, and optional refreshUrl."
536
+ },
537
+ {
538
+ path: "agent.a2a.securitySchemes.<name>.oauth2SecurityScheme.oauth2MetadataUrl",
539
+ name: "oauth2MetadataUrl",
540
+ type: "string",
541
+ description: "Optional HTTPS RFC 8414 authorization-server metadata URL."
542
+ }
543
+ ]
544
+ },
545
+ {
546
+ path: "agent.a2a.securitySchemes.<name>.openIdConnectSecurityScheme",
547
+ name: "openIdConnectSecurityScheme",
548
+ type: "{ description?: string; openIdConnectUrl: string }",
549
+ description: "OpenID Connect scheme with an HTTPS discovery URL."
550
+ },
551
+ {
552
+ path: "agent.a2a.securitySchemes.<name>.mtlsSecurityScheme",
553
+ name: "mtlsSecurityScheme",
554
+ type: "{ description?: string }",
555
+ description: "Mutual TLS scheme."
556
+ }
557
+ ]
558
+ },
559
+ {
560
+ path: "agent.a2a.securityRequirements",
561
+ name: "securityRequirements",
562
+ type: "readonly DocsAgentA2ASecurityRequirement[]",
563
+ description: "Optional agent-wide alternatives over named security schemes.",
564
+ children: [
565
+ {
566
+ path: "agent.a2a.securityRequirements[]",
567
+ name: "requirement",
568
+ type: "DocsAgentA2ASecurityRequirement",
569
+ description: "One alternative requirement; schemes inside the object are all required together."
570
+ },
571
+ {
572
+ path: "agent.a2a.securityRequirements[].schemes",
573
+ name: "schemes",
574
+ type: "Readonly<Record<string, DocsAgentA2ASecurityScopeList>>",
575
+ description: "Named security schemes and their required scopes."
576
+ },
577
+ {
578
+ path: "agent.a2a.securityRequirements[].schemes.<name>.list",
579
+ name: "list",
580
+ type: "readonly string[]",
581
+ description: "Required scopes for this named scheme; use an empty list for none."
582
+ }
583
+ ]
284
584
  },
285
585
  {
286
586
  path: "agent.a2a.version",
@@ -294,14 +594,14 @@ const DOCS_CONFIG_SCHEMA_OPTIONS_TEMPLATE = [
294
594
  name: "protocolVersion",
295
595
  type: "string",
296
596
  default: "0.3",
297
- description: "A2A protocol version implemented by the configured interface."
597
+ description: "Deprecated interfaceUrl shorthand option. It retains the historical 0.3 default; set it explicitly when that interface implements another version."
298
598
  },
299
599
  {
300
600
  path: "agent.a2a.protocolBinding",
301
601
  name: "protocolBinding",
302
602
  type: "string",
303
603
  default: "HTTP+JSON",
304
- description: "A2A transport binding implemented by the configured interface."
604
+ description: "Deprecated interfaceUrl shorthand option. Binding implemented by that interface."
305
605
  }
306
606
  ]
307
607
  },
@@ -1,4 +1,4 @@
1
- import { Jt as normalizePageAgentFrontmatter, qt as hasStructuredPageAgentContract } from "./agent-DKKptIgy.mjs";
1
+ import { Jt as normalizePageAgentFrontmatter, qt as hasStructuredPageAgentContract } from "./agent-CcR8_Yyd.mjs";
2
2
 
3
3
  //#region src/metadata.ts
4
4
  /**
@@ -1,6 +1,6 @@
1
- import { Dt as DEFAULT_SITEMAP_MD_ROUTE, c as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, f as DEFAULT_DOCS_CONFIG_ROUTE, h as DEFAULT_LLMS_FULL_TXT_ROUTE, i as DEFAULT_AGENT_FEEDBACK_ROUTE, kt as DEFAULT_SITEMAP_XML_ROUTE, m as DEFAULT_DOCS_DIAGNOSTICS_ROUTE, nn as DEFAULT_MCP_WELL_KNOWN_ROUTE, t as DEFAULT_AGENTS_MD_ROUTE, v as DEFAULT_LLMS_TXT_ROUTE, x as DEFAULT_SKILL_MD_ROUTE } from "./agent-DKKptIgy.mjs";
2
- import { c as DEFAULT_AGENT_SKILLS_INDEX_ROUTE, g as DEFAULT_API_CATALOG_ROUTE, n as API_CATALOG_MEDIA_TYPE, r as API_CATALOG_PROFILE_URI, t as AGENT_SKILLS_DISCOVERY_SCHEMA_URI, u as DEFAULT_AGENT_SKILLS_ROUTE_PREFIX } from "./standards-discovery-jkykaXq1.mjs";
3
- import { n as DEFAULT_ROBOTS_TXT_ROUTE } from "./robots-BIpC4j4P.mjs";
1
+ import { Dt as DEFAULT_SITEMAP_MD_ROUTE, c as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, f as DEFAULT_DOCS_CONFIG_ROUTE, h as DEFAULT_LLMS_FULL_TXT_ROUTE, i as DEFAULT_AGENT_FEEDBACK_ROUTE, kt as DEFAULT_SITEMAP_XML_ROUTE, m as DEFAULT_DOCS_DIAGNOSTICS_ROUTE, nn as DEFAULT_MCP_WELL_KNOWN_ROUTE, t as DEFAULT_AGENTS_MD_ROUTE, v as DEFAULT_LLMS_TXT_ROUTE, x as DEFAULT_SKILL_MD_ROUTE } from "./agent-CcR8_Yyd.mjs";
2
+ import { f as DEFAULT_AGENT_SKILLS_ROUTE_PREFIX, n as API_CATALOG_MEDIA_TYPE, r as API_CATALOG_PROFILE_URI, t as AGENT_SKILLS_DISCOVERY_SCHEMA_URI, u as DEFAULT_AGENT_SKILLS_INDEX_ROUTE, v as DEFAULT_API_CATALOG_ROUTE } from "./standards-discovery-C7p5lBhc.mjs";
3
+ import { n as DEFAULT_ROBOTS_TXT_ROUTE } from "./robots-DonzDfBW.mjs";
4
4
  import matter from "gray-matter";
5
5
 
6
6
  //#region src/define-docs.ts
@@ -1,13 +1,13 @@
1
- import { Ht as PAGE_AGENT_CONTRACT_FIELDS, Jt as normalizePageAgentFrontmatter, Kt as getPageAgentFrontmatterIssues, T as DOCS_CONFIG_MAP_TOP_LEVEL_KEYS, bt as findDocsAudienceMdxIssues, in as getDocsMcpProtectedResourceMetadataRoutes, j as buildDocsConfigMap, k as buildDocsAgentDiscoverySpec, qt as hasStructuredPageAgentContract } from "./agent-DKKptIgy.mjs";
2
- import { c as DEFAULT_AGENT_SKILLS_INDEX_ROUTE, g as DEFAULT_API_CATALOG_ROUTE, h as DEFAULT_API_CATALOG_FORMAT, k as resolveDocsDiscoveryApiRoute, l as DEFAULT_AGENT_SKILLS_ROUTE_PATTERN, p as DEFAULT_AGENT_SKILL_FORMAT, s as DEFAULT_AGENT_SKILLS_INDEX_FORMAT } from "./standards-discovery-jkykaXq1.mjs";
3
- import { d as resolveAskAISearchRequestConfig } from "./search-B6V6qtiI.mjs";
4
- import { a as resolveDocsMetadataBaseUrl } from "./metadata-DWExHQnx.mjs";
5
- import { c as resolveDocsReviewConfig, o as ensureDocsReviewWorkflow, s as readDocsReviewConfigFromSource, t as runDocsGoldenTasks } from "./agent-evals-B7MIxuEX.mjs";
1
+ import { Ht as PAGE_AGENT_CONTRACT_FIELDS, Jt as normalizePageAgentFrontmatter, Kt as getPageAgentFrontmatterIssues, T as DOCS_CONFIG_MAP_TOP_LEVEL_KEYS, bt as findDocsAudienceMdxIssues, in as getDocsMcpProtectedResourceMetadataRoutes, j as buildDocsConfigMap, k as buildDocsAgentDiscoverySpec, qt as hasStructuredPageAgentContract } from "./agent-CcR8_Yyd.mjs";
2
+ import { _ as DEFAULT_API_CATALOG_FORMAT, d as DEFAULT_AGENT_SKILLS_ROUTE_PATTERN, h as DEFAULT_AGENT_SKILL_FORMAT, j as resolveDocsDiscoveryApiRoute, l as DEFAULT_AGENT_SKILLS_INDEX_FORMAT, u as DEFAULT_AGENT_SKILLS_INDEX_ROUTE, v as DEFAULT_API_CATALOG_ROUTE } from "./standards-discovery-C7p5lBhc.mjs";
3
+ import { d as resolveAskAISearchRequestConfig } from "./search-D0A9lRGJ.mjs";
4
+ import { a as resolveDocsMetadataBaseUrl } from "./metadata-Cna0CtWZ.mjs";
5
+ import { c as resolveDocsReviewConfig, o as ensureDocsReviewWorkflow, s as readDocsReviewConfigFromSource, t as runDocsGoldenTasks } from "./agent-evals-Bn_dA1_A.mjs";
6
6
  import { createFilesystemDocsMcpSource, getDocsConfigSchema, resolveDocsMcpConfig } from "./mcp.mjs";
7
7
  import "./code-blocks-DnNVNK2M.mjs";
8
8
  import { _ as resolveDocsContentDir, g as resolveDocsConfigPath, h as readTopLevelStringProperty, s as loadDocsConfigModuleResultWithProjectEnv } from "./config-Wcdj-D0a.mjs";
9
9
  import { t as detectFramework } from "./utils-DpiIioYb.mjs";
10
- import { a as extractAgentBlocks, i as createAgentUsefulnessPagesFromMcp, n as analyzeAgentSurfaceDrift, r as analyzeAgentUsefulness, t as resolveGoldenEvaluationInput } from "./golden-evaluations-Dj-9Eo3v.mjs";
10
+ import { a as extractAgentBlocks, i as createAgentUsefulnessPagesFromMcp, n as analyzeAgentSurfaceDrift, r as analyzeAgentUsefulness, t as resolveGoldenEvaluationInput } from "./golden-evaluations-D7lSUeQl.mjs";
11
11
  import matter from "gray-matter";
12
12
  import { existsSync, lstatSync, readFileSync, readdirSync } from "node:fs";
13
13
  import path from "node:path";
@@ -1,5 +1,5 @@
1
- import { Ft as resolveDocsSitemapConfig, S as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, X as normalizeDocsPathSegment, a as DEFAULT_AGENT_MD_ROUTE, c as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, en as DEFAULT_MCP_PUBLIC_ROUTE, g as DEFAULT_LLMS_FULL_TXT_WELL_KNOWN_ROUTE, h as DEFAULT_LLMS_FULL_TXT_ROUTE, l as DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, n as DEFAULT_AGENTS_MD_WELL_KNOWN_ROUTE, nn as DEFAULT_MCP_WELL_KNOWN_ROUTE, o as DEFAULT_AGENT_MD_WELL_KNOWN_ROUTE, t as DEFAULT_AGENTS_MD_ROUTE, v as DEFAULT_LLMS_TXT_ROUTE, x as DEFAULT_SKILL_MD_ROUTE, y as DEFAULT_LLMS_TXT_WELL_KNOWN_ROUTE } from "./agent-DKKptIgy.mjs";
2
- import { a as DEFAULT_A2A_AGENT_CARD_ROUTE, c as DEFAULT_AGENT_SKILLS_INDEX_ROUTE, g as DEFAULT_API_CATALOG_ROUTE, u as DEFAULT_AGENT_SKILLS_ROUTE_PREFIX, v as DEFAULT_LEGACY_SKILLS_INDEX_ROUTE, y as DEFAULT_LEGACY_SKILLS_ROUTE_PREFIX } from "./standards-discovery-jkykaXq1.mjs";
1
+ import { Ft as resolveDocsSitemapConfig, S as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, X as normalizeDocsPathSegment, a as DEFAULT_AGENT_MD_ROUTE, c as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, en as DEFAULT_MCP_PUBLIC_ROUTE, g as DEFAULT_LLMS_FULL_TXT_WELL_KNOWN_ROUTE, h as DEFAULT_LLMS_FULL_TXT_ROUTE, l as DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, n as DEFAULT_AGENTS_MD_WELL_KNOWN_ROUTE, nn as DEFAULT_MCP_WELL_KNOWN_ROUTE, o as DEFAULT_AGENT_MD_WELL_KNOWN_ROUTE, t as DEFAULT_AGENTS_MD_ROUTE, v as DEFAULT_LLMS_TXT_ROUTE, x as DEFAULT_SKILL_MD_ROUTE, y as DEFAULT_LLMS_TXT_WELL_KNOWN_ROUTE } from "./agent-CcR8_Yyd.mjs";
2
+ import { a as DEFAULT_A2A_AGENT_CARD_ROUTE, b as DEFAULT_LEGACY_SKILLS_INDEX_ROUTE, f as DEFAULT_AGENT_SKILLS_ROUTE_PREFIX, u as DEFAULT_AGENT_SKILLS_INDEX_ROUTE, v as DEFAULT_API_CATALOG_ROUTE, x as DEFAULT_LEGACY_SKILLS_ROUTE_PREFIX } from "./standards-discovery-C7p5lBhc.mjs";
3
3
 
4
4
  //#region src/robots.ts
5
5
  const DEFAULT_ROBOTS_TXT_ROUTE = "/robots.txt";
@@ -61,13 +61,17 @@ function resolveDocsRobotsConfig(input, options = {}) {
61
61
  }
62
62
  function getDocsRobotsAllowRoutes(options = {}) {
63
63
  const normalizedEntry = normalizeDocsPathSegment(options.entry ?? "docs") || "docs";
64
- const sitemapConfig = resolveDocsSitemapConfig(options.sitemap);
65
- const routes = [
64
+ return unique([
66
65
  "/",
67
66
  `/${normalizedEntry}`,
68
67
  `/${normalizedEntry}/`,
69
68
  `/${normalizedEntry}.md`,
70
69
  `/${normalizedEntry}/*.md`,
70
+ ...getDocsRobotsDiscoveryRoutes(options)
71
+ ].map(normalizeRoute));
72
+ }
73
+ function getDocsRobotsDiscoveryRoutes(options = {}) {
74
+ const routes = [
71
75
  DEFAULT_LLMS_TXT_ROUTE,
72
76
  DEFAULT_LLMS_FULL_TXT_ROUTE,
73
77
  DEFAULT_LLMS_TXT_WELL_KNOWN_ROUTE,
@@ -89,6 +93,7 @@ function getDocsRobotsAllowRoutes(options = {}) {
89
93
  DEFAULT_MCP_PUBLIC_ROUTE,
90
94
  DEFAULT_MCP_WELL_KNOWN_ROUTE
91
95
  ];
96
+ const sitemapConfig = resolveDocsSitemapConfig(options.sitemap);
92
97
  if (sitemapConfig.enabled) {
93
98
  if (sitemapConfig.xml.enabled) routes.push(sitemapConfig.xml.route);
94
99
  if (sitemapConfig.markdown.enabled) {
@@ -169,30 +174,93 @@ function upsertDocsRobotsGeneratedBlock(existing, block) {
169
174
  const prefix = existing.trimEnd();
170
175
  return `${prefix}${prefix ? "\n\n" : ""}${block}`;
171
176
  }
172
- function blockForUserAgent(content, userAgent) {
173
- const escaped = userAgent.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
174
- return content.match(new RegExp(`(?:^|\\n)\\s*User-agent:\\s*${escaped}\\s*(?:\\n[ \\t]*(?!User-agent:).*)*`, "i"))?.[0] ?? "";
177
+ function parseRobotsGroups(content) {
178
+ const groups = [];
179
+ let current;
180
+ for (const rawLine of content.split(/\r?\n/)) {
181
+ const line = rawLine.replace(/#.*$/, "").trim();
182
+ const separator = line.indexOf(":");
183
+ if (separator === -1) continue;
184
+ const field = line.slice(0, separator).trim().toLowerCase();
185
+ const value = line.slice(separator + 1).trim();
186
+ if (field === "user-agent") {
187
+ if (!value) continue;
188
+ if (!current || current.hasRules) {
189
+ current = {
190
+ userAgents: /* @__PURE__ */ new Set(),
191
+ allowRoutes: /* @__PURE__ */ new Set(),
192
+ rules: [],
193
+ hasRules: false
194
+ };
195
+ groups.push(current);
196
+ }
197
+ current.userAgents.add(value.toLowerCase());
198
+ continue;
199
+ }
200
+ if (!current) continue;
201
+ if (field !== "allow" && field !== "disallow") continue;
202
+ current.hasRules = true;
203
+ if (!value) continue;
204
+ const pattern = normalizeRoute(value);
205
+ if (field === "allow") current.allowRoutes.add(pattern);
206
+ current.rules.push({
207
+ directive: field,
208
+ pattern
209
+ });
210
+ }
211
+ return groups;
212
+ }
213
+ function rulesForUserAgent(groups, userAgent) {
214
+ const normalizedUserAgent = userAgent.toLowerCase();
215
+ const explicitMatches = groups.filter((group) => group.userAgents.has(normalizedUserAgent));
216
+ const matches = explicitMatches.length > 0 ? explicitMatches : groups.filter((group) => group.userAgents.has("*"));
217
+ return {
218
+ found: explicitMatches.length > 0,
219
+ allowRoutes: new Set(matches.flatMap((group) => [...group.allowRoutes])),
220
+ rules: matches.flatMap((group) => group.rules)
221
+ };
222
+ }
223
+ function concreteDiscoveryRoute(route) {
224
+ return route.replace(/\*/g, "resource");
175
225
  }
176
- function disallowsRoute(content, route) {
177
- const escapedRoute = route.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
178
- return new RegExp(`^\\s*Disallow:\\s*${escapedRoute}(?:\\s|$)`, "im").test(content);
226
+ function robotsRuleMatches(pattern, route) {
227
+ const endAnchored = pattern.endsWith("$");
228
+ const expression = (endAnchored ? pattern.slice(0, -1) : pattern).split("*").map((part) => part.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join(".*");
229
+ return new RegExp(`^${expression}${endAnchored ? "$" : ""}`).test(route);
230
+ }
231
+ function robotsRuleSpecificity(pattern) {
232
+ return new TextEncoder().encode(pattern).byteLength;
233
+ }
234
+ function rulesAllowRoute(rules, route) {
235
+ const concreteRoute = concreteDiscoveryRoute(route);
236
+ let strongestMatch = -1;
237
+ let allowed = true;
238
+ for (const rule of rules) {
239
+ if (!robotsRuleMatches(rule.pattern, concreteRoute)) continue;
240
+ const specificity = robotsRuleSpecificity(rule.pattern);
241
+ if (specificity > strongestMatch) {
242
+ strongestMatch = specificity;
243
+ allowed = rule.directive === "allow";
244
+ continue;
245
+ }
246
+ if (specificity === strongestMatch && rule.directive === "allow") allowed = true;
247
+ }
248
+ return allowed;
179
249
  }
180
250
  function analyzeDocsRobotsTxt(content, options = {}) {
181
- const expectedRoutes = getDocsRobotsAllowRoutes(options).filter((route) => [
182
- DEFAULT_LLMS_TXT_ROUTE,
183
- DEFAULT_LLMS_FULL_TXT_ROUTE,
184
- DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE,
185
- DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE,
186
- DEFAULT_AGENTS_MD_ROUTE,
187
- DEFAULT_SKILL_MD_ROUTE,
188
- DEFAULT_MCP_PUBLIC_ROUTE
189
- ].includes(route) || route.includes("sitemap"));
190
- const missingRoutes = expectedRoutes.filter((route) => !content.includes(route));
251
+ const expectedRoutes = options.sitemapRoutes === void 0 ? getDocsRobotsDiscoveryRoutes(options) : unique([...getDocsRobotsDiscoveryRoutes({
252
+ ...options,
253
+ sitemap: false
254
+ }), ...options.sitemapRoutes].map(normalizeRoute));
255
+ const groups = parseRobotsGroups(content);
256
+ const wildcardRules = rulesForUserAgent(groups, "*");
257
+ const allowedRoutes = wildcardRules.allowRoutes;
258
+ const missingRoutes = expectedRoutes.filter((route) => !allowedRoutes.has(route));
191
259
  return {
192
- blocksAgentRoutes: /Disallow:\s*\/(?:\s|$)/i.test(blockForUserAgent(content, "*")) || expectedRoutes.some((route) => disallowsRoute(content, route)),
193
- blocksAiAgents: DEFAULT_DOCS_AI_ROBOTS_USER_AGENTS.some((userAgent) => /Disallow:\s*\/(?:\s|$)/i.test(blockForUserAgent(content, userAgent))),
260
+ blocksAgentRoutes: expectedRoutes.some((route) => !rulesAllowRoute(wildcardRules.rules, route)),
261
+ blocksAiAgents: DEFAULT_DOCS_AI_ROBOTS_USER_AGENTS.some((userAgent) => expectedRoutes.some((route) => !rulesAllowRoute(rulesForUserAgent(groups, userAgent).rules, route))),
194
262
  hasAgentRoutes: missingRoutes.length === 0,
195
- hasAiPolicy: DEFAULT_DOCS_AI_ROBOTS_USER_AGENTS.some((userAgent) => content.includes(userAgent)),
263
+ hasAiPolicy: DEFAULT_DOCS_AI_ROBOTS_USER_AGENTS.some((userAgent) => rulesForUserAgent(groups, userAgent).found),
196
264
  missingRoutes
197
265
  };
198
266
  }
@@ -1,7 +1,7 @@
1
- import "./agent-DKKptIgy.mjs";
2
- import "./standards-discovery-jkykaXq1.mjs";
3
- import { c as renderDocsRobotsGeneratedBlock, f as upsertDocsRobotsGeneratedBlock, i as DOCS_ROBOTS_GENERATED_BLOCK_START, r as DOCS_ROBOTS_GENERATED_BLOCK_END, u as resolveDocsRobotsConfig } from "./robots-BIpC4j4P.mjs";
4
- import { a as loadDocsConfigModule, g as resolveDocsConfigPath, h as readTopLevelStringProperty, l as readBooleanProperty, p as readStringProperty, t as extractNestedObjectLiteral } from "./config-Wcdj-D0a.mjs";
1
+ import "./agent-CcR8_Yyd.mjs";
2
+ import "./standards-discovery-C7p5lBhc.mjs";
3
+ import { c as renderDocsRobotsGeneratedBlock, f as upsertDocsRobotsGeneratedBlock, i as DOCS_ROBOTS_GENERATED_BLOCK_START, r as DOCS_ROBOTS_GENERATED_BLOCK_END, u as resolveDocsRobotsConfig } from "./robots-DonzDfBW.mjs";
4
+ import { a as loadDocsConfigModule, g as resolveDocsConfigPath, h as readTopLevelStringProperty, l as readBooleanProperty, m as readTopLevelBooleanProperty, p as readStringProperty, t as extractNestedObjectLiteral } from "./config-Wcdj-D0a.mjs";
5
5
  import { t as detectFramework } from "./utils-DpiIioYb.mjs";
6
6
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
7
7
  import path from "node:path";
@@ -70,15 +70,21 @@ function parseRobotsGenerateArgs(argv) {
70
70
  if (parsed.append && parsed.force) throw new Error("Use either --append or --force, not both.");
71
71
  return parsed;
72
72
  }
73
- function readTopLevelBooleanProperty(content, key) {
74
- const match = content.match(new RegExp(`\\b${key}\\b\\s*:\\s*(true|false)`));
75
- return match ? match[1] === "true" : void 0;
76
- }
77
73
  function readLlmsBaseUrlFromConfig(content, config) {
78
74
  if (config?.llmsTxt && typeof config.llmsTxt === "object") return config.llmsTxt.baseUrl;
79
75
  const block = extractNestedObjectLiteral(content, ["llmsTxt"]);
80
76
  return block ? readStringProperty(block, "baseUrl") : void 0;
81
77
  }
78
+ function isApiCatalogEnabled(content, config) {
79
+ if (config?.staticExport ?? readTopLevelBooleanProperty(content, "staticExport") ?? false) return false;
80
+ if (config?.llmsTxt && typeof config.llmsTxt === "object") return config.llmsTxt.apiCatalog !== false;
81
+ const block = extractNestedObjectLiteral(content, ["llmsTxt"]);
82
+ return block ? readBooleanProperty(block, "apiCatalog") !== false : true;
83
+ }
84
+ function isAgentCardEnabled(content, config) {
85
+ if (config) return Boolean(config.agent?.a2a);
86
+ return Boolean(extractNestedObjectLiteral(content, ["agent", "a2a"]));
87
+ }
82
88
  function readSitemapConfigFromStatic(content) {
83
89
  const topLevelBoolean = readTopLevelBooleanProperty(content, "sitemap");
84
90
  if (typeof topLevelBoolean === "boolean") return topLevelBoolean;
@@ -134,6 +140,8 @@ async function generateRobots(options = {}) {
134
140
  const sitemap = config?.sitemap ?? readSitemapConfigFromStatic(configContent) ?? true;
135
141
  const sitemapBaseUrl = typeof sitemap === "object" ? sitemap.baseUrl : void 0;
136
142
  const llmsBaseUrl = readLlmsBaseUrlFromConfig(configContent, config);
143
+ const apiCatalog = isApiCatalogEnabled(configContent, config);
144
+ const agentCard = isAgentCardEnabled(configContent, config);
137
145
  const configuredRobots = resolveConfiguredRobots(configContent, config);
138
146
  if (configuredRobots === false) throw new Error("Robots generation is disabled by `robots: false`.");
139
147
  const robotsInput = typeof configuredRobots === "object" ? configuredRobots : {};
@@ -143,6 +151,8 @@ async function generateRobots(options = {}) {
143
151
  const relativeRobotsPath = path.relative(rootDir, robotsPath).replace(/\\/g, "/");
144
152
  const generatedBlock = renderDocsRobotsGeneratedBlock({
145
153
  entry,
154
+ apiCatalog,
155
+ agentCard,
146
156
  sitemap,
147
157
  baseUrl: robots.baseUrl,
148
158
  robots
@@ -1,5 +1,5 @@
1
- import { k as DocsDiscoveryApiRouteOptions } from "./standards-discovery-C4HUqMd2.mjs";
2
- import { B as DocsAnalyticsEventInput, Dt as DocsObservabilityConfig, F as DocsAgentTraceEventInput, Ht as DocsSearchChunkingConfig, Ot as DocsObservabilityEvent, Pn as ResolvedDocsRelatedLink, R as DocsAnalyticsConfig, Ut as DocsSearchConfig, Vt as DocsSearchAdapterFactory, Wn as TypesenseDocsSearchConfig, Wt as DocsSearchDocument, X as DocsAskAIMcpConfig, Xt as DocsSitemapConfig, Yt as DocsSearchSourcePage, f as CustomDocsSearchConfig, gn as OpenDocsProvider, kt as DocsObservabilityEventInput, pn as McpDocsSearchConfig, qt as DocsSearchResult, r as AlgoliaDocsSearchConfig, yn as OpenDocsTarget, z as DocsAnalyticsEvent, zt as DocsSearchAdapter } from "./types-lMBIdZg0.mjs";
1
+ import { $n as ResolvedDocsRelatedLink, Fn as OpenDocsProvider, Jt as DocsObservabilityEventInput, Kt as DocsObservabilityConfig, Mn as McpDocsSearchConfig, Rn as OpenDocsTarget, at as DocsAnalyticsEventInput, cn as DocsSearchConfig, et as DocsAgentTraceEventInput, f as CustomDocsSearchConfig, fn as DocsSearchResult, hn as DocsSitemapConfig, ht as DocsAskAIMcpConfig, in as DocsSearchAdapter, it as DocsAnalyticsEvent, ln as DocsSearchDocument, lr as TypesenseDocsSearchConfig, mn as DocsSearchSourcePage, on as DocsSearchAdapterFactory, qt as DocsObservabilityEvent, r as AlgoliaDocsSearchConfig, rt as DocsAnalyticsConfig, sn as DocsSearchChunkingConfig } from "./types-BQC05SQm.mjs";
2
+ import { M as DocsDiscoveryApiRouteOptions } from "./standards-discovery-iOmUel-o.mjs";
3
3
 
4
4
  //#region src/analytics.d.ts
5
5
  declare const DOCS_AGENT_TRACE_EVENT_TYPES: readonly ["run.start", "run.end", "run.error", "user.input", "prompt.build", "retrieval.query", "retrieval.result", "retrieval.error", "model.call", "model.response", "model.stream", "model.error", "tool.call", "tool.result", "tool.error", "retry", "timeout", "error", "agent.final"];
@@ -1,11 +1,11 @@
1
- import "./agent-DKKptIgy.mjs";
2
- import "./standards-discovery-jkykaXq1.mjs";
3
- import { n as buildDocsSearchDocuments, r as createAlgoliaSearchAdapter, s as createTypesenseSearchAdapter } from "./search-B6V6qtiI.mjs";
4
- import "./sitemap-server-C_6Wes83.mjs";
5
- import "./agent-evals-B7MIxuEX.mjs";
1
+ import "./agent-CcR8_Yyd.mjs";
2
+ import "./standards-discovery-C7p5lBhc.mjs";
3
+ import { n as buildDocsSearchDocuments, r as createAlgoliaSearchAdapter, s as createTypesenseSearchAdapter } from "./search-D0A9lRGJ.mjs";
4
+ import "./sitemap-server-atbbiVzW.mjs";
5
+ import "./agent-evals-Bn_dA1_A.mjs";
6
6
  import { createFilesystemDocsMcpSource } from "./mcp.mjs";
7
7
  import "./code-blocks-DnNVNK2M.mjs";
8
- import "./agent-skills-server-DraIb6FV.mjs";
8
+ import "./agent-skills-server-Cuoqu8Jv.mjs";
9
9
  import "./server.mjs";
10
10
  import { _ as resolveDocsContentDir, c as loadProjectEnv, g as resolveDocsConfigPath, h as readTopLevelStringProperty } from "./config-Wcdj-D0a.mjs";
11
11
  import { readFileSync } from "node:fs";