@opentabs-dev/opentabs-plugin-gitlab 0.0.74

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 (104) hide show
  1. package/dist/adapter.iife.js +15367 -0
  2. package/dist/adapter.iife.js.map +7 -0
  3. package/dist/gitlab-api.d.ts +13 -0
  4. package/dist/gitlab-api.d.ts.map +1 -0
  5. package/dist/gitlab-api.js +114 -0
  6. package/dist/gitlab-api.js.map +1 -0
  7. package/dist/index.d.ts +14 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +70 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/tools/create-issue.d.ts +27 -0
  12. package/dist/tools/create-issue.d.ts.map +1 -0
  13. package/dist/tools/create-issue.js +43 -0
  14. package/dist/tools/create-issue.js.map +1 -0
  15. package/dist/tools/create-merge-request.d.ts +32 -0
  16. package/dist/tools/create-merge-request.d.ts.map +1 -0
  17. package/dist/tools/create-merge-request.js +52 -0
  18. package/dist/tools/create-merge-request.js.map +1 -0
  19. package/dist/tools/create-note.d.ts +20 -0
  20. package/dist/tools/create-note.d.ts.map +1 -0
  21. package/dist/tools/create-note.js +26 -0
  22. package/dist/tools/create-note.js.map +1 -0
  23. package/dist/tools/get-file-content.d.ts +10 -0
  24. package/dist/tools/get-file-content.d.ts.map +1 -0
  25. package/dist/tools/get-file-content.js +33 -0
  26. package/dist/tools/get-file-content.js.map +1 -0
  27. package/dist/tools/get-issue.d.ts +22 -0
  28. package/dist/tools/get-issue.d.ts.map +1 -0
  29. package/dist/tools/get-issue.js +24 -0
  30. package/dist/tools/get-issue.js.map +1 -0
  31. package/dist/tools/get-job-log.d.ts +8 -0
  32. package/dist/tools/get-job-log.d.ts.map +1 -0
  33. package/dist/tools/get-job-log.js +23 -0
  34. package/dist/tools/get-job-log.js.map +1 -0
  35. package/dist/tools/get-merge-request-diff.d.ts +15 -0
  36. package/dist/tools/get-merge-request-diff.d.ts.map +1 -0
  37. package/dist/tools/get-merge-request-diff.js +41 -0
  38. package/dist/tools/get-merge-request-diff.js.map +1 -0
  39. package/dist/tools/get-merge-request.d.ts +24 -0
  40. package/dist/tools/get-merge-request.d.ts.map +1 -0
  41. package/dist/tools/get-merge-request.js +24 -0
  42. package/dist/tools/get-merge-request.js.map +1 -0
  43. package/dist/tools/get-project.d.ts +21 -0
  44. package/dist/tools/get-project.d.ts.map +1 -0
  45. package/dist/tools/get-project.js +23 -0
  46. package/dist/tools/get-project.js.map +1 -0
  47. package/dist/tools/get-user-profile.d.ts +17 -0
  48. package/dist/tools/get-user-profile.d.ts.map +1 -0
  49. package/dist/tools/get-user-profile.js +29 -0
  50. package/dist/tools/get-user-profile.js.map +1 -0
  51. package/dist/tools/list-branches.d.ts +16 -0
  52. package/dist/tools/list-branches.d.ts.map +1 -0
  53. package/dist/tools/list-branches.js +32 -0
  54. package/dist/tools/list-branches.js.map +1 -0
  55. package/dist/tools/list-commits.d.ts +22 -0
  56. package/dist/tools/list-commits.d.ts.map +1 -0
  57. package/dist/tools/list-commits.js +41 -0
  58. package/dist/tools/list-commits.js.map +1 -0
  59. package/dist/tools/list-issues.d.ts +40 -0
  60. package/dist/tools/list-issues.d.ts.map +1 -0
  61. package/dist/tools/list-issues.js +49 -0
  62. package/dist/tools/list-issues.js.map +1 -0
  63. package/dist/tools/list-merge-requests.d.ts +46 -0
  64. package/dist/tools/list-merge-requests.d.ts.map +1 -0
  65. package/dist/tools/list-merge-requests.js +56 -0
  66. package/dist/tools/list-merge-requests.js.map +1 -0
  67. package/dist/tools/list-notes.d.ts +29 -0
  68. package/dist/tools/list-notes.d.ts.map +1 -0
  69. package/dist/tools/list-notes.js +35 -0
  70. package/dist/tools/list-notes.js.map +1 -0
  71. package/dist/tools/list-pipeline-jobs.d.ts +20 -0
  72. package/dist/tools/list-pipeline-jobs.d.ts.map +1 -0
  73. package/dist/tools/list-pipeline-jobs.js +30 -0
  74. package/dist/tools/list-pipeline-jobs.js.map +1 -0
  75. package/dist/tools/list-pipelines.d.ts +42 -0
  76. package/dist/tools/list-pipelines.d.ts.map +1 -0
  77. package/dist/tools/list-pipelines.js +47 -0
  78. package/dist/tools/list-pipelines.js.map +1 -0
  79. package/dist/tools/list-projects.d.ts +42 -0
  80. package/dist/tools/list-projects.d.ts.map +1 -0
  81. package/dist/tools/list-projects.js +47 -0
  82. package/dist/tools/list-projects.js.map +1 -0
  83. package/dist/tools/merge-merge-request.d.ts +28 -0
  84. package/dist/tools/merge-merge-request.d.ts.map +1 -0
  85. package/dist/tools/merge-merge-request.js +37 -0
  86. package/dist/tools/merge-merge-request.js.map +1 -0
  87. package/dist/tools/schemas.d.ts +326 -0
  88. package/dist/tools/schemas.d.ts.map +1 -0
  89. package/dist/tools/schemas.js +213 -0
  90. package/dist/tools/schemas.js.map +1 -0
  91. package/dist/tools/search-projects.d.ts +35 -0
  92. package/dist/tools/search-projects.d.ts.map +1 -0
  93. package/dist/tools/search-projects.js +37 -0
  94. package/dist/tools/search-projects.js.map +1 -0
  95. package/dist/tools/update-issue.d.ts +32 -0
  96. package/dist/tools/update-issue.d.ts.map +1 -0
  97. package/dist/tools/update-issue.js +46 -0
  98. package/dist/tools/update-issue.js.map +1 -0
  99. package/dist/tools/update-merge-request.d.ts +35 -0
  100. package/dist/tools/update-merge-request.d.ts.map +1 -0
  101. package/dist/tools/update-merge-request.js +49 -0
  102. package/dist/tools/update-merge-request.js.map +1 -0
  103. package/dist/tools.json +2661 -0
  104. package/package.json +55 -0
