@zereight/mcp-gitlab 2.0.5 → 2.0.6

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.
package/build/schemas.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { flexibleBoolean, flexibleBooleanNullable } from "./customSchemas.js";
2
+ import { flexibleBoolean } from "./customSchemas.js";
3
3
  // Base schemas for common types
4
4
  export const GitLabAuthorSchema = z.object({
5
5
  name: z.string(),
@@ -36,7 +36,7 @@ export const GitLabPipelineSchema = z.object({
36
36
  label: z.string().optional(),
37
37
  group: z.string().optional(),
38
38
  tooltip: z.string().optional(),
39
- has_details: flexibleBoolean.optional(),
39
+ has_details: z.boolean().optional(),
40
40
  details_path: z.string().optional(),
41
41
  illustration: z
42
42
  .object({
@@ -57,7 +57,7 @@ export const GitLabPipelineJobSchema = z.object({
57
57
  stage: z.string(),
58
58
  name: z.string(),
59
59
  ref: z.string(),
60
- tag: flexibleBoolean,
60
+ tag: z.boolean(),
61
61
  coverage: z.coerce.number().nullable().optional(),
62
62
  created_at: z.string(),
63
63
  started_at: z.string().nullable().optional(),
@@ -98,7 +98,7 @@ export const GitLabPipelineTriggerJobSchema = z.object({
98
98
  stage: z.string(),
99
99
  name: z.string(),
100
100
  ref: z.string(),
101
- tag: flexibleBoolean,
101
+ tag: z.boolean(),
102
102
  coverage: z.number().nullable().optional(),
103
103
  created_at: z.string(),
104
104
  started_at: z.string().nullable().optional(),
@@ -135,13 +135,13 @@ export const GitLabPipelineTriggerJobSchema = z.object({
135
135
  })
136
136
  .optional(),
137
137
  web_url: z.string().optional(),
138
- allow_failure: flexibleBoolean.optional(),
139
- archived: flexibleBoolean.optional(),
138
+ allow_failure: z.boolean().optional(),
139
+ archived: z.boolean().optional(),
140
140
  source: z.string().optional(),
141
141
  erased_at: z.string().nullable().optional(),
142
142
  project: z
143
143
  .object({
144
- ci_job_token_scope_enabled: flexibleBoolean.optional(),
144
+ ci_job_token_scope_enabled: z.boolean().optional(),
145
145
  })
146
146
  .optional(),
147
147
  downstream_pipeline: z
@@ -189,7 +189,7 @@ export const ListPipelinesSchema = z
189
189
  .describe("The status of pipelines"),
190
190
  ref: z.string().optional().describe("The ref of pipelines"),
191
191
  sha: z.string().optional().describe("The SHA of pipelines"),
192
- yaml_errors: flexibleBoolean
192
+ yaml_errors: z.boolean()
193
193
  .optional()
194
194
  .describe("Returns pipelines with invalid configurations"),
195
195
  username: z.string().optional().describe("The username of the user who triggered pipelines"),
@@ -222,7 +222,7 @@ export const ListPipelineJobsSchema = z
222
222
  .enum(["created", "pending", "running", "failed", "success", "canceled", "skipped", "manual"])
223
223
  .optional()
224
224
  .describe("The scope of jobs to show"),
225
- include_retried: flexibleBoolean.optional().describe("Whether to include retried jobs"),
225
+ include_retried: z.boolean().optional().describe("Whether to include retried jobs"),
226
226
  })
227
227
  .merge(PaginationOptionsSchema);
228
228
  // Schema for listing trigger jobs (bridges) in a pipeline
@@ -348,12 +348,12 @@ export const GitLabNamespaceSchema = z.object({
348
348
  plan: z.string().optional(),
349
349
  end_date: z.string().nullable().optional(),
350
350
  trial_ends_on: z.string().nullable().optional(),
351
- trial: flexibleBoolean.optional(),
351
+ trial: z.boolean().optional(),
352
352
  root_repository_size: z.number().optional(),
353
353
  projects_count: z.number().optional(),
354
354
  });
355
355
  export const GitLabNamespaceExistsResponseSchema = z.object({
356
- exists: flexibleBoolean,
356
+ exists: z.boolean(),
357
357
  suggests: z.array(z.string()).optional(),
358
358
  });
359
359
  // Repository related schemas
@@ -373,7 +373,7 @@ export const GitLabRepositorySchema = z.object({
373
373
  owner: GitLabOwnerSchema.optional(),
374
374
  web_url: z.string().optional(),
375
375
  description: z.string().nullable(),
376
- fork: flexibleBoolean.optional(),
376
+ fork: z.boolean().optional(),
377
377
  ssh_url_to_repo: z.string().optional(),
378
378
  http_url_to_repo: z.string().optional(),
379
379
  created_at: z.string().optional(),
@@ -394,7 +394,7 @@ export const GitLabRepositorySchema = z.object({
394
394
  topics: z.array(z.string()).optional(),
395
395
  tag_list: z.array(z.string()).optional(), // deprecated but still present
396
396
  open_issues_count: z.number().optional(),
397
- archived: flexibleBoolean.optional(),
397
+ archived: z.boolean().optional(),
398
398
  forks_count: z.number().optional(),
399
399
  star_count: z.number().optional(),
400
400
  permissions: z
@@ -415,17 +415,17 @@ export const GitLabRepositorySchema = z.object({
415
415
  .nullable(),
416
416
  })
417
417
  .optional(),
418
- container_registry_enabled: flexibleBoolean.optional(),
418
+ container_registry_enabled: z.boolean().optional(),
419
419
  container_registry_access_level: z.string().optional(),
420
- issues_enabled: flexibleBoolean.optional(),
421
- merge_requests_enabled: flexibleBoolean.optional(),
420
+ issues_enabled: z.boolean().optional(),
421
+ merge_requests_enabled: z.boolean().optional(),
422
422
  merge_requests_template: z.string().nullable().optional(),
423
- wiki_enabled: flexibleBoolean.optional(),
424
- jobs_enabled: flexibleBoolean.optional(),
425
- snippets_enabled: flexibleBoolean.optional(),
426
- can_create_merge_request_in: flexibleBoolean.optional(),
427
- resolve_outdated_diff_discussions: flexibleBooleanNullable.optional(),
428
- shared_runners_enabled: flexibleBoolean.optional(),
423
+ wiki_enabled: z.boolean().optional(),
424
+ jobs_enabled: z.boolean().optional(),
425
+ snippets_enabled: z.boolean().optional(),
426
+ can_create_merge_request_in: z.boolean().optional(),
427
+ resolve_outdated_diff_discussions: z.boolean().nullable().optional(),
428
+ shared_runners_enabled: z.boolean().optional(),
429
429
  shared_with_groups: z
430
430
  .array(z.object({
431
431
  group_id: z.coerce.string(),
@@ -449,7 +449,7 @@ export const GitLabFileContentSchema = z.object({
449
449
  blob_id: z.string(), // Added to match GitLab API
450
450
  commit_id: z.string(), // ID of the current file version
451
451
  last_commit_id: z.string(), // Added to match GitLab API
452
- execute_filemode: flexibleBoolean.optional(), // Added to match GitLab API
452
+ execute_filemode: z.boolean().optional(), // Added to match GitLab API
453
453
  });
454
454
  export const GitLabDirectoryContentSchema = z.object({
455
455
  name: z.string(),
@@ -483,7 +483,7 @@ export const GetRepositoryTreeSchema = z.object({
483
483
  .string()
484
484
  .optional()
485
485
  .describe("The name of a repository branch or tag. Defaults to the default branch."),
486
- recursive: flexibleBoolean.optional().describe("Boolean value to get a recursive tree"),
486
+ recursive: z.boolean().optional().describe("Boolean value to get a recursive tree"),
487
487
  per_page: z.number().optional().describe("Number of results to show per page"),
488
488
  page_token: z.string().optional().describe("The tree record ID for pagination"),
489
489
  pagination: z.string().optional().describe("Pagination method (keyset)"),
@@ -536,7 +536,7 @@ export const GitLabMilestonesSchema = z.object({
536
536
  state: z.string(),
537
537
  updated_at: z.string(),
538
538
  created_at: z.string(),
539
- expired: flexibleBoolean,
539
+ expired: z.boolean(),
540
540
  web_url: z.string().optional(),
541
541
  });
542
542
  // Input schemas for operations
@@ -544,7 +544,7 @@ export const CreateRepositoryOptionsSchema = z.object({
544
544
  name: z.string(),
545
545
  description: z.string().optional(),
546
546
  visibility: z.enum(["private", "internal", "public"]).optional(), // Changed from private to match GitLab API
547
- initialize_with_readme: flexibleBoolean.optional(), // Changed from auto_init to match GitLab API
547
+ initialize_with_readme: z.boolean().optional(), // Changed from auto_init to match GitLab API
548
548
  });
549
549
  export const CreateIssueOptionsSchema = z.object({
550
550
  title: z.string(),
@@ -559,9 +559,9 @@ export const GitLabDiffSchema = z.object({
559
559
  a_mode: z.string(),
560
560
  b_mode: z.string(),
561
561
  diff: z.string(),
562
- new_file: flexibleBoolean,
563
- renamed_file: flexibleBoolean,
564
- deleted_file: flexibleBoolean,
562
+ new_file: z.boolean(),
563
+ renamed_file: z.boolean(),
564
+ deleted_file: z.boolean(),
565
565
  });
566
566
  // Response schemas for operations
567
567
  export const GitLabCreateUpdateFileResponseSchema = z.object({
@@ -594,8 +594,8 @@ export const GitLabCompareResultSchema = z.object({
594
594
  .optional(),
595
595
  commits: z.array(GitLabCommitSchema),
596
596
  diffs: z.array(GitLabDiffSchema),
597
- compare_timeout: flexibleBoolean.optional(),
598
- compare_same_ref: flexibleBoolean.optional(),
597
+ compare_timeout: z.boolean().optional(),
598
+ compare_same_ref: z.boolean().optional(),
599
599
  });
600
600
  // Issue related schemas
601
601
  export const GitLabLabelSchema = z.object({
@@ -608,9 +608,9 @@ export const GitLabLabelSchema = z.object({
608
608
  open_issues_count: z.number().optional(),
609
609
  closed_issues_count: z.number().optional(),
610
610
  open_merge_requests_count: z.number().optional(),
611
- subscribed: flexibleBoolean.optional(),
611
+ subscribed: z.boolean().optional(),
612
612
  priority: z.number().nullable().optional(),
613
- is_project_label: flexibleBoolean.optional(),
613
+ is_project_label: z.boolean().optional(),
614
614
  });
615
615
  export const GitLabMilestoneSchema = z.object({
616
616
  id: z.coerce.string(),
@@ -650,9 +650,9 @@ export const GitLabIssueSchema = z.object({
650
650
  human_total_time_spent: z.string().nullable(),
651
651
  })
652
652
  .optional(),
653
- confidential: flexibleBoolean.optional(),
653
+ confidential: z.boolean().optional(),
654
654
  due_date: z.string().nullable().optional(),
655
- discussion_locked: flexibleBooleanNullable.optional(),
655
+ discussion_locked: z.boolean().nullable().optional(),
656
656
  weight: z.number().nullable().optional(),
657
657
  issue_type: z.string().describe("the type of issue.").nullish(),
658
658
  });
@@ -692,8 +692,8 @@ export const GitLabMergeRequestSchema = z.object({
692
692
  title: z.string(),
693
693
  description: z.string().nullable(),
694
694
  state: z.string(),
695
- merged: flexibleBoolean.optional(),
696
- draft: flexibleBoolean.optional(),
695
+ merged: z.boolean().optional(),
696
+ draft: z.boolean().optional(),
697
697
  author: GitLabUserSchema,
698
698
  assignees: z.array(GitLabUserSchema).optional(),
699
699
  reviewers: z.array(GitLabUserSchema).optional(),
@@ -709,15 +709,15 @@ export const GitLabMergeRequestSchema = z.object({
709
709
  detailed_merge_status: z.string().optional(),
710
710
  merge_status: z.string().optional(),
711
711
  merge_error: z.string().nullable().optional(),
712
- work_in_progress: flexibleBoolean.optional(),
713
- blocking_discussions_resolved: flexibleBoolean.optional(),
714
- should_remove_source_branch: flexibleBooleanNullable.optional(),
715
- force_remove_source_branch: flexibleBooleanNullable.optional(),
716
- allow_collaboration: flexibleBoolean.optional(),
717
- allow_maintainer_to_push: flexibleBoolean.optional(),
712
+ work_in_progress: z.boolean().optional(),
713
+ blocking_discussions_resolved: z.boolean().optional(),
714
+ should_remove_source_branch: z.boolean().nullable().optional(),
715
+ force_remove_source_branch: z.boolean().nullable().optional(),
716
+ allow_collaboration: z.boolean().optional(),
717
+ allow_maintainer_to_push: z.boolean().optional(),
718
718
  changes_count: z.string().nullable().optional(),
719
- merge_when_pipeline_succeeds: flexibleBoolean.optional(),
720
- squash: flexibleBoolean.optional(),
719
+ merge_when_pipeline_succeeds: z.boolean().optional(),
720
+ squash: z.boolean().optional(),
721
721
  labels: z.array(z.string()).optional(),
722
722
  });
723
723
  export const LineRangeSchema = z
@@ -730,7 +730,7 @@ export const LineRangeSchema = z
730
730
  .optional()
731
731
  .describe("CRITICAL: Line identifier in format '{file_path_sha1_hash}_{old_line_number}_{new_line_number}'. USUALLY REQUIRED for GitLab diff comments despite being optional in schema. Example: 'a1b2c3d4e5f6_10_15'. Get this from GitLab diff API response, never fabricate."),
732
732
  type: z
733
- .enum(["new", "old", "expanded"])
733
+ .enum(["new", "old", "expanded", "logic", "style"])
734
734
  .nullable()
735
735
  .optional()
736
736
  .describe("Line type: 'old' = deleted/original line, 'new' = added/modified line, null = unchanged context. MUST match the line_code format and old_line/new_line values."),
@@ -754,7 +754,7 @@ export const LineRangeSchema = z
754
754
  .optional()
755
755
  .describe("CRITICAL: Line identifier in format '{file_path_sha1_hash}_{old_line_number}_{new_line_number}'. USUALLY REQUIRED for GitLab diff comments despite being optional in schema. Example: 'a1b2c3d4e5f6_12_17'. Must be from same file as start.line_code."),
756
756
  type: z
757
- .enum(["new", "old", "expanded"])
757
+ .enum(["new", "old", "expanded", "logic", "style"])
758
758
  .nullable()
759
759
  .optional()
760
760
  .describe("Line type: 'old' = deleted/original line, 'new' = added/modified line, null = unchanged context. SHOULD MATCH start.type for consistent ranges (don't mix old/new types)."),
@@ -781,13 +781,13 @@ export const GitLabDiscussionNoteSchema = z.object({
781
781
  author: GitLabUserSchema.optional(),
782
782
  created_at: z.string().optional(),
783
783
  updated_at: z.string().optional(),
784
- system: flexibleBoolean.optional(),
784
+ system: z.boolean().optional(),
785
785
  noteable_id: z.coerce.string().optional(),
786
786
  noteable_type: z.enum(["Issue", "MergeRequest", "Snippet", "Commit", "Epic"]).optional(),
787
787
  project_id: z.coerce.string().optional(),
788
788
  noteable_iid: z.coerce.string().nullable().optional(),
789
- resolvable: flexibleBoolean.optional(),
790
- resolved: flexibleBoolean.optional(),
789
+ resolvable: z.boolean().optional(),
790
+ resolved: z.boolean().optional(),
791
791
  resolved_by: GitLabUserSchema.nullable().optional(),
792
792
  resolved_at: z.string().nullable().optional(),
793
793
  position: z
@@ -835,7 +835,7 @@ export const PaginatedResponseSchema = z.object({
835
835
  });
836
836
  export const GitLabDiscussionSchema = z.object({
837
837
  id: z.coerce.string(),
838
- individual_note: flexibleBoolean,
838
+ individual_note: z.boolean(),
839
839
  notes: z.array(GitLabDiscussionNoteSchema),
840
840
  });
841
841
  // Create a schema for paginated discussions response
@@ -859,7 +859,7 @@ export const UpdateMergeRequestNoteSchema = ProjectParamsSchema.extend({
859
859
  discussion_id: z.coerce.string().describe("The ID of a thread"),
860
860
  note_id: z.coerce.string().describe("The ID of a thread note"),
861
861
  body: z.string().optional().describe("The content of the note or reply"),
862
- resolved: flexibleBoolean.optional().describe("Resolve or unresolve the note"),
862
+ resolved: z.boolean().optional().describe("Resolve or unresolve the note"),
863
863
  })
864
864
  .refine(data => data.body !== undefined || data.resolved !== undefined, {
865
865
  message: "At least one of 'body' or 'resolved' must be provided",
@@ -910,7 +910,7 @@ export const CreateRepositorySchema = z.object({
910
910
  .enum(["private", "internal", "public"])
911
911
  .optional()
912
912
  .describe("Repository visibility level"),
913
- initialize_with_readme: flexibleBoolean.optional().describe("Initialize with README.md"),
913
+ initialize_with_readme: z.boolean().optional().describe("Initialize with README.md"),
914
914
  });
915
915
  export const GetFileContentsSchema = ProjectParamsSchema.extend({
916
916
  file_path: z.string().describe("Path to the file or directory"),
@@ -946,12 +946,12 @@ const MergeRequestOptionsSchema = {
946
946
  .optional()
947
947
  .describe("The ID of the users to assign as reviewers of the MR"),
948
948
  labels: z.array(z.string()).optional().describe("Labels for the MR"),
949
- draft: flexibleBoolean.optional().describe("Create as draft merge request"),
949
+ draft: z.boolean().optional().describe("Create as draft merge request"),
950
950
  allow_collaboration: z.boolean().optional().describe("Allow commits from upstream members"),
951
- remove_source_branch: flexibleBooleanNullable
951
+ remove_source_branch: z.boolean().nullable()
952
952
  .optional()
953
953
  .describe("Flag indicating if a merge request should remove the source branch when merging."),
954
- squash: flexibleBooleanNullable
954
+ squash: z.boolean().nullable()
955
955
  .optional()
956
956
  .describe("If true, squash all commits into a single commit on merge."),
957
957
  };
@@ -968,7 +968,7 @@ export const CreateBranchSchema = ProjectParamsSchema.extend({
968
968
  export const GetBranchDiffsSchema = ProjectParamsSchema.extend({
969
969
  from: z.string().describe("The base branch or commit SHA to compare from"),
970
970
  to: z.string().describe("The target branch or commit SHA to compare to"),
971
- straight: flexibleBoolean
971
+ straight: z.boolean()
972
972
  .optional()
973
973
  .describe("Comparison method: false for '...' (default), true for '--'"),
974
974
  excluded_file_patterns: z
@@ -998,17 +998,17 @@ export const UpdateMergeRequestSchema = GetMergeRequestSchema.extend({
998
998
  .boolean()
999
999
  .optional()
1000
1000
  .describe("Flag indicating if the source branch should be removed"),
1001
- squash: flexibleBoolean.optional().describe("Squash commits into a single commit when merging"),
1002
- draft: flexibleBoolean.optional().describe("Work in progress merge request"),
1001
+ squash: z.boolean().optional().describe("Squash commits into a single commit when merging"),
1002
+ draft: z.boolean().optional().describe("Work in progress merge request"),
1003
1003
  });
1004
1004
  export const MergeMergeRequestSchema = ProjectParamsSchema.extend({
1005
1005
  merge_request_iid: z.coerce.string().optional().describe("The IID of a merge request"),
1006
- auto_merge: flexibleBoolean.optional().default(false).describe("If true, the merge request merges when the pipeline succeeds."),
1006
+ auto_merge: z.boolean().optional().default(false).describe("If true, the merge request merges when the pipeline succeeds."),
1007
1007
  merge_commit_message: z.string().optional().describe("Custom merge commit message"),
1008
- merge_when_pipeline_succeeds: flexibleBoolean.optional().default(false).describe("If true, the merge request merges when the pipeline succeeds.in GitLab 17.11. Use"),
1009
- should_remove_source_branch: flexibleBoolean.optional().default(false).describe("Remove source branch after merge"),
1008
+ merge_when_pipeline_succeeds: z.boolean().optional().default(false).describe("If true, the merge request merges when the pipeline succeeds.in GitLab 17.11. Use"),
1009
+ should_remove_source_branch: z.boolean().optional().default(false).describe("Remove source branch after merge"),
1010
1010
  squash_commit_message: z.string().optional().describe("Custom squash commit message"),
1011
- squash: flexibleBoolean.optional().default(false).describe("Squash commits into a single commit when merging"),
1011
+ squash: z.boolean().optional().default(false).describe("Squash commits into a single commit when merging"),
1012
1012
  });
1013
1013
  export const GetMergeRequestDiffsSchema = GetMergeRequestSchema.extend({
1014
1014
  view: z.enum(["inline", "parallel"]).optional().describe("Diff view type"),
@@ -1016,7 +1016,7 @@ export const GetMergeRequestDiffsSchema = GetMergeRequestSchema.extend({
1016
1016
  export const ListMergeRequestDiffsSchema = GetMergeRequestSchema.extend({
1017
1017
  page: z.number().optional().describe("Page number for pagination (default: 1)"),
1018
1018
  per_page: z.number().optional().describe("Number of items per page (max: 100, default: 20)"),
1019
- unidiff: flexibleBoolean
1019
+ unidiff: z.boolean()
1020
1020
  .optional()
1021
1021
  .describe("Present diffs in the unified diff format. Default is false. Introduced in GitLab 16.5."),
1022
1022
  });
@@ -1045,21 +1045,19 @@ export const ListIssuesSchema = z
1045
1045
  .describe("Return issues assigned to the given username"),
1046
1046
  author_id: z.coerce.string().optional().describe("Return issues created by the given user ID"),
1047
1047
  author_username: z.string().optional().describe("Return issues created by the given username"),
1048
- confidential: flexibleBoolean.optional().describe("Filter confidential or public issues"),
1048
+ confidential: z.boolean().optional().describe("Filter confidential or public issues"),
1049
1049
  created_after: z.string().optional().describe("Return issues created after the given time"),
1050
1050
  created_before: z.string().optional().describe("Return issues created before the given time"),
1051
1051
  due_date: z.string().optional().describe("Return issues that have the due date"),
1052
1052
  labels: z.array(z.string()).optional().describe("Array of label names"),
1053
1053
  milestone: z.string().optional().describe("Milestone title"),
1054
1054
  issue_type: z
1055
- .string()
1055
+ .enum(["issue", "incident", "test_case", "task"])
1056
1056
  .optional()
1057
- .nullable()
1058
1057
  .describe("Filter to a given type of issue. One of issue, incident, test_case or task"),
1059
1058
  iteration_id: z.coerce
1060
1059
  .string()
1061
1060
  .optional()
1062
- .nullable()
1063
1061
  .describe("Return issues assigned to the given iteration ID. None returns issues that do not belong to an iteration. Any returns issues that belong to an iteration. "),
1064
1062
  scope: z
1065
1063
  .enum(["created_by_me", "assigned_to_me", "all"])
@@ -1072,7 +1070,7 @@ export const ListIssuesSchema = z
1072
1070
  .describe("Return issues with a specific state"),
1073
1071
  updated_after: z.string().optional().describe("Return issues updated after the given time"),
1074
1072
  updated_before: z.string().optional().describe("Return issues updated before the given time"),
1075
- with_labels_details: flexibleBoolean.optional().describe("Return more details for each label"),
1073
+ with_labels_details: z.boolean().optional().describe("Return more details for each label"),
1076
1074
  })
1077
1075
  .merge(PaginationOptionsSchema);
1078
1076
  // Merge Requests API operation schemas
@@ -1157,7 +1155,7 @@ export const ListMergeRequestsSchema = z
1157
1155
  .enum(["yes", "no"])
1158
1156
  .optional()
1159
1157
  .describe("Filter merge requests against their wip status"),
1160
- with_labels_details: flexibleBoolean.optional().describe("Return more details for each label"),
1158
+ with_labels_details: z.boolean().optional().describe("Return more details for each label"),
1161
1159
  })
1162
1160
  .merge(PaginationOptionsSchema);
1163
1161
  export const GetIssueSchema = z.object({
@@ -1170,8 +1168,8 @@ export const UpdateIssueSchema = z.object({
1170
1168
  title: z.string().optional().describe("The title of the issue"),
1171
1169
  description: z.string().optional().describe("The description of the issue"),
1172
1170
  assignee_ids: z.array(z.number()).optional().describe("Array of user IDs to assign issue to"),
1173
- confidential: flexibleBoolean.optional().describe("Set the issue to be confidential"),
1174
- discussion_locked: flexibleBoolean.optional().describe("Flag to lock discussions"),
1171
+ confidential: z.boolean().optional().describe("Set the issue to be confidential"),
1172
+ discussion_locked: z.boolean().optional().describe("Flag to lock discussions"),
1175
1173
  due_date: z.string().optional().describe("Date the issue is due (YYYY-MM-DD)"),
1176
1174
  labels: z.array(z.string()).optional().describe("Array of label names"),
1177
1175
  milestone_id: z.coerce.string().optional().describe("Milestone ID to assign"),
@@ -1217,7 +1215,7 @@ export const DeleteIssueLinkSchema = z.object({
1217
1215
  export const ListNamespacesSchema = z
1218
1216
  .object({
1219
1217
  search: z.string().optional().describe("Search term for namespaces"),
1220
- owned: flexibleBoolean.optional().describe("Filter for namespaces owned by current user"),
1218
+ owned: z.boolean().optional().describe("Filter for namespaces owned by current user"),
1221
1219
  })
1222
1220
  .merge(PaginationOptionsSchema);
1223
1221
  export const GetNamespaceSchema = z.object({
@@ -1233,15 +1231,15 @@ export const GetProjectSchema = z.object({
1233
1231
  export const ListProjectsSchema = z
1234
1232
  .object({
1235
1233
  search: z.string().optional().describe("Search term for projects"),
1236
- search_namespaces: flexibleBoolean
1234
+ search_namespaces: z.boolean()
1237
1235
  .optional()
1238
1236
  .describe("Needs to be true if search is full path"),
1239
- owned: flexibleBoolean.optional().describe("Filter for projects owned by current user"),
1240
- membership: flexibleBoolean
1237
+ owned: z.boolean().optional().describe("Filter for projects owned by current user"),
1238
+ membership: z.boolean()
1241
1239
  .optional()
1242
1240
  .describe("Filter for projects where current user is a member"),
1243
- simple: flexibleBoolean.optional().describe("Return only limited fields"),
1244
- archived: flexibleBoolean.optional().describe("Filter for archived projects"),
1241
+ simple: z.boolean().optional().describe("Return only limited fields"),
1242
+ archived: z.boolean().optional().describe("Filter for archived projects"),
1245
1243
  visibility: z
1246
1244
  .enum(["public", "internal", "private"])
1247
1245
  .optional()
@@ -1272,13 +1270,13 @@ export const ListLabelsSchema = z.object({
1272
1270
  .boolean()
1273
1271
  .optional()
1274
1272
  .describe("Whether or not to include issue and merge request counts"),
1275
- include_ancestor_groups: flexibleBoolean.optional().describe("Include ancestor groups"),
1273
+ include_ancestor_groups: z.boolean().optional().describe("Include ancestor groups"),
1276
1274
  search: z.string().optional().describe("Keyword to filter labels by"),
1277
1275
  });
1278
1276
  export const GetLabelSchema = z.object({
1279
1277
  project_id: z.coerce.string().describe("Project ID or URL-encoded path"),
1280
1278
  label_id: z.coerce.string().describe("The ID or title of a project's label"),
1281
- include_ancestor_groups: flexibleBoolean.optional().describe("Include ancestor groups"),
1279
+ include_ancestor_groups: z.boolean().optional().describe("Include ancestor groups"),
1282
1280
  });
1283
1281
  export const CreateLabelSchema = z.object({
1284
1282
  project_id: z.coerce.string().describe("Project ID or URL-encoded path"),
@@ -1308,14 +1306,14 @@ export const DeleteLabelSchema = z.object({
1308
1306
  export const ListGroupProjectsSchema = z
1309
1307
  .object({
1310
1308
  group_id: z.coerce.string().describe("Group ID or path"),
1311
- include_subgroups: flexibleBoolean.optional().describe("Include projects from subgroups"),
1309
+ include_subgroups: z.boolean().optional().describe("Include projects from subgroups"),
1312
1310
  search: z.string().optional().describe("Search term to filter projects"),
1313
1311
  order_by: z
1314
1312
  .enum(["name", "path", "created_at", "updated_at", "last_activity_at"])
1315
1313
  .optional()
1316
1314
  .describe("Field to sort by"),
1317
1315
  sort: z.enum(["asc", "desc"]).optional().describe("Sort direction"),
1318
- archived: flexibleBoolean.optional().describe("Filter for archived projects"),
1316
+ archived: z.boolean().optional().describe("Filter for archived projects"),
1319
1317
  visibility: z
1320
1318
  .enum(["public", "internal", "private"])
1321
1319
  .optional()
@@ -1330,17 +1328,17 @@ export const ListGroupProjectsSchema = z
1330
1328
  .describe("Filter projects with merge requests feature enabled"),
1331
1329
  min_access_level: z.number().optional().describe("Filter by minimum access level"),
1332
1330
  with_programming_language: z.string().optional().describe("Filter by programming language"),
1333
- starred: flexibleBoolean.optional().describe("Filter by starred projects"),
1334
- statistics: flexibleBoolean.optional().describe("Include project statistics"),
1335
- with_custom_attributes: flexibleBoolean.optional().describe("Include custom attributes"),
1336
- with_security_reports: flexibleBoolean.optional().describe("Include security reports"),
1331
+ starred: z.boolean().optional().describe("Filter by starred projects"),
1332
+ statistics: z.boolean().optional().describe("Include project statistics"),
1333
+ with_custom_attributes: z.boolean().optional().describe("Include custom attributes"),
1334
+ with_security_reports: z.boolean().optional().describe("Include security reports"),
1337
1335
  })
1338
1336
  .merge(PaginationOptionsSchema);
1339
1337
  // Add wiki operation schemas
1340
1338
  export const ListWikiPagesSchema = z
1341
1339
  .object({
1342
1340
  project_id: z.coerce.string().describe("Project ID or URL-encoded path"),
1343
- with_content: flexibleBoolean.optional().describe("Include content of the wiki pages"),
1341
+ with_content: z.boolean().optional().describe("Include content of the wiki pages"),
1344
1342
  })
1345
1343
  .merge(PaginationOptionsSchema);
1346
1344
  export const GetWikiPageSchema = z.object({
@@ -1451,7 +1449,7 @@ export const GitLabDraftNoteSchema = z.object({
1451
1449
  created_at: z.string().optional(),
1452
1450
  updated_at: z.string().optional(),
1453
1451
  position: MergeRequestThreadPositionSchema.nullable().optional(),
1454
- resolve_discussion: flexibleBoolean.optional(),
1452
+ resolve_discussion: z.boolean().optional(),
1455
1453
  }).transform((data) => ({
1456
1454
  // Normalize the response to always have consistent field names
1457
1455
  id: data.id,
@@ -1476,7 +1474,7 @@ export const CreateDraftNoteSchema = ProjectParamsSchema.extend({
1476
1474
  merge_request_iid: z.coerce.string().describe("The IID of a merge request"),
1477
1475
  body: z.string().describe("The content of the draft note"),
1478
1476
  position: MergeRequestThreadPositionCreateSchema.optional().describe("Position when creating a diff note"),
1479
- resolve_discussion: flexibleBoolean.optional().describe("Whether to resolve the discussion when publishing"),
1477
+ resolve_discussion: z.boolean().optional().describe("Whether to resolve the discussion when publishing"),
1480
1478
  });
1481
1479
  // Update draft note schema
1482
1480
  export const UpdateDraftNoteSchema = ProjectParamsSchema.extend({
@@ -1484,7 +1482,7 @@ export const UpdateDraftNoteSchema = ProjectParamsSchema.extend({
1484
1482
  draft_note_id: z.coerce.string().describe("The ID of the draft note"),
1485
1483
  body: z.string().optional().describe("The content of the draft note"),
1486
1484
  position: MergeRequestThreadPositionCreateSchema.optional().describe("Position when creating a diff note"),
1487
- resolve_discussion: flexibleBoolean.optional().describe("Whether to resolve the discussion when publishing"),
1485
+ resolve_discussion: z.boolean().optional().describe("Whether to resolve the discussion when publishing"),
1488
1486
  });
1489
1487
  // Delete draft note schema
1490
1488
  export const DeleteDraftNoteSchema = ProjectParamsSchema.extend({
@@ -1523,7 +1521,7 @@ export const ListProjectMilestonesSchema = ProjectParamsSchema.extend({
1523
1521
  .string()
1524
1522
  .optional()
1525
1523
  .describe("Return only milestones with a title or description matching the provided string"),
1526
- include_ancestors: flexibleBoolean.optional().describe("Include ancestor groups"),
1524
+ include_ancestors: z.boolean().optional().describe("Include ancestor groups"),
1527
1525
  updated_before: z
1528
1526
  .string()
1529
1527
  .optional()
@@ -1582,26 +1580,27 @@ export const ListCommitsSchema = z.object({
1582
1580
  .describe("Only commits before or on this date are returned in ISO 8601 format YYYY-MM-DDTHH:MM:SSZ"),
1583
1581
  path: z.string().optional().describe("The file path"),
1584
1582
  author: z.string().optional().describe("Search commits by commit author"),
1585
- all: flexibleBoolean.optional().describe("Retrieve every commit from the repository"),
1586
- with_stats: flexibleBoolean
1583
+ all: z.boolean().optional().describe("Retrieve every commit from the repository"),
1584
+ with_stats: z.boolean()
1587
1585
  .optional()
1588
1586
  .describe("Stats about each commit are added to the response"),
1589
- first_parent: flexibleBoolean
1587
+ first_parent: z.boolean()
1590
1588
  .optional()
1591
1589
  .describe("Follow only the first parent commit upon seeing a merge commit"),
1592
1590
  order: z.enum(["default", "topo"]).optional().describe("List commits in order"),
1593
- trailers: flexibleBoolean.optional().describe("Parse and include Git trailers for every commit"),
1591
+ trailers: z.boolean().optional().describe("Parse and include Git trailers for every commit"),
1594
1592
  page: z.number().optional().describe("Page number for pagination (default: 1)"),
1595
1593
  per_page: z.number().optional().describe("Number of items per page (max: 100, default: 20)"),
1596
1594
  });
1597
1595
  export const GetCommitSchema = z.object({
1598
1596
  project_id: z.coerce.string().describe("Project ID or complete URL-encoded path to project"),
1599
1597
  sha: z.string().describe("The commit hash or name of a repository branch or tag"),
1600
- stats: flexibleBoolean.optional().describe("Include commit stats"),
1598
+ stats: z.boolean().optional().describe("Include commit stats"),
1601
1599
  });
1602
1600
  export const GetCommitDiffSchema = z.object({
1603
1601
  project_id: z.coerce.string().describe("Project ID or complete URL-encoded path to project"),
1604
1602
  sha: z.string().describe("The commit hash or name of a repository branch or tag"),
1603
+ full_diff: flexibleBoolean.optional().describe("Whether to return the full diff or only first page (default: false)"),
1605
1604
  });
1606
1605
  // Schema for listing issues assigned to the current user
1607
1606
  export const MyIssuesSchema = z.object({
@@ -1686,14 +1685,14 @@ export const ListGroupIterationsSchema = z
1686
1685
  .string()
1687
1686
  .optional()
1688
1687
  .describe("Return only iterations with a title matching the provided string."),
1689
- in: z
1688
+ search_in: z
1690
1689
  .array(z.enum(["title", "cadence_title"]))
1691
1690
  .optional()
1692
1691
  .describe("Fields in which fuzzy search should be performed with the query given in the argument search. The available options are title and cadence_title. Default is [title]."),
1693
- include_ancestors: flexibleBoolean
1692
+ include_ancestors: z.boolean()
1694
1693
  .optional()
1695
1694
  .describe("Include iterations for group and its ancestors. Defaults to true."),
1696
- include_descendants: flexibleBoolean
1695
+ include_descendants: z.boolean()
1697
1696
  .optional()
1698
1697
  .describe("Include iterations for group and its descendants. Defaults to false."),
1699
1698
  updated_before: z
@@ -1727,7 +1726,7 @@ export const GitLabEventSchema = z.object({
1727
1726
  created_at: z.string(),
1728
1727
  author: GitLabEventAuthorSchema,
1729
1728
  author_username: z.string(),
1730
- imported: flexibleBoolean,
1729
+ imported: z.boolean(),
1731
1730
  imported_from: z.string(),
1732
1731
  }).passthrough(); // Allow additional fields
1733
1732
  // List events schema