fix(agent): v4.13.2 - saisie libre redaction avec doc ouvert -> proposition appliquer/rejeter (generate sans outils)
This commit is contained in:
@@ -1,5 +1,22 @@
|
|||||||
# Changelog — FlowDeck
|
# Changelog — FlowDeck
|
||||||
|
|
||||||
|
## v4.13.2 (2026-09-06) — Saisie libre « écrire un texte » → proposition à appliquer au document
|
||||||
|
|
||||||
|
> Quand un **document est ouvert** et qu'on tape directement une demande de **rédaction/contenu**
|
||||||
|
> dans le chat (« Écrire un texte sur… », « Rédige… », « Résume… », « Traduis… »), la requête est
|
||||||
|
> maintenant routée vers la **génération de texte** (sans outils) et affichée comme **proposition
|
||||||
|
> à appliquer ou rejeter** — au lieu d'un `search_workspace` puis d'un simple « Objectif traité ».
|
||||||
|
> « Traduire » remplace le contenu de la page ; les autres demandes l'insèrent en fin de page.
|
||||||
|
|
||||||
|
### Fix
|
||||||
|
- Envoi libre avec contexte document : détection d'intention de contenu (écrire/rédiger/générer/
|
||||||
|
résumer/traduire/améliorer/note de réunion/texte sur/série…) → `POST /api/agent/generate` +
|
||||||
|
aperçu « ✓ Appliquer au document / ✕ Rejeter ».
|
||||||
|
- Mock : « écrire » (infinitif) reconnu comme verbe de rédaction.
|
||||||
|
|
||||||
|
### Infra
|
||||||
|
- `VERSION` → 4.13.2 ; `app/main.py` version → 4.13.2.
|
||||||
|
|
||||||
## v4.13.1 (2026-09-06) — Corrections actions contenu Agent & aperçu à approuver
|
## v4.13.1 (2026-09-06) — Corrections actions contenu Agent & aperçu à approuver
|
||||||
|
|
||||||
> Corrige les actions de contenu sur document (« Résumer », « Traduire cette page », « Proposer
|
> Corrige les actions de contenu sur document (« Résumer », « Traduire cette page », « Proposer
|
||||||
|
|||||||
+1
-1
@@ -60,7 +60,7 @@ async def lifespan(_app: FastAPI):
|
|||||||
|
|
||||||
app = FastAPI(
|
app = FastAPI(
|
||||||
title="FlowDeck",
|
title="FlowDeck",
|
||||||
version="4.13.1",
|
version="4.13.2",
|
||||||
docs_url="/docs" if settings.log_level == "DEBUG" else None,
|
docs_url="/docs" if settings.log_level == "DEBUG" else None,
|
||||||
redoc_url=None,
|
redoc_url=None,
|
||||||
lifespan=lifespan,
|
lifespan=lifespan,
|
||||||
|
|||||||
@@ -381,7 +381,7 @@ class LLMClient:
|
|||||||
)
|
)
|
||||||
|
|
||||||
# ── Generic drafting verb, no title (typing directly in the chat) ──
|
# ── Generic drafting verb, no title (typing directly in the chat) ──
|
||||||
if re.search(r"^(r[ée]dige|[ée]cris|g[ée]n[èe]re|produis|d[ée]veloppe|"
|
if re.search(r"^(r[ée]dige|[ée]cris|[ée]crire|g[ée]n[èe]re|produis|d[ée]veloppe|"
|
||||||
r"[ée]cris\s+un|g[ée]n[èe]re\s+un|r[ée]dige\s+un)\b", low):
|
r"[ée]cris\s+un|g[ée]n[èe]re\s+un|r[ée]dige\s+un)\b", low):
|
||||||
return (
|
return (
|
||||||
"## Introduction\n"
|
"## Introduction\n"
|
||||||
|
|||||||
@@ -424,6 +424,20 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
// ── Document actions (no tools) → proposition à approuver / rejeter ──
|
// ── Document actions (no tools) → proposition à approuver / rejeter ──
|
||||||
|
_isContentRequest(t){
|
||||||
|
var low = (t || '').toLowerCase();
|
||||||
|
var kws = ['écris','écrire','écrit un','rédige','rédiger','génère','générer','produis',
|
||||||
|
'développe','texte sur','paragraphe','article sur','rédaction','résume','résumer',
|
||||||
|
'résumé de','traduis','traduire','améliore','améliorer','note de réunion',
|
||||||
|
'série tv','série','contenu de la page','poème','histoire sur','sujet de','courriel','email sur'];
|
||||||
|
for(var i=0;i<kws.length;i++){ if(low.indexOf(kws[i]) !== -1) return true; }
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
_docModeFor(t){
|
||||||
|
var low = (t || '').toLowerCase();
|
||||||
|
if(low.indexOf('traduis') !== -1 || low.indexOf('traduire') !== -1 || low.indexOf('translate') !== -1) return 'replace';
|
||||||
|
return 'insert';
|
||||||
|
},
|
||||||
runDocAction(q){
|
runDocAction(q){
|
||||||
var self = this;
|
var self = this;
|
||||||
this.ensureConversation().then(function(){
|
this.ensureConversation().then(function(){
|
||||||
@@ -720,6 +734,15 @@
|
|||||||
self.input = '';
|
self.input = '';
|
||||||
this.resizeInput();
|
this.resizeInput();
|
||||||
self.errorMsg = '';
|
self.errorMsg = '';
|
||||||
|
|
||||||
|
// A writing/content request typed while a document is open → route it to
|
||||||
|
// headless text generation and offer the result with Apply / Reject,
|
||||||
|
// instead of sending the agent into tool calls (search/create).
|
||||||
|
if(self.activeContext && self.activeContext.kind === 'page' && self._isContentRequest(text)){
|
||||||
|
self.refreshContext();
|
||||||
|
return self.runDocAction({prompt: text, label: text, mode: self._docModeFor(text)});
|
||||||
|
}
|
||||||
|
|
||||||
self.streaming = true;
|
self.streaming = true;
|
||||||
self.liveReasoning = '…';
|
self.liveReasoning = '…';
|
||||||
self.messages.push({id:'u-'+Date.now(), role:'user', content: text});
|
self.messages.push({id:'u-'+Date.now(), role:'user', content: text});
|
||||||
|
|||||||
Reference in New Issue
Block a user