@urateam/core 0.1.27 → 0.1.29

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.
Files changed (79) hide show
  1. package/dist/__tests__/audit-immutability.test.js +1 -0
  2. package/dist/__tests__/audit-immutability.test.js.map +1 -1
  3. package/dist/__tests__/bec-183-pre-stream-stall.test.d.ts +2 -0
  4. package/dist/__tests__/bec-183-pre-stream-stall.test.d.ts.map +1 -0
  5. package/dist/__tests__/bec-183-pre-stream-stall.test.js +139 -0
  6. package/dist/__tests__/bec-183-pre-stream-stall.test.js.map +1 -0
  7. package/dist/__tests__/gh-linear-sync.test.d.ts +2 -0
  8. package/dist/__tests__/gh-linear-sync.test.d.ts.map +1 -0
  9. package/dist/__tests__/gh-linear-sync.test.js +325 -0
  10. package/dist/__tests__/gh-linear-sync.test.js.map +1 -0
  11. package/dist/__tests__/recover-stuck-bec184.test.d.ts +13 -0
  12. package/dist/__tests__/recover-stuck-bec184.test.d.ts.map +1 -0
  13. package/dist/__tests__/recover-stuck-bec184.test.js +336 -0
  14. package/dist/__tests__/recover-stuck-bec184.test.js.map +1 -0
  15. package/dist/__tests__/reproduce-bec184-long-running.test.d.ts +16 -0
  16. package/dist/__tests__/reproduce-bec184-long-running.test.d.ts.map +1 -0
  17. package/dist/__tests__/reproduce-bec184-long-running.test.js +190 -0
  18. package/dist/__tests__/reproduce-bec184-long-running.test.js.map +1 -0
  19. package/dist/__tests__/select-repo-config.test.d.ts +2 -0
  20. package/dist/__tests__/select-repo-config.test.d.ts.map +1 -0
  21. package/dist/__tests__/select-repo-config.test.js +132 -0
  22. package/dist/__tests__/select-repo-config.test.js.map +1 -0
  23. package/dist/__tests__/start-todo.test.js +124 -0
  24. package/dist/__tests__/start-todo.test.js.map +1 -1
  25. package/dist/audit/events.d.ts +7 -0
  26. package/dist/audit/events.d.ts.map +1 -1
  27. package/dist/audit/events.js +16 -0
  28. package/dist/audit/events.js.map +1 -1
  29. package/dist/executor/agent-stream.d.ts +29 -4
  30. package/dist/executor/agent-stream.d.ts.map +1 -1
  31. package/dist/executor/agent-stream.js +65 -17
  32. package/dist/executor/agent-stream.js.map +1 -1
  33. package/dist/executor/executor.d.ts.map +1 -1
  34. package/dist/executor/executor.js +71 -15
  35. package/dist/executor/executor.js.map +1 -1
  36. package/dist/executor/index.d.ts +1 -1
  37. package/dist/executor/index.d.ts.map +1 -1
  38. package/dist/executor/index.js +1 -1
  39. package/dist/executor/index.js.map +1 -1
  40. package/dist/index.d.ts +1 -0
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +1 -0
  43. package/dist/index.js.map +1 -1
  44. package/dist/pm/actions/db-queries.d.ts +6 -1
  45. package/dist/pm/actions/db-queries.d.ts.map +1 -1
  46. package/dist/pm/actions/db-queries.js +42 -23
  47. package/dist/pm/actions/db-queries.js.map +1 -1
  48. package/dist/pm/actions/recover-stuck.d.ts +16 -0
  49. package/dist/pm/actions/recover-stuck.d.ts.map +1 -1
  50. package/dist/pm/actions/recover-stuck.js +70 -12
  51. package/dist/pm/actions/recover-stuck.js.map +1 -1
  52. package/dist/pm/actions/select-repo-config.d.ts +22 -0
  53. package/dist/pm/actions/select-repo-config.d.ts.map +1 -0
  54. package/dist/pm/actions/select-repo-config.js +38 -0
  55. package/dist/pm/actions/select-repo-config.js.map +1 -0
  56. package/dist/pm/actions/start-todo.d.ts.map +1 -1
  57. package/dist/pm/actions/start-todo.js +13 -8
  58. package/dist/pm/actions/start-todo.js.map +1 -1
  59. package/dist/pm/scheduler.d.ts.map +1 -1
  60. package/dist/pm/scheduler.js +9 -0
  61. package/dist/pm/scheduler.js.map +1 -1
  62. package/dist/pm/slack.js +1 -1
  63. package/dist/pm/slack.js.map +1 -1
  64. package/dist/sync/gh-linear-sync.d.ts +189 -0
  65. package/dist/sync/gh-linear-sync.d.ts.map +1 -0
  66. package/dist/sync/gh-linear-sync.js +279 -0
  67. package/dist/sync/gh-linear-sync.js.map +1 -0
  68. package/dist/sync/index.d.ts +2 -0
  69. package/dist/sync/index.d.ts.map +1 -0
  70. package/dist/sync/index.js +3 -0
  71. package/dist/sync/index.js.map +1 -0
  72. package/dist/types.d.ts +3 -0
  73. package/dist/types.d.ts.map +1 -1
  74. package/dist/types.js +13 -0
  75. package/dist/types.js.map +1 -1
  76. package/dist/webhook/handler.d.ts.map +1 -1
  77. package/dist/webhook/handler.js +4 -2
  78. package/dist/webhook/handler.js.map +1 -1
  79. package/package.json +1 -1
