squeaky-clean 0.3.3 → 0.4.0

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 (86) hide show
  1. package/README.md +29 -1
  2. package/dist/cleaners/antigravity.d.ts +21 -0
  3. package/dist/cleaners/antigravity.d.ts.map +1 -0
  4. package/dist/cleaners/antigravity.js +498 -0
  5. package/dist/cleaners/antigravity.js.map +1 -0
  6. package/dist/cleaners/brew.js +36 -6
  7. package/dist/cleaners/brew.js.map +1 -1
  8. package/dist/cleaners/brewEnhanced.js +38 -5
  9. package/dist/cleaners/brewEnhanced.js.map +1 -1
  10. package/dist/cleaners/cargo.js +35 -2
  11. package/dist/cleaners/cargo.js.map +1 -1
  12. package/dist/cleaners/cocoapods.js +35 -2
  13. package/dist/cleaners/cocoapods.js.map +1 -1
  14. package/dist/cleaners/cursor.js +43 -10
  15. package/dist/cleaners/cursor.js.map +1 -1
  16. package/dist/cleaners/goBuild.js +38 -5
  17. package/dist/cleaners/goBuild.js.map +1 -1
  18. package/dist/cleaners/gradle.js +36 -3
  19. package/dist/cleaners/gradle.js.map +1 -1
  20. package/dist/cleaners/index.d.ts +7 -2
  21. package/dist/cleaners/index.d.ts.map +1 -1
  22. package/dist/cleaners/index.js +48 -4
  23. package/dist/cleaners/index.js.map +1 -1
  24. package/dist/cleaners/maven.js +35 -2
  25. package/dist/cleaners/maven.js.map +1 -1
  26. package/dist/cleaners/nix.js +37 -4
  27. package/dist/cleaners/nix.js.map +1 -1
  28. package/dist/cleaners/nodeGyp.js +36 -3
  29. package/dist/cleaners/nodeGyp.js.map +1 -1
  30. package/dist/cleaners/npm.js +35 -2
  31. package/dist/cleaners/npm.js.map +1 -1
  32. package/dist/cleaners/npmEnhanced.js +35 -2
  33. package/dist/cleaners/npmEnhanced.js.map +1 -1
  34. package/dist/cleaners/nuget.js +35 -2
  35. package/dist/cleaners/nuget.js.map +1 -1
  36. package/dist/cleaners/pipenv.js +35 -2
  37. package/dist/cleaners/pipenv.js.map +1 -1
  38. package/dist/cleaners/playwright.js +42 -9
  39. package/dist/cleaners/playwright.js.map +1 -1
  40. package/dist/cleaners/poetry.js +35 -2
  41. package/dist/cleaners/poetry.js.map +1 -1
  42. package/dist/cleaners/shipit.d.ts +21 -0
  43. package/dist/cleaners/shipit.d.ts.map +1 -0
  44. package/dist/cleaners/shipit.js +211 -0
  45. package/dist/cleaners/shipit.js.map +1 -0
  46. package/dist/cleaners/swiftpm.js +35 -2
  47. package/dist/cleaners/swiftpm.js.map +1 -1
  48. package/dist/cleaners/universalBinary.js +35 -2
  49. package/dist/cleaners/universalBinary.js.map +1 -1
  50. package/dist/cleaners/vscode.js +37 -4
  51. package/dist/cleaners/vscode.js.map +1 -1
  52. package/dist/cleaners/windsurf.js +44 -11
  53. package/dist/cleaners/windsurf.js.map +1 -1
  54. package/dist/cleaners/xcode.js +35 -2
  55. package/dist/cleaners/xcode.js.map +1 -1
  56. package/dist/cleaners/zed.js +43 -10
  57. package/dist/cleaners/zed.js.map +1 -1
  58. package/dist/cli.js +42 -2
  59. package/dist/cli.js.map +1 -1
  60. package/dist/commands/clean.d.ts.map +1 -1
  61. package/dist/commands/clean.js +8 -4
  62. package/dist/commands/clean.js.map +1 -1
  63. package/dist/commands/config.d.ts +2 -2
  64. package/dist/commands/config.d.ts.map +1 -1
  65. package/dist/commands/config.js +43 -24
  66. package/dist/commands/config.js.map +1 -1
  67. package/dist/commands/sizes.d.ts.map +1 -1
  68. package/dist/commands/sizes.js +6 -8
  69. package/dist/commands/sizes.js.map +1 -1
  70. package/dist/commands/update.d.ts +30 -0
  71. package/dist/commands/update.d.ts.map +1 -0
  72. package/dist/commands/update.js +168 -0
  73. package/dist/commands/update.js.map +1 -0
  74. package/dist/config/index.d.ts +5 -0
  75. package/dist/config/index.d.ts.map +1 -1
  76. package/dist/config/index.js +41 -0
  77. package/dist/config/index.js.map +1 -1
  78. package/dist/types/index.d.ts +5 -0
  79. package/dist/types/index.d.ts.map +1 -1
  80. package/dist/utils/cli.js +2 -2
  81. package/dist/utils/cli.js.map +1 -1
  82. package/dist/utils/parallelProgress.d.ts +73 -0
  83. package/dist/utils/parallelProgress.d.ts.map +1 -0
  84. package/dist/utils/parallelProgress.js +226 -0
  85. package/dist/utils/parallelProgress.js.map +1 -0
  86. package/package.json +8 -6
