scorecard-ai-mcp 1.0.0-alpha.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 (274) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +228 -0
  3. package/compat.d.mts +53 -0
  4. package/compat.d.mts.map +1 -0
  5. package/compat.d.ts +53 -0
  6. package/compat.d.ts.map +1 -0
  7. package/compat.js +351 -0
  8. package/compat.js.map +1 -0
  9. package/compat.mjs +338 -0
  10. package/compat.mjs.map +1 -0
  11. package/compat.test.d.mts +2 -0
  12. package/compat.test.d.mts.map +1 -0
  13. package/compat.test.d.ts +2 -0
  14. package/compat.test.d.ts.map +1 -0
  15. package/compat.test.js +950 -0
  16. package/compat.test.js.map +1 -0
  17. package/compat.test.mjs +948 -0
  18. package/compat.test.mjs.map +1 -0
  19. package/index.d.mts +2 -0
  20. package/index.d.mts.map +1 -0
  21. package/index.d.ts +2 -0
  22. package/index.d.ts.map +1 -0
  23. package/index.js +89 -0
  24. package/index.js.map +1 -0
  25. package/index.mjs +86 -0
  26. package/index.mjs.map +1 -0
  27. package/options.d.mts +9 -0
  28. package/options.d.mts.map +1 -0
  29. package/options.d.ts +9 -0
  30. package/options.d.ts.map +1 -0
  31. package/options.js +321 -0
  32. package/options.js.map +1 -0
  33. package/options.mjs +314 -0
  34. package/options.mjs.map +1 -0
  35. package/options.test.d.mts +2 -0
  36. package/options.test.d.mts.map +1 -0
  37. package/options.test.d.ts +2 -0
  38. package/options.test.d.ts.map +1 -0
  39. package/options.test.js +154 -0
  40. package/options.test.js.map +1 -0
  41. package/options.test.mjs +152 -0
  42. package/options.test.mjs.map +1 -0
  43. package/package.json +129 -0
  44. package/server.d.mts +33 -0
  45. package/server.d.mts.map +1 -0
  46. package/server.d.ts +33 -0
  47. package/server.d.ts.map +1 -0
  48. package/server.js +85 -0
  49. package/server.js.map +1 -0
  50. package/server.mjs +74 -0
  51. package/server.mjs.map +1 -0
  52. package/src/compat.test.ts +1068 -0
  53. package/src/compat.ts +437 -0
  54. package/src/index.ts +106 -0
  55. package/src/options.test.ts +193 -0
  56. package/src/options.ts +339 -0
  57. package/src/server.ts +98 -0
  58. package/src/tools/index.ts +129 -0
  59. package/src/tools/projects/list-projects.ts +39 -0
  60. package/src/tools/records/create-records.ts +47 -0
  61. package/src/tools/runs/create-runs.ts +46 -0
  62. package/src/tools/runs/update-runs.ts +44 -0
  63. package/src/tools/system-configs/create-system-configs.ts +59 -0
  64. package/src/tools/system-configs/get-system-configs.ts +34 -0
  65. package/src/tools/system-configs/list-system-configs.ts +42 -0
  66. package/src/tools/systems/create-systems.ts +52 -0
  67. package/src/tools/systems/delete-systems.ts +31 -0
  68. package/src/tools/systems/get-systems.ts +31 -0
  69. package/src/tools/systems/list-systems.ts +41 -0
  70. package/src/tools/systems/update-systems.ts +52 -0
  71. package/src/tools/testcases/create-testcases.ts +47 -0
  72. package/src/tools/testcases/delete-testcases.ts +35 -0
  73. package/src/tools/testcases/get-testcases.ts +31 -0
  74. package/src/tools/testcases/list-testcases.ts +41 -0
  75. package/src/tools/testcases/update-testcases.ts +35 -0
  76. package/src/tools/testsets/create-testsets.ts +73 -0
  77. package/src/tools/testsets/delete-testsets.ts +31 -0
  78. package/src/tools/testsets/get-testsets.ts +31 -0
  79. package/src/tools/testsets/list-testsets.ts +41 -0
  80. package/src/tools/testsets/update-testsets.ts +73 -0
  81. package/src/tools.ts +1 -0
  82. package/src/tsconfig.json +11 -0
  83. package/tools/index.d.mts +21 -0
  84. package/tools/index.d.mts.map +1 -0
  85. package/tools/index.d.ts +21 -0
  86. package/tools/index.d.ts.map +1 -0
  87. package/tools/index.js +99 -0
  88. package/tools/index.js.map +1 -0
  89. package/tools/index.mjs +92 -0
  90. package/tools/index.mjs.map +1 -0
  91. package/tools/projects/list-projects.d.mts +24 -0
  92. package/tools/projects/list-projects.d.mts.map +1 -0
  93. package/tools/projects/list-projects.d.ts +24 -0
  94. package/tools/projects/list-projects.d.ts.map +1 -0
  95. package/tools/projects/list-projects.js +33 -0
  96. package/tools/projects/list-projects.js.map +1 -0
  97. package/tools/projects/list-projects.mjs +29 -0
  98. package/tools/projects/list-projects.mjs.map +1 -0
  99. package/tools/records/create-records.d.mts +24 -0
  100. package/tools/records/create-records.d.mts.map +1 -0
  101. package/tools/records/create-records.d.ts +24 -0
  102. package/tools/records/create-records.d.ts.map +1 -0
  103. package/tools/records/create-records.js +44 -0
  104. package/tools/records/create-records.js.map +1 -0
  105. package/tools/records/create-records.mjs +40 -0
  106. package/tools/records/create-records.mjs.map +1 -0
  107. package/tools/runs/create-runs.d.mts +24 -0
  108. package/tools/runs/create-runs.d.mts.map +1 -0
  109. package/tools/runs/create-runs.d.ts +24 -0
  110. package/tools/runs/create-runs.d.ts.map +1 -0
  111. package/tools/runs/create-runs.js +43 -0
  112. package/tools/runs/create-runs.js.map +1 -0
  113. package/tools/runs/create-runs.mjs +39 -0
  114. package/tools/runs/create-runs.mjs.map +1 -0
  115. package/tools/runs/update-runs.d.mts +24 -0
  116. package/tools/runs/update-runs.d.mts.map +1 -0
  117. package/tools/runs/update-runs.d.ts +24 -0
  118. package/tools/runs/update-runs.d.ts.map +1 -0
  119. package/tools/runs/update-runs.js +41 -0
  120. package/tools/runs/update-runs.js.map +1 -0
  121. package/tools/runs/update-runs.mjs +37 -0
  122. package/tools/runs/update-runs.mjs.map +1 -0
  123. package/tools/system-configs/create-system-configs.d.mts +24 -0
  124. package/tools/system-configs/create-system-configs.d.mts.map +1 -0
  125. package/tools/system-configs/create-system-configs.d.ts +24 -0
  126. package/tools/system-configs/create-system-configs.d.ts.map +1 -0
  127. package/tools/system-configs/create-system-configs.js +54 -0
  128. package/tools/system-configs/create-system-configs.js.map +1 -0
  129. package/tools/system-configs/create-system-configs.mjs +50 -0
  130. package/tools/system-configs/create-system-configs.mjs.map +1 -0
  131. package/tools/system-configs/get-system-configs.d.mts +24 -0
  132. package/tools/system-configs/get-system-configs.d.mts.map +1 -0
  133. package/tools/system-configs/get-system-configs.d.ts +24 -0
  134. package/tools/system-configs/get-system-configs.d.ts.map +1 -0
  135. package/tools/system-configs/get-system-configs.js +31 -0
  136. package/tools/system-configs/get-system-configs.js.map +1 -0
  137. package/tools/system-configs/get-system-configs.mjs +27 -0
  138. package/tools/system-configs/get-system-configs.mjs.map +1 -0
  139. package/tools/system-configs/list-system-configs.d.mts +24 -0
  140. package/tools/system-configs/list-system-configs.d.mts.map +1 -0
  141. package/tools/system-configs/list-system-configs.d.ts +24 -0
  142. package/tools/system-configs/list-system-configs.d.ts.map +1 -0
  143. package/tools/system-configs/list-system-configs.js +36 -0
  144. package/tools/system-configs/list-system-configs.js.map +1 -0
  145. package/tools/system-configs/list-system-configs.mjs +32 -0
  146. package/tools/system-configs/list-system-configs.mjs.map +1 -0
  147. package/tools/systems/create-systems.d.mts +24 -0
  148. package/tools/systems/create-systems.d.mts.map +1 -0
  149. package/tools/systems/create-systems.d.ts +24 -0
  150. package/tools/systems/create-systems.d.ts.map +1 -0
  151. package/tools/systems/create-systems.js +48 -0
  152. package/tools/systems/create-systems.js.map +1 -0
  153. package/tools/systems/create-systems.mjs +44 -0
  154. package/tools/systems/create-systems.mjs.map +1 -0
  155. package/tools/systems/delete-systems.d.mts +24 -0
  156. package/tools/systems/delete-systems.d.mts.map +1 -0
  157. package/tools/systems/delete-systems.d.ts +24 -0
  158. package/tools/systems/delete-systems.d.ts.map +1 -0
  159. package/tools/systems/delete-systems.js +28 -0
  160. package/tools/systems/delete-systems.js.map +1 -0
  161. package/tools/systems/delete-systems.mjs +24 -0
  162. package/tools/systems/delete-systems.mjs.map +1 -0
  163. package/tools/systems/get-systems.d.mts +24 -0
  164. package/tools/systems/get-systems.d.mts.map +1 -0
  165. package/tools/systems/get-systems.d.ts +24 -0
  166. package/tools/systems/get-systems.d.ts.map +1 -0
  167. package/tools/systems/get-systems.js +28 -0
  168. package/tools/systems/get-systems.js.map +1 -0
  169. package/tools/systems/get-systems.mjs +24 -0
  170. package/tools/systems/get-systems.mjs.map +1 -0
  171. package/tools/systems/list-systems.d.mts +24 -0
  172. package/tools/systems/list-systems.d.mts.map +1 -0
  173. package/tools/systems/list-systems.d.ts +24 -0
  174. package/tools/systems/list-systems.d.ts.map +1 -0
  175. package/tools/systems/list-systems.js +36 -0
  176. package/tools/systems/list-systems.js.map +1 -0
  177. package/tools/systems/list-systems.mjs +32 -0
  178. package/tools/systems/list-systems.mjs.map +1 -0
  179. package/tools/systems/update-systems.d.mts +24 -0
  180. package/tools/systems/update-systems.d.mts.map +1 -0
  181. package/tools/systems/update-systems.d.ts +24 -0
  182. package/tools/systems/update-systems.d.ts.map +1 -0
  183. package/tools/systems/update-systems.js +48 -0
  184. package/tools/systems/update-systems.js.map +1 -0
  185. package/tools/systems/update-systems.mjs +44 -0
  186. package/tools/systems/update-systems.mjs.map +1 -0
  187. package/tools/testcases/create-testcases.d.mts +24 -0
  188. package/tools/testcases/create-testcases.d.mts.map +1 -0
  189. package/tools/testcases/create-testcases.d.ts +24 -0
  190. package/tools/testcases/create-testcases.d.ts.map +1 -0
  191. package/tools/testcases/create-testcases.js +43 -0
  192. package/tools/testcases/create-testcases.js.map +1 -0
  193. package/tools/testcases/create-testcases.mjs +39 -0
  194. package/tools/testcases/create-testcases.mjs.map +1 -0
  195. package/tools/testcases/delete-testcases.d.mts +24 -0
  196. package/tools/testcases/delete-testcases.d.mts.map +1 -0
  197. package/tools/testcases/delete-testcases.d.ts +24 -0
  198. package/tools/testcases/delete-testcases.d.ts.map +1 -0
  199. package/tools/testcases/delete-testcases.js +32 -0
  200. package/tools/testcases/delete-testcases.js.map +1 -0
  201. package/tools/testcases/delete-testcases.mjs +28 -0
  202. package/tools/testcases/delete-testcases.mjs.map +1 -0
  203. package/tools/testcases/get-testcases.d.mts +24 -0
  204. package/tools/testcases/get-testcases.d.mts.map +1 -0
  205. package/tools/testcases/get-testcases.d.ts +24 -0
  206. package/tools/testcases/get-testcases.d.ts.map +1 -0
  207. package/tools/testcases/get-testcases.js +28 -0
  208. package/tools/testcases/get-testcases.js.map +1 -0
  209. package/tools/testcases/get-testcases.mjs +24 -0
  210. package/tools/testcases/get-testcases.mjs.map +1 -0
  211. package/tools/testcases/list-testcases.d.mts +24 -0
  212. package/tools/testcases/list-testcases.d.mts.map +1 -0
  213. package/tools/testcases/list-testcases.d.ts +24 -0
  214. package/tools/testcases/list-testcases.d.ts.map +1 -0
  215. package/tools/testcases/list-testcases.js +36 -0
  216. package/tools/testcases/list-testcases.js.map +1 -0
  217. package/tools/testcases/list-testcases.mjs +32 -0
  218. package/tools/testcases/list-testcases.mjs.map +1 -0
  219. package/tools/testcases/update-testcases.d.mts +24 -0
  220. package/tools/testcases/update-testcases.d.mts.map +1 -0
  221. package/tools/testcases/update-testcases.d.ts +24 -0
  222. package/tools/testcases/update-testcases.d.ts.map +1 -0
  223. package/tools/testcases/update-testcases.js +32 -0
  224. package/tools/testcases/update-testcases.js.map +1 -0
  225. package/tools/testcases/update-testcases.mjs +28 -0
  226. package/tools/testcases/update-testcases.mjs.map +1 -0
  227. package/tools/testsets/create-testsets.d.mts +24 -0
  228. package/tools/testsets/create-testsets.d.mts.map +1 -0
  229. package/tools/testsets/create-testsets.d.ts +24 -0
  230. package/tools/testsets/create-testsets.d.ts.map +1 -0
  231. package/tools/testsets/create-testsets.js +68 -0
  232. package/tools/testsets/create-testsets.js.map +1 -0
  233. package/tools/testsets/create-testsets.mjs +64 -0
  234. package/tools/testsets/create-testsets.mjs.map +1 -0
  235. package/tools/testsets/delete-testsets.d.mts +24 -0
  236. package/tools/testsets/delete-testsets.d.mts.map +1 -0
  237. package/tools/testsets/delete-testsets.d.ts +24 -0
  238. package/tools/testsets/delete-testsets.d.ts.map +1 -0
  239. package/tools/testsets/delete-testsets.js +28 -0
  240. package/tools/testsets/delete-testsets.js.map +1 -0
  241. package/tools/testsets/delete-testsets.mjs +24 -0
  242. package/tools/testsets/delete-testsets.mjs.map +1 -0
  243. package/tools/testsets/get-testsets.d.mts +24 -0
  244. package/tools/testsets/get-testsets.d.mts.map +1 -0
  245. package/tools/testsets/get-testsets.d.ts +24 -0
  246. package/tools/testsets/get-testsets.d.ts.map +1 -0
  247. package/tools/testsets/get-testsets.js +28 -0
  248. package/tools/testsets/get-testsets.js.map +1 -0
  249. package/tools/testsets/get-testsets.mjs +24 -0
  250. package/tools/testsets/get-testsets.mjs.map +1 -0
  251. package/tools/testsets/list-testsets.d.mts +24 -0
  252. package/tools/testsets/list-testsets.d.mts.map +1 -0
  253. package/tools/testsets/list-testsets.d.ts +24 -0
  254. package/tools/testsets/list-testsets.d.ts.map +1 -0
  255. package/tools/testsets/list-testsets.js +36 -0
  256. package/tools/testsets/list-testsets.js.map +1 -0
  257. package/tools/testsets/list-testsets.mjs +32 -0
  258. package/tools/testsets/list-testsets.mjs.map +1 -0
  259. package/tools/testsets/update-testsets.d.mts +24 -0
  260. package/tools/testsets/update-testsets.d.mts.map +1 -0
  261. package/tools/testsets/update-testsets.d.ts +24 -0
  262. package/tools/testsets/update-testsets.d.ts.map +1 -0
  263. package/tools/testsets/update-testsets.js +68 -0
  264. package/tools/testsets/update-testsets.js.map +1 -0
  265. package/tools/testsets/update-testsets.mjs +64 -0
  266. package/tools/testsets/update-testsets.mjs.map +1 -0
  267. package/tools.d.mts +2 -0
  268. package/tools.d.mts.map +1 -0
  269. package/tools.d.ts +2 -0
  270. package/tools.d.ts.map +1 -0
  271. package/tools.js +18 -0
  272. package/tools.js.map +1 -0
  273. package/tools.mjs +2 -0
  274. package/tools.mjs.map +1 -0
