Skip to content

fix: improve terminated stream retry telemetry and bump retries to 3#2877

Merged
wwwillchen merged 1 commit intodyad-sh:mainfrom
wwwillchen:add-telemetry-terminated-stream-retries
Mar 4, 2026
Merged

fix: improve terminated stream retry telemetry and bump retries to 3#2877
wwwillchen merged 1 commit intodyad-sh:mainfrom
wwwillchen:add-telemetry-terminated-stream-retries

Conversation

@wwwillchen
Copy link
Copy Markdown
Collaborator

@wwwillchen wwwillchen commented Mar 3, 2026

Summary

  • Include dyadRequestId in terminated_stream_retry telemetry events for better traceability
  • Add new terminated_stream_retries_exhausted telemetry event when all retries are used up (both stream_iteration and response_finalization phases)
  • Bump MAX_TERMINATED_STREAM_RETRIES from 2 to 3

Test plan

  • Existing local_agent_handler unit tests pass (stream retry tests verified)
  • Verify telemetry events include dyadRequestId in retry scenarios
  • Verify exhausted event fires when retries exceed the new limit of 3

#skip-bugbot

Made with Cursor


Open with Devin

- Include dyadRequestId in terminated_stream_retry telemetry events
- Add terminated_stream_retries_exhausted telemetry event when all
  retries are used up (both stream_iteration and response_finalization)
- Bump MAX_TERMINATED_STREAM_RETRIES from 2 to 3

Made-with: Cursor
@wwwillchen wwwillchen requested a review from a team March 3, 2026 21:54
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request enhances the robustness and observability of stream handling by increasing the maximum number of retry attempts for terminated streams and significantly improving the associated telemetry. The changes provide better insight into retry behavior and exhaustion, which will aid in debugging and understanding stream stability.

Highlights

  • Telemetry Improvement: Included dyadRequestId in terminated_stream_retry telemetry events to enhance traceability for stream retry attempts.
  • New Telemetry Event: Added a new terminated_stream_retries_exhausted telemetry event that fires when all retry attempts for a terminated stream are used up, covering both stream_iteration and response_finalization phases.
  • Increased Retry Limit: Increased the MAX_TERMINATED_STREAM_RETRIES constant from 2 to 3, allowing for one additional retry attempt for terminated streams.
Changelog
  • src/pro/main/ipc/handlers/local_agent/local_agent_handler.ts
    • Increased MAX_TERMINATED_STREAM_RETRIES from 2 to 3.
    • Added dyadRequestId to local_agent:terminated_stream_retry telemetry events.
    • Introduced local_agent:terminated_stream_retries_exhausted telemetry event for exhausted retry scenarios in both stream iteration and response finalization phases.
Activity
  • No human activity has been recorded on this pull request yet.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with πŸ‘ and πŸ‘Ž on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩

Copy link
Copy Markdown
Contributor

@devin-ai-integration devin-ai-integration bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 potential issue.

View 3 additional findings in Devin Review.

Open in Devin Review

Comment on lines +1020 to +1029
sendTelemetryEvent(
"local_agent:terminated_stream_retries_exhausted",
{
chatId: req.chatId,
dyadRequestId,
retryCount: terminatedRetryCount,
error: String(streamError),
phase: "stream_iteration",
},
);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟑 Missing isTerminatedStreamError guard causes false retries_exhausted telemetry for non-terminated errors

In the stream_iteration phase, the terminated_stream_retries_exhausted telemetry event is sent unconditionally for any stream error that doesn't qualify for retry. However, shouldRetryTerminatedStreamError returns false for two distinct reasons: (1) the error IS a terminated stream error but retries are exhausted, or (2) the error is NOT a terminated stream error at all (e.g., auth error, rate limit, server error).

Root Cause and Comparison with response_finalization

At local_agent_handler.ts:1020-1029, when shouldRetryTerminatedStreamError returns false, the code unconditionally sends terminated_stream_retries_exhausted before throwing. This means any non-terminated stream error (e.g. a 401 auth error or 429 rate-limit error) will produce a misleading terminated_stream_retries_exhausted telemetry event.

The response_finalization phase at local_agent_handler.ts:1069 correctly guards the same telemetry event with if (isTerminatedStreamError(err)), but this guard is missing in the stream_iteration phase.

Impact: False/misleading telemetry events will pollute the terminated_stream_retries_exhausted metric, making it unreliable for diagnosing actual terminated stream exhaustion.

