@mcpmake/core 0.2.4 → 0.3.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/dist/analyzer/dom-parser.d.ts +35 -0
- package/dist/analyzer/dom-parser.d.ts.map +1 -1
- package/dist/analyzer/dom-parser.js +107 -6
- package/dist/analyzer/dom-parser.js.map +1 -1
- package/dist/analyzer/goal-crawler.d.ts +2 -1
- package/dist/analyzer/goal-crawler.d.ts.map +1 -1
- package/dist/analyzer/goal-crawler.js +66 -17
- package/dist/analyzer/goal-crawler.js.map +1 -1
- package/dist/analyzer/semantic-analyzer.d.ts +1 -1
- package/dist/analyzer/semantic-analyzer.d.ts.map +1 -1
- package/dist/analyzer/semantic-analyzer.js +15 -16
- package/dist/analyzer/semantic-analyzer.js.map +1 -1
- package/dist/analyzer/site-crawler.d.ts.map +1 -1
- package/dist/analyzer/site-crawler.js +122 -16
- package/dist/analyzer/site-crawler.js.map +1 -1
- package/dist/config/mcpmake-config.d.ts.map +1 -1
- package/dist/config/mcpmake-config.js +5 -0
- package/dist/config/mcpmake-config.js.map +1 -1
- package/dist/emitter/code-writer.d.ts +1 -0
- package/dist/emitter/code-writer.d.ts.map +1 -1
- package/dist/emitter/code-writer.js +79 -12
- package/dist/emitter/code-writer.js.map +1 -1
- package/dist/emitter/index.d.ts +8 -0
- package/dist/emitter/index.d.ts.map +1 -1
- package/dist/emitter/index.js +113 -6
- package/dist/emitter/index.js.map +1 -1
- package/dist/emitter/project-scaffolder.d.ts +13 -0
- package/dist/emitter/project-scaffolder.d.ts.map +1 -1
- package/dist/emitter/project-scaffolder.js +29 -0
- package/dist/emitter/project-scaffolder.js.map +1 -1
- package/dist/emitter/python-template-loader.d.ts.map +1 -1
- package/dist/emitter/python-template-loader.js +10 -0
- package/dist/emitter/python-template-loader.js.map +1 -1
- package/dist/emitter/python-templates/dockerfile.hbs +4 -1
- package/dist/emitter/python-templates/server.py.hbs +82 -8
- package/dist/emitter/site-scaffolder.d.ts.map +1 -1
- package/dist/emitter/site-scaffolder.js +28 -1
- package/dist/emitter/site-scaffolder.js.map +1 -1
- package/dist/emitter/site-templates/browser-manager.ts.hbs +104 -34
- package/dist/emitter/site-templates/dockerfile.hbs +13 -4
- package/dist/emitter/site-templates/env.example.hbs +8 -0
- package/dist/emitter/site-templates/server-main-http.ts.hbs +77 -6
- package/dist/emitter/site-templates/telemetry.ts.hbs +117 -0
- package/dist/emitter/site-templates/tool-handler-form.ts.hbs +10 -8
- package/dist/emitter/template-loader.d.ts.map +1 -1
- package/dist/emitter/template-loader.js +9 -0
- package/dist/emitter/template-loader.js.map +1 -1
- package/dist/emitter/templates/auth-provider.ts.hbs +86 -21
- package/dist/emitter/templates/config.ts.hbs +29 -0
- package/dist/emitter/templates/dockerfile.hbs +12 -4
- package/dist/emitter/templates/env.example.hbs +6 -0
- package/dist/emitter/templates/http-executor.ts.hbs +150 -7
- package/dist/emitter/templates/oauth.ts.hbs +19 -65
- package/dist/emitter/templates/server-main-http.ts.hbs +93 -12
- package/dist/emitter/templates/task-handlers.ts.hbs +40 -1
- package/dist/emitter/templates/tool-handler.ts.hbs +37 -2
- package/dist/emitter/templates/tool-test.ts.hbs +9 -1
- package/dist/emitter/worker-templates/config.ts.hbs +7 -0
- package/dist/emitter/worker-templates/tool-handler.ts.hbs +37 -2
- package/dist/emitter/worker-templates/worker.ts.hbs +119 -25
- package/dist/generator/spec-generator.d.ts.map +1 -1
- package/dist/generator/spec-generator.js +9 -54
- package/dist/generator/spec-generator.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/llm/anthropic-provider.d.ts +14 -0
- package/dist/llm/anthropic-provider.d.ts.map +1 -0
- package/dist/llm/anthropic-provider.js +50 -0
- package/dist/llm/anthropic-provider.js.map +1 -0
- package/dist/llm/index.d.ts +19 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +73 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/openai-provider.d.ts +46 -0
- package/dist/llm/openai-provider.d.ts.map +1 -0
- package/dist/llm/openai-provider.js +221 -0
- package/dist/llm/openai-provider.js.map +1 -0
- package/dist/llm/types.d.ts +61 -0
- package/dist/llm/types.d.ts.map +1 -0
- package/dist/llm/types.js +16 -0
- package/dist/llm/types.js.map +1 -0
- package/dist/parser/har-filter.d.ts +7 -0
- package/dist/parser/har-filter.d.ts.map +1 -1
- package/dist/parser/har-filter.js +107 -1
- package/dist/parser/har-filter.js.map +1 -1
- package/dist/parser/index.d.ts +1 -1
- package/dist/parser/index.d.ts.map +1 -1
- package/dist/parser/index.js +1 -1
- package/dist/parser/index.js.map +1 -1
- package/dist/parser/openapi-loader.d.ts.map +1 -1
- package/dist/parser/openapi-loader.js +36 -2
- package/dist/parser/openapi-loader.js.map +1 -1
- package/dist/parser/operation-extractor.d.ts.map +1 -1
- package/dist/parser/operation-extractor.js +12 -1
- package/dist/parser/operation-extractor.js.map +1 -1
- package/dist/parser/overlay-loader.d.ts.map +1 -1
- package/dist/parser/overlay-loader.js +11 -2
- package/dist/parser/overlay-loader.js.map +1 -1
- package/dist/parser/postman-loader.d.ts.map +1 -1
- package/dist/parser/postman-loader.js +6 -1
- package/dist/parser/postman-loader.js.map +1 -1
- package/dist/parser/schema-converter.d.ts +13 -2
- package/dist/parser/schema-converter.d.ts.map +1 -1
- package/dist/parser/schema-converter.js +64 -42
- package/dist/parser/schema-converter.js.map +1 -1
- package/dist/plugins/loader.d.ts +5 -1
- package/dist/plugins/loader.d.ts.map +1 -1
- package/dist/plugins/loader.js +39 -10
- package/dist/plugins/loader.js.map +1 -1
- package/dist/pricing.d.ts +5 -1
- package/dist/pricing.d.ts.map +1 -1
- package/dist/pricing.js +7 -3
- package/dist/pricing.js.map +1 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +6 -21
- package/dist/providers/index.js.map +1 -1
- package/dist/recorder/browser-recorder.d.ts.map +1 -1
- package/dist/recorder/browser-recorder.js +89 -12
- package/dist/recorder/browser-recorder.js.map +1 -1
- package/dist/rescan/rescan-scheduler.d.ts.map +1 -1
- package/dist/rescan/rescan-scheduler.js +22 -7
- package/dist/rescan/rescan-scheduler.js.map +1 -1
- package/dist/site-transformer/selector-healer.d.ts +1 -1
- package/dist/site-transformer/selector-healer.d.ts.map +1 -1
- package/dist/site-transformer/selector-healer.js +17 -18
- package/dist/site-transformer/selector-healer.js.map +1 -1
- package/dist/site-transformer/tool-generator.d.ts.map +1 -1
- package/dist/site-transformer/tool-generator.js +90 -22
- package/dist/site-transformer/tool-generator.js.map +1 -1
- package/dist/transformer/auth-detector.d.ts.map +1 -1
- package/dist/transformer/auth-detector.js +24 -5
- package/dist/transformer/auth-detector.js.map +1 -1
- package/dist/transformer/har-schema-inferrer.d.ts.map +1 -1
- package/dist/transformer/har-schema-inferrer.js +2 -0
- package/dist/transformer/har-schema-inferrer.js.map +1 -1
- package/dist/transformer/har-to-operations.d.ts +1 -0
- package/dist/transformer/har-to-operations.d.ts.map +1 -1
- package/dist/transformer/har-to-operations.js +42 -10
- package/dist/transformer/har-to-operations.js.map +1 -1
- package/dist/transformer/llm-namer.d.ts.map +1 -1
- package/dist/transformer/llm-namer.js +10 -13
- package/dist/transformer/llm-namer.js.map +1 -1
- package/dist/transformer/naming.d.ts.map +1 -1
- package/dist/transformer/naming.js +16 -8
- package/dist/transformer/naming.js.map +1 -1
- package/dist/transformer/resource-builder.d.ts.map +1 -1
- package/dist/transformer/resource-builder.js +13 -6
- package/dist/transformer/resource-builder.js.map +1 -1
- package/dist/transformer/stainless-translator.d.ts +6 -0
- package/dist/transformer/stainless-translator.d.ts.map +1 -1
- package/dist/transformer/stainless-translator.js +18 -1
- package/dist/transformer/stainless-translator.js.map +1 -1
- package/dist/transformer/tool-builder.d.ts.map +1 -1
- package/dist/transformer/tool-builder.js +141 -14
- package/dist/transformer/tool-builder.js.map +1 -1
- package/dist/types/index.d.ts +79 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/site.d.ts +19 -1
- package/dist/types/site.d.ts.map +1 -1
- package/dist/utils/fail.d.ts.map +1 -1
- package/dist/utils/fail.js +22 -4
- package/dist/utils/fail.js.map +1 -1
- package/dist/utils/json-extract.d.ts +21 -0
- package/dist/utils/json-extract.d.ts.map +1 -0
- package/dist/utils/json-extract.js +67 -0
- package/dist/utils/json-extract.js.map +1 -0
- package/dist/utils/model-resolver.d.ts.map +1 -1
- package/dist/utils/model-resolver.js +6 -0
- package/dist/utils/model-resolver.js.map +1 -1
- package/dist/utils/sanitize.d.ts +63 -1
- package/dist/utils/sanitize.d.ts.map +1 -1
- package/dist/utils/sanitize.js +147 -2
- package/dist/utils/sanitize.js.map +1 -1
- package/dist/utils/ssrf-guard.d.ts +10 -0
- package/dist/utils/ssrf-guard.d.ts.map +1 -0
- package/dist/utils/ssrf-guard.js +130 -0
- package/dist/utils/ssrf-guard.js.map +1 -0
- package/dist/utils/watcher.d.ts +17 -1
- package/dist/utils/watcher.d.ts.map +1 -1
- package/dist/utils/watcher.js +53 -21
- package/dist/utils/watcher.js.map +1 -1
- package/package.json +2 -1
|
@@ -3,14 +3,21 @@
|
|
|
3
3
|
* and extracting interactive elements from each page.
|
|
4
4
|
*/
|
|
5
5
|
import { chromium } from 'playwright';
|
|
6
|
-
import { parsePage } from './dom-parser.js';
|
|
6
|
+
import { parsePage, isSameOrigin, navigationHopDecision } from './dom-parser.js';
|
|
7
7
|
import { captureViewportScreenshot } from './screenshot-capture.js';
|
|
8
8
|
import { logger } from '../utils/logger.js';
|
|
9
|
+
import { assertPublicUrl } from '../utils/ssrf-guard.js';
|
|
9
10
|
import crypto from 'node:crypto';
|
|
10
11
|
const DEFAULT_DEPTH = 2;
|
|
11
12
|
const DEFAULT_MAX_PAGES = 20;
|
|
12
13
|
const DEFAULT_TIMEOUT = 5 * 60 * 1000;
|
|
13
14
|
const DEFAULT_VIEWPORT = { width: 1280, height: 720 };
|
|
15
|
+
// Defense-in-depth bound on the in-flight request map during HAR capture.
|
|
16
|
+
const MAX_PENDING = 10_000;
|
|
17
|
+
// Cap the BFS frontier so an adversarial/large site can't balloon the queue.
|
|
18
|
+
// We never need more than maxPages worth of unvisited work plus a small margin,
|
|
19
|
+
// since extra queued URLs beyond the page cap would never be visited anyway.
|
|
20
|
+
const MAX_FRONTIER_MULTIPLIER = 10;
|
|
14
21
|
/**
|
|
15
22
|
* Crawl a website and return a SiteDescriptor with all discovered pages.
|
|
16
23
|
*/
|
|
@@ -24,32 +31,78 @@ export async function crawlSite(options) {
|
|
|
24
31
|
if (!['http:', 'https:'].includes(parsedUrl.protocol)) {
|
|
25
32
|
throw new Error('Only http/https URLs are supported');
|
|
26
33
|
}
|
|
34
|
+
// SSRF guard: refuse private/loopback/link-local/metadata start hosts before
|
|
35
|
+
// we launch a browser at them. Resolves DNS and enforces protocol + host.
|
|
36
|
+
await assertPublicUrl(options.url);
|
|
27
37
|
const baseUrl = `${parsedUrl.protocol}//${parsedUrl.host}`;
|
|
38
|
+
// Normalized origin used for same-origin admission. A string-prefix check on
|
|
39
|
+
// baseUrl would admit prefix-spoofing hosts (e.g. example.com.attacker.test).
|
|
40
|
+
const baseOrigin = parsedUrl.origin;
|
|
28
41
|
const captureHar = options.captureHar ?? false;
|
|
29
42
|
const pages = [];
|
|
30
43
|
const screenshots = new Map();
|
|
31
44
|
const harEntries = [];
|
|
32
45
|
const pendingRequests = new Map();
|
|
33
46
|
const visited = new Set();
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
47
|
+
// URLs already pushed onto the frontier (by normalized form). Dedup on enqueue
|
|
48
|
+
// — not just on visit — so the same link discovered on many pages is queued
|
|
49
|
+
// once and the frontier can't balloon. Seed with the start URL.
|
|
50
|
+
const enqueued = new Set();
|
|
51
|
+
const maxFrontier = maxPages * MAX_FRONTIER_MULTIPLIER;
|
|
52
|
+
const queue = [];
|
|
53
|
+
const enqueue = (url, currentDepth) => {
|
|
54
|
+
if (queue.length >= maxFrontier)
|
|
55
|
+
return;
|
|
56
|
+
const key = normalizeUrl(url);
|
|
57
|
+
if (visited.has(key) || enqueued.has(key))
|
|
58
|
+
return;
|
|
59
|
+
enqueued.add(key);
|
|
60
|
+
queue.push({ url, currentDepth });
|
|
61
|
+
};
|
|
62
|
+
enqueue(options.url, 0);
|
|
37
63
|
let browser;
|
|
38
64
|
try {
|
|
39
65
|
browser = await chromium.launch({ headless: options.headless ?? false });
|
|
40
66
|
const context = await browser.newContext({ viewport });
|
|
41
67
|
const page = await context.newPage();
|
|
68
|
+
// Per-hop SSRF guard: abort cross-origin *navigations/document loads* the
|
|
69
|
+
// page itself issues (meta/JS redirect, window.location, fresh document) so
|
|
70
|
+
// it can't steer the top-level page off the base origin to an internal
|
|
71
|
+
// target. The queue-time isSameOrigin check (below) only vets links we choose
|
|
72
|
+
// to enqueue. Subresources (including cross-origin ones) are allowed through
|
|
73
|
+
// so pages still render. See navigationHopDecision.
|
|
74
|
+
//
|
|
75
|
+
// CAVEAT: Chromium follows a server 3xx redirect WITHOUT re-invoking
|
|
76
|
+
// page.route, so a same-origin URL that 302s to an internal host is NOT
|
|
77
|
+
// blocked at request time here — the post-goto landed-origin check below is
|
|
78
|
+
// the backstop (we skip parsing a page that ended off-origin). The hosted
|
|
79
|
+
// crawl additionally runs inside an egress-restricted network.
|
|
80
|
+
await page.route('**/*', (route) => {
|
|
81
|
+
const request = route.request();
|
|
82
|
+
const decision = navigationHopDecision(request.isNavigationRequest(), request.url(), baseOrigin);
|
|
83
|
+
if (decision === 'abort') {
|
|
84
|
+
logger.warn(`Blocked cross-origin navigation hop (SSRF guard): ${request.url()}`);
|
|
85
|
+
return route.abort('blockedbyclient');
|
|
86
|
+
}
|
|
87
|
+
return route.continue();
|
|
88
|
+
});
|
|
42
89
|
// Optionally capture network requests as HAR entries during crawl
|
|
43
90
|
if (captureHar) {
|
|
44
|
-
|
|
91
|
+
const onRequest = (request) => {
|
|
92
|
+
// Defense-in-depth bound: drop the oldest in-flight entry if a flood of
|
|
93
|
+
// never-resolving requests ever fills the map.
|
|
94
|
+
if (pendingRequests.size >= MAX_PENDING) {
|
|
95
|
+
const oldest = pendingRequests.keys().next().value;
|
|
96
|
+
if (oldest)
|
|
97
|
+
pendingRequests.delete(oldest);
|
|
98
|
+
}
|
|
45
99
|
pendingRequests.set(request, { startTime: Date.now() });
|
|
46
|
-
}
|
|
47
|
-
|
|
100
|
+
};
|
|
101
|
+
const onResponse = async (response) => {
|
|
48
102
|
const request = response.request();
|
|
49
103
|
const pending = pendingRequests.get(request);
|
|
50
104
|
if (!pending)
|
|
51
105
|
return;
|
|
52
|
-
pendingRequests.delete(request);
|
|
53
106
|
try {
|
|
54
107
|
const entry = await buildCrawlHarEntry(request, response, pending.startTime);
|
|
55
108
|
harEntries.push(entry);
|
|
@@ -57,6 +110,30 @@ export async function crawlSite(options) {
|
|
|
57
110
|
catch {
|
|
58
111
|
// Some responses can't be read (redirects, aborted)
|
|
59
112
|
}
|
|
113
|
+
finally {
|
|
114
|
+
// Always free the pending entry, even on read failure, so the map
|
|
115
|
+
// can't grow unbounded across a long crawl.
|
|
116
|
+
pendingRequests.delete(request);
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
// The nav-hop guard aborts cross-origin hops and many crawl requests
|
|
120
|
+
// never fire 'response' (aborted/blocked/failed/redirect). Free their
|
|
121
|
+
// pending entries on both terminal events so the map can't leak.
|
|
122
|
+
const onSettled = (request) => {
|
|
123
|
+
pendingRequests.delete(request);
|
|
124
|
+
};
|
|
125
|
+
page.on('request', onRequest);
|
|
126
|
+
page.on('response', onResponse);
|
|
127
|
+
page.on('requestfailed', onSettled);
|
|
128
|
+
page.on('requestfinished', onSettled);
|
|
129
|
+
// Drop listeners when the browser disconnects so nothing is retained past
|
|
130
|
+
// the crawl (they close over pendingRequests/harEntries).
|
|
131
|
+
browser.on('disconnected', () => {
|
|
132
|
+
page.off('request', onRequest);
|
|
133
|
+
page.off('response', onResponse);
|
|
134
|
+
page.off('requestfailed', onSettled);
|
|
135
|
+
page.off('requestfinished', onSettled);
|
|
136
|
+
pendingRequests.clear();
|
|
60
137
|
});
|
|
61
138
|
}
|
|
62
139
|
logger.info(`Crawling site: ${options.url} (depth: ${depth}, max pages: ${maxPages})`);
|
|
@@ -64,10 +141,12 @@ export async function crawlSite(options) {
|
|
|
64
141
|
while (queue.length > 0 && pages.length < maxPages) {
|
|
65
142
|
const item = queue.shift();
|
|
66
143
|
const normalizedUrl = normalizeUrl(item.url);
|
|
67
|
-
// Skip if already visited or different origin
|
|
144
|
+
// Skip if already visited or different origin. Origin is compared via
|
|
145
|
+
// parsed URL.origin, never a string prefix, so a malicious link to
|
|
146
|
+
// `https://<base>.attacker.test` cannot pull the crawler off-origin.
|
|
68
147
|
if (visited.has(normalizedUrl))
|
|
69
148
|
continue;
|
|
70
|
-
if (!item.url
|
|
149
|
+
if (!isSameOrigin(item.url, baseOrigin))
|
|
71
150
|
continue;
|
|
72
151
|
visited.add(normalizedUrl);
|
|
73
152
|
// Check idle timeout
|
|
@@ -76,6 +155,10 @@ export async function crawlSite(options) {
|
|
|
76
155
|
break;
|
|
77
156
|
}
|
|
78
157
|
try {
|
|
158
|
+
// SSRF guard: re-check the host right before navigating. A discovered
|
|
159
|
+
// link can be same-origin yet still resolve to a private/internal
|
|
160
|
+
// address; refuse it without aborting the whole crawl.
|
|
161
|
+
await assertPublicUrl(item.url);
|
|
79
162
|
logger.info(`[${pages.length + 1}/${maxPages}] Visiting: ${item.url}`);
|
|
80
163
|
await page.goto(item.url, {
|
|
81
164
|
waitUntil: 'domcontentloaded',
|
|
@@ -94,11 +177,13 @@ export async function crawlSite(options) {
|
|
|
94
177
|
screenshots.set(pageDescriptor.pageId, screenshot.data);
|
|
95
178
|
}
|
|
96
179
|
pages.push(pageDescriptor);
|
|
97
|
-
// Queue navigation links for further crawling
|
|
180
|
+
// Queue navigation links for further crawling. enqueue() dedups
|
|
181
|
+
// against both visited and already-queued URLs and respects the
|
|
182
|
+
// frontier cap, so the same link across pages is queued at most once.
|
|
98
183
|
if (item.currentDepth < depth) {
|
|
99
184
|
for (const link of pageDescriptor.links) {
|
|
100
|
-
if (link.isNavigation &&
|
|
101
|
-
|
|
185
|
+
if (link.isNavigation && isSameOrigin(link.href, baseOrigin)) {
|
|
186
|
+
enqueue(link.href, item.currentDepth + 1);
|
|
102
187
|
}
|
|
103
188
|
}
|
|
104
189
|
}
|
|
@@ -141,6 +226,18 @@ export async function crawlSite(options) {
|
|
|
141
226
|
// ─── HAR Capture (for hybrid mode) ─────────────────────────────────
|
|
142
227
|
const MAX_RESPONSE_BODY_BYTES = 5 * 1024 * 1024;
|
|
143
228
|
const SKIP_BODY_MIME_TYPES = ['image/', 'video/', 'audio/', 'font/', 'application/octet-stream'];
|
|
229
|
+
// Large-by-nature Playwright resource types; skip body capture at the header
|
|
230
|
+
// level instead of buffering the whole response and discarding it afterwards.
|
|
231
|
+
const SKIP_BODY_RESOURCE_TYPES = new Set([
|
|
232
|
+
'image',
|
|
233
|
+
'media',
|
|
234
|
+
'font',
|
|
235
|
+
'stylesheet',
|
|
236
|
+
'websocket',
|
|
237
|
+
'eventsource',
|
|
238
|
+
'manifest',
|
|
239
|
+
'texttrack',
|
|
240
|
+
]);
|
|
144
241
|
async function buildCrawlHarEntry(request, response, startTime) {
|
|
145
242
|
const elapsed = Date.now() - startTime;
|
|
146
243
|
const url = request.url();
|
|
@@ -159,11 +256,20 @@ async function buildCrawlHarEntry(request, response, startTime) {
|
|
|
159
256
|
name,
|
|
160
257
|
value,
|
|
161
258
|
}));
|
|
259
|
+
// Enforce the body cap at the header/resource-type level: once
|
|
260
|
+
// `response.body()` resolves, Playwright has already buffered the whole
|
|
261
|
+
// response, so a post-hoc length check can't protect memory against a
|
|
262
|
+
// missing or dishonest Content-Length. Skip large-by-type resources and
|
|
263
|
+
// over-cap declared lengths up front; the post-read check is only a backstop.
|
|
162
264
|
let responseText;
|
|
163
265
|
const responseMimeType = response.headers()['content-type'] ?? '';
|
|
164
|
-
const skipBody = SKIP_BODY_MIME_TYPES.some((m) => responseMimeType.startsWith(m))
|
|
165
|
-
|
|
166
|
-
|
|
266
|
+
const skipBody = SKIP_BODY_MIME_TYPES.some((m) => responseMimeType.startsWith(m)) ||
|
|
267
|
+
SKIP_BODY_RESOURCE_TYPES.has(request.resourceType());
|
|
268
|
+
const rawContentLength = response.headers()['content-length'];
|
|
269
|
+
const parsedLength = rawContentLength === undefined ? NaN : parseInt(rawContentLength, 10);
|
|
270
|
+
const lengthKnown = Number.isFinite(parsedLength) && parsedLength >= 0;
|
|
271
|
+
const tooLargeByHeader = lengthKnown && parsedLength > MAX_RESPONSE_BODY_BYTES;
|
|
272
|
+
if (!skipBody && !tooLargeByHeader) {
|
|
167
273
|
try {
|
|
168
274
|
const body = await response.body();
|
|
169
275
|
if (body.length <= MAX_RESPONSE_BODY_BYTES) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"site-crawler.js","sourceRoot":"","sources":["../../src/analyzer/site-crawler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"site-crawler.js","sourceRoot":"","sources":["../../src/analyzer/site-crawler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcpmake-config.d.ts","sourceRoot":"","sources":["../../src/config/mcpmake-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"mcpmake-config.d.ts","sourceRoot":"","sources":["../../src/config/mcpmake-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAIrC,0EAA0E;AAC1E,eAAO,MAAM,cAAc,aAiBzB,CAAC;AAIH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,SAAS;IACxB,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAMD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,GAAE,SAAc,GAAG,MAAM,GAAG,IAAI,CAkBlE;AAED,0FAA0F;AAC1F,wBAAgB,UAAU,CAAC,IAAI,GAAE,SAAc,GAAG,YAAY,GAAG,IAAI,CAiBpE;AAED,uEAAuE;AACvE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOnF;AAED,4DAA4D;AAC5D,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGzB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAiC9E;AAkBD,MAAM,WAAW,WAAW;IAC1B,+DAA+D;IAC/D,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,6EAA6E;IAC7E,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,MAAM,EAAE,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,EAChB,IAAI,GAAE,SAAc,GACnB,WAAW,CAgCb;AAED,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAgB,GAAG,MAAM,CAGrE"}
|
|
@@ -23,6 +23,7 @@ import { existsSync, readFileSync } from 'node:fs';
|
|
|
23
23
|
import { isAbsolute, relative, resolve } from 'node:path';
|
|
24
24
|
import { parse as parseYaml } from 'yaml';
|
|
25
25
|
import { logger } from '../utils/logger.js';
|
|
26
|
+
import { isDangerousKey } from '../utils/sanitize.js';
|
|
26
27
|
/** Command names that may appear as config sections (vs. global keys). */
|
|
27
28
|
export const KNOWN_COMMANDS = new Set([
|
|
28
29
|
'openapi',
|
|
@@ -189,6 +190,10 @@ export function applyConfigToArgs(args, rawArgs, commandName, argSpec, deps = {}
|
|
|
189
190
|
const explicit = explicitFlags(rawArgs, argSpec);
|
|
190
191
|
const applied = [];
|
|
191
192
|
for (const [key, value] of Object.entries(merged)) {
|
|
193
|
+
// YAML parses a literal `__proto__`/`constructor`/`prototype` as an own
|
|
194
|
+
// enumerable key, so guard the merge before touching argSpec or args.
|
|
195
|
+
if (isDangerousKey(key) || !Object.hasOwn(argSpec, key))
|
|
196
|
+
continue;
|
|
192
197
|
const def = argSpec[key];
|
|
193
198
|
if (!def)
|
|
194
199
|
continue; // unknown global key — silently skip (may target another command)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcpmake-config.js","sourceRoot":"","sources":["../../src/config/mcpmake-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"mcpmake-config.js","sourceRoot":"","sources":["../../src/config/mcpmake-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-writer.d.ts","sourceRoot":"","sources":["../../src/emitter/code-writer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"code-writer.d.ts","sourceRoot":"","sources":["../../src/emitter/code-writer.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,wBAAsB,cAAc,CAClC,KAAK,EAAE,QAAQ,EAAE,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5D,OAAO,CAAC,IAAI,CAAC,CAmEf"}
|
|
@@ -1,25 +1,92 @@
|
|
|
1
|
-
import { resolve } from 'node:path';
|
|
2
|
-
import {
|
|
1
|
+
import { resolve, dirname } from 'node:path';
|
|
2
|
+
import { writeFile, rename, readdir, unlink } from 'node:fs/promises';
|
|
3
|
+
import { ensureDir, writeFileSafe } from '../utils/fs.js';
|
|
3
4
|
import { logger } from '../utils/logger.js';
|
|
5
|
+
/** Suffix for staged temp files written during an atomic (force) regeneration. */
|
|
6
|
+
const TEMP_SUFFIX = '.mcpmake-tmp';
|
|
4
7
|
export async function writeCodeUnits(units, outputDir, options) {
|
|
5
8
|
const resolvedOutputDir = resolve(outputDir);
|
|
6
|
-
|
|
9
|
+
// Resolve + traversal-guard every unit up front so a malicious relative path
|
|
10
|
+
// can never escape the output dir, and so we fail before touching the disk.
|
|
11
|
+
const planned = units.map((unit) => {
|
|
7
12
|
const absPath = resolve(outputDir, unit.filePath);
|
|
8
13
|
if (!absPath.startsWith(resolvedOutputDir + '/') && absPath !== resolvedOutputDir) {
|
|
9
14
|
throw new Error(`Path traversal detected: ${unit.filePath} resolves outside output directory`);
|
|
10
15
|
}
|
|
11
|
-
|
|
16
|
+
return { absPath, unit };
|
|
17
|
+
});
|
|
18
|
+
if (options.dryRun) {
|
|
19
|
+
for (const { unit } of planned) {
|
|
12
20
|
logger.info(`[dry-run] Would write: ${unit.filePath}`);
|
|
13
|
-
continue;
|
|
14
21
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
// Non-force (fresh emit): preserve skip-existing semantics. Writing brand-new
|
|
25
|
+
// files cannot corrupt an existing good project, so no staging is needed.
|
|
26
|
+
if (!options.force) {
|
|
27
|
+
for (const { absPath, unit } of planned) {
|
|
28
|
+
const written = await writeFileSafe(absPath, unit.content, { force: false });
|
|
29
|
+
if (written) {
|
|
30
|
+
logger.info(` ${unit.filePath}`);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
logger.warn(` Skipped (exists): ${unit.filePath}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
// Force (in-place regeneration): write atomically (M11). A direct overwrite
|
|
39
|
+
// loop leaves a half-written, corrupt project if it fails partway through.
|
|
40
|
+
// Instead, stage every file to a sibling temp, then promote with rename — so a
|
|
41
|
+
// failure during staging touches no real file, and the promote burst (atomic
|
|
42
|
+
// per file) keeps the corruption window vanishingly small.
|
|
43
|
+
const staged = [];
|
|
44
|
+
try {
|
|
45
|
+
for (const { absPath, unit } of planned) {
|
|
46
|
+
await ensureDir(dirname(absPath));
|
|
47
|
+
const tempPath = absPath + TEMP_SUFFIX;
|
|
48
|
+
await writeFile(tempPath, unit.content, 'utf-8');
|
|
49
|
+
staged.push({ tempPath, absPath, filePath: unit.filePath });
|
|
20
50
|
}
|
|
21
|
-
|
|
22
|
-
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
// Roll back: remove any temp files already staged. No real file was touched.
|
|
54
|
+
await Promise.allSettled(staged.map((s) => unlink(s.tempPath)));
|
|
55
|
+
throw err;
|
|
56
|
+
}
|
|
57
|
+
for (const s of staged) {
|
|
58
|
+
await rename(s.tempPath, s.absPath);
|
|
59
|
+
logger.info(` ${s.filePath}`);
|
|
60
|
+
}
|
|
61
|
+
// M12: drop orphaned generated tool files no longer in the emitted set.
|
|
62
|
+
if (options.prune) {
|
|
63
|
+
await pruneOrphanTools(resolvedOutputDir, staged.map((s) => s.absPath));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Remove `src/tools/*.ts` files that the latest emit did not write. Removed
|
|
68
|
+
* forms/pages/operations otherwise leave stale tool files on disk: dropped from
|
|
69
|
+
* `src/tools/index.ts` but still compiled by `tsc` (M12). Scoped strictly to the
|
|
70
|
+
* generator-owned `src/tools/` directory and to `.ts` files, so it never touches
|
|
71
|
+
* user code elsewhere in the project.
|
|
72
|
+
*/
|
|
73
|
+
async function pruneOrphanTools(resolvedOutputDir, keptAbsPaths) {
|
|
74
|
+
const toolsDir = resolve(resolvedOutputDir, 'src/tools');
|
|
75
|
+
let entries;
|
|
76
|
+
try {
|
|
77
|
+
entries = await readdir(toolsDir, { withFileTypes: true });
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return; // no src/tools dir — nothing to prune
|
|
81
|
+
}
|
|
82
|
+
const kept = new Set(keptAbsPaths);
|
|
83
|
+
for (const entry of entries) {
|
|
84
|
+
if (!entry.isFile() || !entry.name.endsWith('.ts'))
|
|
85
|
+
continue;
|
|
86
|
+
const absPath = resolve(toolsDir, entry.name);
|
|
87
|
+
if (!kept.has(absPath)) {
|
|
88
|
+
await unlink(absPath);
|
|
89
|
+
logger.info(` Removed orphaned: src/tools/${entry.name}`);
|
|
23
90
|
}
|
|
24
91
|
}
|
|
25
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-writer.js","sourceRoot":"","sources":["../../src/emitter/code-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"code-writer.js","sourceRoot":"","sources":["../../src/emitter/code-writer.ts"],"names":[],"mappings":"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"}
|
package/dist/emitter/index.d.ts
CHANGED
|
@@ -4,6 +4,14 @@ export interface EmitOptions {
|
|
|
4
4
|
outputDir: string;
|
|
5
5
|
force: boolean;
|
|
6
6
|
dryRun: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Prune orphaned generated tool files (`src/tools/*.ts`) that are no longer in
|
|
9
|
+
* the emitted set — used by in-place regeneration (`rescan --write`) so removed
|
|
10
|
+
* forms/pages/operations don't leave stale, still-compiled files behind (M12).
|
|
11
|
+
* Off by default: a fresh emit has nothing to prune and must never delete
|
|
12
|
+
* pre-existing user files.
|
|
13
|
+
*/
|
|
14
|
+
prune?: boolean;
|
|
7
15
|
}
|
|
8
16
|
export declare function emitProject(manifest: ProjectManifest, options: EmitOptions): Promise<void>;
|
|
9
17
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/emitter/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAsB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/emitter/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAsB,MAAM,kBAAkB,CAAC;AAkBhF,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAsCD,wBAAsB,WAAW,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAkIhG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAyGf;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,mBAAmB,EAC7B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CA0Cf;AA8DD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CA0Df"}
|