@mastra/github-signals 0.2.5-alpha.1 → 0.3.0-alpha.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/CHANGELOG.md +28 -0
- package/dist/index.cjs +153 -27
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +11 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +153 -27
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/dist/index.d.ts
CHANGED
|
@@ -8,10 +8,12 @@ export declare const GITHUB_UNSUBSCRIBE_PR_TAG = "github-unsubscribe-pr";
|
|
|
8
8
|
export declare const GITHUB_SYNC_STATUS_TAG = "github-sync-status";
|
|
9
9
|
export declare const GITHUB_SIGNALS_METADATA_KEY = "githubSignals";
|
|
10
10
|
export type GithubPermission = 'admin' | 'maintain' | 'write' | 'triage' | 'read' | 'none';
|
|
11
|
+
export type GithubSubscriptionMode = 'working' | 'review';
|
|
11
12
|
export type GithubPRSubscription = {
|
|
12
13
|
owner: string;
|
|
13
14
|
repo: string;
|
|
14
15
|
number: number;
|
|
16
|
+
mode: GithubSubscriptionMode;
|
|
15
17
|
subscribedAt: string;
|
|
16
18
|
updatedAt: string;
|
|
17
19
|
lastSubscribeSignalId: string;
|
|
@@ -45,7 +47,12 @@ export type GithubPRSignalInput = number | {
|
|
|
45
47
|
repo?: string;
|
|
46
48
|
number: number;
|
|
47
49
|
};
|
|
48
|
-
export type GithubSubscribePRSignalInput =
|
|
50
|
+
export type GithubSubscribePRSignalInput = number | {
|
|
51
|
+
owner?: string;
|
|
52
|
+
repo?: string;
|
|
53
|
+
number: number;
|
|
54
|
+
mode?: GithubSubscriptionMode;
|
|
55
|
+
};
|
|
49
56
|
export type GithubUnsubscribePRSignalInput = GithubPRSignalInput;
|
|
50
57
|
export type GithubSignalsSyncInput = {
|
|
51
58
|
owner: string;
|
|
@@ -184,6 +191,8 @@ type GithubOperationResult = {
|
|
|
184
191
|
owner: string;
|
|
185
192
|
repo: string;
|
|
186
193
|
number: number;
|
|
194
|
+
mode?: GithubSubscriptionMode;
|
|
195
|
+
terminalState?: 'closed' | 'merged';
|
|
187
196
|
subscription?: GithubPRSubscription;
|
|
188
197
|
syncResult?: GithubSignalsSyncResult;
|
|
189
198
|
removed?: boolean;
|
|
@@ -262,6 +271,7 @@ export declare class GithubSignals extends SignalProvider<'github-signals'> {
|
|
|
262
271
|
syncThreadNow(input: GithubPollingThread): Promise<number>;
|
|
263
272
|
subscribeThreadToPR(input: GithubPollingThread & {
|
|
264
273
|
pr: GithubPRSignalInput;
|
|
274
|
+
mode?: GithubSubscriptionMode;
|
|
265
275
|
}): Promise<GithubOperationResult>;
|
|
266
276
|
unsubscribeThreadFromPR(input: GithubPollingThread & {
|
|
267
277
|
pr: GithubPRSignalInput;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAE5F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EACzB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAmBtD,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAC7D,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AACjE,eAAO,MAAM,sBAAsB,uBAAuB,CAAC;AAC3D,eAAO,MAAM,2BAA2B,kBAAkB,CAAC;AAE3D,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -23,8 +23,8 @@ const DEFAULT_AUTHORIZED_PERMISSIONS = [
|
|
|
23
23
|
];
|
|
24
24
|
const DEFAULT_AUTHORIZED_BOTS = ["coderabbitai[bot]", "devin-ai-integration[bot]"];
|
|
25
25
|
const PERMISSION_CACHE_TTL_MS = 300 * 1e3;
|
|
26
|
-
/** Notification kinds
|
|
27
|
-
const AUTHOR_GATED_NOTIFICATION_KINDS = /* @__PURE__ */ new Set(["pull-request-activity"
|
|
26
|
+
/** Notification kinds that include comment content and should be gated by author permission. */
|
|
27
|
+
const AUTHOR_GATED_NOTIFICATION_KINDS = /* @__PURE__ */ new Set(["pull-request-activity"]);
|
|
28
28
|
const createGithubTool = createTool;
|
|
29
29
|
function isPlainObject(value) {
|
|
30
30
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -36,6 +36,12 @@ function readNumber(value) {
|
|
|
36
36
|
if (typeof value === "number" && Number.isInteger(value) && value > 0) return value;
|
|
37
37
|
if (typeof value === "string" && /^\d+$/.test(value)) return Number(value);
|
|
38
38
|
}
|
|
39
|
+
function normalizeGithubSubscriptionMode(value) {
|
|
40
|
+
return value === "review" ? "review" : "working";
|
|
41
|
+
}
|
|
42
|
+
function getGithubTerminalState(snapshot) {
|
|
43
|
+
return snapshot?.state === "closed" || snapshot?.state === "merged" ? snapshot.state : void 0;
|
|
44
|
+
}
|
|
39
45
|
function stableJson(value) {
|
|
40
46
|
if (Array.isArray(value)) return `[${value.map(stableJson).join(",")}]`;
|
|
41
47
|
if (isPlainObject(value)) return `{${Object.keys(value).sort().map((key) => `${JSON.stringify(key)}:${stableJson(value[key])}`).join(",")}}`;
|
|
@@ -96,6 +102,7 @@ function getGithubMetadata(threadMetadata) {
|
|
|
96
102
|
owner,
|
|
97
103
|
repo,
|
|
98
104
|
number,
|
|
105
|
+
mode: normalizeGithubSubscriptionMode(rawSubscription.mode),
|
|
99
106
|
subscribedAt,
|
|
100
107
|
updatedAt,
|
|
101
108
|
lastSubscribeSignalId,
|
|
@@ -150,8 +157,11 @@ function getPrLabel(subscription, snapshot) {
|
|
|
150
157
|
const pr = `${subscription.owner}/${subscription.repo}#${subscription.number}`;
|
|
151
158
|
return snapshot?.title ? `${pr}: ${snapshot.title}` : pr;
|
|
152
159
|
}
|
|
160
|
+
function getTerminalNotificationSummary(label, terminalState) {
|
|
161
|
+
return `${label} was ${terminalState}. This thread has been automatically unsubscribed from this PR. Resubscribe if you still need updates.`;
|
|
162
|
+
}
|
|
153
163
|
function getMergedNotificationSummary(label) {
|
|
154
|
-
return
|
|
164
|
+
return getTerminalNotificationSummary(label, "merged");
|
|
155
165
|
}
|
|
156
166
|
/**
|
|
157
167
|
* Removes a hidden block (its delimiters *and* its content) starting at every `open` marker.
|
|
@@ -249,7 +259,10 @@ const githubActivityNotificationPriority = {
|
|
|
249
259
|
medium: 1
|
|
250
260
|
};
|
|
251
261
|
function getGithubActivityNotificationRank(notification) {
|
|
252
|
-
|
|
262
|
+
if (notification.kind === "pull-request-activity") return 0;
|
|
263
|
+
if (notification.kind === "pull-request-code-activity") return 1;
|
|
264
|
+
if (notification.kind === "pull-request-review-activity") return 2;
|
|
265
|
+
return 3;
|
|
253
266
|
}
|
|
254
267
|
function compareGithubActivityNotifications(a, b) {
|
|
255
268
|
if (!a && !b) return 0;
|
|
@@ -269,6 +282,28 @@ function classifyGithubCommentActivityNotification(input) {
|
|
|
269
282
|
summary
|
|
270
283
|
};
|
|
271
284
|
}
|
|
285
|
+
function classifyGithubTerminalActivityNotification(input) {
|
|
286
|
+
return {
|
|
287
|
+
kind: input.terminalState === "merged" ? "pull-request-merged" : "pull-request-closed",
|
|
288
|
+
priority: "high",
|
|
289
|
+
summary: getTerminalNotificationSummary(getPrLabel(input.subscription, input.snapshot), input.terminalState)
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
function classifyGithubHeadActivityNotification(input) {
|
|
293
|
+
return {
|
|
294
|
+
kind: "pull-request-code-activity",
|
|
295
|
+
priority: "medium",
|
|
296
|
+
summary: `New head revision for ${getPrLabel(input.subscription, input.snapshot)}.`
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
function classifyGithubReviewStateActivityNotification(input) {
|
|
300
|
+
const count = input.snapshot.unresolvedReviewThreads ?? 0;
|
|
301
|
+
return {
|
|
302
|
+
kind: "pull-request-review-activity",
|
|
303
|
+
priority: "medium",
|
|
304
|
+
summary: count === 0 ? `All review threads are resolved for ${getPrLabel(input.subscription, input.snapshot)}.` : `${getPrLabel(input.subscription, input.snapshot)} has ${count} unresolved review ${count === 1 ? "thread" : "threads"}.`
|
|
305
|
+
};
|
|
306
|
+
}
|
|
272
307
|
function getCheckUpdatedTime(check) {
|
|
273
308
|
const value = check.updatedAt ? Date.parse(check.updatedAt) : NaN;
|
|
274
309
|
return Number.isFinite(value) ? value : 0;
|
|
@@ -679,6 +714,7 @@ var GithubSignals = class extends SignalProvider {
|
|
|
679
714
|
static signals = {
|
|
680
715
|
subscribeToPR(input) {
|
|
681
716
|
const normalized = typeof input === "number" ? { number: input } : input;
|
|
717
|
+
const mode = normalizeGithubSubscriptionMode(normalized.mode);
|
|
682
718
|
return {
|
|
683
719
|
type: "reactive",
|
|
684
720
|
tagName: GITHUB_SUBSCRIBE_PR_TAG,
|
|
@@ -686,11 +722,13 @@ var GithubSignals = class extends SignalProvider {
|
|
|
686
722
|
attributes: {
|
|
687
723
|
...normalized.owner ? { owner: normalized.owner } : {},
|
|
688
724
|
...normalized.repo ? { repo: normalized.repo } : {},
|
|
689
|
-
number: normalized.number
|
|
725
|
+
number: normalized.number,
|
|
726
|
+
mode
|
|
690
727
|
},
|
|
691
728
|
metadata: { github: {
|
|
692
729
|
action: "subscribeToPR",
|
|
693
|
-
...normalized
|
|
730
|
+
...normalized,
|
|
731
|
+
mode
|
|
694
732
|
} }
|
|
695
733
|
};
|
|
696
734
|
},
|
|
@@ -770,6 +808,7 @@ var GithubSignals = class extends SignalProvider {
|
|
|
770
808
|
return this.#subscribe({
|
|
771
809
|
id: `github-command-subscribe-${randomUUID()}`,
|
|
772
810
|
...pr,
|
|
811
|
+
mode: normalizeGithubSubscriptionMode(input.mode),
|
|
773
812
|
threadId: input.threadId,
|
|
774
813
|
resourceId: input.resourceId
|
|
775
814
|
});
|
|
@@ -874,10 +913,11 @@ var GithubSignals = class extends SignalProvider {
|
|
|
874
913
|
abortSignal: args.abortSignal
|
|
875
914
|
});
|
|
876
915
|
if (result.alreadyProcessed) return { tools };
|
|
916
|
+
const terminalMessage = result.terminalState ? `Not subscribed to ${result.owner}/${result.repo}#${result.number} in review mode because it is already ${result.terminalState}.` : void 0;
|
|
877
917
|
await this.#sendStatus(args, result, {
|
|
878
|
-
status: result.syncResult?.ok === false ? "sync_error" : "subscribed",
|
|
918
|
+
status: result.terminalState ? "not_subscribed_terminal" : result.syncResult?.ok === false ? "sync_error" : "subscribed",
|
|
879
919
|
action: "subscribeToPR",
|
|
880
|
-
message: result.syncResult?.ok === false ? `Subscribed to ${result.owner}/${result.repo}#${result.number}, but gitcrawl sync failed: ${result.syncResult.error}` : `Subscribed to ${result.owner}/${result.repo}#${result.number}.`
|
|
920
|
+
message: terminalMessage ?? (result.syncResult?.ok === false ? `Subscribed to ${result.owner}/${result.repo}#${result.number} in ${result.mode} mode, but gitcrawl sync failed: ${result.syncResult.error}` : `Subscribed to ${result.owner}/${result.repo}#${result.number} in ${result.mode} mode.`)
|
|
881
921
|
});
|
|
882
922
|
return { tools };
|
|
883
923
|
}
|
|
@@ -917,8 +957,12 @@ var GithubSignals = class extends SignalProvider {
|
|
|
917
957
|
await args.sendSignal?.({
|
|
918
958
|
type: "reactive",
|
|
919
959
|
tagName: "system-reminder",
|
|
920
|
-
contents: `
|
|
921
|
-
attributes: {
|
|
960
|
+
contents: `Choose whether to follow ${repository.owner}/${repository.repo}#${evidence.number}: use /github subscribe ${evidence.number} --mode review for new commits, authorized latest PR comments, review-thread-state changes including all threads resolved, and PR close or merge updates; use --mode working for all actionable PR activity. Do not subscribe for a one-off inspection.`,
|
|
961
|
+
attributes: {
|
|
962
|
+
type: "github-subscription-hint",
|
|
963
|
+
availableModes: "review,working",
|
|
964
|
+
defaultMode: null
|
|
965
|
+
},
|
|
922
966
|
metadata: { github: {
|
|
923
967
|
action: "subscriptionHint",
|
|
924
968
|
owner: repository.owner,
|
|
@@ -949,11 +993,12 @@ var GithubSignals = class extends SignalProvider {
|
|
|
949
993
|
...args.tools,
|
|
950
994
|
github_subscribe_pr: createGithubTool({
|
|
951
995
|
id: "github_subscribe_pr",
|
|
952
|
-
description: "Subscribe this thread to a GitHub pull request.
|
|
996
|
+
description: "Subscribe this thread to a GitHub pull request. Use review mode for new commits, authorized latest PR comments, review-thread-state changes including all threads resolved, and PR close or merge updates. Use working mode for all actionable PR activity. Omitted mode defaults to working. Do not subscribe for a one-off inspection.",
|
|
953
997
|
inputSchema: z.object({
|
|
954
998
|
number: z.number().int().positive(),
|
|
955
999
|
owner: z.string().optional(),
|
|
956
|
-
repo: z.string().optional()
|
|
1000
|
+
repo: z.string().optional(),
|
|
1001
|
+
mode: z.enum(["working", "review"]).optional()
|
|
957
1002
|
}),
|
|
958
1003
|
execute: async (input, context) => {
|
|
959
1004
|
const executionThreadContext = getExecutionThreadContext(context);
|
|
@@ -962,16 +1007,28 @@ var GithubSignals = class extends SignalProvider {
|
|
|
962
1007
|
owner: input.owner,
|
|
963
1008
|
repo: input.repo,
|
|
964
1009
|
number: input.number,
|
|
1010
|
+
mode: normalizeGithubSubscriptionMode(input.mode),
|
|
965
1011
|
threadId: executionThreadContext.threadId,
|
|
966
1012
|
resourceId: executionThreadContext.resourceId
|
|
967
1013
|
});
|
|
1014
|
+
if (result.terminalState) return {
|
|
1015
|
+
subscribed: false,
|
|
1016
|
+
mode: result.mode,
|
|
1017
|
+
terminalState: result.terminalState,
|
|
1018
|
+
reason: "terminal",
|
|
1019
|
+
owner: result.owner,
|
|
1020
|
+
repo: result.repo,
|
|
1021
|
+
number: result.number,
|
|
1022
|
+
message: `Not subscribed to ${result.owner}/${result.repo}#${result.number} in review mode because it is already ${result.terminalState}.`
|
|
1023
|
+
};
|
|
968
1024
|
return {
|
|
969
1025
|
subscribed: true,
|
|
1026
|
+
mode: result.mode,
|
|
970
1027
|
owner: result.owner,
|
|
971
1028
|
repo: result.repo,
|
|
972
1029
|
number: result.number,
|
|
973
1030
|
syncStatus: result.syncResult?.ok === false ? "error" : result.syncResult ? "success" : void 0,
|
|
974
|
-
message: result.syncResult?.ok === false ? `Subscribed to ${result.owner}/${result.repo}#${result.number}, but gitcrawl sync failed: ${result.syncResult.error}` : `Subscribed to ${result.owner}/${result.repo}#${result.number}.`
|
|
1031
|
+
message: result.syncResult?.ok === false ? `Subscribed to ${result.owner}/${result.repo}#${result.number} in ${result.mode} mode, but gitcrawl sync failed: ${result.syncResult.error}` : `Subscribed to ${result.owner}/${result.repo}#${result.number} in ${result.mode} mode.`
|
|
975
1032
|
};
|
|
976
1033
|
}
|
|
977
1034
|
}),
|
|
@@ -1111,15 +1168,19 @@ var GithubSignals = class extends SignalProvider {
|
|
|
1111
1168
|
const previousContentHash = subscription.lastObservedContentHash;
|
|
1112
1169
|
const previousThreadContentHash = subscription.lastObservedThreadContentHash;
|
|
1113
1170
|
const previousHeadSha = subscription.lastObservedHeadSha;
|
|
1171
|
+
const previousReviewStateHash = subscription.lastObservedReviewStateHash;
|
|
1114
1172
|
const latestCommentTimestampChanged = !!previousGithubUpdatedAt && !!snapshot?.latestCommentUpdatedAt && Date.parse(snapshot.latestCommentUpdatedAt) > Date.parse(previousGithubUpdatedAt);
|
|
1115
1173
|
const existingBotCommentEdited = latestCommentTimestampChanged && !!snapshot && isExistingBotCommentEdit(subscription, snapshot);
|
|
1116
1174
|
const latestCommentChanged = latestCommentTimestampChanged && !existingBotCommentEdited;
|
|
1175
|
+
const headChanged = !!previousHeadSha && !!snapshot?.headSha && previousHeadSha !== snapshot.headSha;
|
|
1176
|
+
const reviewStateChanged = !!previousReviewStateHash && !!snapshot?.reviewStateHash && previousReviewStateHash !== snapshot.reviewStateHash;
|
|
1117
1177
|
if (snapshot) applySnapshotCursor(nextSubscription, snapshot);
|
|
1118
1178
|
const isFirstObservation = syncResult.ok && snapshot && !previousGithubUpdatedAt && !previousContentHash;
|
|
1119
1179
|
const legacyAggregateChanged = previousContentHash && snapshot?.contentHash && previousContentHash !== snapshot.contentHash && !previousThreadContentHash && !previousHeadSha;
|
|
1120
|
-
const changed = isFirstObservation || syncResult.ok && snapshot && (legacyAggregateChanged || latestCommentChanged || previousThreadContentHash && snapshot.threadContentHash && previousThreadContentHash !== snapshot.threadContentHash && !existingBotCommentEdited ||
|
|
1121
|
-
|
|
1122
|
-
|
|
1180
|
+
const changed = isFirstObservation || syncResult.ok && snapshot && (legacyAggregateChanged || latestCommentChanged || previousThreadContentHash && snapshot.threadContentHash && previousThreadContentHash !== snapshot.threadContentHash && !existingBotCommentEdited || headChanged || subscription.lastObservedState && snapshot.state && subscription.lastObservedState !== snapshot.state || hasMeaningfulMergeableStateChange(subscription.lastObservedMergeableState, snapshot.mergeableState) || subscription.lastObservedCiState && snapshot.ciState && subscription.lastObservedCiState !== snapshot.ciState || reviewStateChanged);
|
|
1181
|
+
const terminalState = subscription.mode === "review" ? getGithubTerminalState(snapshot) : void 0;
|
|
1182
|
+
let shouldKeepSubscription = !terminalState;
|
|
1183
|
+
if ((changed || terminalState) && snapshot && !(subscription.mode === "review" && isFirstObservation && !terminalState) && isCurrentGeneration()) {
|
|
1123
1184
|
const notifications = await this.#sendActivityNotifications({
|
|
1124
1185
|
polling: input,
|
|
1125
1186
|
subscription,
|
|
@@ -1127,6 +1188,9 @@ var GithubSignals = class extends SignalProvider {
|
|
|
1127
1188
|
previousGithubUpdatedAt,
|
|
1128
1189
|
previousContentHash,
|
|
1129
1190
|
latestCommentChanged,
|
|
1191
|
+
headChanged,
|
|
1192
|
+
reviewStateChanged,
|
|
1193
|
+
terminalState,
|
|
1130
1194
|
isCurrentGeneration
|
|
1131
1195
|
});
|
|
1132
1196
|
if (!isCurrentGeneration()) return 0;
|
|
@@ -1136,7 +1200,7 @@ var GithubSignals = class extends SignalProvider {
|
|
|
1136
1200
|
nextSubscription.lastNotificationKind = primaryNotification.kind;
|
|
1137
1201
|
nextSubscription.lastNotificationPriority = primaryNotification.priority;
|
|
1138
1202
|
nextSubscription.lastNotificationSummary = primaryNotification.summary;
|
|
1139
|
-
shouldKeepSubscription = notifications.every((notification) => notification.kind !== "pull-request-merged");
|
|
1203
|
+
if (!terminalState) shouldKeepSubscription = notifications.every((notification) => notification.kind !== "pull-request-merged");
|
|
1140
1204
|
}
|
|
1141
1205
|
}
|
|
1142
1206
|
if (shouldKeepSubscription) subscriptions.push(nextSubscription);
|
|
@@ -1186,6 +1250,7 @@ var GithubSignals = class extends SignalProvider {
|
|
|
1186
1250
|
owner: input.subscription.owner,
|
|
1187
1251
|
repo: input.subscription.repo,
|
|
1188
1252
|
number: input.subscription.number,
|
|
1253
|
+
mode: input.subscription.mode,
|
|
1189
1254
|
...input.snapshot.title ? { title: input.snapshot.title } : {},
|
|
1190
1255
|
...input.snapshot.state ? { state: input.snapshot.state } : {},
|
|
1191
1256
|
...input.snapshot.htmlUrl ? { url: input.snapshot.htmlUrl } : {},
|
|
@@ -1205,6 +1270,7 @@ var GithubSignals = class extends SignalProvider {
|
|
|
1205
1270
|
owner: input.subscription.owner,
|
|
1206
1271
|
repo: input.subscription.repo,
|
|
1207
1272
|
number: input.subscription.number,
|
|
1273
|
+
mode: input.subscription.mode,
|
|
1208
1274
|
title: input.snapshot.title,
|
|
1209
1275
|
state: input.snapshot.state,
|
|
1210
1276
|
htmlUrl: input.snapshot.htmlUrl,
|
|
@@ -1347,14 +1413,36 @@ var GithubSignals = class extends SignalProvider {
|
|
|
1347
1413
|
async #sendActivityNotifications(input) {
|
|
1348
1414
|
const agent = this.#getNotificationAgent(input.polling);
|
|
1349
1415
|
if (!agent?.sendNotificationSignal) return [];
|
|
1350
|
-
const notifications = [
|
|
1351
|
-
|
|
1352
|
-
snapshot: input.snapshot
|
|
1353
|
-
})];
|
|
1354
|
-
if (input.latestCommentChanged && notifications[0]?.kind !== "pull-request-activity") notifications.push(classifyGithubCommentActivityNotification({
|
|
1416
|
+
const notifications = [];
|
|
1417
|
+
if (input.subscription.mode === "review") if (input.terminalState) notifications.push(classifyGithubTerminalActivityNotification({
|
|
1355
1418
|
subscription: input.subscription,
|
|
1356
|
-
snapshot: input.snapshot
|
|
1419
|
+
snapshot: input.snapshot,
|
|
1420
|
+
terminalState: input.terminalState
|
|
1357
1421
|
}));
|
|
1422
|
+
else {
|
|
1423
|
+
if (input.latestCommentChanged) notifications.push(classifyGithubCommentActivityNotification({
|
|
1424
|
+
subscription: input.subscription,
|
|
1425
|
+
snapshot: input.snapshot
|
|
1426
|
+
}));
|
|
1427
|
+
if (input.headChanged) notifications.push(classifyGithubHeadActivityNotification({
|
|
1428
|
+
subscription: input.subscription,
|
|
1429
|
+
snapshot: input.snapshot
|
|
1430
|
+
}));
|
|
1431
|
+
if (input.reviewStateChanged) notifications.push(classifyGithubReviewStateActivityNotification({
|
|
1432
|
+
subscription: input.subscription,
|
|
1433
|
+
snapshot: input.snapshot
|
|
1434
|
+
}));
|
|
1435
|
+
}
|
|
1436
|
+
else {
|
|
1437
|
+
notifications.push(classifyGithubActivityNotification({
|
|
1438
|
+
subscription: input.subscription,
|
|
1439
|
+
snapshot: input.snapshot
|
|
1440
|
+
}));
|
|
1441
|
+
if (input.latestCommentChanged && notifications[0]?.kind !== "pull-request-activity") notifications.push(classifyGithubCommentActivityNotification({
|
|
1442
|
+
subscription: input.subscription,
|
|
1443
|
+
snapshot: input.snapshot
|
|
1444
|
+
}));
|
|
1445
|
+
}
|
|
1358
1446
|
const sent = [];
|
|
1359
1447
|
const notificationInputs = [];
|
|
1360
1448
|
for (const notification of notifications.sort(compareGithubActivityNotifications)) {
|
|
@@ -1394,6 +1482,7 @@ var GithubSignals = class extends SignalProvider {
|
|
|
1394
1482
|
return sent;
|
|
1395
1483
|
}
|
|
1396
1484
|
async #subscribe(input) {
|
|
1485
|
+
const mode = normalizeGithubSubscriptionMode(input.mode);
|
|
1397
1486
|
const { owner, repo } = await this.#resolveRepository(input);
|
|
1398
1487
|
const { threadStore, loadedThread } = await this.#loadThread(input);
|
|
1399
1488
|
const githubMetadata = getGithubMetadata(loadedThread.metadata);
|
|
@@ -1403,6 +1492,7 @@ var GithubSignals = class extends SignalProvider {
|
|
|
1403
1492
|
owner,
|
|
1404
1493
|
repo,
|
|
1405
1494
|
number: input.number,
|
|
1495
|
+
mode: existing.mode,
|
|
1406
1496
|
subscription: existing,
|
|
1407
1497
|
alreadyProcessed: true
|
|
1408
1498
|
};
|
|
@@ -1411,6 +1501,7 @@ var GithubSignals = class extends SignalProvider {
|
|
|
1411
1501
|
owner,
|
|
1412
1502
|
repo,
|
|
1413
1503
|
number: input.number,
|
|
1504
|
+
mode,
|
|
1414
1505
|
subscribedAt: existing?.subscribedAt ?? now,
|
|
1415
1506
|
updatedAt: now,
|
|
1416
1507
|
lastSubscribeSignalId: input.id,
|
|
@@ -1454,6 +1545,35 @@ var GithubSignals = class extends SignalProvider {
|
|
|
1454
1545
|
baselineSnapshot = snapshot;
|
|
1455
1546
|
if (snapshot) applySnapshotCursor(subscription, snapshot);
|
|
1456
1547
|
} else subscription.lastSyncStatus = "skipped";
|
|
1548
|
+
const terminalState = mode === "review" ? getGithubTerminalState(baselineSnapshot) : void 0;
|
|
1549
|
+
if (terminalState) {
|
|
1550
|
+
const subscriptions = githubMetadata.subscriptions.filter((candidate) => !(candidate.owner === owner && candidate.repo === repo && candidate.number === input.number));
|
|
1551
|
+
await threadStore.saveThread({ thread: {
|
|
1552
|
+
...loadedThread,
|
|
1553
|
+
id: input.threadId,
|
|
1554
|
+
resourceId: input.resourceId,
|
|
1555
|
+
createdAt: loadedThread.createdAt ?? /* @__PURE__ */ new Date(),
|
|
1556
|
+
updatedAt: /* @__PURE__ */ new Date(),
|
|
1557
|
+
metadata: setGithubMetadata(loadedThread.metadata, { subscriptions })
|
|
1558
|
+
} });
|
|
1559
|
+
this.#notifySubscriptionsChanged({
|
|
1560
|
+
threadId: input.threadId,
|
|
1561
|
+
resourceId: input.resourceId,
|
|
1562
|
+
subscriptions
|
|
1563
|
+
});
|
|
1564
|
+
if (subscriptions.length === 0) this.stopPollingForThread({
|
|
1565
|
+
threadId: input.threadId,
|
|
1566
|
+
resourceId: input.resourceId
|
|
1567
|
+
});
|
|
1568
|
+
return {
|
|
1569
|
+
owner,
|
|
1570
|
+
repo,
|
|
1571
|
+
number: input.number,
|
|
1572
|
+
mode,
|
|
1573
|
+
terminalState,
|
|
1574
|
+
syncResult
|
|
1575
|
+
};
|
|
1576
|
+
}
|
|
1457
1577
|
const subscriptions = [subscription];
|
|
1458
1578
|
await threadStore.saveThread({ thread: {
|
|
1459
1579
|
...loadedThread,
|
|
@@ -1468,7 +1588,7 @@ var GithubSignals = class extends SignalProvider {
|
|
|
1468
1588
|
resourceId: input.resourceId,
|
|
1469
1589
|
subscriptions
|
|
1470
1590
|
});
|
|
1471
|
-
if (baselineSnapshot) await this.#sendBaselineNotification({
|
|
1591
|
+
if (baselineSnapshot && mode === "working") await this.#sendBaselineNotification({
|
|
1472
1592
|
threadId: input.threadId,
|
|
1473
1593
|
resourceId: input.resourceId,
|
|
1474
1594
|
subscription,
|
|
@@ -1482,6 +1602,7 @@ var GithubSignals = class extends SignalProvider {
|
|
|
1482
1602
|
owner,
|
|
1483
1603
|
repo,
|
|
1484
1604
|
number: input.number,
|
|
1605
|
+
mode,
|
|
1485
1606
|
subscription,
|
|
1486
1607
|
syncResult
|
|
1487
1608
|
};
|
|
@@ -1534,7 +1655,8 @@ var GithubSignals = class extends SignalProvider {
|
|
|
1534
1655
|
id: readString(signal.id) ?? message.id,
|
|
1535
1656
|
owner: readString(attributes.owner) ?? readString(github.owner),
|
|
1536
1657
|
repo: readString(attributes.repo) ?? readString(github.repo),
|
|
1537
|
-
number
|
|
1658
|
+
number,
|
|
1659
|
+
...signal.tagName === "github-subscribe-pr" ? { mode: normalizeGithubSubscriptionMode(attributes.mode ?? github.mode) } : {}
|
|
1538
1660
|
};
|
|
1539
1661
|
}
|
|
1540
1662
|
async #sendStatus(args, signal, status) {
|
|
@@ -1546,14 +1668,18 @@ var GithubSignals = class extends SignalProvider {
|
|
|
1546
1668
|
status: status.status,
|
|
1547
1669
|
owner: signal.owner,
|
|
1548
1670
|
repo: signal.repo,
|
|
1549
|
-
number: signal.number
|
|
1671
|
+
number: signal.number,
|
|
1672
|
+
...signal.mode ? { mode: signal.mode } : {},
|
|
1673
|
+
...signal.terminalState ? { terminalState: signal.terminalState } : {}
|
|
1550
1674
|
},
|
|
1551
1675
|
metadata: { github: {
|
|
1552
1676
|
action: status.action,
|
|
1553
1677
|
status: status.status,
|
|
1554
1678
|
owner: signal.owner,
|
|
1555
1679
|
repo: signal.repo,
|
|
1556
|
-
number: signal.number
|
|
1680
|
+
number: signal.number,
|
|
1681
|
+
...signal.mode ? { mode: signal.mode } : {},
|
|
1682
|
+
...signal.terminalState ? { terminalState: signal.terminalState } : {}
|
|
1557
1683
|
} }
|
|
1558
1684
|
});
|
|
1559
1685
|
}
|