mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-04-08 03:00:28 -04:00
feat(copilot): use stream event instead of hardcoded list for long-running tools
Replace hardcoded LONG_RUNNING_TOOLS list with event-based detection.
Frontend now listens for 'long-running-start' stream events from backend.
Changes:
- Update ToolWrapper to accept message prop and check for long-running-start events
- Pass message to all ToolWrapper instances in ChatMessagesContainer
- Remove long-running-tools.ts (hardcoded list)
- Check if any message part has type 'long-running-start' with matching toolCallId
- Update comments to be more generic ("UI feedback" instead of "mini-game")
Benefits:
- Single source of truth (backend is_long_running property)
- No list synchronization needed between backend and frontend
- More flexible - backend can decide at runtime
- Cleaner architecture using existing streaming infrastructure
This commit is contained in:
@@ -1887,3 +1887,67 @@
|
||||
2026-02-21 18:10:37,638 [34mINFO[0m Loading session 076672b7-4096-4dc8-a1b5-cf54ce3a4544 from cache: message_count=49, roles=['user', 'assistant', 'tool', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'user', 'user', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant']
|
||||
2026-02-21 18:10:37,652 [34mINFO[0m [GET_SESSION] session=076672b7-4096-4dc8-a1b5-cf54ce3a4544, active_task=False, msg_count=49, last_role=assistant
|
||||
2026-02-21 18:10:37,653 [34mINFO[0m 127.0.0.1:53386 - "GET /api/chat/sessions/076672b7-4096-4dc8-a1b5-cf54ce3a4544 HTTP/1.1" 200
|
||||
2026-02-21 18:10:39,649 [34mINFO[0m Loading session 076672b7-4096-4dc8-a1b5-cf54ce3a4544 from cache: message_count=49, roles=['user', 'assistant', 'tool', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'user', 'user', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant']
|
||||
2026-02-21 18:10:39,655 [34mINFO[0m [GET_SESSION] session=076672b7-4096-4dc8-a1b5-cf54ce3a4544, active_task=False, msg_count=49, last_role=assistant
|
||||
2026-02-21 18:10:39,656 [34mINFO[0m 127.0.0.1:53386 - "GET /api/chat/sessions/076672b7-4096-4dc8-a1b5-cf54ce3a4544 HTTP/1.1" 200
|
||||
2026-02-21 18:10:41,613 [34mINFO[0m Loading session 076672b7-4096-4dc8-a1b5-cf54ce3a4544 from cache: message_count=49, roles=['user', 'assistant', 'tool', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'user', 'user', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant']
|
||||
2026-02-21 18:10:41,620 [34mINFO[0m [GET_SESSION] session=076672b7-4096-4dc8-a1b5-cf54ce3a4544, active_task=False, msg_count=49, last_role=assistant
|
||||
2026-02-21 18:10:41,620 [34mINFO[0m 127.0.0.1:53386 - "GET /api/chat/sessions/076672b7-4096-4dc8-a1b5-cf54ce3a4544 HTTP/1.1" 200
|
||||
2026-02-21 18:10:43,632 [34mINFO[0m Loading session 076672b7-4096-4dc8-a1b5-cf54ce3a4544 from cache: message_count=49, roles=['user', 'assistant', 'tool', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'user', 'user', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant']
|
||||
2026-02-21 18:10:43,640 [34mINFO[0m [GET_SESSION] session=076672b7-4096-4dc8-a1b5-cf54ce3a4544, active_task=False, msg_count=49, last_role=assistant
|
||||
2026-02-21 18:10:43,641 [34mINFO[0m 127.0.0.1:53386 - "GET /api/chat/sessions/076672b7-4096-4dc8-a1b5-cf54ce3a4544 HTTP/1.1" 200
|
||||
2026-02-21 18:10:45,740 [34mINFO[0m Loading session 076672b7-4096-4dc8-a1b5-cf54ce3a4544 from cache: message_count=49, roles=['user', 'assistant', 'tool', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'user', 'user', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant']
|
||||
2026-02-21 18:10:45,755 [34mINFO[0m [GET_SESSION] session=076672b7-4096-4dc8-a1b5-cf54ce3a4544, active_task=False, msg_count=49, last_role=assistant
|
||||
2026-02-21 18:10:45,757 [34mINFO[0m 127.0.0.1:53386 - "GET /api/chat/sessions/076672b7-4096-4dc8-a1b5-cf54ce3a4544 HTTP/1.1" 200
|
||||
2026-02-21 18:10:47,621 [34mINFO[0m Loading session 076672b7-4096-4dc8-a1b5-cf54ce3a4544 from cache: message_count=49, roles=['user', 'assistant', 'tool', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'user', 'user', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant']
|
||||
2026-02-21 18:10:47,625 [34mINFO[0m [GET_SESSION] session=076672b7-4096-4dc8-a1b5-cf54ce3a4544, active_task=False, msg_count=49, last_role=assistant
|
||||
2026-02-21 18:10:47,626 [34mINFO[0m 127.0.0.1:53386 - "GET /api/chat/sessions/076672b7-4096-4dc8-a1b5-cf54ce3a4544 HTTP/1.1" 200
|
||||
2026-02-21 18:10:49,629 [34mINFO[0m Loading session 076672b7-4096-4dc8-a1b5-cf54ce3a4544 from cache: message_count=49, roles=['user', 'assistant', 'tool', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'user', 'user', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant']
|
||||
2026-02-21 18:10:49,635 [34mINFO[0m [GET_SESSION] session=076672b7-4096-4dc8-a1b5-cf54ce3a4544, active_task=False, msg_count=49, last_role=assistant
|
||||
2026-02-21 18:10:49,636 [34mINFO[0m 127.0.0.1:53386 - "GET /api/chat/sessions/076672b7-4096-4dc8-a1b5-cf54ce3a4544 HTTP/1.1" 200
|
||||
2026-02-21 18:10:51,629 [34mINFO[0m Loading session 076672b7-4096-4dc8-a1b5-cf54ce3a4544 from cache: message_count=49, roles=['user', 'assistant', 'tool', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'user', 'user', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant']
|
||||
2026-02-21 18:10:51,634 [34mINFO[0m [GET_SESSION] session=076672b7-4096-4dc8-a1b5-cf54ce3a4544, active_task=False, msg_count=49, last_role=assistant
|
||||
2026-02-21 18:10:51,634 [34mINFO[0m 127.0.0.1:53386 - "GET /api/chat/sessions/076672b7-4096-4dc8-a1b5-cf54ce3a4544 HTTP/1.1" 200
|
||||
2026-02-21 18:10:53,626 [34mINFO[0m Loading session 076672b7-4096-4dc8-a1b5-cf54ce3a4544 from cache: message_count=49, roles=['user', 'assistant', 'tool', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'user', 'user', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant']
|
||||
2026-02-21 18:10:53,629 [34mINFO[0m [GET_SESSION] session=076672b7-4096-4dc8-a1b5-cf54ce3a4544, active_task=False, msg_count=49, last_role=assistant
|
||||
2026-02-21 18:10:53,630 [34mINFO[0m 127.0.0.1:53386 - "GET /api/chat/sessions/076672b7-4096-4dc8-a1b5-cf54ce3a4544 HTTP/1.1" 200
|
||||
2026-02-21 18:10:55,634 [34mINFO[0m Loading session 076672b7-4096-4dc8-a1b5-cf54ce3a4544 from cache: message_count=49, roles=['user', 'assistant', 'tool', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'user', 'user', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant']
|
||||
2026-02-21 18:10:55,639 [34mINFO[0m [GET_SESSION] session=076672b7-4096-4dc8-a1b5-cf54ce3a4544, active_task=False, msg_count=49, last_role=assistant
|
||||
2026-02-21 18:10:55,640 [34mINFO[0m 127.0.0.1:53386 - "GET /api/chat/sessions/076672b7-4096-4dc8-a1b5-cf54ce3a4544 HTTP/1.1" 200
|
||||
2026-02-21 18:10:57,645 [34mINFO[0m Loading session 076672b7-4096-4dc8-a1b5-cf54ce3a4544 from cache: message_count=49, roles=['user', 'assistant', 'tool', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'user', 'user', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant']
|
||||
2026-02-21 18:10:57,655 [34mINFO[0m [GET_SESSION] session=076672b7-4096-4dc8-a1b5-cf54ce3a4544, active_task=False, msg_count=49, last_role=assistant
|
||||
2026-02-21 18:10:57,656 [34mINFO[0m 127.0.0.1:53386 - "GET /api/chat/sessions/076672b7-4096-4dc8-a1b5-cf54ce3a4544 HTTP/1.1" 200
|
||||
2026-02-21 18:10:59,633 [34mINFO[0m Loading session 076672b7-4096-4dc8-a1b5-cf54ce3a4544 from cache: message_count=49, roles=['user', 'assistant', 'tool', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'user', 'user', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant']
|
||||
2026-02-21 18:10:59,638 [34mINFO[0m [GET_SESSION] session=076672b7-4096-4dc8-a1b5-cf54ce3a4544, active_task=False, msg_count=49, last_role=assistant
|
||||
2026-02-21 18:10:59,639 [34mINFO[0m 127.0.0.1:53386 - "GET /api/chat/sessions/076672b7-4096-4dc8-a1b5-cf54ce3a4544 HTTP/1.1" 200
|
||||
2026-02-21 18:11:01,633 [34mINFO[0m Loading session 076672b7-4096-4dc8-a1b5-cf54ce3a4544 from cache: message_count=49, roles=['user', 'assistant', 'tool', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'user', 'user', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant']
|
||||
2026-02-21 18:11:01,640 [34mINFO[0m [GET_SESSION] session=076672b7-4096-4dc8-a1b5-cf54ce3a4544, active_task=False, msg_count=49, last_role=assistant
|
||||
2026-02-21 18:11:01,641 [34mINFO[0m 127.0.0.1:53386 - "GET /api/chat/sessions/076672b7-4096-4dc8-a1b5-cf54ce3a4544 HTTP/1.1" 200
|
||||
2026-02-21 18:11:03,642 [34mINFO[0m Loading session 076672b7-4096-4dc8-a1b5-cf54ce3a4544 from cache: message_count=49, roles=['user', 'assistant', 'tool', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'user', 'user', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant']
|
||||
2026-02-21 18:11:03,648 [34mINFO[0m [GET_SESSION] session=076672b7-4096-4dc8-a1b5-cf54ce3a4544, active_task=False, msg_count=49, last_role=assistant
|
||||
2026-02-21 18:11:03,648 [34mINFO[0m 127.0.0.1:53386 - "GET /api/chat/sessions/076672b7-4096-4dc8-a1b5-cf54ce3a4544 HTTP/1.1" 200
|
||||
2026-02-21 18:11:05,644 [34mINFO[0m Loading session 076672b7-4096-4dc8-a1b5-cf54ce3a4544 from cache: message_count=49, roles=['user', 'assistant', 'tool', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'user', 'user', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant']
|
||||
2026-02-21 18:11:05,647 [34mINFO[0m [GET_SESSION] session=076672b7-4096-4dc8-a1b5-cf54ce3a4544, active_task=False, msg_count=49, last_role=assistant
|
||||
2026-02-21 18:11:05,648 [34mINFO[0m 127.0.0.1:53386 - "GET /api/chat/sessions/076672b7-4096-4dc8-a1b5-cf54ce3a4544 HTTP/1.1" 200
|
||||
2026-02-21 18:11:07,653 [34mINFO[0m Loading session 076672b7-4096-4dc8-a1b5-cf54ce3a4544 from cache: message_count=49, roles=['user', 'assistant', 'tool', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'user', 'user', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant']
|
||||
2026-02-21 18:11:07,662 [34mINFO[0m [GET_SESSION] session=076672b7-4096-4dc8-a1b5-cf54ce3a4544, active_task=False, msg_count=49, last_role=assistant
|
||||
2026-02-21 18:11:07,663 [34mINFO[0m 127.0.0.1:53386 - "GET /api/chat/sessions/076672b7-4096-4dc8-a1b5-cf54ce3a4544 HTTP/1.1" 200
|
||||
2026-02-21 18:11:09,639 [34mINFO[0m Loading session 076672b7-4096-4dc8-a1b5-cf54ce3a4544 from cache: message_count=49, roles=['user', 'assistant', 'tool', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'user', 'user', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant']
|
||||
2026-02-21 18:11:09,645 [34mINFO[0m [GET_SESSION] session=076672b7-4096-4dc8-a1b5-cf54ce3a4544, active_task=False, msg_count=49, last_role=assistant
|
||||
2026-02-21 18:11:09,646 [34mINFO[0m 127.0.0.1:53386 - "GET /api/chat/sessions/076672b7-4096-4dc8-a1b5-cf54ce3a4544 HTTP/1.1" 200
|
||||
2026-02-21 18:11:11,645 [34mINFO[0m Loading session 076672b7-4096-4dc8-a1b5-cf54ce3a4544 from cache: message_count=49, roles=['user', 'assistant', 'tool', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'user', 'user', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant']
|
||||
2026-02-21 18:11:11,650 [34mINFO[0m [GET_SESSION] session=076672b7-4096-4dc8-a1b5-cf54ce3a4544, active_task=False, msg_count=49, last_role=assistant
|
||||
2026-02-21 18:11:11,651 [34mINFO[0m 127.0.0.1:53386 - "GET /api/chat/sessions/076672b7-4096-4dc8-a1b5-cf54ce3a4544 HTTP/1.1" 200
|
||||
2026-02-21 18:11:13,627 [34mINFO[0m Loading session 076672b7-4096-4dc8-a1b5-cf54ce3a4544 from cache: message_count=49, roles=['user', 'assistant', 'tool', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'user', 'user', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant']
|
||||
2026-02-21 18:11:13,632 [34mINFO[0m [GET_SESSION] session=076672b7-4096-4dc8-a1b5-cf54ce3a4544, active_task=False, msg_count=49, last_role=assistant
|
||||
2026-02-21 18:11:13,633 [34mINFO[0m 127.0.0.1:53386 - "GET /api/chat/sessions/076672b7-4096-4dc8-a1b5-cf54ce3a4544 HTTP/1.1" 200
|
||||
2026-02-21 18:11:15,683 [34mINFO[0m Loading session 076672b7-4096-4dc8-a1b5-cf54ce3a4544 from cache: message_count=49, roles=['user', 'assistant', 'tool', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'user', 'user', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant']
|
||||
2026-02-21 18:11:15,698 [34mINFO[0m [GET_SESSION] session=076672b7-4096-4dc8-a1b5-cf54ce3a4544, active_task=False, msg_count=49, last_role=assistant
|
||||
2026-02-21 18:11:15,700 [34mINFO[0m 127.0.0.1:53386 - "GET /api/chat/sessions/076672b7-4096-4dc8-a1b5-cf54ce3a4544 HTTP/1.1" 200
|
||||
2026-02-21 18:11:17,627 [34mINFO[0m Loading session 076672b7-4096-4dc8-a1b5-cf54ce3a4544 from cache: message_count=49, roles=['user', 'assistant', 'tool', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'user', 'user', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'user', 'assistant', 'tool', 'assistant', 'user', 'assistant', 'tool', 'tool', 'assistant', 'tool', 'assistant']
|
||||
2026-02-21 18:11:17,632 [34mINFO[0m [GET_SESSION] session=076672b7-4096-4dc8-a1b5-cf54ce3a4544, active_task=False, msg_count=49, last_role=assistant
|
||||
2026-02-21 18:11:17,633 [34mINFO[0m 127.0.0.1:53386 - "GET /api/chat/sessions/076672b7-4096-4dc8-a1b5-cf54ce3a4544 HTTP/1.1" 200
|
||||
2026-02-21 18:11:25,345 [34mINFO[0m 127.0.0.1:55247 - "GET /api/chat/sessions?limit=50 HTTP/1.1" 200
|
||||
2026-02-21 18:12:34,235 [34mINFO[0m Running job "report_late_executions (trigger: interval[0:05:00], next run at: 2026-02-21 11:17:34 UTC)" (scheduled at 2026-02-21 11:12:34.213789+00:00)
|
||||
2026-02-21 18:12:34,275 [34mINFO[0m Job "report_late_executions (trigger: interval[0:05:00], next run at: 2026-02-21 11:17:34 UTC)" executed successfully
|
||||
2026-02-21 18:12:34,276 [34mINFO[0m [Scheduler] Job report_late_executions completed successfully.
|
||||
|
||||
@@ -212,6 +212,8 @@ export const ChatMessagesContainer = ({
|
||||
<ToolWrapper
|
||||
key={`${message.id}-${i}`}
|
||||
part={part as ToolUIPart}
|
||||
message={message}
|
||||
message={message}
|
||||
>
|
||||
<FindBlocksTool part={part as ToolUIPart} />
|
||||
</ToolWrapper>
|
||||
@@ -222,6 +224,7 @@ export const ChatMessagesContainer = ({
|
||||
<ToolWrapper
|
||||
key={`${message.id}-${i}`}
|
||||
part={part as ToolUIPart}
|
||||
message={message}
|
||||
>
|
||||
<FindAgentsTool part={part as ToolUIPart} />
|
||||
</ToolWrapper>
|
||||
@@ -232,6 +235,7 @@ export const ChatMessagesContainer = ({
|
||||
<ToolWrapper
|
||||
key={`${message.id}-${i}`}
|
||||
part={part as ToolUIPart}
|
||||
message={message}
|
||||
>
|
||||
<SearchDocsTool part={part as ToolUIPart} />
|
||||
</ToolWrapper>
|
||||
@@ -241,6 +245,7 @@ export const ChatMessagesContainer = ({
|
||||
<ToolWrapper
|
||||
key={`${message.id}-${i}`}
|
||||
part={part as ToolUIPart}
|
||||
message={message}
|
||||
>
|
||||
<RunBlockTool part={part as ToolUIPart} />
|
||||
</ToolWrapper>
|
||||
@@ -251,6 +256,7 @@ export const ChatMessagesContainer = ({
|
||||
<ToolWrapper
|
||||
key={`${message.id}-${i}`}
|
||||
part={part as ToolUIPart}
|
||||
message={message}
|
||||
>
|
||||
<RunAgentTool part={part as ToolUIPart} />
|
||||
</ToolWrapper>
|
||||
@@ -260,6 +266,7 @@ export const ChatMessagesContainer = ({
|
||||
<ToolWrapper
|
||||
key={`${message.id}-${i}`}
|
||||
part={part as ToolUIPart}
|
||||
message={message}
|
||||
>
|
||||
<CreateAgentTool part={part as ToolUIPart} />
|
||||
</ToolWrapper>
|
||||
@@ -269,6 +276,7 @@ export const ChatMessagesContainer = ({
|
||||
<ToolWrapper
|
||||
key={`${message.id}-${i}`}
|
||||
part={part as ToolUIPart}
|
||||
message={message}
|
||||
>
|
||||
<EditAgentTool part={part as ToolUIPart} />
|
||||
</ToolWrapper>
|
||||
@@ -278,6 +286,7 @@ export const ChatMessagesContainer = ({
|
||||
<ToolWrapper
|
||||
key={`${message.id}-${i}`}
|
||||
part={part as ToolUIPart}
|
||||
message={message}
|
||||
>
|
||||
<ViewAgentOutputTool part={part as ToolUIPart} />
|
||||
</ToolWrapper>
|
||||
@@ -287,9 +296,11 @@ export const ChatMessagesContainer = ({
|
||||
<ToolWrapper
|
||||
key={`${message.id}-${i}`}
|
||||
part={part as ToolUIPart}
|
||||
message={message}
|
||||
>
|
||||
<SearchFeatureRequestsTool
|
||||
part={part as ToolUIPart}
|
||||
message={message}
|
||||
/>
|
||||
</ToolWrapper>
|
||||
);
|
||||
@@ -298,6 +309,7 @@ export const ChatMessagesContainer = ({
|
||||
<ToolWrapper
|
||||
key={`${message.id}-${i}`}
|
||||
part={part as ToolUIPart}
|
||||
message={message}
|
||||
>
|
||||
<CreateFeatureRequestTool part={part as ToolUIPart} />
|
||||
</ToolWrapper>
|
||||
@@ -310,6 +322,7 @@ export const ChatMessagesContainer = ({
|
||||
<ToolWrapper
|
||||
key={`${message.id}-${i}`}
|
||||
part={part as ToolUIPart}
|
||||
message={message}
|
||||
>
|
||||
<GenericTool part={part as ToolUIPart} />
|
||||
</ToolWrapper>
|
||||
|
||||
@@ -1,28 +1,33 @@
|
||||
import type { ToolUIPart } from "ai";
|
||||
import { isLongRunningTool } from "../../tools/long-running-tools";
|
||||
import type { ToolUIPart, UIDataTypes, UIMessage, UITools } from "ai";
|
||||
import { LongRunningToolDisplay } from "../LongRunningToolDisplay/LongRunningToolDisplay";
|
||||
|
||||
interface Props {
|
||||
part: ToolUIPart;
|
||||
message: UIMessage<unknown, UIDataTypes, UITools>;
|
||||
children: React.ReactNode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapper for all tool components. Automatically shows mini-game
|
||||
* for long-running tools by checking LONG_RUNNING_TOOLS list.
|
||||
* Wrapper for all tool components. Automatically shows UI feedback (e.g., mini-game)
|
||||
* for long-running tools by detecting StreamLongRunningStart events from the backend.
|
||||
*/
|
||||
export function ToolWrapper({ part, children }: Props) {
|
||||
// Extract tool name from part.type (e.g., "tool-create_agent" -> "create_agent")
|
||||
const toolName = part.type.replace(/^tool-/, "");
|
||||
export function ToolWrapper({ part, message, children }: Props) {
|
||||
const isStreaming =
|
||||
part.state === "input-streaming" || part.state === "input-available";
|
||||
|
||||
// Check if this tool has a long-running-start event in the message
|
||||
const isLongRunning = message.parts.some(
|
||||
(p) =>
|
||||
p.type === "long-running-start" &&
|
||||
"toolCallId" in p &&
|
||||
"toolCallId" in part &&
|
||||
p.toolCallId === part.toolCallId,
|
||||
);
|
||||
|
||||
return (
|
||||
<>
|
||||
{/* Automatically show mini-game if tool is long-running and streaming */}
|
||||
{isLongRunningTool(toolName) && (
|
||||
<LongRunningToolDisplay isStreaming={isStreaming} />
|
||||
)}
|
||||
{/* Show UI feedback if tool is long-running and streaming */}
|
||||
{isLongRunning && <LongRunningToolDisplay isStreaming={isStreaming} />}
|
||||
{/* Render the actual tool component */}
|
||||
{children}
|
||||
</>
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
/**
|
||||
* Tools that take a long time to execute (several minutes).
|
||||
* These tools will automatically show the mini-game while executing.
|
||||
*
|
||||
* This list matches the backend tools where is_long_running=True.
|
||||
*/
|
||||
export const LONG_RUNNING_TOOLS = [
|
||||
"create_agent",
|
||||
"edit_agent",
|
||||
"customize_agent",
|
||||
] as const;
|
||||
|
||||
export type LongRunningToolName = (typeof LONG_RUNNING_TOOLS)[number];
|
||||
|
||||
/**
|
||||
* Check if a tool is marked as long-running.
|
||||
*/
|
||||
export function isLongRunningTool(toolName: string): boolean {
|
||||
return LONG_RUNNING_TOOLS.includes(toolName as LongRunningToolName);
|
||||
}
|
||||
Reference in New Issue
Block a user