@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.
- package/dist/adapter.iife.js +15367 -0
- package/dist/adapter.iife.js.map +7 -0
- package/dist/gitlab-api.d.ts +13 -0
- package/dist/gitlab-api.d.ts.map +1 -0
- package/dist/gitlab-api.js +114 -0
- package/dist/gitlab-api.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +70 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/create-issue.d.ts +27 -0
- package/dist/tools/create-issue.d.ts.map +1 -0
- package/dist/tools/create-issue.js +43 -0
- package/dist/tools/create-issue.js.map +1 -0
- package/dist/tools/create-merge-request.d.ts +32 -0
- package/dist/tools/create-merge-request.d.ts.map +1 -0
- package/dist/tools/create-merge-request.js +52 -0
- package/dist/tools/create-merge-request.js.map +1 -0
- package/dist/tools/create-note.d.ts +20 -0
- package/dist/tools/create-note.d.ts.map +1 -0
- package/dist/tools/create-note.js +26 -0
- package/dist/tools/create-note.js.map +1 -0
- package/dist/tools/get-file-content.d.ts +10 -0
- package/dist/tools/get-file-content.d.ts.map +1 -0
- package/dist/tools/get-file-content.js +33 -0
- package/dist/tools/get-file-content.js.map +1 -0
- package/dist/tools/get-issue.d.ts +22 -0
- package/dist/tools/get-issue.d.ts.map +1 -0
- package/dist/tools/get-issue.js +24 -0
- package/dist/tools/get-issue.js.map +1 -0
- package/dist/tools/get-job-log.d.ts +8 -0
- package/dist/tools/get-job-log.d.ts.map +1 -0
- package/dist/tools/get-job-log.js +23 -0
- package/dist/tools/get-job-log.js.map +1 -0
- package/dist/tools/get-merge-request-diff.d.ts +15 -0
- package/dist/tools/get-merge-request-diff.d.ts.map +1 -0
- package/dist/tools/get-merge-request-diff.js +41 -0
- package/dist/tools/get-merge-request-diff.js.map +1 -0
- package/dist/tools/get-merge-request.d.ts +24 -0
- package/dist/tools/get-merge-request.d.ts.map +1 -0
- package/dist/tools/get-merge-request.js +24 -0
- package/dist/tools/get-merge-request.js.map +1 -0
- package/dist/tools/get-project.d.ts +21 -0
- package/dist/tools/get-project.d.ts.map +1 -0
- package/dist/tools/get-project.js +23 -0
- package/dist/tools/get-project.js.map +1 -0
- package/dist/tools/get-user-profile.d.ts +17 -0
- package/dist/tools/get-user-profile.d.ts.map +1 -0
- package/dist/tools/get-user-profile.js +29 -0
- package/dist/tools/get-user-profile.js.map +1 -0
- package/dist/tools/list-branches.d.ts +16 -0
- package/dist/tools/list-branches.d.ts.map +1 -0
- package/dist/tools/list-branches.js +32 -0
- package/dist/tools/list-branches.js.map +1 -0
- package/dist/tools/list-commits.d.ts +22 -0
- package/dist/tools/list-commits.d.ts.map +1 -0
- package/dist/tools/list-commits.js +41 -0
- package/dist/tools/list-commits.js.map +1 -0
- package/dist/tools/list-issues.d.ts +40 -0
- package/dist/tools/list-issues.d.ts.map +1 -0
- package/dist/tools/list-issues.js +49 -0
- package/dist/tools/list-issues.js.map +1 -0
- package/dist/tools/list-merge-requests.d.ts +46 -0
- package/dist/tools/list-merge-requests.d.ts.map +1 -0
- package/dist/tools/list-merge-requests.js +56 -0
- package/dist/tools/list-merge-requests.js.map +1 -0
- package/dist/tools/list-notes.d.ts +29 -0
- package/dist/tools/list-notes.d.ts.map +1 -0
- package/dist/tools/list-notes.js +35 -0
- package/dist/tools/list-notes.js.map +1 -0
- package/dist/tools/list-pipeline-jobs.d.ts +20 -0
- package/dist/tools/list-pipeline-jobs.d.ts.map +1 -0
- package/dist/tools/list-pipeline-jobs.js +30 -0
- package/dist/tools/list-pipeline-jobs.js.map +1 -0
- package/dist/tools/list-pipelines.d.ts +42 -0
- package/dist/tools/list-pipelines.d.ts.map +1 -0
- package/dist/tools/list-pipelines.js +47 -0
- package/dist/tools/list-pipelines.js.map +1 -0
- package/dist/tools/list-projects.d.ts +42 -0
- package/dist/tools/list-projects.d.ts.map +1 -0
- package/dist/tools/list-projects.js +47 -0
- package/dist/tools/list-projects.js.map +1 -0
- package/dist/tools/merge-merge-request.d.ts +28 -0
- package/dist/tools/merge-merge-request.d.ts.map +1 -0
- package/dist/tools/merge-merge-request.js +37 -0
- package/dist/tools/merge-merge-request.js.map +1 -0
- package/dist/tools/schemas.d.ts +326 -0
- package/dist/tools/schemas.d.ts.map +1 -0
- package/dist/tools/schemas.js +213 -0
- package/dist/tools/schemas.js.map +1 -0
- package/dist/tools/search-projects.d.ts +35 -0
- package/dist/tools/search-projects.d.ts.map +1 -0
- package/dist/tools/search-projects.js +37 -0
- package/dist/tools/search-projects.js.map +1 -0
- package/dist/tools/update-issue.d.ts +32 -0
- package/dist/tools/update-issue.d.ts.map +1 -0
- package/dist/tools/update-issue.js +46 -0
- package/dist/tools/update-issue.js.map +1 -0
- package/dist/tools/update-merge-request.d.ts +35 -0
- package/dist/tools/update-merge-request.d.ts.map +1 -0
- package/dist/tools/update-merge-request.js +49 -0
- package/dist/tools/update-merge-request.js.map +1 -0
- package/dist/tools.json +2661 -0
- 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"}
|