Suggested change
sendTelemetryEvent(
"local_agent:terminated_stream_retries_exhausted",
{
chatId: req.chatId,
dyadRequestId,
retryCount: terminatedRetryCount,
error: String(streamError),
phase: "stream_iteration",
},
);
if (isTerminatedStreamError(streamError)) {
sendTelemetryEvent(
"local_agent:terminated_stream_retries_exhausted",
{
chatId: req.chatId,
dyadRequestId,
retryCount: terminatedRetryCount,
error: String(streamError),
phase: "stream_iteration",
},
);
}
Open in Devin Review

Was this helpful? React with πŸ‘ or πŸ‘Ž to provide feedback.

Copy link
Copy Markdown

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is ON, but it could not run because the branch was deleted or merged before autofix could start.

error: String(streamError),
phase: "stream_iteration",
},
);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing guard emits false "retries exhausted" telemetry events

Medium Severity

In the stream_iteration phase, the terminated_stream_retries_exhausted telemetry event fires unconditionally when shouldRetryTerminatedStreamError returns false. Since that function also returns false for errors that aren't terminated stream errors at all, non-terminated stream errors will incorrectly emit this event. The response_finalization phase correctly guards this with if (isTerminatedStreamError(err)), but the stream_iteration phase is missing the equivalent guard.

Additional Locations (1)

Fix in CursorΒ Fix in Web

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps bot commented Mar 3, 2026

Greptile Summary

This PR improves telemetry around terminated stream retries in local_agent_handler.ts by adding dyadRequestId to existing retry events, introducing a new terminated_stream_retries_exhausted event for both retry phases, and bumping MAX_TERMINATED_STREAM_RETRIES from 2 to 3.

Key changes:

  • dyadRequestId is now included in local_agent:terminated_stream_retry events for both the stream_iteration and response_finalization phases, improving traceability across retry attempts
  • A new local_agent:terminated_stream_retries_exhausted telemetry event is emitted when all retries are used up in either phase
  • MAX_TERMINATED_STREAM_RETRIES is bumped from 2 to 3, giving one additional retry attempt before giving up
  • Inconsistency found: the stream_iteration exhausted-event path emits terminated_stream_retries_exhausted unconditionally (without a isTerminatedStreamError guard), whereas the response_finalization path correctly guards with if (isTerminatedStreamError(err)). This means a non-terminated-stream error in the iteration phase will incorrectly fire the exhausted telemetry event, producing misleading data.

Confidence Score: 4/5

  • Safe to merge with low risk β€” the missing guard only affects telemetry accuracy, not runtime behavior or correctness.
  • The retry logic itself is unchanged and the bump from 2 to 3 retries is straightforward. The only real issue is an inconsistency in the telemetry guard for the stream_iteration exhausted event, which causes incorrect event emissions for non-terminated errors but does not affect the actual retry or error-throwing behavior.
  • src/pro/main/ipc/handlers/local_agent/local_agent_handler.ts β€” specifically the stream_iteration exhausted-event block around line 1020

Important Files Changed

Filename Overview
src/pro/main/ipc/handlers/local_agent/local_agent_handler.ts Bumps MAX_TERMINATED_STREAM_RETRIES from 2β†’3, adds dyadRequestId to existing retry telemetry, and introduces a new exhausted-telemetry event. One inconsistency: the stream_iteration path emits terminated_stream_retries_exhausted unconditionally (without an isTerminatedStreamError guard), unlike the response_finalization path which correctly guards it.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Stream Error Detected] --> B{isTerminatedStreamError?}
    B -- No, stream_iteration --> C[Emit exhausted event unconditionally - INCONSISTENCY]
    B -- No, response_finalization --> D[Skip exhausted event - correct]
    B -- Yes --> E{retryCount less than MAX=3?}
    E -- Yes --> F[Emit terminated_stream_retry event with dyadRequestId\nincrement retryCount, delay and continue]
    E -- No --> G[Emit terminated_stream_retries_exhausted event]
    G --> H{Phase?}
    H -- stream_iteration --> I[throw streamError]
    H -- response_finalization --> J[warn log, clear steps and messages]
Loading

Last reviewed commit: db3b99c

Comment on lines +1020 to 1030
sendTelemetryEvent(
"local_agent:terminated_stream_retries_exhausted",
{
chatId: req.chatId,
dyadRequestId,
retryCount: terminatedRetryCount,
error: String(streamError),
phase: "stream_iteration",
},
);
throw streamError;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

terminated_stream_retries_exhausted fired for non-terminated errors

