@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,35 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { api } from '../gitlab-api.js';
4
+ import { mapNote, noteSchema } from './schemas.js';
5
+ export const listNotes = defineTool({
6
+ name: 'list_notes',
7
+ displayName: 'List Notes',
8
+ description: 'List notes (comments) on an issue or merge request. System notes (status changes, label updates) are included by default.',
9
+ summary: 'List notes on an issue or merge request',
10
+ icon: 'message-square',
11
+ group: 'Notes',
12
+ input: z.object({
13
+ project: z.string().min(1).describe('Project path (e.g., "group/project") or numeric project ID'),
14
+ noteable_type: z.enum(['issues', 'merge_requests']).describe('Type of the noteable: "issues" or "merge_requests"'),
15
+ noteable_iid: z.number().int().min(1).describe('IID of the issue or merge request'),
16
+ order_by: z.enum(['created_at', 'updated_at']).optional().describe('Sort field (default: created_at)'),
17
+ sort: z.enum(['asc', 'desc']).optional().describe('Sort direction (default: desc)'),
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
+ notes: z.array(noteSchema).describe('List of notes'),
23
+ }),
24
+ handle: async (params) => {
25
+ const query = {
26
+ per_page: params.per_page ?? 20,
27
+ page: params.page,
28
+ order_by: params.order_by,
29
+ sort: params.sort,
30
+ };
31
+ const data = await api(`/projects/${encodeURIComponent(params.project)}/${params.noteable_type}/${params.noteable_iid}/notes`, { query });
32
+ return { notes: (data ?? []).map(mapNote) };
33
+ },
34
+ });
35
+ //# sourceMappingURL=list-notes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-notes.js","sourceRoot":"","sources":["../../src/tools/list-notes.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,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC;IAClC,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,YAAY;IACzB,WAAW,EACT,2HAA2H;IAC7H,OAAO,EAAE,yCAAyC;IAClD,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,4DAA4D,CAAC;QACjG,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,oDAAoD,CAAC;QAClH,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QACnF,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACtG,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QACnF,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,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;KACrD,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;YACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,GAAG,CACpB,aAAa,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,YAAY,QAAQ,EACtG,EAAE,KAAK,EAAE,CACV,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9C,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { z } from 'zod';
2
+ export declare const listPipelineJobs: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ project: z.ZodString;
4
+ pipeline_id: z.ZodNumber;
5
+ per_page: z.ZodOptional<z.ZodNumber>;
6
+ page: z.ZodOptional<z.ZodNumber>;
7
+ }, z.core.$strip>, z.ZodObject<{
8
+ jobs: z.ZodArray<z.ZodObject<{
9
+ id: z.ZodNumber;
10
+ name: z.ZodString;
11
+ stage: z.ZodString;
12
+ status: z.ZodString;
13
+ ref: z.ZodString;
14
+ web_url: z.ZodString;
15
+ duration: z.ZodNumber;
16
+ created_at: z.ZodString;
17
+ finished_at: z.ZodString;
18
+ }, z.core.$strip>>;
19
+ }, z.core.$strip>>;
20
+ //# sourceMappingURL=list-pipeline-jobs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-pipeline-jobs.d.ts","sourceRoot":"","sources":["../../src/tools/list-pipeline-jobs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;kBA4B3B,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { api } from '../gitlab-api.js';
4
+ import { jobSchema, mapJob } from './schemas.js';
5
+ export const listPipelineJobs = defineTool({
6
+ name: 'list_pipeline_jobs',
7
+ displayName: 'List Pipeline Jobs',
8
+ description: 'List jobs for a specific pipeline.',
9
+ summary: 'List jobs for a pipeline',
10
+ icon: 'play',
11
+ group: 'CI/CD',
12
+ input: z.object({
13
+ project: z.string().min(1).describe('Project path (e.g., "group/project") or numeric project ID'),
14
+ pipeline_id: z.number().int().min(1).describe('Pipeline ID'),
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
+ jobs: z.array(jobSchema).describe('List of jobs'),
20
+ }),
21
+ handle: async (params) => {
22
+ const query = {
23
+ per_page: params.per_page ?? 20,
24
+ page: params.page,
25
+ };
26
+ const data = await api(`/projects/${encodeURIComponent(params.project)}/pipelines/${params.pipeline_id}/jobs`, { query });
27
+ return { jobs: (data ?? []).map(mapJob) };
28
+ },
29
+ });
30
+ //# sourceMappingURL=list-pipeline-jobs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-pipeline-jobs.js","sourceRoot":"","sources":["../../src/tools/list-pipeline-jobs.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,SAAS,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;IACzC,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,oBAAoB;IACjC,WAAW,EAAE,oCAAoC;IACjD,OAAO,EAAE,0BAA0B;IACnC,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,4DAA4D,CAAC;QACjG,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC5D,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,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;KAClD,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;QAEF,MAAM,IAAI,GAAG,MAAM,GAAG,CACpB,aAAa,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,MAAM,CAAC,WAAW,OAAO,EACtF,EAAE,KAAK,EAAE,CACV,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IAC5C,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { z } from 'zod';
2
+ export declare const listPipelines: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ project: z.ZodString;
4
+ status: z.ZodOptional<z.ZodEnum<{
5
+ success: "success";
6
+ running: "running";
7
+ pending: "pending";
8
+ failed: "failed";
9
+ canceled: "canceled";
10
+ skipped: "skipped";
11
+ manual: "manual";
12
+ scheduled: "scheduled";
13
+ }>>;
14
+ ref: z.ZodOptional<z.ZodString>;
15
+ source: z.ZodOptional<z.ZodString>;
16
+ order_by: z.ZodOptional<z.ZodEnum<{
17
+ id: "id";
18
+ updated_at: "updated_at";
19
+ status: "status";
20
+ ref: "ref";
21
+ user_id: "user_id";
22
+ }>>;
23
+ sort: z.ZodOptional<z.ZodEnum<{
24
+ asc: "asc";
25
+ desc: "desc";
26
+ }>>;
27
+ per_page: z.ZodOptional<z.ZodNumber>;
28
+ page: z.ZodOptional<z.ZodNumber>;
29
+ }, z.core.$strip>, z.ZodObject<{
30
+ pipelines: z.ZodArray<z.ZodObject<{
31
+ id: z.ZodNumber;
32
+ iid: z.ZodNumber;
33
+ status: z.ZodString;
34
+ ref: z.ZodString;
35
+ sha: z.ZodString;
36
+ source: z.ZodString;
37
+ web_url: z.ZodString;
38
+ created_at: z.ZodString;
39
+ updated_at: z.ZodString;
40
+ }, z.core.$strip>>;
41
+ }, z.core.$strip>>;
42
+ //# sourceMappingURL=list-pipelines.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-pipelines.d.ts","sourceRoot":"","sources":["../../src/tools/list-pipelines.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAuCxB,CAAC"}
@@ -0,0 +1,47 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { api } from '../gitlab-api.js';
4
+ import { mapPipeline, pipelineSchema } from './schemas.js';
5
+ export const listPipelines = defineTool({
6
+ name: 'list_pipelines',
7
+ displayName: 'List Pipelines',
8
+ description: 'List CI/CD pipelines for a project. Can filter by status, ref, and source.',
9
+ summary: 'List CI/CD pipelines',
10
+ icon: 'workflow',
11
+ group: 'CI/CD',
12
+ input: z.object({
13
+ project: z.string().min(1).describe('Project path (e.g., "group/project") or numeric project ID'),
14
+ status: z
15
+ .enum(['running', 'pending', 'success', 'failed', 'canceled', 'skipped', 'manual', 'scheduled'])
16
+ .optional()
17
+ .describe('Filter by pipeline status'),
18
+ ref: z.string().optional().describe('Filter by branch or tag name'),
19
+ source: z.string().optional().describe('Filter by source (e.g., push, web, schedule, merge_request_event)'),
20
+ order_by: z.enum(['id', 'status', 'ref', 'updated_at', 'user_id']).optional().describe('Sort field (default: id)'),
21
+ sort: z.enum(['asc', 'desc']).optional().describe('Sort direction (default: desc)'),
22
+ per_page: z.number().int().min(1).max(100).optional().describe('Results per page (default 20, max 100)'),
23
+ page: z.number().int().min(1).optional().describe('Page number (default 1)'),
24
+ }),
25
+ output: z.object({
26
+ pipelines: z.array(pipelineSchema).describe('List of pipelines'),
27
+ }),
28
+ handle: async (params) => {
29
+ const query = {
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.status)
36
+ query.status = params.status;
37
+ if (params.ref)
38
+ query.ref = params.ref;
39
+ if (params.source)
40
+ query.source = params.source;
41
+ const data = await api(`/projects/${encodeURIComponent(params.project)}/pipelines`, {
42
+ query,
43
+ });
44
+ return { pipelines: (data ?? []).map(mapPipeline) };
45
+ },
46
+ });
47
+ //# sourceMappingURL=list-pipelines.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-pipelines.js","sourceRoot":"","sources":["../../src/tools/list-pipelines.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { z } from 'zod';
2
+ export declare const listProjects: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ membership: z.ZodOptional<z.ZodBoolean>;
4
+ owned: z.ZodOptional<z.ZodBoolean>;
5
+ search: z.ZodOptional<z.ZodString>;
6
+ visibility: z.ZodOptional<z.ZodEnum<{
7
+ internal: "internal";
8
+ public: "public";
9
+ private: "private";
10
+ }>>;
11
+ order_by: z.ZodOptional<z.ZodEnum<{
12
+ id: "id";
13
+ name: "name";
14
+ created_at: "created_at";
15
+ last_activity_at: "last_activity_at";
16
+ updated_at: "updated_at";
17
+ path: "path";
18
+ }>>;
19
+ sort: z.ZodOptional<z.ZodEnum<{
20
+ asc: "asc";
21
+ desc: "desc";
22
+ }>>;
23
+ per_page: z.ZodOptional<z.ZodNumber>;
24
+ page: z.ZodOptional<z.ZodNumber>;
25
+ }, z.core.$strip>, z.ZodObject<{
26
+ projects: z.ZodArray<z.ZodObject<{
27
+ id: z.ZodNumber;
28
+ name: z.ZodString;
29
+ path_with_namespace: z.ZodString;
30
+ description: z.ZodString;
31
+ visibility: z.ZodString;
32
+ web_url: z.ZodString;
33
+ default_branch: z.ZodString;
34
+ star_count: z.ZodNumber;
35
+ forks_count: z.ZodNumber;
36
+ open_issues_count: z.ZodNumber;
37
+ archived: z.ZodBoolean;
38
+ created_at: z.ZodString;
39
+ last_activity_at: z.ZodString;
40
+ }, z.core.$strip>>;
41
+ }, z.core.$strip>>;
42
+ //# sourceMappingURL=list-projects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-projects.d.ts","sourceRoot":"","sources":["../../src/tools/list-projects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAuCvB,CAAC"}
@@ -0,0 +1,47 @@
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 listProjects = defineTool({
6
+ name: 'list_projects',
7
+ displayName: 'List Projects',
8
+ description: 'List projects accessible to the authenticated user. Can filter by membership, visibility, search query, and more.',
9
+ summary: 'List accessible projects',
10
+ icon: 'folder-git-2',
11
+ group: 'Projects',
12
+ input: z.object({
13
+ membership: z.boolean().optional().describe('Limit to projects the user is a member of (default: false)'),
14
+ owned: z.boolean().optional().describe('Limit to projects owned by the user (default: false)'),
15
+ search: z.string().optional().describe('Search by project name'),
16
+ visibility: z.enum(['public', 'internal', 'private']).optional().describe('Filter by visibility level'),
17
+ order_by: z
18
+ .enum(['id', 'name', 'path', 'created_at', 'updated_at', 'last_activity_at'])
19
+ .optional()
20
+ .describe('Sort field (default: created_at)'),
21
+ sort: z.enum(['asc', 'desc']).optional().describe('Sort direction (default: desc)'),
22
+ per_page: z.number().int().min(1).max(100).optional().describe('Results per page (default 20, max 100)'),
23
+ page: z.number().int().min(1).optional().describe('Page number (default 1)'),
24
+ }),
25
+ output: z.object({
26
+ projects: z.array(projectSchema).describe('List of projects'),
27
+ }),
28
+ handle: async (params) => {
29
+ const query = {
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.membership !== undefined)
36
+ query.membership = params.membership;
37
+ if (params.owned !== undefined)
38
+ query.owned = params.owned;
39
+ if (params.search)
40
+ query.search = params.search;
41
+ if (params.visibility)
42
+ query.visibility = params.visibility;
43
+ const data = await api('/projects', { query });
44
+ return { projects: (data ?? []).map(mapProject) };
45
+ },
46
+ });
47
+ //# sourceMappingURL=list-projects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-projects.js","sourceRoot":"","sources":["../../src/tools/list-projects.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { z } from 'zod';
2
+ export declare const mergeMergeRequest: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ project: z.ZodString;
4
+ merge_request_iid: z.ZodNumber;
5
+ merge_commit_message: z.ZodOptional<z.ZodString>;
6
+ squash_commit_message: z.ZodOptional<z.ZodString>;
7
+ squash: z.ZodOptional<z.ZodBoolean>;
8
+ should_remove_source_branch: z.ZodOptional<z.ZodBoolean>;
9
+ }, z.core.$strip>, z.ZodObject<{
10
+ merge_request: z.ZodObject<{
11
+ iid: z.ZodNumber;
12
+ title: z.ZodString;
13
+ state: z.ZodString;
14
+ description: z.ZodString;
15
+ web_url: z.ZodString;
16
+ author_username: z.ZodString;
17
+ source_branch: z.ZodString;
18
+ target_branch: z.ZodString;
19
+ labels: z.ZodArray<z.ZodString>;
20
+ draft: z.ZodBoolean;
21
+ merged_by_username: z.ZodString;
22
+ merge_status: z.ZodString;
23
+ has_conflicts: z.ZodBoolean;
24
+ created_at: z.ZodString;
25
+ updated_at: z.ZodString;
26
+ }, z.core.$strip>;
27
+ }, z.core.$strip>>;
28
+ //# sourceMappingURL=merge-merge-request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-merge-request.d.ts","sourceRoot":"","sources":["../../src/tools/merge-merge-request.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;kBAgC5B,CAAC"}
@@ -0,0 +1,37 @@
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 mergeMergeRequest = defineTool({
6
+ name: 'merge_merge_request',
7
+ displayName: 'Merge a Merge Request',
8
+ description: 'Accept and merge a merge request. Optionally squash commits or delete the source branch.',
9
+ summary: 'Merge a merge request',
10
+ icon: 'git-merge',
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
+ merge_commit_message: z.string().optional().describe('Custom merge commit message'),
16
+ squash_commit_message: z.string().optional().describe('Custom squash commit message'),
17
+ squash: z.boolean().optional().describe('Squash commits when merging'),
18
+ should_remove_source_branch: z.boolean().optional().describe('Delete source branch after merge'),
19
+ }),
20
+ output: z.object({
21
+ merge_request: mergeRequestSchema.describe('The merged merge request'),
22
+ }),
23
+ handle: async (params) => {
24
+ const body = {};
25
+ if (params.merge_commit_message !== undefined)
26
+ body.merge_commit_message = params.merge_commit_message;
27
+ if (params.squash_commit_message !== undefined)
28
+ body.squash_commit_message = params.squash_commit_message;
29
+ if (params.squash !== undefined)
30
+ body.squash = params.squash;
31
+ if (params.should_remove_source_branch !== undefined)
32
+ body.should_remove_source_branch = params.should_remove_source_branch;
33
+ const data = await api(`/projects/${encodeURIComponent(params.project)}/merge_requests/${params.merge_request_iid}/merge`, { method: 'PUT', body });
34
+ return { merge_request: mapMergeRequest(data) };
35
+ },
36
+ });
37
+ //# sourceMappingURL=merge-merge-request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-merge-request.js","sourceRoot":"","sources":["../../src/tools/merge-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,iBAAiB,GAAG,UAAU,CAAC;IAC1C,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,uBAAuB;IACpC,WAAW,EAAE,0FAA0F;IACvG,OAAO,EAAE,uBAAuB;IAChC,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;QAC5F,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QACnF,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QACrF,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QACtE,2BAA2B,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;KACjG,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,aAAa,EAAE,kBAAkB,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KACvE,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAA4B,EAAE,CAAC;QACzC,IAAI,MAAM,CAAC,oBAAoB,KAAK,SAAS;YAAE,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;QACvG,IAAI,MAAM,CAAC,qBAAqB,KAAK,SAAS;YAAE,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;QAC1G,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7D,IAAI,MAAM,CAAC,2BAA2B,KAAK,SAAS;YAClD,IAAI,CAAC,2BAA2B,GAAG,MAAM,CAAC,2BAA2B,CAAC;QAExE,MAAM,IAAI,GAAG,MAAM,GAAG,CACpB,aAAa,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,MAAM,CAAC,iBAAiB,QAAQ,EAClG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CACxB,CAAC;QACF,OAAO,EAAE,aAAa,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;IAClD,CAAC;CACF,CAAC,CAAC"}