feat(studio): Chats core surface + Playwright e2e infrastructure - #972
Closed
jtenniswood wants to merge 1 commit into
Closed
feat(studio): Chats core surface + Playwright e2e infrastructure#972jtenniswood wants to merge 1 commit into
jtenniswood wants to merge 1 commit into
Conversation
The first surface, shaped like the original branch's own wiring commit: draft-on-first-send chat over the prompt SSE (lazy session mint, transcript rehydrate), message rendering (text / reasoning / tool-call summaries / static delegation badges / failed-turn strips), three-way approvals with ask retraction, the recency-bucketed session sidebar with capability-gated rename/delete, and the TipTap composer (@-mentions from /v1/agents, slash commands from /v1/commands, plain Enter = send). Later chat tiers arrive as bounded deltas onto this PR's named seams. E2e lands here with its first spec (a zero-spec Playwright run fails): playwright.config boots the fixture daemon (a ~130-line node:http test double behind the API seam — not a UI demo fallback, which Studio forbids) plus a real next start in external mode, so the browser drives the real proxy tier end to end — no Go toolchain, no live model. studio.yml gains the isolated e2e job; the hermetic suite's SSR assertion moves to /workspace/chat. Docs: ADR 0289 (server-backed chats; renumbered off the branch's 0281 which collided on main, and stating the watch-based re-attach consequence honestly), README row, user-docs Chats section, readiness flips, llms regen. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stack 7/21 — Studio: Chats core + Playwright e2e infrastructure
The first surface, shaped like the original branch's own wiring commit — proof by history that this is a coherent, working slice — plus the browser e2e infrastructure (a Playwright job with zero specs fails, so the job and its first spec land together).
Chat core:
chat/[[...sessionId]](draft + session in one optional-catch-all mount),chat-workspace/chat-viewcore,message-bubblecore (text / reasoning / tool-call summary / static delegation badge / failed-turn strip),session-sidebar(recency buckets, capability-gated rename/delete), three-wayapproval-panelwith ask retraction,tool-call-listcore, markdown + shiki code rendering,side-panel,mock-provider-notice,clarification-panel(kept as the branch has it; flagged vestigial for a follow-up issue).chat-input— the TipTap composer: @-mentions fromGET /v1/agents, slash commands fromGET /v1/commands(both via composer-capabilities), plain Enter = send.use-agent-chatcore: lazy session mint, prompt SSE, transcript rehydrate, approvals + retract, resend, live usage.E2e infrastructure:
playwright.config.mts— webServer boots the fixture daemon + a realnext startin external mode, so the e2e path is browser → the real PR-3 proxy tier → fixture wire. Fully hermetic: no Go toolchain, nobin/mecated, no secrets, no live model.tests/e2e/fixture-daemon.mjslands whole (~127-linenode:httptest double behind the API seam — not a UI demo fallback, which Studio forbids);tests/e2e/workspace.spec.tsstarts with the chat spec and grows one spec per surface PR.studio.ymlgains the isolatede2ejob; the hermetic suite's SSR assertion moves from root branding to/workspace/chat.Docs: ADR 0289 (server-backed chats; renumbered from the branch's 0281, which collided on main), README row, user-docs Chats section, readiness-tracker flip, llms regen.
Demo at this stack point: create a chat, stream tokens/reasoning/tool cards, approve/deny/retract, rename/delete sessions.
Part of the stacked landing of #618. Size note: flagged over the series' review budget and irreducible — a composer without a chat view is not a CI-testable unit; ~700 lines of it is review-light e2e infra.
🤖 Generated with Claude Code