package/compat.js ADDED
@@ -0,0 +1,351 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.applyCompatibilityTransformations = exports.removeFormats = exports.removeAnyOf = exports.inlineRefs = exports.removeTopLevelUnions = exports.truncateToolNames = exports.parseEmbeddedJSON = exports.defaultClientCapabilities = void 0;
7
+ const ajv_1 = __importDefault(require("ajv"));
8
+ const ajv = new ajv_1.default();
9
+ exports.defaultClientCapabilities = {
10
+ topLevelUnions: true,
11
+ validJson: true,
12
+ refs: true,
13
+ unions: true,
14
+ formats: true,
15
+ toolNameLength: undefined,
16
+ };
17
+ /**
18
+ * Attempts to parse strings into JSON objects if initial schema
19
+ * validation fails.
20
+ */
21
+ function parseEmbeddedJSON(args, schema) {
22
+ if (ajv.validate(schema, args)) {
23
+ return args;
24
+ }
25
+ let updated = false;
26
+ const newArgs = Object.assign({}, args);
27
+ for (const [key, value] of Object.entries(newArgs)) {
28
+ if (typeof value === 'string') {
29
+ try {
30
+ const parsed = JSON.parse(value);
31
+ newArgs[key] = parsed;
32
+ updated = true;
33
+ }
34
+ catch (e) {
35
+ // Not valid JSON, leave as is
36
+ }
37
+ }
38
+ }
39
+ if (updated) {
40
+ return newArgs;
41
+ }
42
+ return args;
43
+ }
44
+ exports.parseEmbeddedJSON = parseEmbeddedJSON;
45
+ /**
46
+ * Truncates tool names to the specified length while ensuring uniqueness.
47
+ * If truncation would cause duplicate names, appends a number to make them unique.
48
+ */
49
+ function truncateToolNames(names, maxLength) {
50
+ if (maxLength <= 0) {
51
+ return new Map();
52
+ }
53
+ const renameMap = new Map();
54
+ const usedNames = new Set();
55
+ const toTruncate = names.filter((name) => name.length > maxLength);
56
+ if (toTruncate.length === 0) {
57
+ return renameMap;
58
+ }
59
+ const willCollide = new Set(toTruncate.map((name) => name.slice(0, maxLength - 1))).size < toTruncate.length;
60
+ if (!willCollide) {
61
+ for (const name of toTruncate) {
62
+ const truncatedName = name.slice(0, maxLength);
63
+ renameMap.set(name, truncatedName);
64
+ }
65
+ }
66
+ else {
67
+ const baseLength = maxLength - 1;
68
+ for (const name of toTruncate) {
69
+ const baseName = name.slice(0, baseLength);
70
+ let counter = 1;
71
+ while (usedNames.has(baseName + counter)) {
72
+ counter++;
73
+ }
74
+ const finalName = baseName + counter;
75
+ renameMap.set(name, finalName);
76
+ usedNames.add(finalName);
77
+ }
78
+ }
79
+ return renameMap;
80
+ }
81
+ exports.truncateToolNames = truncateToolNames;
82
+ /**
83
+ * Removes top-level unions from a tool by splitting it into multiple tools,
84
+ * one for each variant in the union.
85
+ */
86
+ function removeTopLevelUnions(tool) {
87
+ const inputSchema = tool.inputSchema;
88
+ const variants = inputSchema.anyOf;
89
+ if (!variants || !Array.isArray(variants) || variants.length === 0) {
90
+ return [tool];
91
+ }
92
+ const defs = inputSchema.$defs || {};
93
+ return variants.map((variant, index) => {
94
+ const variantSchema = {
95
+ ...inputSchema,
96
+ ...variant,
97
+ type: 'object',
98
+ properties: {
99
+ ...(inputSchema.properties || {}),
100
+ ...(variant.properties || {}),
101
+ },
102
+ };
103
+ delete variantSchema.anyOf;
104
+ if (!variantSchema['description']) {
105
+ variantSchema['description'] = tool.description;
106
+ }
107
+ const usedDefs = findUsedDefs(variant, defs);
108
+ if (Object.keys(usedDefs).length > 0) {
109
+ variantSchema.$defs = usedDefs;
110
+ }
111
+ else {
112
+ delete variantSchema.$defs;
113
+ }
114
+ return {
115
+ ...tool,
116
+ name: `${tool.name}_${toSnakeCase(variant['title'] || `variant${index + 1}`)}`,
117
+ description: variant['description'] || tool.description,
118
+ inputSchema: variantSchema,
119
+ };
120
+ });
121
+ }
122
+ exports.removeTopLevelUnions = removeTopLevelUnions;
123
+ function findUsedDefs(schema, defs) {
124
+ const usedDefs = {};
125
+ if (typeof schema !== 'object' || schema === null) {
126
+ return usedDefs;
127
+ }
128
+ if (schema.$ref) {
129
+ const refParts = schema.$ref.split('/');
130
+ if (refParts[0] === '#' && refParts[1] === '$defs' && refParts[2]) {
131
+ const defName = refParts[2];
132
+ const def = defs[defName];
133
+ if (def) {
134
+ usedDefs[defName] = def;
135
+ Object.assign(usedDefs, findUsedDefs(def, defs));
136
+ }
137
+ }
138
+ return usedDefs;
139
+ }
140
+ for (const key in schema) {
141
+ if (key !== '$defs' && typeof schema[key] === 'object' && schema[key] !== null) {
142
+ Object.assign(usedDefs, findUsedDefs(schema[key], defs));
143
+ }
144
+ }
145
+ return usedDefs;
146
+ }
147
+ /**
148
+ * Inlines all $refs in a schema, eliminating $defs.
149
+ * If a circular reference is detected, the circular property is removed.
150
+ */
151
+ function inlineRefs(schema) {
152
+ if (!schema || typeof schema !== 'object') {
153
+ return schema;
154
+ }
155
+ const clonedSchema = { ...schema };
156
+ const defs = schema.$defs || {};
157
+ delete clonedSchema.$defs;
158
+ const result = inlineRefsRecursive(clonedSchema, defs, new Set());
159
+ // The top level can never be null
160
+ return result === null ? {} : result;
161
+ }
162
+ exports.inlineRefs = inlineRefs;
163
+ function inlineRefsRecursive(schema, defs, refPath) {
164
+ if (!schema || typeof schema !== 'object') {
165
+ return schema;
166
+ }
167
+ if (Array.isArray(schema)) {
168
+ return schema.map((item) => {
169
+ const processed = inlineRefsRecursive(item, defs, refPath);
170
+ return processed === null ? {} : processed;
171
+ });
172
+ }
173
+ const result = { ...schema };
174
+ if ('$ref' in result && typeof result.$ref === 'string') {
175
+ if (result.$ref.startsWith('#/$defs/')) {
176
+ const refName = result.$ref.split('/').pop();
177
+ const def = defs[refName];
178
+ // If we've already seen this ref in our path, we have a circular reference
179
+ if (refPath.has(result.$ref)) {
180
+ // For circular references, we completely remove the property
181
+ // by returning null. The parent will remove it.
182
+ return null;
183
+ }
184
+ if (def) {
185
+ const newRefPath = new Set(refPath);
186
+ newRefPath.add(result.$ref);
187
+ const inlinedDef = inlineRefsRecursive({ ...def }, defs, newRefPath);
188
+ if (inlinedDef === null) {
189
+ return { ...result };
190
+ }
191
+ // Merge the inlined definition with the original schema's properties
192
+ // but preserve things like description, etc.
193
+ const { $ref, ...rest } = result;
194
+ return { ...inlinedDef, ...rest };
195
+ }
196
+ }
197
+ // Keep external refs as-is
198
+ return result;
199
+ }
200
+ for (const key in result) {
201
+ if (result[key] && typeof result[key] === 'object') {
202
+ const processed = inlineRefsRecursive(result[key], defs, refPath);
203
+ if (processed === null) {
204
+ // Remove properties that would cause circular references
205
+ delete result[key];
206
+ }
207
+ else {
208
+ result[key] = processed;
209
+ }
210
+ }
211
+ }
212
+ return result;
213
+ }
214
+ /**
215
+ * Removes anyOf fields from a schema, using only the first variant.
216
+ */
217
+ function removeAnyOf(schema) {
218
+ if (!schema || typeof schema !== 'object') {
219
+ return schema;
220
+ }
221
+ if (Array.isArray(schema)) {
222
+ return schema.map((item) => removeAnyOf(item));
223
+ }
224
+ const result = { ...schema };
225
+ if ('anyOf' in result && Array.isArray(result.anyOf) && result.anyOf.length > 0) {
226
+ const firstVariant = result.anyOf[0];
227
+ if (firstVariant && typeof firstVariant === 'object') {
228
+ // Special handling for properties to ensure deep merge
229
+ if (firstVariant.properties && result.properties) {
230
+ result.properties = {
231
+ ...result.properties,
232
+ ...firstVariant.properties,
233
+ };
234
+ }
235
+ else if (firstVariant.properties) {
236
+ result.properties = { ...firstVariant.properties };
237
+ }
238
+ for (const key in firstVariant) {
239
+ if (key !== 'properties') {
240
+ result[key] = firstVariant[key];
241
+ }
242
+ }
243
+ }
244
+ delete result.anyOf;
245
+ }
246
+ for (const key in result) {
247
+ if (result[key] && typeof result[key] === 'object') {
248
+ result[key] = removeAnyOf(result[key]);
249
+ }
250
+ }
251
+ return result;
252
+ }
253
+ exports.removeAnyOf = removeAnyOf;
254
+ /**
255
+ * Removes format fields from a schema and appends them to the description.
256
+ */
257
+ function removeFormats(schema, formatsCapability) {
258
+ if (formatsCapability) {
259
+ return schema;
260
+ }
261
+ if (!schema || typeof schema !== 'object') {
262
+ return schema;
263
+ }
264
+ if (Array.isArray(schema)) {
265
+ return schema.map((item) => removeFormats(item, formatsCapability));
266
+ }
267
+ const result = { ...schema };
268
+ if ('format' in result && typeof result['format'] === 'string') {
269
+ const formatStr = `(format: "${result['format']}")`;
270
+ if ('description' in result && typeof result['description'] === 'string') {
271
+ result['description'] = `${result['description']} ${formatStr}`;
272
+ }
273
+ else {
274
+ result['description'] = formatStr;
275
+ }
276
+ delete result['format'];
277
+ }
278
+ for (const key in result) {
279
+ if (result[key] && typeof result[key] === 'object') {
280
+ result[key] = removeFormats(result[key], formatsCapability);
281
+ }
282
+ }
283
+ return result;
284
+ }
285
+ exports.removeFormats = removeFormats;
286
+ /**
287
+ * Applies all compatibility transformations to the endpoints based on the provided capabilities.
288
+ */
289
+ function applyCompatibilityTransformations(endpoints, capabilities) {
290
+ let transformedEndpoints = [...endpoints];
291
+ // Handle top-level unions first as this changes tool names
292
+ if (!capabilities.topLevelUnions) {
293
+ const newEndpoints = [];
294
+ for (const endpoint of transformedEndpoints) {
295
+ const variantTools = removeTopLevelUnions(endpoint.tool);
296
+ if (variantTools.length === 1) {
297
+ newEndpoints.push(endpoint);
298
+ }
299
+ else {
300
+ for (const variantTool of variantTools) {
301
+ newEndpoints.push({
302
+ ...endpoint,
303
+ tool: variantTool,
304
+ });
305
+ }
306
+ }
307
+ }
308
+ transformedEndpoints = newEndpoints;
309
+ }
310
+ if (capabilities.toolNameLength) {
311
+ const toolNames = transformedEndpoints.map((endpoint) => endpoint.tool.name);
312
+ const renameMap = truncateToolNames(toolNames, capabilities.toolNameLength);
313
+ transformedEndpoints = transformedEndpoints.map((endpoint) => ({
314
+ ...endpoint,
315
+ tool: {
316
+ ...endpoint.tool,
317
+ name: renameMap.get(endpoint.tool.name) ?? endpoint.tool.name,
318
+ },
319
+ }));
320
+ }
321
+ if (!capabilities.refs || !capabilities.unions || !capabilities.formats) {
322
+ transformedEndpoints = transformedEndpoints.map((endpoint) => {
323
+ let schema = endpoint.tool.inputSchema;
324
+ if (!capabilities.refs) {
325
+ schema = inlineRefs(schema);
326
+ }
327
+ if (!capabilities.unions) {
328
+ schema = removeAnyOf(schema);
329
+ }
330
+ if (!capabilities.formats) {
331
+ schema = removeFormats(schema, capabilities.formats);
332
+ }
333
+ return {
334
+ ...endpoint,
335
+ tool: {
336
+ ...endpoint.tool,
337
+ inputSchema: schema,
338
+ },
339
+ };
340
+ });
341
+ }
342
+ return transformedEndpoints;
343
+ }
344
+ exports.applyCompatibilityTransformations = applyCompatibilityTransformations;
345
+ function toSnakeCase(str) {
346
+ return str
347
+ .replace(/\s+/g, '_')
348
+ .replace(/([a-z])([A-Z])/g, '$1_$2')
349
+ .toLowerCase();
350
+ }
351
+ //# sourceMappingURL=compat.js.map
package/compat.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compat.js","sourceRoot":"","sources":["src/compat.ts"],"names":[],"mappings":"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"}