ax-audit 3.6.0 → 4.0.0

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 (201) hide show
  1. package/CHANGELOG.md +138 -0
  2. package/LICENSE +1 -1
  3. package/README.md +58 -36
  4. package/dist/baseline.d.ts +2 -0
  5. package/dist/baseline.d.ts.map +1 -1
  6. package/dist/baseline.js +42 -4
  7. package/dist/baseline.js.map +1 -1
  8. package/dist/check-ids.d.ts +19 -0
  9. package/dist/check-ids.d.ts.map +1 -0
  10. package/dist/check-ids.js +53 -0
  11. package/dist/check-ids.js.map +1 -0
  12. package/dist/checks/agent-access.d.ts +23 -6
  13. package/dist/checks/agent-access.d.ts.map +1 -1
  14. package/dist/checks/agent-access.js +200 -54
  15. package/dist/checks/agent-access.js.map +1 -1
  16. package/dist/checks/agent-card.d.ts +37 -0
  17. package/dist/checks/agent-card.d.ts.map +1 -0
  18. package/dist/checks/agent-card.js +352 -0
  19. package/dist/checks/agent-card.js.map +1 -0
  20. package/dist/checks/agent-operability.d.ts +66 -0
  21. package/dist/checks/agent-operability.d.ts.map +1 -0
  22. package/dist/checks/agent-operability.js +383 -0
  23. package/dist/checks/agent-operability.js.map +1 -0
  24. package/dist/checks/agent-skills.d.ts +24 -0
  25. package/dist/checks/agent-skills.d.ts.map +1 -0
  26. package/dist/checks/agent-skills.js +316 -0
  27. package/dist/checks/agent-skills.js.map +1 -0
  28. package/dist/checks/ai-catalog.d.ts +28 -0
  29. package/dist/checks/ai-catalog.d.ts.map +1 -0
  30. package/dist/checks/ai-catalog.js +254 -0
  31. package/dist/checks/ai-catalog.js.map +1 -0
  32. package/dist/checks/ai-directives.d.ts +57 -0
  33. package/dist/checks/ai-directives.d.ts.map +1 -0
  34. package/dist/checks/ai-directives.js +263 -0
  35. package/dist/checks/ai-directives.js.map +1 -0
  36. package/dist/checks/api-discovery.d.ts +26 -0
  37. package/dist/checks/api-discovery.d.ts.map +1 -0
  38. package/dist/checks/api-discovery.js +432 -0
  39. package/dist/checks/api-discovery.js.map +1 -0
  40. package/dist/checks/auth-discovery.d.ts +28 -0
  41. package/dist/checks/auth-discovery.d.ts.map +1 -0
  42. package/dist/checks/auth-discovery.js +213 -0
  43. package/dist/checks/auth-discovery.js.map +1 -0
  44. package/dist/checks/commerce-discovery.d.ts +40 -0
  45. package/dist/checks/commerce-discovery.d.ts.map +1 -0
  46. package/dist/checks/commerce-discovery.js +295 -0
  47. package/dist/checks/commerce-discovery.js.map +1 -0
  48. package/dist/checks/content-negotiation.d.ts.map +1 -1
  49. package/dist/checks/content-negotiation.js +135 -20
  50. package/dist/checks/content-negotiation.js.map +1 -1
  51. package/dist/checks/crawl-efficiency.d.ts +13 -1
  52. package/dist/checks/crawl-efficiency.d.ts.map +1 -1
  53. package/dist/checks/crawl-efficiency.js +65 -1
  54. package/dist/checks/crawl-efficiency.js.map +1 -1
  55. package/dist/checks/frontmatter.d.ts +34 -0
  56. package/dist/checks/frontmatter.d.ts.map +1 -0
  57. package/dist/checks/frontmatter.js +100 -0
  58. package/dist/checks/frontmatter.js.map +1 -0
  59. package/dist/checks/html-rendering.d.ts.map +1 -1
  60. package/dist/checks/html-rendering.js +0 -1
  61. package/dist/checks/html-rendering.js.map +1 -1
  62. package/dist/checks/html-utils.d.ts +10 -0
  63. package/dist/checks/html-utils.d.ts.map +1 -1
  64. package/dist/checks/html-utils.js +19 -0
  65. package/dist/checks/html-utils.js.map +1 -1
  66. package/dist/checks/http-headers.d.ts.map +1 -1
  67. package/dist/checks/http-headers.js +82 -10
  68. package/dist/checks/http-headers.js.map +1 -1
  69. package/dist/checks/http-hygiene.d.ts +26 -0
  70. package/dist/checks/http-hygiene.d.ts.map +1 -0
  71. package/dist/checks/http-hygiene.js +257 -0
  72. package/dist/checks/http-hygiene.js.map +1 -0
  73. package/dist/checks/index.d.ts.map +1 -1
  74. package/dist/checks/index.js +24 -8
  75. package/dist/checks/index.js.map +1 -1
  76. package/dist/checks/llms-txt.d.ts +15 -0
  77. package/dist/checks/llms-txt.d.ts.map +1 -1
  78. package/dist/checks/llms-txt.js +162 -2
  79. package/dist/checks/llms-txt.js.map +1 -1
  80. package/dist/checks/mcp-discovery.d.ts +30 -0
  81. package/dist/checks/mcp-discovery.d.ts.map +1 -0
  82. package/dist/checks/mcp-discovery.js +523 -0
  83. package/dist/checks/mcp-discovery.js.map +1 -0
  84. package/dist/checks/meta-tags.d.ts.map +1 -1
  85. package/dist/checks/meta-tags.js +6 -5
  86. package/dist/checks/meta-tags.js.map +1 -1
  87. package/dist/checks/robots-parser.d.ts +110 -0
  88. package/dist/checks/robots-parser.d.ts.map +1 -0
  89. package/dist/checks/robots-parser.js +277 -0
  90. package/dist/checks/robots-parser.js.map +1 -0
  91. package/dist/checks/robots-txt.d.ts +2 -20
  92. package/dist/checks/robots-txt.d.ts.map +1 -1
  93. package/dist/checks/robots-txt.js +219 -120
  94. package/dist/checks/robots-txt.js.map +1 -1
  95. package/dist/checks/rsl.d.ts +0 -2
  96. package/dist/checks/rsl.d.ts.map +1 -1
  97. package/dist/checks/rsl.js +1 -11
  98. package/dist/checks/rsl.js.map +1 -1
  99. package/dist/checks/security-txt.d.ts.map +1 -1
  100. package/dist/checks/security-txt.js +0 -1
  101. package/dist/checks/security-txt.js.map +1 -1
  102. package/dist/checks/seo-basics.d.ts.map +1 -1
  103. package/dist/checks/seo-basics.js +0 -1
  104. package/dist/checks/seo-basics.js.map +1 -1
  105. package/dist/checks/sitemap.d.ts.map +1 -1
  106. package/dist/checks/sitemap.js +0 -1
  107. package/dist/checks/sitemap.js.map +1 -1
  108. package/dist/checks/structured-data.d.ts.map +1 -1
  109. package/dist/checks/structured-data.js +215 -4
  110. package/dist/checks/structured-data.js.map +1 -1
  111. package/dist/checks/structured-fields.d.ts +46 -0
  112. package/dist/checks/structured-fields.d.ts.map +1 -0
  113. package/dist/checks/structured-fields.js +112 -0
  114. package/dist/checks/structured-fields.js.map +1 -0
  115. package/dist/checks/surface.d.ts +59 -0
  116. package/dist/checks/surface.d.ts.map +1 -0
  117. package/dist/checks/surface.js +106 -0
  118. package/dist/checks/surface.js.map +1 -0
  119. package/dist/checks/tls-https.d.ts.map +1 -1
  120. package/dist/checks/tls-https.js +0 -1
  121. package/dist/checks/tls-https.js.map +1 -1
  122. package/dist/checks/usage-policy.d.ts +53 -0
  123. package/dist/checks/usage-policy.d.ts.map +1 -0
  124. package/dist/checks/usage-policy.js +339 -0
  125. package/dist/checks/usage-policy.js.map +1 -0
  126. package/dist/checks/utils.d.ts +25 -1
  127. package/dist/checks/utils.d.ts.map +1 -1
  128. package/dist/checks/utils.js +33 -1
  129. package/dist/checks/utils.js.map +1 -1
  130. package/dist/checks/waf.d.ts +75 -0
  131. package/dist/checks/waf.d.ts.map +1 -0
  132. package/dist/checks/waf.js +203 -0
  133. package/dist/checks/waf.js.map +1 -0
  134. package/dist/checks/webmcp.d.ts +55 -0
  135. package/dist/checks/webmcp.d.ts.map +1 -0
  136. package/dist/checks/webmcp.js +209 -0
  137. package/dist/checks/webmcp.js.map +1 -0
  138. package/dist/checks/well-known.d.ts +38 -0
  139. package/dist/checks/well-known.d.ts.map +1 -0
  140. package/dist/checks/well-known.js +202 -0
  141. package/dist/checks/well-known.js.map +1 -0
  142. package/dist/cli.d.ts +14 -0
  143. package/dist/cli.d.ts.map +1 -1
  144. package/dist/cli.js +124 -4
  145. package/dist/cli.js.map +1 -1
  146. package/dist/constants.d.ts +195 -14
  147. package/dist/constants.d.ts.map +1 -1
  148. package/dist/constants.js +598 -70
  149. package/dist/constants.js.map +1 -1
  150. package/dist/fetcher.d.ts.map +1 -1
  151. package/dist/fetcher.js +44 -14
  152. package/dist/fetcher.js.map +1 -1
  153. package/dist/guide-urls.js +1 -1
  154. package/dist/guide-urls.js.map +1 -1
  155. package/dist/index.d.ts +2 -1
  156. package/dist/index.d.ts.map +1 -1
  157. package/dist/index.js +1 -0
  158. package/dist/index.js.map +1 -1
  159. package/dist/orchestrator.d.ts.map +1 -1
  160. package/dist/orchestrator.js +5 -1
  161. package/dist/orchestrator.js.map +1 -1
  162. package/dist/reporter/html.d.ts +9 -0
  163. package/dist/reporter/html.d.ts.map +1 -1
  164. package/dist/reporter/html.js +49 -11
  165. package/dist/reporter/html.js.map +1 -1
  166. package/dist/reporter/markdown.d.ts.map +1 -1
  167. package/dist/reporter/markdown.js +36 -6
  168. package/dist/reporter/markdown.js.map +1 -1
  169. package/dist/reporter/terminal.d.ts.map +1 -1
  170. package/dist/reporter/terminal.js +36 -1
  171. package/dist/reporter/terminal.js.map +1 -1
  172. package/dist/scorer.d.ts +10 -0
  173. package/dist/scorer.d.ts.map +1 -1
  174. package/dist/scorer.js +22 -5
  175. package/dist/scorer.js.map +1 -1
  176. package/dist/types.d.ts +90 -3
  177. package/dist/types.d.ts.map +1 -1
  178. package/docs/architecture.md +27 -11
  179. package/docs/checks.md +285 -52
  180. package/docs/cli.md +36 -0
  181. package/docs/concepts.md +27 -13
  182. package/docs/faq.md +18 -6
  183. package/docs/getting-started.md +20 -13
  184. package/docs/roadmap.md +367 -0
  185. package/package.json +13 -5
  186. package/dist/checks/agent-json.d.ts +0 -14
  187. package/dist/checks/agent-json.d.ts.map +0 -1
  188. package/dist/checks/agent-json.js +0 -167
  189. package/dist/checks/agent-json.js.map +0 -1
  190. package/dist/checks/mcp.d.ts +0 -4
  191. package/dist/checks/mcp.d.ts.map +0 -1
  192. package/dist/checks/mcp.js +0 -162
  193. package/dist/checks/mcp.js.map +0 -1
  194. package/dist/checks/openapi.d.ts +0 -4
  195. package/dist/checks/openapi.d.ts.map +0 -1
  196. package/dist/checks/openapi.js +0 -121
  197. package/dist/checks/openapi.js.map +0 -1
  198. package/dist/checks/well-known-ai.d.ts +0 -17
  199. package/dist/checks/well-known-ai.d.ts.map +0 -1
  200. package/dist/checks/well-known-ai.js +0 -123
  201. package/dist/checks/well-known-ai.js.map +0 -1
