milieu-cli 0.1.5 → 0.1.6
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/README.md +51 -5
- package/dist/bridges/reachability/index.d.ts.map +1 -1
- package/dist/bridges/reachability/index.js +2 -0
- package/dist/bridges/reachability/index.js.map +1 -1
- package/dist/bridges/separation/api-presence.d.ts +6 -5
- package/dist/bridges/separation/api-presence.d.ts.map +1 -1
- package/dist/bridges/separation/api-presence.js +9 -5
- package/dist/bridges/separation/api-presence.js.map +1 -1
- package/dist/bridges/separation/index.d.ts.map +1 -1
- package/dist/bridges/separation/index.js +2 -1
- package/dist/bridges/separation/index.js.map +1 -1
- package/dist/bridges/standards/graphql.d.ts +20 -0
- package/dist/bridges/standards/graphql.d.ts.map +1 -0
- package/dist/bridges/standards/graphql.js +174 -0
- package/dist/bridges/standards/graphql.js.map +1 -0
- package/dist/bridges/standards/index.d.ts +10 -5
- package/dist/bridges/standards/index.d.ts.map +1 -1
- package/dist/bridges/standards/index.js +30 -13
- package/dist/bridges/standards/index.js.map +1 -1
- package/dist/bridges/standards/openapi.d.ts +4 -1
- package/dist/bridges/standards/openapi.d.ts.map +1 -1
- package/dist/bridges/standards/openapi.js +10 -1
- package/dist/bridges/standards/openapi.js.map +1 -1
- package/dist/bridges/standards/sitemap.d.ts +21 -0
- package/dist/bridges/standards/sitemap.d.ts.map +1 -0
- package/dist/bridges/standards/sitemap.js +174 -0
- package/dist/bridges/standards/sitemap.js.map +1 -0
- package/dist/cli/index.js +0 -0
- package/dist/core/explanations.d.ts.map +1 -1
- package/dist/core/explanations.js +12 -0
- package/dist/core/explanations.js.map +1 -1
- package/dist/utils/http-client.d.ts +9 -4
- package/dist/utils/http-client.d.ts.map +1 -1
- package/dist/utils/http-client.js +23 -3
- package/dist/utils/http-client.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -4,6 +4,19 @@ The API is the new product UI. Your customers are no longer just humans. They're
|
|
|
4
4
|
|
|
5
5
|
As an industry, we've spent decades perfecting UI & UX design for humans. Now we need the same rigor for the interface AI agents actually see: your product's **milieu**.
|
|
6
6
|
|
|
7
|
+
## Table of contents
|
|
8
|
+
|
|
9
|
+
- [What is milieu?](#what-is-milieu)
|
|
10
|
+
- [Quick start](#quick-start)
|
|
11
|
+
- [The 5 Bridges](#the-5-bridges)
|
|
12
|
+
- [Install](#install)
|
|
13
|
+
- [CI/CD integration](#cicd-integration)
|
|
14
|
+
- [Options](#options)
|
|
15
|
+
- [How scoring works](#how-scoring-works)
|
|
16
|
+
- [Programmatic API](#programmatic-api)
|
|
17
|
+
- [Requirements](#requirements)
|
|
18
|
+
- [License](#license)
|
|
19
|
+
|
|
7
20
|
## What is milieu?
|
|
8
21
|
|
|
9
22
|
*Milieu* is the totality of machine-readable signals that surround your product — the environment an AI agent encounters when it tries to discover, understand, and integrate with what you've built. It's not any single file or endpoint. It's robots.txt and OpenAPI specs and llms.txt and JSON-LD and developer docs and SDK references, all working together. It's the difference between a product that AI agents can use and one they walk past.
|
|
@@ -13,7 +26,7 @@ Good design made products usable for humans. Good milieu design makes products u
|
|
|
13
26
|
milieu-cli measures this. It scans your site and tells you what AI agents can actually see.
|
|
14
27
|
|
|
15
28
|
```bash
|
|
16
|
-
npx milieu-cli scan
|
|
29
|
+
npx milieu-cli scan petstore.swagger.io
|
|
17
30
|
```
|
|
18
31
|
|
|
19
32
|
```bash
|
|
@@ -21,6 +34,39 @@ npx milieu-cli scan stripe.com
|
|
|
21
34
|
milieu scan api.example.com --threshold 70
|
|
22
35
|
```
|
|
23
36
|
|
|
37
|
+
## Quick start
|
|
38
|
+
|
|
39
|
+
Run your first scan in under a minute:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npx milieu-cli scan petstore.swagger.io
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
No config, no API keys. You'll get a scored report showing what AI agents can see when they visit that site.
|
|
46
|
+
|
|
47
|
+
### Example sites to try
|
|
48
|
+
|
|
49
|
+
Each of these exercises different parts of the scanner:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# The classic OpenAPI demo — Swagger spec at a well-known path
|
|
53
|
+
npx milieu-cli scan petstore.swagger.io
|
|
54
|
+
|
|
55
|
+
# Rich structured data — JSON-LD and Schema.org markup
|
|
56
|
+
npx milieu-cli scan schema.org
|
|
57
|
+
|
|
58
|
+
# Minimal API service — clean reachability, few standards signals
|
|
59
|
+
npx milieu-cli scan httpbin.org
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Add `--verbose` to any scan to see individual check results and explanations:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
npx milieu-cli scan petstore.swagger.io --verbose
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Once you've seen how these score, scan your own site and compare.
|
|
69
|
+
|
|
24
70
|
## The 5 Bridges
|
|
25
71
|
|
|
26
72
|
Milieu evaluates your product through five progressive bridges. Each one represents a layer of machine legibility that AI agents need, from "can I reach you?" to "can I trust you?"
|
|
@@ -57,9 +103,9 @@ Each policy is checked individually — you might be allowing Googlebot but bloc
|
|
|
57
103
|
## Install
|
|
58
104
|
|
|
59
105
|
```bash
|
|
60
|
-
npx milieu-cli scan
|
|
61
|
-
npm install -g milieu-cli
|
|
62
|
-
milieu scan
|
|
106
|
+
npx milieu-cli scan petstore.swagger.io # one-off, no install
|
|
107
|
+
npm install -g milieu-cli # global install
|
|
108
|
+
milieu scan petstore.swagger.io # short alias after install
|
|
63
109
|
```
|
|
64
110
|
|
|
65
111
|
> Both `milieu` and `milieu-cli` work as commands after global install.
|
|
@@ -121,7 +167,7 @@ const options: ScanOptions = {
|
|
|
121
167
|
silent: true, // suppress spinner output (recommended for library use)
|
|
122
168
|
};
|
|
123
169
|
|
|
124
|
-
const result = await scan("https://
|
|
170
|
+
const result = await scan("https://petstore.swagger.io", options);
|
|
125
171
|
|
|
126
172
|
console.log(result.overallScore); // number (average of scored bridges)
|
|
127
173
|
console.log(result.overallScoreLabel); // "pass" | "partial" | "fail"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bridges/reachability/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAS,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAyC5E;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bridges/reachability/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAS,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAyC5E;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,YAAY,CAAC,CA2FvB"}
|
|
@@ -70,6 +70,8 @@ export async function runReachabilityBridge(ctx) {
|
|
|
70
70
|
const httpStatusCheck = checkHttpStatus(pageResponse);
|
|
71
71
|
// 4. robots.txt fetch + parse
|
|
72
72
|
const robotsResult = await checkRobotsTxt(ctx.domain, ctx.options.timeout);
|
|
73
|
+
// Store sitemap URLs for Bridge 2 consumption
|
|
74
|
+
ctx.shared.robotsSitemaps = robotsResult.parsed?.sitemaps ?? [];
|
|
73
75
|
// 5. Crawler policies (uses parsed robots.txt data)
|
|
74
76
|
let targetPath;
|
|
75
77
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bridges/reachability/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bridges/reachability/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,13 +2,14 @@ import type { Check, ContentSource } from "../../core/types.js";
|
|
|
2
2
|
/**
|
|
3
3
|
* Detect API presence via multiple signals across content sources.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Five signal sources:
|
|
6
6
|
* 1. OpenAPI spec detected by Bridge 2 (boolean from ctx.shared.openApiDetected)
|
|
7
|
-
* 2.
|
|
8
|
-
* 3.
|
|
9
|
-
* 4.
|
|
7
|
+
* 2. GraphQL endpoint detected by Bridge 2 (boolean from ctx.shared.graphqlDetected)
|
|
8
|
+
* 3. API-related response headers (X-RateLimit-*, X-Request-Id, etc.)
|
|
9
|
+
* 4. HTML links containing /api/ paths (scanned from all content sources)
|
|
10
|
+
* 5. Markdown links containing /api/ paths (scanned from all content sources)
|
|
10
11
|
*
|
|
11
12
|
* Pure function -- no HTTP calls.
|
|
12
13
|
*/
|
|
13
|
-
export declare function checkApiPresence(openApiDetected: boolean, sources: ContentSource[], headers: Record<string, string
|
|
14
|
+
export declare function checkApiPresence(openApiDetected: boolean, sources: ContentSource[], headers: Record<string, string>, graphqlDetected?: boolean): Check;
|
|
14
15
|
//# sourceMappingURL=api-presence.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-presence.d.ts","sourceRoot":"","sources":["../../../src/bridges/separation/api-presence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AA8ChE
|
|
1
|
+
{"version":3,"file":"api-presence.d.ts","sourceRoot":"","sources":["../../../src/bridges/separation/api-presence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AA8ChE;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,eAAe,EAAE,OAAO,EACxB,OAAO,EAAE,aAAa,EAAE,EACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,eAAe,UAAQ,GACtB,KAAK,CA6CP"}
|
|
@@ -44,21 +44,25 @@ function scanApiLinksMarkdown(text) {
|
|
|
44
44
|
/**
|
|
45
45
|
* Detect API presence via multiple signals across content sources.
|
|
46
46
|
*
|
|
47
|
-
*
|
|
47
|
+
* Five signal sources:
|
|
48
48
|
* 1. OpenAPI spec detected by Bridge 2 (boolean from ctx.shared.openApiDetected)
|
|
49
|
-
* 2.
|
|
50
|
-
* 3.
|
|
51
|
-
* 4.
|
|
49
|
+
* 2. GraphQL endpoint detected by Bridge 2 (boolean from ctx.shared.graphqlDetected)
|
|
50
|
+
* 3. API-related response headers (X-RateLimit-*, X-Request-Id, etc.)
|
|
51
|
+
* 4. HTML links containing /api/ paths (scanned from all content sources)
|
|
52
|
+
* 5. Markdown links containing /api/ paths (scanned from all content sources)
|
|
52
53
|
*
|
|
53
54
|
* Pure function -- no HTTP calls.
|
|
54
55
|
*/
|
|
55
|
-
export function checkApiPresence(openApiDetected, sources, headers) {
|
|
56
|
+
export function checkApiPresence(openApiDetected, sources, headers, graphqlDetected = false) {
|
|
56
57
|
const id = "api_presence";
|
|
57
58
|
const label = "API Presence";
|
|
58
59
|
const signals = [];
|
|
59
60
|
// Signal 1: OpenAPI spec detected by Bridge 2
|
|
60
61
|
if (openApiDetected)
|
|
61
62
|
signals.push("OpenAPI spec");
|
|
63
|
+
// Signal 2: GraphQL endpoint detected by Bridge 2
|
|
64
|
+
if (graphqlDetected)
|
|
65
|
+
signals.push("GraphQL endpoint");
|
|
62
66
|
// Signal 2: API-related response headers
|
|
63
67
|
const apiHeaders = API_HEADERS.filter((h) => headers[h] !== undefined);
|
|
64
68
|
if (apiHeaders.length > 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-presence.js","sourceRoot":"","sources":["../../../src/bridges/separation/api-presence.ts"],"names":[],"mappings":"AAEA,gEAAgE;AAChE,MAAM,WAAW,GAAG;IAClB,mBAAmB;IACnB,uBAAuB;IACvB,mBAAmB;IACnB,cAAc;IACd,WAAW;IACX,eAAe;IACf,iBAAiB;IACjB,qBAAqB;IACrB,iBAAiB;CAClB,CAAC;AAEF;;;;GAIG;AACH,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,yDAAyD,CAAC;IACxE,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAAC,IAAY;IACxC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,8CAA8C,CAAC;IAC7D,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"api-presence.js","sourceRoot":"","sources":["../../../src/bridges/separation/api-presence.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bridges/separation/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAwB,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAM3F;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bridges/separation/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAwB,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAM3F;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,YAAY,CAAC,CA0DvB"}
|
|
@@ -27,6 +27,7 @@ export async function runSeparationBridge(ctx) {
|
|
|
27
27
|
const openApiDetected = ctx.shared.openApiDetected ?? false;
|
|
28
28
|
const openApiHasWebhooks = ctx.shared.openApiHasWebhooks ?? false;
|
|
29
29
|
const openApiHasCallbacks = ctx.shared.openApiHasCallbacks ?? false;
|
|
30
|
+
const graphqlDetected = ctx.shared.graphqlDetected ?? false;
|
|
30
31
|
const llmsTxtBody = ctx.shared.llmsTxtBody ?? null;
|
|
31
32
|
// Fire async developer docs probe first (non-blocking)
|
|
32
33
|
const devDocsPromise = checkDeveloperDocs(ctx.baseUrl, pageBody, ctx.options.timeout);
|
|
@@ -42,7 +43,7 @@ export async function runSeparationBridge(ctx) {
|
|
|
42
43
|
contentSources.push({ content: llmsTxtBody, source: "llms.txt" });
|
|
43
44
|
contentSources.push(...devDocsResult.pages);
|
|
44
45
|
// Run 3 synchronous pure-function checks with assembled content sources
|
|
45
|
-
const apiPresenceCheck = checkApiPresence(openApiDetected, contentSources, pageHeaders);
|
|
46
|
+
const apiPresenceCheck = checkApiPresence(openApiDetected, contentSources, pageHeaders, graphqlDetected);
|
|
46
47
|
const sdkRefsCheck = checkSdkReferences(contentSources);
|
|
47
48
|
const webhookCheck = checkWebhookSupport(contentSources, {
|
|
48
49
|
pageHeaders,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bridges/separation/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,GAAgB;IAEhB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAEhC,4CAA4C;IAC5C,MAAM,QAAQ,GAAI,GAAG,CAAC,MAAM,CAAC,QAAmB,IAAI,EAAE,CAAC;IACvD,MAAM,WAAW,GACd,GAAG,CAAC,MAAM,CAAC,WAAsC,IAAI,EAAE,CAAC;IAC3D,MAAM,eAAe,GAAI,GAAG,CAAC,MAAM,CAAC,eAA2B,IAAI,KAAK,CAAC;IACzE,MAAM,kBAAkB,GAAI,GAAG,CAAC,MAAM,CAAC,kBAA8B,IAAI,KAAK,CAAC;IAC/E,MAAM,mBAAmB,GAAI,GAAG,CAAC,MAAM,CAAC,mBAA+B,IAAI,KAAK,CAAC;IACjF,MAAM,WAAW,GAAI,GAAG,CAAC,MAAM,CAAC,WAAkC,IAAI,IAAI,CAAC;IAE3E,uDAAuD;IACvD,MAAM,cAAc,GAAG,kBAAkB,CACvC,GAAG,CAAC,OAAO,EACX,QAAQ,EACR,GAAG,CAAC,OAAO,CAAC,OAAO,CACpB,CAAC;IAEF,qDAAqD;IACrD,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC;IAE3C,gEAAgE;IAChE,GAAG,CAAC,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC;IAE/C,qDAAqD;IACrD,MAAM,cAAc,GAAoB,EAAE,CAAC;IAC3C,IAAI,QAAQ;QAAE,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAC7E,IAAI,WAAW;QAAE,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACnF,cAAc,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAE5C,wEAAwE;IACxE,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,eAAe,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bridges/separation/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,GAAgB;IAEhB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAEhC,4CAA4C;IAC5C,MAAM,QAAQ,GAAI,GAAG,CAAC,MAAM,CAAC,QAAmB,IAAI,EAAE,CAAC;IACvD,MAAM,WAAW,GACd,GAAG,CAAC,MAAM,CAAC,WAAsC,IAAI,EAAE,CAAC;IAC3D,MAAM,eAAe,GAAI,GAAG,CAAC,MAAM,CAAC,eAA2B,IAAI,KAAK,CAAC;IACzE,MAAM,kBAAkB,GAAI,GAAG,CAAC,MAAM,CAAC,kBAA8B,IAAI,KAAK,CAAC;IAC/E,MAAM,mBAAmB,GAAI,GAAG,CAAC,MAAM,CAAC,mBAA+B,IAAI,KAAK,CAAC;IACjF,MAAM,eAAe,GAAI,GAAG,CAAC,MAAM,CAAC,eAA2B,IAAI,KAAK,CAAC;IACzE,MAAM,WAAW,GAAI,GAAG,CAAC,MAAM,CAAC,WAAkC,IAAI,IAAI,CAAC;IAE3E,uDAAuD;IACvD,MAAM,cAAc,GAAG,kBAAkB,CACvC,GAAG,CAAC,OAAO,EACX,QAAQ,EACR,GAAG,CAAC,OAAO,CAAC,OAAO,CACpB,CAAC;IAEF,qDAAqD;IACrD,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC;IAE3C,gEAAgE;IAChE,GAAG,CAAC,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC;IAE/C,qDAAqD;IACrD,MAAM,cAAc,GAAoB,EAAE,CAAC;IAC3C,IAAI,QAAQ;QAAE,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAC7E,IAAI,WAAW;QAAE,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACnF,cAAc,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAE5C,wEAAwE;IACxE,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;IACzG,MAAM,YAAY,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,mBAAmB,CAAC,cAAc,EAAE;QACvD,WAAW;QACX,kBAAkB;QAClB,mBAAmB;KACpB,CAAC,CAAC;IAEH,iCAAiC;IACjC,MAAM,MAAM,GAAY;QACtB,gBAAgB;QAChB,aAAa,CAAC,KAAK;QACnB,YAAY;QACZ,YAAY;KACb,CAAC;IAEF,OAAO;QACL,EAAE,EAAE,CAAC;QACL,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,WAAW;QACnB,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,IAAI;QAChB,MAAM;QACN,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;KAClD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Check } from "../../core/types.js";
|
|
2
|
+
export interface GraphqlResult {
|
|
3
|
+
check: Check;
|
|
4
|
+
detected: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Probe common GraphQL endpoint paths via POST introspection query.
|
|
8
|
+
*
|
|
9
|
+
* Detection strategy per path:
|
|
10
|
+
* 1. POST introspection query with Content-Type: application/json
|
|
11
|
+
* 2. Parse response:
|
|
12
|
+
* - pass: 200 + valid __schema in response
|
|
13
|
+
* - partial: 200 + errors mentioning "introspection" (disabled)
|
|
14
|
+
* - partial: 401/403 (auth required)
|
|
15
|
+
* - skip: 404, non-JSON, connection error
|
|
16
|
+
*
|
|
17
|
+
* Returns early on first successful detection (highest confidence first).
|
|
18
|
+
*/
|
|
19
|
+
export declare function checkGraphql(baseUrl: string, timeout?: number): Promise<GraphqlResult>;
|
|
20
|
+
//# sourceMappingURL=graphql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql.d.ts","sourceRoot":"","sources":["../../../src/bridges/standards/graphql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAOjD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB;AAgFD;;;;;;;;;;;;GAYG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,aAAa,CAAC,CA4GxB"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { httpGet } from "../../utils/http-client.js";
|
|
2
|
+
// ---------------------------------------------------------------------------
|
|
3
|
+
// Constants
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
/** Common GraphQL endpoint paths */
|
|
6
|
+
const GRAPHQL_PATHS = [
|
|
7
|
+
"/graphql",
|
|
8
|
+
"/api/graphql",
|
|
9
|
+
"/graphql/v1",
|
|
10
|
+
"/api/v1/graphql",
|
|
11
|
+
"/gql",
|
|
12
|
+
];
|
|
13
|
+
/** Minimal introspection query to confirm a GraphQL endpoint */
|
|
14
|
+
const INTROSPECTION_QUERY = JSON.stringify({
|
|
15
|
+
query: "{ __schema { queryType { name } mutationType { name } subscriptionType { name } } }",
|
|
16
|
+
});
|
|
17
|
+
/**
|
|
18
|
+
* Parse a successful introspection response body.
|
|
19
|
+
* Returns metadata if the response contains valid `data.__schema`,
|
|
20
|
+
* or null if the JSON doesn't match the expected shape.
|
|
21
|
+
*/
|
|
22
|
+
function parseIntrospectionResponse(body) {
|
|
23
|
+
try {
|
|
24
|
+
const parsed = JSON.parse(body);
|
|
25
|
+
const schema = parsed?.data?.__schema;
|
|
26
|
+
if (!schema || typeof schema !== "object")
|
|
27
|
+
return null;
|
|
28
|
+
return {
|
|
29
|
+
queryType: schema.queryType?.name != null,
|
|
30
|
+
mutationType: schema.mutationType?.name != null,
|
|
31
|
+
subscriptionType: schema.subscriptionType?.name != null,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Check if a JSON response body indicates a GraphQL endpoint
|
|
40
|
+
* with introspection disabled (common security practice).
|
|
41
|
+
*/
|
|
42
|
+
function isIntrospectionDisabled(body) {
|
|
43
|
+
try {
|
|
44
|
+
const parsed = JSON.parse(body);
|
|
45
|
+
if (!parsed?.errors || !Array.isArray(parsed.errors))
|
|
46
|
+
return false;
|
|
47
|
+
return parsed.errors.some((err) => typeof err.message === "string" &&
|
|
48
|
+
err.message.toLowerCase().includes("introspection"));
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/** Returns true if response is a 401/403 HTTP error */
|
|
55
|
+
function isAuthRequired(statusCode) {
|
|
56
|
+
return statusCode === 401 || statusCode === 403;
|
|
57
|
+
}
|
|
58
|
+
// ---------------------------------------------------------------------------
|
|
59
|
+
// Public API
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
/**
|
|
62
|
+
* Probe common GraphQL endpoint paths via POST introspection query.
|
|
63
|
+
*
|
|
64
|
+
* Detection strategy per path:
|
|
65
|
+
* 1. POST introspection query with Content-Type: application/json
|
|
66
|
+
* 2. Parse response:
|
|
67
|
+
* - pass: 200 + valid __schema in response
|
|
68
|
+
* - partial: 200 + errors mentioning "introspection" (disabled)
|
|
69
|
+
* - partial: 401/403 (auth required)
|
|
70
|
+
* - skip: 404, non-JSON, connection error
|
|
71
|
+
*
|
|
72
|
+
* Returns early on first successful detection (highest confidence first).
|
|
73
|
+
*/
|
|
74
|
+
export async function checkGraphql(baseUrl, timeout) {
|
|
75
|
+
const id = "graphql_endpoint";
|
|
76
|
+
const label = "GraphQL Endpoint";
|
|
77
|
+
// Fire all probes in parallel
|
|
78
|
+
const responses = await Promise.all(GRAPHQL_PATHS.map((path) => httpGet(new URL(path, baseUrl).href, {
|
|
79
|
+
method: "POST",
|
|
80
|
+
timeout,
|
|
81
|
+
body: INTROSPECTION_QUERY,
|
|
82
|
+
headers: {
|
|
83
|
+
"Content-Type": "application/json",
|
|
84
|
+
Accept: "application/json",
|
|
85
|
+
},
|
|
86
|
+
})));
|
|
87
|
+
// Phase 1: Check for successful introspection (pass)
|
|
88
|
+
for (let i = 0; i < responses.length; i++) {
|
|
89
|
+
const response = responses[i];
|
|
90
|
+
if (!response.ok)
|
|
91
|
+
continue;
|
|
92
|
+
const introspection = parseIntrospectionResponse(response.body);
|
|
93
|
+
if (introspection) {
|
|
94
|
+
const capabilities = [];
|
|
95
|
+
if (introspection.queryType)
|
|
96
|
+
capabilities.push("query");
|
|
97
|
+
if (introspection.mutationType)
|
|
98
|
+
capabilities.push("mutation");
|
|
99
|
+
if (introspection.subscriptionType)
|
|
100
|
+
capabilities.push("subscription");
|
|
101
|
+
return {
|
|
102
|
+
check: {
|
|
103
|
+
id,
|
|
104
|
+
label,
|
|
105
|
+
status: "pass",
|
|
106
|
+
detail: `GraphQL endpoint at ${GRAPHQL_PATHS[i]} with ${capabilities.join(", ")} support`,
|
|
107
|
+
data: {
|
|
108
|
+
path: GRAPHQL_PATHS[i],
|
|
109
|
+
introspectionEnabled: true,
|
|
110
|
+
hasQueries: introspection.queryType,
|
|
111
|
+
hasMutations: introspection.mutationType,
|
|
112
|
+
hasSubscriptions: introspection.subscriptionType,
|
|
113
|
+
},
|
|
114
|
+
},
|
|
115
|
+
detected: true,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// Phase 2: Check for introspection-disabled endpoints (partial)
|
|
120
|
+
for (let i = 0; i < responses.length; i++) {
|
|
121
|
+
const response = responses[i];
|
|
122
|
+
if (!response.ok)
|
|
123
|
+
continue;
|
|
124
|
+
if (isIntrospectionDisabled(response.body)) {
|
|
125
|
+
return {
|
|
126
|
+
check: {
|
|
127
|
+
id,
|
|
128
|
+
label,
|
|
129
|
+
status: "partial",
|
|
130
|
+
detail: `GraphQL endpoint detected at ${GRAPHQL_PATHS[i]} (introspection disabled)`,
|
|
131
|
+
data: {
|
|
132
|
+
path: GRAPHQL_PATHS[i],
|
|
133
|
+
introspectionEnabled: false,
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
detected: true,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// Phase 3: Check for auth-protected endpoints (partial)
|
|
141
|
+
for (let i = 0; i < responses.length; i++) {
|
|
142
|
+
const response = responses[i];
|
|
143
|
+
if (response.ok)
|
|
144
|
+
continue;
|
|
145
|
+
if (response.error.kind === "http_error" &&
|
|
146
|
+
isAuthRequired(response.error.statusCode)) {
|
|
147
|
+
return {
|
|
148
|
+
check: {
|
|
149
|
+
id,
|
|
150
|
+
label,
|
|
151
|
+
status: "partial",
|
|
152
|
+
detail: `GraphQL endpoint detected at ${GRAPHQL_PATHS[i]} (authentication required)`,
|
|
153
|
+
data: {
|
|
154
|
+
path: GRAPHQL_PATHS[i],
|
|
155
|
+
introspectionEnabled: false,
|
|
156
|
+
protected: true,
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
detected: true,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// Phase 4: Nothing found
|
|
164
|
+
return {
|
|
165
|
+
check: {
|
|
166
|
+
id,
|
|
167
|
+
label,
|
|
168
|
+
status: "fail",
|
|
169
|
+
detail: "No GraphQL endpoint found",
|
|
170
|
+
},
|
|
171
|
+
detected: false,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=graphql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql.js","sourceRoot":"","sources":["../../../src/bridges/standards/graphql.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,12 +2,17 @@ import type { BridgeResult, ScanContext } from "../../core/types.js";
|
|
|
2
2
|
/**
|
|
3
3
|
* Run Bridge 2: Standards.
|
|
4
4
|
*
|
|
5
|
-
* Runs
|
|
6
|
-
* - 6 independent HTTP probes in parallel (OpenAPI, llms.txt, llms-full.txt, MCP, security.txt, ai-plugin.json)
|
|
7
|
-
* - 2 synchronous HTML-based checks (JSON-LD, Schema.org) using ctx.shared.pageBody from Bridge 1
|
|
5
|
+
* Runs 10 checks in two phases:
|
|
8
6
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
7
|
+
* Phase 1 (parallel): Sitemap + llms.txt + llms-full.txt + MCP + security.txt + ai-plugin.json
|
|
8
|
+
* Phase 2 (parallel): OpenAPI (fed sitemap API URLs as candidates) + GraphQL
|
|
9
|
+
* Synchronous: JSON-LD + Schema.org (from ctx.shared.pageBody)
|
|
10
|
+
*
|
|
11
|
+
* Two-phase execution is required because sitemap results feed into
|
|
12
|
+
* OpenAPI detection as candidate spec URLs.
|
|
13
|
+
*
|
|
14
|
+
* Stores ctx.shared.openApiDetected, ctx.shared.graphqlDetected,
|
|
15
|
+
* ctx.shared.sitemapUrls, and ctx.shared.llmsTxtBody for Bridge 3 consumption.
|
|
11
16
|
*/
|
|
12
17
|
export declare function runStandardsBridge(ctx: ScanContext): Promise<BridgeResult>;
|
|
13
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bridges/standards/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAS,WAAW,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bridges/standards/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAS,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAmC5E;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,YAAY,CAAC,CAoEvB"}
|
|
@@ -4,10 +4,12 @@ import { checkMcpEndpoint } from "./mcp.js";
|
|
|
4
4
|
import { checkJsonLd } from "./json-ld.js";
|
|
5
5
|
import { checkSchemaOrg } from "./schema-org.js";
|
|
6
6
|
import { checkSecurityTxt, checkAiPlugin } from "./well-known.js";
|
|
7
|
+
import { checkGraphql } from "./graphql.js";
|
|
8
|
+
import { checkSitemap } from "./sitemap.js";
|
|
7
9
|
/**
|
|
8
10
|
* Calculate bridge score from check results.
|
|
9
11
|
* - Pass = 1 point, Partial = 0.5 points, Fail/Error = 0 points
|
|
10
|
-
* - All
|
|
12
|
+
* - All checks always count (no skip concept in Bridge 2)
|
|
11
13
|
*/
|
|
12
14
|
function calculateScore(checks) {
|
|
13
15
|
let points = 0;
|
|
@@ -27,37 +29,52 @@ function calculateScore(checks) {
|
|
|
27
29
|
/**
|
|
28
30
|
* Run Bridge 2: Standards.
|
|
29
31
|
*
|
|
30
|
-
* Runs
|
|
31
|
-
* - 6 independent HTTP probes in parallel (OpenAPI, llms.txt, llms-full.txt, MCP, security.txt, ai-plugin.json)
|
|
32
|
-
* - 2 synchronous HTML-based checks (JSON-LD, Schema.org) using ctx.shared.pageBody from Bridge 1
|
|
32
|
+
* Runs 10 checks in two phases:
|
|
33
33
|
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
34
|
+
* Phase 1 (parallel): Sitemap + llms.txt + llms-full.txt + MCP + security.txt + ai-plugin.json
|
|
35
|
+
* Phase 2 (parallel): OpenAPI (fed sitemap API URLs as candidates) + GraphQL
|
|
36
|
+
* Synchronous: JSON-LD + Schema.org (from ctx.shared.pageBody)
|
|
37
|
+
*
|
|
38
|
+
* Two-phase execution is required because sitemap results feed into
|
|
39
|
+
* OpenAPI detection as candidate spec URLs.
|
|
40
|
+
*
|
|
41
|
+
* Stores ctx.shared.openApiDetected, ctx.shared.graphqlDetected,
|
|
42
|
+
* ctx.shared.sitemapUrls, and ctx.shared.llmsTxtBody for Bridge 3 consumption.
|
|
36
43
|
*/
|
|
37
44
|
export async function runStandardsBridge(ctx) {
|
|
38
45
|
const start = performance.now();
|
|
39
|
-
// Get
|
|
46
|
+
// Get shared context from Bridge 1
|
|
40
47
|
const pageBody = ctx.shared.pageBody ?? "";
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
48
|
+
const robotsSitemaps = ctx.shared.robotsSitemaps ?? [];
|
|
49
|
+
// Phase 1: Sitemap + independent HTTP probes (parallel)
|
|
50
|
+
const [sitemapResult, llmsTxtResult, llmsFullTxtCheck, mcpCheck, securityTxtCheck, aiPluginCheck,] = await Promise.all([
|
|
51
|
+
checkSitemap(ctx.baseUrl, robotsSitemaps, ctx.options.timeout),
|
|
44
52
|
checkLlmsTxt(ctx.baseUrl, ctx.options.timeout),
|
|
45
53
|
checkLlmsFullTxt(ctx.baseUrl, ctx.options.timeout),
|
|
46
54
|
checkMcpEndpoint(ctx.baseUrl, ctx.options.timeout),
|
|
47
55
|
checkSecurityTxt(ctx.baseUrl, ctx.options.timeout),
|
|
48
56
|
checkAiPlugin(ctx.baseUrl, ctx.options.timeout),
|
|
49
57
|
]);
|
|
50
|
-
//
|
|
58
|
+
// Phase 2: OpenAPI (with sitemap API URLs) + GraphQL (parallel)
|
|
59
|
+
const [openApiResult, graphqlResult] = await Promise.all([
|
|
60
|
+
checkOpenApi(ctx.baseUrl, ctx.options.timeout, sitemapResult.apiRelevantUrls),
|
|
61
|
+
checkGraphql(ctx.baseUrl, ctx.options.timeout),
|
|
62
|
+
]);
|
|
63
|
+
// Synchronous HTML-based checks (no HTTP)
|
|
51
64
|
const jsonLdCheck = checkJsonLd(pageBody);
|
|
52
65
|
const schemaOrgCheck = checkSchemaOrg(pageBody, jsonLdCheck);
|
|
53
|
-
// Store
|
|
66
|
+
// Store detection results for Bridge 3
|
|
54
67
|
ctx.shared.openApiDetected = openApiResult.detected;
|
|
55
68
|
ctx.shared.openApiHasWebhooks = openApiResult.hasWebhooks;
|
|
56
69
|
ctx.shared.openApiHasCallbacks = openApiResult.hasCallbacks;
|
|
70
|
+
ctx.shared.graphqlDetected = graphqlResult.detected;
|
|
71
|
+
ctx.shared.sitemapUrls = sitemapResult.urls;
|
|
57
72
|
ctx.shared.llmsTxtBody = llmsTxtResult.body;
|
|
58
|
-
// Collect all
|
|
73
|
+
// Collect all 10 checks in order
|
|
59
74
|
const checks = [
|
|
60
75
|
openApiResult.check,
|
|
76
|
+
graphqlResult.check,
|
|
77
|
+
sitemapResult.check,
|
|
61
78
|
llmsTxtResult.check,
|
|
62
79
|
llmsFullTxtCheck,
|
|
63
80
|
mcpCheck,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bridges/standards/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bridges/standards/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,8 +11,11 @@ export interface OpenApiResult {
|
|
|
11
11
|
* Probe 19 common OpenAPI / Swagger spec paths in parallel, then try
|
|
12
12
|
* extracting spec URLs from HTML doc pages, and finally detect protected specs.
|
|
13
13
|
*
|
|
14
|
+
* Optionally accepts sitemap-discovered API URLs as additional candidates
|
|
15
|
+
* to probe in Phase 3b (secondary validation).
|
|
16
|
+
*
|
|
14
17
|
* Returns a Check with id "openapi_spec" and a boolean indicating whether
|
|
15
18
|
* any valid spec was detected (for ctx.shared.openApiDetected).
|
|
16
19
|
*/
|
|
17
|
-
export declare function checkOpenApi(baseUrl: string, timeout?: number): Promise<OpenApiResult>;
|
|
20
|
+
export declare function checkOpenApi(baseUrl: string, timeout?: number, sitemapCandidateUrls?: string[]): Promise<OpenApiResult>;
|
|
18
21
|
//# sourceMappingURL=openapi.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../../src/bridges/standards/openapi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAA6B,MAAM,qBAAqB,CAAC;AAO5E,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,kDAAkD;IAClD,WAAW,EAAE,OAAO,CAAC;IACrB,sDAAsD;IACtD,YAAY,EAAE,OAAO,CAAC;CACvB;AAkSD
|
|
1
|
+
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../../src/bridges/standards/openapi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAA6B,MAAM,qBAAqB,CAAC;AAO5E,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,kDAAkD;IAClD,WAAW,EAAE,OAAO,CAAC;IACrB,sDAAsD;IACtD,YAAY,EAAE,OAAO,CAAC;CACvB;AAkSD;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,EAChB,oBAAoB,GAAE,MAAM,EAAO,GAClC,OAAO,CAAC,aAAa,CAAC,CA4OxB"}
|
|
@@ -253,10 +253,13 @@ function isProtectedResponse(response) {
|
|
|
253
253
|
* Probe 19 common OpenAPI / Swagger spec paths in parallel, then try
|
|
254
254
|
* extracting spec URLs from HTML doc pages, and finally detect protected specs.
|
|
255
255
|
*
|
|
256
|
+
* Optionally accepts sitemap-discovered API URLs as additional candidates
|
|
257
|
+
* to probe in Phase 3b (secondary validation).
|
|
258
|
+
*
|
|
256
259
|
* Returns a Check with id "openapi_spec" and a boolean indicating whether
|
|
257
260
|
* any valid spec was detected (for ctx.shared.openApiDetected).
|
|
258
261
|
*/
|
|
259
|
-
export async function checkOpenApi(baseUrl, timeout) {
|
|
262
|
+
export async function checkOpenApi(baseUrl, timeout, sitemapCandidateUrls = []) {
|
|
260
263
|
const id = "openapi_spec";
|
|
261
264
|
const label = "OpenAPI Spec";
|
|
262
265
|
// Phase 1: Fire all 19 probes in parallel
|
|
@@ -371,6 +374,12 @@ export async function checkOpenApi(baseUrl, timeout) {
|
|
|
371
374
|
}
|
|
372
375
|
}
|
|
373
376
|
}
|
|
377
|
+
// Merge sitemap-discovered API URLs into candidates (deduplicated)
|
|
378
|
+
for (const url of sitemapCandidateUrls) {
|
|
379
|
+
if (!allProbedUrls.has(url) && !specCandidateUrls.includes(url)) {
|
|
380
|
+
specCandidateUrls.push(url);
|
|
381
|
+
}
|
|
382
|
+
}
|
|
374
383
|
// Phase 3b: Fetch candidate spec URLs and validate
|
|
375
384
|
if (specCandidateUrls.length > 0) {
|
|
376
385
|
const secondaryResponses = await Promise.all(specCandidateUrls.slice(0, 3).map((url) => httpGet(url, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../../src/bridges/standards/openapi.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../../src/bridges/standards/openapi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Check } from "../../core/types.js";
|
|
2
|
+
export interface SitemapResult {
|
|
3
|
+
check: Check;
|
|
4
|
+
/** All discovered <loc> URLs from the sitemap */
|
|
5
|
+
urls: string[];
|
|
6
|
+
/** URLs matching API-relevant patterns (for OpenAPI candidate feeding) */
|
|
7
|
+
apiRelevantUrls: string[];
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Probe for XML sitemaps at standard paths and from robots.txt Sitemap directives.
|
|
11
|
+
*
|
|
12
|
+
* Detection strategy:
|
|
13
|
+
* 1. Probe /sitemap.xml and /sitemap_index.xml
|
|
14
|
+
* 2. Probe any sitemap URLs found in robots.txt (passed via robotsSitemapUrls)
|
|
15
|
+
* 3. If a sitemap index is found, follow up to 3 child sitemaps
|
|
16
|
+
* 4. Extract all URLs and filter API-relevant ones
|
|
17
|
+
*
|
|
18
|
+
* Returns discovered URLs for downstream use (OpenAPI candidate feeding).
|
|
19
|
+
*/
|
|
20
|
+
export declare function checkSitemap(baseUrl: string, robotsSitemapUrls: string[], timeout?: number): Promise<SitemapResult>;
|
|
21
|
+
//# sourceMappingURL=sitemap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sitemap.d.ts","sourceRoot":"","sources":["../../../src/bridges/standards/sitemap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAOjD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,iDAAiD;IACjD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,0EAA0E;IAC1E,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AA8ED;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,iBAAiB,EAAE,MAAM,EAAE,EAC3B,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,aAAa,CAAC,CAyHxB"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { httpGet } from "../../utils/http-client.js";
|
|
2
|
+
// ---------------------------------------------------------------------------
|
|
3
|
+
// Constants
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
/** Standard sitemap paths to probe */
|
|
6
|
+
const SITEMAP_PATHS = ["/sitemap.xml", "/sitemap_index.xml"];
|
|
7
|
+
/** Max body size for sitemap responses (1MB) */
|
|
8
|
+
const MAX_BODY_BYTES = 1_048_576;
|
|
9
|
+
/** Max URLs to extract from a single sitemap */
|
|
10
|
+
const MAX_URLS_PER_SITEMAP = 1000;
|
|
11
|
+
/** Max child sitemaps to follow from a sitemap index */
|
|
12
|
+
const MAX_CHILD_SITEMAPS = 3;
|
|
13
|
+
/** Patterns that identify API-relevant URLs in sitemaps */
|
|
14
|
+
const API_URL_PATTERNS = [
|
|
15
|
+
/\/openapi\.(?:json|yaml)$/i,
|
|
16
|
+
/\/swagger\.(?:json|yaml)$/i,
|
|
17
|
+
/\/api-docs(?:\/|$)/i,
|
|
18
|
+
/\/graphql(?:\/|$)/i,
|
|
19
|
+
/\/api\/v\d/i,
|
|
20
|
+
/\/asyncapi\.(?:json|yaml)$/i,
|
|
21
|
+
];
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Helpers
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
/** Extract URLs from XML sitemap content via regex */
|
|
26
|
+
function extractLocs(xml, limit) {
|
|
27
|
+
const urls = [];
|
|
28
|
+
const regex = /<loc>\s*(.*?)\s*<\/loc>/gi;
|
|
29
|
+
let match;
|
|
30
|
+
while ((match = regex.exec(xml)) !== null && urls.length < limit) {
|
|
31
|
+
const url = match[1].trim();
|
|
32
|
+
if (url)
|
|
33
|
+
urls.push(url);
|
|
34
|
+
}
|
|
35
|
+
return urls;
|
|
36
|
+
}
|
|
37
|
+
/** Check if XML content is a sitemap index */
|
|
38
|
+
function isSitemapIndex(xml) {
|
|
39
|
+
return /<sitemapindex[\s>]/i.test(xml);
|
|
40
|
+
}
|
|
41
|
+
/** Filter URLs matching API-relevant patterns */
|
|
42
|
+
function filterApiRelevantUrls(urls) {
|
|
43
|
+
return urls.filter((url) => API_URL_PATTERNS.some((pattern) => pattern.test(url)));
|
|
44
|
+
}
|
|
45
|
+
/** Filter URLs to same origin only */
|
|
46
|
+
function filterSameOrigin(urls, baseUrl) {
|
|
47
|
+
let origin;
|
|
48
|
+
try {
|
|
49
|
+
origin = new URL(baseUrl).origin;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return [];
|
|
53
|
+
}
|
|
54
|
+
return urls.filter((url) => {
|
|
55
|
+
try {
|
|
56
|
+
return new URL(url).origin === origin;
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
// ---------------------------------------------------------------------------
|
|
64
|
+
// Public API
|
|
65
|
+
// ---------------------------------------------------------------------------
|
|
66
|
+
/**
|
|
67
|
+
* Probe for XML sitemaps at standard paths and from robots.txt Sitemap directives.
|
|
68
|
+
*
|
|
69
|
+
* Detection strategy:
|
|
70
|
+
* 1. Probe /sitemap.xml and /sitemap_index.xml
|
|
71
|
+
* 2. Probe any sitemap URLs found in robots.txt (passed via robotsSitemapUrls)
|
|
72
|
+
* 3. If a sitemap index is found, follow up to 3 child sitemaps
|
|
73
|
+
* 4. Extract all URLs and filter API-relevant ones
|
|
74
|
+
*
|
|
75
|
+
* Returns discovered URLs for downstream use (OpenAPI candidate feeding).
|
|
76
|
+
*/
|
|
77
|
+
export async function checkSitemap(baseUrl, robotsSitemapUrls, timeout) {
|
|
78
|
+
const id = "sitemap";
|
|
79
|
+
const label = "XML Sitemap";
|
|
80
|
+
// Deduplicate probe URLs: standard paths + robots.txt sitemaps
|
|
81
|
+
const probeUrls = new Set();
|
|
82
|
+
for (const path of SITEMAP_PATHS) {
|
|
83
|
+
probeUrls.add(new URL(path, baseUrl).href);
|
|
84
|
+
}
|
|
85
|
+
for (const url of robotsSitemapUrls) {
|
|
86
|
+
try {
|
|
87
|
+
const parsed = new URL(url);
|
|
88
|
+
if (parsed.origin === new URL(baseUrl).origin) {
|
|
89
|
+
probeUrls.add(parsed.href);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
// Skip invalid URLs
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Probe all sitemap URLs in parallel
|
|
97
|
+
const responses = await Promise.all([...probeUrls].map((url) => httpGet(url, {
|
|
98
|
+
timeout,
|
|
99
|
+
maxBodyBytes: MAX_BODY_BYTES,
|
|
100
|
+
headers: { Accept: "application/xml, text/xml, */*" },
|
|
101
|
+
})));
|
|
102
|
+
const probeUrlArray = [...probeUrls];
|
|
103
|
+
let allUrls = [];
|
|
104
|
+
const sitemapPaths = [];
|
|
105
|
+
for (let i = 0; i < responses.length; i++) {
|
|
106
|
+
const response = responses[i];
|
|
107
|
+
if (!response.ok)
|
|
108
|
+
continue;
|
|
109
|
+
// Verify it looks like XML
|
|
110
|
+
if (!/<[^>]+>/.test(response.body))
|
|
111
|
+
continue;
|
|
112
|
+
const probePath = new URL(probeUrlArray[i]).pathname;
|
|
113
|
+
sitemapPaths.push(probePath);
|
|
114
|
+
if (isSitemapIndex(response.body)) {
|
|
115
|
+
// Sitemap index — follow child sitemaps
|
|
116
|
+
const childUrls = filterSameOrigin(extractLocs(response.body, MAX_CHILD_SITEMAPS), baseUrl);
|
|
117
|
+
if (childUrls.length > 0) {
|
|
118
|
+
const childResponses = await Promise.all(childUrls.map((url) => httpGet(url, {
|
|
119
|
+
timeout,
|
|
120
|
+
maxBodyBytes: MAX_BODY_BYTES,
|
|
121
|
+
headers: { Accept: "application/xml, text/xml, */*" },
|
|
122
|
+
})));
|
|
123
|
+
for (const childResponse of childResponses) {
|
|
124
|
+
if (!childResponse.ok)
|
|
125
|
+
continue;
|
|
126
|
+
const childLocs = extractLocs(childResponse.body, MAX_URLS_PER_SITEMAP);
|
|
127
|
+
allUrls.push(...childLocs);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
// Regular sitemap
|
|
133
|
+
const locs = extractLocs(response.body, MAX_URLS_PER_SITEMAP);
|
|
134
|
+
allUrls.push(...locs);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// Deduplicate and filter to same-origin
|
|
138
|
+
allUrls = [...new Set(filterSameOrigin(allUrls, baseUrl))];
|
|
139
|
+
const apiRelevantUrls = filterApiRelevantUrls(allUrls);
|
|
140
|
+
if (sitemapPaths.length === 0) {
|
|
141
|
+
return {
|
|
142
|
+
check: { id, label, status: "fail", detail: "No XML sitemap found" },
|
|
143
|
+
urls: [],
|
|
144
|
+
apiRelevantUrls: [],
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
if (allUrls.length === 0) {
|
|
148
|
+
return {
|
|
149
|
+
check: {
|
|
150
|
+
id,
|
|
151
|
+
label,
|
|
152
|
+
status: "partial",
|
|
153
|
+
detail: `Sitemap found at ${sitemapPaths.join(", ")} but contains no URLs`,
|
|
154
|
+
},
|
|
155
|
+
urls: [],
|
|
156
|
+
apiRelevantUrls: [],
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
const apiNote = apiRelevantUrls.length > 0
|
|
160
|
+
? `, ${apiRelevantUrls.length} API-relevant`
|
|
161
|
+
: "";
|
|
162
|
+
return {
|
|
163
|
+
check: {
|
|
164
|
+
id,
|
|
165
|
+
label,
|
|
166
|
+
status: "pass",
|
|
167
|
+
detail: `Sitemap found with ${allUrls.length} URLs${apiNote}`,
|
|
168
|
+
data: { totalUrls: allUrls.length, apiRelevantUrls, sitemapPaths },
|
|
169
|
+
},
|
|
170
|
+
urls: allUrls,
|
|
171
|
+
apiRelevantUrls,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=sitemap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sitemap.js","sourceRoot":"","sources":["../../../src/bridges/standards/sitemap.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explanations.d.ts","sourceRoot":"","sources":["../../src/core/explanations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,+DAA+D;AAC/D,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,OAAO,CAAC,MAAM,CAAC,WAAW,GAAG,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AAErD,4EAA4E;AAC5E,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"explanations.d.ts","sourceRoot":"","sources":["../../src/core/explanations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,+DAA+D;AAC/D,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,OAAO,CAAC,MAAM,CAAC,WAAW,GAAG,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AAErD,4EAA4E;AAC5E,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAmI/D,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,GAClB,MAAM,GAAG,SAAS,CAKpB"}
|
|
@@ -53,6 +53,18 @@ export const CHECK_EXPLANATIONS = {
|
|
|
53
53
|
meta_robots: "Meta robots tags can override robots.txt — preventing AI agents from indexing or following links even when crawling is allowed.",
|
|
54
54
|
x_robots_tag: "X-Robots-Tag headers apply indexing restrictions at the server level, affecting all AI agents regardless of page content.",
|
|
55
55
|
// Bridge 2: Standards
|
|
56
|
+
sitemap: {
|
|
57
|
+
pass: "Your XML sitemap helps AI agents discover all your pages and API resources efficiently without crawling.",
|
|
58
|
+
fail: "Without a sitemap, AI agents must crawl your site blindly — they may miss important pages and API resources.",
|
|
59
|
+
partial: "Your sitemap exists but contains no URLs — AI agents can't use it to discover your content.",
|
|
60
|
+
default: "An XML sitemap gives AI agents a complete map of your site's pages and resources.",
|
|
61
|
+
},
|
|
62
|
+
graphql_endpoint: {
|
|
63
|
+
pass: "Your GraphQL endpoint with introspection lets AI agents discover your entire API schema and build queries automatically.",
|
|
64
|
+
fail: "No GraphQL endpoint found — if you offer a GraphQL API, AI agents can't discover it.",
|
|
65
|
+
partial: "A GraphQL endpoint was detected but introspection is disabled or requires authentication — AI agents know it exists but can't discover the schema.",
|
|
66
|
+
default: "A GraphQL endpoint with introspection enabled lets AI agents explore your API schema and construct queries without documentation.",
|
|
67
|
+
},
|
|
56
68
|
openapi_spec: {
|
|
57
69
|
pass: "Your OpenAPI spec lets AI agents discover and correctly call your API endpoints automatically.",
|
|
58
70
|
fail: "Without an OpenAPI spec, AI agents can't discover or correctly call your endpoints — they're locked out of programmatic access.",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explanations.js","sourceRoot":"","sources":["../../src/core/explanations.ts"],"names":[],"mappings":"AAOA,4EAA4E;AAC5E,MAAM,CAAC,MAAM,kBAAkB,GAAqC;IAClE,yBAAyB;IACzB,eAAe,EACb,mGAAmG;IACrG,WAAW,EAAE;QACX,IAAI,EAAE,wFAAwF;QAC9F,IAAI,EAAE,wFAAwF;QAC9F,OAAO,EAAE,gEAAgE;QACzE,OAAO,EAAE,kEAAkE;KAC5E;IACD,UAAU,EAAE;QACV,IAAI,EAAE,0DAA0D;QAChE,IAAI,EAAE,gIAAgI;QACtI,OAAO,EAAE,yEAAyE;QAClF,OAAO,EAAE,wEAAwE;KAClF;IACD,qBAAqB,EAAE;QACrB,IAAI,EAAE,qFAAqF;QAC3F,IAAI,EAAE,qFAAqF;QAC3F,OAAO,EAAE,8FAA8F;QACvG,OAAO,EAAE,4FAA4F;KACtG;IACD,wBAAwB,EAAE;QACxB,IAAI,EAAE,qEAAqE;QAC3E,IAAI,EAAE,2EAA2E;QACjF,OAAO,EAAE,yFAAyF;QAClG,OAAO,EAAE,oFAAoF;KAC9F;IACD,oBAAoB,EAAE;QACpB,IAAI,EAAE,+GAA+G;QACrH,IAAI,EAAE,gGAAgG;QACtG,OAAO,EAAE,+FAA+F;QACxG,OAAO,EAAE,mGAAmG;KAC7G;IACD,wBAAwB,EAAE;QACxB,IAAI,EAAE,iFAAiF;QACvF,IAAI,EAAE,gFAAgF;QACtF,OAAO,EAAE,mGAAmG;QAC5G,OAAO,EAAE,+FAA+F;KACzG;IACD,sBAAsB,EAAE;QACtB,IAAI,EAAE,wFAAwF;QAC9F,IAAI,EAAE,+EAA+E;QACrF,OAAO,EAAE,yFAAyF;QAClG,OAAO,EAAE,uGAAuG;KACjH;IACD,4BAA4B,EAAE;QAC5B,IAAI,EAAE,yFAAyF;QAC/F,IAAI,EAAE,2FAA2F;QACjG,OAAO,EAAE,kGAAkG;QAC3G,OAAO,EAAE,6FAA6F;KACvG;IACD,WAAW,EACT,iIAAiI;IACnI,YAAY,EACV,2HAA2H;IAE7H,sBAAsB;IACtB,YAAY,EAAE;QACZ,IAAI,EAAE,gGAAgG;QACtG,IAAI,EAAE,iIAAiI;QACvI,OAAO,EAAE,6EAA6E;QACtF,OAAO,EAAE,oFAAoF;KAC9F;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,6FAA6F;QACnG,IAAI,EAAE,2GAA2G;QACjH,OAAO,EAAE,yFAAyF;QAClG,OAAO,EAAE,+FAA+F;KACzG;IACD,aAAa,EAAE;QACb,IAAI,EAAE,kFAAkF;QACxF,IAAI,EAAE,4IAA4I;QAClJ,OAAO,EAAE,kHAAkH;KAC5H;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,2HAA2H;QACjI,IAAI,EAAE,0FAA0F;QAChG,OAAO,EAAE,wGAAwG;KAClH;IACD,OAAO,EAAE;QACP,IAAI,EAAE,yGAAyG;QAC/G,IAAI,EAAE,+GAA+G;QACrH,OAAO,EAAE,oGAAoG;KAC9G;IACD,UAAU,EAAE;QACV,IAAI,EAAE,wGAAwG;QAC9G,IAAI,EAAE,6GAA6G;QACnH,OAAO,EAAE,qGAAqG;KAC/G;IACD,YAAY,EACV,8HAA8H;IAChI,SAAS,EAAE;QACT,IAAI,EAAE,kGAAkG;QACxG,IAAI,EAAE,+FAA+F;QACrG,OAAO,EAAE,2FAA2F;KACrG;IAED,uBAAuB;IACvB,YAAY,EAAE;QACZ,IAAI,EAAE,0GAA0G;QAChH,IAAI,EAAE,wHAAwH;QAC9H,OAAO,EAAE,oGAAoG;KAC9G;IACD,cAAc,EAAE;QACd,IAAI,EAAE,iHAAiH;QACvH,IAAI,EAAE,4FAA4F;QAClG,OAAO,EAAE,+FAA+F;KACzG;IACD,cAAc,EAAE;QACd,IAAI,EAAE,8FAA8F;QACpG,IAAI,EAAE,wHAAwH;QAC9H,OAAO,EAAE,qGAAqG;KAC/G;IACD,eAAe,EAAE;QACf,IAAI,EAAE,qHAAqH;QAC3H,IAAI,EAAE,gIAAgI;QACtI,OAAO,EAAE,oFAAoF;KAC9F;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,MAAmB;IAEnB,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC;AACxC,CAAC"}
|
|
1
|
+
{"version":3,"file":"explanations.js","sourceRoot":"","sources":["../../src/core/explanations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { HttpResponse } from "../core/types.js";
|
|
2
2
|
import { type DnsCache } from "./ssrf.js";
|
|
3
|
-
/** Options for httpGet */
|
|
3
|
+
/** Options for httpGet (also supports POST despite the name) */
|
|
4
4
|
export interface HttpGetOptions {
|
|
5
5
|
/** HTTP method (default: "GET") */
|
|
6
|
-
method?: "GET" | "HEAD";
|
|
6
|
+
method?: "GET" | "HEAD" | "POST";
|
|
7
7
|
/** Per-request timeout in milliseconds (default: 10000) */
|
|
8
8
|
timeout?: number;
|
|
9
9
|
/** Maximum number of redirects to follow (default: 5) */
|
|
@@ -14,10 +14,15 @@ export interface HttpGetOptions {
|
|
|
14
14
|
dnsCache?: DnsCache;
|
|
15
15
|
/** Custom headers to merge with defaults */
|
|
16
16
|
headers?: Record<string, string>;
|
|
17
|
+
/** Request body for POST requests */
|
|
18
|
+
body?: string;
|
|
17
19
|
}
|
|
18
20
|
/**
|
|
19
|
-
* Perform an HTTP
|
|
20
|
-
*
|
|
21
|
+
* Perform an HTTP request with SSRF protection, redirect tracking,
|
|
22
|
+
* retry logic, and discriminated union error handling.
|
|
23
|
+
*
|
|
24
|
+
* Supports GET, HEAD, and POST methods. POST requests do not follow
|
|
25
|
+
* redirects and require a `body` option.
|
|
21
26
|
*
|
|
22
27
|
* NEVER throws -- all errors are returned as HttpFailure values.
|
|
23
28
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/utils/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAGb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGvD,
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../src/utils/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAGb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGvD,gEAAgE;AAChE,MAAM,WAAW,cAAc;IAC7B,mCAAmC;IACnC,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAgRD;;;;;;;;GAQG;AACH,wBAAsB,OAAO,CAC3B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAChC,OAAO,CAAC,YAAY,CAAC,CAoCvB"}
|
|
@@ -92,13 +92,25 @@ async function fetchOnce(url, options) {
|
|
|
92
92
|
redirect: "manual",
|
|
93
93
|
signal: AbortSignal.timeout(options.timeout),
|
|
94
94
|
headers: options.headers,
|
|
95
|
+
// POST body (only sent on first request, not on redirects)
|
|
96
|
+
...(options.method === "POST" && options.body && hop === 0
|
|
97
|
+
? { body: options.body }
|
|
98
|
+
: {}),
|
|
95
99
|
});
|
|
96
100
|
}
|
|
97
101
|
catch (err) {
|
|
98
102
|
return classifyFetchError(err, currentUrl);
|
|
99
103
|
}
|
|
100
|
-
// Handle redirects (3xx)
|
|
104
|
+
// Handle redirects (3xx) — POST does not follow redirects
|
|
101
105
|
if (response.status >= 300 && response.status < 400) {
|
|
106
|
+
if (options.method === "POST") {
|
|
107
|
+
// POST redirects are not followed — treat as final response
|
|
108
|
+
const headerRecord = headersToRecord(response.headers);
|
|
109
|
+
return {
|
|
110
|
+
ok: false,
|
|
111
|
+
error: { kind: "http_error", message: `HTTP ${response.status} ${response.statusText}`, statusCode: response.status, url: currentUrl },
|
|
112
|
+
};
|
|
113
|
+
}
|
|
102
114
|
const location = response.headers.get("location");
|
|
103
115
|
if (!location) {
|
|
104
116
|
// No Location header -- treat as final response
|
|
@@ -201,8 +213,11 @@ async function fetchWithRetry(url, options) {
|
|
|
201
213
|
// Public API
|
|
202
214
|
// ---------------------------------------------------------------------------
|
|
203
215
|
/**
|
|
204
|
-
* Perform an HTTP
|
|
205
|
-
*
|
|
216
|
+
* Perform an HTTP request with SSRF protection, redirect tracking,
|
|
217
|
+
* retry logic, and discriminated union error handling.
|
|
218
|
+
*
|
|
219
|
+
* Supports GET, HEAD, and POST methods. POST requests do not follow
|
|
220
|
+
* redirects and require a `body` option.
|
|
206
221
|
*
|
|
207
222
|
* NEVER throws -- all errors are returned as HttpFailure values.
|
|
208
223
|
*/
|
|
@@ -216,6 +231,10 @@ export async function httpGet(url, options) {
|
|
|
216
231
|
"User-Agent": USER_AGENT,
|
|
217
232
|
...(options?.headers ?? {}),
|
|
218
233
|
};
|
|
234
|
+
// POST requests need Content-Type if not explicitly set
|
|
235
|
+
if (method === "POST" && !headers["Content-Type"] && !headers["content-type"]) {
|
|
236
|
+
headers["Content-Type"] = "application/json";
|
|
237
|
+
}
|
|
219
238
|
const start = performance.now();
|
|
220
239
|
const result = await fetchWithRetry(url, {
|
|
221
240
|
method,
|
|
@@ -224,6 +243,7 @@ export async function httpGet(url, options) {
|
|
|
224
243
|
maxBodyBytes,
|
|
225
244
|
dnsCache,
|
|
226
245
|
headers,
|
|
246
|
+
body: options?.body,
|
|
227
247
|
});
|
|
228
248
|
const durationMs = Math.round(performance.now() - start);
|
|
229
249
|
// Attach durationMs to success results
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/utils/http-client.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAiB,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/utils/http-client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "milieu-cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "Check if AI agents can discover, understand, and use your API",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"dist"
|
|
20
20
|
],
|
|
21
21
|
"scripts": {
|
|
22
|
-
"build": "rm -rf dist && tsc -p tsconfig.build.json",
|
|
22
|
+
"build": "rm -rf dist && tsc -p tsconfig.build.json && chmod +x dist/cli/index.js",
|
|
23
23
|
"dev": "tsx src/index.ts",
|
|
24
24
|
"test": "vitest run --reporter=verbose",
|
|
25
25
|
"typecheck": "tsc --noEmit",
|