Skip to content

feat: add conversation threads persistence#2

Draft
mfittko wants to merge 1 commit intofeature/model-agnostic-converse-apifrom
feat/threads-persistence
Draft

feat: add conversation threads persistence#2
mfittko wants to merge 1 commit intofeature/model-agnostic-converse-apifrom
feat/threads-persistence

Conversation

@mfittko
Copy link

@mfittko mfittko commented Feb 13, 2026

Summary

Adds DynamoDB-based conversation persistence and threads UI, building on the Converse API migration (PR #1).

  • Threads Lambda: New GET /threads endpoint for listing user threads and loading thread messages
  • Enqueue Lambda: Stores thread metadata and user messages in DynamoDB on each request
  • Worker Lambda: Stores assistant messages in DynamoDB after streaming completes (both regular and inference profile paths)
  • Frontend/Site: Threads dropdown, user ID input, conversation history state management

Context

This was identified during code review of PR #1 as a separate feature to avoid scope creep in the Converse API migration.

Test plan

  • Deploy and verify threads creation on first message
  • Verify assistant messages are persisted after streaming
  • Verify threads list loads for a given user
  • Verify thread messages load correctly
  • Add unit tests for threads Lambda
  • Add persistence tests for worker Lambda

🤖 Generated with Claude Code

- Add threads Lambda for listing/loading conversation threads
- Add /threads GET endpoint to HTTP API
- Store assistant messages in DynamoDB after streaming
- Store thread metadata and user messages in enqueue Lambda
- Update frontend with threads UI, user ID, and conversation history
- Support both regular streaming and inference profile paths

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@mfittko mfittko self-assigned this Feb 13, 2026
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