@claudetree/cli 0.10.0 → 0.11.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.
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const summaryCommand: Command;
3
+ //# sourceMappingURL=summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../src/commands/summary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmMpC,eAAO,MAAM,cAAc,SAmFvB,CAAC"}
@@ -0,0 +1,217 @@
1
+ import { Command } from 'commander';
2
+ import { join } from 'node:path';
3
+ import { access, writeFile } from 'node:fs/promises';
4
+ import { FileSessionRepository } from '@claudetree/core';
5
+ const CONFIG_DIR = '.claudetree';
6
+ function parseRelativeDate(since) {
7
+ const now = Date.now();
8
+ const match = since.match(/^(\d+)([hdwm])$/);
9
+ if (!match)
10
+ return new Date(since);
11
+ const val = parseInt(match[1], 10);
12
+ const unit = match[2];
13
+ const msMap = {
14
+ h: 3_600_000,
15
+ d: 86_400_000,
16
+ w: 604_800_000,
17
+ m: 2_592_000_000,
18
+ };
19
+ return new Date(now - val * (msMap[unit] ?? 86_400_000));
20
+ }
21
+ function formatDuration(ms) {
22
+ if (ms < 60_000)
23
+ return `${Math.round(ms / 1000)}s`;
24
+ const min = Math.floor(ms / 60_000);
25
+ if (min < 60)
26
+ return `${min}m`;
27
+ const hours = Math.floor(min / 60);
28
+ return `${hours}h ${min % 60}m`;
29
+ }
30
+ function generateTextSummary(sessions, since) {
31
+ const completed = sessions.filter((s) => s.status === 'completed');
32
+ const failed = sessions.filter((s) => s.status === 'failed');
33
+ const running = sessions.filter((s) => s.status === 'running');
34
+ let totalCost = 0;
35
+ let totalInput = 0;
36
+ let totalOutput = 0;
37
+ for (const s of sessions) {
38
+ if (s.usage) {
39
+ totalCost += s.usage.totalCostUsd;
40
+ totalInput += s.usage.inputTokens;
41
+ totalOutput += s.usage.outputTokens;
42
+ }
43
+ }
44
+ const successRate = sessions.length > 0
45
+ ? Math.round((completed.length / sessions.length) * 100)
46
+ : 0;
47
+ const lines = [
48
+ '\x1b[36m╔══════════════════════════════════════════╗\x1b[0m',
49
+ '\x1b[36m║ Session Summary ║\x1b[0m',
50
+ '\x1b[36m╚══════════════════════════════════════════╝\x1b[0m',
51
+ '',
52
+ ` Period: Since ${since.toLocaleDateString()}`,
53
+ ` Total sessions: ${sessions.length}`,
54
+ ` \x1b[32mCompleted:\x1b[0m ${completed.length}`,
55
+ ` \x1b[31mFailed:\x1b[0m ${failed.length}`,
56
+ ` \x1b[33mRunning:\x1b[0m ${running.length}`,
57
+ ` Success rate: ${successRate}%`,
58
+ '',
59
+ ` \x1b[33mTotal cost:\x1b[0m $${totalCost.toFixed(4)}`,
60
+ ` \x1b[33mTotal tokens:\x1b[0m ${totalInput.toLocaleString()} in / ${totalOutput.toLocaleString()} out`,
61
+ ];
62
+ if (sessions.length > 0) {
63
+ const avgCost = totalCost / sessions.length;
64
+ lines.push(` Avg cost/session: $${avgCost.toFixed(4)}`);
65
+ }
66
+ // Issues worked on
67
+ const issues = sessions
68
+ .filter((s) => s.issueNumber !== null)
69
+ .map((s) => `#${s.issueNumber}`);
70
+ if (issues.length > 0) {
71
+ lines.push('', ` Issues: ${[...new Set(issues)].join(', ')}`);
72
+ }
73
+ // Tags breakdown
74
+ const tagCounts = new Map();
75
+ for (const s of sessions) {
76
+ for (const tag of s.tags ?? []) {
77
+ tagCounts.set(tag, (tagCounts.get(tag) ?? 0) + 1);
78
+ }
79
+ }
80
+ if (tagCounts.size > 0) {
81
+ lines.push('', ' Tags:');
82
+ for (const [tag, count] of tagCounts) {
83
+ lines.push(` ${tag}: ${count} session(s)`);
84
+ }
85
+ }
86
+ // Completed session details
87
+ if (completed.length > 0) {
88
+ lines.push('', '\x1b[32m Completed Sessions:\x1b[0m');
89
+ for (const s of completed) {
90
+ const issue = s.issueNumber ? `#${s.issueNumber}` : s.id.slice(0, 8);
91
+ const cost = s.usage ? `$${s.usage.totalCostUsd.toFixed(4)}` : '-';
92
+ const dur = formatDuration(new Date(s.updatedAt).getTime() - new Date(s.createdAt).getTime());
93
+ lines.push(` ${issue} | ${cost} | ${dur}`);
94
+ }
95
+ }
96
+ // Failed session details
97
+ if (failed.length > 0) {
98
+ lines.push('', '\x1b[31m Failed Sessions:\x1b[0m');
99
+ for (const s of failed) {
100
+ const issue = s.issueNumber ? `#${s.issueNumber}` : s.id.slice(0, 8);
101
+ const err = s.lastError
102
+ ? s.lastError.slice(0, 50)
103
+ : 'Unknown error';
104
+ lines.push(` ${issue} | ${err}`);
105
+ }
106
+ }
107
+ lines.push('');
108
+ return lines.join('\n');
109
+ }
110
+ function generateMarkdownSummary(sessions, since) {
111
+ const completed = sessions.filter((s) => s.status === 'completed');
112
+ const failed = sessions.filter((s) => s.status === 'failed');
113
+ let totalCost = 0;
114
+ let totalInput = 0;
115
+ let totalOutput = 0;
116
+ for (const s of sessions) {
117
+ if (s.usage) {
118
+ totalCost += s.usage.totalCostUsd;
119
+ totalInput += s.usage.inputTokens;
120
+ totalOutput += s.usage.outputTokens;
121
+ }
122
+ }
123
+ const successRate = sessions.length > 0
124
+ ? Math.round((completed.length / sessions.length) * 100)
125
+ : 0;
126
+ let md = `# Claude-Tree Session Summary\n\n`;
127
+ md += `> Period: Since ${since.toLocaleDateString()}\n\n`;
128
+ md += `| Metric | Value |\n|--------|-------|\n`;
129
+ md += `| Total sessions | ${sessions.length} |\n`;
130
+ md += `| Completed | ${completed.length} |\n`;
131
+ md += `| Failed | ${failed.length} |\n`;
132
+ md += `| Success rate | ${successRate}% |\n`;
133
+ md += `| Total cost | $${totalCost.toFixed(4)} |\n`;
134
+ md += `| Total tokens | ${totalInput.toLocaleString()} in / ${totalOutput.toLocaleString()} out |\n\n`;
135
+ if (completed.length > 0) {
136
+ md += `## Completed Sessions\n\n`;
137
+ md += `| Issue | Cost | Duration |\n|-------|------|----------|\n`;
138
+ for (const s of completed) {
139
+ const issue = s.issueNumber ? `#${s.issueNumber}` : s.id.slice(0, 8);
140
+ const cost = s.usage ? `$${s.usage.totalCostUsd.toFixed(4)}` : '-';
141
+ const dur = formatDuration(new Date(s.updatedAt).getTime() - new Date(s.createdAt).getTime());
142
+ md += `| ${issue} | ${cost} | ${dur} |\n`;
143
+ }
144
+ md += '\n';
145
+ }
146
+ if (failed.length > 0) {
147
+ md += `## Failed Sessions\n\n`;
148
+ for (const s of failed) {
149
+ const issue = s.issueNumber ? `#${s.issueNumber}` : s.id.slice(0, 8);
150
+ md += `- **${issue}**: ${s.lastError ?? 'Unknown error'}\n`;
151
+ }
152
+ md += '\n';
153
+ }
154
+ md += `---\n*Generated by [claudetree](https://github.com/wonjangcloud9/claude-tree)*\n`;
155
+ return md;
156
+ }
157
+ export const summaryCommand = new Command('summary')
158
+ .description('Generate a summary of all session activity')
159
+ .option('--since <period>', 'Time period: 24h, 7d, 30d, or ISO date (default: 24h)', '24h')
160
+ .option('-f, --format <format>', 'Output format: text, markdown, json (default: text)', 'text')
161
+ .option('-o, --output <file>', 'Save to file')
162
+ .option('--tag <tags...>', 'Filter by tags')
163
+ .action(async (options) => {
164
+ const cwd = process.cwd();
165
+ const configDir = join(cwd, CONFIG_DIR);
166
+ try {
167
+ await access(configDir);
168
+ }
169
+ catch {
170
+ console.error('Error: claudetree not initialized. Run "claudetree init" first.');
171
+ process.exit(1);
172
+ }
173
+ const sessionRepo = new FileSessionRepository(configDir);
174
+ let sessions = await sessionRepo.findAll();
175
+ const since = parseRelativeDate(options.since ?? '24h');
176
+ sessions = sessions.filter((s) => new Date(s.createdAt).getTime() >= since.getTime());
177
+ // Tag filter
178
+ if (options.tag?.length) {
179
+ const filterTags = new Set(options.tag);
180
+ sessions = sessions.filter((s) => s.tags?.some((t) => filterTags.has(t)));
181
+ }
182
+ if (sessions.length === 0) {
183
+ console.log('No sessions found in the specified period.');
184
+ process.exit(0);
185
+ }
186
+ let output;
187
+ if (options.format === 'json') {
188
+ output = JSON.stringify({
189
+ since: since.toISOString(),
190
+ total: sessions.length,
191
+ completed: sessions.filter((s) => s.status === 'completed').length,
192
+ failed: sessions.filter((s) => s.status === 'failed').length,
193
+ totalCost: sessions.reduce((sum, s) => sum + (s.usage?.totalCostUsd ?? 0), 0),
194
+ sessions: sessions.map((s) => ({
195
+ id: s.id.slice(0, 8),
196
+ status: s.status,
197
+ issueNumber: s.issueNumber,
198
+ cost: s.usage?.totalCostUsd ?? 0,
199
+ tags: s.tags,
200
+ })),
201
+ }, null, 2);
202
+ }
203
+ else if (options.format === 'markdown') {
204
+ output = generateMarkdownSummary(sessions, since);
205
+ }
206
+ else {
207
+ output = generateTextSummary(sessions, since);
208
+ }
209
+ if (options.output) {
210
+ await writeFile(options.output, output);
211
+ console.log(`Summary saved to ${options.output}`);
212
+ }
213
+ else {
214
+ console.log(output);
215
+ }
216
+ });
217
+ //# sourceMappingURL=summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.js","sourceRoot":"","sources":["../../src/commands/summary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAGzD,MAAM,UAAU,GAAG,aAAa,CAAC;AASjC,SAAS,iBAAiB,CAAC,KAAa;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IAEnC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;IACvB,MAAM,KAAK,GAA2B;QACpC,CAAC,EAAE,SAAS;QACZ,CAAC,EAAE,UAAU;QACb,CAAC,EAAE,WAAW;QACd,CAAC,EAAE,aAAa;KACjB,CAAC;IACF,OAAO,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,cAAc,CAAC,EAAU;IAChC,IAAI,EAAE,GAAG,MAAM;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;IACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;IACpC,IAAI,GAAG,GAAG,EAAE;QAAE,OAAO,GAAG,GAAG,GAAG,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;IACnC,OAAO,GAAG,KAAK,KAAK,GAAG,GAAG,EAAE,GAAG,CAAC;AAClC,CAAC;AAED,SAAS,mBAAmB,CAC1B,QAAmB,EACnB,KAAW;IAEX,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAE/D,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACZ,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;YAClC,UAAU,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;YAClC,WAAW,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;QACtC,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;QACrC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;QACxD,CAAC,CAAC,CAAC,CAAC;IAEN,MAAM,KAAK,GAAa;QACtB,6DAA6D;QAC7D,6DAA6D;QAC7D,6DAA6D;QAC7D,EAAE;QACF,2BAA2B,KAAK,CAAC,kBAAkB,EAAE,EAAE;QACvD,qBAAqB,QAAQ,CAAC,MAAM,EAAE;QACtC,oCAAoC,SAAS,CAAC,MAAM,EAAE;QACtD,oCAAoC,MAAM,CAAC,MAAM,EAAE;QACnD,oCAAoC,OAAO,CAAC,MAAM,EAAE;QACpD,qBAAqB,WAAW,GAAG;QACnC,EAAE;QACF,qCAAqC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAC3D,oCAAoC,UAAU,CAAC,cAAc,EAAE,SAAS,WAAW,CAAC,cAAc,EAAE,MAAM;KAC3G,CAAC;IAEF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,wBAAwB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,mBAAmB;IACnB,MAAM,MAAM,GAAG,QAAQ;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC;SACrC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACnC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,iBAAiB;IACjB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;YAC/B,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IACD,IAAI,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAC1B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,KAAK,aAAa,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,sCAAsC,CAAC,CAAC;QACvD,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACrE,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YACnE,MAAM,GAAG,GAAG,cAAc,CACxB,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAClE,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,mCAAmC,CAAC,CAAC;QACpD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACrE,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS;gBACrB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC1B,CAAC,CAAC,eAAe,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,MAAM,GAAG,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,uBAAuB,CAC9B,QAAmB,EACnB,KAAW;IAEX,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;IAE7D,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACZ,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;YAClC,UAAU,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;YAClC,WAAW,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;QACtC,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;QACrC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;QACxD,CAAC,CAAC,CAAC,CAAC;IAEN,IAAI,EAAE,GAAG,mCAAmC,CAAC;IAC7C,EAAE,IAAI,mBAAmB,KAAK,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAC1D,EAAE,IAAI,0CAA0C,CAAC;IACjD,EAAE,IAAI,sBAAsB,QAAQ,CAAC,MAAM,MAAM,CAAC;IAClD,EAAE,IAAI,iBAAiB,SAAS,CAAC,MAAM,MAAM,CAAC;IAC9C,EAAE,IAAI,cAAc,MAAM,CAAC,MAAM,MAAM,CAAC;IACxC,EAAE,IAAI,oBAAoB,WAAW,OAAO,CAAC;IAC7C,EAAE,IAAI,mBAAmB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IACpD,EAAE,IAAI,oBAAoB,UAAU,CAAC,cAAc,EAAE,SAAS,WAAW,CAAC,cAAc,EAAE,YAAY,CAAC;IAEvG,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,EAAE,IAAI,2BAA2B,CAAC;QAClC,EAAE,IAAI,4DAA4D,CAAC;QACnE,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACrE,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YACnE,MAAM,GAAG,GAAG,cAAc,CACxB,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAClE,CAAC;YACF,EAAE,IAAI,KAAK,KAAK,MAAM,IAAI,MAAM,GAAG,MAAM,CAAC;QAC5C,CAAC;QACD,EAAE,IAAI,IAAI,CAAC;IACb,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,EAAE,IAAI,wBAAwB,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACrE,EAAE,IAAI,OAAO,KAAK,OAAO,CAAC,CAAC,SAAS,IAAI,eAAe,IAAI,CAAC;QAC9D,CAAC;QACD,EAAE,IAAI,IAAI,CAAC;IACb,CAAC;IAED,EAAE,IAAI,kFAAkF,CAAC;IACzF,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;KACjD,WAAW,CAAC,4CAA4C,CAAC;KACzD,MAAM,CACL,kBAAkB,EAClB,uDAAuD,EACvD,KAAK,CACN;KACA,MAAM,CACL,uBAAuB,EACvB,qDAAqD,EACrD,MAAM,CACP;KACA,MAAM,CAAC,qBAAqB,EAAE,cAAc,CAAC;KAC7C,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;KAC3C,MAAM,CAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;IACxC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAExC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CACX,iEAAiE,CAClE,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACzD,IAAI,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC;IAE3C,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;IACxD,QAAQ,GAAG,QAAQ,CAAC,MAAM,CACxB,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,OAAO,EAAE,CAC1D,CAAC;IAEF,aAAa;IACb,IAAI,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACxC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CACxB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACtD,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,MAAc,CAAC;IAEnB,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC9B,MAAM,GAAG,IAAI,CAAC,SAAS,CACrB;YACE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE;YAC1B,KAAK,EAAE,QAAQ,CAAC,MAAM;YACtB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM;YAClE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM;YAC5D,SAAS,EAAE,QAAQ,CAAC,MAAM,CACxB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC,CAAC,EAAE,CAAC,CAClD;YACD,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC7B,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpB,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC;gBAChC,IAAI,EAAE,CAAC,CAAC,IAAI;aACb,CAAC,CAAC;SACJ,EACD,IAAI,EACJ,CAAC,CACF,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACzC,MAAM,GAAG,uBAAuB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;AACH,CAAC,CAAC,CAAC"}
package/dist/index.js CHANGED
@@ -17,6 +17,7 @@ import { startCommand } from './commands/start.js';
17
17
  import { statsCommand } from './commands/stats.js';
