- Les agents créés par run-for-note ont frequency:'one-shot' et sont
filtrés de la page /agents (NOT frequency:'one-shot' dans getAgents)
- Panneau slides : sélecteurs Thème (11 palettes) + Style (sharp/soft/rounded/pill)
- Panneau diagramme : sélecteurs Type (auto/flowchart/mindmap/timeline/
org-chart/architecture/process-map) + Style (sketchy/austere/sketch+)
- Les valeurs sélectionnées sont transmises à l'API et injectées dans le prompt
Co-authored-by: Cursor <cursoragent@cursor.com>
Le problème : la route POST /api/agents/run-for-note bloquait le thread
HTTP pendant toute la durée de génération (2-5 min), provoquant un
spinner infini sans résultat.
Solution :
- POST retourne immédiatement avec { agentId } et lance executeAgent
en arrière-plan (fire-and-forget, sans await)
- GET /api/agents/run-for-note?agentId= retourne le statut de la
dernière agentAction (running | success | failure) + canvasId/noteId
- Le client poll le statut toutes les 3 secondes jusqu'au résultat,
le toast persistant Sonner se met à jour automatiquement
- Cleanup du polling au démontage du composant
Co-authored-by: Cursor <cursoragent@cursor.com>
- Nouveau endpoint POST /api/agents/run-for-note : crée un agent one-shot
(slide-generator ou excalidraw-generator) avec la note courante comme source
et l'exécute immédiatement
- ContextualAIChat : prop noteId + section "Générer depuis cette note" avec
deux boutons gradient (violet=slides, cyan=diagramme), spinner pendant la
génération, bouton de téléchargement .pptx ou lien "Ouvrir dans le Lab"
après succès
- note-editor.tsx : passage de note.id à ContextualAIChat
- i18n fr/en : nouvelles clés ai.generate.*
Co-authored-by: Cursor <cursoragent@cursor.com>