ax-audit 5.0.0 → 6.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 (192) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +33 -24
  3. package/dist/baseline.js +1 -1
  4. package/dist/baseline.js.map +1 -1
  5. package/dist/check-ids.js +1 -1
  6. package/dist/check-ids.js.map +1 -1
  7. package/dist/cli.js +1 -1
  8. package/dist/cli.js.map +1 -1
  9. package/dist/constants.d.ts +1 -85
  10. package/dist/constants.d.ts.map +1 -1
  11. package/dist/constants.js +0 -135
  12. package/dist/constants.js.map +1 -1
  13. package/dist/index.d.ts +1 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +1 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/license.d.ts +3 -2
  18. package/dist/license.d.ts.map +1 -1
  19. package/dist/license.js +5 -58
  20. package/dist/license.js.map +1 -1
  21. package/dist/metadata.d.ts +6 -0
  22. package/dist/metadata.d.ts.map +1 -0
  23. package/dist/metadata.js +205 -0
  24. package/dist/metadata.js.map +1 -0
  25. package/dist/orchestrator.d.ts +1 -0
  26. package/dist/orchestrator.d.ts.map +1 -1
  27. package/dist/orchestrator.js +134 -63
  28. package/dist/orchestrator.js.map +1 -1
  29. package/dist/scorer.js +2 -2
  30. package/dist/scorer.js.map +1 -1
  31. package/dist/types.d.ts +2 -0
  32. package/dist/types.d.ts.map +1 -1
  33. package/docs/api.md +12 -4
  34. package/docs/architecture.md +9 -98
  35. package/docs/ci.md +7 -3
  36. package/docs/cli.md +7 -3
  37. package/docs/faq.md +18 -0
  38. package/docs/getting-started.md +32 -26
  39. package/package.json +5 -5
  40. package/dist/checks/agent-access.d.ts +0 -33
  41. package/dist/checks/agent-access.d.ts.map +0 -1
  42. package/dist/checks/agent-access.js +0 -256
  43. package/dist/checks/agent-access.js.map +0 -1
  44. package/dist/checks/agent-card.d.ts +0 -37
  45. package/dist/checks/agent-card.d.ts.map +0 -1
  46. package/dist/checks/agent-card.js +0 -352
  47. package/dist/checks/agent-card.js.map +0 -1
  48. package/dist/checks/agent-operability.d.ts +0 -66
  49. package/dist/checks/agent-operability.d.ts.map +0 -1
  50. package/dist/checks/agent-operability.js +0 -383
  51. package/dist/checks/agent-operability.js.map +0 -1
  52. package/dist/checks/agent-skills.d.ts +0 -24
  53. package/dist/checks/agent-skills.d.ts.map +0 -1
  54. package/dist/checks/agent-skills.js +0 -316
  55. package/dist/checks/agent-skills.js.map +0 -1
  56. package/dist/checks/ai-catalog.d.ts +0 -28
  57. package/dist/checks/ai-catalog.d.ts.map +0 -1
  58. package/dist/checks/ai-catalog.js +0 -254
  59. package/dist/checks/ai-catalog.js.map +0 -1
  60. package/dist/checks/ai-directives.d.ts +0 -57
  61. package/dist/checks/ai-directives.d.ts.map +0 -1
  62. package/dist/checks/ai-directives.js +0 -263
  63. package/dist/checks/ai-directives.js.map +0 -1
  64. package/dist/checks/api-discovery.d.ts +0 -26
  65. package/dist/checks/api-discovery.d.ts.map +0 -1
  66. package/dist/checks/api-discovery.js +0 -432
  67. package/dist/checks/api-discovery.js.map +0 -1
  68. package/dist/checks/auth-discovery.d.ts +0 -28
  69. package/dist/checks/auth-discovery.d.ts.map +0 -1
  70. package/dist/checks/auth-discovery.js +0 -302
  71. package/dist/checks/auth-discovery.js.map +0 -1
  72. package/dist/checks/commerce-discovery.d.ts +0 -40
  73. package/dist/checks/commerce-discovery.d.ts.map +0 -1
  74. package/dist/checks/commerce-discovery.js +0 -295
  75. package/dist/checks/commerce-discovery.js.map +0 -1
  76. package/dist/checks/content-negotiation.d.ts +0 -4
  77. package/dist/checks/content-negotiation.d.ts.map +0 -1
  78. package/dist/checks/content-negotiation.js +0 -253
  79. package/dist/checks/content-negotiation.js.map +0 -1
  80. package/dist/checks/crawl-efficiency.d.ts +0 -16
  81. package/dist/checks/crawl-efficiency.d.ts.map +0 -1
  82. package/dist/checks/crawl-efficiency.js +0 -186
  83. package/dist/checks/crawl-efficiency.js.map +0 -1
  84. package/dist/checks/frontmatter.d.ts +0 -34
  85. package/dist/checks/frontmatter.d.ts.map +0 -1
  86. package/dist/checks/frontmatter.js +0 -100
  87. package/dist/checks/frontmatter.js.map +0 -1
  88. package/dist/checks/html-rendering.d.ts +0 -21
  89. package/dist/checks/html-rendering.d.ts.map +0 -1
  90. package/dist/checks/html-rendering.js +0 -221
  91. package/dist/checks/html-rendering.js.map +0 -1
  92. package/dist/checks/html-utils.d.ts +0 -66
  93. package/dist/checks/html-utils.d.ts.map +0 -1
  94. package/dist/checks/html-utils.js +0 -139
  95. package/dist/checks/html-utils.js.map +0 -1
  96. package/dist/checks/http-headers.d.ts +0 -11
  97. package/dist/checks/http-headers.d.ts.map +0 -1
  98. package/dist/checks/http-headers.js +0 -249
  99. package/dist/checks/http-headers.js.map +0 -1
  100. package/dist/checks/http-hygiene.d.ts +0 -26
  101. package/dist/checks/http-hygiene.d.ts.map +0 -1
  102. package/dist/checks/http-hygiene.js +0 -257
  103. package/dist/checks/http-hygiene.js.map +0 -1
  104. package/dist/checks/index.d.ts +0 -3
  105. package/dist/checks/index.d.ts.map +0 -1
  106. package/dist/checks/index.js +0 -55
  107. package/dist/checks/index.js.map +0 -1
  108. package/dist/checks/llms-txt.d.ts +0 -19
  109. package/dist/checks/llms-txt.d.ts.map +0 -1
  110. package/dist/checks/llms-txt.js +0 -281
  111. package/dist/checks/llms-txt.js.map +0 -1
  112. package/dist/checks/mcp-discovery.d.ts +0 -30
  113. package/dist/checks/mcp-discovery.d.ts.map +0 -1
  114. package/dist/checks/mcp-discovery.js +0 -523
  115. package/dist/checks/mcp-discovery.js.map +0 -1
  116. package/dist/checks/meta-tags.d.ts +0 -17
  117. package/dist/checks/meta-tags.d.ts.map +0 -1
  118. package/dist/checks/meta-tags.js +0 -188
  119. package/dist/checks/meta-tags.js.map +0 -1
  120. package/dist/checks/robots-parser.d.ts +0 -110
  121. package/dist/checks/robots-parser.d.ts.map +0 -1
  122. package/dist/checks/robots-parser.js +0 -277
  123. package/dist/checks/robots-parser.js.map +0 -1
  124. package/dist/checks/robots-txt.d.ts +0 -6
  125. package/dist/checks/robots-txt.d.ts.map +0 -1
  126. package/dist/checks/robots-txt.js +0 -367
  127. package/dist/checks/robots-txt.js.map +0 -1
  128. package/dist/checks/rsl.d.ts +0 -4
  129. package/dist/checks/rsl.d.ts.map +0 -1
  130. package/dist/checks/rsl.js +0 -242
  131. package/dist/checks/rsl.js.map +0 -1
  132. package/dist/checks/security-txt.d.ts +0 -4
  133. package/dist/checks/security-txt.d.ts.map +0 -1
  134. package/dist/checks/security-txt.js +0 -81
  135. package/dist/checks/security-txt.js.map +0 -1
  136. package/dist/checks/seo-basics.d.ts +0 -13
  137. package/dist/checks/seo-basics.d.ts.map +0 -1
  138. package/dist/checks/seo-basics.js +0 -221
  139. package/dist/checks/seo-basics.js.map +0 -1
  140. package/dist/checks/sitemap.d.ts +0 -12
  141. package/dist/checks/sitemap.d.ts.map +0 -1
  142. package/dist/checks/sitemap.js +0 -240
  143. package/dist/checks/sitemap.js.map +0 -1
  144. package/dist/checks/structured-data.d.ts +0 -4
  145. package/dist/checks/structured-data.d.ts.map +0 -1
  146. package/dist/checks/structured-data.js +0 -408
  147. package/dist/checks/structured-data.js.map +0 -1
  148. package/dist/checks/structured-fields.d.ts +0 -46
  149. package/dist/checks/structured-fields.d.ts.map +0 -1
  150. package/dist/checks/structured-fields.js +0 -112
  151. package/dist/checks/structured-fields.js.map +0 -1
  152. package/dist/checks/surface.d.ts +0 -59
  153. package/dist/checks/surface.d.ts.map +0 -1
  154. package/dist/checks/surface.js +0 -106
  155. package/dist/checks/surface.js.map +0 -1
  156. package/dist/checks/tls-https.d.ts +0 -13
  157. package/dist/checks/tls-https.d.ts.map +0 -1
  158. package/dist/checks/tls-https.js +0 -163
  159. package/dist/checks/tls-https.js.map +0 -1
  160. package/dist/checks/usage-policy.d.ts +0 -53
  161. package/dist/checks/usage-policy.d.ts.map +0 -1
  162. package/dist/checks/usage-policy.js +0 -339
  163. package/dist/checks/usage-policy.js.map +0 -1
  164. package/dist/checks/utils.d.ts +0 -40
  165. package/dist/checks/utils.d.ts.map +0 -1
  166. package/dist/checks/utils.js +0 -74
  167. package/dist/checks/utils.js.map +0 -1
  168. package/dist/checks/waf.d.ts +0 -75
  169. package/dist/checks/waf.d.ts.map +0 -1
  170. package/dist/checks/waf.js +0 -203
  171. package/dist/checks/waf.js.map +0 -1
  172. package/dist/checks/webmcp.d.ts +0 -55
  173. package/dist/checks/webmcp.d.ts.map +0 -1
  174. package/dist/checks/webmcp.js +0 -209
  175. package/dist/checks/webmcp.js.map +0 -1
  176. package/dist/checks/well-known.d.ts +0 -38
  177. package/dist/checks/well-known.d.ts.map +0 -1
  178. package/dist/checks/well-known.js +0 -202
  179. package/dist/checks/well-known.js.map +0 -1
  180. package/dist/fetcher.d.ts +0 -15
  181. package/dist/fetcher.d.ts.map +0 -1
  182. package/dist/fetcher.js +0 -127
  183. package/dist/fetcher.js.map +0 -1
  184. package/dist/guide-urls.d.ts +0 -2
  185. package/dist/guide-urls.d.ts.map +0 -1
  186. package/dist/guide-urls.js +0 -5
  187. package/dist/guide-urls.js.map +0 -1
  188. package/dist/licensed-checks.d.ts +0 -4
  189. package/dist/licensed-checks.d.ts.map +0 -1
  190. package/dist/licensed-checks.js +0 -11
  191. package/dist/licensed-checks.js.map +0 -1
  192. package/docs/roadmap.md +0 -367