@@ -1,29 +1,133 @@
1
- import type { Grade, SecurityHeader } from './types.js';
1
+ import type { CheckCategory, Grade, SecurityHeader } from './types.js';
2
2
  export declare const VERSION: string;
3
3
  export declare const USER_AGENT: string;
4
4
  /**
5
- * Known AI / LLM crawlers grouped by primary purpose. The audit recommends explicit
6
- * `User-agent:` rules for every entry so site operators can see exactly which agents
7
- * have access. Buckets:
5
+ * What an AI client does with a page, and therefore what a site loses by
6
+ * blocking it. This distinction is the single most important thing an audit can
7
+ * tell an operator: blocking a training crawler is a policy choice, while
8
+ * blocking a search crawler removes the site from that assistant's answers.
8
9
  *
9
- * - `training` — bots that scrape content for model training corpora
10
- * - `search` — bots that fetch on behalf of a live answer engine / search UI
11
- * - `fetching` — generic on-demand fetchers (browsing, summarization, automation)
10
+ * - `training` — builds model training corpora.
11
+ * - `search` — builds the index a live assistant cites from.
12
+ * - `user-fetch` — retrieves one URL because a human asked for it, right now.
13
+ * - `agent` — an autonomous browser acting on a user's behalf.
12
14
  */
