You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Stacked on #4418. Merge that first.
The UI slice of the dashboard agent: the side panel, the chat transport
wiring, message and card rendering, suggested prompts, and chat history.
#4418 works without this — the system is simply invisible. The diff is
mostly components, so the notes below cover only the three decisions you
can't read off the markup. Behavior and a hands-on walkthrough live in
GUIDEBOOK.md, which lands with #4525.
## Decisions worth knowing
- **Action rows always render at the end of a turn.** The model's
emission order isn't trusted for layout, so action blocks are split out
of the stream and appended last. Display only — `answered` stays keyed
on the emission index.
- **The last-chat memory is org-true.** It's keyed by the chat's own
organization, and a foreign or deleted chat comes back as a 404 the
client treats as gone, rather than an empty chat it keeps around.
- **A dead stream self-heals from the settled transcript.** Terminal
records are written to the chat row after the client's stream closes, so
the panel re-reads it. The poll gate is any unfinished turn — a dangling
tool part, not just an open investigation.
## Notes
- Gated by `canAccessDashboardAgent`; no behavior change with the flag
off.
- Page marks: `handle.agentPageContext` on 47 routes, ~20 lines each.
- Entry points: Ask Trigger button, ⌘J, Help & Feedback. The old ⌘I and
`?aiHelp=` links keep working.
## Screenshots
<img width="1440" height="788" alt="Screenshot 2026-08-07 at 15 14 29"
src="https://github.com/user-attachments/assets/f4e89e8d-13ed-4be3-a88d-d5cca3ece0fa"
/>
Copy file name to clipboardExpand all lines: .changeset/chat-stream-mid-turn-reconnect.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,4 +4,4 @@
4
4
"trigger.dev": patch
5
5
---
6
6
7
-
Chat in the browser now reconnects when the connection drops mid-turn, instead of leaving the reply stuck as if it were still generating. Reports can be fetched as structured data with the `json` format, and the shortest report period is now one minute (`30m`, `1h`, `7d`). The `mint-token` command's help is clearer too: a token minted without `--cap` is read-only, and `--ttl` shows the correct maximum lifetime of 7 days.
7
+
Chat in the browser now reconnects when the connection drops mid-turn, instead of leaving the reply stuck as if it were still generating. Reports can be fetched as structured data with the `json` format, and the shortest report period is now one minute (`1m`, `30m`, `1h`, `7d`). The `mint-token` command's help is clearer too: a token minted without `--cap` is read-only, and `--ttl` shows the correct maximum lifetime of 7 days.
description: Adversarially verifies one landed packet against its requirement; read-only.
4
+
model: opus
5
+
---
6
+
7
+
You are an adversarial code reviewer for one landed packet. READ-ONLY: never modify code, never commit, never push, never post to GitHub.
8
+
9
+
- Try to refute that the change answers its stated requirement; look for the failure scenario, not confirmation.
10
+
- Check the diff for unrelated drift, dead code, broken semantics of neighbors, and whether tests prove the actual invariant (would the test fail if the fix were subtly wrong?).
11
+
- Check the change landed in the correct PR/branch of the stack.
12
+
- Distinguish fact from inference; cite exact file:line evidence.
13
+
- Return: verdict (approve / needs-changes) with evidence per concern, and the exact minimal correction when needs-changes.
description: Implements exactly one work packet — minimal diff, targeted checks, own-paths-only commits.
4
+
model: opus
5
+
---
6
+
7
+
You are a code writer. Implement exactly the one work packet in your prompt.
8
+
9
+
- Minimal diff; match surrounding style and idiom.
10
+
- Prefer no comment at all; comment only a non-obvious constraint, max 2 short lines. All texts (comments, commit messages) short, clear, simple.
11
+
- Verify the packet's own diagnosis against the code before applying; if it is wrong, STOP without committing and report why.
12
+
- Run only the targeted checks for your packet: the relevant vitest files, `pnpm run typecheck --filter <pkg>` when the change warrants it. Never full suites unless asked.
13
+
-`pnpm run format` on touched files before committing.
14
+
- Stage and commit ONLY your packet's files. Conventional commit message. NO Claude attribution, no Co-Authored-By.
15
+
- Push only if the packet explicitly says to.
16
+
- Return: what changed, evidence (test output), commit SHA, and anything contradicting the diagnosis.
* What the agent is asked when it's opened from a deployment setup panel. The panel is the docs
70
+
* answer; the agent is for the part the docs can't answer — this project, this environment.
71
+
*/
72
+
constASK_AGENT_DEPLOY_PROMPT=
73
+
"I'm trying to deploy my tasks to this environment. Walk me through it and tell me if anything about this project or environment is going to get in the way.";
74
+
75
+
/** The docs links the deployment panels offer to anyone without the agent. */
76
+
functionDeployDocsLinks(){
77
+
return(
78
+
<>
79
+
<SimpleTooltip
80
+
asChild
81
+
tabbable
82
+
button={
83
+
// Span wrapper: LinkButton drops the pointer-event props Radix injects via asChild, so
84
+
// the tooltip trigger has to be a plain element (same pattern as FavoritePageButton).
0 commit comments