dotnet / dotnet/aspnetcore

Components.AI: Correct turn/message semantics and assign stable identities

Open
#68,383 1 comment 0 reactions 0 assignees View on GitHub
area-blazor cost: M feature-blazor-builtin-components Priority:0
Dominant language
C#
Stars
38.4k
Forks
10.9k
Avg merge
2d 6h
Merged PRs (30d)
290

Description

### Is your feature request related to a problem? Please describe the problem.

`ConversationTurnRenderer` classifies an entire turn as user or assistant, `ConversationTurn.Id` is not assigned, and rendered turns/messages/blocks are not keyed. This produces incorrect authorship styling and prevents reliable incremental rendering and virtualization.

### Describe the solution you'd like

- Model a turn as request message(s) plus all messages answering them.
- Keep authorship on each message, never on the turn.
- Assign stable identities to turns, messages, and blocks in the engine.
- Key each level in the render tree.
- Support multiple request messages in one turn for atomic queue drain.

### Additional context

Leaf task for #68227 requirements A2 and A7.

Contributor guide

Open the contributing guide

Research direction

Start by tracing ConversationTurnRenderer, ConversationTurn, and the engine path that creates turns, messages, and blocks. Read requirements A2 and A7 in issue #68227, then follow how rendered turns, messages, and blocks are represented. Done means authorship is per message, identities are stable at every level, each render level is keyed, and multiple request messages can drain atomically.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
frontend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.