13
- export declare const AI_CRAWLERS: Record<string, string[]>;
15
+ export type CrawlerPurpose = 'training' | 'search' | 'user-fetch' | 'agent';
16
+ export interface CrawlerInfo {
17
+ vendor: string;
18
+ purpose: CrawlerPurpose;
19
+ /**
20
+ * Whether the vendor documents that this client obeys robots.txt.
21
+ * `partial` covers clients documented as "may not apply" — chiefly
22
+ * user-triggered fetchers, which most vendors exempt.
23
+ */
24
+ honorsRobots: boolean | 'partial';
25
+ /** One sentence on what blocking this client costs. Surfaced directly in findings. */
26
+ impact: string;
27
+ /** Vendor documentation for the token. */
28
+ docUrl: string;
29
+ /** Published IP-range list, where the vendor offers one for reverse verification. */
30
+ ipListUrl?: string;
31
+ /** Vendor signs requests with Web Bot Auth (RFC 9421 HTTP Message Signatures). */
32
+ signsRequests?: boolean;
33
+ /**
34
+ * A robots.txt control token that never appears in a request. `Google-Extended`
35
+ * and `Applebot-Extended` govern how an already-crawled page may be used; no
36
+ * user agent carries these strings, so probing a site with them tests nothing.
37
+ */
38
+ tokenOnly?: boolean;
39
+ /** Extra context: renames, documentation changes, unusual behaviour. */
40
+ note?: string;
41
+ }
42
+ /**
43
+ * Per-token metadata for the crawlers worth explaining. Tokens in
44
+ * `AI_CRAWLERS` without an entry here are recognised for matching but carry no
45
+ * tailored advice — the long tail of data brokers and regional assistants.
46
+ *
47
+ * Every entry was verified against vendor documentation on 2026-09-04.
48
+ */
49
+ export declare const CRAWLER_META: Record<string, CrawlerInfo>;
50
+ /**
51
+ * Known AI clients grouped by what they do with a page. Matching is
52
+ * case-insensitive, per RFC 9309 §2.2.1, so the casing here is cosmetic and
53
+ * follows each vendor's own documentation.
54
+ *
55
+ * Verified against vendor documentation on 2026-09-04. Tokens that turned out
56
+ * never to have existed (`Gemini`, `GeminiBot`, `DeepSeek-AI`) or to belong to
57
+ * discontinued products (`NeevaBot`, `GoogleAgent-Mariner`) moved to
58
+ * `LEGACY_AI_CRAWLERS`.
59
+ */
60
+ export declare const AI_CRAWLERS: Record<CrawlerPurpose, string[]>;
61
+ /**
62
+ * Tokens recognised for matching but never recommended: renamed, retired, or
63
+ * never real. A site that lists these is not wrong, but the rules are inert, so
64
+ * the audit says so rather than counting them as coverage.
65
+ */
66
+ export declare const LEGACY_AI_CRAWLERS: Record<string, string>;
14
67
  export declare const ALL_AI_CRAWLERS: string[];
