@codemieai/code 0.12.0 → 0.13.1
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/README.md +146 -57
- package/bin/codemie-copilot.js +224 -0
- package/bin/codemie-pi.js +18 -0
- package/dist/agents/core/AgentCLI.d.ts.map +1 -1
- package/dist/agents/core/AgentCLI.js +16 -10
- package/dist/agents/core/AgentCLI.js.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.js +43 -19
- package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
- package/dist/agents/core/agent-aliases.d.ts +17 -0
- package/dist/agents/core/agent-aliases.d.ts.map +1 -0
- package/dist/agents/core/agent-aliases.js +41 -0
- package/dist/agents/core/agent-aliases.js.map +1 -0
- package/dist/agents/core/session/session-origin-audit.d.ts +13 -0
- package/dist/agents/core/session/session-origin-audit.d.ts.map +1 -1
- package/dist/agents/core/session/session-origin-audit.js +34 -0
- package/dist/agents/core/session/session-origin-audit.js.map +1 -1
- package/dist/agents/core/session/stale-session-reconciliation.d.ts +42 -0
- package/dist/agents/core/session/stale-session-reconciliation.d.ts.map +1 -0
- package/dist/agents/core/session/stale-session-reconciliation.js +141 -0
- package/dist/agents/core/session/stale-session-reconciliation.js.map +1 -0
- package/dist/agents/core/session/types.d.ts +19 -0
- package/dist/agents/core/session/types.d.ts.map +1 -1
- package/dist/agents/core/session/types.js +17 -1
- package/dist/agents/core/session/types.js.map +1 -1
- package/dist/agents/core/types.d.ts +1 -0
- package/dist/agents/core/types.d.ts.map +1 -1
- package/dist/agents/plugins/codex/codex.reconciliation.d.ts +15 -35
- package/dist/agents/plugins/codex/codex.reconciliation.d.ts.map +1 -1
- package/dist/agents/plugins/codex/codex.reconciliation.js +8 -139
- package/dist/agents/plugins/codex/codex.reconciliation.js.map +1 -1
- package/dist/agents/plugins/copilot-cli/copilot-cli.constants.d.ts +4 -0
- package/dist/agents/plugins/copilot-cli/copilot-cli.constants.d.ts.map +1 -1
- package/dist/agents/plugins/copilot-cli/copilot-cli.constants.js +4 -0
- package/dist/agents/plugins/copilot-cli/copilot-cli.constants.js.map +1 -1
- package/dist/agents/plugins/copilot-cli/copilot-cli.models.d.ts +8 -0
- package/dist/agents/plugins/copilot-cli/copilot-cli.models.d.ts.map +1 -0
- package/dist/agents/plugins/copilot-cli/copilot-cli.models.js +195 -0
- package/dist/agents/plugins/copilot-cli/copilot-cli.models.js.map +1 -0
- package/dist/agents/plugins/copilot-cli/copilot-cli.plugin.d.ts +4 -20
- package/dist/agents/plugins/copilot-cli/copilot-cli.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/copilot-cli/copilot-cli.plugin.js +237 -38
- package/dist/agents/plugins/copilot-cli/copilot-cli.plugin.js.map +1 -1
- package/dist/agents/plugins/copilot-cli/copilot-cli.session.d.ts.map +1 -1
- package/dist/agents/plugins/copilot-cli/copilot-cli.session.js +14 -2
- package/dist/agents/plugins/copilot-cli/copilot-cli.session.js.map +1 -1
- package/dist/agents/plugins/copilot-cli/index.d.ts +2 -1
- package/dist/agents/plugins/copilot-cli/index.d.ts.map +1 -1
- package/dist/agents/plugins/copilot-cli/index.js +2 -1
- package/dist/agents/plugins/copilot-cli/index.js.map +1 -1
- package/dist/agents/plugins/copilot-cli/session/processors/copilot-cli.conversations-processor.d.ts +6 -3
- package/dist/agents/plugins/copilot-cli/session/processors/copilot-cli.conversations-processor.d.ts.map +1 -1
- package/dist/agents/plugins/copilot-cli/session/processors/copilot-cli.conversations-processor.js +298 -5
- package/dist/agents/plugins/copilot-cli/session/processors/copilot-cli.conversations-processor.js.map +1 -1
- package/dist/agents/plugins/pi/__tests__/home-redirect.d.ts +12 -0
- package/dist/agents/plugins/pi/__tests__/home-redirect.d.ts.map +1 -0
- package/dist/agents/plugins/pi/__tests__/home-redirect.js +27 -0
- package/dist/agents/plugins/pi/__tests__/home-redirect.js.map +1 -0
- package/dist/agents/plugins/pi/extension/README.md +68 -0
- package/dist/agents/plugins/pi/extension/index.js +161 -0
- package/dist/agents/plugins/pi/extension/package.json +8 -0
- package/dist/agents/plugins/pi/index.d.ts +3 -0
- package/dist/agents/plugins/pi/index.d.ts.map +1 -0
- package/dist/agents/plugins/pi/index.js +3 -0
- package/dist/agents/plugins/pi/index.js.map +1 -0
- package/dist/agents/plugins/pi/pi.extension.d.ts +60 -0
- package/dist/agents/plugins/pi/pi.extension.d.ts.map +1 -0
- package/dist/agents/plugins/pi/pi.extension.js +201 -0
- package/dist/agents/plugins/pi/pi.extension.js.map +1 -0
- package/dist/agents/plugins/pi/pi.incremental-sync.d.ts +63 -0
- package/dist/agents/plugins/pi/pi.incremental-sync.d.ts.map +1 -0
- package/dist/agents/plugins/pi/pi.incremental-sync.js +266 -0
- package/dist/agents/plugins/pi/pi.incremental-sync.js.map +1 -0
- package/dist/agents/plugins/pi/pi.models.d.ts +20 -0
- package/dist/agents/plugins/pi/pi.models.d.ts.map +1 -0
- package/dist/agents/plugins/pi/pi.models.js +201 -0
- package/dist/agents/plugins/pi/pi.models.js.map +1 -0
- package/dist/agents/plugins/pi/pi.packages.d.ts +11 -0
- package/dist/agents/plugins/pi/pi.packages.d.ts.map +1 -0
- package/dist/agents/plugins/pi/pi.packages.js +35 -0
- package/dist/agents/plugins/pi/pi.packages.js.map +1 -0
- package/dist/agents/plugins/pi/pi.paths.d.ts +37 -0
- package/dist/agents/plugins/pi/pi.paths.d.ts.map +1 -0
- package/dist/agents/plugins/pi/pi.paths.js +146 -0
- package/dist/agents/plugins/pi/pi.paths.js.map +1 -0
- package/dist/agents/plugins/pi/pi.plugin.d.ts +30 -0
- package/dist/agents/plugins/pi/pi.plugin.d.ts.map +1 -0
- package/dist/agents/plugins/pi/pi.plugin.js +453 -0
- package/dist/agents/plugins/pi/pi.plugin.js.map +1 -0
- package/dist/agents/plugins/pi/pi.session.d.ts +114 -0
- package/dist/agents/plugins/pi/pi.session.d.ts.map +1 -0
- package/dist/agents/plugins/pi/pi.session.js +388 -0
- package/dist/agents/plugins/pi/pi.session.js.map +1 -0
- package/dist/agents/plugins/pi/pi.setup.d.ts +2 -0
- package/dist/agents/plugins/pi/pi.setup.d.ts.map +1 -0
- package/dist/agents/plugins/pi/pi.setup.js +33 -0
- package/dist/agents/plugins/pi/pi.setup.js.map +1 -0
- package/dist/agents/plugins/pi/pi.types.d.ts +143 -0
- package/dist/agents/plugins/pi/pi.types.d.ts.map +1 -0
- package/dist/agents/plugins/pi/pi.types.js +74 -0
- package/dist/agents/plugins/pi/pi.types.js.map +1 -0
- package/dist/agents/plugins/pi/session/pi-file-operations.d.ts +17 -0
- package/dist/agents/plugins/pi/session/pi-file-operations.d.ts.map +1 -0
- package/dist/agents/plugins/pi/session/pi-file-operations.js +98 -0
- package/dist/agents/plugins/pi/session/pi-file-operations.js.map +1 -0
- package/dist/agents/plugins/pi/session/pi-named-invocations.d.ts +52 -0
- package/dist/agents/plugins/pi/session/pi-named-invocations.d.ts.map +1 -0
- package/dist/agents/plugins/pi/session/pi-named-invocations.js +189 -0
- package/dist/agents/plugins/pi/session/pi-named-invocations.js.map +1 -0
- package/dist/agents/plugins/pi/session/pi-user-prompt.d.ts +14 -0
- package/dist/agents/plugins/pi/session/pi-user-prompt.d.ts.map +1 -0
- package/dist/agents/plugins/pi/session/pi-user-prompt.js +51 -0
- package/dist/agents/plugins/pi/session/pi-user-prompt.js.map +1 -0
- package/dist/agents/plugins/pi/session/processors/pi.conversations-processor.d.ts +52 -0
- package/dist/agents/plugins/pi/session/processors/pi.conversations-processor.d.ts.map +1 -0
- package/dist/agents/plugins/pi/session/processors/pi.conversations-processor.js +716 -0
- package/dist/agents/plugins/pi/session/processors/pi.conversations-processor.js.map +1 -0
- package/dist/agents/plugins/pi/session/processors/pi.metrics-processor.d.ts +104 -0
- package/dist/agents/plugins/pi/session/processors/pi.metrics-processor.d.ts.map +1 -0
- package/dist/agents/plugins/pi/session/processors/pi.metrics-processor.js +595 -0
- package/dist/agents/plugins/pi/session/processors/pi.metrics-processor.js.map +1 -0
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +2 -2
- package/dist/agents/registry.js.map +1 -1
- package/dist/cli/commands/analytics/agent-labels.d.ts.map +1 -1
- package/dist/cli/commands/analytics/agent-labels.js +1 -0
- package/dist/cli/commands/analytics/agent-labels.js.map +1 -1
- package/dist/cli/commands/analytics/cost/usage-readers.d.ts +24 -0
- package/dist/cli/commands/analytics/cost/usage-readers.d.ts.map +1 -1
- package/dist/cli/commands/analytics/cost/usage-readers.js +199 -54
- package/dist/cli/commands/analytics/cost/usage-readers.js.map +1 -1
- package/dist/cli/commands/analytics/index.js +1 -0
- package/dist/cli/commands/analytics/index.js.map +1 -1
- package/dist/cli/commands/analytics/native-loader.d.ts +21 -4
- package/dist/cli/commands/analytics/native-loader.d.ts.map +1 -1
- package/dist/cli/commands/analytics/native-loader.js +250 -96
- package/dist/cli/commands/analytics/native-loader.js.map +1 -1
- package/dist/cli/commands/analytics/report/client/app.js +47 -3
- package/dist/cli/commands/analytics/report/payload-builder.d.ts.map +1 -1
- package/dist/cli/commands/analytics/report/payload-builder.js +25 -2
- package/dist/cli/commands/analytics/report/payload-builder.js.map +1 -1
- package/dist/cli/commands/analytics/report/types.d.ts +1 -0
- package/dist/cli/commands/analytics/report/types.d.ts.map +1 -1
- package/dist/cli/commands/hook.d.ts.map +1 -1
- package/dist/cli/commands/hook.js +71 -29
- package/dist/cli/commands/hook.js.map +1 -1
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +7 -5
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/list.d.ts.map +1 -1
- package/dist/cli/commands/list.js +3 -1
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/proxy/connectors/desktop.d.ts +94 -4
- package/dist/cli/commands/proxy/connectors/desktop.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connectors/desktop.js +244 -17
- package/dist/cli/commands/proxy/connectors/desktop.js.map +1 -1
- package/dist/cli/commands/proxy/connectors/managed-mcp-remote.d.ts +25 -0
- package/dist/cli/commands/proxy/connectors/managed-mcp-remote.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connectors/managed-mcp-remote.js +59 -1
- package/dist/cli/commands/proxy/connectors/managed-mcp-remote.js.map +1 -1
- package/dist/cli/commands/proxy/index.d.ts.map +1 -1
- package/dist/cli/commands/proxy/index.js +10 -1
- package/dist/cli/commands/proxy/index.js.map +1 -1
- package/dist/cli/commands/uninstall.d.ts.map +1 -1
- package/dist/cli/commands/uninstall.js +5 -3
- package/dist/cli/commands/uninstall.js.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +5 -3
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/first-time.d.ts.map +1 -1
- package/dist/cli/first-time.js +7 -6
- package/dist/cli/first-time.js.map +1 -1
- package/dist/providers/core/auth-validation.d.ts +7 -2
- package/dist/providers/core/auth-validation.d.ts.map +1 -1
- package/dist/providers/core/auth-validation.js +11 -5
- package/dist/providers/core/auth-validation.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.d.ts +8 -3
- package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.js +46 -11
- package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.d.ts +23 -13
- package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.js +75 -18
- package/dist/providers/plugins/sso/proxy/plugins/codex-encrypted-content-sanitizer.plugin.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/copilot-encrypted-content-sanitizer.plugin.d.ts +21 -0
- package/dist/providers/plugins/sso/proxy/plugins/copilot-encrypted-content-sanitizer.plugin.d.ts.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/copilot-encrypted-content-sanitizer.plugin.js +133 -0
- package/dist/providers/plugins/sso/proxy/plugins/copilot-encrypted-content-sanitizer.plugin.js.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.js +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.d.ts +2 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.js +4 -2
- package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/types.d.ts +11 -0
- package/dist/providers/plugins/sso/proxy/plugins/types.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/sso.proxy.d.ts +2 -0
- package/dist/providers/plugins/sso/proxy/sso.proxy.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/sso.proxy.js +37 -1
- package/dist/providers/plugins/sso/proxy/sso.proxy.js.map +1 -1
- package/dist/providers/plugins/sso/session/SessionSyncer.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/SessionSyncer.js +13 -0
- package/dist/providers/plugins/sso/session/SessionSyncer.js.map +1 -1
- package/dist/providers/plugins/sso/session/processors/conversations/syncProcessor.js +6 -0
- package/dist/providers/plugins/sso/session/processors/conversations/syncProcessor.js.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-post-processor.d.ts +0 -6
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-post-processor.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-post-processor.js +28 -19
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-post-processor.js.map +1 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.d.ts.map +1 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.js +13 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.js.map +1 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.d.ts +12 -0
- package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.d.ts.map +1 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.js +28 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.paths.js.map +1 -1
- package/dist/utils/interactive.d.ts +14 -0
- package/dist/utils/interactive.d.ts.map +1 -0
- package/dist/utils/interactive.js +16 -0
- package/dist/utils/interactive.js.map +1 -0
- package/package.json +6 -4
- package/scripts/copy-plugins.js +6 -0
|
@@ -12,24 +12,29 @@
|
|
|
12
12
|
* real path) so they are not double-counted.
|
|
13
13
|
*/
|
|
14
14
|
import { realpathSync, readdirSync, readFileSync, openSync, readSync, closeSync } from 'node:fs';
|
|
15
|
-
import { join } from 'node:path';
|
|
15
|
+
import { basename, join } from 'node:path';
|
|
16
16
|
import { AgentRegistry } from '../../../agents/registry.js';
|
|
17
17
|
import { getCodemiePath } from '../../../utils/paths.js';
|
|
18
18
|
import { logger } from '../../../utils/logger.js';
|
|
19
19
|
import { stripClear } from '../../../agents/plugins/claude/session/strip-clear.js';
|
|
20
|
+
import { SESSION_ORIGIN } from '../../../agents/core/session/types.js';
|
|
20
21
|
import { isCodexFamilyAgent } from './cost/codex-agent.js';
|
|
21
22
|
import { firstCodexUserText } from '../../../agents/plugins/codex/session/codex-user-prompt.js';
|
|
22
23
|
import { collectCodexChildThreadIds } from '../../../agents/plugins/codex/session/codex-collab-links.js';
|
|
24
|
+
import { firstPiUserText } from '../../../agents/plugins/pi/session/pi-user-prompt.js';
|
|
25
|
+
import { PI_FORKED_CONTINUATION, piForkedContinuations } from '../../../agents/plugins/pi/pi.session.js';
|
|
23
26
|
/** Agents whose native logs we discover + synthesize. */
|
|
24
|
-
const NATIVE_AGENTS = ['claude', 'codex', 'copilot-cli'];
|
|
27
|
+
const NATIVE_AGENTS = ['claude', 'codex', 'copilot-cli', 'pi'];
|
|
28
|
+
function isPiAgent(agentName) {
|
|
29
|
+
return agentName.toLowerCase() === 'pi';
|
|
30
|
+
}
|
|
25
31
|
/**
|
|
26
32
|
* Agents CodeMie only reads analytics for and never installs, launches, or manages.
|
|
27
33
|
*
|
|
28
34
|
* The ownership gate below exists to stop analytics silently counting UNMANAGED runs of an
|
|
29
|
-
* agent CodeMie CAN manage (EPMCDME-13367).
|
|
30
|
-
* so it can never carry an ownership marker — applying the gate would tag 100% of
|
|
31
|
-
* sessions `native-external` and drop them from the default report
|
|
32
|
-
* a silent no-op.
|
|
35
|
+
* agent CodeMie CAN manage (EPMCDME-13367). A truly analytics-only agent has no managed
|
|
36
|
+
* variant, so it can never carry an ownership marker — applying the gate would tag 100% of
|
|
37
|
+
* its sessions `native-external` and drop them from the default report.
|
|
33
38
|
*/
|
|
34
39
|
function isAnalyticsOnlyAgent(agentName) {
|
|
35
40
|
try {
|
|
@@ -110,6 +115,11 @@ function buildOwnershipIndex() {
|
|
|
110
115
|
}
|
|
111
116
|
else if (!f.endsWith('_metrics.json')) {
|
|
112
117
|
const meta = JSON.parse(readFileSync(join(dir, f), 'utf-8'));
|
|
118
|
+
// A confirmed external-resume session must never re-adopt its transcript into the
|
|
119
|
+
// ownership index — that would silently exclude it from `native-external` filtering
|
|
120
|
+
// again, undoing the whole point of flagging it. See EPMCDME-12992.
|
|
121
|
+
if (meta.origin === SESSION_ORIGIN.EXTERNAL_RESUME)
|
|
122
|
+
continue;
|
|
113
123
|
const asf = meta.correlation?.agentSessionFile;
|
|
114
124
|
if (asf)
|
|
115
125
|
out.add(safeRealPath(asf));
|
|
@@ -261,18 +271,16 @@ function codexTimestamps(records) {
|
|
|
261
271
|
.map((r) => (r.timestamp ? Date.parse(r.timestamp) : NaN))
|
|
262
272
|
.filter((n) => Number.isFinite(n));
|
|
263
273
|
}
|
|
264
|
-
/**
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
const turns =
|
|
274
|
-
const openingPrompt = firstCodexUserText(records);
|
|
275
|
-
const models = meta?.model ? [meta.model] : [];
|
|
274
|
+
/**
|
|
275
|
+
* Assemble {@link RawSessionData} from per-agent facts.
|
|
276
|
+
*
|
|
277
|
+
* All per-session metrics (tools / file ops / models / named invocations) ride on a single
|
|
278
|
+
* metrics-bearing delta — the aggregator sums across deltas, so one populated delta plus empty
|
|
279
|
+
* placeholders is equivalent to per-turn deltas. The placeholders exist purely so the
|
|
280
|
+
* aggregator's `totalTurns` (= `deltas.length`) matches the transcript's real turn count.
|
|
281
|
+
*/
|
|
282
|
+
function buildNativeRawSession(agentName, descriptor, parsed, facts) {
|
|
283
|
+
const { cwd, branch, startTime, endTime, turns, models, openingPrompt } = facts;
|
|
276
284
|
const metricsDelta = {
|
|
277
285
|
recordId: `${descriptor.sessionId}-native`,
|
|
278
286
|
sessionId: descriptor.sessionId,
|
|
@@ -283,9 +291,12 @@ export function synthesizeCodexRawSession(agentName, descriptor, parsed) {
|
|
|
283
291
|
toolStatus: parsed.metrics?.toolStatus,
|
|
284
292
|
fileOperations: parsed.metrics?.fileOperations,
|
|
285
293
|
models,
|
|
294
|
+
// Named invocations are extracted at parse time (e.g. claude.session.ts extractMetrics);
|
|
295
|
+
// carry them through so native (untracked) sessions populate the skill/agent/command charts.
|
|
286
296
|
...(parsed.metrics?.skillInvocations && { skillInvocations: parsed.metrics.skillInvocations }),
|
|
287
297
|
...(parsed.metrics?.agentInvocations && { agentInvocations: parsed.metrics.agentInvocations }),
|
|
288
298
|
...(parsed.metrics?.commandInvocations && { commandInvocations: parsed.metrics.commandInvocations }),
|
|
299
|
+
// Opening prompt → drives the session title in the report (aggregator strips command/system XML).
|
|
289
300
|
...(openingPrompt && { userPrompts: [{ count: 1, text: openingPrompt }] }),
|
|
290
301
|
syncStatus: 'synced',
|
|
291
302
|
syncAttempts: 0,
|
|
@@ -305,7 +316,7 @@ export function synthesizeCodexRawSession(agentName, descriptor, parsed) {
|
|
|
305
316
|
}
|
|
306
317
|
return {
|
|
307
318
|
sessionId: descriptor.sessionId,
|
|
308
|
-
agentSessionFile: descriptor.filePath,
|
|
319
|
+
agentSessionFile: descriptor.filePath, // lets the cost enricher price native (untracked) sessions
|
|
309
320
|
startEvent: {
|
|
310
321
|
recordId: descriptor.sessionId,
|
|
311
322
|
type: 'session_start',
|
|
@@ -327,11 +338,110 @@ export function synthesizeCodexRawSession(agentName, descriptor, parsed) {
|
|
|
327
338
|
deltas,
|
|
328
339
|
};
|
|
329
340
|
}
|
|
341
|
+
/** Synthesize {@link RawSessionData} from a parsed Codex rollout (non-Claude JSONL shape). */
|
|
342
|
+
export function synthesizeCodexRawSession(agentName, descriptor, parsed) {
|
|
343
|
+
const records = (parsed.messages ?? []);
|
|
344
|
+
const timestamps = codexTimestamps(records);
|
|
345
|
+
const meta = parsed.metadata;
|
|
346
|
+
return buildNativeRawSession(agentName, descriptor, parsed, {
|
|
347
|
+
cwd: meta?.projectPath ?? descriptor.projectPath ?? 'Unknown',
|
|
348
|
+
branch: meta?.branch,
|
|
349
|
+
startTime: timestamps.length ? Math.min(...timestamps) : descriptor.createdAt,
|
|
350
|
+
endTime: timestamps.length ? Math.max(...timestamps) : descriptor.updatedAt ?? descriptor.createdAt,
|
|
351
|
+
turns: countCodexTurns(records),
|
|
352
|
+
models: meta?.model ? [meta.model] : [],
|
|
353
|
+
openingPrompt: firstCodexUserText(records),
|
|
354
|
+
});
|
|
355
|
+
}
|
|
330
356
|
/**
|
|
331
|
-
*
|
|
332
|
-
*
|
|
333
|
-
*
|
|
334
|
-
*
|
|
357
|
+
* Every entry of the conversation this transcript belongs to, each counted once.
|
|
358
|
+
*
|
|
359
|
+
* `/fork` writes a NEW file that replays the prior conversation VERBATIM — entry ids included —
|
|
360
|
+
* and {@link foldPiForkFamilies} attaches those continuations to the transcript they grew out
|
|
361
|
+
* of. Concatenating blindly would count the replayed history once per fork: on a real 12-file
|
|
362
|
+
* corpus that is 121 turns for 21 real prompts, and every fork claiming the full multi-hour
|
|
363
|
+
* duration it inherited. De-duplicating on the entry id each file writes about itself collapses
|
|
364
|
+
* the family back to the single conversation it is.
|
|
365
|
+
*/
|
|
366
|
+
function piConversationLines(parsed) {
|
|
367
|
+
const own = (parsed.messages ?? []);
|
|
368
|
+
const continuations = piForkedContinuations(parsed);
|
|
369
|
+
if (continuations.length === 0) {
|
|
370
|
+
return own;
|
|
371
|
+
}
|
|
372
|
+
const lines = [];
|
|
373
|
+
const seenIds = new Set();
|
|
374
|
+
for (const line of [...own, ...continuations.flatMap((fork) => (fork.messages ?? []))]) {
|
|
375
|
+
if (line?.id) {
|
|
376
|
+
if (seenIds.has(line.id)) {
|
|
377
|
+
continue; // replayed copy of an entry an earlier transcript in the family already had
|
|
378
|
+
}
|
|
379
|
+
seenIds.add(line.id);
|
|
380
|
+
}
|
|
381
|
+
lines.push(line);
|
|
382
|
+
}
|
|
383
|
+
return lines;
|
|
384
|
+
}
|
|
385
|
+
function piLineTimestamp(line) {
|
|
386
|
+
const messageTs = line.message?.timestamp;
|
|
387
|
+
if (typeof messageTs === 'number' && Number.isFinite(messageTs)) {
|
|
388
|
+
return messageTs;
|
|
389
|
+
}
|
|
390
|
+
const entryTs = line.timestamp ? Date.parse(line.timestamp) : NaN;
|
|
391
|
+
return Number.isFinite(entryTs) ? entryTs : null;
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Turns in a Pi transcript = user prompts.
|
|
395
|
+
*
|
|
396
|
+
* Pi gives tool results their own `toolResult` role, so a `user` message is always a real prompt
|
|
397
|
+
* and never a tool round-trip — which makes prompt count the honest analogue of Codex's
|
|
398
|
+
* `task_complete` count. Counting assistant messages instead (what the Claude path does, because
|
|
399
|
+
* Claude has no such separation) would report ~170 "turns" for a dozen-prompt session.
|
|
400
|
+
*/
|
|
401
|
+
function countPiTurns(lines) {
|
|
402
|
+
const prompts = lines.filter((l) => l.type === 'message' && l.message?.role === 'user').length;
|
|
403
|
+
return Math.max(prompts, 1);
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Synthesize {@link RawSessionData} from a parsed Pi session (v3 JSONL — neither Claude- nor
|
|
407
|
+
* Codex-shaped: entries are `{type, id, parentId, timestamp, message}` envelopes).
|
|
408
|
+
*
|
|
409
|
+
* Only UNMANAGED `pi` runs reach here. A CodeMie-launched run writes an ownership sidecar for
|
|
410
|
+
* every transcript it produced (pi.plugin.ts `correlateRunToSession`), so `hasOwnershipMarker`
|
|
411
|
+
* classifies those as managed before this synthesis is ever consulted for the provider tag.
|
|
412
|
+
*
|
|
413
|
+
* NO GIT BRANCH. Pi's v3 header records `id`, `timestamp`, `cwd` and `parentSession` — no VCS
|
|
414
|
+
* state — and no entry carries one either, so unlike Codex (`session_meta.git.branch`) and Claude
|
|
415
|
+
* (per-message `gitBranch`) there is nothing truthful to report. Native Pi sessions therefore
|
|
416
|
+
* bucket under "Unknown" and `codemie analytics --branch <x>` filters all of them out. Reading
|
|
417
|
+
* the cwd's CURRENT branch would be a fabrication: it would stamp today's branch on a session
|
|
418
|
+
* recorded weeks ago. (`metadata.gitBranch` IS populated on the managed path, where
|
|
419
|
+
* `processSession` overlays the branch captured while the run was live.)
|
|
420
|
+
*/
|
|
421
|
+
export function synthesizePiRawSession(agentName, descriptor, parsed) {
|
|
422
|
+
const lines = piConversationLines(parsed);
|
|
423
|
+
const timestamps = lines.map(piLineTimestamp).filter((n) => n !== null);
|
|
424
|
+
const meta = parsed.metadata;
|
|
425
|
+
const models = lines
|
|
426
|
+
.filter((l) => l.type === 'message' && l.message?.role === 'assistant')
|
|
427
|
+
.map((l) => l.message?.responseModel ?? l.message?.model)
|
|
428
|
+
.filter((m) => !!m);
|
|
429
|
+
return buildNativeRawSession(agentName, descriptor, parsed, {
|
|
430
|
+
// The adapter reads cwd from the transcript's own session header, which is authoritative:
|
|
431
|
+
// `--session <path>` can run Pi under a directory other than the one it was launched from.
|
|
432
|
+
cwd: meta?.projectPath ?? descriptor.projectPath ?? 'Unknown',
|
|
433
|
+
startTime: timestamps.length ? Math.min(...timestamps) : descriptor.createdAt,
|
|
434
|
+
endTime: timestamps.length ? Math.max(...timestamps) : descriptor.updatedAt ?? descriptor.createdAt,
|
|
435
|
+
turns: countPiTurns(lines),
|
|
436
|
+
models,
|
|
437
|
+
openingPrompt: firstPiUserText(lines),
|
|
438
|
+
});
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Synthesize a {@link RawSessionData} from a parsed native session, dispatching to the reader
|
|
442
|
+
* that understands the agent's log shape. The Claude-shaped path below is the fallback: turns
|
|
443
|
+
* map to assistant messages, since Claude interleaves tool results into `user` messages and so
|
|
444
|
+
* has no prompt count to key on.
|
|
335
445
|
*
|
|
336
446
|
* A post-/clear file starts with the /clear sentinel as its first user message; stripClear strips
|
|
337
447
|
* it so it is never mistaken for the session's opening prompt.
|
|
@@ -340,73 +450,21 @@ export function synthesizeRawSession(agentName, descriptor, parsed) {
|
|
|
340
450
|
if (isCodexFamilyAgent(agentName)) {
|
|
341
451
|
return synthesizeCodexRawSession(agentName, descriptor, parsed);
|
|
342
452
|
}
|
|
453
|
+
if (isPiAgent(agentName)) {
|
|
454
|
+
return synthesizePiRawSession(agentName, descriptor, parsed);
|
|
455
|
+
}
|
|
343
456
|
const messages = stripClear((parsed.messages ?? []));
|
|
344
457
|
const timestamps = messages.map((m) => toMs(m.timestamp)).filter((n) => n != null);
|
|
345
|
-
const startTime = timestamps.length ? Math.min(...timestamps) : descriptor.createdAt;
|
|
346
|
-
const endTime = timestamps.length ? Math.max(...timestamps) : descriptor.updatedAt ?? descriptor.createdAt;
|
|
347
|
-
const cwd = messages.find((m) => m.cwd)?.cwd ?? descriptor.projectPath ?? 'Unknown';
|
|
348
|
-
const branch = modal(messages.map((m) => m.gitBranch).filter((b) => !!b));
|
|
349
458
|
const assistantMsgs = messages.filter(isAssistant);
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
tools: parsed.metrics?.tools ?? {},
|
|
360
|
-
toolStatus: parsed.metrics?.toolStatus,
|
|
361
|
-
fileOperations: parsed.metrics?.fileOperations,
|
|
362
|
-
models,
|
|
363
|
-
// Named invocations are extracted at parse time (claude.session.ts extractMetrics); carry
|
|
364
|
-
// them through so native (untracked) sessions populate the skill/agent/command charts.
|
|
365
|
-
...(parsed.metrics?.skillInvocations && { skillInvocations: parsed.metrics.skillInvocations }),
|
|
366
|
-
...(parsed.metrics?.agentInvocations && { agentInvocations: parsed.metrics.agentInvocations }),
|
|
367
|
-
...(parsed.metrics?.commandInvocations && { commandInvocations: parsed.metrics.commandInvocations }),
|
|
368
|
-
// Opening prompt → drives the session title in the report (aggregator strips command/system XML).
|
|
369
|
-
...(openingPrompt && { userPrompts: [{ count: 1, text: openingPrompt }] }),
|
|
370
|
-
syncStatus: 'synced',
|
|
371
|
-
syncAttempts: 0,
|
|
372
|
-
};
|
|
373
|
-
// Pad to `turns` deltas so the aggregator's totalTurns (= deltas.length) is correct.
|
|
374
|
-
const deltas = [metricsDelta];
|
|
375
|
-
for (let i = 1; i < turns; i++) {
|
|
376
|
-
deltas.push({
|
|
377
|
-
recordId: `${descriptor.sessionId}-native-${i}`,
|
|
378
|
-
sessionId: descriptor.sessionId,
|
|
379
|
-
agentSessionId: descriptor.sessionId,
|
|
380
|
-
timestamp: startTime,
|
|
381
|
-
gitBranch: branch,
|
|
382
|
-
tools: {},
|
|
383
|
-
syncStatus: 'synced',
|
|
384
|
-
syncAttempts: 0,
|
|
385
|
-
});
|
|
386
|
-
}
|
|
387
|
-
return {
|
|
388
|
-
sessionId: descriptor.sessionId,
|
|
389
|
-
agentSessionFile: descriptor.filePath, // lets the cost enricher price native (untracked) sessions
|
|
390
|
-
startEvent: {
|
|
391
|
-
recordId: descriptor.sessionId,
|
|
392
|
-
type: 'session_start',
|
|
393
|
-
timestamp: startTime,
|
|
394
|
-
codeMieSessionId: descriptor.sessionId,
|
|
395
|
-
agentName,
|
|
396
|
-
syncStatus: 'synced',
|
|
397
|
-
data: { provider: 'native', workingDirectory: cwd, startTime },
|
|
398
|
-
},
|
|
399
|
-
endEvent: {
|
|
400
|
-
recordId: `${descriptor.sessionId}-end`,
|
|
401
|
-
type: 'session_end',
|
|
402
|
-
timestamp: endTime,
|
|
403
|
-
codeMieSessionId: descriptor.sessionId,
|
|
404
|
-
agentName,
|
|
405
|
-
syncStatus: 'synced',
|
|
406
|
-
data: { endTime, duration: Math.max(0, endTime - startTime), totalTurns: turns },
|
|
407
|
-
},
|
|
408
|
-
deltas,
|
|
409
|
-
};
|
|
459
|
+
return buildNativeRawSession(agentName, descriptor, parsed, {
|
|
460
|
+
cwd: messages.find((m) => m.cwd)?.cwd ?? descriptor.projectPath ?? 'Unknown',
|
|
461
|
+
branch: modal(messages.map((m) => m.gitBranch).filter((b) => !!b)),
|
|
462
|
+
startTime: timestamps.length ? Math.min(...timestamps) : descriptor.createdAt,
|
|
463
|
+
endTime: timestamps.length ? Math.max(...timestamps) : descriptor.updatedAt ?? descriptor.createdAt,
|
|
464
|
+
turns: Math.max(assistantMsgs.length, 1),
|
|
465
|
+
models: assistantMsgs.map((m) => m.message?.model).filter((m) => !!m),
|
|
466
|
+
openingPrompt: firstUserText(messages),
|
|
467
|
+
});
|
|
410
468
|
}
|
|
411
469
|
/** Number of days from a filter's fromDate to now (for the discovery window), or a wide default. */
|
|
412
470
|
function windowDays(filter) {
|
|
@@ -416,6 +474,88 @@ function windowDays(filter) {
|
|
|
416
474
|
}
|
|
417
475
|
return 3650; // no lower bound requested → effectively "all"
|
|
418
476
|
}
|
|
477
|
+
/** Parse every discovered Pi transcript once and resolve the fork source each header names. */
|
|
478
|
+
async function readPiTranscripts(discovered, deps) {
|
|
479
|
+
const piDiscoveredPaths = new Set(discovered.filter((d) => isPiAgent(d.agentName)).map((d) => deps.realPath(d.descriptor.filePath)));
|
|
480
|
+
const transcripts = [];
|
|
481
|
+
for (const { agentName, descriptor } of discovered) {
|
|
482
|
+
if (!isPiAgent(agentName)) {
|
|
483
|
+
continue;
|
|
484
|
+
}
|
|
485
|
+
const parsed = await deps.parse(agentName, descriptor.filePath, descriptor.sessionId);
|
|
486
|
+
const parentSession = parsed?.metadata?.parentSession;
|
|
487
|
+
const parentRealPath = parentSession ? deps.realPath(parentSession) : undefined;
|
|
488
|
+
transcripts.push({
|
|
489
|
+
descriptor,
|
|
490
|
+
realPath: deps.realPath(descriptor.filePath),
|
|
491
|
+
parsed,
|
|
492
|
+
...(parentRealPath && piDiscoveredPaths.has(parentRealPath) && { parentRealPath }),
|
|
493
|
+
});
|
|
494
|
+
}
|
|
495
|
+
return transcripts;
|
|
496
|
+
}
|
|
497
|
+
/**
|
|
498
|
+
* The continuations to leave out of the listing, because the adapter already folded each one
|
|
499
|
+
* into the transcript it grew out of.
|
|
500
|
+
*
|
|
501
|
+
* A `/fork` continuation is not a new conversation, it is the same one carried into a new file:
|
|
502
|
+
* it replays the prior conversation VERBATIM and names its source in the header's
|
|
503
|
+
* `parentSession`. Emitting it separately reports one conversation as a dozen sessions — on a
|
|
504
|
+
* real corpus, 12 files for 2 conversations, with every derived per-session metric wrong by the
|
|
505
|
+
* same factor.
|
|
506
|
+
*
|
|
507
|
+
* Folding and suppression happen HERE, together, in one pass, because they must agree exactly:
|
|
508
|
+
* a file suppressed but not folded loses its spend outright, and one folded but not suppressed
|
|
509
|
+
* has it billed twice. An earlier design folded in the session adapter and suppressed here, and
|
|
510
|
+
* the two disagreed in both directions — including for a cross-directory fork
|
|
511
|
+
* (`SessionManager.forkFrom(sourcePath, targetCwd)`, reached by `pi --fork <global-id>`), which
|
|
512
|
+
* was suppressed while nothing folded it. Doing both from one decision makes that class of
|
|
513
|
+
* mismatch unrepresentable.
|
|
514
|
+
*
|
|
515
|
+
* This is also why the adapter must NOT fold: `codemie pi --fork` is a second MANAGED run with a
|
|
516
|
+
* CodeMie session of its own, and folding there moved its whole spend onto the run it forked
|
|
517
|
+
* from. Only the analytics layer knows which sessions are actually being reported.
|
|
518
|
+
*
|
|
519
|
+
* The source must still be in the listing. A fork whose source fell outside the discovery
|
|
520
|
+
* window has nobody to be counted inside, and dropping it would delete its spend from the report.
|
|
521
|
+
*/
|
|
522
|
+
function foldPiForkFamilies(transcripts) {
|
|
523
|
+
const byRealPath = new Map(transcripts.map((t) => [t.realPath, t]));
|
|
524
|
+
const suppressed = new Set();
|
|
525
|
+
/** The oldest ancestor still in the listing, so a fork of a fork folds into one session. */
|
|
526
|
+
const rootOf = (start) => {
|
|
527
|
+
let current = start;
|
|
528
|
+
const seen = new Set([current.realPath]);
|
|
529
|
+
for (;;) {
|
|
530
|
+
const parent = current.parentRealPath ? byRealPath.get(current.parentRealPath) : undefined;
|
|
531
|
+
if (!parent?.parsed || seen.has(parent.realPath)) {
|
|
532
|
+
return current; // no parent in the listing, or a cyclic parentSession chain
|
|
533
|
+
}
|
|
534
|
+
seen.add(parent.realPath);
|
|
535
|
+
current = parent;
|
|
536
|
+
}
|
|
537
|
+
};
|
|
538
|
+
for (const transcript of transcripts) {
|
|
539
|
+
if (!transcript.parsed || !transcript.parentRealPath) {
|
|
540
|
+
continue;
|
|
541
|
+
}
|
|
542
|
+
const root = rootOf(transcript);
|
|
543
|
+
if (root === transcript || !root.parsed) {
|
|
544
|
+
continue; // its source is not in the listing — report it on its own or its spend is lost
|
|
545
|
+
}
|
|
546
|
+
root.parsed.subagents = [
|
|
547
|
+
...(root.parsed.subagents ?? []),
|
|
548
|
+
{
|
|
549
|
+
agentId: basename(transcript.realPath, '.jsonl'),
|
|
550
|
+
filePath: transcript.realPath,
|
|
551
|
+
agentType: PI_FORKED_CONTINUATION,
|
|
552
|
+
messages: transcript.parsed.messages ?? [],
|
|
553
|
+
},
|
|
554
|
+
];
|
|
555
|
+
suppressed.add(transcript.realPath);
|
|
556
|
+
}
|
|
557
|
+
return suppressed;
|
|
558
|
+
}
|
|
419
559
|
/**
|
|
420
560
|
* Discover native (untracked) sessions and return them as RawSessionData, ready to merge
|
|
421
561
|
* with the tracked sessions from {@link MetricsDataLoader}. Sessions whose native log is
|
|
@@ -442,28 +582,42 @@ export async function loadNativeSessions(filter, deps = realNativeDeps) {
|
|
|
442
582
|
}
|
|
443
583
|
}
|
|
444
584
|
}
|
|
585
|
+
// Same shape for Pi, one level up: parse each transcript ONCE, then drop the `/fork`
|
|
586
|
+
// continuations the adapter already folded into the transcript they grew out of.
|
|
587
|
+
const piTranscripts = await readPiTranscripts(discovered, deps);
|
|
588
|
+
const piByRealPath = new Map(piTranscripts.map((t) => [t.realPath, t]));
|
|
589
|
+
const piForkedChildren = foldPiForkFamilies(piTranscripts);
|
|
445
590
|
const out = [];
|
|
446
591
|
for (const { agentName, descriptor } of discovered) {
|
|
447
592
|
if (isCodexFamilyAgent(agentName) && codexChildThreads.has(descriptor.sessionId)) {
|
|
448
593
|
continue; // linked sub-agent rollout — already counted inside its parent
|
|
449
594
|
}
|
|
595
|
+
if (isPiAgent(agentName) && piForkedChildren.has(deps.realPath(descriptor.filePath))) {
|
|
596
|
+
continue; // forked continuation — already counted inside the transcript it grew out of
|
|
597
|
+
}
|
|
450
598
|
if (tracked.has(deps.realPath(descriptor.filePath))) {
|
|
451
599
|
continue; // already tracked by CodeMie — avoid double counting
|
|
452
600
|
}
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
601
|
+
let parsed;
|
|
602
|
+
if (isCodexFamilyAgent(agentName)) {
|
|
603
|
+
parsed = codexParsed.get(descriptor.filePath) ?? null;
|
|
604
|
+
}
|
|
605
|
+
else if (isPiAgent(agentName)) {
|
|
606
|
+
parsed = piByRealPath.get(deps.realPath(descriptor.filePath))?.parsed ?? null;
|
|
607
|
+
}
|
|
608
|
+
else {
|
|
609
|
+
parsed = await deps.parse(agentName, descriptor.filePath, descriptor.sessionId);
|
|
610
|
+
}
|
|
456
611
|
if (!parsed) {
|
|
457
612
|
continue;
|
|
458
613
|
}
|
|
459
614
|
const raw = synthesizeRawSession(agentName, descriptor, parsed);
|
|
460
615
|
if (raw.startEvent && !deps.hasOwnershipMarker(descriptor.filePath)) {
|
|
461
|
-
//
|
|
462
|
-
// 'native-external' would drop 100% of their sessions from the default report.
|
|
463
|
-
//
|
|
464
|
-
//
|
|
465
|
-
//
|
|
466
|
-
// sessions-source filter (included by default) while staying honest about origin.
|
|
616
|
+
// Truly analytics-only agents can never carry an ownership marker, so tagging them
|
|
617
|
+
// 'native-external' would drop 100% of their sessions from the default report. They
|
|
618
|
+
// still are not CodeMie-managed, so they get their own tag rather than the plain
|
|
619
|
+
// 'native' that means "CodeMie launched this". Managed agents, including Copilot CLI,
|
|
620
|
+
// remain 'native-external' when their transcript lacks CodeMie ownership.
|
|
467
621
|
raw.startEvent.data.provider = isAnalyticsOnlyAgent(agentName)
|
|
468
622
|
? 'native-unmanaged'
|
|
469
623
|
: 'native-external';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-loader.js","sourceRoot":"","sources":["../../../../src/cli/commands/analytics/native-loader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"native-loader.js","sourceRoot":"","sources":["../../../../src/cli/commands/analytics/native-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
// ---- palette ------------------------------------------------------------
|
|
21
21
|
var PALETTE = ['#7C5CFC', '#2297F6', '#F5A534', '#06B6D4', '#259F4C', '#F9303C', '#C084FC', '#E879A6'];
|
|
22
|
-
var AGENT_COLORS = { claude: '#7C5CFC', 'claude-acp': '#9D7BFF', 'claude-desktop': '#B79DFF', gemini: '#F5A534', codex: '#06B6D4', 'codemie-codex': '#06B6D4', opencode: '#259F4C', 'codemie-code': '#2297F6', 'copilot-cli': '#6E7681' };
|
|
22
|
+
var AGENT_COLORS = { claude: '#7C5CFC', 'claude-acp': '#9D7BFF', 'claude-desktop': '#B79DFF', gemini: '#F5A534', codex: '#06B6D4', 'codemie-codex': '#06B6D4', opencode: '#259F4C', 'codemie-code': '#2297F6', 'copilot-cli': '#6E7681', pi: '#E879A6' };
|
|
23
23
|
var seenAgentColor = {};
|
|
24
24
|
var colorCursor = 0;
|
|
25
25
|
function colorFor(agent) {
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
}
|
|
30
30
|
// Agent keys are internal ids; these are what a human should read. Unmapped agents fall
|
|
31
31
|
// through to the key itself, so listing an agent here is optional.
|
|
32
|
-
var AGENT_LABELS = { 'copilot-cli': 'GitHub Copilot CLI' };
|
|
32
|
+
var AGENT_LABELS = { 'copilot-cli': 'GitHub Copilot CLI', pi: 'Pi' };
|
|
33
33
|
function labelFor(agent) { return AGENT_LABELS[agent] || agent; }
|
|
34
34
|
|
|
35
35
|
// ---- formatting ---------------------------------------------------------
|
|
@@ -1036,6 +1036,50 @@
|
|
|
1036
1036
|
container.appendChild(sidePane);
|
|
1037
1037
|
return container;
|
|
1038
1038
|
}
|
|
1039
|
+
/**
|
|
1040
|
+
* Rebuild a single-session ReportPayload matching what
|
|
1041
|
+
* `codemie analytics --report --report-format json --session <id>` writes:
|
|
1042
|
+
* { meta, sessions: [record] }, with meta.totals/coverage scoped to this one session
|
|
1043
|
+
* and userEmail / periodStart / periodEnd populated. Mirrors buildPayload()'s meta
|
|
1044
|
+
* assembly (see report/payload-builder.ts) so the exported file is drop-in comparable.
|
|
1045
|
+
*/
|
|
1046
|
+
function sessionPayload(s) {
|
|
1047
|
+
var perModel = s.perModelCost || [];
|
|
1048
|
+
var priced = perModel.length > 0;
|
|
1049
|
+
var unpricedModels = [];
|
|
1050
|
+
perModel.forEach(function (m) {
|
|
1051
|
+
if (m.unpriced && unpricedModels.indexOf(m.model) === -1) unpricedModels.push(m.model);
|
|
1052
|
+
});
|
|
1053
|
+
var meta = {
|
|
1054
|
+
generatedAt: new Date().toISOString(),
|
|
1055
|
+
// --session applies no date filter, so the CLI stamps 'all' / 'all' here too.
|
|
1056
|
+
rangeLabel: 'all',
|
|
1057
|
+
agents: [s.agentName],
|
|
1058
|
+
projectFilter: 'all',
|
|
1059
|
+
totals: {
|
|
1060
|
+
sessions: 1,
|
|
1061
|
+
durationMs: s.durationMs,
|
|
1062
|
+
turns: s.turns,
|
|
1063
|
+
files: s.fileOps,
|
|
1064
|
+
netLines: s.netLines,
|
|
1065
|
+
toolCallsTotal: s.toolCallsTotal,
|
|
1066
|
+
toolSuccessRate: s.toolCallsTotal ? Math.round((s.toolCallsSuccess / s.toolCallsTotal) * 1000) / 10 : 0,
|
|
1067
|
+
totalCostUSD: s.costUSD,
|
|
1068
|
+
cacheReadCostUSD: s.cacheReadCostUSD,
|
|
1069
|
+
pricedSessions: priced ? 1 : 0
|
|
1070
|
+
},
|
|
1071
|
+
unpricedModels: unpricedModels,
|
|
1072
|
+
coverage: [{ agentName: s.agentName, total: 1, priced: priced ? 1 : 0, withLog: s.hadLog ? 1 : 0 }]
|
|
1073
|
+
};
|
|
1074
|
+
// Same conditional-spread semantics as buildPayload: omit rather than emit null.
|
|
1075
|
+
if (DATA.meta && DATA.meta.userEmail !== undefined) meta.userEmail = DATA.meta.userEmail;
|
|
1076
|
+
if (Number.isFinite(s.startTime) && s.startTime > 0) {
|
|
1077
|
+
meta.periodStart = new Date(s.startTime).toISOString();
|
|
1078
|
+
meta.periodEnd = new Date(s.startTime + Math.max(Number.isFinite(s.durationMs) ? s.durationMs : 0, 0)).toISOString();
|
|
1079
|
+
}
|
|
1080
|
+
return { meta: meta, sessions: [s] };
|
|
1081
|
+
}
|
|
1082
|
+
|
|
1039
1083
|
function openSessionModal(s, onBack) {
|
|
1040
1084
|
if (!s) return;
|
|
1041
1085
|
closeSessionModal();
|
|
@@ -1062,7 +1106,7 @@
|
|
|
1062
1106
|
exportBtn.setAttribute('aria-label', 'Export session as JSON');
|
|
1063
1107
|
exportBtn.setAttribute('title', 'Export session details as JSON');
|
|
1064
1108
|
exportBtn.addEventListener('click', function () {
|
|
1065
|
-
var json = JSON.stringify(s, null, 2);
|
|
1109
|
+
var json = JSON.stringify(sessionPayload(s), null, 2);
|
|
1066
1110
|
var blob = new Blob([json], { type: 'application/json' });
|
|
1067
1111
|
var url = URL.createObjectURL(blob);
|
|
1068
1112
|
var a = document.createElement('a');
|
|
@@ -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;AAGjF,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;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;AAGjF,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,cAAc,GAClB,aAAa,CAyJf"}
|