tanmi-dock 0.7.3-beta.0 → 0.7.3

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 (46) hide show
  1. package/dist/commands/CLAUDE.md +7 -0
  2. package/dist/commands/clean.d.ts.map +1 -1
  3. package/dist/commands/clean.js +8 -0
  4. package/dist/commands/clean.js.map +1 -1
  5. package/dist/commands/dashboard.js +4 -2
  6. package/dist/commands/dashboard.js.map +1 -1
  7. package/dist/commands/doctor.d.ts +7 -0
  8. package/dist/commands/doctor.d.ts.map +1 -0
  9. package/dist/commands/doctor.js +178 -0
  10. package/dist/commands/doctor.js.map +1 -0
  11. package/dist/commands/link.d.ts.map +1 -1
  12. package/dist/commands/link.js +63 -1
  13. package/dist/commands/link.js.map +1 -1
  14. package/dist/commands/projects.d.ts +7 -0
  15. package/dist/commands/projects.d.ts.map +1 -0
  16. package/dist/commands/projects.js +126 -0
  17. package/dist/commands/projects.js.map +1 -0
  18. package/dist/commands/repair.d.ts +16 -0
  19. package/dist/commands/repair.d.ts.map +1 -0
  20. package/dist/commands/repair.js +364 -0
  21. package/dist/commands/repair.js.map +1 -0
  22. package/dist/commands/unlink.d.ts.map +1 -1
  23. package/dist/commands/unlink.js +6 -1
  24. package/dist/commands/unlink.js.map +1 -1
  25. package/dist/commands/verify.d.ts +11 -0
  26. package/dist/commands/verify.d.ts.map +1 -0
  27. package/dist/commands/verify.js +266 -0
  28. package/dist/commands/verify.js.map +1 -0
  29. package/dist/core/CLAUDE.md +7 -0
  30. package/dist/core/platform.d.ts +6 -0
  31. package/dist/core/platform.d.ts.map +1 -1
  32. package/dist/core/platform.js +6 -0
  33. package/dist/core/platform.js.map +1 -1
  34. package/dist/core/registry.d.ts +10 -1
  35. package/dist/core/registry.d.ts.map +1 -1
  36. package/dist/core/registry.js +91 -5
  37. package/dist/core/registry.js.map +1 -1
  38. package/dist/utils/ios-paths.d.ts +26 -0
  39. package/dist/utils/ios-paths.d.ts.map +1 -0
  40. package/dist/utils/ios-paths.js +70 -0
  41. package/dist/utils/ios-paths.js.map +1 -0
  42. package/dist/utils/podfile.d.ts +42 -0
  43. package/dist/utils/podfile.d.ts.map +1 -0
  44. package/dist/utils/podfile.js +254 -0
  45. package/dist/utils/podfile.js.map +1 -0
  46. package/package.json +1 -1
