@urateam/core 0.1.14 → 0.1.16

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 (33) hide show
  1. package/dist/__tests__/agent-stream.test.d.ts +2 -0
  2. package/dist/__tests__/agent-stream.test.d.ts.map +1 -0
  3. package/dist/__tests__/agent-stream.test.js +85 -0
  4. package/dist/__tests__/agent-stream.test.js.map +1 -0
  5. package/dist/__tests__/license-end-to-end.test.js +3 -3
  6. package/dist/__tests__/license-end-to-end.test.js.map +1 -1
  7. package/dist/__tests__/review-feedback.test.js +166 -2
  8. package/dist/__tests__/review-feedback.test.js.map +1 -1
  9. package/dist/executor/agent-stream.d.ts +32 -0
  10. package/dist/executor/agent-stream.d.ts.map +1 -1
  11. package/dist/executor/agent-stream.js +67 -2
  12. package/dist/executor/agent-stream.js.map +1 -1
  13. package/dist/executor/executor.d.ts +6 -1
  14. package/dist/executor/executor.d.ts.map +1 -1
  15. package/dist/executor/executor.js +1 -1
  16. package/dist/executor/executor.js.map +1 -1
  17. package/dist/executor/prompt/assembler.d.ts +5 -2
  18. package/dist/executor/prompt/assembler.d.ts.map +1 -1
  19. package/dist/executor/prompt/assembler.js +5 -2
  20. package/dist/executor/prompt/assembler.js.map +1 -1
  21. package/dist/executor/prompt/templates.d.ts +2 -2
  22. package/dist/executor/prompt/templates.d.ts.map +1 -1
  23. package/dist/executor/prompt/templates.js +21 -2
  24. package/dist/executor/prompt/templates.js.map +1 -1
  25. package/dist/pipeline/runner.d.ts +16 -1
  26. package/dist/pipeline/runner.d.ts.map +1 -1
  27. package/dist/pipeline/runner.js +52 -36
  28. package/dist/pipeline/runner.js.map +1 -1
  29. package/dist/types.d.ts +13 -0
  30. package/dist/types.d.ts.map +1 -1
  31. package/dist/types.js +10 -0
  32. package/dist/types.js.map +1 -1
  33. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=agent-stream.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-stream.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/agent-stream.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,85 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { consumeAgentStream, StageStalledError } from "../executor/agent-stream.js";
