@mcpmake/core 0.2.4 → 0.2.5

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 (82) hide show
  1. package/dist/analyzer/dom-parser.d.ts +7 -0
  2. package/dist/analyzer/dom-parser.d.ts.map +1 -1
  3. package/dist/analyzer/dom-parser.js +31 -5
  4. package/dist/analyzer/dom-parser.js.map +1 -1
  5. package/dist/analyzer/site-crawler.d.ts.map +1 -1
  6. package/dist/analyzer/site-crawler.js +40 -8
  7. package/dist/analyzer/site-crawler.js.map +1 -1
  8. package/dist/emitter/index.d.ts.map +1 -1
  9. package/dist/emitter/index.js +113 -6
  10. package/dist/emitter/index.js.map +1 -1
  11. package/dist/emitter/project-scaffolder.d.ts +13 -0
  12. package/dist/emitter/project-scaffolder.d.ts.map +1 -1
  13. package/dist/emitter/project-scaffolder.js +29 -0
  14. package/dist/emitter/project-scaffolder.js.map +1 -1
  15. package/dist/emitter/python-template-loader.d.ts.map +1 -1
  16. package/dist/emitter/python-template-loader.js +10 -0
  17. package/dist/emitter/python-template-loader.js.map +1 -1
  18. package/dist/emitter/python-templates/server.py.hbs +78 -8
  19. package/dist/emitter/site-templates/browser-manager.ts.hbs +81 -32
  20. package/dist/emitter/site-templates/server-main-http.ts.hbs +25 -7
  21. package/dist/emitter/site-templates/tool-handler-form.ts.hbs +10 -8
  22. package/dist/emitter/template-loader.d.ts.map +1 -1
  23. package/dist/emitter/template-loader.js +9 -0
  24. package/dist/emitter/template-loader.js.map +1 -1
  25. package/dist/emitter/templates/auth-provider.ts.hbs +81 -20
  26. package/dist/emitter/templates/config.ts.hbs +7 -0
  27. package/dist/emitter/templates/env.example.hbs +6 -0
  28. package/dist/emitter/templates/http-executor.ts.hbs +150 -7
  29. package/dist/emitter/templates/server-main-http.ts.hbs +60 -4
  30. package/dist/emitter/templates/tool-handler.ts.hbs +37 -2
  31. package/dist/emitter/templates/tool-test.ts.hbs +9 -1
  32. package/dist/emitter/worker-templates/config.ts.hbs +7 -0
  33. package/dist/emitter/worker-templates/tool-handler.ts.hbs +37 -2
  34. package/dist/emitter/worker-templates/worker.ts.hbs +33 -2
  35. package/dist/parser/operation-extractor.d.ts.map +1 -1
  36. package/dist/parser/operation-extractor.js +12 -1
  37. package/dist/parser/operation-extractor.js.map +1 -1
  38. package/dist/parser/overlay-loader.d.ts.map +1 -1
  39. package/dist/parser/overlay-loader.js +11 -2
  40. package/dist/parser/overlay-loader.js.map +1 -1
  41. package/dist/parser/schema-converter.d.ts +13 -2
  42. package/dist/parser/schema-converter.d.ts.map +1 -1
  43. package/dist/parser/schema-converter.js +30 -19
  44. package/dist/parser/schema-converter.js.map +1 -1
  45. package/dist/pricing.d.ts +5 -1
  46. package/dist/pricing.d.ts.map +1 -1
  47. package/dist/pricing.js +7 -3
  48. package/dist/pricing.js.map +1 -1
  49. package/dist/providers/index.d.ts.map +1 -1
  50. package/dist/providers/index.js +6 -21
  51. package/dist/providers/index.js.map +1 -1
  52. package/dist/recorder/browser-recorder.d.ts.map +1 -1
  53. package/dist/recorder/browser-recorder.js +39 -7
  54. package/dist/recorder/browser-recorder.js.map +1 -1
  55. package/dist/site-transformer/tool-generator.d.ts.map +1 -1
  56. package/dist/site-transformer/tool-generator.js +90 -22
  57. package/dist/site-transformer/tool-generator.js.map +1 -1
  58. package/dist/transformer/auth-detector.d.ts.map +1 -1
  59. package/dist/transformer/auth-detector.js +11 -4
  60. package/dist/transformer/auth-detector.js.map +1 -1
  61. package/dist/transformer/naming.d.ts.map +1 -1
  62. package/dist/transformer/naming.js +16 -8
  63. package/dist/transformer/naming.js.map +1 -1
  64. package/dist/transformer/resource-builder.d.ts.map +1 -1
  65. package/dist/transformer/resource-builder.js +13 -6
  66. package/dist/transformer/resource-builder.js.map +1 -1
  67. package/dist/transformer/stainless-translator.d.ts +6 -0
  68. package/dist/transformer/stainless-translator.d.ts.map +1 -1
  69. package/dist/transformer/stainless-translator.js +18 -1
  70. package/dist/transformer/stainless-translator.js.map +1 -1
  71. package/dist/transformer/tool-builder.d.ts.map +1 -1
  72. package/dist/transformer/tool-builder.js +111 -13
  73. package/dist/transformer/tool-builder.js.map +1 -1
  74. package/dist/types/index.d.ts +72 -0
  75. package/dist/types/index.d.ts.map +1 -1
  76. package/dist/types/site.d.ts +19 -1
  77. package/dist/types/site.d.ts.map +1 -1
  78. package/dist/utils/sanitize.d.ts +62 -0
  79. package/dist/utils/sanitize.d.ts.map +1 -1
  80. package/dist/utils/sanitize.js +141 -0
  81. package/dist/utils/sanitize.js.map +1 -1
  82. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"overlay-loader.js","sourceRoot":"","sources":["../../src/parser/overlay-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAc5C;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAA6B,EAC7B,WAAmB;IAEnB,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAElC,MAAM,CAAC,IAAI,CAAC,qBAAqB,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,WAAW,CAAC,CAAC;IAEpF,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACrC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,OAAe;IACnC,IAAI,GAAoB,CAAC;IACzB,IAAI,CAAC;QACH,GAAG,GAAG,SAAS,CAAC,OAAO,CAAoB,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAoB,CAAC;IAC/C,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,WAAW,CAAC,IAA6B,EAAE,MAAqB;IACvE,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAElC,2BAA2B;IAC3B,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAE/D,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACN,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CACxB,IAA6B,EAC7B,QAAkB,EAClB,MAAqB;IAErB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,+CAA+C;QAC/C,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC9C,OAAQ,MAAkC,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,oBAAoB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1C,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YACzC,SAAS,CAAC,MAAiC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,oBAAoB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,gEAAgE;YAChE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACvD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC7C,MAAkC,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;gBAC7D,MAAM,CAAC,IAAI,CAAC,oBAAoB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,8BAA8B,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAA6B,EAC7B,QAAkB,EAClB,WAAmB,EACnB,MAAqB;IAErB,6CAA6C;IAC7C,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO;IAElD,MAAM,eAAe,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,iBAAiB,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;IAE1D,0CAA0C;IAC1C,MAAM,KAAK,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAiC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAChF,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAChB,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,CAAC,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,iBAAiB,CAAC,CAAC;QACpE,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,MAAc;IACjC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,OAAO,GAAG,MAAM,CAAC;IAErB,yBAAyB;IACzB,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;SAAM,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,yCAAyC;YACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,QAAQ,GAAG,CAAC;gBAAE,MAAM;YACxB,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YACrC,2BAA2B;YAC3B,IACE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAC1C,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC1C,CAAC;gBACD,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnB,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YACtC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,kDAAkD;YAClD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,GAAW,CAAC;YAChB,IAAI,MAAM,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACjC,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;YACvB,CAAC;iBAAM,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,GAAG,GAAG,UAAU,CAAC;YACnB,CAAC;iBAAM,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBAC1B,GAAG,GAAG,MAAM,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACrC,CAAC;YAED,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACtC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;YACD,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,UAAU,CAAC,GAAY,EAAE,QAAkB;IAClD,IAAI,OAAO,GAAG,GAAG,CAAC;IAClB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC7E,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,GAAI,OAAmC,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,SAAS,CAAC,MAA+B,EAAE,MAA+B;IACjF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IACE,OAAO,KAAK,KAAK,QAAQ;YACzB,KAAK,KAAK,IAAI;YACd,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACrB,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ;YAC/B,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI;YACpB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAC3B,CAAC;YACD,SAAS,CAAC,MAAM,CAAC,GAAG,CAA4B,EAAE,KAAgC,CAAC,CAAC;QACtF,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,KAAK,EAAE,EAAE;QAC/D,IAAI,KAAK,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QAC/B,OAAO,KAAK,KAAK,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"overlay-loader.js","sourceRoot":"","sources":["../../src/parser/overlay-loader.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { OperationDescriptor, JsonSchema } from '../types/index.js';
1
+ import type { OperationDescriptor, JsonSchema, ParamMapping } from '../types/index.js';
2
2
  /**
3
3
  * Wrap array root schemas in an object for MCP outputSchema compatibility.
4
4
  * MCP outputSchema requires an object root, not a bare array.
@@ -9,5 +9,16 @@ export declare function jsonSchemaToZodCode(schema: JsonSchema): string;
9
9
  * Convert a schema to Zod code, wrapping array roots for outputSchema.
10
10
  */
11
11
  export declare function jsonSchemaToOutputZodCode(schema: JsonSchema): string;
12
- export declare function buildOperationInputSchema(op: OperationDescriptor): string;
12
+ export interface InputSchemaResult {
13
+ /** Zod object code for the tool's inputSchema. */
14
+ code: string;
15
+ /**
16
+ * Mapping from each emitted MCP input key to the original wire name and
17
+ * location. The handler uses this to build the upstream request, so the
18
+ * original API parameter name is preserved even when the input key differs
19
+ * (D-H1) and header/cookie/query params are no longer silently dropped (D-H2).
20
+ */
21
+ mappings: ParamMapping[];
22
+ }
23
+ export declare function buildOperationInputSchema(op: OperationDescriptor): InputSchemaResult;
13
24
  //# sourceMappingURL=schema-converter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-converter.d.ts","sourceRoot":"","sources":["../../src/parser/schema-converter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAqDzE;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAS5D;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAO9D;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAEpE;AAED,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,mBAAmB,GAAG,MAAM,CAiDzE"}
1
+ {"version":3,"file":"schema-converter.d.ts","sourceRoot":"","sources":["../../src/parser/schema-converter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAoDvF;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAS5D;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAO9D;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAEpE;AAED,MAAM,WAAW,iBAAiB;IAChC,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,mBAAmB,GAAG,iBAAiB,CA6DpF"}
@@ -1,5 +1,4 @@
1
1
  import { jsonSchemaToZod } from 'json-schema-to-zod';
2
- import { sanitizeIdentifier } from '../utils/sanitize.js';
3
2
  import { logger } from '../utils/logger.js';
4
3
  const MAX_SCHEMA_DEPTH = 15;
5
4
  /**
@@ -73,17 +72,29 @@ export function jsonSchemaToOutputZodCode(schema) {
73
72
  }
74
73
  export function buildOperationInputSchema(op) {
75
74
  const fields = [];
76
- const seenNames = new Set();
77
- for (const param of op.parameters) {
78
- if (param.in === 'header')
79
- continue;
80
- let safeName = sanitizeIdentifier(param.name);
81
- // Parameter collision resolution
82
- if (seenNames.has(safeName)) {
83
- safeName = `${safeName}_${param.in}`;
84
- logger.warn(`Parameter name collision: "${param.name}" renamed to "${safeName}"`);
75
+ const mappings = [];
76
+ // Track the MCP input keys we have already emitted so colliding parameters
77
+ // (e.g. a query and a header both named `token`) get distinct keys.
78
+ const seenKeys = new Set();
79
+ const uniqueKey = (wireName, location) => {
80
+ // The wire name is emitted as a JSON.stringify'd object key, so any string
81
+ // is a legal property — we keep the original name as the input key for
82
+ // fidelity and only disambiguate true collisions.
83
+ let key = wireName;
84
+ if (seenKeys.has(key)) {
85
+ key = `${wireName}_${location}`;
86
+ logger.warn(`Parameter name collision: "${wireName}" exposed as "${key}"`);
87
+ }
88
+ let n = 1;
89
+ while (seenKeys.has(key)) {
90
+ key = `${wireName}_${location}_${n++}`;
85
91
  }
86
- seenNames.add(safeName);
92
+ seenKeys.add(key);
93
+ return key;
94
+ };
95
+ for (const param of op.parameters) {
96
+ const inputKey = uniqueKey(param.name, param.in);
97
+ mappings.push({ inputKey, wireName: param.name, in: param.in });
87
98
  const zodType = jsonSchemaToZodCode(param.schema);
88
99
  let field = zodType;
89
100
  if (!param.required) {
@@ -92,14 +103,16 @@ export function buildOperationInputSchema(op) {
92
103
  if (param.description) {
93
104
  field = `${field}.describe(${JSON.stringify(param.description)})`;
94
105
  }
95
- fields.push(` ${safeName}: ${field}`);
106
+ // The key is JSON.stringify'd so names like `page-size` or `2fa` are legal
107
+ // TS object keys instead of producing invalid source (D-H1).
108
+ fields.push(` ${JSON.stringify(inputKey)}: ${field}`);
96
109
  }
97
110
  if (op.requestBody) {
98
111
  let bodyName = 'body';
99
- if (seenNames.has(bodyName)) {
112
+ if (seenKeys.has(bodyName)) {
100
113
  bodyName = 'requestBody';
101
114
  }
102
- seenNames.add(bodyName);
115
+ seenKeys.add(bodyName);
103
116
  const bodyZod = jsonSchemaToZodCode(op.requestBody.schema);
104
117
  let field = bodyZod;
105
118
  if (!op.requestBody.required) {
@@ -108,11 +121,9 @@ export function buildOperationInputSchema(op) {
108
121
  if (op.requestBody.description) {
109
122
  field = `${field}.describe(${JSON.stringify(op.requestBody.description)})`;
110
123
  }
111
- fields.push(` ${bodyName}: ${field}`);
112
- }
113
- if (fields.length === 0) {
114
- return 'z.object({})';
124
+ fields.push(` ${JSON.stringify(bodyName)}: ${field}`);
115
125
  }
116
- return `z.object({\n${fields.join(',\n')},\n})`;
126
+ const code = fields.length === 0 ? 'z.object({})' : `z.object({\n${fields.join(',\n')},\n})`;
127
+ return { code, mappings };
117
128
  }
118
129
  //# sourceMappingURL=schema-converter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-converter.js","sourceRoot":"","sources":["../../src/parser/schema-converter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-converter.js","sourceRoot":"","sources":["../../src/parser/schema-converter.ts"],"names":[],"mappings":"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"}
package/dist/pricing.d.ts CHANGED
@@ -41,7 +41,11 @@ export declare const DEFAULT_PRICING_SERVER = "https://mcpmake.dev";
41
41
  * when the backend is unreachable, slow, or returns anything unexpected — the
42
42
  * CLI must still work offline.
43
43
  *
44
- * @param serverUrl Backend base URL (defaults to {@link DEFAULT_PRICING_SERVER}).
44
+ * Server precedence: an explicit `serverUrl` wins; otherwise the `MCPMAKE_SERVER`
45
+ * env var (so the CLI can be pointed at a staging backend, matching the telemetry
46
+ * reporter in `utils/fail.ts`); otherwise {@link DEFAULT_PRICING_SERVER}.
47
+ *
48
+ * @param serverUrl Backend base URL. Defaults to `$MCPMAKE_SERVER`, then {@link DEFAULT_PRICING_SERVER}.
45
49
  * @param timeoutMs Abort the request after this long (default 4000 ms).
46
50
  */
47
51
  export declare function fetchPricing(serverUrl?: string, timeoutMs?: number): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE7D,MAAM,WAAW,UAAU;IACzB,0BAA0B;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,aAAa,CAAC;IACtB,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,4EAA4E;AAC5E,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CA0CvD,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,sBAAsB,wBAAwB,CAAC;AAe5D;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,SAAS,GAAE,MAA+B,EAC1C,SAAS,SAAQ,GAChB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAA;CAAE,CAAC,CA6BjF;AAQD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAUjD"}
1
+ {"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE7D,MAAM,WAAW,UAAU;IACzB,0BAA0B;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,aAAa,CAAC;IACtB,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,4EAA4E;AAC5E,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CA0CvD,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,sBAAsB,wBAAwB,CAAC;AAe5D;;;;;;;;;;;;GAYG;AACH,wBAAsB,YAAY,CAChC,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,SAAQ,GAChB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAA;CAAE,CAAC,CAgCjF;AAQD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAUjD"}
package/dist/pricing.js CHANGED
@@ -76,14 +76,18 @@ function isPricePoint(v) {
76
76
  * when the backend is unreachable, slow, or returns anything unexpected — the
77
77
  * CLI must still work offline.
78
78
  *
79
- * @param serverUrl Backend base URL (defaults to {@link DEFAULT_PRICING_SERVER}).
79
+ * Server precedence: an explicit `serverUrl` wins; otherwise the `MCPMAKE_SERVER`
80
+ * env var (so the CLI can be pointed at a staging backend, matching the telemetry
81
+ * reporter in `utils/fail.ts`); otherwise {@link DEFAULT_PRICING_SERVER}.
82
+ *
83
+ * @param serverUrl Backend base URL. Defaults to `$MCPMAKE_SERVER`, then {@link DEFAULT_PRICING_SERVER}.
80
84
  * @param timeoutMs Abort the request after this long (default 4000 ms).
81
85
  */
82
- export async function fetchPricing(serverUrl = DEFAULT_PRICING_SERVER, timeoutMs = 4_000) {
86
+ export async function fetchPricing(serverUrl, timeoutMs = 4_000) {
83
87
  const controller = new AbortController();
84
88
  const timer = setTimeout(() => controller.abort(), timeoutMs);
85
89
  try {
86
- const base = serverUrl.replace(/\/+$/, '');
90
+ const base = (serverUrl ?? process.env.MCPMAKE_SERVER ?? DEFAULT_PRICING_SERVER).replace(/\/+$/, '');
87
91
  const res = await fetch(`${base}/api/pricing`, {
88
92
  headers: { accept: 'application/json' },
89
93
  signal: controller.signal,
@@ -1 +1 @@
1
- {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAqBH,4EAA4E;AAC5E,MAAM,CAAC,MAAM,gBAAgB,GAA+B;IAC1D,GAAG,EAAE;QACH,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,CAAC;QACX,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE,SAAS;QACjB,OAAO,EACL,+FAA+F;KAClG;IACD,QAAQ,EAAE;QACR,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,EAAE;QACZ,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,kDAAkD;KAC5D;IACD,QAAQ,EAAE;QACR,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,GAAG;QACb,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,6CAA6C;KACvD;IACD,eAAe,EAAE;QACf,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,MAAM;QACnB,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,uEAAuE;KACjF;IACD,SAAS,EAAE;QACT,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,MAAM;QACnB,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,mDAAmD;KAC7D;CACF,CAAC;AAEF,6DAA6D;AAC7D,MAAM,CAAC,MAAM,sBAAsB,GAAG,qBAAqB,CAAC;AAE5D,SAAS,YAAY,CAAC,CAAU;IAC9B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,CAAC,GAAG,CAA4B,CAAC;IACvC,OAAO,CACL,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ;QACxB,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;QAC1B,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ;QAC9B,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,CAAC;QAC7D,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;QAC3E,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAC9B,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,YAAoB,sBAAsB,EAC1C,SAAS,GAAG,KAAK;IAEjB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,cAAc,EAAE;YAC7C,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;YACvC,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAErE,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA0B,CAAC;QACzD,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,CAAC;QAC9B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACpD,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAC1D,CAAC;QAED,2EAA2E;QAC3E,0DAA0D;QAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAkC,CAAC,CAAC;QACnE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAC1D,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,OAAqC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC/E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC1D,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,MAAM,aAAa,GAAkC;IACnD,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,KAAK;IACb,SAAS,EAAE,UAAU;CACtB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,CAAa;IACvC,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO,cAAc,CAAC;IAC5C,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3D,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAC,MAAM,KAAK,SAAS;YAC3B,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,MAAM,EAAE;YACrD,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE,CAAC;IACzC,CAAC;IACD,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAqBH,4EAA4E;AAC5E,MAAM,CAAC,MAAM,gBAAgB,GAA+B;IAC1D,GAAG,EAAE;QACH,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,CAAC;QACX,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE,SAAS;QACjB,OAAO,EACL,+FAA+F;KAClG;IACD,QAAQ,EAAE;QACR,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,EAAE;QACZ,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,kDAAkD;KAC5D;IACD,QAAQ,EAAE;QACR,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,GAAG;QACb,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,6CAA6C;KACvD;IACD,eAAe,EAAE;QACf,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,MAAM;QACnB,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,uEAAuE;KACjF;IACD,SAAS,EAAE;QACT,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,sBAAsB;QAC5B,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,MAAM;QACnB,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,mDAAmD;KAC7D;CACF,CAAC;AAEF,6DAA6D;AAC7D,MAAM,CAAC,MAAM,sBAAsB,GAAG,qBAAqB,CAAC;AAE5D,SAAS,YAAY,CAAC,CAAU;IAC9B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,CAAC,GAAG,CAA4B,CAAC;IACvC,OAAO,CACL,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ;QACxB,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;QAC1B,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ;QAC9B,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,CAAC;QAC7D,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;QAC3E,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAC9B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,SAAkB,EAClB,SAAS,GAAG,KAAK;IAEjB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,sBAAsB,CAAC,CAAC,OAAO,CACtF,MAAM,EACN,EAAE,CACH,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,cAAc,EAAE;YAC7C,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;YACvC,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAErE,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA0B,CAAC;QACzD,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,CAAC;QAC9B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACpD,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAC1D,CAAC;QAED,2EAA2E;QAC3E,0DAA0D;QAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAkC,CAAC,CAAC;QACnE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAC1D,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,OAAqC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC/E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC1D,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,MAAM,aAAa,GAAkC;IACnD,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,KAAK;IACb,SAAS,EAAE,UAAU;CACtB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,CAAa;IACvC,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO,cAAc,CAAC;IAC5C,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3D,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAC,MAAM,KAAK,SAAS;YAC3B,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,MAAM,EAAE;YACrD,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE,CAAC;IACzC,CAAC;IACD,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE,CAAC;AACvC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;QAC/C,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAoDD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEpE;AAED,wBAAgB,aAAa,IAAI,cAAc,EAAE,CAEhD;AAED,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;QAC/C,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAqCD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEpE;AAED,wBAAgB,aAAa,IAAI,cAAc,EAAE,CAEhD;AAED,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C"}
@@ -23,27 +23,12 @@ const providers = {
23
23
  auth: { type: 'bearer', envVar: 'SLACK_TOKEN' },
24
24
  suggestedIncludes: ['chat', 'channels', 'users', 'files'],
25
25
  },
26
- notion: {
27
- name: 'notion',
28
- description: 'Notion API',
29
- specUrl: 'https://bump.sh/notion-hq/doc/notion/specification',
30
- baseUrl: 'https://api.notion.com/v1',
31
- auth: { type: 'bearer', envVar: 'NOTION_API_KEY', headerName: 'Authorization' },
32
- },
33
- linear: {
34
- name: 'linear',
35
- description: 'Linear project management',
36
- specUrl: 'https://studio.apollographql.com/public/Linear-API/variant/current/home',
37
- baseUrl: 'https://api.linear.app',
38
- auth: { type: 'bearer', envVar: 'LINEAR_API_KEY' },
39
- },
40
- shopify: {
41
- name: 'shopify',
42
- description: 'Shopify Admin API',
43
- specUrl: 'https://shopify.dev/docs/admin-api/rest/reference',
44
- baseUrl: 'https://{store}.myshopify.com/admin/api/2024-01',
45
- auth: { type: 'bearer', envVar: 'SHOPIFY_ACCESS_TOKEN' },
46
- },
26
+ // NOTE: notion / linear / shopify shortcuts were removed — their `specUrl`s
27
+ // pointed at HTML documentation or a GraphQL (Apollo) console, not a
28
+ // machine-readable OpenAPI spec, so `mcpmake from <name>` always failed.
29
+ // Linear is GraphQL-only (no OpenAPI surface); Notion publishes no official
30
+ // OpenAPI spec; Shopify's REST reference is HTML. Re-add only with a verified
31
+ // spec URL that `loadOpenApiSpec` can actually parse.
47
32
  };
48
33
  export function getProvider(name) {
49
34
  return providers[name.toLowerCase()];
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAaA,MAAM,SAAS,GAAmC;IAChD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,2BAA2B;QACxC,OAAO,EAAE,4EAA4E;QACrF,OAAO,EAAE,wBAAwB;QACjC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE;QAClD,iBAAiB,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,CAAC;KACrF;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,iBAAiB;QAC9B,OAAO,EACL,oHAAoH;QACtH,OAAO,EAAE,wBAAwB;QACjC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE;QAChD,iBAAiB,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;KAC3D;IACD,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,eAAe;QAC5B,OAAO,EACL,qGAAqG;QACvG,OAAO,EAAE,uBAAuB;QAChC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE;QAC/C,iBAAiB,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC;KAC1D;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,YAAY;QACzB,OAAO,EAAE,oDAAoD;QAC7D,OAAO,EAAE,2BAA2B;QACpC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,EAAE;KAChF;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,2BAA2B;QACxC,OAAO,EAAE,yEAAyE;QAClF,OAAO,EAAE,wBAAwB;QACjC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE;KACnD;IACD,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,mBAAmB;QAChC,OAAO,EAAE,mDAAmD;QAC5D,OAAO,EAAE,iDAAiD;QAC1D,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,sBAAsB,EAAE;KACzD;CACF,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAaA,MAAM,SAAS,GAAmC;IAChD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,2BAA2B;QACxC,OAAO,EAAE,4EAA4E;QACrF,OAAO,EAAE,wBAAwB;QACjC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE;QAClD,iBAAiB,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,CAAC;KACrF;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,iBAAiB;QAC9B,OAAO,EACL,oHAAoH;QACtH,OAAO,EAAE,wBAAwB;QACjC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE;QAChD,iBAAiB,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;KAC3D;IACD,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,eAAe;QAC5B,OAAO,EACL,qGAAqG;QACvG,OAAO,EAAE,uBAAuB;QAChC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE;QAC/C,iBAAiB,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC;KAC1D;IACD,4EAA4E;IAC5E,qEAAqE;IACrE,yEAAyE;IACzE,4EAA4E;IAC5E,8EAA8E;IAC9E,sDAAsD;CACvD,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAChC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"browser-recorder.d.ts","sourceRoot":"","sources":["../../src/recorder/browser-recorder.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAU,MAAM,YAAY,CAAC;AAGhD,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,KAAK,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAgG7F"}
1
+ {"version":3,"file":"browser-recorder.d.ts","sourceRoot":"","sources":["../../src/recorder/browser-recorder.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAU,MAAM,YAAY,CAAC;AAGhD,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,KAAK,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAkBD,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAoG7F"}
@@ -3,6 +3,18 @@ import { logger } from '../utils/logger.js';
3
3
  const MAX_ENTRIES = 10_000;
4
4
  const MAX_RESPONSE_BODY_BYTES = 5 * 1024 * 1024; // 5 MB
5
5
  const SKIP_BODY_MIME_TYPES = ['image/', 'video/', 'audio/', 'font/', 'application/octet-stream'];
6
+ // Playwright resource types that are large-by-nature; skip body capture for
7
+ // them at the header level rather than buffering and discarding afterwards.
8
+ const SKIP_BODY_RESOURCE_TYPES = new Set([
9
+ 'image',
10
+ 'media',
11
+ 'font',
12
+ 'stylesheet',
13
+ 'websocket',
14
+ 'eventsource',
15
+ 'manifest',
16
+ 'texttrack',
17
+ ]);
6
18
  export async function recordBrowserSession(options) {
7
19
  const idleTimeout = options.timeout ?? 5 * 60 * 1000;
8
20
  const entries = [];
@@ -27,14 +39,16 @@ export async function recordBrowserSession(options) {
27
39
  // Capture responses
28
40
  page.on('response', async (response) => {
29
41
  lastActivityTime = Date.now();
30
- if (entries.length >= MAX_ENTRIES)
31
- return;
32
42
  const request = response.request();
33
43
  const pending = pendingRequests.get(request);
34
44
  if (!pending)
35
45
  return;
36
- pendingRequests.delete(request);
46
+ // Always free the pending entry, even when we drop this response below.
47
+ // Returning before the delete (e.g. at the MAX_ENTRIES cap) leaks the
48
+ // pendingRequests map across a long interactive session.
37
49
  try {
50
+ if (entries.length >= MAX_ENTRIES)
51
+ return;
38
52
  const entry = await buildHarEntry(request, response, pending.startTime);
39
53
  entries.push(entry);
40
54
  if (entries.length === MAX_ENTRIES) {
@@ -44,6 +58,9 @@ export async function recordBrowserSession(options) {
44
58
  catch {
45
59
  // Some responses can't be read (e.g., redirects, aborted)
46
60
  }
61
+ finally {
62
+ pendingRequests.delete(request);
63
+ }
47
64
  });
48
65
  if (headless) {
49
66
  // Non-interactive capture: load the page, then auto-visit any extra
@@ -143,14 +160,29 @@ async function buildHarEntry(request, response, startTime) {
143
160
  name,
144
161
  value,
145
162
  }));
146
- // Response body — skip large or binary responses
163
+ // Response body — skip large or binary responses BEFORE buffering. The cap
164
+ // must be enforced at the header/resource-type level: once `response.body()`
165
+ // resolves, Playwright has already buffered the whole response into memory,
166
+ // so a post-hoc `body.length` check does nothing to protect us against a
167
+ // missing/dishonest Content-Length. We therefore skip body capture for
168
+ // large-by-type resources and for responses whose declared length exceeds
169
+ // the cap, and only fall back to reading when the size is known and bounded.
147
170
  let responseText;
148
171
  const responseMimeType = response.headers()['content-type'] ?? '';
149
- const skipBody = SKIP_BODY_MIME_TYPES.some((m) => responseMimeType.startsWith(m));
150
- const contentLength = parseInt(response.headers()['content-length'] ?? '0', 10);
151
- if (!skipBody && contentLength <= MAX_RESPONSE_BODY_BYTES) {
172
+ const skipBody = SKIP_BODY_MIME_TYPES.some((m) => responseMimeType.startsWith(m)) ||
173
+ SKIP_BODY_RESOURCE_TYPES.has(request.resourceType());
174
+ const rawContentLength = response.headers()['content-length'];
175
+ const parsedLength = rawContentLength === undefined ? NaN : parseInt(rawContentLength, 10);
176
+ const lengthKnown = Number.isFinite(parsedLength) && parsedLength >= 0;
177
+ const tooLargeByHeader = lengthKnown && parsedLength > MAX_RESPONSE_BODY_BYTES;
178
+ // Only buffer when we won't blow the cap: either the declared length is known
179
+ // and within the cap, or the length is unknown but the resource type is one
180
+ // we expect to be small (text/json/xhr/fetch/document).
181
+ if (!skipBody && !tooLargeByHeader) {
152
182
  try {
153
183
  const body = await response.body();
184
+ // Backstop: a dishonest/absent Content-Length can still under-report, so
185
+ // discard anything that turns out to exceed the cap after the fact.
154
186
  if (body.length <= MAX_RESPONSE_BODY_BYTES) {
155
187
  responseText = body.toString('utf-8');
156
188
  }
@@ -1 +1 @@
1
- {"version":3,"file":"browser-recorder.js","sourceRoot":"","sources":["../../src/recorder/browser-recorder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-recorder.js","sourceRoot":"","sources":["../../src/recorder/browser-recorder.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tool-generator.d.ts","sourceRoot":"","sources":["../../src/site-transformer/tool-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAOnB,MAAM,kBAAkB,CAAC;AAI1B;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,kBAAkB,EAAE,CA8C5E"}
1
+ {"version":3,"file":"tool-generator.d.ts","sourceRoot":"","sources":["../../src/site-transformer/tool-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAOnB,MAAM,kBAAkB,CAAC;AAM1B;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,kBAAkB,EAAE,CA8C5E"}
@@ -8,6 +8,8 @@
8
8
  */
9
9
  import { buildBrowserLifecycleTools } from './browser-tools.js';
10
10
  import { toToolName, toToolTitle, toFileName, toFunctionName } from '../transformer/naming.js';
11
+ import { escapeTemplateLiteral } from '../utils/sanitize.js';
12
+ import { logger } from '../utils/logger.js';
11
13
  /**
12
14
  * Generate all tools from a site descriptor.
13
15
  */
@@ -53,24 +55,49 @@ export function generateSiteTools(site) {
53
55
  }
54
56
  // ─── Form Tool Builder ──────────────────────────────────────────────
55
57
  function buildFormTool(page, form, usedNames) {
56
- // Skip forms with no visible fields
57
- const visibleFields = form.fields.filter((f) => f.fieldType !== 'hidden');
58
+ // Skip forms with no visible fields. File inputs are dropped here (with a
59
+ // warning) rather than emitted: Playwright fills them via setInputFiles, not
60
+ // page.fill, and modeling them as strings would generate a tool that looks
61
+ // valid but can never upload a file. (D-H6 / D-M6)
62
+ const visibleFields = [];
63
+ for (const field of form.fields) {
64
+ if (field.fieldType === 'hidden')
65
+ continue;
66
+ if (field.fieldType === 'file') {
67
+ logger.warn(`Omitting file input "${field.name || field.label || '(unnamed)'}" from form ` +
68
+ `${form.semanticName || form.formId}: file uploads are not supported by generated ` +
69
+ `website tools.`);
70
+ continue;
71
+ }
72
+ visibleFields.push(field);
73
+ }
58
74
  if (visibleFields.length === 0)
59
75
  return null;
76
+ // Assign each field a stable, deduplicated MCP input key. The generated
77
+ // schema property and the generated handler key must agree, and the raw DOM
78
+ // name (e.g. "first-name", "user[email]") is rarely a valid/unique JS
79
+ // identifier. Selectors still drive the actual DOM, so the original name is
80
+ // not needed at fill time. (D-H4)
81
+ const keyedFields = assignInputKeys(visibleFields);
60
82
  // Generate tool name from semantic name or form fields
61
83
  const rawName = form.semanticName || inferFormName(form);
62
84
  const name = deduplicateName(toToolName(rawName), usedNames);
63
85
  // Build Zod input schema from form fields
64
- const inputSchemaCode = buildFormInputSchema(visibleFields);
86
+ const inputSchemaCode = buildFormInputSchema(keyedFields);
87
+ // Pass the file-filtered, input-key-annotated fields to the handler template
88
+ // so it iterates exactly the same set of keys the schema declares.
89
+ const handlerForm = { ...form, fields: keyedFields };
65
90
  // Collect all selectors this tool depends on
66
91
  const selectors = [form.selector];
67
- for (const field of visibleFields) {
92
+ for (const field of keyedFields) {
68
93
  selectors.push(field.selector);
69
94
  }
70
95
  if (form.submitButton)
71
96
  selectors.push(form.submitButton);
72
- const description = form.description ||
73
- `Fill and submit the ${form.semanticName || 'form'} on ${page.title || page.url}`;
97
+ // Built from untrusted crawled DOM text — emitted into a backtick literal in
98
+ // the site tool-handler templates, so escape for that context.
99
+ const description = escapeTemplateLiteral(form.description ||
100
+ `Fill and submit the ${form.semanticName || 'form'} on ${page.title || page.url}`);
74
101
  return {
75
102
  name,
76
103
  title: toToolTitle(rawName),
@@ -81,7 +108,7 @@ function buildFormTool(page, form, usedNames) {
81
108
  toolType: 'page-action',
82
109
  pageId: page.pageId,
83
110
  pageUrl: page.url,
84
- form,
111
+ form: handlerForm,
85
112
  selectors,
86
113
  returnsScreenshot: true,
87
114
  annotations: { readOnlyHint: false },
@@ -98,8 +125,8 @@ function buildButtonTool(page, button, usedNames) {
98
125
  const inputSchemaCode = `z.object({
99
126
  sessionId: z.string().max(64).regex(/^[a-zA-Z0-9_-]+$/).optional().describe('Browser session ID'),
100
127
  })`;
101
- const description = button.description ||
102
- `Click the "${button.text || button.ariaLabel}" button on ${page.title || page.url}`;
128
+ const description = escapeTemplateLiteral(button.description ||
129
+ `Click the "${button.text || button.ariaLabel}" button on ${page.title || page.url}`);
103
130
  return {
104
131
  name,
105
132
  title: toToolTitle(rawName),
@@ -126,7 +153,7 @@ function buildLinkTool(page, link, usedNames) {
126
153
  const inputSchemaCode = `z.object({
127
154
  sessionId: z.string().max(64).regex(/^[a-zA-Z0-9_-]+$/).optional().describe('Browser session ID'),
128
155
  })`;
129
- const description = `Navigate to "${link.text}" at ${link.href}`;
156
+ const description = escapeTemplateLiteral(`Navigate to "${link.text}" at ${link.href}`);
130
157
  return {
131
158
  name,
132
159
  title: toToolTitle(rawName),
@@ -149,7 +176,7 @@ function buildNavigationTool(rawName, url, description, usedNames) {
149
176
  return {
150
177
  name,
151
178
  title: toToolTitle(rawName),
152
- description,
179
+ description: escapeTemplateLiteral(description),
153
180
  inputSchemaCode: `z.object({
154
181
  sessionId: z.string().max(64).regex(/^[a-zA-Z0-9_-]+$/).optional().describe('Browser session ID'),
155
182
  })`,
@@ -171,10 +198,37 @@ function buildFormInputSchema(fields) {
171
198
  const zodType = mapFieldToZodType(field);
172
199
  const desc = field.label || field.placeholder || field.name;
173
200
  const required = field.required ? '' : '.optional()';
174
- fieldLines.push(` ${sanitizeFieldName(field.name)}: ${zodType}${required}.describe('${escapeString(desc)}'),`);
201
+ // Emit the property as a JSON-stringified key so any input key (incl. ones
202
+ // with hyphens or leading digits) is a valid, quoted object key — and use
203
+ // the SAME stable inputKey the handler reads.
204
+ const key = field.inputKey ?? sanitizeFieldName(field.name);
205
+ fieldLines.push(` ${JSON.stringify(key)}: ${zodType}${required}.describe('${escapeString(desc)}'),`);
175
206
  }
176
207
  return `z.object({\n${fieldLines.join('\n')}\n})`;
177
208
  }
209
+ /**
210
+ * Build a Zod enum from a select/radio field's options. <select> options carry
211
+ * distinct labels and submit *values*; Playwright's selectOption matches by
212
+ * value, so the schema must validate against values, not visible labels.
213
+ */
214
+ function buildOptionEnum(field) {
215
+ // Prefer the label/value pairs (values are what get submitted/matched).
216
+ if (field.optionPairs && field.optionPairs.length > 0) {
217
+ const values = field.optionPairs.map((o) => o.value);
218
+ const unique = [...new Set(values)];
219
+ if (unique.length > 0) {
220
+ const opts = unique.map((v) => `'${escapeString(v)}'`).join(', ');
221
+ return `z.enum([${opts}])`;
222
+ }
223
+ }
224
+ // Fallback for older descriptors that only captured labels.
225
+ if (field.options && field.options.length > 0) {
226
+ const unique = [...new Set(field.options)];
227
+ const opts = unique.map((o) => `'${escapeString(o)}'`).join(', ');
228
+ return `z.enum([${opts}])`;
229
+ }
230
+ return null;
231
+ }
178
232
  function mapFieldToZodType(field) {
179
233
  switch (field.fieldType) {
180
234
  case 'email':
@@ -187,17 +241,9 @@ function mapFieldToZodType(field) {
187
241
  case 'url':
188
242
  return 'z.string().url()';
189
243
  case 'select':
190
- if (field.options && field.options.length > 0) {
191
- const opts = field.options.map((o) => `'${escapeString(o)}'`).join(', ');
192
- return `z.enum([${opts}])`;
193
- }
194
- return 'z.string()';
244
+ return buildOptionEnum(field) ?? 'z.string()';
195
245
  case 'radio':
196
- if (field.options && field.options.length > 0) {
197
- const opts = field.options.map((o) => `'${escapeString(o)}'`).join(', ');
198
- return `z.enum([${opts}])`;
199
- }
200
- return 'z.string()';
246
+ return buildOptionEnum(field) ?? 'z.string()';
201
247
  default:
202
248
  return 'z.string()';
203
249
  }
@@ -240,6 +286,28 @@ function sanitizeFieldName(name) {
240
286
  const sanitized = name.replace(/[^a-zA-Z0-9_]/g, '_').replace(/^[0-9]/, '_$&');
241
287
  return sanitized || '_field';
242
288
  }
289
+ /**
290
+ * Return clones of the given fields, each annotated with a stable, unique
291
+ * `inputKey`. Sanitization can map distinct DOM names onto the same key
292
+ * (e.g. `foo-bar` and `foo_bar`), which would otherwise produce duplicate
293
+ * schema properties and a key the handler can't disambiguate; collisions are
294
+ * resolved by appending a numeric suffix. The handler and schema both read
295
+ * this key, so they always agree.
296
+ */
297
+ function assignInputKeys(fields) {
298
+ const usedKeys = new Set(['sessionId']);
299
+ return fields.map((field) => {
300
+ const base = sanitizeFieldName(field.name || field.label || 'field');
301
+ let candidate = base;
302
+ let suffix = 2;
303
+ while (usedKeys.has(candidate)) {
304
+ candidate = `${base}_${suffix}`;
305
+ suffix++;
306
+ }
307
+ usedKeys.add(candidate);
308
+ return { ...field, inputKey: candidate };
309
+ });
310
+ }
243
311
  function escapeString(str) {
244
312
  return str.replace(/\\/g, '\\\\').replace(/'/g, "\\'").replace(/\n/g, ' ');
245
313
  }