@geminilight/mindos 0.5.60 → 0.5.63
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/agents/[agentKey]/page.tsx +17 -0
- package/app/app/agents/page.tsx +20 -0
- package/app/app/api/changes/route.ts +57 -0
- package/app/app/api/file/route.ts +146 -1
- package/app/app/api/mcp/status/route.ts +1 -1
- package/app/app/api/settings/test-key/route.ts +43 -1
- package/app/app/changes/page.tsx +16 -0
- package/app/components/ActivityBar.tsx +9 -1
- package/app/components/SidebarLayout.tsx +12 -2
- package/app/components/agents/AgentDetailContent.tsx +117 -0
- package/app/components/agents/AgentsContentPage.tsx +87 -0
- package/app/components/agents/AgentsMcpSection.tsx +123 -0
- package/app/components/agents/AgentsOverviewSection.tsx +89 -0
- package/app/components/agents/AgentsSkillsSection.tsx +146 -0
- package/app/components/agents/agents-content-model.ts +80 -0
- package/app/components/ask/AskContent.tsx +15 -6
- package/app/components/changes/ChangesBanner.tsx +51 -0
- package/app/components/changes/ChangesContentPage.tsx +190 -0
- package/app/components/changes/line-diff.ts +75 -0
- package/app/components/panels/AgentsPanel.tsx +11 -0
- package/app/components/settings/UpdateTab.tsx +190 -1
- package/app/lib/core/content-changes.ts +153 -0
- package/app/lib/core/index.ts +14 -0
- package/app/lib/fs.ts +22 -0
- package/app/lib/i18n-en.ts +92 -0
- package/app/lib/i18n-zh.ts +92 -0
- package/app/package.json +3 -2
- package/package.json +1 -1
package/app/lib/fs.ts
CHANGED
|
@@ -25,8 +25,13 @@ import {
|
|
|
25
25
|
gitShowFile as coreGitShowFile,
|
|
26
26
|
invalidateSearchIndex,
|
|
27
27
|
summarizeTopLevelSpaces,
|
|
28
|
+
appendContentChange as coreAppendContentChange,
|
|
29
|
+
listContentChanges as coreListContentChanges,
|
|
30
|
+
markContentChangesSeen as coreMarkContentChangesSeen,
|
|
31
|
+
getContentChangeSummary as coreGetContentChangeSummary,
|
|
28
32
|
} from './core';
|
|
29
33
|
import type { MindSpaceSummary } from './core';
|
|
34
|
+
import type { ContentChangeEvent, ContentChangeInput, ContentChangeSummary } from './core';
|
|
30
35
|
import { FileNode, SpacePreview } from './core/types';
|
|
31
36
|
import { SearchMatch } from './types';
|
|
32
37
|
import { effectiveSopRoot } from './settings';
|
|
@@ -190,6 +195,22 @@ export function listMindSpaces(): MindSpaceSummary[] {
|
|
|
190
195
|
return summarizeTopLevelSpaces(getMindRoot(), ensureCache().tree);
|
|
191
196
|
}
|
|
192
197
|
|
|
198
|
+
export function appendContentChange(input: ContentChangeInput): ContentChangeEvent {
|
|
199
|
+
return coreAppendContentChange(getMindRoot(), input);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
export function listContentChanges(options: { path?: string; limit?: number } = {}): ContentChangeEvent[] {
|
|
203
|
+
return coreListContentChanges(getMindRoot(), options);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
export function markContentChangesSeen(): void {
|
|
207
|
+
coreMarkContentChangesSeen(getMindRoot());
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
export function getContentChangeSummary(): ContentChangeSummary {
|
|
211
|
+
return coreGetContentChangeSummary(getMindRoot());
|
|
212
|
+
}
|
|
213
|
+
|
|
193
214
|
/** Returns space preview (INSTRUCTION + README excerpts) for a directory, or null if not a space. */
|
|
194
215
|
export function getSpacePreview(dirPath: string): SpacePreview | null {
|
|
195
216
|
const root = getMindRoot();
|
|
@@ -544,6 +565,7 @@ export function gitShowFile(filePath: string, commit: string): string {
|
|
|
544
565
|
import type { BacklinkEntry } from './core/types';
|
|
545
566
|
export type { BacklinkEntry } from './core/types';
|
|
546
567
|
export type { MindSpaceSummary } from './core';
|
|
568
|
+
export type { ContentChangeEvent, ContentChangeInput, ContentChangeSummary, ContentChangeSource } from './core';
|
|
547
569
|
|
|
548
570
|
export function findBacklinks(targetPath: string): BacklinkEntry[] {
|
|
549
571
|
return coreFindBacklinks(getMindRoot(), targetPath);
|
package/app/lib/i18n-en.ts
CHANGED
|
@@ -122,6 +122,7 @@ export const en = {
|
|
|
122
122
|
clearAll: 'Clear all',
|
|
123
123
|
confirmClear: 'Confirm clear?',
|
|
124
124
|
noSessions: 'No saved sessions.',
|
|
125
|
+
draftingHint: 'AI is still running — you can draft the next step now.',
|
|
125
126
|
},
|
|
126
127
|
panels: {
|
|
127
128
|
agents: {
|
|
@@ -138,6 +139,7 @@ export const en = {
|
|
|
138
139
|
noAgents: 'No agents detected.',
|
|
139
140
|
autoRefresh: 'Auto-refresh every 30s',
|
|
140
141
|
connect: 'Connect',
|
|
142
|
+
openDashboard: 'Dashboard',
|
|
141
143
|
installing: 'Installing...',
|
|
142
144
|
install: (name: string) => `Install ${name}`,
|
|
143
145
|
// Snippet section
|
|
@@ -255,6 +257,92 @@ export const en = {
|
|
|
255
257
|
pastYouLead: 'Choices and moods you set down at another point on the timeline.',
|
|
256
258
|
growthLead: 'What you are steering toward, and how it slowly shifts.',
|
|
257
259
|
},
|
|
260
|
+
agentsContent: {
|
|
261
|
+
title: 'Agents',
|
|
262
|
+
subtitle: 'Manage connections, skills, and per-agent status in one place.',
|
|
263
|
+
navOverview: 'Overview',
|
|
264
|
+
navMcp: 'MCP',
|
|
265
|
+
navSkills: 'Skills',
|
|
266
|
+
backToOverview: 'Back to Agents',
|
|
267
|
+
na: 'N/A',
|
|
268
|
+
status: {
|
|
269
|
+
connected: 'Connected',
|
|
270
|
+
detected: 'Detected',
|
|
271
|
+
notFound: 'Not found',
|
|
272
|
+
},
|
|
273
|
+
overview: {
|
|
274
|
+
connected: 'Connected',
|
|
275
|
+
detected: 'Detected',
|
|
276
|
+
notFound: 'Not found',
|
|
277
|
+
riskQueue: 'Risk action queue',
|
|
278
|
+
noRisk: 'No active risks detected.',
|
|
279
|
+
usagePulse: 'Usage pulse',
|
|
280
|
+
successRate7d: 'Success rate (7d)',
|
|
281
|
+
topSkills: 'Top enabled skills',
|
|
282
|
+
failedAgents: 'Most failed agents',
|
|
283
|
+
na: 'N/A',
|
|
284
|
+
},
|
|
285
|
+
mcp: {
|
|
286
|
+
title: 'MCP health',
|
|
287
|
+
refresh: 'Refresh',
|
|
288
|
+
connectionGraph: 'Connection graph',
|
|
289
|
+
table: {
|
|
290
|
+
agent: 'Agent',
|
|
291
|
+
status: 'Status',
|
|
292
|
+
transport: 'Transport',
|
|
293
|
+
actions: 'Actions',
|
|
294
|
+
},
|
|
295
|
+
actions: {
|
|
296
|
+
copySnippet: 'Copy Snippet',
|
|
297
|
+
copied: 'Copied',
|
|
298
|
+
testConnection: 'Test Connection',
|
|
299
|
+
reconnect: 'Reconnect',
|
|
300
|
+
},
|
|
301
|
+
},
|
|
302
|
+
skills: {
|
|
303
|
+
title: 'Skills',
|
|
304
|
+
capabilityGroups: 'Capability groups',
|
|
305
|
+
searchPlaceholder: 'Search skills...',
|
|
306
|
+
matrixToggle: 'Skill x Agent compatibility matrix',
|
|
307
|
+
sourceAll: 'All',
|
|
308
|
+
sourceBuiltin: 'Built-in',
|
|
309
|
+
sourceUser: 'Custom',
|
|
310
|
+
emptyGroup: 'No skills in this group.',
|
|
311
|
+
groupLabels: {
|
|
312
|
+
research: 'Research',
|
|
313
|
+
coding: 'Coding',
|
|
314
|
+
docs: 'Docs',
|
|
315
|
+
ops: 'Ops',
|
|
316
|
+
memory: 'Memory',
|
|
317
|
+
},
|
|
318
|
+
},
|
|
319
|
+
detail: {
|
|
320
|
+
identity: 'Identity',
|
|
321
|
+
connection: 'Connection',
|
|
322
|
+
capabilities: 'Capability Profile',
|
|
323
|
+
skillAssignments: 'Skill Assignments',
|
|
324
|
+
recentActivity: 'Recent Activity',
|
|
325
|
+
spaceReach: 'Space Reach',
|
|
326
|
+
agentKey: 'Agent key',
|
|
327
|
+
status: 'Status',
|
|
328
|
+
transport: 'Transport',
|
|
329
|
+
endpoint: 'Endpoint',
|
|
330
|
+
port: 'Port',
|
|
331
|
+
auth: 'Auth',
|
|
332
|
+
authConfigured: 'Configured',
|
|
333
|
+
authMissing: 'Missing',
|
|
334
|
+
projectScope: 'Project scope',
|
|
335
|
+
globalScope: 'Global scope',
|
|
336
|
+
format: 'Config format',
|
|
337
|
+
yes: 'Yes',
|
|
338
|
+
no: 'No',
|
|
339
|
+
noSkills: 'No enabled skills.',
|
|
340
|
+
noActivity: 'No activity recorded yet.',
|
|
341
|
+
noSpaceReach: 'No space reach data yet.',
|
|
342
|
+
},
|
|
343
|
+
detailSubtitle: 'Inspect this agent without leaving the content view.',
|
|
344
|
+
detailNotFound: 'Agent not found. It may have been uninstalled or renamed.',
|
|
345
|
+
},
|
|
258
346
|
shortcutPanel: {
|
|
259
347
|
title: 'Keyboard Shortcuts',
|
|
260
348
|
navigation: 'Navigation',
|
|
@@ -552,6 +640,10 @@ export const en = {
|
|
|
552
640
|
releaseNotes: 'View release notes',
|
|
553
641
|
hint: 'Updates are installed via npm. Equivalent to running',
|
|
554
642
|
inTerminal: 'in your terminal.',
|
|
643
|
+
desktopDownloading: 'Downloading update...',
|
|
644
|
+
desktopReady: 'Update downloaded. Restart to apply.',
|
|
645
|
+
desktopRestart: 'Restart Now',
|
|
646
|
+
desktopHint: 'Updates are delivered through the Desktop app auto-updater.',
|
|
555
647
|
},
|
|
556
648
|
},
|
|
557
649
|
onboarding: {
|
package/app/lib/i18n-zh.ts
CHANGED
|
@@ -147,6 +147,7 @@ export const zh = {
|
|
|
147
147
|
clearAll: '清除全部',
|
|
148
148
|
confirmClear: '确认清除?',
|
|
149
149
|
noSessions: '暂无历史对话。',
|
|
150
|
+
draftingHint: 'AI 仍在执行,你可以先输入下一步。',
|
|
150
151
|
},
|
|
151
152
|
panels: {
|
|
152
153
|
agents: {
|
|
@@ -163,6 +164,7 @@ export const zh = {
|
|
|
163
164
|
noAgents: '未检测到智能体。',
|
|
164
165
|
autoRefresh: '每 30 秒自动刷新',
|
|
165
166
|
connect: '连接',
|
|
167
|
+
openDashboard: '仪表盘',
|
|
166
168
|
installing: '安装中...',
|
|
167
169
|
install: (name: string) => `安装 ${name}`,
|
|
168
170
|
// Snippet section
|
|
@@ -279,6 +281,92 @@ export const zh = {
|
|
|
279
281
|
pastYouLead: '在另一个时间刻度上,瞥见你写下的选择与心情。',
|
|
280
282
|
growthLead: '你在推的方向,以及它怎样慢慢偏转。',
|
|
281
283
|
},
|
|
284
|
+
agentsContent: {
|
|
285
|
+
title: 'Agents',
|
|
286
|
+
subtitle: '在同一页面管理连接、技能和单 Agent 状态。',
|
|
287
|
+
navOverview: '总览',
|
|
288
|
+
navMcp: 'MCP',
|
|
289
|
+
navSkills: 'Skills',
|
|
290
|
+
backToOverview: '返回 Agents',
|
|
291
|
+
na: '暂无',
|
|
292
|
+
status: {
|
|
293
|
+
connected: '已连接',
|
|
294
|
+
detected: '已检测',
|
|
295
|
+
notFound: '未找到',
|
|
296
|
+
},
|
|
297
|
+
overview: {
|
|
298
|
+
connected: '已连接',
|
|
299
|
+
detected: '已检测',
|
|
300
|
+
notFound: '未找到',
|
|
301
|
+
riskQueue: '风险动作队列',
|
|
302
|
+
noRisk: '当前没有风险项。',
|
|
303
|
+
usagePulse: '使用脉搏',
|
|
304
|
+
successRate7d: '7 天成功率',
|
|
305
|
+
topSkills: '已启用技能',
|
|
306
|
+
failedAgents: '失败最多 Agent',
|
|
307
|
+
na: '暂无',
|
|
308
|
+
},
|
|
309
|
+
mcp: {
|
|
310
|
+
title: 'MCP 健康',
|
|
311
|
+
refresh: '刷新',
|
|
312
|
+
connectionGraph: '连接图谱',
|
|
313
|
+
table: {
|
|
314
|
+
agent: 'Agent',
|
|
315
|
+
status: '状态',
|
|
316
|
+
transport: '传输',
|
|
317
|
+
actions: '操作',
|
|
318
|
+
},
|
|
319
|
+
actions: {
|
|
320
|
+
copySnippet: '复制配置',
|
|
321
|
+
copied: '已复制',
|
|
322
|
+
testConnection: '测试连接',
|
|
323
|
+
reconnect: '重连',
|
|
324
|
+
},
|
|
325
|
+
},
|
|
326
|
+
skills: {
|
|
327
|
+
title: 'Skills',
|
|
328
|
+
capabilityGroups: '能力分组',
|
|
329
|
+
searchPlaceholder: '搜索技能...',
|
|
330
|
+
matrixToggle: 'Skill x Agent 兼容矩阵',
|
|
331
|
+
sourceAll: '全部',
|
|
332
|
+
sourceBuiltin: '内置',
|
|
333
|
+
sourceUser: '自定义',
|
|
334
|
+
emptyGroup: '该分组暂无技能。',
|
|
335
|
+
groupLabels: {
|
|
336
|
+
research: '研究',
|
|
337
|
+
coding: '编码',
|
|
338
|
+
docs: '文档',
|
|
339
|
+
ops: '运维',
|
|
340
|
+
memory: '记忆',
|
|
341
|
+
},
|
|
342
|
+
},
|
|
343
|
+
detail: {
|
|
344
|
+
identity: '身份',
|
|
345
|
+
connection: '连接',
|
|
346
|
+
capabilities: '能力画像',
|
|
347
|
+
skillAssignments: '技能分配',
|
|
348
|
+
recentActivity: '最近活动',
|
|
349
|
+
spaceReach: '空间触达',
|
|
350
|
+
agentKey: 'Agent Key',
|
|
351
|
+
status: '状态',
|
|
352
|
+
transport: '传输',
|
|
353
|
+
endpoint: '端点',
|
|
354
|
+
port: '端口',
|
|
355
|
+
auth: '认证',
|
|
356
|
+
authConfigured: '已配置',
|
|
357
|
+
authMissing: '未配置',
|
|
358
|
+
projectScope: '项目范围',
|
|
359
|
+
globalScope: '全局范围',
|
|
360
|
+
format: '配置格式',
|
|
361
|
+
yes: '是',
|
|
362
|
+
no: '否',
|
|
363
|
+
noSkills: '暂无启用技能。',
|
|
364
|
+
noActivity: '暂无活动记录。',
|
|
365
|
+
noSpaceReach: '暂无空间触达数据。',
|
|
366
|
+
},
|
|
367
|
+
detailSubtitle: '无需离开内容页即可查看该 Agent 详情。',
|
|
368
|
+
detailNotFound: '未找到该 Agent,可能已卸载或重命名。',
|
|
369
|
+
},
|
|
282
370
|
shortcutPanel: {
|
|
283
371
|
title: '快捷键',
|
|
284
372
|
navigation: '导航',
|
|
@@ -576,6 +664,10 @@ export const zh = {
|
|
|
576
664
|
releaseNotes: '查看更新日志',
|
|
577
665
|
hint: '更新通过 npm 安装,等同于在终端运行',
|
|
578
666
|
inTerminal: '。',
|
|
667
|
+
desktopDownloading: '正在下载更新...',
|
|
668
|
+
desktopReady: '更新已下载,重启后生效。',
|
|
669
|
+
desktopRestart: '立即重启',
|
|
670
|
+
desktopHint: '更新通过桌面端自动更新推送。',
|
|
579
671
|
},
|
|
580
672
|
},
|
|
581
673
|
onboarding: {
|
package/app/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"test": "vitest run",
|
|
12
12
|
"postinstall": "node ../scripts/fix-postcss-deps.cjs"
|
|
13
13
|
},
|
|
14
|
-
"dependencies": {
|
|
14
|
+
"dependencies": {
|
|
15
15
|
"@base-ui/react": "^1.2.0",
|
|
16
16
|
"@codemirror/lang-markdown": "^6.5.0",
|
|
17
17
|
"@codemirror/state": "^6.5.4",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"tailwind-merge": "^3.5.0",
|
|
56
56
|
"tiptap-markdown": "^0.9.0",
|
|
57
57
|
"tw-animate-css": "^1.4.0",
|
|
58
|
-
"zod": "^3.23.8"
|
|
58
|
+
"zod": "^3.23.8"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
61
|
"@tailwindcss/postcss": "^4",
|
|
@@ -66,6 +66,7 @@
|
|
|
66
66
|
"@vitest/coverage-v8": "^4.1.0",
|
|
67
67
|
"eslint": "^9",
|
|
68
68
|
"eslint-config-next": "16.1.6",
|
|
69
|
+
"jsdom": "^29.0.1",
|
|
69
70
|
"playwright": "^1.58.2",
|
|
70
71
|
"shadcn": "^4.0.1",
|
|
71
72
|
"tailwindcss": "^4",
|
package/package.json
CHANGED