@rv404/mcp-launchpad 1.0.0
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/.env.example +29 -0
- package/README.md +248 -0
- package/dist/backends/clickup.d.ts +3 -0
- package/dist/backends/clickup.d.ts.map +1 -0
- package/dist/backends/clickup.js +1550 -0
- package/dist/backends/clickup.js.map +1 -0
- package/dist/backends/email.d.ts +9 -0
- package/dist/backends/email.d.ts.map +1 -0
- package/dist/backends/email.js +452 -0
- package/dist/backends/email.js.map +1 -0
- package/dist/backends/firecrawl.d.ts +3 -0
- package/dist/backends/firecrawl.d.ts.map +1 -0
- package/dist/backends/firecrawl.js +297 -0
- package/dist/backends/firecrawl.js.map +1 -0
- package/dist/backends/gemini.d.ts +3 -0
- package/dist/backends/gemini.d.ts.map +1 -0
- package/dist/backends/gemini.js +702 -0
- package/dist/backends/gemini.js.map +1 -0
- package/dist/backends/github.d.ts +3 -0
- package/dist/backends/github.d.ts.map +1 -0
- package/dist/backends/github.js +2129 -0
- package/dist/backends/github.js.map +1 -0
- package/dist/backends/index.d.ts +2 -0
- package/dist/backends/index.d.ts.map +1 -0
- package/dist/backends/index.js +27 -0
- package/dist/backends/index.js.map +1 -0
- package/dist/backends/kie.d.ts +3 -0
- package/dist/backends/kie.d.ts.map +1 -0
- package/dist/backends/kie.js +399 -0
- package/dist/backends/kie.js.map +1 -0
- package/dist/backends/n8n.d.ts +3 -0
- package/dist/backends/n8n.d.ts.map +1 -0
- package/dist/backends/n8n.js +414 -0
- package/dist/backends/n8n.js.map +1 -0
- package/dist/backends/notion.d.ts +3 -0
- package/dist/backends/notion.d.ts.map +1 -0
- package/dist/backends/notion.js +375 -0
- package/dist/backends/notion.js.map +1 -0
- package/dist/backends/quickbooks.d.ts +3 -0
- package/dist/backends/quickbooks.d.ts.map +1 -0
- package/dist/backends/quickbooks.js +2183 -0
- package/dist/backends/quickbooks.js.map +1 -0
- package/dist/backends/slack.d.ts +3 -0
- package/dist/backends/slack.d.ts.map +1 -0
- package/dist/backends/slack.js +1725 -0
- package/dist/backends/slack.js.map +1 -0
- package/dist/backends/youtube.d.ts +3 -0
- package/dist/backends/youtube.d.ts.map +1 -0
- package/dist/backends/youtube.js +936 -0
- package/dist/backends/youtube.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +150 -0
- package/dist/index.js.map +1 -0
- package/dist/router.d.ts +36 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +283 -0
- package/dist/router.js.map +1 -0
- package/dist/types.d.ts +103 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +65 -0
- package/dist/types.js.map +1 -0
- package/lib/mcp-file-output/dist/index.d.ts +99 -0
- package/lib/mcp-file-output/dist/index.d.ts.map +1 -0
- package/lib/mcp-file-output/dist/index.js +215 -0
- package/lib/mcp-file-output/dist/index.js.map +1 -0
- package/lib/mcp-file-output/node_modules/@types/node/LICENSE +21 -0
- package/lib/mcp-file-output/node_modules/@types/node/README.md +15 -0
- package/lib/mcp-file-output/node_modules/@types/node/assert/strict.d.ts +8 -0
- package/lib/mcp-file-output/node_modules/@types/node/assert.d.ts +1062 -0
- package/lib/mcp-file-output/node_modules/@types/node/async_hooks.d.ts +605 -0
- package/lib/mcp-file-output/node_modules/@types/node/buffer.buffer.d.ts +471 -0
- package/lib/mcp-file-output/node_modules/@types/node/buffer.d.ts +1936 -0
- package/lib/mcp-file-output/node_modules/@types/node/child_process.d.ts +1475 -0
- package/lib/mcp-file-output/node_modules/@types/node/cluster.d.ts +577 -0
- package/lib/mcp-file-output/node_modules/@types/node/compatibility/disposable.d.ts +16 -0
- package/lib/mcp-file-output/node_modules/@types/node/compatibility/index.d.ts +9 -0
- package/lib/mcp-file-output/node_modules/@types/node/compatibility/indexable.d.ts +20 -0
- package/lib/mcp-file-output/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
- package/lib/mcp-file-output/node_modules/@types/node/console.d.ts +452 -0
- package/lib/mcp-file-output/node_modules/@types/node/constants.d.ts +21 -0
- package/lib/mcp-file-output/node_modules/@types/node/crypto.d.ts +4590 -0
- package/lib/mcp-file-output/node_modules/@types/node/dgram.d.ts +597 -0
- package/lib/mcp-file-output/node_modules/@types/node/diagnostics_channel.d.ts +578 -0
- package/lib/mcp-file-output/node_modules/@types/node/dns/promises.d.ts +479 -0
- package/lib/mcp-file-output/node_modules/@types/node/dns.d.ts +871 -0
- package/lib/mcp-file-output/node_modules/@types/node/domain.d.ts +170 -0
- package/lib/mcp-file-output/node_modules/@types/node/events.d.ts +977 -0
- package/lib/mcp-file-output/node_modules/@types/node/fs/promises.d.ts +1270 -0
- package/lib/mcp-file-output/node_modules/@types/node/fs.d.ts +4375 -0
- package/lib/mcp-file-output/node_modules/@types/node/globals.d.ts +172 -0
- package/lib/mcp-file-output/node_modules/@types/node/globals.typedarray.d.ts +38 -0
- package/lib/mcp-file-output/node_modules/@types/node/http.d.ts +2049 -0
- package/lib/mcp-file-output/node_modules/@types/node/http2.d.ts +2631 -0
- package/lib/mcp-file-output/node_modules/@types/node/https.d.ts +578 -0
- package/lib/mcp-file-output/node_modules/@types/node/index.d.ts +93 -0
- package/lib/mcp-file-output/node_modules/@types/node/inspector.generated.d.ts +3966 -0
- package/lib/mcp-file-output/node_modules/@types/node/module.d.ts +539 -0
- package/lib/mcp-file-output/node_modules/@types/node/net.d.ts +1012 -0
- package/lib/mcp-file-output/node_modules/@types/node/os.d.ts +506 -0
- package/lib/mcp-file-output/node_modules/@types/node/package.json +140 -0
- package/lib/mcp-file-output/node_modules/@types/node/path.d.ts +200 -0
- package/lib/mcp-file-output/node_modules/@types/node/perf_hooks.d.ts +961 -0
- package/lib/mcp-file-output/node_modules/@types/node/process.d.ts +1957 -0
- package/lib/mcp-file-output/node_modules/@types/node/punycode.d.ts +117 -0
- package/lib/mcp-file-output/node_modules/@types/node/querystring.d.ts +152 -0
- package/lib/mcp-file-output/node_modules/@types/node/readline/promises.d.ts +162 -0
- package/lib/mcp-file-output/node_modules/@types/node/readline.d.ts +589 -0
- package/lib/mcp-file-output/node_modules/@types/node/repl.d.ts +430 -0
- package/lib/mcp-file-output/node_modules/@types/node/sea.d.ts +153 -0
- package/lib/mcp-file-output/node_modules/@types/node/stream/consumers.d.ts +38 -0
- package/lib/mcp-file-output/node_modules/@types/node/stream/promises.d.ts +90 -0
- package/lib/mcp-file-output/node_modules/@types/node/stream/web.d.ts +533 -0
- package/lib/mcp-file-output/node_modules/@types/node/stream.d.ts +1675 -0
- package/lib/mcp-file-output/node_modules/@types/node/string_decoder.d.ts +67 -0
- package/lib/mcp-file-output/node_modules/@types/node/test.d.ts +1787 -0
- package/lib/mcp-file-output/node_modules/@types/node/timers/promises.d.ts +108 -0
- package/lib/mcp-file-output/node_modules/@types/node/timers.d.ts +286 -0
- package/lib/mcp-file-output/node_modules/@types/node/tls.d.ts +1255 -0
- package/lib/mcp-file-output/node_modules/@types/node/trace_events.d.ts +197 -0
- package/lib/mcp-file-output/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +468 -0
- package/lib/mcp-file-output/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +34 -0
- package/lib/mcp-file-output/node_modules/@types/node/ts5.6/index.d.ts +93 -0
- package/lib/mcp-file-output/node_modules/@types/node/tty.d.ts +208 -0
- package/lib/mcp-file-output/node_modules/@types/node/url.d.ts +964 -0
- package/lib/mcp-file-output/node_modules/@types/node/util.d.ts +2331 -0
- package/lib/mcp-file-output/node_modules/@types/node/v8.d.ts +809 -0
- package/lib/mcp-file-output/node_modules/@types/node/vm.d.ts +1001 -0
- package/lib/mcp-file-output/node_modules/@types/node/wasi.d.ts +181 -0
- package/lib/mcp-file-output/node_modules/@types/node/web-globals/abortcontroller.d.ts +34 -0
- package/lib/mcp-file-output/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
- package/lib/mcp-file-output/node_modules/@types/node/web-globals/events.d.ts +97 -0
- package/lib/mcp-file-output/node_modules/@types/node/web-globals/fetch.d.ts +46 -0
- package/lib/mcp-file-output/node_modules/@types/node/worker_threads.d.ts +715 -0
- package/lib/mcp-file-output/node_modules/@types/node/zlib.d.ts +540 -0
- package/lib/mcp-file-output/package.json +19 -0
- package/lib/mcp-file-output/src/index.ts +309 -0
- package/lib/mcp-file-output/tsconfig.json +20 -0
- package/package.json +64 -0
|
@@ -0,0 +1,2129 @@
|
|
|
1
|
+
import { Octokit } from '@octokit/rest';
|
|
2
|
+
const GITHUB_TOKEN = process.env.GITHUB_PERSONAL_ACCESS_TOKEN || '';
|
|
3
|
+
const octokit = new Octokit({ auth: GITHUB_TOKEN });
|
|
4
|
+
const actions = [
|
|
5
|
+
// Repository actions
|
|
6
|
+
{
|
|
7
|
+
name: 'search_repositories',
|
|
8
|
+
description: 'Search for GitHub repositories',
|
|
9
|
+
params: [
|
|
10
|
+
{ name: 'query', type: 'string', required: true, description: 'Search query (GitHub search syntax)' },
|
|
11
|
+
{ name: 'page', type: 'number', required: false, description: 'Page number (default: 1)' },
|
|
12
|
+
{ name: 'perPage', type: 'number', required: false, description: 'Results per page (max: 100)' },
|
|
13
|
+
],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
name: 'create_repository',
|
|
17
|
+
description: 'Create a new GitHub repository',
|
|
18
|
+
params: [
|
|
19
|
+
{ name: 'name', type: 'string', required: true, description: 'Repository name' },
|
|
20
|
+
{ name: 'description', type: 'string', required: false, description: 'Repository description' },
|
|
21
|
+
{ name: 'private', type: 'boolean', required: false, description: 'Make repository private' },
|
|
22
|
+
{ name: 'autoInit', type: 'boolean', required: false, description: 'Initialize with README' },
|
|
23
|
+
],
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: 'fork_repository',
|
|
27
|
+
description: 'Fork a repository',
|
|
28
|
+
params: [
|
|
29
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
30
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
31
|
+
{ name: 'organization', type: 'string', required: false, description: 'Organization to fork to' },
|
|
32
|
+
],
|
|
33
|
+
},
|
|
34
|
+
// File actions
|
|
35
|
+
{
|
|
36
|
+
name: 'get_file_contents',
|
|
37
|
+
description: 'Get contents of a file or directory',
|
|
38
|
+
params: [
|
|
39
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
40
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
41
|
+
{ name: 'path', type: 'string', required: true, description: 'File path' },
|
|
42
|
+
{ name: 'branch', type: 'string', required: false, description: 'Branch name' },
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'create_or_update_file',
|
|
47
|
+
description: 'Create or update a file',
|
|
48
|
+
params: [
|
|
49
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
50
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
51
|
+
{ name: 'path', type: 'string', required: true, description: 'File path' },
|
|
52
|
+
{ name: 'content', type: 'string', required: true, description: 'File content' },
|
|
53
|
+
{ name: 'message', type: 'string', required: true, description: 'Commit message' },
|
|
54
|
+
{ name: 'branch', type: 'string', required: true, description: 'Branch name' },
|
|
55
|
+
{ name: 'sha', type: 'string', required: false, description: 'SHA of file to update' },
|
|
56
|
+
],
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: 'push_files',
|
|
60
|
+
description: 'Push multiple files in a single commit',
|
|
61
|
+
params: [
|
|
62
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
63
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
64
|
+
{ name: 'branch', type: 'string', required: true, description: 'Branch name' },
|
|
65
|
+
{ name: 'files', type: 'array', required: true, description: 'Array of {path, content} objects' },
|
|
66
|
+
{ name: 'message', type: 'string', required: true, description: 'Commit message' },
|
|
67
|
+
],
|
|
68
|
+
},
|
|
69
|
+
// Branch actions
|
|
70
|
+
{
|
|
71
|
+
name: 'create_branch',
|
|
72
|
+
description: 'Create a new branch',
|
|
73
|
+
params: [
|
|
74
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
75
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
76
|
+
{ name: 'branch', type: 'string', required: true, description: 'New branch name' },
|
|
77
|
+
{ name: 'from_branch', type: 'string', required: false, description: 'Source branch' },
|
|
78
|
+
],
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: 'list_commits',
|
|
82
|
+
description: 'List commits on a branch',
|
|
83
|
+
params: [
|
|
84
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
85
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
86
|
+
{ name: 'sha', type: 'string', required: false, description: 'Branch/commit SHA' },
|
|
87
|
+
{ name: 'page', type: 'number', required: false, description: 'Page number' },
|
|
88
|
+
{ name: 'perPage', type: 'number', required: false, description: 'Results per page' },
|
|
89
|
+
],
|
|
90
|
+
},
|
|
91
|
+
// Issue actions
|
|
92
|
+
{
|
|
93
|
+
name: 'create_issue',
|
|
94
|
+
description: 'Create a new issue',
|
|
95
|
+
params: [
|
|
96
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
97
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
98
|
+
{ name: 'title', type: 'string', required: true, description: 'Issue title' },
|
|
99
|
+
{ name: 'body', type: 'string', required: false, description: 'Issue body' },
|
|
100
|
+
{ name: 'labels', type: 'array', required: false, description: 'Labels array' },
|
|
101
|
+
{ name: 'assignees', type: 'array', required: false, description: 'Assignees array' },
|
|
102
|
+
],
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
name: 'get_issue',
|
|
106
|
+
description: 'Get issue details',
|
|
107
|
+
params: [
|
|
108
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
109
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
110
|
+
{ name: 'issue_number', type: 'number', required: true, description: 'Issue number' },
|
|
111
|
+
],
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
name: 'list_issues',
|
|
115
|
+
description: 'List repository issues',
|
|
116
|
+
params: [
|
|
117
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
118
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
119
|
+
{ name: 'state', type: 'string', required: false, description: 'State: open, closed, all' },
|
|
120
|
+
{ name: 'labels', type: 'array', required: false, description: 'Filter by labels' },
|
|
121
|
+
{ name: 'page', type: 'number', required: false, description: 'Page number' },
|
|
122
|
+
{ name: 'per_page', type: 'number', required: false, description: 'Results per page' },
|
|
123
|
+
],
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
name: 'update_issue',
|
|
127
|
+
description: 'Update an issue',
|
|
128
|
+
params: [
|
|
129
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
130
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
131
|
+
{ name: 'issue_number', type: 'number', required: true, description: 'Issue number' },
|
|
132
|
+
{ name: 'title', type: 'string', required: false, description: 'New title' },
|
|
133
|
+
{ name: 'body', type: 'string', required: false, description: 'New body' },
|
|
134
|
+
{ name: 'state', type: 'string', required: false, description: 'State: open, closed' },
|
|
135
|
+
{ name: 'labels', type: 'array', required: false, description: 'Labels' },
|
|
136
|
+
{ name: 'assignees', type: 'array', required: false, description: 'Assignees' },
|
|
137
|
+
],
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
name: 'add_issue_comment',
|
|
141
|
+
description: 'Add a comment to an issue',
|
|
142
|
+
params: [
|
|
143
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
144
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
145
|
+
{ name: 'issue_number', type: 'number', required: true, description: 'Issue number' },
|
|
146
|
+
{ name: 'body', type: 'string', required: true, description: 'Comment body' },
|
|
147
|
+
],
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
name: 'search_issues',
|
|
151
|
+
description: 'Search issues and pull requests',
|
|
152
|
+
params: [
|
|
153
|
+
{ name: 'q', type: 'string', required: true, description: 'Search query' },
|
|
154
|
+
{ name: 'sort', type: 'string', required: false, description: 'Sort field' },
|
|
155
|
+
{ name: 'order', type: 'string', required: false, description: 'Order: asc, desc' },
|
|
156
|
+
{ name: 'page', type: 'number', required: false, description: 'Page number' },
|
|
157
|
+
{ name: 'per_page', type: 'number', required: false, description: 'Results per page' },
|
|
158
|
+
],
|
|
159
|
+
},
|
|
160
|
+
// Pull request actions
|
|
161
|
+
{
|
|
162
|
+
name: 'create_pull_request',
|
|
163
|
+
description: 'Create a pull request',
|
|
164
|
+
params: [
|
|
165
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
166
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
167
|
+
{ name: 'title', type: 'string', required: true, description: 'PR title' },
|
|
168
|
+
{ name: 'head', type: 'string', required: true, description: 'Head branch' },
|
|
169
|
+
{ name: 'base', type: 'string', required: true, description: 'Base branch' },
|
|
170
|
+
{ name: 'body', type: 'string', required: false, description: 'PR body' },
|
|
171
|
+
{ name: 'draft', type: 'boolean', required: false, description: 'Create as draft' },
|
|
172
|
+
],
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
name: 'get_pull_request',
|
|
176
|
+
description: 'Get pull request details',
|
|
177
|
+
params: [
|
|
178
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
179
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
180
|
+
{ name: 'pull_number', type: 'number', required: true, description: 'PR number' },
|
|
181
|
+
],
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
name: 'list_pull_requests',
|
|
185
|
+
description: 'List pull requests',
|
|
186
|
+
params: [
|
|
187
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
188
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
189
|
+
{ name: 'state', type: 'string', required: false, description: 'State: open, closed, all' },
|
|
190
|
+
{ name: 'head', type: 'string', required: false, description: 'Filter by head' },
|
|
191
|
+
{ name: 'base', type: 'string', required: false, description: 'Filter by base' },
|
|
192
|
+
{ name: 'page', type: 'number', required: false, description: 'Page number' },
|
|
193
|
+
{ name: 'per_page', type: 'number', required: false, description: 'Results per page' },
|
|
194
|
+
],
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
name: 'merge_pull_request',
|
|
198
|
+
description: 'Merge a pull request',
|
|
199
|
+
params: [
|
|
200
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
201
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
202
|
+
{ name: 'pull_number', type: 'number', required: true, description: 'PR number' },
|
|
203
|
+
{ name: 'commit_title', type: 'string', required: false, description: 'Merge commit title' },
|
|
204
|
+
{ name: 'commit_message', type: 'string', required: false, description: 'Merge commit message' },
|
|
205
|
+
{ name: 'merge_method', type: 'string', required: false, description: 'Method: merge, squash, rebase' },
|
|
206
|
+
],
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
name: 'get_pull_request_files',
|
|
210
|
+
description: 'Get files changed in a PR',
|
|
211
|
+
params: [
|
|
212
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
213
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
214
|
+
{ name: 'pull_number', type: 'number', required: true, description: 'PR number' },
|
|
215
|
+
],
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
name: 'get_pull_request_status',
|
|
219
|
+
description: 'Get combined status checks for a PR',
|
|
220
|
+
params: [
|
|
221
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
222
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
223
|
+
{ name: 'pull_number', type: 'number', required: true, description: 'PR number' },
|
|
224
|
+
],
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
name: 'get_pull_request_comments',
|
|
228
|
+
description: 'Get review comments on a PR',
|
|
229
|
+
params: [
|
|
230
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
231
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
232
|
+
{ name: 'pull_number', type: 'number', required: true, description: 'PR number' },
|
|
233
|
+
],
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
name: 'get_pull_request_reviews',
|
|
237
|
+
description: 'Get reviews on a PR',
|
|
238
|
+
params: [
|
|
239
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
240
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
241
|
+
{ name: 'pull_number', type: 'number', required: true, description: 'PR number' },
|
|
242
|
+
],
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
name: 'create_pull_request_review',
|
|
246
|
+
description: 'Create a review on a PR',
|
|
247
|
+
params: [
|
|
248
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
249
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
250
|
+
{ name: 'pull_number', type: 'number', required: true, description: 'PR number' },
|
|
251
|
+
{ name: 'body', type: 'string', required: true, description: 'Review body' },
|
|
252
|
+
{ name: 'event', type: 'string', required: true, description: 'Event: APPROVE, REQUEST_CHANGES, COMMENT' },
|
|
253
|
+
{ name: 'comments', type: 'array', required: false, description: 'Review comments' },
|
|
254
|
+
],
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
name: 'update_pull_request_branch',
|
|
258
|
+
description: 'Update PR branch with base branch changes',
|
|
259
|
+
params: [
|
|
260
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
261
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
262
|
+
{ name: 'pull_number', type: 'number', required: true, description: 'PR number' },
|
|
263
|
+
],
|
|
264
|
+
},
|
|
265
|
+
// Search actions
|
|
266
|
+
{
|
|
267
|
+
name: 'search_code',
|
|
268
|
+
description: 'Search code across GitHub',
|
|
269
|
+
params: [
|
|
270
|
+
{ name: 'q', type: 'string', required: true, description: 'Search query' },
|
|
271
|
+
{ name: 'page', type: 'number', required: false, description: 'Page number' },
|
|
272
|
+
{ name: 'per_page', type: 'number', required: false, description: 'Results per page' },
|
|
273
|
+
],
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
name: 'search_users',
|
|
277
|
+
description: 'Search GitHub users',
|
|
278
|
+
params: [
|
|
279
|
+
{ name: 'q', type: 'string', required: true, description: 'Search query' },
|
|
280
|
+
{ name: 'sort', type: 'string', required: false, description: 'Sort: followers, repositories, joined' },
|
|
281
|
+
{ name: 'order', type: 'string', required: false, description: 'Order: asc, desc' },
|
|
282
|
+
{ name: 'page', type: 'number', required: false, description: 'Page number' },
|
|
283
|
+
{ name: 'per_page', type: 'number', required: false, description: 'Results per page' },
|
|
284
|
+
],
|
|
285
|
+
},
|
|
286
|
+
// Collaborator actions
|
|
287
|
+
{
|
|
288
|
+
name: 'add_collaborator',
|
|
289
|
+
description: 'Add a collaborator to a repository',
|
|
290
|
+
params: [
|
|
291
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
292
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
293
|
+
{ name: 'username', type: 'string', required: true, description: 'GitHub username to add' },
|
|
294
|
+
{ name: 'permission', type: 'string', required: false, description: 'Permission level: pull, push, admin, maintain, triage (default: push)' },
|
|
295
|
+
],
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
name: 'remove_collaborator',
|
|
299
|
+
description: 'Remove a collaborator from a repository',
|
|
300
|
+
params: [
|
|
301
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
302
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
303
|
+
{ name: 'username', type: 'string', required: true, description: 'GitHub username to remove' },
|
|
304
|
+
],
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
name: 'list_collaborators',
|
|
308
|
+
description: 'List collaborators on a repository',
|
|
309
|
+
params: [
|
|
310
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
311
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
312
|
+
],
|
|
313
|
+
},
|
|
314
|
+
// Repository Management
|
|
315
|
+
{
|
|
316
|
+
name: 'get_repository',
|
|
317
|
+
description: 'Get repository details',
|
|
318
|
+
params: [
|
|
319
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
320
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
321
|
+
],
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
name: 'update_repository',
|
|
325
|
+
description: 'Update repository settings',
|
|
326
|
+
params: [
|
|
327
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
328
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
329
|
+
{ name: 'description', type: 'string', required: false, description: 'New description' },
|
|
330
|
+
{ name: 'homepage', type: 'string', required: false, description: 'Homepage URL' },
|
|
331
|
+
{ name: 'private', type: 'boolean', required: false, description: 'Make private' },
|
|
332
|
+
{ name: 'has_issues', type: 'boolean', required: false, description: 'Enable issues' },
|
|
333
|
+
{ name: 'has_wiki', type: 'boolean', required: false, description: 'Enable wiki' },
|
|
334
|
+
{ name: 'has_projects', type: 'boolean', required: false, description: 'Enable projects' },
|
|
335
|
+
{ name: 'default_branch', type: 'string', required: false, description: 'Default branch' },
|
|
336
|
+
{ name: 'archived', type: 'boolean', required: false, description: 'Archive repository' },
|
|
337
|
+
],
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
name: 'delete_repository',
|
|
341
|
+
description: 'Delete a repository (DESTRUCTIVE)',
|
|
342
|
+
params: [
|
|
343
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
344
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
345
|
+
],
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
name: 'list_user_repositories',
|
|
349
|
+
description: 'List repositories for a user',
|
|
350
|
+
params: [
|
|
351
|
+
{ name: 'username', type: 'string', required: false, description: 'Username (default: authenticated user)' },
|
|
352
|
+
{ name: 'type', type: 'string', required: false, description: 'Type: all, owner, member' },
|
|
353
|
+
{ name: 'sort', type: 'string', required: false, description: 'Sort: created, updated, pushed, full_name' },
|
|
354
|
+
{ name: 'page', type: 'number', required: false, description: 'Page number' },
|
|
355
|
+
{ name: 'per_page', type: 'number', required: false, description: 'Results per page' },
|
|
356
|
+
],
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
name: 'list_branches',
|
|
360
|
+
description: 'List branches in a repository',
|
|
361
|
+
params: [
|
|
362
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
363
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
364
|
+
{ name: 'protected', type: 'boolean', required: false, description: 'Only protected branches' },
|
|
365
|
+
{ name: 'page', type: 'number', required: false, description: 'Page number' },
|
|
366
|
+
{ name: 'per_page', type: 'number', required: false, description: 'Results per page' },
|
|
367
|
+
],
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
name: 'get_branch',
|
|
371
|
+
description: 'Get branch details including protection status',
|
|
372
|
+
params: [
|
|
373
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
374
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
375
|
+
{ name: 'branch', type: 'string', required: true, description: 'Branch name' },
|
|
376
|
+
],
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
name: 'delete_branch',
|
|
380
|
+
description: 'Delete a branch',
|
|
381
|
+
params: [
|
|
382
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
383
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
384
|
+
{ name: 'branch', type: 'string', required: true, description: 'Branch name' },
|
|
385
|
+
],
|
|
386
|
+
},
|
|
387
|
+
{
|
|
388
|
+
name: 'list_tags',
|
|
389
|
+
description: 'List repository tags',
|
|
390
|
+
params: [
|
|
391
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
392
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
393
|
+
{ name: 'page', type: 'number', required: false, description: 'Page number' },
|
|
394
|
+
{ name: 'per_page', type: 'number', required: false, description: 'Results per page' },
|
|
395
|
+
],
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
name: 'get_readme',
|
|
399
|
+
description: 'Get repository README',
|
|
400
|
+
params: [
|
|
401
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
402
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
403
|
+
{ name: 'ref', type: 'string', required: false, description: 'Branch/tag/commit' },
|
|
404
|
+
],
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
name: 'list_topics',
|
|
408
|
+
description: 'List repository topics',
|
|
409
|
+
params: [
|
|
410
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
411
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
412
|
+
],
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
name: 'update_topics',
|
|
416
|
+
description: 'Replace all repository topics',
|
|
417
|
+
params: [
|
|
418
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
419
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
420
|
+
{ name: 'topics', type: 'array', required: true, description: 'Array of topic names' },
|
|
421
|
+
],
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
name: 'list_languages',
|
|
425
|
+
description: 'List repository languages',
|
|
426
|
+
params: [
|
|
427
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
428
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
429
|
+
],
|
|
430
|
+
},
|
|
431
|
+
{
|
|
432
|
+
name: 'list_contributors',
|
|
433
|
+
description: 'List repository contributors',
|
|
434
|
+
params: [
|
|
435
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
436
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
437
|
+
{ name: 'page', type: 'number', required: false, description: 'Page number' },
|
|
438
|
+
{ name: 'per_page', type: 'number', required: false, description: 'Results per page' },
|
|
439
|
+
],
|
|
440
|
+
},
|
|
441
|
+
// Releases
|
|
442
|
+
{
|
|
443
|
+
name: 'list_releases',
|
|
444
|
+
description: 'List repository releases',
|
|
445
|
+
params: [
|
|
446
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
447
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
448
|
+
{ name: 'page', type: 'number', required: false, description: 'Page number' },
|
|
449
|
+
{ name: 'per_page', type: 'number', required: false, description: 'Results per page' },
|
|
450
|
+
],
|
|
451
|
+
},
|
|
452
|
+
{
|
|
453
|
+
name: 'get_release',
|
|
454
|
+
description: 'Get a specific release',
|
|
455
|
+
params: [
|
|
456
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
457
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
458
|
+
{ name: 'release_id', type: 'number', required: true, description: 'Release ID' },
|
|
459
|
+
],
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
name: 'get_latest_release',
|
|
463
|
+
description: 'Get the latest release',
|
|
464
|
+
params: [
|
|
465
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
466
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
467
|
+
],
|
|
468
|
+
},
|
|
469
|
+
{
|
|
470
|
+
name: 'get_release_by_tag',
|
|
471
|
+
description: 'Get release by tag name',
|
|
472
|
+
params: [
|
|
473
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
474
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
475
|
+
{ name: 'tag', type: 'string', required: true, description: 'Tag name' },
|
|
476
|
+
],
|
|
477
|
+
},
|
|
478
|
+
{
|
|
479
|
+
name: 'create_release',
|
|
480
|
+
description: 'Create a new release',
|
|
481
|
+
params: [
|
|
482
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
483
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
484
|
+
{ name: 'tag_name', type: 'string', required: true, description: 'Tag name for release' },
|
|
485
|
+
{ name: 'name', type: 'string', required: false, description: 'Release name' },
|
|
486
|
+
{ name: 'body', type: 'string', required: false, description: 'Release notes' },
|
|
487
|
+
{ name: 'draft', type: 'boolean', required: false, description: 'Create as draft' },
|
|
488
|
+
{ name: 'prerelease', type: 'boolean', required: false, description: 'Mark as prerelease' },
|
|
489
|
+
{ name: 'target_commitish', type: 'string', required: false, description: 'Target branch/commit' },
|
|
490
|
+
{ name: 'generate_release_notes', type: 'boolean', required: false, description: 'Auto-generate notes' },
|
|
491
|
+
],
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
name: 'update_release',
|
|
495
|
+
description: 'Update a release',
|
|
496
|
+
params: [
|
|
497
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
498
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
499
|
+
{ name: 'release_id', type: 'number', required: true, description: 'Release ID' },
|
|
500
|
+
{ name: 'tag_name', type: 'string', required: false, description: 'Tag name' },
|
|
501
|
+
{ name: 'name', type: 'string', required: false, description: 'Release name' },
|
|
502
|
+
{ name: 'body', type: 'string', required: false, description: 'Release notes' },
|
|
503
|
+
{ name: 'draft', type: 'boolean', required: false, description: 'Draft status' },
|
|
504
|
+
{ name: 'prerelease', type: 'boolean', required: false, description: 'Prerelease status' },
|
|
505
|
+
],
|
|
506
|
+
},
|
|
507
|
+
{
|
|
508
|
+
name: 'delete_release',
|
|
509
|
+
description: 'Delete a release',
|
|
510
|
+
params: [
|
|
511
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
512
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
513
|
+
{ name: 'release_id', type: 'number', required: true, description: 'Release ID' },
|
|
514
|
+
],
|
|
515
|
+
},
|
|
516
|
+
{
|
|
517
|
+
name: 'list_release_assets',
|
|
518
|
+
description: 'List release assets',
|
|
519
|
+
params: [
|
|
520
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
521
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
522
|
+
{ name: 'release_id', type: 'number', required: true, description: 'Release ID' },
|
|
523
|
+
],
|
|
524
|
+
},
|
|
525
|
+
// Labels
|
|
526
|
+
{
|
|
527
|
+
name: 'list_labels',
|
|
528
|
+
description: 'List repository labels',
|
|
529
|
+
params: [
|
|
530
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
531
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
532
|
+
{ name: 'page', type: 'number', required: false, description: 'Page number' },
|
|
533
|
+
{ name: 'per_page', type: 'number', required: false, description: 'Results per page' },
|
|
534
|
+
],
|
|
535
|
+
},
|
|
536
|
+
{
|
|
537
|
+
name: 'create_label',
|
|
538
|
+
description: 'Create a label',
|
|
539
|
+
params: [
|
|
540
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
541
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
542
|
+
{ name: 'name', type: 'string', required: true, description: 'Label name' },
|
|
543
|
+
{ name: 'color', type: 'string', required: true, description: 'Color hex (without #)' },
|
|
544
|
+
{ name: 'description', type: 'string', required: false, description: 'Label description' },
|
|
545
|
+
],
|
|
546
|
+
},
|
|
547
|
+
{
|
|
548
|
+
name: 'update_label',
|
|
549
|
+
description: 'Update a label',
|
|
550
|
+
params: [
|
|
551
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
552
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
553
|
+
{ name: 'name', type: 'string', required: true, description: 'Current label name' },
|
|
554
|
+
{ name: 'new_name', type: 'string', required: false, description: 'New label name' },
|
|
555
|
+
{ name: 'color', type: 'string', required: false, description: 'New color hex' },
|
|
556
|
+
{ name: 'description', type: 'string', required: false, description: 'New description' },
|
|
557
|
+
],
|
|
558
|
+
},
|
|
559
|
+
{
|
|
560
|
+
name: 'delete_label',
|
|
561
|
+
description: 'Delete a label',
|
|
562
|
+
params: [
|
|
563
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
564
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
565
|
+
{ name: 'name', type: 'string', required: true, description: 'Label name' },
|
|
566
|
+
],
|
|
567
|
+
},
|
|
568
|
+
// Milestones
|
|
569
|
+
{
|
|
570
|
+
name: 'list_milestones',
|
|
571
|
+
description: 'List repository milestones',
|
|
572
|
+
params: [
|
|
573
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
574
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
575
|
+
{ name: 'state', type: 'string', required: false, description: 'State: open, closed, all' },
|
|
576
|
+
{ name: 'sort', type: 'string', required: false, description: 'Sort: due_on, completeness' },
|
|
577
|
+
{ name: 'page', type: 'number', required: false, description: 'Page number' },
|
|
578
|
+
],
|
|
579
|
+
},
|
|
580
|
+
{
|
|
581
|
+
name: 'create_milestone',
|
|
582
|
+
description: 'Create a milestone',
|
|
583
|
+
params: [
|
|
584
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
585
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
586
|
+
{ name: 'title', type: 'string', required: true, description: 'Milestone title' },
|
|
587
|
+
{ name: 'description', type: 'string', required: false, description: 'Description' },
|
|
588
|
+
{ name: 'due_on', type: 'string', required: false, description: 'Due date (ISO 8601)' },
|
|
589
|
+
{ name: 'state', type: 'string', required: false, description: 'State: open, closed' },
|
|
590
|
+
],
|
|
591
|
+
},
|
|
592
|
+
{
|
|
593
|
+
name: 'update_milestone',
|
|
594
|
+
description: 'Update a milestone',
|
|
595
|
+
params: [
|
|
596
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
597
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
598
|
+
{ name: 'milestone_number', type: 'number', required: true, description: 'Milestone number' },
|
|
599
|
+
{ name: 'title', type: 'string', required: false, description: 'New title' },
|
|
600
|
+
{ name: 'description', type: 'string', required: false, description: 'New description' },
|
|
601
|
+
{ name: 'due_on', type: 'string', required: false, description: 'New due date' },
|
|
602
|
+
{ name: 'state', type: 'string', required: false, description: 'New state' },
|
|
603
|
+
],
|
|
604
|
+
},
|
|
605
|
+
{
|
|
606
|
+
name: 'delete_milestone',
|
|
607
|
+
description: 'Delete a milestone',
|
|
608
|
+
params: [
|
|
609
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
610
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
611
|
+
{ name: 'milestone_number', type: 'number', required: true, description: 'Milestone number' },
|
|
612
|
+
],
|
|
613
|
+
},
|
|
614
|
+
// GitHub Actions
|
|
615
|
+
{
|
|
616
|
+
name: 'list_workflows',
|
|
617
|
+
description: 'List repository workflows',
|
|
618
|
+
params: [
|
|
619
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
620
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
621
|
+
{ name: 'page', type: 'number', required: false, description: 'Page number' },
|
|
622
|
+
{ name: 'per_page', type: 'number', required: false, description: 'Results per page' },
|
|
623
|
+
],
|
|
624
|
+
},
|
|
625
|
+
{
|
|
626
|
+
name: 'get_workflow',
|
|
627
|
+
description: 'Get a workflow',
|
|
628
|
+
params: [
|
|
629
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
630
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
631
|
+
{ name: 'workflow_id', type: 'string', required: true, description: 'Workflow ID or filename' },
|
|
632
|
+
],
|
|
633
|
+
},
|
|
634
|
+
{
|
|
635
|
+
name: 'list_workflow_runs',
|
|
636
|
+
description: 'List workflow runs',
|
|
637
|
+
params: [
|
|
638
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
639
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
640
|
+
{ name: 'workflow_id', type: 'string', required: false, description: 'Workflow ID (optional)' },
|
|
641
|
+
{ name: 'branch', type: 'string', required: false, description: 'Filter by branch' },
|
|
642
|
+
{ name: 'status', type: 'string', required: false, description: 'Status: completed, in_progress, queued' },
|
|
643
|
+
{ name: 'page', type: 'number', required: false, description: 'Page number' },
|
|
644
|
+
{ name: 'per_page', type: 'number', required: false, description: 'Results per page' },
|
|
645
|
+
],
|
|
646
|
+
},
|
|
647
|
+
{
|
|
648
|
+
name: 'get_workflow_run',
|
|
649
|
+
description: 'Get a workflow run',
|
|
650
|
+
params: [
|
|
651
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
652
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
653
|
+
{ name: 'run_id', type: 'number', required: true, description: 'Workflow run ID' },
|
|
654
|
+
],
|
|
655
|
+
},
|
|
656
|
+
{
|
|
657
|
+
name: 'rerun_workflow',
|
|
658
|
+
description: 'Re-run a workflow',
|
|
659
|
+
params: [
|
|
660
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
661
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
662
|
+
{ name: 'run_id', type: 'number', required: true, description: 'Workflow run ID' },
|
|
663
|
+
],
|
|
664
|
+
},
|
|
665
|
+
{
|
|
666
|
+
name: 'cancel_workflow_run',
|
|
667
|
+
description: 'Cancel a workflow run',
|
|
668
|
+
params: [
|
|
669
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
670
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
671
|
+
{ name: 'run_id', type: 'number', required: true, description: 'Workflow run ID' },
|
|
672
|
+
],
|
|
673
|
+
},
|
|
674
|
+
{
|
|
675
|
+
name: 'list_workflow_jobs',
|
|
676
|
+
description: 'List jobs for a workflow run',
|
|
677
|
+
params: [
|
|
678
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
679
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
680
|
+
{ name: 'run_id', type: 'number', required: true, description: 'Workflow run ID' },
|
|
681
|
+
],
|
|
682
|
+
},
|
|
683
|
+
{
|
|
684
|
+
name: 'trigger_workflow',
|
|
685
|
+
description: 'Trigger a workflow dispatch event',
|
|
686
|
+
params: [
|
|
687
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
688
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
689
|
+
{ name: 'workflow_id', type: 'string', required: true, description: 'Workflow ID or filename' },
|
|
690
|
+
{ name: 'ref', type: 'string', required: true, description: 'Branch or tag ref' },
|
|
691
|
+
{ name: 'inputs', type: 'object', required: false, description: 'Workflow inputs' },
|
|
692
|
+
],
|
|
693
|
+
},
|
|
694
|
+
// Gists
|
|
695
|
+
{
|
|
696
|
+
name: 'list_gists',
|
|
697
|
+
description: 'List gists for authenticated user',
|
|
698
|
+
params: [
|
|
699
|
+
{ name: 'page', type: 'number', required: false, description: 'Page number' },
|
|
700
|
+
{ name: 'per_page', type: 'number', required: false, description: 'Results per page' },
|
|
701
|
+
],
|
|
702
|
+
},
|
|
703
|
+
{
|
|
704
|
+
name: 'create_gist',
|
|
705
|
+
description: 'Create a gist',
|
|
706
|
+
params: [
|
|
707
|
+
{ name: 'files', type: 'object', required: true, description: 'Files object {filename: {content}}' },
|
|
708
|
+
{ name: 'description', type: 'string', required: false, description: 'Gist description' },
|
|
709
|
+
{ name: 'public', type: 'boolean', required: false, description: 'Make public' },
|
|
710
|
+
],
|
|
711
|
+
},
|
|
712
|
+
{
|
|
713
|
+
name: 'get_gist',
|
|
714
|
+
description: 'Get a gist',
|
|
715
|
+
params: [
|
|
716
|
+
{ name: 'gist_id', type: 'string', required: true, description: 'Gist ID' },
|
|
717
|
+
],
|
|
718
|
+
},
|
|
719
|
+
{
|
|
720
|
+
name: 'update_gist',
|
|
721
|
+
description: 'Update a gist',
|
|
722
|
+
params: [
|
|
723
|
+
{ name: 'gist_id', type: 'string', required: true, description: 'Gist ID' },
|
|
724
|
+
{ name: 'files', type: 'object', required: false, description: 'Files to update' },
|
|
725
|
+
{ name: 'description', type: 'string', required: false, description: 'New description' },
|
|
726
|
+
],
|
|
727
|
+
},
|
|
728
|
+
{
|
|
729
|
+
name: 'delete_gist',
|
|
730
|
+
description: 'Delete a gist',
|
|
731
|
+
params: [
|
|
732
|
+
{ name: 'gist_id', type: 'string', required: true, description: 'Gist ID' },
|
|
733
|
+
],
|
|
734
|
+
},
|
|
735
|
+
// Stars and Watch
|
|
736
|
+
{
|
|
737
|
+
name: 'star_repository',
|
|
738
|
+
description: 'Star a repository',
|
|
739
|
+
params: [
|
|
740
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
741
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
742
|
+
],
|
|
743
|
+
},
|
|
744
|
+
{
|
|
745
|
+
name: 'unstar_repository',
|
|
746
|
+
description: 'Unstar a repository',
|
|
747
|
+
params: [
|
|
748
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
749
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
750
|
+
],
|
|
751
|
+
},
|
|
752
|
+
{
|
|
753
|
+
name: 'list_stargazers',
|
|
754
|
+
description: 'List repository stargazers',
|
|
755
|
+
params: [
|
|
756
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
757
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
758
|
+
{ name: 'page', type: 'number', required: false, description: 'Page number' },
|
|
759
|
+
{ name: 'per_page', type: 'number', required: false, description: 'Results per page' },
|
|
760
|
+
],
|
|
761
|
+
},
|
|
762
|
+
{
|
|
763
|
+
name: 'list_watchers',
|
|
764
|
+
description: 'List repository watchers',
|
|
765
|
+
params: [
|
|
766
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
767
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
768
|
+
{ name: 'page', type: 'number', required: false, description: 'Page number' },
|
|
769
|
+
{ name: 'per_page', type: 'number', required: false, description: 'Results per page' },
|
|
770
|
+
],
|
|
771
|
+
},
|
|
772
|
+
// User
|
|
773
|
+
{
|
|
774
|
+
name: 'get_authenticated_user',
|
|
775
|
+
description: 'Get authenticated user details',
|
|
776
|
+
params: [],
|
|
777
|
+
},
|
|
778
|
+
{
|
|
779
|
+
name: 'get_user',
|
|
780
|
+
description: 'Get a user profile',
|
|
781
|
+
params: [
|
|
782
|
+
{ name: 'username', type: 'string', required: true, description: 'GitHub username' },
|
|
783
|
+
],
|
|
784
|
+
},
|
|
785
|
+
{
|
|
786
|
+
name: 'list_user_orgs',
|
|
787
|
+
description: 'List organizations for authenticated user',
|
|
788
|
+
params: [
|
|
789
|
+
{ name: 'page', type: 'number', required: false, description: 'Page number' },
|
|
790
|
+
{ name: 'per_page', type: 'number', required: false, description: 'Results per page' },
|
|
791
|
+
],
|
|
792
|
+
},
|
|
793
|
+
// Organizations
|
|
794
|
+
{
|
|
795
|
+
name: 'get_organization',
|
|
796
|
+
description: 'Get organization details',
|
|
797
|
+
params: [
|
|
798
|
+
{ name: 'org', type: 'string', required: true, description: 'Organization name' },
|
|
799
|
+
],
|
|
800
|
+
},
|
|
801
|
+
{
|
|
802
|
+
name: 'list_org_repositories',
|
|
803
|
+
description: 'List organization repositories',
|
|
804
|
+
params: [
|
|
805
|
+
{ name: 'org', type: 'string', required: true, description: 'Organization name' },
|
|
806
|
+
{ name: 'type', type: 'string', required: false, description: 'Type: all, public, private, forks, sources, member' },
|
|
807
|
+
{ name: 'sort', type: 'string', required: false, description: 'Sort: created, updated, pushed, full_name' },
|
|
808
|
+
{ name: 'page', type: 'number', required: false, description: 'Page number' },
|
|
809
|
+
{ name: 'per_page', type: 'number', required: false, description: 'Results per page' },
|
|
810
|
+
],
|
|
811
|
+
},
|
|
812
|
+
{
|
|
813
|
+
name: 'list_org_members',
|
|
814
|
+
description: 'List organization members',
|
|
815
|
+
params: [
|
|
816
|
+
{ name: 'org', type: 'string', required: true, description: 'Organization name' },
|
|
817
|
+
{ name: 'role', type: 'string', required: false, description: 'Role: all, admin, member' },
|
|
818
|
+
{ name: 'page', type: 'number', required: false, description: 'Page number' },
|
|
819
|
+
{ name: 'per_page', type: 'number', required: false, description: 'Results per page' },
|
|
820
|
+
],
|
|
821
|
+
},
|
|
822
|
+
// Webhooks
|
|
823
|
+
{
|
|
824
|
+
name: 'list_webhooks',
|
|
825
|
+
description: 'List repository webhooks',
|
|
826
|
+
params: [
|
|
827
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
828
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
829
|
+
],
|
|
830
|
+
},
|
|
831
|
+
{
|
|
832
|
+
name: 'create_webhook',
|
|
833
|
+
description: 'Create a webhook',
|
|
834
|
+
params: [
|
|
835
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
836
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
837
|
+
{ name: 'url', type: 'string', required: true, description: 'Webhook URL' },
|
|
838
|
+
{ name: 'events', type: 'array', required: false, description: 'Events to trigger (default: push)' },
|
|
839
|
+
{ name: 'content_type', type: 'string', required: false, description: 'Content type: json, form' },
|
|
840
|
+
{ name: 'secret', type: 'string', required: false, description: 'Webhook secret' },
|
|
841
|
+
{ name: 'active', type: 'boolean', required: false, description: 'Active status' },
|
|
842
|
+
],
|
|
843
|
+
},
|
|
844
|
+
{
|
|
845
|
+
name: 'delete_webhook',
|
|
846
|
+
description: 'Delete a webhook',
|
|
847
|
+
params: [
|
|
848
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
849
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
850
|
+
{ name: 'hook_id', type: 'number', required: true, description: 'Webhook ID' },
|
|
851
|
+
],
|
|
852
|
+
},
|
|
853
|
+
// Notifications
|
|
854
|
+
{
|
|
855
|
+
name: 'list_notifications',
|
|
856
|
+
description: 'List notifications for authenticated user',
|
|
857
|
+
params: [
|
|
858
|
+
{ name: 'all', type: 'boolean', required: false, description: 'Include read notifications' },
|
|
859
|
+
{ name: 'participating', type: 'boolean', required: false, description: 'Only participating' },
|
|
860
|
+
{ name: 'page', type: 'number', required: false, description: 'Page number' },
|
|
861
|
+
{ name: 'per_page', type: 'number', required: false, description: 'Results per page' },
|
|
862
|
+
],
|
|
863
|
+
},
|
|
864
|
+
{
|
|
865
|
+
name: 'mark_notifications_read',
|
|
866
|
+
description: 'Mark all notifications as read',
|
|
867
|
+
params: [
|
|
868
|
+
{ name: 'last_read_at', type: 'string', required: false, description: 'Timestamp (ISO 8601)' },
|
|
869
|
+
],
|
|
870
|
+
},
|
|
871
|
+
// Commits
|
|
872
|
+
{
|
|
873
|
+
name: 'get_commit',
|
|
874
|
+
description: 'Get a specific commit',
|
|
875
|
+
params: [
|
|
876
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
877
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
878
|
+
{ name: 'ref', type: 'string', required: true, description: 'Commit SHA or ref' },
|
|
879
|
+
],
|
|
880
|
+
},
|
|
881
|
+
{
|
|
882
|
+
name: 'compare_commits',
|
|
883
|
+
description: 'Compare two commits',
|
|
884
|
+
params: [
|
|
885
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
886
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
887
|
+
{ name: 'base', type: 'string', required: true, description: 'Base commit' },
|
|
888
|
+
{ name: 'head', type: 'string', required: true, description: 'Head commit' },
|
|
889
|
+
],
|
|
890
|
+
},
|
|
891
|
+
// Issue Comments
|
|
892
|
+
{
|
|
893
|
+
name: 'list_issue_comments',
|
|
894
|
+
description: 'List comments on an issue',
|
|
895
|
+
params: [
|
|
896
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
897
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
898
|
+
{ name: 'issue_number', type: 'number', required: true, description: 'Issue number' },
|
|
899
|
+
{ name: 'page', type: 'number', required: false, description: 'Page number' },
|
|
900
|
+
{ name: 'per_page', type: 'number', required: false, description: 'Results per page' },
|
|
901
|
+
],
|
|
902
|
+
},
|
|
903
|
+
{
|
|
904
|
+
name: 'update_issue_comment',
|
|
905
|
+
description: 'Update an issue comment',
|
|
906
|
+
params: [
|
|
907
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
908
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
909
|
+
{ name: 'comment_id', type: 'number', required: true, description: 'Comment ID' },
|
|
910
|
+
{ name: 'body', type: 'string', required: true, description: 'New comment body' },
|
|
911
|
+
],
|
|
912
|
+
},
|
|
913
|
+
{
|
|
914
|
+
name: 'delete_issue_comment',
|
|
915
|
+
description: 'Delete an issue comment',
|
|
916
|
+
params: [
|
|
917
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
918
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
919
|
+
{ name: 'comment_id', type: 'number', required: true, description: 'Comment ID' },
|
|
920
|
+
],
|
|
921
|
+
},
|
|
922
|
+
// PR additional actions
|
|
923
|
+
{
|
|
924
|
+
name: 'update_pull_request',
|
|
925
|
+
description: 'Update a pull request',
|
|
926
|
+
params: [
|
|
927
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
928
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
929
|
+
{ name: 'pull_number', type: 'number', required: true, description: 'PR number' },
|
|
930
|
+
{ name: 'title', type: 'string', required: false, description: 'New title' },
|
|
931
|
+
{ name: 'body', type: 'string', required: false, description: 'New body' },
|
|
932
|
+
{ name: 'state', type: 'string', required: false, description: 'State: open, closed' },
|
|
933
|
+
{ name: 'base', type: 'string', required: false, description: 'New base branch' },
|
|
934
|
+
],
|
|
935
|
+
},
|
|
936
|
+
{
|
|
937
|
+
name: 'request_reviewers',
|
|
938
|
+
description: 'Request reviewers for a PR',
|
|
939
|
+
params: [
|
|
940
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
941
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
942
|
+
{ name: 'pull_number', type: 'number', required: true, description: 'PR number' },
|
|
943
|
+
{ name: 'reviewers', type: 'array', required: false, description: 'Usernames to request' },
|
|
944
|
+
{ name: 'team_reviewers', type: 'array', required: false, description: 'Team slugs to request' },
|
|
945
|
+
],
|
|
946
|
+
},
|
|
947
|
+
// Check runs
|
|
948
|
+
{
|
|
949
|
+
name: 'list_check_runs',
|
|
950
|
+
description: 'List check runs for a ref',
|
|
951
|
+
params: [
|
|
952
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
953
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
954
|
+
{ name: 'ref', type: 'string', required: true, description: 'Commit SHA, branch, or tag' },
|
|
955
|
+
{ name: 'page', type: 'number', required: false, description: 'Page number' },
|
|
956
|
+
{ name: 'per_page', type: 'number', required: false, description: 'Results per page' },
|
|
957
|
+
],
|
|
958
|
+
},
|
|
959
|
+
// Forks
|
|
960
|
+
{
|
|
961
|
+
name: 'list_forks',
|
|
962
|
+
description: 'List repository forks',
|
|
963
|
+
params: [
|
|
964
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
965
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
966
|
+
{ name: 'sort', type: 'string', required: false, description: 'Sort: newest, oldest, stargazers, watchers' },
|
|
967
|
+
{ name: 'page', type: 'number', required: false, description: 'Page number' },
|
|
968
|
+
{ name: 'per_page', type: 'number', required: false, description: 'Results per page' },
|
|
969
|
+
],
|
|
970
|
+
},
|
|
971
|
+
// Traffic
|
|
972
|
+
{
|
|
973
|
+
name: 'get_traffic_views',
|
|
974
|
+
description: 'Get repository traffic views',
|
|
975
|
+
params: [
|
|
976
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
977
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
978
|
+
{ name: 'per', type: 'string', required: false, description: 'Per day or week' },
|
|
979
|
+
],
|
|
980
|
+
},
|
|
981
|
+
{
|
|
982
|
+
name: 'get_traffic_clones',
|
|
983
|
+
description: 'Get repository clone traffic',
|
|
984
|
+
params: [
|
|
985
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
986
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
987
|
+
{ name: 'per', type: 'string', required: false, description: 'Per day or week' },
|
|
988
|
+
],
|
|
989
|
+
},
|
|
990
|
+
{
|
|
991
|
+
name: 'get_top_referrers',
|
|
992
|
+
description: 'Get top traffic referrers',
|
|
993
|
+
params: [
|
|
994
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
995
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
996
|
+
],
|
|
997
|
+
},
|
|
998
|
+
{
|
|
999
|
+
name: 'get_top_paths',
|
|
1000
|
+
description: 'Get top traffic paths',
|
|
1001
|
+
params: [
|
|
1002
|
+
{ name: 'owner', type: 'string', required: true, description: 'Repository owner' },
|
|
1003
|
+
{ name: 'repo', type: 'string', required: true, description: 'Repository name' },
|
|
1004
|
+
],
|
|
1005
|
+
},
|
|
1006
|
+
];
|
|
1007
|
+
// Implementation functions
|
|
1008
|
+
async function searchRepositories(params) {
|
|
1009
|
+
const response = await octokit.search.repos({
|
|
1010
|
+
q: params.query,
|
|
1011
|
+
page: Number(params.page) || 1,
|
|
1012
|
+
per_page: Math.min(Number(params.perPage) || 30, 100),
|
|
1013
|
+
});
|
|
1014
|
+
return response.data;
|
|
1015
|
+
}
|
|
1016
|
+
async function createRepository(params) {
|
|
1017
|
+
const response = await octokit.repos.createForAuthenticatedUser({
|
|
1018
|
+
name: params.name,
|
|
1019
|
+
description: params.description,
|
|
1020
|
+
private: params.private,
|
|
1021
|
+
auto_init: params.autoInit,
|
|
1022
|
+
});
|
|
1023
|
+
return response.data;
|
|
1024
|
+
}
|
|
1025
|
+
async function forkRepository(params) {
|
|
1026
|
+
const response = await octokit.repos.createFork({
|
|
1027
|
+
owner: params.owner,
|
|
1028
|
+
repo: params.repo,
|
|
1029
|
+
organization: params.organization,
|
|
1030
|
+
});
|
|
1031
|
+
return response.data;
|
|
1032
|
+
}
|
|
1033
|
+
async function getFileContents(params) {
|
|
1034
|
+
const response = await octokit.repos.getContent({
|
|
1035
|
+
owner: params.owner,
|
|
1036
|
+
repo: params.repo,
|
|
1037
|
+
path: params.path,
|
|
1038
|
+
ref: params.branch,
|
|
1039
|
+
});
|
|
1040
|
+
return response.data;
|
|
1041
|
+
}
|
|
1042
|
+
async function createOrUpdateFile(params) {
|
|
1043
|
+
const response = await octokit.repos.createOrUpdateFileContents({
|
|
1044
|
+
owner: params.owner,
|
|
1045
|
+
repo: params.repo,
|
|
1046
|
+
path: params.path,
|
|
1047
|
+
message: params.message,
|
|
1048
|
+
content: Buffer.from(params.content).toString('base64'),
|
|
1049
|
+
branch: params.branch,
|
|
1050
|
+
sha: params.sha,
|
|
1051
|
+
});
|
|
1052
|
+
return response.data;
|
|
1053
|
+
}
|
|
1054
|
+
async function pushFiles(params) {
|
|
1055
|
+
const owner = params.owner;
|
|
1056
|
+
const repo = params.repo;
|
|
1057
|
+
const branch = params.branch;
|
|
1058
|
+
const files = params.files;
|
|
1059
|
+
const message = params.message;
|
|
1060
|
+
// Get the current commit SHA
|
|
1061
|
+
const { data: ref } = await octokit.git.getRef({
|
|
1062
|
+
owner,
|
|
1063
|
+
repo,
|
|
1064
|
+
ref: `heads/${branch}`,
|
|
1065
|
+
});
|
|
1066
|
+
const currentCommitSha = ref.object.sha;
|
|
1067
|
+
// Get the tree SHA
|
|
1068
|
+
const { data: commit } = await octokit.git.getCommit({
|
|
1069
|
+
owner,
|
|
1070
|
+
repo,
|
|
1071
|
+
commit_sha: currentCommitSha,
|
|
1072
|
+
});
|
|
1073
|
+
const treeSha = commit.tree.sha;
|
|
1074
|
+
// Create blobs for each file
|
|
1075
|
+
const blobs = await Promise.all(files.map(async (file) => {
|
|
1076
|
+
const { data: blob } = await octokit.git.createBlob({
|
|
1077
|
+
owner,
|
|
1078
|
+
repo,
|
|
1079
|
+
content: Buffer.from(file.content).toString('base64'),
|
|
1080
|
+
encoding: 'base64',
|
|
1081
|
+
});
|
|
1082
|
+
return { path: file.path, sha: blob.sha, mode: '100644', type: 'blob' };
|
|
1083
|
+
}));
|
|
1084
|
+
// Create a new tree
|
|
1085
|
+
const { data: newTree } = await octokit.git.createTree({
|
|
1086
|
+
owner,
|
|
1087
|
+
repo,
|
|
1088
|
+
base_tree: treeSha,
|
|
1089
|
+
tree: blobs,
|
|
1090
|
+
});
|
|
1091
|
+
// Create a new commit
|
|
1092
|
+
const { data: newCommit } = await octokit.git.createCommit({
|
|
1093
|
+
owner,
|
|
1094
|
+
repo,
|
|
1095
|
+
message,
|
|
1096
|
+
tree: newTree.sha,
|
|
1097
|
+
parents: [currentCommitSha],
|
|
1098
|
+
});
|
|
1099
|
+
// Update the reference
|
|
1100
|
+
await octokit.git.updateRef({
|
|
1101
|
+
owner,
|
|
1102
|
+
repo,
|
|
1103
|
+
ref: `heads/${branch}`,
|
|
1104
|
+
sha: newCommit.sha,
|
|
1105
|
+
});
|
|
1106
|
+
return { commit: newCommit, files: files.map((f) => f.path) };
|
|
1107
|
+
}
|
|
1108
|
+
async function createBranch(params) {
|
|
1109
|
+
const owner = params.owner;
|
|
1110
|
+
const repo = params.repo;
|
|
1111
|
+
const branch = params.branch;
|
|
1112
|
+
const fromBranch = params.from_branch;
|
|
1113
|
+
// Get SHA of source branch
|
|
1114
|
+
const { data: sourceRef } = await octokit.git.getRef({
|
|
1115
|
+
owner,
|
|
1116
|
+
repo,
|
|
1117
|
+
ref: `heads/${fromBranch || 'main'}`,
|
|
1118
|
+
});
|
|
1119
|
+
// Create new branch
|
|
1120
|
+
const response = await octokit.git.createRef({
|
|
1121
|
+
owner,
|
|
1122
|
+
repo,
|
|
1123
|
+
ref: `refs/heads/${branch}`,
|
|
1124
|
+
sha: sourceRef.object.sha,
|
|
1125
|
+
});
|
|
1126
|
+
return response.data;
|
|
1127
|
+
}
|
|
1128
|
+
async function listCommits(params) {
|
|
1129
|
+
const response = await octokit.repos.listCommits({
|
|
1130
|
+
owner: params.owner,
|
|
1131
|
+
repo: params.repo,
|
|
1132
|
+
sha: params.sha,
|
|
1133
|
+
page: Number(params.page) || undefined,
|
|
1134
|
+
per_page: Number(params.perPage) || undefined,
|
|
1135
|
+
});
|
|
1136
|
+
return response.data;
|
|
1137
|
+
}
|
|
1138
|
+
async function createIssue(params) {
|
|
1139
|
+
const response = await octokit.issues.create({
|
|
1140
|
+
owner: params.owner,
|
|
1141
|
+
repo: params.repo,
|
|
1142
|
+
title: params.title,
|
|
1143
|
+
body: params.body,
|
|
1144
|
+
labels: params.labels,
|
|
1145
|
+
assignees: params.assignees,
|
|
1146
|
+
});
|
|
1147
|
+
return response.data;
|
|
1148
|
+
}
|
|
1149
|
+
async function getIssue(params) {
|
|
1150
|
+
const response = await octokit.issues.get({
|
|
1151
|
+
owner: params.owner,
|
|
1152
|
+
repo: params.repo,
|
|
1153
|
+
issue_number: Number(params.issue_number),
|
|
1154
|
+
});
|
|
1155
|
+
return response.data;
|
|
1156
|
+
}
|
|
1157
|
+
async function listIssues(params) {
|
|
1158
|
+
const response = await octokit.issues.listForRepo({
|
|
1159
|
+
owner: params.owner,
|
|
1160
|
+
repo: params.repo,
|
|
1161
|
+
state: params.state,
|
|
1162
|
+
labels: params.labels?.join(','),
|
|
1163
|
+
page: Number(params.page) || undefined,
|
|
1164
|
+
per_page: Number(params.per_page) || undefined,
|
|
1165
|
+
});
|
|
1166
|
+
return response.data;
|
|
1167
|
+
}
|
|
1168
|
+
async function updateIssue(params) {
|
|
1169
|
+
const response = await octokit.issues.update({
|
|
1170
|
+
owner: params.owner,
|
|
1171
|
+
repo: params.repo,
|
|
1172
|
+
issue_number: Number(params.issue_number),
|
|
1173
|
+
title: params.title,
|
|
1174
|
+
body: params.body,
|
|
1175
|
+
state: params.state,
|
|
1176
|
+
labels: params.labels,
|
|
1177
|
+
assignees: params.assignees,
|
|
1178
|
+
});
|
|
1179
|
+
return response.data;
|
|
1180
|
+
}
|
|
1181
|
+
async function addIssueComment(params) {
|
|
1182
|
+
const response = await octokit.issues.createComment({
|
|
1183
|
+
owner: params.owner,
|
|
1184
|
+
repo: params.repo,
|
|
1185
|
+
issue_number: Number(params.issue_number),
|
|
1186
|
+
body: params.body,
|
|
1187
|
+
});
|
|
1188
|
+
return response.data;
|
|
1189
|
+
}
|
|
1190
|
+
async function searchIssues(params) {
|
|
1191
|
+
const response = await octokit.search.issuesAndPullRequests({
|
|
1192
|
+
q: params.q,
|
|
1193
|
+
sort: params.sort,
|
|
1194
|
+
order: params.order,
|
|
1195
|
+
page: Number(params.page) || undefined,
|
|
1196
|
+
per_page: Number(params.per_page) || undefined,
|
|
1197
|
+
});
|
|
1198
|
+
return response.data;
|
|
1199
|
+
}
|
|
1200
|
+
async function createPullRequest(params) {
|
|
1201
|
+
const response = await octokit.pulls.create({
|
|
1202
|
+
owner: params.owner,
|
|
1203
|
+
repo: params.repo,
|
|
1204
|
+
title: params.title,
|
|
1205
|
+
head: params.head,
|
|
1206
|
+
base: params.base,
|
|
1207
|
+
body: params.body,
|
|
1208
|
+
draft: params.draft,
|
|
1209
|
+
});
|
|
1210
|
+
return response.data;
|
|
1211
|
+
}
|
|
1212
|
+
async function getPullRequest(params) {
|
|
1213
|
+
const response = await octokit.pulls.get({
|
|
1214
|
+
owner: params.owner,
|
|
1215
|
+
repo: params.repo,
|
|
1216
|
+
pull_number: Number(params.pull_number),
|
|
1217
|
+
});
|
|
1218
|
+
return response.data;
|
|
1219
|
+
}
|
|
1220
|
+
async function listPullRequests(params) {
|
|
1221
|
+
const response = await octokit.pulls.list({
|
|
1222
|
+
owner: params.owner,
|
|
1223
|
+
repo: params.repo,
|
|
1224
|
+
state: params.state,
|
|
1225
|
+
head: params.head,
|
|
1226
|
+
base: params.base,
|
|
1227
|
+
page: Number(params.page) || undefined,
|
|
1228
|
+
per_page: Number(params.per_page) || undefined,
|
|
1229
|
+
});
|
|
1230
|
+
return response.data;
|
|
1231
|
+
}
|
|
1232
|
+
async function mergePullRequest(params) {
|
|
1233
|
+
const response = await octokit.pulls.merge({
|
|
1234
|
+
owner: params.owner,
|
|
1235
|
+
repo: params.repo,
|
|
1236
|
+
pull_number: Number(params.pull_number),
|
|
1237
|
+
commit_title: params.commit_title,
|
|
1238
|
+
commit_message: params.commit_message,
|
|
1239
|
+
merge_method: params.merge_method,
|
|
1240
|
+
});
|
|
1241
|
+
return response.data;
|
|
1242
|
+
}
|
|
1243
|
+
async function getPullRequestFiles(params) {
|
|
1244
|
+
const response = await octokit.pulls.listFiles({
|
|
1245
|
+
owner: params.owner,
|
|
1246
|
+
repo: params.repo,
|
|
1247
|
+
pull_number: Number(params.pull_number),
|
|
1248
|
+
});
|
|
1249
|
+
return response.data;
|
|
1250
|
+
}
|
|
1251
|
+
async function getPullRequestStatus(params) {
|
|
1252
|
+
// First get the PR to get the head SHA
|
|
1253
|
+
const { data: pr } = await octokit.pulls.get({
|
|
1254
|
+
owner: params.owner,
|
|
1255
|
+
repo: params.repo,
|
|
1256
|
+
pull_number: Number(params.pull_number),
|
|
1257
|
+
});
|
|
1258
|
+
const response = await octokit.repos.getCombinedStatusForRef({
|
|
1259
|
+
owner: params.owner,
|
|
1260
|
+
repo: params.repo,
|
|
1261
|
+
ref: pr.head.sha,
|
|
1262
|
+
});
|
|
1263
|
+
return response.data;
|
|
1264
|
+
}
|
|
1265
|
+
async function getPullRequestComments(params) {
|
|
1266
|
+
const response = await octokit.pulls.listReviewComments({
|
|
1267
|
+
owner: params.owner,
|
|
1268
|
+
repo: params.repo,
|
|
1269
|
+
pull_number: Number(params.pull_number),
|
|
1270
|
+
});
|
|
1271
|
+
return response.data;
|
|
1272
|
+
}
|
|
1273
|
+
async function getPullRequestReviews(params) {
|
|
1274
|
+
const response = await octokit.pulls.listReviews({
|
|
1275
|
+
owner: params.owner,
|
|
1276
|
+
repo: params.repo,
|
|
1277
|
+
pull_number: Number(params.pull_number),
|
|
1278
|
+
});
|
|
1279
|
+
return response.data;
|
|
1280
|
+
}
|
|
1281
|
+
async function createPullRequestReview(params) {
|
|
1282
|
+
const response = await octokit.pulls.createReview({
|
|
1283
|
+
owner: params.owner,
|
|
1284
|
+
repo: params.repo,
|
|
1285
|
+
pull_number: Number(params.pull_number),
|
|
1286
|
+
body: params.body,
|
|
1287
|
+
event: params.event,
|
|
1288
|
+
comments: params.comments,
|
|
1289
|
+
});
|
|
1290
|
+
return response.data;
|
|
1291
|
+
}
|
|
1292
|
+
async function updatePullRequestBranch(params) {
|
|
1293
|
+
const response = await octokit.pulls.updateBranch({
|
|
1294
|
+
owner: params.owner,
|
|
1295
|
+
repo: params.repo,
|
|
1296
|
+
pull_number: Number(params.pull_number),
|
|
1297
|
+
});
|
|
1298
|
+
return response.data;
|
|
1299
|
+
}
|
|
1300
|
+
async function searchCode(params) {
|
|
1301
|
+
const response = await octokit.search.code({
|
|
1302
|
+
q: params.q,
|
|
1303
|
+
page: Number(params.page) || undefined,
|
|
1304
|
+
per_page: Number(params.per_page) || undefined,
|
|
1305
|
+
});
|
|
1306
|
+
return response.data;
|
|
1307
|
+
}
|
|
1308
|
+
async function searchUsers(params) {
|
|
1309
|
+
const response = await octokit.search.users({
|
|
1310
|
+
q: params.q,
|
|
1311
|
+
sort: params.sort,
|
|
1312
|
+
order: params.order,
|
|
1313
|
+
page: Number(params.page) || undefined,
|
|
1314
|
+
per_page: Number(params.per_page) || undefined,
|
|
1315
|
+
});
|
|
1316
|
+
return response.data;
|
|
1317
|
+
}
|
|
1318
|
+
async function addCollaborator(params) {
|
|
1319
|
+
const response = await octokit.repos.addCollaborator({
|
|
1320
|
+
owner: params.owner,
|
|
1321
|
+
repo: params.repo,
|
|
1322
|
+
username: params.username,
|
|
1323
|
+
permission: params.permission || 'push',
|
|
1324
|
+
});
|
|
1325
|
+
return response.data || { message: `Invitation sent to ${params.username}` };
|
|
1326
|
+
}
|
|
1327
|
+
async function removeCollaborator(params) {
|
|
1328
|
+
await octokit.repos.removeCollaborator({
|
|
1329
|
+
owner: params.owner,
|
|
1330
|
+
repo: params.repo,
|
|
1331
|
+
username: params.username,
|
|
1332
|
+
});
|
|
1333
|
+
return { message: `Removed ${params.username} from ${params.owner}/${params.repo}` };
|
|
1334
|
+
}
|
|
1335
|
+
async function listCollaborators(params) {
|
|
1336
|
+
const response = await octokit.repos.listCollaborators({
|
|
1337
|
+
owner: params.owner,
|
|
1338
|
+
repo: params.repo,
|
|
1339
|
+
});
|
|
1340
|
+
return response.data;
|
|
1341
|
+
}
|
|
1342
|
+
// Repository Management
|
|
1343
|
+
async function getRepository(params) {
|
|
1344
|
+
const response = await octokit.repos.get({
|
|
1345
|
+
owner: params.owner,
|
|
1346
|
+
repo: params.repo,
|
|
1347
|
+
});
|
|
1348
|
+
return response.data;
|
|
1349
|
+
}
|
|
1350
|
+
async function updateRepository(params) {
|
|
1351
|
+
const response = await octokit.repos.update({
|
|
1352
|
+
owner: params.owner,
|
|
1353
|
+
repo: params.repo,
|
|
1354
|
+
description: params.description,
|
|
1355
|
+
homepage: params.homepage,
|
|
1356
|
+
private: params.private,
|
|
1357
|
+
has_issues: params.has_issues,
|
|
1358
|
+
has_wiki: params.has_wiki,
|
|
1359
|
+
has_projects: params.has_projects,
|
|
1360
|
+
default_branch: params.default_branch,
|
|
1361
|
+
archived: params.archived,
|
|
1362
|
+
});
|
|
1363
|
+
return response.data;
|
|
1364
|
+
}
|
|
1365
|
+
async function deleteRepository(params) {
|
|
1366
|
+
await octokit.repos.delete({
|
|
1367
|
+
owner: params.owner,
|
|
1368
|
+
repo: params.repo,
|
|
1369
|
+
});
|
|
1370
|
+
return { message: `Deleted repository ${params.owner}/${params.repo}` };
|
|
1371
|
+
}
|
|
1372
|
+
async function listUserRepositories(params) {
|
|
1373
|
+
if (params.username) {
|
|
1374
|
+
const response = await octokit.repos.listForUser({
|
|
1375
|
+
username: params.username,
|
|
1376
|
+
type: params.type,
|
|
1377
|
+
sort: params.sort,
|
|
1378
|
+
page: Number(params.page) || undefined,
|
|
1379
|
+
per_page: Number(params.per_page) || undefined,
|
|
1380
|
+
});
|
|
1381
|
+
return response.data;
|
|
1382
|
+
}
|
|
1383
|
+
const response = await octokit.repos.listForAuthenticatedUser({
|
|
1384
|
+
type: params.type,
|
|
1385
|
+
sort: params.sort,
|
|
1386
|
+
page: Number(params.page) || undefined,
|
|
1387
|
+
per_page: Number(params.per_page) || undefined,
|
|
1388
|
+
});
|
|
1389
|
+
return response.data;
|
|
1390
|
+
}
|
|
1391
|
+
async function listBranches(params) {
|
|
1392
|
+
const response = await octokit.repos.listBranches({
|
|
1393
|
+
owner: params.owner,
|
|
1394
|
+
repo: params.repo,
|
|
1395
|
+
protected: params.protected,
|
|
1396
|
+
page: Number(params.page) || undefined,
|
|
1397
|
+
per_page: Number(params.per_page) || undefined,
|
|
1398
|
+
});
|
|
1399
|
+
return response.data;
|
|
1400
|
+
}
|
|
1401
|
+
async function getBranch(params) {
|
|
1402
|
+
const response = await octokit.repos.getBranch({
|
|
1403
|
+
owner: params.owner,
|
|
1404
|
+
repo: params.repo,
|
|
1405
|
+
branch: params.branch,
|
|
1406
|
+
});
|
|
1407
|
+
return response.data;
|
|
1408
|
+
}
|
|
1409
|
+
async function deleteBranch(params) {
|
|
1410
|
+
await octokit.git.deleteRef({
|
|
1411
|
+
owner: params.owner,
|
|
1412
|
+
repo: params.repo,
|
|
1413
|
+
ref: `heads/${params.branch}`,
|
|
1414
|
+
});
|
|
1415
|
+
return { message: `Deleted branch ${params.branch}` };
|
|
1416
|
+
}
|
|
1417
|
+
async function listTags(params) {
|
|
1418
|
+
const response = await octokit.repos.listTags({
|
|
1419
|
+
owner: params.owner,
|
|
1420
|
+
repo: params.repo,
|
|
1421
|
+
page: Number(params.page) || undefined,
|
|
1422
|
+
per_page: Number(params.per_page) || undefined,
|
|
1423
|
+
});
|
|
1424
|
+
return response.data;
|
|
1425
|
+
}
|
|
1426
|
+
async function getReadme(params) {
|
|
1427
|
+
const response = await octokit.repos.getReadme({
|
|
1428
|
+
owner: params.owner,
|
|
1429
|
+
repo: params.repo,
|
|
1430
|
+
ref: params.ref,
|
|
1431
|
+
});
|
|
1432
|
+
return response.data;
|
|
1433
|
+
}
|
|
1434
|
+
async function listTopics(params) {
|
|
1435
|
+
const response = await octokit.repos.getAllTopics({
|
|
1436
|
+
owner: params.owner,
|
|
1437
|
+
repo: params.repo,
|
|
1438
|
+
});
|
|
1439
|
+
return response.data;
|
|
1440
|
+
}
|
|
1441
|
+
async function updateTopics(params) {
|
|
1442
|
+
const response = await octokit.repos.replaceAllTopics({
|
|
1443
|
+
owner: params.owner,
|
|
1444
|
+
repo: params.repo,
|
|
1445
|
+
names: params.topics,
|
|
1446
|
+
});
|
|
1447
|
+
return response.data;
|
|
1448
|
+
}
|
|
1449
|
+
async function listLanguages(params) {
|
|
1450
|
+
const response = await octokit.repos.listLanguages({
|
|
1451
|
+
owner: params.owner,
|
|
1452
|
+
repo: params.repo,
|
|
1453
|
+
});
|
|
1454
|
+
return response.data;
|
|
1455
|
+
}
|
|
1456
|
+
async function listContributors(params) {
|
|
1457
|
+
const response = await octokit.repos.listContributors({
|
|
1458
|
+
owner: params.owner,
|
|
1459
|
+
repo: params.repo,
|
|
1460
|
+
page: Number(params.page) || undefined,
|
|
1461
|
+
per_page: Number(params.per_page) || undefined,
|
|
1462
|
+
});
|
|
1463
|
+
return response.data;
|
|
1464
|
+
}
|
|
1465
|
+
// Releases
|
|
1466
|
+
async function listReleases(params) {
|
|
1467
|
+
const response = await octokit.repos.listReleases({
|
|
1468
|
+
owner: params.owner,
|
|
1469
|
+
repo: params.repo,
|
|
1470
|
+
page: Number(params.page) || undefined,
|
|
1471
|
+
per_page: Number(params.per_page) || undefined,
|
|
1472
|
+
});
|
|
1473
|
+
return response.data;
|
|
1474
|
+
}
|
|
1475
|
+
async function getRelease(params) {
|
|
1476
|
+
const response = await octokit.repos.getRelease({
|
|
1477
|
+
owner: params.owner,
|
|
1478
|
+
repo: params.repo,
|
|
1479
|
+
release_id: Number(params.release_id),
|
|
1480
|
+
});
|
|
1481
|
+
return response.data;
|
|
1482
|
+
}
|
|
1483
|
+
async function getLatestRelease(params) {
|
|
1484
|
+
const response = await octokit.repos.getLatestRelease({
|
|
1485
|
+
owner: params.owner,
|
|
1486
|
+
repo: params.repo,
|
|
1487
|
+
});
|
|
1488
|
+
return response.data;
|
|
1489
|
+
}
|
|
1490
|
+
async function getReleaseByTag(params) {
|
|
1491
|
+
const response = await octokit.repos.getReleaseByTag({
|
|
1492
|
+
owner: params.owner,
|
|
1493
|
+
repo: params.repo,
|
|
1494
|
+
tag: params.tag,
|
|
1495
|
+
});
|
|
1496
|
+
return response.data;
|
|
1497
|
+
}
|
|
1498
|
+
async function createRelease(params) {
|
|
1499
|
+
const response = await octokit.repos.createRelease({
|
|
1500
|
+
owner: params.owner,
|
|
1501
|
+
repo: params.repo,
|
|
1502
|
+
tag_name: params.tag_name,
|
|
1503
|
+
name: params.name,
|
|
1504
|
+
body: params.body,
|
|
1505
|
+
draft: params.draft,
|
|
1506
|
+
prerelease: params.prerelease,
|
|
1507
|
+
target_commitish: params.target_commitish,
|
|
1508
|
+
generate_release_notes: params.generate_release_notes,
|
|
1509
|
+
});
|
|
1510
|
+
return response.data;
|
|
1511
|
+
}
|
|
1512
|
+
async function updateRelease(params) {
|
|
1513
|
+
const response = await octokit.repos.updateRelease({
|
|
1514
|
+
owner: params.owner,
|
|
1515
|
+
repo: params.repo,
|
|
1516
|
+
release_id: Number(params.release_id),
|
|
1517
|
+
tag_name: params.tag_name,
|
|
1518
|
+
name: params.name,
|
|
1519
|
+
body: params.body,
|
|
1520
|
+
draft: params.draft,
|
|
1521
|
+
prerelease: params.prerelease,
|
|
1522
|
+
});
|
|
1523
|
+
return response.data;
|
|
1524
|
+
}
|
|
1525
|
+
async function deleteRelease(params) {
|
|
1526
|
+
await octokit.repos.deleteRelease({
|
|
1527
|
+
owner: params.owner,
|
|
1528
|
+
repo: params.repo,
|
|
1529
|
+
release_id: Number(params.release_id),
|
|
1530
|
+
});
|
|
1531
|
+
return { message: `Deleted release ${params.release_id}` };
|
|
1532
|
+
}
|
|
1533
|
+
async function listReleaseAssets(params) {
|
|
1534
|
+
const response = await octokit.repos.listReleaseAssets({
|
|
1535
|
+
owner: params.owner,
|
|
1536
|
+
repo: params.repo,
|
|
1537
|
+
release_id: Number(params.release_id),
|
|
1538
|
+
});
|
|
1539
|
+
return response.data;
|
|
1540
|
+
}
|
|
1541
|
+
// Labels
|
|
1542
|
+
async function listLabels(params) {
|
|
1543
|
+
const response = await octokit.issues.listLabelsForRepo({
|
|
1544
|
+
owner: params.owner,
|
|
1545
|
+
repo: params.repo,
|
|
1546
|
+
page: Number(params.page) || undefined,
|
|
1547
|
+
per_page: Number(params.per_page) || undefined,
|
|
1548
|
+
});
|
|
1549
|
+
return response.data;
|
|
1550
|
+
}
|
|
1551
|
+
async function createLabel(params) {
|
|
1552
|
+
const response = await octokit.issues.createLabel({
|
|
1553
|
+
owner: params.owner,
|
|
1554
|
+
repo: params.repo,
|
|
1555
|
+
name: params.name,
|
|
1556
|
+
color: params.color,
|
|
1557
|
+
description: params.description,
|
|
1558
|
+
});
|
|
1559
|
+
return response.data;
|
|
1560
|
+
}
|
|
1561
|
+
async function updateLabel(params) {
|
|
1562
|
+
const response = await octokit.issues.updateLabel({
|
|
1563
|
+
owner: params.owner,
|
|
1564
|
+
repo: params.repo,
|
|
1565
|
+
name: params.name,
|
|
1566
|
+
new_name: params.new_name,
|
|
1567
|
+
color: params.color,
|
|
1568
|
+
description: params.description,
|
|
1569
|
+
});
|
|
1570
|
+
return response.data;
|
|
1571
|
+
}
|
|
1572
|
+
async function deleteLabel(params) {
|
|
1573
|
+
await octokit.issues.deleteLabel({
|
|
1574
|
+
owner: params.owner,
|
|
1575
|
+
repo: params.repo,
|
|
1576
|
+
name: params.name,
|
|
1577
|
+
});
|
|
1578
|
+
return { message: `Deleted label ${params.name}` };
|
|
1579
|
+
}
|
|
1580
|
+
// Milestones
|
|
1581
|
+
async function listMilestones(params) {
|
|
1582
|
+
const response = await octokit.issues.listMilestones({
|
|
1583
|
+
owner: params.owner,
|
|
1584
|
+
repo: params.repo,
|
|
1585
|
+
state: params.state,
|
|
1586
|
+
sort: params.sort,
|
|
1587
|
+
page: Number(params.page) || undefined,
|
|
1588
|
+
});
|
|
1589
|
+
return response.data;
|
|
1590
|
+
}
|
|
1591
|
+
async function createMilestone(params) {
|
|
1592
|
+
const response = await octokit.issues.createMilestone({
|
|
1593
|
+
owner: params.owner,
|
|
1594
|
+
repo: params.repo,
|
|
1595
|
+
title: params.title,
|
|
1596
|
+
description: params.description,
|
|
1597
|
+
due_on: params.due_on,
|
|
1598
|
+
state: params.state,
|
|
1599
|
+
});
|
|
1600
|
+
return response.data;
|
|
1601
|
+
}
|
|
1602
|
+
async function updateMilestone(params) {
|
|
1603
|
+
const response = await octokit.issues.updateMilestone({
|
|
1604
|
+
owner: params.owner,
|
|
1605
|
+
repo: params.repo,
|
|
1606
|
+
milestone_number: Number(params.milestone_number),
|
|
1607
|
+
title: params.title,
|
|
1608
|
+
description: params.description,
|
|
1609
|
+
due_on: params.due_on,
|
|
1610
|
+
state: params.state,
|
|
1611
|
+
});
|
|
1612
|
+
return response.data;
|
|
1613
|
+
}
|
|
1614
|
+
async function deleteMilestone(params) {
|
|
1615
|
+
await octokit.issues.deleteMilestone({
|
|
1616
|
+
owner: params.owner,
|
|
1617
|
+
repo: params.repo,
|
|
1618
|
+
milestone_number: Number(params.milestone_number),
|
|
1619
|
+
});
|
|
1620
|
+
return { message: `Deleted milestone ${params.milestone_number}` };
|
|
1621
|
+
}
|
|
1622
|
+
// GitHub Actions
|
|
1623
|
+
async function listWorkflows(params) {
|
|
1624
|
+
const response = await octokit.actions.listRepoWorkflows({
|
|
1625
|
+
owner: params.owner,
|
|
1626
|
+
repo: params.repo,
|
|
1627
|
+
page: Number(params.page) || undefined,
|
|
1628
|
+
per_page: Number(params.per_page) || undefined,
|
|
1629
|
+
});
|
|
1630
|
+
return response.data;
|
|
1631
|
+
}
|
|
1632
|
+
async function getWorkflow(params) {
|
|
1633
|
+
const response = await octokit.actions.getWorkflow({
|
|
1634
|
+
owner: params.owner,
|
|
1635
|
+
repo: params.repo,
|
|
1636
|
+
workflow_id: params.workflow_id,
|
|
1637
|
+
});
|
|
1638
|
+
return response.data;
|
|
1639
|
+
}
|
|
1640
|
+
async function listWorkflowRuns(params) {
|
|
1641
|
+
if (params.workflow_id) {
|
|
1642
|
+
const response = await octokit.actions.listWorkflowRuns({
|
|
1643
|
+
owner: params.owner,
|
|
1644
|
+
repo: params.repo,
|
|
1645
|
+
workflow_id: params.workflow_id,
|
|
1646
|
+
branch: params.branch,
|
|
1647
|
+
status: params.status,
|
|
1648
|
+
page: Number(params.page) || undefined,
|
|
1649
|
+
per_page: Number(params.per_page) || undefined,
|
|
1650
|
+
});
|
|
1651
|
+
return response.data;
|
|
1652
|
+
}
|
|
1653
|
+
const response = await octokit.actions.listWorkflowRunsForRepo({
|
|
1654
|
+
owner: params.owner,
|
|
1655
|
+
repo: params.repo,
|
|
1656
|
+
branch: params.branch,
|
|
1657
|
+
status: params.status,
|
|
1658
|
+
page: Number(params.page) || undefined,
|
|
1659
|
+
per_page: Number(params.per_page) || undefined,
|
|
1660
|
+
});
|
|
1661
|
+
return response.data;
|
|
1662
|
+
}
|
|
1663
|
+
async function getWorkflowRun(params) {
|
|
1664
|
+
const response = await octokit.actions.getWorkflowRun({
|
|
1665
|
+
owner: params.owner,
|
|
1666
|
+
repo: params.repo,
|
|
1667
|
+
run_id: Number(params.run_id),
|
|
1668
|
+
});
|
|
1669
|
+
return response.data;
|
|
1670
|
+
}
|
|
1671
|
+
async function rerunWorkflow(params) {
|
|
1672
|
+
await octokit.actions.reRunWorkflow({
|
|
1673
|
+
owner: params.owner,
|
|
1674
|
+
repo: params.repo,
|
|
1675
|
+
run_id: Number(params.run_id),
|
|
1676
|
+
});
|
|
1677
|
+
return { message: `Re-running workflow ${params.run_id}` };
|
|
1678
|
+
}
|
|
1679
|
+
async function cancelWorkflowRun(params) {
|
|
1680
|
+
await octokit.actions.cancelWorkflowRun({
|
|
1681
|
+
owner: params.owner,
|
|
1682
|
+
repo: params.repo,
|
|
1683
|
+
run_id: Number(params.run_id),
|
|
1684
|
+
});
|
|
1685
|
+
return { message: `Cancelled workflow run ${params.run_id}` };
|
|
1686
|
+
}
|
|
1687
|
+
async function listWorkflowJobs(params) {
|
|
1688
|
+
const response = await octokit.actions.listJobsForWorkflowRun({
|
|
1689
|
+
owner: params.owner,
|
|
1690
|
+
repo: params.repo,
|
|
1691
|
+
run_id: Number(params.run_id),
|
|
1692
|
+
});
|
|
1693
|
+
return response.data;
|
|
1694
|
+
}
|
|
1695
|
+
async function triggerWorkflow(params) {
|
|
1696
|
+
await octokit.actions.createWorkflowDispatch({
|
|
1697
|
+
owner: params.owner,
|
|
1698
|
+
repo: params.repo,
|
|
1699
|
+
workflow_id: params.workflow_id,
|
|
1700
|
+
ref: params.ref,
|
|
1701
|
+
inputs: params.inputs,
|
|
1702
|
+
});
|
|
1703
|
+
return { message: `Triggered workflow ${params.workflow_id}` };
|
|
1704
|
+
}
|
|
1705
|
+
// Gists
|
|
1706
|
+
async function listGists(params) {
|
|
1707
|
+
const response = await octokit.gists.list({
|
|
1708
|
+
page: Number(params.page) || undefined,
|
|
1709
|
+
per_page: Number(params.per_page) || undefined,
|
|
1710
|
+
});
|
|
1711
|
+
return response.data;
|
|
1712
|
+
}
|
|
1713
|
+
async function createGist(params) {
|
|
1714
|
+
const response = await octokit.gists.create({
|
|
1715
|
+
files: params.files,
|
|
1716
|
+
description: params.description,
|
|
1717
|
+
public: params.public,
|
|
1718
|
+
});
|
|
1719
|
+
return response.data;
|
|
1720
|
+
}
|
|
1721
|
+
async function getGist(params) {
|
|
1722
|
+
const response = await octokit.gists.get({
|
|
1723
|
+
gist_id: params.gist_id,
|
|
1724
|
+
});
|
|
1725
|
+
return response.data;
|
|
1726
|
+
}
|
|
1727
|
+
async function updateGist(params) {
|
|
1728
|
+
const response = await octokit.gists.update({
|
|
1729
|
+
gist_id: params.gist_id,
|
|
1730
|
+
files: params.files,
|
|
1731
|
+
description: params.description,
|
|
1732
|
+
});
|
|
1733
|
+
return response.data;
|
|
1734
|
+
}
|
|
1735
|
+
async function deleteGist(params) {
|
|
1736
|
+
await octokit.gists.delete({
|
|
1737
|
+
gist_id: params.gist_id,
|
|
1738
|
+
});
|
|
1739
|
+
return { message: `Deleted gist ${params.gist_id}` };
|
|
1740
|
+
}
|
|
1741
|
+
// Stars and Watch
|
|
1742
|
+
async function starRepository(params) {
|
|
1743
|
+
await octokit.activity.starRepoForAuthenticatedUser({
|
|
1744
|
+
owner: params.owner,
|
|
1745
|
+
repo: params.repo,
|
|
1746
|
+
});
|
|
1747
|
+
return { message: `Starred ${params.owner}/${params.repo}` };
|
|
1748
|
+
}
|
|
1749
|
+
async function unstarRepository(params) {
|
|
1750
|
+
await octokit.activity.unstarRepoForAuthenticatedUser({
|
|
1751
|
+
owner: params.owner,
|
|
1752
|
+
repo: params.repo,
|
|
1753
|
+
});
|
|
1754
|
+
return { message: `Unstarred ${params.owner}/${params.repo}` };
|
|
1755
|
+
}
|
|
1756
|
+
async function listStargazers(params) {
|
|
1757
|
+
const response = await octokit.activity.listStargazersForRepo({
|
|
1758
|
+
owner: params.owner,
|
|
1759
|
+
repo: params.repo,
|
|
1760
|
+
page: Number(params.page) || undefined,
|
|
1761
|
+
per_page: Number(params.per_page) || undefined,
|
|
1762
|
+
});
|
|
1763
|
+
return response.data;
|
|
1764
|
+
}
|
|
1765
|
+
async function listWatchers(params) {
|
|
1766
|
+
const response = await octokit.activity.listWatchersForRepo({
|
|
1767
|
+
owner: params.owner,
|
|
1768
|
+
repo: params.repo,
|
|
1769
|
+
page: Number(params.page) || undefined,
|
|
1770
|
+
per_page: Number(params.per_page) || undefined,
|
|
1771
|
+
});
|
|
1772
|
+
return response.data;
|
|
1773
|
+
}
|
|
1774
|
+
// User
|
|
1775
|
+
async function getAuthenticatedUser() {
|
|
1776
|
+
const response = await octokit.users.getAuthenticated();
|
|
1777
|
+
return response.data;
|
|
1778
|
+
}
|
|
1779
|
+
async function getUser(params) {
|
|
1780
|
+
const response = await octokit.users.getByUsername({
|
|
1781
|
+
username: params.username,
|
|
1782
|
+
});
|
|
1783
|
+
return response.data;
|
|
1784
|
+
}
|
|
1785
|
+
async function listUserOrgs(params) {
|
|
1786
|
+
const response = await octokit.orgs.listForAuthenticatedUser({
|
|
1787
|
+
page: Number(params.page) || undefined,
|
|
1788
|
+
per_page: Number(params.per_page) || undefined,
|
|
1789
|
+
});
|
|
1790
|
+
return response.data;
|
|
1791
|
+
}
|
|
1792
|
+
// Organizations
|
|
1793
|
+
async function getOrganization(params) {
|
|
1794
|
+
const response = await octokit.orgs.get({
|
|
1795
|
+
org: params.org,
|
|
1796
|
+
});
|
|
1797
|
+
return response.data;
|
|
1798
|
+
}
|
|
1799
|
+
async function listOrgRepositories(params) {
|
|
1800
|
+
const response = await octokit.repos.listForOrg({
|
|
1801
|
+
org: params.org,
|
|
1802
|
+
type: params.type,
|
|
1803
|
+
sort: params.sort,
|
|
1804
|
+
page: Number(params.page) || undefined,
|
|
1805
|
+
per_page: Number(params.per_page) || undefined,
|
|
1806
|
+
});
|
|
1807
|
+
return response.data;
|
|
1808
|
+
}
|
|
1809
|
+
async function listOrgMembers(params) {
|
|
1810
|
+
const response = await octokit.orgs.listMembers({
|
|
1811
|
+
org: params.org,
|
|
1812
|
+
role: params.role,
|
|
1813
|
+
page: Number(params.page) || undefined,
|
|
1814
|
+
per_page: Number(params.per_page) || undefined,
|
|
1815
|
+
});
|
|
1816
|
+
return response.data;
|
|
1817
|
+
}
|
|
1818
|
+
// Webhooks
|
|
1819
|
+
async function listWebhooks(params) {
|
|
1820
|
+
const response = await octokit.repos.listWebhooks({
|
|
1821
|
+
owner: params.owner,
|
|
1822
|
+
repo: params.repo,
|
|
1823
|
+
});
|
|
1824
|
+
return response.data;
|
|
1825
|
+
}
|
|
1826
|
+
async function createWebhook(params) {
|
|
1827
|
+
const response = await octokit.repos.createWebhook({
|
|
1828
|
+
owner: params.owner,
|
|
1829
|
+
repo: params.repo,
|
|
1830
|
+
config: {
|
|
1831
|
+
url: params.url,
|
|
1832
|
+
content_type: params.content_type || 'json',
|
|
1833
|
+
secret: params.secret,
|
|
1834
|
+
},
|
|
1835
|
+
events: params.events || ['push'],
|
|
1836
|
+
active: params.active ?? true,
|
|
1837
|
+
});
|
|
1838
|
+
return response.data;
|
|
1839
|
+
}
|
|
1840
|
+
async function deleteWebhook(params) {
|
|
1841
|
+
await octokit.repos.deleteWebhook({
|
|
1842
|
+
owner: params.owner,
|
|
1843
|
+
repo: params.repo,
|
|
1844
|
+
hook_id: Number(params.hook_id),
|
|
1845
|
+
});
|
|
1846
|
+
return { message: `Deleted webhook ${params.hook_id}` };
|
|
1847
|
+
}
|
|
1848
|
+
// Notifications
|
|
1849
|
+
async function listNotifications(params) {
|
|
1850
|
+
const response = await octokit.activity.listNotificationsForAuthenticatedUser({
|
|
1851
|
+
all: params.all,
|
|
1852
|
+
participating: params.participating,
|
|
1853
|
+
page: Number(params.page) || undefined,
|
|
1854
|
+
per_page: Number(params.per_page) || undefined,
|
|
1855
|
+
});
|
|
1856
|
+
return response.data;
|
|
1857
|
+
}
|
|
1858
|
+
async function markNotificationsRead(params) {
|
|
1859
|
+
await octokit.activity.markNotificationsAsRead({
|
|
1860
|
+
last_read_at: params.last_read_at,
|
|
1861
|
+
});
|
|
1862
|
+
return { message: 'Marked notifications as read' };
|
|
1863
|
+
}
|
|
1864
|
+
// Commits
|
|
1865
|
+
async function getCommit(params) {
|
|
1866
|
+
const response = await octokit.repos.getCommit({
|
|
1867
|
+
owner: params.owner,
|
|
1868
|
+
repo: params.repo,
|
|
1869
|
+
ref: params.ref,
|
|
1870
|
+
});
|
|
1871
|
+
return response.data;
|
|
1872
|
+
}
|
|
1873
|
+
async function compareCommits(params) {
|
|
1874
|
+
const response = await octokit.repos.compareCommits({
|
|
1875
|
+
owner: params.owner,
|
|
1876
|
+
repo: params.repo,
|
|
1877
|
+
base: params.base,
|
|
1878
|
+
head: params.head,
|
|
1879
|
+
});
|
|
1880
|
+
return response.data;
|
|
1881
|
+
}
|
|
1882
|
+
// Issue Comments
|
|
1883
|
+
async function listIssueComments(params) {
|
|
1884
|
+
const response = await octokit.issues.listComments({
|
|
1885
|
+
owner: params.owner,
|
|
1886
|
+
repo: params.repo,
|
|
1887
|
+
issue_number: Number(params.issue_number),
|
|
1888
|
+
page: Number(params.page) || undefined,
|
|
1889
|
+
per_page: Number(params.per_page) || undefined,
|
|
1890
|
+
});
|
|
1891
|
+
return response.data;
|
|
1892
|
+
}
|
|
1893
|
+
async function updateIssueComment(params) {
|
|
1894
|
+
const response = await octokit.issues.updateComment({
|
|
1895
|
+
owner: params.owner,
|
|
1896
|
+
repo: params.repo,
|
|
1897
|
+
comment_id: Number(params.comment_id),
|
|
1898
|
+
body: params.body,
|
|
1899
|
+
});
|
|
1900
|
+
return response.data;
|
|
1901
|
+
}
|
|
1902
|
+
async function deleteIssueComment(params) {
|
|
1903
|
+
await octokit.issues.deleteComment({
|
|
1904
|
+
owner: params.owner,
|
|
1905
|
+
repo: params.repo,
|
|
1906
|
+
comment_id: Number(params.comment_id),
|
|
1907
|
+
});
|
|
1908
|
+
return { message: `Deleted comment ${params.comment_id}` };
|
|
1909
|
+
}
|
|
1910
|
+
// PR additional actions
|
|
1911
|
+
async function updatePullRequest(params) {
|
|
1912
|
+
const response = await octokit.pulls.update({
|
|
1913
|
+
owner: params.owner,
|
|
1914
|
+
repo: params.repo,
|
|
1915
|
+
pull_number: Number(params.pull_number),
|
|
1916
|
+
title: params.title,
|
|
1917
|
+
body: params.body,
|
|
1918
|
+
state: params.state,
|
|
1919
|
+
base: params.base,
|
|
1920
|
+
});
|
|
1921
|
+
return response.data;
|
|
1922
|
+
}
|
|
1923
|
+
async function requestReviewers(params) {
|
|
1924
|
+
const response = await octokit.pulls.requestReviewers({
|
|
1925
|
+
owner: params.owner,
|
|
1926
|
+
repo: params.repo,
|
|
1927
|
+
pull_number: Number(params.pull_number),
|
|
1928
|
+
reviewers: params.reviewers,
|
|
1929
|
+
team_reviewers: params.team_reviewers,
|
|
1930
|
+
});
|
|
1931
|
+
return response.data;
|
|
1932
|
+
}
|
|
1933
|
+
// Check runs
|
|
1934
|
+
async function listCheckRuns(params) {
|
|
1935
|
+
const response = await octokit.checks.listForRef({
|
|
1936
|
+
owner: params.owner,
|
|
1937
|
+
repo: params.repo,
|
|
1938
|
+
ref: params.ref,
|
|
1939
|
+
page: Number(params.page) || undefined,
|
|
1940
|
+
per_page: Number(params.per_page) || undefined,
|
|
1941
|
+
});
|
|
1942
|
+
return response.data;
|
|
1943
|
+
}
|
|
1944
|
+
// Forks
|
|
1945
|
+
async function listForks(params) {
|
|
1946
|
+
const response = await octokit.repos.listForks({
|
|
1947
|
+
owner: params.owner,
|
|
1948
|
+
repo: params.repo,
|
|
1949
|
+
sort: params.sort,
|
|
1950
|
+
page: Number(params.page) || undefined,
|
|
1951
|
+
per_page: Number(params.per_page) || undefined,
|
|
1952
|
+
});
|
|
1953
|
+
return response.data;
|
|
1954
|
+
}
|
|
1955
|
+
// Traffic
|
|
1956
|
+
async function getTrafficViews(params) {
|
|
1957
|
+
const response = await octokit.repos.getViews({
|
|
1958
|
+
owner: params.owner,
|
|
1959
|
+
repo: params.repo,
|
|
1960
|
+
per: params.per,
|
|
1961
|
+
});
|
|
1962
|
+
return response.data;
|
|
1963
|
+
}
|
|
1964
|
+
async function getTrafficClones(params) {
|
|
1965
|
+
const response = await octokit.repos.getClones({
|
|
1966
|
+
owner: params.owner,
|
|
1967
|
+
repo: params.repo,
|
|
1968
|
+
per: params.per,
|
|
1969
|
+
});
|
|
1970
|
+
return response.data;
|
|
1971
|
+
}
|
|
1972
|
+
async function getTopReferrers(params) {
|
|
1973
|
+
const response = await octokit.repos.getTopReferrers({
|
|
1974
|
+
owner: params.owner,
|
|
1975
|
+
repo: params.repo,
|
|
1976
|
+
});
|
|
1977
|
+
return response.data;
|
|
1978
|
+
}
|
|
1979
|
+
async function getTopPaths(params) {
|
|
1980
|
+
const response = await octokit.repos.getTopPaths({
|
|
1981
|
+
owner: params.owner,
|
|
1982
|
+
repo: params.repo,
|
|
1983
|
+
});
|
|
1984
|
+
return response.data;
|
|
1985
|
+
}
|
|
1986
|
+
export const githubBackend = {
|
|
1987
|
+
name: 'github',
|
|
1988
|
+
description: 'GitHub API: repositories, files, branches, issues, pull requests, reviews, and search',
|
|
1989
|
+
actions,
|
|
1990
|
+
async execute(action, params) {
|
|
1991
|
+
switch (action) {
|
|
1992
|
+
// Search
|
|
1993
|
+
case 'search_repositories': return searchRepositories(params);
|
|
1994
|
+
case 'search_code': return searchCode(params);
|
|
1995
|
+
case 'search_users': return searchUsers(params);
|
|
1996
|
+
case 'search_issues': return searchIssues(params);
|
|
1997
|
+
// Repository
|
|
1998
|
+
case 'create_repository': return createRepository(params);
|
|
1999
|
+
case 'get_repository': return getRepository(params);
|
|
2000
|
+
case 'update_repository': return updateRepository(params);
|
|
2001
|
+
case 'delete_repository': return deleteRepository(params);
|
|
2002
|
+
case 'list_user_repositories': return listUserRepositories(params);
|
|
2003
|
+
case 'fork_repository': return forkRepository(params);
|
|
2004
|
+
case 'list_forks': return listForks(params);
|
|
2005
|
+
// Files
|
|
2006
|
+
case 'get_file_contents': return getFileContents(params);
|
|
2007
|
+
case 'create_or_update_file': return createOrUpdateFile(params);
|
|
2008
|
+
case 'push_files': return pushFiles(params);
|
|
2009
|
+
case 'get_readme': return getReadme(params);
|
|
2010
|
+
// Branches
|
|
2011
|
+
case 'create_branch': return createBranch(params);
|
|
2012
|
+
case 'list_branches': return listBranches(params);
|
|
2013
|
+
case 'get_branch': return getBranch(params);
|
|
2014
|
+
case 'delete_branch': return deleteBranch(params);
|
|
2015
|
+
case 'list_tags': return listTags(params);
|
|
2016
|
+
// Commits
|
|
2017
|
+
case 'list_commits': return listCommits(params);
|
|
2018
|
+
case 'get_commit': return getCommit(params);
|
|
2019
|
+
case 'compare_commits': return compareCommits(params);
|
|
2020
|
+
// Topics & Languages
|
|
2021
|
+
case 'list_topics': return listTopics(params);
|
|
2022
|
+
case 'update_topics': return updateTopics(params);
|
|
2023
|
+
case 'list_languages': return listLanguages(params);
|
|
2024
|
+
case 'list_contributors': return listContributors(params);
|
|
2025
|
+
// Issues
|
|
2026
|
+
case 'create_issue': return createIssue(params);
|
|
2027
|
+
case 'get_issue': return getIssue(params);
|
|
2028
|
+
case 'list_issues': return listIssues(params);
|
|
2029
|
+
case 'update_issue': return updateIssue(params);
|
|
2030
|
+
case 'add_issue_comment': return addIssueComment(params);
|
|
2031
|
+
case 'list_issue_comments': return listIssueComments(params);
|
|
2032
|
+
case 'update_issue_comment': return updateIssueComment(params);
|
|
2033
|
+
case 'delete_issue_comment': return deleteIssueComment(params);
|
|
2034
|
+
// Pull Requests
|
|
2035
|
+
case 'create_pull_request': return createPullRequest(params);
|
|
2036
|
+
case 'get_pull_request': return getPullRequest(params);
|
|
2037
|
+
case 'list_pull_requests': return listPullRequests(params);
|
|
2038
|
+
case 'update_pull_request': return updatePullRequest(params);
|
|
2039
|
+
case 'merge_pull_request': return mergePullRequest(params);
|
|
2040
|
+
case 'get_pull_request_files': return getPullRequestFiles(params);
|
|
2041
|
+
case 'get_pull_request_status': return getPullRequestStatus(params);
|
|
2042
|
+
case 'get_pull_request_comments': return getPullRequestComments(params);
|
|
2043
|
+
case 'get_pull_request_reviews': return getPullRequestReviews(params);
|
|
2044
|
+
case 'create_pull_request_review': return createPullRequestReview(params);
|
|
2045
|
+
case 'update_pull_request_branch': return updatePullRequestBranch(params);
|
|
2046
|
+
case 'request_reviewers': return requestReviewers(params);
|
|
2047
|
+
// Releases
|
|
2048
|
+
case 'list_releases': return listReleases(params);
|
|
2049
|
+
case 'get_release': return getRelease(params);
|
|
2050
|
+
case 'get_latest_release': return getLatestRelease(params);
|
|
2051
|
+
case 'get_release_by_tag': return getReleaseByTag(params);
|
|
2052
|
+
case 'create_release': return createRelease(params);
|
|
2053
|
+
case 'update_release': return updateRelease(params);
|
|
2054
|
+
case 'delete_release': return deleteRelease(params);
|
|
2055
|
+
case 'list_release_assets': return listReleaseAssets(params);
|
|
2056
|
+
// Labels
|
|
2057
|
+
case 'list_labels': return listLabels(params);
|
|
2058
|
+
case 'create_label': return createLabel(params);
|
|
2059
|
+
case 'update_label': return updateLabel(params);
|
|
2060
|
+
case 'delete_label': return deleteLabel(params);
|
|
2061
|
+
// Milestones
|
|
2062
|
+
case 'list_milestones': return listMilestones(params);
|
|
2063
|
+
case 'create_milestone': return createMilestone(params);
|
|
2064
|
+
case 'update_milestone': return updateMilestone(params);
|
|
2065
|
+
case 'delete_milestone': return deleteMilestone(params);
|
|
2066
|
+
// GitHub Actions
|
|
2067
|
+
case 'list_workflows': return listWorkflows(params);
|
|
2068
|
+
case 'get_workflow': return getWorkflow(params);
|
|
2069
|
+
case 'list_workflow_runs': return listWorkflowRuns(params);
|
|
2070
|
+
case 'get_workflow_run': return getWorkflowRun(params);
|
|
2071
|
+
case 'rerun_workflow': return rerunWorkflow(params);
|
|
2072
|
+
case 'cancel_workflow_run': return cancelWorkflowRun(params);
|
|
2073
|
+
case 'list_workflow_jobs': return listWorkflowJobs(params);
|
|
2074
|
+
case 'trigger_workflow': return triggerWorkflow(params);
|
|
2075
|
+
// Gists
|
|
2076
|
+
case 'list_gists': return listGists(params);
|
|
2077
|
+
case 'create_gist': return createGist(params);
|
|
2078
|
+
case 'get_gist': return getGist(params);
|
|
2079
|
+
case 'update_gist': return updateGist(params);
|
|
2080
|
+
case 'delete_gist': return deleteGist(params);
|
|
2081
|
+
// Stars & Watch
|
|
2082
|
+
case 'star_repository': return starRepository(params);
|
|
2083
|
+
case 'unstar_repository': return unstarRepository(params);
|
|
2084
|
+
case 'list_stargazers': return listStargazers(params);
|
|
2085
|
+
case 'list_watchers': return listWatchers(params);
|
|
2086
|
+
// User
|
|
2087
|
+
case 'get_authenticated_user': return getAuthenticatedUser();
|
|
2088
|
+
case 'get_user': return getUser(params);
|
|
2089
|
+
case 'list_user_orgs': return listUserOrgs(params);
|
|
2090
|
+
// Organizations
|
|
2091
|
+
case 'get_organization': return getOrganization(params);
|
|
2092
|
+
case 'list_org_repositories': return listOrgRepositories(params);
|
|
2093
|
+
case 'list_org_members': return listOrgMembers(params);
|
|
2094
|
+
// Collaborators
|
|
2095
|
+
case 'add_collaborator': return addCollaborator(params);
|
|
2096
|
+
case 'remove_collaborator': return removeCollaborator(params);
|
|
2097
|
+
case 'list_collaborators': return listCollaborators(params);
|
|
2098
|
+
// Webhooks
|
|
2099
|
+
case 'list_webhooks': return listWebhooks(params);
|
|
2100
|
+
case 'create_webhook': return createWebhook(params);
|
|
2101
|
+
case 'delete_webhook': return deleteWebhook(params);
|
|
2102
|
+
// Notifications
|
|
2103
|
+
case 'list_notifications': return listNotifications(params);
|
|
2104
|
+
case 'mark_notifications_read': return markNotificationsRead(params);
|
|
2105
|
+
// Check runs
|
|
2106
|
+
case 'list_check_runs': return listCheckRuns(params);
|
|
2107
|
+
// Traffic
|
|
2108
|
+
case 'get_traffic_views': return getTrafficViews(params);
|
|
2109
|
+
case 'get_traffic_clones': return getTrafficClones(params);
|
|
2110
|
+
case 'get_top_referrers': return getTopReferrers(params);
|
|
2111
|
+
case 'get_top_paths': return getTopPaths(params);
|
|
2112
|
+
default:
|
|
2113
|
+
throw new Error(`Unknown action: ${action}`);
|
|
2114
|
+
}
|
|
2115
|
+
},
|
|
2116
|
+
async healthCheck() {
|
|
2117
|
+
if (!GITHUB_TOKEN) {
|
|
2118
|
+
return { status: 'unavailable', latency_ms: 0, error: 'GITHUB_PERSONAL_ACCESS_TOKEN not configured' };
|
|
2119
|
+
}
|
|
2120
|
+
try {
|
|
2121
|
+
await octokit.users.getAuthenticated();
|
|
2122
|
+
return { status: 'healthy', latency_ms: 0 };
|
|
2123
|
+
}
|
|
2124
|
+
catch (error) {
|
|
2125
|
+
return { status: 'unavailable', latency_ms: 0, error: error instanceof Error ? error.message : String(error) };
|
|
2126
|
+
}
|
|
2127
|
+
},
|
|
2128
|
+
};
|
|
2129
|
+
//# sourceMappingURL=github.js.map
|