@lobehub/lobehub 2.0.0-next.273 → 2.0.0-next.274

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 (227) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/changelog/v1.json +9 -0
  3. package/locales/ar/chat.json +7 -0
  4. package/locales/ar/models.json +2 -3
  5. package/locales/ar/plugin.json +22 -1
  6. package/locales/bg-BG/chat.json +7 -0
  7. package/locales/bg-BG/models.json +3 -3
  8. package/locales/bg-BG/plugin.json +22 -1
  9. package/locales/de-DE/chat.json +7 -0
  10. package/locales/de-DE/models.json +3 -4
  11. package/locales/de-DE/plugin.json +22 -1
  12. package/locales/en-US/chat.json +7 -0
  13. package/locales/en-US/models.json +5 -5
  14. package/locales/en-US/plugin.json +22 -1
  15. package/locales/es-ES/chat.json +7 -0
  16. package/locales/es-ES/models.json +3 -4
  17. package/locales/es-ES/plugin.json +22 -1
  18. package/locales/fa-IR/chat.json +7 -0
  19. package/locales/fa-IR/models.json +3 -4
  20. package/locales/fa-IR/plugin.json +22 -1
  21. package/locales/fr-FR/chat.json +7 -0
  22. package/locales/fr-FR/models.json +50 -3
  23. package/locales/fr-FR/plugin.json +22 -1
  24. package/locales/it-IT/chat.json +7 -0
  25. package/locales/it-IT/models.json +3 -3
  26. package/locales/it-IT/plugin.json +22 -1
  27. package/locales/ja-JP/chat.json +7 -0
  28. package/locales/ja-JP/models.json +43 -4
  29. package/locales/ja-JP/plugin.json +22 -1
  30. package/locales/ko-KR/chat.json +7 -0
  31. package/locales/ko-KR/models.json +3 -4
  32. package/locales/ko-KR/plugin.json +22 -1
  33. package/locales/nl-NL/chat.json +7 -0
  34. package/locales/nl-NL/models.json +51 -3
  35. package/locales/nl-NL/plugin.json +22 -1
  36. package/locales/pl-PL/chat.json +7 -0
  37. package/locales/pl-PL/models.json +3 -3
  38. package/locales/pl-PL/plugin.json +22 -1
  39. package/locales/pt-BR/chat.json +7 -0
  40. package/locales/pt-BR/models.json +3 -4
  41. package/locales/pt-BR/plugin.json +22 -1
  42. package/locales/ru-RU/chat.json +7 -0
  43. package/locales/ru-RU/models.json +3 -4
  44. package/locales/ru-RU/plugin.json +22 -1
  45. package/locales/tr-TR/chat.json +7 -0
  46. package/locales/tr-TR/models.json +3 -4
  47. package/locales/tr-TR/plugin.json +22 -1
  48. package/locales/vi-VN/chat.json +7 -0
  49. package/locales/vi-VN/models.json +3 -3
  50. package/locales/vi-VN/plugin.json +22 -1
  51. package/locales/zh-CN/chat.json +7 -0
  52. package/locales/zh-CN/models.json +54 -4
  53. package/locales/zh-CN/plugin.json +22 -1
  54. package/locales/zh-TW/chat.json +7 -0
  55. package/locales/zh-TW/models.json +43 -4
  56. package/locales/zh-TW/plugin.json +22 -1
  57. package/package.json +1 -1
  58. package/packages/builtin-tool-agent-builder/package.json +1 -0
  59. package/packages/builtin-tool-agent-builder/src/client/Inspector/GetAvailableModels/index.tsx +66 -0
  60. package/packages/builtin-tool-agent-builder/src/client/Inspector/InstallPlugin/index.tsx +63 -0
  61. package/packages/builtin-tool-agent-builder/src/client/Inspector/SearchMarketTools/index.tsx +64 -0
  62. package/packages/builtin-tool-agent-builder/src/client/Inspector/UpdateConfig/index.tsx +94 -0
  63. package/packages/builtin-tool-agent-builder/src/client/Inspector/UpdatePrompt/index.tsx +96 -0
  64. package/packages/builtin-tool-agent-builder/src/client/Inspector/index.ts +29 -0
  65. package/packages/builtin-tool-agent-builder/src/client/index.ts +13 -0
  66. package/packages/builtin-tool-agent-builder/src/executor.ts +132 -0
  67. package/packages/builtin-tool-cloud-sandbox/src/client/Inspector/ExecuteCode/index.tsx +5 -14
  68. package/packages/builtin-tool-cloud-sandbox/src/client/Inspector/RunCommand/index.tsx +5 -13
  69. package/packages/builtin-tool-group-agent-builder/package.json +7 -1
  70. package/packages/builtin-tool-group-agent-builder/src/ExecutionRuntime/index.ts +331 -87
  71. package/packages/builtin-tool-group-agent-builder/src/client/Inspector/BatchCreateAgents/index.tsx +110 -0
  72. package/packages/builtin-tool-group-agent-builder/src/client/Inspector/CreateAgent/index.tsx +72 -0
  73. package/packages/builtin-tool-group-agent-builder/src/client/Inspector/InviteAgent/index.tsx +57 -0
  74. package/packages/builtin-tool-group-agent-builder/src/client/Inspector/RemoveAgent/index.tsx +57 -0
  75. package/packages/builtin-tool-group-agent-builder/src/client/Inspector/SearchAgent/index.tsx +66 -0
  76. package/packages/builtin-tool-group-agent-builder/src/client/Inspector/UpdateAgentPrompt/index.tsx +120 -0
  77. package/packages/builtin-tool-group-agent-builder/src/client/Inspector/UpdateGroup/index.tsx +87 -0
  78. package/packages/builtin-tool-group-agent-builder/src/client/Inspector/UpdateGroupPrompt/index.tsx +99 -0
  79. package/packages/builtin-tool-group-agent-builder/src/client/Inspector/index.ts +52 -0
  80. package/packages/builtin-tool-group-agent-builder/src/client/Render/BatchCreateAgents.tsx +103 -0
  81. package/packages/builtin-tool-group-agent-builder/src/client/Render/UpdateAgentPrompt/index.tsx +36 -0
  82. package/packages/builtin-tool-group-agent-builder/src/client/Render/UpdateGroupPrompt/index.tsx +36 -0
  83. package/packages/builtin-tool-group-agent-builder/src/client/Render/index.ts +16 -0
  84. package/packages/builtin-tool-group-agent-builder/src/client/Streaming/BatchCreateAgents/index.tsx +88 -0
  85. package/packages/builtin-tool-group-agent-builder/src/client/Streaming/UpdateAgentPrompt/index.tsx +37 -0
  86. package/packages/builtin-tool-group-agent-builder/src/client/Streaming/UpdateGroupPrompt/index.tsx +35 -0
  87. package/packages/builtin-tool-group-agent-builder/src/client/Streaming/index.ts +22 -0
  88. package/packages/builtin-tool-group-agent-builder/src/client/index.ts +26 -0
  89. package/packages/builtin-tool-group-agent-builder/src/executor.ts +284 -0
  90. package/packages/builtin-tool-group-agent-builder/src/index.ts +1 -14
  91. package/packages/builtin-tool-group-agent-builder/src/manifest.ts +160 -15
  92. package/packages/builtin-tool-group-agent-builder/src/systemRole.ts +232 -46
  93. package/packages/builtin-tool-group-agent-builder/src/types.ts +191 -41
  94. package/packages/builtin-tool-group-management/src/client/Inspector/Broadcast/index.tsx +2 -2
  95. package/packages/builtin-tool-group-management/src/manifest.ts +1 -1
  96. package/packages/builtin-tool-gtd/src/client/Inspector/ClearTodos/index.tsx +5 -11
  97. package/packages/builtin-tool-gtd/src/client/Inspector/CompleteTodos/index.tsx +3 -9
  98. package/packages/builtin-tool-gtd/src/client/Inspector/CreatePlan/index.tsx +6 -15
  99. package/packages/builtin-tool-gtd/src/client/Inspector/CreateTodos/index.tsx +3 -9
  100. package/packages/builtin-tool-gtd/src/client/Inspector/ExecTask/index.tsx +6 -17
  101. package/packages/builtin-tool-gtd/src/client/Inspector/RemoveTodos/index.tsx +3 -9
  102. package/packages/builtin-tool-gtd/src/client/Inspector/UpdatePlan/index.tsx +3 -9
  103. package/packages/builtin-tool-gtd/src/client/Inspector/UpdateTodos/index.tsx +3 -9
  104. package/packages/builtin-tool-knowledge-base/src/client/Inspector/ReadKnowledge/index.tsx +4 -16
  105. package/packages/builtin-tool-knowledge-base/src/client/Inspector/SearchKnowledgeBase/index.tsx +5 -16
  106. package/packages/builtin-tool-local-system/src/client/Inspector/EditLocalFile/index.tsx +4 -12
  107. package/packages/builtin-tool-local-system/src/client/Inspector/GlobLocalFiles/index.tsx +5 -13
  108. package/packages/builtin-tool-local-system/src/client/Inspector/GrepContent/index.tsx +5 -16
  109. package/packages/builtin-tool-local-system/src/client/Inspector/ListLocalFiles/index.tsx +5 -16
  110. package/packages/builtin-tool-local-system/src/client/Inspector/ReadLocalFile/index.tsx +5 -16
  111. package/packages/builtin-tool-local-system/src/client/Inspector/RenameLocalFile/index.tsx +5 -11
  112. package/packages/builtin-tool-local-system/src/client/Inspector/RunCommand/index.tsx +5 -13
  113. package/packages/builtin-tool-local-system/src/client/Inspector/SearchLocalFiles/index.tsx +5 -16
  114. package/packages/builtin-tool-local-system/src/client/Inspector/WriteLocalFile/index.tsx +6 -15
  115. package/packages/builtin-tool-notebook/src/client/Inspector/CreateDocument/index.tsx +7 -15
  116. package/packages/builtin-tool-page-agent/src/client/Inspector/EditTitle/index.tsx +5 -14
  117. package/packages/builtin-tool-page-agent/src/client/Inspector/GetPageContent/index.tsx +7 -8
  118. package/packages/builtin-tool-page-agent/src/client/Inspector/InitPage/index.tsx +4 -10
  119. package/packages/builtin-tool-page-agent/src/client/Inspector/ModifyNodes/index.tsx +3 -9
  120. package/packages/builtin-tool-page-agent/src/client/Inspector/ReplaceText/index.tsx +5 -11
  121. package/packages/builtin-tool-web-browsing/src/client/Inspector/CrawlMultiPages/index.tsx +6 -15
  122. package/packages/builtin-tool-web-browsing/src/client/Inspector/CrawlSinglePage/index.tsx +6 -15
  123. package/packages/builtin-tool-web-browsing/src/client/Inspector/Search/index.tsx +4 -15
  124. package/packages/database/src/models/chatGroup.ts +1 -1
  125. package/packages/model-bank/src/aiModels/aihubmix.ts +2 -1
  126. package/packages/model-bank/src/aiModels/google.ts +2 -1
  127. package/packages/model-bank/src/aiModels/infiniai.ts +9 -6
  128. package/packages/model-bank/src/aiModels/minimax.ts +9 -5
  129. package/packages/model-bank/src/aiModels/ollamacloud.ts +4 -2
  130. package/packages/model-bank/src/aiModels/vertexai.ts +2 -1
  131. package/packages/types/src/agentGroup/index.ts +8 -0
  132. package/patches/@upstash__qstash.patch +13 -1
  133. package/src/app/[variants]/(main)/agent/_layout/Sidebar/Header/Nav.tsx +1 -1
  134. package/src/app/[variants]/(main)/agent/cron/[cronId]/index.tsx +4 -3
  135. package/src/app/[variants]/(main)/agent/profile/features/ProfileEditor/index.tsx +1 -1
  136. package/src/app/[variants]/(main)/agent/profile/features/store/action.ts +18 -21
  137. package/src/app/[variants]/(main)/group/_layout/GroupIdSync.tsx +6 -1
  138. package/src/app/[variants]/(main)/group/_layout/Sidebar/GroupConfig/AgentProfilePopup.tsx +29 -21
  139. package/src/app/[variants]/(main)/group/_layout/Sidebar/GroupConfig/GroupMember.tsx +1 -0
  140. package/src/app/[variants]/(main)/group/_layout/Sidebar/GroupConfig/GroupMemberItem.tsx +35 -18
  141. package/src/app/[variants]/(main)/group/_layout/Sidebar/Header/AddTopicButon.tsx +2 -10
  142. package/src/app/[variants]/(main)/group/_layout/Sidebar/Header/Nav.tsx +10 -2
  143. package/src/app/[variants]/(main)/group/_layout/Sidebar/Header/index.tsx +1 -2
  144. package/src/app/[variants]/(main)/group/profile/features/AgentBuilder/AgentBuilderProvider.tsx +1 -0
  145. package/src/app/[variants]/(main)/group/profile/features/AgentBuilder/TopicSelector.tsx +15 -9
  146. package/src/app/[variants]/(main)/group/profile/features/AgentBuilder/index.tsx +12 -6
  147. package/src/app/[variants]/(main)/group/profile/features/{ProfileEditor/AgentHeader.tsx → GroupProfile/GroupHeader.tsx} +22 -29
  148. package/src/app/[variants]/(main)/group/profile/features/GroupProfile/index.tsx +96 -0
  149. package/src/app/[variants]/(main)/group/profile/features/Header/AgentBuilderToggle.tsx +3 -4
  150. package/src/app/[variants]/(main)/group/profile/features/Header/AutoSaveHint.tsx +11 -7
  151. package/src/app/[variants]/(main)/group/profile/features/Header/ChromeTabs/index.tsx +147 -0
  152. package/src/app/[variants]/(main)/group/profile/features/Header/index.tsx +104 -13
  153. package/src/app/[variants]/(main)/group/profile/features/MemberProfile/AgentHeader.tsx +222 -0
  154. package/src/app/[variants]/(main)/group/profile/features/MemberProfile/index.tsx +155 -0
  155. package/src/app/[variants]/(main)/group/profile/features/ProfileHydration.tsx +63 -5
  156. package/src/app/[variants]/(main)/group/profile/index.tsx +34 -37
  157. package/src/app/[variants]/(mobile)/(home)/_layout/SessionHydration.tsx +1 -1
  158. package/src/app/[variants]/(mobile)/(home)/features/SessionListContent/List/Item/index.tsx +1 -1
  159. package/src/features/AgentBuilder/index.tsx +16 -1
  160. package/src/features/Conversation/Messages/AssistantGroup/Tool/Inspector/StatusIndicator.tsx +3 -2
  161. package/src/features/EditorCanvas/EditorCanvas.test.tsx +206 -0
  162. package/src/features/EditorCanvas/EditorDataMode.tsx +53 -19
  163. package/src/features/EditorModal/index.tsx +2 -2
  164. package/src/features/NavPanel/components/SessionHydration.tsx +1 -1
  165. package/src/features/ShareModal/ShareImage/ChatList/index.tsx +1 -1
  166. package/src/features/ShareModal/SharePdf/index.tsx +1 -1
  167. package/src/hooks/useBidirectionalQuerySync.ts +112 -0
  168. package/src/locales/default/chat.ts +10 -0
  169. package/src/locales/default/plugin.ts +22 -1
  170. package/src/server/modules/AgentRuntime/RuntimeExecutors.ts +45 -45
  171. package/src/server/modules/KeyVaultsEncrypt/index.ts +6 -6
  172. package/src/server/modules/S3/index.ts +1 -1
  173. package/src/server/routers/lambda/agent.ts +24 -0
  174. package/src/server/routers/lambda/agentGroup.ts +39 -0
  175. package/src/services/agent.ts +22 -0
  176. package/src/services/chatGroup/index.ts +14 -0
  177. package/src/store/agent/selectors/selectors.ts +3 -0
  178. package/src/store/agentGroup/initialState.ts +6 -0
  179. package/src/store/agentGroup/selectors/byId.ts +3 -1
  180. package/src/store/agentGroup/selectors/current.ts +2 -2
  181. package/src/store/agentGroup/slices/lifecycle.ts +18 -0
  182. package/src/store/chat/agents/__tests__/createAgentExecutors/fixtures/mockStore.ts +1 -1
  183. package/src/store/chat/slices/aiAgent/actions/__tests__/agentGroup.test.ts +4 -1
  184. package/src/store/chat/slices/aiAgent/actions/agentGroup.ts +1 -1
  185. package/src/store/chat/slices/aiChat/actions/__tests__/conversationLifecycle.test.ts +65 -0
  186. package/src/store/chat/slices/aiChat/actions/conversationLifecycle.ts +2 -1
  187. package/src/store/chat/slices/builtinTool/actions/__tests__/search.test.ts +1 -1
  188. package/src/store/chat/slices/builtinTool/actions/index.ts +1 -6
  189. package/src/store/chat/slices/message/action.test.ts +5 -5
  190. package/src/store/chat/slices/message/actions/publicApi.ts +5 -5
  191. package/src/store/chat/slices/message/initialState.ts +0 -5
  192. package/src/store/chat/slices/message/selectors/displayMessage.test.ts +4 -4
  193. package/src/store/chat/slices/plugin/action.test.ts +54 -19
  194. package/src/store/chat/slices/plugin/actions/pluginTypes.ts +15 -21
  195. package/src/store/chat/slices/topic/action.test.ts +74 -24
  196. package/src/store/chat/slices/topic/action.ts +21 -13
  197. package/src/store/chat/slices/topic/selectors.test.ts +1 -1
  198. package/src/store/global/initialState.ts +10 -0
  199. package/src/store/global/selectors/systemStatus.ts +5 -0
  200. package/src/store/groupProfile/action.ts +168 -0
  201. package/src/store/groupProfile/index.ts +16 -0
  202. package/src/{app/[variants]/(main)/group/profile/features/store → store/groupProfile}/initialState.ts +17 -0
  203. package/src/store/groupProfile/selectors.ts +13 -0
  204. package/src/store/tool/slices/builtin/executors/index.ts +4 -0
  205. package/src/styles/text.ts +16 -0
  206. package/src/tools/inspectors.ts +13 -0
  207. package/src/tools/renders.ts +3 -0
  208. package/src/tools/streamings.ts +8 -0
  209. package/src/app/[variants]/(main)/group/profile/features/EditorCanvas/TypoBar.tsx +0 -129
  210. package/src/app/[variants]/(main)/group/profile/features/EditorCanvas/index.tsx +0 -138
  211. package/src/app/[variants]/(main)/group/profile/features/EditorCanvas/useSlashItems.tsx +0 -139
  212. package/src/app/[variants]/(main)/group/profile/features/ProfileEditor/index.tsx +0 -82
  213. package/src/app/[variants]/(main)/group/profile/features/ProfileProvider.tsx +0 -20
  214. package/src/app/[variants]/(main)/group/profile/features/StoreUpdater.tsx +0 -24
  215. package/src/app/[variants]/(main)/group/profile/features/store/action.ts +0 -163
  216. package/src/app/[variants]/(main)/group/profile/features/store/index.ts +0 -23
  217. package/src/app/[variants]/(main)/group/profile/features/store/selectors.ts +0 -7
  218. package/src/features/EditorModal/EditorCanvas.tsx +0 -84
  219. package/src/features/EditorModal/Typobar.tsx +0 -139
  220. package/src/store/chat/slices/builtinTool/actions/agentBuilder.ts +0 -192
  221. package/src/store/chat/slices/builtinTool/actions/groupAgentBuilder.ts +0 -242
  222. package/src/tools/executionRuntimes.ts +0 -14
  223. /package/src/app/[variants]/(main)/group/profile/features/{ProfileEditor → MemberProfile}/AgentTool.tsx +0 -0
  224. /package/src/app/[variants]/(main)/group/profile/features/{ProfileEditor → MemberProfile}/MentionList/MentionDropdown.tsx +0 -0
  225. /package/src/app/[variants]/(main)/group/profile/features/{ProfileEditor → MemberProfile}/MentionList/index.tsx +0 -0
  226. /package/src/app/[variants]/(main)/group/profile/features/{ProfileEditor → MemberProfile}/MentionList/types.ts +0 -0
  227. /package/src/app/[variants]/(main)/group/profile/features/{ProfileEditor → MemberProfile}/MentionList/useMentionItems.tsx +0 -0
