@structured-world/gitlab-mcp 6.41.1 → 6.41.2

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.
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env node
2
+ interface JsonSchemaProperty {
3
+ type?: string;
4
+ properties?: Record<string, JsonSchemaProperty>;
5
+ oneOf?: JsonSchemaProperty[];
6
+ enum?: unknown[];
7
+ const?: unknown;
8
+ description?: string;
9
+ [key: string]: unknown;
10
+ }
11
+ interface ActionInfo {
12
+ name: string;
13
+ description: string;
14
+ }
15
+ interface MarkerMatch {
16
+ toolName: string;
17
+ startIdx: number;
18
+ endIdx: number;
19
+ }
20
+ declare function extractActions(schema: JsonSchemaProperty): ActionInfo[];
21
+ declare function generateActionsTable(actions: ActionInfo[]): string;
22
+ declare function findMarkers(content: string): MarkerMatch[];
23
+ declare function processFile(filePath: string, toolSchemas: Map<string, JsonSchemaProperty>, content?: string): boolean;
24
+ export declare function main(): void;
25
+ export { extractActions, generateActionsTable, findMarkers, processFile };
26
+ export type { JsonSchemaProperty, ActionInfo, MarkerMatch };
@@ -0,0 +1,194 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.main = main;
38
+ exports.extractActions = extractActions;
39
+ exports.generateActionsTable = generateActionsTable;
40
+ exports.findMarkers = findMarkers;
41
+ exports.processFile = processFile;
42
+ const fs = __importStar(require("fs"));
43
+ const path = __importStar(require("path"));
44
+ const registry_manager_js_1 = require("../registry-manager.js");
45
+ const ACTION_DESCRIPTIONS = {
46
+ list: "List items with filtering and pagination",
47
+ get: "Get a single item by ID",
48
+ create: "Create a new item",
49
+ update: "Update an existing item",
50
+ delete: "Delete an item",
51
+ search: "Search for items",
52
+ diffs: "Get file changes/diffs",
53
+ compare: "Compare two branches or commits",
54
+ merge: "Merge a merge request",
55
+ approve: "Approve a merge request",
56
+ unapprove: "Remove approval from a merge request",
57
+ cancel: "Cancel a running operation",
58
+ retry: "Retry a failed operation",
59
+ play: "Run a manual job",
60
+ publish: "Publish draft notes",
61
+ resolve: "Resolve a discussion thread",
62
+ disable: "Disable the integration",
63
+ test: "Test a webhook",
64
+ };
65
+ function extractActions(schema) {
66
+ const actions = [];
67
+ if (schema.oneOf && Array.isArray(schema.oneOf)) {
68
+ for (const branch of schema.oneOf) {
69
+ const actionProp = branch.properties?.action;
70
+ const actionName = actionProp?.const;
71
+ if (actionName) {
72
+ const description = actionProp?.description ??
73
+ ACTION_DESCRIPTIONS[actionName] ??
74
+ `Perform ${actionName} operation`;
75
+ actions.push({ name: actionName, description });
76
+ }
77
+ }
78
+ return actions;
79
+ }
80
+ const actionProp = schema.properties?.action;
81
+ if (actionProp?.enum && Array.isArray(actionProp.enum)) {
82
+ for (const actionName of actionProp.enum) {
83
+ if (typeof actionName === "string") {
84
+ const description = ACTION_DESCRIPTIONS[actionName] ?? `Perform ${actionName} operation`;
85
+ actions.push({ name: actionName, description });
86
+ }
87
+ }
88
+ }
89
+ return actions;
90
+ }
91
+ function generateActionsTable(actions) {
92
+ const lines = [];
93
+ lines.push("| Action | Description |");
94
+ lines.push("|--------|-------------|");
95
+ for (const action of actions) {
96
+ const desc = action.description.replace(/\\/g, "\\\\").replace(/\|/g, "\\|");
97
+ lines.push(`| \`${action.name}\` | ${desc} |`);
98
+ }
99
+ return lines.join("\n");
100
+ }
101
+ function findMarkers(content) {
102
+ const markers = [];
103
+ const startPattern = /<!-- @autogen:tool (\S+) -->/g;
104
+ const endPattern = "<!-- @autogen:end -->";
105
+ let match;
106
+ while ((match = startPattern.exec(content)) !== null) {
107
+ const toolName = match[1];
108
+ const startIdx = match.index;
109
+ const afterStart = startIdx + match[0].length;
110
+ const endIdx = content.indexOf(endPattern, afterStart);
111
+ if (endIdx === -1) {
112
+ throw new Error(`Missing <!-- @autogen:end --> for tool "${toolName}"`);
113
+ }
114
+ markers.push({
115
+ toolName,
116
+ startIdx,
117
+ endIdx: endIdx + endPattern.length,
118
+ });
119
+ }
120
+ return markers;
121
+ }
122
+ function processFile(filePath, toolSchemas, content) {
123
+ const fileContent = content ?? fs.readFileSync(filePath, "utf8");
124
+ const markers = findMarkers(fileContent);
125
+ if (markers.length === 0)
126
+ return false;
127
+ let result = fileContent;
128
+ for (let i = markers.length - 1; i >= 0; i--) {
129
+ const marker = markers[i];
130
+ const schema = toolSchemas.get(marker.toolName);
131
+ if (!schema) {
132
+ throw new Error(`Unknown tool "${marker.toolName}" in ${filePath}. ` +
133
+ `Available tools: ${Array.from(toolSchemas.keys()).sort().join(", ")}`);
134
+ }
135
+ const actions = extractActions(schema);
136
+ if (actions.length === 0) {
137
+ throw new Error(`Tool "${marker.toolName}" has no extractable actions in ${filePath}`);
138
+ }
139
+ const table = generateActionsTable(actions);
140
+ const startTag = `<!-- @autogen:tool ${marker.toolName} -->`;
141
+ const endTag = "<!-- @autogen:end -->";
142
+ const replacement = `${startTag}\n${table}\n${endTag}`;
143
+ result = result.slice(0, marker.startIdx) + replacement + result.slice(marker.endIdx);
144
+ }
145
+ if (result !== fileContent) {
146
+ fs.writeFileSync(filePath, result, "utf8");
147
+ return true;
148
+ }
149
+ return false;
150
+ }
151
+ function main() {
152
+ let projectRoot = process.cwd();
153
+ while (!fs.existsSync(path.join(projectRoot, "package.json"))) {
154
+ const parent = path.dirname(projectRoot);
155
+ if (parent === projectRoot)
156
+ break;
157
+ projectRoot = parent;
158
+ }
159
+ const docsToolsDir = path.join(projectRoot, "docs", "tools");
160
+ if (!fs.existsSync(docsToolsDir)) {
161
+ console.error(`Error: docs/tools/ directory not found at ${docsToolsDir}`);
162
+ process.exit(1);
163
+ }
164
+ const registryManager = registry_manager_js_1.RegistryManager.getInstance();
165
+ const allTools = registryManager.getAllToolDefinitionsUnfiltered();
166
+ const toolSchemas = new Map();
167
+ for (const tool of allTools) {
168
+ toolSchemas.set(tool.name, tool.inputSchema);
169
+ }
170
+ const mdFiles = fs
171
+ .readdirSync(docsToolsDir)
172
+ .filter(f => f.endsWith(".md"))
173
+ .map(f => path.join(docsToolsDir, f));
174
+ let modifiedCount = 0;
175
+ let markerCount = 0;
176
+ for (const filePath of mdFiles) {
177
+ const content = fs.readFileSync(filePath, "utf8");
178
+ const markers = findMarkers(content);
179
+ markerCount += markers.length;
180
+ if (markers.length > 0) {
181
+ const modified = processFile(filePath, toolSchemas, content);
182
+ if (modified) {
183
+ modifiedCount++;
184
+ const relPath = path.relative(projectRoot, filePath);
185
+ console.log(` Updated: ${relPath} (${markers.length} marker(s))`);
186
+ }
187
+ }
188
+ }
189
+ console.log(`inject-tool-refs: ${markerCount} marker(s) in ${mdFiles.length} file(s), ${modifiedCount} updated.`);
190
+ }
191
+ if (process.env.NODE_ENV !== "test") {
192
+ main();
193
+ }
194
+ //# sourceMappingURL=inject-tool-refs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inject-tool-refs.js","sourceRoot":"","sources":["../../../src/cli/inject-tool-refs.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+LA,oBAkDC;AAGQ,wCAAc;AAAE,oDAAoB;AAAE,kCAAW;AAAE,kCAAW;AAvOvE,uCAAyB;AACzB,2CAA6B;AAC7B,gEAAyD;AAwBzD,MAAM,mBAAmB,GAA2B;IAClD,IAAI,EAAE,0CAA0C;IAChD,GAAG,EAAE,yBAAyB;IAC9B,MAAM,EAAE,mBAAmB;IAC3B,MAAM,EAAE,yBAAyB;IACjC,MAAM,EAAE,gBAAgB;IACxB,MAAM,EAAE,kBAAkB;IAC1B,KAAK,EAAE,wBAAwB;IAC/B,OAAO,EAAE,iCAAiC;IAC1C,KAAK,EAAE,uBAAuB;IAC9B,OAAO,EAAE,yBAAyB;IAClC,SAAS,EAAE,sCAAsC;IACjD,MAAM,EAAE,4BAA4B;IACpC,KAAK,EAAE,0BAA0B;IACjC,IAAI,EAAE,kBAAkB;IACxB,OAAO,EAAE,qBAAqB;IAC9B,OAAO,EAAE,6BAA6B;IACtC,OAAO,EAAE,yBAAyB;IAClC,IAAI,EAAE,gBAAgB;CACvB,CAAC;AAMF,SAAS,cAAc,CAAC,MAA0B;IAChD,MAAM,OAAO,GAAiB,EAAE,CAAC;IAGjC,IAAI,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC;YAC7C,MAAM,UAAU,GAAG,UAAU,EAAE,KAA2B,CAAC;YAC3D,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,WAAW,GACd,UAAU,EAAE,WAAsB;oBACnC,mBAAmB,CAAC,UAAU,CAAC;oBAC/B,WAAW,UAAU,YAAY,CAAC;gBACpC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAGD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7C,IAAI,UAAU,EAAE,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,KAAK,MAAM,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;YACzC,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;gBACnC,MAAM,WAAW,GAAG,mBAAmB,CAAC,UAAU,CAAC,IAAI,WAAW,UAAU,YAAY,CAAC;gBACzF,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAKD,SAAS,oBAAoB,CAAC,OAAqB;IACjD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACvC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACvC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC7E,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,IAAI,QAAQ,IAAI,IAAI,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAKD,SAAS,WAAW,CAAC,OAAe;IAClC,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,MAAM,YAAY,GAAG,+BAA+B,CAAC;IACrD,MAAM,UAAU,GAAG,uBAAuB,CAAC;IAE3C,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC;QAC7B,MAAM,UAAU,GAAG,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAE9C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACvD,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,2CAA2C,QAAQ,GAAG,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,CAAC,IAAI,CAAC;YACX,QAAQ;YACR,QAAQ;YACR,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM;SACnC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAMD,SAAS,WAAW,CAClB,QAAgB,EAChB,WAA4C,EAC5C,OAAgB;IAEhB,MAAM,WAAW,GAAG,OAAO,IAAI,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IAEzC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAGvC,IAAI,MAAM,GAAG,WAAW,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEhD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,iBAAiB,MAAM,CAAC,QAAQ,QAAQ,QAAQ,IAAI;gBAClD,oBAAoB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACzE,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,SAAS,MAAM,CAAC,QAAQ,mCAAmC,QAAQ,EAAE,CAAC,CAAC;QACzF,CAAC;QAED,MAAM,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,sBAAsB,MAAM,CAAC,QAAQ,MAAM,CAAC;QAC7D,MAAM,MAAM,GAAG,uBAAuB,CAAC;QACvC,MAAM,WAAW,GAAG,GAAG,QAAQ,KAAK,KAAK,KAAK,MAAM,EAAE,CAAC;QAEvD,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxF,CAAC;IAED,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QAC3B,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAKD,SAAgB,IAAI;IAElB,IAAI,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACzC,IAAI,MAAM,KAAK,WAAW;YAAE,MAAM;QAClC,WAAW,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,6CAA6C,YAAY,EAAE,CAAC,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAGD,MAAM,eAAe,GAAG,qCAAe,CAAC,WAAW,EAAE,CAAC;IACtD,MAAM,QAAQ,GAAG,eAAe,CAAC,+BAA+B,EAAE,CAAC;IACnE,MAAM,WAAW,GAAG,IAAI,GAAG,EAA8B,CAAC;IAC1D,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAiC,CAAC,CAAC;IACrE,CAAC;IAGD,MAAM,OAAO,GAAG,EAAE;SACf,WAAW,CAAC,YAAY,CAAC;SACzB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;IAExC,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QACrC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;QAE9B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;YAC7D,IAAI,QAAQ,EAAE,CAAC;gBACb,aAAa,EAAE,CAAC;gBAChB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;gBACrD,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,KAAK,OAAO,CAAC,MAAM,aAAa,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CACT,qBAAqB,WAAW,iBAAiB,OAAO,CAAC,MAAM,aAAa,aAAa,WAAW,CACrG,CAAC;AACJ,CAAC;AAOD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;IACpC,IAAI,EAAE,CAAC;AACT,CAAC"}