The web composer has an AI writing-assistant control offering six actions on the current draft. The app's composer (Views/FeedView.xaml + ViewModels/FeedViewModel.cs) has none.
Actions (feature: "writing_assist")
| Action |
Result |
| Rewrite |
cleaner version of the same message |
| Tighten |
shorter, punchier |
| Expand |
longer, more detail |
| Fix grammar |
corrections only, voice intact |
| Make a thread |
split a long draft into a numbered sequence |
| Suggest tags |
recommended tags from the draft |
Artifact handling
writing_assist returns kind: "message", "thread", or "tags". None of these are persistable — /api/ai/generate returns 422 invalid_input for them. They are inserted into the composer client-side.
- Text suggestions → offer Replace draft and Use in draft.
- Tag suggestions → offer Add tags (pairs with the tags work in the Messages epic).
- Nothing changes in the composer until the user picks one.
Acceptance criteria
The web composer has an AI writing-assistant control offering six actions on the current draft. The app's composer (
Views/FeedView.xaml+ViewModels/FeedViewModel.cs) has none.Actions (
feature: "writing_assist")Artifact handling
writing_assistreturnskind: "message","thread", or"tags". None of these are persistable —/api/ai/generatereturns422 invalid_inputfor them. They are inserted into the composer client-side.Acceptance criteria
IsAiAvailable.POST /api/ai/suggestwith the current draft asinput.threadartifact is shown as the numbered parts it will post as./api/ai/generatefrom this surface.