15
68
  /**
16
- * The "must-configure" subset — these are the agents a typical operator should grant
17
- * (or knowingly deny) explicit access to. ax-audit grades the robots.txt section heavily
18
- * on coverage of this short list, while still rewarding broader explicit rules.
69
+ * The crawlers that matter most as of September 2026, by request share
70
+ * (Cloudflare Radar) and by what a site loses when each is blocked. Used for
71
+ * reporting, access probes, and remediation advice.
72
+ *
73
+ * Composition: the six highest-volume clients (Googlebot's AI use is governed
74
+ * by Google-Extended, Applebot's by Applebot-Extended, hence the opt-out tokens
75
+ * standing in for them), the broadest training corpus (CCBot), the three search
76
+ * bots whose absence costs citations, and the one user-triggered fetcher with
77
+ * material volume.
19
78
  */
20
79
  export declare const CORE_AI_CRAWLERS: string[];
21
80
  /**
22
- * Default weight per check (sum: 100). Individual `CheckMeta.weight` overrides this map.
23
- * Keep weights aligned with real-world impact — discovery + content-rendering are the
24
- * highest-leverage signals for AI agents.
81
+ * Core crawlers that actually issue HTTP requests.
82
+ *
83
+ * `Google-Extended` and `Applebot-Extended` are robots.txt control tokens: they
84
+ * govern how an already-crawled page may be used, and no request ever carries
85
+ * them as a user agent. Probing a site with those strings tests nothing, so
86
+ * access checks use this list instead of the full core set.
87
+ */
88
+ export declare const PROBEABLE_CORE_CRAWLERS: string[];
89
+ /** Look up a crawler's metadata case-insensitively. */
90
+ export declare function crawlerInfo(token: string): CrawlerInfo | undefined;
91
+ /** Purpose bucket a token belongs to, or `undefined` when it is not a known AI client. */
92
+ export declare function crawlerPurpose(token: string): CrawlerPurpose | undefined;
93
+ /** Explanation for a retired or fictional token, or `undefined` when the token is current. */
94
+ export declare function legacyCrawlerNote(token: string): string | undefined;
95
+ /**
96
+ * Weight per check, summing to 100. A check's own `meta.weight` overrides this
97
+ * map.
98
+ *
99
+ * The 4.0 distribution follows the evidence about what actually stops an agent,
100
+ * rather than what is easiest to check:
101
+ *
102
+ * - **Content (33)** leads, because the failure that breaks the most agents is
103
+ * a page with nothing in the HTML. Most crawlers do not run JavaScript, and a
104
+ * site whose content only appears after hydration is invisible to them no
105
+ * matter how many discovery files it publishes. `agent-operability` joins it
106
+ * at 7: browser agents read the accessibility tree, and a page of unnamed
107
+ * controls cannot be operated at all.
108
+ * - **Access (24)** is second, because a WAF rule or a `nosnippet` directive
109
+ * silently undoes everything else. These are also the failures operators are
110
+ * least likely to know about.
111
+ * - **Discovery (21)** carries robots.txt at 9 and llms.txt at 5. llms.txt was
112
+ * the highest-weighted check in 3.x at 11; it is demoted because the evidence
113
+ * is that most published files are never fetched by an AI search crawler, and
114
+ * the vendors that do read it are coding agents. It matters, but not twice as
115
+ * much as whether the page has content.
116
+ * - **Protocols (13)** are all conditional: a site without the surface reports
117
+ * N/A and the weight leaves the denominator, so a blog is never marked down
118
+ * for lacking an API description.
119
+ * - **Policy (9)** covers declared usage rights and security contact.
120
+ *
121
+ * Checks on draft specifications (`ai-catalog`, `webmcp`, `commerce-discovery`)
122
+ * stay at 0. Scoring a site against a specification that may be renamed next
123
+ * quarter would make the number less trustworthy, not more.
25
124
  */