@@ -2,6 +2,8 @@
2
2
  * Shared helpers for consuming Agent SDK message streams and parsing
3
3
  * JSON blocks from agent output.
4
4
  */
5
+ import { createLogger } from "../logger.js";
6
+ const log = createLogger({ component: "AgentStream" });
5
7
  /**
6
8
  * Thrown when a stage's agent stream makes no observable progress
7
9
  * (no new output tokens or assistant turns) for `progressTimeoutMs`.
@@ -19,6 +21,23 @@ export class StageStalledError extends Error {
19
21
  this.name = "StageStalledError";
20
22
  }
21
23
  }
24
+ /**
25
+ * Thrown when no message is received from the agent stream before the
26
+ * `firstMessageTimeoutMs` deadline. This covers the pre-stream hang class
27
+ * (BEC-183) where query() returns an iterator that never yields its first
28
+ * message — e.g., blocked on an SDK-internal auth-retry loop, MCP init
29
+ * failure, or a never-resolving Promise before the iterator advances.
30
+ *
31
+ * Distinct from StageStalledError (mid-stream silence after ≥1 message).
32
+ */
33
+ export class StagePreStreamStalledError extends Error {
34
+ timeoutMs;
35
+ constructor(timeoutMs) {
36
+ super(`stage pre-stream stall — no message received within ${Math.round(timeoutMs / 1000)}s of starting`);
37
+ this.timeoutMs = timeoutMs;
38
+ this.name = "StagePreStreamStalledError";
39
+ }
40
+ }
22
41
  /**
23
42
  * Consume an Agent SDK message stream, accumulating token usage and
24
43
  * extracting the last assistant text content.
@@ -39,10 +58,23 @@ export async function consumeAgentStream(messages, options) {
39
58
  let lastTokenAdvanceAt = Date.now();
40
59
  const progressInterval = options?.progressIntervalMs ?? 30_000;
41
60
  const stallTimeoutMs = options?.progressTimeoutMs ?? 30 * 60_000;
61
+ // BEC-183: first-message timeout — fires if the iterator never yields its
62
+ // first message (pre-stream hang). Default 5 min; covers auth refresh,
63
+ // MCP boot, and model warmup latencies while still detecting SDK deadlocks.
64
+ const firstMsgTimeoutMs = options?.firstMessageTimeoutMs ?? 5 * 60_000;
65
+ const streamStartAt = Date.now();
66
+ let firstMessageReceived = false;
42
67
  const iterator = messages[Symbol.asyncIterator]();
43
68
  const STALLED = { __stalled: true };
44
69
  while (true) {
45
- const remainingUntilStall = stallTimeoutMs - (Date.now() - lastTokenAdvanceAt);
70
+ const stallRemaining = stallTimeoutMs - (Date.now() - lastTokenAdvanceAt);
71
+ // First-message timeout: only active until the first real message arrives.
72
+ const firstMsgRemaining = firstMessageReceived
73
+ ? Infinity
74
+ : firstMsgTimeoutMs - (Date.now() - streamStartAt);
75
+ // Use whichever deadline is sooner; clamp to 0 to fire immediately if
76
+ // either has already elapsed.
77
+ const remainingUntilTimeout = Math.max(Math.min(stallRemaining, firstMsgRemaining), 0);
46
78
  let stallTimer;
47
79
  let nextSettled = false;
48
80
  let nextValue;
@@ -52,7 +84,7 @@ export async function consumeAgentStream(messages, options) {
52
84
  return v;
53
85
  });
54
86
  const stallPromise = new Promise((resolve) => {
55
- stallTimer = setTimeout(() => resolve(STALLED), Math.max(remainingUntilStall, 0));
87
+ stallTimer = setTimeout(() => resolve(STALLED), remainingUntilTimeout);
56
88
  });
57
89
  const raced = await Promise.race([next, stallPromise]);
58
90
  if (stallTimer)
@@ -67,7 +99,13 @@ export async function consumeAgentStream(messages, options) {
67
99
  // never-resolving await (the exact zombie pattern from urateam#122),
68
100
  // awaiting iterator.return() would hang forever waiting for that
69
101
  // await to settle. Best-effort signal; let the GC handle the rest.
70
- iterator.return?.().catch(() => { });
102
+ iterator.return?.()?.catch((err) => log.debug({ err }, "iterator cleanup failed"));
103
+ if (!firstMessageReceived) {
104
+ // Pre-stream hang: the iterator never yielded its first message
105
+ // within firstMsgTimeoutMs. Throw StagePreStreamStalledError so
106
+ // callers can distinguish this from a mid-stream stall. BEC-183.
107
+ throw new StagePreStreamStalledError(firstMsgTimeoutMs);
108
+ }
71
109
  throw new StageStalledError(Date.now() - lastTokenAdvanceAt, {
72
110
  messageCount,
73
111
  turns,
@@ -79,6 +117,8 @@ export async function consumeAgentStream(messages, options) {
79
117
  const result = (raced === STALLED ? nextValue : raced);
80
118
  if (result.done)
81
119
  break;
120
+ // Mark that at least one message has arrived; deactivates first-message timer.
121
+ firstMessageReceived = true;
82
122
  const message = result.value;
83
123
  messageCount++;
84
124
  if (options?.onProgress && Date.now() - lastProgressTime >= progressInterval) {
@@ -138,33 +178,41 @@ export function extractText(content) {
138
178
  : String(content);
139
179
  }
140
180
  /**
141
- * Extract and parse a bare JSON object from text (finds first `{...}` match).
142
- * Returns null if no object is found or if parsing fails.
181
+ * Internal helper: apply `regex` to `text`, then JSON-parse the capture group
182
+ * at `groupIndex`. Returns null if the regex doesn't match or parsing fails.
183
+ * Eliminates the try-catch boilerplate duplicated in parseJsonObject and
184
+ * parseJsonBlock.
143
185
  */
