@rnsk/toolkits 0.0.8 → 0.0.9
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/README.md +9 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.js +17 -1
- package/dist/toolkits/bitbucket/icon.d.ts +5 -0
- package/dist/toolkits/bitbucket/icon.js +6 -0
- package/dist/toolkits/bitbucket/manifest.d.ts +3 -0
- package/dist/toolkits/bitbucket/manifest.js +56 -0
- package/dist/toolkits/bitbucket/tools/client.d.ts +38 -0
- package/dist/toolkits/bitbucket/tools/client.js +87 -0
- package/dist/toolkits/bitbucket/tools/commits.d.ts +149 -0
- package/dist/toolkits/bitbucket/tools/commits.js +444 -0
- package/dist/toolkits/bitbucket/tools/index.d.ts +1093 -0
- package/dist/toolkits/bitbucket/tools/index.js +770 -0
- package/dist/toolkits/bitbucket/tools/issues.d.ts +73 -0
- package/dist/toolkits/bitbucket/tools/issues.js +234 -0
- package/dist/toolkits/bitbucket/tools/pipelines.d.ts +124 -0
- package/dist/toolkits/bitbucket/tools/pipelines.js +446 -0
- package/dist/toolkits/bitbucket/tools/pull-requests.d.ts +174 -0
- package/dist/toolkits/bitbucket/tools/pull-requests.js +541 -0
- package/dist/toolkits/bitbucket/tools/reports.d.ts +84 -0
- package/dist/toolkits/bitbucket/tools/reports.js +213 -0
- package/dist/toolkits/bitbucket/tools/repositories.d.ts +156 -0
- package/dist/toolkits/bitbucket/tools/repositories.js +531 -0
- package/dist/toolkits/bitbucket/tools/search.d.ts +17 -0
- package/dist/toolkits/bitbucket/tools/search.js +67 -0
- package/dist/toolkits/bitbucket/tools/snippets.d.ts +34 -0
- package/dist/toolkits/bitbucket/tools/snippets.js +122 -0
- package/dist/toolkits/bitbucket/tools/users-workspaces.d.ts +65 -0
- package/dist/toolkits/bitbucket/tools/users-workspaces.js +294 -0
- package/dist/toolkits/discord/icon.d.ts +5 -0
- package/dist/toolkits/discord/icon.js +12 -0
- package/dist/toolkits/discord/manifest.d.ts +3 -0
- package/dist/toolkits/discord/manifest.js +52 -0
- package/dist/toolkits/discord/tools/applications.d.ts +79 -0
- package/dist/toolkits/discord/tools/applications.js +216 -0
- package/dist/toolkits/discord/tools/client.d.ts +22 -0
- package/dist/toolkits/discord/tools/client.js +69 -0
- package/dist/toolkits/discord/tools/guilds.d.ts +39 -0
- package/dist/toolkits/discord/tools/guilds.js +123 -0
- package/dist/toolkits/discord/tools/index.d.ts +222 -0
- package/dist/toolkits/discord/tools/index.js +170 -0
- package/dist/toolkits/discord/tools/misc.d.ts +7 -0
- package/dist/toolkits/discord/tools/misc.js +40 -0
- package/dist/toolkits/discord/tools/users.d.ts +28 -0
- package/dist/toolkits/discord/tools/users.js +128 -0
- package/dist/toolkits/figma/tools/index.d.ts +1 -1
- package/dist/toolkits/figma/tools/render-images-of-file-nodes.d.ts +1 -1
- package/dist/toolkits/gitlab/icon.d.ts +5 -0
- package/dist/toolkits/gitlab/icon.js +6 -0
- package/dist/toolkits/gitlab/manifest.d.ts +3 -0
- package/dist/toolkits/gitlab/manifest.js +36 -0
- package/dist/toolkits/gitlab/tools/client.d.ts +7 -0
- package/dist/toolkits/gitlab/tools/client.js +45 -0
- package/dist/toolkits/gitlab/tools/index.d.ts +306 -0
- package/dist/toolkits/gitlab/tools/index.js +36 -0
- package/dist/toolkits/gitlab/tools/issues.d.ts +45 -0
- package/dist/toolkits/gitlab/tools/issues.js +103 -0
- package/dist/toolkits/gitlab/tools/merge-requests.d.ts +35 -0
- package/dist/toolkits/gitlab/tools/merge-requests.js +91 -0
- package/dist/toolkits/gitlab/tools/pipelines.d.ts +30 -0
- package/dist/toolkits/gitlab/tools/pipelines.js +66 -0
- package/dist/toolkits/gitlab/tools/projects.d.ts +36 -0
- package/dist/toolkits/gitlab/tools/projects.js +94 -0
- package/dist/toolkits/gitlab/tools/repository.d.ts +21 -0
- package/dist/toolkits/gitlab/tools/repository.js +53 -0
- package/dist/toolkits/gitlab/tools/users-groups.d.ts +11 -0
- package/dist/toolkits/gitlab/tools/users-groups.js +30 -0
- package/dist/toolkits/google-ads/tools/get-rmf-report.d.ts +2 -2
- package/dist/toolkits/google-ads/tools/index.d.ts +2 -2
- package/dist/toolkits/google-analytics/icon.d.ts +5 -0
- package/dist/toolkits/google-analytics/icon.js +11 -0
- package/dist/toolkits/google-analytics/manifest.d.ts +3 -0
- package/dist/toolkits/google-analytics/manifest.js +48 -0
- package/dist/toolkits/google-analytics/tools/admin.d.ts +73 -0
- package/dist/toolkits/google-analytics/tools/admin.js +238 -0
- package/dist/toolkits/google-analytics/tools/audiences.d.ts +81 -0
- package/dist/toolkits/google-analytics/tools/audiences.js +190 -0
- package/dist/toolkits/google-analytics/tools/client.d.ts +47 -0
- package/dist/toolkits/google-analytics/tools/client.js +74 -0
- package/dist/toolkits/google-analytics/tools/custom-definitions.d.ts +62 -0
- package/dist/toolkits/google-analytics/tools/custom-definitions.js +106 -0
- package/dist/toolkits/google-analytics/tools/index.d.ts +16 -0
- package/dist/toolkits/google-analytics/tools/index.js +88 -0
- package/dist/toolkits/google-analytics/tools/links.d.ts +22 -0
- package/dist/toolkits/google-analytics/tools/links.js +56 -0
- package/dist/toolkits/google-analytics/tools/measurement.d.ts +3 -0
- package/dist/toolkits/google-analytics/tools/measurement.js +55 -0
- package/dist/toolkits/google-analytics/tools/reports.d.ts +136 -0
- package/dist/toolkits/google-analytics/tools/reports.js +200 -0
- package/dist/toolkits/google-contacts/icon.d.ts +5 -0
- package/dist/toolkits/google-contacts/icon.js +6 -0
- package/dist/toolkits/google-contacts/manifest.d.ts +3 -0
- package/dist/toolkits/google-contacts/manifest.js +48 -0
- package/dist/toolkits/google-contacts/tools/client.d.ts +19 -0
- package/dist/toolkits/google-contacts/tools/client.js +44 -0
- package/dist/toolkits/google-contacts/tools/contacts.d.ts +94 -0
- package/dist/toolkits/google-contacts/tools/contacts.js +273 -0
- package/dist/toolkits/google-contacts/tools/directory.d.ts +36 -0
- package/dist/toolkits/google-contacts/tools/directory.js +99 -0
- package/dist/toolkits/google-contacts/tools/groups.d.ts +68 -0
- package/dist/toolkits/google-contacts/tools/groups.js +169 -0
- package/dist/toolkits/google-contacts/tools/index.d.ts +347 -0
- package/dist/toolkits/google-contacts/tools/index.js +34 -0
- package/dist/toolkits/google-contacts/tools/photos.d.ts +26 -0
- package/dist/toolkits/google-contacts/tools/photos.js +52 -0
- package/dist/toolkits/google-maps/icon.d.ts +5 -0
- package/dist/toolkits/google-maps/icon.js +39 -0
- package/dist/toolkits/google-maps/manifest.d.ts +3 -0
- package/dist/toolkits/google-maps/manifest.js +55 -0
- package/dist/toolkits/google-maps/tools/client.d.ts +27 -0
- package/dist/toolkits/google-maps/tools/client.js +72 -0
- package/dist/toolkits/google-maps/tools/geocode.d.ts +49 -0
- package/dist/toolkits/google-maps/tools/geocode.js +168 -0
- package/dist/toolkits/google-maps/tools/index.d.ts +432 -0
- package/dist/toolkits/google-maps/tools/index.js +31 -0
- package/dist/toolkits/google-maps/tools/misc.d.ts +70 -0
- package/dist/toolkits/google-maps/tools/misc.js +158 -0
- package/dist/toolkits/google-maps/tools/places.d.ts +112 -0
- package/dist/toolkits/google-maps/tools/places.js +185 -0
- package/dist/toolkits/google-maps/tools/routes.d.ts +48 -0
- package/dist/toolkits/google-maps/tools/routes.js +97 -0
- package/dist/toolkits/google-maps/tools/tiles.d.ts +51 -0
- package/dist/toolkits/google-maps/tools/tiles.js +84 -0
- package/dist/toolkits/google-photos/icon.d.ts +5 -0
- package/dist/toolkits/google-photos/icon.js +6 -0
- package/dist/toolkits/google-photos/manifest.d.ts +3 -0
- package/dist/toolkits/google-photos/manifest.js +47 -0
- package/dist/toolkits/google-photos/tools/albums.d.ts +83 -0
- package/dist/toolkits/google-photos/tools/albums.js +180 -0
- package/dist/toolkits/google-photos/tools/client.d.ts +24 -0
- package/dist/toolkits/google-photos/tools/client.js +77 -0
- package/dist/toolkits/google-photos/tools/index.d.ts +261 -0
- package/dist/toolkits/google-photos/tools/index.js +22 -0
- package/dist/toolkits/google-photos/tools/media.d.ts +52 -0
- package/dist/toolkits/google-photos/tools/media.js +142 -0
- package/dist/toolkits/google-photos/tools/uploads.d.ts +58 -0
- package/dist/toolkits/google-photos/tools/uploads.js +107 -0
- package/dist/toolkits/google-tasks/tools/index.d.ts +1 -1
- package/dist/toolkits/google-tasks/tools/update-task-full.d.ts +1 -1
- package/dist/toolkits/groww/tools/index.d.ts +1 -1
- package/dist/toolkits/groww/tools/instruments.d.ts +1 -1
- package/dist/toolkits/reddit/tools/index.d.ts +1 -1
- package/dist/toolkits/reddit/tools/search-across-subreddits.d.ts +1 -1
- package/dist/toolkits/slack/icon.d.ts +5 -0
- package/dist/toolkits/slack/icon.js +20 -0
- package/dist/toolkits/slack/manifest.d.ts +3 -0
- package/dist/toolkits/slack/manifest.js +93 -0
- package/dist/toolkits/slack/tools/admin-apps.d.ts +32 -0
- package/dist/toolkits/slack/tools/admin-apps.js +116 -0
- package/dist/toolkits/slack/tools/admin-conversations.d.ts +62 -0
- package/dist/toolkits/slack/tools/admin-conversations.js +246 -0
- package/dist/toolkits/slack/tools/admin-invites.d.ts +19 -0
- package/dist/toolkits/slack/tools/admin-invites.js +75 -0
- package/dist/toolkits/slack/tools/admin-users.d.ts +52 -0
- package/dist/toolkits/slack/tools/admin-users.js +182 -0
- package/dist/toolkits/slack/tools/audit.d.ts +20 -0
- package/dist/toolkits/slack/tools/audit.js +81 -0
- package/dist/toolkits/slack/tools/calls.d.ts +38 -0
- package/dist/toolkits/slack/tools/calls.js +141 -0
- package/dist/toolkits/slack/tools/canvas.d.ts +24 -0
- package/dist/toolkits/slack/tools/canvas.js +102 -0
- package/dist/toolkits/slack/tools/client.d.ts +22 -0
- package/dist/toolkits/slack/tools/client.js +73 -0
- package/dist/toolkits/slack/tools/conversations.d.ts +131 -0
- package/dist/toolkits/slack/tools/conversations.js +463 -0
- package/dist/toolkits/slack/tools/emoji.d.ts +29 -0
- package/dist/toolkits/slack/tools/emoji.js +118 -0
- package/dist/toolkits/slack/tools/files.d.ts +113 -0
- package/dist/toolkits/slack/tools/files.js +368 -0
- package/dist/toolkits/slack/tools/index.d.ts +28 -0
- package/dist/toolkits/slack/tools/index.js +187 -0
- package/dist/toolkits/slack/tools/messages.d.ts +106 -0
- package/dist/toolkits/slack/tools/messages.js +340 -0
- package/dist/toolkits/slack/tools/misc.d.ts +42 -0
- package/dist/toolkits/slack/tools/misc.js +127 -0
- package/dist/toolkits/slack/tools/reactions-stars-pins.d.ts +69 -0
- package/dist/toolkits/slack/tools/reactions-stars-pins.js +236 -0
- package/dist/toolkits/slack/tools/reminders.d.ts +22 -0
- package/dist/toolkits/slack/tools/reminders.js +83 -0
- package/dist/toolkits/slack/tools/search.d.ts +49 -0
- package/dist/toolkits/slack/tools/search.js +155 -0
- package/dist/toolkits/slack/tools/slack-lists.d.ts +65 -0
- package/dist/toolkits/slack/tools/slack-lists.js +282 -0
- package/dist/toolkits/slack/tools/teams.d.ts +75 -0
- package/dist/toolkits/slack/tools/teams.js +285 -0
- package/dist/toolkits/slack/tools/usergroups.d.ts +56 -0
- package/dist/toolkits/slack/tools/usergroups.js +194 -0
- package/dist/toolkits/slack/tools/users.d.ts +87 -0
- package/dist/toolkits/slack/tools/users.js +396 -0
- package/dist/toolkits/youtube/tools/add-video-to-playlist.d.ts +1 -1
- package/dist/toolkits/youtube/tools/delete-video.d.ts +1 -1
- package/dist/toolkits/youtube/tools/index.d.ts +10 -10
- package/dist/toolkits/youtube/tools/list-caption-track.d.ts +1 -1
- package/dist/toolkits/youtube/tools/list-playlist-items.d.ts +1 -1
- package/dist/toolkits/youtube/tools/list-video-categories.d.ts +1 -1
- package/dist/toolkits/youtube/tools/post-comment.d.ts +1 -1
- package/dist/toolkits/youtube/tools/report-video-abuse.d.ts +1 -1
- package/dist/toolkits/youtube/tools/search-youtube.d.ts +1 -1
- package/dist/toolkits/youtube/tools/update-thumbnail.d.ts +1 -1
- package/dist/toolkits/youtube/tools/update-video.d.ts +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
const GITLAB_API_BASE = 'https://gitlab.com/api/v4';
|
|
3
|
+
export function encodeId(id) {
|
|
4
|
+
return encodeURIComponent(String(id));
|
|
5
|
+
}
|
|
6
|
+
export async function gitlabRequest(gitlabToken, path, options = {}) {
|
|
7
|
+
if (!gitlabToken) {
|
|
8
|
+
return { error: 'GitLab token is required. Connect GitLab first.' };
|
|
9
|
+
}
|
|
10
|
+
const params = new URLSearchParams();
|
|
11
|
+
if (options.query) {
|
|
12
|
+
for (const [key, value] of Object.entries(options.query)) {
|
|
13
|
+
if (value !== undefined && value !== null && value !== '') {
|
|
14
|
+
params.append(key, String(value));
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
const queryString = params.toString();
|
|
19
|
+
const url = `${GITLAB_API_BASE}${path}${queryString ? `?${queryString}` : ''}`;
|
|
20
|
+
try {
|
|
21
|
+
const response = await fetch(url, {
|
|
22
|
+
method: options.method ?? 'GET',
|
|
23
|
+
headers: {
|
|
24
|
+
Authorization: `Bearer ${gitlabToken}`,
|
|
25
|
+
'Content-Type': 'application/json',
|
|
26
|
+
},
|
|
27
|
+
body: options.body !== undefined ? JSON.stringify(options.body) : undefined,
|
|
28
|
+
});
|
|
29
|
+
if (!response.ok) {
|
|
30
|
+
const details = await response.json().catch(() => ({}));
|
|
31
|
+
return { error: `GitLab API request failed with status ${response.status}`, details };
|
|
32
|
+
}
|
|
33
|
+
if (response.status === 204) {
|
|
34
|
+
return { success: true };
|
|
35
|
+
}
|
|
36
|
+
return await response.json();
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
return {
|
|
40
|
+
error: 'Error calling GitLab API',
|
|
41
|
+
message: error instanceof Error ? error.message : 'Unknown error',
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
import { gitlabListProjects, gitlabGetProject, gitlabCreateProject, gitlabUpdateProject, gitlabDeleteProject } from './projects.js';
|
|
2
|
+
import { gitlabListIssues, gitlabGetIssue, gitlabCreateIssue, gitlabUpdateIssue, gitlabListIssueNotes, gitlabCreateIssueNote } from './issues.js';
|
|
3
|
+
import { gitlabListMergeRequests, gitlabGetMergeRequest, gitlabCreateMergeRequest, gitlabMergeMergeRequest, gitlabCreateMergeRequestNote } from './merge-requests.js';
|
|
4
|
+
import { gitlabListPipelines, gitlabGetPipeline, gitlabCreatePipeline, gitlabListJobs } from './pipelines.js';
|
|
5
|
+
import { gitlabListBranches, gitlabListCommits, gitlabGetFile } from './repository.js';
|
|
6
|
+
import { gitlabGetCurrentUser, gitlabListGroups } from './users-groups.js';
|
|
7
|
+
export { gitlabListProjects, gitlabGetProject, gitlabCreateProject, gitlabUpdateProject, gitlabDeleteProject, gitlabListIssues, gitlabGetIssue, gitlabCreateIssue, gitlabUpdateIssue, gitlabListIssueNotes, gitlabCreateIssueNote, gitlabListMergeRequests, gitlabGetMergeRequest, gitlabCreateMergeRequest, gitlabMergeMergeRequest, gitlabCreateMergeRequestNote, gitlabListPipelines, gitlabGetPipeline, gitlabCreatePipeline, gitlabListJobs, gitlabListBranches, gitlabListCommits, gitlabGetFile, gitlabGetCurrentUser, gitlabListGroups, };
|
|
8
|
+
export declare const gitlabTools: ({
|
|
9
|
+
name: string;
|
|
10
|
+
description: string;
|
|
11
|
+
tool: import("ai").Tool<{
|
|
12
|
+
perPage: number;
|
|
13
|
+
page: number;
|
|
14
|
+
sort?: "asc" | "desc" | undefined;
|
|
15
|
+
search?: string | undefined;
|
|
16
|
+
owned?: boolean | undefined;
|
|
17
|
+
orderBy?: "path" | "id" | "name" | "updated_at" | "created_at" | "last_activity_at" | undefined;
|
|
18
|
+
gitlabToken?: string | undefined;
|
|
19
|
+
membership?: boolean | undefined;
|
|
20
|
+
}, any>;
|
|
21
|
+
requiredAuth: "gitlabToken";
|
|
22
|
+
scope: "read";
|
|
23
|
+
} | {
|
|
24
|
+
name: string;
|
|
25
|
+
description: string;
|
|
26
|
+
tool: import("ai").Tool<{
|
|
27
|
+
projectId: string | number;
|
|
28
|
+
gitlabToken?: string | undefined;
|
|
29
|
+
}, any>;
|
|
30
|
+
requiredAuth: "gitlabToken";
|
|
31
|
+
scope: "read";
|
|
32
|
+
} | {
|
|
33
|
+
name: string;
|
|
34
|
+
description: string;
|
|
35
|
+
tool: import("ai").Tool<{
|
|
36
|
+
name: string;
|
|
37
|
+
description?: string | undefined;
|
|
38
|
+
visibility?: "private" | "public" | "internal" | undefined;
|
|
39
|
+
gitlabToken?: string | undefined;
|
|
40
|
+
initializeWithReadme?: boolean | undefined;
|
|
41
|
+
defaultBranch?: string | undefined;
|
|
42
|
+
namespaceId?: string | number | undefined;
|
|
43
|
+
}, any>;
|
|
44
|
+
requiredAuth: "gitlabToken";
|
|
45
|
+
scope: "write";
|
|
46
|
+
} | {
|
|
47
|
+
name: string;
|
|
48
|
+
description: string;
|
|
49
|
+
tool: import("ai").Tool<{
|
|
50
|
+
projectId: string | number;
|
|
51
|
+
description?: string | undefined;
|
|
52
|
+
visibility?: "private" | "public" | "internal" | undefined;
|
|
53
|
+
name?: string | undefined;
|
|
54
|
+
gitlabToken?: string | undefined;
|
|
55
|
+
defaultBranch?: string | undefined;
|
|
56
|
+
}, any>;
|
|
57
|
+
requiredAuth: "gitlabToken";
|
|
58
|
+
scope: "write";
|
|
59
|
+
} | {
|
|
60
|
+
name: string;
|
|
61
|
+
description: string;
|
|
62
|
+
tool: import("ai").Tool<{
|
|
63
|
+
projectId: string | number;
|
|
64
|
+
gitlabToken?: string | undefined;
|
|
65
|
+
}, any>;
|
|
66
|
+
requiredAuth: "gitlabToken";
|
|
67
|
+
scope: "delete";
|
|
68
|
+
} | {
|
|
69
|
+
name: string;
|
|
70
|
+
description: string;
|
|
71
|
+
tool: import("ai").Tool<{
|
|
72
|
+
perPage: number;
|
|
73
|
+
page: number;
|
|
74
|
+
projectId?: string | number | undefined;
|
|
75
|
+
labels?: string | undefined;
|
|
76
|
+
state?: "all" | "closed" | "opened" | undefined;
|
|
77
|
+
search?: string | undefined;
|
|
78
|
+
gitlabToken?: string | undefined;
|
|
79
|
+
}, any>;
|
|
80
|
+
requiredAuth: "gitlabToken";
|
|
81
|
+
scope: "read";
|
|
82
|
+
} | {
|
|
83
|
+
name: string;
|
|
84
|
+
description: string;
|
|
85
|
+
tool: import("ai").Tool<{
|
|
86
|
+
projectId: string | number;
|
|
87
|
+
issueIid: string | number;
|
|
88
|
+
gitlabToken?: string | undefined;
|
|
89
|
+
}, any>;
|
|
90
|
+
requiredAuth: "gitlabToken";
|
|
91
|
+
scope: "read";
|
|
92
|
+
} | {
|
|
93
|
+
name: string;
|
|
94
|
+
description: string;
|
|
95
|
+
tool: import("ai").Tool<{
|
|
96
|
+
title: string;
|
|
97
|
+
projectId: string | number;
|
|
98
|
+
description?: string | undefined;
|
|
99
|
+
labels?: string | undefined;
|
|
100
|
+
gitlabToken?: string | undefined;
|
|
101
|
+
assigneeIds?: number[] | undefined;
|
|
102
|
+
}, any>;
|
|
103
|
+
requiredAuth: "gitlabToken";
|
|
104
|
+
scope: "write";
|
|
105
|
+
} | {
|
|
106
|
+
name: string;
|
|
107
|
+
description: string;
|
|
108
|
+
tool: import("ai").Tool<{
|
|
109
|
+
projectId: string | number;
|
|
110
|
+
issueIid: string | number;
|
|
111
|
+
description?: string | undefined;
|
|
112
|
+
title?: string | undefined;
|
|
113
|
+
labels?: string | undefined;
|
|
114
|
+
gitlabToken?: string | undefined;
|
|
115
|
+
stateEvent?: "reopen" | "close" | undefined;
|
|
116
|
+
}, any>;
|
|
117
|
+
requiredAuth: "gitlabToken";
|
|
118
|
+
scope: "write";
|
|
119
|
+
} | {
|
|
120
|
+
name: string;
|
|
121
|
+
description: string;
|
|
122
|
+
tool: import("ai").Tool<{
|
|
123
|
+
projectId: string | number;
|
|
124
|
+
perPage: number;
|
|
125
|
+
page: number;
|
|
126
|
+
issueIid: string | number;
|
|
127
|
+
gitlabToken?: string | undefined;
|
|
128
|
+
}, any>;
|
|
129
|
+
requiredAuth: "gitlabToken";
|
|
130
|
+
scope: "read";
|
|
131
|
+
} | {
|
|
132
|
+
name: string;
|
|
133
|
+
description: string;
|
|
134
|
+
tool: import("ai").Tool<{
|
|
135
|
+
projectId: string | number;
|
|
136
|
+
body: string;
|
|
137
|
+
issueIid: string | number;
|
|
138
|
+
gitlabToken?: string | undefined;
|
|
139
|
+
}, any>;
|
|
140
|
+
requiredAuth: "gitlabToken";
|
|
141
|
+
scope: "write";
|
|
142
|
+
} | {
|
|
143
|
+
name: string;
|
|
144
|
+
description: string;
|
|
145
|
+
tool: import("ai").Tool<{
|
|
146
|
+
perPage: number;
|
|
147
|
+
page: number;
|
|
148
|
+
projectId?: string | number | undefined;
|
|
149
|
+
state?: "all" | "closed" | "merged" | "opened" | undefined;
|
|
150
|
+
search?: string | undefined;
|
|
151
|
+
gitlabToken?: string | undefined;
|
|
152
|
+
}, any>;
|
|
153
|
+
requiredAuth: "gitlabToken";
|
|
154
|
+
scope: "read";
|
|
155
|
+
} | {
|
|
156
|
+
name: string;
|
|
157
|
+
description: string;
|
|
158
|
+
tool: import("ai").Tool<{
|
|
159
|
+
projectId: string | number;
|
|
160
|
+
mergeRequestIid: string | number;
|
|
161
|
+
gitlabToken?: string | undefined;
|
|
162
|
+
}, any>;
|
|
163
|
+
requiredAuth: "gitlabToken";
|
|
164
|
+
scope: "read";
|
|
165
|
+
} | {
|
|
166
|
+
name: string;
|
|
167
|
+
description: string;
|
|
168
|
+
tool: import("ai").Tool<{
|
|
169
|
+
title: string;
|
|
170
|
+
projectId: string | number;
|
|
171
|
+
sourceBranch: string;
|
|
172
|
+
targetBranch: string;
|
|
173
|
+
description?: string | undefined;
|
|
174
|
+
gitlabToken?: string | undefined;
|
|
175
|
+
}, any>;
|
|
176
|
+
requiredAuth: "gitlabToken";
|
|
177
|
+
scope: "write";
|
|
178
|
+
} | {
|
|
179
|
+
name: string;
|
|
180
|
+
description: string;
|
|
181
|
+
tool: import("ai").Tool<{
|
|
182
|
+
projectId: string | number;
|
|
183
|
+
mergeRequestIid: string | number;
|
|
184
|
+
squash?: boolean | undefined;
|
|
185
|
+
gitlabToken?: string | undefined;
|
|
186
|
+
shouldRemoveSourceBranch?: boolean | undefined;
|
|
187
|
+
}, any>;
|
|
188
|
+
requiredAuth: "gitlabToken";
|
|
189
|
+
scope: "write";
|
|
190
|
+
} | {
|
|
191
|
+
name: string;
|
|
192
|
+
description: string;
|
|
193
|
+
tool: import("ai").Tool<{
|
|
194
|
+
projectId: string | number;
|
|
195
|
+
body: string;
|
|
196
|
+
mergeRequestIid: string | number;
|
|
197
|
+
gitlabToken?: string | undefined;
|
|
198
|
+
}, any>;
|
|
199
|
+
requiredAuth: "gitlabToken";
|
|
200
|
+
scope: "write";
|
|
201
|
+
} | {
|
|
202
|
+
name: string;
|
|
203
|
+
description: string;
|
|
204
|
+
tool: import("ai").Tool<{
|
|
205
|
+
projectId: string | number;
|
|
206
|
+
perPage: number;
|
|
207
|
+
page: number;
|
|
208
|
+
status?: "success" | "skipped" | "pending" | "running" | "manual" | "failed" | "canceled" | undefined;
|
|
209
|
+
ref?: string | undefined;
|
|
210
|
+
gitlabToken?: string | undefined;
|
|
211
|
+
}, any>;
|
|
212
|
+
requiredAuth: "gitlabToken";
|
|
213
|
+
scope: "read";
|
|
214
|
+
} | {
|
|
215
|
+
name: string;
|
|
216
|
+
description: string;
|
|
217
|
+
tool: import("ai").Tool<{
|
|
218
|
+
projectId: string | number;
|
|
219
|
+
pipelineId: string | number;
|
|
220
|
+
gitlabToken?: string | undefined;
|
|
221
|
+
}, any>;
|
|
222
|
+
requiredAuth: "gitlabToken";
|
|
223
|
+
scope: "read";
|
|
224
|
+
} | {
|
|
225
|
+
name: string;
|
|
226
|
+
description: string;
|
|
227
|
+
tool: import("ai").Tool<{
|
|
228
|
+
projectId: string | number;
|
|
229
|
+
ref: string;
|
|
230
|
+
variables?: {
|
|
231
|
+
value: string;
|
|
232
|
+
key: string;
|
|
233
|
+
}[] | undefined;
|
|
234
|
+
gitlabToken?: string | undefined;
|
|
235
|
+
}, any>;
|
|
236
|
+
requiredAuth: "gitlabToken";
|
|
237
|
+
scope: "write";
|
|
238
|
+
} | {
|
|
239
|
+
name: string;
|
|
240
|
+
description: string;
|
|
241
|
+
tool: import("ai").Tool<{
|
|
242
|
+
projectId: string | number;
|
|
243
|
+
perPage: number;
|
|
244
|
+
page: number;
|
|
245
|
+
pipelineId: string | number;
|
|
246
|
+
gitlabToken?: string | undefined;
|
|
247
|
+
}, any>;
|
|
248
|
+
requiredAuth: "gitlabToken";
|
|
249
|
+
scope: "read";
|
|
250
|
+
} | {
|
|
251
|
+
name: string;
|
|
252
|
+
description: string;
|
|
253
|
+
tool: import("ai").Tool<{
|
|
254
|
+
projectId: string | number;
|
|
255
|
+
perPage: number;
|
|
256
|
+
page: number;
|
|
257
|
+
search?: string | undefined;
|
|
258
|
+
gitlabToken?: string | undefined;
|
|
259
|
+
}, any>;
|
|
260
|
+
requiredAuth: "gitlabToken";
|
|
261
|
+
scope: "read";
|
|
262
|
+
} | {
|
|
263
|
+
name: string;
|
|
264
|
+
description: string;
|
|
265
|
+
tool: import("ai").Tool<{
|
|
266
|
+
projectId: string | number;
|
|
267
|
+
perPage: number;
|
|
268
|
+
page: number;
|
|
269
|
+
gitlabToken?: string | undefined;
|
|
270
|
+
refName?: string | undefined;
|
|
271
|
+
}, any>;
|
|
272
|
+
requiredAuth: "gitlabToken";
|
|
273
|
+
scope: "read";
|
|
274
|
+
} | {
|
|
275
|
+
name: string;
|
|
276
|
+
description: string;
|
|
277
|
+
tool: import("ai").Tool<{
|
|
278
|
+
projectId: string | number;
|
|
279
|
+
ref: string;
|
|
280
|
+
filePath: string;
|
|
281
|
+
gitlabToken?: string | undefined;
|
|
282
|
+
}, any>;
|
|
283
|
+
requiredAuth: "gitlabToken";
|
|
284
|
+
scope: "read";
|
|
285
|
+
} | {
|
|
286
|
+
name: string;
|
|
287
|
+
description: string;
|
|
288
|
+
tool: import("ai").Tool<{
|
|
289
|
+
gitlabToken?: string | undefined;
|
|
290
|
+
}, any>;
|
|
291
|
+
requiredAuth: "gitlabToken";
|
|
292
|
+
scope: "read";
|
|
293
|
+
} | {
|
|
294
|
+
name: string;
|
|
295
|
+
description: string;
|
|
296
|
+
tool: import("ai").Tool<{
|
|
297
|
+
perPage: number;
|
|
298
|
+
page: number;
|
|
299
|
+
search?: string | undefined;
|
|
300
|
+
owned?: boolean | undefined;
|
|
301
|
+
gitlabToken?: string | undefined;
|
|
302
|
+
}, any>;
|
|
303
|
+
requiredAuth: "gitlabToken";
|
|
304
|
+
scope: "read";
|
|
305
|
+
})[];
|
|
306
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { gitlabListProjects, gitlabGetProject, gitlabCreateProject, gitlabUpdateProject, gitlabDeleteProject, } from './projects.js';
|
|
3
|
+
import { gitlabListIssues, gitlabGetIssue, gitlabCreateIssue, gitlabUpdateIssue, gitlabListIssueNotes, gitlabCreateIssueNote, } from './issues.js';
|
|
4
|
+
import { gitlabListMergeRequests, gitlabGetMergeRequest, gitlabCreateMergeRequest, gitlabMergeMergeRequest, gitlabCreateMergeRequestNote, } from './merge-requests.js';
|
|
5
|
+
import { gitlabListPipelines, gitlabGetPipeline, gitlabCreatePipeline, gitlabListJobs, } from './pipelines.js';
|
|
6
|
+
import { gitlabListBranches, gitlabListCommits, gitlabGetFile } from './repository.js';
|
|
7
|
+
import { gitlabGetCurrentUser, gitlabListGroups } from './users-groups.js';
|
|
8
|
+
export { gitlabListProjects, gitlabGetProject, gitlabCreateProject, gitlabUpdateProject, gitlabDeleteProject, gitlabListIssues, gitlabGetIssue, gitlabCreateIssue, gitlabUpdateIssue, gitlabListIssueNotes, gitlabCreateIssueNote, gitlabListMergeRequests, gitlabGetMergeRequest, gitlabCreateMergeRequest, gitlabMergeMergeRequest, gitlabCreateMergeRequestNote, gitlabListPipelines, gitlabGetPipeline, gitlabCreatePipeline, gitlabListJobs, gitlabListBranches, gitlabListCommits, gitlabGetFile, gitlabGetCurrentUser, gitlabListGroups, };
|
|
9
|
+
export const gitlabTools = [
|
|
10
|
+
{ name: 'GitlabListProjects', description: gitlabListProjects.description, tool: gitlabListProjects, requiredAuth: 'gitlabToken', scope: 'read' },
|
|
11
|
+
{ name: 'GitlabGetProject', description: gitlabGetProject.description, tool: gitlabGetProject, requiredAuth: 'gitlabToken', scope: 'read' },
|
|
12
|
+
{ name: 'GitlabCreateProject', description: gitlabCreateProject.description, tool: gitlabCreateProject, requiredAuth: 'gitlabToken', scope: 'write' },
|
|
13
|
+
{ name: 'GitlabUpdateProject', description: gitlabUpdateProject.description, tool: gitlabUpdateProject, requiredAuth: 'gitlabToken', scope: 'write' },
|
|
14
|
+
{ name: 'GitlabDeleteProject', description: gitlabDeleteProject.description, tool: gitlabDeleteProject, requiredAuth: 'gitlabToken', scope: 'delete' },
|
|
15
|
+
{ name: 'GitlabListIssues', description: gitlabListIssues.description, tool: gitlabListIssues, requiredAuth: 'gitlabToken', scope: 'read' },
|
|
16
|
+
{ name: 'GitlabGetIssue', description: gitlabGetIssue.description, tool: gitlabGetIssue, requiredAuth: 'gitlabToken', scope: 'read' },
|
|
17
|
+
{ name: 'GitlabCreateIssue', description: gitlabCreateIssue.description, tool: gitlabCreateIssue, requiredAuth: 'gitlabToken', scope: 'write' },
|
|
18
|
+
{ name: 'GitlabUpdateIssue', description: gitlabUpdateIssue.description, tool: gitlabUpdateIssue, requiredAuth: 'gitlabToken', scope: 'write' },
|
|
19
|
+
{ name: 'GitlabListIssueNotes', description: gitlabListIssueNotes.description, tool: gitlabListIssueNotes, requiredAuth: 'gitlabToken', scope: 'read' },
|
|
20
|
+
{ name: 'GitlabCreateIssueNote', description: gitlabCreateIssueNote.description, tool: gitlabCreateIssueNote, requiredAuth: 'gitlabToken', scope: 'write' },
|
|
21
|
+
{ name: 'GitlabListMergeRequests', description: gitlabListMergeRequests.description, tool: gitlabListMergeRequests, requiredAuth: 'gitlabToken', scope: 'read' },
|
|
22
|
+
{ name: 'GitlabGetMergeRequest', description: gitlabGetMergeRequest.description, tool: gitlabGetMergeRequest, requiredAuth: 'gitlabToken', scope: 'read' },
|
|
23
|
+
{ name: 'GitlabCreateMergeRequest', description: gitlabCreateMergeRequest.description, tool: gitlabCreateMergeRequest, requiredAuth: 'gitlabToken', scope: 'write' },
|
|
24
|
+
{ name: 'GitlabMergeMergeRequest', description: gitlabMergeMergeRequest.description, tool: gitlabMergeMergeRequest, requiredAuth: 'gitlabToken', scope: 'write' },
|
|
25
|
+
{ name: 'GitlabCreateMergeRequestNote', description: gitlabCreateMergeRequestNote.description, tool: gitlabCreateMergeRequestNote, requiredAuth: 'gitlabToken', scope: 'write' },
|
|
26
|
+
{ name: 'GitlabListPipelines', description: gitlabListPipelines.description, tool: gitlabListPipelines, requiredAuth: 'gitlabToken', scope: 'read' },
|
|
27
|
+
{ name: 'GitlabGetPipeline', description: gitlabGetPipeline.description, tool: gitlabGetPipeline, requiredAuth: 'gitlabToken', scope: 'read' },
|
|
28
|
+
{ name: 'GitlabCreatePipeline', description: gitlabCreatePipeline.description, tool: gitlabCreatePipeline, requiredAuth: 'gitlabToken', scope: 'write' },
|
|
29
|
+
{ name: 'GitlabListJobs', description: gitlabListJobs.description, tool: gitlabListJobs, requiredAuth: 'gitlabToken', scope: 'read' },
|
|
30
|
+
{ name: 'GitlabListBranches', description: gitlabListBranches.description, tool: gitlabListBranches, requiredAuth: 'gitlabToken', scope: 'read' },
|
|
31
|
+
{ name: 'GitlabListCommits', description: gitlabListCommits.description, tool: gitlabListCommits, requiredAuth: 'gitlabToken', scope: 'read' },
|
|
32
|
+
{ name: 'GitlabGetFile', description: gitlabGetFile.description, tool: gitlabGetFile, requiredAuth: 'gitlabToken', scope: 'read' },
|
|
33
|
+
{ name: 'GitlabGetCurrentUser', description: gitlabGetCurrentUser.description, tool: gitlabGetCurrentUser, requiredAuth: 'gitlabToken', scope: 'read' },
|
|
34
|
+
{ name: 'GitlabListGroups', description: gitlabListGroups.description, tool: gitlabListGroups, requiredAuth: 'gitlabToken', scope: 'read' },
|
|
35
|
+
];
|
|
36
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export declare const gitlabListIssues: import("ai").Tool<{
|
|
2
|
+
perPage: number;
|
|
3
|
+
page: number;
|
|
4
|
+
projectId?: string | number | undefined;
|
|
5
|
+
labels?: string | undefined;
|
|
6
|
+
state?: "all" | "closed" | "opened" | undefined;
|
|
7
|
+
search?: string | undefined;
|
|
8
|
+
gitlabToken?: string | undefined;
|
|
9
|
+
}, any>;
|
|
10
|
+
export declare const gitlabGetIssue: import("ai").Tool<{
|
|
11
|
+
projectId: string | number;
|
|
12
|
+
issueIid: string | number;
|
|
13
|
+
gitlabToken?: string | undefined;
|
|
14
|
+
}, any>;
|
|
15
|
+
export declare const gitlabCreateIssue: import("ai").Tool<{
|
|
16
|
+
title: string;
|
|
17
|
+
projectId: string | number;
|
|
18
|
+
description?: string | undefined;
|
|
19
|
+
labels?: string | undefined;
|
|
20
|
+
gitlabToken?: string | undefined;
|
|
21
|
+
assigneeIds?: number[] | undefined;
|
|
22
|
+
}, any>;
|
|
23
|
+
export declare const gitlabUpdateIssue: import("ai").Tool<{
|
|
24
|
+
projectId: string | number;
|
|
25
|
+
issueIid: string | number;
|
|
26
|
+
description?: string | undefined;
|
|
27
|
+
title?: string | undefined;
|
|
28
|
+
labels?: string | undefined;
|
|
29
|
+
gitlabToken?: string | undefined;
|
|
30
|
+
stateEvent?: "reopen" | "close" | undefined;
|
|
31
|
+
}, any>;
|
|
32
|
+
export declare const gitlabListIssueNotes: import("ai").Tool<{
|
|
33
|
+
projectId: string | number;
|
|
34
|
+
perPage: number;
|
|
35
|
+
page: number;
|
|
36
|
+
issueIid: string | number;
|
|
37
|
+
gitlabToken?: string | undefined;
|
|
38
|
+
}, any>;
|
|
39
|
+
export declare const gitlabCreateIssueNote: import("ai").Tool<{
|
|
40
|
+
projectId: string | number;
|
|
41
|
+
body: string;
|
|
42
|
+
issueIid: string | number;
|
|
43
|
+
gitlabToken?: string | undefined;
|
|
44
|
+
}, any>;
|
|
45
|
+
//# sourceMappingURL=issues.d.ts.map
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { tool } from 'ai';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { gitlabRequest, encodeId } from './client.js';
|
|
5
|
+
const tokenField = z.string().optional().describe('Injected by system; do not provide');
|
|
6
|
+
const projectField = z
|
|
7
|
+
.union([z.string(), z.number()])
|
|
8
|
+
.describe('Project ID or URL-encoded path (e.g. 123 or "group/project")');
|
|
9
|
+
export const gitlabListIssues = tool({
|
|
10
|
+
description: 'List GitLab issues. Provide projectId to list issues for a project, or omit it to list issues across all projects visible to the user. Use when the user asks to see issues, bugs, or tasks.',
|
|
11
|
+
inputSchema: z.object({
|
|
12
|
+
gitlabToken: tokenField,
|
|
13
|
+
projectId: projectField.optional(),
|
|
14
|
+
state: z.enum(['opened', 'closed', 'all']).optional().describe('Filter by issue state'),
|
|
15
|
+
labels: z.string().optional().describe('Comma-separated list of label names to filter by'),
|
|
16
|
+
search: z.string().optional().describe('Search issues by title and description'),
|
|
17
|
+
perPage: z.number().min(1).max(100).optional().default(20).describe('Results per page (max 100)'),
|
|
18
|
+
page: z.number().min(1).optional().default(1).describe('Page number'),
|
|
19
|
+
}),
|
|
20
|
+
execute: async ({ gitlabToken, projectId, state, labels, search, perPage = 20, page = 1 }) => {
|
|
21
|
+
const path = projectId ? `/projects/${encodeId(projectId)}/issues` : '/issues';
|
|
22
|
+
return gitlabRequest(gitlabToken, path, {
|
|
23
|
+
query: { state, labels, search, per_page: perPage, page },
|
|
24
|
+
});
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
export const gitlabGetIssue = tool({
|
|
28
|
+
description: 'Get a single GitLab issue by its internal ID (iid) within a project. Use when the user asks for details of a specific issue.',
|
|
29
|
+
inputSchema: z.object({
|
|
30
|
+
gitlabToken: tokenField,
|
|
31
|
+
projectId: projectField,
|
|
32
|
+
issueIid: z.union([z.string(), z.number()]).describe('Internal ID (iid) of the issue within the project'),
|
|
33
|
+
}),
|
|
34
|
+
execute: async ({ gitlabToken, projectId, issueIid }) => {
|
|
35
|
+
return gitlabRequest(gitlabToken, `/projects/${encodeId(projectId)}/issues/${issueIid}`);
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
export const gitlabCreateIssue = tool({
|
|
39
|
+
description: 'Create a new GitLab issue in a project. Use when the user wants to file a bug, open an issue, or create a task.',
|
|
40
|
+
inputSchema: z.object({
|
|
41
|
+
gitlabToken: tokenField,
|
|
42
|
+
projectId: projectField,
|
|
43
|
+
title: z.string().describe('Issue title'),
|
|
44
|
+
description: z.string().optional().describe('Issue description (Markdown supported)'),
|
|
45
|
+
labels: z.string().optional().describe('Comma-separated list of label names'),
|
|
46
|
+
assigneeIds: z.array(z.number()).optional().describe('User IDs to assign the issue to'),
|
|
47
|
+
}),
|
|
48
|
+
execute: async ({ gitlabToken, projectId, title, description, labels, assigneeIds }) => {
|
|
49
|
+
return gitlabRequest(gitlabToken, `/projects/${encodeId(projectId)}/issues`, {
|
|
50
|
+
method: 'POST',
|
|
51
|
+
body: { title, description, labels, assignee_ids: assigneeIds },
|
|
52
|
+
});
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
export const gitlabUpdateIssue = tool({
|
|
56
|
+
description: 'Update a GitLab issue (title, description, state, labels). Use when the user wants to edit, close, or reopen an issue.',
|
|
57
|
+
inputSchema: z.object({
|
|
58
|
+
gitlabToken: tokenField,
|
|
59
|
+
projectId: projectField,
|
|
60
|
+
issueIid: z.union([z.string(), z.number()]).describe('Internal ID (iid) of the issue within the project'),
|
|
61
|
+
title: z.string().optional().describe('New issue title'),
|
|
62
|
+
description: z.string().optional().describe('New issue description'),
|
|
63
|
+
stateEvent: z.enum(['close', 'reopen']).optional().describe('Close or reopen the issue'),
|
|
64
|
+
labels: z.string().optional().describe('Comma-separated list of label names (replaces existing labels)'),
|
|
65
|
+
}),
|
|
66
|
+
execute: async ({ gitlabToken, projectId, issueIid, title, description, stateEvent, labels }) => {
|
|
67
|
+
return gitlabRequest(gitlabToken, `/projects/${encodeId(projectId)}/issues/${issueIid}`, {
|
|
68
|
+
method: 'PUT',
|
|
69
|
+
body: { title, description, state_event: stateEvent, labels },
|
|
70
|
+
});
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
export const gitlabListIssueNotes = tool({
|
|
74
|
+
description: 'List comments (notes) on a GitLab issue. Use when the user asks to see discussion or comments on an issue.',
|
|
75
|
+
inputSchema: z.object({
|
|
76
|
+
gitlabToken: tokenField,
|
|
77
|
+
projectId: projectField,
|
|
78
|
+
issueIid: z.union([z.string(), z.number()]).describe('Internal ID (iid) of the issue within the project'),
|
|
79
|
+
perPage: z.number().min(1).max(100).optional().default(20).describe('Results per page (max 100)'),
|
|
80
|
+
page: z.number().min(1).optional().default(1).describe('Page number'),
|
|
81
|
+
}),
|
|
82
|
+
execute: async ({ gitlabToken, projectId, issueIid, perPage = 20, page = 1 }) => {
|
|
83
|
+
return gitlabRequest(gitlabToken, `/projects/${encodeId(projectId)}/issues/${issueIid}/notes`, {
|
|
84
|
+
query: { per_page: perPage, page },
|
|
85
|
+
});
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
export const gitlabCreateIssueNote = tool({
|
|
89
|
+
description: 'Add a comment (note) to a GitLab issue. Use when the user wants to comment on or reply to an issue.',
|
|
90
|
+
inputSchema: z.object({
|
|
91
|
+
gitlabToken: tokenField,
|
|
92
|
+
projectId: projectField,
|
|
93
|
+
issueIid: z.union([z.string(), z.number()]).describe('Internal ID (iid) of the issue within the project'),
|
|
94
|
+
body: z.string().describe('Comment text (Markdown supported)'),
|
|
95
|
+
}),
|
|
96
|
+
execute: async ({ gitlabToken, projectId, issueIid, body }) => {
|
|
97
|
+
return gitlabRequest(gitlabToken, `/projects/${encodeId(projectId)}/issues/${issueIid}/notes`, {
|
|
98
|
+
method: 'POST',
|
|
99
|
+
body: { body },
|
|
100
|
+
});
|
|
101
|
+
},
|
|
102
|
+
});
|
|
103
|
+
//# sourceMappingURL=issues.js.map
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export declare const gitlabListMergeRequests: import("ai").Tool<{
|
|
2
|
+
perPage: number;
|
|
3
|
+
page: number;
|
|
4
|
+
projectId?: string | number | undefined;
|
|
5
|
+
state?: "all" | "closed" | "merged" | "opened" | undefined;
|
|
6
|
+
search?: string | undefined;
|
|
7
|
+
gitlabToken?: string | undefined;
|
|
8
|
+
}, any>;
|
|
9
|
+
export declare const gitlabGetMergeRequest: import("ai").Tool<{
|
|
10
|
+
projectId: string | number;
|
|
11
|
+
mergeRequestIid: string | number;
|
|
12
|
+
gitlabToken?: string | undefined;
|
|
13
|
+
}, any>;
|
|
14
|
+
export declare const gitlabCreateMergeRequest: import("ai").Tool<{
|
|
15
|
+
title: string;
|
|
16
|
+
projectId: string | number;
|
|
17
|
+
sourceBranch: string;
|
|
18
|
+
targetBranch: string;
|
|
19
|
+
description?: string | undefined;
|
|
20
|
+
gitlabToken?: string | undefined;
|
|
21
|
+
}, any>;
|
|
22
|
+
export declare const gitlabMergeMergeRequest: import("ai").Tool<{
|
|
23
|
+
projectId: string | number;
|
|
24
|
+
mergeRequestIid: string | number;
|
|
25
|
+
squash?: boolean | undefined;
|
|
26
|
+
gitlabToken?: string | undefined;
|
|
27
|
+
shouldRemoveSourceBranch?: boolean | undefined;
|
|
28
|
+
}, any>;
|
|
29
|
+
export declare const gitlabCreateMergeRequestNote: import("ai").Tool<{
|
|
30
|
+
projectId: string | number;
|
|
31
|
+
body: string;
|
|
32
|
+
mergeRequestIid: string | number;
|
|
33
|
+
gitlabToken?: string | undefined;
|
|
34
|
+
}, any>;
|
|
35
|
+
//# sourceMappingURL=merge-requests.d.ts.map
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
import { tool } from 'ai';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { gitlabRequest, encodeId } from './client.js';
|
|
5
|
+
const tokenField = z.string().optional().describe('Injected by system; do not provide');
|
|
6
|
+
const projectField = z
|
|
7
|
+
.union([z.string(), z.number()])
|
|
8
|
+
.describe('Project ID or URL-encoded path (e.g. 123 or "group/project")');
|
|
9
|
+
const mrIidField = z.union([z.string(), z.number()]).describe('Internal ID (iid) of the merge request within the project');
|
|
10
|
+
export const gitlabListMergeRequests = tool({
|
|
11
|
+
description: 'List GitLab merge requests. Provide projectId to list MRs for a project, or omit it to list MRs across all visible projects. Use when the user asks to see merge requests or pull requests.',
|
|
12
|
+
inputSchema: z.object({
|
|
13
|
+
gitlabToken: tokenField,
|
|
14
|
+
projectId: projectField.optional(),
|
|
15
|
+
state: z.enum(['opened', 'closed', 'merged', 'all']).optional().describe('Filter by merge request state'),
|
|
16
|
+
search: z.string().optional().describe('Search merge requests by title and description'),
|
|
17
|
+
perPage: z.number().min(1).max(100).optional().default(20).describe('Results per page (max 100)'),
|
|
18
|
+
page: z.number().min(1).optional().default(1).describe('Page number'),
|
|
19
|
+
}),
|
|
20
|
+
execute: async ({ gitlabToken, projectId, state, search, perPage = 20, page = 1 }) => {
|
|
21
|
+
const path = projectId ? `/projects/${encodeId(projectId)}/merge_requests` : '/merge_requests';
|
|
22
|
+
return gitlabRequest(gitlabToken, path, {
|
|
23
|
+
query: { state, search, per_page: perPage, page },
|
|
24
|
+
});
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
export const gitlabGetMergeRequest = tool({
|
|
28
|
+
description: 'Get a single GitLab merge request by its internal ID (iid). Use when the user asks for details of a specific merge request.',
|
|
29
|
+
inputSchema: z.object({
|
|
30
|
+
gitlabToken: tokenField,
|
|
31
|
+
projectId: projectField,
|
|
32
|
+
mergeRequestIid: mrIidField,
|
|
33
|
+
}),
|
|
34
|
+
execute: async ({ gitlabToken, projectId, mergeRequestIid }) => {
|
|
35
|
+
return gitlabRequest(gitlabToken, `/projects/${encodeId(projectId)}/merge_requests/${mergeRequestIid}`);
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
export const gitlabCreateMergeRequest = tool({
|
|
39
|
+
description: 'Create a new GitLab merge request. Use when the user wants to open a merge request between two branches.',
|
|
40
|
+
inputSchema: z.object({
|
|
41
|
+
gitlabToken: tokenField,
|
|
42
|
+
projectId: projectField,
|
|
43
|
+
sourceBranch: z.string().describe('Source branch name'),
|
|
44
|
+
targetBranch: z.string().describe('Target branch name'),
|
|
45
|
+
title: z.string().describe('Merge request title'),
|
|
46
|
+
description: z.string().optional().describe('Merge request description (Markdown supported)'),
|
|
47
|
+
}),
|
|
48
|
+
execute: async ({ gitlabToken, projectId, sourceBranch, targetBranch, title, description }) => {
|
|
49
|
+
return gitlabRequest(gitlabToken, `/projects/${encodeId(projectId)}/merge_requests`, {
|
|
50
|
+
method: 'POST',
|
|
51
|
+
body: {
|
|
52
|
+
source_branch: sourceBranch,
|
|
53
|
+
target_branch: targetBranch,
|
|
54
|
+
title,
|
|
55
|
+
description,
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
export const gitlabMergeMergeRequest = tool({
|
|
61
|
+
description: 'Accept and merge a GitLab merge request. Use only when the user explicitly asks to merge an MR.',
|
|
62
|
+
inputSchema: z.object({
|
|
63
|
+
gitlabToken: tokenField,
|
|
64
|
+
projectId: projectField,
|
|
65
|
+
mergeRequestIid: mrIidField,
|
|
66
|
+
squash: z.boolean().optional().describe('Squash commits when merging'),
|
|
67
|
+
shouldRemoveSourceBranch: z.boolean().optional().describe('Remove the source branch after merging'),
|
|
68
|
+
}),
|
|
69
|
+
execute: async ({ gitlabToken, projectId, mergeRequestIid, squash, shouldRemoveSourceBranch }) => {
|
|
70
|
+
return gitlabRequest(gitlabToken, `/projects/${encodeId(projectId)}/merge_requests/${mergeRequestIid}/merge`, {
|
|
71
|
+
method: 'POST',
|
|
72
|
+
body: { squash, should_remove_source_branch: shouldRemoveSourceBranch },
|
|
73
|
+
});
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
export const gitlabCreateMergeRequestNote = tool({
|
|
77
|
+
description: 'Add a comment (note) to a GitLab merge request. Use when the user wants to comment on or review an MR.',
|
|
78
|
+
inputSchema: z.object({
|
|
79
|
+
gitlabToken: tokenField,
|
|
80
|
+
projectId: projectField,
|
|
81
|
+
mergeRequestIid: mrIidField,
|
|
82
|
+
body: z.string().describe('Comment text (Markdown supported)'),
|
|
83
|
+
}),
|
|
84
|
+
execute: async ({ gitlabToken, projectId, mergeRequestIid, body }) => {
|
|
85
|
+
return gitlabRequest(gitlabToken, `/projects/${encodeId(projectId)}/merge_requests/${mergeRequestIid}/notes`, {
|
|
86
|
+
method: 'POST',
|
|
87
|
+
body: { body },
|
|
88
|
+
});
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
//# sourceMappingURL=merge-requests.js.map
|