@geminilight/mindos 0.6.28 → 0.6.30

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 (113) hide show
  1. package/README.md +10 -4
  2. package/app/app/api/a2a/agents/route.ts +9 -0
  3. package/app/app/api/a2a/delegations/route.ts +9 -0
  4. package/app/app/api/a2a/discover/route.ts +2 -0
  5. package/app/app/api/a2a/route.ts +6 -6
  6. package/app/app/api/acp/config/route.ts +82 -0
  7. package/app/app/api/acp/detect/route.ts +114 -0
  8. package/app/app/api/acp/install/route.ts +51 -0
  9. package/app/app/api/acp/registry/route.ts +31 -0
  10. package/app/app/api/acp/session/route.ts +185 -0
  11. package/app/app/api/ask/route.ts +116 -13
  12. package/app/app/api/workflows/route.ts +156 -0
  13. package/app/app/layout.tsx +2 -0
  14. package/app/app/page.tsx +7 -2
  15. package/app/components/ActivityBar.tsx +12 -4
  16. package/app/components/AskModal.tsx +4 -1
  17. package/app/components/DirView.tsx +64 -2
  18. package/app/components/FileTree.tsx +40 -10
  19. package/app/components/GuideCard.tsx +7 -17
  20. package/app/components/HomeContent.tsx +1 -0
  21. package/app/components/MarkdownView.tsx +2 -0
  22. package/app/components/Panel.tsx +1 -0
  23. package/app/components/RightAskPanel.tsx +5 -1
  24. package/app/components/SearchModal.tsx +234 -80
  25. package/app/components/SidebarLayout.tsx +6 -0
  26. package/app/components/agents/AgentDetailContent.tsx +266 -52
  27. package/app/components/agents/AgentsContentPage.tsx +32 -6
  28. package/app/components/agents/AgentsPanelA2aTab.tsx +684 -0
  29. package/app/components/agents/AgentsPanelSessionsTab.tsx +166 -0
  30. package/app/components/agents/SkillDetailPopover.tsx +4 -9
  31. package/app/components/agents/agents-content-model.ts +2 -2
  32. package/app/components/ask/AgentSelectorCapsule.tsx +218 -0
  33. package/app/components/ask/AskContent.tsx +197 -239
  34. package/app/components/ask/FileChip.tsx +82 -17
  35. package/app/components/ask/MentionPopover.tsx +21 -3
  36. package/app/components/ask/MessageList.tsx +30 -9
  37. package/app/components/ask/SlashCommandPopover.tsx +21 -3
  38. package/app/components/help/HelpContent.tsx +9 -9
  39. package/app/components/panels/AgentsPanel.tsx +2 -0
  40. package/app/components/panels/AgentsPanelAgentDetail.tsx +5 -8
  41. package/app/components/panels/AgentsPanelHubNav.tsx +16 -2
  42. package/app/components/panels/EchoPanel.tsx +5 -1
  43. package/app/components/panels/EchoSidebarStats.tsx +136 -0
  44. package/app/components/panels/WorkflowsPanel.tsx +206 -0
  45. package/app/components/renderers/workflow-yaml/StepEditor.tsx +157 -0
  46. package/app/components/renderers/workflow-yaml/WorkflowEditor.tsx +201 -0
  47. package/app/components/renderers/workflow-yaml/WorkflowRunner.tsx +226 -0
  48. package/app/components/renderers/workflow-yaml/WorkflowYamlRenderer.tsx +126 -0
  49. package/app/components/renderers/workflow-yaml/execution.ts +177 -0
  50. package/app/components/renderers/workflow-yaml/index.ts +6 -0
  51. package/app/components/renderers/workflow-yaml/manifest.ts +21 -0
  52. package/app/components/renderers/workflow-yaml/parser.ts +172 -0
  53. package/app/components/renderers/workflow-yaml/selectors.tsx +522 -0
  54. package/app/components/renderers/workflow-yaml/serializer.ts +56 -0
  55. package/app/components/renderers/workflow-yaml/types.ts +46 -0
  56. package/app/components/settings/KnowledgeTab.tsx +3 -6
  57. package/app/components/settings/McpSkillsSection.tsx +4 -5
  58. package/app/components/settings/McpTab.tsx +6 -8
  59. package/app/components/setup/StepSecurity.tsx +4 -5
  60. package/app/components/setup/index.tsx +5 -11
  61. package/app/components/ui/Toaster.tsx +39 -0
  62. package/app/hooks/useA2aRegistry.ts +6 -1
  63. package/app/hooks/useAcpConfig.ts +96 -0
  64. package/app/hooks/useAcpDetection.ts +120 -0
  65. package/app/hooks/useAcpRegistry.ts +86 -0
  66. package/app/hooks/useAskModal.ts +12 -5
  67. package/app/hooks/useAskPanel.ts +8 -5
  68. package/app/hooks/useAskSession.ts +19 -2
  69. package/app/hooks/useDelegationHistory.ts +49 -0
  70. package/app/hooks/useImageUpload.ts +152 -0
  71. package/app/lib/a2a/client.ts +49 -5
  72. package/app/lib/a2a/orchestrator.ts +0 -1
  73. package/app/lib/a2a/task-handler.ts +4 -4
  74. package/app/lib/a2a/types.ts +15 -0
  75. package/app/lib/acp/acp-tools.ts +95 -0
  76. package/app/lib/acp/agent-descriptors.ts +274 -0
  77. package/app/lib/acp/bridge.ts +144 -0
  78. package/app/lib/acp/index.ts +40 -0
  79. package/app/lib/acp/registry.ts +202 -0
  80. package/app/lib/acp/session.ts +717 -0
  81. package/app/lib/acp/subprocess.ts +495 -0
  82. package/app/lib/acp/types.ts +274 -0
  83. package/app/lib/agent/model.ts +18 -3
  84. package/app/lib/agent/to-agent-messages.ts +25 -2
  85. package/app/lib/agent/tools.ts +2 -1
  86. package/app/lib/i18n/_core.ts +22 -0
  87. package/app/lib/i18n/index.ts +35 -0
  88. package/app/lib/i18n/modules/ai-chat.ts +215 -0
  89. package/app/lib/i18n/modules/common.ts +71 -0
  90. package/app/lib/i18n/modules/features.ts +153 -0
  91. package/app/lib/i18n/modules/knowledge.ts +429 -0
  92. package/app/lib/i18n/modules/navigation.ts +153 -0
  93. package/app/lib/i18n/modules/onboarding.ts +523 -0
  94. package/app/lib/i18n/modules/panels.ts +1196 -0
  95. package/app/lib/i18n/modules/settings.ts +585 -0
  96. package/app/lib/i18n-en.ts +2 -1518
  97. package/app/lib/i18n-zh.ts +2 -1542
  98. package/app/lib/i18n.ts +3 -6
  99. package/app/lib/pi-integration/skills.ts +21 -6
  100. package/app/lib/renderers/index.ts +2 -2
  101. package/app/lib/settings.ts +10 -0
  102. package/app/lib/toast.ts +79 -0
  103. package/app/lib/types.ts +12 -1
  104. package/app/next-env.d.ts +1 -1
  105. package/app/package.json +3 -1
  106. package/bin/cli.js +25 -25
  107. package/bin/commands/file.js +29 -2
  108. package/bin/commands/space.js +249 -91
  109. package/package.json +1 -1
  110. package/templates/en/.mindos/workflows/Sprint Release.flow.yaml +130 -0
  111. package/templates/zh/.mindos/workflows//345/221/250/350/277/255/344/273/243/346/243/200/346/237/245.flow.yaml +84 -0
  112. package/app/components/renderers/workflow/WorkflowRenderer.tsx +0 -409
  113. package/app/components/renderers/workflow/manifest.ts +0 -14
