@structured-world/gitlab-mcp 6.8.0 → 6.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/LICENSE +202 -21
  2. package/LICENSE.MIT +21 -0
  3. package/README.md +169 -1
  4. package/dist/src/cli/list-tools.d.ts +2 -0
  5. package/dist/src/cli/list-tools.js +768 -0
  6. package/dist/src/cli/list-tools.js.map +1 -0
  7. package/dist/src/config.d.ts +7 -0
  8. package/dist/src/config.js +96 -1
  9. package/dist/src/config.js.map +1 -1
  10. package/dist/src/entities/core/registry.js +68 -63
  11. package/dist/src/entities/core/registry.js.map +1 -1
  12. package/dist/src/entities/core/schema-readonly.d.ts +93 -36
  13. package/dist/src/entities/core/schema-readonly.js +146 -121
  14. package/dist/src/entities/core/schema-readonly.js.map +1 -1
  15. package/dist/src/entities/core/schema.d.ts +33 -23
  16. package/dist/src/entities/core/schema.js +65 -60
  17. package/dist/src/entities/core/schema.js.map +1 -1
  18. package/dist/src/entities/files/registry.js +14 -21
  19. package/dist/src/entities/files/registry.js.map +1 -1
  20. package/dist/src/entities/files/schema-readonly.d.ts +8 -7
  21. package/dist/src/entities/files/schema-readonly.js +20 -25
  22. package/dist/src/entities/files/schema-readonly.js.map +1 -1
  23. package/dist/src/entities/files/schema.d.ts +22 -15
  24. package/dist/src/entities/files/schema.js +32 -73
  25. package/dist/src/entities/files/schema.js.map +1 -1
  26. package/dist/src/entities/integrations/registry.js +3 -0
  27. package/dist/src/entities/integrations/registry.js.map +1 -1
  28. package/dist/src/entities/integrations/schema.d.ts +114 -8
  29. package/dist/src/entities/integrations/schema.js +27 -9
  30. package/dist/src/entities/integrations/schema.js.map +1 -1
  31. package/dist/src/entities/labels/registry.js +8 -7
  32. package/dist/src/entities/labels/registry.js.map +1 -1
  33. package/dist/src/entities/labels/schema-readonly.d.ts +8 -7
  34. package/dist/src/entities/labels/schema-readonly.js +20 -18
  35. package/dist/src/entities/labels/schema-readonly.js.map +1 -1
  36. package/dist/src/entities/labels/schema.d.ts +15 -8
  37. package/dist/src/entities/labels/schema.js +36 -27
  38. package/dist/src/entities/labels/schema.js.map +1 -1
  39. package/dist/src/entities/milestones/registry.js +7 -8
  40. package/dist/src/entities/milestones/registry.js.map +1 -1
  41. package/dist/src/entities/milestones/schema-readonly.d.ts +25 -10
  42. package/dist/src/entities/milestones/schema-readonly.js +47 -26
  43. package/dist/src/entities/milestones/schema-readonly.js.map +1 -1
  44. package/dist/src/entities/milestones/schema.d.ts +19 -9
  45. package/dist/src/entities/milestones/schema.js +31 -20
  46. package/dist/src/entities/milestones/schema.js.map +1 -1
  47. package/dist/src/entities/mrs/registry.js +75 -79
  48. package/dist/src/entities/mrs/registry.js.map +1 -1
  49. package/dist/src/entities/mrs/schema-readonly.d.ts +36 -23
  50. package/dist/src/entities/mrs/schema-readonly.js +197 -338
  51. package/dist/src/entities/mrs/schema-readonly.js.map +1 -1
  52. package/dist/src/entities/mrs/schema.d.ts +113 -37
  53. package/dist/src/entities/mrs/schema.js +140 -258
  54. package/dist/src/entities/mrs/schema.js.map +1 -1
  55. package/dist/src/entities/pipelines/registry.js +10 -4
  56. package/dist/src/entities/pipelines/registry.js.map +1 -1
  57. package/dist/src/entities/pipelines/schema-readonly.d.ts +30 -14
  58. package/dist/src/entities/pipelines/schema-readonly.js +62 -52
  59. package/dist/src/entities/pipelines/schema-readonly.js.map +1 -1
  60. package/dist/src/entities/pipelines/schema.d.ts +23 -16
  61. package/dist/src/entities/pipelines/schema.js +44 -26
  62. package/dist/src/entities/pipelines/schema.js.map +1 -1
  63. package/dist/src/entities/snippets/registry.js +79 -67
  64. package/dist/src/entities/snippets/registry.js.map +1 -1
  65. package/dist/src/entities/snippets/schema-readonly.d.ts +8 -9
  66. package/dist/src/entities/snippets/schema-readonly.js +30 -35
  67. package/dist/src/entities/snippets/schema-readonly.js.map +1 -1
  68. package/dist/src/entities/snippets/schema.d.ts +7 -11
  69. package/dist/src/entities/snippets/schema.js +31 -65
  70. package/dist/src/entities/snippets/schema.js.map +1 -1
  71. package/dist/src/entities/variables/registry.js +9 -5
  72. package/dist/src/entities/variables/registry.js.map +1 -1
  73. package/dist/src/entities/variables/schema-readonly.d.ts +9 -9
  74. package/dist/src/entities/variables/schema-readonly.js +22 -18
  75. package/dist/src/entities/variables/schema-readonly.js.map +1 -1
  76. package/dist/src/entities/variables/schema.d.ts +24 -7
  77. package/dist/src/entities/variables/schema.js +67 -38
  78. package/dist/src/entities/variables/schema.js.map +1 -1
  79. package/dist/src/entities/webhooks/registry.js +48 -46
  80. package/dist/src/entities/webhooks/registry.js.map +1 -1
  81. package/dist/src/entities/webhooks/schema-readonly.d.ts +9 -8
  82. package/dist/src/entities/webhooks/schema-readonly.js +14 -9
  83. package/dist/src/entities/webhooks/schema-readonly.js.map +1 -1
  84. package/dist/src/entities/webhooks/schema.d.ts +79 -26
  85. package/dist/src/entities/webhooks/schema.js +70 -61
  86. package/dist/src/entities/webhooks/schema.js.map +1 -1
  87. package/dist/src/entities/wiki/registry.js +7 -4
  88. package/dist/src/entities/wiki/registry.js.map +1 -1
  89. package/dist/src/entities/wiki/schema-readonly.d.ts +7 -7
  90. package/dist/src/entities/wiki/schema-readonly.js +11 -15
  91. package/dist/src/entities/wiki/schema-readonly.js.map +1 -1
  92. package/dist/src/entities/wiki/schema.d.ts +19 -8
  93. package/dist/src/entities/wiki/schema.js +32 -29
  94. package/dist/src/entities/wiki/schema.js.map +1 -1
  95. package/dist/src/entities/workitems/registry.js +7 -8
  96. package/dist/src/entities/workitems/registry.js.map +1 -1
  97. package/dist/src/entities/workitems/schema-readonly.d.ts +7 -8
  98. package/dist/src/entities/workitems/schema-readonly.js +12 -14
  99. package/dist/src/entities/workitems/schema-readonly.js.map +1 -1
  100. package/dist/src/entities/workitems/schema.d.ts +17 -11
  101. package/dist/src/entities/workitems/schema.js +25 -25
  102. package/dist/src/entities/workitems/schema.js.map +1 -1
  103. package/dist/src/registry-manager.d.ts +1 -0
  104. package/dist/src/registry-manager.js +45 -11
  105. package/dist/src/registry-manager.js.map +1 -1
  106. package/dist/src/utils/schema-utils.d.ts +28 -0
  107. package/dist/src/utils/schema-utils.js +240 -0
  108. package/dist/src/utils/schema-utils.js.map +1 -0
  109. package/dist/structured-world-gitlab-mcp-6.10.0.tgz +0 -0
  110. package/dist/tsconfig.build.tsbuildinfo +1 -1
  111. package/package.json +4 -4
  112. package/dist/structured-world-gitlab-mcp-6.8.0.tgz +0 -0