26
125
  export declare const CHECK_WEIGHTS: Record<string, number>;
126
+ /**
127
+ * Report grouping per check. A check's own `meta.category` takes precedence.
128
+ * Mirrors the `CHECK_WEIGHTS` pattern: data lives here, overrides live on the check.
129
+ */
130
+ export declare const CHECK_CATEGORIES: Record<string, CheckCategory>;
27
131
  export declare const GRADES: Grade[];
28
132
  /**
29
133
  * Content Signals Policy vocabulary (https://contentsignals.org, CC0): machine-readable
@@ -31,6 +135,28 @@ export declare const GRADES: Grade[];
31
135
  * Absence of a signal is neutral — it neither grants nor restricts.
32
136
  */
33
137
  export declare const CONTENT_SIGNALS: string[];
138
+ /**
139
+ * Values of the optional fourth Content Signals field `use`, introduced by
140
+ * Cloudflare on 2026-07-01 and now emitted by its managed robots.txt:
141
+ * `immediate` (interact, store nothing), `reference` (index, excerpt, link
142
+ * back — the stated default) and `full` (summarize and reproduce).
143
+ * https://blog.cloudflare.com/content-independence-day-ai-options/
144
+ */
145
+ export declare const CONTENT_SIGNAL_USE_VALUES: string[];
146
+ /**
147
+ * IETF AIPREF vocabulary (draft-ietf-aipref-vocab-07, 2026-08-19). Two
148
+ * categories only: `train-ai` (modifying model parameters) and `search`
149
+ * (retrieval that links back to the original). Values are `y` / `n`; an absent
150
+ * token means "unknown", never "allowed".
151
+ *
152
+ * The drafts are pre-working-group-last-call and carry the "DO NOT REFLECT
153
+ * CONSENSUS" boilerplate, so ax-audit reports these directives without ever
154
+ * requiring them. Note the token order is inverted against Content Signals
155
+ * (`train-ai` here, `ai-train` there).
156
+ * https://datatracker.ietf.org/wg/aipref/documents/
157
+ */
158
+ export declare const AIPREF_TOKENS: string[];
159
+ export declare const AIPREF_VALUES: string[];
34
160
  /**
35
161
  * Really Simple Licensing 1.0 (https://rslstandard.org/rsl): machine-readable licensing
36
162
  * terms for content, discovered via robots.txt `License:`, HTTP `Link: rel="license"`,
@@ -42,7 +168,62 @@ export declare const RSL_PERMIT_TYPES: string[];
42
168
  export declare const RSL_USAGE_TOKENS: string[];
43
169
  export declare const RSL_USER_TOKENS: string[];
44
170
  export declare const RSL_PAYMENT_TYPES: string[];
171
+ /**
172
+ * A2A Agent Card (https://a2a-protocol.org).
173
+ *
174
+ * Two generations are in the wild. A2A 1.0 (2026-03-12) replaced the top-level
175
+ * `url`, `protocolVersion`, `preferredTransport` and `additionalInterfaces`
176
+ * fields with one `supportedInterfaces[]` array; 0.3-shaped cards are still the
177
+ * majority deployed. Required-field lists are taken from `specification/a2a.proto`
178
+ * (1.0) and `specification/json/a2a.json` at tag v0.3.0.
179
+ */
180
+ export declare const AGENT_CARD_REQUIRED_V1: string[];
181
+ export declare const AGENT_CARD_REQUIRED_V03: string[];
182
+ /** Transport bindings a 1.0 interface may declare. */
183
+ export declare const A2A_PROTOCOL_BINDINGS: string[];
184
+ /** Media type registered for A2A payloads (spec §14.1.1). */
185
+ export declare const A2A_MEDIA_TYPE = "application/a2a+json";
186
+ /** @deprecated Superseded by AGENT_CARD_REQUIRED_V03 / _V1 in 3.7. Kept for one minor. */
45
187
  export declare const AGENT_JSON_REQUIRED_FIELDS: string[];
