eklavya 1.81.3 → 1.81.4

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.81.4",
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"
@@ -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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eklavya",
3
- "version": "1.81.3",
3
+ "version": "1.81.4",
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": {