@perrylink/dsh-github 0.6.5 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.es.md +40 -18
- package/README.hi.md +40 -18
- package/README.md +42 -18
- package/README.pt.md +40 -18
- package/README.zh.md +42 -18
- package/lib/client.js +168 -202
- package/lib/github.d.ts +51 -9
- package/lib/github.d.ts.map +1 -1
- package/lib/github.js +114 -46
- package/lib/github.js.map +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -1
- package/lib/index.js.map +1 -1
- package/lib/state.d.ts +3 -1
- package/lib/state.d.ts.map +1 -1
- package/lib/state.js +2 -1
- package/lib/state.js.map +1 -1
- package/lib/tools.d.ts +4 -0
- package/lib/tools.d.ts.map +1 -1
- package/lib/tools.js +211 -0
- package/lib/tools.js.map +1 -1
- package/lib/types/client.d.ts +2 -2
- package/package.json +22 -3
package/lib/github.js
CHANGED
|
@@ -61,59 +61,19 @@ function sleep(ms, signal) {
|
|
|
61
61
|
});
|
|
62
62
|
}
|
|
63
63
|
/**
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
* status and current rate-limit facts. Errors never contain the token.
|
|
64
|
+
* Shared authenticated transport over the GitHub API. It owns the
|
|
65
|
+
* Authorization header, the per-request timeout, and the 429/403 rate-limit
|
|
66
|
+
* retry loop; the REST and GraphQL clients both delegate here, so they share
|
|
67
|
+
* one token, one timeout, and one backoff policy. Errors never contain the
|
|
68
|
+
* token.
|
|
70
69
|
*/
|
|
71
|
-
export class
|
|
70
|
+
export class GithubTransport {
|
|
72
71
|
token;
|
|
73
72
|
options;
|
|
74
73
|
constructor(token, options) {
|
|
75
74
|
this.token = token;
|
|
76
75
|
this.options = options;
|
|
77
76
|
}
|
|
78
|
-
/** One JSON request with retry; `GithubError` on any non-2xx status. */
|
|
79
|
-
async requestJson(method, path, options = {}) {
|
|
80
|
-
const response = await this.request(method, path, { ...options, accept: options.accept ?? JSON_ACCEPT });
|
|
81
|
-
const rateLimit = rateLimitFromHeaders(response.headers);
|
|
82
|
-
if (!response.ok) {
|
|
83
|
-
let message = `GitHub API ${response.status} for ${method} ${path}`;
|
|
84
|
-
try {
|
|
85
|
-
const parsed = await response.json();
|
|
86
|
-
if (typeof parsed.message === 'string' && parsed.message.length > 0)
|
|
87
|
-
message = parsed.message;
|
|
88
|
-
}
|
|
89
|
-
catch {
|
|
90
|
-
// Non-JSON error body: keep the status-based message.
|
|
91
|
-
}
|
|
92
|
-
throw new GithubError(response.status, message, rateLimit);
|
|
93
|
-
}
|
|
94
|
-
if (response.status === 204)
|
|
95
|
-
return { status: response.status, data: undefined, rateLimit };
|
|
96
|
-
const data = await response.json();
|
|
97
|
-
return { status: response.status, data, rateLimit };
|
|
98
|
-
}
|
|
99
|
-
/** One text request (the diff media type) with retry. */
|
|
100
|
-
async requestText(method, path, options = {}) {
|
|
101
|
-
const response = await this.request(method, path, { ...options, accept: 'application/vnd.github.diff' });
|
|
102
|
-
const rateLimit = rateLimitFromHeaders(response.headers);
|
|
103
|
-
if (!response.ok) {
|
|
104
|
-
let message = `GitHub API ${response.status} for ${method} ${path}`;
|
|
105
|
-
try {
|
|
106
|
-
const parsed = await response.json();
|
|
107
|
-
if (typeof parsed.message === 'string' && parsed.message.length > 0)
|
|
108
|
-
message = parsed.message;
|
|
109
|
-
}
|
|
110
|
-
catch {
|
|
111
|
-
// Non-JSON error body: keep the status-based message.
|
|
112
|
-
}
|
|
113
|
-
throw new GithubError(response.status, message, rateLimit);
|
|
114
|
-
}
|
|
115
|
-
return { text: await response.text(), rateLimit };
|
|
116
|
-
}
|
|
117
77
|
/** Fetch with Authorization, timeout, and retry (429/403 rate limits always; reads also on network errors and 5xx). */
|
|
118
78
|
async request(method, path, options) {
|
|
119
79
|
let attempt = 0;
|
|
@@ -160,6 +120,114 @@ export class GithubClient {
|
|
|
160
120
|
}
|
|
161
121
|
}
|
|
162
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* Authenticated GitHub REST client: JSON/text requests with the shared
|
|
125
|
+
* transport's 429/403 backoff-retry and rate-limit surfacing.
|
|
126
|
+
*/
|
|
127
|
+
export class GithubClient {
|
|
128
|
+
transport;
|
|
129
|
+
constructor(token, options) {
|
|
130
|
+
this.transport = new GithubTransport(token, options);
|
|
131
|
+
}
|
|
132
|
+
/** One JSON request with retry; `GithubError` on any non-2xx status. */
|
|
133
|
+
async requestJson(method, path, options = {}) {
|
|
134
|
+
const response = await this.transport.request(method, path, { ...options, accept: options.accept ?? JSON_ACCEPT });
|
|
135
|
+
const rateLimit = rateLimitFromHeaders(response.headers);
|
|
136
|
+
if (!response.ok) {
|
|
137
|
+
let message = `GitHub API ${response.status} for ${method} ${path}`;
|
|
138
|
+
try {
|
|
139
|
+
const parsed = await response.json();
|
|
140
|
+
if (typeof parsed.message === 'string' && parsed.message.length > 0)
|
|
141
|
+
message = parsed.message;
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
// Non-JSON error body: keep the status-based message.
|
|
145
|
+
}
|
|
146
|
+
throw new GithubError(response.status, message, rateLimit);
|
|
147
|
+
}
|
|
148
|
+
if (response.status === 204)
|
|
149
|
+
return { status: response.status, data: undefined, rateLimit };
|
|
150
|
+
const data = await response.json();
|
|
151
|
+
return { status: response.status, data, rateLimit };
|
|
152
|
+
}
|
|
153
|
+
/** One text request (the diff media type) with retry. */
|
|
154
|
+
async requestText(method, path, options = {}) {
|
|
155
|
+
const response = await this.transport.request(method, path, { ...options, accept: 'application/vnd.github.diff' });
|
|
156
|
+
const rateLimit = rateLimitFromHeaders(response.headers);
|
|
157
|
+
if (!response.ok) {
|
|
158
|
+
let message = `GitHub API ${response.status} for ${method} ${path}`;
|
|
159
|
+
try {
|
|
160
|
+
const parsed = await response.json();
|
|
161
|
+
if (typeof parsed.message === 'string' && parsed.message.length > 0)
|
|
162
|
+
message = parsed.message;
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
// Non-JSON error body: keep the status-based message.
|
|
166
|
+
}
|
|
167
|
+
throw new GithubError(response.status, message, rateLimit);
|
|
168
|
+
}
|
|
169
|
+
return { text: await response.text(), rateLimit };
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Authenticated GitHub GraphQL client over the shared transport. One POST to
|
|
174
|
+
* `/graphql` carries a document; `query` sends a single document and `batch`
|
|
175
|
+
* merges several aliased sub-queries into one request, sharing the transport's
|
|
176
|
+
* token, timeout, and 429 backoff with the REST client.
|
|
177
|
+
*/
|
|
178
|
+
export class GithubGraphqlClient {
|
|
179
|
+
transport;
|
|
180
|
+
constructor(token, options) {
|
|
181
|
+
this.transport = new GithubTransport(token, options);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Run one GraphQL document. A non-2xx response or a GraphQL `errors` payload
|
|
185
|
+
* fails loud as a {@link GithubError}; the token never appears in messages.
|
|
186
|
+
* @param document - the GraphQL query/mutation document.
|
|
187
|
+
* @param variables - optional variables.
|
|
188
|
+
* @param signal - optional abort signal.
|
|
189
|
+
* @returns the `data` plus rate-limit facts.
|
|
190
|
+
*/
|
|
191
|
+
async query(document, variables = {}, signal) {
|
|
192
|
+
const response = await this.transport.request('POST', '/graphql', { body: { query: document, variables }, accept: JSON_ACCEPT, signal });
|
|
193
|
+
const rateLimit = rateLimitFromHeaders(response.headers);
|
|
194
|
+
if (!response.ok) {
|
|
195
|
+
let message = `GitHub API ${response.status} for POST /graphql`;
|
|
196
|
+
try {
|
|
197
|
+
const parsed = await response.json();
|
|
198
|
+
if (typeof parsed.message === 'string' && parsed.message.length > 0)
|
|
199
|
+
message = parsed.message;
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
202
|
+
// Non-JSON error body: keep the status-based message.
|
|
203
|
+
}
|
|
204
|
+
throw new GithubError(response.status, message, rateLimit);
|
|
205
|
+
}
|
|
206
|
+
const payload = await response.json();
|
|
207
|
+
const firstError = payload.errors?.find(error => typeof error.message === 'string' && error.message.length > 0)?.message;
|
|
208
|
+
if (typeof firstError === 'string') {
|
|
209
|
+
throw new GithubError(200, `GraphQL error: ${firstError}`, rateLimit);
|
|
210
|
+
}
|
|
211
|
+
if (payload.data === undefined || payload.data === null) {
|
|
212
|
+
throw new GithubError(200, 'GraphQL query returned no data', rateLimit);
|
|
213
|
+
}
|
|
214
|
+
return { data: payload.data, rateLimit };
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Batch several sub-queries into ONE GraphQL request using aliases. Each
|
|
218
|
+
* value is a single top-level field selection (e.g.
|
|
219
|
+
* `repository(owner:"o", name:"r") { id }`); the document sent is
|
|
220
|
+
* `query { <alias>: <field> … }` and the result maps each alias to its data.
|
|
221
|
+
* @param aliases - `alias → top-level field selection`.
|
|
222
|
+
* @param variables - optional shared variables.
|
|
223
|
+
* @param signal - optional abort signal.
|
|
224
|
+
* @returns `{ <alias>: data, … }` plus rate-limit facts.
|
|
225
|
+
*/
|
|
226
|
+
async batch(aliases, variables = {}, signal) {
|
|
227
|
+
const fields = Object.entries(aliases).map(([alias, field]) => `${alias}: ${field}`).join('\n');
|
|
228
|
+
return this.query(`query { ${fields} }`, variables, signal);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
163
231
|
/** Build a client from config; resolves the base URL once. */
|
|
164
232
|
export function clientOptionsFromConfig(config, fetchImpl) {
|
|
165
233
|
return {
|
package/lib/github.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,CAAC,MAAM,0BAA0B,CAAA;AAExC,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,UAAU,CAAA;AACpD,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAWzD,OAAO,EAAE,MAAM,EAAE,KAAK,MAAM,IAAI,YAAY,EAAE,MAAM,aAAa,CAAA;AAEjE,eAAO,MAAM,IAAI,eAAe,CAAA;AAEhC,iFAAiF;AACjF,eAAO,MAAM,MAAM,UAA2D,CAAA;AAE9E,OAAO,EAAE,MAAM,EAAE,CAAA;AACjB,YAAY,EAAE,MAAM,IAAI,YAAY,EAAE,CAAA;AAEtC;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,uDAAkC,CAAA;AAExE;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;;;;;GAK/B,CAAA;AAEF,2DAA2D;AAC3D,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,KAAK,CAAC,EAAE,QAAQ,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,GAAE,UAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,CAAC,MAAM,0BAA0B,CAAA;AAExC,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,UAAU,CAAA;AACpD,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAWzD,OAAO,EAAE,MAAM,EAAE,KAAK,MAAM,IAAI,YAAY,EAAE,MAAM,aAAa,CAAA;AAEjE,eAAO,MAAM,IAAI,eAAe,CAAA;AAEhC,iFAAiF;AACjF,eAAO,MAAM,MAAM,UAA2D,CAAA;AAE9E,OAAO,EAAE,MAAM,EAAE,CAAA;AACjB,YAAY,EAAE,MAAM,IAAI,YAAY,EAAE,CAAA;AAEtC;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,uDAAkC,CAAA;AAExE;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;;;;;GAK/B,CAAA;AAEF,2DAA2D;AAC3D,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,KAAK,CAAC,EAAE,QAAQ,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,GAAE,UAAe,QA0BtF;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,QASvD"}
|
package/lib/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import z from '@deepseek-ai/schemastery';
|
|
|
3
3
|
import { createState } from "./state.js";
|
|
4
4
|
import { runGitCli } from "./git.js";
|
|
5
5
|
import { runGhCli } from "./credential.js";
|
|
6
|
-
import { prCreateTool, prMergeTool, prUpdateTool, ghReviewTool, reviewPostTool, ghIssueTool, issueOpenTool, issueCommentTool, issueCloseTool, ghSearchTool, ghRepoTool, ghFileTool, } from "./tools.js";
|
|
6
|
+
import { prCreateTool, prMergeTool, prUpdateTool, ghReviewTool, reviewPostTool, ghIssueTool, issueOpenTool, issueCommentTool, issueCloseTool, ghSearchTool, ghRepoTool, ghFileTool, ghRepoSearchTool, ghChecksTool, } from "./tools.js";
|
|
7
7
|
import { registerApprovalGate } from "./approval-gate.js";
|
|
8
8
|
import { registerCommands } from "./commands.js";
|
|
9
9
|
import { registerCiBot } from "./ci/bot.js";
|
|
@@ -56,6 +56,8 @@ export function applyWithDeps(ctx, config, deps = {}) {
|
|
|
56
56
|
ctx.tools.register(ghSearchTool(state));
|
|
57
57
|
ctx.tools.register(ghRepoTool(state));
|
|
58
58
|
ctx.tools.register(ghFileTool(state));
|
|
59
|
+
ctx.tools.register(ghRepoSearchTool(state));
|
|
60
|
+
ctx.tools.register(ghChecksTool(state));
|
|
59
61
|
if (config.ci.enabled) {
|
|
60
62
|
ctx.tools.register(ciRunTool(state));
|
|
61
63
|
}
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,CAAC,MAAM,0BAA0B,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,SAAS,EAAkB,MAAM,UAAU,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAiB,MAAM,iBAAiB,CAAA;AAEzD,OAAO,EACL,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EACrE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAC1E,UAAU,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,CAAC,MAAM,0BAA0B,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,SAAS,EAAkB,MAAM,UAAU,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAiB,MAAM,iBAAiB,CAAA;AAEzD,OAAO,EACL,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EACrE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAC1E,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,GACvD,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,MAAM,EAA+B,MAAM,aAAa,CAAA;AAEjE,MAAM,CAAC,MAAM,IAAI,GAAG,YAAY,CAAA;AAEhC,iFAAiF;AACjF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,CAAA;AAE9E,OAAO,EAAE,MAAM,EAAE,CAAA;AAGjB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAA;AAExE;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;SAC7E,WAAW,CAAC,qEAAqE,CAAC;IACrF,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;SACvE,WAAW,CAAC,kEAAkE,CAAC;CACnF,CAAC,CAAA;AASF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY,EAAE,MAAoB,EAAE,OAAmB,EAAE;IACrF,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,WAAW,CAAiC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE,IAAI,CAAC,KAAK,IAAI,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IAEtM,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA;IACvC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAA;IACtC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA;IACvC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA;IACvC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAA;IACzC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAA;IACtC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;IACxC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAA;IAC3C,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAA;IACzC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA;IACvC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;IACrC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;IACrC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAA;IAC3C,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA;IACvC,IAAI,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;QACtB,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;IACtC,CAAC;IAED,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;IAClD,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;IACjE,IAAI,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;QACtB,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;IAC3D,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAC,GAAY,EAAE,MAAoB;IACtD,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAC1B,wEAAwE;IACxE,sEAAsE;IACtE,kEAAkE;IAClE,4CAA4C;IAC5C,GAAG,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE;QACvC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,yBAAyB,EAAE,oBAAoB,CAAC,CAAA;IAChF,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
package/lib/state.d.ts
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* @module dsh-github/state
|
|
10
10
|
*/
|
|
11
11
|
import type { CredentialProvider } from '@deepseek-ai/dsh-credentials';
|
|
12
|
-
import { GithubClient, type RateLimitInfo } from './github.js';
|
|
12
|
+
import { GithubClient, GithubGraphqlClient, type RateLimitInfo } from './github.js';
|
|
13
13
|
import { type GitRunner } from './git.js';
|
|
14
14
|
import { type GhRunner, type TokenResolution } from './credential.js';
|
|
15
15
|
import type { SubagentsService } from './types.js';
|
|
@@ -59,6 +59,8 @@ export interface GithubState {
|
|
|
59
59
|
resolveToken(signal?: AbortSignal): Promise<TokenResolution>;
|
|
60
60
|
/** Builds an authenticated client for one operation. */
|
|
61
61
|
client(token: string): GithubClient;
|
|
62
|
+
/** Builds an authenticated GraphQL client for one operation. */
|
|
63
|
+
graphqlClient(token: string): GithubGraphqlClient;
|
|
62
64
|
/** Resolves `owner/repo` from an explicit value, config, or git origin. */
|
|
63
65
|
resolveRepo(ownerRepo: string | undefined, signal?: AbortSignal): Promise<RepoResolution>;
|
|
64
66
|
/** Parses `123`, `#123`, `owner/repo#123`, or a pull-request URL. */
|
package/lib/state.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,YAAY,EAA2B,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
|
package/lib/state.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GithubClient, clientOptionsFromConfig } from "./github.js";
|
|
1
|
+
import { GithubClient, GithubGraphqlClient, clientOptionsFromConfig } from "./github.js";
|
|
2
2
|
import { repoFromRemoteUrl } from "./git.js";
|
|
3
3
|
import { resolveToken } from "./credential.js";
|
|
4
4
|
import { CiConfig } from "./config.js";
|
|
@@ -32,6 +32,7 @@ export function createState(ctx, config, runGit, runGh, fetchImpl) {
|
|
|
32
32
|
isCiDriver: process.env.DSH_GITHUB_CI_DRIVER === '1',
|
|
33
33
|
resolveToken: (signal) => resolveToken(ctx.credentials, normalizedConfig.tokenSource, normalizedConfig.tokenRef, runGh, signal),
|
|
34
34
|
client: (token) => new GithubClient(token, clientOptions),
|
|
35
|
+
graphqlClient: (token) => new GithubGraphqlClient(token, clientOptions),
|
|
35
36
|
resolveRepo: (ownerRepo, signal) => resolveRepo(state, ownerRepo, signal),
|
|
36
37
|
parsePrRef: parsePrRef,
|
|
37
38
|
rememberRecord: (id, record) => {
|
package/lib/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAsB,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
|
package/lib/tools.d.ts
CHANGED
|
@@ -89,4 +89,8 @@ export declare function prUpdateTool(state: GithubState): import("@deepseek-ai/d
|
|
|
89
89
|
export declare function ghRepoTool(state: GithubState): import("@deepseek-ai/dsh-tools").ToolDefinition;
|
|
90
90
|
/** `gh_file`: read one file from a repository (read; concurrency-safe). */
|
|
91
91
|
export declare function ghFileTool(state: GithubState): import("@deepseek-ai/dsh-tools").ToolDefinition;
|
|
92
|
+
/** `gh_repo_search`: GraphQL repository search (read; separate search quota). */
|
|
93
|
+
export declare function ghRepoSearchTool(state: GithubState): import("@deepseek-ai/dsh-tools").ToolDefinition;
|
|
94
|
+
/** `gh_checks`: GraphQL PR status-check rollup (read; batched GraphQL contexts). */
|
|
95
|
+
export declare function ghChecksTool(state: GithubState): import("@deepseek-ai/dsh-tools").ToolDefinition;
|
|
92
96
|
//# sourceMappingURL=tools.d.ts.map
|
package/lib/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAkB,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAA;AAClF,OAAO,EAMW,KAAK,gBAAgB,EAEtC,MAAM,cAAc,CAAA;AAOrB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;CAKpB,CAAA;AAEV,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAcf,CAAA;AAEV,wDAAwD;AACxD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,cAAc,GAAG,gBAAgB,CAEzH;AA4FD,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,mDAoG9C;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,mDA8N9C;AAqCD,8FAA8F;AAC9F,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,mDA0FhD;AAED,kEAAkE;AAClE,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,mDAgI7C;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,mDA2D/C;AAED,6FAA6F;AAC7F,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,mDAoDlD;AAED,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,mDAyDhD;AAID,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,mDAiG9C;AAED,yEAAyE;AACzE,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,mDAqG7C;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,mDAgF9C;AAED,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,mDAuF5C;AAYD,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,mDAkF5C"}
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAkB,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAA;AAClF,OAAO,EAMW,KAAK,gBAAgB,EAEtC,MAAM,cAAc,CAAA;AAOrB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;CAKpB,CAAA;AAEV,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAcf,CAAA;AAEV,wDAAwD;AACxD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,cAAc,GAAG,gBAAgB,CAEzH;AA4FD,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,mDAoG9C;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,mDA8N9C;AAqCD,8FAA8F;AAC9F,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,mDA0FhD;AAED,kEAAkE;AAClE,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,mDAgI7C;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,mDA2D/C;AAED,6FAA6F;AAC7F,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,mDAoDlD;AAED,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,mDAyDhD;AAID,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,mDAiG9C;AAED,yEAAyE;AACzE,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,mDAqG7C;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,mDAgF9C;AAED,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,mDAuF5C;AAYD,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,mDAkF5C;AAiCD,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,mDAgFlD;AAqBD,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,mDA0H9C"}
|
package/lib/tools.js
CHANGED
|
@@ -1297,4 +1297,215 @@ export function ghFileTool(state) {
|
|
|
1297
1297
|
},
|
|
1298
1298
|
});
|
|
1299
1299
|
}
|
|
1300
|
+
// ── GraphQL tools (search + PR checks) ──────────────────────────────────────
|
|
1301
|
+
/** Split an `owner/repo` pair into its two parts (assumes the repo already validated). */
|
|
1302
|
+
function ownerNameOf(repo) {
|
|
1303
|
+
const index = repo.indexOf('/');
|
|
1304
|
+
return { owner: repo.slice(0, index), name: repo.slice(index + 1) };
|
|
1305
|
+
}
|
|
1306
|
+
/** `gh_repo_search`: GraphQL repository search (read; separate search quota). */
|
|
1307
|
+
export function ghRepoSearchTool(state) {
|
|
1308
|
+
return defineTool({
|
|
1309
|
+
name: 'gh_repo_search',
|
|
1310
|
+
description: 'Search GitHub repositories by name, description, or README (GitHub search syntax, e.g. '
|
|
1311
|
+
+ '"dsh-plugin in:name,description"). Backed by the GraphQL search API; read-only and concurrency-safe. '
|
|
1312
|
+
+ 'Uses the separate search quota.',
|
|
1313
|
+
parameters: {
|
|
1314
|
+
q: { type: 'string', required: true, description: 'Repository search query in GitHub search syntax.' },
|
|
1315
|
+
perPage: { type: 'integer', description: 'Max results. Defaults to 20, capped at 50.' },
|
|
1316
|
+
},
|
|
1317
|
+
output: {
|
|
1318
|
+
schema: {
|
|
1319
|
+
oneOf: [{
|
|
1320
|
+
type: 'object',
|
|
1321
|
+
additionalProperties: false,
|
|
1322
|
+
properties: {
|
|
1323
|
+
query: { type: 'string', required: true },
|
|
1324
|
+
total: { type: 'integer', required: true },
|
|
1325
|
+
items: {
|
|
1326
|
+
type: 'array',
|
|
1327
|
+
required: true,
|
|
1328
|
+
items: {
|
|
1329
|
+
type: 'object',
|
|
1330
|
+
additionalProperties: false,
|
|
1331
|
+
properties: {
|
|
1332
|
+
repo: { type: 'string', required: true },
|
|
1333
|
+
description: { type: 'string', required: true },
|
|
1334
|
+
stars: { type: 'integer', required: true },
|
|
1335
|
+
language: { type: 'string', required: true },
|
|
1336
|
+
url: { type: 'string', required: true },
|
|
1337
|
+
},
|
|
1338
|
+
},
|
|
1339
|
+
},
|
|
1340
|
+
rateLimit: RATE_LIMIT_SCHEMA,
|
|
1341
|
+
},
|
|
1342
|
+
}, ERROR_SCHEMA],
|
|
1343
|
+
},
|
|
1344
|
+
render: (_args, value) => {
|
|
1345
|
+
if ('status' in value) {
|
|
1346
|
+
return [{ type: 'text', text: `${value.message}${value.guidance !== undefined ? `\n${value.guidance}` : ''}` }];
|
|
1347
|
+
}
|
|
1348
|
+
if (value.items.length === 0)
|
|
1349
|
+
return [{ type: 'text', text: `no repositories for "${value.query}"` }];
|
|
1350
|
+
return [{
|
|
1351
|
+
type: 'text',
|
|
1352
|
+
text: value.items.map(item => `${item.repo} ★${item.stars} [${item.language}] — ${item.description || '(no description)'}\n${item.url}`).join('\n\n'),
|
|
1353
|
+
}];
|
|
1354
|
+
},
|
|
1355
|
+
presentationMeta: identityMeta,
|
|
1356
|
+
},
|
|
1357
|
+
isConcurrencySafe: () => true,
|
|
1358
|
+
async execute(args, exec) {
|
|
1359
|
+
const q = args.q.trim();
|
|
1360
|
+
if (q.length === 0)
|
|
1361
|
+
return errorValue('invalid-args', 'q must not be empty');
|
|
1362
|
+
const token = await state.resolveToken(exec.signal);
|
|
1363
|
+
if (!token.ok)
|
|
1364
|
+
return errorValue(token.error.code, token.error.message, token.error.guidance);
|
|
1365
|
+
const perPage = Math.min(Math.max(args.perPage ?? 20, 1), 50);
|
|
1366
|
+
const document = 'query($q: String!, $n: Int!) { search(query: $q, type: REPOSITORY, first: $n) { repositoryCount edges { node { ... on Repository { nameWithOwner description stargazerCount url primaryLanguage { name } } } } } }';
|
|
1367
|
+
try {
|
|
1368
|
+
const response = await state.graphqlClient(token.token.value).query(document, { q, n: perPage }, exec.signal);
|
|
1369
|
+
const search = response.data.search;
|
|
1370
|
+
const value = {
|
|
1371
|
+
query: q,
|
|
1372
|
+
total: search.repositoryCount,
|
|
1373
|
+
items: search.edges.map(edge => ({
|
|
1374
|
+
repo: edge.node.nameWithOwner,
|
|
1375
|
+
description: edge.node.description ?? '',
|
|
1376
|
+
stars: edge.node.stargazerCount,
|
|
1377
|
+
language: edge.node.primaryLanguage?.name ?? '',
|
|
1378
|
+
url: edge.node.url,
|
|
1379
|
+
})),
|
|
1380
|
+
rateLimit: rateLimitValue(response.rateLimit),
|
|
1381
|
+
};
|
|
1382
|
+
return value;
|
|
1383
|
+
}
|
|
1384
|
+
catch (error) {
|
|
1385
|
+
return githubErrorValue(error);
|
|
1386
|
+
}
|
|
1387
|
+
},
|
|
1388
|
+
});
|
|
1389
|
+
}
|
|
1390
|
+
/** `gh_checks`: GraphQL PR status-check rollup (read; batched GraphQL contexts). */
|
|
1391
|
+
export function ghChecksTool(state) {
|
|
1392
|
+
return defineTool({
|
|
1393
|
+
name: 'gh_checks',
|
|
1394
|
+
description: 'Read a pull request\'s CI status checks (check runs and commit statuses) via the GraphQL API. '
|
|
1395
|
+
+ 'Returns the rollup state and one entry per check with its status/conclusion and URL. Read-only and '
|
|
1396
|
+
+ 'concurrency-safe. `pr` accepts a number, "#number", "owner/repo#number", or a pull-request URL.',
|
|
1397
|
+
parameters: {
|
|
1398
|
+
pr: { type: 'string', required: true, description: 'PR number, #number, owner/repo#number, or pull URL.' },
|
|
1399
|
+
},
|
|
1400
|
+
output: {
|
|
1401
|
+
schema: {
|
|
1402
|
+
oneOf: [{
|
|
1403
|
+
type: 'object',
|
|
1404
|
+
additionalProperties: false,
|
|
1405
|
+
properties: {
|
|
1406
|
+
repo: { type: 'string', required: true },
|
|
1407
|
+
number: { type: 'integer', required: true },
|
|
1408
|
+
title: { type: 'string', required: true },
|
|
1409
|
+
state: { type: 'string', required: true },
|
|
1410
|
+
rollup: { type: 'string', required: true },
|
|
1411
|
+
items: {
|
|
1412
|
+
type: 'array',
|
|
1413
|
+
required: true,
|
|
1414
|
+
items: {
|
|
1415
|
+
type: 'object',
|
|
1416
|
+
additionalProperties: false,
|
|
1417
|
+
properties: {
|
|
1418
|
+
name: { type: 'string', required: true },
|
|
1419
|
+
state: { type: 'string', required: true },
|
|
1420
|
+
conclusion: { type: 'string' },
|
|
1421
|
+
url: { type: 'string' },
|
|
1422
|
+
},
|
|
1423
|
+
},
|
|
1424
|
+
},
|
|
1425
|
+
rateLimit: RATE_LIMIT_SCHEMA,
|
|
1426
|
+
},
|
|
1427
|
+
}, ERROR_SCHEMA],
|
|
1428
|
+
},
|
|
1429
|
+
render: (_args, value) => {
|
|
1430
|
+
if ('status' in value) {
|
|
1431
|
+
return [{ type: 'text', text: `${value.message}${value.guidance !== undefined ? `\n${value.guidance}` : ''}` }];
|
|
1432
|
+
}
|
|
1433
|
+
const lines = [`${value.repo}#${value.number} "${value.title}" — rollup ${value.rollup} (${value.state})`];
|
|
1434
|
+
if (value.items.length === 0)
|
|
1435
|
+
lines.push('(no checks reported)');
|
|
1436
|
+
for (const item of value.items) {
|
|
1437
|
+
lines.push(`- ${item.name}: ${item.state}${item.conclusion !== null ? ` / ${item.conclusion}` : ''}${item.url !== null ? ` — ${item.url}` : ''}`);
|
|
1438
|
+
}
|
|
1439
|
+
return [{ type: 'text', text: lines.join('\n') }];
|
|
1440
|
+
},
|
|
1441
|
+
presentationMeta: identityMeta,
|
|
1442
|
+
},
|
|
1443
|
+
isConcurrencySafe: () => true,
|
|
1444
|
+
async execute(args, exec) {
|
|
1445
|
+
const ref = state.parsePrRef(args.pr);
|
|
1446
|
+
if (ref === null)
|
|
1447
|
+
return errorValue('invalid-pr', `"${args.pr}" is not a PR reference`, 'Use a number, "#number", "owner/repo#number", or a pull URL.');
|
|
1448
|
+
const repoResult = ref.repo !== undefined ? { ok: true, repo: ref.repo } : await state.resolveRepo(undefined, exec.signal);
|
|
1449
|
+
if (!repoResult.ok)
|
|
1450
|
+
return errorValue(repoResult.code, repoResult.message, repoResult.guidance);
|
|
1451
|
+
const token = await state.resolveToken(exec.signal);
|
|
1452
|
+
if (!token.ok)
|
|
1453
|
+
return errorValue(token.error.code, token.error.message, token.error.guidance);
|
|
1454
|
+
const { owner, name } = ownerNameOf(repoResult.repo);
|
|
1455
|
+
const document = [
|
|
1456
|
+
'query($owner: String!, $name: String!, $number: Int!) {',
|
|
1457
|
+
' repository(owner: $owner, name: $name) {',
|
|
1458
|
+
' pullRequest(number: $number) {',
|
|
1459
|
+
' number title state',
|
|
1460
|
+
' commits(last: 1) {',
|
|
1461
|
+
' nodes {',
|
|
1462
|
+
' commit {',
|
|
1463
|
+
' statusCheckRollup {',
|
|
1464
|
+
' state',
|
|
1465
|
+
' contexts(first: 100) {',
|
|
1466
|
+
' nodes {',
|
|
1467
|
+
' __typename',
|
|
1468
|
+
' ... on CheckRun { name status conclusion detailsUrl }',
|
|
1469
|
+
' ... on StatusContext { context state description targetUrl }',
|
|
1470
|
+
' }',
|
|
1471
|
+
' }',
|
|
1472
|
+
' }',
|
|
1473
|
+
' }',
|
|
1474
|
+
' }',
|
|
1475
|
+
' }',
|
|
1476
|
+
' }',
|
|
1477
|
+
' }',
|
|
1478
|
+
'}',
|
|
1479
|
+
].join('\n');
|
|
1480
|
+
try {
|
|
1481
|
+
const response = await state.graphqlClient(token.token.value).query(document, { owner, name, number: ref.number }, exec.signal);
|
|
1482
|
+
const pr = response.data.repository.pullRequest;
|
|
1483
|
+
if (pr === null)
|
|
1484
|
+
return errorValue('not-found', `pull request #${ref.number} not found in ${repoResult.repo}`);
|
|
1485
|
+
const rollup = pr.commits.nodes[0]?.commit.statusCheckRollup;
|
|
1486
|
+
const value = {
|
|
1487
|
+
repo: repoResult.repo,
|
|
1488
|
+
number: pr.number,
|
|
1489
|
+
title: pr.title,
|
|
1490
|
+
state: pr.state,
|
|
1491
|
+
rollup: rollup?.state ?? 'UNKNOWN',
|
|
1492
|
+
items: (rollup?.contexts.nodes ?? []).map(node => {
|
|
1493
|
+
const url = node.detailsUrl ?? node.targetUrl;
|
|
1494
|
+
return {
|
|
1495
|
+
name: node.name ?? node.context ?? 'unknown',
|
|
1496
|
+
state: node.status ?? node.state ?? 'unknown',
|
|
1497
|
+
...(node.conclusion == null ? {} : { conclusion: node.conclusion }),
|
|
1498
|
+
...(url == null ? {} : { url }),
|
|
1499
|
+
};
|
|
1500
|
+
}),
|
|
1501
|
+
rateLimit: rateLimitValue(response.rateLimit),
|
|
1502
|
+
};
|
|
1503
|
+
return value;
|
|
1504
|
+
}
|
|
1505
|
+
catch (error) {
|
|
1506
|
+
return githubErrorValue(error);
|
|
1507
|
+
}
|
|
1508
|
+
},
|
|
1509
|
+
});
|
|
1510
|
+
}
|
|
1300
1511
|
//# sourceMappingURL=tools.js.map
|