188
+ /**
189
+ * Model Context Protocol.
190
+ *
191
+ * `/.well-known/mcp.json` was never part of the specification; ax-audit
192
+ * recommended it before the ecosystem settled. The actual discovery work is
193
+ * SEP-2127 (open draft) and the `experimental-ext-server-card` repository,
194
+ * which recommend a **server card** at `<streamable-http-url>/server-card` and
195
+ * an entry in `/.well-known/ai-catalog.json`. Cloudflare and Mintlify serve one
196
+ * at `/.well-known/mcp/server-card.json`.
197
+ *
198
+ * Server cards deliberately carry no `tools[]`: tool lists come from a live
199
+ * `tools/list` call, not from a static document that would immediately drift.
200
+ */
201
+ export declare const MCP_SERVER_CARD_MEDIA_TYPE = "application/mcp-server-card+json";
202
+ export declare const MCP_SERVER_CARD_REQUIRED: string[];
203
+ export declare const MCP_REMOTE_TYPES: string[];
204
+ /**
205
+ * Released MCP protocol versions, newest first. `2026-07-28` removed sessions
206
+ * and `initialize`, made `MCP-Protocol-Version`, `Mcp-Method` and `Mcp-Name`
207
+ * mandatory on every POST, and added the `server/discover` RPC.
208
+ * https://modelcontextprotocol.io/specification/versioning
209
+ */
210
+ export declare const MCP_PROTOCOL_VERSIONS: string[];
211
+ /** Versions old enough that a card advertising only these is worth flagging. */
212
+ export declare const MCP_STALE_PROTOCOL_VERSIONS: string[];
213
+ /** Media types an ai-catalog entry may declare, per the Agent Card WG draft. */
214
+ export declare const AI_CATALOG_ENTRY_TYPES: Record<string, string>;
215
+ /**
216
+ * Where API descriptions live, in order of authority.
217
+ *
218
+ * `/.well-known/openapi.json` is a folk convention: it is not IANA-registered,
219
+ * and the OpenAPI specification recommends the file name `openapi.json` /
220
+ * `openapi.yaml` without prescribing a location. It stays first because
221
+ * ax-audit recommended it before 3.7 and sites followed that advice, but the
222
+ * common real-world locations are probed too.
223
+ */
224
+ export declare const API_DESCRIPTION_PATHS: string[];
225
+ /** RFC 9264 linkset media type, required by RFC 9727 for the API catalog. */
226
+ export declare const LINKSET_MEDIA_TYPE = "application/linkset+json";
46
227
  export declare const SECURITY_TXT_REQUIRED_FIELDS: string[];
