deepflow 0.1.10 → 0.1.12
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/.claude/commands/df/update.md +9 -18
- package/README.md +4 -1
- package/bin/install.js +76 -0
- package/package.json +1 -1
|
@@ -1,31 +1,22 @@
|
|
|
1
1
|
# /df:update — Update deepflow
|
|
2
2
|
|
|
3
|
-
Update
|
|
3
|
+
## Update
|
|
4
4
|
|
|
5
|
-
## Instructions
|
|
6
|
-
|
|
7
|
-
1. Run the update command:
|
|
8
5
|
```bash
|
|
9
6
|
npx deepflow@latest
|
|
10
7
|
```
|
|
11
8
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
3. Restart Claude Code to apply changes.
|
|
15
|
-
|
|
16
|
-
## What Gets Updated
|
|
9
|
+
Auto-detects existing installation and updates it.
|
|
17
10
|
|
|
18
|
-
|
|
19
|
-
- Skills: gap-discovery, atomic-commits, code-completeness
|
|
20
|
-
- Agents: reasoner
|
|
21
|
-
- Hooks: statusline, update checker (global only)
|
|
11
|
+
## Uninstall
|
|
22
12
|
|
|
23
|
-
|
|
13
|
+
```bash
|
|
14
|
+
npx deepflow --uninstall
|
|
15
|
+
```
|
|
24
16
|
|
|
25
|
-
|
|
17
|
+
## Check Version
|
|
26
18
|
|
|
27
|
-
Run this to see versions:
|
|
28
19
|
```bash
|
|
29
|
-
cat ~/.claude/deepflow/VERSION
|
|
30
|
-
npm view deepflow version
|
|
20
|
+
cat ~/.claude/deepflow/VERSION # installed
|
|
21
|
+
npm view deepflow version # latest
|
|
31
22
|
```
|
package/README.md
CHANGED
package/bin/install.js
CHANGED
|
@@ -24,6 +24,11 @@ const PROJECT_DIR = path.join(process.cwd(), '.claude');
|
|
|
24
24
|
const PACKAGE_DIR = path.resolve(__dirname, '..');
|
|
25
25
|
|
|
26
26
|
async function main() {
|
|
27
|
+
// Handle --uninstall flag
|
|
28
|
+
if (process.argv.includes('--uninstall')) {
|
|
29
|
+
return uninstall();
|
|
30
|
+
}
|
|
31
|
+
|
|
27
32
|
console.log('');
|
|
28
33
|
console.log(`${c.cyan}deepflow installer${c.reset}`);
|
|
29
34
|
console.log('');
|
|
@@ -260,6 +265,77 @@ function log(msg) {
|
|
|
260
265
|
console.log(` ${c.green}✓${c.reset} ${msg}`);
|
|
261
266
|
}
|
|
262
267
|
|
|
268
|
+
async function uninstall() {
|
|
269
|
+
console.log('');
|
|
270
|
+
console.log(`${c.cyan}deepflow uninstaller${c.reset}`);
|
|
271
|
+
console.log('');
|
|
272
|
+
|
|
273
|
+
const globalInstalled = isInstalled(GLOBAL_DIR);
|
|
274
|
+
const projectInstalled = isInstalled(PROJECT_DIR);
|
|
275
|
+
|
|
276
|
+
if (!globalInstalled && !projectInstalled) {
|
|
277
|
+
console.log('No deepflow installation found.');
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
let level;
|
|
282
|
+
|
|
283
|
+
if (globalInstalled && projectInstalled) {
|
|
284
|
+
console.log('Found installations in both locations:');
|
|
285
|
+
console.log(` Global: ${GLOBAL_DIR}`);
|
|
286
|
+
console.log(` Project: ${PROJECT_DIR}`);
|
|
287
|
+
console.log('');
|
|
288
|
+
level = await askInstallLevel('Which do you want to remove?');
|
|
289
|
+
} else if (globalInstalled) {
|
|
290
|
+
level = 'global';
|
|
291
|
+
} else {
|
|
292
|
+
level = 'project';
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
const CLAUDE_DIR = level === 'global' ? GLOBAL_DIR : PROJECT_DIR;
|
|
296
|
+
const levelLabel = level === 'global' ? 'global' : 'project';
|
|
297
|
+
|
|
298
|
+
const confirm = await ask(`Remove ${levelLabel} installation from ${CLAUDE_DIR}? [y/N] `);
|
|
299
|
+
if (confirm.toLowerCase() !== 'y') {
|
|
300
|
+
console.log('Cancelled.');
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
console.log('');
|
|
305
|
+
|
|
306
|
+
// Remove deepflow files
|
|
307
|
+
const toRemove = [
|
|
308
|
+
'commands/df',
|
|
309
|
+
'skills/atomic-commits',
|
|
310
|
+
'skills/code-completeness',
|
|
311
|
+
'skills/gap-discovery',
|
|
312
|
+
'agents/reasoner.md',
|
|
313
|
+
'deepflow'
|
|
314
|
+
];
|
|
315
|
+
|
|
316
|
+
if (level === 'global') {
|
|
317
|
+
toRemove.push('hooks/df-statusline.js', 'hooks/df-check-update.js');
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
for (const item of toRemove) {
|
|
321
|
+
const fullPath = path.join(CLAUDE_DIR, item);
|
|
322
|
+
if (fs.existsSync(fullPath)) {
|
|
323
|
+
fs.rmSync(fullPath, { recursive: true });
|
|
324
|
+
console.log(` ${c.green}✓${c.reset} Removed ${item}`);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
// Clear update cache
|
|
329
|
+
const cacheFile = path.join(GLOBAL_DIR, 'cache', 'df-update-check.json');
|
|
330
|
+
if (fs.existsSync(cacheFile)) {
|
|
331
|
+
fs.unlinkSync(cacheFile);
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
console.log('');
|
|
335
|
+
console.log(`${c.green}Uninstall complete.${c.reset}`);
|
|
336
|
+
console.log('');
|
|
337
|
+
}
|
|
338
|
+
|
|
263
339
|
main().catch(err => {
|
|
264
340
|
console.error('Installation failed:', err.message);
|
|
265
341
|
process.exit(1);
|