@@ -0,0 +1,266 @@
1
+ /**
2
+ * verify 命令 - 验证 Store 和 Registry 完整性
3
+ */
4
+ import fs from 'fs/promises';
5
+ import path from 'path';
6
+ import { Command } from 'commander';
7
+ import { ensureInitialized } from '../core/guard.js';
8
+ import { getRegistry } from '../core/registry.js';
9
+ import * as store from '../core/store.js';
10
+ import { formatSize } from '../utils/disk.js';
11
+ import { info, warn, success, error, hint, blank, title, separator } from '../utils/logger.js';
12
+ /**
13
+ * 创建 verify 命令
14
+ */
15
+ export function createVerifyCommand() {
16
+ return new Command('verify')
17
+ .description('验证 Store 和 Registry 完整性')
18
+ .action(async () => {
19
+ await ensureInitialized();
20
+ await verifyIntegrity();
21
+ });
22
+ }
23
+ /**
24
+ * 验证完整性
25
+ */
26
+ export async function verifyIntegrity() {
27
+ title('验证 Store 完整性');
28
+ blank();
29
+ const registry = getRegistry();
30
+ await registry.load();
31
+ const result = {
32
+ danglingLinks: [],
33
+ orphanLibraries: [],
34
+ missingLibraries: [],
35
+ invalidProjects: [],
36
+ staleReferences: [],
37
+ };
38
+ const storePath = await store.getStorePath();
39
+ // 1. 检查项目引用一致性
40
+ info('检查项目引用...');
41
+ const projects = registry.listProjects();
42
+ for (const project of projects) {
43
+ // 检查项目路径是否存在
44
+ try {
45
+ await fs.access(project.path);
46
+ }
47
+ catch {
48
+ result.invalidProjects.push(project.path);
49
+ continue;
50
+ }
51
+ // 检查依赖的符号链接
52
+ for (const dep of project.dependencies) {
53
+ const linkPath = path.join(project.path, dep.linkedPath);
54
+ // 使用依赖记录的平台,或项目的第一个平台
55
+ const verifyPlatform = dep.platform ?? project.platforms?.[0] ?? 'macOS';
56
+ try {
57
+ const stat = await fs.lstat(linkPath);
58
+ if (stat.isSymbolicLink()) {
59
+ const actualTarget = await fs.readlink(linkPath);
60
+ const resolvedTarget = path.resolve(path.dirname(linkPath), actualTarget);
61
+ // 检查链接目标是否存在
62
+ try {
63
+ await fs.access(resolvedTarget);
64
+ }
65
+ catch {
66
+ result.danglingLinks.push({ path: linkPath, target: resolvedTarget });
67
+ }
68
+ }
69
+ }
70
+ catch {
71
+ // 符号链接不存在,检查库是否在 Store
72
+ const exists = await store.exists(dep.libName, dep.commit, verifyPlatform);
73
+ if (!exists) {
74
+ result.missingLibraries.push({
75
+ libName: dep.libName,
76
+ commit: dep.commit,
77
+ project: project.path,
78
+ });
79
+ }
80
+ }
81
+ }
82
+ }
83
+ // 2. 检查孤立库(Store 中有但 Registry 没有)
84
+ info('检查孤立库...');
85
+ try {
86
+ const storeEntries = await fs.readdir(storePath);
87
+ for (const libName of storeEntries) {
88
+ const libPath = path.join(storePath, libName);
89
+ const stat = await fs.stat(libPath);
90
+ if (!stat.isDirectory())
91
+ continue;
92
+ const commits = await fs.readdir(libPath);
93
+ for (const commit of commits) {
94
+ const commitPath = path.join(libPath, commit);
95
+ const commitStat = await fs.stat(commitPath);
96
+ if (!commitStat.isDirectory())
97
+ continue;
98
+ const libKey = registry.getLibraryKey(libName, commit);
99
+ const libInfo = registry.getLibrary(libKey);
100
+ if (!libInfo) {
101
+ // 计算大小
102
+ const size = await getDirSizeRecursive(commitPath);
103
+ result.orphanLibraries.push({ libName, commit, size });
104
+ }
105
+ }
106
+ }
107
+ }
108
+ catch {
109
+ // Store 目录不存在或无法读取
110
+ }
111
+ // 3. 检查失效引用(Registry 中 referencedBy 指向的项目没有实际符号链接)
112
+ info('检查引用一致性...');
113
+ const libraries = registry.listLibraries();
114
+ for (const lib of libraries) {
115
+ const libKey = registry.getLibraryKey(lib.libName, lib.commit);
116
+ for (const projectHash of lib.referencedBy) {
117
+ const project = registry.getProject(projectHash);
118
+ if (!project) {
119
+ // 项目不存在于 registry
120
+ result.staleReferences.push({
121
+ libKey,
122
+ projectHash,
123
+ projectPath: '(项目已删除)',
124
+ });
125
+ continue;
126
+ }
127
+ // 检查项目中是否有符号链接指向此库版本
128
+ let hasValidLink = false;
129
+ const libStorePath = path.join(storePath, lib.libName, lib.commit);
130
+ for (const dep of project.dependencies) {
131
+ if (dep.libName === lib.libName && dep.commit === lib.commit) {
132
+ const linkPath = path.join(project.path, dep.linkedPath);
133
+ try {
134
+ const stat = await fs.lstat(linkPath);
135
+ if (stat.isSymbolicLink()) {
136
+ const target = await fs.readlink(linkPath);
137
+ const resolvedTarget = path.resolve(path.dirname(linkPath), target);
138
+ // 检查链接是否指向此库版本
139
+ if (resolvedTarget.startsWith(libStorePath)) {
140
+ hasValidLink = true;
141
+ break;
142
+ }
143
+ }
144
+ else if (stat.isDirectory()) {
145
+ // 多平台模式:检查内部是否有符号链接指向此库
146
+ const entries = await fs.readdir(linkPath, { withFileTypes: true });
147
+ for (const entry of entries) {
148
+ if (entry.isSymbolicLink()) {
149
+ const subLinkPath = path.join(linkPath, entry.name);
150
+ const subTarget = await fs.readlink(subLinkPath);
151
+ const resolvedSubTarget = path.resolve(linkPath, subTarget);
152
+ if (resolvedSubTarget.startsWith(libStorePath)) {
153
+ hasValidLink = true;
154
+ break;
155
+ }
156
+ }
157
+ }
158
+ if (hasValidLink)
159
+ break;
160
+ }
161
+ }
162
+ catch {
163
+ // 链接不存在或无法读取
164
+ }
165
+ }
166
+ }
167
+ if (!hasValidLink) {
168
+ result.staleReferences.push({
169
+ libKey,
170
+ projectHash,
171
+ projectPath: project.path,
172
+ });
173
+ }
174
+ }
175
+ }
176
+ // 输出结果
177
+ blank();
178
+ separator();
179
+ // Registry 引用一致性
180
+ if (result.invalidProjects.length === 0 && result.missingLibraries.length === 0) {
181
+ success('[ok] Registry 引用一致');
182
+ }
183
+ else {
184
+ if (result.invalidProjects.length > 0) {
185
+ warn(`[warn] 发现 ${result.invalidProjects.length} 个无效项目`);
186
+ for (const p of result.invalidProjects) {
187
+ info(` - ${p} -> 路径不存在`);
188
+ }
189
+ }
190
+ if (result.missingLibraries.length > 0) {
191
+ error(`[err] 发现 ${result.missingLibraries.length} 个缺失库`);
192
+ for (const lib of result.missingLibraries) {
193
+ info(` - ${lib.libName}/${lib.commit.slice(0, 7)} (引用自 ${lib.project})`);
194
+ }
195
+ }
196
+ }
197
+ // 悬挂链接
198
+ if (result.danglingLinks.length === 0) {
199
+ success('[ok] 符号链接完整');
200
+ }
201
+ else {
202
+ warn(`[warn] 发现 ${result.danglingLinks.length} 个悬挂链接`);
203
+ for (const link of result.danglingLinks) {
204
+ info(` - ${link.path} -> 目标不存在`);
205
+ }
206
+ }
207
+ // 孤立库
208
+ if (result.orphanLibraries.length === 0) {
209
+ success('[ok] 无孤立库');
210
+ }
211
+ else {
212
+ const totalSize = result.orphanLibraries.reduce((sum, lib) => sum + lib.size, 0);
213
+ warn(`[warn] 发现 ${result.orphanLibraries.length} 个孤立库 (${formatSize(totalSize)})`);
214
+ for (const lib of result.orphanLibraries) {
215
+ info(` - ${lib.libName}/${lib.commit.slice(0, 7)} (${formatSize(lib.size)})`);
216
+ }
217
+ }
218
+ // 失效引用
219
+ if (result.staleReferences.length === 0) {
220
+ success('[ok] 引用关系一致');
221
+ }
222
+ else {
223
+ warn(`[warn] 发现 ${result.staleReferences.length} 个失效引用`);
224
+ for (const ref of result.staleReferences) {
225
+ info(` - ${ref.libKey} <- ${ref.projectPath}`);
226
+ }
227
+ }
228
+ // 总结和建议
229
+ blank();
230
+ const hasIssues = result.danglingLinks.length > 0 ||
231
+ result.orphanLibraries.length > 0 ||
232
+ result.missingLibraries.length > 0 ||
233
+ result.invalidProjects.length > 0 ||
234
+ result.staleReferences.length > 0;
235
+ if (hasIssues) {
236
+ hint('建议: 运行 tanmi-dock repair 修复问题');
237
+ }
238
+ else {
239
+ success('Store 完整性验证通过');
240
+ }
241
+ }
242
+ /**
243
+ * 递归计算目录大小
244
+ */
245
+ async function getDirSizeRecursive(dirPath) {
246
+ let size = 0;
247
+ try {
248
+ const entries = await fs.readdir(dirPath, { withFileTypes: true });
249
+ for (const entry of entries) {
250
+ const fullPath = path.join(dirPath, entry.name);
251
+ if (entry.isDirectory()) {
252
+ size += await getDirSizeRecursive(fullPath);
253
+ }
254
+ else {
255
+ const stat = await fs.stat(fullPath);
256
+ size += stat.size;
257
+ }
258
+ }
259
+ }
260
+ catch {
261
+ // 忽略错误
262
+ }
263
+ return size;
264
+ }
265
+ export default createVerifyCommand;
266
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ <claude-mem-context>
2
+ # Recent Activity
3
+
4
+ <!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
5
+
6
+ *No recent activity*
7
+ </claude-mem-context>
@@ -62,6 +62,12 @@ export declare function normalizePlatformValue(name: string): string;
62
62
  * 用于只有 _shared 目录、无平台目录的库(如 eigen、header-only 库)