package/dist/license.js CHANGED
@@ -1,6 +1,3 @@
1
- /** License checks carry only the account key, never the target URL or report. */
2
- const ENDPOINT = 'https://axrush.com/api/v1/engine/license';
3
- const ACCOUNT = 'https://axrush.com/account/api';
4
1
  export class LicenseError extends Error {
5
2
  code;
6
3
  constructor(code, message) {
@@ -9,63 +6,13 @@ export class LicenseError extends Error {
9
6
  this.name = 'LicenseError';
10
7
  }
11
8
  }
12
- // Only simultaneous validations share a request. Successful responses are never
13
- // cached, so a new audit observes a revoked key or an inactive subscription.
14
- const pending = new Map();
15
- async function validate(key) {
16
- const controller = new AbortController();
17
- const timer = setTimeout(() => controller.abort(), 10_000);
18
- try {
19
- const response = await fetch(ENDPOINT, {
20
- method: 'POST',
21
- headers: { authorization: `Bearer ${key}`, accept: 'application/json' },
22
- redirect: 'error',
23
- signal: controller.signal,
24
- cache: 'no-store',
25
- });
26
- if (response.status === 401)
27
- throw new LicenseError('INVALID_KEY', `Your AX Rush key is invalid or revoked. Create a key at ${ACCOUNT}.`);
28
- if (response.status === 403)
29
- throw new LicenseError('PLAN_REQUIRED', 'An active paid AX Rush plan is required. Manage your subscription at https://axrush.com/account/billing.');
30
- if (!response.ok)
31
- throw new Error('License service unavailable');
32
- const result = await response.json();
33
- if (!result ||
34
- typeof result !== 'object' ||
35
- !('licensed' in result) ||
36
- result.licensed !== true ||
37
- !('product' in result) ||
38
- result.product !== 'ax-audit') {
39
- throw new Error('Invalid license response');
40
- }
41
- }
42
- catch (error) {
43
- if (error instanceof LicenseError)
44
- throw error;
45
- // Network errors can include URLs or headers. Never copy them into an error
46
- // printed by the CLI, and never fall through to an unlicensed audit.
47
- throw new LicenseError('VALIDATION_UNAVAILABLE', 'AX Rush could not validate your key. Check your connection and try again; no audit was started.');
48
- }
49
- finally {
50
- clearTimeout(timer);
51
- }
52
- }
53
- export async function requireLicense(apiKey) {
9
+ /** Client-side checks improve errors. The server independently enforces access. */
10
+ export function accountKey(apiKey) {
54
11
  const key = (apiKey ?? process.env.AXRUSH_API_KEY)?.trim();
55
12
  if (!key)
56
- throw new LicenseError('MISSING_KEY', `Set AXRUSH_API_KEY to a key generated at ${ACCOUNT}. ax-audit requires an active paid AX Rush plan.`);
13
+ throw new LicenseError('MISSING_KEY', 'Set AXRUSH_API_KEY to a key generated at https://axrush.com/account/api. An active paid AX Rush subscription is required.');
57
14
  if (!/^axr_[A-Za-z0-9_-]{43}$/.test(key))
58
- throw new LicenseError('INVALID_KEY', `Invalid AX Rush key format. Create a key at ${ACCOUNT}.`);
59
- const existing = pending.get(key);
60
- if (existing)
61
- return existing;
62
- const validation = validate(key);
63
- pending.set(key, validation);
64
- try {
65
- await validation;
66
- }
67
- finally {
68
- pending.delete(key);
69
- }
15
+ throw new LicenseError('INVALID_KEY', 'Invalid AX Rush key format. Create a key at https://axrush.com/account/api.');
16
+ return key;
70
17
  }
71
18
  //# sourceMappingURL=license.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"license.js","sourceRoot":"","sources":["../src/license.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"license.js","sourceRoot":"","sources":["../src/license.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,YAAa,SAAQ,KAAK;IAEnB;IADlB,YACkB,IAAsB,EACtC,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAkB;QAItC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,mFAAmF;AACnF,MAAM,UAAU,UAAU,CAAC,MAAe;IACxC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC;IAC3D,IAAI,CAAC,GAAG;QACN,MAAM,IAAI,YAAY,CACpB,aAAa,EACb,2HAA2H,CAC5H,CAAC;IACJ,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC;QACtC,MAAM,IAAI,YAAY,CACpB,aAAa,EACb,6EAA6E,CAC9E,CAAC;IACJ,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { CheckMeta } from './types.js';
2
+ /** Descriptions only. Check execution is private to AX Rush. */
3
+ export declare const checks: {
4
+ meta: CheckMeta;
5
+ }[];
6
+ //# sourceMappingURL=metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,gEAAgE;AAChE,eAAO,MAAM,MAAM,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,EA0MvC,CAAC"}
@@ -0,0 +1,205 @@
1
+ /** Descriptions only. Check execution is private to AX Rush. */
2
+ export const checks = [
3
+ {
4
+ meta: {
5
+ id: 'llms-txt',
6
+ name: 'LLMs.txt',
7
+ description: 'Checks /llms.txt presence, spec compliance, and link health',
8
+ category: 'discovery',
9
+ },
10
+ },
11
+ {
12
+ meta: {
13
+ id: 'robots-txt',
14
+ name: 'Robots.txt',
15
+ description: 'Checks AI crawler configuration in robots.txt',
16
+ },
17
+ },
18
+ {
19
+ meta: {
20
+ id: 'agent-card',
21
+ name: 'Agent Card (A2A)',
22
+ description: 'Checks the A2A Agent Card at /.well-known/agent-card.json',
23
+ category: 'protocols',
24
+ aliases: ['agent-json'],
25
+ },
26
+ },
27
+ {
28
+ meta: {
29
+ id: 'security-txt',
30
+ name: 'Security.txt',
31
+ description: 'Checks /.well-known/security.txt RFC 9116 compliance',
32
+ },
33
+ },
34
+ {
35
+ meta: {
36
+ id: 'structured-data',
37
+ name: 'Structured Data',
38
+ description: 'Checks JSON-LD structured data on homepage',
39
+ },
40
+ },
41
+ {
42
+ meta: {
43
+ id: 'meta-tags',
44
+ name: 'Meta Tags',
45
+ description: 'Checks AI meta tags, rel="alternate", rel="me", and Open Graph / Twitter Card completeness',
46
+ },
47
+ },
48
+ {
49
+ meta: {
50
+ id: 'api-discovery',
51
+ name: 'API Discovery',
52
+ description: 'Checks how agents discover an API description (RFC 9727 catalog, service-desc links, OpenAPI)',
53
+ category: 'protocols',
54
+ aliases: ['openapi'],
55
+ },
56
+ },
57
+ {
58
+ meta: {
59
+ id: 'http-headers',
60
+ name: 'HTTP Headers',
61
+ description: 'Checks security headers, AI discovery Link headers, and CORS',
62
+ category: 'discovery',
63
+ },
64
+ },
65
+ {
66
+ meta: {
67
+ id: 'mcp-discovery',
68
+ name: 'MCP Discovery',
69
+ description: 'Checks how AI agents discover this site’s Model Context Protocol server',
70
+ category: 'protocols',
71
+ aliases: ['mcp'],
72
+ },
73
+ },
74
+ {
75
+ meta: {
76
+ id: 'html-rendering',
77
+ name: 'HTML Rendering',
78
+ description: 'Checks server-rendered content, semantic landmarks, and SPA-shell heuristics',
79
+ },
80
+ },
81
+ {
82
+ meta: {
83
+ id: 'sitemap',
84
+ name: 'Sitemap',
85
+ description: 'Checks sitemap.xml presence, structure, and freshness',
86
+ },
87
+ },
88
+ {
89
+ meta: {
90
+ id: 'seo-basics',
91
+ name: 'SEO Basics',
92
+ description: 'Checks <title>, meta description, canonical, lang, charset, viewport, hreflang',
93
+ },
94
+ },
95
+ {
96
+ meta: {
97
+ id: 'tls-https',
98
+ name: 'TLS / HTTPS',
99
+ description: 'Checks HTTPS, HTTP→HTTPS redirect, and HSTS configuration',
100
+ },
101
+ },
102
+ {
103
+ meta: {
104
+ id: 'content-negotiation',
105
+ name: 'Content Negotiation',
106
+ description: 'Checks whether the homepage serves Markdown to AI agents via Accept: text/markdown',
107
+ category: 'content',
108
+ },
109
+ },
110
+ {
111
+ meta: {
112
+ id: 'rsl',
113
+ name: 'RSL License',
114
+ description: 'Checks Really Simple Licensing (RSL) discovery and license document validity',
115
+ },
116
+ },
117
+ {
118
+ meta: {
119
+ id: 'agent-access',
120
+ name: 'Agent Access',
121
+ description: 'Checks that AI crawler user-agents are not blocked or served reduced content (cloaking)',
122
+ category: 'access',
123
+ },
124
+ },
125
+ {
126
+ meta: {
127
+ id: 'crawl-efficiency',
128
+ name: 'Crawl Efficiency',
129
+ description: 'Checks compression, conditional GET (ETag / Last-Modified), and response size',
130
+ },
131
+ },
132
+ {
133
+ meta: {
134
+ id: 'ai-directives',
135
+ name: 'AI Directives',
136
+ description: 'Checks page-level robots directives that govern AI answers and summaries',
137
+ category: 'access',
138
+ },
139
+ },
140
+ {
141
+ meta: {
142
+ id: 'usage-policy',
143
+ name: 'Usage Policy',
144
+ description: 'Checks machine-readable AI usage signals for coverage and internal consistency',
145
+ category: 'policy',
146
+ },
147
+ },
148
+ {
149
+ meta: {
150
+ id: 'http-hygiene',
151
+ name: 'HTTP Hygiene',
152
+ description: 'Checks status-code honesty, redirect depth, rate-limit headers and content typing',
153
+ category: 'access',
154
+ },
155
+ },
156
+ {
157
+ meta: {
158
+ id: 'ai-catalog',
159
+ name: 'AI Catalog',
160
+ description: 'Checks the agent resource catalog (ai-catalog.json / ard.json) and whether its entries resolve',
161
+ category: 'protocols',
162
+ },
163
+ },
164
+ {
165
+ meta: {
166
+ id: 'agent-skills',
167
+ name: 'Agent Skills',
168
+ description: 'Checks discoverable Agent Skills (SKILL.md) and their frontmatter',
169
+ category: 'protocols',
170
+ },
171
+ },
172
+ {
173
+ meta: {
174
+ id: 'webmcp',
175
+ name: 'WebMCP',
176
+ description: 'Checks declarative WebMCP tool annotations on forms',
177
+ category: 'protocols',
178
+ },
179
+ },
180
+ {
181
+ meta: {
182
+ id: 'commerce-discovery',
183
+ name: 'Commerce Discovery',
184
+ description: 'Checks the Universal Commerce Protocol profile for agent-driven purchasing',
185
+ category: 'protocols',
186
+ },
187
+ },
188
+ {
189
+ meta: {
190
+ id: 'auth-discovery',
191
+ name: 'Auth Discovery',
192
+ description: 'Checks OAuth metadata (RFC 9728 / RFC 8414) so agents can authenticate without documentation',
193
+ category: 'protocols',
194
+ },
195
+ },
196
+ {
197
+ meta: {
198
+ id: 'agent-operability',
199
+ name: 'Agent Operability',
200
+ description: 'Checks whether interactive elements are nameable and operable by a browser agent',
201
+ category: 'content',
202
+ },
203
+ },
204
+ ];
205
+ //# sourceMappingURL=metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { AuditOptions, AuditReport, BatchAuditReport, BatchOptions } from './types.js';
2
+ /** Send a URL to AX Rush. No check implementation or local fallback ships in npm. */
2
3
  export declare function audit(options: AuditOptions): Promise<AuditReport>;
3
4
  export declare function batchAudit(urls: string[], options?: BatchOptions): Promise<BatchAuditReport>;
4
5
  //# sourceMappingURL=orchestrator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAA6B,MAAM,YAAY,CAAC;AAEvH,wBAAsB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAGvE;AA2DD,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA+BtG"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA6F5F,qFAAqF;AACrF,wBAAsB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA4CvE;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwCtG"}
@@ -1,74 +1,145 @@
1
- import { requireLicense } from './license.js';
2
- import { createFetcher } from './fetcher.js';
3
- import { checks as allChecks } from './checks/index.js';
4
- import { calculateOverallScore, getGrade } from './scorer.js';
5
- import { isSelected } from './check-ids.js';
6
- export async function audit(options) {
7
- await requireLicense(options.apiKey);
8
- return runAudit(options);
9
- }
10
- /** Only reachable after an audit or batch has validated its account key. */
11
- async function runAudit(options) {
12
- const startTime = performance.now();
13
- const verbose = options.verbose ?? false;
14
- const log = verbose ? (msg) => console.error(` [verbose] ${msg}`) : () => { };
15
- const fetcher = createFetcher({ timeout: options.timeout ?? 10000, verbose, retries: options.retries ?? 2 });
16
- const homepage = await fetcher.fetch(options.url);
17
- const ctx = {
18
- url: options.url.replace(/\/$/, ''),
19
- fetch: fetcher.fetch,
20
- html: homepage.body,
21
- headers: homepage.headers,
22
- profile: options.profile ?? 'auto',
23
- };
24
- // Selection matches a check's current id or any former one, so a `--checks`
25
- // flag written before a rename keeps working.
26
- const checksToRun = options.checks ? allChecks.filter((c) => isSelected(c.meta, options.checks)) : allChecks;
27
- log(`running ${checksToRun.length} check(s): ${checksToRun.map((c) => c.meta.id).join(', ')}`);
28
- const settled = await Promise.allSettled(checksToRun.map((c) => c.run(ctx)));
29
- const results = settled.map((s, i) => {
30
- if (s.status === 'fulfilled') {
31
- log(`${checksToRun[i].meta.id}: score=${s.value.score} (${s.value.duration}ms)`);
32
- return s.value;
33
- }
34
- log(`${checksToRun[i].meta.id}: CRASHED — ${s.reason?.message || 'Unknown error'}`);
1
+ import { accountKey, LicenseError } from './license.js';
2
+ import { getGrade } from './scorer.js';
3
+ import { allSelectableIds } from './check-ids.js';
4
+ const ENDPOINT = 'https://axrush.com/api/v1/engine/audit';
5
+ const PROFILES = new Set(['auto', 'api', 'mcp', 'agent', 'docs', 'commerce', 'all']);
6
+ const CHECKS = new Set(allSelectableIds().map((id) => id.toLowerCase()));
7
+ function payload(options) {
8
+ try {
9
+ const url = new URL(options.url);
10
+ if (!['http:', 'https:'].includes(url.protocol) ||
11
+ url.username ||
12
+ url.password ||
13
+ (url.port && !['80', '443'].includes(url.port)) ||
14
+ options.url.length > 2048)
15
+ throw new Error();
16
+ if (options.profile !== undefined && !PROFILES.has(options.profile))
17
+ throw new Error();
18
+ if (options.checks !== undefined &&
19
+ (!Array.isArray(options.checks) ||
20
+ !options.checks.length ||
21
+ options.checks.length > 26 ||
22
+ options.checks.some((id) => typeof id !== 'string' || !CHECKS.has(id.toLowerCase()))))
23
+ throw new Error();
24
+ if (options.timeout !== undefined &&
25
+ (!Number.isInteger(options.timeout) || options.timeout < 100 || options.timeout > 10_000))
26
+ throw new Error();
27
+ if (options.retries !== undefined &&
28
+ (!Number.isInteger(options.retries) || options.retries < 0 || options.retries > 2))
29
+ throw new Error();
35
30
  return {
36
- id: checksToRun[i].meta.id,
37
- name: checksToRun[i].meta.name,
38
- description: checksToRun[i].meta.description,
39
- score: 0,
40
- findings: [{ status: 'fail', message: `Check crashed: ${s.reason?.message || 'Unknown error'}` }],
41
- duration: 0,
31
+ url: url.toString(),
32
+ checks: options.checks,
33
+ profile: options.profile,
34
+ timeout: options.timeout,
35
+ retries: options.retries,
42
36
  };
43
- });
44
- const overallScore = calculateOverallScore(results, checksToRun.map((c) => c.meta));
45
- const grade = getGrade(overallScore);
46
- return {
47
- url: options.url,
48
- timestamp: new Date().toISOString(),
49
- overallScore,
50
- grade,
51
- results,
52
- duration: Math.round(performance.now() - startTime),
53
- };
37
+ }
38
+ catch {
39
+ throw new LicenseError('INVALID_INPUT', 'Use a public HTTP(S) URL without credentials, supported checks/profile, timeout 100–10000 ms and retries 0–2.');
40
+ }
41
+ }
42
+ function validReport(value) {
43
+ if (!value || typeof value !== 'object')
44
+ return false;
45
+ const r = value;
46
+ return (typeof r.url === 'string' &&
47
+ typeof r.timestamp === 'string' &&
48
+ Number.isFinite(Date.parse(r.timestamp)) &&
49
+ typeof r.overallScore === 'number' &&
50
+ Number.isFinite(r.overallScore) &&
51
+ r.overallScore >= 0 &&
52
+ r.overallScore <= 100 &&
53
+ typeof r.duration === 'number' &&
54
+ Number.isFinite(r.duration) &&
55
+ r.duration >= 0 &&
56
+ typeof r.engine === 'string' &&
57
+ !!r.engine &&
58
+ !!r.grade &&
59
+ typeof r.grade.min === 'number' &&
60
+ typeof r.grade.label === 'string' &&
61
+ typeof r.grade.color === 'string' &&
62
+ Array.isArray(r.results) &&
63
+ r.results.length > 0 &&
64
+ r.results.every((result) => result &&
65
+ typeof result.id === 'string' &&
66
+ typeof result.name === 'string' &&
67
+ typeof result.description === 'string' &&
68
+ typeof result.score === 'number' &&
69
+ Number.isFinite(result.score) &&
70
+ result.score >= 0 &&
71
+ result.score <= 100 &&
72
+ typeof result.duration === 'number' &&
73
+ Array.isArray(result.findings) &&
74
+ result.findings.every((finding) => finding && ['pass', 'warn', 'fail'].includes(finding.status) && typeof finding.message === 'string')));
75
+ }
76
+ /** Send a URL to AX Rush. No check implementation or local fallback ships in npm. */
77
+ export async function audit(options) {
78
+ const key = accountKey(options.apiKey);
79
+ const body = payload(options);
80
+ const controller = new AbortController();
81
+ const timer = setTimeout(() => controller.abort(), 65_000);
82
+ try {
83
+ const response = await fetch(ENDPOINT, {
84
+ method: 'POST',
85
+ headers: { authorization: `Bearer ${key}`, accept: 'application/json', 'content-type': 'application/json' },
86
+ body: JSON.stringify(body),
87
+ redirect: 'error',
88
+ signal: controller.signal,
89
+ cache: 'no-store',
90
+ });
91
+ if (response.status === 401)
92
+ throw new LicenseError('INVALID_KEY', 'Your AX Rush key is invalid or revoked. Create a key at https://axrush.com/account/api.');
93
+ if (response.status === 403)
94
+ throw new LicenseError('PLAN_REQUIRED', 'An active paid AX Rush subscription is required. Manage it at https://axrush.com/account/billing.');
95
+ if (response.status === 429)
96
+ throw new LicenseError('RATE_LIMITED', 'Too many audits for this organization or target. Try again later.');
97
+ if (response.status === 400 || response.status === 413)
98
+ throw new LicenseError('INVALID_INPUT', 'AX Rush rejected the audit input. Use a publicly reachable HTTP(S) URL and supported options. Local/private networks are not supported.');
99
+ if (!response.ok)
100
+ throw new Error();
101
+ const result = await response.json();
102
+ if (!validReport(result))
103
+ throw new Error();
104
+ return result;
105
+ }
106
+ catch (error) {
107
+ if (error instanceof LicenseError)
108
+ throw error;
109
+ throw new LicenseError('VALIDATION_UNAVAILABLE', 'AX Rush could not complete the audit request. Check your connection and try again. No local audit was performed.');
110
+ }
111
+ finally {
112
+ clearTimeout(timer);
113
+ }
54
114
  }
55
115
  export async function batchAudit(urls, options = {}) {
56
- await requireLicense(options.apiKey);
57
- const startTime = performance.now();
58
- const concurrency = Math.max(1, options.concurrency ?? 1);
59
- // Preserve input order in the output while running up to `concurrency` audits
60
- // in parallel via a shared index-based work queue.
116
+ accountKey(options.apiKey);
117
+ if (!Array.isArray(urls) ||
118
+ !urls.length ||
119
+ urls.length > 100 ||
120
+ (options.concurrency !== undefined &&
121
+ (!Number.isInteger(options.concurrency) || options.concurrency < 1 || options.concurrency > 4))) {
122
+ throw new LicenseError('INVALID_INPUT', 'Provide 1–100 URLs and a concurrency between 1 and 4.');
123
+ }
124
+ urls.forEach((url) => payload({ ...options, url }));
125
+ const started = performance.now();
61
126
  const reports = new Array(urls.length);
62
127
  let next = 0;
128
+ let failed = false;
63
129
  async function worker() {
64
- while (next < urls.length) {
65
- const i = next++;
66
- reports[i] = await runAudit({ ...options, url: urls[i] });
130
+ while (!failed && next < urls.length) {
131
+ const index = next++;
132
+ try {
133
+ reports[index] = await audit({ ...options, url: urls[index] });
134
+ }
135
+ catch (error) {
136
+ failed = true;
137
+ throw error;
138
+ }
67
139
  }
68
140
  }
69
- await Promise.all(Array.from({ length: Math.min(concurrency, urls.length) }, worker));
70
- const scores = reports.map((r) => r.overallScore);
71
- const averageScore = Math.round(scores.reduce((a, b) => a + b, 0) / scores.length);
141
+ await Promise.all(Array.from({ length: Math.min(options.concurrency ?? 1, urls.length) }, worker));
142
+ const averageScore = Math.round(reports.reduce((sum, report) => sum + report.overallScore, 0) / reports.length);
72
143
  return {
73
144
  reports,
74
145
  summary: {
@@ -78,7 +149,7 @@ export async function batchAudit(urls, options = {}) {
78
149
  averageScore,
79
150
  grade: getGrade(averageScore),
80
151
  },
81
- duration: Math.round(performance.now() - startTime),
152
+ duration: Math.round(performance.now() - started),
82
153
  };
83
154
  }
84
155
  //# sourceMappingURL=orchestrator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"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"}
package/dist/scorer.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { CHECK_CATEGORIES, CHECK_WEIGHTS, GRADES } from './constants.js';
2
- import { checks as allChecks } from './checks/index.js';
3
- import { clampScore } from './checks/utils.js';
2
+ import { checks as allChecks } from './metadata.js';
3
+ const clampScore = (score) => Math.max(0, Math.min(100, score));
4
4
  /**
5
5
  * Weighted average across the checks that ran and apply.
6
6
  *
@@ -1 +1 @@
1
- {"version":3,"file":"scorer.js","sourceRoot":"","sources":["../src/scorer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scorer.js","sourceRoot":"","sources":["../src/scorer.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -111,6 +111,8 @@ export interface Grade {
111
111
  color: string;
112
112
  }
113
113
  export interface AuditReport {
114
+ /** Server engine provenance, present on reports returned by AX Rush 6+. */
115
+ engine?: string;
114
116
  url: string;
115
117
  timestamp: string;
116
118
  overallScore: number;