Commit 2a47a28
feat(ai): auto-title a conversation from its first user message (#1850)
The console sidebar lists conversations straight off the `ai_conversations`
rows, so an untitled conversation renders a generic "New conversation"
label — and once a user has a handful, the list is a wall of identical
rows with no way to tell them apart or find one.
Set `title` from the first USER message the moment it lands, in
`addMessage`: collapse whitespace, cap at 60 chars. Deterministic, no extra
model call. Only seeds when the conversation has no title yet and the turn
is a user turn, so the optional LLM auto-titler still overwrites it with a
nicer title when enabled, and an explicit title is never clobbered.
Tests: untitled→titled, existing-title kept, assistant-first-turn ignored,
whitespace-collapse + truncation. Suite green (23).
Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent 110a333 commit 2a47a28
2 files changed
Lines changed: 53 additions & 4 deletions
File tree
- packages/services/service-ai/src
- __tests__
- conversation
Lines changed: 27 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
251 | 251 | | |
252 | 252 | | |
253 | 253 | | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
254 | 281 | | |
255 | 282 | | |
256 | 283 | | |
| |||
Lines changed: 26 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
62 | 72 | | |
63 | 73 | | |
64 | 74 | | |
| |||
237 | 247 | | |
238 | 248 | | |
239 | 249 | | |
240 | | - | |
241 | | - | |
242 | | - | |
243 | | - | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
244 | 266 | | |
245 | 267 | | |
246 | 268 | | |
| |||
0 commit comments