Skip to content

Commit 0593f78

Browse files
author
JiaDe
committed
fix: auto-retry on AgentCore cold start for Portal Chat + Playground
Portal Chat and Playground both now auto-retry once after 3s when the first request fails (AgentCore cold start ~25s). Shows 'Agent is warming up' instead of error message. Also fixed Playground retry bug where inputValue was already cleared before the retry fired.
1 parent c0da418 commit 0593f78

2 files changed

Lines changed: 24 additions & 8 deletions

File tree

enterprise/admin-console/src/pages/Playground.tsx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,35 +33,36 @@ export default function Playground() {
3333
const handleSend = () => {
3434
if (!inputValue.trim()) return;
3535
const now = new Date().toLocaleTimeString();
36-
const userMsg: ChatMessage = { role: 'user', content: inputValue, timestamp: now };
36+
const msg = inputValue.trim();
37+
const userMsg: ChatMessage = { role: 'user', content: msg, timestamp: now };
3738
setMessages(prev => [...prev, userMsg]);
3839
setInputValue('');
3940

40-
sendMut.mutate({ tenant_id: tenantId, message: inputValue, mode }, {
41+
sendMut.mutate({ tenant_id: tenantId, message: msg, mode }, {
4142
onSuccess: (data) => {
4243
const assistantMsg: ChatMessage = { role: 'assistant', content: data.response, timestamp: new Date().toLocaleTimeString() };
4344
setMessages(prev => [...prev, assistantMsg]);
4445
setLastPlanE(data.plan_e);
4546
},
4647
onError: (err) => {
4748
const errMsg = mode === 'live'
48-
? '⚠️ AgentCore cold start may take ~25s on first request. Retrying automatically...'
49+
? '⏳ Agent is warming up (cold start ~25s). Retrying...'
4950
: '⚠️ Error communicating with agent';
5051
setMessages(prev => [...prev, { role: 'assistant', content: errMsg, timestamp: new Date().toLocaleTimeString() }]);
5152
// Auto-retry once for live mode (cold start)
5253
if (mode === 'live') {
5354
setTimeout(() => {
54-
sendMut.mutate({ tenant_id: tenantId, message: inputValue, mode }, {
55+
sendMut.mutate({ tenant_id: tenantId, message: msg, mode }, {
5556
onSuccess: (data) => {
5657
const retryMsg: ChatMessage = { role: 'assistant', content: data.response, timestamp: new Date().toLocaleTimeString() };
5758
setMessages(prev => [...prev, retryMsg]);
5859
setLastPlanE(data.plan_e);
5960
},
6061
onError: () => {
61-
setMessages(prev => [...prev, { role: 'assistant', content: '⚠️ AgentCore still starting up. Please try again in 30 seconds.', timestamp: new Date().toLocaleTimeString() }]);
62+
setMessages(prev => [...prev, { role: 'assistant', content: 'Agent is still starting up. Please try again in ~30 seconds.', timestamp: new Date().toLocaleTimeString() }]);
6263
},
6364
});
64-
}, 5000);
65+
}, 3000);
6566
}
6667
},
6768
});

enterprise/admin-console/src/pages/portal/Chat.tsx

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,26 @@ export default function PortalChat() {
6161
timestamp: new Date().toISOString(), source: resp.source, model: resp.model,
6262
}]);
6363
} catch (e: any) {
64+
// Auto-retry once — AgentCore cold start takes ~25s, first request often fails
6465
setMessages(prev => [...prev, {
6566
id: Date.now() + 1, role: 'assistant',
66-
content: `Sorry, I encountered an error: ${e.message}. Please try again.`,
67-
timestamp: new Date().toISOString(), source: 'error',
67+
content: '⏳ Agent is warming up (first request). Retrying...',
68+
timestamp: new Date().toISOString(), source: 'warmup',
6869
}]);
70+
try {
71+
await new Promise(r => setTimeout(r, 3000));
72+
const retry = await api.post<{ response: string; agentName?: string; source?: string; model?: string }>('/portal/chat', { message: userMsg.content });
73+
setMessages(prev => [...prev, {
74+
id: Date.now() + 2, role: 'assistant', content: retry.response,
75+
timestamp: new Date().toISOString(), source: retry.source, model: retry.model,
76+
}]);
77+
} catch {
78+
setMessages(prev => [...prev, {
79+
id: Date.now() + 2, role: 'assistant',
80+
content: 'Agent is still starting up. Please try again in ~30 seconds.',
81+
timestamp: new Date().toISOString(), source: 'error',
82+
}]);
83+
}
6984
} finally {
7085
setSending(false);
7186
}

0 commit comments

Comments
 (0)