@rpamis/comet 0.3.7 → 0.3.9

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 (100) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +557 -539
  3. package/assets/manifest.json +41 -34
  4. package/assets/skills/comet/SKILL.md +282 -329
  5. package/assets/skills/comet/reference/auto-transition.md +27 -0
  6. package/assets/skills/comet/reference/comet-yaml-fields.md +68 -0
  7. package/assets/skills/comet/reference/context-recovery.md +35 -0
  8. package/assets/skills/comet/reference/debug-gate.md +17 -0
  9. package/assets/skills/comet/reference/decision-point.md +20 -0
  10. package/assets/skills/comet/reference/dirty-worktree.md +59 -59
  11. package/assets/skills/comet/reference/file-structure.md +28 -0
  12. package/assets/skills/comet/reference/subagent-dispatch.md +113 -0
  13. package/assets/skills/comet/rules/comet-phase-guard.en.md +123 -0
  14. package/assets/skills/comet/rules/comet-phase-guard.md +125 -90
  15. package/assets/skills/comet/scripts/comet-guard.sh +27 -1
  16. package/assets/skills/comet/scripts/comet-hook-guard.sh +121 -45
  17. package/assets/skills/comet/scripts/comet-state.sh +162 -7
  18. package/assets/skills/comet/scripts/comet-yaml-validate.sh +3 -1
  19. package/assets/skills/comet-archive/SKILL.md +100 -106
  20. package/assets/skills/comet-build/SKILL.md +304 -316
  21. package/assets/skills/comet-design/SKILL.md +263 -272
  22. package/assets/skills/comet-hotfix/SKILL.md +204 -211
  23. package/assets/skills/comet-open/SKILL.md +220 -186
  24. package/assets/skills/comet-tweak/SKILL.md +180 -179
  25. package/assets/skills/comet-verify/SKILL.md +234 -240
  26. package/assets/skills-zh/comet/SKILL.md +269 -332
  27. package/assets/skills-zh/comet/reference/auto-transition.md +27 -0
  28. package/assets/skills-zh/comet/reference/comet-yaml-fields.md +71 -0
  29. package/assets/skills-zh/comet/reference/context-recovery.md +35 -0
  30. package/assets/skills-zh/comet/reference/debug-gate.md +17 -0
  31. package/assets/skills-zh/comet/reference/decision-point.md +20 -0
  32. package/assets/skills-zh/comet/reference/dirty-worktree.md +59 -59
  33. package/assets/skills-zh/comet/reference/file-structure.md +28 -0
  34. package/assets/skills-zh/comet/reference/subagent-dispatch.md +120 -0
  35. package/assets/skills-zh/comet-archive/SKILL.md +100 -106
  36. package/assets/skills-zh/comet-build/SKILL.md +317 -316
  37. package/assets/skills-zh/comet-design/SKILL.md +264 -273
  38. package/assets/skills-zh/comet-hotfix/SKILL.md +200 -207
  39. package/assets/skills-zh/comet-open/SKILL.md +220 -186
  40. package/assets/skills-zh/comet-tweak/SKILL.md +176 -175
  41. package/assets/skills-zh/comet-verify/SKILL.md +232 -238
  42. package/bin/comet.js +3 -3
  43. package/dist/cli/index.js +21 -1
  44. package/dist/cli/index.js.map +1 -1
  45. package/dist/commands/doctor.d.ts.map +1 -1
  46. package/dist/commands/doctor.js +5 -1
  47. package/dist/commands/doctor.js.map +1 -1
  48. package/dist/commands/i18n.d.ts +4 -0
  49. package/dist/commands/i18n.d.ts.map +1 -0
  50. package/dist/commands/i18n.js +154 -0
  51. package/dist/commands/i18n.js.map +1 -0
  52. package/dist/commands/init.d.ts +3 -0
  53. package/dist/commands/init.d.ts.map +1 -1
  54. package/dist/commands/init.js +127 -75
  55. package/dist/commands/init.js.map +1 -1
  56. package/dist/commands/uninstall.d.ts +9 -0
  57. package/dist/commands/uninstall.d.ts.map +1 -0
  58. package/dist/commands/uninstall.js +132 -0
  59. package/dist/commands/uninstall.js.map +1 -0
  60. package/dist/commands/update.d.ts +3 -2
  61. package/dist/commands/update.d.ts.map +1 -1
  62. package/dist/commands/update.js +105 -68
  63. package/dist/commands/update.js.map +1 -1
  64. package/dist/core/codegraph.d.ts +4 -7
  65. package/dist/core/codegraph.d.ts.map +1 -1
  66. package/dist/core/codegraph.js +63 -41
  67. package/dist/core/codegraph.js.map +1 -1
  68. package/dist/core/detect.d.ts +13 -1
  69. package/dist/core/detect.d.ts.map +1 -1
  70. package/dist/core/detect.js +68 -12
  71. package/dist/core/detect.js.map +1 -1
  72. package/dist/core/openspec.d.ts +2 -2
  73. package/dist/core/openspec.d.ts.map +1 -1
  74. package/dist/core/openspec.js +51 -22
  75. package/dist/core/openspec.js.map +1 -1
  76. package/dist/core/platforms.d.ts.map +1 -1
  77. package/dist/core/platforms.js +14 -1
  78. package/dist/core/platforms.js.map +1 -1
  79. package/dist/core/skills.d.ts +3 -1
  80. package/dist/core/skills.d.ts.map +1 -1
  81. package/dist/core/skills.js +151 -66
  82. package/dist/core/skills.js.map +1 -1
  83. package/dist/core/superpowers.d.ts +1 -1
  84. package/dist/core/superpowers.d.ts.map +1 -1
  85. package/dist/core/superpowers.js +5 -1
  86. package/dist/core/superpowers.js.map +1 -1
  87. package/dist/core/uninstall.d.ts +28 -0
  88. package/dist/core/uninstall.d.ts.map +1 -0
  89. package/dist/core/uninstall.js +421 -0
  90. package/dist/core/uninstall.js.map +1 -0
  91. package/dist/core/version.d.ts +31 -0
  92. package/dist/core/version.d.ts.map +1 -0
  93. package/dist/core/version.js +111 -0
  94. package/dist/core/version.js.map +1 -0
  95. package/dist/utils/file-system.d.ts +23 -0
  96. package/dist/utils/file-system.d.ts.map +1 -1
  97. package/dist/utils/file-system.js +100 -5
  98. package/dist/utils/file-system.js.map +1 -1
  99. package/package.json +69 -64
  100. package/scripts/postinstall.js +44 -44
