@structured-world/gitlab-mcp 6.8.0 → 6.9.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 (108) hide show
  1. package/LICENSE +202 -21
  2. package/LICENSE.MIT +21 -0
  3. package/README.md +149 -1
  4. package/dist/src/config.d.ts +5 -0
  5. package/dist/src/config.js +88 -1
  6. package/dist/src/config.js.map +1 -1
  7. package/dist/src/entities/core/registry.js +68 -63
  8. package/dist/src/entities/core/registry.js.map +1 -1
  9. package/dist/src/entities/core/schema-readonly.d.ts +93 -36
  10. package/dist/src/entities/core/schema-readonly.js +146 -121
  11. package/dist/src/entities/core/schema-readonly.js.map +1 -1
  12. package/dist/src/entities/core/schema.d.ts +33 -23
  13. package/dist/src/entities/core/schema.js +65 -60
  14. package/dist/src/entities/core/schema.js.map +1 -1
  15. package/dist/src/entities/files/registry.js +14 -21
  16. package/dist/src/entities/files/registry.js.map +1 -1
  17. package/dist/src/entities/files/schema-readonly.d.ts +8 -7
  18. package/dist/src/entities/files/schema-readonly.js +20 -25
  19. package/dist/src/entities/files/schema-readonly.js.map +1 -1
  20. package/dist/src/entities/files/schema.d.ts +22 -15
  21. package/dist/src/entities/files/schema.js +32 -73
  22. package/dist/src/entities/files/schema.js.map +1 -1
  23. package/dist/src/entities/integrations/registry.js +3 -0
  24. package/dist/src/entities/integrations/registry.js.map +1 -1
  25. package/dist/src/entities/integrations/schema.d.ts +114 -8
  26. package/dist/src/entities/integrations/schema.js +27 -9
  27. package/dist/src/entities/integrations/schema.js.map +1 -1
  28. package/dist/src/entities/labels/registry.js +8 -7
  29. package/dist/src/entities/labels/registry.js.map +1 -1
  30. package/dist/src/entities/labels/schema-readonly.d.ts +8 -7
  31. package/dist/src/entities/labels/schema-readonly.js +20 -18
  32. package/dist/src/entities/labels/schema-readonly.js.map +1 -1
  33. package/dist/src/entities/labels/schema.d.ts +15 -8
  34. package/dist/src/entities/labels/schema.js +36 -27
  35. package/dist/src/entities/labels/schema.js.map +1 -1
  36. package/dist/src/entities/milestones/registry.js +7 -8
  37. package/dist/src/entities/milestones/registry.js.map +1 -1
  38. package/dist/src/entities/milestones/schema-readonly.d.ts +25 -10
  39. package/dist/src/entities/milestones/schema-readonly.js +47 -26
  40. package/dist/src/entities/milestones/schema-readonly.js.map +1 -1
  41. package/dist/src/entities/milestones/schema.d.ts +19 -9
  42. package/dist/src/entities/milestones/schema.js +31 -20
  43. package/dist/src/entities/milestones/schema.js.map +1 -1
  44. package/dist/src/entities/mrs/registry.js +75 -79
  45. package/dist/src/entities/mrs/registry.js.map +1 -1
  46. package/dist/src/entities/mrs/schema-readonly.d.ts +36 -23
  47. package/dist/src/entities/mrs/schema-readonly.js +197 -338
  48. package/dist/src/entities/mrs/schema-readonly.js.map +1 -1
  49. package/dist/src/entities/mrs/schema.d.ts +113 -37
  50. package/dist/src/entities/mrs/schema.js +140 -258
  51. package/dist/src/entities/mrs/schema.js.map +1 -1
  52. package/dist/src/entities/pipelines/registry.js +10 -4
  53. package/dist/src/entities/pipelines/registry.js.map +1 -1
  54. package/dist/src/entities/pipelines/schema-readonly.d.ts +30 -14
  55. package/dist/src/entities/pipelines/schema-readonly.js +62 -52
  56. package/dist/src/entities/pipelines/schema-readonly.js.map +1 -1
  57. package/dist/src/entities/pipelines/schema.d.ts +23 -16
  58. package/dist/src/entities/pipelines/schema.js +44 -26
  59. package/dist/src/entities/pipelines/schema.js.map +1 -1
  60. package/dist/src/entities/snippets/registry.js +79 -67
  61. package/dist/src/entities/snippets/registry.js.map +1 -1
  62. package/dist/src/entities/snippets/schema-readonly.d.ts +8 -9
  63. package/dist/src/entities/snippets/schema-readonly.js +30 -35
  64. package/dist/src/entities/snippets/schema-readonly.js.map +1 -1
  65. package/dist/src/entities/snippets/schema.d.ts +7 -11
  66. package/dist/src/entities/snippets/schema.js +31 -65
  67. package/dist/src/entities/snippets/schema.js.map +1 -1
  68. package/dist/src/entities/variables/registry.js +9 -5
  69. package/dist/src/entities/variables/registry.js.map +1 -1
  70. package/dist/src/entities/variables/schema-readonly.d.ts +9 -9
  71. package/dist/src/entities/variables/schema-readonly.js +22 -18
  72. package/dist/src/entities/variables/schema-readonly.js.map +1 -1
  73. package/dist/src/entities/variables/schema.d.ts +24 -7
  74. package/dist/src/entities/variables/schema.js +67 -38
  75. package/dist/src/entities/variables/schema.js.map +1 -1
  76. package/dist/src/entities/webhooks/registry.js +48 -46
  77. package/dist/src/entities/webhooks/registry.js.map +1 -1
  78. package/dist/src/entities/webhooks/schema-readonly.d.ts +9 -8
  79. package/dist/src/entities/webhooks/schema-readonly.js +14 -9
  80. package/dist/src/entities/webhooks/schema-readonly.js.map +1 -1
  81. package/dist/src/entities/webhooks/schema.d.ts +79 -26
  82. package/dist/src/entities/webhooks/schema.js +70 -61
  83. package/dist/src/entities/webhooks/schema.js.map +1 -1
  84. package/dist/src/entities/wiki/registry.js +7 -4
  85. package/dist/src/entities/wiki/registry.js.map +1 -1
  86. package/dist/src/entities/wiki/schema-readonly.d.ts +7 -7
  87. package/dist/src/entities/wiki/schema-readonly.js +11 -15
  88. package/dist/src/entities/wiki/schema-readonly.js.map +1 -1
  89. package/dist/src/entities/wiki/schema.d.ts +19 -8
  90. package/dist/src/entities/wiki/schema.js +32 -29
  91. package/dist/src/entities/wiki/schema.js.map +1 -1
  92. package/dist/src/entities/workitems/registry.js +7 -8
  93. package/dist/src/entities/workitems/registry.js.map +1 -1
  94. package/dist/src/entities/workitems/schema-readonly.d.ts +7 -8
  95. package/dist/src/entities/workitems/schema-readonly.js +12 -14
  96. package/dist/src/entities/workitems/schema-readonly.js.map +1 -1
  97. package/dist/src/entities/workitems/schema.d.ts +17 -11
  98. package/dist/src/entities/workitems/schema.js +25 -25
  99. package/dist/src/entities/workitems/schema.js.map +1 -1
  100. package/dist/src/registry-manager.js +22 -11
  101. package/dist/src/registry-manager.js.map +1 -1
  102. package/dist/src/utils/schema-utils.d.ts +28 -0
  103. package/dist/src/utils/schema-utils.js +244 -0
  104. package/dist/src/utils/schema-utils.js.map +1 -0
  105. package/dist/structured-world-gitlab-mcp-6.9.0.tgz +0 -0
  106. package/dist/tsconfig.build.tsbuildinfo +1 -1
  107. package/package.json +2 -2
  108. package/dist/structured-world-gitlab-mcp-6.8.0.tgz +0 -0
