Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 579a466402 | |||
| 5133f0bc2d |
@@ -79,8 +79,8 @@ android {
|
|||||||
applicationId "com.ariacockpit"
|
applicationId "com.ariacockpit"
|
||||||
minSdkVersion rootProject.ext.minSdkVersion
|
minSdkVersion rootProject.ext.minSdkVersion
|
||||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||||
versionCode 10408
|
versionCode 10409
|
||||||
versionName "0.1.4.8"
|
versionName "0.1.4.9"
|
||||||
// Fallback fuer Libraries mit Product Flavors
|
// Fallback fuer Libraries mit Product Flavors
|
||||||
missingDimensionStrategy 'react-native-camera', 'general'
|
missingDimensionStrategy 'react-native-camera', 'general'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "aria-cockpit",
|
"name": "aria-cockpit",
|
||||||
"version": "0.1.4.8",
|
"version": "0.1.4.9",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"android": "react-native run-android",
|
"android": "react-native run-android",
|
||||||
|
|||||||
@@ -324,7 +324,12 @@ const ChatScreen: React.FC = () => {
|
|||||||
|
|
||||||
// Wie lange wir auf das ACK warten bevor wir retryen. Bridge sollte
|
// Wie lange wir auf das ACK warten bevor wir retryen. Bridge sollte
|
||||||
// unmittelbar zurueckmelden — 30s ist grosszuegig fuer schlechte Netze.
|
// unmittelbar zurueckmelden — 30s ist grosszuegig fuer schlechte Netze.
|
||||||
const ACK_TIMEOUT_MS = 30_000;
|
// 60s — grosszuegiger als 30s, weil langsame Brain-Calls (Multi-Tool) sonst
|
||||||
|
// 90s × 3 Retries lang die User-Bubble auf ⏳ stehen lassen wuerden. Der
|
||||||
|
// wichtige Pfad ist sowieso: agent_activity = thinking → markiert die
|
||||||
|
// Bubble sofort als 'sent' (siehe handler). Das hier ist Fallback wenn
|
||||||
|
// weder ACK noch agent_activity ankommt.
|
||||||
|
const ACK_TIMEOUT_MS = 60_000;
|
||||||
// Wie oft re-tryen wir bevor wir "failed" anzeigen.
|
// Wie oft re-tryen wir bevor wir "failed" anzeigen.
|
||||||
const MAX_SEND_ATTEMPTS = 3;
|
const MAX_SEND_ATTEMPTS = 3;
|
||||||
// Pending ACK-Timer pro clientMsgId — fuer cancel beim ACK.
|
// Pending ACK-Timer pro clientMsgId — fuer cancel beim ACK.
|
||||||
@@ -1026,6 +1031,22 @@ const ChatScreen: React.FC = () => {
|
|||||||
const activity = (message.payload.activity as string) || 'idle';
|
const activity = (message.payload.activity as string) || 'idle';
|
||||||
const tool = (message.payload.tool as string) || '';
|
const tool = (message.payload.tool as string) || '';
|
||||||
setAgentActivity({ activity, tool });
|
setAgentActivity({ activity, tool });
|
||||||
|
// Implizite ACK-Bestaetigung: Brain hat angefangen zu arbeiten →
|
||||||
|
// unsere Nachricht ist offensichtlich angekommen, auch wenn das
|
||||||
|
// chat_ack aus irgendeinem Grund nicht durchkam. Alle laufenden
|
||||||
|
// ACK-Timer canceln + sending-Bubbles auf 'sent' setzen.
|
||||||
|
// Vermeidet das Symptom "Sanduhr bleibt + Timeout" bei langsamen
|
||||||
|
// Brain-Antworten (>90 s, also nach 3 ACK-Retries auf failed).
|
||||||
|
if (activity !== 'idle' && ackTimers.current.size > 0) {
|
||||||
|
for (const cmid of Array.from(ackTimers.current.keys())) {
|
||||||
|
clearAckTimer(cmid);
|
||||||
|
}
|
||||||
|
setMessages(prev => prev.map(m =>
|
||||||
|
m.sender === 'user' && m.deliveryStatus === 'sending'
|
||||||
|
? { ...m, deliveryStatus: 'sent' }
|
||||||
|
: m
|
||||||
|
));
|
||||||
|
}
|
||||||
// In den Gedanken-Stream einfuegen. Dedup gegen identische Folge-
|
// In den Gedanken-Stream einfuegen. Dedup gegen identische Folge-
|
||||||
// Events (z.B. zwei mal 'thinking' direkt hintereinander). Tool-
|
// Events (z.B. zwei mal 'thinking' direkt hintereinander). Tool-
|
||||||
// Events NIE dedupen — wenn ARIA dreimal Bash hintereinander ruft,
|
// Events NIE dedupen — wenn ARIA dreimal Bash hintereinander ruft,
|
||||||
|
|||||||
Reference in New Issue
Block a user