@@ -0,0 +1,421 @@
1
+ import path from 'path';
2
+ import { readFile, writeFile } from 'fs/promises';
3
+ import { fileExists, readDir, removeFile, removeDir, isDirEmpty } from '../utils/file-system.js';
4
+ import { getPlatformSkillsDir } from './platforms.js';
5
+ import { readManifest, computeRuleDestPath, isManagedHookCommand } from './skills.js';
6
+ /**
7
+ * Remove Comet skill files for a specific platform.
8
+ * Reads the manifest to determine which skill paths to remove.
9
+ */
10
+ async function removeCometSkillsForPlatform(baseDir, platform, scope = 'project') {
11
+ const manifest = await readManifest();
12
+ const skillsDir = getPlatformSkillsDir(platform, scope);
13
+ const skillsDirs = [skillsDir];
14
+ if (scope === 'global' && platform.id === 'pi') {
15
+ skillsDirs.push(platform.skillsDir);
16
+ }
17
+ const uniqueSkillsDirs = [...new Set(skillsDirs)];
18
+ let removed = 0;
19
+ const failed = 0;
20
+ for (const targetSkillsDir of uniqueSkillsDirs) {
21
+ for (const skillRelPath of manifest.skills) {
22
+ const dest = path.join(baseDir, targetSkillsDir, 'skills', skillRelPath);
23
+ const result = await removeFile(dest);
24
+ if (result) {
25
+ removed++;
26
+ }
27
+ }
28
+ }
29
+ // OpenCode: also remove generated command files
30
+ if (platform.id === 'opencode') {
31
+ const commandsDir = path.join(baseDir, skillsDir, 'commands');
32
+ for (const skillRelPath of manifest.skills) {
33
+ const parts = skillRelPath.split('/');
34
+ if (parts.length !== 2 || parts[1] !== 'SKILL.md')
35
+ continue;
36
+ const skillName = parts[0];
37
+ const commandFile = path.join(commandsDir, `${skillName}.md`);
38
+ const result = await removeFile(commandFile);
39
+ if (result) {
40
+ removed++;
41
+ }
42
+ }
43
+ }
44
+ if (platform.id === 'pi') {
45
+ const extensionsDir = path.join(baseDir, skillsDir, 'extensions');
46
+ if (await removeFile(path.join(extensionsDir, 'comet-commands.ts'))) {
47
+ removed++;
48
+ }
49
+ if (await isDirEmpty(extensionsDir)) {
50
+ await removeDir(extensionsDir);
51
+ }
52
+ }
53
+ // Clean up empty subdirectories and then empty comet skill directories
54
+ // Collect all unique parent directories of removed files (bottom-up cleanup)
55
+ const parentDirs = new Set();
56
+ for (const targetSkillsDir of uniqueSkillsDirs) {
57
+ for (const skillRelPath of manifest.skills) {
58
+ const parts = skillRelPath.split('/');
59
+ if (parts[0].startsWith('comet')) {
60
+ // Add all intermediate directories for nested paths
61
+ let current = path.join(baseDir, targetSkillsDir, 'skills', parts[0]);
62
+ parentDirs.add(current);
63
+ for (let i = 1; i < parts.length - 1; i++) {
64
+ current = path.join(current, parts[i]);
65
+ parentDirs.add(current);
66
+ }
67
+ }
68
+ }
69
+ }
70
+ // Sort by depth (deepest first) so we clean bottom-up
71
+ const sortedDirs = [...parentDirs].sort((a, b) => b.split(path.sep).length - a.split(path.sep).length);
72
+ for (const dir of sortedDirs) {
73
+ if (await isDirEmpty(dir)) {
74
+ await removeDir(dir);
75
+ }
76
+ }
77
+ return { removed, failed };
78
+ }
79
+ /**
80
+ * Remove Comet rule files for a specific platform.
81
+ * Reuses computeRuleDestPath for consistent path computation.
82
+ */
83
+ async function removeCometRulesForPlatform(baseDir, platform, scope = 'project') {
84
+ if (!platform.rulesDir || !platform.rulesFormat) {
85
+ return { removed: 0, failed: 0 };
86
+ }
87
+ const manifest = await readManifest();
88
+ const rulePaths = manifest.rules;
89
+ if (!rulePaths || rulePaths.length === 0) {
90
+ return { removed: 0, failed: 0 };
91
+ }
92
+ const skillsDir = getPlatformSkillsDir(platform, scope);
93
+ const rulesBase = platform.rulesBaseDir !== undefined
94
+ ? platform.rulesBaseDir === ''
95
+ ? baseDir
96
+ : path.join(baseDir, platform.rulesBaseDir)
97
+ : path.join(baseDir, skillsDir);
98
+ let removed = 0;
99
+ const failed = 0;
100
+ for (const ruleRelPath of rulePaths) {
101
+ const ruleFileName = path.basename(ruleRelPath);
102
+ const rulesDestDir = path.join(rulesBase, platform.rulesDir);
103
+ const dest = computeRuleDestPath(rulesDestDir, ruleFileName, platform.rulesFormat);
104
+ const result = await removeFile(dest);
105
+ if (result) {
106
+ removed++;
107
+ }
108
+ }
109
+ // Clean up empty rules directory
110
+ const rulesDestDir = path.join(rulesBase, platform.rulesDir);
111
+ if (await isDirEmpty(rulesDestDir)) {
112
+ await removeDir(rulesDestDir);
113
+ }
114
+ return { removed, failed };
115
+ }
116
+ /**
117
+ * Remove Comet hooks for platforms that support them.
118
+ * Preserves non-Comet hooks in configuration files.
119
+ */
120
+ async function removeCometHooksForPlatform(baseDir, platform, scope = 'project') {
121
+ if (!platform.supportsHooks || !platform.hookFormat) {
122
+ return { removed: 0, failed: 0 };
123
+ }
124
+ const manifest = await readManifest();
125
+ const hooksConfig = manifest.hooks;
126
+ if (!hooksConfig || Object.keys(hooksConfig).length === 0) {
127
+ return { removed: 0, failed: 0 };
128
+ }
129
+ const hookFormat = platform.hookFormat;
130
+ const skillsDir = getPlatformSkillsDir(platform, scope);
131
+ const platformBase = path.join(baseDir, skillsDir);
132
+ const scriptRelPaths = Object.keys(hooksConfig);
133
+ try {
134
+ switch (hookFormat) {
135
+ case 'claude-code':
136
+ return removeClaudeCodeHooks(platformBase, scriptRelPaths);
137
+ case 'qwen':
138
+ case 'qoder':
139
+ return removeQwenStyleHooks(platformBase, scriptRelPaths);
140
+ case 'gemini':
141
+ return removeGeminiHooks(platformBase, scriptRelPaths);
142
+ case 'windsurf':
143
+ return removeWindsurfHooks(platformBase, scriptRelPaths);
144
+ case 'copilot':
145
+ return removeCopilotHooks(platformBase, scriptRelPaths);
146
+ case 'kiro':
147
+ return removeKiroHooks(platformBase, scriptRelPaths);
148
+ default:
149
+ return { removed: 0, failed: 0 };
150
+ }
151
+ }
152
+ catch {
153
+ return { removed: 0, failed: 1 };
154
+ }
155
+ }
156
+ /**
157
+ * Claude Code, Codex, Amazon Q: settings.local.json with PreToolUse hooks.
158
+ */
159
+ async function removeClaudeCodeHooks(platformBase, scriptRelPaths) {
160
+ const settingsPath = path.join(platformBase, 'settings.local.json');
161
+ if (!(await fileExists(settingsPath))) {
162
+ return { removed: 0, failed: 0 };
163
+ }
164
+ let removed = 0;
165
+ let settings;
166
+ try {
167
+ settings = JSON.parse(await readFile(settingsPath, 'utf-8'));
168
+ }
169
+ catch {
170
+ return { removed: 0, failed: 0 };
171
+ }
172
+ const existingHooks = settings.hooks;
173
+ if (!existingHooks) {
174
+ return { removed: 0, failed: 0 };
175
+ }
176
+ const existingPreToolUse = existingHooks.PreToolUse;
177
+ if (!existingPreToolUse || !Array.isArray(existingPreToolUse)) {
178
+ return { removed: 0, failed: 0 };
179
+ }
180
+ const filtered = existingPreToolUse.flatMap((group) => {
181
+ if (!Array.isArray(group.hooks))
182
+ return [group];
183
+ const hooksBefore = group.hooks.length;
184
+ const hooks = group.hooks.filter((hook) => !isManagedHookCommand(hook.command, scriptRelPaths));
185
+ removed += hooksBefore - hooks.length;
186
+ if (hooks.length === 0)
187
+ return [];
188
+ return [{ ...group, hooks }];
189
+ });
190
+ if (filtered.length === 0) {
191
+ delete existingHooks.PreToolUse;
192
+ }
193
+ else {
194
+ existingHooks.PreToolUse = filtered;
195
+ }
196
+ // Clean up empty hooks section
197
+ if (Object.keys(existingHooks).length === 0) {
198
+ delete settings.hooks;
199
+ }
200
+ const content = JSON.stringify(settings, null, 2) + '\n';
201
+ await writeFile(settingsPath, content, 'utf-8');
202
+ return { removed, failed: 0 };
203
+ }
204
+ /**
205
+ * Qwen / Qoder: settings.json with PreToolUse hooks.
206
+ */
207
+ async function removeQwenStyleHooks(platformBase, scriptRelPaths) {
208
+ const settingsPath = path.join(platformBase, 'settings.json');
209
+ if (!(await fileExists(settingsPath))) {
210
+ return { removed: 0, failed: 0 };
211
+ }
212
+ let removed = 0;
213
+ let settings;
214
+ try {
215
+ settings = JSON.parse(await readFile(settingsPath, 'utf-8'));
216
+ }
217
+ catch {
218
+ return { removed: 0, failed: 0 };
219
+ }
220
+ const existingHooks = settings.hooks;
221
+ if (!existingHooks) {
222
+ return { removed: 0, failed: 0 };
223
+ }
224
+ const existingPreToolUse = existingHooks.PreToolUse;
225
+ if (!existingPreToolUse || !Array.isArray(existingPreToolUse)) {
226
+ return { removed: 0, failed: 0 };
227
+ }
228
+ const filtered = existingPreToolUse.flatMap((group) => {
229
+ if (!Array.isArray(group.hooks))
230
+ return [group];
231
+ const hooksBefore = group.hooks.length;
232
+ const hooks = group.hooks.filter((hook) => !isManagedHookCommand(hook.command, scriptRelPaths));
233
+ removed += hooksBefore - hooks.length;
234
+ if (hooks.length === 0)
235
+ return [];
236
+ return [{ ...group, hooks }];
237
+ });
238
+ if (filtered.length === 0) {
239
+ delete existingHooks.PreToolUse;
240
+ }
241
+ else {
242
+ existingHooks.PreToolUse = filtered;
243
+ }
244
+ if (Object.keys(existingHooks).length === 0) {
245
+ delete settings.hooks;
246
+ }
247
+ const content = JSON.stringify(settings, null, 2) + '\n';
248
+ await writeFile(settingsPath, content, 'utf-8');
249
+ return { removed, failed: 0 };
250
+ }
251
+ /**
252
+ * Gemini CLI: settings.json with BeforeTool hooks.
253
+ */
254
+ async function removeGeminiHooks(platformBase, scriptRelPaths) {
255
+ const settingsPath = path.join(platformBase, 'settings.json');
256
+ if (!(await fileExists(settingsPath))) {
257
+ return { removed: 0, failed: 0 };
258
+ }
259
+ let removed = 0;
260
+ let settings;
261
+ try {
262
+ settings = JSON.parse(await readFile(settingsPath, 'utf-8'));
263
+ }
264
+ catch {
265
+ return { removed: 0, failed: 0 };
266
+ }
267
+ const existingHooks = settings.hooks;
268
+ if (!existingHooks) {
269
+ return { removed: 0, failed: 0 };
270
+ }
271
+ const existingBeforeTool = existingHooks.BeforeTool;
272
+ if (!existingBeforeTool || !Array.isArray(existingBeforeTool)) {
273
+ return { removed: 0, failed: 0 };
274
+ }
275
+ const filtered = existingBeforeTool.flatMap((group) => {
276
+ if (!Array.isArray(group.hooks))
277
+ return [group];
278
+ const hooksBefore = group.hooks.length;
279
+ const hooks = group.hooks.filter((hook) => !isManagedHookCommand(hook.command, scriptRelPaths));
280
+ removed += hooksBefore - hooks.length;
281
+ if (hooks.length === 0)
282
+ return [];
283
+ return [{ ...group, hooks }];
284
+ });
285
+ if (filtered.length === 0) {
286
+ delete existingHooks.BeforeTool;
287
+ }
288
+ else {
289
+ existingHooks.BeforeTool = filtered;
290
+ }
291
+ if (Object.keys(existingHooks).length === 0) {
292
+ delete settings.hooks;
293
+ }
294
+ const content = JSON.stringify(settings, null, 2) + '\n';
295
+ await writeFile(settingsPath, content, 'utf-8');
296
+ return { removed, failed: 0 };
297
+ }
298
+ /**
299
+ * Windsurf: hooks.json with pre_write_code hooks.
300
+ */
301
+ async function removeWindsurfHooks(platformBase, scriptRelPaths) {
302
+ const hooksPath = path.join(platformBase, 'hooks.json');
303
+ if (!(await fileExists(hooksPath))) {
304
+ return { removed: 0, failed: 0 };
305
+ }
306
+ let removed = 0;
307
+ let hooksFile;
308
+ try {
309
+ hooksFile = JSON.parse(await readFile(hooksPath, 'utf-8'));
310
+ }
311
+ catch {
312
+ return { removed: 0, failed: 0 };
313
+ }
314
+ const existingHooks = hooksFile.hooks;
315
+ if (!existingHooks) {
316
+ return { removed: 0, failed: 0 };
317
+ }
318
+ const existingPreWrite = existingHooks.pre_write_code;
319
+ if (!existingPreWrite || !Array.isArray(existingPreWrite)) {
320
+ return { removed: 0, failed: 0 };
321
+ }
322
+ const filtered = existingPreWrite.filter((entry) => {
323
+ if (isManagedHookCommand(entry.command, scriptRelPaths)) {
324
+ removed++;
325
+ return false;
326
+ }
327
+ return true;
328
+ });
329
+ if (filtered.length === 0) {
330
+ delete existingHooks.pre_write_code;
331
+ }
332
+ else {
333
+ existingHooks.pre_write_code = filtered;
334
+ }
335
+ if (Object.keys(existingHooks).length === 0) {
336
+ delete hooksFile.hooks;
337
+ }
338
+ const content = JSON.stringify(hooksFile, null, 2) + '\n';
339
+ await writeFile(hooksPath, content, 'utf-8');
340
+ return { removed, failed: 0 };
341
+ }
342
+ /**
343
+ * GitHub Copilot: hooks/comet-guard.json file (delete the entire file).
344
+ */
345
+ async function removeCopilotHooks(platformBase, _scriptRelPaths) {
346
+ const hookFilePath = path.join(platformBase, 'hooks', 'comet-guard.json');
347
+ const removed = (await removeFile(hookFilePath)) ? 1 : 0;
348
+ // Clean up empty hooks directory
349
+ const hooksDir = path.join(platformBase, 'hooks');
350
+ if (await isDirEmpty(hooksDir)) {
351
+ await removeDir(hooksDir);
352
+ }
353
+ return { removed, failed: 0 };
354
+ }
355
+ /**
356
+ * Kiro: hooks/*.kiro.hook files matching comet patterns.
357
+ */
358
+ async function removeKiroHooks(platformBase, scriptRelPaths) {
359
+ const hooksDir = path.join(platformBase, 'hooks');
360
+ if (!(await fileExists(hooksDir))) {
361
+ return { removed: 0, failed: 0 };
362
+ }
363
+ let removed = 0;
364
+ const entries = await readDir(hooksDir);
365
+ for (const entry of entries) {
366
+ if (!entry.endsWith('.kiro.hook'))
367
+ continue;
368
+ // Match files that correspond to comet scripts
369
+ const baseName = entry.replace('.kiro.hook', '');
370
+ const isCometHook = scriptRelPaths.some((scriptPath) => {
371
+ const scriptBase = path.basename(scriptPath).replace('.sh', '');
372
+ return scriptBase === baseName;
373
+ });
374
+ if (isCometHook) {
375
+ const hookPath = path.join(hooksDir, entry);
376
+ if (await removeFile(hookPath)) {
377
+ removed++;
378
+ }
379
+ }
380
+ }
381
+ // Clean up empty hooks directory
382
+ if (await isDirEmpty(hooksDir)) {
383
+ await removeDir(hooksDir);
384
+ }
385
+ return { removed, failed: 0 };
386
+ }
387
+ /**
388
+ * Remove Comet working directories from a project.
389
+ * Only applies to project scope.
390
+ */
391
+ async function removeWorkingDirs(projectPath) {
392
+ let removed = 0;
393
+ // Remove .comet/ directory
394
+ const cometDir = path.join(projectPath, '.comet');
395
+ if (await removeDir(cometDir)) {
396
+ removed++;
397
+ }
398
+ // Remove docs/superpowers/specs/ if empty
399
+ const specsDir = path.join(projectPath, 'docs', 'superpowers', 'specs');
400
+ if (await isDirEmpty(specsDir)) {
401
+ await removeDir(specsDir);
402
+ }
403
+ // Remove docs/superpowers/plans/ if empty
404
+ const plansDir = path.join(projectPath, 'docs', 'superpowers', 'plans');
405
+ if (await isDirEmpty(plansDir)) {
406
+ await removeDir(plansDir);
407
+ }
408
+ // Remove docs/superpowers/ if empty
409
+ const superpowersDir = path.join(projectPath, 'docs', 'superpowers');
410
+ if (await isDirEmpty(superpowersDir)) {
411
+ await removeDir(superpowersDir);
412
+ }
413
+ // Remove docs/ if empty
414
+ const docsDir = path.join(projectPath, 'docs');
415
+ if (await isDirEmpty(docsDir)) {
416
+ await removeDir(docsDir);
417
+ }
418
+ return { removed, failed: 0 };
419
+ }
420
+ export { removeCometSkillsForPlatform, removeCometRulesForPlatform, removeCometHooksForPlatform, removeWorkingDirs, };
421
+ //# sourceMappingURL=uninstall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/core/uninstall.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export interface VersionCheckResult {
2
+ currentVersion: string;
3
+ latestVersion: string | null;
4
+ hasUpdate: boolean;
5
+ checked: boolean;
6
+ }
7
+ /**
8
+ * Compare two semver version strings.
9
+ * Returns a positive number if a > b, negative if a < b, 0 if equal.
10
+ */
11
+ export declare function compareVersions(a: string, b: string): number;
12
+ /**
13
+ * Get the current installed Comet version from package.json.
14
+ */
15
+ export declare function getCurrentVersion(): string;
16
+ /**
17
+ * Fetch the latest version from the npm registry.
18
+ * Returns null if the registry is unreachable or the request fails.
19
+ */
20
+ export declare function getLatestVersion(): Promise<string | null>;
21
+ /**
22
+ * Check for available updates.
23
+ * Silently returns a "not checked" result if the registry is unreachable.
24
+ */
25
+ export declare function checkForUpdate(): Promise<VersionCheckResult>;
26
+ /**
27
+ * Format and print version info to the console.
28
+ * Used by `comet init` and `comet update` at the start of command output.
29
+ */
30
+ export declare function printVersionInfo(log: (message: string) => void): Promise<VersionCheckResult>;
31
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/core/version.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAuB5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA8BzD;AAED;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAmBlE;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CAmB7B"}
@@ -0,0 +1,111 @@
1
+ import { createRequire } from 'module';
2
+ import https from 'https';
3
+ const require = createRequire(import.meta.url);
4
+ const { version: CURRENT_VERSION } = require('../../package.json');
5
+ const PACKAGE_NAME = '@rpamis/comet';
6
+ const REGISTRY_URL = `https://registry.npmjs.org/${PACKAGE_NAME}/latest`;
7
+ /**
8
+ * Compare two semver version strings.
9
+ * Returns a positive number if a > b, negative if a < b, 0 if equal.
10
+ */
11
+ export function compareVersions(a, b) {
12
+ const parseParts = (v) => v
13
+ .replace(/^v/, '')
14
+ .split('.')
15
+ .map((part) => {
16
+ const numeric = parseInt(part, 10);
17
+ return Number.isNaN(numeric) ? 0 : numeric;
18
+ });
19
+ const partsA = parseParts(a);
20
+ const partsB = parseParts(b);
21
+ const len = Math.max(partsA.length, partsB.length);
22
+ for (let i = 0; i < len; i++) {
23
+ const numA = partsA[i] ?? 0;
24
+ const numB = partsB[i] ?? 0;
25
+ if (numA !== numB) {
26
+ return numA - numB;
27
+ }
28
+ }
29
+ return 0;
30
+ }
31
+ /**
32
+ * Get the current installed Comet version from package.json.
33
+ */
34
+ export function getCurrentVersion() {
35
+ return CURRENT_VERSION;
36
+ }
37
+ /**
38
+ * Fetch the latest version from the npm registry.
39
+ * Returns null if the registry is unreachable or the request fails.
40
+ */
41
+ export function getLatestVersion() {
42
+ return new Promise((resolve) => {
43
+ const request = https.get(REGISTRY_URL, { timeout: 5000 }, (res) => {
44
+ if (res.statusCode !== 200) {
45
+ res.resume();
46
+ resolve(null);
47
+ return;
48
+ }
49
+ let data = '';
50
+ res.on('data', (chunk) => {
51
+ data += chunk;
52
+ });
53
+ res.on('end', () => {
54
+ try {
55
+ const parsed = JSON.parse(data);
56
+ resolve(typeof parsed.version === 'string' ? parsed.version : null);
57
+ }
58
+ catch {
59
+ resolve(null);
60
+ }
61
+ });
62
+ });
63
+ request.on('error', () => resolve(null));
64
+ request.on('timeout', () => {
65
+ request.destroy();
66
+ resolve(null);
67
+ });
68
+ });
69
+ }
70
+ /**
71
+ * Check for available updates.
72
+ * Silently returns a "not checked" result if the registry is unreachable.
73
+ */
74
+ export async function checkForUpdate() {
75
+ const currentVersion = getCurrentVersion();
76
+ const latestVersion = await getLatestVersion();
77
+ if (latestVersion === null) {
78
+ return {
79
+ currentVersion,
80
+ latestVersion: null,
81
+ hasUpdate: false,
82
+ checked: false,
83
+ };
84
+ }
85
+ return {
86
+ currentVersion,
87
+ latestVersion,
88
+ hasUpdate: compareVersions(latestVersion, currentVersion) > 0,
89
+ checked: true,
90
+ };
91
+ }
92
+ /**
93
+ * Format and print version info to the console.
94
+ * Used by `comet init` and `comet update` at the start of command output.
95
+ */
96
+ export async function printVersionInfo(log) {
97
+ const result = await checkForUpdate();
98
+ log(` Comet v${result.currentVersion}`);
99
+ if (!result.checked) {
100
+ // Registry unreachable — skip silently per requirement #6
101
+ return result;
102
+ }
103
+ if (result.hasUpdate) {
104
+ log(` New version v${result.latestVersion} available. Run 'npm update -g ${PACKAGE_NAME}' to upgrade.`);
105
+ }
106
+ else {
107
+ log(` You are on the latest version.`);
108
+ }
109
+ return result;
110
+ }
111
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/core/version.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,13 @@
1
1
  /**
2
2
  * Ensure a directory exists, creating it recursively if needed.
3
+ * Resolves symlinks so that broken symlink targets are created correctly.
3
4
  */
