@codemieai/code 0.4.0 → 0.4.2
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/agents/core/metrics/types.d.ts +3 -0
- package/dist/agents/core/metrics/types.d.ts.map +1 -1
- package/dist/agents/core/session/BaseSessionAdapter.d.ts +3 -0
- package/dist/agents/core/session/BaseSessionAdapter.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.session.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.session.js +8 -1
- package/dist/agents/plugins/claude/claude.session.js.map +1 -1
- package/dist/agents/plugins/claude/plugin/.claude-plugin/plugin.json +1 -1
- package/dist/agents/plugins/claude/plugin/skills/msgraph/SKILL.md +95 -8
- package/dist/agents/plugins/claude/plugin/skills/msgraph/scripts/msgraph.js +333 -2
- package/dist/agents/plugins/claude/session/claude-named-invocations.d.ts +28 -0
- package/dist/agents/plugins/claude/session/claude-named-invocations.d.ts.map +1 -0
- package/dist/agents/plugins/claude/session/claude-named-invocations.js +78 -0
- package/dist/agents/plugins/claude/session/claude-named-invocations.js.map +1 -0
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.d.ts.map +1 -1
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js +10 -1
- package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js.map +1 -1
- package/dist/cli/commands/analytics/aggregator.d.ts +14 -0
- package/dist/cli/commands/analytics/aggregator.d.ts.map +1 -1
- package/dist/cli/commands/analytics/aggregator.js +81 -1
- package/dist/cli/commands/analytics/aggregator.js.map +1 -1
- package/dist/cli/commands/analytics/cost/cost-calculator.d.ts +10 -0
- package/dist/cli/commands/analytics/cost/cost-calculator.d.ts.map +1 -1
- package/dist/cli/commands/analytics/cost/cost-calculator.js +9 -5
- package/dist/cli/commands/analytics/cost/cost-calculator.js.map +1 -1
- package/dist/cli/commands/analytics/cost/cost-enricher.d.ts +9 -1
- package/dist/cli/commands/analytics/cost/cost-enricher.d.ts.map +1 -1
- package/dist/cli/commands/analytics/cost/cost-enricher.js +75 -7
- package/dist/cli/commands/analytics/cost/cost-enricher.js.map +1 -1
- package/dist/cli/commands/analytics/cost/dispatch-extractor.d.ts +17 -0
- package/dist/cli/commands/analytics/cost/dispatch-extractor.d.ts.map +1 -0
- package/dist/cli/commands/analytics/cost/dispatch-extractor.js +76 -0
- package/dist/cli/commands/analytics/cost/dispatch-extractor.js.map +1 -0
- package/dist/cli/commands/analytics/cost/types.d.ts +20 -0
- package/dist/cli/commands/analytics/cost/types.d.ts.map +1 -1
- package/dist/cli/commands/analytics/cost/types.js +4 -1
- package/dist/cli/commands/analytics/cost/types.js.map +1 -1
- package/dist/cli/commands/analytics/cost/usage-readers.d.ts +12 -0
- package/dist/cli/commands/analytics/cost/usage-readers.d.ts.map +1 -1
- package/dist/cli/commands/analytics/cost/usage-readers.js +38 -0
- package/dist/cli/commands/analytics/cost/usage-readers.js.map +1 -1
- package/dist/cli/commands/analytics/exporter.d.ts.map +1 -1
- package/dist/cli/commands/analytics/exporter.js +2 -2
- package/dist/cli/commands/analytics/exporter.js.map +1 -1
- package/dist/cli/commands/analytics/index.d.ts.map +1 -1
- package/dist/cli/commands/analytics/index.js +18 -3
- package/dist/cli/commands/analytics/index.js.map +1 -1
- package/dist/cli/commands/analytics/native-loader.d.ts.map +1 -1
- package/dist/cli/commands/analytics/native-loader.js +35 -0
- package/dist/cli/commands/analytics/native-loader.js.map +1 -1
- package/dist/cli/commands/analytics/report/client/app.js +531 -12
- package/dist/cli/commands/analytics/report/payload-builder.d.ts.map +1 -1
- package/dist/cli/commands/analytics/report/payload-builder.js +13 -0
- package/dist/cli/commands/analytics/report/payload-builder.js.map +1 -1
- package/dist/cli/commands/analytics/report/report-generator.d.ts +21 -0
- package/dist/cli/commands/analytics/report/report-generator.d.ts.map +1 -1
- package/dist/cli/commands/analytics/report/report-generator.js +48 -4
- package/dist/cli/commands/analytics/report/report-generator.js.map +1 -1
- package/dist/cli/commands/analytics/report/template.html +84 -8
- package/dist/cli/commands/analytics/report/types.d.ts +13 -2
- package/dist/cli/commands/analytics/report/types.d.ts.map +1 -1
- package/dist/cli/commands/analytics/types.d.ts +18 -0
- package/dist/cli/commands/analytics/types.d.ts.map +1 -1
- package/dist/migrations/004-skills-assistants-top-level.migration.d.ts.map +1 -1
- package/dist/migrations/004-skills-assistants-top-level.migration.js +8 -5
- package/dist/migrations/004-skills-assistants-top-level.migration.js.map +1 -1
- package/dist/migrations/005-skill-slug-format.migration.d.ts.map +1 -1
- package/dist/migrations/005-skill-slug-format.migration.js +14 -11
- package/dist/migrations/005-skill-slug-format.migration.js.map +1 -1
- package/dist/providers/plugins/sso/session/processors/conversations/constants.d.ts +1 -1
- package/dist/providers/plugins/sso/session/processors/conversations/constants.js +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payload-builder.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/report/payload-builder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAiB,MAAM,kBAAkB,CAAC;AAErF,OAAO,KAAK,EAAE,aAAa,EAAmC,MAAM,YAAY,CAAC;AAEjF,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,cAAc,GAClB,aAAa,
|
|
1
|
+
{"version":3,"file":"payload-builder.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/report/payload-builder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAiB,MAAM,kBAAkB,CAAC;AAErF,OAAO,KAAK,EAAE,aAAa,EAAmC,MAAM,YAAY,CAAC;AAEjF,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,cAAc,GAClB,aAAa,CAoHf"}
|
|
@@ -36,6 +36,7 @@ export function buildPayload(root, costIndex, summary, ctx) {
|
|
|
36
36
|
sessionId: s.sessionId,
|
|
37
37
|
agentName: s.agentName,
|
|
38
38
|
provider: s.provider,
|
|
39
|
+
title: s.title ?? '',
|
|
39
40
|
project: project.projectPath,
|
|
40
41
|
// The session's dominant branch — so a session that touched several branches is
|
|
41
42
|
// attributed to where it did the most work, not whichever branch iterates first.
|
|
@@ -48,6 +49,9 @@ export function buildPayload(root, costIndex, summary, ctx) {
|
|
|
48
49
|
linesRemoved: s.totalLinesRemoved,
|
|
49
50
|
linesModified: s.totalLinesModified,
|
|
50
51
|
netLines: s.netLinesChanged,
|
|
52
|
+
filesChanged: s.filesChanged ?? 0,
|
|
53
|
+
filesWritten: s.filesWritten ?? 0,
|
|
54
|
+
filesEdited: s.filesEdited ?? 0,
|
|
51
55
|
toolCallsTotal: s.totalToolCalls,
|
|
52
56
|
toolCallsSuccess: s.successfulToolCalls,
|
|
53
57
|
toolCallsFailure: s.failedToolCalls,
|
|
@@ -56,7 +60,13 @@ export function buildPayload(root, costIndex, summary, ctx) {
|
|
|
56
60
|
tools: s.tools,
|
|
57
61
|
tokens: cost?.tokens ?? emptyUsage(),
|
|
58
62
|
costUSD: cost?.costUSD ?? 0,
|
|
63
|
+
cacheReadCostUSD: cost?.cacheReadCostUSD ?? 0,
|
|
59
64
|
perModelCost: cost?.perModel ?? [],
|
|
65
|
+
...(cost?.costSeries && cost.costSeries.length ? { costSeries: cost.costSeries } : {}),
|
|
66
|
+
...(cost?.dispatches && cost.dispatches.length ? { dispatches: cost.dispatches } : {}),
|
|
67
|
+
skillInvocations: s.skillInvocations ?? [],
|
|
68
|
+
agentInvocations: s.agentInvocations ?? [],
|
|
69
|
+
commandInvocations: s.commandInvocations ?? [],
|
|
60
70
|
});
|
|
61
71
|
}
|
|
62
72
|
}
|
|
@@ -70,6 +80,7 @@ export function buildPayload(root, costIndex, summary, ctx) {
|
|
|
70
80
|
let toolCallsTotal = 0;
|
|
71
81
|
let toolCallsSuccess = 0;
|
|
72
82
|
let totalCostUSD = 0;
|
|
83
|
+
let cacheReadCostUSD = 0;
|
|
73
84
|
let pricedSessions = 0;
|
|
74
85
|
for (const r of sessions) {
|
|
75
86
|
durationMs += r.durationMs;
|
|
@@ -79,6 +90,7 @@ export function buildPayload(root, costIndex, summary, ctx) {
|
|
|
79
90
|
toolCallsTotal += r.toolCallsTotal;
|
|
80
91
|
toolCallsSuccess += r.toolCallsSuccess;
|
|
81
92
|
totalCostUSD += r.costUSD;
|
|
93
|
+
cacheReadCostUSD += r.cacheReadCostUSD;
|
|
82
94
|
if (costIndex.get(r.sessionId)?.priced) {
|
|
83
95
|
pricedSessions += 1;
|
|
84
96
|
}
|
|
@@ -97,6 +109,7 @@ export function buildPayload(root, costIndex, summary, ctx) {
|
|
|
97
109
|
toolCallsTotal,
|
|
98
110
|
toolSuccessRate: toolCallsTotal ? Math.round((toolCallsSuccess / toolCallsTotal) * 1000) / 10 : 0,
|
|
99
111
|
totalCostUSD,
|
|
112
|
+
cacheReadCostUSD,
|
|
100
113
|
pricedSessions,
|
|
101
114
|
},
|
|
102
115
|
unpricedModels: summary.unpricedModels,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payload-builder.js","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/report/payload-builder.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"payload-builder.js","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/report/payload-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,4 +23,25 @@ export declare function generateReport(payload: ReportPayload, outputPath: strin
|
|
|
23
23
|
export declare function generateReportJson(payload: ReportPayload, outputPath: string): void;
|
|
24
24
|
export declare function getDefaultReportPath(cwd: string): string;
|
|
25
25
|
export declare function getDefaultReportJsonPath(cwd: string): string;
|
|
26
|
+
/**
|
|
27
|
+
* Permission / read-only fs errors that a *different output directory* can resolve.
|
|
28
|
+
* Seen when the report defaults to a cwd that is a drive root (Windows `D:\`) or a
|
|
29
|
+
* read-only / write-protected volume (removable, network, BitLocker-locked, etc.).
|
|
30
|
+
*/
|
|
31
|
+
export declare function isUnwritableLocationError(err: unknown): boolean;
|
|
32
|
+
/** Result of {@link writeReportWithFallback}: where the file actually landed. */
|
|
33
|
+
export interface ReportWriteResult {
|
|
34
|
+
/** The path the report was finally written to. */
|
|
35
|
+
path: string;
|
|
36
|
+
/** Set only when the preferred path was unwritable and we relocated. */
|
|
37
|
+
relocatedFrom?: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Writes a report via `write(path)`. If the preferred location is unwritable
|
|
41
|
+
* (drive root, read-only volume) AND `allowFallback` is true, retries the same
|
|
42
|
+
* filename under the user's home dir, then the OS temp dir, and reports where it
|
|
43
|
+
* landed. With `allowFallback` false (an explicit `--report-output`) or for any
|
|
44
|
+
* non-permission error, the original error propagates unchanged.
|
|
45
|
+
*/
|
|
46
|
+
export declare function writeReportWithFallback(write: (path: string) => void, preferredPath: string, allowFallback: boolean): ReportWriteResult;
|
|
26
47
|
//# sourceMappingURL=report-generator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report-generator.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/report/report-generator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"report-generator.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/report/report-generator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhD,uDAAuD;AACvD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,CAkBT;AAED,sFAAsF;AACtF,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAQ/E;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAGnF;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK5D;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAG/D;AAED,iFAAiF;AACjF,MAAM,WAAW,iBAAiB;IAChC,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC7B,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,OAAO,GACrB,iBAAiB,CAmBnB"}
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
* the analytics payload as valid JS, and inline the client app. No server, no
|
|
4
4
|
* external data files — the result opens anywhere.
|
|
5
5
|
*/
|
|
6
|
-
import { readFileSync, writeFileSync } from 'node:fs';
|
|
7
|
-
import {
|
|
6
|
+
import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
7
|
+
import { homedir, tmpdir } from 'node:os';
|
|
8
|
+
import { basename, dirname, join } from 'node:path';
|
|
8
9
|
import { getDirname } from '../../../../utils/paths.js';
|
|
9
10
|
const HERE = getDirname(import.meta.url); // dist/.../analytics/report at runtime
|
|
10
11
|
/** Pure string assembly — unit-testable without fs. */
|
|
@@ -34,6 +35,7 @@ export function generateReport(payload, outputPath) {
|
|
|
34
35
|
const chartJs = readFileSync(join(HERE, 'assets', 'chart.umd.js'), 'utf-8');
|
|
35
36
|
const clientJs = readFileSync(join(HERE, 'client', 'app.js'), 'utf-8');
|
|
36
37
|
const html = renderReportHtml({ template, css, chartJs, clientJs, payload });
|
|
38
|
+
mkdirSync(dirname(outputPath), { recursive: true });
|
|
37
39
|
writeFileSync(outputPath, html, 'utf-8');
|
|
38
40
|
}
|
|
39
41
|
/**
|
|
@@ -43,16 +45,58 @@ export function generateReport(payload, outputPath) {
|
|
|
43
45
|
* only and must NOT be applied to a .json file on disk.
|
|
44
46
|
*/
|
|
45
47
|
export function generateReportJson(payload, outputPath) {
|
|
48
|
+
mkdirSync(dirname(outputPath), { recursive: true });
|
|
46
49
|
writeFileSync(outputPath, JSON.stringify(payload, null, 2), 'utf-8');
|
|
47
50
|
}
|
|
48
51
|
export function getDefaultReportPath(cwd) {
|
|
49
52
|
const date = new Date().toISOString().split('T')[0];
|
|
50
|
-
return
|
|
53
|
+
return join(cwd, `codemie-analytics-${date}.html`);
|
|
51
54
|
}
|
|
52
55
|
export function getDefaultReportJsonPath(cwd) {
|
|
53
56
|
const date = new Date().toISOString().split('T')[0];
|
|
54
57
|
// `.report.json` (not `.json`) so the default never collides with `--export json`,
|
|
55
58
|
// which writes the cost-less analytics tree to `codemie-analytics-<date>.json`.
|
|
56
|
-
return
|
|
59
|
+
return join(cwd, `codemie-analytics-${date}.report.json`);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Permission / read-only fs errors that a *different output directory* can resolve.
|
|
63
|
+
* Seen when the report defaults to a cwd that is a drive root (Windows `D:\`) or a
|
|
64
|
+
* read-only / write-protected volume (removable, network, BitLocker-locked, etc.).
|
|
65
|
+
*/
|
|
66
|
+
export function isUnwritableLocationError(err) {
|
|
67
|
+
const code = err?.code;
|
|
68
|
+
return code === 'EPERM' || code === 'EACCES' || code === 'EROFS';
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Writes a report via `write(path)`. If the preferred location is unwritable
|
|
72
|
+
* (drive root, read-only volume) AND `allowFallback` is true, retries the same
|
|
73
|
+
* filename under the user's home dir, then the OS temp dir, and reports where it
|
|
74
|
+
* landed. With `allowFallback` false (an explicit `--report-output`) or for any
|
|
75
|
+
* non-permission error, the original error propagates unchanged.
|
|
76
|
+
*/
|
|
77
|
+
export function writeReportWithFallback(write, preferredPath, allowFallback) {
|
|
78
|
+
try {
|
|
79
|
+
write(preferredPath);
|
|
80
|
+
return { path: preferredPath };
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
if (!allowFallback || !isUnwritableLocationError(err))
|
|
84
|
+
throw err;
|
|
85
|
+
const name = basename(preferredPath);
|
|
86
|
+
for (const dir of [homedir(), tmpdir()]) {
|
|
87
|
+
const candidate = join(dir, name);
|
|
88
|
+
if (candidate === preferredPath)
|
|
89
|
+
continue;
|
|
90
|
+
try {
|
|
91
|
+
write(candidate);
|
|
92
|
+
return { path: candidate, relocatedFrom: preferredPath };
|
|
93
|
+
}
|
|
94
|
+
catch (inner) {
|
|
95
|
+
if (!isUnwritableLocationError(inner))
|
|
96
|
+
throw inner;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
throw err;
|
|
100
|
+
}
|
|
57
101
|
}
|
|
58
102
|
//# sourceMappingURL=report-generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report-generator.js","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/report/report-generator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"report-generator.js","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/report/report-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,7 +56,8 @@
|
|
|
56
56
|
.nav-i { display: flex; align-items: center; gap: 10px; padding: 7px 10px; border-radius: 8px; color: var(--color-text-muted); font-size: 13.5px; cursor: pointer; user-select: none; }
|
|
57
57
|
.nav-i:hover { background: var(--color-bg-tertiary); color: var(--color-text-primary); }
|
|
58
58
|
.nav-i.active { background: var(--color-bg-tertiary); color: var(--color-text-primary); font-weight: 600; }
|
|
59
|
-
.nav-i .ic { width: 16px;
|
|
59
|
+
.nav-i .ic { width: 16px; height: 16px; display: inline-flex; align-items: center; justify-content: center; opacity: .85; flex-shrink: 0; }
|
|
60
|
+
.nav-i .ic svg { width: 15px; height: 15px; display: block; }
|
|
60
61
|
.nav-i .lock { margin-left: auto; }
|
|
61
62
|
.side-foot { margin-top: auto; font-size: 11px; color: var(--color-text-muted); padding: 10px 8px 4px; line-height: 1.5; }
|
|
62
63
|
|
|
@@ -122,7 +123,81 @@
|
|
|
122
123
|
.empty { color: var(--color-text-muted); padding: 40px; text-align: center; }
|
|
123
124
|
.search-input { width: 280px; }
|
|
124
125
|
.clickable { cursor: pointer; }
|
|
126
|
+
.btn-open { background: var(--color-bg-btn-primary, #20222e); color: var(--color-primary, #7C5CFC); border: none; border-radius: 4px; padding: 2px 8px; font-size: 11px; cursor: pointer; white-space: nowrap; }
|
|
127
|
+
.btn-open:hover { background: var(--color-bg-btn-primary-h, #262941); }
|
|
128
|
+
.proj-link { color: var(--color-primary, #7C5CFC); cursor: pointer; text-decoration: underline; text-underline-offset: 2px; }
|
|
125
129
|
.drill { background: var(--color-bg-secondary); }
|
|
130
|
+
/* back affordance shown in the session modal when reached from the project sessions list */
|
|
131
|
+
.modal-back { background: transparent; border: none; color: var(--color-primary, #7C5CFC); cursor: pointer; font-size: 12px; padding: 0; margin: 0 0 6px; }
|
|
132
|
+
.modal-back:hover { text-decoration: underline; }
|
|
133
|
+
/* project sessions modal table — let the Session column absorb width and wrap, while the
|
|
134
|
+
metric columns size to their content. Prevents the table from forcing horizontal scroll. */
|
|
135
|
+
.proj-sessions .table td:not(:first-child), .proj-sessions .table th:not(:first-child) { white-space: nowrap; width: 1%; }
|
|
136
|
+
.proj-sessions .table td:first-child { white-space: normal; word-break: break-word; }
|
|
137
|
+
|
|
138
|
+
/* session-detail modal */
|
|
139
|
+
.modal-overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.62); backdrop-filter: blur(4px); display: flex; align-items: center; justify-content: center; z-index: var(--z-modal, 50); padding: 24px; }
|
|
140
|
+
.modal { background: var(--color-bg-card); border: 1px solid var(--color-border-structural); border-radius: var(--radius-xl, 12px); box-shadow: var(--shadow-lg); width: 100%; max-width: 880px; max-height: 88vh; display: flex; flex-direction: column; overflow: hidden; }
|
|
141
|
+
.modal-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 16px 20px; border-bottom: 1px solid var(--color-border-structural); }
|
|
142
|
+
.modal-title { font-size: 15px; font-weight: 700; color: var(--color-text-primary); margin: 0 0 3px; }
|
|
143
|
+
.modal-meta { font-size: 12px; color: var(--color-text-muted); text-transform: capitalize; }
|
|
144
|
+
.modal-close { background: transparent; border: 1px solid var(--color-border-structural); color: var(--color-text-muted); border-radius: 8px; height: 30px; width: 30px; cursor: pointer; font-size: 12px; flex-shrink: 0; }
|
|
145
|
+
.modal-close:hover { color: var(--color-text-primary); background: var(--color-bg-tertiary); }
|
|
146
|
+
.modal-body { padding: 18px 20px; overflow-y: auto; }
|
|
147
|
+
.modal-body .card { margin-bottom: 14px; }
|
|
148
|
+
/* light, borderless stat grid (replaces the heavy box-in-box KPIs) */
|
|
149
|
+
.modal-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(96px, 1fr)); gap: 14px 16px; }
|
|
150
|
+
.mstat .mlabel { font-size: 10px; text-transform: uppercase; letter-spacing: .05em; color: var(--color-text-muted); margin-bottom: 3px; white-space: nowrap; }
|
|
151
|
+
.mstat .mval { font-size: 18px; font-weight: 700; color: var(--color-text-primary); white-space: nowrap; line-height: 1.2; }
|
|
152
|
+
.mstat .mval-sm { font-size: 13px; font-weight: 600; }
|
|
153
|
+
.mstat .msub { font-size: 11px; color: var(--color-text-muted); margin-top: 2px; }
|
|
154
|
+
.modal-chips { display: flex; flex-wrap: wrap; gap: 6px; }
|
|
155
|
+
.modal-chips .chip { background: var(--color-bg-tertiary); border-radius: 999px; padding: 3px 10px; font-size: 12px; color: var(--color-text-primary); }
|
|
156
|
+
.modal-chips .chip b { color: var(--color-text-muted); font-weight: 600; margin-left: 3px; }
|
|
157
|
+
.dispatch-cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 18px; }
|
|
158
|
+
.dispatch-col h4 { font-size: 11px; text-transform: uppercase; letter-spacing: .04em; color: var(--color-text-muted); margin: 0 0 8px; }
|
|
159
|
+
.grid-3 { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 14px; align-items: stretch; }
|
|
160
|
+
/* dispatch timeline (Gantt) */
|
|
161
|
+
.timeline { display: flex; flex-direction: column; gap: 6px; }
|
|
162
|
+
.tl-row { display: flex; align-items: center; gap: 12px; }
|
|
163
|
+
.tl-label { width: 168px; flex-shrink: 0; font-size: 12px; color: var(--color-text-primary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
164
|
+
.tl-label-strong { font-weight: 700; }
|
|
165
|
+
.tl-track { position: relative; flex: 1; height: 22px; background: var(--color-bg-tertiary); border-radius: 5px; overflow: hidden; }
|
|
166
|
+
.tl-bar { position: absolute; top: 0; height: 100%; min-width: 3px; border-radius: 5px; display: flex; align-items: center; padding: 0 8px; box-sizing: border-box; }
|
|
167
|
+
.tl-bar-text { font-size: 10.5px; color: #fff; font-variant-numeric: tabular-nums; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-weight: 600; }
|
|
168
|
+
.tl-dur { width: 58px; flex-shrink: 0; text-align: right; font-size: 11px; color: var(--color-text-muted); font-variant-numeric: tabular-nums; }
|
|
169
|
+
|
|
170
|
+
/* session-detail modal */
|
|
171
|
+
.modal-overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.62); backdrop-filter: blur(4px); display: flex; align-items: center; justify-content: center; z-index: var(--z-modal, 50); padding: 24px; }
|
|
172
|
+
.modal { background: var(--color-bg-card); border: 1px solid var(--color-border-structural); border-radius: var(--radius-xl, 12px); box-shadow: var(--shadow-lg); width: 100%; max-width: 880px; max-height: 88vh; display: flex; flex-direction: column; overflow: hidden; }
|
|
173
|
+
.modal-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 16px 20px; border-bottom: 1px solid var(--color-border-structural); }
|
|
174
|
+
.modal-title { font-size: 15px; font-weight: 700; color: var(--color-text-primary); margin: 0 0 3px; }
|
|
175
|
+
.modal-meta { font-size: 12px; color: var(--color-text-muted); text-transform: capitalize; }
|
|
176
|
+
.modal-close { background: transparent; border: 1px solid var(--color-border-structural); color: var(--color-text-muted); border-radius: 8px; height: 30px; width: 30px; cursor: pointer; font-size: 12px; flex-shrink: 0; }
|
|
177
|
+
.modal-close:hover { color: var(--color-text-primary); background: var(--color-bg-tertiary); }
|
|
178
|
+
.modal-body { padding: 18px 20px; overflow-y: auto; }
|
|
179
|
+
.modal-body .card { margin-bottom: 14px; }
|
|
180
|
+
/* light, borderless stat grid (replaces the heavy box-in-box KPIs) */
|
|
181
|
+
.modal-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(96px, 1fr)); gap: 14px 16px; }
|
|
182
|
+
.mstat .mlabel { font-size: 10px; text-transform: uppercase; letter-spacing: .05em; color: var(--color-text-muted); margin-bottom: 3px; white-space: nowrap; }
|
|
183
|
+
.mstat .mval { font-size: 18px; font-weight: 700; color: var(--color-text-primary); white-space: nowrap; line-height: 1.2; }
|
|
184
|
+
.mstat .mval-sm { font-size: 13px; font-weight: 600; }
|
|
185
|
+
.mstat .msub { font-size: 11px; color: var(--color-text-muted); margin-top: 2px; }
|
|
186
|
+
.modal-chips { display: flex; flex-wrap: wrap; gap: 6px; }
|
|
187
|
+
.modal-chips .chip { background: var(--color-bg-tertiary); border-radius: 999px; padding: 3px 10px; font-size: 12px; color: var(--color-text-primary); }
|
|
188
|
+
.modal-chips .chip b { color: var(--color-text-muted); font-weight: 600; margin-left: 3px; }
|
|
189
|
+
.dispatch-cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 18px; }
|
|
190
|
+
.dispatch-col h4 { font-size: 11px; text-transform: uppercase; letter-spacing: .04em; color: var(--color-text-muted); margin: 0 0 8px; }
|
|
191
|
+
.grid-3 { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 14px; align-items: stretch; }
|
|
192
|
+
/* dispatch timeline (Gantt) */
|
|
193
|
+
.timeline { display: flex; flex-direction: column; gap: 6px; }
|
|
194
|
+
.tl-row { display: flex; align-items: center; gap: 12px; }
|
|
195
|
+
.tl-label { width: 168px; flex-shrink: 0; font-size: 12px; color: var(--color-text-primary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
196
|
+
.tl-label-strong { font-weight: 700; }
|
|
197
|
+
.tl-track { position: relative; flex: 1; height: 22px; background: var(--color-bg-tertiary); border-radius: 5px; overflow: hidden; }
|
|
198
|
+
.tl-bar { position: absolute; top: 0; height: 100%; min-width: 3px; border-radius: 5px; display: flex; align-items: center; padding: 0 8px; box-sizing: border-box; }
|
|
199
|
+
.tl-bar-text { font-size: 10.5px; color: #fff; font-variant-numeric: tabular-nums; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-weight: 600; }
|
|
200
|
+
.tl-dur { width: 58px; flex-shrink: 0; text-align: right; font-size: 11px; color: var(--color-text-muted); font-variant-numeric: tabular-nums; }
|
|
126
201
|
|
|
127
202
|
/* table alignment — the design-system `.table thead tr th` (text-align:left, higher
|
|
128
203
|
specificity) was overriding `.td-number` on numeric <th>, so numeric headers stayed
|
|
@@ -166,15 +241,16 @@
|
|
|
166
241
|
<aside class="side">
|
|
167
242
|
<div class="brand"><div class="logo">C</div><div style="font-weight:700;font-size:15px;">Analytics</div></div>
|
|
168
243
|
<div class="nav-group">Insights</div>
|
|
169
|
-
<div class="nav-i" data-view="overview"><span class="ic"
|
|
170
|
-
<div class="nav-i" data-view="agents"><span class="ic"
|
|
171
|
-
<div class="nav-i" data-view="projects"><span class="ic"
|
|
172
|
-
<div class="nav-i" data-view="toolsmodels"><span class="ic"
|
|
173
|
-
<div class="nav-i" data-view="activity"><span class="ic"
|
|
244
|
+
<div class="nav-i" data-view="overview"><span class="ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/></svg></span>Overview</div>
|
|
245
|
+
<div class="nav-i" data-view="agents"><span class="ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="6" y1="20" x2="6" y2="14"/><line x1="12" y1="20" x2="12" y2="4"/><line x1="18" y1="20" x2="18" y2="10"/></svg></span>Agents · Compare</div>
|
|
246
|
+
<div class="nav-i" data-view="projects"><span class="ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/></svg></span>Projects</div>
|
|
247
|
+
<div class="nav-i" data-view="toolsmodels"><span class="ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="4" y1="21" x2="4" y2="14"/><line x1="4" y1="10" x2="4" y2="3"/><line x1="12" y1="21" x2="12" y2="12"/><line x1="12" y1="8" x2="12" y2="3"/><line x1="20" y1="21" x2="20" y2="16"/><line x1="20" y1="12" x2="20" y2="3"/><line x1="1" y1="14" x2="7" y2="14"/><line x1="9" y1="8" x2="15" y2="8"/><line x1="17" y1="16" x2="23" y2="16"/></svg></span>Tools & Models</div>
|
|
248
|
+
<div class="nav-i" data-view="activity"><span class="ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"/></svg></span>Activity</div>
|
|
249
|
+
<div class="nav-i" data-view="efficiency"><span class="ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/></svg></span>Efficiency</div>
|
|
174
250
|
<div class="nav-group">Spend</div>
|
|
175
|
-
<div class="nav-i" data-view="cost"><span class="ic"
|
|
251
|
+
<div class="nav-i" data-view="cost"><span class="ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="1" x2="12" y2="23"/><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/></svg></span>Cost</div>
|
|
176
252
|
<div class="nav-group">Raw</div>
|
|
177
|
-
<div class="nav-i" data-view="sessions"><span class="ic"
|
|
253
|
+
<div class="nav-i" data-view="sessions"><span class="ic"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="8" y1="6" x2="21" y2="6"/><line x1="8" y1="12" x2="21" y2="12"/><line x1="8" y1="18" x2="21" y2="18"/><line x1="3" y1="6" x2="3.01" y2="6"/><line x1="3" y1="12" x2="3.01" y2="12"/><line x1="3" y1="18" x2="3.01" y2="18"/></svg></span>Sessions</div>
|
|
178
254
|
<div class="side-foot" id="side-foot"></div>
|
|
179
255
|
<div class="theme-switch" id="theme-switch" role="button" tabindex="0" aria-label="Toggle light and dark theme" title="Toggle light / dark theme">
|
|
180
256
|
<span class="ts-track"><span class="ts-thumb"></span></span>
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* The embedded report payload — the single data object baked into the HTML
|
|
3
3
|
* report. The client app reads only this and computes every view from it.
|
|
4
4
|
*/
|
|
5
|
-
import type { TokenUsage, ModelCost, AgentCoverage } from '../cost/types.js';
|
|
6
|
-
import type { ToolStats } from '../types.js';
|
|
5
|
+
import type { TokenUsage, ModelCost, AgentCoverage, CostSeriesPoint, DispatchEvent } from '../cost/types.js';
|
|
6
|
+
import type { ToolStats, NamedInvocationStats } from '../types.js';
|
|
7
7
|
/** One flat record per session — the client aggregates everything from these. */
|
|
8
8
|
export interface ReportSessionRecord {
|
|
9
9
|
sessionId: string;
|
|
@@ -11,6 +11,7 @@ export interface ReportSessionRecord {
|
|
|
11
11
|
provider: string;
|
|
12
12
|
project: string;
|
|
13
13
|
branch: string;
|
|
14
|
+
title: string;
|
|
14
15
|
startTime: number;
|
|
15
16
|
durationMs: number;
|
|
16
17
|
turns: number;
|
|
@@ -19,15 +20,24 @@ export interface ReportSessionRecord {
|
|
|
19
20
|
linesRemoved: number;
|
|
20
21
|
linesModified: number;
|
|
21
22
|
netLines: number;
|
|
23
|
+
filesChanged: number;
|
|
24
|
+
filesWritten: number;
|
|
25
|
+
filesEdited: number;
|
|
22
26
|
toolCallsTotal: number;
|
|
23
27
|
toolCallsSuccess: number;
|
|
24
28
|
toolCallsFailure: number;
|
|
25
29
|
models: string[];
|
|
26
30
|
languages: string[];
|
|
27
31
|
tools: ToolStats[];
|
|
32
|
+
skillInvocations: NamedInvocationStats[];
|
|
33
|
+
agentInvocations: NamedInvocationStats[];
|
|
34
|
+
commandInvocations: NamedInvocationStats[];
|
|
28
35
|
tokens: TokenUsage;
|
|
29
36
|
costUSD: number;
|
|
37
|
+
cacheReadCostUSD: number;
|
|
30
38
|
perModelCost: ModelCost[];
|
|
39
|
+
costSeries?: CostSeriesPoint[];
|
|
40
|
+
dispatches?: DispatchEvent[];
|
|
31
41
|
}
|
|
32
42
|
export interface ReportMeta {
|
|
33
43
|
generatedAt: string;
|
|
@@ -43,6 +53,7 @@ export interface ReportMeta {
|
|
|
43
53
|
toolCallsTotal: number;
|
|
44
54
|
toolSuccessRate: number;
|
|
45
55
|
totalCostUSD: number;
|
|
56
|
+
cacheReadCostUSD: number;
|
|
46
57
|
pricedSessions: number;
|
|
47
58
|
};
|
|
48
59
|
unpricedModels: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/report/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/analytics/report/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC7G,OAAO,KAAK,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnE,iFAAiF;AACjF,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,gBAAgB,EAAE,oBAAoB,EAAE,CAAC;IACzC,gBAAgB,EAAE,oBAAoB,EAAE,CAAC;IACzC,kBAAkB,EAAE,oBAAoB,EAAE,CAAC;IAC3C,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,SAAS,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC"}
|
|
@@ -25,6 +25,16 @@ export interface ToolStats {
|
|
|
25
25
|
failureCount: number;
|
|
26
26
|
successRate: number;
|
|
27
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Named invocation statistics — skill names, agent subtypes, or slash commands.
|
|
30
|
+
* successCount equals totalCalls because MetricDelta does not track per-name failures.
|
|
31
|
+
*/
|
|
32
|
+
export interface NamedInvocationStats {
|
|
33
|
+
name: string;
|
|
34
|
+
totalCalls: number;
|
|
35
|
+
successCount: number;
|
|
36
|
+
failureCount: number;
|
|
37
|
+
}
|
|
28
38
|
/**
|
|
29
39
|
* Language/Format statistics
|
|
30
40
|
*/
|
|
@@ -57,6 +67,8 @@ export interface SessionAnalytics {
|
|
|
57
67
|
agentName: string;
|
|
58
68
|
provider: string;
|
|
59
69
|
workingDirectory: string;
|
|
70
|
+
/** Human-readable session title — the first user prompt, with command/system XML stripped. Empty when no prompt was captured. */
|
|
71
|
+
title: string;
|
|
60
72
|
/** The branch the session did the most work on (modal of its deltas' gitBranch). */
|
|
61
73
|
primaryBranch: string;
|
|
62
74
|
startTime: number;
|
|
@@ -68,6 +80,9 @@ export interface SessionAnalytics {
|
|
|
68
80
|
totalLinesRemoved: number;
|
|
69
81
|
totalLinesModified: number;
|
|
70
82
|
netLinesChanged: number;
|
|
83
|
+
filesChanged: number;
|
|
84
|
+
filesWritten: number;
|
|
85
|
+
filesEdited: number;
|
|
71
86
|
totalToolCalls: number;
|
|
72
87
|
successfulToolCalls: number;
|
|
73
88
|
failedToolCalls: number;
|
|
@@ -77,6 +92,9 @@ export interface SessionAnalytics {
|
|
|
77
92
|
files: FileOperationSummary[];
|
|
78
93
|
languages: LanguageStats[];
|
|
79
94
|
formats: LanguageStats[];
|
|
95
|
+
skillInvocations: NamedInvocationStats[];
|
|
96
|
+
agentInvocations: NamedInvocationStats[];
|
|
97
|
+
commandInvocations: NamedInvocationStats[];
|
|
80
98
|
tokens?: import('./cost/types.js').TokenUsage;
|
|
81
99
|
costUSD?: number;
|
|
82
100
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/analytics/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,aAAa,EACb,UAAU,EACX,MAAM,uCAAuC,CAAC;AAG/C,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,iBAAiB,EAAE,UAAU,CAAC;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,oFAAoF;IACpF,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IAGjB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/analytics/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"004-skills-assistants-top-level.migration.d.ts","sourceRoot":"","sources":["../../src/migrations/004-skills-assistants-top-level.migration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7D,OAAO,KAAK,EAAE,mBAAmB,EAAmD,MAAM,iBAAiB,CAAC;AAE5G,cAAM,iCAAkC,YAAW,SAAS;IAC1D,EAAE,SAAqC;IACvC,WAAW,SAAqF;IAE1F,EAAE,IAAI,OAAO,CAAC,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"004-skills-assistants-top-level.migration.d.ts","sourceRoot":"","sources":["../../src/migrations/004-skills-assistants-top-level.migration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7D,OAAO,KAAK,EAAE,mBAAmB,EAAmD,MAAM,iBAAiB,CAAC;AAE5G,cAAM,iCAAkC,YAAW,SAAS;IAC1D,EAAE,SAAqC;IACvC,WAAW,SAAqF;IAE1F,EAAE,IAAI,OAAO,CAAC,eAAe,CAAC;IA2BpC,OAAO,CAAC,MAAM,EAAE,mBAAmB,GAAG,mBAAmB;CAuC1D;AAID,OAAO,EAAE,iCAAiC,EAAE,CAAC"}
|
|
@@ -6,11 +6,14 @@ class SkillsAssistantsTopLevelMigration {
|
|
|
6
6
|
async up() {
|
|
7
7
|
const workingDir = process.cwd();
|
|
8
8
|
let migrated = false;
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
const hasGlobal = await ConfigLoader.hasGlobalConfig();
|
|
10
|
+
if (hasGlobal) {
|
|
11
|
+
const globalConfig = await ConfigLoader.loadMultiProviderConfig();
|
|
12
|
+
const migratedGlobal = this.migrate(globalConfig);
|
|
13
|
+
if (migratedGlobal !== globalConfig) {
|
|
14
|
+
await ConfigLoader.saveMultiProviderConfig(migratedGlobal);
|
|
15
|
+
migrated = true;
|
|
16
|
+
}
|
|
14
17
|
}
|
|
15
18
|
const hasLocal = await ConfigLoader.hasProjectConfig(workingDir);
|
|
16
19
|
if (hasLocal) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"004-skills-assistants-top-level.migration.js","sourceRoot":"","sources":["../../src/migrations/004-skills-assistants-top-level.migration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,MAAM,iCAAiC;IACrC,EAAE,GAAG,iCAAiC,CAAC;IACvC,WAAW,GAAG,iFAAiF,CAAC;IAEhG,KAAK,CAAC,EAAE;QACN,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QACjC,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,uBAAuB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"004-skills-assistants-top-level.migration.js","sourceRoot":"","sources":["../../src/migrations/004-skills-assistants-top-level.migration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"005-skill-slug-format.migration.d.ts","sourceRoot":"","sources":["../../src/migrations/005-skill-slug-format.migration.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAS7D,cAAM,wBAAyB,YAAW,SAAS;IACjD,EAAE,SAA2B;IAC7B,WAAW,SAAiF;IAEtF,EAAE,IAAI,OAAO,CAAC,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"005-skill-slug-format.migration.d.ts","sourceRoot":"","sources":["../../src/migrations/005-skill-slug-format.migration.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAS7D,cAAM,wBAAyB,YAAW,SAAS;IACjD,EAAE,SAA2B;IAC7B,WAAW,SAAiF;IAEtF,EAAE,IAAI,OAAO,CAAC,eAAe,CAAC;YA0CtB,iBAAiB;IAwC/B,OAAO,CAAC,cAAc;CAKvB;AAID,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -13,17 +13,20 @@ class SkillSlugFormatMigration {
|
|
|
13
13
|
async up() {
|
|
14
14
|
const workingDir = process.cwd();
|
|
15
15
|
let migrated = false;
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
await
|
|
26
|
-
|
|
16
|
+
const hasGlobal = await ConfigLoader.hasGlobalConfig();
|
|
17
|
+
if (hasGlobal) {
|
|
18
|
+
const globalConfig = await ConfigLoader.loadMultiProviderConfig();
|
|
19
|
+
const hasProfileLevelSkills = Object.values(globalConfig.profiles).some(p => p.codemieSkills?.length > 0);
|
|
20
|
+
if (hasProfileLevelSkills && !globalConfig.codemieSkills?.length) {
|
|
21
|
+
throw new ConfigurationError('005-skill-slug-format migration requires migration 004 (move-skills-to-top-level) to have run first. ' +
|
|
22
|
+
'Skills are still stored inside profiles rather than at the top-level config.');
|
|
23
|
+
}
|
|
24
|
+
const globalSkillsDir = path.join(os.homedir(), '.claude', 'skills');
|
|
25
|
+
const { config: migratedGlobal, changed: globalChanged } = await this.migrateSkillSlugs(globalConfig, StorageScope.GLOBAL, globalSkillsDir);
|
|
26
|
+
if (globalChanged) {
|
|
27
|
+
await ConfigLoader.saveMultiProviderConfig(migratedGlobal);
|
|
28
|
+
migrated = true;
|
|
29
|
+
}
|
|
27
30
|
}
|
|
28
31
|
const hasLocal = await ConfigLoader.hasProjectConfig(workingDir);
|
|
29
32
|
if (hasLocal) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"005-skill-slug-format.migration.js","sourceRoot":"","sources":["../../src/migrations/005-skill-slug-format.migration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,MAAM,wBAAwB;IAC5B,EAAE,GAAG,uBAAuB,CAAC;IAC7B,WAAW,GAAG,6EAA6E,CAAC;IAE5F,KAAK,CAAC,EAAE;QACN,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QACjC,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,uBAAuB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"005-skill-slug-format.migration.js","sourceRoot":"","sources":["../../src/migrations/005-skill-slug-format.migration.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ export declare const CODEMIE_ASSISTANT_ID: string;
|
|
|
14
14
|
/** API endpoint path for conversation history */
|
|
15
15
|
export declare const CONVERSATIONS_API_PATH = "v1/conversations";
|
|
16
16
|
/** Default folder name for imported conversations */
|
|
17
|
-
export declare const DEFAULT_CONVERSATION_FOLDER = "Claude
|
|
17
|
+
export declare const DEFAULT_CONVERSATION_FOLDER = "Claude Desktop";
|
|
18
18
|
/** HTTP status codes that should NOT trigger retry logic */
|
|
19
19
|
export declare const NON_RETRYABLE_HTTP_CODES: readonly [400, 401, 403, 422];
|
|
20
20
|
/** Priority of conversation sync processor (lower runs first) */
|
|
@@ -20,7 +20,7 @@ export const CODEMIE_ASSISTANT_ID = process.env.CODEMIE_CONVERSATION_ASSISTANT_I
|
|
|
20
20
|
/** API endpoint path for conversation history */
|
|
21
21
|
export const CONVERSATIONS_API_PATH = 'v1/conversations';
|
|
22
22
|
/** Default folder name for imported conversations */
|
|
23
|
-
export const DEFAULT_CONVERSATION_FOLDER = 'Claude
|
|
23
|
+
export const DEFAULT_CONVERSATION_FOLDER = 'Claude Desktop';
|
|
24
24
|
// ============================================================================
|
|
25
25
|
// HTTP Status Codes
|
|
26
26
|
// ============================================================================
|