@@ -0,0 +1,240 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.filterDiscriminatedUnionActions = filterDiscriminatedUnionActions;
4
+ exports.flattenDiscriminatedUnion = flattenDiscriminatedUnion;
5
+ exports.applyDescriptionOverrides = applyDescriptionOverrides;
6
+ exports.transformToolSchema = transformToolSchema;
7
+ exports.shouldRemoveTool = shouldRemoveTool;
8
+ exports.extractActionsFromSchema = extractActionsFromSchema;
9
+ const config_1 = require("../config");
10
+ const logger_1 = require("../logger");
11
+ function filterDiscriminatedUnionActions(schema, toolName) {
12
+ const deniedActions = config_1.GITLAB_DENIED_ACTIONS.get(toolName.toLowerCase());
13
+ if (!schema.oneOf || !deniedActions || deniedActions.size === 0) {
14
+ return schema;
15
+ }
16
+ const result = JSON.parse(JSON.stringify(schema));
17
+ const originalOneOf = result.oneOf ?? [];
18
+ result.oneOf = originalOneOf.filter(branch => {
19
+ const actionProp = branch.properties?.action;
20
+ if (!actionProp)
21
+ return true;
22
+ if (actionProp.const) {
23
+ const isAllowed = !deniedActions.has(actionProp.const.toLowerCase());
24
+ if (!isAllowed) {
25
+ logger_1.logger.debug(`Tool '${toolName}': filtered out action '${actionProp.const}' from schema`);
26
+ }
27
+ return isAllowed;
28
+ }
29
+ if (actionProp.enum?.[0]) {
30
+ const isAllowed = !deniedActions.has(actionProp.enum[0].toLowerCase());
31
+ if (!isAllowed) {
32
+ logger_1.logger.debug(`Tool '${toolName}': filtered out action '${actionProp.enum[0]}' from schema`);
33
+ }
34
+ return isAllowed;
35
+ }
36
+ return true;
37
+ });
38
+ if (result.oneOf.length === 0) {
39
+ logger_1.logger.warn(`Tool '${toolName}': all actions filtered out!`);
40
+ return { type: "object", properties: {} };
41
+ }
42
+ return result;
43
+ }
44
+ function flattenDiscriminatedUnion(schema) {
45
+ if (!schema.oneOf || schema.oneOf.length === 0) {
46
+ return schema;
47
+ }
48
+ const allProperties = {};
49
+ const propertyBranches = new Map();
50
+ const actionValues = [];
51
+ const totalBranches = schema.oneOf.length;
52
+ const requiredInAllBranches = new Set();
53
+ let firstBranch = true;
54
+ for (const branch of schema.oneOf) {
55
+ if (!branch.properties)
56
+ continue;
57
+ const branchRequired = new Set(branch.required ?? []);
58
+ for (const [propName, propDef] of Object.entries(branch.properties)) {
59
+ if (propName === "action") {
60
+ if (propDef.const) {
61
+ actionValues.push(propDef.const);
62
+ }
63
+ else if (propDef.enum) {
64
+ actionValues.push(...propDef.enum);
65
+ }
66
+ continue;
67
+ }
68
+ if (!allProperties[propName]) {
69
+ allProperties[propName] = { ...propDef };
70
+ propertyBranches.set(propName, 1);
71
+ }
72
+ else {
73
+ propertyBranches.set(propName, (propertyBranches.get(propName) ?? 0) + 1);
74
+ const existingDesc = allProperties[propName].description ?? "";
75
+ if (propDef.description && propDef.description.length > existingDesc.length) {
76
+ allProperties[propName].description = propDef.description;
77
+ }
78
+ }
79
+ if (firstBranch) {
80
+ if (branchRequired.has(propName)) {
81
+ requiredInAllBranches.add(propName);
82
+ }
83
+ }
84
+ else {
85
+ if (!branchRequired.has(propName)) {
86
+ requiredInAllBranches.delete(propName);
87
+ }
88
+ }
89
+ }
90
+ firstBranch = false;
91
+ }
92
+ const flatSchema = {
93
+ type: "object",
94
+ properties: {
95
+ action: {
96
+ type: "string",
97
+ enum: [...new Set(actionValues)],
98
+ description: `Action to perform: ${[...new Set(actionValues)].join(", ")}`,
99
+ },
100
+ ...allProperties,
101
+ },
102
+ required: ["action", ...Array.from(requiredInAllBranches)],
103
+ };
104
+ for (const [propName, count] of propertyBranches) {
105
+ if (count < totalBranches && allProperties[propName]) {
106
+ const actionsUsingProp = [];
107
+ for (const branch of schema.oneOf) {
108
+ if (branch.properties?.[propName]) {
109
+ const actionProp = branch.properties.action;
110
+ if (actionProp?.const) {
111
+ actionsUsingProp.push(actionProp.const);
112
+ }
113
+ else if (actionProp?.enum?.[0]) {
114
+ actionsUsingProp.push(actionProp.enum[0]);
115
+ }
116
+ }
117
+ }
118
+ const propRef = flatSchema.properties?.[propName];
119
+ if (propRef) {
120
+ const currentDesc = propRef.description ?? "";
121
+ if (actionsUsingProp.length > 0 && !currentDesc.includes("Required for")) {
122
+ const actionList = actionsUsingProp.map(a => `'${a}'`).join(", ");
123
+ propRef.description =
124
+ currentDesc + (currentDesc ? " " : "") + `Required for ${actionList} action(s).`;
125
+ }
126
+ }
127
+ }
128
+ }
129
+ if (schema.$schema) {
130
+ flatSchema.$schema = schema.$schema;
131
+ }
132
+ return flatSchema;
133
+ }
134
+ function applyOverridesToProperties(properties, toolName, paramOverrides, actionOverrides) {
135
+ const lowerToolName = toolName.toLowerCase();
136
+ for (const [propName, prop] of Object.entries(properties)) {
137
+ const paramKey = `${lowerToolName}:${propName.toLowerCase()}`;
138
+ const override = paramOverrides.get(paramKey);
139
+ if (override) {
140
+ prop.description = override;
141
+ logger_1.logger.debug(`Applied param override for '${toolName}.${propName}': "${override}"`);
142
+ }
143
+ if (propName === "action") {
144
+ const actionKey = `${lowerToolName}:action`;
145
+ const actionOverride = actionOverrides.get(actionKey);
146
+ if (actionOverride) {
147
+ prop.description = actionOverride;
148
+ logger_1.logger.debug(`Applied action override for '${toolName}': "${actionOverride}"`);
149
+ }
150
+ }
151
+ }
152
+ }
153
+ function applyDescriptionOverrides(schema, toolName) {
154
+ const actionOverrides = (0, config_1.getActionDescriptionOverrides)();
155
+ const paramOverrides = (0, config_1.getParamDescriptionOverrides)();
156
+ const lowerToolName = toolName.toLowerCase();
157
+ const hasOverrides = [...paramOverrides.keys(), ...actionOverrides.keys()].some(key => key.startsWith(`${lowerToolName}:`));
158
+ if (!hasOverrides) {
159
+ return schema;
160
+ }
161
+ const result = JSON.parse(JSON.stringify(schema));
162
+ if (result.oneOf) {
163
+ for (const branch of result.oneOf) {
164
+ if (branch.properties) {
165
+ applyOverridesToProperties(branch.properties, toolName, paramOverrides, actionOverrides);
166
+ }
167
+ }
168
+ return result;
169
+ }
170
+ if (result.properties) {
171
+ applyOverridesToProperties(result.properties, toolName, paramOverrides, actionOverrides);
172
+ }
173
+ return result;
174
+ }
175
+ function getSchemaMode() {
176
+ return config_1.GITLAB_SCHEMA_MODE;
177
+ }
178
+ function transformToolSchema(toolName, inputSchema) {
179
+ let schema = inputSchema;
180
+ if (schema.oneOf) {
181
+ schema = filterDiscriminatedUnionActions(schema, toolName);
182
+ }
183
+ else if (schema.properties?.action?.enum) {
184
+ schema = filterFlatSchemaActions(schema, toolName);
185
+ }
186
+ schema = applyDescriptionOverrides(schema, toolName);
187
+ const schemaMode = getSchemaMode();
188
+ if (schemaMode === "flat" && schema.oneOf) {
189
+ schema = flattenDiscriminatedUnion(schema);
190
+ }
191
+ return schema;
192
+ }
193
+ function filterFlatSchemaActions(schema, toolName) {
194
+ const deniedActions = config_1.GITLAB_DENIED_ACTIONS.get(toolName.toLowerCase());
195
+ if (!deniedActions || deniedActions.size === 0) {
196
+ return schema;
197
+ }
198
+ const result = JSON.parse(JSON.stringify(schema));
199
+ if (result.properties?.action?.enum) {
200
+ const originalActions = result.properties.action.enum;
201
+ const filteredActions = originalActions.filter(action => !deniedActions.has(action.toLowerCase()));
202
+ if (filteredActions.length === 0) {
203
+ logger_1.logger.warn(`Tool '${toolName}': all actions filtered out from flat schema!`);
204
+ }
205
+ else if (filteredActions.length < originalActions.length) {
206
+ result.properties.action.enum = filteredActions;
207
+ result.properties.action.description = `Action to perform: ${filteredActions.join(", ")}`;
208
+ logger_1.logger.debug(`Tool '${toolName}': filtered flat schema actions [${originalActions.join(", ")}] -> [${filteredActions.join(", ")}]`);
209
+ }
210
+ }
211
+ return result;
212
+ }
213
+ function shouldRemoveTool(toolName, allActions) {
214
+ const deniedActions = config_1.GITLAB_DENIED_ACTIONS.get(toolName.toLowerCase());
215
+ if (!deniedActions || deniedActions.size === 0) {
216
+ return false;
217
+ }
218
+ const allowedActions = allActions.filter(action => !deniedActions.has(action.toLowerCase()));
219
+ return allowedActions.length === 0;
220
+ }
221
+ function extractActionsFromSchema(inputSchema) {
222
+ if (inputSchema.properties?.action?.enum) {
223
+ return inputSchema.properties.action.enum;
224
+ }
225
+ if (inputSchema.oneOf) {
226
+ const actions = [];
227
+ for (const branch of inputSchema.oneOf) {
228
+ const actionProp = branch.properties?.action;
229
+ if (actionProp?.const) {
230
+ actions.push(actionProp.const);
231
+ }
232
+ else if (actionProp?.enum?.[0]) {
233
+ actions.push(actionProp.enum[0]);
234
+ }
235
+ }
236
+ return actions;
237
+ }
238
+ return [];
239
+ }
240
+ //# sourceMappingURL=schema-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-utils.js","sourceRoot":"","sources":["../../../src/utils/schema-utils.ts"],"names":[],"mappings":"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"}