@geminilight/mindos 0.6.27 → 0.6.29
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/app/app/api/a2a/agents/route.ts +9 -0
- package/app/app/api/a2a/delegations/route.ts +9 -0
- package/app/app/api/a2a/discover/route.ts +2 -0
- package/app/app/api/a2a/route.ts +6 -6
- package/app/app/api/acp/detect/route.ts +91 -0
- package/app/app/api/acp/registry/route.ts +31 -0
- package/app/app/api/acp/session/route.ts +55 -0
- package/app/app/layout.tsx +2 -0
- package/app/components/DirView.tsx +64 -2
- package/app/components/FileTree.tsx +19 -0
- package/app/components/GuideCard.tsx +7 -17
- package/app/components/MarkdownView.tsx +2 -0
- package/app/components/SearchModal.tsx +234 -80
- package/app/components/agents/AgentDetailContent.tsx +51 -6
- package/app/components/agents/AgentsContentPage.tsx +24 -6
- package/app/components/agents/AgentsOverviewSection.tsx +11 -0
- package/app/components/agents/AgentsPanelA2aTab.tsx +445 -0
- package/app/components/agents/SkillDetailPopover.tsx +4 -9
- package/app/components/agents/agents-content-model.ts +2 -2
- package/app/components/ask/AskContent.tsx +8 -0
- package/app/components/help/HelpContent.tsx +74 -18
- package/app/components/panels/AgentsPanel.tsx +1 -0
- package/app/components/panels/AgentsPanelAgentDetail.tsx +5 -8
- package/app/components/panels/AgentsPanelAgentListRow.tsx +10 -1
- package/app/components/panels/AgentsPanelHubNav.tsx +8 -1
- package/app/components/panels/EchoPanel.tsx +5 -1
- package/app/components/panels/EchoSidebarStats.tsx +136 -0
- package/app/components/settings/KnowledgeTab.tsx +3 -6
- package/app/components/settings/McpSkillsSection.tsx +4 -5
- package/app/components/settings/McpTab.tsx +6 -8
- package/app/components/setup/StepSecurity.tsx +4 -5
- package/app/components/setup/index.tsx +5 -11
- package/app/components/ui/Toaster.tsx +39 -0
- package/app/hooks/useA2aRegistry.ts +6 -1
- package/app/hooks/useAcpDetection.ts +65 -0
- package/app/hooks/useAcpRegistry.ts +51 -0
- package/app/hooks/useDelegationHistory.ts +49 -0
- package/app/lib/a2a/client.ts +49 -5
- package/app/lib/a2a/orchestrator.ts +0 -1
- package/app/lib/a2a/task-handler.ts +4 -4
- package/app/lib/a2a/types.ts +15 -0
- package/app/lib/acp/acp-tools.ts +93 -0
- package/app/lib/acp/bridge.ts +138 -0
- package/app/lib/acp/index.ts +24 -0
- package/app/lib/acp/registry.ts +135 -0
- package/app/lib/acp/session.ts +264 -0
- package/app/lib/acp/subprocess.ts +209 -0
- package/app/lib/acp/types.ts +136 -0
- package/app/lib/agent/tools.ts +2 -1
- package/app/lib/i18n/_core.ts +22 -0
- package/app/lib/i18n/index.ts +35 -0
- package/app/lib/i18n/modules/ai-chat.ts +215 -0
- package/app/lib/i18n/modules/common.ts +71 -0
- package/app/lib/i18n/modules/features.ts +153 -0
- package/app/lib/i18n/modules/knowledge.ts +425 -0
- package/app/lib/i18n/modules/navigation.ts +151 -0
- package/app/lib/i18n/modules/onboarding.ts +523 -0
- package/app/lib/i18n/modules/panels.ts +1052 -0
- package/app/lib/i18n/modules/settings.ts +585 -0
- package/app/lib/i18n-en.ts +2 -1518
- package/app/lib/i18n-zh.ts +2 -1542
- package/app/lib/i18n.ts +3 -6
- package/app/lib/toast.ts +79 -0
- package/bin/cli.js +25 -25
- package/bin/commands/file.js +29 -2
- package/bin/commands/space.js +249 -91
- package/package.json +1 -1
|
@@ -0,0 +1,1052 @@
|
|
|
1
|
+
// panels + echoPages + agentsContent
|
|
2
|
+
|
|
3
|
+
export const panelsEn = {
|
|
4
|
+
panels: {
|
|
5
|
+
agents: {
|
|
6
|
+
title: 'Agents',
|
|
7
|
+
connected: 'connected',
|
|
8
|
+
refresh: 'Refresh agent status',
|
|
9
|
+
retry: 'Retry',
|
|
10
|
+
failedToLoad: 'Failed to load agents',
|
|
11
|
+
mcpServer: 'MCP Server',
|
|
12
|
+
stopped: 'Stopped',
|
|
13
|
+
sectionConnected: 'Connected',
|
|
14
|
+
sectionDetected: 'Detected',
|
|
15
|
+
sectionNotDetected: 'Not Detected',
|
|
16
|
+
noAgents: 'No agents detected.',
|
|
17
|
+
autoRefresh: 'Auto-refresh every 30s',
|
|
18
|
+
connect: 'Connect',
|
|
19
|
+
installing: 'Installing...',
|
|
20
|
+
install: 'Install',
|
|
21
|
+
installSuccess: 'Installed',
|
|
22
|
+
installFailed: 'Install failed',
|
|
23
|
+
retryInstall: 'Retry',
|
|
24
|
+
// Snippet section
|
|
25
|
+
copyConfig: 'Copy Config',
|
|
26
|
+
copied: 'Copied!',
|
|
27
|
+
transportLocal: 'Local',
|
|
28
|
+
transportRemote: 'Remote',
|
|
29
|
+
configPath: 'Config path',
|
|
30
|
+
noAuthWarning: 'No auth token — set in Advanced Config',
|
|
31
|
+
// Skills section
|
|
32
|
+
skillsTitle: 'Skills',
|
|
33
|
+
skillsActive: 'active',
|
|
34
|
+
builtinSkills: 'Built-in',
|
|
35
|
+
newSkill: '+ New',
|
|
36
|
+
// Footer
|
|
37
|
+
advancedConfig: 'Advanced Config →',
|
|
38
|
+
// Hub nav (aligned with Discover panel rows)
|
|
39
|
+
navOverview: 'Overview',
|
|
40
|
+
navMcp: 'MCP',
|
|
41
|
+
navSkills: 'Skills',
|
|
42
|
+
navNetwork: 'Network',
|
|
43
|
+
// A2A tab
|
|
44
|
+
a2aTabTitle: 'Remote Agents',
|
|
45
|
+
a2aTabEmpty: 'No remote agents',
|
|
46
|
+
a2aTabEmptyHint: 'Discover agents to enable cross-agent delegation.',
|
|
47
|
+
a2aRemoveAgent: 'Remove',
|
|
48
|
+
rosterLabel: 'Your setup',
|
|
49
|
+
notFoundDetail: 'This agent app was not detected on this machine. Install it, then refresh the list.',
|
|
50
|
+
skillsEmptyHint: 'Enable and edit skills in MCP & Skills settings.',
|
|
51
|
+
backToList: 'Back',
|
|
52
|
+
closeAgentDetail: 'Close',
|
|
53
|
+
agentDetailPanelAria: 'Agent connection configuration',
|
|
54
|
+
agentDetailTransport: 'Transport',
|
|
55
|
+
agentDetailSnippet: 'Config snippet',
|
|
56
|
+
// A2A
|
|
57
|
+
a2aLabel: 'A2A',
|
|
58
|
+
a2aReady: 'A2A Ready',
|
|
59
|
+
a2aChecking: 'Checking A2A...',
|
|
60
|
+
a2aUnavailable: 'A2A Unavailable',
|
|
61
|
+
a2aRemote: 'Remote',
|
|
62
|
+
a2aDiscover: 'Discover Remote Agent',
|
|
63
|
+
a2aDiscoverHint: 'Connect to an external A2A agent by URL',
|
|
64
|
+
a2aDiscoverPlaceholder: 'https://agent.example.com',
|
|
65
|
+
a2aDiscovering: 'Discovering...',
|
|
66
|
+
a2aDiscoverSuccess: 'Agent discovered!',
|
|
67
|
+
a2aDiscoverFailed: 'No A2A agent found at this URL',
|
|
68
|
+
a2aDiscoverFailedHint: 'The server may not support the A2A protocol. Check the URL and try again.',
|
|
69
|
+
a2aSkills: 'Skills',
|
|
70
|
+
a2aEndpoint: 'Endpoint',
|
|
71
|
+
a2aVersion: 'Version',
|
|
72
|
+
a2aCapabilities: 'A2A Capabilities',
|
|
73
|
+
a2aStatus: 'Status',
|
|
74
|
+
a2aConnected: 'Connected & A2A Ready',
|
|
75
|
+
a2aNoRemote: 'No remote agents',
|
|
76
|
+
a2aNoRemoteHint: 'Discover remote agents to enable cross-agent delegation.',
|
|
77
|
+
a2aDelegations: 'Recent Delegations',
|
|
78
|
+
a2aDelegationsEmpty: 'No delegations yet',
|
|
79
|
+
a2aDelegationCompleted: 'Completed',
|
|
80
|
+
a2aDelegationFailed: 'Failed',
|
|
81
|
+
a2aDelegationPending: 'Pending',
|
|
82
|
+
// ACP / Network tab
|
|
83
|
+
acpSectionTitle: 'ACP Agents',
|
|
84
|
+
acpSectionDesc: (n: number) => `${n} agent${n !== 1 ? 's' : ''} available`,
|
|
85
|
+
acpTransportNpx: 'npx',
|
|
86
|
+
acpTransportBinary: 'binary',
|
|
87
|
+
acpTransportUvx: 'uvx',
|
|
88
|
+
acpTransportStdio: 'stdio',
|
|
89
|
+
acpUseAgent: 'Use',
|
|
90
|
+
acpComingSoon: 'Coming soon \u2014 use Ask AI to invoke',
|
|
91
|
+
acpReady: 'Ready',
|
|
92
|
+
acpNotInstalled: 'Not Installed',
|
|
93
|
+
acpScan: 'Scan Local',
|
|
94
|
+
acpInstallHint: (cmd: string) => `Install with: ${cmd}`,
|
|
95
|
+
acpLoading: 'Loading ACP registry\u2026',
|
|
96
|
+
acpLoadFailed: 'Failed to load ACP registry.',
|
|
97
|
+
acpRetry: 'Retry',
|
|
98
|
+
networkEmptyTitle: 'Connect to the agent ecosystem',
|
|
99
|
+
networkEmptyDesc: 'Discover remote agents or browse coding agents from the ACP registry.',
|
|
100
|
+
networkDiscoverBtn: 'Discover Agent',
|
|
101
|
+
networkBrowseBtn: 'Browse Registry',
|
|
102
|
+
},
|
|
103
|
+
plugins: {
|
|
104
|
+
title: 'Plugins',
|
|
105
|
+
active: 'active',
|
|
106
|
+
noPlugins: 'No plugins registered',
|
|
107
|
+
core: 'Core',
|
|
108
|
+
coreDisabled: 'Core plugin — cannot be disabled',
|
|
109
|
+
footer: 'Plugins customize how files render. Core plugins cannot be disabled.',
|
|
110
|
+
ready: 'Ready — click to open',
|
|
111
|
+
disabled: 'Disabled',
|
|
112
|
+
noFile: 'Entry file not found',
|
|
113
|
+
createFile: 'Create {file} to activate',
|
|
114
|
+
},
|
|
115
|
+
echo: {
|
|
116
|
+
title: 'Echo',
|
|
117
|
+
aboutYouTitle: 'About you',
|
|
118
|
+
aboutYouDesc: 'Notes that point back to you',
|
|
119
|
+
continuedTitle: 'Unfinished',
|
|
120
|
+
continuedDesc: 'Drafts and open loops',
|
|
121
|
+
dailyEchoTitle: 'Today',
|
|
122
|
+
dailyDesc: 'One line, no pressure',
|
|
123
|
+
pastYouTitle: 'Past self',
|
|
124
|
+
pastYouDesc: 'A glimpse at another time',
|
|
125
|
+
intentGrowthTitle: 'Growth',
|
|
126
|
+
growthDesc: 'The direction you\'re pushing',
|
|
127
|
+
},
|
|
128
|
+
discover: {
|
|
129
|
+
title: 'Discover',
|
|
130
|
+
useCases: 'Use Cases',
|
|
131
|
+
useCasesDesc: 'Try MindOS scenarios hands-on',
|
|
132
|
+
pluginMarket: 'Plugin Market',
|
|
133
|
+
pluginMarketDesc: 'Extend how files are rendered and edited',
|
|
134
|
+
skillMarket: 'Skill Market',
|
|
135
|
+
skillMarketDesc: 'Add new abilities to your AI agents',
|
|
136
|
+
spaceTemplates: 'Space Templates',
|
|
137
|
+
spaceTemplatesDesc: 'Pre-built space structures for common workflows',
|
|
138
|
+
comingSoon: 'Coming soon',
|
|
139
|
+
viewAll: 'View all use cases',
|
|
140
|
+
tryIt: 'Try',
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
echoPages: {
|
|
144
|
+
parent: 'Echo',
|
|
145
|
+
heroKicker: 'Echo',
|
|
146
|
+
segmentNavAria: 'Echo sections',
|
|
147
|
+
snapshotBadge: 'Local · private',
|
|
148
|
+
factsHeading: 'Snapshot',
|
|
149
|
+
snapshotAboutYouTitle: 'Clues gather here',
|
|
150
|
+
snapshotAboutYouBody:
|
|
151
|
+
'Notes whose paths, links, or titles point back to you will surface here — each one opens in the editor. Use the button below to explore with Agent.',
|
|
152
|
+
snapshotContinuedTitle: 'Drafts and open loops',
|
|
153
|
+
snapshotContinuedBody:
|
|
154
|
+
'Untitled drafts, half-finished pieces, and unchecked tasks will collect here once the library feed is connected.',
|
|
155
|
+
snapshotDailyTitle: 'Start with one line',
|
|
156
|
+
snapshotDailyBody:
|
|
157
|
+
'Your line saves in this browser the moment you leave the field. One line is enough — open Agent when you want depth.',
|
|
158
|
+
snapshotPastYouTitle: 'A glimpse at another time',
|
|
159
|
+
snapshotPastYouBody:
|
|
160
|
+
'A random older note will surface here — not a diff tool, just a gentle glance at who you were. Coming soon.',
|
|
161
|
+
snapshotGrowthTitle: 'Intent lives here',
|
|
162
|
+
snapshotGrowthBody:
|
|
163
|
+
'Write one sentence about the direction you are pushing. It stays on this device and can change over time.',
|
|
164
|
+
insightTitle: 'Insight',
|
|
165
|
+
insightShow: 'Show insight',
|
|
166
|
+
insightHide: 'Hide insight',
|
|
167
|
+
insightHint:
|
|
168
|
+
'Uses only what is visible on this page—including this snapshot and anything you typed here—not your full library. Configure AI under Settings first.',
|
|
169
|
+
generateInsight: 'Generate insight',
|
|
170
|
+
generateInsightNoAi: 'Add an API key under Settings → AI (or set env vars), then refresh this page.',
|
|
171
|
+
insightGenerating: 'Generating…',
|
|
172
|
+
insightErrorPrefix: 'Something went wrong:',
|
|
173
|
+
insightRetry: 'Try again',
|
|
174
|
+
continueAgent: 'Open in Agent',
|
|
175
|
+
continuedDrafts: 'Drafts',
|
|
176
|
+
continuedTodos: 'Open loops',
|
|
177
|
+
subEmptyHint: 'Items will appear in each column once the library feed is connected.',
|
|
178
|
+
dailyLineLabel: 'A line for today',
|
|
179
|
+
dailyLinePlaceholder: 'Write one quiet line…',
|
|
180
|
+
dailySavedNote: 'Saved in this browser; visible only on this device.',
|
|
181
|
+
savedFlash: 'Saved',
|
|
182
|
+
dailyAskPrefill: (line: string) =>
|
|
183
|
+
`Echo / Daily — reflect on this line:\n\n${line.trim() || '(empty line)'}`,
|
|
184
|
+
pastYouDrawLabel: 'A glimpse from the past',
|
|
185
|
+
pastYouAnother: 'Draw another moment',
|
|
186
|
+
pastYouComingSoon: 'Coming soon',
|
|
187
|
+
pastYouDisabledHint: 'Sampling from your timeline is on the way — soon a tap here will surface an old excerpt.',
|
|
188
|
+
growthIntentLabel: 'What you are steering toward',
|
|
189
|
+
growthIntentPlaceholder: 'Write your current intent…',
|
|
190
|
+
growthSavedNote: 'Saved on this device.',
|
|
191
|
+
aboutYouLead: 'Notes and links that point back to you — surfaced, not searched.',
|
|
192
|
+
continuedLead: 'Drafts, open tasks, and thoughts you left mid-sentence.',
|
|
193
|
+
dailyLead: 'One line. No pressure. Open Agent when you want depth.',
|
|
194
|
+
pastYouLead: 'A gentle glimpse at who you were at another time.',
|
|
195
|
+
growthLead: 'The direction you are pushing — and how it drifts.',
|
|
196
|
+
},
|
|
197
|
+
agentsContent: {
|
|
198
|
+
title: 'Agents',
|
|
199
|
+
subtitle: 'Connections, skills, and status at a glance.',
|
|
200
|
+
workspacePulse: {
|
|
201
|
+
title: 'Workspace Pulse',
|
|
202
|
+
connected: 'Connected',
|
|
203
|
+
detected: 'Detected',
|
|
204
|
+
notFound: 'Not found',
|
|
205
|
+
risk: 'Risks',
|
|
206
|
+
enabledSkills: 'Skills on',
|
|
207
|
+
healthy: 'Healthy',
|
|
208
|
+
needsAttention: (n: number) => `${n} issue${n !== 1 ? 's' : ''}`,
|
|
209
|
+
},
|
|
210
|
+
navOverview: 'Overview',
|
|
211
|
+
navMcp: 'MCP',
|
|
212
|
+
navSkills: 'Skills',
|
|
213
|
+
navNetwork: 'Network',
|
|
214
|
+
a2aTabTitle: 'Remote Agents',
|
|
215
|
+
a2aTabEmptyHint: 'Discover agents to enable cross-agent delegation.',
|
|
216
|
+
backToOverview: 'Back to Agents',
|
|
217
|
+
na: 'N/A',
|
|
218
|
+
status: {
|
|
219
|
+
connected: 'Connected',
|
|
220
|
+
detected: 'Detected',
|
|
221
|
+
notFound: 'Not found',
|
|
222
|
+
},
|
|
223
|
+
overview: {
|
|
224
|
+
connected: 'Connected',
|
|
225
|
+
detected: 'Detected',
|
|
226
|
+
notFound: 'Not found',
|
|
227
|
+
riskQueue: 'Attention',
|
|
228
|
+
noRisk: 'All clear — no issues detected.',
|
|
229
|
+
usagePulse: 'All agents',
|
|
230
|
+
nextAction: 'Suggested next',
|
|
231
|
+
nextActionHint: 'Reconnect detected agents first, then enable remaining skills.',
|
|
232
|
+
riskLevelError: 'Error',
|
|
233
|
+
riskLevelWarn: 'Warning',
|
|
234
|
+
na: 'N/A',
|
|
235
|
+
colAgent: 'Agent',
|
|
236
|
+
colStatus: 'Status',
|
|
237
|
+
colMcp: 'MCP',
|
|
238
|
+
colSkills: 'Skills',
|
|
239
|
+
colMode: 'Mode',
|
|
240
|
+
colRuntime: 'Runtime',
|
|
241
|
+
pulseMcp: 'MCP',
|
|
242
|
+
pulseTools: 'Tools',
|
|
243
|
+
mcpOffline: 'Offline',
|
|
244
|
+
toolsUnit: (n: number) => `${n} tools`,
|
|
245
|
+
enabledUnit: (n: number) => `${n} enabled`,
|
|
246
|
+
agentCount: (n: number) => `${n} agent${n !== 1 ? 's' : ''}`,
|
|
247
|
+
runtimeActive: 'Active',
|
|
248
|
+
riskMcpStopped: 'MCP server is not running.',
|
|
249
|
+
riskDetected: (n: number) => `${n} detected agent(s) need configuration.`,
|
|
250
|
+
riskSkillsDisabled: 'All skills are disabled.',
|
|
251
|
+
},
|
|
252
|
+
mcp: {
|
|
253
|
+
title: 'MCP Connections',
|
|
254
|
+
refresh: 'Refresh',
|
|
255
|
+
connectionGraph: 'Server connections across agents',
|
|
256
|
+
tabs: {
|
|
257
|
+
manage: 'Manage',
|
|
258
|
+
topology: 'Topology',
|
|
259
|
+
byAgent: 'By Agent',
|
|
260
|
+
byServer: 'By MCP Server',
|
|
261
|
+
},
|
|
262
|
+
searchPlaceholder: 'Search agents...',
|
|
263
|
+
installMindos: 'Install MindOS MCP',
|
|
264
|
+
installed: 'Installed',
|
|
265
|
+
mcpServerLabel: 'MCP Server',
|
|
266
|
+
searchServersPlaceholder: 'Search MCP servers...',
|
|
267
|
+
serverAgentCount: (n: number) => `${n} agent${n !== 1 ? 's' : ''}`,
|
|
268
|
+
emptyState: 'No agents match current filters.',
|
|
269
|
+
resultCount: (n: number) => `${n} agents`,
|
|
270
|
+
filteredSummaryTitle: 'Filtered status summary',
|
|
271
|
+
filteredConnected: (n: number) => `Connected: ${n}`,
|
|
272
|
+
filteredDetected: (n: number) => `Detected: ${n}`,
|
|
273
|
+
filteredNotFound: (n: number) => `Not found: ${n}`,
|
|
274
|
+
crossAgentServersTitle: 'MCP Servers',
|
|
275
|
+
crossAgentServersEmpty: 'No MCP servers detected.',
|
|
276
|
+
crossAgentServerAgents: (names: string) => `Used by ${names}`,
|
|
277
|
+
configVisibilityTitle: 'Configuration',
|
|
278
|
+
hiddenRootDetected: (n: number, total: number) => `Hidden roots: ${n}/${total}`,
|
|
279
|
+
runtimeSignalDetected: (n: number, total: number) => `Runtime signals: ${n}/${total}`,
|
|
280
|
+
riskQueueTitle: 'Attention',
|
|
281
|
+
riskMcpStopped: 'MCP server is not running.',
|
|
282
|
+
riskDetected: (n: number) => `${n} detected agent(s) need configuration.`,
|
|
283
|
+
riskNotFound: (n: number) => `${n} agent(s) not found on this machine.`,
|
|
284
|
+
riskSkillsDisabled: 'All skills are disabled.',
|
|
285
|
+
bulkReconnectFiltered: 'Reconnect all',
|
|
286
|
+
bulkRunning: 'Running reconnect...',
|
|
287
|
+
bulkSummary: (ok: number, failed: number) => `Reconnected ${ok}, failed ${failed}.`,
|
|
288
|
+
transportFilters: {
|
|
289
|
+
all: 'All transport',
|
|
290
|
+
stdio: 'stdio',
|
|
291
|
+
http: 'http',
|
|
292
|
+
other: 'other',
|
|
293
|
+
},
|
|
294
|
+
filters: {
|
|
295
|
+
all: 'All',
|
|
296
|
+
connected: 'Connected',
|
|
297
|
+
detected: 'Detected',
|
|
298
|
+
notFound: 'Not found',
|
|
299
|
+
},
|
|
300
|
+
table: {
|
|
301
|
+
agent: 'Agent',
|
|
302
|
+
status: 'Status',
|
|
303
|
+
transport: 'Transport',
|
|
304
|
+
actions: 'Actions',
|
|
305
|
+
},
|
|
306
|
+
actions: {
|
|
307
|
+
copySnippet: 'Copy Snippet',
|
|
308
|
+
copied: 'Copied',
|
|
309
|
+
testConnection: 'Test Connection',
|
|
310
|
+
reconnect: 'Reconnect',
|
|
311
|
+
},
|
|
312
|
+
addAgent: 'Add',
|
|
313
|
+
removeFromServer: 'Remove',
|
|
314
|
+
confirmRemoveTitle: 'Remove from server?',
|
|
315
|
+
confirmRemoveMessage: (agent: string, server: string) => `Remove "${agent}" from "${server}"? This requires editing the agent config file.`,
|
|
316
|
+
cancel: 'Cancel',
|
|
317
|
+
noAvailableAgents: 'All agents already connected.',
|
|
318
|
+
manualRemoveHint: 'Flagged for removal — edit the agent config to finalize.',
|
|
319
|
+
reconnectAllInServer: 'Reconnect all',
|
|
320
|
+
reconnectAllRunning: 'Reconnecting...',
|
|
321
|
+
reconnectAllDone: (ok: number, failed: number) => `Done: ${ok} reconnected${failed > 0 ? `, ${failed} failed` : ''}.`,
|
|
322
|
+
serverTransport: (t: string) => `Transport: ${t}`,
|
|
323
|
+
},
|
|
324
|
+
skills: {
|
|
325
|
+
title: 'Skills',
|
|
326
|
+
summaryTitle: 'Skill Status',
|
|
327
|
+
summaryEnabled: (n: number) => `Enabled: ${n}`,
|
|
328
|
+
summaryDisabled: (n: number) => `Disabled: ${n}`,
|
|
329
|
+
summaryAttention: (n: number) => `Needs attention: ${n}`,
|
|
330
|
+
crossAgentSkillsTitle: 'Installed Skills',
|
|
331
|
+
crossAgentSkillsEmpty: 'No skills detected.',
|
|
332
|
+
crossAgentSkillAgents: (names: string) => `Installed in ${names}`,
|
|
333
|
+
capabilityGroups: 'Skill management across agents',
|
|
334
|
+
registrySummaryTitle: 'Skill Registry',
|
|
335
|
+
registryUniversal: (n: number) => `Universal: ${n}`,
|
|
336
|
+
registryAdditional: (n: number) => `Additional: ${n}`,
|
|
337
|
+
registryUnsupported: (n: number) => `Unsupported: ${n}`,
|
|
338
|
+
registryHiddenRoots: (n: number, total: number) => `Hidden roots: ${n}/${total}`,
|
|
339
|
+
tabs: {
|
|
340
|
+
manage: 'Manage',
|
|
341
|
+
matrix: 'Matrix',
|
|
342
|
+
bySkill: 'By Skill',
|
|
343
|
+
byAgent: 'By Agent',
|
|
344
|
+
},
|
|
345
|
+
searchPlaceholder: 'Search skills...',
|
|
346
|
+
agentSkillMode: 'Skill Mode',
|
|
347
|
+
agentMcpServers: 'MCP Servers',
|
|
348
|
+
agentNativeSkills: 'Native Skills',
|
|
349
|
+
agentMindosSkills: 'MindOS Skills',
|
|
350
|
+
noAgentsYet: 'No agents detected yet.',
|
|
351
|
+
moreSkills: (n: number) => `+${n} more`,
|
|
352
|
+
sourceAll: 'All',
|
|
353
|
+
sourceBuiltin: 'Built-in',
|
|
354
|
+
sourceUser: 'Custom',
|
|
355
|
+
sourceNative: 'Native',
|
|
356
|
+
summaryNative: (n: number) => `Native: ${n}`,
|
|
357
|
+
statusAll: 'All status',
|
|
358
|
+
statusEnabled: 'Enabled',
|
|
359
|
+
statusDisabled: 'Disabled',
|
|
360
|
+
statusAttention: 'Needs attention',
|
|
361
|
+
capabilityAll: 'All capabilities',
|
|
362
|
+
bulkEnableFiltered: 'Enable all',
|
|
363
|
+
bulkDisableFiltered: 'Disable all',
|
|
364
|
+
bulkRunning: 'Applying changes...',
|
|
365
|
+
bulkNoChanges: 'No skill changes needed.',
|
|
366
|
+
bulkAllSucceeded: (n: number) => `Updated ${n} skills.`,
|
|
367
|
+
bulkPartialFailed: (ok: number, failed: number) => `Updated ${ok}, failed ${failed}.`,
|
|
368
|
+
resultCount: (n: number) => `${n} skills`,
|
|
369
|
+
matrixAgentFocusLabel: 'Agent focus',
|
|
370
|
+
matrixAgentFocusAll: 'All agents',
|
|
371
|
+
matrixColumnSkill: 'Skill',
|
|
372
|
+
matrixEnabled: 'Enabled',
|
|
373
|
+
matrixDisabled: 'Disabled',
|
|
374
|
+
matrixUnsupported: 'Unsupported',
|
|
375
|
+
matrixNoAgents: 'No agents available for matrix.',
|
|
376
|
+
noSkillsMatchFilter: 'No skills match current filters.',
|
|
377
|
+
matrixEmpty: 'No skills match current filters.',
|
|
378
|
+
addAgentToSkill: 'Add',
|
|
379
|
+
removeAgentFromSkill: 'Remove',
|
|
380
|
+
confirmRemoveAgentTitle: 'Remove from skill?',
|
|
381
|
+
confirmRemoveAgentMessage: (agent: string, skill: string) => `Remove "${agent}" from "${skill}"? This requires editing the agent config file.`,
|
|
382
|
+
cancelSkillAction: 'Cancel',
|
|
383
|
+
noAvailableAgentsForSkill: 'All agents already have this skill.',
|
|
384
|
+
manualSkillHint: 'Flagged — edit the agent config to finalize.',
|
|
385
|
+
skillDescription: 'Description',
|
|
386
|
+
skillNoDescription: 'No description available.',
|
|
387
|
+
skillDeleteAction: 'Delete',
|
|
388
|
+
confirmDeleteSkillTitle: 'Delete skill?',
|
|
389
|
+
confirmDeleteSkillMessage: (name: string) => `Permanently delete skill "${name}"? This cannot be undone.`,
|
|
390
|
+
skillDeleted: 'Skill deleted.',
|
|
391
|
+
skillDeleteFailed: 'Failed to delete skill.',
|
|
392
|
+
copyInstallCmd: 'Copy install command',
|
|
393
|
+
installCmdCopied: 'Copied!',
|
|
394
|
+
skillAgentCount: (n: number) => `${n} agent${n === 1 ? '' : 's'}`,
|
|
395
|
+
quickStatsMcp: (n: number) => `${n} MCP`,
|
|
396
|
+
quickStatsSkills: (n: number) => `${n} skills`,
|
|
397
|
+
showAllNative: (n: number) => `Show all ${n}`,
|
|
398
|
+
collapseNative: 'Collapse',
|
|
399
|
+
emptyGroup: 'No skills in this group.',
|
|
400
|
+
groupLabels: {
|
|
401
|
+
research: 'Research',
|
|
402
|
+
coding: 'Coding',
|
|
403
|
+
docs: 'Docs',
|
|
404
|
+
ops: 'Ops',
|
|
405
|
+
memory: 'Memory',
|
|
406
|
+
},
|
|
407
|
+
skillPopover: {
|
|
408
|
+
close: 'Close',
|
|
409
|
+
source: 'Source',
|
|
410
|
+
sourceBuiltin: 'Built-in',
|
|
411
|
+
sourceUser: 'Custom',
|
|
412
|
+
sourceNative: 'Native',
|
|
413
|
+
capability: 'Capability',
|
|
414
|
+
path: 'File path',
|
|
415
|
+
enabled: 'Enabled',
|
|
416
|
+
disabled: 'Disabled',
|
|
417
|
+
agents: 'Agents',
|
|
418
|
+
noAgents: 'No agents have this skill.',
|
|
419
|
+
content: 'Skill content',
|
|
420
|
+
loading: 'Loading...',
|
|
421
|
+
loadFailed: 'Failed to load skill content.',
|
|
422
|
+
retry: 'Retry',
|
|
423
|
+
copyContent: 'Copy',
|
|
424
|
+
copied: 'Copied!',
|
|
425
|
+
noDescription: 'No description available.',
|
|
426
|
+
deleteSkill: 'Delete',
|
|
427
|
+
confirmDeleteTitle: 'Delete skill?',
|
|
428
|
+
confirmDeleteMessage: (name: string) => `Permanently delete skill "${name}"? This cannot be undone.`,
|
|
429
|
+
confirmDeleteAction: 'Delete',
|
|
430
|
+
cancelAction: 'Cancel',
|
|
431
|
+
deleted: 'Skill deleted.',
|
|
432
|
+
deleteFailed: 'Failed to delete skill.',
|
|
433
|
+
},
|
|
434
|
+
},
|
|
435
|
+
detail: {
|
|
436
|
+
healthStripTitle: 'Status',
|
|
437
|
+
healthConnected: 'Connected',
|
|
438
|
+
healthInstalled: 'MCP installed',
|
|
439
|
+
healthRuntimeSignals: 'Runtime signals',
|
|
440
|
+
healthConfiguredServers: 'Configured servers',
|
|
441
|
+
healthInstalledSkills: 'Native installed skills',
|
|
442
|
+
identity: 'Identity',
|
|
443
|
+
connection: 'Connection',
|
|
444
|
+
capabilities: 'Capability Profile',
|
|
445
|
+
skillAssignments: 'Skill Assignments',
|
|
446
|
+
runtimeSignals: 'Runtime',
|
|
447
|
+
recentActivity: 'Recent Activity',
|
|
448
|
+
spaceReach: 'Space Reach',
|
|
449
|
+
agentKey: 'Agent key',
|
|
450
|
+
status: 'Status',
|
|
451
|
+
transport: 'Transport',
|
|
452
|
+
endpoint: 'Endpoint',
|
|
453
|
+
port: 'Port',
|
|
454
|
+
auth: 'Auth',
|
|
455
|
+
authConfigured: 'Configured',
|
|
456
|
+
authMissing: 'Missing',
|
|
457
|
+
projectScope: 'Project scope',
|
|
458
|
+
globalScope: 'Global scope',
|
|
459
|
+
format: 'Config format',
|
|
460
|
+
skillMode: 'Skill mode',
|
|
461
|
+
hiddenRoot: 'Hidden root path',
|
|
462
|
+
hiddenRootPresent: 'Hidden root',
|
|
463
|
+
conversationSignal: 'Conversation',
|
|
464
|
+
usageSignal: 'Usage',
|
|
465
|
+
lastActivityAt: 'Last active',
|
|
466
|
+
skillsAll: 'All skills',
|
|
467
|
+
skillsEnabled: 'Enabled skills',
|
|
468
|
+
skillsSourceBuiltin: 'Built-in',
|
|
469
|
+
skillsSourceUser: 'Custom',
|
|
470
|
+
skillsSearchPlaceholder: 'Search all configured skills...',
|
|
471
|
+
skillsFilterAll: 'All',
|
|
472
|
+
skillsFilterBuiltin: 'Built-in',
|
|
473
|
+
skillsFilterUser: 'Custom',
|
|
474
|
+
skillEnable: 'Enable',
|
|
475
|
+
skillDisable: 'Disable',
|
|
476
|
+
skillEdit: 'Edit',
|
|
477
|
+
skillSave: 'Save',
|
|
478
|
+
skillCancel: 'Cancel',
|
|
479
|
+
skillActionLoading: 'Working...',
|
|
480
|
+
skillReadFailed: 'Failed to read skill content.',
|
|
481
|
+
skillSaveFailed: 'Failed to save skill content.',
|
|
482
|
+
mcpManagement: 'MCP Management',
|
|
483
|
+
mcpInstalled: 'Installed',
|
|
484
|
+
mcpScope: 'Current scope',
|
|
485
|
+
mcpConfigPath: 'Config path',
|
|
486
|
+
mcpTargetScope: 'Target scope',
|
|
487
|
+
mcpTargetTransport: 'Target transport',
|
|
488
|
+
mcpScopeProject: 'Project',
|
|
489
|
+
mcpScopeGlobal: 'Global',
|
|
490
|
+
mcpCopySnippet: 'Copy snippet',
|
|
491
|
+
mcpCopied: 'Copied',
|
|
492
|
+
mcpRefresh: 'Refresh status',
|
|
493
|
+
mcpReconnect: 'Apply MCP config',
|
|
494
|
+
mcpApplying: 'Applying MCP config...',
|
|
495
|
+
mcpApplySuccess: 'MCP config applied.',
|
|
496
|
+
mcpApplyFailed: 'Failed to apply MCP config.',
|
|
497
|
+
nativeInstalledSkills: 'Installed Skills',
|
|
498
|
+
nativeInstalledSkillsCount: (n: number) => `${n} detected`,
|
|
499
|
+
nativeInstalledSkillsEmpty: 'No installed skills detected.',
|
|
500
|
+
nativeInstalledSkillsMore: (n: number) => `+${n} more`,
|
|
501
|
+
configuredMcpServers: 'MCP Servers',
|
|
502
|
+
configuredMcpServersCount: (n: number) => `${n} detected`,
|
|
503
|
+
configuredMcpServersEmpty: 'No MCP servers configured.',
|
|
504
|
+
configuredMcpServersMore: (n: number) => `+${n} more`,
|
|
505
|
+
yes: 'Yes',
|
|
506
|
+
no: 'No',
|
|
507
|
+
noSkills: 'No enabled skills.',
|
|
508
|
+
noActivity: 'No activity recorded yet.',
|
|
509
|
+
noSpaceReach: 'No space reach data yet.',
|
|
510
|
+
skillDelete: 'Delete',
|
|
511
|
+
skillDeleteConfirm: (name: string) => `Delete skill "${name}"? This cannot be undone.`,
|
|
512
|
+
skillDeleteSuccess: 'Skill deleted.',
|
|
513
|
+
skillDeleteFailed: 'Failed to delete skill.',
|
|
514
|
+
mcpServerAdd: 'Add MCP server',
|
|
515
|
+
mcpServerRemove: 'Remove',
|
|
516
|
+
mcpServerRemoveConfirm: (name: string) => `Remove "${name}" from this agent? This requires editing the config file.`,
|
|
517
|
+
mcpServerHint: 'Flagged — edit the agent config to finalize.',
|
|
518
|
+
mcpReconnectAll: 'Reconnect all',
|
|
519
|
+
mcpReconnectAllRunning: 'Reconnecting...',
|
|
520
|
+
mcpReconnectAllDone: (ok: number, failed: number) => `Reconnected ${ok}${failed > 0 ? `, failed ${failed}` : ''}.`,
|
|
521
|
+
},
|
|
522
|
+
detailSubtitle: '',
|
|
523
|
+
detailNotFound: 'Agent not found — it may have been removed or renamed.',
|
|
524
|
+
detailNotFoundHint: 'The agent may have disconnected or its configuration file was moved. Try restarting the agent or check the MCP configuration.',
|
|
525
|
+
detailNotFoundSuggestion: 'Connected agents you can explore:',
|
|
526
|
+
},
|
|
527
|
+
} as const;
|
|
528
|
+
|
|
529
|
+
export const panelsZh = {
|
|
530
|
+
panels: {
|
|
531
|
+
agents: {
|
|
532
|
+
title: '智能体',
|
|
533
|
+
connected: '已连接',
|
|
534
|
+
refresh: '刷新智能体状态',
|
|
535
|
+
retry: '重试',
|
|
536
|
+
failedToLoad: '加载智能体失败',
|
|
537
|
+
mcpServer: 'MCP 服务器',
|
|
538
|
+
stopped: '已停止',
|
|
539
|
+
sectionConnected: '已连接',
|
|
540
|
+
sectionDetected: '已检测',
|
|
541
|
+
sectionNotDetected: '未检测到',
|
|
542
|
+
noAgents: '未检测到智能体。',
|
|
543
|
+
autoRefresh: '每 30 秒自动刷新',
|
|
544
|
+
connect: '连接',
|
|
545
|
+
installing: '安装中...',
|
|
546
|
+
install: '安装',
|
|
547
|
+
installSuccess: '已安装',
|
|
548
|
+
installFailed: '安装失败',
|
|
549
|
+
retryInstall: '重试',
|
|
550
|
+
// Snippet section
|
|
551
|
+
copyConfig: '复制配置',
|
|
552
|
+
copied: '已复制!',
|
|
553
|
+
transportLocal: '本地',
|
|
554
|
+
transportRemote: '远程',
|
|
555
|
+
configPath: '配置路径',
|
|
556
|
+
noAuthWarning: '未设置 Token — 请在高级配置中设置',
|
|
557
|
+
// Skills section
|
|
558
|
+
skillsTitle: 'Skills',
|
|
559
|
+
skillsActive: '已启用',
|
|
560
|
+
builtinSkills: '内置',
|
|
561
|
+
newSkill: '+ 新建',
|
|
562
|
+
// Footer
|
|
563
|
+
advancedConfig: '高级配置 →',
|
|
564
|
+
navOverview: '总览',
|
|
565
|
+
navMcp: 'MCP',
|
|
566
|
+
navSkills: '技能',
|
|
567
|
+
navNetwork: '网络',
|
|
568
|
+
// A2A tab
|
|
569
|
+
a2aTabTitle: '远程 Agent',
|
|
570
|
+
a2aTabEmpty: '无远程 Agent',
|
|
571
|
+
a2aTabEmptyHint: '发现远程 Agent 以启用跨 Agent 委派。',
|
|
572
|
+
a2aRemoveAgent: '移除',
|
|
573
|
+
rosterLabel: '当前环境',
|
|
574
|
+
notFoundDetail: '本机未检测到该智能体客户端。请安装后刷新列表。',
|
|
575
|
+
skillsEmptyHint: '请在「MCP 与技能」设置中启用或编辑 Skills。',
|
|
576
|
+
backToList: '返回',
|
|
577
|
+
closeAgentDetail: '关闭',
|
|
578
|
+
agentDetailPanelAria: '智能体连接配置',
|
|
579
|
+
agentDetailTransport: '传输方式',
|
|
580
|
+
agentDetailSnippet: '配置片段',
|
|
581
|
+
// A2A
|
|
582
|
+
a2aLabel: 'A2A',
|
|
583
|
+
a2aReady: 'A2A 就绪',
|
|
584
|
+
a2aChecking: '检测 A2A 中...',
|
|
585
|
+
a2aUnavailable: 'A2A 不可用',
|
|
586
|
+
a2aRemote: '远程',
|
|
587
|
+
a2aDiscover: '发现远程 Agent',
|
|
588
|
+
a2aDiscoverHint: '通过 URL 连接外部 A2A Agent',
|
|
589
|
+
a2aDiscoverPlaceholder: 'https://agent.example.com',
|
|
590
|
+
a2aDiscovering: '发现中...',
|
|
591
|
+
a2aDiscoverSuccess: 'Agent 已发现!',
|
|
592
|
+
a2aDiscoverFailed: '未在此 URL 找到 A2A Agent',
|
|
593
|
+
a2aDiscoverFailedHint: '该服务器可能不支持 A2A 协议,请检查 URL 后重试。',
|
|
594
|
+
a2aSkills: '技能',
|
|
595
|
+
a2aEndpoint: '端点',
|
|
596
|
+
a2aVersion: '版本',
|
|
597
|
+
a2aCapabilities: 'A2A 能力',
|
|
598
|
+
a2aStatus: '状态',
|
|
599
|
+
a2aConnected: '已连接,A2A 就绪',
|
|
600
|
+
a2aNoRemote: '无远程 Agent',
|
|
601
|
+
a2aNoRemoteHint: '发现远程 Agent 以启用跨 Agent 委派。',
|
|
602
|
+
a2aDelegations: '近期委派',
|
|
603
|
+
a2aDelegationsEmpty: '暂无委派记录',
|
|
604
|
+
a2aDelegationCompleted: '已完成',
|
|
605
|
+
a2aDelegationFailed: '失败',
|
|
606
|
+
a2aDelegationPending: '进行中',
|
|
607
|
+
// ACP / Network tab
|
|
608
|
+
acpSectionTitle: 'ACP 智能体',
|
|
609
|
+
acpSectionDesc: (n: number) => `${n} 个智能体可用`,
|
|
610
|
+
acpTransportNpx: 'npx',
|
|
611
|
+
acpTransportBinary: '二进制',
|
|
612
|
+
acpTransportUvx: 'uvx',
|
|
613
|
+
acpTransportStdio: 'stdio',
|
|
614
|
+
acpUseAgent: '使用',
|
|
615
|
+
acpComingSoon: '即将上线 — 当前可通过 Ask AI 调用',
|
|
616
|
+
acpReady: '就绪',
|
|
617
|
+
acpNotInstalled: '未安装',
|
|
618
|
+
acpScan: '扫描本地',
|
|
619
|
+
acpInstallHint: (cmd: string) => `安装命令: ${cmd}`,
|
|
620
|
+
acpLoading: '加载 ACP 注册表中…',
|
|
621
|
+
acpLoadFailed: '加载 ACP 注册表失败。',
|
|
622
|
+
acpRetry: '重试',
|
|
623
|
+
networkEmptyTitle: '连接智能体生态',
|
|
624
|
+
networkEmptyDesc: '发现远程 Agent 或浏览 ACP 注册表中的编程智能体。',
|
|
625
|
+
networkDiscoverBtn: '发现 Agent',
|
|
626
|
+
networkBrowseBtn: '浏览注册表',
|
|
627
|
+
},
|
|
628
|
+
plugins: {
|
|
629
|
+
title: '插件',
|
|
630
|
+
active: '已启用',
|
|
631
|
+
noPlugins: '暂无插件',
|
|
632
|
+
core: '核心',
|
|
633
|
+
coreDisabled: '核心插件 — 不可禁用',
|
|
634
|
+
footer: '插件用于自定义文件渲染方式。核心插件不可禁用。',
|
|
635
|
+
ready: '就绪 — 点击打开',
|
|
636
|
+
disabled: '已禁用',
|
|
637
|
+
noFile: '入口文件不存在',
|
|
638
|
+
createFile: '创建 {file} 以激活',
|
|
639
|
+
},
|
|
640
|
+
echo: {
|
|
641
|
+
title: '回响',
|
|
642
|
+
aboutYouTitle: '关于你',
|
|
643
|
+
aboutYouDesc: '指向你的笔记与线索',
|
|
644
|
+
continuedTitle: '未完待续',
|
|
645
|
+
continuedDesc: '草稿与未收口的事',
|
|
646
|
+
dailyEchoTitle: '今日',
|
|
647
|
+
dailyDesc: '一行就够',
|
|
648
|
+
pastYouTitle: '往昔',
|
|
649
|
+
pastYouDesc: '瞥见另一个时间点的自己',
|
|
650
|
+
intentGrowthTitle: '生长',
|
|
651
|
+
growthDesc: '你正在推进的方向',
|
|
652
|
+
},
|
|
653
|
+
discover: {
|
|
654
|
+
title: '探索',
|
|
655
|
+
useCases: '使用案例',
|
|
656
|
+
useCasesDesc: '动手体验 MindOS 的典型场景',
|
|
657
|
+
pluginMarket: '插件市场',
|
|
658
|
+
pluginMarketDesc: '扩展文件的渲染和编辑方式',
|
|
659
|
+
skillMarket: '技能市场',
|
|
660
|
+
skillMarketDesc: '为 AI 智能体添加新能力',
|
|
661
|
+
spaceTemplates: '空间模板',
|
|
662
|
+
spaceTemplatesDesc: '预设的空间结构,适用于常见工作流场景',
|
|
663
|
+
comingSoon: '即将推出',
|
|
664
|
+
viewAll: '查看所有使用案例',
|
|
665
|
+
tryIt: '试试',
|
|
666
|
+
},
|
|
667
|
+
},
|
|
668
|
+
echoPages: {
|
|
669
|
+
parent: '回响',
|
|
670
|
+
heroKicker: '回响',
|
|
671
|
+
segmentNavAria: '回响模块',
|
|
672
|
+
snapshotBadge: '本地 · 私密',
|
|
673
|
+
factsHeading: '所见',
|
|
674
|
+
snapshotAboutYouTitle: '线索在此汇聚',
|
|
675
|
+
snapshotAboutYouBody:
|
|
676
|
+
'路径、链接或标题指向你的笔记会浮现在这里,点击即可打开编辑。现在也可以用下方按钮打开 Agent 聊聊。',
|
|
677
|
+
snapshotContinuedTitle: '草稿与未收口',
|
|
678
|
+
snapshotContinuedBody:
|
|
679
|
+
'未命名草稿、写到一半的稿、待办里尚未勾上的项,接入文库后会汇集在此。',
|
|
680
|
+
snapshotDailyTitle: '从一行开始',
|
|
681
|
+
snapshotDailyBody:
|
|
682
|
+
'离手即存,写在浏览器本机。一行就够——想展开时再找 Agent。',
|
|
683
|
+
snapshotPastYouTitle: '温和地一瞥',
|
|
684
|
+
snapshotPastYouBody:
|
|
685
|
+
'从时间轴里随机浮出一篇旧笔记片段,让你瞥见那时的自己。即将上线。',
|
|
686
|
+
snapshotGrowthTitle: '意图落在这里',
|
|
687
|
+
snapshotGrowthBody:
|
|
688
|
+
'写一句此刻最想推进的方向。它只保存在本机,可随时间改写。',
|
|
689
|
+
insightTitle: '见解',
|
|
690
|
+
insightShow: '展开见解',
|
|
691
|
+
insightHide: '收起见解',
|
|
692
|
+
insightHint:
|
|
693
|
+
'只会带上本页可见的文字(含「所见」与你在本页输入的内容),不会默认上传整库。需在 设置 → AI 中配置后再用。',
|
|
694
|
+
generateInsight: '生成见解',
|
|
695
|
+
generateInsightNoAi: '请在 设置 → AI 中填写 API Key(或配置环境变量)后刷新本页。',
|
|
696
|
+
insightGenerating: '生成中…',
|
|
697
|
+
insightErrorPrefix: '生成失败:',
|
|
698
|
+
insightRetry: '重试',
|
|
699
|
+
continueAgent: '在 Agent 中展开',
|
|
700
|
+
continuedDrafts: '草稿',
|
|
701
|
+
continuedTodos: '未收口',
|
|
702
|
+
subEmptyHint: '接入文库后,条目会出现在对应分组里。',
|
|
703
|
+
dailyLineLabel: '今日一行',
|
|
704
|
+
dailyLinePlaceholder: '写下一行轻量的文字…',
|
|
705
|
+
dailySavedNote: '已保存在本机浏览器;仅本设备可见。',
|
|
706
|
+
savedFlash: '已保存',
|
|
707
|
+
dailyAskPrefill: (line: string) =>
|
|
708
|
+
`回响 / 每日 — 围绕这一行帮我展开:\n\n${line.trim() || '(空行)'}`,
|
|
709
|
+
pastYouDrawLabel: '往日一瞥',
|
|
710
|
+
pastYouAnother: '再抽一笔',
|
|
711
|
+
pastYouComingSoon: '即将推出',
|
|
712
|
+
pastYouDisabledHint: '时间轴采样即将上线——届时轻点即可抽读旧笔记片段。',
|
|
713
|
+
growthIntentLabel: '当前意图',
|
|
714
|
+
growthIntentPlaceholder: '写下你正在推进的方向…',
|
|
715
|
+
growthSavedNote: '已保存在本机。',
|
|
716
|
+
aboutYouLead: '无需翻找,与你相关的笔记自然浮现。',
|
|
717
|
+
continuedLead: '草稿、待办、写到一半的念头。',
|
|
718
|
+
dailyLead: '一行就够。想展开时再找 Agent。',
|
|
719
|
+
pastYouLead: '温和地瞥见另一个时间点的自己。',
|
|
720
|
+
growthLead: '你正在推进的方向,以及它如何缓慢漂移。',
|
|
721
|
+
},
|
|
722
|
+
agentsContent: {
|
|
723
|
+
title: 'Agents',
|
|
724
|
+
subtitle: '连接、技能与状态,一目了然。',
|
|
725
|
+
workspacePulse: {
|
|
726
|
+
title: '工作区脉搏',
|
|
727
|
+
connected: '已连接',
|
|
728
|
+
detected: '已检测',
|
|
729
|
+
notFound: '未找到',
|
|
730
|
+
risk: '风险',
|
|
731
|
+
enabledSkills: '已启用',
|
|
732
|
+
healthy: '正常',
|
|
733
|
+
needsAttention: (n: number) => `${n} 个问题`,
|
|
734
|
+
},
|
|
735
|
+
navOverview: '总览',
|
|
736
|
+
navMcp: 'MCP',
|
|
737
|
+
navSkills: 'Skills',
|
|
738
|
+
navNetwork: '网络',
|
|
739
|
+
a2aTabTitle: '远程 Agent',
|
|
740
|
+
a2aTabEmptyHint: '发现远程 Agent 以启用跨 Agent 委派。',
|
|
741
|
+
backToOverview: '返回 Agents',
|
|
742
|
+
na: '暂无',
|
|
743
|
+
status: {
|
|
744
|
+
connected: '已连接',
|
|
745
|
+
detected: '已检测',
|
|
746
|
+
notFound: '未找到',
|
|
747
|
+
},
|
|
748
|
+
overview: {
|
|
749
|
+
connected: '已连接',
|
|
750
|
+
detected: '已检测',
|
|
751
|
+
notFound: '未找到',
|
|
752
|
+
riskQueue: '待处理',
|
|
753
|
+
noRisk: '一切正常,暂无问题。',
|
|
754
|
+
usagePulse: '全部 Agent',
|
|
755
|
+
nextAction: '建议操作',
|
|
756
|
+
nextActionHint: '优先重连已检测的 Agent,再启用所需技能。',
|
|
757
|
+
riskLevelError: '异常',
|
|
758
|
+
riskLevelWarn: '注意',
|
|
759
|
+
na: '暂无',
|
|
760
|
+
colAgent: 'Agent',
|
|
761
|
+
colStatus: '状态',
|
|
762
|
+
colMcp: 'MCP',
|
|
763
|
+
colSkills: '技能',
|
|
764
|
+
colMode: '模式',
|
|
765
|
+
colRuntime: '运行时',
|
|
766
|
+
pulseMcp: 'MCP',
|
|
767
|
+
pulseTools: '工具数',
|
|
768
|
+
mcpOffline: '离线',
|
|
769
|
+
toolsUnit: (n: number) => `${n} 个工具`,
|
|
770
|
+
enabledUnit: (n: number) => `${n} 已启用`,
|
|
771
|
+
agentCount: (n: number) => `${n} 个 Agent`,
|
|
772
|
+
runtimeActive: '活跃',
|
|
773
|
+
riskMcpStopped: 'MCP 服务未运行。',
|
|
774
|
+
riskDetected: (n: number) => `${n} 个已检测 Agent 待配置。`,
|
|
775
|
+
riskSkillsDisabled: '所有技能已禁用。',
|
|
776
|
+
},
|
|
777
|
+
mcp: {
|
|
778
|
+
title: 'MCP 连接',
|
|
779
|
+
refresh: '刷新',
|
|
780
|
+
connectionGraph: '跨 Agent 服务器连接',
|
|
781
|
+
tabs: {
|
|
782
|
+
manage: '管理',
|
|
783
|
+
topology: '图谱',
|
|
784
|
+
byAgent: '按 Agent 查看',
|
|
785
|
+
byServer: '按 MCP Server 查看',
|
|
786
|
+
},
|
|
787
|
+
searchPlaceholder: '搜索 Agent...',
|
|
788
|
+
installMindos: '安装 MindOS MCP',
|
|
789
|
+
installed: '已安装',
|
|
790
|
+
mcpServerLabel: 'MCP Server',
|
|
791
|
+
searchServersPlaceholder: '搜索 MCP server...',
|
|
792
|
+
serverAgentCount: (n: number) => `${n} 个 Agent`,
|
|
793
|
+
emptyState: '当前筛选条件下没有匹配的 Agent。',
|
|
794
|
+
resultCount: (n: number) => `${n} 个 Agent`,
|
|
795
|
+
filteredSummaryTitle: '筛选结果状态摘要',
|
|
796
|
+
filteredConnected: (n: number) => `已连接:${n}`,
|
|
797
|
+
filteredDetected: (n: number) => `已检测:${n}`,
|
|
798
|
+
filteredNotFound: (n: number) => `未找到:${n}`,
|
|
799
|
+
crossAgentServersTitle: 'MCP 服务器',
|
|
800
|
+
crossAgentServersEmpty: '暂未检测到 MCP 服务器。',
|
|
801
|
+
crossAgentServerAgents: (names: string) => `使用者:${names}`,
|
|
802
|
+
configVisibilityTitle: '配置信息',
|
|
803
|
+
hiddenRootDetected: (n: number, total: number) => `隐藏目录:${n}/${total}`,
|
|
804
|
+
runtimeSignalDetected: (n: number, total: number) => `运行信号:${n}/${total}`,
|
|
805
|
+
riskQueueTitle: '待处理',
|
|
806
|
+
riskMcpStopped: 'MCP 服务未运行。',
|
|
807
|
+
riskDetected: (n: number) => `${n} 个已检测 Agent 待配置。`,
|
|
808
|
+
riskNotFound: (n: number) => `${n} 个 Agent 未在本机检测到。`,
|
|
809
|
+
riskSkillsDisabled: '所有技能已禁用。',
|
|
810
|
+
bulkReconnectFiltered: '全部重连',
|
|
811
|
+
bulkRunning: '正在批量重连...',
|
|
812
|
+
bulkSummary: (ok: number, failed: number) => `重连成功 ${ok} 个,失败 ${failed} 个。`,
|
|
813
|
+
transportFilters: {
|
|
814
|
+
all: '全部传输',
|
|
815
|
+
stdio: 'stdio',
|
|
816
|
+
http: 'http',
|
|
817
|
+
other: '其他',
|
|
818
|
+
},
|
|
819
|
+
filters: {
|
|
820
|
+
all: '全部',
|
|
821
|
+
connected: '已连接',
|
|
822
|
+
detected: '已检测',
|
|
823
|
+
notFound: '未找到',
|
|
824
|
+
},
|
|
825
|
+
table: {
|
|
826
|
+
agent: 'Agent',
|
|
827
|
+
status: '状态',
|
|
828
|
+
transport: '传输',
|
|
829
|
+
actions: '操作',
|
|
830
|
+
},
|
|
831
|
+
actions: {
|
|
832
|
+
copySnippet: '复制配置',
|
|
833
|
+
copied: '已复制',
|
|
834
|
+
testConnection: '测试连接',
|
|
835
|
+
reconnect: '重连',
|
|
836
|
+
},
|
|
837
|
+
addAgent: '添加',
|
|
838
|
+
removeFromServer: '移除',
|
|
839
|
+
confirmRemoveTitle: '从服务器移除?',
|
|
840
|
+
confirmRemoveMessage: (agent: string, server: string) => `将"${agent}"从"${server}"移除?需编辑 Agent 配置文件完成操作。`,
|
|
841
|
+
cancel: '取消',
|
|
842
|
+
noAvailableAgents: '所有 Agent 均已添加。',
|
|
843
|
+
manualRemoveHint: '已标记移除,请编辑 Agent 配置文件完成操作。',
|
|
844
|
+
reconnectAllInServer: '全部重连',
|
|
845
|
+
reconnectAllRunning: '正在重连...',
|
|
846
|
+
reconnectAllDone: (ok: number, failed: number) => `完成:${ok} 已重连${failed > 0 ? `,${failed} 失败` : ''}。`,
|
|
847
|
+
serverTransport: (t: string) => `传输:${t}`,
|
|
848
|
+
},
|
|
849
|
+
skills: {
|
|
850
|
+
title: 'Skills',
|
|
851
|
+
summaryTitle: '技能状态',
|
|
852
|
+
summaryEnabled: (n: number) => `已启用:${n}`,
|
|
853
|
+
summaryDisabled: (n: number) => `已禁用:${n}`,
|
|
854
|
+
summaryAttention: (n: number) => `需关注:${n}`,
|
|
855
|
+
crossAgentSkillsTitle: '已安装技能',
|
|
856
|
+
crossAgentSkillsEmpty: '暂未检测到已安装技能。',
|
|
857
|
+
crossAgentSkillAgents: (names: string) => `安装于:${names}`,
|
|
858
|
+
capabilityGroups: '跨 Agent 技能管理',
|
|
859
|
+
registrySummaryTitle: '技能注册表',
|
|
860
|
+
registryUniversal: (n: number) => `Universal:${n}`,
|
|
861
|
+
registryAdditional: (n: number) => `Additional:${n}`,
|
|
862
|
+
registryUnsupported: (n: number) => `Unsupported:${n}`,
|
|
863
|
+
registryHiddenRoots: (n: number, total: number) => `隐藏目录:${n}/${total}`,
|
|
864
|
+
tabs: {
|
|
865
|
+
manage: '管理',
|
|
866
|
+
matrix: '矩阵',
|
|
867
|
+
bySkill: '按 Skill 查看',
|
|
868
|
+
byAgent: '按 Agent 查看',
|
|
869
|
+
},
|
|
870
|
+
searchPlaceholder: '搜索技能...',
|
|
871
|
+
agentSkillMode: 'Skill 模式',
|
|
872
|
+
agentMcpServers: 'MCP Servers',
|
|
873
|
+
agentNativeSkills: '原生 Skills',
|
|
874
|
+
agentMindosSkills: 'MindOS Skills',
|
|
875
|
+
noAgentsYet: '尚未检测到任何 Agent。',
|
|
876
|
+
moreSkills: (n: number) => `另有 ${n} 个`,
|
|
877
|
+
sourceAll: '全部',
|
|
878
|
+
sourceBuiltin: '内置',
|
|
879
|
+
sourceUser: '自定义',
|
|
880
|
+
sourceNative: '原生',
|
|
881
|
+
summaryNative: (n: number) => `原生:${n}`,
|
|
882
|
+
statusAll: '全部状态',
|
|
883
|
+
statusEnabled: '已启用',
|
|
884
|
+
statusDisabled: '已禁用',
|
|
885
|
+
statusAttention: '需关注',
|
|
886
|
+
capabilityAll: '全部能力',
|
|
887
|
+
bulkEnableFiltered: '全部启用',
|
|
888
|
+
bulkDisableFiltered: '全部停用',
|
|
889
|
+
bulkRunning: '正在应用变更...',
|
|
890
|
+
bulkNoChanges: '当前无需变更。',
|
|
891
|
+
bulkAllSucceeded: (n: number) => `已更新 ${n} 个技能。`,
|
|
892
|
+
bulkPartialFailed: (ok: number, failed: number) => `已更新 ${ok} 个,失败 ${failed} 个。`,
|
|
893
|
+
resultCount: (n: number) => `${n} 个技能`,
|
|
894
|
+
matrixAgentFocusLabel: 'Agent 聚焦',
|
|
895
|
+
matrixAgentFocusAll: '全部 Agent',
|
|
896
|
+
matrixColumnSkill: '技能',
|
|
897
|
+
matrixEnabled: '已启用',
|
|
898
|
+
matrixDisabled: '已禁用',
|
|
899
|
+
matrixUnsupported: '不支持',
|
|
900
|
+
matrixNoAgents: '当前无可用于矩阵的 Agent。',
|
|
901
|
+
noSkillsMatchFilter: '当前筛选条件下无技能。',
|
|
902
|
+
matrixEmpty: '当前筛选条件下无技能。',
|
|
903
|
+
addAgentToSkill: '添加',
|
|
904
|
+
removeAgentFromSkill: '移除',
|
|
905
|
+
confirmRemoveAgentTitle: '从技能移除?',
|
|
906
|
+
confirmRemoveAgentMessage: (agent: string, skill: string) => `将"${agent}"从"${skill}"移除?需编辑 Agent 配置文件完成操作。`,
|
|
907
|
+
cancelSkillAction: '取消',
|
|
908
|
+
noAvailableAgentsForSkill: '所有 Agent 均已拥有此技能。',
|
|
909
|
+
manualSkillHint: '已标记,请编辑 Agent 配置文件完成操作。',
|
|
910
|
+
skillDescription: '描述',
|
|
911
|
+
skillNoDescription: '暂无描述。',
|
|
912
|
+
skillDeleteAction: '删除',
|
|
913
|
+
confirmDeleteSkillTitle: '删除技能?',
|
|
914
|
+
confirmDeleteSkillMessage: (name: string) => `确认永久删除技能"${name}"?此操作不可撤销。`,
|
|
915
|
+
skillDeleted: '技能已删除。',
|
|
916
|
+
skillDeleteFailed: '删除技能失败。',
|
|
917
|
+
copyInstallCmd: '复制安装命令',
|
|
918
|
+
installCmdCopied: '已复制!',
|
|
919
|
+
skillAgentCount: (n: number) => `${n} 个 Agent`,
|
|
920
|
+
quickStatsMcp: (n: number) => `${n} MCP`,
|
|
921
|
+
quickStatsSkills: (n: number) => `${n} 技能`,
|
|
922
|
+
showAllNative: (n: number) => `展开全部 ${n} 项`,
|
|
923
|
+
collapseNative: '收起',
|
|
924
|
+
emptyGroup: '该分组暂无技能。',
|
|
925
|
+
groupLabels: {
|
|
926
|
+
research: '研究',
|
|
927
|
+
coding: '编码',
|
|
928
|
+
docs: '文档',
|
|
929
|
+
ops: '运维',
|
|
930
|
+
memory: '记忆',
|
|
931
|
+
},
|
|
932
|
+
skillPopover: {
|
|
933
|
+
close: '关闭',
|
|
934
|
+
source: '来源',
|
|
935
|
+
sourceBuiltin: '内置',
|
|
936
|
+
sourceUser: '自定义',
|
|
937
|
+
sourceNative: '原生',
|
|
938
|
+
capability: '能力类型',
|
|
939
|
+
path: '文件路径',
|
|
940
|
+
enabled: '已启用',
|
|
941
|
+
disabled: '已禁用',
|
|
942
|
+
agents: 'Agent',
|
|
943
|
+
noAgents: '暂无 Agent 拥有此技能。',
|
|
944
|
+
content: '技能内容',
|
|
945
|
+
loading: '加载中…',
|
|
946
|
+
loadFailed: '加载技能内容失败。',
|
|
947
|
+
retry: '重试',
|
|
948
|
+
copyContent: '复制',
|
|
949
|
+
copied: '已复制!',
|
|
950
|
+
noDescription: '暂无描述。',
|
|
951
|
+
deleteSkill: '删除',
|
|
952
|
+
confirmDeleteTitle: '删除技能?',
|
|
953
|
+
confirmDeleteMessage: (name: string) => `确认永久删除技能"${name}"?此操作不可撤销。`,
|
|
954
|
+
confirmDeleteAction: '删除',
|
|
955
|
+
cancelAction: '取消',
|
|
956
|
+
deleted: '技能已删除。',
|
|
957
|
+
deleteFailed: '删除技能失败。',
|
|
958
|
+
},
|
|
959
|
+
},
|
|
960
|
+
detail: {
|
|
961
|
+
healthStripTitle: '状态',
|
|
962
|
+
healthConnected: '已连接',
|
|
963
|
+
healthInstalled: 'MCP 已安装',
|
|
964
|
+
healthRuntimeSignals: '运行信号',
|
|
965
|
+
healthConfiguredServers: '已配置 servers',
|
|
966
|
+
healthInstalledSkills: '原生已安装 skills',
|
|
967
|
+
identity: '身份',
|
|
968
|
+
connection: '连接',
|
|
969
|
+
capabilities: '能力画像',
|
|
970
|
+
skillAssignments: '技能分配',
|
|
971
|
+
runtimeSignals: '运行与配置信号',
|
|
972
|
+
recentActivity: '最近活动',
|
|
973
|
+
spaceReach: '空间触达',
|
|
974
|
+
agentKey: 'Agent Key',
|
|
975
|
+
status: '状态',
|
|
976
|
+
transport: '传输',
|
|
977
|
+
endpoint: '端点',
|
|
978
|
+
port: '端口',
|
|
979
|
+
auth: '认证',
|
|
980
|
+
authConfigured: '已配置',
|
|
981
|
+
authMissing: '未配置',
|
|
982
|
+
projectScope: '项目范围',
|
|
983
|
+
globalScope: '全局范围',
|
|
984
|
+
format: '配置格式',
|
|
985
|
+
skillMode: 'Skill 模式',
|
|
986
|
+
hiddenRoot: '隐藏目录路径',
|
|
987
|
+
hiddenRootPresent: '隐藏目录',
|
|
988
|
+
conversationSignal: '对话',
|
|
989
|
+
usageSignal: '用量',
|
|
990
|
+
lastActivityAt: '最近活跃',
|
|
991
|
+
skillsAll: '全部 Skills',
|
|
992
|
+
skillsEnabled: '已启用 Skills',
|
|
993
|
+
skillsSourceBuiltin: '内置',
|
|
994
|
+
skillsSourceUser: '自定义',
|
|
995
|
+
skillsSearchPlaceholder: '搜索全部已配置 Skills...',
|
|
996
|
+
skillsFilterAll: '全部',
|
|
997
|
+
skillsFilterBuiltin: '内置',
|
|
998
|
+
skillsFilterUser: '自定义',
|
|
999
|
+
skillEnable: '启用',
|
|
1000
|
+
skillDisable: '禁用',
|
|
1001
|
+
skillEdit: '编辑',
|
|
1002
|
+
skillSave: '保存',
|
|
1003
|
+
skillCancel: '取消',
|
|
1004
|
+
skillActionLoading: '处理中...',
|
|
1005
|
+
skillReadFailed: '读取 Skill 内容失败。',
|
|
1006
|
+
skillSaveFailed: '保存 Skill 内容失败。',
|
|
1007
|
+
mcpManagement: 'MCP 管理',
|
|
1008
|
+
mcpInstalled: '已安装',
|
|
1009
|
+
mcpScope: '当前范围',
|
|
1010
|
+
mcpConfigPath: '配置路径',
|
|
1011
|
+
mcpTargetScope: '目标范围',
|
|
1012
|
+
mcpTargetTransport: '目标传输',
|
|
1013
|
+
mcpScopeProject: '项目',
|
|
1014
|
+
mcpScopeGlobal: '全局',
|
|
1015
|
+
mcpCopySnippet: '复制片段',
|
|
1016
|
+
mcpCopied: '已复制',
|
|
1017
|
+
mcpRefresh: '刷新状态',
|
|
1018
|
+
mcpReconnect: '应用 MCP 配置',
|
|
1019
|
+
mcpApplying: '正在应用 MCP 配置...',
|
|
1020
|
+
mcpApplySuccess: 'MCP 配置已应用。',
|
|
1021
|
+
mcpApplyFailed: '应用 MCP 配置失败。',
|
|
1022
|
+
nativeInstalledSkills: '已安装技能',
|
|
1023
|
+
nativeInstalledSkillsCount: (n: number) => `检测到 ${n} 个`,
|
|
1024
|
+
nativeInstalledSkillsEmpty: '暂未检测到已安装技能。',
|
|
1025
|
+
nativeInstalledSkillsMore: (n: number) => `另有 ${n} 个`,
|
|
1026
|
+
configuredMcpServers: 'MCP 服务器',
|
|
1027
|
+
configuredMcpServersCount: (n: number) => `检测到 ${n} 个`,
|
|
1028
|
+
configuredMcpServersEmpty: '暂未配置 MCP 服务器。',
|
|
1029
|
+
configuredMcpServersMore: (n: number) => `另有 ${n} 个`,
|
|
1030
|
+
yes: '是',
|
|
1031
|
+
no: '否',
|
|
1032
|
+
noSkills: '暂无启用技能。',
|
|
1033
|
+
noActivity: '暂无活动记录。',
|
|
1034
|
+
noSpaceReach: '暂无空间触达数据。',
|
|
1035
|
+
skillDelete: '删除',
|
|
1036
|
+
skillDeleteConfirm: (name: string) => `确认删除技能"${name}"?此操作不可撤销。`,
|
|
1037
|
+
skillDeleteSuccess: '技能已删除。',
|
|
1038
|
+
skillDeleteFailed: '删除技能失败。',
|
|
1039
|
+
mcpServerAdd: '添加 MCP 服务器',
|
|
1040
|
+
mcpServerRemove: '移除',
|
|
1041
|
+
mcpServerRemoveConfirm: (name: string) => `从该 Agent 移除"${name}"?需编辑配置文件完成操作。`,
|
|
1042
|
+
mcpServerHint: '已标记,请编辑 Agent 配置文件完成操作。',
|
|
1043
|
+
mcpReconnectAll: '全部重连',
|
|
1044
|
+
mcpReconnectAllRunning: '正在重连...',
|
|
1045
|
+
mcpReconnectAllDone: (ok: number, failed: number) => `已重连 ${ok}${failed > 0 ? `,失败 ${failed}` : ''}。`,
|
|
1046
|
+
},
|
|
1047
|
+
detailSubtitle: '',
|
|
1048
|
+
detailNotFound: '未找到该 Agent,可能已移除或重命名。',
|
|
1049
|
+
detailNotFoundHint: '该 Agent 可能已断开连接或配置文件已移动。请尝试重启 Agent 或检查 MCP 配置。',
|
|
1050
|
+
detailNotFoundSuggestion: '已连接的 Agent:',
|
|
1051
|
+
},
|
|
1052
|
+
};
|