milieu-cli 0.1.0 → 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 +52 -6
- 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 +9 -2
- package/dist/bridges/separation/index.js.map +1 -1
- package/dist/bridges/separation/webhook-support.d.ts +25 -12
- package/dist/bridges/separation/webhook-support.d.ts.map +1 -1
- package/dist/bridges/separation/webhook-support.js +100 -12
- package/dist/bridges/separation/webhook-support.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 +32 -13
- package/dist/bridges/standards/index.js.map +1 -1
- package/dist/bridges/standards/openapi.d.ts +8 -1
- package/dist/bridges/standards/openapi.d.ts.map +1 -1
- package/dist/bridges/standards/openapi.js +49 -2
- 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 +14 -2
- 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 +4 -4
|
@@ -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":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAcrD,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,sCAAsC;AACtC,MAAM,aAAa,GAAG,CAAC,cAAc,EAAE,oBAAoB,CAAU,CAAC;AAEtE,gDAAgD;AAChD,MAAM,cAAc,GAAG,SAAS,CAAC;AAEjC,gDAAgD;AAChD,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAElC,wDAAwD;AACxD,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAE7B,2DAA2D;AAC3D,MAAM,gBAAgB,GAAG;IACvB,4BAA4B;IAC5B,4BAA4B;IAC5B,qBAAqB;IACrB,oBAAoB;IACpB,aAAa;IACb,6BAA6B;CAC9B,CAAC;AAEF,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,sDAAsD;AACtD,SAAS,WAAW,CAAC,GAAW,EAAE,KAAa;IAC7C,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAG,2BAA2B,CAAC;IAC1C,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;QACjE,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,GAAG;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8CAA8C;AAC9C,SAAS,cAAc,CAAC,GAAW;IACjC,OAAO,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,iDAAiD;AACjD,SAAS,qBAAqB,CAAC,IAAc;IAC3C,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CACzB,gBAAgB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CACtD,CAAC;AACJ,CAAC;AAED,sCAAsC;AACtC,SAAS,gBAAgB,CAAC,IAAc,EAAE,OAAe;IACvD,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QACzB,IAAI,CAAC;YACH,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAe,EACf,iBAA2B,EAC3B,OAAgB;IAEhB,MAAM,EAAE,GAAG,SAAS,CAAC;IACrB,MAAM,KAAK,GAAG,aAAa,CAAC;IAE5B,+DAA+D;IAC/D,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;gBAC9C,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oBAAoB;QACtB,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACzB,OAAO,CAAC,GAAG,EAAE;QACX,OAAO;QACP,YAAY,EAAE,cAAc;QAC5B,OAAO,EAAE,EAAE,MAAM,EAAE,gCAAgC,EAAE;KACtD,CAAC,CACH,CACF,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;IACrC,IAAI,OAAO,GAAa,EAAE,CAAC;IAC3B,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,SAAS;QAE3B,2BAA2B;QAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,SAAS;QAE7C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACrD,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE7B,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,wCAAwC;YACxC,MAAM,SAAS,GAAG,gBAAgB,CAChC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC,EAC9C,OAAO,CACR,CAAC;YAEF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CACtC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACpB,OAAO,CAAC,GAAG,EAAE;oBACX,OAAO;oBACP,YAAY,EAAE,cAAc;oBAC5B,OAAO,EAAE,EAAE,MAAM,EAAE,gCAAgC,EAAE;iBACtD,CAAC,CACH,CACF,CAAC;gBAEF,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;oBAC3C,IAAI,CAAC,aAAa,CAAC,EAAE;wBAAE,SAAS;oBAChC,MAAM,SAAS,GAAG,WAAW,CAC3B,aAAa,CAAC,IAAI,EAClB,oBAAoB,CACrB,CAAC;oBACF,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,kBAAkB;YAClB,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAE3D,MAAM,eAAe,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAEvD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE;YACpE,IAAI,EAAE,EAAE;YACR,eAAe,EAAE,EAAE;SACpB,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO;YACL,KAAK,EAAE;gBACL,EAAE;gBACF,KAAK;gBACL,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,oBAAoB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB;aAC3E;YACD,IAAI,EAAE,EAAE;YACR,eAAe,EAAE,EAAE;SACpB,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GACX,eAAe,CAAC,MAAM,GAAG,CAAC;QACxB,CAAC,CAAC,KAAK,eAAe,CAAC,MAAM,eAAe;QAC5C,CAAC,CAAC,EAAE,CAAC;IAET,OAAO;QACL,KAAK,EAAE;YACL,EAAE;YACF,KAAK;YACL,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,sBAAsB,OAAO,CAAC,MAAM,QAAQ,OAAO,EAAE;YAC7D,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE;SACnE;QACD,IAAI,EAAE,OAAO;QACb,eAAe;KAChB,CAAC;AACJ,CAAC"}
|
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.",
|
|
@@ -108,8 +120,8 @@ export const CHECK_EXPLANATIONS = {
|
|
|
108
120
|
default: "SDK and package references tell AI agents which languages your API supports and how to get started.",
|
|
109
121
|
},
|
|
110
122
|
webhook_support: {
|
|
111
|
-
pass: "
|
|
112
|
-
fail: "
|
|
123
|
+
pass: "AI agents can see your webhook support — they'll build reactive workflows that respond to your events in real-time.",
|
|
124
|
+
fail: "No webhook signals found in your OpenAPI spec, standards headers, or documentation — AI agents must poll your API for changes.",
|
|
113
125
|
default: "Webhooks enable AI agents to receive real-time events instead of polling your API.",
|
|
114
126
|
},
|
|
115
127
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"explanations.js","sourceRoot":"","sources":["../../src/core/explanations.ts"],"names":[],"mappings":"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
|
|
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,13 +1,13 @@
|
|
|
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",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
8
8
|
"bin": {
|
|
9
|
-
"milieu": "dist/cli/index.js",
|
|
10
|
-
"milieu-cli": "dist/cli/index.js"
|
|
9
|
+
"milieu": "./dist/cli/index.js",
|
|
10
|
+
"milieu-cli": "./dist/cli/index.js"
|
|
11
11
|
},
|
|
12
12
|
"exports": {
|
|
13
13
|
".": {
|
|
@@ -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",
|