@@ -0,0 +1,15 @@
1
+ import { z } from 'zod';
2
+ export declare const getMergeRequestDiff: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ project: z.ZodString;
4
+ merge_request_iid: z.ZodNumber;
5
+ }, z.core.$strip>, z.ZodObject<{
6
+ diffs: z.ZodArray<z.ZodObject<{
7
+ old_path: z.ZodString;
8
+ new_path: z.ZodString;
9
+ diff: z.ZodString;
10
+ new_file: z.ZodBoolean;
11
+ renamed_file: z.ZodBoolean;
12
+ deleted_file: z.ZodBoolean;
13
+ }, z.core.$strip>>;
14
+ }, z.core.$strip>>;
15
+ //# sourceMappingURL=get-merge-request-diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-merge-request-diff.d.ts","sourceRoot":"","sources":["../../src/tools/get-merge-request-diff.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAyBxB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;kBA+B9B,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { api } from '../gitlab-api.js';
4
+ const diffEntrySchema = z.object({
5
+ old_path: z.string().describe('Previous file path'),
6
+ new_path: z.string().describe('New file path'),
7
+ diff: z.string().describe('Unified diff text'),
8
+ new_file: z.boolean().describe('Whether this is a new file'),
9
+ renamed_file: z.boolean().describe('Whether this file was renamed'),
10
+ deleted_file: z.boolean().describe('Whether this file was deleted'),
11
+ });
12
+ export const getMergeRequestDiff = defineTool({
13
+ name: 'get_merge_request_diff',
14
+ displayName: 'Get Merge Request Diff',
15
+ description: 'Get the diff changes of a merge request. Returns per-file diffs.',
16
+ summary: 'Get the diff of a merge request',
17
+ icon: 'file-diff',
18
+ group: 'Merge Requests',
19
+ input: z.object({
20
+ project: z.string().min(1).describe('Project path (e.g., "group/project") or numeric project ID'),
21
+ merge_request_iid: z.number().int().min(1).describe('Merge request IID (project-scoped ID)'),
22
+ }),
23
+ output: z.object({
24
+ diffs: z.array(diffEntrySchema).describe('List of file diffs'),
25
+ }),
26
+ handle: async (params) => {
27
+ const data = await api(`/projects/${encodeURIComponent(params.project)}/merge_requests/${params.merge_request_iid}/changes`);
28
+ const changes = data.changes ?? [];
29
+ return {
30
+ diffs: changes.map(d => ({
31
+ old_path: d.old_path ?? '',
32
+ new_path: d.new_path ?? '',
33
+ diff: d.diff ?? '',
34
+ new_file: d.new_file ?? false,
35
+ renamed_file: d.renamed_file ?? false,
36
+ deleted_file: d.deleted_file ?? false,
37
+ })),
38
+ };
39
+ },
40
+ });
41
+ //# sourceMappingURL=get-merge-request-diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-merge-request-diff.js","sourceRoot":"","sources":["../../src/tools/get-merge-request-diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAevC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACnD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC9C,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAC5D,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACnE,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;CACpE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAU,CAAC;IAC5C,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EAAE,wBAAwB;IACrC,WAAW,EAAE,kEAAkE;IAC/E,OAAO,EAAE,iCAAiC;IAC1C,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,gBAAgB;IACvB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,4DAA4D,CAAC;QACjG,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,uCAAuC,CAAC;KAC7F,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KAC/D,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,GAAG,CACpB,aAAa,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,MAAM,CAAC,iBAAiB,UAAU,CACrG,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QACnC,OAAO;YACL,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACvB,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE;gBAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE;gBAC1B,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;gBAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,KAAK;gBAC7B,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,KAAK;gBACrC,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,KAAK;aACtC,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { z } from 'zod';
2
+ export declare const getMergeRequest: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ project: z.ZodString;
4
+ merge_request_iid: z.ZodNumber;
5
+ }, z.core.$strip>, z.ZodObject<{
6
+ merge_request: z.ZodObject<{
7
+ iid: z.ZodNumber;
8
+ title: z.ZodString;
9
+ state: z.ZodString;
10
+ description: z.ZodString;
11
+ web_url: z.ZodString;
12
+ author_username: z.ZodString;
13
+ source_branch: z.ZodString;
14
+ target_branch: z.ZodString;
15
+ labels: z.ZodArray<z.ZodString>;
16
+ draft: z.ZodBoolean;
17
+ merged_by_username: z.ZodString;
18
+ merge_status: z.ZodString;
19
+ has_conflicts: z.ZodBoolean;
20
+ created_at: z.ZodString;
21
+ updated_at: z.ZodString;
22
+ }, z.core.$strip>;
23
+ }, z.core.$strip>>;
24
+ //# sourceMappingURL=get-merge-request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-merge-request.d.ts","sourceRoot":"","sources":["../../src/tools/get-merge-request.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;kBAoB1B,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { api } from '../gitlab-api.js';
4
+ import { mapMergeRequest, mergeRequestSchema } from './schemas.js';
5
+ export const getMergeRequest = defineTool({
6
+ name: 'get_merge_request',
7
+ displayName: 'Get Merge Request',
8
+ description: 'Get detailed information about a specific merge request.',
9
+ summary: 'Get merge request details',
10
+ icon: 'git-pull-request',
11
+ group: 'Merge Requests',
12
+ input: z.object({
13
+ project: z.string().min(1).describe('Project path (e.g., "group/project") or numeric project ID'),
14
+ merge_request_iid: z.number().int().min(1).describe('Merge request IID (project-scoped ID)'),
15
+ }),
16
+ output: z.object({
17
+ merge_request: mergeRequestSchema.describe('The merge request'),
18
+ }),
19
+ handle: async (params) => {
20
+ const data = await api(`/projects/${encodeURIComponent(params.project)}/merge_requests/${params.merge_request_iid}`);
21
+ return { merge_request: mapMergeRequest(data) };
22
+ },
23
+ });
24
+ //# sourceMappingURL=get-merge-request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-merge-request.js","sourceRoot":"","sources":["../../src/tools/get-merge-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEnE,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;IACxC,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,mBAAmB;IAChC,WAAW,EAAE,0DAA0D;IACvE,OAAO,EAAE,2BAA2B;IACpC,IAAI,EAAE,kBAAkB;IACxB,KAAK,EAAE,gBAAgB;IACvB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,4DAA4D,CAAC;QACjG,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,uCAAuC,CAAC;KAC7F,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,aAAa,EAAE,kBAAkB,CAAC,QAAQ,CAAC,mBAAmB,CAAC;KAChE,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,GAAG,CACpB,aAAa,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,MAAM,CAAC,iBAAiB,EAAE,CAC7F,CAAC;QACF,OAAO,EAAE,aAAa,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;IAClD,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { z } from 'zod';
2
+ export declare const getProject: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ project: z.ZodString;
4
+ }, z.core.$strip>, z.ZodObject<{
5
+ project: z.ZodObject<{
6
+ id: z.ZodNumber;
7
+ name: z.ZodString;
8
+ path_with_namespace: z.ZodString;
9
+ description: z.ZodString;
10
+ visibility: z.ZodString;
11
+ web_url: z.ZodString;
12
+ default_branch: z.ZodString;
13
+ star_count: z.ZodNumber;
14
+ forks_count: z.ZodNumber;
15
+ open_issues_count: z.ZodNumber;
16
+ archived: z.ZodBoolean;
17
+ created_at: z.ZodString;
18
+ last_activity_at: z.ZodString;
19
+ }, z.core.$strip>;
20
+ }, z.core.$strip>>;
21
+ //# sourceMappingURL=get-project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-project.d.ts","sourceRoot":"","sources":["../../src/tools/get-project.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;kBAiBrB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { api } from '../gitlab-api.js';
4
+ import { mapProject, projectSchema } from './schemas.js';
5
+ export const getProject = defineTool({
6
+ name: 'get_project',
7
+ displayName: 'Get Project',
8
+ description: 'Get detailed information about a specific project by its path (e.g., "group/project").',
9
+ summary: 'Get project details',
10
+ icon: 'folder-git-2',
11
+ group: 'Projects',
12
+ input: z.object({
13
+ project: z.string().min(1).describe('Project path (e.g., "group/project") or numeric project ID'),
14
+ }),
15
+ output: z.object({
16
+ project: projectSchema.describe('The project'),
17
+ }),
18
+ handle: async (params) => {
19
+ const data = await api(`/projects/${encodeURIComponent(params.project)}`);
20
+ return { project: mapProject(data) };
21
+ },
22
+ });
23
+ //# sourceMappingURL=get-project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-project.js","sourceRoot":"","sources":["../../src/tools/get-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;IACnC,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,wFAAwF;IACrG,OAAO,EAAE,qBAAqB;IAC9B,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,4DAA4D,CAAC;KAClG,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC;KAC/C,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,GAAG,CAA0B,aAAa,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACnG,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;IACvC,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { z } from 'zod';
2
+ export declare const getUserProfile: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ username: z.ZodOptional<z.ZodString>;
4
+ }, z.core.$strip>, z.ZodObject<{
5
+ user: z.ZodObject<{
6
+ id: z.ZodNumber;
7
+ username: z.ZodString;
8
+ name: z.ZodString;
9
+ state: z.ZodString;
10
+ avatar_url: z.ZodString;
11
+ web_url: z.ZodString;
12
+ bio: z.ZodString;
13
+ location: z.ZodString;
14
+ public_email: z.ZodString;
15
+ }, z.core.$strip>;
16
+ }, z.core.$strip>>;
17
+ //# sourceMappingURL=get-user-profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-user-profile.d.ts","sourceRoot":"","sources":["../../src/tools/get-user-profile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;kBAyBzB,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { ToolError, defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { api, getUsername } from '../gitlab-api.js';
4
+ import { mapUser, userSchema } from './schemas.js';
5
+ export const getUserProfile = defineTool({
6
+ name: 'get_user_profile',
7
+ displayName: 'Get User Profile',
8
+ description: 'Get a user profile by username. Defaults to the authenticated user if no username is specified.',
9
+ summary: 'Get a user profile',
10
+ icon: 'user',
11
+ group: 'Users',
12
+ input: z.object({
13
+ username: z.string().optional().describe('Username — defaults to the authenticated user'),
14
+ }),
15
+ output: z.object({
16
+ user: userSchema.describe('The user profile'),
17
+ }),
18
+ handle: async (params) => {
19
+ const username = params.username ?? getUsername();
20
+ const users = await api('/users', {
21
+ query: { username },
22
+ });
23
+ const first = users?.[0];
24
+ if (!first)
25
+ throw ToolError.notFound(`User not found: ${username}`);
26
+ return { user: mapUser(first) };
27
+ },
28
+ });
29
+ //# sourceMappingURL=get-user-profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-user-profile.js","sourceRoot":"","sources":["../../src/tools/get-user-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC;IACvC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,kBAAkB;IAC/B,WAAW,EAAE,iGAAiG;IAC9G,OAAO,EAAE,oBAAoB;IAC7B,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;KAC1F,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC;KAC9C,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,WAAW,EAAE,CAAC;QAElD,MAAM,KAAK,GAAG,MAAM,GAAG,CAA4B,QAAQ,EAAE;YAC3D,KAAK,EAAE,EAAE,QAAQ,EAAE;SACpB,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,KAAK;YAAE,MAAM,SAAS,CAAC,QAAQ,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;QAEpE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;IAClC,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { z } from 'zod';
2
+ export declare const listBranches: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ project: z.ZodString;
4
+ search: z.ZodOptional<z.ZodString>;
5
+ per_page: z.ZodOptional<z.ZodNumber>;
6
+ page: z.ZodOptional<z.ZodNumber>;
7
+ }, z.core.$strip>, z.ZodObject<{
8
+ branches: z.ZodArray<z.ZodObject<{
9
+ name: z.ZodString;
10
+ protected: z.ZodBoolean;
11
+ default: z.ZodBoolean;
12
+ sha: z.ZodString;
13
+ web_url: z.ZodString;
14
+ }, z.core.$strip>>;
15
+ }, z.core.$strip>>;
16
+ //# sourceMappingURL=list-branches.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-branches.d.ts","sourceRoot":"","sources":["../../src/tools/list-branches.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,YAAY;;;;;;;;;;;;;kBA6BvB,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { api } from '../gitlab-api.js';
4
+ import { branchSchema, mapBranch } from './schemas.js';
5
+ export const listBranches = defineTool({
6
+ name: 'list_branches',
7
+ displayName: 'List Branches',
8
+ description: 'List branches for a project. Can filter by search query.',
9
+ summary: 'List branches for a project',
10
+ icon: 'git-branch',
11
+ group: 'Branches',
12
+ input: z.object({
13
+ project: z.string().min(1).describe('Project path (e.g., "group/project") or numeric project ID'),
14
+ search: z.string().optional().describe('Search by branch name'),
15
+ per_page: z.number().int().min(1).max(100).optional().describe('Results per page (default 20, max 100)'),
16
+ page: z.number().int().min(1).optional().describe('Page number (default 1)'),
17
+ }),
18
+ output: z.object({
19
+ branches: z.array(branchSchema).describe('List of branches'),
20
+ }),
21
+ handle: async (params) => {
22
+ const query = {
23
+ per_page: params.per_page ?? 20,
24
+ page: params.page,
25
+ };
26
+ if (params.search)
27
+ query.search = params.search;
28
+ const data = await api(`/projects/${encodeURIComponent(params.project)}/repository/branches`, { query });
29
+ return { branches: (data ?? []).map(mapBranch) };
30
+ },
31
+ });
32
+ //# sourceMappingURL=list-branches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-branches.js","sourceRoot":"","sources":["../../src/tools/list-branches.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;IACrC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,0DAA0D;IACvE,OAAO,EAAE,6BAA6B;IACtC,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,4DAA4D,CAAC;QACjG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC/D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QACxG,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;KAC7E,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;KAC7D,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,KAAK,GAA0D;YACnE,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;YAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC;QACF,IAAI,MAAM,CAAC,MAAM;YAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAEhD,MAAM,IAAI,GAAG,MAAM,GAAG,CACpB,aAAa,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,EACrE,EAAE,KAAK,EAAE,CACV,CAAC;QACF,OAAO,EAAE,QAAQ,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;IACnD,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { z } from 'zod';
2
+ export declare const listCommits: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ project: z.ZodString;
4
+ ref_name: z.ZodOptional<z.ZodString>;
5
+ path: z.ZodOptional<z.ZodString>;
6
+ since: z.ZodOptional<z.ZodString>;
7
+ until: z.ZodOptional<z.ZodString>;
8
+ per_page: z.ZodOptional<z.ZodNumber>;
9
+ page: z.ZodOptional<z.ZodNumber>;
10
+ }, z.core.$strip>, z.ZodObject<{
11
+ commits: z.ZodArray<z.ZodObject<{
12
+ id: z.ZodString;
13
+ short_id: z.ZodString;
14
+ title: z.ZodString;
15
+ message: z.ZodString;
16
+ author_name: z.ZodString;
17
+ author_email: z.ZodString;
18
+ authored_date: z.ZodString;
19
+ web_url: z.ZodString;
20
+ }, z.core.$strip>>;
21
+ }, z.core.$strip>>;
22
+ //# sourceMappingURL=list-commits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-commits.d.ts","sourceRoot":"","sources":["../../src/tools/list-commits.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;kBAmCtB,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { api } from '../gitlab-api.js';
4
+ import { commitSchema, mapCommit } from './schemas.js';
5
+ export const listCommits = defineTool({
6
+ name: 'list_commits',
7
+ displayName: 'List Commits',
8
+ description: 'List commits for a project. Can filter by branch, path, and date range.',
9
+ summary: 'List commits for a project',
10
+ icon: 'git-commit-horizontal',
11
+ group: 'Content',
12
+ input: z.object({
13
+ project: z.string().min(1).describe('Project path (e.g., "group/project") or numeric project ID'),
14
+ ref_name: z.string().optional().describe('Branch or tag name (defaults to the default branch)'),
15
+ path: z.string().optional().describe('File or directory path to filter commits'),
16
+ since: z.string().optional().describe('Only commits after this ISO 8601 date'),
17
+ until: z.string().optional().describe('Only commits before this ISO 8601 date'),
18
+ per_page: z.number().int().min(1).max(100).optional().describe('Results per page (default 20, max 100)'),
19
+ page: z.number().int().min(1).optional().describe('Page number (default 1)'),
20
+ }),
21
+ output: z.object({
22
+ commits: z.array(commitSchema).describe('List of commits'),
23
+ }),
24
+ handle: async (params) => {
25
+ const query = {
26
+ per_page: params.per_page ?? 20,
27
+ page: params.page,
28
+ };
29
+ if (params.ref_name)
30
+ query.ref_name = params.ref_name;
31
+ if (params.path)
32
+ query.path = params.path;
33
+ if (params.since)
34
+ query.since = params.since;
35
+ if (params.until)
36
+ query.until = params.until;
37
+ const data = await api(`/projects/${encodeURIComponent(params.project)}/repository/commits`, { query });
38
+ return { commits: (data ?? []).map(mapCommit) };
39
+ },
40
+ });
41
+ //# sourceMappingURL=list-commits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-commits.js","sourceRoot":"","sources":["../../src/tools/list-commits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;IACpC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,yEAAyE;IACtF,OAAO,EAAE,4BAA4B;IACrC,IAAI,EAAE,uBAAuB;IAC7B,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,4DAA4D,CAAC;QACjG,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;QAC/F,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;QAChF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QAC9E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QAC/E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QACxG,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;KAC7E,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;KAC3D,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,KAAK,GAA0D;YACnE,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;YAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ;YAAE,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACtD,IAAI,MAAM,CAAC,IAAI;YAAE,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAC1C,IAAI,MAAM,CAAC,KAAK;YAAE,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC7C,IAAI,MAAM,CAAC,KAAK;YAAE,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAE7C,MAAM,IAAI,GAAG,MAAM,GAAG,CACpB,aAAa,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,qBAAqB,EACpE,EAAE,KAAK,EAAE,CACV,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;IAClD,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { z } from 'zod';
2
+ export declare const listIssues: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ project: z.ZodString;
4
+ state: z.ZodOptional<z.ZodEnum<{
5
+ opened: "opened";
6
+ closed: "closed";
7
+ all: "all";
8
+ }>>;
9
+ labels: z.ZodOptional<z.ZodString>;
10
+ assignee_username: z.ZodOptional<z.ZodString>;
11
+ milestone: z.ZodOptional<z.ZodString>;
12
+ search: z.ZodOptional<z.ZodString>;
13
+ order_by: z.ZodOptional<z.ZodEnum<{
14
+ created_at: "created_at";
15
+ updated_at: "updated_at";
16
+ }>>;
17
+ sort: z.ZodOptional<z.ZodEnum<{
18
+ asc: "asc";
19
+ desc: "desc";
20
+ }>>;
21
+ per_page: z.ZodOptional<z.ZodNumber>;
22
+ page: z.ZodOptional<z.ZodNumber>;
23
+ }, z.core.$strip>, z.ZodObject<{
24
+ issues: z.ZodArray<z.ZodObject<{
25
+ iid: z.ZodNumber;
26
+ title: z.ZodString;
27
+ state: z.ZodString;
28
+ description: z.ZodString;
29
+ web_url: z.ZodString;
30
+ author_username: z.ZodString;
31
+ labels: z.ZodArray<z.ZodString>;
32
+ assignees: z.ZodArray<z.ZodString>;
33
+ milestone_title: z.ZodString;
34
+ confidential: z.ZodBoolean;
35
+ created_at: z.ZodString;
36
+ updated_at: z.ZodString;
37
+ closed_at: z.ZodString;
38
+ }, z.core.$strip>>;
39
+ }, z.core.$strip>>;
40
+ //# sourceMappingURL=list-issues.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-issues.d.ts","sourceRoot":"","sources":["../../src/tools/list-issues.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAyCrB,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { api } from '../gitlab-api.js';
4
+ import { issueSchema, mapIssue } from './schemas.js';
5
+ export const listIssues = defineTool({
6
+ name: 'list_issues',
7
+ displayName: 'List Issues',
8
+ description: 'List issues for a project. By default returns opened issues sorted by creation date. Can filter by state, labels, assignee, milestone, and more.',
9
+ summary: 'List issues for a project',
10
+ icon: 'circle-dot',
11
+ group: 'Issues',
12
+ input: z.object({
13
+ project: z.string().min(1).describe('Project path (e.g., "group/project") or numeric project ID'),
14
+ state: z.enum(['opened', 'closed', 'all']).optional().describe('Issue state filter (default: opened)'),
15
+ labels: z.string().optional().describe('Comma-separated list of label names to filter by'),
16
+ assignee_username: z.string().optional().describe('Filter by assignee username'),
17
+ milestone: z.string().optional().describe('Milestone title to filter by, or "None" / "Any"'),
18
+ search: z.string().optional().describe('Search in title and description'),
19
+ order_by: z.enum(['created_at', 'updated_at']).optional().describe('Sort field (default: created_at)'),
20
+ sort: z.enum(['asc', 'desc']).optional().describe('Sort direction (default: desc)'),
21
+ per_page: z.number().int().min(1).max(100).optional().describe('Results per page (default 20, max 100)'),
22
+ page: z.number().int().min(1).optional().describe('Page number (default 1)'),
23
+ }),
24
+ output: z.object({
25
+ issues: z.array(issueSchema).describe('List of issues'),
26
+ }),
27
+ handle: async (params) => {
28
+ const query = {
29
+ state: params.state ?? 'opened',
30
+ per_page: params.per_page ?? 20,
31
+ page: params.page,
32
+ order_by: params.order_by,
33
+ sort: params.sort,
34
+ };
35
+ if (params.labels)
36
+ query.labels = params.labels;
37
+ if (params.assignee_username)
38
+ query.assignee_username = params.assignee_username;
39
+ if (params.milestone)
40
+ query.milestone = params.milestone;
41
+ if (params.search)
42
+ query.search = params.search;
43
+ const data = await api(`/projects/${encodeURIComponent(params.project)}/issues`, {
44
+ query,
45
+ });
46
+ return { issues: (data ?? []).map(mapIssue) };
47
+ },
48
+ });
49
+ //# sourceMappingURL=list-issues.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-issues.js","sourceRoot":"","sources":["../../src/tools/list-issues.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { z } from 'zod';
2
+ export declare const listMergeRequests: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ project: z.ZodString;
4
+ state: z.ZodOptional<z.ZodEnum<{
5
+ opened: "opened";
6
+ closed: "closed";
7
+ all: "all";
8
+ merged: "merged";
9
+ locked: "locked";
10
+ }>>;
11
+ labels: z.ZodOptional<z.ZodString>;
12
+ author_username: z.ZodOptional<z.ZodString>;
13
+ assignee_id: z.ZodOptional<z.ZodNumber>;
14
+ source_branch: z.ZodOptional<z.ZodString>;
15
+ target_branch: z.ZodOptional<z.ZodString>;
16
+ search: z.ZodOptional<z.ZodString>;
17
+ order_by: z.ZodOptional<z.ZodEnum<{
18
+ created_at: "created_at";
19
+ updated_at: "updated_at";
20
+ }>>;
21
+ sort: z.ZodOptional<z.ZodEnum<{
22
+ asc: "asc";
23
+ desc: "desc";
24
+ }>>;
25
+ per_page: z.ZodOptional<z.ZodNumber>;
26
+ page: z.ZodOptional<z.ZodNumber>;
27
+ }, z.core.$strip>, z.ZodObject<{
28
+ merge_requests: z.ZodArray<z.ZodObject<{
29
+ iid: z.ZodNumber;
30
+ title: z.ZodString;
31
+ state: z.ZodString;
32
+ description: z.ZodString;
33
+ web_url: z.ZodString;
34
+ author_username: z.ZodString;
35
+ source_branch: z.ZodString;
36
+ target_branch: z.ZodString;
37
+ labels: z.ZodArray<z.ZodString>;
38
+ draft: z.ZodBoolean;
39
+ merged_by_username: z.ZodString;
40
+ merge_status: z.ZodString;
41
+ has_conflicts: z.ZodBoolean;
42
+ created_at: z.ZodString;
43
+ updated_at: z.ZodString;
44
+ }, z.core.$strip>>;
45
+ }, z.core.$strip>>;
46
+ //# sourceMappingURL=list-merge-requests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-merge-requests.d.ts","sourceRoot":"","sources":["../../src/tools/list-merge-requests.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAiD5B,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { api } from '../gitlab-api.js';
4
+ import { mapMergeRequest, mergeRequestSchema } from './schemas.js';
5
+ export const listMergeRequests = defineTool({
6
+ name: 'list_merge_requests',
7
+ displayName: 'List Merge Requests',
8
+ description: 'List merge requests for a project. By default returns opened MRs sorted by creation date. Can filter by state, labels, author, assignee, and more.',
9
+ summary: 'List merge requests for a project',
10
+ icon: 'git-pull-request',
11
+ group: 'Merge Requests',
12
+ input: z.object({
13
+ project: z.string().min(1).describe('Project path (e.g., "group/project") or numeric project ID'),
14
+ state: z
15
+ .enum(['opened', 'closed', 'merged', 'locked', 'all'])
16
+ .optional()
17
+ .describe('MR state filter (default: opened)'),
18
+ labels: z.string().optional().describe('Comma-separated list of label names to filter by'),
19
+ author_username: z.string().optional().describe('Filter by author username'),
20
+ assignee_id: z.number().optional().describe('Filter by assignee user ID'),
21
+ source_branch: z.string().optional().describe('Filter by source branch'),
22
+ target_branch: z.string().optional().describe('Filter by target branch'),
23
+ search: z.string().optional().describe('Search in title and description'),
24
+ order_by: z.enum(['created_at', 'updated_at']).optional().describe('Sort field (default: created_at)'),
25
+ sort: z.enum(['asc', 'desc']).optional().describe('Sort direction (default: desc)'),
26
+ per_page: z.number().int().min(1).max(100).optional().describe('Results per page (default 20, max 100)'),
27
+ page: z.number().int().min(1).optional().describe('Page number (default 1)'),
28
+ }),
29
+ output: z.object({
30
+ merge_requests: z.array(mergeRequestSchema).describe('List of merge requests'),
31
+ }),
32
+ handle: async (params) => {
33
+ const query = {
34
+ state: params.state ?? 'opened',
35
+ per_page: params.per_page ?? 20,
36
+ page: params.page,
37
+ order_by: params.order_by,
38
+ sort: params.sort,
39
+ };
40
+ if (params.labels)
41
+ query.labels = params.labels;
42
+ if (params.author_username)
43
+ query.author_username = params.author_username;
44
+ if (params.assignee_id !== undefined)
45
+ query.assignee_id = params.assignee_id;
46
+ if (params.source_branch)
47
+ query.source_branch = params.source_branch;
48
+ if (params.target_branch)
49
+ query.target_branch = params.target_branch;
50
+ if (params.search)
51
+ query.search = params.search;
52
+ const data = await api(`/projects/${encodeURIComponent(params.project)}/merge_requests`, { query });
53
+ return { merge_requests: (data ?? []).map(mapMergeRequest) };
54
+ },
55
+ });
56
+ //# sourceMappingURL=list-merge-requests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-merge-requests.js","sourceRoot":"","sources":["../../src/tools/list-merge-requests.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { z } from 'zod';
2
+ export declare const listNotes: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ project: z.ZodString;
4
+ noteable_type: z.ZodEnum<{
5
+ issues: "issues";
6
+ merge_requests: "merge_requests";
7
+ }>;
8
+ noteable_iid: z.ZodNumber;
9
+ order_by: z.ZodOptional<z.ZodEnum<{
10
+ created_at: "created_at";
11
+ updated_at: "updated_at";
12
+ }>>;
13
+ sort: z.ZodOptional<z.ZodEnum<{
14
+ asc: "asc";
15
+ desc: "desc";
16
+ }>>;
17
+ per_page: z.ZodOptional<z.ZodNumber>;
18
+ page: z.ZodOptional<z.ZodNumber>;
19
+ }, z.core.$strip>, z.ZodObject<{
20
+ notes: z.ZodArray<z.ZodObject<{
21
+ id: z.ZodNumber;
22
+ body: z.ZodString;
23
+ author_username: z.ZodString;
24
+ system: z.ZodBoolean;
25
+ created_at: z.ZodString;
26
+ updated_at: z.ZodString;
27
+ }, z.core.$strip>>;
28
+ }, z.core.$strip>>;
29
+ //# sourceMappingURL=list-notes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-notes.d.ts","sourceRoot":"","sources":["../../src/tools/list-notes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;kBAkCpB,CAAC"}