zozul-cli 0.3.8 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -106,7 +106,10 @@
106
106
  "Bash(npm whoami:*)",
107
107
  "WebFetch(domain:docs.anthropic.com)",
108
108
  "Bash(python3 -c \"import sys, json; d = json.load\\(sys.stdin\\); print\\('sessionId:', d.get\\('sessionId'\\)\\); print\\('agentId:', d.get\\('agentId'\\)\\); print\\('isSidechain:', d.get\\('isSidechain'\\)\\)\")",
109
- "Bash(find ~/.claude/projects -name \"*.meta.json\" -exec grep -l \"claude-code-guide\" {} \\\\;)"
109
+ "Bash(find ~/.claude/projects -name \"*.meta.json\" -exec grep -l \"claude-code-guide\" {} \\\\;)",
110
+ "Bash(python3 -c \"import json,sys; d=json.load\\(sys.stdin\\); print\\(f'{len\\(d\\)} subagents found'\\)\")",
111
+ "Read(//Users/ryanchun/.zozul/**)",
112
+ "Bash(python3 -c ':*)"
110
113
  ]
111
114
  }
112
115
  }
package/DEVELOPMENT.md CHANGED
@@ -109,21 +109,25 @@ Eight tables, all in `~/.zozul/zozul.db` (WAL mode, foreign keys ON).
109
109
  One row per Claude Code session. Updated from both JSONL and OTEL.
110
110
 
111
111
  ```sql
112
- id TEXT PRIMARY KEY -- session UUID (from JSONL filename)
112
+ id TEXT PRIMARY KEY -- session UUID (from JSONL filename) or agent-* for sub-sessions
113
113
  project_path TEXT -- decoded from transcript path
114
+ parent_session_id TEXT -- parent session ID for agent sub-sessions, NULL for top-level
115
+ agent_type TEXT -- e.g. 'Explore', 'Plan', 'general-purpose' (from .meta.json)
114
116
  started_at TEXT NOT NULL -- ISO timestamp, from JSONL
115
117
  ended_at TEXT -- kept current by OTEL batches
116
- total_input_tokens INTEGER -- OTEL-accumulated (MAX with JSONL)
118
+ total_input_tokens INTEGER -- OTEL-authoritative (recomputed from otel_metrics)
117
119
  total_output_tokens INTEGER
118
120
  total_cache_read_tokens INTEGER
119
121
  total_cache_creation_tokens INTEGER
120
- total_cost_usd REAL -- OTEL only (JSONL always 0)
122
+ total_cost_usd REAL -- OTEL-authoritative; fallback: SUM(turns.cost_usd)
121
123
  total_turns INTEGER -- from JSONL (count of parsed turns)
122
- total_duration_ms INTEGER -- OTEL active_time accumulated
124
+ total_duration_ms INTEGER -- SUM(turns.duration_ms)
123
125
  model TEXT -- last model seen
124
126
  ```
125
127
 
126
- Upsert semantics: `MIN(started_at)`, `MAX()` for all metric fields, `COALESCE` for nullable strings. This means re-ingesting from JSONL never destroys OTEL-accumulated cost/duration.
128
+ Upsert semantics: `MIN(started_at)`, simple replacement for metric fields, `COALESCE` for nullable strings. After ingest, `recomputeSessionCostsFromOtel` overwrites metrics with authoritative OTEL data. Sessions without OTEL fall back to `SUM(turns.cost_usd)`.
129
+
130
+ Agent sub-sessions are discovered from `<session-uuid>/subagents/` directories. They share the parent's `project_path` and have `parent_session_id` set. Display queries filter `WHERE parent_session_id IS NULL` to show only top-level sessions. OTEL reports all cost/tokens under the parent session ID — agent sub-sessions have no OTEL data.
127
131
 
128
132
  ### `turns`
129
133
  One row per message turn. Unique on `(session_id, turn_index)`.
@@ -171,7 +175,7 @@ payload TEXT -- full JSON body
171
175
  ```
172
176
 
173
177
  ### `otel_metrics`
174
- Raw OTEL metric data points, append-only.
178
+ Raw OTEL metric data points, append-only. Deduplicated via unique index on `(session_id, name, timestamp, type)`.
175
179
 
176
180
  ```sql
177
181
  id INTEGER PRIMARY KEY AUTOINCREMENT