package/README.md CHANGED
@@ -19,6 +19,7 @@ Essentially a *"universal cachectl"*—**smart** *(sort of)*, **safe** (at least
19
19
 
20
20
  - **🎯 Smart Detection**: Automatically detects installed development tools and their cache locations
21
21
  - **🎨 Interactive Wizard**: Beautiful CLI interface with progress bars and colored output
22
+ - **📡 Real-Time Progress**: Live parallel scanning status with animated indicators for 25+ tools simultaneously
22
23
  - **🔧 Highly Configurable**: Choose exactly which caches to clean and when
23
24
  - **📊 Size Analytics**: See how much space each cache is using before cleaning
24
25
  - **🛡️ Safe by Default**: Dry-run mode to preview what will be cleaned (v0.1.0+ defaults to dry-run)
@@ -28,6 +29,7 @@ Essentially a *"universal cachectl"*—**smart** *(sort of)*, **safe** (at least
28
29
  - **🔄 Config Migration**: Automatic migration from legacy to new configuration format
29
30
  - **🔌 Plugin Support**: Discover and use community cleaners via npm packages
30
31
  - **📋 JSON Output**: Machine-readable output for scripting and automation
32
+ - **🔄 Auto-Update**: Background update checking with easy self-update command
31
33
 
32
34
  ## 📦 Installation
33
35
 
@@ -56,6 +58,24 @@ bun add -g squeaky-clean
56
58
  npm install --save-dev squeaky-clean
57
59
  ```
58
60
 
61
+ ### Updating
62
+
63
+ Squeaky Clean includes a built-in update command:
64
+
65
+ ```bash
66
+ # Check for and install updates
67
+ squeaky update
68
+
69
+ # Only check for updates without installing
70
+ squeaky update --check
71
+ ```
72
+
73
+ By default, squeaky-clean will automatically check for updates once every 24 hours when you run any command. You can disable this with:
74
+
75
+ ```bash
76
+ squeaky update --disable-auto
77
+ ```
78
+
59
79
  ## Usage
60
80
 
61
81
  ### Interactive Mode (Recommended)
@@ -153,6 +173,7 @@ squeaky clean --config my-config.json --dry-run
153
173
  | `config` | Manage configuration | - |
154
174
  | `doctor` | Check system and diagnose issues | - |
155
175
  | `auto` | Configure automatic cleaning | - |
176
+ | `update` | Check for and install updates | - |
156
177
  | `interactive` | Start interactive configuration wizard | `i` |
157
178
 
158
179
  ### Command Options
@@ -186,6 +207,12 @@ squeaky clean --config my-config.json --dry-run
186
207
  - `-s, --sizes` - Include cache sizes inline with the list
187
208
  - `-t, --type <type>` - Filter by cache type
188
209
 
210
+ #### `update` Options
211
+
212
+ - `-c, --check` - Only check for updates without installing
213
+ - `--auto-on` - Enable automatic update checks on startup (`--enable-auto`/`--enable-auto-update` aliases)
214
+ - `--auto-off` - Disable automatic update checks (`--disable-auto`/`--disable-auto-update` aliases)
215
+
189
216
  #### Global Options
190
217
 
191
218
  - `-v, --verbose` - Enable verbose output
@@ -405,6 +432,7 @@ npm run dev
405
432
  - `npm run test:coverage` - Generate test coverage report
406
433
  - `npm run lint` - Lint the codebase
407
434
  - `npm run format` - Format code with Prettier
435
+ - `npm run release` - Run tests/build, publish to npm, and sync the GitHub release (requires the `gh` CLI + `GH_TOKEN` or `GITHUB_TOKEN` to be set)
408
436
 
409
437
  ### Testing
410
438
 
@@ -462,4 +490,4 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
462
490
 
463
491
  <div align="center">
464
492
  Made with ❤️ by and for developers
465
- </div>
493
+ </div>
@@ -0,0 +1,21 @@
1
+ import { CacheInfo, ClearResult, CleanerModule, CacheCategory, CacheSelectionCriteria } from "../types";
2
+ /**
3
+ * Google Antigravity IDE Cleaner
4
+ *
5
+ * Google Antigravity is an agentic AI IDE from Google, similar to Cursor/Windsurf.
6
+ * This cleaner manages caches for extensions, workspace storage, logs, and AI model caches.
7
+ */
8
+ export declare class AntigravityCleaner implements CleanerModule {
9
+ name: string;
10
+ type: "ide";
11
+ description: string;
12
+ private getCachePaths;
13
+ isAvailable(): Promise<boolean>;
14
+ getCacheInfo(): Promise<CacheInfo>;
15
+ getCacheCategories(): Promise<CacheCategory[]>;
16
+ clear(dryRun?: boolean, _criteria?: CacheSelectionCriteria, _cacheInfo?: CacheInfo, protectedPaths?: string[]): Promise<ClearResult>;
17
+ clearByCategory(categoryIds: string[], dryRun?: boolean, _cacheInfo?: CacheInfo, protectedPaths?: string[]): Promise<ClearResult>;
18
+ }
19
+ declare const _default: AntigravityCleaner;
20
+ export default _default;
21
+ //# sourceMappingURL=antigravity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antigravity.d.ts","sourceRoot":"","sources":["../../src/cleaners/antigravity.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,SAAS,EACT,WAAW,EACX,aAAa,EACb,aAAa,EACb,sBAAsB,EACvB,MAAM,UAAU,CAAC;AASlB;;;;;GAKG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IACtD,IAAI,SAAiB;IACrB,IAAI,EAAG,KAAK,CAAU;IACtB,WAAW,SAC+E;IAE1F,OAAO,CAAC,aAAa;IAwTf,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAiD/B,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;IA4BlC,kBAAkB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IA6C9C,KAAK,CACT,MAAM,UAAQ,EACd,SAAS,CAAC,EAAE,sBAAsB,EAClC,UAAU,CAAC,EAAE,SAAS,EACtB,cAAc,CAAC,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC,WAAW,CAAC;IAoDjB,eAAe,CACnB,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,UAAQ,EACd,UAAU,CAAC,EAAE,SAAS,EACtB,cAAc,CAAC,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC,WAAW,CAAC;CA+CxB;;AAED,wBAAwC"}
@@ -0,0 +1,498 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.AntigravityCleaner = void 0;
40
+ const fs_1 = require("fs");
41
+ const path_1 = __importDefault(require("path"));
42
+ const os = __importStar(require("os"));
43
+ const fs_2 = require("../utils/fs");
44
+ const cli_1 = require("../utils/cli");
45
+ /**
46
+ * Google Antigravity IDE Cleaner
47
+ *
48
+ * Google Antigravity is an agentic AI IDE from Google, similar to Cursor/Windsurf.
49
+ * This cleaner manages caches for extensions, workspace storage, logs, and AI model caches.
50
+ */
51
+ class AntigravityCleaner {
52
+ constructor() {
53
+ this.name = "antigravity";
54
+ this.type = "ide";
55
+ this.description = "Google Antigravity IDE extensions cache, workspace storage, logs, and AI model caches";
56
+ }
57
+ getCachePaths() {
58
+ const homeDir = os.homedir();
59
+ const platform = os.platform();
60
+ const paths = [];
61
+ if (platform === "darwin") {
62
+ // macOS Antigravity paths
63
+ const antigravityDir = path_1.default.join(homeDir, ".antigravity");
64
+ const antigravityAppSupport = path_1.default.join(homeDir, "Library", "Application Support", "Antigravity");
65
+ const antigravityCache = path_1.default.join(homeDir, "Library", "Caches", "com.google.antigravity");
66
+ const antigravityShipItCache = path_1.default.join(homeDir, "Library", "Caches", "com.google.antigravity.ShipIt");
67
+ paths.push(
68
+ // Main application cache
69
+ {
70
+ path: antigravityCache,
71
+ description: "Antigravity application cache",
72
+ category: "cache",
73
+ priority: "low",
74
+ safeToDelete: true,
75
+ },
76
+ // ShipIt update cache
77
+ {
78
+ path: antigravityShipItCache,
79
+ description: "Antigravity update cache (ShipIt)",
80
+ category: "cache",
81
+ priority: "low",
82
+ safeToDelete: true,
83
+ },
84
+ // Logs
85
+ {
86
+ path: path_1.default.join(antigravityAppSupport, "logs"),
87
+ description: "Antigravity application logs",
88
+ category: "logs",
89
+ priority: "low",
90
+ safeToDelete: true,
91
+ },
92
+ // Extension caches
93
+ {
94
+ path: path_1.default.join(antigravityDir, "extensions", ".obsolete"),
95
+ description: "Obsolete extension files",
96
+ category: "extensions",
97
+ priority: "low",
98
+ safeToDelete: true,
99
+ }, {
100
+ path: path_1.default.join(antigravityAppSupport, "CachedExtensions"),
101
+ description: "Cached extension metadata",
102
+ category: "extensions",
103
+ priority: "normal",
104
+ safeToDelete: true,
105
+ }, {
106
+ path: path_1.default.join(antigravityAppSupport, "CachedExtensionVSIXs"),
107
+ description: "Cached extension VSIX files",
108
+ category: "extensions",
109
+ priority: "normal",
110
+ safeToDelete: true,
111
+ },
112
+ // Workspace storage
113
+ {
114
+ path: path_1.default.join(antigravityAppSupport, "User", "workspaceStorage"),
115
+ description: "Workspace-specific cache and state",
116
+ category: "workspaces",
117
+ priority: "normal",
118
+ safeToDelete: true,
119
+ }, {
120
+ path: path_1.default.join(antigravityAppSupport, "User", "History"),
121
+ description: "File history and timeline cache",
122
+ category: "history",
123
+ priority: "normal",
124
+ safeToDelete: true,
125
+ },
126
+ // Crash dumps
127
+ {
128
+ path: path_1.default.join(antigravityAppSupport, "CrashDumps"),
129
+ description: "Application crash dumps",
130
+ category: "diagnostics",
131
+ priority: "low",
132
+ safeToDelete: true,
133
+ },
134
+ // General cache directory
135
+ {
136
+ path: path_1.default.join(antigravityAppSupport, "Cache"),
137
+ description: "Antigravity cache directory",
138
+ category: "cache",
139
+ priority: "normal",
140
+ safeToDelete: true,
141
+ },
142
+ // GPU cache
143
+ {
144
+ path: path_1.default.join(antigravityAppSupport, "GPUCache"),
145
+ description: "GPU shader cache",
146
+ category: "cache",
147
+ priority: "low",
148
+ safeToDelete: true,
149
+ },
150
+ // Code cache
151
+ {
152
+ path: path_1.default.join(antigravityAppSupport, "Code Cache"),
153
+ description: "V8 code cache",
154
+ category: "cache",
155
+ priority: "low",
156
+ safeToDelete: true,
157
+ });
158
+ }
159
+ else if (platform === "win32") {
160
+ // Windows Antigravity paths
161
+ const appData = process.env.APPDATA || path_1.default.join(homeDir, "AppData", "Roaming");
162
+ const localAppData = process.env.LOCALAPPDATA || path_1.default.join(homeDir, "AppData", "Local");
163
+ const antigravityDir = path_1.default.join(homeDir, ".antigravity");
164
+ paths.push({
165
+ path: path_1.default.join(localAppData, "Antigravity", "Cache"),
166
+ description: "Antigravity application cache",
167
+ category: "cache",
168
+ priority: "low",
169
+ safeToDelete: true,
170
+ }, {
171
+ path: path_1.default.join(appData, "Antigravity", "logs"),
172
+ description: "Antigravity application logs",
173
+ category: "logs",
174
+ priority: "low",
175
+ safeToDelete: true,
176
+ }, {
177
+ path: path_1.default.join(antigravityDir, "extensions", ".obsolete"),
178
+ description: "Obsolete extension files",
179
+ category: "extensions",
180
+ priority: "low",
181
+ safeToDelete: true,
182
+ }, {
183
+ path: path_1.default.join(appData, "Antigravity", "CachedExtensions"),
184
+ description: "Cached extension metadata",
185
+ category: "extensions",
186
+ priority: "normal",
187
+ safeToDelete: true,
188
+ }, {
189
+ path: path_1.default.join(appData, "Antigravity", "CachedExtensionVSIXs"),
190
+ description: "Cached extension VSIX files",
191
+ category: "extensions",
192
+ priority: "normal",
193
+ safeToDelete: true,
194
+ }, {
195
+ path: path_1.default.join(appData, "Antigravity", "User", "workspaceStorage"),
196
+ description: "Workspace-specific cache and state",
197
+ category: "workspaces",
198
+ priority: "normal",
199
+ safeToDelete: true,
200
+ }, {
201
+ path: path_1.default.join(appData, "Antigravity", "User", "History"),
202
+ description: "File history and timeline cache",
203
+ category: "history",
204
+ priority: "normal",
205
+ safeToDelete: true,
206
+ }, {
207
+ path: path_1.default.join(appData, "Antigravity", "CrashDumps"),
208
+ description: "Application crash dumps",
209
+ category: "diagnostics",
210
+ priority: "low",
211
+ safeToDelete: true,
212
+ }, {
213
+ path: path_1.default.join(localAppData, "Antigravity", "GPUCache"),
214
+ description: "GPU shader cache",
215
+ category: "cache",
216
+ priority: "low",
217
+ safeToDelete: true,
218
+ }, {
219
+ path: path_1.default.join(localAppData, "Antigravity", "Code Cache"),
220
+ description: "V8 code cache",
221
+ category: "cache",
222
+ priority: "low",
223
+ safeToDelete: true,
224
+ });
225
+ }
226
+ else {
227
+ // Linux Antigravity paths
228
+ const configDir = process.env.XDG_CONFIG_HOME || path_1.default.join(homeDir, ".config");
229
+ const cacheDir = process.env.XDG_CACHE_HOME || path_1.default.join(homeDir, ".cache");
230
+ const antigravityDir = path_1.default.join(homeDir, ".antigravity");
231
+ paths.push({
232
+ path: path_1.default.join(cacheDir, "antigravity"),
233
+ description: "Antigravity application cache",
234
+ category: "cache",
235
+ priority: "low",
236
+ safeToDelete: true,
237
+ }, {
238
+ path: path_1.default.join(cacheDir, "Antigravity"),
239
+ description: "Antigravity application cache (alternate)",
240
+ category: "cache",
241
+ priority: "low",
242
+ safeToDelete: true,
243
+ }, {
244
+ path: path_1.default.join(configDir, "Antigravity", "logs"),
245
+ description: "Antigravity application logs",
246
+ category: "logs",
247
+ priority: "low",
248
+ safeToDelete: true,
249
+ }, {
250
+ path: path_1.default.join(antigravityDir, "extensions", ".obsolete"),
251
+ description: "Obsolete extension files",
252
+ category: "extensions",
253
+ priority: "low",
254
+ safeToDelete: true,
255
+ }, {
256
+ path: path_1.default.join(configDir, "Antigravity", "CachedExtensions"),
257
+ description: "Cached extension metadata",
258
+ category: "extensions",
259
+ priority: "normal",
260
+ safeToDelete: true,
261
+ }, {
262
+ path: path_1.default.join(configDir, "Antigravity", "CachedExtensionVSIXs"),
263
+ description: "Cached extension VSIX files",
264
+ category: "extensions",
265
+ priority: "normal",
266
+ safeToDelete: true,
267
+ }, {
268
+ path: path_1.default.join(configDir, "Antigravity", "User", "workspaceStorage"),
269
+ description: "Workspace-specific cache and state",
270
+ category: "workspaces",
271
+ priority: "normal",
272
+ safeToDelete: true,
273
+ }, {
274
+ path: path_1.default.join(configDir, "Antigravity", "User", "History"),
275
+ description: "File history and timeline cache",
276
+ category: "history",
277
+ priority: "normal",
278
+ safeToDelete: true,
279
+ }, {
280
+ path: path_1.default.join(configDir, "Antigravity", "CrashDumps"),
281
+ description: "Application crash dumps",
282
+ category: "diagnostics",
283
+ priority: "low",
284
+ safeToDelete: true,
285
+ }, {
286
+ path: path_1.default.join(configDir, "Antigravity", "GPUCache"),
287
+ description: "GPU shader cache",
288
+ category: "cache",
289
+ priority: "low",
290
+ safeToDelete: true,
291
+ }, {
292
+ path: path_1.default.join(configDir, "Antigravity", "Code Cache"),
293
+ description: "V8 code cache",
294
+ category: "cache",
295
+ priority: "low",
296
+ safeToDelete: true,
297
+ });
298
+ }
299
+ return paths;
300
+ }
301
+ async isAvailable() {
302
+ const homeDir = os.homedir();
303
+ const platform = os.platform();
304
+ // Check for .antigravity directory
305
+ const antigravityDir = path_1.default.join(homeDir, ".antigravity");
306
+ if (await (0, fs_2.pathExists)(antigravityDir)) {
307
+ return true;
308
+ }
309
+ // Check for cache directories
310
+ const cachePaths = this.getCachePaths();
311
+ for (const { path: cachePath } of cachePaths) {
312
+ if (await (0, fs_2.pathExists)(cachePath)) {
313
+ return true;
314
+ }
315
+ }
316
+ // Check for application
317
+ if (platform === "darwin") {
318
+ const appPath = "/Applications/Antigravity.app";
319
+ if (await (0, fs_2.pathExists)(appPath)) {
320
+ return true;
321
+ }
322
+ }
323
+ else if (platform === "win32") {
324
+ const localAppData = process.env.LOCALAPPDATA ||
325
+ path_1.default.join(homeDir, "AppData", "Local");
326
+ const appPath = path_1.default.join(localAppData, "Programs", "Antigravity");
327
+ if (await (0, fs_2.pathExists)(appPath)) {
328
+ return true;
329
+ }
330
+ }
331
+ else {
332
+ // Linux - check common install locations
333
+ const linuxPaths = [
334
+ "/usr/share/antigravity",
335
+ "/opt/Antigravity",
336
+ path_1.default.join(homeDir, ".local", "share", "antigravity"),
337
+ ];
338
+ for (const linuxPath of linuxPaths) {
339
+ if (await (0, fs_2.pathExists)(linuxPath)) {
340
+ return true;
341
+ }
342
+ }
343
+ }
344
+ return false;
345
+ }
346
+ async getCacheInfo() {
347
+ const cachePaths = this.getCachePaths();
348
+ const existingPaths = [];
349
+ let totalSize = 0;
350
+ for (const { path: cachePath, safeToDelete } of cachePaths) {
351
+ if (!safeToDelete)
352
+ continue;
353
+ if (await (0, fs_2.pathExists)(cachePath)) {
354
+ existingPaths.push(cachePath);
355
+ const size = await (0, fs_2.getEstimatedDirectorySize)(cachePath);
356
+ totalSize += size;
357
+ (0, cli_1.printVerbose)(`📁 ${cachePath}: ${(size / (1024 * 1024)).toFixed(1)} MB`);
358
+ }
359
+ }
360
+ return {
361
+ name: this.name,
362
+ type: this.type,
363
+ description: this.description,
364
+ paths: existingPaths,
365
+ isInstalled: await this.isAvailable(),
366
+ size: totalSize,
367
+ };
368
+ }
369
+ async getCacheCategories() {
370
+ const cachePaths = this.getCachePaths();
371
+ const categoryMap = new Map();
372
+ for (const { path: cachePath, description, category, priority, safeToDelete, } of cachePaths) {
373
+ if (!safeToDelete)
374
+ continue;
375
+ if (!(await (0, fs_2.pathExists)(cachePath)))
376
+ continue;
377
+ const size = await (0, fs_2.getDirectorySize)(cachePath);
378
+ let stats;
379
+ try {
380
+ stats = await fs_1.promises.stat(cachePath);
381
+ }
382
+ catch {
383
+ stats = null;
384
+ }
385
+ const categoryId = `antigravity-${category}`;
386
+ const existing = categoryMap.get(categoryId);
387
+ if (existing) {
388
+ existing.paths.push(cachePath);
389
+ existing.size = (existing.size || 0) + size;
390
+ }
391
+ else {
392
+ categoryMap.set(categoryId, {
393
+ id: categoryId,
394
+ name: `Antigravity ${category}`,
395
+ description,
396
+ paths: [cachePath],
397
+ size,
398
+ lastModified: stats?.mtime,
399
+ priority,
400
+ useCase: "development",
401
+ });
402
+ }
403
+ }
404
+ return Array.from(categoryMap.values());
405
+ }
406
+ async clear(dryRun = false, _criteria, _cacheInfo, protectedPaths) {
407
+ const cachePaths = this.getCachePaths();
408
+ const clearedPaths = [];
409
+ let sizeBefore = 0;
410
+ let sizeAfter = 0;
411
+ for (const { path: cachePath, description, safeToDelete } of cachePaths) {
412
+ if (!safeToDelete)
413
+ continue;
414
+ if (!(await (0, fs_2.pathExists)(cachePath)))
415
+ continue;
416
+ if (protectedPaths?.some((p) => cachePath.startsWith(p))) {
417
+ (0, cli_1.printVerbose)(` Skipping protected path: ${cachePath}`);
418
+ continue;
419
+ }
420
+ const pathSize = await (0, fs_2.getDirectorySize)(cachePath);
421
+ sizeBefore += pathSize;
422
+ if (dryRun) {
423
+ (0, cli_1.printVerbose)(`[DRY RUN] Would clear: ${description} (${(pathSize / (1024 * 1024)).toFixed(1)} MB)`);
424
+ clearedPaths.push(cachePath);
425
+ }
426
+ else {
427
+ try {
428
+ await (0, fs_2.safeRmrf)(cachePath);
429
+ clearedPaths.push(cachePath);
430
+ (0, cli_1.printVerbose)(`✓ Cleared: ${description}`);
431
+ }
432
+ catch (error) {
433
+ (0, cli_1.printVerbose)(`✗ Failed to clear ${description}: ${error}`);
434
+ }
435
+ }
436
+ }
437
+ if (!dryRun) {
438
+ for (const { path: cachePath, safeToDelete } of cachePaths) {
439
+ if (!safeToDelete)
440
+ continue;
441
+ if (await (0, fs_2.pathExists)(cachePath)) {
442
+ sizeAfter += await (0, fs_2.getDirectorySize)(cachePath);
443
+ }
444
+ }
445
+ }
446
+ return {
447
+ name: this.name,
448
+ success: true,
449
+ sizeBefore,
450
+ sizeAfter: dryRun ? sizeBefore : sizeAfter,
451
+ clearedPaths,
452
+ };
453
+ }
454
+ async clearByCategory(categoryIds, dryRun = false, _cacheInfo, protectedPaths) {
455
+ const categories = await this.getCacheCategories();
456
+ const targetCategories = categories.filter((c) => categoryIds.includes(c.id));
457
+ const clearedPaths = [];
458
+ let sizeBefore = 0;
459
+ let sizeAfter = 0;
460
+ for (const category of targetCategories) {
461
+ for (const cachePath of category.paths) {
462
+ if (!(await (0, fs_2.pathExists)(cachePath)))
463
+ continue;
464
+ if (protectedPaths?.some((p) => cachePath.startsWith(p))) {
465
+ (0, cli_1.printVerbose)(` Skipping protected path: ${cachePath}`);
466
+ continue;
467
+ }
468
+ const pathSize = await (0, fs_2.getDirectorySize)(cachePath);
469
+ sizeBefore += pathSize;
470
+ if (dryRun) {
471
+ (0, cli_1.printVerbose)(`[DRY RUN] Would clear: ${category.name} (${(pathSize / (1024 * 1024)).toFixed(1)} MB)`);
472
+ clearedPaths.push(cachePath);
473
+ }
474
+ else {
475
+ try {
476
+ await (0, fs_2.safeRmrf)(cachePath);
477
+ clearedPaths.push(cachePath);
478
+ (0, cli_1.printVerbose)(`✓ Cleared: ${category.name}`);
479
+ }
480
+ catch (error) {
481
+ (0, cli_1.printVerbose)(`✗ Failed to clear ${category.name}: ${error}`);
482
+ }
483
+ }
484
+ }
485
+ }
486
+ return {
487
+ name: this.name,
488
+ success: true,
489
+ sizeBefore,
490
+ sizeAfter: dryRun ? sizeBefore : sizeAfter,
491
+ clearedPaths,
492
+ clearedCategories: categoryIds,
493
+ };
494
+ }
495
+ }
496
+ exports.AntigravityCleaner = AntigravityCleaner;
497
+ exports.default = new AntigravityCleaner();
498
+ //# sourceMappingURL=antigravity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"antigravity.js","sourceRoot":"","sources":["../../src/cleaners/antigravity.ts"],"names":[],"mappings":"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"}