@@ -0,0 +1,36 @@
1
+ 'use client';
2
+
3
+ import type { BuiltinRenderProps } from '@lobechat/types';
4
+ import { Markdown } from '@lobehub/ui';
5
+ import { createStaticStyles } from 'antd-style';
6
+ import { memo } from 'react';
7
+
8
+ import type { UpdateGroupPromptParams, UpdateGroupPromptState } from '../../../types';
9
+
10
+ const styles = createStaticStyles(({ css, cssVar }) => ({
11
+ container: css`
12
+ padding: 12px;
13
+ border-radius: 8px;
14
+ background: ${cssVar.colorFillQuaternary};
15
+ `,
16
+ }));
17
+
18
+ export const UpdateGroupPromptRender = memo<
19
+ BuiltinRenderProps<UpdateGroupPromptParams, UpdateGroupPromptState>
20
+ >(({ pluginState }) => {
21
+ const prompt = pluginState?.newPrompt;
22
+
23
+ if (!prompt) return null;
24
+
25
+ return (
26
+ <div className={styles.container}>
27
+ <div>
28
+ <Markdown variant={'chat'}>{prompt}</Markdown>
29
+ </div>
30
+ </div>
31
+ );
32
+ });
33
+
34
+ UpdateGroupPromptRender.displayName = 'UpdateGroupPromptRender';
35
+
36
+ export default UpdateGroupPromptRender;
@@ -0,0 +1,16 @@
1
+ import { GroupAgentBuilderApiName } from '../../types';
2
+ import BatchCreateAgents from './BatchCreateAgents';
3
+ import UpdateAgentPrompt from './UpdateAgentPrompt';
4
+ import UpdateGroupPrompt from './UpdateGroupPrompt';
5
+
6
+ /**
7
+ * Group Agent Builder Render Components Registry
8
+ *
9
+ * Render components display the results of tool calls
10
+ * in a user-friendly format.
11
+ */
12
+ export const GroupAgentBuilderRenders = {
13
+ [GroupAgentBuilderApiName.batchCreateAgents]: BatchCreateAgents,
14
+ [GroupAgentBuilderApiName.updateAgentPrompt]: UpdateAgentPrompt,
15
+ [GroupAgentBuilderApiName.updateGroupPrompt]: UpdateGroupPrompt,
16
+ };
@@ -0,0 +1,88 @@
1
+ 'use client';
2
+
3
+ import type { BuiltinStreamingProps } from '@lobechat/types';
4
+ import { Avatar, Block, Flexbox, Markdown } from '@lobehub/ui';
5
+ import { createStaticStyles } from 'antd-style';
6
+ import { memo } from 'react';
7
+
8
+ import type { BatchCreateAgentsParams } from '../../../types';
9
+
10
+ const styles = createStaticStyles(({ css, cssVar }) => ({
11
+ description: css`
12
+ overflow: hidden;
13
+ display: -webkit-box;
14
+ -webkit-box-orient: vertical;
15
+ -webkit-line-clamp: 2;
16
+
17
+ font-size: 12px;
18
+ line-height: 1.5;
19
+ color: ${cssVar.colorTextDescription};
20
+ text-overflow: ellipsis;
21
+ `,
22
+ index: css`
23
+ flex-shrink: 0;
24
+ font-size: 12px;
25
+ color: ${cssVar.colorTextQuaternary};
26
+ `,
27
+ item: css`
28
+ padding-block: 10px;
29
+ padding-inline: 12px;
30
+
31
+ &:not(:last-child) {
32
+ border-block-end: 1px dashed ${cssVar.colorBorderSecondary};
33
+ }
34
+ `,
35
+ systemRole: css`
36
+ overflow: hidden;
37
+ display: -webkit-box;
38
+ -webkit-box-orient: vertical;
39
+ -webkit-line-clamp: 3;
40
+
41
+ font-size: 12px;
42
+ line-height: 1.5;
43
+ color: ${cssVar.colorTextTertiary};
44
+ text-overflow: ellipsis;
45
+ `,
46
+ title: css`
47
+ overflow: hidden;
48
+
49
+ font-size: 13px;
50
+ font-weight: 500;
51
+ text-overflow: ellipsis;
52
+ white-space: nowrap;
53
+ `,
54
+ }));
55
+
56
+ export const BatchCreateAgentsStreaming = memo<BuiltinStreamingProps<BatchCreateAgentsParams>>(
57
+ ({ args }) => {
58
+ const { agents } = args || {};
59
+
60
+ if (!agents || agents.length === 0) return null;
61
+
62
+ return (
63
+ <Block variant={'outlined'} width="100%">
64
+ {agents.map((agent, index) => (
65
+ <Flexbox className={styles.item} gap={8} horizontal key={index}>
66
+ <div className={styles.index}>{index + 1}.</div>
67
+ <Avatar avatar={agent.avatar} size={24} style={{ flexShrink: 0 }} title={agent.title} />
68
+ <Flexbox flex={1} gap={4} style={{ minWidth: 0, overflow: 'hidden' }}>
69
+ <span className={styles.title}>{agent.title}</span>
70
+ {agent.description && <span className={styles.description}>{agent.description}</span>}
71
+ {agent.systemRole && (
72
+ <div className={styles.systemRole}>
73
+ <Markdown animated variant={'chat'}>
74
+ {agent.systemRole}
75
+ </Markdown>
76
+ </div>
77
+ )}
78
+ </Flexbox>
79
+ </Flexbox>
80
+ ))}
81
+ </Block>
82
+ );
83
+ },
84
+ );
85
+
86
+ BatchCreateAgentsStreaming.displayName = 'BatchCreateAgentsStreaming';
87
+
88
+ export default BatchCreateAgentsStreaming;
@@ -0,0 +1,37 @@
1
+ 'use client';
2
+
3
+ import type { BuiltinStreamingProps } from '@lobechat/types';
4
+ import { Block, Markdown } from '@lobehub/ui';
5
+ import { memo, useEffect } from 'react';
6
+
7
+ import { useGroupProfileStore } from '@/store/groupProfile';
8
+
9
+ import type { UpdateAgentPromptParams } from '../../../types';
10
+
11
+ export const UpdateAgentPromptStreaming = memo<BuiltinStreamingProps<UpdateAgentPromptParams>>(
12
+ ({ args }) => {
13
+ const { agentId, prompt } = args || {};
14
+ const setActiveTabId = useGroupProfileStore((s) => s.setActiveTabId);
15
+
16
+ // Switch to agent tab when streaming agent prompt
17
+ useEffect(() => {
18
+ if (agentId) {
19
+ setActiveTabId(agentId);
20
+ }
21
+ }, [agentId, setActiveTabId]);
22
+
23
+ if (!prompt) return null;
24
+
25
+ return (
26
+ <Block padding={4} variant={'outlined'} width="100%">
27
+ <Markdown animated variant={'chat'}>
28
+ {prompt}
29
+ </Markdown>
30
+ </Block>
31
+ );
32
+ },
33
+ );
34
+
35
+ UpdateAgentPromptStreaming.displayName = 'UpdateAgentPromptStreaming';
36
+
37
+ export default UpdateAgentPromptStreaming;
@@ -0,0 +1,35 @@
1
+ 'use client';
2
+
3
+ import type { BuiltinStreamingProps } from '@lobechat/types';
4
+ import { Block, Markdown } from '@lobehub/ui';
5
+ import { memo, useEffect } from 'react';
6
+
7
+ import { useGroupProfileStore } from '@/store/groupProfile';
8
+
9
+ import type { UpdateGroupPromptParams } from '../../../types';
10
+
11
+ export const UpdateGroupPromptStreaming = memo<BuiltinStreamingProps<UpdateGroupPromptParams>>(
12
+ ({ args }) => {
13
+ const { prompt } = args || {};
14
+ const setActiveTabId = useGroupProfileStore((s) => s.setActiveTabId);
15
+
16
+ // Switch to group tab when streaming group prompt
17
+ useEffect(() => {
18
+ setActiveTabId('group');
19
+ }, []);
20
+
21
+ if (!prompt) return null;
22
+
23
+ return (
24
+ <Block padding={4} variant={'outlined'} width="100%">
25
+ <Markdown animated variant={'chat'}>
26
+ {prompt}
27
+ </Markdown>
28
+ </Block>
29
+ );
30
+ },
31
+ );
32
+
33
+ UpdateGroupPromptStreaming.displayName = 'UpdateGroupPromptStreaming';
34
+
35
+ export default UpdateGroupPromptStreaming;
@@ -0,0 +1,22 @@
1
+ import type { BuiltinStreaming } from '@lobechat/types';
2
+
3
+ import { GroupAgentBuilderApiName } from '../../types';
4
+ import { BatchCreateAgentsStreaming } from './BatchCreateAgents';
5
+ import { UpdateAgentPromptStreaming } from './UpdateAgentPrompt';
6
+ import { UpdateGroupPromptStreaming } from './UpdateGroupPrompt';
7
+
8
+ /**
9
+ * Group Agent Builder Streaming Components Registry
10
+ *
11
+ * Streaming components render tool calls while they are
12
+ * still executing, allowing real-time feedback to users.
13
+ */
14
+ export const GroupAgentBuilderStreamings: Record<string, BuiltinStreaming> = {
15
+ [GroupAgentBuilderApiName.batchCreateAgents]: BatchCreateAgentsStreaming as BuiltinStreaming,
16
+ [GroupAgentBuilderApiName.updateAgentPrompt]: UpdateAgentPromptStreaming as BuiltinStreaming,
17
+ [GroupAgentBuilderApiName.updateGroupPrompt]: UpdateGroupPromptStreaming as BuiltinStreaming,
18
+ };
19
+
20
+ export { BatchCreateAgentsStreaming } from './BatchCreateAgents';
21
+ export { UpdateAgentPromptStreaming } from './UpdateAgentPrompt';
22
+ export { UpdateGroupPromptStreaming } from './UpdateGroupPrompt';
@@ -0,0 +1,26 @@
1
+ // Inspector components (customized tool call headers)
2
+ export { GroupAgentBuilderInspectors } from './Inspector';
3
+ export {
4
+ BatchCreateAgentsInspector,
5
+ CreateAgentInspector,
6
+ InviteAgentInspector,
7
+ RemoveAgentInspector,
8
+ SearchAgentInspector,
9
+ UpdateAgentPromptInspector,
10
+ UpdateGroupInspector,
11
+ UpdateGroupPromptInspector,
12
+ } from './Inspector';
13
+
14
+ // Render components (read-only result display)
15
+ export { GroupAgentBuilderRenders } from './Render';
16
+
17
+ // Streaming components (real-time tool execution feedback)
18
+ export {
19
+ BatchCreateAgentsStreaming,
20
+ GroupAgentBuilderStreamings,
21
+ UpdateGroupPromptStreaming,
22
+ } from './Streaming';
23
+
24
+ // Re-export types and manifest for convenience
25
+ export { GroupAgentBuilderManifest } from '../manifest';
26
+ export * from '../types';
@@ -0,0 +1,284 @@
1
+ /**
2
+ * Group Agent Builder Executor
3
+ *
4
+ * Handles all group agent builder tool calls for configuring groups and their agents.
5
+ * Extends AgentBuilder functionality with group-specific operations.
6
+ */
7
+ import type {
8
+ GetAvailableModelsParams,
9
+ InstallPluginParams,
10
+ SearchMarketToolsParams,
11
+ } from '@lobechat/builtin-tool-agent-builder';
12
+ import { AgentBuilderExecutionRuntime } from '@lobechat/builtin-tool-agent-builder/executionRuntime';
13
+ import { BaseExecutor, type BuiltinToolContext, type BuiltinToolResult } from '@lobechat/types';
14
+
15
+ import { GroupAgentBuilderExecutionRuntime } from './ExecutionRuntime';
16
+ import {
17
+ type BatchCreateAgentsParams,
18
+ type CreateAgentParams,
19
+ GroupAgentBuilderApiName,
20
+ GroupAgentBuilderIdentifier,
21
+ type InviteAgentParams,
22
+ type RemoveAgentParams,
23
+ type SearchAgentParams,
24
+ type UpdateAgentConfigWithIdParams,
25
+ type UpdateAgentPromptParams,
26
+ type UpdateGroupParams,
27
+ type UpdateGroupPromptParams,
28
+ } from './types';
29
+
30
+ const agentBuilderRuntime = new AgentBuilderExecutionRuntime();
31
+ const groupAgentBuilderRuntime = new GroupAgentBuilderExecutionRuntime();
32
+
33
+ class GroupAgentBuilderExecutor extends BaseExecutor<typeof GroupAgentBuilderApiName> {
34
+ readonly identifier = GroupAgentBuilderIdentifier;
35
+ protected readonly apiEnum = GroupAgentBuilderApiName;
36
+
37
+ // ==================== Group Member Management ====================
38
+
39
+ searchAgent = async (params: SearchAgentParams): Promise<BuiltinToolResult> => {
40
+ const result = await groupAgentBuilderRuntime.searchAgent(params);
41
+ return {
42
+ content: result.content,
43
+ error: result.error
44
+ ? { body: result.error, message: String(result.error), type: 'RuntimeError' }
45
+ : undefined,
46
+ state: result.state,
47
+ success: result.success,
48
+ };
49
+ };
50
+
51
+ createAgent = async (
52
+ params: CreateAgentParams,
53
+ ctx: BuiltinToolContext,
54
+ ): Promise<BuiltinToolResult> => {
55
+ const groupId = ctx.groupId;
56
+
57
+ if (!groupId) {
58
+ return {
59
+ content: 'No active group found',
60
+ error: { message: 'No active group found', type: 'NoGroupContext' },
61
+ success: false,
62
+ };
63
+ }
64
+
65
+ const result = await groupAgentBuilderRuntime.createAgent(groupId, params);
66
+ return {
67
+ content: result.content,
68
+ error: result.error
69
+ ? { body: result.error, message: String(result.error), type: 'RuntimeError' }
70
+ : undefined,
71
+ state: result.state,
72
+ success: result.success,
73
+ };
74
+ };
75
+
76
+ batchCreateAgents = async (
77
+ params: BatchCreateAgentsParams,
78
+ ctx: BuiltinToolContext,
79
+ ): Promise<BuiltinToolResult> => {
80
+ const groupId = ctx.groupId;
81
+
82
+ if (!groupId) {
83
+ return {
84
+ content: 'No active group found',
85
+ error: { message: 'No active group found', type: 'NoGroupContext' },
86
+ success: false,
87
+ };
88
+ }
89
+
90
+ const result = await groupAgentBuilderRuntime.batchCreateAgents(groupId, params);
91
+ return {
92
+ content: result.content,
93
+ error: result.error
94
+ ? { body: result.error, message: String(result.error), type: 'RuntimeError' }
95
+ : undefined,
96
+ state: result.state,
97
+ success: result.success,
98
+ };
99
+ };
100
+
101
+ inviteAgent = async (
102
+ params: InviteAgentParams,
103
+ ctx: BuiltinToolContext,
104
+ ): Promise<BuiltinToolResult> => {
105
+ const groupId = ctx.groupId;
106
+
107
+ if (!groupId) {
108
+ return {
109
+ content: 'No active group found',
110
+ error: { message: 'No active group found', type: 'NoGroupContext' },
111
+ success: false,
112
+ };
113
+ }
114
+
115
+ const result = await groupAgentBuilderRuntime.inviteAgent(groupId, params);
116
+ return {
117
+ content: result.content,
118
+ error: result.error
119
+ ? { body: result.error, message: String(result.error), type: 'RuntimeError' }
120
+ : undefined,
121
+ state: result.state,
122
+ success: result.success,
123
+ };
124
+ };
125
+
126
+ removeAgent = async (
127
+ params: RemoveAgentParams,
128
+ ctx: BuiltinToolContext,
129
+ ): Promise<BuiltinToolResult> => {
130
+ const groupId = ctx.groupId;
131
+
132
+ if (!groupId) {
133
+ return {
134
+ content: 'No active group found',
135
+ error: { message: 'No active group found', type: 'NoGroupContext' },
136
+ success: false,
137
+ };
138
+ }
139
+
140
+ const result = await groupAgentBuilderRuntime.removeAgent(groupId, params);
141
+ return {
142
+ content: result.content,
143
+ error: result.error
144
+ ? { body: result.error, message: String(result.error), type: 'RuntimeError' }
145
+ : undefined,
146
+ state: result.state,
147
+ success: result.success,
148
+ };
149
+ };
150
+
151
+ // ==================== Group Configuration ====================
152
+
153
+ updateAgentPrompt = async (
154
+ params: UpdateAgentPromptParams,
155
+ ctx: BuiltinToolContext,
156
+ ): Promise<BuiltinToolResult> => {
157
+ const groupId = ctx.groupId;
158
+
159
+ if (!groupId) {
160
+ return {
161
+ content: 'No active group found',
162
+ error: { message: 'No active group found', type: 'NoGroupContext' },
163
+ success: false,
164
+ };
165
+ }
166
+
167
+ const result = await groupAgentBuilderRuntime.updateAgentPrompt(groupId, params);
168
+ return {
169
+ content: result.content,
170
+ error: result.error
171
+ ? { body: result.error, message: String(result.error), type: 'RuntimeError' }
172
+ : undefined,
173
+ state: result.state,
174
+ success: result.success,
175
+ };
176
+ };
177
+
178
+ updateGroup = async (params: UpdateGroupParams): Promise<BuiltinToolResult> => {
179
+ const result = await groupAgentBuilderRuntime.updateGroup(params);
180
+ return {
181
+ content: result.content,
182
+ error: result.error
183
+ ? { body: result.error, message: String(result.error), type: 'RuntimeError' }
184
+ : undefined,
185
+ state: result.state,
186
+ success: result.success,
187
+ };
188
+ };
189
+
190
+ updateGroupPrompt = async (params: UpdateGroupPromptParams): Promise<BuiltinToolResult> => {
191
+ const result = await groupAgentBuilderRuntime.updateGroupPrompt({
192
+ streaming: true,
193
+ ...params,
194
+ });
195
+ return {
196
+ content: result.content,
197
+ error: result.error
198
+ ? { body: result.error, message: String(result.error), type: 'RuntimeError' }
199
+ : undefined,
200
+ state: result.state,
201
+ success: result.success,
202
+ };
203
+ };
204
+
205
+ // ==================== Inherited Operations (for supervisor agent) ====================
206
+
207
+ getAvailableModels = async (params: GetAvailableModelsParams): Promise<BuiltinToolResult> => {
208
+ const result = await agentBuilderRuntime.getAvailableModels(params);
209
+ return {
210
+ content: result.content,
211
+ error: result.error
212
+ ? { body: result.error, message: String(result.error), type: 'RuntimeError' }
213
+ : undefined,
214
+ state: result.state,
215
+ success: result.success,
216
+ };
217
+ };
218
+
219
+ searchMarketTools = async (params: SearchMarketToolsParams): Promise<BuiltinToolResult> => {
220
+ const result = await agentBuilderRuntime.searchMarketTools(params);
221
+ return {
222
+ content: result.content,
223
+ error: result.error
224
+ ? { body: result.error, message: String(result.error), type: 'RuntimeError' }
225
+ : undefined,
226
+ state: result.state,
227
+ success: result.success,
228
+ };
229
+ };
230
+
231
+ updateConfig = async (
232
+ params: UpdateAgentConfigWithIdParams,
233
+ ctx: BuiltinToolContext,
234
+ ): Promise<BuiltinToolResult> => {
235
+ // Use provided agentId or fall back to supervisor agent from context
236
+ const { agentId: paramAgentId, ...restParams } = params;
237
+ const agentId = paramAgentId ?? ctx.agentId;
238
+
239
+ if (!agentId) {
240
+ return {
241
+ content: 'No agent found. Please provide an agentId or ensure supervisor context is available.',
242
+ error: { message: 'No agent found', type: 'NoAgentContext' },
243
+ success: false,
244
+ };
245
+ }
246
+
247
+ const result = await agentBuilderRuntime.updateAgentConfig(agentId, restParams);
248
+ return {
249
+ content: result.content,
250
+ error: result.error
251
+ ? { body: result.error, message: String(result.error), type: 'RuntimeError' }
252
+ : undefined,
253
+ state: result.state,
254
+ success: result.success,
255
+ };
256
+ };
257
+
258
+ installPlugin = async (
259
+ params: InstallPluginParams,
260
+ ctx: BuiltinToolContext,
261
+ ): Promise<BuiltinToolResult> => {
262
+ const agentId = ctx.agentId;
263
+
264
+ if (!agentId) {
265
+ return {
266
+ content: 'No supervisor agent found',
267
+ error: { message: 'No supervisor agent found', type: 'NoAgentContext' },
268
+ success: false,
269
+ };
270
+ }
271
+
272
+ const result = await agentBuilderRuntime.installPlugin(agentId, params);
273
+ return {
274
+ content: result.content,
275
+ error: result.error
276
+ ? { body: result.error, message: String(result.error), type: 'RuntimeError' }
277
+ : undefined,
278
+ state: result.state,
279
+ success: result.success,
280
+ };
281
+ };
282
+ }
283
+
284
+ export const groupAgentBuilderExecutor = new GroupAgentBuilderExecutor();
@@ -1,16 +1,3 @@
1
1
  export { GroupAgentBuilderManifest } from './manifest';
2
2
  export { systemPrompt } from './systemRole';
3
- export {
4
- GroupAgentBuilderApiName,
5
- type GroupAgentBuilderApiNameType,
6
- GroupAgentBuilderIdentifier,
7
- type InviteAgentParams,
8
- type InviteAgentState,
9
- type RemoveAgentParams,
10
- type RemoveAgentState,
11
- type UpdateGroupConfigParams,
12
- type UpdateGroupConfigState,
13
- type UpdateGroupMetaParams,
14
- type UpdateGroupPromptParams,
15
- type UpdateGroupPromptState,
16
- } from './types';
3
+ export * from './types';