In the stream_iteration phase, the terminated_stream_retries_exhausted event is emitted unconditionally whenever shouldRetryTerminatedStreamError returns false. However, shouldRetryTerminatedStreamError returns false in two distinct cases:

  1. Retries are exhausted (correct β€” the event is appropriate)
  2. The error is not a terminated stream error (incorrect β€” the event name is misleading and will produce noisy/wrong telemetry)

The response_finalization phase (added just below this) correctly guards with if (isTerminatedStreamError(err)) before emitting the same event. The stream_iteration path is missing that guard.

Since both streamErrorFromCallback (set in onError) and streamErrorFromIteration (caught from the fullStream async iteration) can be arbitrary errors β€” not just terminated-stream errors β€” a non-terminated error will fall through shouldRetryTerminatedStreamError and incorrectly emit this event.

Suggested change
sendTelemetryEvent(
"local_agent:terminated_stream_retries_exhausted",
{
chatId: req.chatId,
dyadRequestId,
retryCount: terminatedRetryCount,
error: String(streamError),
phase: "stream_iteration",
},
);
throw streamError;
if (isTerminatedStreamError(streamError)) {
sendTelemetryEvent(
"local_agent:terminated_stream_retries_exhausted",
{
chatId: req.chatId,
dyadRequestId,
retryCount: terminatedRetryCount,
error: String(streamError),
phase: "stream_iteration",
},
);
}
Prompt To Fix With AI
This is a comment left during a code review.
Path: src/pro/main/ipc/handlers/local_agent/local_agent_handler.ts
Line: 1020-1030

Comment:
**`terminated_stream_retries_exhausted` fired for non-terminated errors**

In the `stream_iteration` phase, the `terminated_stream_retries_exhausted` event is emitted unconditionally whenever `shouldRetryTerminatedStreamError` returns `false`. However, `shouldRetryTerminatedStreamError` returns `false` in **two** distinct cases:

1. Retries are exhausted (correct β€” the event is appropriate)
2. The error is **not** a terminated stream error (incorrect β€” the event name is misleading and will produce noisy/wrong telemetry)

The `response_finalization` phase (added just below this) correctly guards with `if (isTerminatedStreamError(err))` before emitting the same event. The `stream_iteration` path is missing that guard.

Since both `streamErrorFromCallback` (set in `onError`) and `streamErrorFromIteration` (caught from the `fullStream` async iteration) can be arbitrary errors β€” not just terminated-stream errors β€” a non-terminated error will fall through `shouldRetryTerminatedStreamError` and incorrectly emit this event.

```suggestion
            if (isTerminatedStreamError(streamError)) {
              sendTelemetryEvent(
                "local_agent:terminated_stream_retries_exhausted",
                {
                  chatId: req.chatId,
                  dyadRequestId,
                  retryCount: terminatedRetryCount,
                  error: String(streamError),
                  phase: "stream_iteration",
                },
              );
            }
```

How can I resolve this? If you propose a fix, please make it concise.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request improves the telemetry for terminated stream retries by adding the dyadRequestId and introducing a new terminated_stream_retries_exhausted event. It also increases the maximum number of retries to 3. The changes are well-aligned with the description. I've found one area for improvement regarding error handling consistency when retries are exhausted.

