@lobehub/lobehub 2.0.0-next.321 → 2.0.0-next.323
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 +80 -0
- package/apps/desktop/src/main/core/infrastructure/UpdaterManager.ts +9 -76
- package/apps/desktop/src/main/core/infrastructure/__tests__/UpdaterManager.test.ts +0 -1
- package/apps/desktop/src/main/modules/updater/configs.ts +0 -4
- package/changelog/v1.json +20 -0
- package/e2e/src/mocks/llm/index.ts +3 -3
- package/locales/ar/common.json +5 -0
- package/locales/ar/error.json +10 -1
- package/locales/bg-BG/common.json +5 -0
- package/locales/bg-BG/error.json +10 -1
- package/locales/de-DE/common.json +5 -0
- package/locales/de-DE/error.json +10 -1
- package/locales/en-US/common.json +5 -0
- package/locales/es-ES/common.json +5 -0
- package/locales/es-ES/error.json +10 -1
- package/locales/fa-IR/common.json +5 -0
- package/locales/fa-IR/error.json +10 -1
- package/locales/fr-FR/common.json +5 -0
- package/locales/fr-FR/error.json +10 -1
- package/locales/it-IT/common.json +5 -0
- package/locales/it-IT/error.json +10 -1
- package/locales/ja-JP/common.json +5 -0
- package/locales/ja-JP/error.json +10 -1
- package/locales/ko-KR/common.json +5 -0
- package/locales/ko-KR/error.json +10 -1
- package/locales/nl-NL/common.json +5 -0
- package/locales/nl-NL/error.json +10 -1
- package/locales/pl-PL/common.json +5 -0
- package/locales/pl-PL/error.json +10 -1
- package/locales/pt-BR/common.json +5 -0
- package/locales/pt-BR/error.json +10 -1
- package/locales/ru-RU/common.json +5 -0
- package/locales/ru-RU/error.json +10 -1
- package/locales/tr-TR/common.json +5 -0
- package/locales/tr-TR/error.json +10 -1
- package/locales/vi-VN/common.json +5 -0
- package/locales/vi-VN/error.json +10 -1
- package/locales/zh-CN/common.json +5 -0
- package/locales/zh-TW/common.json +5 -0
- package/locales/zh-TW/error.json +10 -1
- package/package.json +2 -2
- package/packages/business/const/src/branding.ts +1 -0
- package/packages/business/const/src/llm.ts +2 -1
- package/packages/const/src/settings/llm.ts +2 -1
- package/packages/const/src/settings/systemAgent.ts +12 -7
- package/packages/database/src/models/agent.ts +18 -1
- package/packages/database/src/models/chatGroup.ts +18 -1
- package/packages/database/src/types/chatGroup.ts +1 -0
- package/packages/model-bank/package.json +1 -1
- package/packages/model-bank/src/aiModels/index.ts +2 -2
- package/packages/model-bank/src/aiModels/lobehub/chat/anthropic.ts +256 -0
- package/packages/model-bank/src/aiModels/lobehub/chat/deepseek.ts +45 -0
- package/packages/model-bank/src/aiModels/lobehub/chat/google.ts +267 -0
- package/packages/model-bank/src/aiModels/lobehub/chat/index.ts +26 -0
- package/packages/model-bank/src/aiModels/lobehub/chat/minimax.ts +75 -0
- package/packages/model-bank/src/aiModels/lobehub/chat/moonshot.ts +28 -0
- package/packages/model-bank/src/aiModels/lobehub/chat/openai.ts +345 -0
- package/packages/model-bank/src/aiModels/lobehub/chat/xai.ts +32 -0
- package/packages/model-bank/src/aiModels/lobehub/image.ts +240 -0
- package/packages/model-bank/src/aiModels/lobehub/index.ts +10 -0
- package/packages/model-bank/src/aiModels/lobehub/utils.ts +58 -0
- package/packages/model-bank/src/modelProviders/index.ts +10 -10
- package/packages/model-runtime/src/core/streams/qwen.test.ts +320 -0
- package/packages/model-runtime/src/core/streams/qwen.ts +19 -10
- package/packages/types/package.json +1 -1
- package/packages/types/src/agentGroup/index.ts +2 -0
- package/packages/types/src/discover/assistants.ts +9 -0
- package/packages/types/src/discover/fork.ts +163 -0
- package/packages/types/src/discover/groupAgents.ts +13 -4
- package/packages/types/src/discover/index.ts +9 -0
- package/src/app/[variants]/(auth)/_layout/index.tsx +2 -1
- package/src/app/[variants]/(auth)/auth-error/page.tsx +5 -5
- package/src/app/[variants]/(main)/agent/_layout/Sidebar/Topic/List/Item/index.tsx +1 -2
- package/src/app/[variants]/(main)/agent/profile/index.tsx +15 -2
- package/src/app/[variants]/(main)/community/(detail)/agent/features/Header.tsx +37 -0
- package/src/app/[variants]/(main)/community/(detail)/agent/features/Sidebar/ActionButton/ForkAndChat.tsx +133 -0
- package/src/app/[variants]/(main)/community/(detail)/agent/features/Sidebar/ActionButton/index.tsx +2 -2
- package/src/app/[variants]/(main)/community/(detail)/group_agent/features/Details/index.tsx +7 -10
- package/src/app/[variants]/(main)/community/(detail)/group_agent/features/Sidebar/ActionButton/ForkGroupAndChat.tsx +208 -0
- package/src/app/[variants]/(main)/community/(detail)/group_agent/features/Sidebar/ActionButton/index.tsx +2 -2
- package/src/app/[variants]/(main)/community/(detail)/user/features/DetailProvider.tsx +2 -0
- package/src/app/[variants]/(main)/community/(detail)/user/features/UserContent.tsx +7 -0
- package/src/app/[variants]/(main)/community/(detail)/user/features/UserForkedAgentGroups.tsx +63 -0
- package/src/app/[variants]/(main)/community/(detail)/user/features/UserForkedAgents.tsx +61 -0
- package/src/app/[variants]/(main)/community/(detail)/user/index.tsx +3 -1
- package/src/app/[variants]/(main)/group/_layout/Sidebar/Topic/List/Item/index.tsx +1 -2
- package/src/app/[variants]/(main)/settings/profile/index.tsx +92 -68
- package/src/app/[variants]/(mobile)/chat/features/Topic/index.tsx +2 -1
- package/src/features/CommandMenu/AskAgentCommands.tsx +105 -0
- package/src/features/CommandMenu/CommandMenuContext.tsx +57 -38
- package/src/features/CommandMenu/components/CommandInput.tsx +43 -9
- package/src/features/CommandMenu/index.tsx +89 -27
- package/src/features/CommandMenu/types.ts +6 -0
- package/src/features/CommandMenu/useCommandMenu.ts +62 -39
- package/src/features/PageEditor/PageEditor.tsx +20 -8
- package/src/locales/default/common.ts +5 -0
- package/src/locales/default/discover.ts +371 -0
- package/src/server/globalConfig/parseMemoryExtractionConfig.ts +7 -8
- package/src/server/routers/lambda/agent.ts +14 -0
- package/src/server/routers/lambda/agentGroup.ts +19 -3
- package/src/server/routers/lambda/market/agent.ts +234 -26
- package/src/server/routers/lambda/market/agentGroup.ts +204 -1
- package/src/server/services/discover/index.ts +52 -2
- package/src/server/services/memory/userMemory/__tests__/extract.runtime.test.ts +12 -2
- package/src/server/services/memory/userMemory/extract.ts +11 -2
- package/src/services/agent.ts +8 -0
- package/src/services/chatGroup/index.ts +8 -0
- package/src/services/marketApi.ts +78 -0
- package/src/store/user/slices/settings/selectors/__snapshots__/settings.test.ts.snap +12 -12
- package/src/utils/styles.ts +10 -0
- package/packages/model-bank/src/aiModels/lobehub.ts +0 -1315
|
@@ -1736,6 +1736,8 @@ export class DiscoverService {
|
|
|
1736
1736
|
locale,
|
|
1737
1737
|
})) as UserInfoResponse & {
|
|
1738
1738
|
agentGroups?: any[];
|
|
1739
|
+
forkedAgentGroups?: any[];
|
|
1740
|
+
forkedAgents?: any[];
|
|
1739
1741
|
};
|
|
1740
1742
|
|
|
1741
1743
|
if (!response?.user) {
|
|
@@ -1743,7 +1745,7 @@ export class DiscoverService {
|
|
|
1743
1745
|
return undefined;
|
|
1744
1746
|
}
|
|
1745
1747
|
|
|
1746
|
-
const { user, agents, agentGroups } = response;
|
|
1748
|
+
const { user, agents, agentGroups, forkedAgents, forkedAgentGroups } = response;
|
|
1747
1749
|
|
|
1748
1750
|
// Transform agents to DiscoverAssistantItem format
|
|
1749
1751
|
const transformedAgents: DiscoverAssistantItem[] = (agents || []).map((agent: any) => ({
|
|
@@ -1783,9 +1785,55 @@ export class DiscoverService {
|
|
|
1783
1785
|
updatedAt: group.updatedAt,
|
|
1784
1786
|
}));
|
|
1785
1787
|
|
|
1788
|
+
// Transform forkedAgents to DiscoverAssistantItem format
|
|
1789
|
+
const transformedForkedAgents: DiscoverAssistantItem[] = (forkedAgents || []).map(
|
|
1790
|
+
(agent: any) => ({
|
|
1791
|
+
author: user.displayName || user.userName || user.namespace || '',
|
|
1792
|
+
avatar: agent.avatar || '',
|
|
1793
|
+
category: agent.category as any,
|
|
1794
|
+
config: {} as any,
|
|
1795
|
+
createdAt: agent.createdAt,
|
|
1796
|
+
description: agent.description || '',
|
|
1797
|
+
forkCount: agent.forkCount || 0,
|
|
1798
|
+
forkedFromAgentId: agent.forkedFromAgentId || null,
|
|
1799
|
+
homepage: `https://lobehub.com/discover/assistant/${agent.identifier}`,
|
|
1800
|
+
identifier: agent.identifier,
|
|
1801
|
+
installCount: agent.installCount,
|
|
1802
|
+
knowledgeCount: agent.knowledgeCount || 0,
|
|
1803
|
+
pluginCount: agent.pluginCount || 0,
|
|
1804
|
+
schemaVersion: 1,
|
|
1805
|
+
tags: agent.tags || [],
|
|
1806
|
+
title: agent.name || agent.identifier,
|
|
1807
|
+
tokenUsage: agent.tokenUsage || 0,
|
|
1808
|
+
}),
|
|
1809
|
+
);
|
|
1810
|
+
|
|
1811
|
+
// Transform forkedAgentGroups to DiscoverGroupAgentItem format
|
|
1812
|
+
const transformedForkedAgentGroups = (forkedAgentGroups || []).map((group: any) => ({
|
|
1813
|
+
author: user.displayName || user.userName || user.namespace || '',
|
|
1814
|
+
avatar: group.avatar || '👥',
|
|
1815
|
+
category: group.category as any,
|
|
1816
|
+
createdAt: group.createdAt,
|
|
1817
|
+
description: group.description || '',
|
|
1818
|
+
forkCount: group.forkCount || 0,
|
|
1819
|
+
forkedFromGroupId: group.forkedFromGroupId || null,
|
|
1820
|
+
homepage: `https://lobehub.com/discover/group_agent/${group.identifier}`,
|
|
1821
|
+
identifier: group.identifier,
|
|
1822
|
+
installCount: group.installCount || 0,
|
|
1823
|
+
isFeatured: group.isFeatured || false,
|
|
1824
|
+
isOfficial: group.isOfficial || false,
|
|
1825
|
+
memberCount: 0, // Will be populated from memberAgents in detail view
|
|
1826
|
+
schemaVersion: 1,
|
|
1827
|
+
tags: group.tags || [],
|
|
1828
|
+
title: group.name || group.identifier,
|
|
1829
|
+
updatedAt: group.updatedAt,
|
|
1830
|
+
}));
|
|
1831
|
+
|
|
1786
1832
|
const result: DiscoverUserProfile = {
|
|
1787
1833
|
agentGroups: transformedAgentGroups,
|
|
1788
1834
|
agents: transformedAgents,
|
|
1835
|
+
forkedAgentGroups: transformedForkedAgentGroups,
|
|
1836
|
+
forkedAgents: transformedForkedAgents,
|
|
1789
1837
|
user: {
|
|
1790
1838
|
avatarUrl: user.avatarUrl || null,
|
|
1791
1839
|
bannerUrl: user.meta?.bannerUrl || null,
|
|
@@ -1803,9 +1851,11 @@ export class DiscoverService {
|
|
|
1803
1851
|
};
|
|
1804
1852
|
|
|
1805
1853
|
log(
|
|
1806
|
-
'getUserInfo: returning user profile with %d agents
|
|
1854
|
+
'getUserInfo: returning user profile with %d agents, %d groups, %d forked agents, %d forked groups',
|
|
1807
1855
|
result.agents.length,
|
|
1808
1856
|
result.agentGroups?.length || 0,
|
|
1857
|
+
result.forkedAgents?.length || 0,
|
|
1858
|
+
result.forkedAgentGroups?.length || 0,
|
|
1809
1859
|
);
|
|
1810
1860
|
return result;
|
|
1811
1861
|
} catch (error) {
|
|
@@ -89,8 +89,9 @@ describe('MemoryExtractionExecutor.resolveRuntimeKeyVaults', () => {
|
|
|
89
89
|
});
|
|
90
90
|
});
|
|
91
91
|
|
|
92
|
-
it('
|
|
92
|
+
it('warns and falls back to server provider when no enabled provider satisfies embedding model', () => {
|
|
93
93
|
const executor = createExecutor();
|
|
94
|
+
const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {});
|
|
94
95
|
|
|
95
96
|
const runtimeState = createRuntimeState(
|
|
96
97
|
[
|
|
@@ -106,6 +107,15 @@ describe('MemoryExtractionExecutor.resolveRuntimeKeyVaults', () => {
|
|
|
106
107
|
},
|
|
107
108
|
);
|
|
108
109
|
|
|
109
|
-
|
|
110
|
+
const keyVaults = (executor as any).resolveRuntimeKeyVaults(runtimeState);
|
|
111
|
+
|
|
112
|
+
expect(keyVaults).toMatchObject({
|
|
113
|
+
'provider-b': { apiKey: 'b-key' },
|
|
114
|
+
'provider-l': { apiKey: 'l-key' },
|
|
115
|
+
});
|
|
116
|
+
expect(keyVaults).not.toHaveProperty('provider-e');
|
|
117
|
+
expect(warnSpy).toHaveBeenCalled();
|
|
118
|
+
|
|
119
|
+
warnSpy.mockRestore();
|
|
110
120
|
});
|
|
111
121
|
});
|
|
@@ -1660,6 +1660,7 @@ export class MemoryExtractionExecutor {
|
|
|
1660
1660
|
config,
|
|
1661
1661
|
]),
|
|
1662
1662
|
);
|
|
1663
|
+
|
|
1663
1664
|
const providerModels = runtimeState.enabledAiModels.reduce<Record<string, Set<string>>>(
|
|
1664
1665
|
(acc, model) => {
|
|
1665
1666
|
const providerId = normalizeProvider(model.providerId);
|
|
@@ -1692,15 +1693,23 @@ export class MemoryExtractionExecutor {
|
|
|
1692
1693
|
for (const providerId of providerOrder) {
|
|
1693
1694
|
const models = providerModels[providerId];
|
|
1694
1695
|
if (!models) continue;
|
|
1695
|
-
|
|
1696
1696
|
if (models.has(modelId)) return providerId;
|
|
1697
1697
|
|
|
1698
1698
|
const preferredMatch = candidateModels.find((preferredModel) => models.has(preferredModel));
|
|
1699
1699
|
if (preferredMatch) return providerId;
|
|
1700
1700
|
}
|
|
1701
|
+
if (fallbackProvider) {
|
|
1702
|
+
console.warn(
|
|
1703
|
+
`[memory-extraction] no enabled provider found for ${label || 'model'} "${modelId}"`,
|
|
1704
|
+
`(preferred ${preferredProviders}), falling back to server-configured provider "${fallbackProvider}".`,
|
|
1705
|
+
);
|
|
1706
|
+
|
|
1707
|
+
return normalizeProvider(fallbackProvider);
|
|
1708
|
+
}
|
|
1701
1709
|
|
|
1702
1710
|
throw new Error(
|
|
1703
|
-
`Unable to resolve provider for ${label || 'model'} "${modelId}".
|
|
1711
|
+
`Unable to resolve provider for ${label || 'model'} "${modelId}". ` +
|
|
1712
|
+
`Check preferred providers/models configuration.`,
|
|
1704
1713
|
);
|
|
1705
1714
|
};
|
|
1706
1715
|
|
package/src/services/agent.ts
CHANGED
|
@@ -76,6 +76,14 @@ class AgentService {
|
|
|
76
76
|
return lambdaClient.agent.getAgentByMarketIdentifier.query({ marketIdentifier });
|
|
77
77
|
};
|
|
78
78
|
|
|
79
|
+
/**
|
|
80
|
+
* Get an agent by forkedFromIdentifier stored in params
|
|
81
|
+
* @returns agent id if exists, null otherwise
|
|
82
|
+
*/
|
|
83
|
+
getAgentByForkedFromIdentifier = async (forkedFromIdentifier: string): Promise<string | null> => {
|
|
84
|
+
return lambdaClient.agent.getAgentByForkedFromIdentifier.query({ forkedFromIdentifier });
|
|
85
|
+
};
|
|
86
|
+
|
|
79
87
|
/**
|
|
80
88
|
* Create a new agent with session.
|
|
81
89
|
* Automatically normalizes market agent config (handles model as object).
|
|
@@ -33,6 +33,14 @@ export interface SupervisorConfig {
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
class ChatGroupService {
|
|
36
|
+
/**
|
|
37
|
+
* Get a group by forkedFromIdentifier stored in config
|
|
38
|
+
* @returns group id if exists, null otherwise
|
|
39
|
+
*/
|
|
40
|
+
getGroupByForkedFromIdentifier = async (forkedFromIdentifier: string): Promise<string | null> => {
|
|
41
|
+
return lambdaClient.group.getGroupByForkedFromIdentifier.query({ forkedFromIdentifier });
|
|
42
|
+
};
|
|
43
|
+
|
|
36
44
|
/**
|
|
37
45
|
* Create a group with a supervisor agent.
|
|
38
46
|
* The supervisor agent is automatically created as a virtual agent.
|
|
@@ -5,6 +5,16 @@ import {
|
|
|
5
5
|
} from '@lobehub/market-sdk';
|
|
6
6
|
|
|
7
7
|
import { lambdaClient } from '@/libs/trpc/client';
|
|
8
|
+
import type {
|
|
9
|
+
AgentForkRequest,
|
|
10
|
+
AgentForkResponse,
|
|
11
|
+
AgentForkSourceResponse,
|
|
12
|
+
AgentForksResponse,
|
|
13
|
+
AgentGroupForkRequest,
|
|
14
|
+
AgentGroupForkResponse,
|
|
15
|
+
AgentGroupForkSourceResponse,
|
|
16
|
+
AgentGroupForksResponse,
|
|
17
|
+
} from '@/types/discover';
|
|
8
18
|
|
|
9
19
|
interface GetOwnAgentsParams {
|
|
10
20
|
page?: number;
|
|
@@ -101,6 +111,74 @@ export class MarketApiService {
|
|
|
101
111
|
async getOwnAgents(params?: GetOwnAgentsParams): Promise<AgentListResponse> {
|
|
102
112
|
return lambdaClient.market.agent.getOwnAgents.query(params) as Promise<AgentListResponse>;
|
|
103
113
|
}
|
|
114
|
+
|
|
115
|
+
// ==================== Fork Agent API ====================
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Fork an agent
|
|
119
|
+
* @param sourceIdentifier - Source agent identifier
|
|
120
|
+
* @param forkData - Fork request parameters
|
|
121
|
+
*/
|
|
122
|
+
async forkAgent(
|
|
123
|
+
sourceIdentifier: string,
|
|
124
|
+
forkData: AgentForkRequest,
|
|
125
|
+
): Promise<AgentForkResponse> {
|
|
126
|
+
return lambdaClient.market.agent.forkAgent.mutate({
|
|
127
|
+
sourceIdentifier,
|
|
128
|
+
...forkData,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Get all forks of an agent
|
|
134
|
+
* @param identifier - Agent identifier
|
|
135
|
+
*/
|
|
136
|
+
async getAgentForks(identifier: string): Promise<AgentForksResponse> {
|
|
137
|
+
return lambdaClient.market.agent.getAgentForks.query({ identifier });
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Get the fork source of an agent
|
|
142
|
+
* @param identifier - Agent identifier
|
|
143
|
+
* @returns Fork source information (null if not a fork)
|
|
144
|
+
*/
|
|
145
|
+
async getAgentForkSource(identifier: string): Promise<AgentForkSourceResponse> {
|
|
146
|
+
return lambdaClient.market.agent.getAgentForkSource.query({ identifier });
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// ==================== Fork Agent Group API ====================
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Fork an agent group
|
|
153
|
+
* @param sourceIdentifier - Source agent group identifier
|
|
154
|
+
* @param forkData - Fork request parameters
|
|
155
|
+
*/
|
|
156
|
+
async forkAgentGroup(
|
|
157
|
+
sourceIdentifier: string,
|
|
158
|
+
forkData: AgentGroupForkRequest,
|
|
159
|
+
): Promise<AgentGroupForkResponse> {
|
|
160
|
+
return lambdaClient.market.agentGroup.forkAgentGroup.mutate({
|
|
161
|
+
sourceIdentifier,
|
|
162
|
+
...forkData,
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Get all forks of an agent group
|
|
168
|
+
* @param identifier - Agent group identifier
|
|
169
|
+
*/
|
|
170
|
+
async getAgentGroupForks(identifier: string): Promise<AgentGroupForksResponse> {
|
|
171
|
+
return lambdaClient.market.agentGroup.getAgentGroupForks.query({ identifier });
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Get the fork source of an agent group
|
|
176
|
+
* @param identifier - Agent group identifier
|
|
177
|
+
* @returns Fork source information (null if not a fork)
|
|
178
|
+
*/
|
|
179
|
+
async getAgentGroupForkSource(identifier: string): Promise<AgentGroupForkSourceResponse> {
|
|
180
|
+
return lambdaClient.market.agentGroup.getAgentGroupForkSource.query({ identifier });
|
|
181
|
+
}
|
|
104
182
|
}
|
|
105
183
|
|
|
106
184
|
export const marketApiService = new MarketApiService();
|
|
@@ -51,8 +51,8 @@ exports[`settingsSelectors > currentSettings > should merge DEFAULT_SETTINGS and
|
|
|
51
51
|
exports[`settingsSelectors > currentSystemAgent > should merge DEFAULT_SYSTEM_AGENT_CONFIG and s.settings.systemAgent correctly 1`] = `
|
|
52
52
|
{
|
|
53
53
|
"agentMeta": {
|
|
54
|
-
"model": "
|
|
55
|
-
"provider": "
|
|
54
|
+
"model": "claude-sonnet-4-5-20250929",
|
|
55
|
+
"provider": "anthropic",
|
|
56
56
|
},
|
|
57
57
|
"enableAutoReply": true,
|
|
58
58
|
"generationTopic": {
|
|
@@ -60,8 +60,8 @@ exports[`settingsSelectors > currentSystemAgent > should merge DEFAULT_SYSTEM_AG
|
|
|
60
60
|
"provider": "openai",
|
|
61
61
|
},
|
|
62
62
|
"historyCompress": {
|
|
63
|
-
"model": "
|
|
64
|
-
"provider": "
|
|
63
|
+
"model": "claude-sonnet-4-5-20250929",
|
|
64
|
+
"provider": "anthropic",
|
|
65
65
|
},
|
|
66
66
|
"queryRewrite": {
|
|
67
67
|
"enabled": true,
|
|
@@ -70,8 +70,8 @@ exports[`settingsSelectors > currentSystemAgent > should merge DEFAULT_SYSTEM_AG
|
|
|
70
70
|
},
|
|
71
71
|
"replyMessage": "Custom auto reply",
|
|
72
72
|
"thread": {
|
|
73
|
-
"model": "
|
|
74
|
-
"provider": "
|
|
73
|
+
"model": "claude-sonnet-4-5-20250929",
|
|
74
|
+
"provider": "anthropic",
|
|
75
75
|
},
|
|
76
76
|
"topic": {
|
|
77
77
|
"model": "gpt-5-mini",
|
|
@@ -108,8 +108,8 @@ exports[`settingsSelectors > defaultAgent > should merge DEFAULT_AGENT and s.set
|
|
|
108
108
|
"historyCount": 20,
|
|
109
109
|
"reasoningBudgetToken": 1024,
|
|
110
110
|
"searchFCModel": {
|
|
111
|
-
"model": "
|
|
112
|
-
"provider": "
|
|
111
|
+
"model": "claude-sonnet-4-5-20250929",
|
|
112
|
+
"provider": "anthropic",
|
|
113
113
|
},
|
|
114
114
|
"searchMode": "off",
|
|
115
115
|
},
|
|
@@ -122,7 +122,7 @@ exports[`settingsSelectors > defaultAgent > should merge DEFAULT_AGENT and s.set
|
|
|
122
122
|
"top_p": 1,
|
|
123
123
|
},
|
|
124
124
|
"plugins": [],
|
|
125
|
-
"provider": "
|
|
125
|
+
"provider": "anthropic",
|
|
126
126
|
"systemRole": "user",
|
|
127
127
|
"tts": {
|
|
128
128
|
"showAllLocaleVoice": false,
|
|
@@ -152,8 +152,8 @@ exports[`settingsSelectors > defaultAgentConfig > should merge DEFAULT_AGENT_CON
|
|
|
152
152
|
"historyCount": 20,
|
|
153
153
|
"reasoningBudgetToken": 1024,
|
|
154
154
|
"searchFCModel": {
|
|
155
|
-
"model": "
|
|
156
|
-
"provider": "
|
|
155
|
+
"model": "claude-sonnet-4-5-20250929",
|
|
156
|
+
"provider": "anthropic",
|
|
157
157
|
},
|
|
158
158
|
"searchMode": "off",
|
|
159
159
|
},
|
|
@@ -166,7 +166,7 @@ exports[`settingsSelectors > defaultAgentConfig > should merge DEFAULT_AGENT_CON
|
|
|
166
166
|
"top_p": 1,
|
|
167
167
|
},
|
|
168
168
|
"plugins": [],
|
|
169
|
-
"provider": "
|
|
169
|
+
"provider": "anthropic",
|
|
170
170
|
"systemRole": "custom role",
|
|
171
171
|
"tts": {
|
|
172
172
|
"showAllLocaleVoice": false,
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CSSProperties } from 'react';
|
|
2
|
+
|
|
3
|
+
export const StyleSheet = {
|
|
4
|
+
compose: (...styles: Array<CSSProperties | undefined | null | false>): CSSProperties => {
|
|
5
|
+
return Object.assign({}, ...styles.filter(Boolean));
|
|
6
|
+
},
|
|
7
|
+
create: (styles: Record<string, CSSProperties>) => {
|
|
8
|
+
return styles;
|
|
9
|
+
},
|
|
10
|
+
};
|