@geminilight/mindos 0.5.14 → 0.5.15

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/README.md CHANGED
@@ -452,6 +452,7 @@ MindOS/
452
452
  | `mindos gateway logs` | Tail background service logs |
453
453
  | `mindos doctor` | Health check (config, ports, build, daemon status) |
454
454
  | `mindos update` | Update MindOS to the latest version |
455
+ | `mindos uninstall` | Fully uninstall MindOS (stop, remove daemon, npm uninstall) |
455
456
  | `mindos logs` | Tail service logs (`~/.mindos/mindos.log`) |
456
457
  | `mindos config show` | Print current config (API keys masked) |
457
458
  | `mindos config validate` | Validate config file |
@@ -480,7 +481,14 @@ Join our WeChat group for early access, feedback, and AI workflow discussions:
480
481
  <img src="assets/images/wechat-qr.png" alt="WeChat Group QR Code" width="200" />
481
482
  </p>
482
483
 
483
- > Scan the QR code or ask an existing member to invite you.
484
+ > Scan the QR code or add WeChat **wtfly2018** to be invited.
485
+
486
+ ---
487
+
488
+ ## 👥 Contributors
489
+
490
+ <a href="https://github.com/GeminiLight"><img src="https://github.com/GeminiLight.png" width="60" style="border-radius:50%" alt="GeminiLight" /></a>
491
+ <a href="https://github.com/yeahjack"><img src="https://github.com/yeahjack.png" width="60" style="border-radius:50%" alt="yeahjack" /></a>
484
492
 
485
493
  ---
486
494
 
package/README_zh.md CHANGED
@@ -455,6 +455,7 @@ MindOS/
455
455
  | `mindos gateway logs` | 实时查看服务日志 |
456
456
  | `mindos doctor` | 健康检查(配置、端口、构建、daemon 状态) |
457
457
  | `mindos update` | 更新 MindOS 到最新版本 |
458
+ | `mindos uninstall` | 完整卸载 MindOS(停止进程、移除 daemon、npm 卸载) |
458
459
  | `mindos logs` | 实时查看服务日志(`~/.mindos/mindos.log`) |
459
460
  | `mindos config show` | 查看当前配置(API Key 脱敏显示) |
460
461
  | `mindos config validate` | 验证配置文件 |
@@ -483,7 +484,14 @@ MindOS/
483
484
  <img src="assets/images/wechat-qr.png" alt="微信群二维码" width="200" />
484
485
  </p>
485
486
 
486
- > 扫码加入,或请群内成员邀请你。
487
+ > 扫码加入,或添加微信 **wtfly2018** 邀请入群。
488
+
489
+ ---
490
+
491
+ ## 👥 贡献者
492
+
493
+ <a href="https://github.com/GeminiLight"><img src="https://github.com/GeminiLight.png" width="60" style="border-radius:50%" alt="GeminiLight" /></a>
494
+ <a href="https://github.com/yeahjack"><img src="https://github.com/yeahjack.png" width="60" style="border-radius:50%" alt="yeahjack" /></a>
487
495
 
488
496
  ---
489
497
 
@@ -51,38 +51,42 @@ export const knowledgeBaseTools = {
51
51
  depth: z.number().min(1).max(10).optional().describe('Max tree depth to expand (default 3). Directories deeper than this show item count only.'),
52
52
  }),
53
53
  execute: logged('list_files', async ({ path: subdir, depth: maxDepth }) => {
54
- const tree = getFileTree();
55
- const limit = maxDepth ?? 3;
56
- const lines: string[] = [];
57
- function walk(nodes: Array<{ name: string; type: string; children?: unknown[] }>, depth: number) {
58
- for (const n of nodes) {
59
- lines.push(' '.repeat(depth) + (n.type === 'directory' ? `${n.name}/` : n.name));
60
- if (n.type === 'directory' && Array.isArray(n.children)) {
61
- if (depth + 1 < limit) {
62
- walk(n.children as typeof nodes, depth + 1);
63
- } else {
64
- lines.push(' '.repeat(depth + 1) + `... (${n.children.length} items)`);
54
+ try {
55
+ const tree = getFileTree();
56
+ const limit = maxDepth ?? 3;
57
+ const lines: string[] = [];
58
+ function walk(nodes: Array<{ name: string; type: string; children?: unknown[] }>, depth: number) {
59
+ for (const n of nodes) {
60
+ lines.push(' '.repeat(depth) + (n.type === 'directory' ? `${n.name}/` : n.name));
61
+ if (n.type === 'directory' && Array.isArray(n.children)) {
62
+ if (depth + 1 < limit) {
63
+ walk(n.children as typeof nodes, depth + 1);
64
+ } else {
65
+ lines.push(' '.repeat(depth + 1) + `... (${n.children.length} items)`);
66
+ }
65
67
  }
66
68
  }
67
69
  }
68
- }
69
70
 
70
- if (subdir) {
71
- const segments = subdir.replace(/\/$/, '').split('/').filter(Boolean);
72
- let current: Array<{ name: string; type: string; path?: string; children?: unknown[] }> = tree as any;
73
- for (const seg of segments) {
74
- const found = current.find(n => n.name === seg && n.type === 'directory');
75
- if (!found || !Array.isArray(found.children)) {
76
- return `Directory not found: ${subdir}`;
71
+ if (subdir) {
72
+ const segments = subdir.replace(/\/$/, '').split('/').filter(Boolean);
73
+ let current: Array<{ name: string; type: string; path?: string; children?: unknown[] }> = tree as any;
74
+ for (const seg of segments) {
75
+ const found = current.find(n => n.name === seg && n.type === 'directory');
76
+ if (!found || !Array.isArray(found.children)) {
77
+ return `Directory not found: ${subdir}`;
78
+ }
79
+ current = found.children as typeof current;
77
80
  }
78
- current = found.children as typeof current;
81
+ walk(current as any, 0);
82
+ } else {
83
+ walk(tree as any, 0);
79
84
  }
80
- walk(current as any, 0);
81
- } else {
82
- walk(tree as any, 0);
83
- }
84
85
 
85
- return lines.length > 0 ? lines.join('\n') : '(empty directory)';
86
+ return lines.length > 0 ? lines.join('\n') : '(empty directory)';
87
+ } catch (e: unknown) {
88
+ return `Error: ${e instanceof Error ? e.message : String(e)}`;
89
+ }
86
90
  }),
87
91
  }),
88
92