@lobehub/lobehub 2.0.0-next.307 → 2.0.0-next.308
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.
- package/CHANGELOG.md +33 -0
- package/changelog/v1.json +12 -0
- package/locales/ar/agentGroup.json +5 -0
- package/locales/ar/chat.json +26 -0
- package/locales/ar/models.json +43 -5
- package/locales/ar/plugin.json +4 -5
- package/locales/ar/setting.json +11 -0
- package/locales/ar/subscription.json +2 -0
- package/locales/ar/tool.json +2 -0
- package/locales/bg-BG/agentGroup.json +5 -0
- package/locales/bg-BG/chat.json +26 -0
- package/locales/bg-BG/models.json +49 -3
- package/locales/bg-BG/plugin.json +4 -5
- package/locales/bg-BG/setting.json +11 -0
- package/locales/bg-BG/subscription.json +2 -0
- package/locales/bg-BG/tool.json +2 -0
- package/locales/de-DE/agentGroup.json +5 -0
- package/locales/de-DE/chat.json +26 -0
- package/locales/de-DE/models.json +48 -5
- package/locales/de-DE/plugin.json +4 -5
- package/locales/de-DE/setting.json +11 -0
- package/locales/de-DE/subscription.json +2 -0
- package/locales/de-DE/tool.json +2 -0
- package/locales/en-US/models.json +8 -6
- package/locales/en-US/plugin.json +2 -4
- package/locales/en-US/setting.json +10 -11
- package/locales/en-US/tool.json +2 -0
- package/locales/es-ES/agentGroup.json +5 -0
- package/locales/es-ES/chat.json +26 -0
- package/locales/es-ES/models.json +43 -5
- package/locales/es-ES/plugin.json +4 -5
- package/locales/es-ES/setting.json +11 -0
- package/locales/es-ES/subscription.json +2 -0
- package/locales/es-ES/tool.json +2 -0
- package/locales/fa-IR/agentGroup.json +5 -0
- package/locales/fa-IR/chat.json +26 -0
- package/locales/fa-IR/models.json +42 -5
- package/locales/fa-IR/plugin.json +4 -5
- package/locales/fa-IR/setting.json +11 -0
- package/locales/fa-IR/subscription.json +2 -0
- package/locales/fa-IR/tool.json +2 -0
- package/locales/fr-FR/agentGroup.json +5 -0
- package/locales/fr-FR/chat.json +26 -0
- package/locales/fr-FR/models.json +5 -5
- package/locales/fr-FR/plugin.json +4 -5
- package/locales/fr-FR/setting.json +11 -0
- package/locales/fr-FR/subscription.json +2 -0
- package/locales/fr-FR/tool.json +2 -0
- package/locales/it-IT/agentGroup.json +5 -0
- package/locales/it-IT/chat.json +26 -0
- package/locales/it-IT/models.json +1 -3
- package/locales/it-IT/plugin.json +4 -5
- package/locales/it-IT/setting.json +11 -0
- package/locales/it-IT/subscription.json +2 -0
- package/locales/it-IT/tool.json +2 -0
- package/locales/ja-JP/agentGroup.json +5 -0
- package/locales/ja-JP/chat.json +26 -0
- package/locales/ja-JP/models.json +1 -5
- package/locales/ja-JP/plugin.json +4 -5
- package/locales/ja-JP/setting.json +11 -0
- package/locales/ja-JP/subscription.json +2 -0
- package/locales/ja-JP/tool.json +2 -0
- package/locales/ko-KR/agentGroup.json +5 -0
- package/locales/ko-KR/chat.json +26 -0
- package/locales/ko-KR/models.json +1 -3
- package/locales/ko-KR/plugin.json +4 -5
- package/locales/ko-KR/setting.json +11 -0
- package/locales/ko-KR/subscription.json +2 -0
- package/locales/ko-KR/tool.json +2 -0
- package/locales/nl-NL/agentGroup.json +5 -0
- package/locales/nl-NL/chat.json +26 -0
- package/locales/nl-NL/models.json +35 -3
- package/locales/nl-NL/plugin.json +4 -5
- package/locales/nl-NL/setting.json +11 -0
- package/locales/nl-NL/subscription.json +2 -0
- package/locales/nl-NL/tool.json +2 -0
- package/locales/pl-PL/agentGroup.json +5 -0
- package/locales/pl-PL/chat.json +26 -0
- package/locales/pl-PL/models.json +1 -3
- package/locales/pl-PL/plugin.json +4 -5
- package/locales/pl-PL/setting.json +11 -0
- package/locales/pl-PL/subscription.json +2 -0
- package/locales/pl-PL/tool.json +2 -0
- package/locales/pt-BR/agentGroup.json +5 -0
- package/locales/pt-BR/chat.json +26 -0
- package/locales/pt-BR/models.json +50 -5
- package/locales/pt-BR/plugin.json +4 -5
- package/locales/pt-BR/setting.json +11 -0
- package/locales/pt-BR/subscription.json +2 -0
- package/locales/pt-BR/tool.json +2 -0
- package/locales/ru-RU/agentGroup.json +5 -0
- package/locales/ru-RU/chat.json +26 -0
- package/locales/ru-RU/models.json +22 -3
- package/locales/ru-RU/plugin.json +4 -5
- package/locales/ru-RU/setting.json +11 -0
- package/locales/ru-RU/subscription.json +2 -0
- package/locales/ru-RU/tool.json +2 -0
- package/locales/tr-TR/agentGroup.json +5 -0
- package/locales/tr-TR/chat.json +26 -0
- package/locales/tr-TR/models.json +36 -3
- package/locales/tr-TR/plugin.json +4 -5
- package/locales/tr-TR/setting.json +11 -0
- package/locales/tr-TR/subscription.json +2 -0
- package/locales/tr-TR/tool.json +2 -0
- package/locales/vi-VN/agentGroup.json +5 -0
- package/locales/vi-VN/chat.json +26 -0
- package/locales/vi-VN/models.json +1 -1
- package/locales/vi-VN/plugin.json +4 -5
- package/locales/vi-VN/setting.json +11 -0
- package/locales/vi-VN/subscription.json +2 -0
- package/locales/vi-VN/tool.json +2 -0
- package/locales/zh-CN/models.json +52 -5
- package/locales/zh-CN/plugin.json +5 -7
- package/locales/zh-CN/setting.json +10 -11
- package/locales/zh-CN/tool.json +2 -2
- package/locales/zh-TW/agentGroup.json +5 -0
- package/locales/zh-TW/chat.json +26 -0
- package/locales/zh-TW/models.json +54 -5
- package/locales/zh-TW/plugin.json +4 -5
- package/locales/zh-TW/setting.json +11 -0
- package/locales/zh-TW/subscription.json +2 -0
- package/locales/zh-TW/tool.json +2 -0
- package/package.json +1 -1
- package/packages/builtin-tool-group-management/src/client/Inspector/ExecuteAgentTask/index.tsx +52 -8
- package/packages/builtin-tool-group-management/src/client/Render/ExecuteTask/index.tsx +2 -21
- package/packages/builtin-tool-group-management/src/executor.test.ts +6 -4
- package/packages/builtin-tool-group-management/src/manifest.ts +5 -1
- package/packages/builtin-tool-group-management/src/types.ts +2 -0
- package/packages/builtin-tool-local-system/src/client/Render/WriteFile/index.tsx +48 -5
- package/packages/builtin-tool-local-system/src/client/Streaming/WriteFile/index.tsx +39 -0
- package/packages/builtin-tool-local-system/src/client/Streaming/index.ts +2 -0
- package/packages/model-bank/src/aiModels/qiniu.ts +24 -0
- package/src/app/[variants]/(auth)/_layout/index.tsx +0 -2
- package/src/app/[variants]/(auth)/layout.tsx +0 -2
- package/src/app/[variants]/(auth)/login/[[...login]]/page.tsx +1 -3
- package/src/app/[variants]/(auth)/signup/[[...signup]]/page.tsx +1 -3
- package/src/app/[variants]/(desktop)/desktop-onboarding/_layout/index.tsx +0 -2
- package/src/app/[variants]/(main)/_layout/index.tsx +0 -2
- package/src/app/[variants]/(main)/agent/_layout/index.tsx +0 -2
- package/src/app/[variants]/(main)/agent/features/Portal/index.tsx +0 -2
- package/src/app/[variants]/(main)/community/(list)/_layout/index.tsx +0 -2
- package/src/app/[variants]/(main)/community/(list)/assistant/_layout/index.tsx +0 -2
- package/src/app/[variants]/(main)/community/(list)/mcp/_layout/index.tsx +0 -2
- package/src/app/[variants]/(main)/community/(list)/model/_layout/index.tsx +0 -2
- package/src/app/[variants]/(main)/community/_layout/index.tsx +0 -2
- package/src/app/[variants]/(main)/group/_layout/index.tsx +0 -2
- package/src/app/[variants]/(main)/group/features/Conversation/Header/index.tsx +4 -2
- package/src/app/[variants]/(main)/group/features/Portal/index.tsx +0 -2
- package/src/app/[variants]/(main)/home/_layout/index.tsx +0 -2
- package/src/app/[variants]/(main)/home/index.tsx +0 -2
- package/src/app/[variants]/(main)/image/_layout/Topics/TopicUrlSync.tsx +0 -2
- package/src/app/[variants]/(main)/image/_layout/index.tsx +0 -2
- package/src/app/[variants]/(main)/memory/_layout/index.tsx +0 -2
- package/src/app/[variants]/(main)/page/_layout/index.tsx +0 -2
- package/src/app/[variants]/(main)/resource/(home)/_layout/index.tsx +0 -2
- package/src/app/[variants]/(main)/resource/_layout/index.tsx +0 -2
- package/src/app/[variants]/(main)/resource/library/_layout/index.tsx +0 -2
- package/src/app/[variants]/(main)/resource/library/features/Container.tsx +0 -2
- package/src/app/[variants]/(main)/settings/_layout/index.tsx +0 -2
- package/src/app/[variants]/(main)/settings/about/index.tsx +0 -2
- package/src/app/[variants]/(main)/settings/agent/index.tsx +0 -2
- package/src/app/[variants]/(main)/settings/apikey/index.tsx +0 -2
- package/src/app/[variants]/(main)/settings/chat-appearance/index.tsx +0 -2
- package/src/app/[variants]/(main)/settings/common/index.tsx +0 -2
- package/src/app/[variants]/(main)/settings/hotkey/index.tsx +0 -2
- package/src/app/[variants]/(main)/settings/image/index.tsx +0 -2
- package/src/app/[variants]/(main)/settings/memory/index.tsx +0 -2
- package/src/app/[variants]/(main)/settings/provider/(list)/index.tsx +0 -2
- package/src/app/[variants]/(main)/settings/proxy/index.tsx +0 -2
- package/src/app/[variants]/(main)/settings/security/index.tsx +1 -3
- package/src/app/[variants]/(main)/settings/storage/index.tsx +0 -2
- package/src/app/[variants]/(main)/settings/tts/index.tsx +0 -2
- package/src/app/[variants]/(mobile)/(home)/_layout/index.tsx +0 -2
- package/src/app/[variants]/(mobile)/_layout/index.tsx +1 -3
- package/src/app/[variants]/(mobile)/chat/_layout/index.tsx +0 -2
- package/src/app/[variants]/(mobile)/chat/settings/_layout/index.tsx +0 -2
- package/src/app/[variants]/(mobile)/community/(detail)/_layout/index.tsx +0 -2
- package/src/app/[variants]/(mobile)/community/(list)/_layout/index.tsx +0 -2
- package/src/app/[variants]/(mobile)/community/_layout/index.tsx +0 -2
- package/src/app/[variants]/(mobile)/router/MobileClientRouter.tsx +0 -2
- package/src/app/[variants]/(mobile)/settings/index.tsx +0 -2
- package/src/app/[variants]/onboarding/_layout/index.tsx +0 -2
- package/src/app/[variants]/router/DesktopClientRouter.tsx +0 -2
- package/src/components/ModelSelect/index.tsx +6 -56
- package/src/components/server/MobileNavLayout.tsx +0 -2
- package/src/components/server/ServerLayout.tsx +0 -2
- package/src/features/ModelSwitchPanel/components/Footer.tsx +0 -2
- package/src/features/ModelSwitchPanel/components/List/MultipleProvidersModelItem.tsx +0 -1
- package/src/features/ModelSwitchPanel/components/List/SingleProviderModelItem.tsx +0 -1
- package/src/features/ModelSwitchPanel/components/List/VirtualItemRenderer.tsx +0 -1
- package/src/features/ModelSwitchPanel/components/List/index.tsx +15 -13
- package/src/features/ModelSwitchPanel/components/PanelContent.tsx +0 -2
- package/src/features/ModelSwitchPanel/index.tsx +21 -23
- package/src/features/ResourceManager/components/Explorer/MasonryView/index.tsx +0 -2
- package/src/features/User/UserAvatar.tsx +0 -2
- package/src/locales/default/plugin.ts +2 -1
- package/src/store/chat/agents/GroupOrchestration/__tests__/call-supervisor.test.ts +305 -0
- package/src/store/chat/agents/GroupOrchestration/createGroupOrchestrationExecutors.ts +2 -1
- package/src/store/chat/slices/plugin/actions/exector.ts +92 -0
- package/src/store/chat/slices/plugin/actions/pluginTypes.ts +82 -177
|
@@ -173,8 +173,11 @@
|
|
|
173
173
|
"llm.waitingForMoreLinkAriaLabel": "開啟模型服務商接入需求表單",
|
|
174
174
|
"marketPublish.forkConfirm.by": "由 {{author}}",
|
|
175
175
|
"marketPublish.forkConfirm.confirm": "確認發佈",
|
|
176
|
+
"marketPublish.forkConfirm.confirmGroup": "確認發佈",
|
|
176
177
|
"marketPublish.forkConfirm.description": "您即將發佈一個基於社群中現有代理所衍生的版本。您的新代理將作為獨立項目發佈至市集。",
|
|
178
|
+
"marketPublish.forkConfirm.descriptionGroup": "您即將根據社群中現有的群組發佈一個衍生版本。您的新群組將作為獨立項目發佈至市集。",
|
|
177
179
|
"marketPublish.forkConfirm.title": "發佈衍生代理",
|
|
180
|
+
"marketPublish.forkConfirm.titleGroup": "發佈衍生群組",
|
|
178
181
|
"marketPublish.modal.changelog.extra": "描述此版本的主要變更與改進",
|
|
179
182
|
"marketPublish.modal.changelog.label": "變更日誌",
|
|
180
183
|
"marketPublish.modal.changelog.maxLengthError": "變更日誌不能超過 500 個字元",
|
|
@@ -190,22 +193,28 @@
|
|
|
190
193
|
"marketPublish.modal.identifier.required": "請輸入助手識別碼",
|
|
191
194
|
"marketPublish.modal.loading.fetchingRemote": "正在載入遠端資料...",
|
|
192
195
|
"marketPublish.modal.loading.submit": "正在發布助手...",
|
|
196
|
+
"marketPublish.modal.loading.submitGroup": "正在提交群組...",
|
|
193
197
|
"marketPublish.modal.loading.upload": "正在發布新版本...",
|
|
198
|
+
"marketPublish.modal.loading.uploadGroup": "正在發佈新群組版本...",
|
|
194
199
|
"marketPublish.modal.messages.createVersionFailed": "版本建立失敗:{{message}}",
|
|
195
200
|
"marketPublish.modal.messages.fetchRemoteFailed": "取得遠端助手資料失敗",
|
|
196
201
|
"marketPublish.modal.messages.missingIdentifier": "目前的助手尚未設定社群識別碼",
|
|
202
|
+
"marketPublish.modal.messages.noGroup": "未選擇任何群組",
|
|
197
203
|
"marketPublish.modal.messages.notAuthenticated": "請先登入社群帳號",
|
|
198
204
|
"marketPublish.modal.messages.publishFailed": "發布失敗:{{message}}",
|
|
199
205
|
"marketPublish.modal.submitButton": "發布",
|
|
200
206
|
"marketPublish.modal.title.submit": "分享到助手社群",
|
|
201
207
|
"marketPublish.modal.title.upload": "發布新版本",
|
|
202
208
|
"marketPublish.resultModal.message": "您創作的助手已提交審核,通過後將自動上線。",
|
|
209
|
+
"marketPublish.resultModal.messageGroup": "您的群組已提交審核,審核通過後將自動上線。",
|
|
203
210
|
"marketPublish.resultModal.title": "提交成功",
|
|
204
211
|
"marketPublish.resultModal.view": "前往社群查看",
|
|
205
212
|
"marketPublish.submit.button": "分享到社群",
|
|
206
213
|
"marketPublish.submit.tooltip": "分享助手到社群",
|
|
214
|
+
"marketPublish.submitGroup.tooltip": "分享此群組至社群",
|
|
207
215
|
"marketPublish.upload.button": "發布新版本",
|
|
208
216
|
"marketPublish.upload.tooltip": "發佈新版本到助手社群",
|
|
217
|
+
"marketPublish.uploadGroup.tooltip": "發佈新版本至群組社群",
|
|
209
218
|
"memory.enabled.desc": "允許 LobeHub 從對話中提取偏好與資訊,並於日後使用。您可隨時檢視、編輯或清除記憶內容。",
|
|
210
219
|
"memory.enabled.title": "啟用記憶功能",
|
|
211
220
|
"memory.title": "記憶設定",
|
|
@@ -254,6 +263,7 @@
|
|
|
254
263
|
"plugin.settings.title": "{{id}} 外掛設定",
|
|
255
264
|
"plugin.settings.tooltip": "外掛設定",
|
|
256
265
|
"plugin.store": "外掛商店",
|
|
266
|
+
"publishToCommunity": "發佈至社群",
|
|
257
267
|
"settingAgent.avatar.sizeExceeded": "圖片大小超過 1MB 限制,請選擇較小的圖片",
|
|
258
268
|
"settingAgent.avatar.title": "頭像",
|
|
259
269
|
"settingAgent.backgroundColor.title": "背景色",
|
|
@@ -483,6 +493,7 @@
|
|
|
483
493
|
"submitAgentModal.placeholder": "請輸入助手的標識符,需要是唯一的,比如 web-development",
|
|
484
494
|
"submitAgentModal.success": "助手提交成功",
|
|
485
495
|
"submitAgentModal.tooltips": "分享到助手社群",
|
|
496
|
+
"submitGroupModal.tooltips": "分享至群組社群",
|
|
486
497
|
"sync.device.deviceName.hint": "添加名稱以便於識別",
|
|
487
498
|
"sync.device.deviceName.placeholder": "請輸入裝置名稱",
|
|
488
499
|
"sync.device.deviceName.title": "裝置名稱",
|
|
@@ -54,6 +54,8 @@
|
|
|
54
54
|
"funds.packages.expiresIn": "{{days}} 天後過期",
|
|
55
55
|
"funds.packages.expiresToday": "今日過期",
|
|
56
56
|
"funds.packages.expiringSoon": "即將過期",
|
|
57
|
+
"funds.packages.gift": "禮物",
|
|
58
|
+
"funds.packages.giftedOn": "於 {{date}} 贈送",
|
|
57
59
|
"funds.packages.noPackages": "尚無點數方案",
|
|
58
60
|
"funds.packages.purchaseFirst": "購買您的第一個點數方案",
|
|
59
61
|
"funds.packages.purchasedOn": "購買於 {{date}}",
|
package/locales/zh-TW/tool.json
CHANGED
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
"agentGroupManagement.executeTask.thread": "Thread ID",
|
|
16
16
|
"agentGroupManagement.executeTask.timeout": "執行逾時",
|
|
17
17
|
"agentGroupManagement.executeTask.tokens": "Token 消耗",
|
|
18
|
+
"agentGroupManagement.executeTasks.intervention.instructionPlaceholder": "請輸入代理執行此任務的詳細指示……",
|
|
19
|
+
"agentGroupManagement.executeTasks.intervention.titlePlaceholder": "任務標題……",
|
|
18
20
|
"codeInterpreter-legacy.error": "執行錯誤",
|
|
19
21
|
"codeInterpreter-legacy.executing": "執行中...",
|
|
20
22
|
"codeInterpreter-legacy.files": "檔案:",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lobehub/lobehub",
|
|
3
|
-
"version": "2.0.0-next.
|
|
3
|
+
"version": "2.0.0-next.308",
|
|
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",
|
package/packages/builtin-tool-group-management/src/client/Inspector/ExecuteAgentTask/index.tsx
CHANGED
|
@@ -32,6 +32,7 @@ export const ExecuteAgentTaskInspector = memo<BuiltinInspectorProps<ExecuteTaskP
|
|
|
32
32
|
const { t } = useTranslation('plugin');
|
|
33
33
|
|
|
34
34
|
const agentId = args?.agentId || partialArgs?.agentId;
|
|
35
|
+
const taskTitle = args?.title || partialArgs?.title;
|
|
35
36
|
|
|
36
37
|
// Get active group ID and agent from store
|
|
37
38
|
const activeGroupId = useAgentGroupStore(agentGroupSelectors.activeGroupId);
|
|
@@ -42,12 +43,47 @@ export const ExecuteAgentTaskInspector = memo<BuiltinInspectorProps<ExecuteTaskP
|
|
|
42
43
|
);
|
|
43
44
|
const theme = useTheme();
|
|
44
45
|
|
|
45
|
-
if (isArgumentsStreaming
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
<
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
if (isArgumentsStreaming) {
|
|
47
|
+
if (!agent && !taskTitle)
|
|
48
|
+
return (
|
|
49
|
+
<div className={cx(styles.root, shinyTextStyles.shinyText)}>
|
|
50
|
+
<span>{t('builtins.lobe-group-management.apiName.executeAgentTask')}</span>
|
|
51
|
+
</div>
|
|
52
|
+
);
|
|
53
|
+
if (agent) {
|
|
54
|
+
return (
|
|
55
|
+
<Flexbox
|
|
56
|
+
align={'center'}
|
|
57
|
+
className={cx(styles.root, isArgumentsStreaming && shinyTextStyles.shinyText)}
|
|
58
|
+
gap={8}
|
|
59
|
+
horizontal
|
|
60
|
+
>
|
|
61
|
+
<span className={styles.title}>
|
|
62
|
+
{t('builtins.lobe-group-management.inspector.executeAgentTask.assignTo')}
|
|
63
|
+
</span>
|
|
64
|
+
{agent && (
|
|
65
|
+
<>
|
|
66
|
+
<Avatar
|
|
67
|
+
avatar={agent.avatar || DEFAULT_AVATAR}
|
|
68
|
+
background={agent.backgroundColor || theme.colorBgContainer}
|
|
69
|
+
shape={'square'}
|
|
70
|
+
size={24}
|
|
71
|
+
title={agent.title || undefined}
|
|
72
|
+
/>
|
|
73
|
+
<span>{agent?.title}</span>
|
|
74
|
+
</>
|
|
75
|
+
)}
|
|
76
|
+
{taskTitle && (
|
|
77
|
+
<>
|
|
78
|
+
<span className={styles.title}>
|
|
79
|
+
{t('builtins.lobe-group-management.inspector.executeAgentTask.task')}
|
|
80
|
+
</span>
|
|
81
|
+
<span className={highlightTextStyles.primary}>{taskTitle}</span>
|
|
82
|
+
</>
|
|
83
|
+
)}
|
|
84
|
+
</Flexbox>
|
|
85
|
+
);
|
|
86
|
+
}
|
|
51
87
|
}
|
|
52
88
|
|
|
53
89
|
const agentName = agent?.title || agentId;
|
|
@@ -60,7 +96,7 @@ export const ExecuteAgentTaskInspector = memo<BuiltinInspectorProps<ExecuteTaskP
|
|
|
60
96
|
horizontal
|
|
61
97
|
>
|
|
62
98
|
<span className={styles.title}>
|
|
63
|
-
{t('builtins.lobe-group-management.inspector.executeAgentTask.
|
|
99
|
+
{t('builtins.lobe-group-management.inspector.executeAgentTask.assignTo')}
|
|
64
100
|
</span>
|
|
65
101
|
{agent && (
|
|
66
102
|
<Avatar
|
|
@@ -71,7 +107,15 @@ export const ExecuteAgentTaskInspector = memo<BuiltinInspectorProps<ExecuteTaskP
|
|
|
71
107
|
title={agent.title || undefined}
|
|
72
108
|
/>
|
|
73
109
|
)}
|
|
74
|
-
{agentName && <span
|
|
110
|
+
{agentName && <span>{agentName}</span>}
|
|
111
|
+
{taskTitle && (
|
|
112
|
+
<>
|
|
113
|
+
<span className={styles.title}>
|
|
114
|
+
{t('builtins.lobe-group-management.inspector.executeAgentTask.task')}
|
|
115
|
+
</span>
|
|
116
|
+
<span className={highlightTextStyles.primary}>{taskTitle}</span>
|
|
117
|
+
</>
|
|
118
|
+
)}
|
|
75
119
|
</Flexbox>
|
|
76
120
|
);
|
|
77
121
|
},
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { BuiltinRenderProps } from '@lobechat/types';
|
|
4
|
-
import {
|
|
4
|
+
import { Flexbox, Text } from '@lobehub/ui';
|
|
5
5
|
import { createStaticStyles } from 'antd-style';
|
|
6
6
|
import { Clock } from 'lucide-react';
|
|
7
7
|
import { memo } from 'react';
|
|
8
8
|
import { useTranslation } from 'react-i18next';
|
|
9
9
|
|
|
10
|
-
import { useAgentGroupStore } from '@/store/agentGroup';
|
|
11
|
-
import { agentGroupSelectors } from '@/store/agentGroup/selectors';
|
|
12
|
-
|
|
13
10
|
import type { ExecuteTaskParams, ExecuteTaskState } from '../../../types';
|
|
14
11
|
|
|
15
12
|
const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
@@ -40,14 +37,6 @@ const ExecuteTaskRender = memo<BuiltinRenderProps<ExecuteTaskParams, ExecuteTask
|
|
|
40
37
|
({ args }) => {
|
|
41
38
|
const { t } = useTranslation('tool');
|
|
42
39
|
|
|
43
|
-
// Get agent info from store
|
|
44
|
-
const activeGroupId = useAgentGroupStore(agentGroupSelectors.activeGroupId);
|
|
45
|
-
const agent = useAgentGroupStore((s) =>
|
|
46
|
-
args?.agentId && activeGroupId
|
|
47
|
-
? agentGroupSelectors.getAgentByIdFromGroup(activeGroupId, args.agentId)(s)
|
|
48
|
-
: undefined,
|
|
49
|
-
);
|
|
50
|
-
|
|
51
40
|
const timeoutMinutes = args?.timeout ? Math.round(args.timeout / 60_000) : 30;
|
|
52
41
|
|
|
53
42
|
return (
|
|
@@ -55,15 +44,7 @@ const ExecuteTaskRender = memo<BuiltinRenderProps<ExecuteTaskParams, ExecuteTask
|
|
|
55
44
|
{/* Header: Agent info + Timeout */}
|
|
56
45
|
<Flexbox align={'center'} gap={12} horizontal justify={'space-between'}>
|
|
57
46
|
<Flexbox align={'center'} flex={1} gap={12} horizontal style={{ minWidth: 0 }}>
|
|
58
|
-
<
|
|
59
|
-
avatar={agent?.avatar || '🤖'}
|
|
60
|
-
background={agent?.backgroundColor || undefined}
|
|
61
|
-
size={24}
|
|
62
|
-
style={{ borderRadius: 8, flexShrink: 0 }}
|
|
63
|
-
/>
|
|
64
|
-
<span className={styles.agentTitle}>
|
|
65
|
-
{agent?.title || t('agentGroupManagement.executeTask.intervention.unknownAgent')}
|
|
66
|
-
</span>
|
|
47
|
+
<span className={styles.agentTitle}>{args?.title}</span>
|
|
67
48
|
</Flexbox>
|
|
68
49
|
<Flexbox align="center" className={styles.timeout} gap={4} horizontal>
|
|
69
50
|
<Clock size={14} />
|
|
@@ -280,7 +280,7 @@ describe('GroupManagementExecutor', () => {
|
|
|
280
280
|
const ctx = createMockContext();
|
|
281
281
|
|
|
282
282
|
const result = await groupManagementExecutor.executeAgentTask(
|
|
283
|
-
{ agentId: 'agent-1', task: 'Do something' },
|
|
283
|
+
{ agentId: 'agent-1', task: 'Do something', title: 'Test Task' },
|
|
284
284
|
ctx,
|
|
285
285
|
);
|
|
286
286
|
|
|
@@ -291,6 +291,7 @@ describe('GroupManagementExecutor', () => {
|
|
|
291
291
|
agentId: 'agent-1',
|
|
292
292
|
task: 'Do something',
|
|
293
293
|
timeout: undefined,
|
|
294
|
+
title: 'Test Task',
|
|
294
295
|
type: 'executeAgentTask',
|
|
295
296
|
});
|
|
296
297
|
});
|
|
@@ -314,7 +315,7 @@ describe('GroupManagementExecutor', () => {
|
|
|
314
315
|
);
|
|
315
316
|
|
|
316
317
|
await groupManagementExecutor.executeAgentTask(
|
|
317
|
-
{ agentId: 'agent-1', task: 'Do something', timeout: 30000 },
|
|
318
|
+
{ agentId: 'agent-1', task: 'Do something', timeout: 30000, title: 'Test Task' },
|
|
318
319
|
ctx,
|
|
319
320
|
);
|
|
320
321
|
|
|
@@ -339,7 +340,7 @@ describe('GroupManagementExecutor', () => {
|
|
|
339
340
|
const ctx = createMockContext();
|
|
340
341
|
|
|
341
342
|
const result = await groupManagementExecutor.executeAgentTask(
|
|
342
|
-
{ agentId: 'agent-1', task: 'Do something' },
|
|
343
|
+
{ agentId: 'agent-1', task: 'Do something', title: 'Test Task' },
|
|
343
344
|
ctx,
|
|
344
345
|
);
|
|
345
346
|
|
|
@@ -351,7 +352,7 @@ describe('GroupManagementExecutor', () => {
|
|
|
351
352
|
const ctx = createMockContext();
|
|
352
353
|
|
|
353
354
|
const result = await groupManagementExecutor.executeAgentTask(
|
|
354
|
-
{ agentId: 'agent-1', task: 'Do something', timeout: 60000 },
|
|
355
|
+
{ agentId: 'agent-1', task: 'Do something', timeout: 60000, title: 'Test Task' },
|
|
355
356
|
ctx,
|
|
356
357
|
);
|
|
357
358
|
|
|
@@ -360,6 +361,7 @@ describe('GroupManagementExecutor', () => {
|
|
|
360
361
|
agentId: 'agent-1',
|
|
361
362
|
task: 'Do something',
|
|
362
363
|
timeout: 60000,
|
|
364
|
+
title: 'Test Task',
|
|
363
365
|
type: 'executeAgentTask',
|
|
364
366
|
});
|
|
365
367
|
});
|
|
@@ -95,6 +95,10 @@ export const GroupManagementManifest: BuiltinToolManifest = {
|
|
|
95
95
|
description: 'The ID of the agent to execute the task.',
|
|
96
96
|
type: 'string',
|
|
97
97
|
},
|
|
98
|
+
title: {
|
|
99
|
+
description: 'Brief title describing what this task does (shown in UI).',
|
|
100
|
+
type: 'string',
|
|
101
|
+
},
|
|
98
102
|
task: {
|
|
99
103
|
description:
|
|
100
104
|
'Clear description of the task to perform. Be specific about expected deliverables.',
|
|
@@ -113,7 +117,7 @@ export const GroupManagementManifest: BuiltinToolManifest = {
|
|
|
113
117
|
type: 'boolean',
|
|
114
118
|
},
|
|
115
119
|
},
|
|
116
|
-
required: ['agentId', 'task'],
|
|
120
|
+
required: ['agentId', 'title', 'task'],
|
|
117
121
|
type: 'object',
|
|
118
122
|
},
|
|
119
123
|
},
|
|
@@ -1,22 +1,65 @@
|
|
|
1
1
|
import { type WriteLocalFileParams } from '@lobechat/electron-client-ipc';
|
|
2
2
|
import { type BuiltinRenderProps } from '@lobechat/types';
|
|
3
|
-
import { Flexbox, Icon, Skeleton } from '@lobehub/ui';
|
|
3
|
+
import { Flexbox, Highlighter, Icon, Markdown, Skeleton } from '@lobehub/ui';
|
|
4
|
+
import { createStaticStyles } from 'antd-style';
|
|
4
5
|
import { ChevronRight } from 'lucide-react';
|
|
5
6
|
import path from 'path-browserify-esm';
|
|
6
7
|
import { memo } from 'react';
|
|
7
8
|
|
|
8
9
|
import { LocalFile, LocalFolder } from '@/features/LocalFile';
|
|
9
10
|
|
|
11
|
+
const styles = createStaticStyles(({ css, cssVar }) => ({
|
|
12
|
+
container: css`
|
|
13
|
+
padding: 8px;
|
|
14
|
+
border-radius: ${cssVar.borderRadiusLG};
|
|
15
|
+
background: ${cssVar.colorFillQuaternary};
|
|
16
|
+
`,
|
|
17
|
+
previewBox: css`
|
|
18
|
+
overflow: hidden;
|
|
19
|
+
border-radius: 8px;
|
|
20
|
+
background: ${cssVar.colorBgContainer};
|
|
21
|
+
`,
|
|
22
|
+
}));
|
|
23
|
+
|
|
10
24
|
const WriteFile = memo<BuiltinRenderProps<WriteLocalFileParams>>(({ args }) => {
|
|
11
25
|
if (!args) return <Skeleton active />;
|
|
12
26
|
|
|
13
27
|
const { base, dir } = path.parse(args.path);
|
|
28
|
+
const ext = path.extname(args.path).slice(1).toLowerCase();
|
|
29
|
+
|
|
30
|
+
const renderContent = () => {
|
|
31
|
+
if (!args.content) return null;
|
|
32
|
+
|
|
33
|
+
if (ext === 'md' || ext === 'mdx') {
|
|
34
|
+
return (
|
|
35
|
+
<Markdown style={{ maxHeight: 240, overflow: 'auto', padding: '0 8px' }}>
|
|
36
|
+
{args.content}
|
|
37
|
+
</Markdown>
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return (
|
|
42
|
+
<Highlighter
|
|
43
|
+
language={ext || 'text'}
|
|
44
|
+
showLanguage={false}
|
|
45
|
+
style={{ maxHeight: 240, overflow: 'auto' }}
|
|
46
|
+
variant={'borderless'}
|
|
47
|
+
wrap
|
|
48
|
+
>
|
|
49
|
+
{args.content}
|
|
50
|
+
</Highlighter>
|
|
51
|
+
);
|
|
52
|
+
};
|
|
14
53
|
|
|
15
54
|
return (
|
|
16
|
-
<Flexbox
|
|
17
|
-
<
|
|
18
|
-
|
|
19
|
-
|
|
55
|
+
<Flexbox className={styles.container} gap={12}>
|
|
56
|
+
<Flexbox align={'center'} horizontal>
|
|
57
|
+
<LocalFolder path={dir} />
|
|
58
|
+
<Icon icon={ChevronRight} />
|
|
59
|
+
<LocalFile name={base} path={args.path} />
|
|
60
|
+
</Flexbox>
|
|
61
|
+
|
|
62
|
+
{args.content && <Flexbox className={styles.previewBox}>{renderContent()}</Flexbox>}
|
|
20
63
|
</Flexbox>
|
|
21
64
|
);
|
|
22
65
|
});
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { type WriteLocalFileParams } from '@lobechat/electron-client-ipc';
|
|
4
|
+
import { type BuiltinStreamingProps } from '@lobechat/types';
|
|
5
|
+
import { Highlighter, Markdown } from '@lobehub/ui';
|
|
6
|
+
import path from 'path-browserify-esm';
|
|
7
|
+
import { memo } from 'react';
|
|
8
|
+
|
|
9
|
+
export const WriteFileStreaming = memo<BuiltinStreamingProps<WriteLocalFileParams>>(({ args }) => {
|
|
10
|
+
const { content, path: filePath } = args || {};
|
|
11
|
+
|
|
12
|
+
// Don't render if no content yet
|
|
13
|
+
if (!content) return null;
|
|
14
|
+
|
|
15
|
+
const ext = path
|
|
16
|
+
.extname(filePath || '')
|
|
17
|
+
.slice(1)
|
|
18
|
+
.toLowerCase();
|
|
19
|
+
|
|
20
|
+
// Use Markdown for .md files, Highlighter for others
|
|
21
|
+
if (ext === 'md' || ext === 'mdx') {
|
|
22
|
+
return <Markdown style={{ overflow: 'auto' }}>{content}</Markdown>;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return (
|
|
26
|
+
<Highlighter
|
|
27
|
+
animated
|
|
28
|
+
language={ext || 'text'}
|
|
29
|
+
showLanguage={false}
|
|
30
|
+
style={{ padding: '4px 8px' }}
|
|
31
|
+
variant={'outlined'}
|
|
32
|
+
wrap
|
|
33
|
+
>
|
|
34
|
+
{content}
|
|
35
|
+
</Highlighter>
|
|
36
|
+
);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
WriteFileStreaming.displayName = 'WriteFileStreaming';
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { LocalSystemApiName } from '../..';
|
|
2
2
|
import { RunCommandStreaming } from './RunCommand';
|
|
3
|
+
import { WriteFileStreaming } from './WriteFile';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Local System Streaming Components Registry
|
|
6
7
|
*/
|
|
7
8
|
export const LocalSystemStreamings = {
|
|
8
9
|
[LocalSystemApiName.runCommand]: RunCommandStreaming,
|
|
10
|
+
[LocalSystemApiName.writeLocalFile]: WriteFileStreaming,
|
|
9
11
|
};
|
|
@@ -78,6 +78,30 @@ const qiniuChatModels: AIChatModelCard[] = [
|
|
|
78
78
|
},
|
|
79
79
|
type: 'chat',
|
|
80
80
|
},
|
|
81
|
+
{
|
|
82
|
+
abilities: {
|
|
83
|
+
reasoning: true,
|
|
84
|
+
},
|
|
85
|
+
contextWindowTokens: 163_840,
|
|
86
|
+
description:
|
|
87
|
+
'DeepSeek Math V2 is a model that has made significant breakthroughs in mathematical reasoning capabilities. Its core innovation lies in the "self-verification" training mechanism, and it has achieved gold medal levels in several top mathematics competitions.',
|
|
88
|
+
displayName: 'DeepSeek Math V2',
|
|
89
|
+
enabled: true,
|
|
90
|
+
id: 'deepseek/deepseek-math-v2',
|
|
91
|
+
maxOutput: 131_072,
|
|
92
|
+
pricing: {
|
|
93
|
+
currency: 'CNY',
|
|
94
|
+
units: [
|
|
95
|
+
{ name: 'textInput', rate: 4.0, strategy: 'fixed', unit: 'millionTokens' },
|
|
96
|
+
{ name: 'textOutput', rate: 16.0, strategy: 'fixed', unit: 'millionTokens' },
|
|
97
|
+
],
|
|
98
|
+
},
|
|
99
|
+
releasedAt: '2025-11-27',
|
|
100
|
+
settings: {
|
|
101
|
+
searchImpl: 'params',
|
|
102
|
+
},
|
|
103
|
+
type: 'chat',
|
|
104
|
+
},
|
|
81
105
|
{
|
|
82
106
|
abilities: {
|
|
83
107
|
functionCall: true,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { SignIn } from '@clerk/nextjs';
|
|
2
2
|
import { BRANDING_NAME } from '@lobechat/business-const';
|
|
3
|
-
import { notFound } from '@/libs/next/navigation';
|
|
4
3
|
|
|
5
4
|
import { enableClerk } from '@/envs/auth';
|
|
5
|
+
import { notFound } from '@/libs/next/navigation';
|
|
6
6
|
import { metadataModule } from '@/server/metadata';
|
|
7
7
|
import { translation } from '@/server/translation';
|
|
8
8
|
import { type DynamicLayoutProps } from '@/types/next';
|
|
@@ -24,6 +24,4 @@ const Page = () => {
|
|
|
24
24
|
return <SignIn path="/login" />;
|
|
25
25
|
};
|
|
26
26
|
|
|
27
|
-
Page.displayName = 'Login';
|
|
28
|
-
|
|
29
27
|
export default Page;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SignUp } from '@clerk/nextjs';
|
|
2
|
-
import { notFound } from '@/libs/next/navigation';
|
|
3
2
|
|
|
4
3
|
import { enableBetterAuth, enableClerk } from '@/envs/auth';
|
|
4
|
+
import { notFound } from '@/libs/next/navigation';
|
|
5
5
|
import { metadataModule } from '@/server/metadata';
|
|
6
6
|
import { translation } from '@/server/translation';
|
|
7
7
|
import { type DynamicLayoutProps } from '@/types/next';
|
|
@@ -48,6 +48,4 @@ const Page = () => {
|
|
|
48
48
|
return notFound();
|
|
49
49
|
};
|
|
50
50
|
|
|
51
|
-
Page.displayName = 'SignUp';
|
|
52
|
-
|
|
53
51
|
export default Page;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { Flexbox } from '@lobehub/ui';
|
|
4
4
|
import { cssVar } from 'antd-style';
|
|
5
|
-
import { memo } from 'react';
|
|
5
|
+
import { Suspense, memo } from 'react';
|
|
6
6
|
|
|
7
7
|
import NavHeader from '@/features/NavHeader';
|
|
8
8
|
import WideScreenButton from '@/features/WideScreenContainer/WideScreenButton';
|
|
@@ -15,7 +15,9 @@ const Header = memo(() => {
|
|
|
15
15
|
right={
|
|
16
16
|
<Flexbox horizontal style={{ backgroundColor: cssVar.colorBgContainer }}>
|
|
17
17
|
<WideScreenButton />
|
|
18
|
-
<
|
|
18
|
+
<Suspense>
|
|
19
|
+
<ShareButton />
|
|
20
|
+
</Suspense>
|
|
19
21
|
</Flexbox>
|
|
20
22
|
}
|
|
21
23
|
/>
|