eklavya 1.94.1 → 1.96.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -126,9 +126,10 @@ npx eklavya --version
126
126
 
127
127
  The [CLI reference](https://eklavya-run.web.app/docs/cli/) lists all commands and
128
128
  flags. `feedback generate` reviews one of your earlier prompts, using what your later prompts in that session had to add, when `feedback.enabled`,
129
- memory and `providers.observer` are set. Once a day, after your first answer, the Learning dashboard opens one card on arrival (a milestone, a welcome back, the most overdue concept and so on), chosen by the engine in `assets/daily-card.cjs`; the Daily card switch on Settings, Companion, turns it off. Dashboard counts of 1,000 or more read short (1K, 1.2K, 1M). The dashboard reads the database (its Concepts page shows each concept's tags and filters by one with `?tag=`) and has five guarded writes: a setting
130
- change, a correction of a missed answer (which can also complete a level), and acknowledging, deleting or counting the opening of a
131
- feedback item (`POST /api/feedback/acknowledge`, `/delete`, `/opened`; the reads are `GET /api/feedback` and `/api/feedback/list`). An open page listens to
129
+ memory and `providers.observer` are set. Once a day, after your first answer, the Learning dashboard opens one card on arrival (a milestone, a welcome back, the most overdue concept and so on), chosen by the engine in `assets/daily-card.cjs`; the Daily card switch on Settings, Companion, turns it off. Dashboard counts of 1,000 or more read short (1K, 1.2K, 1M). The dashboard reads the database (its Concepts page shows each concept's tags and filters by one with `?tag=`) and has guarded writes: a setting
130
+ change, a correction of a missed answer (which can also complete a level), acknowledging, deleting or counting the opening of a
131
+ feedback item (`POST /api/feedback/acknowledge`, `/delete`, `/opened`; the reads are `GET /api/feedback` and `/api/feedback/list`),
132
+ and a clean slate (`POST /api/clean-slate` with `{ "confirm": "clean slate" }`: the database moves aside to `knowledge.db.backup-<time>` and the server swaps in a new, empty one without restarting). `GET /api/session?id=` answers what Eklavya did in one session (cost, transcript path, its tool calls, memory sent, opened and used, and the savings estimates) for the session page Learning, Memory and Cost share. "Used" counts a session resumed after it was first counted (a Claude desktop session stays open for days): once it is quiet again, the next session start counts what is new. An open page listens to
132
133
  `GET /api/events`, a stream of the change cursor (a counter that moves on every
133
134
  write it would show; `/api/cursor` returns the same value on its own), and redraws in place
134
135
  when it moves. In a repository checkout, `node mcp/scripts/dashboard-perf.mjs`
@@ -799,6 +799,10 @@
799
799
  .streak__talk .say { margin-bottom:30px; }
800
800
  /* Here the archer stands to the right of the bubble, so its tail points right. */
801
801
  .streak__talk .say::after { left:auto; right:-9px; border-left:0; border-bottom:0; border-right:1.5px solid var(--ink); border-top:1.5px solid var(--ink); }
802
+ /* The session page and the Cost dashboard: a longer line, so a wider bubble that still fits a phone. */
803
+ .sess-talk { margin:0 0 var(--space-5); }
804
+ .sess-talk .say { flex:1 1 auto; max-width:min(520px, 100%); }
805
+ .sub-h { margin:var(--space-4) 0 var(--space-2); font:500 10.5px/1 var(--font-mono); letter-spacing:.18em; text-transform:uppercase; color:var(--faint); }
802
806
  @media (prefers-reduced-motion:reduce) { dialog.daily[open], .daily__flame.is-live { animation:none; }
803
807
  .daily__ring .f, .daily__bar > b, .daily__bars i { transition:none; } .daily__confetti { display:none; } }
804
808
  dialog.dlg { width:min(460px, calc(100vw - 32px)); margin:auto; padding:0; border:1px solid var(--line-2); border-radius:0;
@@ -812,6 +816,13 @@
812
816
  .dlg__f { display:flex; justify-content:flex-end; gap:var(--space-3); padding:var(--space-3) var(--space-5) var(--space-5); }
813
817
  .btn--spot { background:var(--spot); border-color:var(--spot); color:var(--spot-ink); }
814
818
  .btn--danger { background:var(--error); border-color:var(--error); color:var(--bg); }
819
+ .card.danger { border-color:var(--error); display:grid; gap:var(--space-4); justify-items:start; }
820
+ .card.danger h2 { margin:0; color:var(--error); }
821
+ .card.danger p { margin:0; }
822
+ .card.danger form:not([hidden]) { display:grid; gap:var(--space-3); justify-items:start; }
823
+ #slate-in { font:inherit; font-family:var(--font-mono); padding:8px 10px; width:min(320px, 100%);
824
+ background:var(--bg); color:var(--fg, inherit); border:1px solid var(--line); }
825
+ #slate-in:focus-visible { outline:none; box-shadow:var(--ring); }
815
826
  @media (max-width:760px) { .toasts { right:0; left:0; bottom:0; width:100%; padding:0 var(--space-4) var(--space-4); } }
816
827
  @media (prefers-reduced-motion:reduce) { .toast { animation:none; } .toast.is-out { transition:none; } }
817
828
 
@@ -1391,6 +1402,7 @@ const stamp = (ts) => {
1391
1402
  const COMPACT = new Intl.NumberFormat('en', { notation:'compact', maximumFractionDigits:1 });
1392
1403
  const fmtN = (n) => (typeof n === 'number' && Math.abs(n) >= 1000 ? COMPACT.format(n) : n);
1393
1404
  const plural = (n, w) => `${fmtN(n)} ${w}${n === 1 ? '' : 's'}`;
1405
+ const memories = (n) => `${fmtN(n)} ${n === 1 ? 'memory' : 'memories'}`;
1394
1406
 
1395
1407
  const TIER = { 1:'recall', 2:'mechanism', 3:'judgement', 4:'failure modes', 5:'design' };
1396
1408
  const tierLabel = (t) => `T${t}${TIER[t] ? ' ' + TIER[t] : ''}`;
@@ -2432,6 +2444,10 @@ const SLOT_MIN = {
2432
2444
  'entry-body': 650, 'sess-lookup': 360, 'sess-mem': 160, 'fb-item': 520, settings: 1580,
2433
2445
  // Two rows of tiles and the two notes under them, with nothing priced yet (420px at 1280 here, ~465px where the
2434
2446
  // notes wrap one line more, as on CI); a Cost list's one empty line.
2447
+ // What Eklavya did in a session: the archer's line, four tiles, the transcript card and its closed folds, 620px at
2448
+ // 1280 here and taller where text wraps one line more, as on CI. Held above both, so it can only shrink: a box smaller
2449
+ // than what comes grows while the memory folds below it shrink, and the footer bounces.
2450
+ 'sess-ek': 700,
2435
2451
  'cost-main': 480, 'cost-sessions': 94, 'cost-calls': 94, 'cost-guard': 94, 'cost-tools': 94, 'cost-facts': 94,
2436
2452
  };
2437
2453
  /** A list's room: [how many rows the page knows of, the most one page holds, px a row takes, px around the rows (pager, rule)]. Measured at 1280px. */
@@ -3141,7 +3157,7 @@ function viewSession(id) {
3141
3157
  // half, and its lines and answers whatever their age (`learning`).
3142
3158
  return slot('sess-lookup', '/api/memory/sessions?' + memScope(new URLSearchParams({ session: id })), (d) => {
3143
3159
  const found = sessionFromLookup(id, d);
3144
- return found ? sessionBody(found) : noSession(id);
3160
+ return found ? sessionBody(found) : sessionEklavya(id, true);
3145
3161
  }, { label: 'Looking up this session…', cls: 'stack' });
3146
3162
  }
3147
3163
 
@@ -3195,6 +3211,8 @@ function sessionBody(s) {
3195
3211
  ], `Session <code class="slug">${esc(s.id)}</code>. The learning half and the memory half are joined on the
3196
3212
  session id the host handed both — the one association between them that is recorded rather than inferred.`, back),
3197
3213
 
3214
+ sessionEklavya(id),
3215
+
3198
3216
  work.length
3199
3217
  ? card('What the work taught', 'Each line is what the agent said the concept was for, in the code it wrote.', lines(work.map(conceptLine)))
3200
3218
  : '',
@@ -3214,6 +3232,95 @@ function sessionBody(s) {
3214
3232
  ].join('');
3215
3233
  }
3216
3234
 
3235
+ /**
3236
+ * What Eklavya did in one session, the same on every workflow's session page: what the session cost and
3237
+ * Eklavya's share of it (measured), where its transcript is, the Eklavya tools it called, what memory gave it
3238
+ * and what it gave memory, and the savings estimates. `alone` draws the page head too, for a session that only
3239
+ * the ledger or memory knows; one with nothing recorded at all is not found.
3240
+ */
3241
+ function sessionEklavya(id, alone = false) {
3242
+ return slot('sess-ek', '/api/session?id=' + encodeURIComponent(id), (d) => drawSessionEklavya(d, alone),
3243
+ { label: 'Reading what Eklavya did…', cls: 'stack' });
3244
+ }
3245
+
3246
+ /** The recall estimate in words; never money (issue #259). */
3247
+ const recallSaving = (r) => r.kind === 'saving' ? `${r.percent}% smaller than its sources`
3248
+ : r.kind === 'overhead' ? `${fmtN(r.tokens)} tokens larger than its sources`
3249
+ : r.kind === 'unavailable' ? 'size against its sources unavailable' : 'no context recalled';
3250
+
3251
+ /**
3252
+ * The mascot's line for a session: only figures the page also shows, so it says nothing the numbers do not.
3253
+ * Its face follows them: worried when the loop guard had to step in, happy when memory or a fact was used,
3254
+ * curious when the session was never priced.
3255
+ */
3256
+ function sessionVerdict(d) {
3257
+ const c = d.cost, m = d.memory, sv = d.savings;
3258
+ const own = d.overhead.reduce((a, o) => a + (o.effective || 0), 0);
3259
+ // Background calls are not in the session's total, so they join both sides of the share.
3260
+ const share = c && c.folded && c.effective ? Math.round((100 * (c.eklavya_effective + own)) / (c.effective + own)) : null;
3261
+ const said = [
3262
+ share === null ? 'This session has not been priced yet.' : `I used ${share}% of this session's effective tokens.`,
3263
+ m.applied.count ? `${memories(m.applied.count)} I recalled ${m.applied.count === 1 ? 'was' : 'were'} put to use.` : '',
3264
+ sv.failures_avoided ? `I kept ${plural(sv.failures_avoided, 'known failure')} away (estimated).` : '',
3265
+ sv.guard.redirect ? `I redirected ${plural(sv.guard.redirect, 'stuck turn')}.` : '',
3266
+ m.remembered ? `I remembered ${plural(m.remembered, 'thing')} from it.` : '',
3267
+ ].filter(Boolean).join(' ');
3268
+ const state = sv.guard.redirect ? 'warning' : m.applied.count || sv.failures_avoided ? 'success' : c ? 'info' : 'empty';
3269
+ return `<div class="streak__talk sess-talk"><div class="say">${esc(said)}</div><eklavya-mascot state="${state}" variant="body" size="80"></eklavya-mascot></div>`;
3270
+ }
3271
+
3272
+ function drawSessionEklavya(d, alone) {
3273
+ if (!d.known) return alone ? noSession(d.session_id) : '';
3274
+ const c = d.cost, m = d.memory, sv = d.savings;
3275
+ const own = d.overhead.reduce((a, o) => a + (o.effective || 0), 0);
3276
+ const head = alone
3277
+ ? pageHead(esc(c?.project ? pname(c.project) : 'Session'), [
3278
+ c?.started_at ? `${esc(stamp(c.started_at))}${c.ended_at ? ` → ${esc(stamp(c.ended_at))}` : ''}` : 'not priced yet',
3279
+ c ? plural(c.prompts, 'prompt') : '',
3280
+ ].filter(Boolean), `Session <code class="slug">${esc(d.session_id)}</code>. It logged no concept and asked no question,
3281
+ so only what Eklavya recorded about its cost and memory is here.`,
3282
+ `<a class="page__back" data-go="${esc(href(CUR.wf, 'sessions'))}">← Sessions</a>`, true)
3283
+ : '';
3284
+ const priced = c && c.folded;
3285
+ const stats = tiles([
3286
+ ['Session cost', priced ? c.effective : '—', priced ? `measured · effective tokens · ${c.model ?? 'no model'}${c.unpriced.length ? ' · unpriced' : ''}` : 'priced when the session ends'],
3287
+ ['Eklavya\'s share', priced ? c.eklavya_effective + own : '—', priced ? `measured · ${fmtN(c.quiz_effective)} in turns that called its tools, ${fmtN(c.eklavya_effective - c.quiz_effective)} subagents, ${fmtN(own)} background` : 'priced when the session ends'],
3288
+ ['Memory used', m.applied.count, m.folded ? `measured · ${m.sent.count} sent, ${m.opened.count} opened` : 'counted once the session is folded'],
3289
+ ['Given to memory', m.remembered, `count · ${plural(m.captured, 'event')} captured${m.pending ? `, ${m.pending} waiting` : ''}`],
3290
+ ]);
3291
+ const transcript = d.transcript
3292
+ ? d.transcript.on_disk
3293
+ ? `<div class="cmd"><code>${esc(d.transcript.path)}</code><button type="button" class="cmd__copy" data-copy data-hint="Open it in your editor: one JSON object per line." data-focus="copy:transcript">Copy</button></div>`
3294
+ : `<p class="empty">Claude Code has since deleted it: <code class="slug">${esc(d.transcript.path)}</code></p>`
3295
+ : '<p class="empty">No transcript was recorded: this session started before the cost ledger, or with it off.</p>';
3296
+ const tools = Object.entries(d.tools).sort((a, b) => b[1] - a[1]);
3297
+ // An empty list here is one of three: a plain line, not the mascot's empty state three times over.
3298
+ const entryLines = (list) => !list.count ? '<p class="empty">None.</p>'
3299
+ : lines(list.entries.map((e) => ({ t: esc(e.title), s: esc(e.type ?? ''), go: MH('entry', e.id) })))
3300
+ + (list.count > list.entries.length ? `<p class="slug">The newest ${list.entries.length} of ${list.count}.</p>` : '');
3301
+ const savings = lines([
3302
+ { t: 'Recall', s: `estimated · ${plural(m.recalls, 'recall')} · smaller than the files it summarises, not money saved`, v: esc(recallSaving(sv.recall)) },
3303
+ { t: 'Failures avoided by facts', s: `estimated · ${plural(sv.facts_shown, 'pinned fact')} shown`, v: esc(fmtN(sv.failures_avoided)) },
3304
+ { t: 'Stuck turns redirected', s: `count · ${sv.guard.notice ?? 0} notices, ${sv.guard.judge ?? 0} judge calls`, v: esc(fmtN(sv.guard.redirect ?? 0)) },
3305
+ ]);
3306
+ return [
3307
+ head,
3308
+ sessionVerdict(d),
3309
+ stats,
3310
+ card('Transcript', 'Claude Code\'s own record of the session. Eklavya keeps only its path.', transcript),
3311
+ fold('sess:savings', 'What Eklavya saved', 'estimates', savings,
3312
+ { hint: 'Each figure is an estimate or a count, never money: the work might have gone the same way without it.' }),
3313
+ fold('sess:given', 'What memory gave it', `${m.sent.count} sent · ${m.opened.count} opened · ${m.applied.count} used`,
3314
+ `<h3 class="sub-h">Used</h3>${entryLines(m.applied)}<h3 class="sub-h">Opened</h3>${entryLines(m.opened)}<h3 class="sub-h">Sent</h3>${entryLines(m.sent)}`,
3315
+ { hint: 'Sent: recalled into the session. Opened: read in full with memory_get. Used: the session then read or edited one of its files.' }),
3316
+ tools.length
3317
+ ? fold('sess:tools', 'Eklavya tools it called', plural(tools.reduce((a, [, n]) => a + n, 0), 'call'),
3318
+ lines(tools.map(([name, n]) => ({ t: `<code class="slug">${esc(name)}</code>`, v: esc(fmtN(n)) }))),
3319
+ { hint: 'Measured from the transcript when the session was priced: names and counts, never arguments.' })
3320
+ : '',
3321
+ ].join('');
3322
+ }
3323
+
3217
3324
  /** Where a project was last seen, said plainly. A gone checkout is history, not an error. */
3218
3325
  const whereLine = (p) => p.kind === 'global' ? 'work done outside any repository'
3219
3326
  : p.kind === 'unattributed' ? 'recorded before projects were tracked, or by a session that named none'
@@ -4190,10 +4297,13 @@ $('fix').addEventListener('close', () => {
4190
4297
  $('view').addEventListener('click', (e) => {
4191
4298
  const prune = e.target.closest('[data-prune]');
4192
4299
  if (prune) prunePress(prune);
4300
+ if (e.target.closest('#slate-open')) { $('slate-form').hidden = false; $('slate-in').focus(); }
4193
4301
  if (e.target.closest('#fix-open')) openFix();
4194
4302
  if (e.target.closest('#fix-retry')) loadFix(S.artifacts.find((x) => x.id === CUR.param));
4195
4303
  });
4196
4304
 
4305
+ $('view').addEventListener('submit', (e) => { if (e.target.id === 'slate-form') cleanSlateSubmit(e); });
4306
+
4197
4307
  /**
4198
4308
  * Closing the tab with a correction still open asks first. Browsers show their
4199
4309
  * own generic prompt -- a page cannot set its text -- so the bar carries ours.
@@ -5592,12 +5702,14 @@ const WORKFLOWS = {
5592
5702
  guard: { label: 'Loop guard', view: () => viewCostPage('guard') },
5593
5703
  tools: { label: 'Tool pruning', view: () => viewCostPage('tools') },
5594
5704
  facts: { label: 'Pinned facts', view: () => viewCostPage('facts') },
5705
+ session: { parent: 'sessions', view: (p) => viewSession(p) },
5595
5706
  },
5596
5707
  },
5597
5708
  settings: {
5598
5709
  name: 'Settings',
5599
- groups: [],
5710
+ groups: [{ id: 'danger', label: 'Danger', items: ['danger'] }],
5600
5711
  pages: {
5712
+ danger: { label: 'Clean slate', view: () => viewDanger() },
5601
5713
  dashboard: { label: 'Preferences', view: () => viewSettings('user'), inPage: true },
5602
5714
  user: { parent: 'dashboard', view: () => viewSettings('user'), inPage: true, screen: 'dashboard' },
5603
5715
  project: { parent: 'dashboard', view: () => viewSettings('project'), inPage: true },
@@ -5605,6 +5717,45 @@ const WORKFLOWS = {
5605
5717
  },
5606
5718
  };
5607
5719
 
5720
+ /* ---------- Danger: clean slate ---------- */
5721
+
5722
+ const CLEAN_SLATE = 'clean slate';
5723
+
5724
+ function viewDanger() {
5725
+ return [pageHead('Clean slate', [], `Moves the database aside to a backup file beside it and starts a new, empty one: every answer,
5726
+ mastery score, session, memory and cost record is gone from the dashboard and from recall. Your settings, project settings
5727
+ and artifacts are files and stay. Nothing is deleted: to undo, stop Eklavya and rename the backup back to the database's
5728
+ name. Claude Code sessions that are already open keep writing to the backup until you restart them.`),
5729
+ `<section class="card danger">
5730
+ <h2>Start over with an empty database</h2>
5731
+ <p>Your learning history and project memory leave this dashboard and stop being recalled. The old database is kept as a backup.</p>
5732
+ <button type="button" class="btn btn--danger" id="slate-open">Clean slate…</button>
5733
+ <form id="slate-form" hidden>
5734
+ <label for="slate-in">Type <code>${CLEAN_SLATE}</code> and press Enter to confirm.</label>
5735
+ <input id="slate-in" autocomplete="off" spellcheck="false">
5736
+ <button class="btn btn--danger" id="slate-go">Erase and start over</button>
5737
+ </form>
5738
+ </section>`].join('');
5739
+ }
5740
+
5741
+ function cleanSlateSubmit(e) {
5742
+ e.preventDefault();
5743
+ const field = $('slate-in'), go = $('slate-go');
5744
+ if (field.value.trim().toLowerCase() !== CLEAN_SLATE) {
5745
+ toast.alert(`Type "${CLEAN_SLATE}" exactly to confirm.`, { id: 'slate' });
5746
+ field.focus();
5747
+ return;
5748
+ }
5749
+ go.disabled = true;
5750
+ postJson('/api/clean-slate', { confirm: field.value })
5751
+ .then((r) => ekDialog({ state: 'success', title: 'A clean slate', single: true, ok: 'Open the dashboard',
5752
+ text: `The old database is kept at ${r.backup}. Restart open Claude Code sessions so they use the new one.` }))
5753
+ // The new, empty payload, then the Learning dashboard: the hash change draws it.
5754
+ .then(() => Promise.all([json('/api/state'), json('/api/projects')]))
5755
+ .then(([s, inv]) => { adoptState(s, inv); paintChrome(s, inv); location.hash = href('learning', 'dashboard', undefined, { project: null }); })
5756
+ .catch((err) => { go.disabled = false; toast.alert(String(err.message || err), { id: 'slate' }); });
5757
+ }
5758
+
5608
5759
  /* ---------- Cost (issue #259) ---------- */
5609
5760
 
5610
5761
  /**
@@ -5656,7 +5807,19 @@ function drawCost(d) {
5656
5807
  ? nextStep(`<strong>Memory on vs off:</strong> ${plural(d.experiment.on, 'session')} with memory on, ${plural(d.experiment.off, 'session')} off. Run <code>eklavya experiment memory --report</code> for the medians.`, true)
5657
5808
  : '';
5658
5809
  const net = nextStep('<strong>Net effect:</strong> not computed. It needs the benchmark run with and without these controls; until then only the measured figures above stand.');
5659
- return tiles1 + tiles2 + prune + weeks + experiment + net;
5810
+ return costTalk(d, own) + tiles1 + tiles2 + prune + weeks + experiment + net;
5811
+ }
5812
+
5813
+ /** The mascot's summary of the scope, from the tiles' own figures. */
5814
+ function costTalk(d, own) {
5815
+ if (!d.totals.sessions) return '';
5816
+ const share = Math.round((100 * (d.totals.eklavya_in_sessions + own)) / (d.totals.effective + own || 1));
5817
+ const said = [`Across ${plural(d.totals.sessions, 'priced session')} and my own background calls, I used ${share}% of the effective tokens.`,
5818
+ d.memory_use.applied ? `In ${d.days} days, ${memories(d.memory_use.applied)} I recalled ${d.memory_use.applied === 1 ? 'was' : 'were'} put to use.` : '',
5819
+ d.failures_avoided ? `I kept ${plural(d.failures_avoided, 'known failure')} away (estimated).` : '',
5820
+ 'Open a session to see what I did in it.'].filter(Boolean).join(' ');
5821
+ const state = d.memory_use.applied || d.failures_avoided ? 'success' : 'info';
5822
+ return `<div class="streak__talk sess-talk"><div class="say">${esc(said)}</div><eklavya-mascot state="${state}" variant="body" size="80"></eklavya-mascot></div>`;
5660
5823
  }
5661
5824
 
5662
5825
  function viewCostPage(which) {
@@ -5693,7 +5856,7 @@ function drawCostPage(which, d) {
5693
5856
  if (!d.sessions.length) return empty('No session has been priced yet.');
5694
5857
  const p = page('costsessions', d.sessions.length);
5695
5858
  return table([{ t: 'Session' }, { t: 'Effective', n: 1 }, { t: 'Eklavya', n: 1 }],
5696
- slice(d.sessions, p).map((s) => `<tr><td>${esc(s.started_at ? fmtDate(s.started_at) : '—')} <span class="slug">${esc(s.project ? pname(s.project) : '—')}</span>
5859
+ slice(d.sessions, p).map((s) => `<tr class="row" data-go="${esc(CH('session', s.session_id))}"><td>${esc(s.started_at ? fmtDate(s.started_at) : '—')} <span class="slug">${esc(s.project ? pname(s.project) : '—')}</span>
5697
5860
  <br><code class="slug">${esc(s.model ?? '—')}</code>${s.unpriced ? ' <span class="pill due">unpriced</span>' : ''} <span class="slug">· ${plural(s.prompts, 'prompt')}
5698
5861
  · ${fmtN(s.input)} fresh · ${fmtN(s.cache_read)} cached · ${fmtN(s.cache_write_5m + s.cache_write_1h)} written · ${fmtN(s.output)} out</span></td>
5699
5862
  <td class="num">${fmtN(s.effective)}</td>
@@ -11,7 +11,7 @@ import { foldSessionFacts, injectable, listFacts, retireFact, sessionEvidence }
11
11
  import { openDb } from './db.js';
12
12
  import { initializeGlobalConfig, loadConfig } from './config.js';
13
13
  import { identityFor } from './memory/identity.js';
14
- import { costCsv, foldSession, overheadBySource, quietPending, sessionCosts, weeklyCosts } from './ledger.js';
14
+ import { costCsv, foldSession, memoryUsePending, overheadBySource, quietPending, sessionCosts, weeklyCosts } from './ledger.js';
15
15
  import { bold, dim, failText, heading, paint } from './theme.js';
16
16
  import { guardCounts, judgeTurn } from './loop-guard.js';
17
17
  import { meterProviderCalls } from './ledger.js';
@@ -62,6 +62,8 @@ export async function foldCommand(args, run = defaultRun) {
62
62
  process.stdout.write(`refreshed ${n} outdated entr${n === 1 ? 'y' : 'ies'}\n`);
63
63
  }
64
64
  }
65
+ if (args.includes('--pending'))
66
+ refoldMemoryUse(db, config, memoryUsePending(db, Date.now()));
65
67
  }
66
68
  finally {
67
69
  db.close();
@@ -135,6 +137,16 @@ export async function refreshStale(db, config, project, run) {
135
137
  }
136
138
  return done;
137
139
  }
140
+ /** Folds the memory figures again for sessions resumed since their fold; the cost row stays as it was. */
141
+ export function refoldMemoryUse(db, config, ids) {
142
+ for (const id of ids) {
143
+ const { project } = db.prepare('SELECT project FROM econ_sessions WHERE session_id = ?').get(id);
144
+ if (!project)
145
+ continue;
146
+ foldEntryUse(db, config, project, id, fs.existsSync(path.join(project, '.git')) ? project : null);
147
+ process.stdout.write(`${id}: memory use refolded\n`);
148
+ }
149
+ }
138
150
  /**
139
151
  * What else a folded session teaches, each part failing on its own: the
140
152
  * tool-use evidence pruning proposes from, a pruned tool that has since become
@@ -1 +1 @@
1
- {"version":3,"file":"cli-economy.js","sourceRoot":"","sources":["../src/cli-economy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-economy.js","sourceRoot":"","sources":["../src/cli-economy.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,11 @@
1
+ import fs from 'node:fs';
1
2
  import { overheadBySource, sessionCosts, weeklyCosts } from './ledger.js';
2
3
  import { guardCounts } from './loop-guard.js';
3
4
  import { kept, proposal, writeRecord } from './toolprune-store.js';
4
5
  import { listFacts } from './memory/pinned.js';
5
6
  import { staleCounts } from './memory/use.js';
7
+ import { DELIVERED } from './memory/store.js';
8
+ import { savingsFrom } from './memory/tokens.js';
6
9
  /**
7
10
  * The dashboard's Cost workflow (issue #259): one payload, every figure from
8
11
  * the same rows `eklavya cost --export csv` reads, each tagged with how it
@@ -41,6 +44,11 @@ export function costReport(db, config, project, now = Date.now()) {
41
44
  .prepare(`SELECT COUNT(*) AS n FROM pinned_fact_shown s JOIN pinned_facts f ON f.id = s.fact_id
42
45
  WHERE s.avoided = 1 AND s.shown_at >= ? AND (? IS NULL OR f.project = ?)`)
43
46
  .get(since, project, project).n;
47
+ // Measured: recalled entries a session folded in the window went on to use.
48
+ const applied = db
49
+ .prepare(`SELECT COUNT(*) AS n FROM memory_session_applied a JOIN memory_use_sessions u ON u.session_id = a.session_id
50
+ JOIN memory_entries e ON e.id = a.entry_id WHERE u.folded_at >= ? AND (? IS NULL OR e.project = ?)`)
51
+ .get(since, project, project).n;
44
52
  const sum = (xs) => xs.reduce((a, b) => a + b, 0);
45
53
  return {
46
54
  days: DAYS,
@@ -58,7 +66,7 @@ export function costReport(db, config, project, now = Date.now()) {
58
66
  failures_avoided: avoided,
59
67
  guard: guardCounts(db, project, since),
60
68
  guard_events: guardEvents,
61
- memory_use: { recalls, ...reads, ...staleCounts(db, project) },
69
+ memory_use: { recalls, applied, ...reads, ...staleCounts(db, project) },
62
70
  experiment: { on: arms.on.length, off: arms.off.length, ran: arms.off.length > 0 },
63
71
  tools: project
64
72
  ? { mode: config.economy.toolprune, proposed: proposal(db, config, project), denied: writeRecord(db, project)?.added ?? [], kept: kept(db, project) }
@@ -71,4 +79,85 @@ export function costReport(db, config, project, now = Date.now()) {
71
79
  : [],
72
80
  };
73
81
  }
82
+ const parse = (text, fallback) => {
83
+ try {
84
+ return text ? JSON.parse(text) : fallback;
85
+ }
86
+ catch {
87
+ return fallback;
88
+ }
89
+ };
90
+ /** At most this many entries are named per list on the session page; the counts stay whole. */
91
+ export const SESSION_ENTRY_LIMIT = 50;
92
+ /**
93
+ * One session as the shared session page reads it, from every workflow: what
94
+ * it cost (measured), where its transcript is, which of Eklavya's tools it
95
+ * called, what memory gave it and what it gave memory, and the savings
96
+ * estimates, each tagged with how it was obtained. Answers for any id: when
97
+ * nothing at all is recorded under it, `known` is false and every figure is empty.
98
+ */
99
+ export function sessionReport(db, id) {
100
+ const econ = db
101
+ .prepare(`SELECT session_id, project, transcript_path, model, started_at, ended_at, prompts, requests, tool_calls, tool_errors,
102
+ input, cache_read, cache_write_5m, cache_write_1h, output, effective, quiz_effective, eklavya_effective,
103
+ eklavya_tools, unpriced, folded_at
104
+ FROM econ_sessions WHERE session_id = ?`)
105
+ .get(id);
106
+ const overhead = db
107
+ .prepare(`SELECT source, COUNT(*) AS calls, SUM(effective) AS effective FROM econ_overhead
108
+ WHERE session_id = ? AND in_session = 0 GROUP BY source ORDER BY effective DESC`)
109
+ .all(id);
110
+ const entries = (sql) => db.prepare(`SELECT e.id, e.title, e.type FROM memory_entries e WHERE e.id IN (${sql}) ORDER BY e.id DESC`).all(id);
111
+ const sent = entries(`SELECT i.entry_id FROM context_receipt_items i JOIN context_receipts r ON r.id = i.receipt_id WHERE r.session_id = ? AND r.${DELIVERED}`);
112
+ const opened = entries(`SELECT CAST(j.value AS INTEGER) FROM memory_reads m, json_each(m.entry_ids) j WHERE m.session_id = ? AND m.tool = 'memory_get'`);
113
+ const applied = entries('SELECT entry_id FROM memory_session_applied WHERE session_id = ?');
114
+ const receipts = db
115
+ .prepare(`SELECT COUNT(*) AS recalls, COALESCE(SUM(base_tokens), 0) AS base, COALESCE(SUM(delivered_tokens), 0) AS delivered
116
+ FROM context_receipts WHERE session_id = ? AND ${DELIVERED}`)
117
+ .get(id);
118
+ const reads = db
119
+ .prepare(`SELECT COUNT(*) AS n, COALESCE(SUM(outcome = 'empty'), 0) AS empty FROM memory_reads WHERE session_id = ?`)
120
+ .get(id);
121
+ const captured = db
122
+ .prepare(`SELECT COUNT(*) AS events, COALESCE(SUM(status != 'summarized'), 0) AS pending, COALESCE(SUM(redacted), 0) AS redacted
123
+ FROM evidence_events WHERE session_id = ?`)
124
+ .get(id);
125
+ const remembered = db.prepare('SELECT COUNT(*) AS n FROM memory_entries WHERE session_id = ? AND deleted_at IS NULL').get(id).n;
126
+ const facts = db
127
+ .prepare('SELECT COUNT(*) AS shown, COALESCE(SUM(avoided = 1), 0) AS avoided FROM pinned_fact_shown WHERE session_id = ?')
128
+ .get(id);
129
+ const guard = Object.fromEntries(db.prepare('SELECT kind, COUNT(*) AS n FROM econ_guard_events WHERE session_id = ? GROUP BY kind').all(id).map((r) => [r.kind, r.n]));
130
+ const useFolded = Boolean(db.prepare('SELECT 1 FROM memory_use_sessions WHERE session_id = ?').get(id));
131
+ const transcript = econ?.transcript_path ?? null;
132
+ const cap = (xs) => xs.slice(0, SESSION_ENTRY_LIMIT);
133
+ return {
134
+ session_id: id,
135
+ // Whether Eklavya recorded anything under this id: a session the learning half alone knows is still a session.
136
+ known: Boolean(econ || overhead.length || receipts.recalls || reads.n || captured.events || remembered || facts.shown || Object.keys(guard).length),
137
+ cost: econ ? (({ eklavya_tools: _tools, ...row }) => ({ ...row, unpriced: parse(row.unpriced, []), folded: row.folded_at !== null }))(econ) : null,
138
+ transcript: transcript ? { path: transcript, on_disk: fs.existsSync(transcript) } : null,
139
+ // Measured: from the transcript at fold time, names and counts only.
140
+ tools: parse(econ?.eklavya_tools ?? null, {}),
141
+ overhead,
142
+ memory: {
143
+ recalls: receipts.recalls,
144
+ reads: reads.n,
145
+ empty_reads: reads.empty,
146
+ sent: { count: sent.length, entries: cap(sent) },
147
+ opened: { count: opened.length, entries: cap(opened) },
148
+ applied: { count: applied.length, entries: cap(applied) },
149
+ folded: useFolded,
150
+ captured: captured.events,
151
+ pending: captured.pending,
152
+ redacted: captured.redacted,
153
+ remembered,
154
+ },
155
+ savings: {
156
+ recall: savingsFrom({ baseTokens: receipts.base, deliveredTokens: receipts.delivered, delivery: receipts.recalls ? 'emitted' : 'unknown' }),
157
+ failures_avoided: facts.avoided,
158
+ facts_shown: facts.shown,
159
+ guard,
160
+ },
161
+ };
162
+ }
74
163
  //# sourceMappingURL=cost-report.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cost-report.js","sourceRoot":"","sources":["../src/cost-report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cost-report.js","sourceRoot":"","sources":["../src/cost-report.ts"],"names":[],"mappings":"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"}