@opentiny/tiny-robot-cli 0.5.2-alpha.3 → 1.0.0-beta.1

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 (53) hide show
  1. package/README.md +49 -1
  2. package/bin/commands/add.js +563 -269
  3. package/bin/commands/create.js +6 -3
  4. package/bin/runtime-version.js +37 -0
  5. package/bin/utils.js +147 -45
  6. package/package.json +5 -3
  7. package/templates/basic/.env.example +8 -0
  8. package/templates/basic/README.md +53 -22
  9. package/templates/basic/index.html +2 -2
  10. package/templates/basic/package.json +12 -16
  11. package/templates/basic/public/favicon.svg +1 -0
  12. package/templates/basic/public/icons.svg +24 -0
  13. package/templates/basic/src/App.vue +111 -119
  14. package/templates/basic/src/main.ts +2 -2
  15. package/templates/basic/tsconfig.app.json +2 -5
  16. package/templates/basic/tsconfig.node.json +3 -6
  17. package/templates/basic/vite.config.ts +6 -1
  18. package/templates/chat/.env.example +9 -0
  19. package/templates/chat/README.md +46 -0
  20. package/templates/chat/index.html +12 -0
  21. package/templates/chat/package.json +28 -0
  22. package/templates/chat/src/TinyRobotChat.vue +88 -27
  23. package/templates/chat/src/components/ComposerTools.vue +99 -0
  24. package/templates/chat/src/components/WindowHeader.vue +192 -0
  25. package/templates/chat/src/composables/useWindow.ts +83 -0
  26. package/templates/chat/src/config/chat-runtime.ts +82 -0
  27. package/templates/chat/src/config/chat-ui.ts +289 -0
  28. package/templates/chat/src/index.css +109 -0
  29. package/templates/chat/src/main.ts +7 -0
  30. package/templates/chat/tsconfig.app.json +13 -0
  31. package/templates/chat/tsconfig.json +7 -0
  32. package/templates/chat/tsconfig.node.json +19 -0
  33. package/templates/chat/vite.config.ts +16 -0
  34. package/templates/basic/public/modelcontextprotocol.png +0 -0
  35. package/templates/basic/src/components/ChatList.vue +0 -82
  36. package/templates/basic/src/components/ChatSender.vue +0 -125
  37. package/templates/basic/src/components/ConversationHistory.vue +0 -136
  38. package/templates/basic/src/components/HistoryDrawerButton.vue +0 -43
  39. package/templates/basic/src/components/McpServerPickerButton.vue +0 -278
  40. package/templates/basic/src/components/ThemeToggleButton.vue +0 -44
  41. package/templates/basic/src/components/icons/IconDeepThink.vue +0 -29
  42. package/templates/basic/src/components/icons/IconModelAliyunBailian.vue +0 -51
  43. package/templates/basic/src/components/icons/IconModelDeepseek.vue +0 -29
  44. package/templates/basic/src/components/icons/IconMoon.vue +0 -29
  45. package/templates/basic/src/components/icons/IconPlugin.vue +0 -29
  46. package/templates/basic/src/components/icons/IconSun.vue +0 -35
  47. package/templates/basic/src/components/icons/IconWebSearch.vue +0 -36
  48. package/templates/basic/src/components/icons/index.ts +0 -7
  49. package/templates/basic/src/composables/useChat.ts +0 -129
  50. package/templates/basic/src/composables/useMcp.ts +0 -170
  51. package/templates/basic/src/composables/useModel.ts +0 -82
  52. package/templates/basic/src/mcpServers.ts +0 -40
  53. package/templates/basic/src/models.ts +0 -81