47
228
  export declare const SECURITY_HEADERS: SecurityHeader[];
48
229
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAKxD,eAAO,MAAM,OAAO,EAAE,MAAoB,CAAC;AAC3C,eAAO,MAAM,UAAU,QAAqE,CAAC;AAE7F;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAuDhD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,MAAM,EAA8E,CAAC;AAEnH;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,EASpC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAqBhD,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAAK,EAKzB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,EAAuC,CAAC;AAE5E;;;;GAIG;AACH,eAAO,MAAM,aAAa,gCAAgC,CAAC;AAC3D,eAAO,MAAM,QAAQ,wBAAwB,CAAC;AAC9C,eAAO,MAAM,gBAAgB,EAAE,MAAM,EAA6B,CAAC;AACnE,eAAO,MAAM,gBAAgB,EAAE,MAAM,EAAoE,CAAC;AAC1G,eAAO,MAAM,eAAe,EAAE,MAAM,EAA4E,CAAC;AACjH,eAAO,MAAM,iBAAiB,EAAE,MAAM,EASrC,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,MAAM,EAA6C,CAAC;AAE7F,eAAO,MAAM,4BAA4B,EAAE,MAAM,EAA2B,CAAC;AAE7E,eAAO,MAAM,gBAAgB,EAAE,cAAc,EAQ5C,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}