@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
|
@@ -1,8 +1,24 @@
|
|
|
1
1
|
import { buildOperationInputSchema, jsonSchemaToOutputZodCode, } from '../parser/schema-converter.js';
|
|
2
2
|
import { toToolName, toToolTitle, toFileName, toFunctionName } from './naming.js';
|
|
3
|
-
import { escapeTemplateLiteral, escapeStringLiteral, sanitizeIdentifier, sanitizePathTemplate, } from '../utils/sanitize.js';
|
|
3
|
+
import { escapeTemplateLiteral, escapeStringLiteral, sanitizeIdentifier, sanitizePathTemplate, sanitizeMediaType, } from '../utils/sanitize.js';
|
|
4
|
+
/**
|
|
5
|
+
* Map a (sanitized) media type to the body serialization the executor applies.
|
|
6
|
+
* Anything outside the three supported families is rejected at generation time
|
|
7
|
+
* rather than emitting a tool that mislabels JSON bytes as a form/upload (D-H3).
|
|
8
|
+
*/
|
|
9
|
+
function bodyEncodingFor(contentType) {
|
|
10
|
+
const base = contentType.split(';', 1)[0].trim().toLowerCase();
|
|
11
|
+
if (base === 'application/x-www-form-urlencoded')
|
|
12
|
+
return 'form';
|
|
13
|
+
if (base === 'multipart/form-data')
|
|
14
|
+
return 'multipart';
|
|
15
|
+
if (base === 'application/json' || base.endsWith('+json') || base === '')
|
|
16
|
+
return 'json';
|
|
17
|
+
throw new Error(`Unsupported request body media type "${contentType}". Supported: application/json, ` +
|
|
18
|
+
`application/x-www-form-urlencoded, multipart/form-data.`);
|
|
19
|
+
}
|
|
4
20
|
export function buildToolDefinition(op) {
|
|
5
|
-
const inputSchemaCode = buildOperationInputSchema(op);
|
|
21
|
+
const { code: inputSchemaCode, mappings } = buildOperationInputSchema(op);
|
|
6
22
|
const descParts = [];
|
|
7
23
|
if (op.summary)
|
|
8
24
|
descParts.push(op.summary);
|
|
@@ -29,9 +45,26 @@ export function buildToolDefinition(op) {
|
|
|
29
45
|
: undefined;
|
|
30
46
|
// Annotations from HTTP method semantics
|
|
31
47
|
const annotations = buildAnnotations(op.method);
|
|
48
|
+
// Request body media type: the OpenAPI content-map key is attacker-influenced
|
|
49
|
+
// and is emitted into a single-quoted literal. Validate it as an RFC media type
|
|
50
|
+
// (replacing anything malformed with application/json) and escape it for the
|
|
51
|
+
// literal sink (D-C1). bodyEncodingFor rejects unsupported families (D-H3).
|
|
52
|
+
const rawContentType = sanitizeMediaType(op.requestBody?.contentType ?? 'application/json');
|
|
53
|
+
const bodyEncoding = op.requestBody ? bodyEncodingFor(rawContentType) : undefined;
|
|
54
|
+
// The request body is exposed under `body`, unless a parameter already claimed
|
|
55
|
+
// that input key, in which case the schema falls back to `requestBody`.
|
|
56
|
+
const inputKeys = new Set(mappings.map((m) => m.inputKey));
|
|
57
|
+
const bodyInputKey = op.requestBody
|
|
58
|
+
? inputKeys.has('body')
|
|
59
|
+
? 'requestBody'
|
|
60
|
+
: 'body'
|
|
61
|
+
: undefined;
|
|
32
62
|
return {
|
|
33
63
|
name: mcpName ? sanitizeIdentifier(mcpName) : toToolName(op.operationId),
|
|
34
|
-
|
|
64
|
+
// Escaped because it is emitted into a single-quoted string literal
|
|
65
|
+
// (`title: '<title>'`) in the tool-handler templates. x-mcp-name is
|
|
66
|
+
// untrusted spec input, and the operationId fallback is now slug-safe.
|
|
67
|
+
title: escapeStringLiteral(mcpName ? mcpName : toToolTitle(op.operationId)),
|
|
35
68
|
description: mcpDesc ? escapeTemplateLiteral(mcpDesc) : description,
|
|
36
69
|
inputSchemaCode,
|
|
37
70
|
outputSchemaCode,
|
|
@@ -41,11 +74,18 @@ export function buildToolDefinition(op) {
|
|
|
41
74
|
pathParams,
|
|
42
75
|
queryParams,
|
|
43
76
|
headerParams: op.parameters.filter((p) => p.in === 'header').map((p) => p.name),
|
|
77
|
+
paramMappings: mappings,
|
|
78
|
+
bodyInputKey,
|
|
44
79
|
hasRequestBody: !!op.requestBody,
|
|
45
|
-
|
|
80
|
+
// Escaped for the single-quoted `contentType: '...'` literal sink.
|
|
81
|
+
requestBodyContentType: escapeStringLiteral(rawContentType),
|
|
82
|
+
bodyEncoding,
|
|
83
|
+
// JSON.stringify'd so a path with newlines/quotes is inert in the test file.
|
|
84
|
+
operationMeta: JSON.stringify({ method: op.method, path: op.path }),
|
|
85
|
+
buildHeadersBody: generateBuildHeadersBody(mappings),
|
|
46
86
|
fileName: toFileName(op.operationId),
|
|
47
87
|
functionName: toFunctionName(op.operationId),
|
|
48
|
-
buildUrlBody: generateBuildUrlBody(op.path,
|
|
88
|
+
buildUrlBody: generateBuildUrlBody(op.path, mappings),
|
|
49
89
|
annotations,
|
|
50
90
|
isAsync: op.responses.some((r) => r.statusCode === '202'),
|
|
51
91
|
isDestructive: op.method === 'delete',
|
|
@@ -54,8 +94,36 @@ export function buildToolDefinition(op) {
|
|
|
54
94
|
jqFilter: op.mcpExtensions?.jqFilter
|
|
55
95
|
? escapeStringLiteral(op.mcpExtensions.jqFilter)
|
|
56
96
|
: undefined,
|
|
97
|
+
authRequirement: deriveAuthRequirement(op),
|
|
57
98
|
};
|
|
58
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Map an operation's OpenAPI `security` onto the generated handler's outbound
|
|
102
|
+
* auth requirement (D-H2):
|
|
103
|
+
* - explicit `security: []` → public (no auth applied);
|
|
104
|
+
* - one or more named schemes → apply only those scheme names (the OR/AND
|
|
105
|
+
* matrix is collapsed to the union of every alternative's scheme names);
|
|
106
|
+
* - nothing declared → `undefined` so the legacy global-auth behavior (apply
|
|
107
|
+
* every configured scheme) is preserved and existing specs are unaffected.
|
|
108
|
+
*/
|
|
109
|
+
function deriveAuthRequirement(op) {
|
|
110
|
+
if (op.securityOptional)
|
|
111
|
+
return { mode: 'public' };
|
|
112
|
+
if (op.security.length === 0)
|
|
113
|
+
return undefined;
|
|
114
|
+
// De-duplicate scheme names while preserving first-seen order.
|
|
115
|
+
const seen = new Set();
|
|
116
|
+
const schemeNames = [];
|
|
117
|
+
for (const req of op.security) {
|
|
118
|
+
if (req.schemeName && !seen.has(req.schemeName)) {
|
|
119
|
+
seen.add(req.schemeName);
|
|
120
|
+
schemeNames.push(req.schemeName);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (schemeNames.length === 0)
|
|
124
|
+
return undefined;
|
|
125
|
+
return { mode: 'schemes', schemeNames };
|
|
126
|
+
}
|
|
59
127
|
function buildAnnotations(method) {
|
|
60
128
|
switch (method) {
|
|
61
129
|
case 'get':
|
|
@@ -70,19 +138,49 @@ function buildAnnotations(method) {
|
|
|
70
138
|
return undefined;
|
|
71
139
|
}
|
|
72
140
|
}
|
|
73
|
-
|
|
141
|
+
/**
|
|
142
|
+
* Generate the body of `buildHeaders(params)`. Header parameters are set
|
|
143
|
+
* directly; cookie parameters are collected into a single `Cookie` header.
|
|
144
|
+
* Both read by inputKey and send under the original wire name (D-H2). Returns
|
|
145
|
+
* `return {};` when the operation has no header/cookie params.
|
|
146
|
+
*/
|
|
147
|
+
function generateBuildHeadersBody(mappings) {
|
|
148
|
+
const headerMappings = mappings.filter((p) => p.in === 'header');
|
|
149
|
+
const cookieMappings = mappings.filter((p) => p.in === 'cookie');
|
|
150
|
+
if (headerMappings.length === 0 && cookieMappings.length === 0) {
|
|
151
|
+
return ' return {};';
|
|
152
|
+
}
|
|
153
|
+
const lines = [];
|
|
154
|
+
lines.push(' const headers: Record<string, string> = {};');
|
|
155
|
+
for (const m of headerMappings) {
|
|
156
|
+
lines.push(` if (params[${JSON.stringify(m.inputKey)}] !== undefined) headers['${escapeStringLiteral(m.wireName)}'] = String(params[${JSON.stringify(m.inputKey)}]);`);
|
|
157
|
+
}
|
|
158
|
+
if (cookieMappings.length > 0) {
|
|
159
|
+
lines.push(' const cookieParts: string[] = [];');
|
|
160
|
+
for (const m of cookieMappings) {
|
|
161
|
+
lines.push(` if (params[${JSON.stringify(m.inputKey)}] !== undefined) cookieParts.push('${escapeStringLiteral(m.wireName)}=' + encodeURIComponent(String(params[${JSON.stringify(m.inputKey)}])));`);
|
|
162
|
+
}
|
|
163
|
+
lines.push(" if (cookieParts.length > 0) headers['Cookie'] = cookieParts.join('; ');");
|
|
164
|
+
}
|
|
165
|
+
lines.push(' return headers;');
|
|
166
|
+
return lines.join('\n');
|
|
167
|
+
}
|
|
168
|
+
function generateBuildUrlBody(pathTemplate, mappings) {
|
|
74
169
|
const safePath = sanitizePathTemplate(pathTemplate);
|
|
75
170
|
const lines = [];
|
|
76
171
|
lines.push(` let url = baseUrl + '${escapeStringLiteral(safePath)}';`);
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
172
|
+
// Path params: replace the `{wireName}` token in the URL with the value the
|
|
173
|
+
// agent supplied under inputKey (D-H1 — read by inputKey, send under wireName).
|
|
174
|
+
for (const m of mappings.filter((p) => p.in === 'path')) {
|
|
175
|
+
const safeWire = sanitizeIdentifier(m.wireName);
|
|
176
|
+
lines.push(` url = url.replace('${escapeStringLiteral(`{${safeWire}}`)}', encodeURIComponent(String(params[${JSON.stringify(m.inputKey)}])));`);
|
|
80
177
|
}
|
|
81
|
-
|
|
178
|
+
const queryMappings = mappings.filter((p) => p.in === 'query');
|
|
179
|
+
if (queryMappings.length > 0) {
|
|
82
180
|
lines.push(' const query = new URLSearchParams();');
|
|
83
|
-
for (const
|
|
84
|
-
|
|
85
|
-
lines.push(` if (params[
|
|
181
|
+
for (const m of queryMappings) {
|
|
182
|
+
// Read by inputKey, send under the original wire name (D-H1).
|
|
183
|
+
lines.push(` if (params[${JSON.stringify(m.inputKey)}] !== undefined) query.set('${escapeStringLiteral(m.wireName)}', String(params[${JSON.stringify(m.inputKey)}]));`);
|
|
86
184
|
}
|
|
87
185
|
lines.push(' const qs = query.toString();');
|
|
88
186
|
lines.push(' return qs ? `${url}?${qs}` : url;');
|
|
@@ -96,7 +194,8 @@ export function buildAllTools(operations) {
|
|
|
96
194
|
// Filter out operations marked with x-mcp-emit: skip
|
|
97
195
|
const filtered = operations.filter((op) => op.mcpExtensions?.emit !== 'skip');
|
|
98
196
|
const tools = filtered.map(buildToolDefinition);
|
|
99
|
-
//
|
|
197
|
+
// First pass: disambiguate name collisions by appending the HTTP method. This
|
|
198
|
+
// keeps the common case (distinct operationIds → distinct names) stable.
|
|
100
199
|
const nameCount = new Map();
|
|
101
200
|
for (const t of tools) {
|
|
102
201
|
nameCount.set(t.name, (nameCount.get(t.name) ?? 0) + 1);
|
|
@@ -108,6 +207,34 @@ export function buildAllTools(operations) {
|
|
|
108
207
|
tool.functionName = `${tool.functionName}${tool.method.charAt(0).toUpperCase() + tool.method.slice(1)}`;
|
|
109
208
|
}
|
|
110
209
|
}
|
|
210
|
+
// Second pass: two operations sharing the same operationId AND method still
|
|
211
|
+
// collide after the first pass; appending the method does not disambiguate
|
|
212
|
+
// them, so the later tool would silently overwrite the earlier one's name and
|
|
213
|
+
// output file (M14). Append an incrementing `_2`, `_3`, … suffix to each later
|
|
214
|
+
// collision so every tool name — and therefore its file name — is globally
|
|
215
|
+
// unique. Names that did not collide are left untouched.
|
|
216
|
+
const usedNames = new Set();
|
|
217
|
+
const usedFileNames = new Set();
|
|
218
|
+
for (const tool of tools) {
|
|
219
|
+
if (!usedNames.has(tool.name) && !usedFileNames.has(tool.fileName)) {
|
|
220
|
+
usedNames.add(tool.name);
|
|
221
|
+
usedFileNames.add(tool.fileName);
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
let n = 2;
|
|
225
|
+
let name = `${tool.name}_${n}`;
|
|
226
|
+
let fileName = `${tool.fileName}-${n}`;
|
|
227
|
+
while (usedNames.has(name) || usedFileNames.has(fileName)) {
|
|
228
|
+
n++;
|
|
229
|
+
name = `${tool.name}_${n}`;
|
|
230
|
+
fileName = `${tool.fileName}-${n}`;
|
|
231
|
+
}
|
|
232
|
+
tool.name = name;
|
|
233
|
+
tool.fileName = fileName;
|
|
234
|
+
tool.functionName = `${tool.functionName}${n}`;
|
|
235
|
+
usedNames.add(name);
|
|
236
|
+
usedFileNames.add(fileName);
|
|
237
|
+
}
|
|
111
238
|
// Enforce MCP spec name length limit (128 chars)
|
|
112
239
|
for (const tool of tools) {
|
|
113
240
|
if (tool.name.length > 128) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-builder.js","sourceRoot":"","sources":["../../src/transformer/tool-builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool-builder.js","sourceRoot":"","sources":["../../src/transformer/tool-builder.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -47,6 +47,14 @@ export interface OperationDescriptor {
|
|
|
47
47
|
requestBody?: RequestBodyDescriptor;
|
|
48
48
|
responses: ResponseDescriptor[];
|
|
49
49
|
security: SecurityRequirement[];
|
|
50
|
+
/**
|
|
51
|
+
* True when the operation explicitly declares `security: []` (an empty array),
|
|
52
|
+
* which per OpenAPI means the operation is PUBLIC — it overrides any global
|
|
53
|
+
* security and MUST NOT have auth applied (D-H2). Distinct from `security`
|
|
54
|
+
* simply being empty because nothing was declared anywhere (in which case the
|
|
55
|
+
* legacy global-auth behavior is preserved).
|
|
56
|
+
*/
|
|
57
|
+
securityOptional?: boolean;
|
|
50
58
|
deprecated: boolean;
|
|
51
59
|
mcpExtensions?: McpExtensions;
|
|
52
60
|
}
|
|
@@ -55,6 +63,21 @@ export interface ToolAnnotations {
|
|
|
55
63
|
destructiveHint?: boolean;
|
|
56
64
|
idempotentHint?: boolean;
|
|
57
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Maps a tool's MCP input key to the original wire parameter it drives. Keeping
|
|
68
|
+
* the wire name separate from the input key lets the schema expose any name
|
|
69
|
+
* (emitted as a JSON.stringify'd key) while the handler still sends the exact
|
|
70
|
+
* upstream parameter name and routes it to the right place (path/query/header/
|
|
71
|
+
* cookie). See D-H1 / D-H2.
|
|
72
|
+
*/
|
|
73
|
+
export interface ParamMapping {
|
|
74
|
+
/** The key the agent supplies in the tool input. */
|
|
75
|
+
inputKey: string;
|
|
76
|
+
/** The original API parameter name sent upstream. */
|
|
77
|
+
wireName: string;
|
|
78
|
+
/** Where the parameter is applied on the upstream request. */
|
|
79
|
+
in: 'path' | 'query' | 'header' | 'cookie';
|
|
80
|
+
}
|
|
58
81
|
export interface ToolDefinition {
|
|
59
82
|
name: string;
|
|
60
83
|
title: string;
|
|
@@ -67,8 +90,32 @@ export interface ToolDefinition {
|
|
|
67
90
|
pathParams: string[];
|
|
68
91
|
queryParams: string[];
|
|
69
92
|
headerParams: string[];
|
|
93
|
+
/**
|
|
94
|
+
* MCP-input-key → wire-name/location mappings for every parameter. Drives the
|
|
95
|
+
* generated handler's path/query/header/cookie assembly (D-H1/D-H2).
|
|
96
|
+
*/
|
|
97
|
+
paramMappings: ParamMapping[];
|
|
98
|
+
/** The input key under which the request body is exposed (`body`/`requestBody`). */
|
|
99
|
+
bodyInputKey?: string;
|
|
70
100
|
hasRequestBody: boolean;
|
|
71
101
|
requestBodyContentType: string;
|
|
102
|
+
/**
|
|
103
|
+
* Body serialization the executor must apply for {@link requestBodyContentType}:
|
|
104
|
+
* `json` → JSON.stringify, `form` → URLSearchParams, `multipart` → FormData.
|
|
105
|
+
* Unsupported media types are rejected at generation time (D-H3).
|
|
106
|
+
*/
|
|
107
|
+
bodyEncoding?: 'json' | 'form' | 'multipart';
|
|
108
|
+
/**
|
|
109
|
+
* Generated body of `buildHeaders(params)` — assembles header and cookie
|
|
110
|
+
* parameters from the tool input into an upstream header record. Empty record
|
|
111
|
+
* when the operation has no header/cookie params (D-H2).
|
|
112
|
+
*/
|
|
113
|
+
buildHeadersBody: string;
|
|
114
|
+
/**
|
|
115
|
+
* JSON.stringify'd source-operation metadata ({method, path}) for the generated
|
|
116
|
+
* test, so an untrusted path can never escape a comment/literal (D-C3).
|
|
117
|
+
*/
|
|
118
|
+
operationMeta: string;
|
|
72
119
|
fileName: string;
|
|
73
120
|
functionName: string;
|
|
74
121
|
buildUrlBody: string;
|
|
@@ -77,7 +124,25 @@ export interface ToolDefinition {
|
|
|
77
124
|
isDestructive?: boolean;
|
|
78
125
|
/** JQ filter to apply to API response before returning to agent */
|
|
79
126
|
jqFilter?: string;
|
|
127
|
+
/**
|
|
128
|
+
* Per-operation outbound-auth requirement, derived from the operation's
|
|
129
|
+
* OpenAPI `security` (D-H2). Controls which configured auth scheme(s) the
|
|
130
|
+
* generated handler applies to the upstream request:
|
|
131
|
+
* - `undefined` → apply all configured schemes (legacy global behavior).
|
|
132
|
+
* - `mode: 'public'` → apply NO auth (operation declared `security: []`).
|
|
133
|
+
* - `mode: 'schemes'` → apply ONLY the listed OpenAPI scheme names.
|
|
134
|
+
* The OR/AND matrix is collapsed to the union of every alternative's scheme
|
|
135
|
+
* names (any configured scheme that satisfies some alternative is applied);
|
|
136
|
+
* full alternative-by-alternative selection is deferred.
|
|
137
|
+
*/
|
|
138
|
+
authRequirement?: ToolAuthRequirement;
|
|
80
139
|
}
|
|
140
|
+
export type ToolAuthRequirement = {
|
|
141
|
+
mode: 'public';
|
|
142
|
+
} | {
|
|
143
|
+
mode: 'schemes';
|
|
144
|
+
schemeNames: string[];
|
|
145
|
+
};
|
|
81
146
|
export type AuthType = 'apiKey' | 'http-bearer' | 'http-basic' | 'oauth2';
|
|
82
147
|
export interface AuthScheme {
|
|
83
148
|
type: AuthType;
|
|
@@ -85,6 +150,20 @@ export interface AuthScheme {
|
|
|
85
150
|
headerName?: string;
|
|
86
151
|
in?: 'header' | 'query' | 'cookie';
|
|
87
152
|
description?: string;
|
|
153
|
+
/**
|
|
154
|
+
* The original OpenAPI security-scheme name (the key under
|
|
155
|
+
* `components.securitySchemes`). Lets per-operation security requirements
|
|
156
|
+
* (D-H2) select a specific scheme by name in the generated auth application.
|
|
157
|
+
* Optional for sources (HAR) that have no named schemes.
|
|
158
|
+
*/
|
|
159
|
+
schemeName?: string;
|
|
160
|
+
/**
|
|
161
|
+
* For `oauth2` schemes: the union of scopes declared across the scheme's
|
|
162
|
+
* OpenAPI flows. Baked into the generated config as the default scope set
|
|
163
|
+
* (overridable at runtime via `OAUTH2_SCOPES`). Empty/absent for non-OAuth
|
|
164
|
+
* schemes and specs that declare no scopes.
|
|
165
|
+
*/
|
|
166
|
+
scopes?: string[];
|
|
88
167
|
}
|
|
89
168
|
export interface EnvVarDescriptor {
|
|
90
169
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAE1F,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC3C,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,aAAa,CAAC;IACzC,uDAAuD;IACvD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sDAAsD;IACtD,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/site.d.ts
CHANGED
|
@@ -20,6 +20,14 @@ export interface SelectorSet {
|
|
|
20
20
|
humanLabel?: string;
|
|
21
21
|
}
|
|
22
22
|
export type FormFieldType = 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search' | 'select' | 'checkbox' | 'radio' | 'textarea' | 'hidden' | 'file' | 'date' | 'datetime-local' | 'color' | 'range' | 'other';
|
|
23
|
+
/** A single <option> from a <select>, preserving both the user-visible label
|
|
24
|
+
* and the wire value submitted to the server (they routinely differ). */
|
|
25
|
+
export interface SelectOption {
|
|
26
|
+
/** Visible option text shown to the user */
|
|
27
|
+
label: string;
|
|
28
|
+
/** Value attribute actually submitted / matched by Playwright's selectOption */
|
|
29
|
+
value: string;
|
|
30
|
+
}
|
|
23
31
|
export interface FormFieldDescriptor {
|
|
24
32
|
/** Form field name attribute */
|
|
25
33
|
name: string;
|
|
@@ -33,10 +41,20 @@ export interface FormFieldDescriptor {
|
|
|
33
41
|
placeholder?: string;
|
|
34
42
|
/** Whether the field is required */
|
|
35
43
|
required: boolean;
|
|
36
|
-
/** Options for <select>, radio groups, and datalists */
|
|
44
|
+
/** Options for <select>, radio groups, and datalists (visible labels). */
|
|
37
45
|
options?: string[];
|
|
46
|
+
/** Option label/value pairs for <select> fields (value drives Playwright). */
|
|
47
|
+
optionPairs?: SelectOption[];
|
|
38
48
|
/** Default or current value */
|
|
39
49
|
defaultValue?: string;
|
|
50
|
+
/**
|
|
51
|
+
* Stable, deduplicated MCP input key for this field. Derived from `name`
|
|
52
|
+
* but guaranteed to be a valid, unique JS identifier within the form so the
|
|
53
|
+
* generated schema property and the generated handler agree on one key. The
|
|
54
|
+
* handler still drives the DOM via `selector`, so the original `name` is not
|
|
55
|
+
* needed at fill time. Set by the site tool-generator.
|
|
56
|
+
*/
|
|
57
|
+
inputKey?: string;
|
|
40
58
|
}
|
|
41
59
|
export interface FormDescriptor {
|
|
42
60
|
/** Generated stable ID for this form */
|
package/dist/types/site.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../../src/types/site.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIlE,MAAM,MAAM,gBAAgB,GACxB,aAAa,GACb,IAAI,GACJ,YAAY,GACZ,MAAM,GACN,MAAM,GACN,UAAU,GACV,OAAO,CAAC;AAEZ,MAAM,WAAW,WAAW;IAC1B,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,6CAA6C;IAC7C,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,OAAO,GACP,UAAU,GACV,QAAQ,GACR,KAAK,GACL,KAAK,GACL,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,OAAO,GACP,UAAU,GACV,QAAQ,GACR,MAAM,GACN,MAAM,GACN,gBAAgB,GAChB,OAAO,GACP,OAAO,GACP,OAAO,CAAC;AAEZ,MAAM,WAAW,mBAAmB;IAClC,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB;IACjB,SAAS,EAAE,aAAa,CAAC;IACzB,kCAAkC;IAClC,QAAQ,EAAE,WAAW,CAAC;IACtB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,
|
|
1
|
+
{"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../../src/types/site.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/fail.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fail.d.ts","sourceRoot":"","sources":["../../src/utils/fail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAgCH,KAAK,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"fail.d.ts","sourceRoot":"","sources":["../../src/utils/fail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAgCH,KAAK,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;AAsE7C;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAqCD,iFAAiF;AACjF,MAAM,WAAW,YAAY;IAC3B,oFAAoF;IACpF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mDAAmD;IACnD,EAAE,CAAC,EAAE,OAAO,CAAC;CACd;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,YAAY,GAAG,WAAW,CAWnE;AAoED;;;GAGG;AACH,wBAAsB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAuB3E"}
|
package/dist/utils/fail.js
CHANGED
|
@@ -62,9 +62,27 @@ function redactHomePaths(input) {
|
|
|
62
62
|
out = out.replace(/\/(?:Users|home)\/[^/\s]+/g, '~');
|
|
63
63
|
return out;
|
|
64
64
|
}
|
|
65
|
-
/**
|
|
66
|
-
|
|
67
|
-
|
|
65
|
+
/**
|
|
66
|
+
* Strip common credential formats from a header/URL-bearing string, replacing
|
|
67
|
+
* each secret value with `[redacted]` while keeping the surrounding structure
|
|
68
|
+
* (scheme, header name, param name) so the report stays useful for debugging.
|
|
69
|
+
*
|
|
70
|
+
* Covers, case-insensitively: `Authorization` bearer/basic schemes, `Cookie` /
|
|
71
|
+
* `Set-Cookie` header values, `x-api-key` / `api-key` / `apikey` header values,
|
|
72
|
+
* and `token` / `api_key` / `access_token` / `key` / `sig` query-string params.
|
|
73
|
+
* Every value pattern is `\S+` / `[^\s...]+` (no nested quantifiers), so there is
|
|
74
|
+
* no catastrophic-backtracking risk.
|
|
75
|
+
*/
|
|
76
|
+
function redactSecrets(input) {
|
|
77
|
+
return (input
|
|
78
|
+
// `Bearer <token>` / `Basic <base64>` (bare or after `Authorization:`).
|
|
79
|
+
.replace(/\b(Bearer|Basic)\s+\S+/gi, '$1 [redacted]')
|
|
80
|
+
// `Cookie:` / `Set-Cookie:` — drop the whole value up to end of line.
|
|
81
|
+
.replace(/\b(Set-Cookie|Cookie)\s*:\s*[^\r\n]*/gi, '$1: [redacted]')
|
|
82
|
+
// `x-api-key` / `api-key` / `apikey` header values (`:`-delimited).
|
|
83
|
+
.replace(/\b((?:x-)?api[-_]?key)\s*:\s*[^\s,;'"]+/gi, '$1: [redacted]')
|
|
84
|
+
// Query-string secrets: `token=`, `api_key=`, `access_token=`, `key=`, `sig=`.
|
|
85
|
+
.replace(/\b(access_token|api_key|apikey|token|sig|key)=[^\s&'"]+/gi, '$1=[redacted]'));
|
|
68
86
|
}
|
|
69
87
|
/** Strip mcpmake-style tokens (`mf_<hex>`). */
|
|
70
88
|
function redactMfTokens(input) {
|
|
@@ -81,7 +99,7 @@ function redactQueryStrings(input) {
|
|
|
81
99
|
* directly without invoking `fail()` (which calls `process.exit`).
|
|
82
100
|
*/
|
|
83
101
|
export function redactText(input) {
|
|
84
|
-
return redactQueryStrings(redactMfTokens(
|
|
102
|
+
return redactQueryStrings(redactMfTokens(redactSecrets(redactHomePaths(input))));
|
|
85
103
|
}
|
|
86
104
|
/** @deprecated internal alias — prefer the exported `redactText`. */
|
|
87
105
|
const redact = redactText;
|
package/dist/utils/fail.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fail.js","sourceRoot":"","sources":["../../src/utils/fail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEvD;;;;;;GAMG;AACH,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9E,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAA0B,CAAC;QAC/E,OAAO,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;AAErC,mFAAmF;AACnF,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAIhC,+EAA+E;AAC/E,MAAM,IAAI,GAAG;IACX,OAAO,EAAE,GAAG;IACZ,YAAY,EAAE,IAAI;IAClB,KAAK,EAAE,MAAM;IACb,UAAU,EAAE,EAAE;IACd,QAAQ,EAAE,EAAE;IACZ,WAAW,EAAE,EAAE;CACP,CAAC;AAWX,8EAA8E;AAE9E,oFAAoF;AACpF,SAAS,eAAe,CAAC,KAAa;IACpC,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,IAAI,IAAI,EAAE,CAAC;QACT,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IACD,2EAA2E;IAC3E,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;IACrD,OAAO,GAAG,CAAC;AACb,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"fail.js","sourceRoot":"","sources":["../../src/utils/fail.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Robust extraction of JSON from raw LLM output.
|
|
3
|
+
*
|
|
4
|
+
* Models frequently wrap JSON in ```json fences or surround it with prose
|
|
5
|
+
* ("Here is the spec:" / "Hope this helps!"). These helpers locate the first
|
|
6
|
+
* balanced JSON value and return its exact substring, ignoring delimiters that
|
|
7
|
+
* appear inside quoted strings. The scan is single-pass and linear-time — no
|
|
8
|
+
* regex over the body, so there is no catastrophic-backtracking risk.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Return the substring spanning the first balanced top-level `{...}` object in
|
|
12
|
+
* `text`, or null if none. Robust to markdown fences and leading/trailing prose.
|
|
13
|
+
*/
|
|
14
|
+
export declare function extractJsonObject(text: string): string | null;
|
|
15
|
+
/**
|
|
16
|
+
* Return the substring spanning the first balanced top-level JSON value in
|
|
17
|
+
* `text` — an object (`{...}`) or an array (`[...]`), whichever opens first —
|
|
18
|
+
* or null if none. Robust to markdown fences and leading/trailing prose.
|
|
19
|
+
*/
|
|
20
|
+
export declare function extractJsonValue(text: string): string | null;
|
|
21
|
+
//# sourceMappingURL=json-extract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-extract.d.ts","sourceRoot":"","sources":["../../src/utils/json-extract.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAkCH;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE7D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS5D"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Robust extraction of JSON from raw LLM output.
|
|
3
|
+
*
|
|
4
|
+
* Models frequently wrap JSON in ```json fences or surround it with prose
|
|
5
|
+
* ("Here is the spec:" / "Hope this helps!"). These helpers locate the first
|
|
6
|
+
* balanced JSON value and return its exact substring, ignoring delimiters that
|
|
7
|
+
* appear inside quoted strings. The scan is single-pass and linear-time — no
|
|
8
|
+
* regex over the body, so there is no catastrophic-backtracking risk.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Return the substring spanning the first balanced top-level value opened by
|
|
12
|
+
* `open` (and closed by the matching `close`) in `text`, or null if none.
|
|
13
|
+
* String-aware: braces/brackets inside quoted strings are ignored.
|
|
14
|
+
*/
|
|
15
|
+
function extractBalanced(text, open, close) {
|
|
16
|
+
const start = text.indexOf(open);
|
|
17
|
+
if (start === -1)
|
|
18
|
+
return null;
|
|
19
|
+
let depth = 0;
|
|
20
|
+
let inString = false;
|
|
21
|
+
let escaped = false;
|
|
22
|
+
for (let i = start; i < text.length; i++) {
|
|
23
|
+
const ch = text[i];
|
|
24
|
+
if (inString) {
|
|
25
|
+
if (escaped)
|
|
26
|
+
escaped = false;
|
|
27
|
+
else if (ch === '\\')
|
|
28
|
+
escaped = true;
|
|
29
|
+
else if (ch === '"')
|
|
30
|
+
inString = false;
|
|
31
|
+
}
|
|
32
|
+
else if (ch === '"') {
|
|
33
|
+
inString = true;
|
|
34
|
+
}
|
|
35
|
+
else if (ch === open) {
|
|
36
|
+
depth++;
|
|
37
|
+
}
|
|
38
|
+
else if (ch === close) {
|
|
39
|
+
depth--;
|
|
40
|
+
if (depth === 0)
|
|
41
|
+
return text.slice(start, i + 1);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Return the substring spanning the first balanced top-level `{...}` object in
|
|
48
|
+
* `text`, or null if none. Robust to markdown fences and leading/trailing prose.
|
|
49
|
+
*/
|
|
50
|
+
export function extractJsonObject(text) {
|
|
51
|
+
return extractBalanced(text, '{', '}');
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Return the substring spanning the first balanced top-level JSON value in
|
|
55
|
+
* `text` — an object (`{...}`) or an array (`[...]`), whichever opens first —
|
|
56
|
+
* or null if none. Robust to markdown fences and leading/trailing prose.
|
|
57
|
+
*/
|
|
58
|
+
export function extractJsonValue(text) {
|
|
59
|
+
const objStart = text.indexOf('{');
|
|
60
|
+
const arrStart = text.indexOf('[');
|
|
61
|
+
if (objStart === -1 && arrStart === -1)
|
|
62
|
+
return null;
|
|
63
|
+
// Whichever delimiter appears first wins; -1 means "not present".
|
|
64
|
+
const objFirst = arrStart === -1 || (objStart !== -1 && objStart < arrStart);
|
|
65
|
+
return objFirst ? extractBalanced(text, '{', '}') : extractBalanced(text, '[', ']');
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=json-extract.js.map
|