@mcpmake/core 0.3.2 → 0.3.4

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.
Files changed (98) hide show
  1. package/dist/analyzer/goal-crawler.d.ts.map +1 -1
  2. package/dist/analyzer/goal-crawler.js +4 -11
  3. package/dist/analyzer/goal-crawler.js.map +1 -1
  4. package/dist/analyzer/same-origin.d.ts +21 -0
  5. package/dist/analyzer/same-origin.d.ts.map +1 -0
  6. package/dist/analyzer/same-origin.js +32 -0
  7. package/dist/analyzer/same-origin.js.map +1 -0
  8. package/dist/analyzer/semantic-analyzer.d.ts.map +1 -1
  9. package/dist/analyzer/semantic-analyzer.js +3 -0
  10. package/dist/analyzer/semantic-analyzer.js.map +1 -1
  11. package/dist/analyzer/site-crawler.d.ts.map +1 -1
  12. package/dist/analyzer/site-crawler.js +3 -10
  13. package/dist/analyzer/site-crawler.js.map +1 -1
  14. package/dist/emitter/index.d.ts.map +1 -1
  15. package/dist/emitter/index.js +21 -1
  16. package/dist/emitter/index.js.map +1 -1
  17. package/dist/emitter/project-scaffolder.d.ts +5 -0
  18. package/dist/emitter/project-scaffolder.d.ts.map +1 -1
  19. package/dist/emitter/project-scaffolder.js +1 -1
  20. package/dist/emitter/project-scaffolder.js.map +1 -1
  21. package/dist/emitter/python-template-loader.js +1 -1
  22. package/dist/emitter/python-template-loader.js.map +1 -1
  23. package/dist/emitter/python-templates/server.py.hbs +40 -25
  24. package/dist/emitter/site-templates/browser-manager.ts.hbs +5 -2
  25. package/dist/emitter/site-templates/config.ts.hbs +9 -4
  26. package/dist/emitter/site-templates/server-main-http.ts.hbs +13 -4
  27. package/dist/emitter/site-templates/server-main.ts.hbs +5 -2
  28. package/dist/emitter/templates/config.ts.hbs +29 -2
  29. package/dist/emitter/templates/discovery.ts.hbs +26 -12
  30. package/dist/emitter/templates/http-executor.ts.hbs +4 -3
  31. package/dist/emitter/templates/oauth.ts.hbs +1 -2
  32. package/dist/emitter/templates/readme.md.hbs +3 -2
  33. package/dist/emitter/templates/resources.ts.hbs +3 -2
  34. package/dist/emitter/templates/server-main-http.ts.hbs +140 -130
  35. package/dist/emitter/templates/task-handlers.ts.hbs +2 -1
  36. package/dist/emitter/templates/task-manager.ts.hbs +5 -3
  37. package/dist/emitter/templates/task-sse.ts.hbs +9 -1
  38. package/dist/emitter/templates/tool-handler.ts.hbs +17 -4
  39. package/dist/emitter/worker-templates/config.ts.hbs +25 -2
  40. package/dist/emitter/worker-templates/worker.ts.hbs +6 -2
  41. package/dist/parser/har-normalizer.js +1 -1
  42. package/dist/parser/har-normalizer.js.map +1 -1
  43. package/dist/parser/openapi-loader.d.ts +19 -0
  44. package/dist/parser/openapi-loader.d.ts.map +1 -1
  45. package/dist/parser/openapi-loader.js +78 -10
  46. package/dist/parser/openapi-loader.js.map +1 -1
  47. package/dist/parser/operation-extractor.js +4 -4
  48. package/dist/parser/operation-extractor.js.map +1 -1
  49. package/dist/parser/overlay-loader.js +50 -11
  50. package/dist/parser/overlay-loader.js.map +1 -1
  51. package/dist/parser/postman-loader.d.ts.map +1 -1
  52. package/dist/parser/postman-loader.js +41 -5
  53. package/dist/parser/postman-loader.js.map +1 -1
  54. package/dist/parser/schema-converter.d.ts +7 -0
  55. package/dist/parser/schema-converter.d.ts.map +1 -1
  56. package/dist/parser/schema-converter.js +11 -1
  57. package/dist/parser/schema-converter.js.map +1 -1
  58. package/dist/rescan/diff-engine.js +17 -10
  59. package/dist/rescan/diff-engine.js.map +1 -1
  60. package/dist/rescan/rescan-runner.js +4 -4
  61. package/dist/rescan/rescan-runner.js.map +1 -1
  62. package/dist/rescan/rescan-scheduler.d.ts +1 -0
  63. package/dist/rescan/rescan-scheduler.d.ts.map +1 -1
  64. package/dist/rescan/rescan-scheduler.js +30 -17
  65. package/dist/rescan/rescan-scheduler.js.map +1 -1
  66. package/dist/site-transformer/selector-healer.d.ts.map +1 -1
  67. package/dist/site-transformer/selector-healer.js +9 -0
  68. package/dist/site-transformer/selector-healer.js.map +1 -1
  69. package/dist/site-transformer/tool-generator.js +4 -7
  70. package/dist/site-transformer/tool-generator.js.map +1 -1
  71. package/dist/transformer/auth-detector.d.ts.map +1 -1
  72. package/dist/transformer/auth-detector.js +49 -1
  73. package/dist/transformer/auth-detector.js.map +1 -1
  74. package/dist/transformer/catalog-builder.d.ts +18 -2
  75. package/dist/transformer/catalog-builder.d.ts.map +1 -1
  76. package/dist/transformer/catalog-builder.js +31 -12
  77. package/dist/transformer/catalog-builder.js.map +1 -1
  78. package/dist/transformer/client-compat.d.ts.map +1 -1
  79. package/dist/transformer/client-compat.js +17 -6
  80. package/dist/transformer/client-compat.js.map +1 -1
  81. package/dist/transformer/har-dedup.js +2 -2
  82. package/dist/transformer/har-dedup.js.map +1 -1
  83. package/dist/transformer/har-to-operations.d.ts.map +1 -1
  84. package/dist/transformer/har-to-operations.js +10 -3
  85. package/dist/transformer/har-to-operations.js.map +1 -1
  86. package/dist/transformer/llm-namer.d.ts.map +1 -1
  87. package/dist/transformer/llm-namer.js +3 -0
  88. package/dist/transformer/llm-namer.js.map +1 -1
  89. package/dist/transformer/resource-builder.d.ts.map +1 -1
  90. package/dist/transformer/resource-builder.js +112 -18
  91. package/dist/transformer/resource-builder.js.map +1 -1
  92. package/dist/transformer/stainless-translator.d.ts.map +1 -1
  93. package/dist/transformer/stainless-translator.js +5 -2
  94. package/dist/transformer/stainless-translator.js.map +1 -1
  95. package/dist/transformer/tool-builder.d.ts.map +1 -1
  96. package/dist/transformer/tool-builder.js +64 -16
  97. package/dist/transformer/tool-builder.js.map +1 -1
  98. package/package.json +1 -1