63
63
  */
64
64
  export declare const GENERAL_PLATFORM = "general";
65
+ /**
66
+ * 共享内容的伪平台标识
67
+ * 用于追踪平台库的 _shared 目录大小
68
+ * 注意:这不是真正的平台,不应该出现在用户可见的平台列表中
69
+ */
70
+ export declare const SHARED_PLATFORM = "_shared";
65
71
  /**
66
72
  * 检查 sparse 配置是否只有 common 内容(没有任何平台键)
67
73
  * 用于识别应该被当作 General 库处理的有 sparse 配置的库
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/core/platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/core/platform.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAIlD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,cAAc,EAQ5C,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEzE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAIlF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAElE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAE7C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAe5C;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,EAQzC,CAAC;AA+BF;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAE1C;;;;GAIG;AACH,eAAO,MAAM,eAAe,YAAY,CAAC;AAEzC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAO/E;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAMrC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAEtC;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED;;GAEG;AACH,wBAAgB,OAAO,IAAI,OAAO,CAEjC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAK1D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAK5C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAM5C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAEnD;AAeD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,gBAAgB,CA2CtD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAMhD"}
@@ -131,6 +131,12 @@ export function normalizePlatformValue(name) {
131
131
  * 用于只有 _shared 目录、无平台目录的库(如 eigen、header-only 库)
132
132
  */