Comment on lines +1069 to +1080
if (isTerminatedStreamError(err)) {
sendTelemetryEvent(
"local_agent:terminated_stream_retries_exhausted",
{
chatId: req.chatId,
dyadRequestId,
retryCount: terminatedRetryCount,
error: String(err),
phase: "response_finalization",
},
);
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

There's an inconsistency in error handling for exhausted retries between the stream_iteration and response_finalization phases.

In the stream_iteration phase (lines 1020-1030), when retries are exhausted, the streamError is correctly re-thrown, causing the agent turn to fail. However, in this response_finalization phase, the error is not re-thrown after sending the terminated_stream_retries_exhausted event. This causes the error to be silently swallowed, and the agent proceeds with an empty response as if the turn was successful.

To ensure consistent and robust error handling, the error should be re-thrown here to propagate the failure, just as it's done in the other phase.

Suggested change
if (isTerminatedStreamError(err)) {
sendTelemetryEvent(
"local_agent:terminated_stream_retries_exhausted",
{
chatId: req.chatId,
dyadRequestId,
retryCount: terminatedRetryCount,
error: String(err),
phase: "response_finalization",
},
);
}
if (isTerminatedStreamError(err)) {
sendTelemetryEvent(
"local_agent:terminated_stream_retries_exhausted",
{
chatId: req.chatId,
dyadRequestId,
retryCount: terminatedRetryCount,
error: String(err),
phase: "response_finalization",
},
);
throw err;
}

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

πŸ” Dyadbot Code Review Summary

Verdict: πŸ€” NOT SURE - Potential issues

Reviewed by 3 independent agents: Correctness Expert, Code Health Expert, UX Wizard.

Issues Summary

Severity File Issue
🟑 MEDIUM local_agent_handler.ts:1020 Missing isTerminatedStreamError guard in stream_iteration exhausted event
🟒 Low Priority Notes (1 item)
  • Duplicated retry telemetry blocks - local_agent_handler.ts:1007-1082 - The retry and exhausted telemetry blocks across stream_iteration and response_finalization phases share nearly identical structure. Consider extracting a helper to prevent future divergence (this PR itself was motivated by a previously missed field).
🚫 Dropped False Positives (3 items)
  • Increased retries extend worst-case wait time - Dropped: Additional ~1.2s delay is modest and a reasonable reliability/UX tradeoff
  • retryCount may be 0 in exhausted event - Dropped: Minor telemetry naming semantics, not a real bug
  • Silent failure on non-terminated error in response_finalization - Dropped: Pre-existing behavior not introduced by this PR

Generated by Dyadbot multi-agent code review

Comment on lines +1020 to 1030
sendTelemetryEvent(
"local_agent:terminated_stream_retries_exhausted",
{
chatId: req.chatId,
dyadRequestId,
retryCount: terminatedRetryCount,
error: String(streamError),
phase: "stream_iteration",
},
);
throw streamError;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟑 MEDIUM | correctness

Missing isTerminatedStreamError guard on exhausted event (stream_iteration path)

The terminated_stream_retries_exhausted event fires unconditionally here whenever shouldRetryTerminatedStreamError returns false. But that function returns false for three reasons: (1) error is not a terminated stream error, (2) retries are exhausted, or (3) the stream was aborted. Only case (2) should emit this event.

The response_finalization path (line ~1069) correctly wraps its exhausted event with if (isTerminatedStreamError(err)). This path is missing the equivalent guard, which will produce misleading telemetry data.

πŸ’‘ Suggestion: Add an isTerminatedStreamError(streamError) guard to match the response_finalization pattern:

Suggested change
sendTelemetryEvent(
"local_agent:terminated_stream_retries_exhausted",
{
chatId: req.chatId,
dyadRequestId,
retryCount: terminatedRetryCount,
error: String(streamError),
phase: "stream_iteration",
},
);
throw streamError;
if (isTerminatedStreamError(streamError)) {
sendTelemetryEvent(
"local_agent:terminated_stream_retries_exhausted",
{
chatId: req.chatId,
dyadRequestId,
retryCount: terminatedRetryCount,
error: String(streamError),
phase: "stream_iteration",
},
);
}

Copy link
Copy Markdown
Contributor

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 issues found across 1 file

Confidence score: 3/5

  • There is a concrete regression risk in src/pro/main/ipc/handlers/local_agent/local_agent_handler.ts: unlike stream_iteration, the response_finalization path appears to swallow errors after retries are exhausted instead of re-throwing, which can hide failures from callers and make debugging harder.
  • Telemetry accuracy may be impacted in src/pro/main/ipc/handlers/local_agent/local_agent_handler.ts because terminated_stream_retries_exhausted can be emitted for non-terminated errors; adding an isTerminatedStreamError guard should prevent misleading signals.
  • Given the higher-severity, high-confidence error-handling inconsistency (7/10, 8/10), this carries moderate merge risk until failure propagation behavior is made consistent across phases.
  • Pay close attention to src/pro/main/ipc/handlers/local_agent/local_agent_handler.ts - error propagation and telemetry event gating need to align with actual terminated-stream conditions.
Prompt for AI agents (unresolved issues)

Check if these issues are valid β€” if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="src/pro/main/ipc/handlers/local_agent/local_agent_handler.ts">

<violation number="1" location="src/pro/main/ipc/handlers/local_agent/local_agent_handler.ts:1020">
P1: Inconsistent error handling: in the `stream_iteration` phase, exhausted retries correctly re-throw the error (`throw streamError`), but here in the `response_finalization` phase the error is silently swallowed after sending telemetry. The code falls through to set `steps = []` and `responseMessages = []`, allowing the agent to proceed with an empty response as if the turn succeeded. Add `throw err;` after the telemetry event to propagate the failure consistently.</violation>

<violation number="2" location="src/pro/main/ipc/handlers/local_agent/local_agent_handler.ts:1020">
P2: `terminated_stream_retries_exhausted` is emitted for non-terminated errors; guard it with `isTerminatedStreamError` to avoid incorrect telemetry.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

await delay(retryDelayMs);
continue;
}
sendTelemetryEvent(
Copy link
Copy Markdown
Contributor

@cubic-dev-ai cubic-dev-ai bot Mar 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1: Inconsistent error handling: in the stream_iteration phase, exhausted retries correctly re-throw the error (throw streamError), but here in the response_finalization phase the error is silently swallowed after sending telemetry. The code falls through to set steps = [] and responseMessages = [], allowing the agent to proceed with an empty response as if the turn succeeded. Add throw err; after the telemetry event to propagate the failure consistently.

Prompt for AI agents
Check if this issue is valid β€” if so, understand the root cause and fix it. At src/pro/main/ipc/handlers/local_agent/local_agent_handler.ts, line 1020:

<comment>Inconsistent error handling: in the `stream_iteration` phase, exhausted retries correctly re-throw the error (`throw streamError`), but here in the `response_finalization` phase the error is silently swallowed after sending telemetry. The code falls through to set `steps = []` and `responseMessages = []`, allowing the agent to proceed with an empty response as if the turn succeeded. Add `throw err;` after the telemetry event to propagate the failure consistently.</comment>

<file context>
@@ -1016,6 +1017,16 @@ export async function handleLocalAgentStream(
               await delay(retryDelayMs);
               continue;
             }
+            sendTelemetryEvent(
+              "local_agent:terminated_stream_retries_exhausted",
+              {
</file context>
Fix with Cubic

await delay(retryDelayMs);
continue;
}
sendTelemetryEvent(
Copy link
Copy Markdown
Contributor

@cubic-dev-ai cubic-dev-ai bot Mar 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: terminated_stream_retries_exhausted is emitted for non-terminated errors; guard it with isTerminatedStreamError to avoid incorrect telemetry.

Prompt for AI agents
Check if this issue is valid β€” if so, understand the root cause and fix it. At src/pro/main/ipc/handlers/local_agent/local_agent_handler.ts, line 1020:

<comment>`terminated_stream_retries_exhausted` is emitted for non-terminated errors; guard it with `isTerminatedStreamError` to avoid incorrect telemetry.</comment>

<file context>
@@ -1016,6 +1017,16 @@ export async function handleLocalAgentStream(
               await delay(retryDelayMs);
               continue;
             }
+            sendTelemetryEvent(
+              "local_agent:terminated_stream_retries_exhausted",
+              {
</file context>
Fix with Cubic

@github-actions github-actions bot added the needs-human:review-issue ai agent flagged an issue that requires human review label Mar 3, 2026
@wwwillchen wwwillchen merged commit 7d4fc37 into dyad-sh:main Mar 4, 2026
9 of 12 checks passed
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 4, 2026

🎭 Playwright Test Results

❌ Some tests failed

OS Passed Failed Flaky Skipped
🍎 macOS 362 0 3 120
πŸͺŸ Windows 366 1 7 120

Summary: 728 passed, 1 failed, 10 flaky, 240 skipped

Failed Tests

πŸͺŸ Windows

  • chat_input.spec.ts > send button disabled during pending proposal - reject
    • Error: expect(locator).toBeVisible() failed

⚠️ Flaky Tests

🍎 macOS

  • debugging_logs.spec.ts > clicking send to chat button adds log to chat input (passed after 1 retry)
  • engine.spec.ts > regular auto should send message to engine (passed after 1 retry)
  • setup_flow.spec.ts > Setup Flow > setup banner shows correct state when node.js is installed (passed after 1 retry)

πŸͺŸ Windows

  • chat_tabs.spec.ts > closing a tab removes it and selects adjacent tab (passed after 1 retry)
  • chat_tabs.spec.ts > right-click context menu: Close other tabs (passed after 1 retry)
  • context_limit_banner.spec.ts > context limit banner shows 'running out' when near context limit (passed after 1 retry)
  • context_manage.spec.ts > manage context - exclude paths (passed after 1 retry)
  • edit_code.spec.ts > edit code (passed after 1 retry)
  • setup_flow.spec.ts > Setup Flow > setup banner shows correct state when node.js is installed (passed after 1 retry)
  • template-create-nextjs.spec.ts > create next.js app (passed after 1 retry)

πŸ“Š View full report

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-human:review-issue ai agent flagged an issue that requires human review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant