@lobehub/lobehub 2.0.0-next.65 → 2.0.0-next.66

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/.github/workflows/claude-translator.yml +1 -0
  2. package/CHANGELOG.md +25 -0
  3. package/changelog/v1.json +9 -0
  4. package/locales/ar/chat.json +3 -0
  5. package/locales/bg-BG/chat.json +3 -0
  6. package/locales/de-DE/chat.json +3 -0
  7. package/locales/en-US/chat.json +3 -0
  8. package/locales/es-ES/chat.json +3 -0
  9. package/locales/fa-IR/chat.json +3 -0
  10. package/locales/fr-FR/chat.json +3 -0
  11. package/locales/it-IT/chat.json +3 -0
  12. package/locales/ja-JP/chat.json +3 -0
  13. package/locales/ko-KR/chat.json +3 -0
  14. package/locales/nl-NL/chat.json +3 -0
  15. package/locales/pl-PL/chat.json +3 -0
  16. package/locales/pt-BR/chat.json +3 -0
  17. package/locales/ru-RU/chat.json +3 -0
  18. package/locales/tr-TR/chat.json +3 -0
  19. package/locales/vi-VN/chat.json +3 -0
  20. package/locales/zh-CN/chat.json +3 -0
  21. package/locales/zh-TW/chat.json +3 -0
  22. package/package.json +5 -5
  23. package/packages/conversation-flow/src/__tests__/fixtures/index.ts +4 -8
  24. package/packages/conversation-flow/src/__tests__/fixtures/inputs/{assistant-with-tools.json → assistantGroup/assistant-with-tools.json} +2 -1
  25. package/packages/conversation-flow/src/__tests__/fixtures/inputs/assistantGroup/index.ts +8 -0
  26. package/packages/conversation-flow/src/__tests__/fixtures/inputs/index.ts +2 -4
  27. package/packages/conversation-flow/src/__tests__/fixtures/outputs/{assistant-with-tools.json → assistantGroup/assistant-with-tools.json} +8 -8
  28. package/packages/conversation-flow/src/__tests__/fixtures/outputs/assistantGroup/index.ts +8 -0
  29. package/packages/conversation-flow/src/__tests__/parse.test.ts +6 -6
  30. package/packages/conversation-flow/src/parse.ts +45 -1
  31. package/packages/conversation-flow/src/transformation/FlatListBuilder.ts +64 -0
  32. package/packages/database/package.json +2 -2
  33. package/packages/obervability-otel/package.json +1 -1
  34. package/packages/types/src/message/common/metadata.ts +8 -1
  35. package/packages/types/src/message/ui/chat.ts +1 -0
  36. package/src/app/(backend)/market/agent/[[...segments]]/route.ts +1 -1
  37. package/src/app/(backend)/market/oidc/[[...segments]]/route.ts +1 -1
  38. package/src/app/market-auth-callback/layout.tsx +27 -3
  39. package/src/features/ChatInput/ActionBar/Token/TokenTag.tsx +2 -2
  40. package/src/features/Conversation/Messages/Assistant/Actions/index.tsx +15 -1
  41. package/src/features/Conversation/Messages/Assistant/CollapsedMessage.tsx +37 -0
  42. package/src/features/Conversation/Messages/Assistant/MessageContent.tsx +16 -9
  43. package/src/features/Conversation/Messages/Group/Actions/WithContentId.tsx +28 -6
  44. package/src/features/Conversation/Messages/Group/CollapsedMessage.tsx +37 -0
  45. package/src/features/Conversation/Messages/Group/{GroupChildren.tsx → Group.tsx} +18 -4
  46. package/src/features/Conversation/Messages/Group/index.tsx +4 -6
  47. package/src/features/Conversation/hooks/useChatListActionsBar.tsx +14 -0
  48. package/src/layout/AuthProvider/MarketAuth/MarketAuthProvider.tsx +1 -1
  49. package/src/libs/mcp/__tests__/index.test.ts +6 -6
  50. package/src/locales/default/chat.ts +3 -0
  51. package/src/store/chat/slices/message/actions/publicApi.ts +17 -0
  52. package/src/store/chat/slices/message/selectors/displayMessage.ts +1 -1
  53. package/src/store/chat/slices/message/selectors/messageState.ts +7 -0
  54. package/src/store/chat/slices/translate/action.test.ts +26 -32
  55. package/src/store/chat/slices/translate/action.ts +3 -3
  56. /package/packages/conversation-flow/src/__tests__/fixtures/inputs/{complex-scenario.json → assistantGroup/tools-with-branches.json} +0 -0
  57. /package/packages/conversation-flow/src/__tests__/fixtures/outputs/{complex-scenario.json → assistantGroup/tools-with-branches.json} +0 -0
  58. /package/src/features/Conversation/Messages/Group/{GroupContext.tsx → GroupContext.ts} +0 -0
@@ -21,6 +21,7 @@ jobs:
21
21
  (github.event_name == 'pull_request_review' && github.event.sender.type != 'Bot') ||
22
22
  (github.event_name == 'pull_request_review_comment' && github.event.sender.type != 'Bot')
23
23
  runs-on: ubuntu-latest
24
+ timeout-minutes: 5
24
25
  permissions:
25
26
  contents: read
26
27
  # update issues/comments
package/CHANGELOG.md CHANGED
@@ -2,6 +2,31 @@
2
2
 
3
3
  # Changelog
4
4
 
5
+ ## [Version 2.0.0-next.66](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.65...v2.0.0-next.66)
6
+
7
+ <sup>Released on **2025-11-16**</sup>
8
+
9
+ #### ✨ Features
10
+
11
+ - **misc**: Support to collapse message.
12
+
13
+ <br/>
14
+
15
+ <details>
16
+ <summary><kbd>Improvements and Fixes</kbd></summary>
17
+
18
+ #### What's improved
19
+
20
+ - **misc**: Support to collapse message, closes [#10234](https://github.com/lobehub/lobe-chat/issues/10234) ([4cd6347](https://github.com/lobehub/lobe-chat/commit/4cd6347))
21
+
22
+ </details>
23
+
24
+ <div align="right">
25
+
26
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
27
+
28
+ </div>
29
+
5
30
  ## [Version 2.0.0-next.65](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.64...v2.0.0-next.65)
6
31
 
7
32
  <sup>Released on **2025-11-16**</sup>
package/changelog/v1.json CHANGED
@@ -1,4 +1,13 @@
1
1
  [
2
+ {
3
+ "children": {
4
+ "features": [
5
+ "Support to collapse message."
6
+ ]
7
+ },
8
+ "date": "2025-11-16",
9
+ "version": "2.0.0-next.66"
10
+ },
2
11
  {
3
12
  "children": {
4
13
  "improvements": [
@@ -17,6 +17,7 @@
17
17
  "availableAgents": "المساعدون المتاحون",
18
18
  "backToBottom": "العودة إلى الأسفل",
19
19
  "chatList": {
20
+ "expandMessage": "عرض الرسائل",
20
21
  "longMessageDetail": "عرض التفاصيل"
21
22
  },
22
23
  "clearCurrentMessages": "مسح رسائل الجلسة الحالية",
@@ -173,9 +174,11 @@
173
174
  "title": "الإشارة إلى الأعضاء"
174
175
  },
175
176
  "messageAction": {
177
+ "collapse": "إخفاء الرسائل",
176
178
  "continueGeneration": "متابعة التوليد",
177
179
  "delAndRegenerate": "حذف وإعادة الإنشاء",
178
180
  "deleteDisabledByThreads": "يوجد موضوعات فرعية، لا يمكن الحذف",
181
+ "expand": "عرض الرسائل",
179
182
  "regenerate": "إعادة الإنشاء"
180
183
  },
181
184
  "messages": {
@@ -17,6 +17,7 @@
17
17
  "availableAgents": "Налични асистенти",
18
18
  "backToBottom": "Върни се в началото",
19
19
  "chatList": {
20
+ "expandMessage": "Разгъни съобщението",
20
21
  "longMessageDetail": "Вижте детайлите"
21
22
  },
22
23
  "clearCurrentMessages": "Изчисти съобщенията от текущата сесия",
@@ -173,9 +174,11 @@
173
174
  "title": "Споменаване на членове"
174
175
  },
175
176
  "messageAction": {
177
+ "collapse": "Скрий съобщението",
176
178
  "continueGeneration": "Продължи генерирането",
177
179
  "delAndRegenerate": "Изтрий и прегенерирай",
178
180
  "deleteDisabledByThreads": "Съществуват подтеми, не можете да изтриете.",
181
+ "expand": "Разгъни съобщението",
179
182
  "regenerate": "Прегенерирай"
180
183
  },
181
184
  "messages": {
@@ -17,6 +17,7 @@
17
17
  "availableAgents": "Verfügbare Assistenten",
18
18
  "backToBottom": "Zurück zum Ende",
19
19
  "chatList": {
20
+ "expandMessage": "Nachricht anzeigen",
20
21
  "longMessageDetail": "Details anzeigen"
21
22
  },
22
23
  "clearCurrentMessages": "Aktuelle Nachrichten löschen",
@@ -173,9 +174,11 @@
173
174
  "title": "Mitglieder erwähnen"
174
175
  },
175
176
  "messageAction": {
177
+ "collapse": "Nachricht ausblenden",
176
178
  "continueGeneration": "Generierung fortsetzen",
177
179
  "delAndRegenerate": "Löschen und neu generieren",
178
180
  "deleteDisabledByThreads": "Es gibt Unterthemen, die Löschung ist nicht möglich.",
181
+ "expand": "Nachricht anzeigen",
179
182
  "regenerate": "Neu generieren"
180
183
  },
181
184
  "messages": {
@@ -17,6 +17,7 @@
17
17
  "availableAgents": "Available assistants",
18
18
  "backToBottom": "Back to bottom",
19
19
  "chatList": {
20
+ "expandMessage": "Expand Message",
20
21
  "longMessageDetail": "View Details"
21
22
  },
22
23
  "clearCurrentMessages": "Clear current session messages",
@@ -173,9 +174,11 @@
173
174
  "title": "Mention Members"
174
175
  },
175
176
  "messageAction": {
177
+ "collapse": "Collapse Message",
176
178
  "continueGeneration": "Continue Generating",
177
179
  "delAndRegenerate": "Delete and Regenerate",
178
180
  "deleteDisabledByThreads": "There are subtopics, deletion is not allowed",
181
+ "expand": "Expand Message",
179
182
  "regenerate": "Regenerate"
180
183
  },
181
184
  "messages": {
@@ -17,6 +17,7 @@
17
17
  "availableAgents": "Agentes disponibles",
18
18
  "backToBottom": "Volver al fondo",
19
19
  "chatList": {
20
+ "expandMessage": "Expandir mensaje",
20
21
  "longMessageDetail": "Ver detalles"
21
22
  },
22
23
  "clearCurrentMessages": "Borrar mensajes actuales",
@@ -173,9 +174,11 @@
173
174
  "title": "Mencionar miembros"
174
175
  },
175
176
  "messageAction": {
177
+ "collapse": "Ocultar mensaje",
176
178
  "continueGeneration": "Continuar generando",
177
179
  "delAndRegenerate": "Eliminar y Regenerar",
178
180
  "deleteDisabledByThreads": "Existen subtemas, no se puede eliminar",
181
+ "expand": "Expandir mensaje",
179
182
  "regenerate": "Regenerar"
180
183
  },
181
184
  "messages": {
@@ -17,6 +17,7 @@
17
17
  "availableAgents": "دستیاران در دسترس",
18
18
  "backToBottom": "بازگشت به پایین",
19
19
  "chatList": {
20
+ "expandMessage": "گسترش پیام",
20
21
  "longMessageDetail": "مشاهده جزئیات"
21
22
  },
22
23
  "clearCurrentMessages": "پاک کردن پیام‌های جلسه فعلی",
@@ -173,9 +174,11 @@
173
174
  "title": "ذکر اعضا"
174
175
  },
175
176
  "messageAction": {
177
+ "collapse": "بستن پیام",
176
178
  "continueGeneration": "ادامه تولید",
177
179
  "delAndRegenerate": "حذف و بازتولید",
178
180
  "deleteDisabledByThreads": "زیرموضوع وجود دارد، نمی‌توان حذف کرد",
181
+ "expand": "گسترش پیام",
179
182
  "regenerate": "بازتولید"
180
183
  },
181
184
  "messages": {
@@ -17,6 +17,7 @@
17
17
  "availableAgents": "Assistants disponibles",
18
18
  "backToBottom": "Retour en bas",
19
19
  "chatList": {
20
+ "expandMessage": "Développer le message",
20
21
  "longMessageDetail": "Voir les détails"
21
22
  },
22
23
  "clearCurrentMessages": "Effacer les messages actuels",
@@ -173,9 +174,11 @@
173
174
  "title": "Mentionner un membre"
174
175
  },
175
176
  "messageAction": {
177
+ "collapse": "Réduire le message",
176
178
  "continueGeneration": "Continuer la génération",
177
179
  "delAndRegenerate": "Supprimer et régénérer",
178
180
  "deleteDisabledByThreads": "Il existe des sous-sujets, la suppression n'est pas possible.",
181
+ "expand": "Développer le message",
179
182
  "regenerate": "Régénérer"
180
183
  },
181
184
  "messages": {
@@ -17,6 +17,7 @@
17
17
  "availableAgents": "Assistenti disponibili",
18
18
  "backToBottom": "Torna in fondo",
19
19
  "chatList": {
20
+ "expandMessage": "Espandi messaggio",
20
21
  "longMessageDetail": "Visualizza dettagli"
21
22
  },
22
23
  "clearCurrentMessages": "Cancella messaggi attuali",
@@ -173,9 +174,11 @@
173
174
  "title": "Menziona membri"
174
175
  },
175
176
  "messageAction": {
177
+ "collapse": "Comprimi messaggio",
176
178
  "continueGeneration": "Continua a generare",
177
179
  "delAndRegenerate": "Elimina e rigenera",
178
180
  "deleteDisabledByThreads": "Esistono sottoargomenti, non è possibile eliminare",
181
+ "expand": "Espandi messaggio",
179
182
  "regenerate": "Rigenera"
180
183
  },
181
184
  "messages": {
@@ -17,6 +17,7 @@
17
17
  "availableAgents": "利用可能なアシスタント",
18
18
  "backToBottom": "現在に戻る",
19
19
  "chatList": {
20
+ "expandMessage": "メッセージを展開",
20
21
  "longMessageDetail": "詳細を見る"
21
22
  },
22
23
  "clearCurrentMessages": "現在の会話をクリア",
@@ -173,9 +174,11 @@
173
174
  "title": "メンバーをメンション"
174
175
  },
175
176
  "messageAction": {
177
+ "collapse": "メッセージを折りたたむ",
176
178
  "continueGeneration": "生成を続ける",
177
179
  "delAndRegenerate": "削除して再生成",
178
180
  "deleteDisabledByThreads": "サブトピックが存在するため、削除できません。",
181
+ "expand": "メッセージを展開",
179
182
  "regenerate": "再生成"
180
183
  },
181
184
  "messages": {
@@ -17,6 +17,7 @@
17
17
  "availableAgents": "사용 가능한 도우미",
18
18
  "backToBottom": "하단으로 이동",
19
19
  "chatList": {
20
+ "expandMessage": "메시지 펼치기",
20
21
  "longMessageDetail": "자세히 보기"
21
22
  },
22
23
  "clearCurrentMessages": "현재 대화 지우기",
@@ -173,9 +174,11 @@
173
174
  "title": "멤버 언급"
174
175
  },
175
176
  "messageAction": {
177
+ "collapse": "메시지 접기",
176
178
  "continueGeneration": "계속 생성하기",
177
179
  "delAndRegenerate": "삭제하고 다시 생성",
178
180
  "deleteDisabledByThreads": "하위 주제가 존재하여 삭제할 수 없습니다.",
181
+ "expand": "메시지 펼치기",
179
182
  "regenerate": "다시 생성"
180
183
  },
181
184
  "messages": {
@@ -17,6 +17,7 @@
17
17
  "availableAgents": "Beschikbare assistenten",
18
18
  "backToBottom": "Terug naar onderen",
19
19
  "chatList": {
20
+ "expandMessage": "Bericht uitvouwen",
20
21
  "longMessageDetail": "Bekijk details"
21
22
  },
22
23
  "clearCurrentMessages": "Huidige berichten wissen",
@@ -173,9 +174,11 @@
173
174
  "title": "Leden vermelden"
174
175
  },
175
176
  "messageAction": {
177
+ "collapse": "Bericht samenvouwen",
176
178
  "continueGeneration": "Doorgaan met genereren",
177
179
  "delAndRegenerate": "Verwijderen en opnieuw genereren",
178
180
  "deleteDisabledByThreads": "Er zijn subonderwerpen, verwijderen is niet mogelijk.",
181
+ "expand": "Bericht uitvouwen",
179
182
  "regenerate": "Opnieuw genereren"
180
183
  },
181
184
  "messages": {
@@ -17,6 +17,7 @@
17
17
  "availableAgents": "Dostępni asystenci",
18
18
  "backToBottom": "Przewiń na dół",
19
19
  "chatList": {
20
+ "expandMessage": "Rozwiń wiadomość",
20
21
  "longMessageDetail": "Zobacz szczegóły"
21
22
  },
22
23
  "clearCurrentMessages": "Wyczyść bieżącą rozmowę",
@@ -173,9 +174,11 @@
173
174
  "title": "Wzmianka o członkach"
174
175
  },
175
176
  "messageAction": {
177
+ "collapse": "Zwiń wiadomość",
176
178
  "continueGeneration": "Kontynuuj generowanie",
177
179
  "delAndRegenerate": "Usuń i wygeneruj ponownie",
178
180
  "deleteDisabledByThreads": "Istnieją podwątki, nie można usunąć",
181
+ "expand": "Rozwiń wiadomość",
179
182
  "regenerate": "Wygeneruj ponownie"
180
183
  },
181
184
  "messages": {
@@ -17,6 +17,7 @@
17
17
  "availableAgents": "Assistentes disponíveis",
18
18
  "backToBottom": "Voltar para o início",
19
19
  "chatList": {
20
+ "expandMessage": "Expandir mensagem",
20
21
  "longMessageDetail": "Ver detalhes"
21
22
  },
22
23
  "clearCurrentMessages": "Limpar mensagens atuais",
@@ -173,9 +174,11 @@
173
174
  "title": "Mencionar membros"
174
175
  },
175
176
  "messageAction": {
177
+ "collapse": "Recolher mensagem",
176
178
  "continueGeneration": "Continuar gerando",
177
179
  "delAndRegenerate": "Excluir e Regenerar",
178
180
  "deleteDisabledByThreads": "Existem subtópicos, não é possível deletar.",
181
+ "expand": "Expandir mensagem",
179
182
  "regenerate": "Regenerar"
180
183
  },
181
184
  "messages": {
@@ -17,6 +17,7 @@
17
17
  "availableAgents": "Доступные помощники",
18
18
  "backToBottom": "Вернуться вниз",
19
19
  "chatList": {
20
+ "expandMessage": "Развернуть сообщение",
20
21
  "longMessageDetail": "Посмотреть детали"
21
22
  },
22
23
  "clearCurrentMessages": "Очистить текущий разговор",
@@ -173,9 +174,11 @@
173
174
  "title": "Упомянуть участника"
174
175
  },
175
176
  "messageAction": {
177
+ "collapse": "Свернуть сообщение",
176
178
  "continueGeneration": "Продолжить генерацию",
177
179
  "delAndRegenerate": "Удалить и пересоздать",
178
180
  "deleteDisabledByThreads": "Существуют подтемы, удаление невозможно",
181
+ "expand": "Развернуть сообщение",
179
182
  "regenerate": "Пересоздать"
180
183
  },
181
184
  "messages": {
@@ -17,6 +17,7 @@
17
17
  "availableAgents": "Kullanılabilir asistanlar",
18
18
  "backToBottom": "En alta git",
19
19
  "chatList": {
20
+ "expandMessage": "Mesajı Genişlet",
20
21
  "longMessageDetail": "Detayları görüntüle"
21
22
  },
22
23
  "clearCurrentMessages": "Mevcut oturum mesajlarını temizle",
@@ -173,9 +174,11 @@
173
174
  "title": "Üyeleri Etiketle"
174
175
  },
175
176
  "messageAction": {
177
+ "collapse": "Mesajı Daralt",
176
178
  "continueGeneration": "Oluşturmaya devam et",
177
179
  "delAndRegenerate": "Sil ve Yeniden Oluştur",
178
180
  "deleteDisabledByThreads": "Alt konular mevcut, silinemez",
181
+ "expand": "Mesajı Genişlet",
179
182
  "regenerate": "Yeniden Oluştur"
180
183
  },
181
184
  "messages": {
@@ -17,6 +17,7 @@
17
17
  "availableAgents": "Trợ lý có sẵn",
18
18
  "backToBottom": "Quay về dưới cùng",
19
19
  "chatList": {
20
+ "expandMessage": "Mở rộng tin nhắn",
20
21
  "longMessageDetail": "Xem chi tiết"
21
22
  },
22
23
  "clearCurrentMessages": "Xóa tin nhắn hiện tại",
@@ -173,9 +174,11 @@
173
174
  "title": "Nhắc đến thành viên"
174
175
  },
175
176
  "messageAction": {
177
+ "collapse": "Thu gọn tin nhắn",
176
178
  "continueGeneration": "Tiếp tục tạo",
177
179
  "delAndRegenerate": "Xóa và tạo lại",
178
180
  "deleteDisabledByThreads": "Có chủ đề con, không thể xóa",
181
+ "expand": "Mở rộng tin nhắn",
179
182
  "regenerate": "Tạo lại"
180
183
  },
181
184
  "messages": {
@@ -17,6 +17,7 @@
17
17
  "availableAgents": "可用助手",
18
18
  "backToBottom": "跳转至当前",
19
19
  "chatList": {
20
+ "expandMessage": "展开消息",
20
21
  "longMessageDetail": "查看详情"
21
22
  },
22
23
  "clearCurrentMessages": "清空当前会话消息",
@@ -173,9 +174,11 @@
173
174
  "title": "提及成员"
174
175
  },
175
176
  "messageAction": {
177
+ "collapse": "收起消息",
176
178
  "continueGeneration": "继续生成",
177
179
  "delAndRegenerate": "删除并重新生成",
178
180
  "deleteDisabledByThreads": "存在子话题,不能删除",
181
+ "expand": "展开消息",
179
182
  "regenerate": "重新生成"
180
183
  },
181
184
  "messages": {
@@ -17,6 +17,7 @@
17
17
  "availableAgents": "可用助理",
18
18
  "backToBottom": "返回底部",
19
19
  "chatList": {
20
+ "expandMessage": "展開訊息",
20
21
  "longMessageDetail": "查看詳情"
21
22
  },
22
23
  "clearCurrentMessages": "清空當前對話",
@@ -173,9 +174,11 @@
173
174
  "title": "提及成員"
174
175
  },
175
176
  "messageAction": {
177
+ "collapse": "收起訊息",
176
178
  "continueGeneration": "繼續生成",
177
179
  "delAndRegenerate": "刪除並重新生成",
178
180
  "deleteDisabledByThreads": "存在子話題,無法刪除",
181
+ "expand": "展開訊息",
179
182
  "regenerate": "重新生成"
180
183
  },
181
184
  "messages": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lobehub/lobehub",
3
- "version": "2.0.0-next.65",
3
+ "version": "2.0.0-next.66",
4
4
  "description": "LobeHub - an open-source,comprehensive AI Agent framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.",
5
5
  "keywords": [
6
6
  "framework",
@@ -130,8 +130,8 @@
130
130
  "@ant-design/pro-components": "^2.8.10",
131
131
  "@anthropic-ai/sdk": "^0.67.1",
132
132
  "@auth/core": "^0.40.0",
133
- "@aws-sdk/client-s3": "~3.893.0",
134
- "@aws-sdk/s3-request-presigner": "~3.893.0",
133
+ "@aws-sdk/client-s3": "~3.932.0",
134
+ "@aws-sdk/s3-request-presigner": "~3.932.0",
135
135
  "@azure-rest/ai-inference": "1.0.0-beta.5",
136
136
  "@azure/core-auth": "^1.10.1",
137
137
  "@cfworker/json-schema": "^4.1.1",
@@ -225,7 +225,7 @@
225
225
  "langfuse": "^3.38.6",
226
226
  "langfuse-core": "^3.38.6",
227
227
  "lodash-es": "^4.17.21",
228
- "lucide-react": "^0.548.0",
228
+ "lucide-react": "^0.553.0",
229
229
  "mammoth": "^1.11.0",
230
230
  "markdown-to-txt": "^2.0.1",
231
231
  "marked": "^16.4.2",
@@ -242,7 +242,7 @@
242
242
  "nuqs": "^2.7.3",
243
243
  "officeparser": "5.1.1",
244
244
  "oidc-provider": "^9.5.2",
245
- "ollama": "^0.6.2",
245
+ "ollama": "^0.6.3",
246
246
  "openai": "^4.104.0",
247
247
  "openapi-fetch": "^0.14.1",
248
248
  "partial-json": "^0.1.7",
@@ -1,17 +1,15 @@
1
1
  import type { Message, ParseResult } from '../../types';
2
2
  // Input fixtures
3
3
  import assistantChainWithFollowupInput from './inputs/assistant-chain-with-followup.json';
4
- import assistantWithToolsInput from './inputs/assistant-with-tools.json';
4
+ import { assistantGroup as assistantGroupInputs } from './inputs/assistantGroup';
5
5
  import { branch as branchInputs } from './inputs/branch';
6
6
  import { compare as compareInputs } from './inputs/compare';
7
- import complexScenarioInput from './inputs/complex-scenario.json';
8
7
  import linearConversationInput from './inputs/linear-conversation.json';
9
8
  // Output fixtures
10
9
  import assistantChainWithFollowupOutput from './outputs/assistant-chain-with-followup.json';
11
- import assistantWithToolsOutput from './outputs/assistant-with-tools.json';
10
+ import { assistantGroup as assistantGroupOutputs } from './outputs/assistantGroup';
12
11
  import { branch as branchOutputs } from './outputs/branch';
13
12
  import { compare as compareOutputs } from './outputs/compare';
14
- import complexScenarioOutput from './outputs/complex-scenario.json';
15
13
  import linearConversationOutput from './outputs/linear-conversation.json';
16
14
 
17
15
  /**
@@ -28,10 +26,9 @@ export interface SerializedParseResult {
28
26
  */
29
27
  export const inputs = {
30
28
  assistantChainWithFollowup: assistantChainWithFollowupInput as Message[],
31
- assistantWithTools: assistantWithToolsInput as Message[],
29
+ assistantGroup: assistantGroupInputs,
32
30
  branch: branchInputs,
33
31
  compare: compareInputs,
34
- complexScenario: complexScenarioInput as Message[],
35
32
  linearConversation: linearConversationInput as Message[],
36
33
  };
37
34
 
@@ -40,9 +37,8 @@ export const inputs = {
40
37
  */
41
38
  export const outputs = {
42
39
  assistantChainWithFollowup: assistantChainWithFollowupOutput as unknown as SerializedParseResult,
43
- assistantWithTools: assistantWithToolsOutput as unknown as SerializedParseResult,
40
+ assistantGroup: assistantGroupOutputs,
44
41
  branch: branchOutputs,
45
42
  compare: compareOutputs,
46
- complexScenario: complexScenarioOutput as unknown as SerializedParseResult,
47
43
  linearConversation: linearConversationOutput as unknown as SerializedParseResult,
48
44
  };
@@ -97,7 +97,8 @@
97
97
  "tps": 48,
98
98
  "ttft": 178,
99
99
  "duration": 875,
100
- "latency": 1053
100
+ "latency": 1053,
101
+ "collapsed": true
101
102
  }
102
103
  },
103
104
  {
@@ -0,0 +1,8 @@
1
+ import type { Message } from '../../../../types';
2
+ import assistantWithTools from './assistant-with-tools.json';
3
+ import toolsWithBranches from './tools-with-branches.json';
4
+
5
+ export const assistantGroup = {
6
+ assistantWithTools: assistantWithTools as Message[],
7
+ toolsWithBranches: toolsWithBranches as Message[],
8
+ };
@@ -1,14 +1,12 @@
1
1
  import type { Message } from '../../../types';
2
- import assistantWithTools from './assistant-with-tools.json';
2
+ import { assistantGroup } from './assistantGroup';
3
3
  import { branch } from './branch';
4
4
  import { compare } from './compare';
5
- import complexScenario from './complex-scenario.json';
6
5
  import linearConversation from './linear-conversation.json';
7
6
 
8
7
  export const inputs = {
9
- assistantWithTools: assistantWithTools as Message[],
8
+ assistantGroup,
10
9
  branch,
11
10
  compare,
12
- complexScenario: complexScenario as Message[],
13
11
  linearConversation: linearConversation as Message[],
14
12
  };
@@ -9,18 +9,12 @@
9
9
  {
10
10
  "id": "msg-102",
11
11
  "type": "message",
12
- "tools": [
13
- "msg-103",
14
- "msg-104"
15
- ]
12
+ "tools": ["msg-103", "msg-104"]
16
13
  },
17
14
  {
18
15
  "id": "msg-105",
19
16
  "type": "message",
20
- "tools": [
21
- "msg-106",
22
- "msg-107"
23
- ]
17
+ "tools": ["msg-106", "msg-107"]
24
18
  },
25
19
  {
26
20
  "id": "msg-108",
@@ -98,6 +92,9 @@
98
92
  "totalInputTokens": 28,
99
93
  "totalOutputTokens": 45,
100
94
  "totalTokens": 73
95
+ },
96
+ "metadata": {
97
+ "collapsed": true
101
98
  }
102
99
  },
103
100
  {
@@ -178,6 +175,9 @@
178
175
  "totalOutputTokens": 199,
179
176
  "totalTokens": 628,
180
177
  "cost": 0.0018839999999999998
178
+ },
179
+ "metadata": {
180
+ "collapsed": true
181
181
  }
182
182
  }
183
183
  ],
@@ -0,0 +1,8 @@
1
+ import type { SerializedParseResult } from '../..';
2
+ import assistantWithTools from './assistant-with-tools.json';
3
+ import toolsWithBranches from './tools-with-branches.json';
4
+
5
+ export const assistantGroup = {
6
+ assistantWithTools: assistantWithTools as unknown as SerializedParseResult,
7
+ toolsWithBranches: toolsWithBranches as unknown as SerializedParseResult,
8
+ };
@@ -22,9 +22,9 @@ describe('parse', () => {
22
22
 
23
23
  describe('Tool Usage', () => {
24
24
  it('should parse assistant with tools correctly', () => {
25
- const result = parse(inputs.assistantWithTools);
25
+ const result = parse(inputs.assistantGroup.assistantWithTools);
26
26
 
27
- expect(serializeParseResult(result)).toEqual(outputs.assistantWithTools);
27
+ expect(serializeParseResult(result)).toEqual(outputs.assistantGroup.assistantWithTools);
28
28
  });
29
29
 
30
30
  it('should include follow-up messages after assistant chain', () => {
@@ -99,11 +99,11 @@ describe('parse', () => {
99
99
  });
100
100
  });
101
101
 
102
- describe('Complex Scenarios', () => {
103
- it('should handle complex mixed scenarios correctly', () => {
104
- const result = parse(inputs.complexScenario);
102
+ describe('Assistant Group Scenarios', () => {
103
+ it('should handle tools with assistant branches correctly', () => {
104
+ const result = parse(inputs.assistantGroup.toolsWithBranches);
105
105
 
106
- expect(serializeParseResult(result)).toEqual(outputs.complexScenario);
106
+ expect(serializeParseResult(result)).toEqual(outputs.assistantGroup.toolsWithBranches);
107
107
  });
108
108
  });
109
109