3
+ async function* fromArray(items) {
4
+ for (const item of items)
5
+ yield item;
6
+ }
7
+ /** Async iterable that yields the given items, then sleeps forever. */
8
+ async function* hangsAfter(items) {
9
+ for (const item of items)
10
+ yield item;
11
+ await new Promise(() => { }); // never resolves
12
+ }
13
+ /** Async iterable where each yield is delayed by `delayMs` and emits an output_tokens bump. */
14
+ async function* tokenStream(count, delayMs) {
15
+ for (let i = 0; i < count; i++) {
16
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
17
+ yield { type: "assistant", usage: { output_tokens: 5 }, content: [{ type: "text", text: `chunk ${i}` }] };
18
+ }
19
+ }
20
+ describe("consumeAgentStream — basic behavior", () => {
21
+ it("accumulates token usage across messages", async () => {
22
+ const result = await consumeAgentStream(fromArray([
23
+ { usage: { input_tokens: 100, output_tokens: 50 } },
24
+ { usage: { input_tokens: 20, output_tokens: 30 } },
25
+ ]));
26
+ expect(result.inputTokens).toBe(120);
27
+ expect(result.outputTokens).toBe(80);
28
+ });
29
+ it("counts assistant messages as turns and extracts last text", async () => {
30
+ const result = await consumeAgentStream(fromArray([
31
+ { type: "assistant", content: [{ type: "text", text: "first" }] },
32
+ { type: "assistant", content: [{ type: "text", text: "last" }] },
33
+ ]));
34
+ expect(result.turns).toBe(2);
35
+ expect(result.lastText).toBe("last");
36
+ });
37
+ });
38
+ describe("consumeAgentStream — stall watchdog (urateam#122)", () => {
39
+ it("throws StageStalledError when the iterator hangs longer than progressTimeoutMs", async () => {
40
+ await expect(consumeAgentStream(hangsAfter([{ type: "assistant", content: [{ type: "text", text: "ok" }] }]), {
41
+ progressTimeoutMs: 200,
42
+ })).rejects.toBeInstanceOf(StageStalledError);
43
+ });
44
+ it("includes last observed stats in the StageStalledError", async () => {
45
+ try {
46
+ await consumeAgentStream(hangsAfter([
47
+ { type: "assistant", usage: { output_tokens: 12 }, content: [{ type: "text", text: "hi" }] },
48
+ ]), { progressTimeoutMs: 200 });
49
+ throw new Error("expected StageStalledError");
50
+ }
51
+ catch (err) {
52
+ expect(err).toBeInstanceOf(StageStalledError);
53
+ const stalled = err;
54
+ expect(stalled.lastStats.turns).toBe(1);
55
+ expect(stalled.lastStats.outputTokens).toBe(12);
56
+ // Node timers can fire 1–2ms early under CI load; loosen the lower bound
57
+ // so the assertion still proves the watchdog stalled "around" 200ms
58
+ // without flaking on Node's setTimeout jitter. (Saw 199ms on GitHub
59
+ // Actions; PR #135 unrelated CI block.)
60
+ expect(stalled.stalledForMs).toBeGreaterThanOrEqual(180);
61
+ }
62
+ });
63
+ it("does NOT fire when output tokens keep advancing within the window", async () => {
64
+ // 4 chunks at 30ms each = 120ms total. Window is 250ms but resets on each token bump.
65
+ // Generous slack (130ms+) keeps this from flaking under loaded CI.
66
+ const result = await consumeAgentStream(tokenStream(4, 30), { progressTimeoutMs: 250 });
67
+ expect(result.turns).toBe(4);
68
+ expect(result.outputTokens).toBe(20);
69
+ });
70
+ it("fires when messages keep arriving but no output tokens / turns advance", async () => {
71
+ // Reproduction of the ROT-15 zombie pattern: messageCount advances slowly, but
72
+ // turns and outputTokens stay flat. Watchdog must catch this.
73
+ async function* zombieStream() {
74
+ // First a real assistant message to seed lastTokenAdvanceAt.
75
+ yield { type: "assistant", usage: { output_tokens: 5 }, content: [{ type: "text", text: "start" }] };
76
+ // Then a slow drip of non-progress messages (system events with no tokens, no turns).
77
+ for (let i = 0; i < 20; i++) {
78
+ await new Promise((resolve) => setTimeout(resolve, 20));
79
+ yield { type: "system" };
80
+ }
81
+ }
82
+ await expect(consumeAgentStream(zombieStream(), { progressTimeoutMs: 200 })).rejects.toBeInstanceOf(StageStalledError);
83
+ });
84
+ });
85
+ //# sourceMappingURL=agent-stream.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-stream.test.js","sourceRoot":"","sources":["../../src/__tests__/agent-stream.test.ts"],"names":[],"mappings":"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"}
@@ -29,10 +29,10 @@ describe("license end-to-end (CLI issue → core validate)", () => {
29
29
  }, 60_000);
