ax-audit 4.2.1 → 5.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.
- package/CHANGELOG.md +9 -0
- package/README.md +27 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/license.d.ts +7 -0
- package/dist/license.d.ts.map +1 -0
- package/dist/license.js +71 -0
- package/dist/license.js.map +1 -0
- package/dist/licensed-checks.d.ts +4 -0
- package/dist/licensed-checks.d.ts.map +1 -0
- package/dist/licensed-checks.js +11 -0
- package/dist/licensed-checks.js.map +1 -0
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +8 -1
- package/dist/orchestrator.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/docs/api.md +6 -3
- package/docs/ci.md +15 -0
- package/docs/cli.md +7 -0
- package/docs/getting-started.md +26 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 5.0.0
|
|
4
|
+
|
|
5
|
+
- **Breaking:** `audit`, `batchAudit` and individual exported checks require a valid AX Rush organization API key and an active paid plan. Set `AXRUSH_API_KEY` or pass `apiKey` to `audit`/`batchAudit`.
|
|
6
|
+
- Validate online before target traffic; missing/revoked keys, inactive plans and unavailable validation fail closed with `LicenseError`.
|
|
7
|
+
- Keep audits local and never send the target URL, page content or report to the validation service. No authorization cache persists between executions.
|
|
8
|
+
- Metadata, scoring utilities, report rendering, `--help` and `--version` remain available without a key. Check behavior and scoring are unchanged.
|
|
9
|
+
- Earlier releases and existing source license notices are unchanged. Local validation is not tamper-proof DRM.
|
|
10
|
+
|
|
11
|
+
|
|
3
12
|
All notable changes to ax-audit are documented here.
|
|
4
13
|
|
|
5
14
|
## [4.2.1] - 2026-09-05
|
package/README.md
CHANGED
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
**Lighthouse for AI Agents.** Audit any website's AI Agent Experience (AX) readiness in seconds.
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
|
-
|
|
15
|
+
# Set AXRUSH_API_KEY using a paid account key from axrush.com/account/api
|
|
16
|
+
npx ax-audit@5 https://your-site.com
|
|
16
17
|
```
|
|
17
18
|
|
|
18
19
|
```
|
|
@@ -74,6 +75,31 @@ Protocol checks are **conditional**: a blog has no API to describe, so those rep
|
|
|
74
75
|
|
|
75
76
|
Every finding links to a step-by-step **[remediation guide](https://axrush.com/guides)**.
|
|
76
77
|
|
|
78
|
+
## AX Rush key required (v5)
|
|
79
|
+
|
|
80
|
+
Install the package normally with `npm install ax-audit`. To execute an audit,
|
|
81
|
+
you need an active paid AX Rush plan and an organization key created in
|
|
82
|
+
[Account → API keys](https://axrush.com/account/api). Set `AXRUSH_API_KEY` in
|
|
83
|
+
your local environment or your CI secret store. Do not commit it to source
|
|
84
|
+
control or put it in browser code.
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# AXRUSH_API_KEY is supplied securely by your environment or CI secrets
|
|
88
|
+
npx ax-audit@5 https://example.com
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
The engine validates the key with AX Rush before each audit or batch, then runs
|
|
92
|
+
locally. Only the key is sent to AX Rush: target URLs, page content and reports
|
|
93
|
+
stay in your execution environment. Validation needs internet access and fails
|
|
94
|
+
closed if unavailable. Revocation or an inactive subscription blocks the next
|
|
95
|
+
execution; authorization is not cached between runs. Public check metadata,
|
|
96
|
+
scoring utilities and rendering existing reports need no key. Calling an
|
|
97
|
+
individual exported check requires `AXRUSH_API_KEY` too.
|
|
98
|
+
|
|
99
|
+
This is an execution requirement for the official v5 package, not tamper-proof
|
|
100
|
+
DRM. Earlier published releases remain usable, and local JavaScript can be
|
|
101
|
+
modified. The existing source license and notices are unchanged.
|
|
102
|
+
|
|
77
103
|
## Usage
|
|
78
104
|
|
|
79
105
|
```bash
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { audit, batchAudit } from './orchestrator.js';
|
|
2
2
|
export { calculateOverallScore, categoryScore, getGrade } from './scorer.js';
|
|
3
|
-
export { checks } from './checks
|
|
3
|
+
export { checks } from './licensed-checks.js';
|
|
4
|
+
export { LicenseError } from './license.js';
|
|
5
|
+
export type { LicenseErrorCode } from './license.js';
|
|
4
6
|
export { saveBaseline, loadBaseline, diffBaseline, toBaselineData } from './baseline.js';
|
|
5
7
|
export { renderMarkdown, renderBatchMarkdown } from './reporter/markdown.js';
|
|
6
8
|
export { renderHtml, renderBatchHtml } from './reporter/html.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEjE;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EACL,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,MAAM,GACP,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAElE,YAAY,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,SAAS,EACT,WAAW,EACX,SAAS,EACT,YAAY,EACZ,WAAW,EACX,OAAO,EACP,aAAa,EACb,YAAY,EACZ,aAAa,EACb,KAAK,EACL,YAAY,GACb,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { audit, batchAudit } from './orchestrator.js';
|
|
2
2
|
export { calculateOverallScore, categoryScore, getGrade } from './scorer.js';
|
|
3
|
-
export { checks } from './checks
|
|
3
|
+
export { checks } from './licensed-checks.js';
|
|
4
|
+
export { LicenseError } from './license.js';
|
|
4
5
|
export { saveBaseline, loadBaseline, diffBaseline, toBaselineData } from './baseline.js';
|
|
5
6
|
export { renderMarkdown, renderBatchMarkdown } from './reporter/markdown.js';
|
|
6
7
|
export { renderHtml, renderBatchHtml } from './reporter/html.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEjE;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EACL,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,MAAM,GACP,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type LicenseErrorCode = 'MISSING_KEY' | 'INVALID_KEY' | 'PLAN_REQUIRED' | 'VALIDATION_UNAVAILABLE';
|
|
2
|
+
export declare class LicenseError extends Error {
|
|
3
|
+
readonly code: LicenseErrorCode;
|
|
4
|
+
constructor(code: LicenseErrorCode, message: string);
|
|
5
|
+
}
|
|
6
|
+
export declare function requireLicense(apiKey?: string): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=license.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../src/license.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG,aAAa,GAAG,eAAe,GAAG,wBAAwB,CAAC;AAE1G,qBAAa,YAAa,SAAQ,KAAK;aAEnB,IAAI,EAAE,gBAAgB;gBAAtB,IAAI,EAAE,gBAAgB,EACtC,OAAO,EAAE,MAAM;CAKlB;AAiDD,wBAAsB,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBnE"}
|
package/dist/license.js
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
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
|
+
export class LicenseError extends Error {
|
|
5
|
+
code;
|
|
6
|
+
constructor(code, message) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.code = code;
|
|
9
|
+
this.name = 'LicenseError';
|
|
10
|
+
}
|
|
11
|
+
}
|
|
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) {
|
|
54
|
+
const key = (apiKey ?? process.env.AXRUSH_API_KEY)?.trim();
|
|
55
|
+
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.`);
|
|
57
|
+
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
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=license.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"license.js","sourceRoot":"","sources":["../src/license.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"licensed-checks.d.ts","sourceRoot":"","sources":["../src/licensed-checks.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,oFAAoF;AACpF,eAAO,MAAM,MAAM,EAAE,WAAW,EAM7B,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { checks as implementations } from './checks/index.js';
|
|
2
|
+
import { requireLicense } from './license.js';
|
|
3
|
+
/** Metadata remains usable without a key; executing a public check requires one. */
|
|
4
|
+
export const checks = implementations.map((check) => ({
|
|
5
|
+
meta: check.meta,
|
|
6
|
+
async run(context) {
|
|
7
|
+
await requireLicense();
|
|
8
|
+
return check.run(context);
|
|
9
|
+
},
|
|
10
|
+
}));
|
|
11
|
+
//# sourceMappingURL=licensed-checks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"licensed-checks.js","sourceRoot":"","sources":["../src/licensed-checks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,oFAAoF;AACpF,MAAM,CAAC,MAAM,MAAM,GAAkB,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnE,IAAI,EAAE,KAAK,CAAC,IAAI;IAChB,KAAK,CAAC,GAAG,CAAC,OAAO;QACf,MAAM,cAAc,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;CACF,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/orchestrator.js
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
|
+
import { requireLicense } from './license.js';
|
|
1
2
|
import { createFetcher } from './fetcher.js';
|
|
2
3
|
import { checks as allChecks } from './checks/index.js';
|
|
3
4
|
import { calculateOverallScore, getGrade } from './scorer.js';
|
|
4
5
|
import { isSelected } from './check-ids.js';
|
|
5
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) {
|
|
6
12
|
const startTime = performance.now();
|
|
7
13
|
const verbose = options.verbose ?? false;
|
|
8
14
|
const log = verbose ? (msg) => console.error(` [verbose] ${msg}`) : () => { };
|
|
@@ -47,6 +53,7 @@ export async function audit(options) {
|
|
|
47
53
|
};
|
|
48
54
|
}
|
|
49
55
|
export async function batchAudit(urls, options = {}) {
|
|
56
|
+
await requireLicense(options.apiKey);
|
|
50
57
|
const startTime = performance.now();
|
|
51
58
|
const concurrency = Math.max(1, options.concurrency ?? 1);
|
|
52
59
|
// Preserve input order in the output while running up to `concurrency` audits
|
|
@@ -56,7 +63,7 @@ export async function batchAudit(urls, options = {}) {
|
|
|
56
63
|
async function worker() {
|
|
57
64
|
while (next < urls.length) {
|
|
58
65
|
const i = next++;
|
|
59
|
-
reports[i] = await
|
|
66
|
+
reports[i] = await runAudit({ ...options, url: urls[i] });
|
|
60
67
|
}
|
|
61
68
|
}
|
|
62
69
|
await Promise.all(Array.from({ length: Math.min(concurrency, urls.length) }, worker));
|
package/dist/orchestrator.js.map
CHANGED
|
@@ -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/types.d.ts
CHANGED
|
@@ -120,6 +120,8 @@ export interface AuditReport {
|
|
|
120
120
|
}
|
|
121
121
|
export interface AuditOptions {
|
|
122
122
|
url: string;
|
|
123
|
+
/** AX Rush organization key. Defaults to AXRUSH_API_KEY. Requires an active paid plan. */
|
|
124
|
+
apiKey?: string;
|
|
123
125
|
checks?: string[];
|
|
124
126
|
/**
|
|
125
127
|
* Forces protocol checks applicable. By default a check for a surface the
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/docs/api.md
CHANGED
|
@@ -11,13 +11,14 @@ The package is ESM-only (`"type": "module"`), targets Node 18+ (built-in `fetch`
|
|
|
11
11
|
|
|
12
12
|
## `audit(options): Promise<AuditReport>`
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
Validates your organization key online, then runs all (or selected) checks locally against one URL. Create the key at https://axrush.com/account/api. Only the key is sent to AX Rush; the target URL and page content are not.
|
|
15
15
|
|
|
16
16
|
```typescript
|
|
17
17
|
function audit(options: AuditOptions): Promise<AuditReport>;
|
|
18
18
|
|
|
19
19
|
interface AuditOptions {
|
|
20
20
|
url: string; // required, fully qualified (scheme included)
|
|
21
|
+
apiKey?: string; // defaults to AXRUSH_API_KEY; active paid AX Rush plan required
|
|
21
22
|
checks?: string[]; // default: all. Unknown IDs are silently ignored here
|
|
22
23
|
// (the CLI validates them; the API does not)
|
|
23
24
|
timeout?: number; // ms per request, default 10000
|
|
@@ -40,7 +41,7 @@ report.results; // CheckResult[]
|
|
|
40
41
|
report.duration; // ms
|
|
41
42
|
```
|
|
42
43
|
|
|
43
|
-
`audit` **rejects**
|
|
44
|
+
`audit` **rejects** with `LicenseError` before any target request when a key is missing, invalid/revoked, its plan is inactive, or online validation is unavailable. The error codes are `MISSING_KEY`, `INVALID_KEY`, `PLAN_REQUIRED` and `VALIDATION_UNAVAILABLE`. It can also reject for an unrecoverable setup error (e.g. an invalid `url` that can't be parsed). Network failure on the homepage fetch does not reject — it surfaces as failing checks.
|
|
44
45
|
|
|
45
46
|
## `batchAudit(urls, options?): Promise<BatchAuditReport>`
|
|
46
47
|
|
|
@@ -52,7 +53,7 @@ interface BatchOptions extends Omit<AuditOptions, 'url'> {
|
|
|
52
53
|
}
|
|
53
54
|
```
|
|
54
55
|
|
|
55
|
-
Report order always matches input order, regardless of `concurrency`. `concurrency < 1` is treated as 1.
|
|
56
|
+
A batch validates once before any target requests and shares that authorization only within the running batch. Report order always matches input order, regardless of `concurrency`. `concurrency < 1` is treated as 1.
|
|
56
57
|
|
|
57
58
|
```typescript
|
|
58
59
|
const batch = await batchAudit(urls, { concurrency: 4, retries: 2 });
|
|
@@ -254,3 +255,5 @@ Within a major version, the exported function signatures and the `AuditReport` J
|
|
|
254
255
|
## Exported types
|
|
255
256
|
|
|
256
257
|
`AuditOptions`, `BatchOptions`, `AuditReport`, `BatchAuditReport`, `CheckResult`, `CheckMeta`, `CheckContext`, `CheckModule`, `Finding`, `FindingStatus`, `FetchOptions`, `FetchResponse`, `Grade`, `OutputFormat`, `BaselineData`, `BaselineDiff`, `CheckDiff`.
|
|
258
|
+
|
|
259
|
+
`checks` exposes metadata without authorization. Calling `checks[i].run(context)` requires `AXRUSH_API_KEY`; use `audit({ apiKey, ... })` to supply a key programmatically. Keys must only be used server-side.
|
package/docs/ci.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# CI Integration
|
|
2
2
|
|
|
3
|
+
For ax-audit 5, create a paid organization API key at
|
|
4
|
+
https://axrush.com/account/api, save it as the `AXRUSH_API_KEY` repository secret,
|
|
5
|
+
and expose it only to trusted audit jobs:
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
env:
|
|
9
|
+
AXRUSH_API_KEY: ${{ secrets.AXRUSH_API_KEY }}
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Fork pull requests do not receive secrets. Skip licensed audits for those runs;
|
|
13
|
+
never use `pull_request_target` to execute untrusted checkout code with this key.
|
|
14
|
+
The job needs outbound HTTPS to axrush.com for license validation before the
|
|
15
|
+
local audit. License errors fail the command instead of publishing a score.
|
|
16
|
+
|
|
17
|
+
|
|
3
18
|
ax-audit's exit codes (see [cli.md](./cli.md)) make it a drop-in quality gate: `0` for Good/Excellent, `1` for Fair/Poor or regressions.
|
|
4
19
|
|
|
5
20
|
## GitHub Actions
|
package/docs/cli.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# CLI Reference
|
|
2
2
|
|
|
3
|
+
Version 5 requires `AXRUSH_API_KEY`, generated at https://axrush.com/account/api
|
|
4
|
+
by an owner/admin of an active paid organization. Set it through your environment
|
|
5
|
+
or CI secret store. It is never a command-line flag, target header or report field.
|
|
6
|
+
Missing, revoked or inactive keys, and unavailable validation, stop execution
|
|
7
|
+
before target requests. `--help` and `--version` work without a key.
|
|
8
|
+
|
|
9
|
+
|
|
3
10
|
```bash
|
|
4
11
|
ax-audit <urls...> [options]
|
|
5
12
|
```
|
package/docs/getting-started.md
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# Getting Started
|
|
2
2
|
|
|
3
|
+
## AX Rush key required (v5)
|
|
4
|
+
|
|
5
|
+
Install the package normally with `npm install ax-audit`. To execute an audit,
|
|
6
|
+
you need an active paid AX Rush plan and an organization key created in
|
|
7
|
+
[Account → API keys](https://axrush.com/account/api). Set `AXRUSH_API_KEY` in
|
|
8
|
+
your local environment or your CI secret store. Do not commit it to source
|
|
9
|
+
control or put it in browser code.
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# AXRUSH_API_KEY is supplied securely by your environment or CI secrets
|
|
13
|
+
npx ax-audit@5 https://example.com
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
The engine validates the key with AX Rush before each audit or batch, then runs
|
|
17
|
+
locally. Only the key is sent to AX Rush: target URLs, page content and reports
|
|
18
|
+
stay in your execution environment. Validation needs internet access and fails
|
|
19
|
+
closed if unavailable. Revocation or an inactive subscription blocks the next
|
|
20
|
+
execution; authorization is not cached between runs. Public check metadata,
|
|
21
|
+
scoring utilities and rendering existing reports need no key. Calling an
|
|
22
|
+
individual exported check requires `AXRUSH_API_KEY` too.
|
|
23
|
+
|
|
24
|
+
This is an execution requirement for the official v5 package, not tamper-proof
|
|
25
|
+
DRM. Earlier published releases remain usable, and local JavaScript can be
|
|
26
|
+
modified. The existing source license and notices are unchanged.
|
|
27
|
+
|
|
28
|
+
|
|
3
29
|
This walkthrough takes you from zero to a passing AX score: run your first audit, learn to read the report, and fix findings in the order that moves your score most.
|
|
4
30
|
|
|
5
31
|
## 1. Run your first audit
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ax-audit",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "Audit websites for AI Agent Experience
|
|
3
|
+
"version": "5.0.0",
|
|
4
|
+
"description": "Audit websites for AI Agent Experience readiness. Requires an active AX Rush plan and API key.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"author": "Durani Technologies (https://axrush.com)",
|