@@ -41,77 +41,87 @@ const z = __importStar(require("zod"));
41
41
  const schema_readonly_1 = require("./schema-readonly");
42
42
  const schema_1 = require("./schema");
43
43
  const gitlab_api_1 = require("../../utils/gitlab-api");
44
- const ManageSnippetSchema = z.discriminatedUnion("action", [
45
- schema_readonly_1.GetSnippetSchema,
46
- schema_1.CreateSnippetSchema,
47
- schema_1.UpdateSnippetSchema,
48
- schema_1.DeleteSnippetSchema,
49
- ]);
44
+ const config_1 = require("../../config");
50
45
  exports.snippetsToolRegistry = new Map([
51
46
  [
52
- "list_snippets",
47
+ "browse_snippets",
53
48
  {
54
- name: "list_snippets",
55
- description: "List GitLab code snippets with flexible scoping. Use scope='personal' for current user's snippets, scope='project' for project-specific snippets (requires projectId), or scope='public' to discover all public snippets. Filter by visibility level (private/internal/public) and creation date. Snippets are reusable code blocks, configs, or text that support versioning and can be shared.",
56
- inputSchema: z.toJSONSchema(schema_readonly_1.ListSnippetsSchema),
49
+ name: "browse_snippets",
50
+ description: 'BROWSE GitLab code snippets. Actions: "list" shows snippets by scope (personal/project/public) with filtering, "get" retrieves single snippet metadata or raw content. Snippets are reusable code blocks, configs, or text with versioning support.',
51
+ inputSchema: z.toJSONSchema(schema_readonly_1.BrowseSnippetsSchema),
57
52
  handler: async (args) => {
58
- const options = schema_readonly_1.ListSnippetsSchema.parse(args);
59
- let path;
60
- if (options.scope === "personal") {
61
- path = "snippets";
62
- }
63
- else if (options.scope === "public") {
64
- path = "snippets/public";
53
+ const input = schema_readonly_1.BrowseSnippetsSchema.parse(args);
54
+ if ((0, config_1.isActionDenied)("browse_snippets", input.action)) {
55
+ throw new Error(`Action '${input.action}' is not allowed for browse_snippets tool`);
65
56
  }
66
- else {
67
- if (!options.projectId) {
68
- throw new Error("projectId is required for project scope");
57
+ switch (input.action) {
58
+ case "list": {
59
+ const { action: _action, scope, projectId, ...queryOptions } = input;
60
+ let path;
61
+ if (scope === "personal") {
62
+ path = "snippets";
63
+ }
64
+ else if (scope === "public") {
65
+ path = "snippets/public";
66
+ }
67
+ else {
68
+ if (!projectId) {
69
+ throw new Error("projectId is required when scope is 'project'");
70
+ }
71
+ const encodedProjectId = encodeURIComponent(projectId);
72
+ path = `projects/${encodedProjectId}/snippets`;
73
+ }
74
+ return gitlab_api_1.gitlab.get(path, {
75
+ query: (0, gitlab_api_1.toQuery)(queryOptions, []),
76
+ });
69
77
  }
70
- const encodedProjectId = encodeURIComponent(options.projectId);
71
- path = `projects/${encodedProjectId}/snippets`;
72
- }
73
- return gitlab_api_1.gitlab.get(path, {
74
- query: (0, gitlab_api_1.toQuery)(options, ["scope", "projectId"]),
75
- });
76
- },
77
- },
78
- ],
79
- [
80
- "manage_snippet",
81
- {
82
- name: "manage_snippet",
83
- description: "Manage GitLab snippets with full CRUD operations via action parameter. action='read': retrieve snippet metadata or raw content. action='create': create new snippet with multiple files, visibility control. action='update': modify title, description, visibility, or files (supports create/update/delete/move file actions). action='delete': permanently remove snippet. Supports both personal and project snippets. Multi-file snippets enable organizing related code in one place.",
84
- inputSchema: z.toJSONSchema(ManageSnippetSchema),
85
- handler: async (args) => {
86
- const options = ManageSnippetSchema.parse(args);
87
- switch (options.action) {
88
- case "read": {
89
- const encodedId = options.id.toString();
78
+ case "get": {
79
+ const { id, projectId, raw } = input;
80
+ const encodedId = id.toString();
90
81
  let path;
91
- if (options.projectId) {
92
- const encodedProjectId = encodeURIComponent(options.projectId);
82
+ if (projectId) {
83
+ const encodedProjectId = encodeURIComponent(projectId);
93
84
  path = `projects/${encodedProjectId}/snippets/${encodedId}`;
94
85
  }
95
86
  else {
96
87
  path = `snippets/${encodedId}`;
97
88
  }
98
- if (options.raw) {
89
+ if (raw) {
99
90
  path = `${path}/raw`;
100
91
  }
101
92
  return gitlab_api_1.gitlab.get(path);
102
93
  }
94
+ default:
95
+ throw new Error(`Unknown action: ${input.action}`);
96
+ }
97
+ },
98
+ },
99
+ ],
100
+ [
101
+ "manage_snippet",
102
+ {
103
+ name: "manage_snippet",
104
+ description: 'MANAGE GitLab snippets. Actions: "create" creates new snippet with multiple files and visibility control, "update" modifies title/description/visibility/files (supports file create/update/delete/move), "delete" permanently removes snippet. Supports personal and project snippets.',
105
+ inputSchema: z.toJSONSchema(schema_1.ManageSnippetSchema),
106
+ handler: async (args) => {
107
+ const input = schema_1.ManageSnippetSchema.parse(args);
108
+ if ((0, config_1.isActionDenied)("manage_snippet", input.action)) {
109
+ throw new Error(`Action '${input.action}' is not allowed for manage_snippet tool`);
110
+ }
111
+ switch (input.action) {
103
112
  case "create": {
113
+ const { projectId, title, description, visibility, files } = input;
104
114
  const body = {
105
- title: options.title,
106
- visibility: options.visibility,
107
- files: options.files,
115
+ title,
116
+ visibility,
117
+ files,
108
118
  };
109
- if (options.description) {
110
- body.description = options.description;
119
+ if (description) {
120
+ body.description = description;
111
121
  }
112
122
  let path;
113
- if (options.projectId) {
114
- const encodedProjectId = encodeURIComponent(options.projectId);
123
+ if (projectId) {
124
+ const encodedProjectId = encodeURIComponent(projectId);
115
125
  path = `projects/${encodedProjectId}/snippets`;
116
126
  }
117
127
  else {
@@ -123,23 +133,24 @@ exports.snippetsToolRegistry = new Map([
123
133
  });
124
134
  }
125
135
  case "update": {
126
- const encodedId = options.id.toString();
136
+ const { id, projectId, title, description, visibility, files } = input;
137
+ const encodedId = id.toString();
127
138
  const body = {};
128
- if (options.title !== undefined) {
129
- body.title = options.title;
139
+ if (title !== undefined) {
140
+ body.title = title;
130
141
  }
131
- if (options.description !== undefined) {
132
- body.description = options.description;
142
+ if (description !== undefined) {
143
+ body.description = description;
133
144
  }
134
- if (options.visibility !== undefined) {
135
- body.visibility = options.visibility;
145
+ if (visibility !== undefined) {
146
+ body.visibility = visibility;
136
147
  }
137
- if (options.files !== undefined) {
138
- body.files = options.files;
148
+ if (files !== undefined) {
149
+ body.files = files;
139
150
  }
140
151
  let path;
141
- if (options.projectId) {
142
- const encodedProjectId = encodeURIComponent(options.projectId);
152
+ if (projectId) {
153
+ const encodedProjectId = encodeURIComponent(projectId);
143
154
  path = `projects/${encodedProjectId}/snippets/${encodedId}`;
144
155
  }
145
156
  else {
@@ -151,27 +162,28 @@ exports.snippetsToolRegistry = new Map([
151
162
  });
152
163
  }
153
164
  case "delete": {
154
- const encodedId = options.id.toString();
165
+ const { id, projectId } = input;
166
+ const encodedId = id.toString();
155
167
  let path;
156
- if (options.projectId) {
157
- const encodedProjectId = encodeURIComponent(options.projectId);
168
+ if (projectId) {
169
+ const encodedProjectId = encodeURIComponent(projectId);
158
170
  path = `projects/${encodedProjectId}/snippets/${encodedId}`;
159
171
  }
160
172
  else {
161
173
  path = `snippets/${encodedId}`;
162
174
  }
163
175
  await gitlab_api_1.gitlab.delete(path);
164
- return { deleted: true, id: options.id };
176
+ return { deleted: true, id };
165
177
  }
166
178
  default:
167
- throw new Error(`Unknown action: ${options.action}`);
179
+ throw new Error(`Unknown action: ${input.action}`);
168
180
  }
169
181
  },
170
182
  },
171
183
  ],
172
184
  ]);
173
185
  function getSnippetsReadOnlyToolNames() {
174
- return ["list_snippets"];
186
+ return ["browse_snippets"];
175
187
  }
176
188
  function getSnippetsToolDefinitions() {
177
189
  return Array.from(exports.snippetsToolRegistry.values());
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/entities/snippets/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/entities/snippets/registry.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { z } from "zod";
2
- export declare const ListSnippetsSchema: z.ZodObject<{
2
+ export declare const BrowseSnippetsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3
+ action: z.ZodLiteral<"list">;
3
4
  scope: z.ZodEnum<{
4
5
  project: "project";
5
6
  public: "public";
@@ -13,14 +14,12 @@ export declare const ListSnippetsSchema: z.ZodObject<{
13
14
  }>>;
14
15
  created_after: z.ZodOptional<z.ZodString>;
15
16
  created_before: z.ZodOptional<z.ZodString>;
17
+ per_page: z.ZodOptional<z.ZodNumber>;
16
18
  page: z.ZodOptional<z.ZodNumber>;
17
- per_page: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
18
- }, z.core.$strip>;
19
- export declare const GetSnippetSchema: z.ZodObject<{
20
- action: z.ZodLiteral<"read">;
21
- id: z.ZodNumber;
19
+ }, z.core.$strip>, z.ZodObject<{
20
+ action: z.ZodLiteral<"get">;
21
+ id: z.ZodPipe<z.ZodTransform<{}, unknown>, z.ZodCoercedString<unknown>>;
22
22
  projectId: z.ZodOptional<z.ZodString>;
23
23
  raw: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
24
- }, z.core.$strip>;
25
- export type ListSnippetsOptions = z.infer<typeof ListSnippetsSchema>;
26
- export type GetSnippetOptions = z.infer<typeof GetSnippetSchema>;
24
+ }, z.core.$strip>], "action">;
25
+ export type BrowseSnippetsInput = z.infer<typeof BrowseSnippetsSchema>;
@@ -1,51 +1,46 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GetSnippetSchema = exports.ListSnippetsSchema = void 0;
3
+ exports.BrowseSnippetsSchema = void 0;
4
4
  const zod_1 = require("zod");
5
- const shared_1 = require("../shared");
6
- const SnippetScopeSchema = zod_1.z.enum(["personal", "project", "public"]);
7
- exports.ListSnippetsSchema = zod_1.z
8
- .object({
9
- scope: SnippetScopeSchema.describe('The scope of snippets to list: "personal" for current user snippets, "project" for project-specific snippets, "public" for all public snippets'),
10
- projectId: zod_1.z
11
- .string()
12
- .optional()
13
- .describe("Project ID or URL-encoded path (required when scope is 'project'). Example: '123' or 'group/project'"),
14
- visibility: zod_1.z
15
- .enum(["private", "internal", "public"])
16
- .optional()
17
- .describe("Filter snippets by visibility level. Private: only author can see. Internal: authenticated users can see. Public: anyone can see"),
5
+ const utils_1 = require("../utils");
6
+ const SnippetScopeSchema = zod_1.z
7
+ .enum(["personal", "project", "public"])
8
+ .describe("The scope of snippets");
9
+ const SnippetVisibilitySchema = zod_1.z
10
+ .enum(["private", "internal", "public"])
11
+ .describe("Visibility level of snippets");
12
+ const projectIdField = zod_1.z
13
+ .string()
14
+ .optional()
15
+ .describe("Project ID or URL-encoded path (e.g., '123' or 'group/project')");
16
+ const ListSnippetsSchema = zod_1.z.object({
17
+ action: zod_1.z.literal("list").describe("List snippets with filtering by scope and visibility"),
18
+ scope: SnippetScopeSchema.describe('Scope of snippets: "personal" for current user, "project" for project-specific (requires projectId), "public" for all public snippets'),
19
+ projectId: projectIdField.describe("Project ID or URL-encoded path. Required when scope is 'project'"),
20
+ visibility: SnippetVisibilitySchema.optional().describe("Filter by visibility: private (author only), internal (authenticated users), public (everyone)"),
18
21
  created_after: zod_1.z
19
22
  .string()
20
23
  .optional()
21
- .describe("Return snippets created after this date (ISO 8601 format). Example: '2024-01-01T00:00:00Z'"),
24
+ .describe("Return snippets created after this date (ISO 8601). Example: '2024-01-01T00:00:00Z'"),
22
25
  created_before: zod_1.z
23
26
  .string()
24
27
  .optional()
25
- .describe("Return snippets created before this date (ISO 8601 format). Example: '2024-12-31T23:59:59Z'"),
26
- })
27
- .merge(shared_1.PaginationOptionsSchema)
28
- .refine(data => data.scope !== "project" || data.projectId, {
29
- message: "projectId is required when scope is 'project'",
30
- path: ["projectId"],
28
+ .describe("Return snippets created before this date (ISO 8601). Example: '2024-12-31T23:59:59Z'"),
29
+ per_page: zod_1.z.number().optional().describe("Number of items per page"),
30
+ page: zod_1.z.number().optional().describe("Page number"),
31
31
  });
32
- const GetSnippetActionSchema = zod_1.z.literal("read");
33
- exports.GetSnippetSchema = zod_1.z
34
- .object({
35
- action: GetSnippetActionSchema.describe("Must be 'read' for retrieving snippet details"),
36
- id: zod_1.z.number().int().positive().describe("The ID of the snippet to retrieve"),
37
- projectId: zod_1.z
38
- .string()
39
- .optional()
40
- .describe("Project ID or URL-encoded path (required for project snippets). Leave empty for personal snippets"),
32
+ const GetSnippetSchema = zod_1.z.object({
33
+ action: zod_1.z.literal("get").describe("Get single snippet details or raw content"),
34
+ id: utils_1.requiredId.describe("The ID of the snippet to retrieve"),
35
+ projectId: projectIdField.describe("Project ID or URL-encoded path. Required for project snippets, leave empty for personal snippets"),
41
36
  raw: zod_1.z
42
37
  .boolean()
43
38
  .optional()
44
39
  .default(false)
45
- .describe("Return raw content of the snippet files instead of metadata. Useful for downloading snippet content directly"),
46
- })
47
- .refine(data => !data.projectId || typeof data.projectId === "string", {
48
- message: "projectId must be a string when provided",
49
- path: ["projectId"],
40
+ .describe("Return raw content of snippet files instead of metadata"),
50
41
  });
42
+ exports.BrowseSnippetsSchema = zod_1.z.discriminatedUnion("action", [
43
+ ListSnippetsSchema,
44
+ GetSnippetSchema,
45
+ ]);
51
46
  //# sourceMappingURL=schema-readonly.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-readonly.js","sourceRoot":"","sources":["../../../../src/entities/snippets/schema-readonly.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,sCAAoD;AAKpD,MAAM,kBAAkB,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AAGxD,QAAA,kBAAkB,GAAG,OAAC;KAChC,MAAM,CAAC;IACN,KAAK,EAAE,kBAAkB,CAAC,QAAQ,CAChC,gJAAgJ,CACjJ;IACD,SAAS,EAAE,OAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,sGAAsG,CACvG;IACH,UAAU,EAAE,OAAC;SACV,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;SACvC,QAAQ,EAAE;SACV,QAAQ,CACP,kIAAkI,CACnI;IACH,aAAa,EAAE,OAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,4FAA4F,CAC7F;IACH,cAAc,EAAE,OAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,6FAA6F,CAC9F;CACJ,CAAC;KACD,KAAK,CAAC,gCAAuB,CAAC;KAC9B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE;IAC1D,OAAO,EAAE,+CAA+C;IACxD,IAAI,EAAE,CAAC,WAAW,CAAC;CACpB,CAAC,CAAC;AAGL,MAAM,sBAAsB,GAAG,OAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAGpC,QAAA,gBAAgB,GAAG,OAAC;KAC9B,MAAM,CAAC;IACN,MAAM,EAAE,sBAAsB,CAAC,QAAQ,CAAC,+CAA+C,CAAC;IACxF,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IAC7E,SAAS,EAAE,OAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,mGAAmG,CACpG;IACH,GAAG,EAAE,OAAC;SACH,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CACP,8GAA8G,CAC/G;CACJ,CAAC;KACD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;IACrE,OAAO,EAAE,0CAA0C;IACnD,IAAI,EAAE,CAAC,WAAW,CAAC;CACpB,CAAC,CAAC"}
1
+ {"version":3,"file":"schema-readonly.js","sourceRoot":"","sources":["../../../../src/entities/snippets/schema-readonly.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,oCAAsC;AAStC,MAAM,kBAAkB,GAAG,OAAC;KACzB,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;KACvC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;AAErC,MAAM,uBAAuB,GAAG,OAAC;KAC9B,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;KACvC,QAAQ,CAAC,8BAA8B,CAAC,CAAC;AAG5C,MAAM,cAAc,GAAG,OAAC;KACrB,MAAM,EAAE;KACR,QAAQ,EAAE;KACV,QAAQ,CAAC,iEAAiE,CAAC,CAAC;AAG/E,MAAM,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IAClC,MAAM,EAAE,OAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,sDAAsD,CAAC;IAC1F,KAAK,EAAE,kBAAkB,CAAC,QAAQ,CAChC,uIAAuI,CACxI;IACD,SAAS,EAAE,cAAc,CAAC,QAAQ,CAChC,kEAAkE,CACnE;IACD,UAAU,EAAE,uBAAuB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACrD,gGAAgG,CACjG;IACD,aAAa,EAAE,OAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,qFAAqF,CACtF;IACH,cAAc,EAAE,OAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,sFAAsF,CACvF;IACH,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACpE,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;CACpD,CAAC,CAAC;AAGH,MAAM,gBAAgB,GAAG,OAAC,CAAC,MAAM,CAAC;IAChC,MAAM,EAAE,OAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IAC9E,EAAE,EAAE,kBAAU,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IAC5D,SAAS,EAAE,cAAc,CAAC,QAAQ,CAChC,kGAAkG,CACnG;IACD,GAAG,EAAE,OAAC;SACH,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,yDAAyD,CAAC;CACvE,CAAC,CAAC;AAGU,QAAA,oBAAoB,GAAG,OAAC,CAAC,kBAAkB,CAAC,QAAQ,EAAE;IACjE,kBAAkB;IAClB,gBAAgB;CACjB,CAAC,CAAC"}
@@ -10,7 +10,7 @@ declare const SnippetFileSchema: z.ZodObject<{
10
10
  }>>;
11
11
  previous_path: z.ZodOptional<z.ZodString>;
12
12
  }, z.core.$strip>;
13
- export declare const CreateSnippetSchema: z.ZodObject<{
13
+ export declare const ManageSnippetSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
14
14
  action: z.ZodLiteral<"create">;
15
15
  projectId: z.ZodOptional<z.ZodString>;
16
16
  title: z.ZodString;
@@ -24,10 +24,9 @@ export declare const CreateSnippetSchema: z.ZodObject<{
24
24
  file_path: z.ZodString;
25
25
  content: z.ZodString;
26
26
  }, z.core.$strip>>;
27
- }, z.core.$strip>;
28
- export declare const UpdateSnippetSchema: z.ZodObject<{
27
+ }, z.core.$strip>, z.ZodObject<{
29
28
  action: z.ZodLiteral<"update">;
30
- id: z.ZodNumber;
29
+ id: z.ZodPipe<z.ZodTransform<{}, unknown>, z.ZodCoercedString<unknown>>;
31
30
  projectId: z.ZodOptional<z.ZodString>;
32
31
  title: z.ZodOptional<z.ZodString>;
33
32
  description: z.ZodOptional<z.ZodString>;
@@ -47,14 +46,11 @@ export declare const UpdateSnippetSchema: z.ZodObject<{
47
46
  }>>;
48
47
  previous_path: z.ZodOptional<z.ZodString>;
49
48
  }, z.core.$strip>>>;
50
- }, z.core.$strip>;
51
- export declare const DeleteSnippetSchema: z.ZodObject<{
49
+ }, z.core.$strip>, z.ZodObject<{
52
50
  action: z.ZodLiteral<"delete">;
53
- id: z.ZodNumber;
51
+ id: z.ZodPipe<z.ZodTransform<{}, unknown>, z.ZodCoercedString<unknown>>;
54
52
  projectId: z.ZodOptional<z.ZodString>;
55
- }, z.core.$strip>;
56
- export type CreateSnippetOptions = z.infer<typeof CreateSnippetSchema>;
57
- export type UpdateSnippetOptions = z.infer<typeof UpdateSnippetSchema>;
58
- export type DeleteSnippetOptions = z.infer<typeof DeleteSnippetSchema>;
53
+ }, z.core.$strip>], "action">;
54
+ export type ManageSnippetInput = z.infer<typeof ManageSnippetSchema>;
59
55
  export type SnippetFile = z.infer<typeof SnippetFileSchema>;
60
56
  export {};
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DeleteSnippetSchema = exports.UpdateSnippetSchema = exports.CreateSnippetSchema = void 0;
3
+ exports.ManageSnippetSchema = void 0;
4
4
  const zod_1 = require("zod");
5
+ const utils_1 = require("../utils");
5
6
  const flexibleVisibility = zod_1.z.preprocess(val => {
6
7
  if (typeof val === "string") {
7
8
  const normalized = val.toLowerCase().trim();
@@ -25,7 +26,7 @@ const SnippetFileSchema = zod_1.z.object({
25
26
  content: zod_1.z
26
27
  .string()
27
28
  .optional()
28
- .describe("The content of the file. Required for 'create' and 'update' actions. Can be empty string for placeholder files. For binary content, use base64 encoding"),
29
+ .describe("The content of the file. Required for 'create' and 'update' actions. Can be empty string for placeholder files"),
29
30
  action: zod_1.z
30
31
  .enum(["create", "update", "delete", "move"])
31
32
  .optional()
@@ -35,89 +36,54 @@ const SnippetFileSchema = zod_1.z.object({
35
36
  .optional()
36
37
  .describe("Original file path when using 'move' action to rename a file. Must match an existing file in the snippet"),
37
38
  });
38
- const CreateSnippetActionSchema = zod_1.z.literal("create");
39
- exports.CreateSnippetSchema = zod_1.z
40
- .object({
41
- action: CreateSnippetActionSchema.describe("Must be 'create' for creating a new snippet"),
42
- projectId: zod_1.z
43
- .string()
44
- .optional()
45
- .describe("Project ID or URL-encoded path to create a project snippet. Leave empty for a personal snippet"),
39
+ const projectIdField = zod_1.z
40
+ .string()
41
+ .optional()
42
+ .describe("Project ID or URL-encoded path. Leave empty for personal snippets");
43
+ const CreateSnippetSchema = zod_1.z.object({
44
+ action: zod_1.z.literal("create").describe("Create a new snippet with one or more files"),
45
+ projectId: projectIdField.describe("Project ID or URL-encoded path to create a project snippet. Leave empty for personal snippet"),
46
46
  title: zod_1.z
47
47
  .string()
48
48
  .min(1)
49
49
  .max(255)
50
- .describe("The title of the snippet. This is displayed in the snippet list and as the page title. Maximum 255 characters"),
50
+ .describe("The title of the snippet. Displayed in snippet list and as page title. Max 255 chars"),
51
51
  description: zod_1.z
52
52
  .string()
53
53
  .optional()
54
- .describe("Optional description explaining the purpose of the snippet. Supports markdown formatting"),
54
+ .describe("Optional description explaining the snippet purpose. Supports markdown"),
55
55
  visibility: flexibleVisibility
56
56
  .optional()
57
57
  .default("private")
58
- .describe("Visibility level: 'private' (only author), 'internal' (authenticated users), or 'public' (everyone). Defaults to 'private'"),
58
+ .describe("Visibility: 'private' (author only), 'internal' (authenticated users), 'public' (everyone). Defaults to 'private'"),
59
59
  files: zod_1.z
60
60
  .array(zod_1.z.object({
61
61
  file_path: zod_1.z.string().min(1),
62
62
  content: zod_1.z.string(),
63
63
  }))
64
64
  .min(1)
65
- .describe("Array of files to include in the snippet. At least one file is required. Each file needs file_path and content"),
66
- })
67
- .refine(data => data.files.length > 0, {
68
- message: "At least one file is required",
69
- path: ["files"],
65
+ .describe("Array of files to include. At least one file required. Each needs file_path and content"),
70
66
  });
71
- const UpdateSnippetActionSchema = zod_1.z.literal("update");
72
- exports.UpdateSnippetSchema = zod_1.z
73
- .object({
74
- action: UpdateSnippetActionSchema.describe("Must be 'update' for updating an existing snippet"),
75
- id: zod_1.z
76
- .number()
77
- .int()
78
- .positive()
79
- .describe("The ID of the snippet to update. Must be an existing snippet"),
80
- projectId: zod_1.z
81
- .string()
82
- .optional()
83
- .describe("Project ID or URL-encoded path (required for project snippets). Leave empty for personal snippets"),
84
- title: zod_1.z
85
- .string()
86
- .min(1)
87
- .max(255)
88
- .optional()
89
- .describe("Update the title of the snippet. Maximum 255 characters"),
90
- description: zod_1.z
91
- .string()
92
- .optional()
93
- .describe("Update the description of the snippet. Supports markdown formatting"),
94
- visibility: flexibleVisibility
95
- .optional()
96
- .describe("Update the visibility level of the snippet"),
67
+ const UpdateSnippetSchema = zod_1.z.object({
68
+ action: zod_1.z.literal("update").describe("Update an existing snippet metadata or files"),
69
+ id: utils_1.requiredId.describe("The ID of the snippet to update"),
70
+ projectId: projectIdField.describe("Project ID or URL-encoded path. Required for project snippets, leave empty for personal"),
71
+ title: zod_1.z.string().min(1).max(255).optional().describe("Update the snippet title. Max 255 chars"),
72
+ description: zod_1.z.string().optional().describe("Update the snippet description. Supports markdown"),
73
+ visibility: flexibleVisibility.optional().describe("Update the visibility level"),
97
74
  files: zod_1.z
98
75
  .array(SnippetFileSchema)
99
76
  .optional()
100
- .describe("Array of file operations to perform. Each file must specify an 'action': 'create' (add new file), 'update' (modify existing), 'delete' (remove file), or 'move' (rename file with previous_path)"),
101
- })
102
- .refine(data => {
103
- return (data.title !== undefined ||
104
- data.description !== undefined ||
105
- data.visibility !== undefined ||
106
- (data.files !== undefined && data.files.length > 0));
107
- }, {
108
- message: "At least one field must be provided to update (title, description, visibility, or files)",
77
+ .describe("Array of file operations. Each file must specify 'action': create/update/delete/move. Move requires previous_path"),
109
78
  });
110
- const DeleteSnippetActionSchema = zod_1.z.literal("delete");
111
- exports.DeleteSnippetSchema = zod_1.z.object({
112
- action: DeleteSnippetActionSchema.describe("Must be 'delete' for deleting a snippet"),
113
- id: zod_1.z
114
- .number()
115
- .int()
116
- .positive()
117
- .describe("The ID of the snippet to delete. This operation is permanent and cannot be undone"),
118
- projectId: zod_1.z
119
- .string()
120
- .optional()
121
- .describe("Project ID or URL-encoded path (required for project snippets). Leave empty for personal snippets"),
79
+ const DeleteSnippetSchema = zod_1.z.object({
80
+ action: zod_1.z.literal("delete").describe("Permanently delete a snippet"),
81
+ id: utils_1.requiredId.describe("The ID of the snippet to delete. This operation cannot be undone"),
82
+ projectId: projectIdField.describe("Project ID or URL-encoded path. Required for project snippets, leave empty for personal"),
122
83
  });
84
+ exports.ManageSnippetSchema = zod_1.z.discriminatedUnion("action", [
85
+ CreateSnippetSchema,
86
+ UpdateSnippetSchema,
87
+ DeleteSnippetSchema,
88
+ ]);
123
89
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/entities/snippets/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../src/entities/snippets/schema.ts"],"names":[],"mappings":"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"}
@@ -42,7 +42,7 @@ const schema_readonly_1 = require("./schema-readonly");
42
42
  const schema_1 = require("./schema");
43
43
  const gitlab_api_1 = require("../../utils/gitlab-api");
44
44
  const namespace_1 = require("../../utils/namespace");
45
- const utils_1 = require("../utils");
45
+ const config_1 = require("../../config");
46
46
  exports.variablesToolRegistry = new Map([
47
47
  [
48
48
  "browse_variables",
@@ -52,15 +52,17 @@ exports.variablesToolRegistry = new Map([
52
52
  inputSchema: z.toJSONSchema(schema_readonly_1.BrowseVariablesSchema),
53
53
  handler: async (args) => {
54
54
  const input = schema_readonly_1.BrowseVariablesSchema.parse(args);
55
+ if ((0, config_1.isActionDenied)("browse_variables", input.action)) {
56
+ throw new Error(`Action '${input.action}' is not allowed for browse_variables tool`);
57
+ }
55
58
  const { entityType, encodedPath } = await (0, namespace_1.resolveNamespaceForAPI)(input.namespace);
56
59
  switch (input.action) {
57
60
  case "list": {
58
- const { action: _action, namespace: _namespace, key: _key, filter: _filter, ...rest } = input;
61
+ const { action: _action, namespace: _namespace, ...rest } = input;
59
62
  const query = (0, gitlab_api_1.toQuery)(rest, []);
60
63
  return gitlab_api_1.gitlab.get(`${entityType}/${encodedPath}/variables`, { query });
61
64
  }
62
65
  case "get": {
63
- (0, utils_1.assertDefined)(input.key, "key");
64
66
  const query = {};
65
67
  if (input.filter?.environment_scope) {
66
68
  query["filter[environment_scope]"] = input.filter.environment_scope;
@@ -81,11 +83,13 @@ exports.variablesToolRegistry = new Map([
81
83
  inputSchema: z.toJSONSchema(schema_1.ManageVariableSchema),
82
84
  handler: async (args) => {
83
85
  const input = schema_1.ManageVariableSchema.parse(args);
86
+ if ((0, config_1.isActionDenied)("manage_variable", input.action)) {
87
+ throw new Error(`Action '${input.action}' is not allowed for manage_variable tool`);
88
+ }
84
89
  const { entityType, encodedPath } = await (0, namespace_1.resolveNamespaceForAPI)(input.namespace);
85
90
  switch (input.action) {
86
91
  case "create": {
87
- (0, utils_1.assertDefined)(input.value, "value");
88
- const { action: _action, namespace: _namespace, filter: _filter, ...body } = input;
92
+ const { action: _action, namespace: _namespace, ...body } = input;
89
93
  return gitlab_api_1.gitlab.post(`${entityType}/${encodedPath}/variables`, {
90
94
  body,
91
95
  contentType: "json",