144
- export function parseJsonObject(text) {
145
- const match = text.match(/\{[\s\S]*\}/);
186
+ function parseJsonWithRegex(text, regex, groupIndex = 0) {
187
+ const match = text.match(regex);
146
188
  if (!match)
147
189
  return null;
148
190
  try {
149
- return JSON.parse(match[0]);
191
+ return JSON.parse(match[groupIndex]);
150
192
  }
151
193
  catch {
152
194
  return null;
153
195
  }
154
196
  }
197
+ /**
198
+ * Extract and parse a bare JSON object from text (finds first `{...}` match).
199
+ * Returns null if no object is found or if parsing fails.
200
+ *
201
+ * Uses non-greedy matching so that if the text contains multiple top-level
202
+ * JSON-like blocks separated by non-JSON content (e.g. log lines), the first
203
+ * parseable object is returned rather than a greedy span that crosses all of
204
+ * them and fails to parse. Trade-off: non-greedy does not correctly handle
205
+ * deeply nested objects — for those, prefer `parseJsonBlock` (fenced block).
206
+ * In practice, PM-agent Haiku responses are flat JSON, so non-greedy is safe.
207
+ */
208
+ export function parseJsonObject(text) {
209
+ return parseJsonWithRegex(text, /\{[\s\S]*?\}/, 0);
210
+ }
155
211
  /**
156
212
  * Extract and parse a ```json fenced code block from agent output text.
157
213
  * Returns null if no block is found or if parsing fails.
158
214
  */
159
215
  export function parseJsonBlock(text) {
160
- const match = text.match(/```json\s*\n([\s\S]*?)\n```/);
161
- if (!match)
162
- return null;
163
- try {
164
- return JSON.parse(match[1]);
165
- }
166
- catch {
167
- return null;
168
- }
216
+ return parseJsonWithRegex(text, /```json\s*\n([\s\S]*?)\n```/, 1);
169
217
  }
170
218
  //# sourceMappingURL=agent-stream.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-stream.js","sourceRoot":"","sources":["../../src/executor/agent-stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-stream.js","sourceRoot":"","sources":["../../src/executor/agent-stream.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;AAwBvD;;;;;GAKG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAExB;IACA;IAFlB,YACkB,YAAoB,EACpB,SAA6F;QAE7G,KAAK,CACH,6CAA6C,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI;YAC9E,iBAAiB,SAAS,CAAC,YAAY,WAAW,SAAS,CAAC,KAAK,kBAAkB,SAAS,CAAC,YAAY,GAAG,CAC/G,CAAC;QANc,iBAAY,GAAZ,YAAY,CAAQ;QACpB,cAAS,GAAT,SAAS,CAAoF;QAM7G,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IACvB;IAA5B,YAA4B,SAAiB;QAC3C,KAAK,CACH,uDAAuD,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CACnG,CAAC;QAHwB,cAAS,GAAT,SAAS,CAAQ;QAI3C,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC3C,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAgC,EAChC,OAyBC;IAED,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,wBAAwB,GAAG,CAAC,CAAC;IACjC,IAAI,oBAAoB,GAAG,CAAC,CAAC;IAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClC,IAAI,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACpC,MAAM,gBAAgB,GAAG,OAAO,EAAE,kBAAkB,IAAI,MAAM,CAAC;IAC/D,MAAM,cAAc,GAAG,OAAO,EAAE,iBAAiB,IAAI,EAAE,GAAG,MAAM,CAAC;IACjE,0EAA0E;IAC1E,uEAAuE;IACvE,4EAA4E;IAC5E,MAAM,iBAAiB,GAAG,OAAO,EAAE,qBAAqB,IAAI,CAAC,GAAG,MAAM,CAAC;IACvE,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACjC,IAAI,oBAAoB,GAAG,KAAK,CAAC;IAEjC,MAAM,QAAQ,GAAI,QAAmC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;IAC9E,MAAM,OAAO,GAAG,EAAE,SAAS,EAAE,IAAI,EAAW,CAAC;IAE7C,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,cAAc,GAAG,cAAc,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,kBAAkB,CAAC,CAAC;QAC1E,2EAA2E;QAC3E,MAAM,iBAAiB,GAAG,oBAAoB;YAC5C,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC,CAAC;QACrD,sEAAsE;QACtE,8BAA8B;QAC9B,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC;QAEvF,IAAI,UAAqD,CAAC;QAC1D,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,SAA8C,CAAC;QACnD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACtC,WAAW,GAAG,IAAI,CAAC;YACnB,SAAS,GAAG,CAAC,CAAC;YACd,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,EAAE;YAC1D,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,qBAAqB,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;QACvD,IAAI,UAAU;YAAE,YAAY,CAAC,UAAU,CAAC,CAAC;QAEzC,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YACtB,sEAAsE;YACtE,8DAA8D;YAC9D,mEAAmE;YACnE,kDAAkD;YAClD,IAAI,CAAC,CAAC,WAAW,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,oEAAoE;gBACpE,qEAAqE;gBACrE,iEAAiE;gBACjE,mEAAmE;gBACnE,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,yBAAyB,CAAC,CAAC,CAAC;gBACnF,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC1B,gEAAgE;oBAChE,gEAAgE;oBAChE,iEAAiE;oBACjE,MAAM,IAAI,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;gBAC1D,CAAC;gBACD,MAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,kBAAkB,EAAE;oBAC3D,YAAY;oBACZ,KAAK;oBACL,WAAW;oBACX,YAAY;iBACb,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,SAAU,CAAC,CAAC,CAAC,KAAK,CAA4B,CAAC;QACnF,IAAI,MAAM,CAAC,IAAI;YAAE,MAAM;QAEvB,+EAA+E;QAC/E,oBAAoB,GAAG,IAAI,CAAC;QAE5B,MAAM,OAAO,GAAG,MAAM,CAAC,KAAsB,CAAC;QAC9C,YAAY,EAAE,CAAC;QAEf,IAAI,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,IAAI,gBAAgB,EAAE,CAAC;YAC7E,OAAO,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,CAAC;YACvE,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAChC,CAAC;QAED,MAAM,gBAAgB,GAAG,YAAY,CAAC;QACtC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC;YAC/C,YAAY,IAAI,OAAO,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;YACjD,wBAAwB,IAAI,OAAO,CAAC,KAAK,CAAC,2BAA2B,IAAI,CAAC,CAAC;YAC3E,oBAAoB,IAAI,OAAO,CAAC,KAAK,CAAC,uBAAuB,IAAI,CAAC,CAAC;QACrE,CAAC;QAED,IACE,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,CAAC;YAC/D,OAAO,EAAE,aAAa,EACtB,CAAC;YACD,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACjC,+DAA+D;YAC/D,oDAAoD;YACpD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC1C,IAAI,IAAI;oBAAE,QAAQ,GAAG,IAAI,CAAC;YAC5B,CAAC;iBAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC3B,MAAM,KAAK,GAAG,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;oBAC/C,CAAC,CAAC,OAAO,CAAC,OAAO;oBACjB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO;wBACvB,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;wBACtC,CAAC,CAAC,EAAE,CAAC;gBACT,IAAI,KAAK;oBAAE,QAAQ,GAAG,KAAK,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACjC,KAAK,EAAE,CAAC;QACV,CAAC;QAED,qFAAqF;QACrF,wEAAwE;QACxE,yEAAyE;QACzE,IAAI,YAAY,GAAG,gBAAgB,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACpE,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;AACxG,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,OAAwD;IAExD,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAC3B,CAAC,CAAC,OAAO;aACJ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;aAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;aACxB,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACtB,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,IAAY,EAAE,KAAa,EAAE,aAAqB,CAAC;IAC7E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,kBAAkB,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC,CAAe,CAAC;AACnE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,kBAAkB,CAAC,IAAI,EAAE,6BAA6B,EAAE,CAAC,CAAC,CAAC;AACpE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/executor/executor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,UAAU,EACV,eAAe,EACf,WAAW,EACX,qBAAqB,EACrB,oBAAoB,EACpB,YAAY,EACb,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,EAAE,EAAS,MAAM,iBAAiB,CAAC;AAOjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAKnE;;;;;;GAMG;AACH,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,SAAS,EAChB,iBAAiB,EAAE,OAAO,GACzB,YAAY,CAKd;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,CAAC;IACjB,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,EAAE,CAAC;IACP,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;kEAC8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC;;mFAE+E;IAC/E,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC;;;kEAG8D;IAC9D,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,WAAW,CAAC,CAiOtB"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/executor/executor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,UAAU,EACV,eAAe,EACf,WAAW,EACX,qBAAqB,EACrB,oBAAoB,EACpB,YAAY,EACb,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,EAAE,EAAS,MAAM,iBAAiB,CAAC;AAOjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAqBnE;;;;;;GAMG;AACH,wBAAgB,kCAAkC,CAChD,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,SAAS,EAChB,iBAAiB,EAAE,OAAO,GACzB,YAAY,CAKd;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,CAAC;IACjB,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,EAAE,CAAC;IACP,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;kEAC8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC;;mFAE+E;IAC/E,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC;;;kEAG8D;IAC9D,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,WAAW,CAAC,CA4QtB"}
@@ -7,8 +7,22 @@ import { extractHandoff } from "./extract-handoff.js";
7
7
  import { buildStagePermissionOptions } from "./permissions.js";
8
8
  import { resolveTooling } from "./mcp-resolver.js";
9
9
  import { createLogger } from "../logger.js";
10
- import { consumeAgentStream } from "./agent-stream.js";
10
+ import { consumeAgentStream, StagePreStreamStalledError } from "./agent-stream.js";
11
11
  import { isClaudeAuthValid } from "./auth-check.js";
12
+ /**
13
+ * BEC-183: wall-clock stage timeouts. Independent of the in-stream watchdog
14
+ * (StageStalledError / StagePreStreamStalledError inside consumeAgentStream),
15
+ * this is a second defensive layer that covers the case where the SDK's
16
+ * query() or iterator setup hangs before any message arrives and the
17
+ * firstMessageTimeoutMs timer inside consumeAgentStream somehow fails to fire.
18
+ * Default: 60 min for implement (longest legitimate stage), 30 min for others.
19
+ */
20
+ const WALL_CLOCK_STAGE_TIMEOUT_MS = {
21
+ implement: 60 * 60_000, // 60 min — longest legitimate stage
22
+ };
23
+ const DEFAULT_WALL_CLOCK_STAGE_TIMEOUT_MS = 30 * 60_000; // 30 min for all others
24
+ /** First-message timeout passed to consumeAgentStream (BEC-183). */
25
+ const FIRST_MESSAGE_TIMEOUT_MS = 5 * 60_000; // 5 min
12
26
  /**
13
27
  * BEC-182: review-feedback runs are bounded — N comments, push, done.
14
28
  * Override the implement profile's maxTurns / maxInputTokens to prevent
@@ -108,21 +122,63 @@ Do NOT run build, test, or lint commands directly on the host — always use \`d
108
122
  await db.insert(agentLogs).values(logBatch);
109
123
  logBatch = [];
110
124
  }
111
- const result = await consumeAgentStream(messages, {
112
- onProgress: (stats) => {
113
- log.info(stats, "stage still in progress");
114
- },
115
- onToolMessage: (msg) => {
116
- logBatch.push({
117
- id: nanoid(),
118
- stageRunId: stageRunId,
119
- type: msg.type,
120
- content: JSON.stringify(msg).slice(0, 2048),
121
- });
122
- if (logBatch.length >= BATCH_SIZE) {
123
- flushLogBatch().catch((err) => log.warn({ err }, "mid-stream log batch flush failed"));
124
- }
125
+ // BEC-183: capture the iterator that consumeAgentStream will create so we
126
+ // can call .return() for cleanup if the wall-clock timeout fires before the
127
+ // inner firstMessageTimeoutMs guard does. consumeAgentStream calls
128
+ // messages[Symbol.asyncIterator]() exactly once — the wrapper intercepts
129
+ // that call and stores the reference.
130
+ let capturedMessagesIterator;
131
+ const messagesWithCapture = {
132
+ [Symbol.asyncIterator]() {
133
+ const iter = messages[Symbol.asyncIterator]();
134
+ capturedMessagesIterator = iter;
135
+ return iter;
125
136
  },
137
+ };
138
+ // BEC-183: wall-clock stage timeout — second defensive layer independent
139
+ // of the in-stream watchdog. Fires as StagePreStreamStalledError so the
140
+ // catch block below sets status=failed with a clear message.
141
+ const stageTimeoutMs = WALL_CLOCK_STAGE_TIMEOUT_MS[stage] ?? DEFAULT_WALL_CLOCK_STAGE_TIMEOUT_MS;
142
+ let stageTimeoutTimer;
143
+ const stageTimeoutPromise = new Promise((_, reject) => {
144
+ stageTimeoutTimer = setTimeout(() => {
145
+ reject(new StagePreStreamStalledError(stageTimeoutMs));
146
+ }, stageTimeoutMs);
147
+ });
148
+ const result = await Promise.race([
149
+ consumeAgentStream(messagesWithCapture, {
150
+ onProgress: (stats) => {
151
+ log.info(stats, "stage still in progress");
152
+ },
153
+ onToolMessage: (msg) => {
154
+ logBatch.push({
155
+ id: nanoid(),
156
+ stageRunId: stageRunId,
157
+ type: msg.type,
158
+ content: JSON.stringify(msg).slice(0, 2048),
159
+ });
160
+ if (logBatch.length >= BATCH_SIZE) {
161
+ flushLogBatch().catch((err) => log.warn({ err }, "mid-stream log batch flush failed"));
162
+ }
163
+ },
164
+ firstMessageTimeoutMs: FIRST_MESSAGE_TIMEOUT_MS,
165
+ }),
166
+ stageTimeoutPromise,
167
+ ]).catch((err) => {
168
+ // When the wall-clock timeout fires before consumeAgentStream's own
169
+ // firstMessageTimeoutMs guard, the internal iterator is still pending.
170
+ // Signal it to release any SDK network connections or event listeners.
171
+ // Best-effort: if the generator is truly blocked on a never-resolving
172
+ // Promise, .return() won't unblock it, but the GC will eventually
173
+ // collect it once this run's references are dropped.
174
+ capturedMessagesIterator?.return?.()?.catch(() => { });
175
+ throw err;
176
+ }).finally(() => {
177
+ // Always clear the wall-clock timer whether the stream succeeds, stalls,
178
+ // or throws any other error — prevents the timer from dangling after the
179
+ // stage exits the happy path.
180
+ if (stageTimeoutTimer)
181
+ clearTimeout(stageTimeoutTimer);
126
182
  });
127
183
  // Flush remaining log entries
128
184
  await flushLogBatch();
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/executor/executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/executor/executor.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ export { agentProfiles, getAgentProfiles, DEFAULT_AGENT_PROFILES } from "./profi
2
2
  export { checkTestQuality, analyzeTestFile, isTestFile, extractTestBlocks, TRIVIAL_MATCHERS, BEHAVIORAL_MATCHERS, TRIVIAL_THRESHOLD, type TestFileAnalysis, type TestQualityResult, } from "./test-quality.js";
3
3
  export { parseHandoffArtifact } from "./handoff.js";
4
4
  export { executeStage, type ExecuteStageContext } from "./executor.js";
5
- export { consumeAgentStream, parseJsonBlock } from "./agent-stream.js";
5
+ export { consumeAgentStream, parseJsonBlock, StageStalledError, StagePreStreamStalledError } from "./agent-stream.js";
6
6
  export { sanitize, mapIssueToSchema, assemblePrompt } from "./prompt/index.js";
7
7
  export { runDeepReview, deepFindingsToReviewFindings, buildDeepReviewContext, type DeepReviewFinding, type DeepReviewResult, } from "./deep-review.js";
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/executor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACxF,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EACL,aAAa,EACb,4BAA4B,EAC5B,sBAAsB,EACtB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/executor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACxF,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AACtH,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EACL,aAAa,EACb,4BAA4B,EAC5B,sBAAsB,EACtB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC"}
@@ -2,7 +2,7 @@ export { agentProfiles, getAgentProfiles, DEFAULT_AGENT_PROFILES } from "./profi
2
2
  export { checkTestQuality, analyzeTestFile, isTestFile, extractTestBlocks, TRIVIAL_MATCHERS, BEHAVIORAL_MATCHERS, TRIVIAL_THRESHOLD, } from "./test-quality.js";
3
3
  export { parseHandoffArtifact } from "./handoff.js";
4
4
  export { executeStage } from "./executor.js";
5
- export { consumeAgentStream, parseJsonBlock } from "./agent-stream.js";
5
+ export { consumeAgentStream, parseJsonBlock, StageStalledError, StagePreStreamStalledError } from "./agent-stream.js";
6
6
  export { sanitize, mapIssueToSchema, assemblePrompt } from "./prompt/index.js";
7
7
  export { runDeepReview, deepFindingsToReviewFindings, buildDeepReviewContext, } from "./deep-review.js";
8
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/executor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACxF,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,GAGlB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,YAAY,EAA4B,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EACL,aAAa,EACb,4BAA4B,EAC5B,sBAAsB,GAGvB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/executor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACxF,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,GAGlB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,YAAY,EAA4B,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AACtH,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EACL,aAAa,EACb,4BAA4B,EAC5B,sBAAsB,GAGvB,MAAM,kBAAkB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -41,4 +41,5 @@ export { parseIssueFiles, buildConflictMatrix, detectFileOverlap, sortAndFilterN
41
41
  export { upsertActiveWork, removeActiveWork, checkFileOverlap as checkCoordinationOverlap, getActiveWork, getModifiedFiles, type ActiveWorkEntry, type FileOverlapResult as CoordinationFileOverlapResult, } from "./pm/coordination.js";
42
42
  export * from "./release-manager/index.js";
43
43
  export * from "./qa/index.js";
44
+ export * from "./sync/index.js";
44
45
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -39,4 +39,5 @@ export { parseIssueFiles, buildConflictMatrix, detectFileOverlap, sortAndFilterN
39
39
  export { upsertActiveWork, removeActiveWork, checkFileOverlap as checkCoordinationOverlap, getActiveWork, getModifiedFiles, } from "./pm/coordination.js";
40
40
  export * from "./release-manager/index.js";
41
41
  export * from "./qa/index.js";
42
+ export * from "./sync/index.js";
42
43
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,13 @@ export declare const ACTIVE_STATUSES: readonly ["queued", "running"];
8
8
  *
9
9
  * Used by both startTodoIssues and recoverStuckInProgressIssues to avoid
10
10
  * re-processing issues that already have pipeline activity.
11
+ *
12
+ * BEC-184: when `stuckRunAgeMs` is provided, 'running' runs that started MORE
13
+ * THAN `stuckRunAgeMs` ago are excluded from `activeIssueIds`. This allows
14
+ * recoverStuckInProgressIssues to treat zombie/stalled runs as stuck.
15
+ * 'queued' runs are always considered active regardless of age.
11
16
  */
12
- export declare function getActiveAndRecentIssueIds(db: AnyDb, recentWindowMs?: number): Promise<{
17
+ export declare function getActiveAndRecentIssueIds(db: AnyDb, recentWindowMs?: number, stuckRunAgeMs?: number): Promise<{
13
18
  activeIssueIds: Set<string>;
14
19
  recentlyProcessed: Set<string>;
15
20
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"db-queries.d.ts","sourceRoot":"","sources":["../../../src/pm/actions/db-queries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAIhD,iEAAiE;AACjE,eAAO,MAAM,eAAe,gCAAiC,CAAC;AAK9D;;;;;;;GAOG;AACH,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,KAAK,EACT,cAAc,SAAmB,GAChC,OAAO,CAAC;IAAE,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC,CAoB1E;AAED;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,KAAK,EACT,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAsBjB;AAED;;;;;;;;;GASG;AACH,wBAAsB,6BAA6B,CACjD,EAAE,EAAE,KAAK,EACT,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAuC9B"}
1
+ {"version":3,"file":"db-queries.d.ts","sourceRoot":"","sources":["../../../src/pm/actions/db-queries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAIhD,iEAAiE;AACjE,eAAO,MAAM,eAAe,gCAAiC,CAAC;AAoB9D;;;;;;;;;;;;GAYG;AACH,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,KAAK,EACT,cAAc,SAAmB,EACjC,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC;IAAE,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC,CAuC1E;AAED;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,KAAK,EACT,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED;;;;;;;;;GASG;AACH,wBAAsB,6BAA6B,CACjD,EAAE,EAAE,KAAK,EACT,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAkC9B"}
@@ -1,7 +1,23 @@
1
1
  import { pipelineRuns } from "../../db/schema.js";
2
- import { and, desc, eq, gte, inArray } from "drizzle-orm";
2
+ import { and, desc, eq, gte, inArray, or } from "drizzle-orm";
3
3
  /** Statuses considered "active" (pipeline currently running). */
4
4
  export const ACTIVE_STATUSES = ["queued", "running"];
5
+ /**
6
+ * Count leading 'failed' rows in a most-recent-first ordered list of pipeline
7
+ * run rows, stopping at the first non-failed row. Shared by
8
+ * `countConsecutiveFailures` (single issue) and `batchCountConsecutiveFailures`
9
+ * (batch variant) to keep the counting logic in one place.
10
+ */
11
+ function countLeadingFailures(rows) {
12
+ let count = 0;
13
+ for (const row of rows) {
14
+ if (row.status === "failed")
15
+ count++;
16
+ else
17
+ break;
18
+ }
19
+ return count;
20
+ }
5
21
  /** Default window for considering a recently-completed run as still "fresh". */
6
22
  const RECENT_WINDOW_MS = 30 * 60 * 1000; // 30 minutes
7
23
  /**
@@ -11,12 +27,29 @@ const RECENT_WINDOW_MS = 30 * 60 * 1000; // 30 minutes
11
27
  *
12
28
  * Used by both startTodoIssues and recoverStuckInProgressIssues to avoid
13
29
  * re-processing issues that already have pipeline activity.
30
+ *
31
+ * BEC-184: when `stuckRunAgeMs` is provided, 'running' runs that started MORE
32
+ * THAN `stuckRunAgeMs` ago are excluded from `activeIssueIds`. This allows
33
+ * recoverStuckInProgressIssues to treat zombie/stalled runs as stuck.
34
+ * 'queued' runs are always considered active regardless of age.
14
35
  */
15
- export async function getActiveAndRecentIssueIds(db, recentWindowMs = RECENT_WINDOW_MS) {
16
- const activeRows = await db
17
- .select({ issueId: pipelineRuns.issueId })
18
- .from(pipelineRuns)
19
- .where(inArray(pipelineRuns.status, [...ACTIVE_STATUSES]));
36
+ export async function getActiveAndRecentIssueIds(db, recentWindowMs = RECENT_WINDOW_MS, stuckRunAgeMs) {
37
+ let activeRows;
38
+ if (stuckRunAgeMs !== undefined) {
39
+ // BEC-184: exclude long-running 'running' rows from the active set so they
40
+ // fall through to the stuck detection logic. 'queued' is always active.
41
+ const stuckCutoff = new Date(Date.now() - stuckRunAgeMs);
42
+ activeRows = await db
43
+ .select({ issueId: pipelineRuns.issueId })
44
+ .from(pipelineRuns)
45
+ .where(or(eq(pipelineRuns.status, "queued"), and(eq(pipelineRuns.status, "running"), gte(pipelineRuns.startedAt, stuckCutoff))));
46
+ }
47
+ else {
48
+ activeRows = await db
49
+ .select({ issueId: pipelineRuns.issueId })
50
+ .from(pipelineRuns)
51
+ .where(inArray(pipelineRuns.status, [...ACTIVE_STATUSES]));
52
+ }
20
53
  const activeIssueIds = new Set(activeRows.map((r) => r.issueId));
21
54
  const recentCutoff = new Date(Date.now() - recentWindowMs);
22
55
  const recentRows = await db
@@ -46,14 +79,7 @@ export async function countConsecutiveFailures(db, issueId) {
46
79
  // can share the second-resolution timestamp. `id` is a monotonic random
47
80
  // string, so it gives us a stable ordering when `startedAt` collides.
48
81
  .orderBy(desc(pipelineRuns.startedAt), desc(pipelineRuns.id));
49
- let count = 0;
50
- for (const row of rows) {
51
- if (row.status === "failed")
52
- count++;
53
- else
54
- break;
55
- }
56
- return count;
82
+ return countLeadingFailures(rows);
57
83
  }
58
84
  /**
59
85
  * BEC-181: batch variant of `countConsecutiveFailures` — fetches terminal
@@ -86,18 +112,11 @@ export async function batchCountConsecutiveFailures(db, issueIds) {
86
112
  byIssue.set(row.issueId, [{ status: row.status }]);
87
113
  }
88
114
  }
89
- // Count leading "failed" rows for each issue (same logic as countConsecutiveFailures).
115
+ // Count leading "failed" rows for each issue (delegates to shared helper).
90
116
  const result = new Map();
91
117
  for (const issueId of issueIds) {
92
118
  const issueRows = byIssue.get(issueId) ?? [];
93
- let count = 0;
94
- for (const row of issueRows) {
95
- if (row.status === "failed")
96
- count++;
97
- else
98
- break;
99
- }
100
- result.set(issueId, count);
119
+ result.set(issueId, countLeadingFailures(issueRows));
101
120
  }
102
121
  return result;
103
122
  }
@@ -1 +1 @@
1
- {"version":3,"file":"db-queries.js","sourceRoot":"","sources":["../../../src/pm/actions/db-queries.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE1D,iEAAiE;AACjE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAU,CAAC;AAE9D,gFAAgF;AAChF,MAAM,gBAAgB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AAEtD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,EAAS,EACT,cAAc,GAAG,gBAAgB;IAEjC,MAAM,UAAU,GAAG,MAAM,EAAE;SACxB,MAAM,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC;SACzC,IAAI,CAAC,YAAY,CAAC;SAClB,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,cAAc,GAAG,IAAI,GAAG,CAAU,UAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAEpF,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,CAAC,CAAC;IAC3D,MAAM,UAAU,GAAG,MAAM,EAAE;SACxB,MAAM,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC;SACzC,IAAI,CAAC,YAAY,CAAC;SAClB,KAAK,CACJ,GAAG,CACD,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,EACrD,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAC5C,CACF,CAAC;IACJ,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAU,UAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAEvF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,CAAC;AAC/C,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,EAAS,EACT,OAAe;IAEf,MAAM,IAAI,GAAG,MAAM,EAAE;SAClB,MAAM,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC;SACvC,IAAI,CAAC,YAAY,CAAC;SAClB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,EACjC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CACtD,CACF;QACD,2EAA2E;QAC3E,wEAAwE;QACxE,wEAAwE;QACxE,sEAAsE;SACrE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;IAEhE,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,GAAG,IAAI,IAAiC,EAAE,CAAC;QACpD,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ;YAAE,KAAK,EAAE,CAAC;;YAChC,MAAM;IACb,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,EAAS,EACT,QAAkB;IAElB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IAE5C,MAAM,IAAI,GAAG,MAAM,EAAE;SAClB,MAAM,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC;SACtE,IAAI,CAAC,YAAY,CAAC;SAClB,KAAK,CACJ,GAAG,CACD,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,EACvC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CACtD,CACF;QACD,wEAAwE;QACxE,yEAAyE;SACxE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;IAEhE,qEAAqE;IACrE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAqC,CAAC;IAC7D,KAAK,MAAM,GAAG,IAAI,IAAkD,EAAE,CAAC;QACrE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,uFAAuF;IACvF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ;gBAAE,KAAK,EAAE,CAAC;;gBAChC,MAAM;QACb,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"db-queries.js","sourceRoot":"","sources":["../../../src/pm/actions/db-queries.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,12 @@ export interface RecoverStuckInput {
7
7
  targetState: "Backlog" | "Todo";
8
8
  /** Maximum number of stuck issues to process per PM Agent tick (rate limiter). */
9
9
  maxPerTick: number;
10
+ /**
11
+ * BEC-184: Age threshold (in minutes) after which a 'running' pipeline run is
12
+ * considered zombie/stuck and eligible for recovery. Defaults to 60 minutes.
13
+ * Set via PM_AGENT_STUCK_RUN_AGE_MIN env var.
14
+ */
15
+ stuckRunAgeMinutes?: number;
10
16
  /** Pre-fetched workflow state map (`${teamId}:${stateName}` → stateId). */
11
17
  stateMap?: Map<string, string>;
12
18
  /** Called with all successfully recovered issues for Slack notification. */
@@ -26,6 +32,11 @@ export interface StuckIssueResult {
26
32
  * exists). Otherwise the caller's input targetState ("Backlog" | "Todo").
27
33
  */
28
34
  targetState: "Backlog" | "Todo" | "In Review";
35
+ /**
36
+ * BEC-184: set to true when this issue was recovered due to a long-running
37
+ * (zombie) run, as opposed to a failed/completed stuck run.
38
+ */
39
+ recoveredLongRunning?: boolean;
29
40
  }
30
41
  /**
31
42
  * Detects Linear issues that are stuck in "In Progress" with no active pipeline run,
@@ -35,6 +46,11 @@ export interface StuckIssueResult {
35
46
  * - Its Linear state is "In Progress"
36
47
  * - There is no pipeline_runs row with status "running" or "queued" for that issue
37
48
  *
49
+ * BEC-184: Additionally, issues whose most recent run has status "running" but
50
+ * started more than `stuckRunAgeMinutes` minutes ago are treated as zombie runs.
51
+ * The `pipeline_runs` row is marked status='failed' and the Linear issue is moved
52
+ * to the target state. An audit event `pm.recovered_long_running` is emitted.
53
+ *
38
54
  * Rate-limited to `maxPerTick` issues per tick to prevent flooding.
39
55
  *
40
56
  * **Hard limit:** The Linear query uses `first: 50`, which means at most 50 issues are
@@ -1 +1 @@
1
- {"version":3,"file":"recover-stuck.d.ts","sourceRoot":"","sources":["../../../src/pm/actions/recover-stuck.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAShD,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,GAAG,CAAC;IAClB,EAAE,EAAE,KAAK,CAAC;IACV,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,mDAAmD;IACnD,WAAW,EAAE,SAAS,GAAG,MAAM,CAAC;IAChC,kFAAkF;IAClF,UAAU,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,4EAA4E;IAC5E,qBAAqB,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvE;AAED,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;OAIG;IACH,WAAW,EAAE,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC;CAC/C;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAkL7B"}
1
+ {"version":3,"file":"recover-stuck.d.ts","sourceRoot":"","sources":["../../../src/pm/actions/recover-stuck.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAUhD,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,GAAG,CAAC;IAClB,EAAE,EAAE,KAAK,CAAC;IACV,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,mDAAmD;IACnD,WAAW,EAAE,SAAS,GAAG,MAAM,CAAC;IAChC,kFAAkF;IAClF,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,4EAA4E;IAC5E,qBAAqB,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvE;AAED,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;OAIG;IACH,WAAW,EAAE,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC;IAC9C;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAwP7B"}