18
18
  import { statusCommand } from './commands/status.js';
19
19
  import { stopCommand } from './commands/stop.js';
20
+ import { summaryCommand } from './commands/summary.js';
20
21
  import { watchCommand } from './commands/watch.js';
21
22
  import { webCommand } from './commands/web.js';
22
23
  const require = createRequire(import.meta.url);
@@ -38,6 +39,7 @@ program.addCommand(chainCommand);
38
39
  program.addCommand(configCommand);
39
40
  program.addCommand(exportCommand);
40
41
  program.addCommand(prCommand);
42
+ program.addCommand(summaryCommand);
41
43
  program.addCommand(watchCommand);
42
44
  program.addCommand(webCommand);
43
45
  program.addCommand(listCommand);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAEtE,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,0FAA0F,CAAC;KACvG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACtC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC9B,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAElC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE;;;;;;;;mDAQsB,CAAC,CAAC;AAErD,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAEtE,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,0FAA0F,CAAC;KACvG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACtC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC9B,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAElC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE;;;;;;;;mDAQsB,CAAC,CAAC;AAErD,OAAO,CAAC,KAAK,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@claudetree/cli",
3
- "version": "0.10.0",
3
+ "version": "0.11.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,7 +36,7 @@
36
36
  "dependencies": {
37
37
  "async-mutex": "^0.5.0",
38
38
  "commander": "^14.0.3",
39
- "@claudetree/core": "0.7.0",
39
+ "@claudetree/core": "0.8.0",
40
40
  "@claudetree/shared": "0.7.0"
41
41
  },
42
42
  "devDependencies": {