@@ -118,6 +118,54 @@ export function detectAuthSchemes(securitySchemes, options) {
118
118
  seen.add(v.name);
119
119
  return true;
120
120
  });
121
- return { authSchemes, envVars: uniqueEnvVars, oauthFlows };
121
+ // Mark only the FIRST scheme of each type as the one that emits the shared
122
+ // interface fields in the config templates. Subsequent same-type schemes
123
+ // still contribute their per-scheme runtime assignments (legal TS duplicate
124
+ // object-literal keys — last-wins) but omit the interface property
125
+ // declarations that would produce TS2300 "Duplicate identifier".
126
+ //
127
+ // apiKey: also deduplicated per-location for the `apiKeyQueryName` field.
128
+ // bearer/basic/oauth2: annotated with emitBearer/emitBasic/emitOAuth2 so the
129
+ // node + worker templates suppress the duplicate interface fields (and, for
130
+ // oauth2, the duplicate `resolveOAuthScopes` function declaration → TS2393).
131
+ let firstApiKeySeen = false;
132
+ let firstQueryApiKeySeen = false;
133
+ let firstBearerSeen = false;
134
+ let firstBasicSeen = false;
135
+ let firstOAuth2Seen = false;
136
+ const annotatedSchemes = authSchemes.map((s) => {
137
+ if (s.type === 'apiKey') {
138
+ const emitApiKeyValue = !firstApiKeySeen;
139
+ firstApiKeySeen = true;
140
+ const emitApiKeyQueryName = s.in === 'query' ? !firstQueryApiKeySeen : undefined;
141
+ if (s.in === 'query')
142
+ firstQueryApiKeySeen = true;
143
+ // The extra annotation properties are not part of the AuthScheme type but
144
+ // ARE present at runtime for Handlebars template consumption. The cast is
145
+ // safe: the receiver (template engine) reads JS objects, not TS types.
146
+ return {
147
+ ...s,
148
+ emitApiKeyValue,
149
+ ...(emitApiKeyQueryName !== undefined && { emitApiKeyQueryName }),
150
+ };
151
+ }
152
+ if (s.type === 'http-bearer') {
153
+ const emitBearer = !firstBearerSeen;
154
+ firstBearerSeen = true;
155
+ return { ...s, emitBearer };
156
+ }
157
+ if (s.type === 'http-basic') {
158
+ const emitBasic = !firstBasicSeen;
159
+ firstBasicSeen = true;
160
+ return { ...s, emitBasic };
161
+ }
162
+ if (s.type === 'oauth2') {
163
+ const emitOAuth2 = !firstOAuth2Seen;
164
+ firstOAuth2Seen = true;
165
+ return { ...s, emitOAuth2 };
166
+ }
167
+ return s;
168
+ });
169
+ return { authSchemes: annotatedSchemes, envVars: uniqueEnvVars, oauthFlows };
122
170
  }
123
171
  //# sourceMappingURL=auth-detector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth-detector.js","sourceRoot":"","sources":["../../src/transformer/auth-detector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth-detector.js","sourceRoot":"","sources":["../../src/transformer/auth-detector.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,15 @@
1
1
  import type { ToolDefinition } from '../types/index.js';