30
30
  beforeEach(async () => {
31
31
  _resetLicenseCache();
32
- originalSigningKey = process.env.URATEAM_LICENSE_SIGNING_KEY_DER_B64;
32
+ originalSigningKey = process.env.URATEAM_LICENSE_SIGNING_KEY;
33
33
  originalLicenseKey = process.env.URATEAM_LICENSE_KEY;
34
34
  const { publicKey, privateKey } = generateKeyPairSync("ed25519");
35
- process.env.URATEAM_LICENSE_SIGNING_KEY_DER_B64 = Buffer.from(privateKey.export({ format: "der", type: "pkcs8" })).toString("base64");
35
+ process.env.URATEAM_LICENSE_SIGNING_KEY = Buffer.from(privateKey.export({ format: "der", type: "pkcs8" })).toString("base64");
36
36
  const mod = await import("../license-public-key.js");
37
37
  originalPublicKey = mod.LICENSE_PUBLIC_KEY_DER_B64;
38
38
  Object.defineProperty(mod, "LICENSE_PUBLIC_KEY_DER_B64", {
@@ -42,7 +42,7 @@ describe("license end-to-end (CLI issue → core validate)", () => {
42
42
  });
43
43
  });
44
44
  afterEach(async () => {
45
- process.env.URATEAM_LICENSE_SIGNING_KEY_DER_B64 = originalSigningKey;
45
+ process.env.URATEAM_LICENSE_SIGNING_KEY = originalSigningKey;
46
46
  if (originalLicenseKey === undefined)
47
47
  delete process.env.URATEAM_LICENSE_KEY;
48
48
  else
@@ -1 +1 @@
1
- {"version":3,"file":"license-end-to-end.test.js","sourceRoot":"","sources":["../../src/__tests__/license-end-to-end.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"license-end-to-end.test.js","sourceRoot":"","sources":["../../src/__tests__/license-end-to-end.test.ts"],"names":[],"mappings":"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"}
@@ -322,10 +322,10 @@ describe("implementTemplate with reviewFeedback", () => {
322
322
  expect(result).toContain("address PR review feedback");
323
323
  expect(result).not.toContain("Create a branch named:");
324
324
  });
325
- it("instructs agent to check out existing PR branch", () => {
325
+ it("references the existing PR branch and instructs the agent to stay on it", () => {
326
326
  const result = implementTemplate(issue, repo, undefined, feedback);
327
327
  expect(result).toContain(feedback.prBranch);
328
- expect(result).toContain("Check out the existing PR branch");
328
+ expect(result).toMatch(/Stay on the current branch/);
329
329
  });
330
330
  it("uses correct commit message format referencing issue ID", () => {
331
331
  const result = implementTemplate(issue, repo, undefined, feedback);
@@ -380,4 +380,168 @@ describe("assemblePrompt with reviewFeedback", () => {
380
380
  expect(result).not.toContain("<review-feedback>");
381
381
  });
382
382
  });
383
+ // ---------------------------------------------------------------------------
384
+ // buildReviewFeedbackContext (regression — see PR-comment trigger bug)
385
+ // ---------------------------------------------------------------------------
386
+ describe("buildReviewFeedbackContext", () => {
387
+ // Loaded lazily so this test file doesn't pull the heavy runner module
388
+ // (and its DB/git imports) into every other suite in this file.
389
+ const loadHelper = async () => {
390
+ const mod = await import("../pipeline/runner.js");
391
+ return mod.buildReviewFeedbackContext;
392
+ };
393
+ const webhookComments = [
394
+ {
395
+ commentId: "c1",
396
+ author: "alice",
397
+ body: "Please add input validation here.",
398
+ filePath: "src/search.ts",
399
+ lineNumber: 25,
400
+ },
401
+ {
402
+ commentId: "c2",
403
+ author: "bob",
404
+ body: "General comment, no file.",
405
+ },
406
+ ];
407
+ it("maps webhook ReviewFeedbackComment[] to ReviewComment[]", async () => {
408
+ const buildReviewFeedbackContext = await loadHelper();
409
+ const ctx = buildReviewFeedbackContext("https://github.com/acme/app/pull/42", "agent/BEC-85-fix", webhookComments);
410
+ expect(ctx.prUrl).toBe("https://github.com/acme/app/pull/42");
411
+ expect(ctx.prBranch).toBe("agent/BEC-85-fix");
412
+ expect(ctx.comments).toHaveLength(2);
413
+ expect(ctx.comments[0]).toMatchObject({
414
+ author: "alice",
415
+ body: "Please add input validation here.",
416
+ file: "src/search.ts",
417
+ line: 25,
418
+ });
419
+ expect(ctx.comments[1]).toMatchObject({
420
+ author: "bob",
421
+ body: "General comment, no file.",
422
+ });
423
+ expect(ctx.comments[1]?.file).toBeUndefined();
424
+ expect(ctx.comments[1]?.line).toBeUndefined();
425
+ });
426
+ it("produced context routes the implement template into the review-feedback branch", async () => {
427
+ // Locks in the wiring: the helper's output, when handed to assemblePrompt,
428
+ // must hit the focused "address review feedback" prompt — NOT the standard
429
+ // "create a branch" path that triggered the max-turns bug for PR-comment
430
+ // runs.
431
+ const buildReviewFeedbackContext = await loadHelper();
432
+ const ctx = buildReviewFeedbackContext("https://github.com/acme/app/pull/42", "agent/BEC-85-fix", webhookComments);
433
+ const prompt = assemblePrompt("implement", issue, repo, undefined, ctx);
434
+ expect(prompt).toContain("address PR review feedback");
435
+ expect(prompt).toContain("Stay on the current branch (`agent/BEC-85-fix`)");
436
+ expect(prompt).toContain("do NOT create a new PR");
437
+ expect(prompt).not.toContain("Create a branch named:");
438
+ });
439
+ it("preserves comment bodies through escapeXml in the rendered prompt", async () => {
440
+ const buildReviewFeedbackContext = await loadHelper();
441
+ const ctx = buildReviewFeedbackContext("https://github.com/acme/app/pull/42", "agent/BEC-85-fix", [
442
+ {
443
+ commentId: "c1",
444
+ author: "alice",
445
+ body: "<script>alert('xss')</script>",
446
+ filePath: "src/search.ts",
447
+ lineNumber: 10,
448
+ },
449
+ ]);
450
+ const prompt = assemblePrompt("implement", issue, repo, undefined, ctx);
451
+ expect(prompt).not.toContain("<script>");
452
+ expect(prompt).toContain("&lt;script&gt;");
453
+ });
454
+ });
455
+ // ---------------------------------------------------------------------------
456
+ // Merge-conflict context — used by the push-queue rebase-conflict path
457
+ // ---------------------------------------------------------------------------
458
+ describe("implementTemplate with mergeConflict", () => {
459
+ it("uses focused conflict-resolution prompt when mergeConflict is set", () => {
460
+ const prompt = implementTemplate(issue, repo, undefined, undefined, { defaultBranch: "main" });
461
+ expect(prompt).toContain("merge-conflict-resolution agent");
462
+ expect(prompt).toContain("origin/main");
463
+ expect(prompt).toContain("git rebase --continue");
464
+ // Must NOT include the standard implement instructions that confused
465
+ // the agent into burning all 50 turns on the wrong task.
466
+ expect(prompt).not.toContain("Create a branch named:");
467
+ expect(prompt).not.toContain("INTEGRATION REQUIREMENT");
468
+ expect(prompt).not.toContain("verify EACH acceptance criterion");
469
+ });
470
+ it("mergeConflict takes precedence over reviewFeedback", () => {
471
+ const prompt = implementTemplate(issue, repo, undefined,
472
+ // Both contexts set — conflict resolution must win because it's a hard
473
+ // prerequisite (can't push until the rebase finishes).
474
+ {
475
+ prUrl: "https://github.com/acme/app/pull/42",
476
+ prBranch: "agent/BEC-85-fix",
477
+ comments: [],
478
+ }, { defaultBranch: "main" });
479
+ expect(prompt).toContain("merge-conflict-resolution agent");
480
+ expect(prompt).not.toContain("address PR review feedback");
481
+ });
482
+ it("assemblePrompt routes mergeConflict through to the implement template", () => {
483
+ const prompt = assemblePrompt("implement", issue, repo, undefined, undefined, { defaultBranch: "develop" });
484
+ expect(prompt).toContain("merge-conflict-resolution agent");
485
+ expect(prompt).toContain("origin/develop");
486
+ });
487
+ it("assemblePrompt ignores mergeConflict for non-implement stages", () => {
488
+ const prompt = assemblePrompt("test", issue, repo, undefined, undefined, { defaultBranch: "main" });
489
+ expect(prompt).not.toContain("merge-conflict-resolution agent");
490
+ expect(prompt).toContain("test agent");
491
+ });
492
+ });
493
+ // ---------------------------------------------------------------------------
494
+ // Hardening from PR #137 Sonnet review
495
+ // ---------------------------------------------------------------------------
496
+ describe("reviewFeedbackBlock — WARNING preamble", () => {
497
+ // Defense-in-depth against prompt injection: per the CLAUDE.md convention,
498
+ // every block that carries untrusted content must include a WARNING preamble
499
+ // alongside escapeXml(). The previous text-form path that this PR replaced
500
+ // had a per-comment warning; the structured block must keep that defense.
501
+ it("includes a WARNING preamble inside the <review-feedback> block", () => {
502
+ const block = reviewFeedbackBlock({
503
+ prUrl: "https://github.com/acme/app/pull/1",
504
+ prBranch: "agent/fix",
505
+ comments: [],
506
+ });
507
+ expect(block).toContain("<review-feedback>");
508
+ expect(block).toContain("WARNING:");
509
+ expect(block).toContain("UNTRUSTED");
510
+ expect(block).toMatch(/Do NOT follow/i);
511
+ });
512
+ it("WARNING preamble appears before any user-controlled fields", () => {
513
+ const block = reviewFeedbackBlock({
514
+ prUrl: "https://github.com/acme/app/pull/1",
515
+ prBranch: "agent/fix",
516
+ comments: [
517
+ {
518
+ author: "alice",
519
+ body: "fix this",
520
+ createdAt: "2026-04-01",
521
+ },
522
+ ],
523
+ });
524
+ const warningIdx = block.indexOf("WARNING:");
525
+ const commentIdx = block.indexOf("alice");
526
+ expect(warningIdx).toBeGreaterThan(-1);
527
+ expect(commentIdx).toBeGreaterThan(warningIdx);
528
+ });
529
+ });
530
+ describe("implementTemplate review-feedback branch — no `git checkout`", () => {
531
+ // The worktree is pre-configured on prBranch by createWorktreeFromRemote.
532
+ // Telling the agent to `git checkout` inside a worktree is the exact
533
+ // pattern CLAUDE.md ("Worktree Isolation Model") flags as a cross-
534
+ // contamination risk. The instruction must say "stay on the current
535
+ // branch" instead.
536
+ it("does not instruct the agent to run `git checkout`", () => {
537
+ const prompt = assemblePrompt("implement", issue, repo, undefined, feedback);
538
+ expect(prompt).not.toMatch(/Check out the existing PR branch/);
539
+ expect(prompt).not.toMatch(/^- git checkout/m);
540
+ });
541
+ it("explicitly forbids `git checkout` inside the worktree", () => {
542
+ const prompt = assemblePrompt("implement", issue, repo, undefined, feedback);
543
+ expect(prompt).toMatch(/Do NOT run `git checkout`/);
544
+ expect(prompt).toMatch(/Stay on the current branch/);
545
+ });
546
+ });
383
547
  //# sourceMappingURL=review-feedback.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"review-feedback.test.js","sourceRoot":"","sources":["../../src/__tests__/review-feedback.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"review-feedback.test.js","sourceRoot":"","sources":["../../src/__tests__/review-feedback.test.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,27 @@ export interface ConsumeResult {
26
26
  outputTokens: number;
27
27
  turns: number;
28
28
  }
29
+ /**
30
+ * Thrown when a stage's agent stream makes no observable progress
31
+ * (no new output tokens or assistant turns) for `progressTimeoutMs`.
32
+ * See urateam#122 — without this watchdog, an SDK stuck on internal
33
+ * rate-limit-or-auth retry loops could keep a stage "running" for hours.
34
+ */
35
+ export declare class StageStalledError extends Error {
36
+ readonly stalledForMs: number;
37
+ readonly lastStats: {
38
+ messageCount: number;
39
+ turns: number;
40
+ inputTokens: number;
41
+ outputTokens: number;
42
+ };
43
+ constructor(stalledForMs: number, lastStats: {
44
+ messageCount: number;
45
+ turns: number;
46
+ inputTokens: number;
47
+ outputTokens: number;
48
+ });
49
+ }
29
50
  /**
30
51
  * Consume an Agent SDK message stream, accumulating token usage and
31
52
  * extracting the last assistant text content.
@@ -44,6 +65,17 @@ export declare function consumeAgentStream(messages: AsyncIterable<unknown>, opt
44
65
  outputTokens: number;
45
66
  }) => void;
46
67
  progressIntervalMs?: number;
68
+ /**
69
+ * Throw StageStalledError if no new outputTokens or assistant turns arrive
70
+ * in this window. Default 30 minutes. See urateam#122.
71
+ *
72
+ * NOTE: tool_use / tool_result messages do NOT reset this timer. The
73
+ * ROT-15 zombie pattern emitted system messages while stuck, but a
74
+ * legitimate long-running tool call (e.g. a 30+ min build) also produces
75
+ * no assistant turns until the tool returns. If your stage runs slow
76
+ * tool calls, raise this value (or chunk the work).
77
+ */
78
+ progressTimeoutMs?: number;
47
79
  }): Promise<ConsumeResult>;
48
80
  /**
49
81
  * Extract text from an Agent SDK message content field.
@@ -1 +1 @@
1
- {"version":3,"file":"agent-stream.d.ts","sourceRoot":"","sources":["../../src/executor/agent-stream.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,MAAM,CAAC;IAC1D,0EAA0E;IAC1E,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,GAAG,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC;CAClF;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,EAChC,OAAO,CAAC,EAAE;IACR,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7C,wEAAwE;IACxE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACjH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,GACA,OAAO,CAAC,aAAa,CAAC,CAoDxB;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,MAAM,GACvD,MAAM,CAOR;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAQxD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAQ3D"}
1
+ {"version":3,"file":"agent-stream.d.ts","sourceRoot":"","sources":["../../src/executor/agent-stream.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,MAAM,CAAC;IAC1D,0EAA0E;IAC1E,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,GAAG,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC;CAClF;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;aAExB,YAAY,EAAE,MAAM;aACpB,SAAS,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE;gBAD7F,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE;CAQhH;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,EAChC,OAAO,CAAC,EAAE;IACR,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7C,wEAAwE;IACxE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACjH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;;;;OASG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,GACA,OAAO,CAAC,aAAa,CAAC,CAwGxB;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,MAAM,GACvD,MAAM,CAOR;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAQxD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAQ3D"}
@@ -2,6 +2,23 @@
2
2
  * Shared helpers for consuming Agent SDK message streams and parsing
3
3
  * JSON blocks from agent output.
4
4
  */
5
+ /**
6
+ * Thrown when a stage's agent stream makes no observable progress
7
+ * (no new output tokens or assistant turns) for `progressTimeoutMs`.
8
+ * See urateam#122 — without this watchdog, an SDK stuck on internal
9
+ * rate-limit-or-auth retry loops could keep a stage "running" for hours.
10
+ */
11
+ export class StageStalledError extends Error {
12
+ stalledForMs;
13
+ lastStats;
14
+ constructor(stalledForMs, lastStats) {
15
+ super(`stage stalled — no token/turn progress in ${Math.round(stalledForMs / 1000)}s ` +
16
+ `(messageCount=${lastStats.messageCount}, turns=${lastStats.turns}, outputTokens=${lastStats.outputTokens})`);
17
+ this.stalledForMs = stalledForMs;
18
+ this.lastStats = lastStats;
19
+ this.name = "StageStalledError";
20
+ }
21
+ }
5
22
  /**
6
23
  * Consume an Agent SDK message stream, accumulating token usage and
7
24
  * extracting the last assistant text content.
@@ -17,14 +34,56 @@ export async function consumeAgentStream(messages, options) {
17
34
  let lastText = "";
18
35
  let messageCount = 0;
19
36
  let lastProgressTime = Date.now();
37
+ let lastTokenAdvanceAt = Date.now();
20
38
  const progressInterval = options?.progressIntervalMs ?? 30_000;
21
- for await (const rawMessage of messages) {
22
- const message = rawMessage;
39
+ const stallTimeoutMs = options?.progressTimeoutMs ?? 30 * 60_000;
40
+ const iterator = messages[Symbol.asyncIterator]();
41
+ const STALLED = { __stalled: true };
42
+ while (true) {
43
+ const remainingUntilStall = stallTimeoutMs - (Date.now() - lastTokenAdvanceAt);
44
+ let stallTimer;
45
+ let nextSettled = false;
46
+ let nextValue;
47
+ const next = iterator.next().then((v) => {
48
+ nextSettled = true;
49
+ nextValue = v;
50
+ return v;
51
+ });
52
+ const stallPromise = new Promise((resolve) => {
53
+ stallTimer = setTimeout(() => resolve(STALLED), Math.max(remainingUntilStall, 0));
54
+ });
55
+ const raced = await Promise.race([next, stallPromise]);
56
+ if (stallTimer)
57
+ clearTimeout(stallTimer);
58
+ if (raced === STALLED) {
59
+ // Defensive race-loss check: if the iterator settled in the same tick
60
+ // as the timer fired, prefer the message we already have. The
61
+ // microtask vs macrotask ordering in V8 makes this near-impossible
62
+ // in practice, but the cost is one boolean check.
63
+ if (!(nextSettled && nextValue && !nextValue.done)) {
64
+ // Fire-and-forget cleanup — when the agent generator is paused on a
65
+ // never-resolving await (the exact zombie pattern from urateam#122),
66
+ // awaiting iterator.return() would hang forever waiting for that
67
+ // await to settle. Best-effort signal; let the GC handle the rest.
68
+ iterator.return?.().catch(() => { });
69
+ throw new StageStalledError(Date.now() - lastTokenAdvanceAt, {
70
+ messageCount,
71
+ turns,
72
+ inputTokens,
73
+ outputTokens,
74
+ });
75
+ }
76
+ }
77
+ const result = (raced === STALLED ? nextValue : raced);
78
+ if (result.done)
79
+ break;
80
+ const message = result.value;
23
81
  messageCount++;
24
82
  if (options?.onProgress && Date.now() - lastProgressTime >= progressInterval) {
25
83
  options.onProgress({ messageCount, turns, inputTokens, outputTokens });
26
84
  lastProgressTime = Date.now();
27
85
  }
86
+ const prevOutputTokens = outputTokens;
28
87
  if (message.usage) {
29
88
  inputTokens += message.usage.input_tokens ?? 0;
30
89
  outputTokens += message.usage.output_tokens ?? 0;
@@ -54,6 +113,12 @@ export async function consumeAgentStream(messages, options) {
54
113
  if (message.type === "assistant") {
55
114
  turns++;
56
115
  }
116
+ // Reset stall watchdog on real progress (output tokens advance OR a turn was added).
117
+ // messageCount alone is NOT enough — see urateam#122 reproduction where
118
+ // messageCount kept advancing but turns/outputTokens stayed flat for 8h.
119
+ if (outputTokens > prevOutputTokens || message.type === "assistant") {
120
+ lastTokenAdvanceAt = Date.now();
121
+ }
57
122
  }
58
123
  return { lastText, inputTokens, outputTokens, turns };
59
124
  }
@@ -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":"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"}
@@ -1,4 +1,4 @@
1
- import type { StageType, SanitizedIssue, RepoConfig, HandoffArtifact, StageResult, ReviewFeedbackContext } from "../types.js";
1
+ import type { StageType, SanitizedIssue, RepoConfig, HandoffArtifact, StageResult, ReviewFeedbackContext, MergeConflictContext } from "../types.js";
2
2
  import type { Db } from "../db/client.js";
3
3
  import type { TechStackProfile } from "../repo/tech-stack.js";
4
4
  import type { DevcontainerSession } from "../repo/devcontainer.js";
@@ -22,6 +22,11 @@ export interface ExecuteStageContext {
22
22
  * rewritten to address the specific review comments rather than re-implementing
23
23
  * from scratch. The agent is instructed to push to the existing PR branch. */
24
24
  reviewFeedback?: ReviewFeedbackContext;
25
+ /** Merge-conflict resolution context. When present on an implement stage, the
26
+ * prompt is rewritten to focus narrowly on resolving rebase conflicts and
27
+ * continuing the rebase — no issue re-implementation, no build/test runs.
28
+ * Takes precedence over `reviewFeedback` if both are set. */
29
+ mergeConflictContext?: MergeConflictContext;
25
30
  }
26
31
  export declare function executeStage(context: ExecuteStageContext): Promise<StageResult>;
27
32
  //# sourceMappingURL=executor.d.ts.map
@@ -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,EACtB,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,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;CACxC;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,WAAW,CAAC,CA0MtB"}
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,EACrB,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,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,CAiNtB"}
@@ -22,7 +22,7 @@ export async function executeStage(context) {
22
22
  const log = createLogger({ component: "Executor", runId, issueId, stage });
23
23
  const db = rawDb;
24
24
  const stageRunId = nanoid();
25
- let prompt = assemblePrompt(stage, sanitizedIssue, repoConfig, handoff, context.reviewFeedback);
25
+ let prompt = assemblePrompt(stage, sanitizedIssue, repoConfig, handoff, context.reviewFeedback, context.mergeConflictContext);
26
26
  // When a devcontainer is active, instruct the agent to run shell commands inside it
27
27
  if (context.devcontainerSession) {
28
28
  const ws = context.devcontainerSession.workspaceFolder;