133
133
  export const GENERAL_PLATFORM = 'general';
134
+ /**
135
+ * 共享内容的伪平台标识
136
+ * 用于追踪平台库的 _shared 目录大小
137
+ * 注意:这不是真正的平台,不应该出现在用户可见的平台列表中
138
+ */
139
+ export const SHARED_PLATFORM = '_shared';
134
140
  /**
135
141
  * 检查 sparse 配置是否只有 common 内容(没有任何平台键)
136
142
  * 用于识别应该被当作 General 库处理的有 sparse 配置的库
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/core/platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/core/platform.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,12 @@ declare class RegistryManager {
23
23
  * 只迁移有效的引用(项目存在且路径有效)
24
24
  */
25
25
  private migrateReferences;
26
+ /**
27
+ * 迁移 _shared 目录到 StoreEntry
28
+ * 为现有的平台库补充 _shared 记录,解决空间统计不准确的问题
29
+ * 只处理有平台 StoreEntry 但没有 _shared StoreEntry 的库
30
+ */
31
+ private migrateSharedStores;
26
32
  /**
27
33
  * 强制重新加载(用于需要刷新数据的场景)
28
34
  */
@@ -140,20 +146,23 @@ declare class RegistryManager {
140
146
  * 获取指定库的所有平台(从 StoreEntry 动态获取,比 LibraryInfo.platforms 更准确)
141
147
  * @param libName 库名
142
148
  * @param commit commit hash
143
- * @returns 平台列表
149
+ * @returns 平台列表(不包含 _shared 伪平台)
144
150
  */
145
151
  getLibraryPlatforms(libName: string, commit: string): string[];
146
152
  /**
147
153
  * 获取无引用的 Store 条目
154
+ * 注意:过滤掉 _shared 伪平台,因为它的生命周期跟随真正的平台
148
155
  */
149
156
  getUnreferencedStores(): StoreEntry[];
150
157
  /**
151
158
  * 获取可清理的 unused 库(无引用超过指定天数)
159
+ * 注意:过滤掉 _shared 伪平台,因为它的生命周期跟随真正的平台
152
160
  * @param unusedDays 无引用天数阈值
153
161
  */
154
162
  getUnusedStores(unusedDays: number): StoreEntry[];
155
163
  /**
156
164
  * 获取无引用但未过期的库(供 status 显示)
165
+ * 注意:过滤掉 _shared 伪平台,因为它的生命周期跟随真正的平台
157
166
  * @param unusedDays 无引用天数阈值
158
167
  */
159
168
  getPendingUnusedStores(unusedDays: number): Array<{
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGxF;;GAEG;AACH,cAAM,eAAe;IACnB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO;IAEP,MAAM,CAAC,WAAW,IAAI,eAAe;IAOrC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB3B;;;OAGG;IACH,OAAO,CAAC,eAAe;IASvB;;;;OAIG;YACW,iBAAiB;IAsD/B;;;;OAIG;YACW,mBAAmB;IAwEjC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAK7B;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAShC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IA6B5F;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B;;OAEG;IACH,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAKrD;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAKvD;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAMnC;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;IAQpE;;;OAGG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAmBrC;;OAEG;IACH,YAAY,IAAI,WAAW,EAAE;IAO7B;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAItD;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAKhD;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAMnC;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;IAQ/D;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKhC;;OAEG;IACH,aAAa,IAAI,WAAW,EAAE;IAK9B;;;OAGG;IACH,wBAAwB,IAAI,WAAW,EAAE;IAKzC;;;;;OAKG;IACH,kBAAkB,IAAI,WAAW,EAAE;IAUnC;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAItE;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAK7C;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAMjC;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI;IAQ5D;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAK9B;;OAEG;IACH,UAAU,IAAI,UAAU,EAAE;IAK1B;;;;;OAKG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAQ9D;;;OAGG;IACH,qBAAqB,IAAI,UAAU,EAAE;IAOrC;;;;OAIG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,EAAE;IAYjD;;;;OAIG;IACH,sBAAsB,CACpB,UAAU,EAAE,MAAM,GACjB,KAAK,CAAC;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAmBjD;;;OAGG;IACH,qBAAqB,IAAI,UAAU,EAAE;IA2BrC;;OAEG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAY9D;;OAEG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAYjE;;;;OAIG;IACH,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAOpE;;;;OAIG;IACH,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAOvE;;;;;OAKG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAY9D;;OAEG;IACH,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE;IAWlD;;;OAGG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAO9C;;;OAGG;IACH,aAAa,IAAI;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IAmBnF;;;;OAIG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAkB3C;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI9B;;OAEG;IACH,MAAM,IAAI,QAAQ;IAKlB;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAmB7C;;;;OAIG;IACG,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;CA2C9C;AAGD,wBAAgB,WAAW,IAAI,eAAe,CAE7C;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAED,eAAe,eAAe,CAAC"}
@@ -3,10 +3,12 @@
3
3
  * 注册表文件位置: ~/.tanmi-dock/registry.json
4
4
  */
5
5
  import fs from 'fs/promises';
6
+ import path from 'path';
6
7
  import crypto from 'crypto';
7
- import { getRegistryPath } from './platform.js';
8
- import { ensureConfigDir } from './config.js';
8
+ import { getRegistryPath, SHARED_PLATFORM } from './platform.js';
9
+ import { ensureConfigDir, getStorePath } from './config.js';
9
10
  import { withFileLock } from '../utils/lock.js';
11
+ import { getDirSize } from '../utils/fs-utils.js';
10
12
  import * as logger from '../utils/logger.js';
11
13
  import { EMPTY_REGISTRY } from '../types/index.js';
12
14
  /**
@@ -42,6 +44,8 @@ class RegistryManager {
42
44
  this.loaded = true;
43
45
  // 自动迁移旧版引用数据(如果有需要迁移的数据,会立即保存)
44
46
  await this.migrateReferences();
47
+ // 迁移 _shared 目录到 StoreEntry(为现有平台库补充 _shared 记录)
48
+ await this.migrateSharedStores();
45
49
  }
46
50
  /**
47
51
  * 解析 libKey 为 libName 和 commit
@@ -108,6 +112,81 @@ class RegistryManager {
108
112
  await this.save();
109
113
  }
110
114
  }
115
+ /**
116
+ * 迁移 _shared 目录到 StoreEntry
117
+ * 为现有的平台库补充 _shared 记录,解决空间统计不准确的问题
118
+ * 只处理有平台 StoreEntry 但没有 _shared StoreEntry 的库
119
+ */
120
+ async migrateSharedStores() {
121
+ const storePath = await getStorePath();
122
+ if (!storePath)
123
+ return;
124
+ if (!this.registry.stores)
125
+ return;
126
+ // 收集所有需要检查的 libName:commit 组合
127
+ const libCommitPairs = new Set();
128
+ for (const storeKey of Object.keys(this.registry.stores)) {
129
+ // 解析 storeKey: libName:commit:platform
130
+ const lastColon = storeKey.lastIndexOf(':');
131
+ if (lastColon === -1)
132
+ continue;
133
+ const platform = storeKey.slice(lastColon + 1);
134
+ // 跳过 _shared 和 general(general 库不需要 _shared)
135
+ if (platform === SHARED_PLATFORM || platform === 'general')
136
+ continue;
137
+ const libCommit = storeKey.slice(0, lastColon);
138
+ libCommitPairs.add(libCommit);
139
+ }
140
+ let migrated = false;
141
+ for (const libCommit of libCommitPairs) {
142
+ const sharedKey = `${libCommit}:${SHARED_PLATFORM}`;
143
+ // 如果已有 _shared 记录,跳过
144
+ if (this.registry.stores[sharedKey])
145
+ continue;
146
+ // 解析 libName 和 commit
147
+ const colonIndex = libCommit.lastIndexOf(':');
148
+ if (colonIndex === -1)
149
+ continue;
150
+ const libName = libCommit.slice(0, colonIndex);
151
+ const commit = libCommit.slice(colonIndex + 1);
152
+ // 检查磁盘上是否存在 _shared 目录
153
+ const sharedPath = path.join(storePath, libName, commit, '_shared');
154
+ try {
155
+ const stat = await fs.stat(sharedPath);
156
+ if (!stat.isDirectory())
157
+ continue;
158
+ // 检查目录是否有内容
159
+ const entries = await fs.readdir(sharedPath);
160
+ if (entries.length === 0)
161
+ continue;
162
+ // 计算大小并创建 StoreEntry
163
+ const sharedSize = await getDirSize(sharedPath);
164
+ // 从已有的平台 StoreEntry 获取元数据
165
+ const platformKeys = this.getLibraryStoreKeys(libName, commit);
166
+ const firstPlatformEntry = platformKeys.length > 0 ? this.registry.stores[platformKeys[0]] : null;
167
+ this.registry.stores[sharedKey] = {
168
+ libName,
169
+ commit,
170
+ platform: SHARED_PLATFORM,
171
+ branch: firstPlatformEntry?.branch ?? '',
172
+ url: firstPlatformEntry?.url ?? '',
173
+ size: sharedSize,
174
+ usedBy: [], // _shared 不追踪引用,跟随平台
175
+ createdAt: firstPlatformEntry?.createdAt ?? new Date().toISOString(),
176
+ lastAccess: new Date().toISOString(),
177
+ };
178
+ migrated = true;
179
+ logger.debug(`迁移 _shared: ${libName}:${commit.slice(0, 8)} (${sharedSize} bytes)`);
180
+ }
181
+ catch {
182
+ // 目录不存在或无法访问,跳过
183
+ }
184
+ }
185
+ if (migrated) {
186
+ await this.save();
187
+ logger.debug('_shared 迁移完成');
188
+ }
189
+ }
111
190
  /**
112
191
  * 强制重新加载(用于需要刷新数据的场景)
113
192
  */
@@ -358,33 +437,39 @@ class RegistryManager {
358
437
  * 获取指定库的所有平台(从 StoreEntry 动态获取,比 LibraryInfo.platforms 更准确)
359
438
  * @param libName 库名
360
439
  * @param commit commit hash
361
- * @returns 平台列表
440
+ * @returns 平台列表(不包含 _shared 伪平台)
362
441
  */
363
442
  getLibraryPlatforms(libName, commit) {
364
443
  const storeKeys = this.getLibraryStoreKeys(libName, commit);
365
444
  const prefix = `${libName}:${commit}:`;
366
- return storeKeys.map((key) => key.slice(prefix.length));
445
+ return storeKeys
446
+ .map((key) => key.slice(prefix.length))
447
+ .filter((platform) => platform !== SHARED_PLATFORM);
367
448
  }
368
449
  /**
369
450
  * 获取无引用的 Store 条目
451
+ * 注意:过滤掉 _shared 伪平台,因为它的生命周期跟随真正的平台
370
452
  */
371
453
  getUnreferencedStores() {
372
454
  this.ensureLoaded();
373
- return this.listStores().filter((entry) => entry.usedBy.length === 0);
455
+ return this.listStores().filter((entry) => entry.usedBy.length === 0 && entry.platform !== SHARED_PLATFORM);
374
456
  }
375
457
  /**
376
458
  * 获取可清理的 unused 库(无引用超过指定天数)
459
+ * 注意:过滤掉 _shared 伪平台,因为它的生命周期跟随真正的平台
377
460
  * @param unusedDays 无引用天数阈值
378
461
  */
379
462
  getUnusedStores(unusedDays) {
380
463
  this.ensureLoaded();
381
464
  const threshold = Date.now() - unusedDays * 24 * 60 * 60 * 1000;
382
465
  return this.listStores().filter((entry) => entry.usedBy.length === 0 &&
466
+ entry.platform !== SHARED_PLATFORM &&
383
467
  entry.unlinkedAt !== undefined &&
384
468
  entry.unlinkedAt < threshold);
385
469
  }
386
470
  /**
387
471
  * 获取无引用但未过期的库(供 status 显示)
472
+ * 注意:过滤掉 _shared 伪平台,因为它的生命周期跟随真正的平台
388
473
  * @param unusedDays 无引用天数阈值
389
474
  */
390
475
  getPendingUnusedStores(unusedDays) {
@@ -392,6 +477,7 @@ class RegistryManager {
392
477
  const threshold = Date.now() - unusedDays * 24 * 60 * 60 * 1000;
393
478
  return this.listStores()
394
479
  .filter((e) => e.usedBy.length === 0 &&
480
+ e.platform !== SHARED_PLATFORM &&
395
481
  e.unlinkedAt !== undefined &&
396
482
  e.unlinkedAt >= threshold)
397
483
  .map((entry) => ({