@@ -1,278 +0,0 @@
1
- <template>
2
- <div>
3
- <button
4
- class="sender-action-btn sender-capability-btn"
5
- :class="{ 'sender-capability-btn--active': inUseMcpServers.length > 0 }"
6
- type="button"
7
- @click="mcpPickerVisible = true"
8
- >
9
- <IconPlugin :size="16" class="sender-action-btn__icon" />
10
- MCP
11
- <span v-if="inUseMcpServers.length > 0" class="mcp-active-count">
12
- {{ inUseMcpServers.length }}
13
- </span>
14
- </button>
15
-
16
- <McpServerPicker
17
- v-model:visible="mcpPickerVisible"
18
- :active-count="inUseMcpServers.length"
19
- :popup-config="pickerPopupConfig"
20
- :installed-plugins="installedPlugins"
21
- :market-plugins="marketPlugins"
22
- :loading="false"
23
- :market-loading="false"
24
- :show-custom-add-button="false"
25
- :allow-plugin-delete="true"
26
- @plugin-toggle="handlePluginToggle"
27
- @plugin-add="handlePluginAdd"
28
- @plugin-delete="handlePluginDelete"
29
- @tool-toggle="handleToolToggle"
30
- />
31
- </div>
32
- </template>
33
-
34
- <script setup lang="ts">
35
- import { McpServerPicker, type PluginInfo } from '@opentiny/tiny-robot'
36
- import { computed, ref } from 'vue'
37
- import { useMcp } from '../composables/useMcp'
38
- import type { McpServerKey } from '../mcpServers'
39
- import { IconPlugin } from './icons'
40
-
41
- const {
42
- McpServers,
43
- availableMcpServers,
44
- addedMcpServers,
45
- addMcpServer,
46
- inUseMcpServers,
47
- toggleMcpServer,
48
- removeMcpServer,
49
- listTools,
50
- } = useMcp()
51
-
52
- const mcpPickerVisible = ref(false)
53
- const loadedPluginTools = ref<Record<string, PluginInfo['tools']>>({})
54
- const addingMcpServers = ref<Set<McpServerKey>>(new Set())
55
- const pluginIcon = 'https://modelcontextprotocol.io/favicon.ico'
56
- const pickerPopupConfig = {
57
- type: 'drawer' as const,
58
- drawer: {
59
- direction: 'right' as const,
60
- },
61
- }
62
-
63
- const inUseServerSet = computed(() => new Set(inUseMcpServers.value))
64
- const addedServerSet = computed(() => new Set(addedMcpServers.value))
65
-
66
- function toMcpServerKey(serverKey: string): McpServerKey | null {
67
- return availableMcpServers.value.includes(serverKey as McpServerKey) ? (serverKey as McpServerKey) : null
68
- }
69
-
70
- function getServerDescription(serverKey: McpServerKey): string {
71
- const config = McpServers[serverKey]
72
- const description = 'description' in config ? config.description : undefined
73
- return description || config.baseUrl
74
- }
75
-
76
- function getServerIcon(serverKey: McpServerKey): string {
77
- const config = McpServers[serverKey]
78
- const logoUrl = 'logoUrl' in config ? config.logoUrl : undefined
79
- return logoUrl || pluginIcon
80
- }
81
-
82
- function normalizeTool(tool: unknown, fallbackIndex: number, enabled: boolean) {
83
- if (typeof tool !== 'object' || !tool) {
84
- return {
85
- id: `tool-${fallbackIndex}`,
86
- name: `Tool ${fallbackIndex + 1}`,
87
- description: '',
88
- enabled,
89
- }
90
- }
91
- const rawName = (tool as { name?: unknown }).name
92
- const rawDescription = (tool as { description?: unknown }).description
93
- const name = typeof rawName === 'string' && rawName.length > 0 ? rawName : `Tool ${fallbackIndex + 1}`
94
- return {
95
- id: name,
96
- name,
97
- description: typeof rawDescription === 'string' ? rawDescription : '',
98
- enabled,
99
- }
100
- }
101
-
102
- function setLoadedTools(serverKey: McpServerKey, tools: PluginInfo['tools']) {
103
- loadedPluginTools.value = {
104
- ...loadedPluginTools.value,
105
- [serverKey]: tools,
106
- }
107
- }
108
-
109
- function setAddingState(serverKey: McpServerKey, adding: boolean) {
110
- const next = new Set(addingMcpServers.value)
111
- if (adding) {
112
- next.add(serverKey)
113
- } else {
114
- next.delete(serverKey)
115
- }
116
- addingMcpServers.value = next
117
- }
118
-
119
- function mapToolsToPluginTools(tools: unknown[], enabled: boolean): PluginInfo['tools'] {
120
- return tools.map((tool, index) => normalizeTool(tool, index, enabled))
121
- }
122
-
123
- async function loadToolsForServer(serverKey: McpServerKey) {
124
- try {
125
- const tools = await listTools(serverKey)
126
- setLoadedTools(serverKey, mapToolsToPluginTools(tools, true))
127
- } catch (error) {
128
- console.error(`[MCP] Failed to load tools for "${serverKey}":`, error)
129
- setLoadedTools(serverKey, [])
130
- }
131
- }
132
-
133
- const installedPlugins = computed<PluginInfo[]>(() =>
134
- addedMcpServers.value.map((serverKey) => {
135
- const config = McpServers[serverKey]
136
- const enabled = inUseServerSet.value.has(serverKey)
137
- const tools = (loadedPluginTools.value[serverKey] || []).map((tool) => ({
138
- ...tool,
139
- enabled,
140
- }))
141
- return {
142
- id: serverKey,
143
- name: config.name,
144
- icon: getServerIcon(serverKey),
145
- description: getServerDescription(serverKey),
146
- enabled,
147
- expanded: true,
148
- tools,
149
- }
150
- }),
151
- )
152
-
153
- const marketPlugins = computed<PluginInfo[]>(() =>
154
- availableMcpServers.value.map((serverKey) => {
155
- const config = McpServers[serverKey]
156
- return {
157
- id: serverKey,
158
- name: config.name,
159
- icon: getServerIcon(serverKey),
160
- description: getServerDescription(serverKey),
161
- enabled: false,
162
- tools: [],
163
- addState: addedServerSet.value.has(serverKey)
164
- ? 'added'
165
- : addingMcpServers.value.has(serverKey)
166
- ? 'loading'
167
- : 'idle',
168
- }
169
- }),
170
- )
171
-
172
- async function handlePluginAdd(plugin: PluginInfo) {
173
- const serverKey = toMcpServerKey(plugin.id)
174
- if (!serverKey) {
175
- return
176
- }
177
- if (addedServerSet.value.has(serverKey) || addingMcpServers.value.has(serverKey)) {
178
- return
179
- }
180
- setAddingState(serverKey, true)
181
- try {
182
- addMcpServer(serverKey)
183
- await loadToolsForServer(serverKey)
184
- } finally {
185
- setAddingState(serverKey, false)
186
- }
187
- }
188
-
189
- async function handlePluginToggle(plugin: PluginInfo, enabled: boolean) {
190
- const serverKey = toMcpServerKey(plugin.id)
191
- if (!serverKey) {
192
- return
193
- }
194
- const isEnabled = inUseServerSet.value.has(serverKey)
195
- if (enabled !== isEnabled) {
196
- toggleMcpServer(serverKey)
197
- }
198
- if (enabled && !loadedPluginTools.value[serverKey]) {
199
- await loadToolsForServer(serverKey)
200
- }
201
- }
202
-
203
- function handleToolToggle(plugin: PluginInfo, toolId: string, enabled: boolean) {
204
- const serverKey = toMcpServerKey(plugin.id)
205
- if (!serverKey) {
206
- return
207
- }
208
- const tools = loadedPluginTools.value[serverKey] || []
209
- setLoadedTools(
210
- serverKey,
211
- tools.map((tool) => (tool.id === toolId ? { ...tool, enabled } : tool)),
212
- )
213
- }
214
-
215
- function handlePluginDelete(plugin: PluginInfo) {
216
- const serverKey = toMcpServerKey(plugin.id)
217
- if (!serverKey) {
218
- return
219
- }
220
- removeMcpServer(serverKey)
221
- const nextLoadedTools = { ...loadedPluginTools.value }
222
- delete nextLoadedTools[serverKey]
223
- loadedPluginTools.value = nextLoadedTools
224
- }
225
- </script>
226
-
227
- <style scoped>
228
- .sender-action-btn {
229
- border: 1px solid var(--tr-border-color-disabled);
230
- border-radius: var(--tr-radius-full);
231
- background: var(--tr-container-bg-default);
232
- color: var(--tr-text-secondary);
233
- font-size: var(--tr-font-size-sm);
234
- height: 32px;
235
- padding: 0 10px;
236
- line-height: 1;
237
- cursor: pointer;
238
- display: inline-flex;
239
- align-items: center;
240
- gap: 6px;
241
- }
242
-
243
- .sender-action-btn:hover:not(:disabled) {
244
- border-color: var(--tr-border-color-hover);
245
- color: var(--tr-text-primary);
246
- background: var(--tr-container-bg-hover);
247
- }
248
-
249
- .sender-action-btn__icon {
250
- flex-shrink: 0;
251
- }
252
-
253
- .sender-capability-btn--active {
254
- border-color: var(--tr-border-color-hover);
255
- color: var(--tr-text-primary);
256
- background: var(--tr-container-bg-default-2);
257
- }
258
-
259
- .mcp-active-count {
260
- min-width: 14px;
261
- height: 14px;
262
- border-radius: 999px;
263
- background: var(--tr-color-brand, #1476ff);
264
- color: #fff;
265
- display: inline-flex;
266
- align-items: center;
267
- justify-content: center;
268
- font-size: 10px;
269
- padding: 0 3px;
270
- }
271
-
272
- :deep(.mcp-server-picker.popup-type-drawer) {
273
- right: 0 !important;
274
- top: 0 !important;
275
- bottom: 0 !important;
276
- border-right: 0;
277
- }
278
- </style>
@@ -1,44 +0,0 @@
1
- <template>
2
- <button class="theme-toggle-btn" type="button" aria-label="切换主题" @click="toggleColorMode()">
3
- <IconMoon v-if="resolvedColorMode === 'light'" :size="20" />
4
- <IconSun v-else :size="20" />
5
- </button>
6
- </template>
7
-
8
- <script setup lang="ts">
9
- import { useTheme } from '@opentiny/tiny-robot'
10
- import { IconMoon, IconSun } from './icons'
11
-
12
- const { toggleColorMode, resolvedColorMode } = useTheme()
13
- </script>
14
-
15
- <style scoped>
16
- .theme-toggle-btn {
17
- display: inline-flex;
18
- align-items: center;
19
- justify-content: center;
20
- margin-left: auto;
21
- width: 32px;
22
- height: 32px;
23
- padding: 0;
24
- border: none;
25
- border-radius: var(--tr-radius-full);
26
- background: transparent;
27
- color: var(--tr-icon-color-default);
28
- cursor: pointer;
29
- }
30
-
31
- .theme-toggle-btn:hover {
32
- color: var(--tr-icon-color-hover);
33
- background: var(--tr-container-bg-hover);
34
- }
35
-
36
- @media (max-width: 959px) {
37
- .theme-toggle-btn {
38
- position: absolute;
39
- right: 0;
40
- top: 50%;
41
- transform: translateY(-50%);
42
- }
43
- }
44
- </style>
@@ -1,29 +0,0 @@
1
- <script setup lang="ts">
2
- withDefaults(
3
- defineProps<{
4
- size?: number
5
- }>(),
6
- {
7
- size: 24,
8
- },
9
- )
10
- </script>
11
-
12
- <template>
13
- <svg
14
- xmlns="http://www.w3.org/2000/svg"
15
- xmlns:xlink="http://www.w3.org/1999/xlink"
16
- :width="size"
17
- :height="size"
18
- viewBox="0 0 16 16"
19
- fill="none"
20
- >
21
- <rect id="深度思考-deepthinking 1" width="16.000000" height="16.000000" x="0.000000" y="0.000000" />
22
- <path
23
- id="矢量_163"
24
- d="M13.6607 13.6627C13.7407 13.5827 13.8107 13.4927 13.8807 13.4027C14.1707 13.0127 14.3207 12.5327 14.3507 11.9527C14.3807 11.3227 14.2507 10.6127 13.9707 9.83266C13.7507 9.23266 13.4507 8.62267 13.0807 8.00266C13.4607 7.38266 13.7607 6.77266 13.9707 6.17266C14.2507 5.39266 14.3807 4.68266 14.3507 4.05266C14.3207 3.34266 14.0807 2.77266 13.6607 2.34266C13.2307 1.91266 12.6607 1.68266 11.9507 1.65266C11.3207 1.62266 10.6107 1.75266 9.83071 2.03266C9.23071 2.25266 8.62071 2.55266 8.00071 2.93266C7.38071 2.55266 6.77071 2.25266 6.17071 2.03266C5.39071 1.75266 4.69071 1.62266 4.06071 1.65266C3.48071 1.68266 2.99071 1.84266 2.60071 2.12266C2.51071 2.19266 2.43071 2.27266 2.35071 2.35266C2.27071 2.43266 2.19071 2.51266 2.12071 2.60266C1.84071 2.99266 1.68071 3.48266 1.65071 4.06266C1.62071 4.69266 1.75071 5.40266 2.03071 6.18266C2.25071 6.77266 2.55071 7.38266 2.93071 8.00266C2.55071 8.62267 2.25071 9.23266 2.03071 9.83266C1.75071 10.6127 1.62071 11.3227 1.65071 11.9527C1.68071 12.5327 1.83071 13.0127 2.12071 13.4027C2.19071 13.4927 2.26071 13.5827 2.34071 13.6627C2.42071 13.7427 2.51071 13.8127 2.60071 13.8827C2.99071 14.1727 3.47071 14.3227 4.05071 14.3527C4.68071 14.3827 5.39071 14.2527 6.17071 13.9727C6.77071 13.7527 7.38071 13.4527 8.00071 13.0827C8.62071 13.4627 9.23071 13.7627 9.83071 13.9727C10.6107 14.2527 11.3207 14.3827 11.9507 14.3527C12.5307 14.3227 13.0107 14.1627 13.4007 13.8827C13.4907 13.8127 13.5807 13.7427 13.6607 13.6627ZM7.08071 3.55266C6.65071 3.31266 6.24071 3.12266 5.83071 2.97266C5.18071 2.74266 4.60071 2.63266 4.10071 2.65266C3.66071 2.68266 3.32071 2.80266 3.07071 3.03266C2.83071 3.28266 2.68071 3.65266 2.65071 4.10266C2.63071 4.60266 2.74071 5.18266 2.97071 5.83266C3.12071 6.24266 3.31071 6.65266 3.54071 7.07266C4.02071 6.41266 4.56071 5.78266 5.17071 5.17266C5.78071 4.57266 6.42071 4.02266 7.08071 3.55266ZM12.4607 7.08266C12.6907 6.66266 12.8807 6.24266 13.0307 5.84266C13.2707 5.19266 13.3807 4.61266 13.3507 4.11266C13.3307 3.65266 13.1907 3.30266 12.9507 3.06266C12.7107 2.82266 12.3607 2.68266 11.9007 2.66266C11.4007 2.64266 10.8307 2.74266 10.1707 2.98266C9.77071 3.12266 9.35071 3.31266 8.93071 3.55266C9.59071 4.03266 10.2207 4.57266 10.8307 5.18266C11.4407 5.78266 11.9807 6.42266 12.4607 7.08266ZM11.8907 8.00266C11.3907 8.74266 10.8007 9.44267 10.1207 10.1227C9.45071 10.8027 8.74071 11.3927 8.00071 11.8927C7.26071 11.3927 6.56071 10.8027 5.88071 10.1227C5.20071 9.45267 4.62071 8.74266 4.12071 8.00266C4.62071 7.26266 5.21071 6.56266 5.89071 5.88266C6.56071 5.21266 7.27071 4.62266 8.00071 4.12266C8.74071 4.62266 9.44071 5.21266 10.1207 5.89266C10.8007 6.56266 11.3907 7.27266 11.8907 8.00266ZM8.00071 9.00266C8.55071 9.00266 9.00071 8.55266 9.00071 8.00266C9.00071 7.45266 8.55071 7.00266 8.00071 7.00266C7.45071 7.00266 7.00071 7.45266 7.00071 8.00266C7.00071 8.55266 7.45071 9.00266 8.00071 9.00266ZM3.55071 8.93266C4.03071 9.59266 4.57071 10.2227 5.18071 10.8327C5.79071 11.4427 6.42071 11.9827 7.08071 12.4627C6.66071 12.6927 6.24071 12.8827 5.84071 13.0327C5.19071 13.2727 4.61071 13.3827 4.11071 13.3527C3.67071 13.3327 3.32071 13.2027 3.08071 12.9727C3.07071 12.9627 3.07071 12.9627 3.06071 12.9527C2.83071 12.7127 2.68071 12.3427 2.66071 11.9027C2.64071 11.4027 2.74071 10.8327 2.98071 10.1727C3.12071 9.77267 3.31071 9.35266 3.55071 8.93266ZM8.93071 12.4627C9.35071 12.6927 9.77071 12.8827 10.1707 13.0327C10.8207 13.2727 11.4007 13.3827 11.9007 13.3527C12.3607 13.3327 12.7107 13.1927 12.9507 12.9527C13.1807 12.7127 13.3307 12.3427 13.3507 11.9027C13.3707 11.4027 13.2707 10.8327 13.0307 10.1727C12.8807 9.76266 12.6907 9.35266 12.4607 8.93266C11.9807 9.59266 11.4407 10.2227 10.8307 10.8327C10.2207 11.4427 9.59071 11.9827 8.93071 12.4627Z"
25
- fill="currentColor"
26
- fill-rule="evenodd"
27
- />
28
- </svg>
29
- </template>
@@ -1,51 +0,0 @@
1
- <script setup lang="ts">
2
- withDefaults(
3
- defineProps<{
4
- size?: number
5
- }>(),
6
- {
7
- size: 24,
8
- },
9
- )
10
- </script>
11
-
12
- <template>
13
- <svg
14
- viewBox="0 0 48 48"
15
- xmlns="http://www.w3.org/2000/svg"
16
- xmlns:xlink="http://www.w3.org/1999/xlink"
17
- :width="size"
18
- :height="size"
19
- fill="none"
20
- >
21
- <rect id="阿里云百炼" width="48.000000" height="48.000000" x="0.000000" y="0.000000" />
22
- <g id="组合 5451">
23
- <path id="矢量 141" d="M7 14L7 34L15.6608 29L15.6608 19L7 14Z" fill="rgb(4,35,219)" fill-rule="nonzero" />
24
- <path id="矢量 142" d="M15.6606 19L15.6606 29L24.3206 24L15.6606 19Z" fill="rgb(28,84,228)" fill-rule="nonzero" />
25
- <path
26
- id="矢量 143"
27
- d="M24.3206 24L15.6606 19L32.9773 8.99414L41.6415 14L24.3206 24Z"
28
- fill="rgb(171,155,255)"
29
- fill-rule="nonzero"
30
- />
31
- <path
32
- id="矢量 144"
33
- d="M15.6608 19L7 14L24.3208 4L32.9775 8.99417L15.6608 19Z"
34
- fill="rgb(115,71,255)"
35
- fill-rule="nonzero"
36
- />
37
- <path
38
- id="矢量 145"
39
- d="M41.6415 34L24.3206 44L15.6606 39L32.9806 29L41.6415 34Z"
40
- fill="rgb(0,207,202)"
41
- fill-rule="nonzero"
42
- />
43
- <path
44
- id="矢量 146"
45
- d="M32.9808 29L41.6417 24L41.6417 34L32.9808 29ZM15.6608 39L7 34L24.3208 24L32.9808 29L15.6608 39Z"
46
- fill="rgb(0,235,210)"
47
- fill-rule="nonzero"
48
- />
49
- </g>
50
- </svg>
51
- </template>
@@ -1,29 +0,0 @@
1
- <script setup lang="ts">
2
- withDefaults(
3
- defineProps<{
4
- size?: number
5
- }>(),
6
- {
7
- size: 24,
8
- },
9
- )
10
- </script>
11
-
12
- <template>
13
- <svg
14
- viewBox="0 0 48 48"
15
- xmlns="http://www.w3.org/2000/svg"
16
- xmlns:xlink="http://www.w3.org/1999/xlink"
17
- :width="size"
18
- :height="size"
19
- fill="none"
20
- >
21
- <rect id="deepseek" width="48.000000" height="48.000000" x="0.000000" y="0.000000" />
22
- <path
23
- id="矢量 122"
24
- d="M47.4955 9.02617C46.9872 8.77197 46.7678 9.2565 46.4708 9.50273C46.3696 9.58218 46.2833 9.68546 46.1969 9.78076C45.4541 10.5909 44.5864 11.1232 43.4515 11.0596C41.7933 10.9643 40.3774 11.4965 39.1263 12.7912C38.8603 11.1946 37.9766 10.2415 36.6312 9.62983C35.9262 9.31213 35.2153 8.99437 34.7218 8.30328C34.3783 7.81082 34.2849 7.26274 34.1122 6.72263C34.003 6.39695 33.8937 6.06335 33.5264 6.00772C33.1263 5.94416 32.9704 6.28575 32.8135 6.5717C32.188 7.73935 31.9447 9.02617 31.9695 10.3288C32.0231 13.2599 33.2365 15.5952 35.6453 17.2554C35.9193 17.446 35.9898 17.6366 35.9034 17.9146C35.7396 18.4865 35.543 19.0426 35.3712 19.6145C35.2619 19.9799 35.0982 20.0593 34.7139 19.9004C33.3923 19.3365 32.2505 18.5024 31.2407 17.4937C29.528 15.8017 27.979 13.9351 26.0478 12.4735C25.6005 12.1363 25.1415 11.8159 24.6707 11.5124C22.6997 9.55836 24.9288 7.95383 25.4451 7.76317C25.9843 7.5646 25.6328 6.88148 23.8883 6.88941C22.1437 6.89733 20.5481 7.49312 18.5146 8.28743C18.2168 8.40656 17.904 8.49393 17.5843 8.56547C15.7375 8.20798 13.8212 8.12858 11.8185 8.35891C8.04843 8.78787 5.0369 10.6069 2.82276 13.7127C0.163756 17.446 -0.462801 21.6877 0.304738 26.1121C1.109 30.7748 3.44128 34.6352 7.02373 37.6536C10.7392 40.7832 15.0176 42.3163 19.8988 42.0224C22.8636 41.8476 26.164 41.4426 29.8874 38.2255C30.8266 38.7021 31.8126 38.8928 33.447 39.0357C34.707 39.1549 35.9193 38.9722 36.8576 38.7736C38.3281 38.4559 38.2258 37.0658 37.6946 36.8116C33.3844 34.7622 34.3306 35.5963 33.4708 34.9212C35.6611 32.276 38.9615 29.5276 40.2523 20.6233C40.3546 19.9164 40.2682 19.4715 40.2523 18.8996C40.2444 18.5501 40.3218 18.415 40.714 18.3754C41.7933 18.2483 42.8418 17.9464 43.804 17.4063C46.596 15.8494 47.7229 13.2917 47.989 10.2256C48.0288 9.75694 47.9811 9.2724 47.4955 9.02618M23.1604 36.621C18.9843 33.2689 16.9577 32.1648 16.1207 32.2125C15.3383 32.2601 15.4793 33.1736 15.6511 33.7694C15.8308 34.3572 16.0661 34.7622 16.3947 35.2786C16.6212 35.6202 16.7781 36.1285 16.1674 36.5098C14.822 37.3597 12.4837 36.2238 12.3745 36.1683C9.65197 34.5319 7.3752 32.3713 5.77166 29.4165C4.22276 26.5728 3.32418 23.5226 3.17522 20.2659C3.13549 19.4795 3.36287 19.2014 4.12844 19.0584C5.1437 18.8606 6.1634 18.8342 7.18755 18.979C11.4511 19.6146 15.0812 21.5606 18.1234 24.6426C19.86 26.398 21.1736 28.4951 22.5279 30.5445C23.9667 32.7208 25.5156 34.7941 27.4865 36.4939C28.1826 37.0896 28.7376 37.5424 29.2698 37.876C27.6662 38.0587 24.9904 38.0984 23.1604 36.621M25.1631 23.4749C25.1631 23.1254 25.4372 22.8474 25.7817 22.8474C25.8598 22.8487 25.93 22.862 25.9922 22.8871C26.0515 22.9099 26.106 22.941 26.1557 22.9805C26.2055 23.0199 26.2482 23.0659 26.2839 23.1185C26.3195 23.171 26.3465 23.2277 26.3649 23.2885C26.3832 23.3493 26.392 23.4114 26.3914 23.4749C26.3919 23.5159 26.3884 23.5564 26.3809 23.5967C26.3734 23.6369 26.362 23.676 26.3467 23.714C26.3314 23.752 26.3126 23.7881 26.2901 23.8223C26.2677 23.8566 26.2421 23.8883 26.2134 23.9175C26.1847 23.9467 26.1534 23.9727 26.1195 23.9957C26.0857 24.0187 26.0499 24.0381 26.0121 24.054C25.9744 24.0699 25.9355 24.0819 25.8953 24.09C25.8552 24.0982 25.8147 24.1023 25.7738 24.1025C25.733 24.1023 25.6926 24.0982 25.6527 24.09C25.6127 24.0818 25.574 24.0698 25.5364 24.0539C25.4989 24.038 25.4633 24.0185 25.4296 23.9955C25.396 23.9724 25.3649 23.9463 25.3365 23.9171C25.3081 23.8879 25.2828 23.8561 25.2607 23.8218C25.2386 23.7876 25.2201 23.7514 25.2052 23.7135C25.1903 23.6755 25.1793 23.6365 25.1722 23.5963C25.1652 23.5561 25.1621 23.5157 25.1631 23.4749ZM31.3817 26.7316C30.9835 26.8985 30.5844 27.0415 30.2001 27.0573C29.6064 27.0891 28.957 26.8429 28.6056 26.541C28.0575 26.0723 27.6662 25.8102 27.5024 24.9921C27.4319 24.6426 27.4706 24.1025 27.5332 23.7927C27.6742 23.1254 27.5173 22.6965 27.0566 22.3073C26.6813 21.9895 26.2037 21.9021 25.6795 21.9021C25.4838 21.9021 25.3042 21.8148 25.1711 21.7433C25.1387 21.7278 25.1082 21.7091 25.0797 21.6873C25.0511 21.6655 25.0251 21.641 25.0017 21.6138C24.9782 21.5867 24.9577 21.5574 24.9403 21.5259C24.9229 21.4945 24.9089 21.4617 24.8982 21.4274C24.8876 21.3931 24.8806 21.358 24.8772 21.3223C24.8738 21.2865 24.8741 21.2508 24.8781 21.2151C24.8821 21.1794 24.8897 21.1445 24.9009 21.1104C24.9122 21.0762 24.9267 21.0436 24.9447 21.0125C24.9993 20.9013 25.2654 20.6312 25.328 20.5836C26.0398 20.1705 26.861 20.3056 27.6196 20.6154C28.3235 20.9092 28.8547 21.4494 29.6223 22.212C30.4047 23.1334 30.5457 23.3876 30.9905 24.0786C31.343 24.6187 31.6637 25.1748 31.8822 25.8102C32.0161 26.2074 31.8434 26.533 31.3817 26.7316L31.3817 26.7316Z"
25
- fill="rgb(77,107,254)"
26
- fill-rule="nonzero"
27
- />
28
- </svg>
29
- </template>
@@ -1,29 +0,0 @@
1
- <script setup lang="ts">
2
- withDefaults(
3
- defineProps<{
4
- size?: number
5
- }>(),
6
- {
7
- size: 24,
8
- },
9
- )
10
- </script>
11
-
12
- <template>
13
- <svg
14
- xmlns="http://www.w3.org/2000/svg"
15
- :width="size"
16
- :height="size"
17
- viewBox="0 0 24 24"
18
- fill="none"
19
- stroke="currentColor"
20
- stroke-width="2"
21
- stroke-linecap="round"
22
- stroke-linejoin="round"
23
- class="lucide lucide-moon-icon lucide-moon"
24
- >
25
- <path
26
- d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"
27
- />
28
- </svg>
29
- </template>
@@ -1,29 +0,0 @@
1
- <script setup lang="ts">
2
- withDefaults(
3
- defineProps<{
4
- size?: number
5
- }>(),
6
- {
7
- size: 24,
8
- },
9
- )
10
- </script>
11
-
12
- <template>
13
- <svg
14
- xmlns="http://www.w3.org/2000/svg"
15
- xmlns:xlink="http://www.w3.org/1999/xlink"
16
- :width="size"
17
- :height="size"
18
- viewBox="0 0 16 16"
19
- fill="none"
20
- >
21
- <rect id="MCP" width="16.000000" height="16.000000" x="0.000000" y="0.000000" />
22
- <path
23
- id="矢量 665"
24
- d="M6.40942 2.00781C6.78857 1.9375 7.17603 1.89844 7.57178 1.89844L11.8848 1.89844C11.9937 1.89844 12.0945 1.91406 12.1875 1.95312C12.2803 1.99219 12.3652 2.05469 12.4424 2.13281C12.5193 2.20312 12.5769 2.28906 12.6155 2.38281C12.6541 2.47656 12.6733 2.57812 12.6733 2.6875L12.6733 5.40625L14.7217 5.40625C15.0015 5.40625 15.2217 5.625 15.2217 5.90625C15.2217 6.1875 15.0015 6.40625 14.7217 6.40625L12.6733 6.40625L12.6733 9.50781L14.7217 9.50781C15.0015 9.50781 15.2217 9.72656 15.2217 10.0078C15.2217 10.2891 15.0015 10.5078 14.7217 10.5078L12.6733 10.5078L12.6733 13.25C12.6733 13.3594 12.6541 13.4609 12.6155 13.5547C12.5769 13.6484 12.5193 13.7344 12.4424 13.8125C12.3652 13.8906 12.2803 13.9453 12.1875 13.9844C12.0945 14.0234 11.9937 14.0391 11.8848 14.0391L7.57178 14.0391C7.11963 14.0391 6.67798 13.9922 6.24731 13.8984L6.24731 13.8984L6.24731 13.8984C5.8938 13.8203 5.54736 13.7109 5.20825 13.5625C4.86572 13.4219 4.5415 13.2422 4.23584 13.0469C3.89355 12.8203 3.57446 12.5625 3.27856 12.2656C2.98267 11.9688 2.72192 11.6484 2.49658 11.3047L2.49658 11.3047C2.47144 11.2656 2.44678 11.2266 2.42261 11.1875C2.25269 10.9219 2.10449 10.6328 1.97754 10.3359C1.83423 9.99219 1.7229 9.64844 1.64429 9.29688L1.64429 9.29688C1.63232 9.24219 1.62109 9.1875 1.6106 9.13281C1.53711 8.75 1.50024 8.36719 1.50024 7.96875C1.50024 7.51562 1.54834 7.07812 1.64429 6.64844L1.64429 6.64844C1.7229 6.28906 1.83423 5.94531 1.97754 5.60938C2.12256 5.26562 2.29565 4.9375 2.49683 4.63281C2.51074 4.60938 2.52515 4.59375 2.53931 4.57031C2.75464 4.25 3.00122 3.95312 3.27856 3.67969C3.57446 3.38281 3.89355 3.11719 4.23584 2.89844L4.23584 2.89844C4.27393 2.86719 4.3125 2.84375 4.35132 2.82031C4.6228 2.64844 4.90845 2.5 5.20825 2.375C5.54736 2.23438 5.8938 2.125 6.24731 2.03906L6.24731 2.03906C6.30103 2.03125 6.35522 2.01562 6.40942 2.00781ZM6.44604 3.02344L6.44604 3.02344C6.81201 2.9375 7.18701 2.89844 7.57178 2.89844L11.6733 2.89844L11.6733 13.0391L7.57178 13.0391C7.18701 13.0391 6.81201 13 6.44629 12.9141L6.44604 12.9141C6.15747 12.8516 5.87476 12.7578 5.5979 12.6406C5.31494 12.5234 5.04736 12.3828 4.79468 12.2188L4.79468 12.2188C4.77661 12.2031 4.75854 12.1953 4.74072 12.1797C4.47168 12 4.21997 11.7891 3.9856 11.5547C3.7356 11.3047 3.51587 11.0391 3.32617 10.75L3.32617 10.75C3.30566 10.7188 3.28516 10.6797 3.26538 10.6484C3.12549 10.4297 3.00317 10.1875 2.89868 9.94531C2.78149 9.66406 2.69019 9.38281 2.62476 9.09375L2.62476 9.09375C2.54175 8.72656 2.50024 8.35156 2.50024 7.96875C2.50024 7.58594 2.54175 7.21094 2.62476 6.84375L2.62476 6.84375L2.62476 6.84375C2.62891 6.82812 2.63306 6.80469 2.63721 6.78906C2.70166 6.52344 2.78882 6.25781 2.89868 5.99219C3.01807 5.71094 3.16089 5.44531 3.32642 5.19531L3.32642 5.19531C3.33813 5.17188 3.3501 5.15625 3.3623 5.14062C3.54346 4.86719 3.75146 4.61719 3.9856 4.38281C4.2356 4.13281 4.50513 3.91406 4.79468 3.72656L4.79468 3.72656L4.79468 3.72656C5.04736 3.5625 5.31494 3.41406 5.5979 3.29688C5.87476 3.17969 6.15747 3.08594 6.44604 3.02344ZM6.64185 6.60938C6.64185 6.32812 6.42188 6.10938 6.14185 6.10938C5.86182 6.10938 5.64185 6.32812 5.64185 6.60938L5.64185 9.67188C5.64185 9.94531 5.86182 10.1719 6.14185 10.1719C6.42188 10.1719 6.64185 9.94531 6.64185 9.67188L6.64185 6.60938Z"
25
- fill="currentColor"
26
- fill-rule="evenodd"
27
- />
28
- </svg>
29
- </template>
@@ -1,35 +0,0 @@
1
- <script setup lang="ts">
2
- withDefaults(
3
- defineProps<{
4
- size?: number
5
- }>(),
6
- {
7
- size: 24,
8
- },
9
- )
10
- </script>
11
-
12
- <template>
13
- <svg
14
- xmlns="http://www.w3.org/2000/svg"
15
- :width="size"
16
- :height="size"
17
- viewBox="0 0 24 24"
18
- fill="none"
19
- stroke="currentColor"
20
- stroke-width="2"
21
- stroke-linecap="round"
22
- stroke-linejoin="round"
23
- class="lucide lucide-sun-icon lucide-sun"
24
- >
25
- <circle cx="12" cy="12" r="4" />
26
- <path d="M12 2v2" />
27
- <path d="M12 20v2" />
28
- <path d="m4.93 4.93 1.41 1.41" />
29
- <path d="m17.66 17.66 1.41 1.41" />
30
- <path d="M2 12h2" />
31
- <path d="M20 12h2" />
32
- <path d="m6.34 17.66-1.41 1.41" />
33
- <path d="m19.07 4.93-1.41 1.41" />
34
- </svg>
35
- </template>
@@ -1,36 +0,0 @@
1
- <script setup lang="ts">
2
- withDefaults(
3
- defineProps<{
4
- size?: number
5
- }>(),
6
- {
7
- size: 24,
8
- },
9
- )
10
- </script>
11
-
12
- <template>
13
- <svg
14
- xmlns="http://www.w3.org/2000/svg"
15
- xmlns:xlink="http://www.w3.org/1999/xlink"
16
- :width="size"
17
- :height="size"
18
- viewBox="0 0 16 16"
19
- fill="none"
20
- >
21
- <defs>
22
- <clipPath id="clip98_50741">
23
- <rect id="联网搜索" width="16.000000" height="16.000000" fill="white" fill-opacity="0" />
24
- </clipPath>
25
- </defs>
26
- <g clip-path="url(#clip98_50741)">
27
- <path
28
- id="形状"
29
- d="M8 2C4.67 2 2 4.68 2 8C2 11.31 4.67 14 8 14C11.31 14 14 11.31 14 8C14 4.68 11.31 2 8 2ZM8 1C11.86 1 15 4.13 15 8C15 11.86 11.86 15 8 15C4.12 15 1 11.86 1 8C1 4.13 4.12 1 8 1ZM8 2C6.71 2 5.5 4.65 5.5 8C5.5 11.34 6.71 14 8 14C9.27 14 10.5 11.34 10.5 8C10.5 4.65 9.27 2 8 2ZM8 1C10.03 1 11.5 4.16 11.5 8C11.5 11.83 10.03 15 8 15C5.95 15 4.5 11.83 4.5 8C4.5 4.16 5.95 1 8 1ZM14.5 7.5C14.77 7.5 15 7.71 15 8C15 8.27 14.77 8.5 14.5 8.5L1.5 8.5C1.21 8.5 1 8.27 1 8C1 7.71 1.21 7.5 1.5 7.5L14.5 7.5Z"
30
- fill="currentColor"
31
- fill-opacity="1.000000"
32
- fill-rule="nonzero"
33
- />
34
- </g>
35
- </svg>
36
- </template>
@@ -1,7 +0,0 @@
1
- export { default as IconDeepThink } from './IconDeepThink.vue'
2
- export { default as IconModelAliyunBailian } from './IconModelAliyunBailian.vue'
3
- export { default as IconModelDeepseek } from './IconModelDeepseek.vue'
4
- export { default as IconMoon } from './IconMoon.vue'
5
- export { default as IconPlugin } from './IconPlugin.vue'
6
- export { default as IconSun } from './IconSun.vue'
7
- export { default as IconWebSearch } from './IconWebSearch.vue'