@ghx-dev/core 0.1.2 → 0.2.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/.claude-plugin/plugin.json +21 -0
- package/README.md +12 -15
- package/dist/cards/issue.assignees.add.yaml +50 -0
- package/dist/cards/issue.assignees.remove.yaml +50 -0
- package/dist/cards/issue.assignees.set.yaml +47 -0
- package/dist/cards/issue.close.yaml +16 -2
- package/dist/cards/issue.comments.create.yaml +16 -2
- package/dist/cards/issue.create.yaml +11 -0
- package/dist/cards/issue.delete.yaml +16 -2
- package/dist/cards/issue.labels.add.yaml +48 -0
- package/dist/cards/issue.labels.remove.yaml +50 -0
- package/dist/cards/issue.labels.set.yaml +47 -0
- package/dist/cards/issue.milestone.clear.yaml +40 -0
- package/dist/cards/issue.milestone.set.yaml +23 -4
- package/dist/{core/registry/cards/issue.blocked_by.add.yaml → cards/issue.relations.blocked_by.add.yaml} +3 -2
- package/dist/cards/{issue.blocked_by.remove.yaml → issue.relations.blocked_by.remove.yaml} +1 -1
- package/dist/cards/{issue.parent.remove.yaml → issue.relations.parent.remove.yaml} +11 -1
- package/dist/{core/registry/cards/issue.parent.set.yaml → cards/issue.relations.parent.set.yaml} +3 -2
- package/dist/{core/registry/cards/issue.linked_prs.list.yaml → cards/issue.relations.prs.list.yaml} +1 -1
- package/dist/cards/{issue.relations.get.yaml → issue.relations.view.yaml} +1 -1
- package/dist/cards/issue.reopen.yaml +16 -2
- package/dist/cards/issue.update.yaml +16 -2
- package/dist/cards/issue.view.yaml +7 -5
- package/dist/cards/{pr.review.submit_approve.yaml → pr.assignees.add.yaml} +12 -9
- package/dist/cards/pr.assignees.remove.yaml +29 -0
- package/dist/{core/registry/cards/pr.status.checks.yaml → cards/pr.checks.list.yaml} +15 -2
- package/dist/{core/registry/cards/pr.checks.rerun_all.yaml → cards/pr.checks.rerun.all.yaml} +2 -4
- package/dist/{core/registry/cards/pr.checks.rerun_failed.yaml → cards/pr.checks.rerun.failed.yaml} +3 -5
- package/dist/cards/pr.create.yaml +30 -0
- package/dist/cards/{pr.diff.list_files.yaml → pr.diff.files.yaml} +1 -1
- package/dist/cards/{pr.ready_for_review.set.yaml → pr.diff.view.yaml} +6 -8
- package/dist/{core/registry/cards/pr.mergeability.view.yaml → cards/pr.merge.status.yaml} +6 -3
- package/dist/{core/registry/cards/pr.merge.execute.yaml → cards/pr.merge.yaml} +1 -1
- package/dist/cards/pr.reviews.list.yaml +1 -1
- package/dist/cards/{pr.reviewers.request.yaml → pr.reviews.request.yaml} +1 -1
- package/dist/cards/pr.reviews.submit.yaml +67 -0
- package/dist/cards/{pr.comments.list.yaml → pr.threads.list.yaml} +2 -2
- package/dist/cards/{pr.comment.reply.yaml → pr.threads.reply.yaml} +4 -2
- package/dist/cards/{pr.comment.resolve.yaml → pr.threads.resolve.yaml} +1 -1
- package/dist/cards/{pr.comment.unresolve.yaml → pr.threads.unresolve.yaml} +1 -1
- package/dist/cards/pr.update.yaml +29 -0
- package/dist/cards/pr.view.yaml +7 -5
- package/dist/{core/registry/cards/project_v2.item.field.update.yaml → cards/project_v2.items.field.update.yaml} +1 -1
- package/dist/{core/registry/cards/project_v2.item.add_issue.yaml → cards/project_v2.items.issue.add.yaml} +1 -1
- package/dist/cards/project_v2.items.issue.remove.yaml +23 -0
- package/dist/{core/registry/cards/project_v2.org.get.yaml → cards/project_v2.org.view.yaml} +1 -1
- package/dist/cards/{project_v2.user.get.yaml → project_v2.user.view.yaml} +1 -1
- package/dist/{core/registry/cards/release.create_draft.yaml → cards/release.create.yaml} +1 -1
- package/dist/cards/{release.publish_draft.yaml → release.publish.yaml} +1 -1
- package/dist/{core/registry/cards/release.get.yaml → cards/release.view.yaml} +1 -1
- package/dist/cards/repo.view.yaml +2 -4
- package/dist/cards/{workflow_dispatch.run.yaml → workflow.dispatch.yaml} +1 -1
- package/dist/cards/{workflow_job.logs.get.yaml → workflow.job.logs.raw.yaml} +2 -2
- package/dist/{core/registry/cards/workflow_job.logs.analyze.yaml → cards/workflow.job.logs.view.yaml} +1 -1
- package/dist/{core/registry/cards/workflow_run.artifacts.list.yaml → cards/workflow.run.artifacts.list.yaml} +1 -1
- package/dist/cards/{workflow_run.cancel.yaml → workflow.run.cancel.yaml} +1 -1
- package/dist/cards/{workflow_run.rerun_all.yaml → workflow.run.rerun.all.yaml} +3 -3
- package/dist/{core/registry/cards/workflow_run.rerun_failed.yaml → cards/workflow.run.rerun.failed.yaml} +3 -3
- package/dist/{core/registry/cards/workflow_run.get.yaml → cards/workflow.run.view.yaml} +19 -4
- package/dist/cards/{workflow_runs.list.yaml → workflow.runs.list.yaml} +1 -1
- package/dist/cards/{workflow.get.yaml → workflow.view.yaml} +2 -2
- package/dist/chunk-3DU2WHXF.js +15 -0
- package/dist/chunk-3DU2WHXF.js.map +1 -0
- package/dist/chunk-3P3KHWFU.js +5779 -0
- package/dist/chunk-3P3KHWFU.js.map +1 -0
- package/dist/chunk-BIWBJA2F.js +228 -0
- package/dist/chunk-BIWBJA2F.js.map +1 -0
- package/dist/chunk-HEHONZTO.js +121 -0
- package/dist/chunk-HEHONZTO.js.map +1 -0
- package/dist/chunk-Q7RCIK2C.js +773 -0
- package/dist/chunk-Q7RCIK2C.js.map +1 -0
- package/dist/chunk-R3CBGJZX.js +12 -0
- package/dist/chunk-R3CBGJZX.js.map +1 -0
- package/dist/chunk-TDABI6C7.js +167 -0
- package/dist/chunk-TDABI6C7.js.map +1 -0
- package/dist/chunk-TPQYVCAS.js +15 -0
- package/dist/chunk-TPQYVCAS.js.map +1 -0
- package/dist/cli/index.js +202 -21
- package/dist/cli/index.js.map +1 -1
- package/dist/core/registry/cards/issue.assignees.add.yaml +50 -0
- package/dist/core/registry/cards/issue.assignees.remove.yaml +50 -0
- package/dist/core/registry/cards/issue.assignees.set.yaml +47 -0
- package/dist/core/registry/cards/issue.close.yaml +16 -2
- package/dist/core/registry/cards/issue.comments.create.yaml +16 -2
- package/dist/core/registry/cards/issue.create.yaml +11 -0
- package/dist/core/registry/cards/issue.delete.yaml +16 -2
- package/dist/core/registry/cards/issue.labels.add.yaml +48 -0
- package/dist/core/registry/cards/issue.labels.remove.yaml +50 -0
- package/dist/core/registry/cards/issue.labels.set.yaml +47 -0
- package/dist/core/registry/cards/issue.milestone.clear.yaml +40 -0
- package/dist/core/registry/cards/issue.milestone.set.yaml +23 -4
- package/dist/{cards/issue.blocked_by.add.yaml → core/registry/cards/issue.relations.blocked_by.add.yaml} +3 -2
- package/dist/core/registry/cards/{issue.blocked_by.remove.yaml → issue.relations.blocked_by.remove.yaml} +1 -1
- package/dist/core/registry/cards/{issue.parent.remove.yaml → issue.relations.parent.remove.yaml} +11 -1
- package/dist/{cards/issue.parent.set.yaml → core/registry/cards/issue.relations.parent.set.yaml} +3 -2
- package/dist/{cards/issue.linked_prs.list.yaml → core/registry/cards/issue.relations.prs.list.yaml} +1 -1
- package/dist/core/registry/cards/{issue.relations.get.yaml → issue.relations.view.yaml} +1 -1
- package/dist/core/registry/cards/issue.reopen.yaml +16 -2
- package/dist/core/registry/cards/issue.update.yaml +16 -2
- package/dist/core/registry/cards/issue.view.yaml +7 -5
- package/dist/core/registry/cards/pr.assignees.add.yaml +29 -0
- package/dist/core/registry/cards/pr.assignees.remove.yaml +29 -0
- package/dist/{cards/pr.status.checks.yaml → core/registry/cards/pr.checks.list.yaml} +15 -2
- package/dist/{cards/pr.checks.rerun_all.yaml → core/registry/cards/pr.checks.rerun.all.yaml} +2 -4
- package/dist/{cards/pr.checks.rerun_failed.yaml → core/registry/cards/pr.checks.rerun.failed.yaml} +3 -5
- package/dist/core/registry/cards/pr.create.yaml +30 -0
- package/dist/core/registry/cards/{pr.diff.list_files.yaml → pr.diff.files.yaml} +1 -1
- package/dist/core/registry/cards/{pr.ready_for_review.set.yaml → pr.diff.view.yaml} +6 -8
- package/dist/{cards/pr.mergeability.view.yaml → core/registry/cards/pr.merge.status.yaml} +6 -3
- package/dist/{cards/pr.merge.execute.yaml → core/registry/cards/pr.merge.yaml} +1 -1
- package/dist/core/registry/cards/pr.reviews.list.yaml +1 -1
- package/dist/core/registry/cards/{pr.reviewers.request.yaml → pr.reviews.request.yaml} +1 -1
- package/dist/core/registry/cards/pr.reviews.submit.yaml +67 -0
- package/dist/core/registry/cards/{pr.comments.list.yaml → pr.threads.list.yaml} +2 -2
- package/dist/core/registry/cards/{pr.comment.reply.yaml → pr.threads.reply.yaml} +4 -2
- package/dist/core/registry/cards/{pr.comment.resolve.yaml → pr.threads.resolve.yaml} +1 -1
- package/dist/core/registry/cards/{pr.comment.unresolve.yaml → pr.threads.unresolve.yaml} +1 -1
- package/dist/core/registry/cards/pr.update.yaml +29 -0
- package/dist/core/registry/cards/pr.view.yaml +7 -5
- package/dist/{cards/project_v2.item.field.update.yaml → core/registry/cards/project_v2.items.field.update.yaml} +1 -1
- package/dist/{cards/project_v2.item.add_issue.yaml → core/registry/cards/project_v2.items.issue.add.yaml} +1 -1
- package/dist/core/registry/cards/project_v2.items.issue.remove.yaml +23 -0
- package/dist/{cards/project_v2.org.get.yaml → core/registry/cards/project_v2.org.view.yaml} +1 -1
- package/dist/core/registry/cards/{project_v2.user.get.yaml → project_v2.user.view.yaml} +1 -1
- package/dist/{cards/release.create_draft.yaml → core/registry/cards/release.create.yaml} +1 -1
- package/dist/core/registry/cards/{release.publish_draft.yaml → release.publish.yaml} +1 -1
- package/dist/{cards/release.get.yaml → core/registry/cards/release.view.yaml} +1 -1
- package/dist/core/registry/cards/repo.view.yaml +2 -4
- package/dist/core/registry/cards/{workflow_dispatch.run.yaml → workflow.dispatch.yaml} +1 -1
- package/dist/core/registry/cards/{workflow_job.logs.get.yaml → workflow.job.logs.raw.yaml} +2 -2
- package/dist/{cards/workflow_job.logs.analyze.yaml → core/registry/cards/workflow.job.logs.view.yaml} +1 -1
- package/dist/{cards/workflow_run.artifacts.list.yaml → core/registry/cards/workflow.run.artifacts.list.yaml} +1 -1
- package/dist/core/registry/cards/{workflow_run.cancel.yaml → workflow.run.cancel.yaml} +1 -1
- package/dist/core/registry/cards/{workflow_run.rerun_all.yaml → workflow.run.rerun.all.yaml} +3 -3
- package/dist/{cards/workflow_run.rerun_failed.yaml → core/registry/cards/workflow.run.rerun.failed.yaml} +3 -3
- package/dist/{cards/workflow_run.get.yaml → core/registry/cards/workflow.run.view.yaml} +19 -4
- package/dist/core/registry/cards/{workflow_runs.list.yaml → workflow.runs.list.yaml} +1 -1
- package/dist/core/registry/cards/{workflow.get.yaml → workflow.view.yaml} +2 -2
- package/dist/index.d.ts +374 -35
- package/dist/index.js +33 -5
- package/dist/index.js.map +1 -1
- package/dist/issue-mutations-FJNZW7L5.js +668 -0
- package/dist/issue-mutations-FJNZW7L5.js.map +1 -0
- package/dist/issue-queries-GRA4MKPD.js +208 -0
- package/dist/issue-queries-GRA4MKPD.js.map +1 -0
- package/dist/pr-mutations-UG67YOF5.js +344 -0
- package/dist/pr-mutations-UG67YOF5.js.map +1 -0
- package/dist/pr-queries-UOEOXIJQ.js +331 -0
- package/dist/pr-queries-UOEOXIJQ.js.map +1 -0
- package/dist/repo-JDUHFPZF.js +66 -0
- package/dist/repo-JDUHFPZF.js.map +1 -0
- package/package.json +16 -13
- package/skills/using-ghx/SKILL.md +61 -0
- package/dist/agent.d.ts +0 -32
- package/dist/agent.js +0 -36
- package/dist/agent.js.map +0 -1
- package/dist/cards/check_run.annotations.list.yaml +0 -35
- package/dist/cards/issue.assignees.update.yaml +0 -27
- package/dist/cards/issue.labels.update.yaml +0 -27
- package/dist/cards/pr.assignees.update.yaml +0 -38
- package/dist/cards/pr.checks.get_failed.yaml +0 -42
- package/dist/cards/pr.review.submit_comment.yaml +0 -26
- package/dist/cards/pr.review.submit_request_changes.yaml +0 -26
- package/dist/cards/workflow_run.jobs.list.yaml +0 -35
- package/dist/chunk-2FCPR3XZ.js +0 -54
- package/dist/chunk-2FCPR3XZ.js.map +0 -1
- package/dist/chunk-RDUPMVHG.js +0 -4139
- package/dist/chunk-RDUPMVHG.js.map +0 -1
- package/dist/chunk-UN5YHUNK.js +0 -245
- package/dist/chunk-UN5YHUNK.js.map +0 -1
- package/dist/cli/assets/skills/ghx/SKILL.md +0 -57
- package/dist/core/registry/cards/check_run.annotations.list.yaml +0 -35
- package/dist/core/registry/cards/issue.assignees.update.yaml +0 -27
- package/dist/core/registry/cards/issue.labels.update.yaml +0 -27
- package/dist/core/registry/cards/pr.assignees.update.yaml +0 -38
- package/dist/core/registry/cards/pr.checks.get_failed.yaml +0 -42
- package/dist/core/registry/cards/pr.review.submit_approve.yaml +0 -26
- package/dist/core/registry/cards/pr.review.submit_comment.yaml +0 -26
- package/dist/core/registry/cards/pr.review.submit_request_changes.yaml +0 -26
- package/dist/core/registry/cards/workflow_run.jobs.list.yaml +0 -35
- package/dist/envelope-BpF6MNCv.d.ts +0 -55
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getSdk,
|
|
3
|
+
getSdk2,
|
|
4
|
+
getSdk3,
|
|
5
|
+
getSdk4,
|
|
6
|
+
getSdk5
|
|
7
|
+
} from "./chunk-TDABI6C7.js";
|
|
8
|
+
import {
|
|
9
|
+
PageInfoFieldsFragmentDoc
|
|
10
|
+
} from "./chunk-R3CBGJZX.js";
|
|
11
|
+
import {
|
|
12
|
+
asRecord,
|
|
13
|
+
assertPrCommentsListInput,
|
|
14
|
+
assertReplyToReviewThreadInput,
|
|
15
|
+
assertReviewThreadInput
|
|
16
|
+
} from "./chunk-BIWBJA2F.js";
|
|
17
|
+
import {
|
|
18
|
+
createGraphqlRequestClient
|
|
19
|
+
} from "./chunk-HEHONZTO.js";
|
|
20
|
+
|
|
21
|
+
// src/gql/operations/pr-comments-list.generated.ts
|
|
22
|
+
var PrCommentsListDocument = `
|
|
23
|
+
query PrCommentsList($owner: String!, $name: String!, $prNumber: Int!, $first: Int!, $after: String) {
|
|
24
|
+
repository(owner: $owner, name: $name) {
|
|
25
|
+
pullRequest(number: $prNumber) {
|
|
26
|
+
reviewThreads(first: $first, after: $after) {
|
|
27
|
+
edges {
|
|
28
|
+
cursor
|
|
29
|
+
node {
|
|
30
|
+
id
|
|
31
|
+
path
|
|
32
|
+
line
|
|
33
|
+
startLine
|
|
34
|
+
diffSide
|
|
35
|
+
subjectType
|
|
36
|
+
isResolved
|
|
37
|
+
isOutdated
|
|
38
|
+
viewerCanReply
|
|
39
|
+
viewerCanResolve
|
|
40
|
+
viewerCanUnresolve
|
|
41
|
+
resolvedBy {
|
|
42
|
+
login
|
|
43
|
+
}
|
|
44
|
+
comments(first: 20) {
|
|
45
|
+
nodes {
|
|
46
|
+
id
|
|
47
|
+
body
|
|
48
|
+
createdAt
|
|
49
|
+
url
|
|
50
|
+
author {
|
|
51
|
+
login
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
pageInfo {
|
|
58
|
+
...PageInfoFields
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
${PageInfoFieldsFragmentDoc}`;
|
|
65
|
+
var defaultWrapper = (action, _operationName, _operationType, _variables) => action();
|
|
66
|
+
function getSdk6(client, withWrapper = defaultWrapper) {
|
|
67
|
+
return {
|
|
68
|
+
PrCommentsList(variables, requestHeaders, signal) {
|
|
69
|
+
return withWrapper(
|
|
70
|
+
(wrappedRequestHeaders) => client.request({
|
|
71
|
+
document: PrCommentsListDocument,
|
|
72
|
+
variables,
|
|
73
|
+
requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },
|
|
74
|
+
signal
|
|
75
|
+
}),
|
|
76
|
+
"PrCommentsList",
|
|
77
|
+
"query",
|
|
78
|
+
variables
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// src/gql/operations/review-thread-state.generated.ts
|
|
85
|
+
var ReviewThreadStateDocument = `
|
|
86
|
+
query ReviewThreadState($threadId: ID!) {
|
|
87
|
+
node(id: $threadId) {
|
|
88
|
+
... on PullRequestReviewThread {
|
|
89
|
+
id
|
|
90
|
+
isResolved
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
`;
|
|
95
|
+
var defaultWrapper2 = (action, _operationName, _operationType, _variables) => action();
|
|
96
|
+
function getSdk7(client, withWrapper = defaultWrapper2) {
|
|
97
|
+
return {
|
|
98
|
+
ReviewThreadState(variables, requestHeaders, signal) {
|
|
99
|
+
return withWrapper(
|
|
100
|
+
(wrappedRequestHeaders) => client.request({
|
|
101
|
+
document: ReviewThreadStateDocument,
|
|
102
|
+
variables,
|
|
103
|
+
requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },
|
|
104
|
+
signal
|
|
105
|
+
}),
|
|
106
|
+
"ReviewThreadState",
|
|
107
|
+
"query",
|
|
108
|
+
variables
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// src/gql/domains/pr-mutations.ts
|
|
115
|
+
var MAX_PR_REVIEW_THREAD_SCAN_PAGES = 5;
|
|
116
|
+
function normalizePrReviewThreadComment(comment) {
|
|
117
|
+
const commentRecord = asRecord(comment);
|
|
118
|
+
if (!commentRecord || typeof commentRecord.id !== "string") {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
const author = asRecord(commentRecord.author);
|
|
122
|
+
const url = commentRecord.url;
|
|
123
|
+
return {
|
|
124
|
+
id: commentRecord.id,
|
|
125
|
+
authorLogin: typeof author?.login === "string" ? author.login : null,
|
|
126
|
+
body: typeof commentRecord.body === "string" ? commentRecord.body : "",
|
|
127
|
+
createdAt: typeof commentRecord.createdAt === "string" ? commentRecord.createdAt : "",
|
|
128
|
+
url: typeof url === "string" ? url : String(url ?? "")
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
function normalizePrReviewThread(thread) {
|
|
132
|
+
const threadRecord = asRecord(thread);
|
|
133
|
+
if (!threadRecord || typeof threadRecord.id !== "string") {
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
const comments = asRecord(threadRecord.comments);
|
|
137
|
+
const commentNodes = Array.isArray(comments?.nodes) ? comments.nodes : [];
|
|
138
|
+
const resolvedBy = asRecord(threadRecord.resolvedBy);
|
|
139
|
+
return {
|
|
140
|
+
id: threadRecord.id,
|
|
141
|
+
path: typeof threadRecord.path === "string" ? threadRecord.path : null,
|
|
142
|
+
line: typeof threadRecord.line === "number" ? threadRecord.line : null,
|
|
143
|
+
startLine: typeof threadRecord.startLine === "number" ? threadRecord.startLine : null,
|
|
144
|
+
diffSide: typeof threadRecord.diffSide === "string" ? threadRecord.diffSide : null,
|
|
145
|
+
subjectType: typeof threadRecord.subjectType === "string" ? threadRecord.subjectType : null,
|
|
146
|
+
isResolved: Boolean(threadRecord.isResolved),
|
|
147
|
+
isOutdated: Boolean(threadRecord.isOutdated),
|
|
148
|
+
viewerCanReply: Boolean(threadRecord.viewerCanReply),
|
|
149
|
+
viewerCanResolve: Boolean(threadRecord.viewerCanResolve),
|
|
150
|
+
viewerCanUnresolve: Boolean(threadRecord.viewerCanUnresolve),
|
|
151
|
+
resolvedByLogin: typeof resolvedBy?.login === "string" ? resolvedBy.login : null,
|
|
152
|
+
comments: commentNodes.map((comment) => normalizePrReviewThreadComment(comment)).flatMap((comment) => comment ? [comment] : [])
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
async function runPrCommentsList(transport, input) {
|
|
156
|
+
assertPrCommentsListInput(input);
|
|
157
|
+
const unresolvedOnly = input.unresolvedOnly ?? true;
|
|
158
|
+
const includeOutdated = input.includeOutdated ?? true;
|
|
159
|
+
const sdk = getSdk6(createGraphqlRequestClient(transport));
|
|
160
|
+
const filteredThreads = [];
|
|
161
|
+
let sourceEndCursor = input.after ?? null;
|
|
162
|
+
let sourceHasNextPage = false;
|
|
163
|
+
let pagesScanned = 0;
|
|
164
|
+
let sourceItemsScanned = 0;
|
|
165
|
+
while (pagesScanned < MAX_PR_REVIEW_THREAD_SCAN_PAGES && filteredThreads.length < input.first) {
|
|
166
|
+
const result = await sdk.PrCommentsList({
|
|
167
|
+
owner: input.owner,
|
|
168
|
+
name: input.name,
|
|
169
|
+
prNumber: input.prNumber,
|
|
170
|
+
first: input.first,
|
|
171
|
+
after: sourceEndCursor
|
|
172
|
+
});
|
|
173
|
+
const repository = asRecord(result.repository);
|
|
174
|
+
const pullRequest = asRecord(repository?.pullRequest);
|
|
175
|
+
const reviewThreads = asRecord(pullRequest?.reviewThreads);
|
|
176
|
+
if (!reviewThreads) {
|
|
177
|
+
throw new Error("Pull request review threads not found");
|
|
178
|
+
}
|
|
179
|
+
const pageInfo = asRecord(reviewThreads.pageInfo);
|
|
180
|
+
const threadEdges = Array.isArray(reviewThreads.edges) ? reviewThreads.edges.map((edge) => {
|
|
181
|
+
const edgeRecord = asRecord(edge);
|
|
182
|
+
if (!edgeRecord) {
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
return {
|
|
186
|
+
cursor: typeof edgeRecord.cursor === "string" ? edgeRecord.cursor : null,
|
|
187
|
+
node: edgeRecord.node
|
|
188
|
+
};
|
|
189
|
+
}).flatMap((edge) => edge ? [edge] : []) : [];
|
|
190
|
+
const threadNodes = threadEdges.length > 0 ? threadEdges : Array.isArray(reviewThreads.nodes) ? reviewThreads.nodes.map((node) => ({ cursor: null, node })) : [];
|
|
191
|
+
pagesScanned += 1;
|
|
192
|
+
sourceItemsScanned += threadNodes.length;
|
|
193
|
+
for (const threadNode of threadNodes) {
|
|
194
|
+
const normalized = normalizePrReviewThread(threadNode.node);
|
|
195
|
+
if (!normalized) {
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
if (unresolvedOnly && normalized.isResolved) {
|
|
199
|
+
continue;
|
|
200
|
+
}
|
|
201
|
+
if (unresolvedOnly && !includeOutdated && normalized.isOutdated) {
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
filteredThreads.push({ thread: normalized, cursor: threadNode.cursor });
|
|
205
|
+
}
|
|
206
|
+
sourceHasNextPage = Boolean(pageInfo?.hasNextPage);
|
|
207
|
+
sourceEndCursor = typeof pageInfo?.endCursor === "string" ? pageInfo.endCursor : null;
|
|
208
|
+
if (!sourceHasNextPage) {
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
const hasBufferedFilteredItems = filteredThreads.length > input.first;
|
|
213
|
+
const returnedThreads = filteredThreads.slice(0, input.first);
|
|
214
|
+
const endCursor = returnedThreads.length > 0 ? returnedThreads[returnedThreads.length - 1]?.cursor ?? sourceEndCursor : sourceEndCursor;
|
|
215
|
+
const scanTruncated = sourceHasNextPage && pagesScanned >= MAX_PR_REVIEW_THREAD_SCAN_PAGES;
|
|
216
|
+
return {
|
|
217
|
+
items: returnedThreads.map((entry) => entry.thread),
|
|
218
|
+
pageInfo: {
|
|
219
|
+
hasNextPage: hasBufferedFilteredItems || sourceHasNextPage,
|
|
220
|
+
endCursor: hasBufferedFilteredItems || sourceHasNextPage ? endCursor : null
|
|
221
|
+
},
|
|
222
|
+
filterApplied: {
|
|
223
|
+
unresolvedOnly,
|
|
224
|
+
includeOutdated
|
|
225
|
+
},
|
|
226
|
+
scan: {
|
|
227
|
+
pagesScanned,
|
|
228
|
+
sourceItemsScanned,
|
|
229
|
+
scanTruncated
|
|
230
|
+
}
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
function parseReviewThreadMutationResult(result, mutationKey) {
|
|
234
|
+
const root = asRecord(result);
|
|
235
|
+
const mutation = asRecord(root?.[mutationKey]);
|
|
236
|
+
const thread = asRecord(mutation?.thread);
|
|
237
|
+
if (!thread || typeof thread.id !== "string") {
|
|
238
|
+
throw new Error("Review thread mutation failed");
|
|
239
|
+
}
|
|
240
|
+
return {
|
|
241
|
+
id: thread.id,
|
|
242
|
+
isResolved: Boolean(thread.isResolved)
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
async function runReplyToReviewThread(transport, input) {
|
|
246
|
+
assertReplyToReviewThreadInput(input);
|
|
247
|
+
const client = createGraphqlRequestClient(transport);
|
|
248
|
+
const replyResult = await getSdk(client).PrCommentReply({
|
|
249
|
+
threadId: input.threadId,
|
|
250
|
+
body: input.body
|
|
251
|
+
});
|
|
252
|
+
const mutation = asRecord(replyResult.addPullRequestReviewThreadReply);
|
|
253
|
+
const comment = asRecord(mutation?.comment);
|
|
254
|
+
if (!comment || typeof comment.id !== "string") {
|
|
255
|
+
throw new Error("Review thread mutation failed");
|
|
256
|
+
}
|
|
257
|
+
const threadStateResult = await getSdk7(client).ReviewThreadState({
|
|
258
|
+
threadId: input.threadId
|
|
259
|
+
});
|
|
260
|
+
const threadNode = asRecord(threadStateResult.node);
|
|
261
|
+
if (!threadNode || typeof threadNode.id !== "string") {
|
|
262
|
+
throw new Error("Review thread state lookup failed");
|
|
263
|
+
}
|
|
264
|
+
return {
|
|
265
|
+
id: input.threadId,
|
|
266
|
+
isResolved: Boolean(threadNode.isResolved),
|
|
267
|
+
commentId: comment.id,
|
|
268
|
+
commentUrl: typeof comment.url === "string" ? comment.url : ""
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
async function runResolveReviewThread(transport, input) {
|
|
272
|
+
assertReviewThreadInput(input);
|
|
273
|
+
const result = await getSdk2(
|
|
274
|
+
createGraphqlRequestClient(transport)
|
|
275
|
+
).PrCommentResolve({
|
|
276
|
+
threadId: input.threadId
|
|
277
|
+
});
|
|
278
|
+
return parseReviewThreadMutationResult(result, "resolveReviewThread");
|
|
279
|
+
}
|
|
280
|
+
async function runUnresolveReviewThread(transport, input) {
|
|
281
|
+
assertReviewThreadInput(input);
|
|
282
|
+
const result = await getSdk3(
|
|
283
|
+
createGraphqlRequestClient(transport)
|
|
284
|
+
).PrCommentUnresolve({
|
|
285
|
+
threadId: input.threadId
|
|
286
|
+
});
|
|
287
|
+
return parseReviewThreadMutationResult(result, "unresolveReviewThread");
|
|
288
|
+
}
|
|
289
|
+
function assertPrReviewSubmitInput(input) {
|
|
290
|
+
if (input.owner.trim().length === 0 || input.name.trim().length === 0) {
|
|
291
|
+
throw new Error("Repository owner and name are required");
|
|
292
|
+
}
|
|
293
|
+
if (!Number.isInteger(input.prNumber) || input.prNumber <= 0) {
|
|
294
|
+
throw new Error("PR number must be a positive integer");
|
|
295
|
+
}
|
|
296
|
+
if (!input.event || typeof input.event !== "string") {
|
|
297
|
+
throw new Error("Review event is required");
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
async function runSubmitPrReview(transport, input) {
|
|
301
|
+
assertPrReviewSubmitInput(input);
|
|
302
|
+
const client = createGraphqlRequestClient(transport);
|
|
303
|
+
const prIdResult = await getSdk4(client).PrNodeId({
|
|
304
|
+
owner: input.owner,
|
|
305
|
+
name: input.name,
|
|
306
|
+
prNumber: input.prNumber
|
|
307
|
+
});
|
|
308
|
+
const pullRequestId = prIdResult.repository?.pullRequest?.id;
|
|
309
|
+
if (!pullRequestId) {
|
|
310
|
+
throw new Error("Failed to retrieve pull request ID");
|
|
311
|
+
}
|
|
312
|
+
const threads = input.comments ? input.comments.map((comment) => ({
|
|
313
|
+
path: comment.path,
|
|
314
|
+
body: comment.body,
|
|
315
|
+
line: comment.line,
|
|
316
|
+
...comment.side ? { side: comment.side } : {},
|
|
317
|
+
...comment.startLine ? { startLine: comment.startLine } : {},
|
|
318
|
+
...comment.startSide ? { startSide: comment.startSide } : {}
|
|
319
|
+
})) : [];
|
|
320
|
+
const result = await getSdk5(client).PrReviewSubmit({
|
|
321
|
+
pullRequestId,
|
|
322
|
+
event: input.event,
|
|
323
|
+
...input.body === void 0 ? {} : { body: input.body },
|
|
324
|
+
...threads.length === 0 ? {} : { threads }
|
|
325
|
+
});
|
|
326
|
+
const review = asRecord(asRecord(result.addPullRequestReview)?.pullRequestReview);
|
|
327
|
+
if (!review || typeof review.id !== "string") {
|
|
328
|
+
throw new Error("Failed to parse pull request review response");
|
|
329
|
+
}
|
|
330
|
+
return {
|
|
331
|
+
id: review.id,
|
|
332
|
+
state: typeof review.state === "string" ? review.state : "",
|
|
333
|
+
url: typeof review.url === "string" ? review.url : "",
|
|
334
|
+
body: typeof review.body === "string" ? review.body : null
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
export {
|
|
338
|
+
runPrCommentsList,
|
|
339
|
+
runReplyToReviewThread,
|
|
340
|
+
runResolveReviewThread,
|
|
341
|
+
runSubmitPrReview,
|
|
342
|
+
runUnresolveReviewThread
|
|
343
|
+
};
|
|
344
|
+
//# sourceMappingURL=pr-mutations-UG67YOF5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/gql/operations/pr-comments-list.generated.ts","../src/gql/operations/review-thread-state.generated.ts","../src/gql/domains/pr-mutations.ts"],"sourcesContent":["import type { GraphQLClient, RequestOptions } from \"graphql-request\"\nimport type * as Types from \"./base-types.js\"\nimport { PageInfoFieldsFragmentDoc } from \"./fragments/page-info-fields.generated.js\"\n\ntype GraphQLClientRequestHeaders = RequestOptions[\"requestHeaders\"]\nexport type PrCommentsListQueryVariables = Types.Exact<{\n owner: Types.Scalars[\"String\"][\"input\"]\n name: Types.Scalars[\"String\"][\"input\"]\n prNumber: Types.Scalars[\"Int\"][\"input\"]\n first: Types.Scalars[\"Int\"][\"input\"]\n after?: Types.InputMaybe<Types.Scalars[\"String\"][\"input\"]>\n}>\n\nexport type PrCommentsListQuery = {\n __typename?: \"Query\"\n repository?: {\n __typename?: \"Repository\"\n pullRequest?: {\n __typename?: \"PullRequest\"\n reviewThreads: {\n __typename?: \"PullRequestReviewThreadConnection\"\n edges?: Array<{\n __typename?: \"PullRequestReviewThreadEdge\"\n cursor: string\n node?: {\n __typename?: \"PullRequestReviewThread\"\n id: string\n path: string\n line?: number | null\n startLine?: number | null\n diffSide: Types.DiffSide\n subjectType: Types.PullRequestReviewThreadSubjectType\n isResolved: boolean\n isOutdated: boolean\n viewerCanReply: boolean\n viewerCanResolve: boolean\n viewerCanUnresolve: boolean\n resolvedBy?: { __typename?: \"User\"; login: string } | null\n comments: {\n __typename?: \"PullRequestReviewCommentConnection\"\n nodes?: Array<{\n __typename?: \"PullRequestReviewComment\"\n id: string\n body: string\n createdAt: any\n url: any\n author?:\n | { __typename?: \"Bot\"; login: string }\n | { __typename?: \"EnterpriseUserAccount\"; login: string }\n | { __typename?: \"Mannequin\"; login: string }\n | { __typename?: \"Organization\"; login: string }\n | { __typename?: \"User\"; login: string }\n | null\n } | null> | null\n }\n } | null\n } | null> | null\n pageInfo: { __typename?: \"PageInfo\"; endCursor?: string | null; hasNextPage: boolean }\n }\n } | null\n } | null\n}\n\nexport const PrCommentsListDocument = `\n query PrCommentsList($owner: String!, $name: String!, $prNumber: Int!, $first: Int!, $after: String) {\n repository(owner: $owner, name: $name) {\n pullRequest(number: $prNumber) {\n reviewThreads(first: $first, after: $after) {\n edges {\n cursor\n node {\n id\n path\n line\n startLine\n diffSide\n subjectType\n isResolved\n isOutdated\n viewerCanReply\n viewerCanResolve\n viewerCanUnresolve\n resolvedBy {\n login\n }\n comments(first: 20) {\n nodes {\n id\n body\n createdAt\n url\n author {\n login\n }\n }\n }\n }\n }\n pageInfo {\n ...PageInfoFields\n }\n }\n }\n }\n}\n ${PageInfoFieldsFragmentDoc}`\n\nexport type SdkFunctionWrapper = <T>(\n action: (requestHeaders?: Record<string, string>) => Promise<T>,\n operationName: string,\n operationType?: string,\n variables?: any,\n) => Promise<T>\n\nconst defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType, _variables) =>\n action()\n\nexport function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {\n return {\n PrCommentsList(\n variables: PrCommentsListQueryVariables,\n requestHeaders?: GraphQLClientRequestHeaders,\n signal?: RequestInit[\"signal\"],\n ): Promise<PrCommentsListQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<PrCommentsListQuery>({\n document: PrCommentsListDocument,\n variables,\n requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },\n signal,\n }),\n \"PrCommentsList\",\n \"query\",\n variables,\n )\n },\n }\n}\nexport type Sdk = ReturnType<typeof getSdk>\n","import type { GraphQLClient, RequestOptions } from \"graphql-request\"\nimport type * as Types from \"./base-types.js\"\n\ntype GraphQLClientRequestHeaders = RequestOptions[\"requestHeaders\"]\nexport type ReviewThreadStateQueryVariables = Types.Exact<{\n threadId: Types.Scalars[\"ID\"][\"input\"]\n}>\n\nexport type ReviewThreadStateQuery = {\n __typename?: \"Query\"\n node?:\n | { __typename?: \"AddedToMergeQueueEvent\" }\n | { __typename?: \"AddedToProjectEvent\" }\n | { __typename?: \"AddedToProjectV2Event\" }\n | { __typename?: \"App\" }\n | { __typename?: \"AssignedEvent\" }\n | { __typename?: \"AutoMergeDisabledEvent\" }\n | { __typename?: \"AutoMergeEnabledEvent\" }\n | { __typename?: \"AutoRebaseEnabledEvent\" }\n | { __typename?: \"AutoSquashEnabledEvent\" }\n | { __typename?: \"AutomaticBaseChangeFailedEvent\" }\n | { __typename?: \"AutomaticBaseChangeSucceededEvent\" }\n | { __typename?: \"BaseRefChangedEvent\" }\n | { __typename?: \"BaseRefDeletedEvent\" }\n | { __typename?: \"BaseRefForcePushedEvent\" }\n | { __typename?: \"Blob\" }\n | { __typename?: \"BlockedByAddedEvent\" }\n | { __typename?: \"BlockedByRemovedEvent\" }\n | { __typename?: \"BlockingAddedEvent\" }\n | { __typename?: \"BlockingRemovedEvent\" }\n | { __typename?: \"Bot\" }\n | { __typename?: \"BranchProtectionRule\" }\n | { __typename?: \"BypassForcePushAllowance\" }\n | { __typename?: \"BypassPullRequestAllowance\" }\n | { __typename?: \"CWE\" }\n | { __typename?: \"CheckRun\" }\n | { __typename?: \"CheckSuite\" }\n | { __typename?: \"ClosedEvent\" }\n | { __typename?: \"CodeOfConduct\" }\n | { __typename?: \"CommentDeletedEvent\" }\n | { __typename?: \"Commit\" }\n | { __typename?: \"CommitComment\" }\n | { __typename?: \"CommitCommentThread\" }\n | { __typename?: \"Comparison\" }\n | { __typename?: \"ConnectedEvent\" }\n | { __typename?: \"ConvertToDraftEvent\" }\n | { __typename?: \"ConvertedFromDraftEvent\" }\n | { __typename?: \"ConvertedNoteToIssueEvent\" }\n | { __typename?: \"ConvertedToDiscussionEvent\" }\n | { __typename?: \"CrossReferencedEvent\" }\n | { __typename?: \"DemilestonedEvent\" }\n | { __typename?: \"DependencyGraphManifest\" }\n | { __typename?: \"DeployKey\" }\n | { __typename?: \"DeployedEvent\" }\n | { __typename?: \"Deployment\" }\n | { __typename?: \"DeploymentEnvironmentChangedEvent\" }\n | { __typename?: \"DeploymentReview\" }\n | { __typename?: \"DeploymentStatus\" }\n | { __typename?: \"DisconnectedEvent\" }\n | { __typename?: \"Discussion\" }\n | { __typename?: \"DiscussionCategory\" }\n | { __typename?: \"DiscussionComment\" }\n | { __typename?: \"DiscussionPoll\" }\n | { __typename?: \"DiscussionPollOption\" }\n | { __typename?: \"DraftIssue\" }\n | { __typename?: \"Enterprise\" }\n | { __typename?: \"EnterpriseAdministratorInvitation\" }\n | { __typename?: \"EnterpriseIdentityProvider\" }\n | { __typename?: \"EnterpriseMemberInvitation\" }\n | { __typename?: \"EnterpriseRepositoryInfo\" }\n | { __typename?: \"EnterpriseServerInstallation\" }\n | { __typename?: \"EnterpriseServerUserAccount\" }\n | { __typename?: \"EnterpriseServerUserAccountEmail\" }\n | { __typename?: \"EnterpriseServerUserAccountsUpload\" }\n | { __typename?: \"EnterpriseUserAccount\" }\n | { __typename?: \"Environment\" }\n | { __typename?: \"ExternalIdentity\" }\n | { __typename?: \"Gist\" }\n | { __typename?: \"GistComment\" }\n | { __typename?: \"HeadRefDeletedEvent\" }\n | { __typename?: \"HeadRefForcePushedEvent\" }\n | { __typename?: \"HeadRefRestoredEvent\" }\n | { __typename?: \"IpAllowListEntry\" }\n | { __typename?: \"Issue\" }\n | { __typename?: \"IssueComment\" }\n | { __typename?: \"IssueType\" }\n | { __typename?: \"IssueTypeAddedEvent\" }\n | { __typename?: \"IssueTypeChangedEvent\" }\n | { __typename?: \"IssueTypeRemovedEvent\" }\n | { __typename?: \"Label\" }\n | { __typename?: \"LabeledEvent\" }\n | { __typename?: \"Language\" }\n | { __typename?: \"License\" }\n | { __typename?: \"LinkedBranch\" }\n | { __typename?: \"LockedEvent\" }\n | { __typename?: \"Mannequin\" }\n | { __typename?: \"MarkedAsDuplicateEvent\" }\n | { __typename?: \"MarketplaceCategory\" }\n | { __typename?: \"MarketplaceListing\" }\n | { __typename?: \"MemberFeatureRequestNotification\" }\n | { __typename?: \"MembersCanDeleteReposClearAuditEntry\" }\n | { __typename?: \"MembersCanDeleteReposDisableAuditEntry\" }\n | { __typename?: \"MembersCanDeleteReposEnableAuditEntry\" }\n | { __typename?: \"MentionedEvent\" }\n | { __typename?: \"MergeQueue\" }\n | { __typename?: \"MergeQueueEntry\" }\n | { __typename?: \"MergedEvent\" }\n | { __typename?: \"MigrationSource\" }\n | { __typename?: \"Milestone\" }\n | { __typename?: \"MilestonedEvent\" }\n | { __typename?: \"MovedColumnsInProjectEvent\" }\n | { __typename?: \"OIDCProvider\" }\n | { __typename?: \"OauthApplicationCreateAuditEntry\" }\n | { __typename?: \"OrgAddBillingManagerAuditEntry\" }\n | { __typename?: \"OrgAddMemberAuditEntry\" }\n | { __typename?: \"OrgBlockUserAuditEntry\" }\n | { __typename?: \"OrgConfigDisableCollaboratorsOnlyAuditEntry\" }\n | { __typename?: \"OrgConfigEnableCollaboratorsOnlyAuditEntry\" }\n | { __typename?: \"OrgCreateAuditEntry\" }\n | { __typename?: \"OrgDisableOauthAppRestrictionsAuditEntry\" }\n | { __typename?: \"OrgDisableSamlAuditEntry\" }\n | { __typename?: \"OrgDisableTwoFactorRequirementAuditEntry\" }\n | { __typename?: \"OrgEnableOauthAppRestrictionsAuditEntry\" }\n | { __typename?: \"OrgEnableSamlAuditEntry\" }\n | { __typename?: \"OrgEnableTwoFactorRequirementAuditEntry\" }\n | { __typename?: \"OrgInviteMemberAuditEntry\" }\n | { __typename?: \"OrgInviteToBusinessAuditEntry\" }\n | { __typename?: \"OrgOauthAppAccessApprovedAuditEntry\" }\n | { __typename?: \"OrgOauthAppAccessBlockedAuditEntry\" }\n | { __typename?: \"OrgOauthAppAccessDeniedAuditEntry\" }\n | { __typename?: \"OrgOauthAppAccessRequestedAuditEntry\" }\n | { __typename?: \"OrgOauthAppAccessUnblockedAuditEntry\" }\n | { __typename?: \"OrgRemoveBillingManagerAuditEntry\" }\n | { __typename?: \"OrgRemoveMemberAuditEntry\" }\n | { __typename?: \"OrgRemoveOutsideCollaboratorAuditEntry\" }\n | { __typename?: \"OrgRestoreMemberAuditEntry\" }\n | { __typename?: \"OrgUnblockUserAuditEntry\" }\n | { __typename?: \"OrgUpdateDefaultRepositoryPermissionAuditEntry\" }\n | { __typename?: \"OrgUpdateMemberAuditEntry\" }\n | { __typename?: \"OrgUpdateMemberRepositoryCreationPermissionAuditEntry\" }\n | { __typename?: \"OrgUpdateMemberRepositoryInvitationPermissionAuditEntry\" }\n | { __typename?: \"Organization\" }\n | { __typename?: \"OrganizationIdentityProvider\" }\n | { __typename?: \"OrganizationInvitation\" }\n | { __typename?: \"OrganizationMigration\" }\n | { __typename?: \"Package\" }\n | { __typename?: \"PackageFile\" }\n | { __typename?: \"PackageTag\" }\n | { __typename?: \"PackageVersion\" }\n | { __typename?: \"ParentIssueAddedEvent\" }\n | { __typename?: \"ParentIssueRemovedEvent\" }\n | { __typename?: \"PinnedDiscussion\" }\n | { __typename?: \"PinnedEnvironment\" }\n | { __typename?: \"PinnedEvent\" }\n | { __typename?: \"PinnedIssue\" }\n | { __typename?: \"PrivateRepositoryForkingDisableAuditEntry\" }\n | { __typename?: \"PrivateRepositoryForkingEnableAuditEntry\" }\n | { __typename?: \"Project\" }\n | { __typename?: \"ProjectCard\" }\n | { __typename?: \"ProjectColumn\" }\n | { __typename?: \"ProjectV2\" }\n | { __typename?: \"ProjectV2Field\" }\n | { __typename?: \"ProjectV2Item\" }\n | { __typename?: \"ProjectV2ItemFieldDateValue\" }\n | { __typename?: \"ProjectV2ItemFieldIterationValue\" }\n | { __typename?: \"ProjectV2ItemFieldNumberValue\" }\n | { __typename?: \"ProjectV2ItemFieldSingleSelectValue\" }\n | { __typename?: \"ProjectV2ItemFieldTextValue\" }\n | { __typename?: \"ProjectV2ItemStatusChangedEvent\" }\n | { __typename?: \"ProjectV2IterationField\" }\n | { __typename?: \"ProjectV2SingleSelectField\" }\n | { __typename?: \"ProjectV2StatusUpdate\" }\n | { __typename?: \"ProjectV2View\" }\n | { __typename?: \"ProjectV2Workflow\" }\n | { __typename?: \"PublicKey\" }\n | { __typename?: \"PullRequest\" }\n | { __typename?: \"PullRequestCommit\" }\n | { __typename?: \"PullRequestCommitCommentThread\" }\n | { __typename?: \"PullRequestReview\" }\n | { __typename?: \"PullRequestReviewComment\" }\n | { __typename?: \"PullRequestReviewThread\"; id: string; isResolved: boolean }\n | { __typename?: \"PullRequestThread\" }\n | { __typename?: \"Push\" }\n | { __typename?: \"PushAllowance\" }\n | { __typename?: \"Query\" }\n | { __typename?: \"Reaction\" }\n | { __typename?: \"ReadyForReviewEvent\" }\n | { __typename?: \"Ref\" }\n | { __typename?: \"ReferencedEvent\" }\n | { __typename?: \"Release\" }\n | { __typename?: \"ReleaseAsset\" }\n | { __typename?: \"RemovedFromMergeQueueEvent\" }\n | { __typename?: \"RemovedFromProjectEvent\" }\n | { __typename?: \"RemovedFromProjectV2Event\" }\n | { __typename?: \"RenamedTitleEvent\" }\n | { __typename?: \"ReopenedEvent\" }\n | { __typename?: \"RepoAccessAuditEntry\" }\n | { __typename?: \"RepoAddMemberAuditEntry\" }\n | { __typename?: \"RepoAddTopicAuditEntry\" }\n | { __typename?: \"RepoArchivedAuditEntry\" }\n | { __typename?: \"RepoChangeMergeSettingAuditEntry\" }\n | { __typename?: \"RepoConfigDisableAnonymousGitAccessAuditEntry\" }\n | { __typename?: \"RepoConfigDisableCollaboratorsOnlyAuditEntry\" }\n | { __typename?: \"RepoConfigDisableContributorsOnlyAuditEntry\" }\n | { __typename?: \"RepoConfigDisableSockpuppetDisallowedAuditEntry\" }\n | { __typename?: \"RepoConfigEnableAnonymousGitAccessAuditEntry\" }\n | { __typename?: \"RepoConfigEnableCollaboratorsOnlyAuditEntry\" }\n | { __typename?: \"RepoConfigEnableContributorsOnlyAuditEntry\" }\n | { __typename?: \"RepoConfigEnableSockpuppetDisallowedAuditEntry\" }\n | { __typename?: \"RepoConfigLockAnonymousGitAccessAuditEntry\" }\n | { __typename?: \"RepoConfigUnlockAnonymousGitAccessAuditEntry\" }\n | { __typename?: \"RepoCreateAuditEntry\" }\n | { __typename?: \"RepoDestroyAuditEntry\" }\n | { __typename?: \"RepoRemoveMemberAuditEntry\" }\n | { __typename?: \"RepoRemoveTopicAuditEntry\" }\n | { __typename?: \"Repository\" }\n | { __typename?: \"RepositoryCustomProperty\" }\n | { __typename?: \"RepositoryInvitation\" }\n | { __typename?: \"RepositoryMigration\" }\n | { __typename?: \"RepositoryRule\" }\n | { __typename?: \"RepositoryRuleset\" }\n | { __typename?: \"RepositoryRulesetBypassActor\" }\n | { __typename?: \"RepositoryTopic\" }\n | { __typename?: \"RepositoryVisibilityChangeDisableAuditEntry\" }\n | { __typename?: \"RepositoryVisibilityChangeEnableAuditEntry\" }\n | { __typename?: \"RepositoryVulnerabilityAlert\" }\n | { __typename?: \"ReviewDismissalAllowance\" }\n | { __typename?: \"ReviewDismissedEvent\" }\n | { __typename?: \"ReviewRequest\" }\n | { __typename?: \"ReviewRequestRemovedEvent\" }\n | { __typename?: \"ReviewRequestedEvent\" }\n | { __typename?: \"SavedReply\" }\n | { __typename?: \"SecurityAdvisory\" }\n | { __typename?: \"SponsorsActivity\" }\n | { __typename?: \"SponsorsListing\" }\n | { __typename?: \"SponsorsListingFeaturedItem\" }\n | { __typename?: \"SponsorsTier\" }\n | { __typename?: \"Sponsorship\" }\n | { __typename?: \"SponsorshipNewsletter\" }\n | { __typename?: \"Status\" }\n | { __typename?: \"StatusCheckRollup\" }\n | { __typename?: \"StatusContext\" }\n | { __typename?: \"SubIssueAddedEvent\" }\n | { __typename?: \"SubIssueRemovedEvent\" }\n | { __typename?: \"SubscribedEvent\" }\n | { __typename?: \"Tag\" }\n | { __typename?: \"Team\" }\n | { __typename?: \"TeamAddMemberAuditEntry\" }\n | { __typename?: \"TeamAddRepositoryAuditEntry\" }\n | { __typename?: \"TeamChangeParentTeamAuditEntry\" }\n | { __typename?: \"TeamRemoveMemberAuditEntry\" }\n | { __typename?: \"TeamRemoveRepositoryAuditEntry\" }\n | { __typename?: \"Topic\" }\n | { __typename?: \"TransferredEvent\" }\n | { __typename?: \"Tree\" }\n | { __typename?: \"UnassignedEvent\" }\n | { __typename?: \"UnlabeledEvent\" }\n | { __typename?: \"UnlockedEvent\" }\n | { __typename?: \"UnmarkedAsDuplicateEvent\" }\n | { __typename?: \"UnpinnedEvent\" }\n | { __typename?: \"UnsubscribedEvent\" }\n | { __typename?: \"User\" }\n | { __typename?: \"UserBlockedEvent\" }\n | { __typename?: \"UserContentEdit\" }\n | { __typename?: \"UserList\" }\n | { __typename?: \"UserNamespaceRepository\" }\n | { __typename?: \"UserStatus\" }\n | { __typename?: \"VerifiableDomain\" }\n | { __typename?: \"Workflow\" }\n | { __typename?: \"WorkflowRun\" }\n | { __typename?: \"WorkflowRunFile\" }\n | null\n}\n\nexport const ReviewThreadStateDocument = `\n query ReviewThreadState($threadId: ID!) {\n node(id: $threadId) {\n ... on PullRequestReviewThread {\n id\n isResolved\n }\n }\n}\n `\n\nexport type SdkFunctionWrapper = <T>(\n action: (requestHeaders?: Record<string, string>) => Promise<T>,\n operationName: string,\n operationType?: string,\n variables?: any,\n) => Promise<T>\n\nconst defaultWrapper: SdkFunctionWrapper = (action, _operationName, _operationType, _variables) =>\n action()\n\nexport function getSdk(client: GraphQLClient, withWrapper: SdkFunctionWrapper = defaultWrapper) {\n return {\n ReviewThreadState(\n variables: ReviewThreadStateQueryVariables,\n requestHeaders?: GraphQLClientRequestHeaders,\n signal?: RequestInit[\"signal\"],\n ): Promise<ReviewThreadStateQuery> {\n return withWrapper(\n (wrappedRequestHeaders) =>\n client.request<ReviewThreadStateQuery>({\n document: ReviewThreadStateDocument,\n variables,\n requestHeaders: { ...requestHeaders, ...wrappedRequestHeaders },\n signal,\n }),\n \"ReviewThreadState\",\n \"query\",\n variables,\n )\n },\n }\n}\nexport type Sdk = ReturnType<typeof getSdk>\n","import {\n asRecord,\n assertPrCommentsListInput,\n assertReplyToReviewThreadInput,\n assertReviewThreadInput,\n} from \"../assertions.js\"\nimport { getSdk as getPrCommentReplySdk } from \"../operations/pr-comment-reply.generated.js\"\nimport { getSdk as getPrCommentResolveSdk } from \"../operations/pr-comment-resolve.generated.js\"\nimport { getSdk as getPrCommentUnresolveSdk } from \"../operations/pr-comment-unresolve.generated.js\"\nimport { getSdk as getPrCommentsListSdk } from \"../operations/pr-comments-list.generated.js\"\nimport { getSdk as getPrNodeIdSdk } from \"../operations/pr-node-id.generated.js\"\nimport {\n getSdk as getPrReviewSubmitSdk,\n type PrReviewSubmitMutationVariables,\n} from \"../operations/pr-review-submit.generated.js\"\nimport { getSdk as getReviewThreadStateSdk } from \"../operations/review-thread-state.generated.js\"\nimport type { GraphqlTransport } from \"../transport.js\"\nimport { createGraphqlRequestClient } from \"../transport.js\"\nimport type {\n DraftComment,\n PrCommentsListData,\n PrCommentsListInput,\n PrReviewSubmitData,\n PrReviewSubmitInput,\n PrReviewThreadCommentData,\n PrReviewThreadData,\n ReplyToReviewThreadData,\n ReplyToReviewThreadInput,\n ReviewThreadMutationData,\n ReviewThreadMutationInput,\n} from \"../types.js\"\n\nconst MAX_PR_REVIEW_THREAD_SCAN_PAGES = 5\n\nfunction normalizePrReviewThreadComment(comment: unknown): PrReviewThreadCommentData | null {\n const commentRecord = asRecord(comment)\n if (!commentRecord || typeof commentRecord.id !== \"string\") {\n return null\n }\n\n const author = asRecord(commentRecord.author)\n const url = commentRecord.url\n\n return {\n id: commentRecord.id,\n authorLogin: typeof author?.login === \"string\" ? author.login : null,\n body: typeof commentRecord.body === \"string\" ? commentRecord.body : \"\",\n createdAt: typeof commentRecord.createdAt === \"string\" ? commentRecord.createdAt : \"\",\n url: typeof url === \"string\" ? url : String(url ?? \"\"),\n }\n}\n\nfunction normalizePrReviewThread(thread: unknown): PrReviewThreadData | null {\n const threadRecord = asRecord(thread)\n if (!threadRecord || typeof threadRecord.id !== \"string\") {\n return null\n }\n\n const comments = asRecord(threadRecord.comments)\n const commentNodes = Array.isArray(comments?.nodes) ? comments.nodes : []\n const resolvedBy = asRecord(threadRecord.resolvedBy)\n\n return {\n id: threadRecord.id,\n path: typeof threadRecord.path === \"string\" ? threadRecord.path : null,\n line: typeof threadRecord.line === \"number\" ? threadRecord.line : null,\n startLine: typeof threadRecord.startLine === \"number\" ? threadRecord.startLine : null,\n diffSide: typeof threadRecord.diffSide === \"string\" ? threadRecord.diffSide : null,\n subjectType: typeof threadRecord.subjectType === \"string\" ? threadRecord.subjectType : null,\n isResolved: Boolean(threadRecord.isResolved),\n isOutdated: Boolean(threadRecord.isOutdated),\n viewerCanReply: Boolean(threadRecord.viewerCanReply),\n viewerCanResolve: Boolean(threadRecord.viewerCanResolve),\n viewerCanUnresolve: Boolean(threadRecord.viewerCanUnresolve),\n resolvedByLogin: typeof resolvedBy?.login === \"string\" ? resolvedBy.login : null,\n comments: commentNodes\n .map((comment) => normalizePrReviewThreadComment(comment))\n .flatMap((comment) => (comment ? [comment] : [])),\n }\n}\n\nexport async function runPrCommentsList(\n transport: GraphqlTransport,\n input: PrCommentsListInput,\n): Promise<PrCommentsListData> {\n assertPrCommentsListInput(input)\n\n const unresolvedOnly = input.unresolvedOnly ?? true\n const includeOutdated = input.includeOutdated ?? true\n\n const sdk = getPrCommentsListSdk(createGraphqlRequestClient(transport))\n\n const filteredThreads: Array<{ thread: PrReviewThreadData; cursor: string | null }> = []\n let sourceEndCursor: string | null = input.after ?? null\n let sourceHasNextPage = false\n let pagesScanned = 0\n let sourceItemsScanned = 0\n\n while (pagesScanned < MAX_PR_REVIEW_THREAD_SCAN_PAGES && filteredThreads.length < input.first) {\n const result = await sdk.PrCommentsList({\n owner: input.owner,\n name: input.name,\n prNumber: input.prNumber,\n first: input.first,\n after: sourceEndCursor,\n })\n\n const repository = asRecord(result.repository)\n const pullRequest = asRecord(repository?.pullRequest)\n const reviewThreads = asRecord(pullRequest?.reviewThreads)\n if (!reviewThreads) {\n throw new Error(\"Pull request review threads not found\")\n }\n\n const pageInfo = asRecord(reviewThreads.pageInfo)\n const threadEdges = Array.isArray(reviewThreads.edges)\n ? reviewThreads.edges\n .map((edge) => {\n const edgeRecord = asRecord(edge)\n if (!edgeRecord) {\n return null\n }\n\n return {\n cursor: typeof edgeRecord.cursor === \"string\" ? edgeRecord.cursor : null,\n node: edgeRecord.node,\n }\n })\n .flatMap((edge) => (edge ? [edge] : []))\n : []\n\n const threadNodes =\n threadEdges.length > 0\n ? threadEdges\n : Array.isArray(reviewThreads.nodes)\n ? reviewThreads.nodes.map((node) => ({ cursor: null, node }))\n : []\n\n pagesScanned += 1\n sourceItemsScanned += threadNodes.length\n\n for (const threadNode of threadNodes) {\n const normalized = normalizePrReviewThread(threadNode.node)\n if (!normalized) {\n continue\n }\n\n if (unresolvedOnly && normalized.isResolved) {\n continue\n }\n\n if (unresolvedOnly && !includeOutdated && normalized.isOutdated) {\n continue\n }\n\n filteredThreads.push({ thread: normalized, cursor: threadNode.cursor })\n }\n\n sourceHasNextPage = Boolean(pageInfo?.hasNextPage)\n sourceEndCursor = typeof pageInfo?.endCursor === \"string\" ? pageInfo.endCursor : null\n\n if (!sourceHasNextPage) {\n break\n }\n }\n\n const hasBufferedFilteredItems = filteredThreads.length > input.first\n const returnedThreads = filteredThreads.slice(0, input.first)\n const endCursor =\n returnedThreads.length > 0\n ? (returnedThreads[returnedThreads.length - 1]?.cursor ?? sourceEndCursor)\n : sourceEndCursor\n const scanTruncated = sourceHasNextPage && pagesScanned >= MAX_PR_REVIEW_THREAD_SCAN_PAGES\n\n return {\n items: returnedThreads.map((entry) => entry.thread),\n pageInfo: {\n hasNextPage: hasBufferedFilteredItems || sourceHasNextPage,\n endCursor: hasBufferedFilteredItems || sourceHasNextPage ? endCursor : null,\n },\n filterApplied: {\n unresolvedOnly,\n includeOutdated,\n },\n scan: {\n pagesScanned,\n sourceItemsScanned,\n scanTruncated,\n },\n }\n}\n\nfunction parseReviewThreadMutationResult(\n result: unknown,\n mutationKey: string,\n): ReviewThreadMutationData {\n const root = asRecord(result)\n const mutation = asRecord(root?.[mutationKey])\n const thread = asRecord(mutation?.thread)\n if (!thread || typeof thread.id !== \"string\") {\n throw new Error(\"Review thread mutation failed\")\n }\n\n return {\n id: thread.id,\n isResolved: Boolean(thread.isResolved),\n }\n}\n\nexport async function runReplyToReviewThread(\n transport: GraphqlTransport,\n input: ReplyToReviewThreadInput,\n): Promise<ReplyToReviewThreadData> {\n assertReplyToReviewThreadInput(input)\n\n const client = createGraphqlRequestClient(transport)\n const replyResult = await getPrCommentReplySdk(client).PrCommentReply({\n threadId: input.threadId,\n body: input.body,\n })\n const mutation = asRecord(replyResult.addPullRequestReviewThreadReply)\n const comment = asRecord(mutation?.comment)\n if (!comment || typeof comment.id !== \"string\") {\n throw new Error(\"Review thread mutation failed\")\n }\n\n const threadStateResult = await getReviewThreadStateSdk(client).ReviewThreadState({\n threadId: input.threadId,\n })\n const threadNode = asRecord(threadStateResult.node)\n if (!threadNode || typeof threadNode.id !== \"string\") {\n throw new Error(\"Review thread state lookup failed\")\n }\n\n return {\n id: input.threadId,\n isResolved: Boolean(threadNode.isResolved),\n commentId: comment.id,\n commentUrl: typeof comment.url === \"string\" ? comment.url : \"\",\n }\n}\n\nexport async function runResolveReviewThread(\n transport: GraphqlTransport,\n input: ReviewThreadMutationInput,\n): Promise<ReviewThreadMutationData> {\n assertReviewThreadInput(input)\n\n const result = await getPrCommentResolveSdk(\n createGraphqlRequestClient(transport),\n ).PrCommentResolve({\n threadId: input.threadId,\n })\n return parseReviewThreadMutationResult(result, \"resolveReviewThread\")\n}\n\nexport async function runUnresolveReviewThread(\n transport: GraphqlTransport,\n input: ReviewThreadMutationInput,\n): Promise<ReviewThreadMutationData> {\n assertReviewThreadInput(input)\n\n const result = await getPrCommentUnresolveSdk(\n createGraphqlRequestClient(transport),\n ).PrCommentUnresolve({\n threadId: input.threadId,\n })\n return parseReviewThreadMutationResult(result, \"unresolveReviewThread\")\n}\n\nfunction assertPrReviewSubmitInput(input: PrReviewSubmitInput): void {\n if (input.owner.trim().length === 0 || input.name.trim().length === 0) {\n throw new Error(\"Repository owner and name are required\")\n }\n if (!Number.isInteger(input.prNumber) || input.prNumber <= 0) {\n throw new Error(\"PR number must be a positive integer\")\n }\n if (!input.event || typeof input.event !== \"string\") {\n throw new Error(\"Review event is required\")\n }\n}\n\nexport async function runSubmitPrReview(\n transport: GraphqlTransport,\n input: PrReviewSubmitInput,\n): Promise<PrReviewSubmitData> {\n assertPrReviewSubmitInput(input)\n\n const client = createGraphqlRequestClient(transport)\n const prIdResult = await getPrNodeIdSdk(client).PrNodeId({\n owner: input.owner,\n name: input.name,\n prNumber: input.prNumber,\n })\n\n const pullRequestId = prIdResult.repository?.pullRequest?.id\n if (!pullRequestId) {\n throw new Error(\"Failed to retrieve pull request ID\")\n }\n\n const threads = input.comments\n ? input.comments.map((comment: DraftComment) => ({\n path: comment.path,\n body: comment.body,\n line: comment.line,\n ...(comment.side ? { side: comment.side } : {}),\n ...(comment.startLine ? { startLine: comment.startLine } : {}),\n ...(comment.startSide ? { startSide: comment.startSide } : {}),\n }))\n : []\n\n const result = await getPrReviewSubmitSdk(client).PrReviewSubmit({\n pullRequestId,\n event: input.event as PrReviewSubmitMutationVariables[\"event\"],\n ...(input.body === undefined ? {} : { body: input.body }),\n ...(threads.length === 0 ? {} : { threads }),\n })\n\n const review = asRecord(asRecord(result.addPullRequestReview)?.pullRequestReview)\n if (!review || typeof review.id !== \"string\") {\n throw new Error(\"Failed to parse pull request review response\")\n }\n\n return {\n id: review.id,\n state: typeof review.state === \"string\" ? review.state : \"\",\n url: typeof review.url === \"string\" ? review.url : \"\",\n body: typeof review.body === \"string\" ? review.body : null,\n }\n}\n"],"mappings":"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","names":["getSdk","defaultWrapper","getSdk","getSdk"]}
|