4
5
  export declare function ensureDir(dir: string): Promise<void>;
5
6
  /**
6
7
  * Copy a file from src to dest, creating parent directories if needed.
8
+ * Resolves symlinks in the destination path so files are written to the
9
+ * actual target location when dest contains symlinks (e.g., skill dirs
10
+ * symlinked from ~/.claude/skills/ to ~/.agents/skills/).
7
11
  */
8
12
  export declare function copyFile(src: string, dest: string): Promise<void>;
9
13
  /**
@@ -16,10 +20,29 @@ export declare function fileExists(filePath: string): Promise<boolean>;
16
20
  export declare function readJson<T = unknown>(filePath: string): Promise<T>;
17
21
  /**
18
22
  * Write content to a file, creating parent directories if needed.
23
+ * Resolves symlinks so files are written to the actual target location.
19
24
  */
20
25
  export declare function writeFile(filePath: string, content: string): Promise<void>;
21
26
  /**
22
27
  * List entries in a directory. Returns empty array if directory doesn't exist.
23
28
  */
24
29
  export declare function readDir(dirPath: string): Promise<string[]>;
30
+ /**
31
+ * Remove a file. Returns true if the file existed and was removed.
32
+ * Operates on the path directly so a symlink entry is removed rather than its
33
+ * resolved target (avoids deleting files the symlink merely points at).
34
+ */
35
+ export declare function removeFile(filePath: string): Promise<boolean>;
36
+ /**
37
+ * Remove a directory recursively. Returns true if the directory existed and was removed.
38
+ * Symlinked directories are unlinked directly rather than recursed into, so the
39
+ * directory a symlink points at is never deleted.
40
+ */
41
+ export declare function removeDir(dirPath: string): Promise<boolean>;
42
+ /**
43
+ * Check if a directory is empty. A missing directory is treated as empty;
44
+ * unreadable directories (permissions/IO) return false so callers never delete
45
+ * a directory they could not inspect.
46
+ */
47
+ export declare function isDirEmpty(dirPath: string): Promise<boolean>;
25
48
  //# sourceMappingURL=file-system.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-system.d.ts","sourceRoot":"","sources":["../../src/utils/file-system.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1D;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAGxE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhF;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAWhE"}
1
+ {"version":3,"file":"file-system.d.ts","sourceRoot":"","sources":["../../src/utils/file-system.ts"],"names":[],"mappings":"AAiCA;;;GAGG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG1D;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIvE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAGxE;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhF;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAWhE;AAYD;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQnE;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAajE;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOlE"}