feat(chat): plain-language chat surface for non-technical teammates (v0.189.0)#319
Merged
Conversation
…v0.189.0) A new Chat page renders a claude-code session as a messaging app instead of a terminal — message bubbles, friendly activity cards, and inline approve/decline buttons — so support/sales/marketing can drive and oversee agents without the TUI. Reads the session's claude transcript (GET /api/sessions/:id/conversation, parsed by src/edge/conversation.ts) and drives the human's turns via POST .../reply and POST /api/chat/start, reusing the exact resident-deliver / transcript-resume path Slack thread-continuity already uses (deliverToResident/reviveResident). No gate, approvals, or DB changes — every effect still passes the mediated gateway. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
4f2a7ad to
a0eafed
Compare
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.
What
A Chat page (nav next to Agents) that renders a claude-code session as a messaging app instead of a terminal — aimed at non-technical teammates (support/sales/marketing):
How (why it's low-risk)
No new way of running Claude, no stream-json rewiring, no governance/DB changes. It reuses what already works:
--session-id.GET /api/sessions/:id/conversationlocates that file by name andsrc/edge/conversation.tsparses it into friendly turns. Read-only.POST /api/sessions/:id/replyandPOST /api/chat/startreuse the exact resident-deliver / transcript-resume path Slack thread-continuity uses (deliverToResident/reviveResident) andcreateSession(..., resident=true)(spawnChatAgent). The PreToolUse gate hook + approvals still mediate every effect.The ttyd terminal is untouched — Chat and Terminal are two windows onto the same governed run.
Verified
npm run build(server) +cd web && npm run build✓npm run test:governance→ 68/68 ✓sessionClaudeId+canViewSession+readConversation) → PASS.Not yet exercised on a live box (needs tmux + claude): the actual spawn/reply round-trip and a real gate approval through the buttons. The underlying deliver/revive path is the same one Slack chat runs in production, so confidence is high — worth a live smoke test before relying on it.
🤖 Generated with Claude Code