2
+ /**
3
+ * Maps the MCP input key (what the agent supplies) to the wire parameter name
4
+ * (what the upstream API expects). Stored on each CatalogEntry path/query param
5
+ * so execute_tool reads `args[inputKey]` but sends under `wireName` (R14-A).
6
+ */
7
+ export interface CatalogParamMapping {
8
+ /** The key the agent supplies in the tool input. */
9
+ inputKey: string;
10
+ /** The original API parameter name sent upstream. */
11
+ wireName: string;
12
+ }
2
13
  export interface CatalogEntry {
3
14
  name: string;
4
15
  title: string;
@@ -6,10 +17,15 @@ export interface CatalogEntry {
6
17
  method: string;
7
18
  path: string;
8
19
  inputSchema: Record<string, unknown>;
9
- pathParams: string[];
10
- queryParams: string[];
20
+ /** Path parameters, each carrying both the MCP inputKey and the upstream wireName. */
21
+ pathParams: CatalogParamMapping[];
22
+ /** Query parameters, each carrying both the MCP inputKey and the upstream wireName. */
23
+ queryParams: CatalogParamMapping[];
11
24
  hasRequestBody: boolean;
12
25
  requestBodyContentType: string;
26
+ /** The MCP input key under which the request body is passed (e.g. `body`,
27
+ * `requestBody`, `requestBody_2`). Only set when `hasRequestBody` is true. */
28
+ bodyInputKey?: string;
13
29
  }
14
30
  /**
15
31
  * Build a tool catalog JSON from tool definitions.
@@ -1 +1 @@
1
- {"version":3,"file":"catalog-builder.d.ts","sourceRoot":"","sources":["../../src/transformer/catalog-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,YAAY,EAAE,CAapE"}
1
+ {"version":3,"file":"catalog-builder.d.ts","sourceRoot":"","sources":["../../src/transformer/catalog-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,sFAAsF;IACtF,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,uFAAuF;IACvF,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC,cAAc,EAAE,OAAO,CAAC;IACxB,sBAAsB,EAAE,MAAM,CAAC;IAC/B;mFAC+E;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,YAAY,EAAE,CAkCpE"}
@@ -3,18 +3,37 @@
3
3
  * Used by dynamic discovery mode to avoid registering all tools upfront.
4
4
  */
5
5
  export function buildCatalog(tools) {
6
- return tools.map((tool) => ({
7
- name: tool.name,
8
- title: tool.title,
9
- description: tool.description,
10
- method: tool.method,
11
- path: tool.pathTemplate,
12
- inputSchema: parseInputSchema(tool.inputSchemaCode),
13
- pathParams: tool.pathParams,
14
- queryParams: tool.queryParams,
15
- hasRequestBody: tool.hasRequestBody,
16
- requestBodyContentType: tool.requestBodyContentType,
17
- }));
6
+ return tools.map((tool) => {
7
+ // Derive path/query param mappings from paramMappings (which carries the
8
+ // correct inputKey↔wireName pairing after collision disambiguation). Fall
9
+ // back to the legacy string arrays for tools built without paramMappings so
10
+ // that older caller code is not broken (the common case has inputKey===wireName).
11
+ const pathParams = tool.paramMappings
12
+ ? tool.paramMappings
13
+ .filter((m) => m.in === 'path')
14
+ .map((m) => ({ inputKey: m.inputKey, wireName: m.wireName }))
15
+ : tool.pathParams.map((name) => ({ inputKey: name, wireName: name }));
16
+ const queryParams = tool.paramMappings
17
+ ? tool.paramMappings
18
+ .filter((m) => m.in === 'query')
19
+ .map((m) => ({ inputKey: m.inputKey, wireName: m.wireName }))
20
+ : tool.queryParams.map((name) => ({ inputKey: name, wireName: name }));
21
+ return {
22
+ name: tool.name,
23
+ title: tool.title,
24
+ description: tool.description,
25
+ method: tool.method,
26
+ path: tool.pathTemplate,
27
+ inputSchema: parseInputSchema(tool.inputSchemaCode),
28
+ pathParams,
29
+ queryParams,
30
+ hasRequestBody: tool.hasRequestBody,
31
+ requestBodyContentType: tool.requestBodyContentType,
32
+ ...(tool.hasRequestBody && tool.bodyInputKey !== undefined
33
+ ? { bodyInputKey: tool.bodyInputKey }
34
+ : {}),
35
+ };
36
+ });
18
37
  }
19
38
  /**
20
39
  * Parse the Zod code string into a JSON Schema-like object for the catalog.
@@ -1 +1 @@
1
- {"version":3,"file":"catalog-builder.js","sourceRoot":"","sources":["../../src/transformer/catalog-builder.ts"],"names":[],"mappings":"AAeA;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAuB;IAClD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,IAAI,EAAE,IAAI,CAAC,YAAY;QACvB,WAAW,EAAE,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC;QACnD,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;KACpD,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,OAAe;IACvC,kDAAkD;IAClD,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,MAAM,YAAY,GAAG,oBAAoB,CAAC;IAC1C,IAAI,KAAK,CAAC;IAEV,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAC5C,CAAC;IAED,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IAChD,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AACxC,CAAC;AAED,SAAS,UAAU,CAAC,OAAe;IACjC,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,QAAQ,CAAC;QACd,KAAK,KAAK;YACR,OAAO,QAAQ,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,OAAO;YACV,OAAO,OAAO,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB;YACE,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"catalog-builder.js","sourceRoot":"","sources":["../../src/transformer/catalog-builder.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"client-compat.d.ts","sourceRoot":"","sources":["../../src/transformer/client-compat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAaxD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,UAAU,GAAG,cAAc,EAAE,CA2C/F"}
1
+ {"version":3,"file":"client-compat.d.ts","sourceRoot":"","sources":["../../src/transformer/client-compat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAaxD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,UAAU,GAAG,cAAc,EAAE,CAuD/F"}
@@ -19,18 +19,29 @@ export function applyClientCompat(tools, client) {
19
19
  renamed.set(original, tool.name);
20
20
  }
21
21
  }
22
- // Deduplicate after truncation
22
+ // Deduplicate after truncation — guarantee uniqueness even when two tools
23
+ // truncate to the same name AND share the same HTTP method.
23
24
  const nameCount = new Map();
24
25
  for (const t of result) {
25
26
  nameCount.set(t.name, (nameCount.get(t.name) ?? 0) + 1);
26
27
  }
28
+ const claimedNames = new Set(result.filter((t) => (nameCount.get(t.name) ?? 0) === 1).map((t) => t.name));
27
29
  for (const tool of result) {
28
- if ((nameCount.get(tool.name) ?? 0) > 1) {
29
- // Append a hash suffix to make unique, staying within limit
30
- const suffix = `_${tool.method}`;
31
- const maxBase = limits.maxToolNameLength - suffix.length;
32
- tool.name = tool.name.slice(0, maxBase) + suffix;
30
+ if ((nameCount.get(tool.name) ?? 0) <= 1)
31
+ continue;
32
+ // Build a candidate: truncated base + method suffix, then increment counter
33
+ // until unique, all within the length limit.
34
+ const methodSuffix = `_${tool.method}`;
35
+ const maxBase = limits.maxToolNameLength - methodSuffix.length;
36
+ const base = tool.name.slice(0, maxBase) + methodSuffix;
37
+ let candidate = base;
38
+ for (let n = 2; claimedNames.has(candidate); n++) {
39
+ const counterSuffix = `_${n}`;
40
+ const cappedBase = base.slice(0, limits.maxToolNameLength - counterSuffix.length);
41
+ candidate = cappedBase + counterSuffix;
33
42
  }
43
+ claimedNames.add(candidate);
44
+ tool.name = candidate;
34
45
  }
35
46
  if (renamed.size > 0) {
36
47
  logger.warn(`[${client}] Truncated ${renamed.size} tool name(s) to ${limits.maxToolNameLength} chars`);
@@ -1 +1 @@
1
- {"version":3,"file":"client-compat.js","sourceRoot":"","sources":["../../src/transformer/client-compat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAS5C,MAAM,aAAa,GAAqC;IACtD,MAAM,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC/C,MAAM,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE;IAClD,MAAM,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE;CAClD,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAuB,EAAE,MAAkB;IAC3E,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAE1C,sCAAsC;IACtC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;YAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,4DAA4D;YAC5D,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;YACzD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;QACnD,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CACT,IAAI,MAAM,eAAe,OAAO,CAAC,IAAI,oBAAoB,MAAM,CAAC,iBAAiB,QAAQ,CAC1F,CAAC;IACJ,CAAC;IAED,yBAAyB;IACzB,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CACT,IAAI,MAAM,iBAAiB,MAAM,CAAC,MAAM,oBAAoB,MAAM,CAAC,QAAQ,oBAAoB,MAAM,CAAC,QAAQ,GAAG,CAClH,CAAC;QACF,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"client-compat.js","sourceRoot":"","sources":["../../src/transformer/client-compat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAS5C,MAAM,aAAa,GAAqC;IACtD,MAAM,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC/C,MAAM,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE;IAClD,MAAM,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE;CAClD,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAuB,EAAE,MAAkB;IAC3E,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAE1C,sCAAsC;IACtC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;YAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,4DAA4D;IAC5D,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,YAAY,GAAG,IAAI,GAAG,CAC1B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAC5E,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;YAAE,SAAS;QACnD,4EAA4E;QAC5E,6CAA6C;QAC7C,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,CAAC,iBAAiB,GAAG,YAAY,CAAC,MAAM,CAAC;QAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,YAAY,CAAC;QACxD,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;YAClF,SAAS,GAAG,UAAU,GAAG,aAAa,CAAC;QACzC,CAAC;QACD,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CACT,IAAI,MAAM,eAAe,OAAO,CAAC,IAAI,oBAAoB,MAAM,CAAC,iBAAiB,QAAQ,CAC1F,CAAC;IACJ,CAAC;IAED,yBAAyB;IACzB,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CACT,IAAI,MAAM,iBAAiB,MAAM,CAAC,MAAM,oBAAoB,MAAM,CAAC,QAAQ,oBAAoB,MAAM,CAAC,QAAQ,GAAG,CAClH,CAAC;QACF,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -23,7 +23,7 @@ export function deduplicateEntries(entries) {
23
23
  continue;
24
24
  }
25
25
  // Skip excessive pagination: keep at most 3 examples per endpoint
26
- if (isPaginationVariant(url, entries, entry) && seen.count >= 3) {
26
+ if (isPaginationVariant(url) && seen.count >= 3) {
27
27
  seen.lastTime = timestamp;
28
28
  seen.count++;
29
29
  continue;
@@ -69,7 +69,7 @@ function stripPaginationParams(url) {
69
69
  return url;
70
70
  }
71
71
  }
72
- function isPaginationVariant(url, allEntries, current) {
72
+ function isPaginationVariant(url) {
73
73
  try {
74
74
  const parsed = new URL(url);
75
75
  const paramKeys = [...parsed.searchParams.keys()].map((k) => k.toLowerCase());
@@ -1 +1 @@
1
- {"version":3,"file":"har-dedup.js","sourceRoot":"","sources":["../../src/transformer/har-dedup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"har-dedup.js","sourceRoot":"","sources":["../../src/transformer/har-dedup.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"har-to-operations.d.ts","sourceRoot":"","sources":["../../src/transformer/har-to-operations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EAMpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA8CvD,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,YAAY,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,mBAAmB,CAkGlF"}
1
+ {"version":3,"file":"har-to-operations.d.ts","sourceRoot":"","sources":["../../src/transformer/har-to-operations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EAMpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA8CvD,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,YAAY,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,mBAAmB,CAyGlF"}
@@ -93,9 +93,16 @@ export function clustersToOperations(clusters) {
93
93
  if (bodyEntries.length > 0) {
94
94
  const mergedSchema = mergeRequestBodySchemas(bodyEntries);
95
95
  if (mergedSchema) {
96
+ // mergeRequestBodySchemas only processes JSON bodies (mimeType includes
97
+ // "json"), so the merged schema is always JSON-derived. Pick the content
98
+ // type from the first JSON body so the label matches the schema — using
99
+ // bodyEntries[0].mimeType would mislabel the schema as form-encoded if
100
+ // a non-JSON body happens to appear first in the cluster (R10-B).
101
+ const jsonEntry = bodyEntries.find((b) => b.mimeType.includes('json'));
102
+ const contentType = (jsonEntry ?? bodyEntries[0]).mimeType.split(';')[0].trim();
96
103
  requestBody = {
97
104
  required: true,
98
- contentType: bodyEntries[0].mimeType.split(';')[0].trim(),
105
+ contentType,
99
106
  schema: mergedSchema,
100
107
  };
101
108
  }
@@ -131,7 +138,7 @@ function pickCanonicalEntry(entries) {
131
138
  }
132
139
  function detectAuth(entry) {
133
140
  const result = [];
134
- for (const header of entry.request.headers) {
141
+ for (const header of entry.request.headers ?? []) {
135
142
  const name = header.name.toLowerCase();
136
143
  if (name === 'authorization') {
137
144
  for (const { pattern, schemeName } of AUTH_HEADER_PATTERNS) {
@@ -171,7 +178,7 @@ function detectAuth(entry) {
171
178
  // Detect auth tokens passed in the query string. The literal value is never
172
179
  // copied into the result — only the (de-duplicated) param name is reported.
173
180
  const seenQueryAuth = new Set();
174
- for (const qs of entry.request.queryString) {
181
+ for (const qs of entry.request.queryString ?? []) {
175
182
  if (isQueryAuthKey(qs.name) && !seenQueryAuth.has(qs.name.toLowerCase())) {
176
183
  seenQueryAuth.add(qs.name.toLowerCase());
177
184
  result.push({
@@ -1 +1 @@
1
- {"version":3,"file":"har-to-operations.js","sourceRoot":"","sources":["../../src/transformer/har-to-operations.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAI7D,MAAM,oBAAoB,GAAmD;IAC3E,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE;IAChD,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE;IAC9C,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE;CAC/C,CAAC;AAEF,MAAM,mBAAmB,GAAG;IAC1B,WAAW;IACX,SAAS;IACT,qBAAqB;IACrB,cAAc;IACd,gBAAgB;IAChB,cAAc;IACd,iBAAiB;CAClB,CAAC;AAEF,MAAM,uBAAuB,GAAG;IAC9B,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,SAAS;IACT,QAAQ;IACR,OAAO;IACP,iBAAiB;CAClB,CAAC;AAEF,yEAAyE;AACzE,+DAA+D;AAC/D,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,SAAS;IACT,QAAQ;IACR,cAAc;IACd,OAAO;IACP,MAAM;IACN,KAAK;IACL,KAAK;IACL,WAAW;IACX,UAAU;IACV,QAAQ;CACT,CAAC,CAAC;AAeH,MAAM,UAAU,oBAAoB,CAAC,QAAwB;IAC3D,MAAM,UAAU,GAA0B,EAAE,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;IAChD,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAExC,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAE9B,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;QAEhF,MAAM,UAAU,GAA0B,EAAE,CAAC;QAE7C,iCAAiC;QACjC,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;YACtC,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;YACxE,MAAM,MAAM,GACV,EAAE,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;YACzF,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,EAAE,EAAE,MAAM;gBACV,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,EAAE,CAAC,IAAI;gBACpB,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QAED,wEAAwE;QACxE,4EAA4E;QAC5E,qEAAqE;QACrE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC7C,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACjC,KAAK,MAAM,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAChC,IAAI,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC;oBAAE,SAAS;gBACtC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC7B,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;YACtC,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI;gBACJ,EAAE,EAAE,OAAO;gBACX,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,EAAE,IAAI,EAAE;aACjB,CAAC,CAAC;QACL,CAAC;QAED,iEAAiE;QACjE,IAAI,WAA8C,CAAC;QACnD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO;aAChC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;aACtC,MAAM,CAAC,CAAC,EAAE,EAAgC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC;aACxD,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE5D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,YAAY,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC;YAC1D,IAAI,YAAY,EAAE,CAAC;gBACjB,WAAW,GAAG;oBACZ,QAAQ,EAAE,IAAI;oBACd,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;oBACzD,MAAM,EAAE,YAAY;iBACrB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,WAAW;QACX,MAAM,QAAQ,GAA0B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvD,UAAU,EAAE,CAAC,CAAC,IAAI;YAClB,MAAM,EAAE,EAAE;SACX,CAAC,CAAC,CAAC;QAEJ,UAAU,CAAC,IAAI,CAAC;YACd,WAAW;YACX,MAAM,EAAE,OAAO,CAAC,MAAoB;YACpC,IAAI,EAAE,OAAO,CAAC,cAAc;YAC5B,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,cAAc,EAAE;YACpE,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAC1C,UAAU;YACV,WAAW;YACX,SAAS,EAAE,EAAE;YACb,QAAQ;YACR,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,UAAU;QACV,OAAO;QACP,YAAY,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;KACpC,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,OAA0B;IACpD,oCAAoC;IACpC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CACvE,CAAC;IACF,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,UAAU,CAAC,KAAY;IAC9B,MAAM,MAAM,GAAmB,EAAE,CAAC;IAElC,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAEvC,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;YAC7B,KAAK,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,oBAAoB,EAAE,CAAC;gBAC3D,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC/B,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,UAAkC;wBACxC,UAAU,EAAE,eAAe;wBAC3B,YAAY,EAAE,YAAY;qBAC3B,CAAC,CAAC;oBACH,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,MAAM,CAAC,IAAI;gBACvB,YAAY,EAAE,YAAY;aAC3B,CAAC,CAAC;QACL,CAAC;QAED,mCAAmC;QACnC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3E,KAAK,MAAM,UAAU,IAAI,OAAO,EAAE,CAAC;gBACjC,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;oBAC5D,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,QAAQ;wBACpB,EAAE,EAAE,QAAQ;wBACZ,YAAY,EAAE,YAAY;qBAC3B,CAAC,CAAC;oBACH,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,4EAA4E;IAC5E,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAC3C,IAAI,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YACzE,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE,CAAC,IAAI;gBACnB,EAAE,EAAE,OAAO;gBACX,YAAY,EAAE,YAAY;aAC3B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc,EAAE,IAAY;IACvD,MAAM,QAAQ,GAAG,IAAI;SAClB,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;SACzB,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,UAAU,CAAC;IAE7D,QAAQ,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;QAC7B,KAAK,KAAK;YACR,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,QAAQ,EAAE,CAAC;QAClF,KAAK,MAAM;YACT,OAAO,UAAU,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3C,KAAK,KAAK,CAAC;QACX,KAAK,OAAO;YACV,OAAO,UAAU,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3C,KAAK,QAAQ;YACX,OAAO,UAAU,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3C;YACE,OAAO,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI,QAAQ,EAAE,CAAC;IACjD,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACxE,0BAA0B;IAC1B,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;AACpC,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACzD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzE,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"har-to-operations.js","sourceRoot":"","sources":["../../src/transformer/har-to-operations.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAI7D,MAAM,oBAAoB,GAAmD;IAC3E,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE;IAChD,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE;IAC9C,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE;CAC/C,CAAC;AAEF,MAAM,mBAAmB,GAAG;IAC1B,WAAW;IACX,SAAS;IACT,qBAAqB;IACrB,cAAc;IACd,gBAAgB;IAChB,cAAc;IACd,iBAAiB;CAClB,CAAC;AAEF,MAAM,uBAAuB,GAAG;IAC9B,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,SAAS;IACT,QAAQ;IACR,OAAO;IACP,iBAAiB;CAClB,CAAC;AAEF,yEAAyE;AACzE,+DAA+D;AAC/D,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,SAAS;IACT,QAAQ;IACR,cAAc;IACd,OAAO;IACP,MAAM;IACN,KAAK;IACL,KAAK;IACL,WAAW;IACX,UAAU;IACV,QAAQ;CACT,CAAC,CAAC;AAeH,MAAM,UAAU,oBAAoB,CAAC,QAAwB;IAC3D,MAAM,UAAU,GAA0B,EAAE,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;IAChD,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAExC,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAE9B,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;QAEhF,MAAM,UAAU,GAA0B,EAAE,CAAC;QAE7C,iCAAiC;QACjC,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;YACtC,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;YACxE,MAAM,MAAM,GACV,EAAE,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;YACzF,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,EAAE,EAAE,MAAM;gBACV,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,EAAE,CAAC,IAAI;gBACpB,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QAED,wEAAwE;QACxE,4EAA4E;QAC5E,qEAAqE;QACrE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC7C,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACjC,KAAK,MAAM,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAChC,IAAI,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC;oBAAE,SAAS;gBACtC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC7B,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;YACtC,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI;gBACJ,EAAE,EAAE,OAAO;gBACX,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,EAAE,IAAI,EAAE;aACjB,CAAC,CAAC;QACL,CAAC;QAED,iEAAiE;QACjE,IAAI,WAA8C,CAAC;QACnD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO;aAChC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;aACtC,MAAM,CAAC,CAAC,EAAE,EAAgC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC;aACxD,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE5D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,YAAY,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC;YAC1D,IAAI,YAAY,EAAE,CAAC;gBACjB,wEAAwE;gBACxE,yEAAyE;gBACzE,wEAAwE;gBACxE,uEAAuE;gBACvE,kEAAkE;gBAClE,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;gBACvE,MAAM,WAAW,GAAG,CAAC,SAAS,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAChF,WAAW,GAAG;oBACZ,QAAQ,EAAE,IAAI;oBACd,WAAW;oBACX,MAAM,EAAE,YAAY;iBACrB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,WAAW;QACX,MAAM,QAAQ,GAA0B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvD,UAAU,EAAE,CAAC,CAAC,IAAI;YAClB,MAAM,EAAE,EAAE;SACX,CAAC,CAAC,CAAC;QAEJ,UAAU,CAAC,IAAI,CAAC;YACd,WAAW;YACX,MAAM,EAAE,OAAO,CAAC,MAAoB;YACpC,IAAI,EAAE,OAAO,CAAC,cAAc;YAC5B,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,cAAc,EAAE;YACpE,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAC1C,UAAU;YACV,WAAW;YACX,SAAS,EAAE,EAAE;YACb,QAAQ;YACR,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,UAAU;QACV,OAAO;QACP,YAAY,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;KACpC,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,OAA0B;IACpD,oCAAoC;IACpC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CACvE,CAAC;IACF,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,UAAU,CAAC,KAAY;IAC9B,MAAM,MAAM,GAAmB,EAAE,CAAC;IAElC,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAEvC,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;YAC7B,KAAK,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,oBAAoB,EAAE,CAAC;gBAC3D,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC/B,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,UAAkC;wBACxC,UAAU,EAAE,eAAe;wBAC3B,YAAY,EAAE,YAAY;qBAC3B,CAAC,CAAC;oBACH,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,MAAM,CAAC,IAAI;gBACvB,YAAY,EAAE,YAAY;aAC3B,CAAC,CAAC;QACL,CAAC;QAED,mCAAmC;QACnC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3E,KAAK,MAAM,UAAU,IAAI,OAAO,EAAE,CAAC;gBACjC,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;oBAC5D,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,QAAQ;wBACpB,EAAE,EAAE,QAAQ;wBACZ,YAAY,EAAE,YAAY;qBAC3B,CAAC,CAAC;oBACH,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,4EAA4E;IAC5E,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;QACjD,IAAI,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YACzE,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE,CAAC,IAAI;gBACnB,EAAE,EAAE,OAAO;gBACX,YAAY,EAAE,YAAY;aAC3B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc,EAAE,IAAY;IACvD,MAAM,QAAQ,GAAG,IAAI;SAClB,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;SACzB,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,UAAU,CAAC;IAE7D,QAAQ,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;QAC7B,KAAK,KAAK;YACR,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,QAAQ,EAAE,CAAC;QAClF,KAAK,MAAM;YACT,OAAO,UAAU,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3C,KAAK,KAAK,CAAC;QACX,KAAK,OAAO;YACV,OAAO,UAAU,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3C,KAAK,QAAQ;YACX,OAAO,UAAU,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3C;YACE,OAAO,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI,QAAQ,EAAE,CAAC;IACjD,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACxE,0BAA0B;IAC1B,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;AACpC,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACzD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzE,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"llm-namer.d.ts","sourceRoot":"","sources":["../../src/transformer/llm-namer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AA+B7D;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,mBAAmB,EAAE,EACjC,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAmDhC"}
1
+ {"version":3,"file":"llm-namer.d.ts","sourceRoot":"","sources":["../../src/transformer/llm-namer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AA+B7D;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,mBAAmB,EAAE,EACjC,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAsDhC"}
@@ -61,6 +61,9 @@ ${JSON.stringify(operationSummaries, null, 2)}`;
61
61
  if (!parsed)
62
62
  return operations;
63
63
  const improvements = parsed.improvements;
64
+ if (!Array.isArray(improvements)) {
65
+ throw new Error('LLM returned unexpected improvements shape');
66
+ }
64
67
  const result = operations.map((op, i) => {
65
68
  const improvement = improvements.find((imp) => imp.index === i);
66
69
  if (!improvement)
@@ -1 +1 @@
1
- {"version":3,"file":"llm-namer.js","sourceRoot":"","sources":["../../src/transformer/llm-namer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llm-namer.js","sourceRoot":"","sources":["../../src/transformer/llm-namer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"resource-builder.d.ts","sourceRoot":"","sources":["../../src/transformer/resource-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAQ9E;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,mBAAmB,EAAE,GAAG,kBAAkB,EAAE,CA8DtF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,mBAAmB,EAAE,GAAG,gBAAgB,EAAE,CA2BlF"}
1
+ {"version":3,"file":"resource-builder.d.ts","sourceRoot":"","sources":["../../src/transformer/resource-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAsB9E;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,mBAAmB,EAAE,GAAG,kBAAkB,EAAE,CAoGtF;AAmBD;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,mBAAmB,EAAE,GAAG,gBAAgB,EAAE,CAoDlF"}
@@ -1,5 +1,24 @@
1
- import { escapeTemplateLiteral, escapeStringLiteral, sanitizeIdentifier, } from '../utils/sanitize.js';
1
+ import { escapeTemplateLiteral, escapeStringLiteral } from '../utils/sanitize.js';
2
2
  import { toToolName } from './naming.js';
3
+ /**
4
+ * Produce an RFC 6570-safe URI-template variable name from an arbitrary path
5
+ * parameter wire name.
6
+ *
7
+ * RFC 6570 §2.3 allows `[A-Za-z0-9_]` (plus pct-encoded, but MCP SDK does
8
+ * not support them). Chars outside that set are REPLACED with `_` — not
9
+ * stripped — so that two distinct names (e.g. `user-id` and `userid`) do not
10
+ * silently collapse to the same key. A leading digit gets a `_` prefix to keep
11
+ * the result a valid JS identifier (the SDK uses the name as an object key).
12
+ * An empty input after replacement is guarded to `_param`.
13
+ */
14
+ function uriTemplateVar(name) {
15
+ let safe = name.replace(/[^A-Za-z0-9_]/g, '_');
16
+ if (!safe)
17
+ return '_param';
18
+ if (/^[0-9]/.test(safe))
19
+ safe = `_${safe}`;
20
+ return safe;
21
+ }
3
22
  /**
4
23
  * Generate MCP resources from GET operations.
5
24
  * - List endpoints (no path params) → static resources
@@ -7,6 +26,12 @@ import { toToolName } from './naming.js';
7
26
  */
8
27
  export function buildResources(operations) {
9
28
  const resources = [];
29
+ // R11-B: guard against duplicate resource names. Two operationIds that
30
+ // collapse to the same toToolName result would produce two
31
+ // `server.resource('X', 'api://X', …)` calls, which the MCP SDK rejects with
32
+ // "Resource X is already registered". Append _2, _3, … until unique; keep the
33
+ // uri in sync with the final name so name and URI stay consistent.
34
+ const claimedNames = new Set();
10
35
  for (const op of operations) {
11
36
  // Operations dropped from the tool surface (x-mcp-emit: skip) must not leak
12
37
  // back in as resources — mirror buildAllTools' skip handling.
@@ -14,7 +39,16 @@ export function buildResources(operations) {
14
39
  continue;
15
40
  if (op.method !== 'get')
16
41
  continue;
17
- const name = toToolName(op.operationId);
42
+ const baseName = toToolName(op.operationId);
43
+ // Deduplicate: if baseName is already claimed, try baseName_2, _3, …
44
+ let name = baseName;
45
+ if (claimedNames.has(name)) {
46
+ let n = 2;
47
+ while (claimedNames.has(`${baseName}_${n}`))
48
+ n++;
49
+ name = `${baseName}_${n}`;
50
+ }
51
+ claimedNames.add(name);
18
52
  const description = escapeTemplateLiteral(op.summary ?? `${op.method.toUpperCase()} ${op.path}`);
19
53
  if (!op.path.includes('{')) {
20
54
  // Static resource — list endpoint. `path` is emitted into a backtick URL
@@ -28,25 +62,47 @@ export function buildResources(operations) {
28
62
  }
29
63
  else {
30
64
  // Template resource — detail endpoint with path params. Param names are
31
- // emitted into the single-quoted `uri` literal, so sanitize them.
32
- const pathParams = op.parameters.filter((p) => p.in === 'path').map((p) => p.name);
33
- const uriTemplate = `api://${name}/${pathParams.map((p) => `{${sanitizeIdentifier(p)}}`).join('/')}`;
65
+ // emitted into the single-quoted `uri` literal using RFC-6570-safe var names.
66
+ //
67
+ // Build a per-param mapping in a single pass: rawWire (the literal `{name}`
68
+ // token in op.path) → safeVar (unique RFC-6570-safe identifier used in both
69
+ // the URI template and the variables[key] read in the handler).
70
+ //
71
+ // Dedup: two params whose safe names collide (e.g. `a.b` and `ab` both →
72
+ // `a_b`… wait, `ab` → `ab`; actual collision: `a-b` and `a_b` both →
73
+ // `a_b`) get a _2, _3, … suffix so the URI template never has duplicate
74
+ // variables, which would cause the MCP SDK to overwrite one slot silently.
75
+ const claimedVarNames = new Set();
76
+ const pathParamPairs = op.parameters
77
+ .filter((p) => p.in === 'path')
78
+ .map((p) => {
79
+ const baseVar = uriTemplateVar(p.name);
80
+ let safeVar = baseVar;
81
+ if (claimedVarNames.has(safeVar)) {
82
+ let n = 2;
83
+ while (claimedVarNames.has(`${baseVar}_${n}`))
84
+ n++;
85
+ safeVar = `${baseVar}_${n}`;
86
+ }
87
+ claimedVarNames.add(safeVar);
88
+ return { rawWire: p.name, safeVar };
89
+ });
90
+ const uriTemplate = `api://${name}/${pathParamPairs.map(({ safeVar }) => `{${safeVar}}`).join('/')}`;
34
91
  // Pre-compute URL body to avoid Handlebars/curly-brace conflicts.
35
- // Resource handler receives (uri: URL, extra) — extract params from uri.pathname.
92
+ // Resource handler receives (uri: URL, variables: Variables) — extract params
93
+ // from the SDK-provided variables map (keyed by the same safeVar names used
94
+ // in the URI template above, e.g. `{user_id}` → `variables['user_id']`).
36
95
  const urlLines = [];
37
- urlLines.push(` const pathParts = uri.pathname.split('/').filter(Boolean);`);
38
96
  // op.path is interpolated into a BACKTICK template literal here, so it must
39
97
  // be escaped for that sink: escapeStringLiteral leaves backticks and `${}`
40
98
  // live, allowing expression evaluation (D-C2). Use escapeTemplateLiteral.
41
99
  urlLines.push(` let url = \`\${config.baseUrl}${escapeTemplateLiteral(op.path)}\`;`);
42
- // Replace path params using positional extraction from the URI
43
- const pathSegments = op.path.split('/').filter(Boolean);
44
- for (let i = 0; i < pathSegments.length; i++) {
45
- const seg = pathSegments[i];
46
- if (seg.startsWith('{') && seg.endsWith('}')) {
47
- const safe = sanitizeIdentifier(seg.slice(1, -1));
48
- urlLines.push(` if (pathParts[${i}]) url = url.replace('${escapeStringLiteral(seg)}', encodeURIComponent(pathParts[${i}]));`);
49
- }
100
+ for (const { rawWire, safeVar } of pathParamPairs) {
101
+ // rawWire is the literal token in op.path, e.g. `user-id` for `{user-id}`.
102
+ // escapeStringLiteral escapes it for a single-quoted JS string literal.
103
+ // safeVar is RFC-6570-safe ([A-Za-z0-9_] only), making it safe to embed
104
+ // directly as an object property key in a single-quoted string literal.
105
+ urlLines.push(` url = url.replace('{${escapeStringLiteral(rawWire)}}', encodeURIComponent(String(variables['${safeVar}'] ?? '')));`);
50
106
  }
51
107
  resources.push({
52
108
  name,
@@ -54,13 +110,28 @@ export function buildResources(operations) {
54
110
  path: op.path,
55
111
  description,
56
112
  isTemplate: true,
57
- templateParams: pathParams,
113
+ templateParams: pathParamPairs.map(({ rawWire }) => rawWire),
58
114
  urlBody: urlLines.join('\n'),
59
115
  });
60
116
  }
61
117
  }
62
118
  return resources;
63
119
  }
120
+ // Mirror of bodyEncodingFor's supported set in tool-builder.ts — an op with an
121
+ // unsupported request-body media type is skipped by buildAllTools, so it must
122
+ // not be referenced in a workflow prompt (the tool is never registered).
123
+ // Field path: op.requestBody?.contentType (RequestBodyDescriptor.contentType).
124
+ function hasSupportedBody(op) {
125
+ const ct = op.requestBody?.contentType;
126
+ if (!ct)
127
+ return true; // no body → always built
128
+ const base = ct.split(';', 1)[0].trim().toLowerCase();
129
+ return (base === '' ||
130
+ base === 'application/json' ||
131
+ base.endsWith('+json') ||
132
+ base === 'application/x-www-form-urlencoded' ||
133
+ base === 'multipart/form-data');
134
+ }
64
135
  /**
65
136
  * Generate MCP prompts — one per tag as a "workflow" prompt.
66
137
  */
@@ -76,15 +147,38 @@ export function buildPrompts(operations) {
76
147
  else
77
148
  tagGroups.set(tag, [op]);
78
149
  }
150
+ // R11-C: guard against duplicate prompt names. Two tags that map to the same
151
+ // toToolName result (e.g. "Orders" and "orders" both → "orders") would produce
152
+ // two `server.prompt('orders_workflow', …)` calls → startup crash. Dedup with
153
+ // the same _2, _3, … counter approach as buildAllTools / buildResources.
154
+ const claimedPromptNames = new Set();
79
155
  const prompts = [];
80
156
  for (const [tag, ops] of tagGroups) {
81
- const toolList = ops
157
+ // R11-A: exclude operations whose request-body media type is unsupported by
158
+ // buildAllTools — those tools are never registered, so listing them in the
159
+ // workflow prompt would reference non-existent tools.
160
+ const registeredOps = ops.filter(hasSupportedBody);
161
+ // R12-B: if every op in the tag was filtered out, don't register an empty
162
+ // workflow prompt that references zero tools.
163
+ if (registeredOps.length === 0)
164
+ continue;
165
+ const toolList = registeredOps
82
166
  .map((op) => `- ${toToolName(op.operationId)}: ${op.summary ?? op.path}`)
83
167
  .join('\\n');
168
+ // R11-C: derive a unique prompt name.
169
+ const baseName = `${toToolName(tag)}_workflow`;
170
+ let promptName = baseName;
171
+ if (claimedPromptNames.has(promptName)) {
172
+ let n = 2;
173
+ while (claimedPromptNames.has(`${baseName}_${n}`))
174
+ n++;
175
+ promptName = `${baseName}_${n}`;
176
+ }
177
+ claimedPromptNames.add(promptName);
84
178
  prompts.push({
85
179
  // `name` is emitted into a single-quoted literal; the tag is untrusted
86
180
  // spec input, so derive a slug-safe name from it.
87
- name: `${toToolName(tag)}_workflow`,
181
+ name: promptName,
88
182
  description: escapeTemplateLiteral(`Work with ${tag} — available operations`),
89
183
  template: escapeTemplateLiteral(`You have the following ${tag} tools available:\\n${toolList}\\n\\nWhat would you like to do?`),
90
184
  });
@@ -1 +1 @@
1
- {"version":3,"file":"resource-builder.js","sourceRoot":"","sources":["../../src/transformer/resource-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource-builder.js","sourceRoot":"","sources":["../../src/transformer/resource-builder.ts"],"names":[],"mappings":"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"}