@qwen-code/channel-github 0.26.6 → 0.26.7

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.
@@ -4,6 +4,8 @@ interface GithubConfig extends ChannelConfig {
4
4
  baseUrl?: string;
5
5
  reasonFilter?: unknown;
6
6
  useLocalGh?: boolean;
7
+ deliverToBoundSessions?: boolean;
8
+ prWatchEvents?: unknown;
7
9
  }
8
10
  interface GithubCursor {
9
11
  lastProcessedAt: string;
@@ -18,13 +20,41 @@ interface GithubCursor {
18
20
  dispatchedBodies?: string[];
19
21
  /** Comment node IDs already accepted by the channel. */
20
22
  dispatchedComments?: string[];
23
+ /**
24
+ * created_at per dispatched comment key, so eviction can respect the
25
+ * re-list window: a comment whose created_at is newer than the committed
26
+ * cursor can still be re-fetched (mark-read may have failed), so its key
27
+ * must NOT be evicted — otherwise a re-listed aggregate SUPERSET batch
28
+ * re-dispatches already-replied comments under a fresh batch hash that
29
+ * misses the publication-audit backstop. Keys without a recorded time are
30
+ * treated as protected (conservative). Bounded by MAX_COMMENT_TIMES, which
31
+ * retains every ring key's time plus the still-re-listable fetched comments.
32
+ */
33
+ dispatchedCommentTimes?: Record<string, string>;
21
34
  /** Direct-action event node IDs already accepted by the channel. */
22
35
  dispatchedEvents?: string[];
23
36
  }
37
+ /**
38
+ * The prWatchEvents vocabulary, shared by the config validator, the watch
39
+ * emit path, and the management UI's option list (built from this constant
40
+ * in index.ts) so the three cannot drift apart (R2-18). Lowercase: the
41
+ * editor and normalizePrWatchEvents both lowercase before matching.
42
+ */
43
+ export declare const PR_WATCH_EVENTS: readonly ["ci_failure", "merge_conflict", "head_change", "state_change"];
44
+ interface BoundSessionConfigFields {
45
+ deliverToBoundSessions?: unknown;
46
+ prWatchEvents?: unknown;
47
+ }
48
+ /**
49
+ * Shared validation for the plugin descriptor (returns the message) and
50
+ * connect() (throws it): one source of truth for the event vocabulary and
51
+ * the dependency rule, so the management UI and the adapter cannot drift.
52
+ */
53
+ export declare function validateBoundSessionConfig(config: BoundSessionConfigFields, channelName: string): string | undefined;
24
54
  interface PublicationAuditRecord {
25
55
  at: string;
26
56
  type: 'github_publication';
27
- outcome: 'posted' | 'suppressed' | 'failed' | 'posting';
57
+ outcome: 'posted' | 'suppressed' | 'failed' | 'failed_ambiguous' | 'posting';
28
58
  channel: string;
29
59
  triggerKind?: string;
30
60
  repository: string;
@@ -47,11 +77,64 @@ export declare class GithubChannel extends PollingChannelBase<GithubCursor> {
47
77
  private webOrigin;
48
78
  private readonly activeReactions;
49
79
  private readonly reactionsPendingRemoval;
80
+ private readonly ackAnchorByBatch;
50
81
  private pendingFinalDeliveryRetry;
51
82
  private pendingFinalDeliveryRetryAbort;
52
83
  private pendingFinalDeliveryRequestsActive;
53
84
  private pendingFinalDeliveryRetryStopRequested;
54
85
  private reasonFilter;
86
+ private deliverToBoundSessions;
87
+ private prWatchEvents;
88
+ private githubHost;
89
+ private boundSessionByPr;
90
+ private lastBindings;
91
+ private lastBindingsPartial;
92
+ private boundRefreshFailed;
93
+ /**
94
+ * False until the first COMPLETE binding snapshot succeeds. Re-validation
95
+ * and watch pruning require an authoritative enumeration, so they stay
96
+ * gated on this (a partial answer is not an absence).
97
+ */
98
+ private boundSnapshotTrusted;
99
+ /**
100
+ * False until ANY binding snapshot succeeds (complete or partial). The
101
+ * cold-start comment-lane gate uses this, not boundSnapshotTrusted: the
102
+ * map is populated from partial snapshots too. Gating on complete-only
103
+ * would stall the lane forever under a permanent partial (multi-page
104
+ * scan / non-active workspace). An EMPTY partial answer is additionally
105
+ * bounded by coldEmptyPartialStreak: success of an incomplete scan does
106
+ * not establish absence, so the first such answers must not open the
107
+ * lane onto an empty map.
108
+ */
109
+ private boundSnapshotSeen;
110
+ /**
111
+ * Consecutive empty partial snapshots while no complete snapshot has ever
112
+ * succeeded and the map is empty. Drives the bounded cold-start deferral
113
+ * (MAX_COLD_EMPTY_PARTIAL_POLLS); reset by any complete or non-empty
114
+ * answer.
115
+ */
116
+ private coldEmptyPartialStreak;
117
+ private partialSnapshotStreak;
118
+ /**
119
+ * True while the most recent pending-watch reconciliation FAILED (e.g.
120
+ * the watch file is unreadable). Generic recovery must then leave watch
121
+ * tasks alone: delivering and removing an accepted watch task without
122
+ * reconciling its on-disk pending record would let a later drain claim
123
+ * and deliver the same transition a second time. Unrelated comment
124
+ * recovery keeps running.
125
+ */
126
+ private watchReconcileBlocked;
127
+ /**
128
+ * Consecutive binding-refresh failures since the last success. While no
129
+ * snapshot has ever succeeded, the cold-start gate defers the comment lane,
130
+ * so a permanent failure (an old daemon lacking the route, rotated
131
+ * credentials) would freeze every notification silently. The streak drives
132
+ * a distinct, throttled, actionable log so the stall is observable; the
133
+ * gate itself stays fail-closed.
134
+ */
135
+ private boundSnapshotFailureStreak;
136
+ private prWatchState;
137
+ private prWatchStateLoaded;
55
138
  private inboundRecoveryPending;
56
139
  private recoverableInboundTasks;
57
140
  private activeInboundTaskIdsByMessage;
@@ -105,14 +188,70 @@ export declare class GithubChannel extends PollingChannelBase<GithubCursor> {
105
188
  private recordDispatchedBody;
106
189
  private recordDispatchedComment;
107
190
  private recordDispatched;
191
+ /**
192
+ * Window-aware eviction. Once over the soft cap, drop EVERY key whose
193
+ * comment can no longer be re-listed (created_at <= the committed cursor),
194
+ * keeping protected keys regardless of position. A key newer than the
195
+ * cursor — or with no recorded time (legacy migration) — is protected:
196
+ * evicting it would let a re-listed aggregate SUPERSET re-dispatch
197
+ * already-replied comments under a fresh batch hash that misses the
198
+ * publication-audit backstop (duplicate public reply / private injection
199
+ * without any crash). Under a sustained frozen cursor the protected ring
200
+ * grows with the re-list window (bounded by traffic × outage duration);
201
+ * it shrinks again once mark-read recovers and the cursor passes the keys.
202
+ * A protected key is NEVER evicted to make room — there is no hard-cap
203
+ * refusal, because refusing dispatches without freezing the cursor would
204
+ * mark-read the refused events (silent loss), and freezing the cursor
205
+ * would deadlock (the ring can only shrink once the cursor advances).
206
+ */
207
+ private evictDispatchedComments;
208
+ /**
209
+ * Bound the time map: drop entries that are neither in the ring nor still
210
+ * re-listable. Times for fetched-but-not-yet-dispatched comments survive
211
+ * while their created_at is newer than the cursor (they may be dispatched
212
+ * later this poll), so eviction never loses a key's protection mid-poll.
213
+ */
214
+ private pruneCommentTimes;
108
215
  private dispatchEnvelope;
109
216
  private claimInboundTask;
110
217
  private runInboundTask;
111
218
  private recoverInboundTasks;
112
219
  private isRecoverableInboundTask;
113
220
  private hasRecoverableInboundTasks;
221
+ /**
222
+ * Recoverable tasks that may hold the shared notification cursor. Pure
223
+ * backpressure is excluded: it has its own durable retry and a bounded
224
+ * deferral horizon, and must not freeze mark-as-read for every unrelated
225
+ * PR the channel follows. This covers both bound deliveries and the
226
+ * targetless deferrals an incomplete binding snapshot produces (no
227
+ * delivery yet, same durable retry). Watch tasks are excluded while
228
+ * reconcile is blocked: recovery skips them and the drain cannot run, so
229
+ * they cannot make progress — and watch events are detected from PR
230
+ * state, not notifications, so holding the cursor for them only stalls
231
+ * unrelated comment traffic until the watch sidecar recovers. Once
232
+ * reconcile succeeds they count again, and their retry budgets guarantee
233
+ * they settle instead of freezing the cursor forever.
234
+ */
235
+ private hasCursorBlockingTasks;
236
+ /**
237
+ * Terminal outcome for a bound event that can no longer be delivered:
238
+ * append it to the private dead-letter log (the private path's exhaustion
239
+ * surface — it posts no public error comment) and remove the task. The
240
+ * event is surfaced for operator inspection, never silently consumed —
241
+ * including when the dead-letter write itself fails: the task is then
242
+ * kept, not removed.
243
+ */
244
+ private retireBoundTask;
114
245
  private hasPendingFinalDeliveryForTask;
115
246
  private inboundTaskSourceKey;
247
+ private publicationAuditKeysCache;
248
+ private publicationAuditBlocked;
249
+ /**
250
+ * Publication audit keys cached for the current poll (reset at pollOnce
251
+ * start). Strict: an unreadable audit fails closed so the caller skips
252
+ * the event this poll instead of risking a duplicate publication.
253
+ */
254
+ private publicationAuditKeysThisPoll;
116
255
  private readPublicationAuditKeys;
117
256
  private applyTaskDedupe;
118
257
  private transitionInboundTask;
@@ -131,6 +270,77 @@ export declare class GithubChannel extends PollingChannelBase<GithubCursor> {
131
270
  private buildRouteMetadata;
132
271
  private githubApi;
133
272
  private sleepForRetry;
273
+ private prBindingKey;
274
+ /**
275
+ * Parses a binding URL into its repo/number identity. Only GitHub web URLs
276
+ * on this channel's host qualify; Aone and other providers are ignored.
277
+ * Trailing tab segments (/files, /commits, /checks) are tolerated: the
278
+ * binding routes accept any http(s) URL naming the PR.
279
+ */
280
+ private parsePrBindingUrl;
281
+ private refreshBoundSessions;
282
+ private resolveBoundDelivery;
283
+ /**
284
+ * Pick the most-recent live follower of a PR from the full binding list,
285
+ * excluding sessions already known Gone in this delivery attempt. Unlike
286
+ * resolveBoundDelivery (the single routing-map winner), this scans every
287
+ * listed follower so the gone-fallback can iterate past a Gone winner to
288
+ * the next live session — evicting the winner empties the routing map, and
289
+ * a stale refresh can re-list an already-Gone session as the winner; both
290
+ * would otherwise skip a live follower and fall through to an irreversible
291
+ * public reply while a complete snapshot still lists a follower.
292
+ */
293
+ private resolveBoundDeliveryExcluding;
294
+ /**
295
+ * Remove a session the daemon reported permanently gone from both binding
296
+ * maps. A later partial snapshot otherwise retains it by recency (an
297
+ * incomplete enumeration is a non-absence, but an authoritative Gone is),
298
+ * shadowing any live follower of the same PR.
299
+ */
300
+ private evictBoundSession;
301
+ private buildBoundSessionPrompt;
302
+ private deliverToBoundSession;
303
+ private prWatchStatePath;
304
+ private loadPrWatchState;
305
+ /**
306
+ * Whether any persisted watch entry still holds pending events. Keeps
307
+ * recovery blocked while watch subscriptions are disabled: an accepted
308
+ * task whose pending record is unreconciled must not be delivered and
309
+ * removed ahead of a later re-enabled drain. Fail-closed on read errors.
310
+ */
311
+ private hasUnreconciledWatchPending;
312
+ /**
313
+ * PR keys whose earlier watch transition still has a recoverable inbound
314
+ * task. Undefined when the task store cannot be read: the caller must
315
+ * not prune or evict watch memory it cannot cross-check (fail-closed).
316
+ */
317
+ private survivingWatchPrKeys;
318
+ private savePrWatchState;
319
+ /**
320
+ * Drain durable pending watch events independently of the live API pass
321
+ * and BEFORE generic recovery. Needs no GitHub calls: a failing or
322
+ * rate-limited watch pass must not starve already-detected events, and
323
+ * recovery must not deliver-and-remove a task that a later drain would
324
+ * re-claim (crash between the claim and the pending->fired save leaves
325
+ * both records on disk).
326
+ */
327
+ private reconcilePendingWatch;
328
+ /**
329
+ * Edge-triggered state watch over the PRs bound to live sessions. Runs
330
+ * inside the existing poll loop; detection is API-level and costs no model
331
+ * tokens until a real transition fires.
332
+ */
333
+ private runPrStateWatch;
334
+ private watchOnePr;
335
+ /**
336
+ * Deliver queued watch events. Order per event: claim the inbound task
337
+ * (durable), move the key from pending to fired (durable), then run the
338
+ * task. A crash at any point leaves either a pending event or a claimed
339
+ * task for the next poll / recovery, and the fired ring prevents a second
340
+ * delivery of the same transition.
341
+ */
342
+ private drainPendingWatch;
343
+ private fetchCiAggregate;
134
344
  private markNotificationsAsRead;
135
345
  private postErrorComment;
136
346
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GithubAdapter.d.ts","sourceRoot":"","sources":["../src/GithubAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GithubAdapter.d.ts","sourceRoot":"","sources":["../src/GithubAdapter.ts"],"names":[],"mappings":"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"}