@@ -181,9 +185,10 @@ attributes TEXT -- full JSON of flattened OTLP attributes
181
185
  session_id TEXT -- extracted from attributes
182
186
  model TEXT -- extracted from attributes
183
187
  timestamp TEXT
188
+ UNIQUE(session_id, name, timestamp, json_extract(attributes, '$.type'))
184
189
  ```
185
190
 
186
- Dashboard charts query this table directly (not `sessions`) for time-series data.
191
+ Inserts use `INSERT OR IGNORE` to skip duplicates. Dashboard charts query this table directly (not `sessions`) for time-series data.
187
192
 
188
193
  ### `otel_events`
189
194
  Raw OTEL log records, append-only.
@@ -225,9 +230,11 @@ updated_at TEXT
225
230
 
226
231
  **JSONL is the only source for full conversation text.** OTEL events can include prompt text when `OTEL_LOG_USER_PROMPTS=1`, but the assistant's full response is only in the JSONL transcript.
227
232
 
228
- **Sessions table uses MAX() semantics on upsert.** This means the highest value seen from any source wins. OTEL running totals always exceed JSONL partial values, so OTEL naturally wins for metrics without any special logic.
233
+ **Sessions table uses simple replacement on upsert for metric fields.** JSONL values act as initial estimates. `recomputeSessionCostsFromOtel` runs after ingest and on server startup to overwrite with authoritative OTEL data. For sessions without OTEL, cost falls back to `SUM(turns.cost_usd)`. Duration is always `SUM(turns.duration_ms)`.
234
+
235
+ **OTEL deltas are accumulated, not replaced.** `updateSessionFromOtel` does `total_cost_usd = total_cost_usd + @cost`. This is correct because OTEL sends deltas per window. Do not change this to an assignment. The accumulated values are periodically reconciled by `recomputeSessionCostsFromOtel` which recomputes from raw `otel_metrics` rows.
229
236
 
230
- **OTEL deltas are accumulated, not replaced.** `updateSessionFromOtel` does `total_cost_usd = total_cost_usd + @cost`. This is correct because OTEL sends deltas per window. Do not change this to an assignment.
237
+ **OTEL metrics are deduplicated locally.** The `otel_metrics` table has a unique index on `(session_id, name, timestamp, type)` matching the backend's constraint. Without this, `SUM(value)` double-counts duplicates, inflating costs. Inserts use `INSERT OR IGNORE`.
231
238
 
232
239
  **Tool uses are replaced, not appended, on re-ingest.** `replaceToolUsesForTurn` deletes then re-inserts. This prevents duplication when the watcher re-ingests a live session file on every new turn.
233
240
 
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4HpC,wBAAgB,QAAQ,IAAI,OAAO,CA0QlC"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4HpC,wBAAgB,QAAQ,IAAI,OAAO,CA+QlC"}
@@ -307,6 +307,10 @@ export function buildCli() {
307
307
  console.log("Scanning for Claude Code session files...");
308
308
  const result = await ingestAllSessions(repo, { force: opts.force, noTag: opts.tag === false });
309
309
  console.log(`Ingested: ${result.ingested} Skipped: ${result.skipped}`);
310
+ // Recompute costs from OTEL to overwrite JSONL estimates with authoritative data
311
+ const fixed = repo.recomputeSessionCostsFromOtel();
312
+ if (fixed > 0)
313
+ console.log(`Recomputed costs for ${fixed} sessions from OTEL data`);
310
314
  db.close();
311
315
  });
312
316
  program
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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"}
@@ -58,6 +58,21 @@
58
58
  .source-badge.local { border-color: var(--blue); color: var(--blue); }
59
59
  .source-badge.clickable { cursor: pointer; }
60
60
  .source-badge.clickable:hover { opacity: 0.7; }
61
+ .view-toggle {
62
+ background: none;
63
+ border: 1px solid var(--border);
64
+ color: var(--text-dim);
65
+ padding: 4px 10px;
66
+ border-radius: 6px;
67
+ cursor: pointer;
68
+ font-family: var(--mono);
69
+ font-size: 13px;
70
+ font-weight: 600;
71
+ min-width: 32px;
72
+ transition: border-color 0.15s, color 0.15s;
73
+ }
74
+ .view-toggle:hover { border-color: var(--accent); color: var(--text); }
75
+ .view-toggle.tokens { color: var(--blue, #64b5f6); border-color: var(--blue, #64b5f6); }
61
76
  .auto-btn {
62
77
  background: none;
63
78
  border: 1px solid var(--border);
@@ -437,6 +452,7 @@
437
452
  <span class="subtitle">Agent Observability</span>
438
453
  <div class="header-right">
439
454
  <span class="source-badge" id="source-badge" style="display:none" onclick="toggleDataSource()">Local</span>
455
+ <button class="view-toggle" id="view-mode-toggle" onclick="toggleViewMode()" title="Switch between cost and token view">$</button>
440
456
  <button class="auto-btn" onclick="manualRefresh()" title="Auto-refresh every 10s">
441
457
  <span class="live-dot"></span>
442
458
  Auto
@@ -458,9 +474,9 @@
458
474
  <div id="view-summary" class="view active">
459
475
  <div class="time-selector"></div>
460
476
  <div class="stats-grid" id="summary-stats"></div>
461
- <div class="chart-card"><h3>Daily Cost (30d)</h3><canvas id="chart-daily-cost"></canvas></div>
477
+ <div class="chart-card"><h3 id="chart-title">Daily Cost (30d)</h3><canvas id="chart-daily-cost"></canvas></div>
462
478
  <div class="panel">
463
- <div class="panel-header"><span>Cost by Project</span></div>
479
+ <div class="panel-header"><span id="project-panel-title">Cost by Project</span></div>
464
480
  <ul class="project-list" id="project-breakdown"></ul>
465
481
  </div>
466
482
  </div>
@@ -512,7 +528,7 @@
512
528
  <th class="sortable" data-sort="sessions:project_path">Project</th>
513
529
  <th class="sortable" data-sort="sessions:started_at">Started</th>
514
530
  <th class="sortable" data-sort="sessions:total_duration_ms">Duration</th>
515
- <th class="sortable" data-sort="sessions:total_turns">Turns</th>
531
+ <th class="sortable" data-sort="sessions:user_turns">Prompts</th>
516
532
  <th class="sortable desc" data-sort="sessions:total_cost_usd">Cost</th>
517
533
  <th class="sortable" data-sort="sessions:model">Model</th>
518
534
  </tr></thead>
@@ -640,6 +656,7 @@ let remoteAvailable = false;
640
656
  let autoRefreshTimer = null;
641
657
  let currentView = 'summary';
642
658
  let currentTimeWindow = '7d';
659
+ let viewMode = 'cost'; // 'cost' or 'tokens'
643
660
  let previousView = 'tasks';
644
661
  let allTaskGroups = [];
645
662
  let allTagStats = [];
@@ -712,7 +729,16 @@ function toggleDataSource() {
712
729
  async function fetchJson(path) {
713
730
  if (dataSource === 'remote' && typeof ZOZUL_CONFIG !== 'undefined') {
714
731
  try {
715
- const url = ZOZUL_CONFIG.remote.baseUrl + path.replace('/api/', '/');
732
+ let remotePath = path.replace('/api/', '/');
733
+ // Ensure trailing slash before query params to avoid 307 redirects (which drop headers)
734
+ const qIdx = remotePath.indexOf('?');
735
+ if (qIdx === -1) {
736
+ if (!remotePath.endsWith('/')) remotePath += '/';
737
+ } else {
738
+ const base = remotePath.slice(0, qIdx);
739
+ if (!base.endsWith('/')) remotePath = base + '/' + remotePath.slice(qIdx);
740
+ }
741
+ const url = ZOZUL_CONFIG.remote.baseUrl + remotePath;
716
742
  const res = await fetch(url, { headers: { 'X-API-Key': ZOZUL_CONFIG.remote.apiKey } });
717
743
  if (res.ok) return res.json();
718
744
  } catch {}
@@ -771,6 +797,24 @@ function fmtCost(n) {
771
797
  const v = n ?? 0;
772
798
  return v >= 1 ? '$' + v.toFixed(2) : '$' + v.toFixed(4);
773
799
  }
800
+ function fmtTokens(n) {
801
+ const v = n ?? 0;
802
+ if (v >= 1_000_000) return (v / 1_000_000).toFixed(1) + 'M';
803
+ if (v >= 1_000) return (v / 1_000).toFixed(1) + 'K';
804
+ return v.toLocaleString();
805
+ }
806
+ function fmtMetric(cost, tokens) {
807
+ if (viewMode === 'tokens') return tokens != null ? fmtTokens(tokens) : '\u2014';
808
+ return fmtCost(cost);
809
+ }
810
+ function toggleViewMode() {
811
+ viewMode = viewMode === 'cost' ? 'tokens' : 'cost';
812
+ const btn = document.getElementById('view-mode-toggle');
813
+ btn.textContent = viewMode === 'cost' ? '$' : 'T';
814
+ btn.classList.toggle('tokens', viewMode === 'tokens');
815
+ btn.title = viewMode === 'cost' ? 'Switch to token view' : 'Switch to cost view';
816
+ loadViewData(currentView);
817
+ }
774
818
  function fmtDuration(ms) {
775
819
  if (!ms || ms <= 0) return '\u2014';
776
820
  const s = Math.floor(ms / 1000);
@@ -836,9 +880,13 @@ function timeQueryString() {
836
880
  return 'from=' + encodeURIComponent(from) + '&to=' + encodeURIComponent(now.toISOString());
837
881
  }
838
882
 
883
+ function chartStepForWindow() {
884
+ return currentTimeWindow === '24h' ? '1h' : '1d';
885
+ }
886
+
839
887
  function renderTimeSelectors() {
840
888
  document.querySelectorAll('.time-selector').forEach(el => {
841
- el.innerHTML = ['7d', '30d', 'all'].map(w =>
889
+ el.innerHTML = ['24h', '7d', '30d', 'all'].map(w =>
842
890
  '<button class="time-btn' + (w === currentTimeWindow ? ' active' : '') + '" data-window="' + w + '">' +
843
891
  (w === 'all' ? 'All' : w) + '</button>'
844
892
  ).join('');
@@ -934,18 +982,23 @@ async function loadSummary() {
934
982
  const timeQs = timeQueryString();
935
983
  const timeParam = timeQs ? '?' + timeQs : '';
936
984
  const timeSep = timeQs ? '&' + timeQs : '';
937
- const [stats, tasks, costSeries, sessionsResp] = await Promise.all([
985
+ const chartRange = currentTimeWindow === 'all' ? '90d' : currentTimeWindow;
986
+ const chartStep = currentTimeWindow === '24h' ? '1h' : '1d';
987
+ const [stats, tasks, costSeries, tokenSeries, sessionsResp] = await Promise.all([
938
988
  fetchJson('/api/stats' + timeParam),
939
989
  fetchJson('/api/tasks'),
940
- fetchJson('/api/metrics/cost?range=' + (currentTimeWindow === 'all' ? '90d' : currentTimeWindow) + '&step=1d'),
990
+ fetchJson('/api/metrics/cost?range=' + chartRange + '&step=' + chartStep),
991
+ fetchJson('/api/metrics/tokens?range=' + chartRange + '&step=' + chartStep),
941
992
  fetchJson('/api/sessions?limit=500&offset=0' + timeSep),
942
993
  ]);
994
+ const totalTokens = (stats.total_input_tokens ?? 0) + (stats.total_output_tokens ?? 0) + (stats.total_cache_read_tokens ?? 0);
943
995
  renderSummaryStats({
944
996
  totalCost: stats.total_cost_usd ?? 0,
997
+ totalTokens,
945
998
  totalSessions: stats.total_sessions ?? 0,
946
999
  totalTasks: tasks.length ?? 0,
947
1000
  });
948
- renderDailyCostChart(costSeries);
1001
+ renderUsageChart(costSeries, tokenSeries);
949
1002
  const sessions = Array.isArray(sessionsResp) ? sessionsResp : sessionsResp.sessions;
950
1003
  renderProjectBreakdown(sessions);
951
1004
  } catch (e) {
@@ -953,18 +1006,52 @@ async function loadSummary() {
953
1006
  }
954
1007
  }
955
1008
 
956
- function renderDailyCostChart(costData) {
957
- if (!costData || !costData.length) return;
958
- const labels = costData.map(d => {
1009
+ function renderUsageChart(costData, tokenData) {
1010
+ const isTokens = viewMode === 'tokens';
1011
+ const isHourly = currentTimeWindow === '24h';
1012
+ const sourceData = isTokens ? tokenData : costData;
1013
+
1014
+ const titleEl = document.getElementById('chart-title');
1015
+ if (titleEl) {
1016
+ const period = isHourly ? 'Hourly' : 'Daily';
1017
+ titleEl.textContent = isTokens ? period + ' Tokens' : period + ' Cost';
1018
+ }
1019
+
1020
+ if (!sourceData || !sourceData.length) return;
1021
+
1022
+ const labels = sourceData.map(d => {
959
1023
  const dt = new Date(d.timestamp);
960
- return dt.toLocaleDateString(undefined, { month: 'short', day: 'numeric' });
1024
+ return isHourly
1025
+ ? dt.toLocaleTimeString(undefined, { hour: 'numeric', hour12: true })
1026
+ : dt.toLocaleDateString(undefined, { month: 'short', day: 'numeric' });
961
1027
  });
962
- const data = costData.map(d => d.cost);
1028
+
1029
+ let data, label, bgColor, borderColor, tooltipFmt, yFmt;
1030
+ if (isTokens) {
1031
+ data = sourceData.map(d => (d.input ?? 0) + (d.output ?? 0) + (d.cache_read ?? 0));
1032
+ label = 'Tokens';
1033
+ bgColor = 'rgba(100,181,246,0.3)';
1034
+ borderColor = '#64b5f6';
1035
+ tooltipFmt = ctx => fmtTokens(ctx.parsed.y);
1036
+ yFmt = v => fmtTokens(v);
1037
+ } else {
1038
+ data = sourceData.map(d => d.cost);
1039
+ label = 'Cost (USD)';
1040
+ bgColor = 'rgba(255,152,0,0.3)';
1041
+ borderColor = '#ff9800';
1042
+ tooltipFmt = ctx => '$' + ctx.parsed.y.toFixed(4);
1043
+ yFmt = v => '$' + v.toFixed(2);
1044
+ }
963
1045
 
964
1046
  const existing = chartInstances['chart-daily-cost'];
965
1047
  if (existing) {
966
1048
  existing.data.labels = labels;
967
1049
  existing.data.datasets[0].data = data;
1050
+ existing.data.datasets[0].label = label;
1051
+ existing.data.datasets[0].backgroundColor = bgColor;
1052
+ existing.data.datasets[0].borderColor = borderColor;
1053
+ existing.options.plugins.tooltip.callbacks.label = tooltipFmt;
1054
+ existing.options.scales.y.ticks.callback = yFmt;
968
1055
  existing.update('none');
969
1056
  return;
970
1057
  }
@@ -976,10 +1063,10 @@ function renderDailyCostChart(costData) {
976
1063
  data: {
977
1064
  labels,
978
1065
  datasets: [{
979
- label: 'Cost (USD)',
1066
+ label,
980
1067
  data,
981
- backgroundColor: 'rgba(255,152,0,0.3)',
982
- borderColor: '#ff9800',
1068
+ backgroundColor: bgColor,
1069
+ borderColor,
983
1070
  borderWidth: 1,
984
1071
  borderRadius: 3,
985
1072
  }]
@@ -988,11 +1075,11 @@ function renderDailyCostChart(costData) {
988
1075
  responsive: true,
989
1076
  plugins: {
990
1077
  legend: { display: false },
991
- tooltip: { callbacks: { label: ctx => '$' + ctx.parsed.y.toFixed(4) } },
1078
+ tooltip: { callbacks: { label: tooltipFmt } },
992
1079
  },
993
1080
  scales: {
994
1081
  x: { ticks: { color: '#8b8fa3', font: { family: '"JetBrains Mono", monospace', size: 10 } } },
995
- y: { ticks: { color: '#8b8fa3', font: { family: '"JetBrains Mono", monospace', size: 10 }, callback: v => '$' + v.toFixed(2) } },
1082
+ y: { ticks: { color: '#8b8fa3', font: { family: '"JetBrains Mono", monospace', size: 10 }, callback: yFmt } },
996
1083
  }
997
1084
  }
998
1085
  });
@@ -1009,26 +1096,34 @@ function renderProjectBreakdown(sessions) {
1009
1096
  const byProject = {};
1010
1097
  for (const s of sessions) {
1011
1098
  const proj = s.project_path || 'Unknown';
1012
- if (!byProject[proj]) byProject[proj] = 0;
1013
- byProject[proj] += s.total_cost_usd || 0;
1014
- }
1015
- const sorted = Object.entries(byProject).sort((a, b) => b[1] - a[1]);
1016
- const maxCost = sorted[0]?.[1] || 1;
1017
-
1018
- el.innerHTML = sorted.slice(0, 10).map(([proj, cost]) => {
1019
- const pct = Math.round(cost / maxCost * 100);
1099
+ if (!byProject[proj]) byProject[proj] = { cost: 0, tokens: 0 };
1100
+ byProject[proj].cost += s.total_cost_usd || 0;
1101
+ byProject[proj].tokens += (s.total_input_tokens || 0) + (s.total_output_tokens || 0) + (s.total_cache_read_tokens || 0);
1102
+ }
1103
+ const isTokens = viewMode === 'tokens';
1104
+ const panelTitle = document.getElementById('project-panel-title');
1105
+ if (panelTitle) panelTitle.textContent = isTokens ? 'Tokens by Project' : 'Cost by Project';
1106
+ const sorted = Object.entries(byProject).sort((a, b) => (isTokens ? b[1].tokens - a[1].tokens : b[1].cost - a[1].cost));
1107
+ const maxVal = (isTokens ? sorted[0]?.[1].tokens : sorted[0]?.[1].cost) || 1;
1108
+
1109
+ el.innerHTML = sorted.slice(0, 10).map(([proj, vals]) => {
1110
+ const val = isTokens ? vals.tokens : vals.cost;
1111
+ const pct = Math.round(val / maxVal * 100);
1020
1112
  return '<li class="project-item">' +
1021
1113
  '<span class="project-name" title="' + escHtml(proj) + '">' + escHtml(basename(proj)) + '</span>' +
1022
1114
  '<div class="project-bar-wrap"><div class="project-bar" style="width:' + pct + '%"></div></div>' +
1023
- '<span class="project-cost">' + fmtCost(cost) + '</span>' +
1115
+ '<span class="project-cost">' + (isTokens ? fmtTokens(val) : fmtCost(val)) + '</span>' +
1024
1116
  '</li>';
1025
1117
  }).join('');
1026
1118
  }
1027
1119
 
1028
1120
  function renderSummaryStats(s) {
1029
1121
  const grid = document.getElementById('summary-stats');
1122
+ const primary = viewMode === 'tokens'
1123
+ ? { label: 'Total Tokens', value: fmtTokens(s.totalTokens) }
1124
+ : { label: 'Total Cost', value: fmtCost(s.totalCost) };
1030
1125
  grid.innerHTML = [
1031
- { label: 'Total Cost', value: fmtCost(s.totalCost), hero: true },
1126
+ { label: primary.label, value: primary.value, hero: true },
1032
1127
  { label: 'Total Sessions', value: fmtNum(s.totalSessions), hero: true },
1033
1128
  { label: 'Total Tasks', value: fmtNum(s.totalTasks), hero: true },
1034
1129
  ].map(c =>
@@ -1066,7 +1161,7 @@ function renderTaskTable(groups) {
1066
1161
  return '<tr class="clickable" onclick="showTaskDetail(\'' + escHtml(g.tags).replace(/'/g, "\\'") + '\')">' +
1067
1162
  '<td>' + pills + '</td>' +
1068
1163
  '<td>' + fmtDuration(g.total_duration_ms) + '</td>' +
1069
- '<td><span class="badge badge-cost">' + fmtCost(g.total_cost_usd) + '</span></td>' +
1164
+ '<td><span class="badge badge-cost">' + fmtMetric(g.total_cost_usd, g.total_tokens) + '</span></td>' +
1070
1165
  '<td>' + fmtNum(g.human_interventions) + '</td>' +
1071
1166
  '<td title="' + fmtAbsolute(g.last_seen) + '">' + fmtRelative(g.last_seen) + '</td>' +
1072
1167
  '</tr>';
@@ -1186,8 +1281,10 @@ async function loadTags() {
1186
1281
  try {
1187
1282
  const tasks = await fetchJson('/api/tasks');
1188
1283
  if (!tasks.length) { allTagStats = []; renderTagTable([]); return; }
1284
+ const timeQs = timeQueryString();
1285
+ const timeSep = timeQs ? '&' + timeQs : '';
1189
1286
  const statsList = await Promise.all(
1190
- tasks.map(t => fetchJson('/api/tasks/stats?tags=' + encodeURIComponent(t.task) + '&mode=any')
1287
+ tasks.map(t => fetchJson('/api/tasks/stats?tags=' + encodeURIComponent(t.task) + '&mode=any' + timeSep)
1191
1288
  .then(s => ({ ...s, tag: t.task, last_seen: t.last_tagged }))
1192
1289
  .catch(() => ({ tag: t.task, turn_count: t.turn_count, human_interventions: 0, total_duration_ms: 0, total_cost_usd: 0, last_seen: t.last_tagged }))
1193
1290
  )
@@ -1198,6 +1295,7 @@ async function loadTags() {
1198
1295
  human_interventions: s.user_turns ?? s.human_interventions ?? 0,
1199
1296
  total_duration_ms: s.total_duration_ms ?? 0,
1200
1297
  total_cost_usd: s.total_cost_usd ?? 0,
1298
+ total_tokens: (s.total_input_tokens ?? 0) + (s.total_output_tokens ?? 0) + (s.total_cache_read_tokens ?? 0),
1201
1299
  last_seen: s.last_seen,
1202
1300
  }));
1203
1301
  renderTagTable(sortData(allTagStats, sortState.tags));
@@ -1216,7 +1314,7 @@ function renderTagTable(stats) {
1216
1314
  '<tr class="clickable" onclick="showTagDetail(\'' + escHtml(t.tag).replace(/'/g, "\\'") + '\')">' +
1217
1315
  '<td><span class="tag-pill">' + escHtml(t.tag) + '</span></td>' +
1218
1316
  '<td>' + fmtDuration(t.total_duration_ms) + '</td>' +
1219
- '<td><span class="badge badge-cost">' + fmtCost(t.total_cost_usd) + '</span></td>' +
1317
+ '<td><span class="badge badge-cost">' + fmtMetric(t.total_cost_usd, t.total_tokens) + '</span></td>' +
1220
1318
  '<td>' + fmtNum(t.human_interventions) + '</td>' +
1221
1319
  '<td title="' + fmtAbsolute(t.last_seen) + '">' + fmtRelative(t.last_seen) + '</td>' +
1222
1320
  '</tr>'
@@ -1360,7 +1458,7 @@ async function showSession(id, returnTo) {
1360
1458
  const [session, turns, subagents] = await Promise.all([
1361
1459
  fetchJson('/api/sessions/' + id),
1362
1460
  fetchJson('/api/sessions/' + id + '/turns'),
1363
- fetchJson('/api/sessions/' + id + '/subagents'),
1461
+ fetchJson('/api/sessions/' + id + '/subagents').catch(() => []),
1364
1462
  ]);
1365
1463
 
1366
1464
  const stats = [
@@ -1368,7 +1466,7 @@ async function showSession(id, returnTo) {
1368
1466
  { label: 'Project', value: '<span title="' + escHtml(session.project_path ?? '') + '">' + escHtml(basename(session.project_path)) + '</span>' },
1369
1467
  { label: 'Model', value: '<span style="font-family:var(--mono);font-size:13px">' + escHtml(session.model ?? '\u2014') + '</span>' },
1370
1468
  { label: 'Duration', value: fmtDuration(session.total_duration_ms) },
1371
- { label: 'Turns', value: session.total_turns },
1469
+ { label: 'Prompts', value: session.user_turns ?? session.total_turns },
1372
1470
  { label: 'Input Tokens', value: fmtNum(session.total_input_tokens) },
1373
1471
  { label: 'Output Tokens', value: fmtNum(session.total_output_tokens) },
1374
1472
  { label: 'Cost', value: fmtCost(session.total_cost_usd) },
@@ -1535,8 +1633,8 @@ function renderSessionsTable(sessions) {
1535
1633
  '<td' + projAttr + '>' + escHtml(proj) + '</td>' +
1536
1634
  '<td title="' + fmtAbsolute(s.started_at) + '">' + fmtRelative(s.started_at) + '</td>' +
1537
1635
  '<td>' + fmtDuration(s.total_duration_ms) + '</td>' +
1538
- '<td>' + (s.total_turns ?? 0) + '</td>' +
1539
- '<td><span class="badge badge-cost">' + fmtCost(s.total_cost_usd) + '</span></td>' +
1636
+ '<td>' + (s.user_turns ?? s.total_turns ?? 0) + '</td>' +
1637
+ '<td><span class="badge badge-cost">' + fmtMetric(s.total_cost_usd, (s.total_input_tokens || 0) + (s.total_output_tokens || 0) + (s.total_cache_read_tokens || 0)) + '</span></td>' +
1540
1638
  '<td style="font-family:var(--mono);font-size:11px;color:var(--text-dim)">' + escHtml(s.model ?? '\u2014') + '</td>' +
1541
1639
  '</tr>';
1542
1640
  }).join('');
@@ -1 +1 @@
1
- {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/storage/db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/storage/db.ts"],"names":[],"mappings":"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"}
@@ -125,5 +125,17 @@ function migrate(db) {
125
125
  catch { /* column already exists */ }
126
126
  }
127
127
  db.exec(`CREATE INDEX IF NOT EXISTS idx_sessions_parent ON sessions(parent_session_id)`);
128
+ // Deduplicate otel_metrics and add unique constraint to match backend
129
+ try {
130
+ db.exec(`
131
+ DELETE FROM otel_metrics WHERE id NOT IN (
132
+ SELECT MIN(id) FROM otel_metrics
133
+ GROUP BY session_id, name, timestamp, json_extract(attributes, '$.type')
134
+ );
135
+ CREATE UNIQUE INDEX uq_otel_metrics_session_name_ts_type
136
+ ON otel_metrics(session_id, name, timestamp, json_extract(attributes, '$.type'));
137
+ `);
138
+ }
139
+ catch { /* index already exists */ }
128
140
  }
129
141
  //# sourceMappingURL=db.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/storage/db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AACzD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;AAE9D,MAAM,UAAU,KAAK,CAAC,SAAiB,eAAe;IACpD,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,OAAO,CAAC,EAAqB;IACpC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmGP,CAAC,CAAC;IAEH,0EAA0E;IAC1E,MAAM,UAAU,GAAG;QACjB,wDAAwD;QACxD,iDAAiD;KAClD,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,CAAC;YAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,CAAC;IAC7D,CAAC;IACD,EAAE,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;AAC3F,CAAC"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/storage/db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AACzD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;AAE9D,MAAM,UAAU,KAAK,CAAC,SAAiB,eAAe;IACpD,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,OAAO,CAAC,EAAqB;IACpC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmGP,CAAC,CAAC;IAEH,0EAA0E;IAC1E,MAAM,UAAU,GAAG;QACjB,wDAAwD;QACxD,iDAAiD;KAClD,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,CAAC;YAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,CAAC;IAC7D,CAAC;IACD,EAAE,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;IAEzF,sEAAsE;IACtE,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC;;;;;;;KAOP,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC,CAAC,0BAA0B,CAAC,CAAC;AACxC,CAAC"}
@@ -52,9 +52,13 @@ export declare class SessionRepo {
52
52
  timestamp: string;
53
53
  payload: string;
54
54
  }): void;
55
- listSessions(limit?: number, offset?: number, from?: string, to?: string): SessionRow[];
55
+ listSessions(limit?: number, offset?: number, from?: string, to?: string): (SessionRow & {
56
+ user_turns: number;
57
+ })[];
56
58
  countSessions(from?: string, to?: string): number;
57
- getSession(id: string): SessionRow | undefined;
59
+ getSession(id: string): (SessionRow & {
60
+ user_turns: number;
61
+ }) | undefined;
58
62
  getSubSessions(parentSessionId: string): SessionRow[];
59
63
  getSessionTurns(sessionId: string): TurnRow[];
60
64
  getSessionToolUses(sessionId: string): unknown[];
@@ -161,6 +165,7 @@ export declare class SessionRepo {
161
165
  human_interventions: number;
162
166
  total_duration_ms: number;
163
167
  total_cost_usd: number;
168
+ total_tokens: number;
164
169
  last_seen: string;
165
170
  }[];
166
171
  recomputeSessionCostsFromOtel(): number;
@@ -1 +1 @@
1
- {"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../../src/storage/repo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../../src/storage/repo.ts"],"names":[],"mappings":"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"}