Skip to content

feat(chat): attachments, file viewers, and EA-style catchup#895

Merged
harshithmullapudi merged 1 commit into
mainfrom
feat/chat-attachments
Jun 8, 2026
Merged

feat(chat): attachments, file viewers, and EA-style catchup#895
harshithmullapudi merged 1 commit into
mainfrom
feat/chat-attachments

Conversation

@harshithmullapudi

Copy link
Copy Markdown
Member

Summary

  • Chat attachments end-to-end — composer accepts uploads; the conversation view renders them via the new file-viewer registry. Office formats (docx/pptx via mammoth + a renamed office-viewer) and CSV (papaparse) join the image/PDF set; pptx-preview is dropped.
  • Agent file access — new file-tools + file-resolver.server.ts let the agent read attachments. Gateway download splits into file-download.server.ts; signed-URL flow (file-signed-url.server.ts + the two new fs.signed routes) gives agent and viewers short-lived access without leaking PATs.
  • EA-style catchup — voice summariser prompt rewritten from butler-inventory to chief-of-staff (leads with what's blocking, groups by next decision, makes one soft recommendation, drops the "sir"). Quick Chat is now scoped per local-day (mirrors WhatsApp daily-conversation pattern in message-processor.ts:62), and every /api/v1/inbox/summarise appends the spoken summary to that day's Quick Chat as an Agent turn so it's scrollable.

Test plan

  • Upload a docx, pptx, csv, image, and pdf from the chat composer — each renders inline via the appropriate viewer.
  • Agent can read an attached file via the file-tools and reason about its contents in the reply.
  • Gateway signed-URL: viewers and agent can fetch attachments without a PAT; URL expires.
  • Press the inbox pill catchup with mixed items (PR, calendar event, email) — spoken summary opens with what matters now, not a category inventory; no "sir"; includes a recommendation where obvious.
  • First catchup of the day creates a fresh Quick Chat; subsequent catchups on the same day append to it; the next calendar day starts a new Quick Chat.
  • Open Quick Chat in the web UI — the catchup appears as an Agent message, scrollable.

🤖 Generated with Claude Code

Chat attachments end-to-end:
- Composer accepts uploads; conversation view renders them with the new
  file-viewer registry. Office formats (docx/pptx via mammoth + a renamed
  office-viewer) and CSV (papaparse) join the existing image/PDF set;
  pptx-preview is dropped in favor of the unified viewer.
- New agent file-tools + file-resolver let the agent read/inspect
  attachments inline. Gateway download path is split into
  file-download.server.ts; signed-URL flow (file-signed-url.server.ts +
  the two new fs.signed routes) gives the agent and viewers short-lived
  access without leaking PATs.
- Storage server, model.server, and the conversation API are extended to
  carry attachment metadata through to the model.

EA-style catchup:
- Voice-mode summariser prompt rewritten from butler-inventory to
  chief-of-staff: leads with what's blocking or time-sensitive, groups by
  the user's next decision, makes one soft recommendation, drops "sir."
- Quick Chat is now scoped per local-day (mirrors the WhatsApp daily
  conversation pattern in message-processor.ts), and every
  /api/v1/inbox/summarise appends the spoken summary to that day's Quick
  Chat as an Agent turn so the user can scroll back.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@harshithmullapudi harshithmullapudi merged commit 89ec15f into main Jun 8, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant