feat(queue): Pro-Projekt-Nachrichten-Queue mit Rueckfrage-Loop + Textfeld-Entwuerfe (App)
Zweite Nachricht waehrend ARIA arbeitet wird jetzt ANGESTELLT statt den laufenden Task abzubrechen. Stellt ARIA eine blockierende Rueckfrage, pausiert die Queue und die naechste Eingabe beantwortet sie — bis eine finale Antwort kommt, dann laeuft der naechste Queue-Eintrag (pro Projekt unabhaengig). - Brain: ARIA deklariert Rueckfragen per unsichtbarem [[AWAIT]]-Marker (wie speak/converse; kein '?'-Raten). _extract_await_marker strippt ihn, chat() gibt 5-Tupel (+awaiting_reply), System-Prompt erklaert den Marker. - Bridge: awaiting_reply aus Brain-Response in die chat-Broadcast-Payload. - App: app-lokale Queue + Zustandsautomat (idle/running/awaiting_reply) pro Projekt; Send-Flow von Abbruch auf Anstellen; Stop-Button (cancelRequest) schaltet die Queue weiter; sichtbare pending_queue-Bubbles (tippen loescht); Rueckfrage-/Queue-Banner ueber dem Eingabefeld. Voice bricht nicht mehr ab (haltet nur TTS, serialisiert im Brain-Lock); Text-Send erkennt Brain-busy als Fallback. Pro-Projekt-Textfeld-Entwuerfe (Draft-Map + AsyncStorage). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -150,7 +150,7 @@ async def _fire(trigger: dict, agent_factory) -> None:
|
||||
|
||||
try:
|
||||
agent = agent_factory()
|
||||
reply, _, _, _ = agent.chat(prompt, source="trigger")
|
||||
reply, _, _, _, _ = agent.chat(prompt, source="trigger")
|
||||
events = agent.pop_events()
|
||||
logger.info("[trigger] %s gefeuert → ARIA-Reply: %s", name, reply[:80])
|
||||
triggers_mod.append_log(name, {"event": "reply", "text": reply[:500]})
|
||||
|
||||
Reference in New Issue
Block a user