eklavya 1.81.3 → 1.82.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
@@ -113,6 +113,7 @@ index holds only entries that are not deleted.
113
113
  ```bash
114
114
  npx eklavya doctor # no session banner in one large project? Claude Code drops a hook slower than 10 seconds without a message; update to get the fast memory-health check
115
115
  npx eklavya memory status # starts with a health verdict: ok, warn or stalled (work you quarantined is not counted; how Claude used recall is shown here, not at session start)
116
+ # session start shows its optional details (recall, health line, learning counts) only if each is ready within ~7s; a slow one is left out, never the whole banner
116
117
  npx eklavya config get # or: config get quiz.enabled
117
118
  npx eklavya dashboard
118
119
  npx eklavya feedback generate
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Child process of `details-lib.ts`: computes ONE of the greeting's
3
+ * optional details (argv[2] names it) and writes it as a JSON line, so the hook
4
+ * can kill this process if it is too slow. The specification is argv[3]. Fails open: any failure leaves its detail unwritten.
5
+ */
6
+ import { writeSync } from 'node:fs';
7
+ import { openExisting } from './lib.js';
8
+ import { memoryHealthLine, recallBlock } from './memory-lib.js';
9
+ import { learningCounts } from '../memory/recall.js';
10
+ import { levelStanding } from '../store.js';
11
+ /** A test seam: `EKLAVYA_TEST_STALL=<detail>` blocks this process, standing in for a slow query. */
12
+ function stall(detail) {
13
+ /* c8 ignore next -- the stalled child is killed before it can report coverage */
14
+ if (process.env.EKLAVYA_TEST_STALL === detail)
15
+ Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 120_000);
16
+ }
17
+ function send(part) {
18
+ writeSync(1, `${JSON.stringify(part)}\n`);
19
+ }
20
+ function main() {
21
+ const spec = JSON.parse(process.argv[3]);
22
+ const db = openExisting();
23
+ /* c8 ignore next -- the hook opened this database a moment ago; defensive */
24
+ if (!db)
25
+ return;
26
+ const { resolved, identity } = spec;
27
+ const steps = {
28
+ counts: () => ({ counts: learningCounts(db, identity.project) }),
29
+ level: () => {
30
+ const standing = levelStanding(db, resolved.config, resolved.repoRoot);
31
+ return { levelLabel: `${standing.level} (${standing.counts.passed}/${standing.needed.answers})` };
32
+ },
33
+ recall: () => ({ recalled: recallBlock(db, resolved, identity, 'session_start', spec.resume, spec.recallChars) }),
34
+ health: () => ({ memoryLine: memoryHealthLine(db, Date.now(), identity.project) }),
35
+ };
36
+ const name = process.argv[2];
37
+ stall(name);
38
+ send(steps[name]());
39
+ }
40
+ try {
41
+ main();
42
+ /* c8 ignore next 3 -- every step fails open inside its own function; defensive */
43
+ }
44
+ catch {
45
+ /* nothing to report */
46
+ }
47
+ process.exit(0);
48
+ //# sourceMappingURL=details-child-lib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"details-child-lib.js","sourceRoot":"","sources":["../../src/hooks/details-child-lib.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,oGAAoG;AACpG,SAAS,KAAK,CAAC,MAAc;IAC3B,iFAAiF;IACjF,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;AACvH,CAAC;AAED,SAAS,IAAI,CAAC,IAAY;IACxB,SAAS,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,IAAI;IACX,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE,CAAgB,CAAC;IACzD,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1B,6EAA6E;IAC7E,IAAI,CAAC,EAAE;QAAE,OAAO;IAChB,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACpC,MAAM,KAAK,GAAqC;QAC9C,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAChE,KAAK,EAAE,GAAG,EAAE;YACV,MAAM,QAAQ,GAAG,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACvE,OAAO,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;QACpG,CAAC;QACD,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QACjH,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;KACnF,CAAC;IACF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAe,CAAC;IAC3C,KAAK,CAAC,IAAI,CAAC,CAAC;IACZ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtB,CAAC;AAED,IAAI,CAAC;IACH,IAAI,EAAE,CAAC;IACT,kFAAkF;AAClF,CAAC;AAAC,MAAM,CAAC;IACP,uBAAuB;AACzB,CAAC;AACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * The optional details of the session-start greeting, computed under a budget.
3
+ *
4
+ * Claude Code kills a hook at its timeout (10 seconds, `hooks/hooks.json`) and
5
+ * shows nothing of it: one slow query used to cost the whole banner, the recalled
6
+ * memory and the directive. better-sqlite3 is synchronous, so a timer in this
7
+ * process cannot interrupt a query; a worker thread is no better, because
8
+ * `process.exit` waits for a thread stuck in native code (measured: a 25-second
9
+ * query held the exit for 25 seconds). So the details run in a child process
10
+ * (`details-child-lib.ts`) that this one can SIGKILL. Each detail gets its
11
+ * own child, run in parallel, so a slow one never holds up the others; whatever
12
+ * finished before the deadline is used and the rest is left out.
13
+ *
14
+ * Light on purpose: this file loads in the hook, the child carries the weight.
15
+ */
16
+ import { spawn } from 'node:child_process';
17
+ import { fileURLToPath } from 'node:url';
18
+ /** Total hook time the optional details may use, counted from process start. The host kills at 10s. */
19
+ export const HOOK_BUDGET_MS = 7_000;
20
+ /** `EKLAVYA_SESSION_START_BUDGET_MS` lets a test shrink the budget. */
21
+ export function budgetMs() {
22
+ const set = Number(process.env.EKLAVYA_SESSION_START_BUDGET_MS);
23
+ return Number.isFinite(set) && set > 0 ? set : HOOK_BUDGET_MS;
24
+ }
25
+ /**
26
+ * Runs one child per detail and returns what they reported in time. Never throws,
27
+ * never waits past the budget: a spawn failure or a crash is the same as nothing ready.
28
+ */
29
+ export function collectDetails(spec) {
30
+ const out = {};
31
+ const left = budgetMs() - process.uptime() * 1000;
32
+ if (left <= 0)
33
+ return Promise.resolve(out);
34
+ const children = spec.want.map((only) => {
35
+ return new Promise((resolve) => {
36
+ let buffer = '';
37
+ const child = spawn(process.execPath, [fileURLToPath(new URL('./details-child-lib.js', import.meta.url)), only, JSON.stringify(spec)], { stdio: ['ignore', 'pipe', 'ignore'], windowsHide: true });
38
+ const timer = setTimeout(() => child.kill('SIGKILL'), left);
39
+ // 'close' follows a kill too, so the promise always settles.
40
+ child.on('close', () => {
41
+ clearTimeout(timer);
42
+ for (const line of buffer.split('\n')) {
43
+ try {
44
+ Object.assign(out, JSON.parse(line));
45
+ }
46
+ catch {
47
+ /* an empty or partial line: that detail is left out */
48
+ }
49
+ }
50
+ resolve();
51
+ });
52
+ child.on('error', () => resolve());
53
+ child.stdout.on('data', (chunk) => (buffer += chunk.toString('utf8')));
54
+ });
55
+ });
56
+ // ponytail: each detail costs a node start (~100ms of CPU); one child per detail is what keeps a slow one from queueing the rest.
57
+ return Promise.all(children).then(() => out);
58
+ }
59
+ //# sourceMappingURL=details-lib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"details-lib.js","sourceRoot":"","sources":["../../src/hooks/details-lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAKzC,uGAAuG;AACvG,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC;AAuBpC,uEAAuE;AACvE,MAAM,UAAU,QAAQ;IACtB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAChE,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAiB;IAC9C,MAAM,GAAG,GAAY,EAAE,CAAC;IACxB,MAAM,IAAI,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;IAClD,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACtC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACnC,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,MAAM,KAAK,GAAG,KAAK,CACjB,OAAO,CAAC,QAAQ,EAChB,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAC/F,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAC3D,CAAC;YACF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;YAC5D,6DAA6D;YAC7D,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACrB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtC,IAAI,CAAC;wBACH,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC,CAAC;oBAClD,CAAC;oBAAC,MAAM,CAAC;wBACP,uDAAuD;oBACzD,CAAC;gBACH,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YACnC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,kIAAkI;IAClI,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AAC/C,CAAC"}
@@ -9,13 +9,14 @@ import os from 'node:os';
9
9
  import path from 'node:path';
10
10
  import { findRepoConfig, loadGlobalConfig, mainRepoRoot, migrateLegacyRepoConfig } from '../config.js';
11
11
  import { isSessionOff, setCurrentSession } from '../session.js';
12
- import { levelStanding, pruneUnasked } from '../store.js';
12
+ import { pruneUnasked } from '../store.js';
13
13
  import { isCowork, withSurfaceNote } from '../surface.js';
14
14
  import { recordBaseline } from './changes-lib.js';
15
15
  import { sessionBlock } from './delegation-lib.js';
16
16
  import { run, openOrDiagnose, config, cwdOf, sessionId, clearNudgeState } from './lib.js';
17
- import { flushAtSeam, identityOf, memoryHealthLine, recallBlock, record, replaySpool } from './memory-lib.js';
18
- import { HOOK_CONTEXT_CHARS, markEmitted, startupDisplay } from '../memory/recall.js';
17
+ import { flushAtSeam, identityOf, record, replaySpool } from './memory-lib.js';
18
+ import { collectDetails } from './details-lib.js';
19
+ import { HOOK_CONTEXT_CHARS, markEmitted } from '../memory/recall.js';
19
20
  import { recalledLine, savingsFrom } from '../memory/tokens.js';
20
21
  import { AMBER, dialParts, paint } from '../statusline.js';
21
22
  import { dashboardPort } from '../paths.js';
@@ -149,8 +150,8 @@ await run(async (input) => {
149
150
  /* fail open */
150
151
  }
151
152
  const memoryContext = [];
152
- let recalled = null;
153
153
  const memoryEnabled = resolved.config.memory.enabled;
154
+ let recallChars = null;
154
155
  if (memoryEnabled) {
155
156
  replaySpool(db);
156
157
  // Drain first, then mark the seam. The other order batches the lifecycle
@@ -176,14 +177,36 @@ await run(async (input) => {
176
177
  // Claude Code drops a hook's whole output past 10,000 characters, and the
177
178
  // directive (and the delegation block) ride in the same output, so the
178
179
  // memory block gets what they leave.
179
- const rest = withSurfaceNote(DIRECTIVE).length +
180
- (resolved.config.delegate_work ? sessionBlock(resolved.config.cadence, resolved.config.quiz.panel).length : 0) +
181
- 200;
182
- recalled = recallBlock(db, resolved, identity, 'session_start', input.source === 'resume', HOOK_CONTEXT_CHARS - rest);
183
- if (recalled?.block)
184
- memoryContext.push(recalled.block);
185
- memoryLine = memoryHealthLine(db, Date.now(), identity.project);
180
+ recallChars =
181
+ HOOK_CONTEXT_CHARS -
182
+ (withSurfaceNote(DIRECTIVE).length +
183
+ (resolved.config.delegate_work ? sessionBlock(resolved.config.cadence, resolved.config.quiz.panel).length : 0) +
184
+ 200);
186
185
  }
186
+ // The optional details -- recalled memory, the health line, the banner's
187
+ // learning counts and level -- come from a child process under a time budget
188
+ // (`details-lib.ts`): a slow one is left out instead of the host killing
189
+ // this hook at its 10 seconds and showing nothing. Needed only where a banner
190
+ // can show them.
191
+ const showsBanner = !quiet && (memoryEnabled || quiz.enabled);
192
+ const want = [];
193
+ if (recallChars !== null)
194
+ want.push('recall', 'health');
195
+ if (showsBanner && quiz.enabled)
196
+ want.push('counts');
197
+ if (showsBanner && quiz.enabled && difficulty === 'auto')
198
+ want.push('level');
199
+ const details = await collectDetails({
200
+ resolved,
201
+ identity,
202
+ resume: input.source === 'resume',
203
+ recallChars: recallChars ?? 0,
204
+ want,
205
+ });
206
+ const recalled = details.recalled ?? null;
207
+ if (recalled?.block)
208
+ memoryContext.push(recalled.block);
209
+ memoryLine = details.memoryLine ?? null;
187
210
  // Every emit below that carries `memoryContext` passes this, so the receipt
188
211
  // says `emitted` and the entries count as handed over only once the block
189
212
  // has actually been written — never for a path that dropped it.
@@ -204,7 +227,7 @@ await run(async (input) => {
204
227
  // costs nothing and answers the question before it is asked.
205
228
  const shown = [];
206
229
  if (!quiet && memoryEnabled) {
207
- banner(db, shown, {
230
+ banner(shown, {
208
231
  project: identity.project,
209
232
  memory: true,
210
233
  recalled,
@@ -213,7 +236,7 @@ await run(async (input) => {
213
236
  overrides: resolved.overrides,
214
237
  dashboard: dashboardState,
215
238
  feedback: feedbackWaits,
216
- quiz: false,
239
+ counts: null,
217
240
  });
218
241
  }
219
242
  else if (!quiet) {
@@ -245,12 +268,8 @@ await run(async (input) => {
245
268
  // tier-2 question as Eklavya being shallow rather than as a band they are
246
269
  // working through. `levelStanding` is the planner's own function, so the
247
270
  // greeting cannot drift from what the quiz actually does.
248
- let levelLabel = `${difficulty} (pinned)`;
249
- if (difficulty === 'auto') {
250
- const standing = levelStanding(db, resolved.config, resolved.repoRoot);
251
- levelLabel = `${standing.level} (${standing.counts.passed}/${standing.needed.answers})`;
252
- }
253
- banner(db, shown, {
271
+ const levelLabel = difficulty === 'auto' ? (details.levelLabel ?? 'auto') : `${difficulty} (pinned)`;
272
+ banner(shown, {
254
273
  project: identity.project,
255
274
  memory: resolved.config.memory.enabled,
256
275
  recalled,
@@ -259,7 +278,7 @@ await run(async (input) => {
259
278
  overrides: resolved.overrides,
260
279
  dashboard: dashboardState,
261
280
  feedback: feedbackWaits,
262
- quiz: true,
281
+ counts: details.counts ?? null,
263
282
  });
264
283
  }
265
284
  // Said even when `quiet` is set, and said before the directive, because it is
@@ -356,13 +375,12 @@ function emit(shown, context, sent, announce = true) {
356
375
  * Every number here is already committed to the database. Nothing waits on a
357
376
  * provider call or an index rebuild to greet somebody.
358
377
  */
359
- function banner(db, out, parts) {
378
+ function banner(out, parts) {
360
379
  // Inside the function, not at module scope: the hook body above runs at the
361
380
  // top-level `await`, before any later `const` is initialised.
362
381
  // NO_COLOR is the cross-tool convention; the host renders ANSI in systemMessage.
363
382
  const color = !process.env.NO_COLOR;
364
383
  const dim = (text) => (color ? `\u001b[2m${text}\u001b[0m` : text);
365
- const { counts } = startupDisplay(db, parts.project);
366
384
  out.push(`Eklavya active · v${ownVersion()} · ${parts.dials.join(' · ')}`);
367
385
  // What was delivered, then the estimated saving against the evidence behind
368
386
  // the full entries (titles add to delivered, not to the base, so it is
@@ -375,8 +393,8 @@ function banner(db, out, parts) {
375
393
  }
376
394
  if (parts.moved)
377
395
  out.push(paint(parts.moved, parts.moved.includes(' re-filed') ? 114 : AMBER, color));
378
- if (parts.quiz)
379
- out.push(`Learning ${counts.learning} · Mastered ${counts.mastered} · Due ${counts.due}`);
396
+ if (parts.counts)
397
+ out.push(`Learning ${parts.counts.learning} · Mastered ${parts.counts.mastered} · Due ${parts.counts.due}`);
380
398
  if (parts.overrides.length > 0) {
381
399
  // A warning, not a scoreboard: a repo silently overriding a personal
382
400
  // setting is the one thing worth interrupting for.
@@ -1 +1 @@
1
- {"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../src/hooks/session-start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../src/hooks/session-start.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "eklavya",
3
3
  "displayName": "Eklavya",
4
- "version": "1.81.3",
4
+ "version": "1.82.0",
5
5
  "description": "Learn while your agent works. Turns coding-agent generation time into adaptive, Socratic learning grounded in the code being written.",
6
6
  "author": {
7
7
  "name": "Ajay Kumar"
@@ -76,6 +76,12 @@ In this order, each under its own `<h2>`:
76
76
  when you are sure it behaves that way: a wrong comparison teaches the wrong
77
77
  thing.
78
78
 
79
+ A page about what happened (an incident or a bug hunt) rather than one concept
80
+ follows the skill's "Same depth" section instead of the list above: inventory
81
+ the real ids, dates and counts you were handed, then draw them (item tiles, a
82
+ to-scale timeline, a status table, action cards). Use only facts you were
83
+ handed; never invent an id or a date to fill a diagram.
84
+
79
85
  Plain English, short sentences, no jargon without a gloss. State a claim no
80
86
  more strongly than the page later supports: a guarantee the gotcha qualifies
81
87
  is stated as qualified the first time. Any CSS you add
@@ -28,6 +28,14 @@ The MCP matcher accepts both standalone and plugin-scoped names. Do not narrow
28
28
  it to one prefix. Keep the work-tool regex anchored. Hook timeouts are 10 seconds,
29
29
  except Stop at 15 seconds; consult the manifest before changing them.
30
30
 
31
+ SessionStart keeps inside its 10 seconds with `details-lib.ts`: recall, the
32
+ health line and the banner's counts and level each run in their own child
33
+ (`details-child-lib.ts`), killed at 7 seconds from process start
34
+ (`EKLAVYA_SESSION_START_BUDGET_MS`), and a detail not back by then is left out.
35
+ It is a process because better-sqlite3 is synchronous: a timer cannot interrupt
36
+ a query, and `process.exit` waits for a worker thread stuck in one. A new
37
+ optional SessionStart detail is a child step there, never an inline query.
38
+
31
39
  ## The quiz panel is a mod, not a command hook
32
40
 
33
41
  `hooks/panel/` is a Claude Code mod: function hooks declared under `modules` in
@@ -61,13 +61,39 @@ before what it is called. One idea per section under an `<h2>`. A concrete
61
61
  example — a timeline, a snippet with the broken and the fixed line — beats a
62
62
  paragraph of definition. Name the gotcha at the end, in plain terms.
63
63
 
64
+ **Same depth as any good artifact; only the theme is Eklavya's.** A page about
65
+ what happened in this session (an incident, a bug hunt, a migration, a report)
66
+ must be as informative as the best page the host could write without Eklavya.
67
+ Eklavya changes the look, never the substance. If the host has the
68
+ `artifact-design` and `artifact-diagramming` skills, read them first and apply
69
+ their advice on content and on what to draw; their palette, fonts, CDN
70
+ libraries and publishing rules do not apply here, the tokens below win.
71
+
72
+ Before writing, list the facts in the conversation: every id, date, count,
73
+ size, name and verdict you were told or found. Then give each kind of fact its
74
+ natural picture; a fact you leave as a sentence is usually a diagram you skipped.
75
+
76
+ | The facts are | Draw |
77
+ |---|---|
78
+ | Dated events, "when did it happen" | **To-scale timeline**: days on an axis, a span band for the ongoing part, labels above and below |
79
+ | The real items of a set and one verdict per item (files in a build, rows in a batch, steps in a run) | **Item tiles**, one tile per real item, the bad ones in `.svg-bad`, with the one-line outcome under each set |
80
+ | Many things pointing at one thing | **Fan-in** with the real ids, and a healthy case beside it for contrast |
81
+ | What is proven and what is only suspected | A **status table**: Confirmed, Likely, Not checked, Unknown |
82
+ | What to do, who and how long | **Action cards**, one recommended, with its cost and what it does not fix |
83
+
84
+ Never replace the real items with a generic stand-in. A page that says "one
85
+ file is empty" has told the reader less than one that draws all nine
86
+ files and marks the empty one. Put a one-line takeaway under every
87
+ picture. A page that reports an incident usually needs the steps, the items,
88
+ the timeline, the status table and the actions; a concept page needs fewer.
89
+
64
90
  **Draw whenever an idea has moving parts.** A sequence, a branch, a
65
91
  before/after, a hierarchy or a number worth comparing is a diagram that has not
66
- been drawn yet; two or three in a medium page is normal.
92
+ been drawn yet; two or three in a concept page is normal, and a report as many as its facts need.
67
93
 
68
94
  **Pick the diagram from the idea, not from habit.** Every page so far has been
69
95
  one left-to-right row of boxes. Choose the type that matches the shape of the
70
- thing, and when a page has two or three diagrams, make them different types.
96
+ thing, and when a page has two or three diagrams, make them different types (one tile diagram per case, drawn the same way, is the exception).
71
97
 
72
98
  | The idea | Draw | Colour it by |
73
99
  |---|---|---|
@@ -85,6 +111,7 @@ thing, and when a page has two or three diagrams, make them different types.
85
111
  | Two measures, four verdicts | **Quadrant** (2×2 with labelled corners) | the quadrant |
86
112
  | Narrowing or ranking | **Funnel / pyramid** (stacked bars, count on each) | the stage |
87
113
  | Tables and their links | **Schema / ER** (box per table, key columns, lines with 1 / n) | the owner of the data |
114
+ | Real items with one verdict each | **Item tiles** (a grid of small boxes, one per item, the faulty ones `.svg-bad`) | the verdict |
88
115
  | Many things against many | **Matrix / heatmap** (grid, one tint per cell, value printed) | the value band |
89
116
  | What overlaps, what is only in one | **Venn** (two or three circles, `fill-opacity` via `-soft`) | the set |
90
117
 
@@ -102,7 +129,8 @@ diagram more than adding one. Avoid:
102
129
 
103
130
  Layout: snap coordinates, widths and gaps to multiples of 4 so edges line up;
104
131
  keep 16px between a shape and its text; one idea per diagram, at most about
105
- eight nodes. Give every `<svg>` a `<title>` and a one-sentence `<desc>` as its
132
+ eight nodes for a flow (item tiles and timelines show real data and may carry
133
+ more). Give every `<svg>` a `<title>` and a one-sentence `<desc>` as its
106
134
  first children, as well as `role="img"` and `aria-label`.
107
135
 
108
136
  Draw them as **inline SVG** inside `<figure>`, with a `<figcaption>` that
@@ -183,6 +211,27 @@ Skeletons (copy, then change the words and the numbers):
183
211
  <text class="svg-small" x="10" y="42">before</text><rect class="svg-bar-2" x="110" y="26" width="440" height="24"/><text class="svg-label" x="558" y="43">840 ms</text>
184
212
  <text class="svg-small" x="10" y="92">after</text><rect class="svg-bar-1" x="110" y="76" width="34" height="24"/><text class="svg-label" x="152" y="93">60 ms</text>
185
213
  </svg>
214
+
215
+ <!-- Item tiles: one real item per tile, the faulty one in .svg-bad -->
216
+ <svg viewBox="0 0 640 120" role="img" aria-label="Build 7 has four files and one of them is empty">
217
+ <text class="svg-text-1" x="0" y="16">Build 7 · 4 files</text>
218
+ <rect class="svg-bad" x="0" y="28" width="148" height="48"/><text class="svg-label" x="8" y="48">logo.png</text><text class="svg-small" x="8" y="66">0 bytes</text>
219
+ <rect class="svg-box-1" x="164" y="28" width="148" height="48"/><text class="svg-label" x="172" y="48">app.js</text><text class="svg-small" x="172" y="66">148 KB</text>
220
+ <rect class="svg-box-1" x="328" y="28" width="148" height="48"/><text class="svg-label" x="336" y="48">style.css</text><text class="svg-small" x="336" y="66">12 KB</text>
221
+ <rect class="svg-box-1" x="492" y="28" width="148" height="48"/><text class="svg-label" x="500" y="48">index.html</text><text class="svg-small" x="500" y="66">3 KB</text>
222
+ <text class="svg-small" x="0" y="104">Red: the upload check failed. Teal: passed.</text>
223
+ </svg>
224
+
225
+ <!-- To-scale timeline: x = days (here 20 px a day), leaders carry the labels -->
226
+ <svg viewBox="0 0 640 180" role="img" aria-label="Bad deploys began on 3 March and the first alert fired on 18 March">
227
+ <rect class="svg-box-2" x="20" y="72" width="600" height="20"/><text class="svg-small" x="28" y="86">bad deploys keep going out</text>
228
+ <line class="svg-axis" x1="20" y1="100" x2="620" y2="100"/>
229
+ <line class="svg-axis" x1="20" y1="96" x2="20" y2="104"/><text class="svg-small" x="20" y="118" text-anchor="middle">3 Mar</text>
230
+ <line class="svg-axis" x1="320" y1="96" x2="320" y2="104"/><text class="svg-small" x="320" y="118" text-anchor="middle">18 Mar</text>
231
+ <line class="svg-line" x1="20" y1="72" x2="20" y2="40"/><circle class="svg-bar-2" cx="20" cy="72" r="4"/><text class="svg-label" x="28" y="36">3 Mar · first bad deploy</text>
232
+ <line class="svg-line-spot" x1="320" y1="72" x2="320" y2="40"/><circle class="svg-bar-1" cx="320" cy="72" r="4"/><text class="svg-label" x="328" y="36">18 Mar · first alert fires</text>
233
+ <line class="svg-line" x1="620" y1="124" x2="620" y2="140"/><text class="svg-label" x="620" y="156" text-anchor="end">2 Apr · newest bad deploy</text>
234
+ </svg>
186
235
  ```
187
236
 
188
237
  Whatever the type, it shows the real mechanism of *this*
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eklavya",
3
- "version": "1.81.3",
3
+ "version": "1.82.0",
4
4
  "description": "Learn while your agent works — local knowledge graph, spaced repetition, and quiz gating for agent-assisted development.",
5
5
  "license": "MIT",
6
6
  "repository": {