@claudetree/cli 0.13.0 → 0.15.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.
- package/dist/commands/archive.d.ts +3 -0
- package/dist/commands/archive.d.ts.map +1 -0
- package/dist/commands/archive.js +81 -0
- package/dist/commands/archive.js.map +1 -0
- package/dist/commands/template.d.ts +3 -0
- package/dist/commands/template.d.ts.map +1 -0
- package/dist/commands/template.js +100 -0
- package/dist/commands/template.js.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../src/commands/archive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,eAAO,MAAM,cAAc,SAiGvB,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { access, writeFile, mkdir } from 'node:fs/promises';
|
|
4
|
+
import { FileSessionRepository } from '@claudetree/core';
|
|
5
|
+
const CONFIG_DIR = '.claudetree';
|
|
6
|
+
export const archiveCommand = new Command('archive')
|
|
7
|
+
.description('Archive old sessions to reduce clutter in status/stats')
|
|
8
|
+
.option('--status <statuses>', 'Archive sessions with these statuses (comma-separated)', 'completed,failed')
|
|
9
|
+
.option('--before <period>', 'Only archive sessions older than period (e.g. 7d, 30d)')
|
|
10
|
+
.option('--dry-run', 'Show what would be archived', false)
|
|
11
|
+
.option('--tag <tags...>', 'Only archive sessions with these tags')
|
|
12
|
+
.action(async (options) => {
|
|
13
|
+
const cwd = process.cwd();
|
|
14
|
+
const configDir = join(cwd, CONFIG_DIR);
|
|
15
|
+
try {
|
|
16
|
+
await access(configDir);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
console.error('Error: claudetree not initialized. Run "claudetree init" first.');
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
const sessionRepo = new FileSessionRepository(configDir);
|
|
23
|
+
const sessions = await sessionRepo.findAll();
|
|
24
|
+
const statusFilter = new Set(options.status.split(',').map((s) => s.trim()));
|
|
25
|
+
let candidates = sessions.filter((s) => statusFilter.has(s.status));
|
|
26
|
+
// Time filter
|
|
27
|
+
if (options.before) {
|
|
28
|
+
const match = options.before.match(/^(\d+)([hdwm])$/);
|
|
29
|
+
if (match) {
|
|
30
|
+
const val = parseInt(match[1], 10);
|
|
31
|
+
const unit = match[2];
|
|
32
|
+
const msMap = {
|
|
33
|
+
h: 3_600_000, d: 86_400_000, w: 604_800_000, m: 2_592_000_000,
|
|
34
|
+
};
|
|
35
|
+
const cutoff = Date.now() - val * (msMap[unit] ?? 86_400_000);
|
|
36
|
+
candidates = candidates.filter((s) => new Date(s.updatedAt).getTime() < cutoff);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// Tag filter
|
|
40
|
+
if (options.tag?.length) {
|
|
41
|
+
const filterTags = new Set(options.tag);
|
|
42
|
+
candidates = candidates.filter((s) => s.tags?.some((t) => filterTags.has(t)));
|
|
43
|
+
}
|
|
44
|
+
if (candidates.length === 0) {
|
|
45
|
+
console.log('No sessions to archive.');
|
|
46
|
+
process.exit(0);
|
|
47
|
+
}
|
|
48
|
+
if (options.dryRun) {
|
|
49
|
+
console.log(`\nWould archive ${candidates.length} session(s):\n`);
|
|
50
|
+
for (const s of candidates) {
|
|
51
|
+
const issue = s.issueNumber ? `#${s.issueNumber}` : s.id.slice(0, 8);
|
|
52
|
+
console.log(` ${issue} | ${s.status} | ${new Date(s.updatedAt).toLocaleDateString()}`);
|
|
53
|
+
}
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
// Save to archive file
|
|
57
|
+
const archiveDir = join(configDir, 'archive');
|
|
58
|
+
await mkdir(archiveDir, { recursive: true });
|
|
59
|
+
const archivePath = join(archiveDir, `archive-${Date.now()}.json`);
|
|
60
|
+
let totalCost = 0;
|
|
61
|
+
for (const s of candidates) {
|
|
62
|
+
if (s.usage)
|
|
63
|
+
totalCost += s.usage.totalCostUsd;
|
|
64
|
+
}
|
|
65
|
+
await writeFile(archivePath, JSON.stringify({
|
|
66
|
+
archivedAt: new Date().toISOString(),
|
|
67
|
+
count: candidates.length,
|
|
68
|
+
totalCost,
|
|
69
|
+
sessions: candidates,
|
|
70
|
+
}, null, 2));
|
|
71
|
+
// Remove archived sessions from active list
|
|
72
|
+
const archivedIds = new Set(candidates.map((s) => s.id));
|
|
73
|
+
const remaining = sessions.filter((s) => !archivedIds.has(s.id));
|
|
74
|
+
const sessionsPath = join(configDir, 'sessions.json');
|
|
75
|
+
await writeFile(sessionsPath, JSON.stringify(remaining, null, 2));
|
|
76
|
+
console.log(`\n\x1b[32m✓\x1b[0m Archived ${candidates.length} session(s)`);
|
|
77
|
+
console.log(` Total cost archived: $${totalCost.toFixed(4)}`);
|
|
78
|
+
console.log(` Archive: ${archivePath}`);
|
|
79
|
+
console.log(` Remaining active: ${remaining.length} session(s)`);
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=archive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../src/commands/archive.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/commands/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,eAAO,MAAM,eAAe,SA6GzB,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { access, writeFile, mkdir } from 'node:fs/promises';
|
|
4
|
+
import { TemplateLoader, DEFAULT_TEMPLATES } from '@claudetree/core';
|
|
5
|
+
const CONFIG_DIR = '.claudetree';
|
|
6
|
+
function printTemplate(name, tmpl) {
|
|
7
|
+
const desc = tmpl.description ?? '(no description)';
|
|
8
|
+
const skill = tmpl.skill ? `\x1b[33m[${tmpl.skill}]\x1b[0m ` : '';
|
|
9
|
+
console.log(` \x1b[36m${name}\x1b[0m ${skill}- ${desc}`);
|
|
10
|
+
}
|
|
11
|
+
export const templateCommand = new Command('template')
|
|
12
|
+
.description('Manage session templates (list, show, create)')
|
|
13
|
+
.addCommand(new Command('list')
|
|
14
|
+
.description('List all available templates')
|
|
15
|
+
.action(async () => {
|
|
16
|
+
const cwd = process.cwd();
|
|
17
|
+
const loader = new TemplateLoader(join(cwd, CONFIG_DIR));
|
|
18
|
+
console.log('\n\x1b[36mBuilt-in Templates:\x1b[0m\n');
|
|
19
|
+
for (const [name, tmpl] of Object.entries(DEFAULT_TEMPLATES)) {
|
|
20
|
+
printTemplate(name, tmpl);
|
|
21
|
+
}
|
|
22
|
+
const custom = await loader.loadAll();
|
|
23
|
+
if (Object.keys(custom).length > 0) {
|
|
24
|
+
console.log('\n\x1b[36mCustom Templates:\x1b[0m\n');
|
|
25
|
+
for (const [name, tmpl] of Object.entries(custom)) {
|
|
26
|
+
printTemplate(name, tmpl);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
console.log(`\n Total: ${Object.keys(DEFAULT_TEMPLATES).length + Object.keys(custom).length} template(s)`);
|
|
30
|
+
console.log(' Use: \x1b[90mct template show <name>\x1b[0m for details\n');
|
|
31
|
+
}))
|
|
32
|
+
.addCommand(new Command('show')
|
|
33
|
+
.description('Show template details')
|
|
34
|
+
.argument('<name>', 'Template name')
|
|
35
|
+
.action(async (name) => {
|
|
36
|
+
const cwd = process.cwd();
|
|
37
|
+
const loader = new TemplateLoader(join(cwd, CONFIG_DIR));
|
|
38
|
+
let tmpl = null;
|
|
39
|
+
if (name in DEFAULT_TEMPLATES) {
|
|
40
|
+
tmpl = DEFAULT_TEMPLATES[name] ?? null;
|
|
41
|
+
}
|
|
42
|
+
if (!tmpl) {
|
|
43
|
+
tmpl = await loader.load(name);
|
|
44
|
+
}
|
|
45
|
+
if (!tmpl) {
|
|
46
|
+
console.error(`Template "${name}" not found.`);
|
|
47
|
+
console.log('Run: ct template list');
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
console.log(`\n\x1b[36m╔══════════════════════════════════════════╗\x1b[0m`);
|
|
51
|
+
console.log(`\x1b[36m║ Template: ${tmpl.name.padEnd(29)}║\x1b[0m`);
|
|
52
|
+
console.log(`\x1b[36m╚══════════════════════════════════════════╝\x1b[0m\n`);
|
|
53
|
+
if (tmpl.description) {
|
|
54
|
+
console.log(` Description: ${tmpl.description}`);
|
|
55
|
+
}
|
|
56
|
+
if (tmpl.skill) {
|
|
57
|
+
console.log(` Skill: ${tmpl.skill}`);
|
|
58
|
+
}
|
|
59
|
+
if (tmpl.allowedTools?.length) {
|
|
60
|
+
console.log(` Allowed tools: ${tmpl.allowedTools.join(', ')}`);
|
|
61
|
+
}
|
|
62
|
+
if (tmpl.promptPrefix) {
|
|
63
|
+
console.log(`\n \x1b[33mPrompt Prefix:\x1b[0m`);
|
|
64
|
+
console.log(` ${tmpl.promptPrefix.split('\n').join('\n ')}`);
|
|
65
|
+
}
|
|
66
|
+
if (tmpl.promptSuffix) {
|
|
67
|
+
console.log(`\n \x1b[33mPrompt Suffix:\x1b[0m`);
|
|
68
|
+
console.log(` ${tmpl.promptSuffix}`);
|
|
69
|
+
}
|
|
70
|
+
console.log('');
|
|
71
|
+
}))
|
|
72
|
+
.addCommand(new Command('create')
|
|
73
|
+
.description('Create a custom template')
|
|
74
|
+
.argument('<name>', 'Template name')
|
|
75
|
+
.option('-d, --description <desc>', 'Template description')
|
|
76
|
+
.option('-p, --prompt <prompt>', 'Prompt prefix')
|
|
77
|
+
.option('-s, --skill <skill>', 'Skill to activate (tdd, review, docs)')
|
|
78
|
+
.action(async (name, options) => {
|
|
79
|
+
const cwd = process.cwd();
|
|
80
|
+
const templatesDir = join(cwd, CONFIG_DIR, 'templates');
|
|
81
|
+
try {
|
|
82
|
+
await access(join(cwd, CONFIG_DIR));
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
console.error('Error: claudetree not initialized. Run "claudetree init" first.');
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
const template = {
|
|
89
|
+
name,
|
|
90
|
+
description: options.description ?? `Custom template: ${name}`,
|
|
91
|
+
promptPrefix: options.prompt ?? `You are working with the ${name} template. Follow best practices.`,
|
|
92
|
+
skill: options.skill,
|
|
93
|
+
};
|
|
94
|
+
await mkdir(templatesDir, { recursive: true });
|
|
95
|
+
await writeFile(join(templatesDir, `${name}.json`), JSON.stringify(template, null, 2));
|
|
96
|
+
console.log(`\n\x1b[32m✓\x1b[0m Template "${name}" created`);
|
|
97
|
+
console.log(` Path: ${join(templatesDir, `${name}.json`)}`);
|
|
98
|
+
console.log(` Use: ct start <issue> --template ${name}\n`);
|
|
99
|
+
}));
|
|
100
|
+
//# sourceMappingURL=template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/commands/template.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { program } from 'commander';
|
|
4
|
+
import { archiveCommand } from './commands/archive.js';
|
|
4
5
|
import { batchCommand } from './commands/batch.js';
|
|
5
6
|
import { bustercallCommand } from './commands/bustercall.js';
|
|
6
7
|
import { chainCommand } from './commands/chain.js';
|
|
@@ -19,6 +20,7 @@ import { statsCommand } from './commands/stats.js';
|
|
|
19
20
|
import { statusCommand } from './commands/status.js';
|
|
20
21
|
import { stopCommand } from './commands/stop.js';
|
|
21
22
|
import { summaryCommand } from './commands/summary.js';
|
|
23
|
+
import { templateCommand } from './commands/template.js';
|
|
22
24
|
import { watchCommand } from './commands/watch.js';
|
|
23
25
|
import { webCommand } from './commands/web.js';
|
|
24
26
|
const require = createRequire(import.meta.url);
|
|
@@ -42,10 +44,12 @@ program.addCommand(diffCommand);
|
|
|
42
44
|
program.addCommand(exportCommand);
|
|
43
45
|
program.addCommand(prCommand);
|
|
44
46
|
program.addCommand(summaryCommand);
|
|
47
|
+
program.addCommand(templateCommand);
|
|
45
48
|
program.addCommand(watchCommand);
|
|
46
49
|
program.addCommand(webCommand);
|
|
47
50
|
program.addCommand(listCommand);
|
|
48
51
|
program.addCommand(cleanCommand);
|
|
52
|
+
program.addCommand(archiveCommand);
|
|
49
53
|
program.addCommand(doctorCommand);
|
|
50
54
|
program.addHelpText('after', `
|
|
51
55
|
Quick Start:
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@claudetree/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"description": "Issue-to-PR automation: parallel Claude Code sessions with cost tracking, batch processing & web dashboard",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -36,11 +36,11 @@
|
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"async-mutex": "^0.5.0",
|
|
38
38
|
"commander": "^14.0.3",
|
|
39
|
-
"@claudetree/core": "0.
|
|
40
|
-
"@claudetree/shared": "0.
|
|
39
|
+
"@claudetree/core": "0.11.1",
|
|
40
|
+
"@claudetree/shared": "0.8.0"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"@types/node": "^25.0
|
|
43
|
+
"@types/node": "^25.6.0",
|
|
44
44
|
"typescript": "^5.9.3",
|
|
45
45
|
"vitest": "^4.1.4"
|
|
46
46
|
},
|