@@ -1,1518 +1,2 @@
1
- export const en = {
2
- common: {
3
- relatedFiles: 'Related Files',
4
- },
5
- app: {
6
- tagline: 'You think here, Agents act there.',
7
- footer: 'MindOS · human-agent collaborative mind system',
8
- },
9
- home: {
10
- recentlyModified: 'Recently Modified',
11
- recentlyActive: 'Recently Active',
12
- recentlyEdited: 'Recently Edited',
13
- allSpaces: 'All Spaces',
14
- spaces: 'Spaces',
15
- nFiles: (n: number) => `${n} file${n === 1 ? '' : 's'}`,
16
- other: 'Other',
17
- newSpace: 'New Space',
18
- spaceName: 'Space name',
19
- spaceDescription: 'Description',
20
- spaceDescPlaceholder: 'Describe the purpose of this space',
21
- spaceNameNoSlash: 'Name cannot contain / or \\',
22
- spaceExists: 'A space with this name already exists',
23
- spaceCreateFailed: 'Failed to create space',
24
- noSpacesYet: 'No spaces yet. Create one to organize your knowledge.',
25
- spaceLocation: 'Location',
26
- rootLevel: 'Root',
27
- optional: 'optional',
28
- aiInit: 'AI initialize content',
29
- aiInitHint: 'AI will generate a description and guidelines for this space',
30
- aiInitNoKey: 'Configure an API key in Settings → AI to enable',
31
- aiInitGenerating: (name: string) => `Generating content for ${name}`,
32
- aiInitReady: (name: string) => `${name} ready`,
33
- aiInitReview: 'Review',
34
- aiInitDiscard: 'Discard',
35
- aiInitReverted: (name: string) => `${name} reverted to template`,
36
- createSpace: 'Create',
37
- cancelCreate: 'Cancel',
38
- continueEditing: 'Continue editing',
39
- newNote: 'New Notes',
40
- builtinFeatures: 'Tools',
41
- builtinActive: 'Active',
42
- builtinInactive: 'Not active',
43
- toolName: {
44
- 'agent-inspector': 'Agent Inspector',
45
- 'config-panel': 'Config Panel',
46
- 'todo': 'TODO Board',
47
- } as Record<string, string>,
48
- toolDesc: {
49
- 'agent-inspector': 'View agent tool-call logs and audit trail',
50
- 'config-panel': 'Edit and manage global configuration',
51
- 'todo': 'Manage tasks as an interactive kanban board',
52
- } as Record<string, string>,
53
- plugins: 'Extensions',
54
- changeHistory: 'Change History',
55
- showMore: 'Show more',
56
- showLess: 'Show less',
57
- viewAll: 'View all',
58
- createToActivate: 'Create {file} to activate',
59
- shortcuts: {
60
- searchFiles: 'Search files',
61
- askAI: 'MindOS Agent',
62
- editFile: 'Edit file',
63
- save: 'Save',
64
- settings: 'Settings',
65
- },
66
- relativeTime: {
67
- justNow: 'just now',
68
- minutesAgo: (n: number) => `${n}m ago`,
69
- hoursAgo: (n: number) => `${n}h ago`,
70
- daysAgo: (n: number) => `${n}d ago`,
71
- },
72
- cleanupExamples: (n: number) => `${n} example file${n > 1 ? 's' : ''} from the template can be removed`,
73
- cleanupExamplesButton: 'Clean up',
74
- cleanupExamplesDone: 'Example files removed',
75
- },
76
- sidebar: {
77
- files: 'Spaces',
78
- search: 'Search',
79
- searchTitle: 'Search',
80
- askTitle: 'MindOS Agent',
81
- settingsTitle: 'Settings',
82
- plugins: 'Plugins',
83
- agents: 'Agents',
84
- echo: 'Echo',
85
- discover: 'Discover',
86
- history: 'History',
87
- help: 'Help',
88
- syncLabel: 'Sync',
89
- collapseTitle: 'Collapse sidebar',
90
- expandTitle: 'Expand sidebar',
91
- collapseLevel: 'Collapse one level',
92
- collapseLevelHint: 'Collapse one level (double-click: all)',
93
- expandLevel: 'Expand one level',
94
- expandLevelHint: 'Expand one level (double-click: all)',
95
- importFile: 'Import file',
96
- new: 'New',
97
- newFile: 'New file',
98
- newSpace: 'New Space',
99
- sync: {
100
- synced: 'Synced',
101
- unpushed: 'awaiting push',
102
- unpushedHint: 'commit(s) not yet pushed to remote — will sync automatically',
103
- conflicts: 'conflicts',
104
- conflictsHint: 'file(s) have merge conflicts — open Settings > Sync to resolve',
105
- syncError: 'Sync error',
106
- syncOff: 'Sync off',
107
- syncing: 'Syncing...',
108
- syncNow: 'Sync now',
109
- syncDone: 'Sync complete',
110
- syncFailed: 'Sync failed',
111
- syncRestored: 'Sync restored',
112
- enableSync: 'Enable sync',
113
- enableHint: 'Set up cross-device sync',
114
- },
115
- },
116
- search: {
117
- placeholder: 'Search files...',
118
- noResults: 'No results found',
119
- prompt: 'Type to search across all files',
120
- navigate: 'navigate',
121
- open: 'open',
122
- close: 'close',
123
- },
124
- ask: {
125
- title: 'MindOS Agent',
126
- fabLabel: 'Ask AI',
127
- placeholder: 'Ask a question... @ files, / skills',
128
- emptyPrompt: 'Ask anything about your knowledge base',
129
- send: 'send',
130
- newlineHint: 'new line',
131
- panelComposerResize: 'Drag up to enlarge the input area',
132
- panelComposerFooter: 'Resize height',
133
- panelComposerResetHint: 'Double-click to reset height',
134
- panelComposerKeyboard: 'Arrow keys adjust height; Home/End min/max',
135
- attachFile: 'Context',
136
- uploadedFiles: 'Uploaded',
137
- skillsHint: 'skills',
138
- attachCurrent: 'attach current file',
139
- stopTitle: 'Stop',
140
- cancelReconnect: 'Cancel reconnect',
141
- connecting: 'Thinking with you...',
142
- thinking: 'Thinking...',
143
- thinkingLabel: 'Thinking',
144
- searching: 'Searching knowledge base...',
145
- generating: 'Generating response...',
146
- stopped: 'Generation stopped.',
147
- errorNoResponse: 'AI returned no content. Possible causes: model does not support streaming, proxy compatibility issue, or request exceeds context limit.',
148
- reconnecting: (attempt: number, max: number) => `Connection lost. Reconnecting (${attempt}/${max})...`,
149
- reconnectFailed: 'Connection failed after multiple attempts.',
150
- retry: 'Retry',
151
- suggestions: [
152
- 'Summarize this document',
153
- 'List all action items and TODOs',
154
- 'What are the key points?',
155
- 'Find related notes on this topic',
156
- ],
157
- sessionHistory: 'Session History',
158
- clearAll: 'Clear all',
159
- confirmClear: 'Confirm clear?',
160
- noSessions: 'No saved sessions.',
161
- draftingHint: 'AI is still running — you can draft the next step now.',
162
- },
163
- changes: {
164
- unreadBanner: (n: number) => `${n} content change${n === 1 ? '' : 's'} unread`,
165
- reviewNow: 'Review now',
166
- dismiss: 'Dismiss notification',
167
- title: 'Content changes',
168
- subtitle: 'Review recent edits across user and agent operations.',
169
- eventsCount: (n: number) => `${n} event${n === 1 ? '' : 's'}`,
170
- unreadCount: (n: number) => `${n} unread`,
171
- refresh: 'Refresh',
172
- markSeen: 'Mark seen',
173
- markAllRead: 'Mark all read',
174
- filters: {
175
- filePath: 'File path',
176
- filePathPlaceholder: 'e.g. Projects/plan.md',
177
- source: 'Agents (source)',
178
- operation: 'Tools (operation)',
179
- operationAll: 'All operations',
180
- keyword: 'Keyword',
181
- keywordPlaceholder: 'summary / op / path',
182
- all: 'All',
183
- agent: 'Agent',
184
- user: 'User',
185
- system: 'System',
186
- },
187
- loading: 'Loading changes...',
188
- empty: 'No content changes yet.',
189
- open: 'Open',
190
- unchangedLines: (n: number) => `... ${n} unchanged lines ...`,
191
- relativeTime: {
192
- justNow: 'just now',
193
- minutesAgo: (n: number) => `${n}m ago`,
194
- hoursAgo: (n: number) => `${n}h ago`,
195
- daysAgo: (n: number) => `${n}d ago`,
196
- },
197
- },
198
- panels: {
199
- agents: {
200
- title: 'Agents',
201
- connected: 'connected',
202
- refresh: 'Refresh agent status',
203
- retry: 'Retry',
204
- failedToLoad: 'Failed to load agents',
205
- mcpServer: 'MCP Server',
206
- stopped: 'Stopped',
207
- sectionConnected: 'Connected',
208
- sectionDetected: 'Detected',
209
- sectionNotDetected: 'Not Detected',
210
- noAgents: 'No agents detected.',
211
- autoRefresh: 'Auto-refresh every 30s',
212
- connect: 'Connect',
213
- installing: 'Installing...',
214
- install: 'Install',
215
- installSuccess: 'Installed',
216
- installFailed: 'Install failed',
217
- retryInstall: 'Retry',
218
- // Snippet section
219
- copyConfig: 'Copy Config',
220
- copied: 'Copied!',
221
- transportLocal: 'Local',
222
- transportRemote: 'Remote',
223
- configPath: 'Config path',
224
- noAuthWarning: 'No auth token — set in Advanced Config',
225
- // Skills section
226
- skillsTitle: 'Skills',
227
- skillsActive: 'active',
228
- builtinSkills: 'Built-in',
229
- newSkill: '+ New',
230
- // Footer
231
- advancedConfig: 'Advanced Config →',
232
- // Hub nav (aligned with Discover panel rows)
233
- navOverview: 'Overview',
234
- navMcp: 'MCP',
235
- navSkills: 'Skills',
236
- rosterLabel: 'Your setup',
237
- notFoundDetail: 'This agent app was not detected on this machine. Install it, then refresh the list.',
238
- skillsEmptyHint: 'Enable and edit skills in MCP & Skills settings.',
239
- backToList: 'Back',
240
- closeAgentDetail: 'Close',
241
- agentDetailPanelAria: 'Agent connection configuration',
242
- agentDetailTransport: 'Transport',
243
- agentDetailSnippet: 'Config snippet',
244
- // A2A
245
- a2aLabel: 'A2A',
246
- a2aReady: 'A2A Ready',
247
- a2aChecking: 'Checking A2A...',
248
- a2aUnavailable: 'A2A Unavailable',
249
- a2aRemote: 'Remote',
250
- a2aDiscover: 'Discover Remote Agent',
251
- a2aDiscoverHint: 'Connect to an external A2A agent by URL',
252
- a2aDiscoverPlaceholder: 'https://agent.example.com',
253
- a2aDiscovering: 'Discovering...',
254
- a2aDiscoverSuccess: 'Agent discovered!',
255
- a2aDiscoverFailed: 'No A2A agent found at this URL',
256
- a2aDiscoverFailedHint: 'The server may not support the A2A protocol. Check the URL and try again.',
257
- a2aSkills: 'Skills',
258
- a2aEndpoint: 'Endpoint',
259
- a2aVersion: 'Version',
260
- a2aCapabilities: 'A2A Capabilities',
261
- a2aStatus: 'Status',
262
- a2aConnected: 'Connected & A2A Ready',
263
- a2aNoRemote: 'No remote agents',
264
- a2aNoRemoteHint: 'Discover remote agents to enable cross-agent delegation.',
265
- },
266
- plugins: {
267
- title: 'Plugins',
268
- active: 'active',
269
- noPlugins: 'No plugins registered',
270
- core: 'Core',
271
- coreDisabled: 'Core plugin — cannot be disabled',
272
- footer: 'Plugins customize how files render. Core plugins cannot be disabled.',
273
- ready: 'Ready — click to open',
274
- disabled: 'Disabled',
275
- noFile: 'Entry file not found',
276
- createFile: 'Create {file} to activate',
277
- },
278
- echo: {
279
- title: 'Echo',
280
- aboutYouTitle: 'About you',
281
- aboutYouDesc: 'Notes that point back to you',
282
- continuedTitle: 'Unfinished',
283
- continuedDesc: 'Drafts and open loops',
284
- dailyEchoTitle: 'Today',
285
- dailyDesc: 'One line, no pressure',
286
- pastYouTitle: 'Past self',
287
- pastYouDesc: 'A glimpse at another time',
288
- intentGrowthTitle: 'Growth',
289
- growthDesc: 'The direction you\'re pushing',
290
- },
291
- discover: {
292
- title: 'Discover',
293
- useCases: 'Use Cases',
294
- useCasesDesc: 'Try MindOS scenarios hands-on',
295
- pluginMarket: 'Plugin Market',
296
- pluginMarketDesc: 'Extend how files are rendered and edited',
297
- skillMarket: 'Skill Market',
298
- skillMarketDesc: 'Add new abilities to your AI agents',
299
- spaceTemplates: 'Space Templates',
300
- spaceTemplatesDesc: 'Pre-built space structures for common workflows',
301
- comingSoon: 'Coming soon',
302
- viewAll: 'View all use cases',
303
- tryIt: 'Try',
304
- },
305
- },
306
- echoPages: {
307
- parent: 'Echo',
308
- heroKicker: 'Echo',
309
- segmentNavAria: 'Echo sections',
310
- snapshotBadge: 'Local · private',
311
- factsHeading: 'Snapshot',
312
- snapshotAboutYouTitle: 'Clues gather here',
313
- snapshotAboutYouBody:
314
- '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.',
315
- snapshotContinuedTitle: 'Drafts and open loops',
316
- snapshotContinuedBody:
317
- 'Untitled drafts, half-finished pieces, and unchecked tasks will collect here once the library feed is connected.',
318
- snapshotDailyTitle: 'Start with one line',
319
- snapshotDailyBody:
320
- 'Your line saves in this browser the moment you leave the field. One line is enough — open Agent when you want depth.',
321
- snapshotPastYouTitle: 'A glimpse at another time',
322
- snapshotPastYouBody:
323
- 'A random older note will surface here — not a diff tool, just a gentle glance at who you were. Coming soon.',
324
- snapshotGrowthTitle: 'Intent lives here',
325
- snapshotGrowthBody:
326
- 'Write one sentence about the direction you are pushing. It stays on this device and can change over time.',
327
- insightTitle: 'Insight',
328
- insightShow: 'Show insight',
329
- insightHide: 'Hide insight',
330
- insightHint:
331
- '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.',
332
- generateInsight: 'Generate insight',
333
- generateInsightNoAi: 'Add an API key under Settings → AI (or set env vars), then refresh this page.',
334
- insightGenerating: 'Generating…',
335
- insightErrorPrefix: 'Something went wrong:',
336
- insightRetry: 'Try again',
337
- continueAgent: 'Open in Agent',
338
- continuedDrafts: 'Drafts',
339
- continuedTodos: 'Open loops',
340
- subEmptyHint: 'Items will appear in each column once the library feed is connected.',
341
- dailyLineLabel: 'A line for today',
342
- dailyLinePlaceholder: 'Write one quiet line…',
343
- dailySavedNote: 'Saved in this browser; visible only on this device.',
344
- savedFlash: 'Saved',
345
- dailyAskPrefill: (line: string) =>
346
- `Echo / Daily — reflect on this line:\n\n${line.trim() || '(empty line)'}`,
347
- pastYouDrawLabel: 'A glimpse from the past',
348
- pastYouAnother: 'Draw another moment',
349
- pastYouComingSoon: 'Coming soon',
350
- pastYouDisabledHint: 'Sampling from your timeline is on the way — soon a tap here will surface an old excerpt.',
351
- growthIntentLabel: 'What you are steering toward',
352
- growthIntentPlaceholder: 'Write your current intent…',
353
- growthSavedNote: 'Saved on this device.',
354
- aboutYouLead: 'Notes and links that point back to you — surfaced, not searched.',
355
- continuedLead: 'Drafts, open tasks, and thoughts you left mid-sentence.',
356
- dailyLead: 'One line. No pressure. Open Agent when you want depth.',
357
- pastYouLead: 'A gentle glimpse at who you were at another time.',
358
- growthLead: 'The direction you are pushing — and how it drifts.',
359
- },
360
- agentsContent: {
361
- title: 'Agents',
362
- subtitle: 'Connections, skills, and status at a glance.',
363
- workspacePulse: {
364
- title: 'Workspace Pulse',
365
- connected: 'Connected',
366
- detected: 'Detected',
367
- notFound: 'Not found',
368
- risk: 'Risks',
369
- enabledSkills: 'Skills on',
370
- healthy: 'Healthy',
371
- needsAttention: (n: number) => `${n} issue${n !== 1 ? 's' : ''}`,
372
- },
373
- navOverview: 'Overview',
374
- navMcp: 'MCP',
375
- navSkills: 'Skills',
376
- backToOverview: 'Back to Agents',
377
- na: 'N/A',
378
- status: {
379
- connected: 'Connected',
380
- detected: 'Detected',
381
- notFound: 'Not found',
382
- },
383
- overview: {
384
- connected: 'Connected',
385
- detected: 'Detected',
386
- notFound: 'Not found',
387
- riskQueue: 'Attention',
388
- noRisk: 'All clear — no issues detected.',
389
- usagePulse: 'All agents',
390
- nextAction: 'Suggested next',
391
- nextActionHint: 'Reconnect detected agents first, then enable remaining skills.',
392
- riskLevelError: 'Error',
393
- riskLevelWarn: 'Warning',
394
- na: 'N/A',
395
- colAgent: 'Agent',
396
- colStatus: 'Status',
397
- colMcp: 'MCP',
398
- colSkills: 'Skills',
399
- colMode: 'Mode',
400
- colRuntime: 'Runtime',
401
- pulseMcp: 'MCP',
402
- pulseTools: 'Tools',
403
- mcpOffline: 'Offline',
404
- toolsUnit: (n: number) => `${n} tools`,
405
- enabledUnit: (n: number) => `${n} enabled`,
406
- agentCount: (n: number) => `${n} agent${n !== 1 ? 's' : ''}`,
407
- runtimeActive: 'Active',
408
- riskMcpStopped: 'MCP server is not running.',
409
- riskDetected: (n: number) => `${n} detected agent(s) need configuration.`,
410
- riskSkillsDisabled: 'All skills are disabled.',
411
- },
412
- mcp: {
413
- title: 'MCP Connections',
414
- refresh: 'Refresh',
415
- connectionGraph: 'Server connections across agents',
416
- tabs: {
417
- manage: 'Manage',
418
- topology: 'Topology',
419
- byAgent: 'By Agent',
420
- byServer: 'By MCP Server',
421
- },
422
- searchPlaceholder: 'Search agents...',
423
- installMindos: 'Install MindOS MCP',
424
- installed: 'Installed',
425
- mcpServerLabel: 'MCP Server',
426
- searchServersPlaceholder: 'Search MCP servers...',
427
- serverAgentCount: (n: number) => `${n} agent${n !== 1 ? 's' : ''}`,
428
- emptyState: 'No agents match current filters.',
429
- resultCount: (n: number) => `${n} agents`,
430
- filteredSummaryTitle: 'Filtered status summary',
431
- filteredConnected: (n: number) => `Connected: ${n}`,
432
- filteredDetected: (n: number) => `Detected: ${n}`,
433
- filteredNotFound: (n: number) => `Not found: ${n}`,
434
- crossAgentServersTitle: 'MCP Servers',
435
- crossAgentServersEmpty: 'No MCP servers detected.',
436
- crossAgentServerAgents: (names: string) => `Used by ${names}`,
437
- configVisibilityTitle: 'Configuration',
438
- hiddenRootDetected: (n: number, total: number) => `Hidden roots: ${n}/${total}`,
439
- runtimeSignalDetected: (n: number, total: number) => `Runtime signals: ${n}/${total}`,
440
- riskQueueTitle: 'Attention',
441
- riskMcpStopped: 'MCP server is not running.',
442
- riskDetected: (n: number) => `${n} detected agent(s) need configuration.`,
443
- riskNotFound: (n: number) => `${n} agent(s) not found on this machine.`,
444
- riskSkillsDisabled: 'All skills are disabled.',
445
- bulkReconnectFiltered: 'Reconnect all',
446
- bulkRunning: 'Running reconnect...',
447
- bulkSummary: (ok: number, failed: number) => `Reconnected ${ok}, failed ${failed}.`,
448
- transportFilters: {
449
- all: 'All transport',
450
- stdio: 'stdio',
451
- http: 'http',
452
- other: 'other',
453
- },
454
- filters: {
455
- all: 'All',
456
- connected: 'Connected',
457
- detected: 'Detected',
458
- notFound: 'Not found',
459
- },
460
- table: {
461
- agent: 'Agent',
462
- status: 'Status',
463
- transport: 'Transport',
464
- actions: 'Actions',
465
- },
466
- actions: {
467
- copySnippet: 'Copy Snippet',
468
- copied: 'Copied',
469
- testConnection: 'Test Connection',
470
- reconnect: 'Reconnect',
471
- },
472
- addAgent: 'Add',
473
- removeFromServer: 'Remove',
474
- confirmRemoveTitle: 'Remove from server?',
475
- confirmRemoveMessage: (agent: string, server: string) => `Remove "${agent}" from "${server}"? This requires editing the agent config file.`,
476
- cancel: 'Cancel',
477
- noAvailableAgents: 'All agents already connected.',
478
- manualRemoveHint: 'Flagged for removal — edit the agent config to finalize.',
479
- reconnectAllInServer: 'Reconnect all',
480
- reconnectAllRunning: 'Reconnecting...',
481
- reconnectAllDone: (ok: number, failed: number) => `Done: ${ok} reconnected${failed > 0 ? `, ${failed} failed` : ''}.`,
482
- serverTransport: (t: string) => `Transport: ${t}`,
483
- },
484
- skills: {
485
- title: 'Skills',
486
- summaryTitle: 'Skill Status',
487
- summaryEnabled: (n: number) => `Enabled: ${n}`,
488
- summaryDisabled: (n: number) => `Disabled: ${n}`,
489
- summaryAttention: (n: number) => `Needs attention: ${n}`,
490
- crossAgentSkillsTitle: 'Installed Skills',
491
- crossAgentSkillsEmpty: 'No skills detected.',
492
- crossAgentSkillAgents: (names: string) => `Installed in ${names}`,
493
- capabilityGroups: 'Skill management across agents',
494
- registrySummaryTitle: 'Skill Registry',
495
- registryUniversal: (n: number) => `Universal: ${n}`,
496
- registryAdditional: (n: number) => `Additional: ${n}`,
497
- registryUnsupported: (n: number) => `Unsupported: ${n}`,
498
- registryHiddenRoots: (n: number, total: number) => `Hidden roots: ${n}/${total}`,
499
- tabs: {
500
- manage: 'Manage',
501
- matrix: 'Matrix',
502
- bySkill: 'By Skill',
503
- byAgent: 'By Agent',
504
- },
505
- searchPlaceholder: 'Search skills...',
506
- agentSkillMode: 'Skill Mode',
507
- agentMcpServers: 'MCP Servers',
508
- agentNativeSkills: 'Native Skills',
509
- agentMindosSkills: 'MindOS Skills',
510
- noAgentsYet: 'No agents detected yet.',
511
- moreSkills: (n: number) => `+${n} more`,
512
- sourceAll: 'All',
513
- sourceBuiltin: 'Built-in',
514
- sourceUser: 'Custom',
515
- sourceNative: 'Native',
516
- summaryNative: (n: number) => `Native: ${n}`,
517
- statusAll: 'All status',
518
- statusEnabled: 'Enabled',
519
- statusDisabled: 'Disabled',
520
- statusAttention: 'Needs attention',
521
- capabilityAll: 'All capabilities',
522
- bulkEnableFiltered: 'Enable all',
523
- bulkDisableFiltered: 'Disable all',
524
- bulkRunning: 'Applying changes...',
525
- bulkNoChanges: 'No skill changes needed.',
526
- bulkAllSucceeded: (n: number) => `Updated ${n} skills.`,
527
- bulkPartialFailed: (ok: number, failed: number) => `Updated ${ok}, failed ${failed}.`,
528
- resultCount: (n: number) => `${n} skills`,
529
- matrixAgentFocusLabel: 'Agent focus',
530
- matrixAgentFocusAll: 'All agents',
531
- matrixColumnSkill: 'Skill',
532
- matrixEnabled: 'Enabled',
533
- matrixDisabled: 'Disabled',
534
- matrixUnsupported: 'Unsupported',
535
- matrixNoAgents: 'No agents available for matrix.',
536
- noSkillsMatchFilter: 'No skills match current filters.',
537
- matrixEmpty: 'No skills match current filters.',
538
- addAgentToSkill: 'Add',
539
- removeAgentFromSkill: 'Remove',
540
- confirmRemoveAgentTitle: 'Remove from skill?',
541
- confirmRemoveAgentMessage: (agent: string, skill: string) => `Remove "${agent}" from "${skill}"? This requires editing the agent config file.`,
542
- cancelSkillAction: 'Cancel',
543
- noAvailableAgentsForSkill: 'All agents already have this skill.',
544
- manualSkillHint: 'Flagged — edit the agent config to finalize.',
545
- skillDescription: 'Description',
546
- skillNoDescription: 'No description available.',
547
- skillDeleteAction: 'Delete',
548
- confirmDeleteSkillTitle: 'Delete skill?',
549
- confirmDeleteSkillMessage: (name: string) => `Permanently delete skill "${name}"? This cannot be undone.`,
550
- skillDeleted: 'Skill deleted.',
551
- skillDeleteFailed: 'Failed to delete skill.',
552
- copyInstallCmd: 'Copy install command',
553
- installCmdCopied: 'Copied!',
554
- skillAgentCount: (n: number) => `${n} agent${n === 1 ? '' : 's'}`,
555
- quickStatsMcp: (n: number) => `${n} MCP`,
556
- quickStatsSkills: (n: number) => `${n} skills`,
557
- showAllNative: (n: number) => `Show all ${n}`,
558
- collapseNative: 'Collapse',
559
- emptyGroup: 'No skills in this group.',
560
- groupLabels: {
561
- research: 'Research',
562
- coding: 'Coding',
563
- docs: 'Docs',
564
- ops: 'Ops',
565
- memory: 'Memory',
566
- },
567
- skillPopover: {
568
- close: 'Close',
569
- source: 'Source',
570
- sourceBuiltin: 'Built-in',
571
- sourceUser: 'Custom',
572
- sourceNative: 'Native',
573
- capability: 'Capability',
574
- path: 'File path',
575
- enabled: 'Enabled',
576
- disabled: 'Disabled',
577
- agents: 'Agents',
578
- noAgents: 'No agents have this skill.',
579
- content: 'Skill content',
580
- loading: 'Loading...',
581
- loadFailed: 'Failed to load skill content.',
582
- retry: 'Retry',
583
- copyContent: 'Copy',
584
- copied: 'Copied!',
585
- noDescription: 'No description available.',
586
- deleteSkill: 'Delete',
587
- confirmDeleteTitle: 'Delete skill?',
588
- confirmDeleteMessage: (name: string) => `Permanently delete skill "${name}"? This cannot be undone.`,
589
- confirmDeleteAction: 'Delete',
590
- cancelAction: 'Cancel',
591
- deleted: 'Skill deleted.',
592
- deleteFailed: 'Failed to delete skill.',
593
- },
594
- },
595
- detail: {
596
- healthStripTitle: 'Status',
597
- healthConnected: 'Connected',
598
- healthInstalled: 'MCP installed',
599
- healthRuntimeSignals: 'Runtime signals',
600
- healthConfiguredServers: 'Configured servers',
601
- healthInstalledSkills: 'Native installed skills',
602
- identity: 'Identity',
603
- connection: 'Connection',
604
- capabilities: 'Capability Profile',
605
- skillAssignments: 'Skill Assignments',
606
- runtimeSignals: 'Runtime',
607
- recentActivity: 'Recent Activity',
608
- spaceReach: 'Space Reach',
609
- agentKey: 'Agent key',
610
- status: 'Status',
611
- transport: 'Transport',
612
- endpoint: 'Endpoint',
613
- port: 'Port',
614
- auth: 'Auth',
615
- authConfigured: 'Configured',
616
- authMissing: 'Missing',
617
- projectScope: 'Project scope',
618
- globalScope: 'Global scope',
619
- format: 'Config format',
620
- skillMode: 'Skill mode',
621
- hiddenRoot: 'Hidden root path',
622
- hiddenRootPresent: 'Hidden root',
623
- conversationSignal: 'Conversation',
624
- usageSignal: 'Usage',
625
- lastActivityAt: 'Last active',
626
- skillsAll: 'All skills',
627
- skillsEnabled: 'Enabled skills',
628
- skillsSourceBuiltin: 'Built-in',
629
- skillsSourceUser: 'Custom',
630
- skillsSearchPlaceholder: 'Search all configured skills...',
631
- skillsFilterAll: 'All',
632
- skillsFilterBuiltin: 'Built-in',
633
- skillsFilterUser: 'Custom',
634
- skillEnable: 'Enable',
635
- skillDisable: 'Disable',
636
- skillEdit: 'Edit',
637
- skillSave: 'Save',
638
- skillCancel: 'Cancel',
639
- skillActionLoading: 'Working...',
640
- skillReadFailed: 'Failed to read skill content.',
641
- skillSaveFailed: 'Failed to save skill content.',
642
- mcpManagement: 'MCP Management',
643
- mcpInstalled: 'Installed',
644
- mcpScope: 'Current scope',
645
- mcpConfigPath: 'Config path',
646
- mcpTargetScope: 'Target scope',
647
- mcpTargetTransport: 'Target transport',
648
- mcpScopeProject: 'Project',
649
- mcpScopeGlobal: 'Global',
650
- mcpCopySnippet: 'Copy snippet',
651
- mcpCopied: 'Copied',
652
- mcpRefresh: 'Refresh status',
653
- mcpReconnect: 'Apply MCP config',
654
- mcpApplying: 'Applying MCP config...',
655
- mcpApplySuccess: 'MCP config applied.',
656
- mcpApplyFailed: 'Failed to apply MCP config.',
657
- nativeInstalledSkills: 'Installed Skills',
658
- nativeInstalledSkillsCount: (n: number) => `${n} detected`,
659
- nativeInstalledSkillsEmpty: 'No installed skills detected.',
660
- nativeInstalledSkillsMore: (n: number) => `+${n} more`,
661
- configuredMcpServers: 'MCP Servers',
662
- configuredMcpServersCount: (n: number) => `${n} detected`,
663
- configuredMcpServersEmpty: 'No MCP servers configured.',
664
- configuredMcpServersMore: (n: number) => `+${n} more`,
665
- yes: 'Yes',
666
- no: 'No',
667
- noSkills: 'No enabled skills.',
668
- noActivity: 'No activity recorded yet.',
669
- noSpaceReach: 'No space reach data yet.',
670
- skillDelete: 'Delete',
671
- skillDeleteConfirm: (name: string) => `Delete skill "${name}"? This cannot be undone.`,
672
- skillDeleteSuccess: 'Skill deleted.',
673
- skillDeleteFailed: 'Failed to delete skill.',
674
- mcpServerAdd: 'Add MCP server',
675
- mcpServerRemove: 'Remove',
676
- mcpServerRemoveConfirm: (name: string) => `Remove "${name}" from this agent? This requires editing the config file.`,
677
- mcpServerHint: 'Flagged — edit the agent config to finalize.',
678
- mcpReconnectAll: 'Reconnect all',
679
- mcpReconnectAllRunning: 'Reconnecting...',
680
- mcpReconnectAllDone: (ok: number, failed: number) => `Reconnected ${ok}${failed > 0 ? `, failed ${failed}` : ''}.`,
681
- },
682
- detailSubtitle: '',
683
- detailNotFound: 'Agent not found — it may have been removed or renamed.',
684
- detailNotFoundHint: 'The agent may have disconnected or its configuration file was moved. Try restarting the agent or check the MCP configuration.',
685
- detailNotFoundSuggestion: 'Connected agents you can explore:',
686
- },
687
- shortcutPanel: {
688
- title: 'Keyboard Shortcuts',
689
- navigation: 'Navigation',
690
- panelsSection: 'Panels',
691
- editor: 'Editor',
692
- toggleSearch: 'Toggle Search',
693
- toggleAskAI: 'Toggle Ask AI',
694
- openSettings: 'Open Settings',
695
- keyboardShortcuts: 'Keyboard Shortcuts',
696
- closePanel: 'Close panel / Exit maximize',
697
- saveFile: 'Save file',
698
- undo: 'Undo',
699
- redo: 'Redo',
700
- toggleHint: 'to toggle this panel',
701
- },
702
- fileTree: {
703
- newFileTitle: 'New file in this directory',
704
- rename: 'Rename',
705
- delete: 'Delete',
706
- create: 'Create',
707
- enterFileName: 'Enter a file name',
708
- failed: 'Failed',
709
- confirmDelete: (name: string) => `Delete "${name}"? This cannot be undone.`,
710
- rules: 'Rules',
711
- about: 'About',
712
- viewAll: 'View all',
713
- editRules: 'Edit Rules',
714
- renameSpace: 'Rename Space',
715
- deleteSpace: 'Delete Space',
716
- confirmDeleteSpace: (name: string) => `Delete space "${name}" and all its files? This cannot be undone.`,
717
- convertToSpace: 'Convert to Space',
718
- deleteFolder: 'Delete Folder',
719
- confirmDeleteFolder: (name: string) => `Delete folder "${name}" and all its contents? This cannot be undone.`,
720
- newFile: 'New File',
721
- importFile: 'Import File',
722
- importToSpace: 'Import file to this space',
723
- copyPath: 'Copy Path',
724
- pathCopied: 'Path copied',
725
- },
726
- fileImport: {
727
- title: 'Import Files',
728
- subtitle: 'Save files to your knowledge base or let AI organize them',
729
- dropzoneText: 'Drag files here, or',
730
- dropzoneButton: 'click to select',
731
- dropzoneCompact: 'Drag more files, or',
732
- dropzoneCompactButton: 'click to add',
733
- dropzoneMobile: 'Tap to select files',
734
- fileCount: (n: number) => `${n} file${n !== 1 ? 's' : ''}`,
735
- clearAll: 'Clear all',
736
- unsupported: 'Unsupported file type',
737
- tooLarge: (max: string) => `File too large (max ${max})`,
738
- archiveTitle: 'Save to Knowledge Base',
739
- archiveDesc: 'Save as-is to a space',
740
- digestTitle: 'AI Organize',
741
- digestDesc: 'Extract key points into notes',
742
- archiveConfigTitle: 'Save to Knowledge Base',
743
- back: '← Back',
744
- targetSpace: 'Target space',
745
- rootDir: 'Root',
746
- conflictLabel: 'If file already exists',
747
- conflictRename: 'Auto-rename (add number suffix)',
748
- conflictSkip: 'Skip',
749
- conflictOverwrite: 'Overwrite existing file',
750
- overwriteWarn: 'This will permanently replace existing file content',
751
- cancel: 'Cancel',
752
- importButton: (n: number) => `Save ${n} file${n !== 1 ? 's' : ''}`,
753
- importing: 'Saving...',
754
- preparing: 'Preparing...',
755
- successToast: (n: number, space: string) => `Saved ${n} file${n !== 1 ? 's' : ''} to ${space || 'knowledge base'}`,
756
- updatedIndex: (n: number) => `Updated ${n} index file${n !== 1 ? 's' : ''}`,
757
- partialToast: (ok: number, total: number) => `Saved ${ok}/${total} files`,
758
- skipReason: 'File already exists',
759
- failToast: 'Import failed',
760
- retry: 'Retry',
761
- undo: 'Undo',
762
- discardTitle: 'Discard import?',
763
- discardMessage: (n: number) => `Discard ${n} selected file${n !== 1 ? 's' : ''}?`,
764
- discardConfirm: 'Discard',
765
- discardCancel: 'Cancel',
766
- dropOverlay: 'Drop files to import into knowledge base',
767
- dropOverlayFormats: 'Supports .md .txt .pdf .csv .json .yaml .html',
768
- onboardingHint: 'Already have notes? Import files →',
769
- digestPromptSingle: (name: string, targetSpace?: string) => {
770
- const loc = targetSpace ? ` under the "${targetSpace}" space` : '';
771
- return `The user uploaded "${name}". You MUST:\n1. Read the content from the "USER-UPLOADED FILES" section above\n2. Extract and reorganize the key information into well-structured Markdown notes\n3. Save the result${loc} in the knowledge base — create new files or update existing ones as appropriate\n\nDo NOT just reply with a text summary. You must actually write to the knowledge base.`;
772
- },
773
- digestPromptMulti: (n: number, targetSpace?: string) => {
774
- const loc = targetSpace ? ` under the "${targetSpace}" space` : '';
775
- return `The user uploaded ${n} files. You MUST:\n1. Read their content from the "USER-UPLOADED FILES" section above\n2. Extract and reorganize the key information into well-structured Markdown notes\n3. Save the results${loc} in the knowledge base — create new files or update existing ones as appropriate\n\nDo NOT just reply with a text summary. You must actually write to the knowledge base.`;
776
- },
777
- arrowTo: '→',
778
- remove: 'Remove',
779
- aiRecommended: 'Recommended',
780
- aiRecommendedHint: 'Auto-matched by filename',
781
- conflictsFound: (n: number) => `${n} file${n !== 1 ? 's' : ''} already exist${n === 1 ? 's' : ''}`,
782
- organizeTitle: 'AI Organizing',
783
- organizeProcessing: 'AI is analyzing and organizing your files...',
784
- organizeConnecting: 'Connecting to AI...',
785
- organizeAnalyzing: 'AI is analyzing your files...',
786
- organizeReading: (detail?: string) => detail ? `Reading ${detail}...` : 'Reading files...',
787
- organizeThinking: 'AI is thinking deeply...',
788
- organizeWriting: (detail?: string) => detail ? `Writing ${detail}...` : 'Writing files...',
789
- organizeElapsed: (seconds: number) => {
790
- const m = Math.floor(seconds / 60);
791
- const s = seconds % 60;
792
- return `${m}:${s.toString().padStart(2, '0')}`;
793
- },
794
- organizeCancel: 'Cancel',
795
- organizeMinimize: 'Continue browsing',
796
- organizeExpand: 'View',
797
- organizeCreating: (path: string) => `Creating ${path}`,
798
- organizeUpdating: (path: string) => `Updating ${path}`,
799
- organizeReviewTitle: 'Organization Complete',
800
- organizeErrorTitle: 'Organization Failed',
801
- organizeReviewDesc: (n: number) => `AI organized your files into ${n} change${n !== 1 ? 's' : ''}`,
802
- organizeCreated: 'Created',
803
- organizeUpdated: 'Updated',
804
- organizeFailed: 'Failed',
805
- organizeNoChanges: 'AI analyzed your files but made no changes.',
806
- organizeToolCallsInfo: (n: number) => `AI executed ${n} operation${n > 1 ? 's' : ''} — check knowledge base for updates`,
807
- organizeError: 'Organization failed',
808
- organizeRetry: 'Retry',
809
- organizeDone: 'Done',
810
- organizeUndoAll: 'Undo All',
811
- organizeUndoOne: 'Undo',
812
- organizeUndone: 'Undone',
813
- organizeViewFile: 'View file',
814
- organizeUndoSuccess: (n: number) => `Reverted ${n} file${n !== 1 ? 's' : ''}`,
815
- organizeDetailTitle: 'AI Organize Details',
816
- organizeSourceFiles: 'Source Files',
817
- organizeSummaryLabel: 'AI Summary',
818
- organizeChangesLabel: (n: number) => `Changes (${n})`,
819
- organizeNoSummary: 'AI is working...',
820
- organizeMinimizeModal: 'Minimize',
821
- },
822
- importHistory: {
823
- title: 'Import History',
824
- clearAll: 'Clear history',
825
- emptyTitle: 'No import history yet',
826
- emptyDesc: 'AI organize results will appear here',
827
- },
828
- dirView: {
829
- gridView: 'Grid view',
830
- listView: 'List view',
831
- emptyFolder: 'This folder is empty.',
832
- fileCount: (n: number) => `${n} files`,
833
- newFile: 'New file',
834
- },
835
- view: {
836
- saveDirectory: 'Directory',
837
- saveFileName: 'File name',
838
- },
839
- findInPage: {
840
- placeholder: 'Find in document…',
841
- matchCount: (current: number, total: number) => `${current} of ${total}`,
842
- noResults: 'No results',
843
- },
844
- settings: {
845
- title: 'Settings',
846
- tabs: { ai: 'AI', appearance: 'Appearance', knowledge: 'General', sync: 'Sync', mcp: 'MCP & Skills', plugins: 'Plugins', shortcuts: 'Shortcuts', monitoring: 'Monitoring', agents: 'Agents', update: 'Update', uninstall: 'Uninstall' },
847
- ai: {
848
- provider: 'Provider',
849
- model: 'Model',
850
- apiKey: 'API Key',
851
- baseUrl: 'Base URL',
852
- baseUrlHint: 'Optional. Use for proxies or OpenAI-compatible APIs.',
853
- keyHint: 'Stored locally in ~/.mindos/config.json',
854
- envHint: 'Fields marked env have a value from environment variables. You can override them here, or restore all to env defaults.',
855
- envFieldNote: (key: string) => `Env var ${key} is set. Clear this field to fall back to it.`,
856
- resetToEnv: 'Reset to env value',
857
- restoreFromEnv: 'Restore from env',
858
- noApiKey: 'API key is not set. AI features will be unavailable until you add one.',
859
- testKey: 'Test',
860
- testKeyTesting: 'Testing...',
861
- testKeyOk: (ms: number) => `\u2713 ${ms}ms`,
862
- testKeyAuthError: 'Invalid API key',
863
- testKeyModelNotFound: 'Model not found',
864
- testKeyRateLimited: 'Rate limited, try again later',
865
- testKeyNetworkError: 'Network error',
866
- testKeyNoKey: 'No API key configured',
867
- testKeyUnknown: 'Test failed',
868
- listModels: 'Browse',
869
- noModelsFound: 'No models found',
870
- },
871
- agent: {
872
- title: 'Agent Behavior',
873
- maxSteps: 'Max Steps',
874
- maxStepsHint: 'Maximum tool call steps per request (1-30)',
875
- contextStrategy: 'Context Strategy',
876
- contextStrategyHint: 'Auto: summarize early messages when context fills up. Off: no summarization (emergency pruning still applies).',
877
- contextStrategyAuto: 'Auto (compact + prune)',
878
- contextStrategyOff: 'Off',
879
- thinking: 'Extended Thinking',
880
- thinkingHint: "Show Claude's reasoning process (uses more tokens)",
881
- thinkingBudget: 'Thinking Budget',
882
- thinkingBudgetHint: 'Max tokens for reasoning (1000-50000)',
883
- reconnectRetries: 'Auto Reconnect',
884
- reconnectRetriesHint: 'When connection drops, automatically retry this many times before giving up (0 = disabled)',
885
- },
886
- appearance: {
887
- readingFont: 'Reading font',
888
- contentWidth: 'Content width',
889
- colorTheme: 'Color theme',
890
- system: 'System',
891
- dark: 'Dark',
892
- light: 'Light',
893
- language: 'Language',
894
- browserNote: 'Appearance settings are saved in your browser.',
895
- fontPreview: 'The quick brown fox jumps over the lazy dog.',
896
- },
897
- knowledge: {
898
- sopRoot: 'Knowledge base root',
899
- sopRootHint: 'Absolute path to your notes directory. Requires server restart to take effect.',
900
- sopRootEnvHint: (key: string) => `MIND_ROOT env var is set to "${key}". Fill in above to override it.`,
901
- envNote: 'MIND_ROOT env var is set. Fill in above to override it — your value takes priority.',
902
- webPassword: 'Web UI password',
903
- webPasswordHint: 'Protect the browser UI with a password. Leave empty to disable. Changes take effect on next page load.',
904
- webPasswordClear: 'Clear password',
905
- authToken: 'MCP / API auth token',
906
- authTokenHint: 'Bearer token for Agent and MCP clients. Not required for browser access.',
907
- authTokenNone: 'No token set — API is open to all requests.',
908
- authTokenCopy: 'Copy',
909
- authTokenCopied: 'Copied!',
910
- authTokenReset: 'Regenerate',
911
- authTokenClear: 'Clear token',
912
- authTokenResetConfirm: 'Regenerate token? All existing MCP clients will need to update their config.',
913
- authTokenMcpPort: 'MCP port',
914
- restartWalkthrough: 'Restart walkthrough',
915
- showHiddenFiles: 'Show hidden files',
916
- showHiddenFilesHint: 'Display dot-prefixed folders (.agents, .claude, .mindos, etc.) in the file tree.',
917
- cleanupExamples: 'Clean up example files',
918
- cleanupExamplesHint: 'Remove all template example files (🧪_example_*) from your knowledge base.',
919
- cleanupExamplesButton: 'Clean up',
920
- cleanupExamplesNone: 'No example files found',
921
- cleanupExamplesConfirm: (n: number) => `Delete ${n} example file${n > 1 ? 's' : ''}? This cannot be undone.`,
922
- cleanupExamplesDone: (n: number) => `Removed ${n} example file${n > 1 ? 's' : ''}`,
923
- cleanupExamplesScanning: 'Scanning...',
924
- },
925
- sync: {
926
- emptyTitle: 'Cross-device Sync',
927
- emptyDesc: 'Automatically sync your knowledge base across devices via Git.',
928
- featureAutoCommit: 'Auto-commit on save',
929
- featureAutoPull: 'Auto-pull from remote',
930
- featureConflict: 'Conflict detection',
931
- featureMultiDevice: 'Works across devices',
932
- remoteUrl: 'Git Remote URL',
933
- invalidUrl: 'Invalid Git URL — use HTTPS (https://...) or SSH (git@...)',
934
- sshHint: 'SSH URLs require SSH key configured on this machine. HTTPS with token recommended.',
935
- accessToken: 'Access Token',
936
- optional: '(optional, for private repos)',
937
- tokenHint: 'GitHub: Settings → Developer settings → Personal access tokens → repo scope',
938
- branchLabel: 'Branch',
939
- connectButton: 'Connect & Start Sync',
940
- connecting: 'Connecting...',
941
- },
942
- plugins: {
943
- title: 'Installed Renderers',
944
- builtinBadge: 'built-in',
945
- enabled: 'Enabled',
946
- disabled: 'Disabled',
947
- matchHint: 'Auto-activates on',
948
- coreHint: 'Core renderer — always enabled',
949
- noPlugins: 'No renderers installed.',
950
- comingSoon: 'Plugin marketplace coming soon.',
951
- },
952
- mcp: {
953
- serverTitle: 'MindOS MCP Server',
954
- status: 'Status',
955
- running: 'Running',
956
- stopped: 'Stopped',
957
- transport: 'Transport',
958
- endpoint: 'Endpoint',
959
- tools: 'Tools',
960
- toolsRegistered: (n: number) => `${n} registered`,
961
- auth: 'Auth',
962
- authSet: 'Token set',
963
- authNotSet: 'No token',
964
- copyEndpoint: 'Copy Endpoint',
965
- copyConfig: 'Copy Config',
966
- copied: 'Copied!',
967
- agentsTitle: 'Agent Configuration',
968
- agent: 'Agent',
969
- scope: 'Scope',
970
- project: 'Project',
971
- global: 'Global',
972
- installed: 'Installed',
973
- notInstalled: 'Not installed',
974
- detected: 'Detected',
975
- notFound: 'Not found',
976
- transportStdio: 'stdio (recommended)',
977
- transportHttp: 'http',
978
- transportAuto: 'auto (recommended)',
979
- httpUrl: 'MCP URL',
980
- httpToken: 'Auth Token',
981
- installSelected: 'Install Selected',
982
- installing: 'Installing...',
983
- installSuccess: (n: number) => `${n} agent(s) configured`,
984
- installFailed: 'Install failed',
985
- portLabel: 'MCP Port',
986
- portHint: 'Changes require server restart',
987
- skillsTitle: 'Skills',
988
- skillAutoLoaded: 'Auto-loaded on every request',
989
- skillSource: 'Source',
990
- skillBuiltin: 'Built-in',
991
- skillUser: 'Custom',
992
- addSkill: '+ Add Skill',
993
- cliInstallHint: 'Install via CLI:',
994
- skillPathHint: 'Skill files installed at:',
995
- deleteSkill: 'Delete',
996
- editSkill: 'Edit',
997
- saveSkill: 'Save',
998
- cancelSkill: 'Cancel',
999
- skillName: 'Name',
1000
- skillDesc: 'Description',
1001
- skillContent: 'Content',
1002
- skillNameConflict: 'A skill with this name already exists',
1003
- skillDeleteConfirm: (name: string) => `Delete skill "${name}"? This cannot be undone.`,
1004
- skillLanguage: 'Skill Language',
1005
- skillLangEn: 'English',
1006
- skillLangZh: '中文',
1007
- searchSkills: 'Search skills...',
1008
- customGroup: 'Custom',
1009
- builtinGroup: 'Built-in',
1010
- noSkillsMatch: (query: string) => `No skills match "${query}"`,
1011
- skillTemplate: 'Template',
1012
- skillTemplateGeneral: 'General',
1013
- skillTemplateToolUse: 'Tool-use',
1014
- skillTemplateWorkflow: 'Workflow',
1015
- selectDetected: 'Select Detected',
1016
- clearSelection: 'Clear',
1017
- quickSetup: 'Quick Setup',
1018
- configureFor: 'Configure for',
1019
- configPath: 'Config path',
1020
- transportLocal: 'Local',
1021
- transportRemote: 'Remote',
1022
- transportLocalHint: 'Local — same machine as MindOS server',
1023
- transportRemoteHint: 'Remote — connect from another device via HTTP',
1024
- remoteDetectedHint: 'Using your current remote IP.',
1025
- remoteManualHint: 'Replace 127.0.0.1 with your server\'s public or LAN IP.',
1026
- remoteSteps: 'To connect from another device: ① Open port {port} in firewall/security group ② Use the config below in your Agent ③ For public networks, consider SSH tunnel for encryption.',
1027
- noAuthWarning: '⚠ No auth token — set one in Settings → General before enabling remote access.',
1028
- showJson: 'Show JSON',
1029
- hideJson: 'Hide JSON',
1030
- },
1031
- monitoring: {
1032
- system: 'System',
1033
- heapMemory: 'Heap Memory',
1034
- rss: 'RSS',
1035
- uptime: 'Uptime',
1036
- nodeVersion: 'Node',
1037
- application: 'Application',
1038
- requests: 'Requests',
1039
- toolCalls: 'Tool Calls',
1040
- avgResponse: 'Avg Response',
1041
- tokens: 'Tokens',
1042
- errors: 'Errors',
1043
- knowledgeBase: 'Knowledge Base',
1044
- files: 'Files',
1045
- totalSize: 'Total Size',
1046
- rootPath: 'Root',
1047
- mcpStatus: 'Status',
1048
- mcpRunning: 'Running',
1049
- mcpStopped: 'Stopped',
1050
- mcpPort: 'Port',
1051
- autoRefresh: 'Auto-refresh every 5s',
1052
- fetchError: 'Failed to load monitoring data',
1053
- },
1054
- agents: {
1055
- mcpServer: 'MCP Server',
1056
- running: 'Running',
1057
- stopped: 'Not running',
1058
- restarting: 'Restarting...',
1059
- restart: 'Restart',
1060
- onPort: (port: number) => `on :${port}`,
1061
- refresh: 'Refresh',
1062
- refreshing: 'Refreshing...',
1063
- connected: 'Connected',
1064
- connectedCount: (n: number) => `Connected (${n})`,
1065
- detectedNotConfigured: 'Detected but not configured',
1066
- detectedCount: (n: number) => `Detected but not configured (${n})`,
1067
- notDetected: 'Not Detected',
1068
- notDetectedCount: (n: number) => `Not Detected (${n})`,
1069
- showAll: 'Show all',
1070
- hideAll: 'Hide',
1071
- connect: 'Connect',
1072
- noAgents: 'No agents detected on this machine.',
1073
- fetchError: 'Failed to load agent data',
1074
- autoRefresh: 'Auto-refresh every 30s',
1075
- },
1076
- save: 'Save',
1077
- saved: 'Saved',
1078
- saveFailed: 'Save failed',
1079
- reconfigure: 'Reconfigure',
1080
- askDisplayMode: {
1081
- label: 'Display Mode',
1082
- hint: 'Side panel stays docked on the right. Popup opens a floating dialog.',
1083
- panel: 'Side Panel',
1084
- popup: 'Popup',
1085
- },
1086
- update: {
1087
- checking: 'Checking for updates...',
1088
- upToDate: "You're up to date",
1089
- available: (current: string, latest: string) => `Update available: v${current} → v${latest}`,
1090
- updating: 'Updating MindOS... The server will restart shortly.',
1091
- updatingHint: 'This may take 1–3 minutes. Do not close this page.',
1092
- serverRestarting: 'Server is restarting, please wait...',
1093
- updated: 'Updated successfully! Reloading...',
1094
- timeout: 'Update may still be in progress.',
1095
- timeoutHint: 'The server may need more time to rebuild. Try refreshing.',
1096
- refreshButton: 'Refresh Page',
1097
- retryButton: 'Retry Update',
1098
- error: 'Failed to check for updates. Check your network connection.',
1099
- checkButton: 'Check for Updates',
1100
- updateButton: (version: string) => `Update to v${version}`,
1101
- releaseNotes: 'View release notes',
1102
- hint: 'Updates are installed via npm. Equivalent to running',
1103
- inTerminal: 'in your terminal.',
1104
- desktopDownloading: 'Downloading update...',
1105
- desktopReady: 'Update downloaded. Restart to apply.',
1106
- desktopRestart: 'Restart Now',
1107
- desktopHint: 'Updates are delivered through the Desktop app auto-updater.',
1108
- },
1109
- uninstall: {
1110
- title: 'Uninstall MindOS',
1111
- descCli: 'Remove MindOS CLI, background services, and configuration files from this machine.',
1112
- descDesktop: 'Remove MindOS Desktop, background services, and configuration files from this machine.',
1113
- warning: 'Select what to clean up. Your knowledge base files are always kept safe.',
1114
- stopServices: 'Stop services & remove daemon',
1115
- stopServicesDesc: 'Stop all running MindOS processes and remove the background daemon.',
1116
- removeConfig: 'Remove configuration',
1117
- removeConfigDesc: 'Delete ~/.mindos/ directory (config, logs, PID files).',
1118
- removeNpm: 'Uninstall CLI package',
1119
- removeNpmDesc: 'Run npm uninstall -g @geminilight/mindos.',
1120
- removeApp: 'Move Desktop app to Trash',
1121
- removeAppDesc: 'Move MindOS.app to Trash. You can restore it later if needed.',
1122
- confirmTitle: 'Confirm Uninstall',
1123
- confirmButton: 'Uninstall',
1124
- cancelButton: 'Cancel',
1125
- running: 'Uninstalling...',
1126
- success: 'MindOS has been uninstalled.',
1127
- successDesktop: 'MindOS has been uninstalled. The app will quit now.',
1128
- error: 'Uninstall failed. You can run `mindos uninstall` in terminal manually.',
1129
- nothingSelected: 'Select at least one item to uninstall.',
1130
- kbSafe: 'Your knowledge base files are always safe — they are never deleted by this action.',
1131
- },
1132
- },
1133
- onboarding: {
1134
- subtitle: 'Your knowledge base is empty. Pick a starter template to get going.',
1135
- templates: {
1136
- en: { title: 'English', desc: 'Pre-built structure with Profile, Notes, Projects, and more.' },
1137
- zh: { title: '中文', desc: '预置画像、笔记、项目等中文目录结构。' },
1138
- empty: { title: 'Empty', desc: 'Just the essentials — README, CONFIG, and INSTRUCTION.' },
1139
- },
1140
- importHint: 'Already have notes? Set MIND_ROOT to your existing directory in Settings.',
1141
- syncHint: 'Want cross-device sync? Run',
1142
- syncHintSuffix: 'in the terminal after setup.',
1143
- initError: 'Initialization failed. Please try again.',
1144
- dismiss: 'Dismiss',
1145
- },
1146
- shortcuts: [
1147
- { keys: ['⌘', 'K'], description: 'Search' },
1148
- { keys: ['⌘', '/'], description: 'MindOS Agent' },
1149
- { keys: ['⌘', ','], description: 'Settings' },
1150
- { keys: ['E'], description: 'Edit current file' },
1151
- { keys: ['⌘', 'S'], description: 'Save' },
1152
- { keys: ['Esc'], description: 'Cancel edit / close modal' },
1153
- { keys: ['@'], description: 'Attach file in MindOS Agent' },
1154
- ],
1155
- login: {
1156
- tagline: 'You think here, Agents act there.',
1157
- subtitle: 'Enter your password to continue',
1158
- passwordLabel: 'Password',
1159
- passwordPlaceholder: 'Enter password',
1160
- signIn: 'Sign in',
1161
- signingIn: 'Signing in…',
1162
- incorrectPassword: 'Incorrect password. Please try again.',
1163
- connectionError: 'Connection error. Please try again.',
1164
- },
1165
- notFound: {
1166
- title: 'File not found',
1167
- description: 'This file does not exist in your knowledge base.',
1168
- createButton: 'Create this file',
1169
- creating: 'Creating...',
1170
- goToParent: 'Go to parent folder',
1171
- goHome: 'Home',
1172
- },
1173
- updateBanner: {
1174
- newVersion: (latest: string, current: string) => `MindOS v${latest} available (current: v${current})`,
1175
- updateNow: 'Update',
1176
- runUpdate: 'Run',
1177
- orSee: 'or',
1178
- releaseNotes: 'release notes',
1179
- },
1180
- setup: {
1181
- stepTitles: ['Knowledge Base', 'AI Provider', 'Ports', 'Security', 'Agent Tools', 'Review'],
1182
- // Step 1
1183
- kbPath: 'Knowledge base path',
1184
- kbPathHint: 'Absolute path to your notes directory.',
1185
- kbPathDefault: '~/MindOS/mind',
1186
- kbPathUseDefault: (path: string) => `Use ${path}`,
1187
- kbPathHasFiles: (n: number) => `This directory already contains ${n} file${n > 1 ? 's' : ''}. You can skip the template or merge (existing files won't be overwritten).`,
1188
- kbTemplateSkip: 'Skip template',
1189
- kbTemplateMerge: 'Choose a template to merge',
1190
- template: 'Starter template',
1191
- templateSkip: 'Skip (directory already has files)',
1192
- // Step 2
1193
- aiProvider: 'AI Provider',
1194
- aiProviderHint: 'Choose your preferred AI service.',
1195
- aiSkip: 'Skip — configure later',
1196
- apiKey: 'API Key',
1197
- apiKeyExisting: 'Existing key configured. Leave blank to keep it.',
1198
- model: 'Model',
1199
- baseUrl: 'Base URL',
1200
- baseUrlHint: 'Optional. For proxies or OpenAI-compatible APIs.',
1201
- // Step 3
1202
- webPort: 'Web UI port',
1203
- mcpPort: 'MCP server port',
1204
- portHint: 'Valid range: 1024–65535',
1205
- portRestartWarning: 'The service will start on these ports after setup completes.',
1206
- portInUse: (p: number) => `Port ${p} is already in use.`,
1207
- portSuggest: (p: number) => `Use ${p}`,
1208
- portChecking: 'Checking…',
1209
- portSelf: 'Current port',
1210
- portConflict: 'Web UI and MCP ports must be different.',
1211
- portVerifyHint: 'Click outside each field to verify, or wait for auto-check.',
1212
- // Step 4
1213
- authToken: 'Auth Token',
1214
- authTokenHint: 'Bearer token for MCP / API clients. Auto-generated.',
1215
- authTokenUsage: 'Used for MCP connections and API clients. When configuring an Agent, this token is written automatically — no manual steps needed.',
1216
- authTokenUsageWhat: 'What is this?',
1217
- authTokenSeed: 'Custom seed (optional)',
1218
- authTokenSeedHint: 'Enter a passphrase to derive a deterministic token.',
1219
- generateToken: 'Generate',
1220
- copyToken: 'Copy',
1221
- copiedToken: 'Copied!',
1222
- webPassword: 'Web UI Password',
1223
- webPasswordHint: 'Optional. Protect browser access with a password.',
1224
- // Step 5 — Agent Tools
1225
- agentToolsTitle: 'Agent Tools',
1226
- agentToolsHint: 'Select AI agents to configure with MindOS MCP. Agents marked "not installed" can be configured now — they will work once you install the app.',
1227
- agentTransport: 'Transport',
1228
- agentScope: 'Scope',
1229
- agentToolsLoading: 'Loading agents…',
1230
- agentToolsEmpty: 'No supported agents detected.',
1231
- agentNoneSelected: 'No agents selected — you can configure later in Settings → MCP.',
1232
- agentSkipLater: 'Skip — install agents later in Settings > MCP',
1233
- agentSelectDetected: 'Select detected agents',
1234
- agentNoneDetected: 'No agents detected on your system.',
1235
- agentShowMore: (n: number) => `Show ${n} more agents`,
1236
- agentAdvanced: 'Advanced options',
1237
- agentScopeGlobal: 'Install for all projects',
1238
- agentScopeProject: 'This project only',
1239
- badgeInstalled: 'Installed',
1240
- badgeDetected: 'Detected',
1241
- badgeNotFound: 'Not found',
1242
- agentNotInstalled: 'not installed',
1243
- agentDetected: 'detected',
1244
- agentNotFound: 'not found',
1245
- agentStatusOk: 'configured',
1246
- agentStatusError: 'failed',
1247
- agentInstalling: 'Configuring…',
1248
- agentTransportAuto: 'Auto (recommended)',
1249
- agentTransportLabel: 'Transport',
1250
- agentVerified: 'verified',
1251
- agentUnverified: 'unverified',
1252
- agentVerifyNote: 'stdio agents are verified after restart',
1253
- // Skill auto-install
1254
- skillWhat: 'Skills teach AI agents how to use your knowledge base — like instructions for reading, writing, and organizing your notes.',
1255
- skillAutoHint: (name: string) => `Based on your template, the "${name}" skill will be installed to selected agents.`,
1256
- skillLabel: 'Skill',
1257
- skillInstalling: 'Installing skill…',
1258
- skillInstalled: 'Skill installed',
1259
- skillFailed: 'Skill install failed',
1260
- // Step 2 — AI skip card
1261
- aiSkipTitle: 'Skip for now',
1262
- aiSkipDesc: 'You can add an API key later in Settings → AI.',
1263
- // Step 6 — Review
1264
- reviewHint: 'Verify your settings, then press Complete Setup.',
1265
- reviewInstallResults: 'Agent configuration results:',
1266
- phaseSaving: 'Saving configuration…',
1267
- phaseAgents: 'Configuring agents…',
1268
- phaseSkill: 'Installing skill…',
1269
- phaseDone: 'Setup complete!',
1270
- retryAgent: 'Retry',
1271
- agentFailedCount: (n: number) => `${n} agent${n > 1 ? 's' : ''} failed`,
1272
- agentCountSummary: (n: number) => `${n} agent${n > 1 ? 's' : ''}`,
1273
- agentFailureNote: 'Agent failures are non-blocking — you can enter MindOS and retry from Settings → MCP.',
1274
- portAvailable: 'Available',
1275
- portChanged: 'Port changed — please restart the server for it to take effect.',
1276
- restartRequired: 'Server restart required for these changes to take effect.',
1277
- restartNow: 'Restart now',
1278
- restarting: 'Restarting…',
1279
- restartDone: 'Server is restarting. Redirecting shortly…',
1280
- restartManual: 'Restart manually:',
1281
- // Buttons
1282
- back: 'Back',
1283
- next: 'Next',
1284
- complete: 'Complete Setup',
1285
- skip: 'Skip',
1286
- // Status
1287
- completing: 'Saving...',
1288
- completeDone: 'Setup complete!',
1289
- completeFailed: 'Setup failed. Please try again.',
1290
- // Welcome banner (shown after first onboard)
1291
- welcomeTitle: 'Welcome to MindOS!',
1292
- welcomeDesc: 'Setup is complete. Start by asking AI a question, browsing your knowledge base, or configuring MCP agents.',
1293
- welcomeLinkReconfigure: 'Reconfigure',
1294
- welcomeLinkAskAI: 'MindOS Agent',
1295
- welcomeLinkMCP: 'MCP Settings',
1296
- },
1297
- guide: {
1298
- title: 'Quick Start',
1299
- showGuide: 'Show getting started guide',
1300
- close: 'Close',
1301
- skip: 'Skip',
1302
- import: {
1303
- title: 'Import your files',
1304
- cta: 'Import',
1305
- desc: 'Upload your resume, project docs, or notes — anything you want AI agents to know about you.',
1306
- button: 'Import Files',
1307
- },
1308
- ai: {
1309
- title: 'See AI read your content',
1310
- cta: 'Try it',
1311
- desc: 'Your files are in the knowledge base. Ask MindOS Agent what it learned:',
1312
- prompt: 'Introduce me based on my knowledge base — who am I and what am I working on?',
1313
- promptEmpty: 'Help me design a knowledge base folder structure that fits my needs',
1314
- },
1315
- agent: {
1316
- title: 'Try in another Agent',
1317
- cta: 'Copy prompt',
1318
- desc: 'Open Cursor, Claude Code, or any MCP-connected Agent and paste this:',
1319
- copyPrompt: 'Read my MindOS knowledge base and summarize my background, then suggest what I should focus on next.',
1320
- copy: 'Copy',
1321
- copied: 'Copied!',
1322
- },
1323
- done: {
1324
- title: "You're all set!",
1325
- titleFinal: "You've mastered MindOS essentials!",
1326
- steps: [
1327
- { hint: 'Next: try saving an article into your KB →', prompt: 'Help me save the key points from this article into MindOS.' },
1328
- { hint: 'Next: try turning experience into a reusable SOP →', prompt: 'Help me distill this conversation into a reusable workflow in MindOS.' },
1329
- ],
1330
- },
1331
- },
1332
- explore: {
1333
- title: 'Explore Use Cases',
1334
- subtitle: 'Discover what you can do with MindOS — pick a scenario and try it now.',
1335
- tryIt: 'Try it',
1336
- categories: {
1337
- 'knowledge-management': 'Knowledge Management',
1338
- 'memory-sync': 'Memory Sync',
1339
- 'auto-execute': 'Auto Execute',
1340
- 'experience-evolution': 'Experience Evolution',
1341
- 'human-insights': 'Human Insights',
1342
- 'audit-control': 'Audit & Control',
1343
- },
1344
- scenarios: {
1345
- 'first-day': 'First Day',
1346
- 'daily': 'Daily Work',
1347
- 'project': 'Project Work',
1348
- 'advanced': 'Advanced',
1349
- },
1350
- all: 'All',
1351
- byCapability: 'By Capability',
1352
- byScenario: 'By Scenario',
1353
- c1: {
1354
- title: 'Inject Your Identity',
1355
- desc: 'Tell all AI agents who you are — preferences, tech stack, communication style — in one shot.',
1356
- prompt: "Here's my resume, read it and organize my info into MindOS.",
1357
- },
1358
- c2: {
1359
- title: 'Save Information',
1360
- desc: 'Archive articles, meeting notes, or web pages into your knowledge base with one prompt.',
1361
- prompt: 'Help me save the key points from this article into MindOS.',
1362
- },
1363
- c3: {
1364
- title: 'Cross-Agent Handoff',
1365
- desc: 'Start a plan in MindOS, continue coding in Claude Code, refine in Cursor — zero context loss.',
1366
- prompt: 'Help me start coding based on the plan in MindOS.',
1367
- },
1368
- c4: {
1369
- title: 'Experience → SOP',
1370
- desc: 'Turn hard-won debugging sessions into reusable workflows that prevent future mistakes.',
1371
- prompt: 'Help me distill this conversation into a reusable workflow in MindOS.',
1372
- },
1373
- c5: {
1374
- title: 'Capture Ideas on the Go',
1375
- desc: 'Jot down an inspiration on your phone — MindOS archives, decomposes, and assigns to agents.',
1376
- prompt: 'Help me organize this idea into MindOS and break it into actionable sub-tasks.',
1377
- },
1378
- c6: {
1379
- title: 'Project Cold Start',
1380
- desc: 'Spin up a new project in 4 minutes — your profile and SOPs guide the scaffolding automatically.',
1381
- prompt: 'Help me start a new project following the Startup SOP in MindOS.',
1382
- },
1383
- c7: {
1384
- title: 'Research & Archive',
1385
- desc: 'Let agents research competitors or topics for you, then file structured results in your KB.',
1386
- prompt: 'Help me research X, Y, Z products and save results to the MindOS product library.',
1387
- },
1388
- c8: {
1389
- title: 'Network Management',
1390
- desc: 'Log conversations with contacts, auto-generate follow-up TODOs, and keep full context.',
1391
- prompt: 'I met with someone today — update MindOS Connections and create follow-up TODOs.',
1392
- },
1393
- c9: {
1394
- title: 'Audit & Correct',
1395
- desc: 'Review what agents know about you, fix mistakes in one place, and all agents update instantly.',
1396
- prompt: 'Check my MindOS Profile for accuracy and correct any errors.',
1397
- },
1398
- },
1399
- walkthrough: {
1400
- step: (current: number, total: number) => `${current} of ${total}`,
1401
- next: 'Next',
1402
- back: 'Back',
1403
- skip: 'Skip tour',
1404
- done: 'Done',
1405
- exploreCta: 'Explore what you can do →',
1406
- steps: [
1407
- {
1408
- title: 'Your Project Memory',
1409
- body: 'Organize projects, SOPs, and preferences in Spaces. Everything is local-first and under your control.',
1410
- },
1411
- {
1412
- title: 'AI That Already Knows You',
1413
- body: 'MindOS Agent reads your entire knowledge base automatically. Ask about your projects — no need to re-explain anything.',
1414
- },
1415
- {
1416
- title: 'Connect Any Agent',
1417
- body: 'Link Cursor, Claude Code, or Windsurf via MCP — they all share the same project memory.',
1418
- },
1419
- {
1420
- title: 'Echo — Growth Compounds',
1421
- body: 'About you, daily reflections, growth tracking — MindOS helps you accumulate cognitive compound interest over time.',
1422
- },
1423
- ],
1424
- },
1425
- help: {
1426
- title: 'Help & Guide',
1427
- subtitle: 'Everything you need to get started with MindOS',
1428
- whatIs: {
1429
- title: 'What is MindOS?',
1430
- body: 'MindOS is where you think, and where your AI agents act. You and AI share the same brain — when you correct AI, that correction is captured automatically; next time AI understands you better, and your own thinking gets sharper along the way. You and AI grow together. In an age of AI anxiety, MindOS focuses on human growth — think clearly, make better decisions, ship faster, and build up knowledge that\'s truly yours.',
1431
- },
1432
- quickStart: {
1433
- title: 'Quick Start',
1434
- step1Title: 'Browse your knowledge base',
1435
- step1Desc: 'Click the Spaces icon in the left sidebar to explore your files. Each top-level folder is a "Space" — a themed area like Profile, Notes, or Projects.',
1436
- step2Title: 'Chat with AI',
1437
- step2Desc: 'Press ⌘/ (or Ctrl/) to open the AI panel. Ask anything about your knowledge base, or use @ to attach a specific file for context.',
1438
- step3Title: 'Connect your AI agents',
1439
- step3Desc: 'Go to Settings → MCP to connect external agents like Claude Code, Cursor, or Windsurf. Once connected, they can read and write your knowledge base directly.',
1440
- },
1441
- concepts: {
1442
- title: 'Core Concepts',
1443
- spaceTitle: 'Space',
1444
- spaceDesc: 'Spaces are knowledge partitions organized the way you think. You decide the structure, and AI agents follow it to read, write, and manage automatically.',
1445
- instructionTitle: 'Instruction',
1446
- instructionDesc: 'A rules file that all AI agents obey. You write the boundaries once, and every agent connected to your knowledge base follows them.',
1447
- skillTitle: 'Skill',
1448
- skillDesc: 'Teaches agents how to operate your knowledge base — reading, writing, organizing. Agents don\'t guess; they follow the skills you\'ve installed.',
1449
- },
1450
- shortcutsTitle: 'Keyboard Shortcuts',
1451
- agentUsage: {
1452
- title: 'Using MindOS with AI Agents',
1453
- intro: 'Once you connect an agent (Claude Code, Cursor, Windsurf, etc.) via MCP, just talk to it naturally. The agent can read and write your knowledge base directly — no special commands needed. Here are the most common scenarios:',
1454
- scenarios: [
1455
- { emoji: '🪪', title: 'Inject Your Identity', desc: 'Tell all AI agents who you are — preferences, tech stack, communication style — in one shot.', prompt: "\"Here's my resume, read it and organize my info into MindOS.\"" },
1456
- { emoji: '🔄', title: 'Cross-Agent Handoff', desc: 'Brainstorm ideas in GPT, then execute in Claude Code — zero context loss.', prompt: '"Save this conversation to MindOS."\n"Read the plan in MindOS and help me start coding."' },
1457
- { emoji: '📋', title: 'Experience → SOP', desc: 'Turn hard-won debugging sessions into reusable workflows that prevent future mistakes.', prompt: '"Help me distill this conversation into a reusable workflow in MindOS."' },
1458
- { emoji: '🚀', title: 'Project Cold Start', desc: 'Spin up a new project in minutes — your profile and SOPs guide the scaffolding automatically.', prompt: '"Help me start a new project following the Startup SOP in MindOS."' },
1459
- { emoji: '🔍', title: 'Research & Archive', desc: 'Let agents research competitors or topics for you, then file structured results in your knowledge base.', prompt: '"Help me research X, Y, Z products and save results to the MindOS product library."' },
1460
- ],
1461
- copy: 'Copy prompt',
1462
- hint: 'Tip: The agent auto-discovers your knowledge base structure. Just mention "MindOS" in your prompt and it will know where to look. Click "Explore" in the left sidebar for more scenarios.',
1463
- },
1464
- shortcuts: {
1465
- search: 'Search files',
1466
- askAI: 'Toggle AI panel',
1467
- settings: 'Open Settings',
1468
- shortcutPanel: 'Keyboard shortcuts panel',
1469
- editFile: 'Edit current file',
1470
- save: 'Save file',
1471
- closePanel: 'Close panel / Exit modal',
1472
- attachFile: 'Attach file in AI chat',
1473
- },
1474
- faq: {
1475
- title: 'FAQ',
1476
- items: [
1477
- { q: 'How do I change the language?', a: 'Go to Settings → Appearance → Language. You can switch between English and Chinese.' },
1478
- { q: 'How do I connect an AI agent?', a: 'Go to Settings → MCP & Skills. MindOS auto-detects installed agents (Claude Code, Cursor, etc.) and lets you connect them with one click.' },
1479
- { q: 'Where is my data stored?', a: 'All your data stays on your local machine as plain Markdown files. MindOS never uploads your data to any cloud service. You own everything.' },
1480
- { q: 'How do I sync across devices?', a: 'Go to Settings → Sync. MindOS uses Git for cross-device sync. Enter your Git remote URL and access token to start syncing.' },
1481
- { q: 'Can I use my own AI provider?', a: 'Yes! Go to Settings → AI. You can use OpenAI, Anthropic, Google, or any OpenAI-compatible API with a custom base URL.' },
1482
- { q: 'What file formats are supported?', a: 'MindOS works best with Markdown (.md) files, but also supports JSON, CSV, and plain text. Plugins extend rendering for special formats like Kanban boards or timelines.' },
1483
- { q: 'How do I create a new note?', a: 'Click the + icon next to any folder in the file tree, or ask AI to create one for you. Notes are just Markdown files — you can also create them from your file system.' },
1484
- ],
1485
- },
1486
- },
1487
-
1488
- /** Disabled-state and contextual tooltip hints */
1489
- hints: {
1490
- noValidFiles: 'No valid files selected',
1491
- aiOrganizing: 'AI is organizing',
1492
- importInProgress: 'Import in progress',
1493
- templateInitializing: 'Another template is being initialized',
1494
- configureAiKey: 'Configure API key in Settings → AI',
1495
- syncInProgress: 'Sync already in progress',
1496
- toggleInProgress: 'Toggle operation in progress',
1497
- typeMessage: 'Type a message',
1498
- mentionInProgress: 'Mention or command in progress',
1499
- cleanupInProgress: 'Cleanup already in progress',
1500
- tokenResetInProgress: 'Token reset in progress',
1501
- aiNotConfigured: 'AI not configured or generation in progress',
1502
- generationInProgress: 'Generation in progress or AI not configured',
1503
- cannotJumpForward: 'Cannot jump forward in setup',
1504
- testInProgressOrNoKey: 'Test in progress or no API key',
1505
- workflowStepRunning: 'Workflow step already running',
1506
- workflowRunning: 'Workflow step is running',
1507
- sessionHistory: 'Session history',
1508
- newSession: 'New session',
1509
- attachFile: 'Attach local file',
1510
- maximizePanel: 'Maximize panel',
1511
- restorePanel: 'Restore panel',
1512
- dockToSide: 'Dock to side panel',
1513
- openAsPopup: 'Open as popup',
1514
- closePanel: 'Close',
1515
- newChat: 'New chat',
1516
- closeSession: 'Close session',
1517
- },
1518
- } as const;
1
+ // Moved to app/lib/i18n/modules/. This file kept for backward compatibility.
2
+ export { en } from './i18n/index';