eklavya 1.71.2 → 1.73.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.
Files changed (45) hide show
  1. package/README.md +3 -3
  2. package/dist/assets/dashboard.html +95 -15
  3. package/dist/assets/tutor/SKILL.md +8 -10
  4. package/dist/cli.js +2 -2
  5. package/dist/cli.js.map +1 -1
  6. package/dist/concepts.js +118 -0
  7. package/dist/concepts.js.map +1 -0
  8. package/dist/dashboard.js +6 -4
  9. package/dist/dashboard.js.map +1 -1
  10. package/dist/hooks/checkpoint-quiz.js +3 -2
  11. package/dist/hooks/checkpoint-quiz.js.map +1 -1
  12. package/dist/hooks/session-start.js +3 -1
  13. package/dist/hooks/session-start.js.map +1 -1
  14. package/dist/hooks/stop-quiz-check.js +3 -2
  15. package/dist/hooks/stop-quiz-check.js.map +1 -1
  16. package/dist/memory/learning.js +13 -3
  17. package/dist/memory/learning.js.map +1 -1
  18. package/dist/memory/recall.js +3 -3
  19. package/dist/memory/recall.js.map +1 -1
  20. package/dist/migrations/032_concept_tags_mastery_streak.sql +24 -0
  21. package/dist/plugin/.claude-plugin/plugin.json +1 -1
  22. package/dist/plugin/skills/tutor/SKILL.md +8 -10
  23. package/dist/slug.js +2 -2
  24. package/dist/slug.js.map +1 -1
  25. package/dist/srs.js +43 -4
  26. package/dist/srs.js.map +1 -1
  27. package/dist/store.js +15 -11
  28. package/dist/store.js.map +1 -1
  29. package/dist/telemetry-send.js +2 -2
  30. package/dist/telemetry-send.js.map +1 -1
  31. package/dist/tools/get_concept_graph.js +7 -6
  32. package/dist/tools/get_concept_graph.js.map +1 -1
  33. package/dist/tools/get_learner_profile.js +3 -4
  34. package/dist/tools/get_learner_profile.js.map +1 -1
  35. package/dist/tools/get_session_quiz_plan.js +5 -5
  36. package/dist/tools/get_session_quiz_plan.js.map +1 -1
  37. package/dist/tools/log_session_concepts.js +68 -11
  38. package/dist/tools/log_session_concepts.js.map +1 -1
  39. package/dist/tools/record_attempt.js +2 -2
  40. package/dist/tools/record_attempt.js.map +1 -1
  41. package/dist/tools/types.js +4 -0
  42. package/dist/tools/types.js.map +1 -1
  43. package/dist/tools/upsert_concepts.js +36 -14
  44. package/dist/tools/upsert_concepts.js.map +1 -1
  45. package/package.json +1 -1
@@ -1,7 +1,8 @@
1
1
  import { z } from 'zod';
2
2
  import { loadConfig } from '../config.js';
3
3
  import { normalizeSlug, isValidSlug, findFuzzyMatch } from '../slug.js';
4
- import { decayedScore, isKnown } from '../srs.js';
4
+ import { cleanTags, findCandidates, growConcept, MAX_NAME_WORDS, wordCount } from '../concepts.js';
5
+ import { decayedScore, isKnown, streakOf } from '../srs.js';
5
6
  import { resolveSessionId } from '../session.js';
6
7
  import { allConceptSlugs, conceptBySlug, insertConcept, logSessionConcept, masteryFor, newConceptsThisSession, sessionConcepts, syncGate, } from '../store.js';
7
8
  import { withSurfaceNote } from '../surface.js';
@@ -15,16 +16,24 @@ export const logSessionConcepts = {
15
16
  // the environment the server was started in. That is the right moment: the
16
17
  // host sets `CLAUDE_CODE_ENTRYPOINT` before spawning us and a session cannot
17
18
  // change surface halfway through.
18
- description: withSurfaceNote('Record the concepts the current task genuinely exercises, each with a one-line context pointing at the real code you wrote. Call this while implementing, batched, 3-8 concepts per task. Unknown slugs are created automatically, but bare — when the response carries next_action, do what it says before quizzing.', ' '),
19
+ description: withSurfaceNote(`Record the concepts the current task genuinely exercises, each with a one-line context pointing at the real code you wrote. Call this while implementing, batched, 3-8 concepts per task. A concept is a short name (1-${MAX_NAME_WORDS} words), a description and tags: reuse one the learner already has before minting. An unknown slug that resembles existing concepts is not created: the response lists them in needs_decision, so call again with a candidate's slug, or the same slug with new: true when none is the same idea. Pass a description or tags for a concept you met again and it deepens. Pass prerequisites (slugs to know first) so the concept needs no follow-up call. When the response carries next_action, do what it says before quizzing.`, ' '),
19
20
  inputSchema: {
20
21
  session_id: z.string().max(LIMITS.sessionId).optional().describe(SESSION_HINT),
21
22
  cwd: z.string().max(LIMITS.cwd).optional().describe(CWD_HINT),
22
23
  concepts: z
23
24
  .array(z.object({
24
25
  slug: z.string().max(LIMITS.slug).describe('kebab-case, e.g. "httponly-cookies"'),
25
- name: z.string().max(LIMITS.name).optional(),
26
+ name: z
27
+ .string()
28
+ .max(LIMITS.name)
29
+ .refine((n) => wordCount(n) <= MAX_NAME_WORDS, `a concept name is 1-${MAX_NAME_WORDS} words; put the detail in description`)
30
+ .optional(),
26
31
  domain: z.string().max(LIMITS.domain).optional(),
27
32
  tier: z.number().int().min(1).max(5).optional(),
33
+ description: z.string().max(LIMITS.conceptDescription).optional().describe('What the concept is, in a sentence or two. On an existing concept it deepens the description.'),
34
+ tags: z.array(z.string().max(LIMITS.tag)).max(LIMITS.tags).optional().describe('1-3 word labels, e.g. ["flutter", "animation"]. Reuse tags you have seen.'),
35
+ new: z.boolean().optional().describe('Set when needs_decision listed candidates and none is the same idea.'),
36
+ prerequisites: z.array(z.string().max(LIMITS.slug)).max(5).optional().describe('Slugs of concepts to know first: existing ones, or others in this call. Each becomes a prerequisite_of edge, which is what makes the fairness check work.'),
28
37
  context: z.string().max(LIMITS.context).optional().describe('One line naming the actual code, e.g. "set httpOnly on the refresh cookie in auth.ts".'),
29
38
  }))
30
39
  .min(1)
@@ -36,8 +45,12 @@ export const logSessionConcepts = {
36
45
  const sessionId = resolveSessionId(db, args.session_id, args.cwd);
37
46
  const created = [];
38
47
  const matched = [];
48
+ const needsDecision = [];
39
49
  const logged = [];
40
50
  let capped = 0;
51
+ let edgesAdded = 0;
52
+ const prerequisitesNotFound = [];
53
+ const resolved = new Map();
41
54
  const apply = db.transaction(() => {
42
55
  let budget = Math.max(0, config.max_new_concepts_per_session - newConceptsThisSession(db, sessionId));
43
56
  for (const input of args.concepts) {
@@ -55,23 +68,55 @@ export const logSessionConcepts = {
55
68
  matched.push({ requested: slug, resolved: concept.slug });
56
69
  }
57
70
  }
71
+ if (!concept && !input.new) {
72
+ // Not minted yet: the model decides whether one of these is the same
73
+ // idea. Skipping the check is `new: true`, an explicit claim.
74
+ const candidates = findCandidates(db, { slug, name: input.name, tags: input.tags, domain: input.domain });
75
+ if (candidates.length > 0) {
76
+ needsDecision.push({ requested: slug, candidates });
77
+ continue;
78
+ }
79
+ }
58
80
  if (!concept) {
59
81
  if (budget <= 0) {
60
82
  capped += 1;
61
83
  continue;
62
84
  }
85
+ const tags = cleanTags([input.domain ?? '', ...(input.tags ?? [])]);
63
86
  concept = insertConcept(db, {
64
87
  slug,
65
88
  name: input.name ?? slug.replace(/-/g, ' '),
66
- domain: input.domain ?? DEFAULT_DOMAIN,
89
+ domain: input.domain ?? tags[0] ?? DEFAULT_DOMAIN,
90
+ description: input.description ?? null,
91
+ tags,
67
92
  tier: input.tier ?? DEFAULT_TIER,
68
93
  source: 'llm',
69
94
  });
70
95
  created.push(concept.slug);
71
96
  budget -= 1;
72
97
  }
98
+ else {
99
+ growConcept(db, concept, { description: input.description, tags: input.tags });
100
+ }
73
101
  logSessionConcept(db, sessionId, concept.id, input.context ?? null, 'work');
74
102
  logged.push(concept.slug);
103
+ resolved.set(slug, concept);
104
+ }
105
+ // After the loop, so a prerequisite listed later in the same call exists.
106
+ const insertEdge = db.prepare('INSERT OR IGNORE INTO edges (from_concept, to_concept, relation) VALUES (?, ?, ?)');
107
+ for (const input of args.concepts) {
108
+ const concept = resolved.get(normalizeSlug(input.slug));
109
+ if (!concept)
110
+ continue;
111
+ for (const raw of input.prerequisites ?? []) {
112
+ const key = normalizeSlug(raw);
113
+ const near = resolved.has(key) || conceptBySlug(db, key) ? undefined : findFuzzyMatch(key, allConceptSlugs(db));
114
+ const pre = resolved.get(key) ?? conceptBySlug(db, key) ?? (near ? conceptBySlug(db, near.slug) : undefined);
115
+ if (!pre)
116
+ prerequisitesNotFound.push({ concept: concept.slug, requested: key });
117
+ else if (pre.id !== concept.id)
118
+ edgesAdded += insertEdge.run(pre.id, concept.id, 'prerequisite_of').changes;
119
+ }
75
120
  }
76
121
  // The gate's bar rises with the work: how many touched concepts are still
77
122
  // unmastered, capped at the configured questions per task.
@@ -79,7 +124,7 @@ export const logSessionConcepts = {
79
124
  // raising the bar would raise it past anything the learner could clear.
80
125
  const unmastered = sessionConcepts(db, sessionId, 'work').filter((c) => {
81
126
  const m = masteryFor(db, c.id);
82
- return !isKnown({ score: decayedScore(m.score, m.next_review, now), reps: m.reps });
127
+ return !isKnown({ score: decayedScore(m.score, m.next_review, now), ...streakOf(m) });
83
128
  }).length;
84
129
  // Inside the transaction, not after it: `registerTools` retries the whole
85
130
  // handler on SQLITE_BUSY, and a retry after the concepts had committed
@@ -91,21 +136,33 @@ export const logSessionConcepts = {
91
136
  });
92
137
  });
93
138
  const gate = apply();
94
- // Said in the response, not only in the tutor skill. A bare concept is
95
- // tier 2, domain "general", no edges -- and `prereqs_unmet` is computed from
96
- // edges, so a concept with none can never be reported as unfair to ask
97
- // about, however far out of its depth the learner is. The skill says to fix
139
+ // Said in the response, not only in the tutor skill. `prereqs_unmet` is
140
+ // computed from edges, so a concept with none can never be reported as
141
+ // unfair to ask about, however far out of its depth the learner is. The skill says to fix
98
142
  // that, but it is model-invoked and may never load; the same gap is why the
99
143
  // concept-logging directive had to move into the SessionStart banner. This
100
144
  // lands in context whatever loaded.
101
- const nextAction = created.length > 0
102
- ? `Call upsert_concepts for ${created.join(', ')} — each was created bare (tier 2, domain "general", no edges). Give each a real domain, an honest tier, and at least one prerequisite_of edge, or prereqs_unmet stays empty and the fairness check silently passes.`
145
+ const decide = needsDecision.length > 0
146
+ ? `Call log_session_concepts again for ${needsDecision.map((n) => n.requested).join(', ')}: use a candidate's slug when it is the same idea, or repeat the slug with new: true when none is. Nothing was logged for them yet.`
147
+ : undefined;
148
+ // Created concepts that still have no edge: the ones whose `prerequisites`
149
+ // the model left out. Those are the only debt now; a concept logged with
150
+ // its prerequisites needs no second call.
151
+ const hasEdge = db.prepare('SELECT 1 FROM edges e JOIN concepts c ON c.id IN (e.from_concept, e.to_concept) WHERE c.slug = ? LIMIT 1');
152
+ const unlinked = created.filter((slug) => !hasEdge.get(slug));
153
+ const followUp = unlinked.length > 0
154
+ ? `Call upsert_concepts for ${unlinked.join(', ')} — each was created with no prerequisite edge. Give each at least one prerequisite_of edge (or pass prerequisites when you log), or prereqs_unmet stays empty and the fairness check silently passes.`
103
155
  : undefined;
156
+ const nextAction = [decide, followUp].filter(Boolean).join(' ') || undefined;
104
157
  return {
105
158
  session_id: sessionId,
106
159
  logged,
107
160
  created,
161
+ unlinked,
108
162
  matched,
163
+ needs_decision: needsDecision,
164
+ edges_added: edgesAdded,
165
+ ...(prerequisitesNotFound.length ? { prerequisites_not_found: prerequisitesNotFound } : {}),
109
166
  capped,
110
167
  gate,
111
168
  ...(nextAction ? { next_action: nextAction } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"log_session_concepts.js","sourceRoot":"","sources":["../../src/tools/log_session_concepts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"log_session_concepts.js","sourceRoot":"","sources":["../../src/tools/log_session_concepts.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { loadConfig } from '../config.js';
3
3
  import { normalizeSlug } from '../slug.js';
4
- import { decayedScore, isKnown } from '../srs.js';
4
+ import { decayedScore, isKnown, streakOf } from '../srs.js';
5
5
  import { resolveSessionId } from '../session.js';
6
6
  import { conceptBySlug, gradeConcept, hasAskedQuestion, isMissed, recordInvalidQuestion, levelStanding, logSessionConcept, promoteIfEarned, syncGate, MAX_MCQ_GRADE, PASSING_GRADE, } from '../store.js';
7
7
  import { stripAskHeader } from '../ask.js';
@@ -241,7 +241,7 @@ export function recordAttemptCore(db, args) {
241
241
  interval_days: state.interval_d,
242
242
  reps: state.reps,
243
243
  ease: Number(state.ease.toFixed(2)),
244
- known: isKnown({ score, reps: state.reps }),
244
+ known: isKnown({ score, ...streakOf(state) }),
245
245
  // Never the same question twice. Recorded either way — refusing the
246
246
  // write would lose a real answer — but the tutor is told, so the next
247
247
  // question can be a new one.
@@ -1 +1 @@
1
- {"version":3,"file":"record_attempt.js","sourceRoot":"","sources":["../../src/tools/record_attempt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"record_attempt.js","sourceRoot":"","sources":["../../src/tools/record_attempt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EACL,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,QAAQ,EACR,aAAa,EACb,aAAa,GAGd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAgB,MAAM,YAAY,CAAC;AAE1E;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,OAAwB,EACxB,SAAiB,EACjB,KAAsB,EACtB,SAAwB,IAAI,EAC5B,UAAyB,IAAI;IAE7B,yEAAyE;IACzE,4EAA4E;IAC5E,aAAa;IACb,MAAM,IAAI,GAAG,OAAO,EAAE,MAAM;QAC1B,CAAC,CAAC,aAAa,OAAO,CAAC,MAAM,gFAAgF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;QACzL,CAAC,CAAC,EAAE,CAAC;IACP,2EAA2E;IAC3E,4CAA4C;IAC5C,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,qGAAqG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5I,6EAA6E;IAC7E,0EAA0E;IAC1E,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,0BAA0B,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,yBAAyB,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,oEAAoE;IACpE,+CAA+C;IAC/C,MAAM,IAAI,GAAG,8BAA8B,SAAS,4BAA4B,CAAC;IACjF,OAAO,8UAA8U,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,IAAI,mCAAmC,IAAI,8JAA8J,CAAC;AACpkB,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAY;IACpC,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE,uBAAuB;IAC9B,WAAW,EACT,s1CAAs1C;IACx1C,WAAW,EAAE;QACX,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC9E,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC7D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QAC/E,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;aACpB,QAAQ,CACP,sPAAsP,CACvP;QACH,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;aAClB,QAAQ,EAAE;aACV,QAAQ,CACP,mIAAmI,CACpI;QACH,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CAAC,kGAAkG,CAAC;QAC/G,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iEAAiE,CAAC;QACtH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QACrG,MAAM,EAAE,CAAC;aACN,OAAO,CAAC,KAAK,CAAC;aACd,QAAQ,EAAE;aACV,QAAQ,CACP,oUAAoU,CACrU;QACH,OAAO,EAAE,CAAC;aACP,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACpC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;aACnB,QAAQ,EAAE;aACV,QAAQ,CAAC,2EAA2E,CAAC;QACxF,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;aAClB,QAAQ,EAAE;aACV,QAAQ,CAAC,4IAA4I,CAAC;QACzJ,YAAY,EAAE,CAAC;aACZ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACpC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;aACnB,QAAQ,EAAE;aACV,QAAQ,CAAC,2HAA2H,CAAC;QACxI,OAAO,EAAE,CAAC;aACP,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;aACtD,QAAQ,EAAE;aACV,QAAQ,CACP,ixBAAixB,CAClxB;KACJ;IACD,OAAO,EAAE,CAAC,IAAuB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC;CAC1E,CAAC;AAoBF;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAM,EAAE,IAAuB;IAC/D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAElE,6EAA6E;IAC7E,4EAA4E;IAC5E,wEAAwE;IACxE,yEAAyE;IACzE,4EAA4E;IAC5E,8CAA8C;IAC9C,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,UAAU,IAAI,IAAI,CAAC,OAAO,KAAK,WAAW,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,aAAa,EAAE,CAAC;QACjG,OAAO;YACL,KAAK,EAAE,wBAAwB;YAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,YAAY,IAAI,CAAC,OAAO,+DAA+D,aAAa,6HAA6H;SAC1O,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,KAAK,EAAE,iBAAiB;YACxB,IAAI;YACJ,MAAM,EAAE,gFAAgF;SACzF,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,2EAA2E;IAC3E,oBAAoB;IACpB,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/B,qBAAqB,CAAC,EAAE,EAAE;YACxB,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,SAAS;YACT,QAAQ,EAAE,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;YACvC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,IAAI;SACtC,CAAC,CAAC;QACH,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,IAAI;YACb,MAAM,EACJ,0QAA0Q;SAC7Q,CAAC;IACJ,CAAC;IAED,4DAA4D;IAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAqC,CAAC;IAE3D,gFAAgF;IAChF,6EAA6E;IAC7E,kDAAkD;IAClD,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE/C,6EAA6E;IAC7E,oDAAoD;IACpD,MAAM,QAAQ,GAAG,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAErD,6EAA6E;IAC7E,MAAM,cAAc,GAAG,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAElE,2EAA2E;IAC3E,6EAA6E;IAC7E,4EAA4E;IAC5E,oCAAoC;IACpC,4EAA4E;IAC5E,0EAA0E;IAC1E,2EAA2E;IAC3E,0EAA0E;IAC1E,2EAA2E;IAC3E,0DAA0D;IAC1D,MAAM,eAAe,GACnB,OAAO,KAAK,UAAU,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAEjG,0EAA0E;IAC1E,4EAA4E;IAC5E,kEAAkE;IAClE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;IACrC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC;IAC3F,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC;IACvG,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEjE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;IACnE,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IAElD,MAAM,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;QACjC,uEAAuE;QACvE,wEAAwE;QACxE,2EAA2E;QAC3E,uEAAuE;QACvE,kCAAkC;QAClC,iBAAiB,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,EAAE;YAC5B,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,SAAS;YACT,QAAQ;YACR,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI;YAC3B,KAAK;YACL,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI;YAC3B,OAAO;YACP,OAAO;YACP,WAAW;YACX,uEAAuE;YACvE,uEAAuE;YACvE,wEAAwE;YACxE,kDAAkD;YAClD,OAAO,EAAE,OAAO,IAAI,IAAI;YACxB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,GAAG;SACJ,CAAC,CAAC;QAEH,oEAAoE;QACpE,yEAAyE;QACzE,iCAAiC;QACjC,MAAM,SAAS,GAAG,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAExD,0EAA0E;QAC1E,yEAAyE;QACzE,uEAAuE;QACvE,uEAAuE;QACvE,6CAA6C;QAC7C,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAEzB,wEAAwE;IACxE,0EAA0E;IAC1E,4EAA4E;IAC5E,2EAA2E;IAC3E,wDAAwD;IACxD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,gBAAgB,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,MAAM;QACvE,CAAC,CAAC;YACE,OAAO,EAAE,OAAO,CAAC,IAAI;YACrB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ;YACR,OAAO;YACP,YAAY,EAAE,WAAW;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI;YAC3B,OAAO;YACP,UAAU,EAAE,KAAK,CAAC,SAAS;YAC3B,WAAW,EAAE,kBAAkB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,OAAO,CAAC;SACnH;QACH,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAEhE,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,cAAc,EAAE,KAAK;QACrB,qEAAqE;QACrE,mBAAmB;QACnB,GAAG,CAAC,MAAM;YACR,CAAC,CAAC;gBACE,YAAY,EAAE,IAAI;gBAClB,MAAM,EAAE,gCAAgC,aAAa,6EAA6E,KAAK,eAAe,IAAI,CAAC,KAAK,GAAG;aACpK;YACH,CAAC,CAAC,EAAE,CAAC;QACP,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACzC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,aAAa,EAAE,KAAK,CAAC,UAAU;QAC/B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACnC,KAAK,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7C,oEAAoE;QACpE,sEAAsE;QACtE,6BAA6B;QAC7B,eAAe,EAAE,cAAc;QAC/B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,GAAG,CAAC,SAAS;YACX,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE,gBAAgB,EACd,0JAA0J;aAC7J,CAAC;QACN,GAAG,CAAC,OAAO;YACT,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE,qBAAqB,EACnB,6FAA6F;aAChG,CAAC;QACN,GAAG,CAAC,eAAe;YACjB,CAAC,CAAC;gBACE,gBAAgB,EACd,6TAA6T;aAChU;YACH,CAAC,CAAC,EAAE,CAAC;QACP,IAAI;QACJ,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,0EAA0E;QAC1E,4DAA4D;QAC5D,cAAc,EAAE;YACd,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;YAC3B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO;YAC5B,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ;YAC/B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ;YACnC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ;YAC/B,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ;YACtC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1D;QACD,GAAG,CAAC,MAAM,CAAC,SAAS;YAClB,CAAC,CAAC;gBACE,QAAQ,EAAE;oBACR,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI;oBAC3B,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE;oBACvB,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM;oBACtC,QAAQ,EAAE,MAAM,CACd,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAC5F;oBACD,MAAM,EAAE,mEAAmE,MAAM,CAAC,SAAS,CAAC,IAAI,qDAAqD,MAAM,CAAC,SAAS,CAAC,EAAE,QAAQ;iBACjL;aACF;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC"}
@@ -21,6 +21,10 @@ export const LIMITS = {
21
21
  name: 200,
22
22
  domain: 100,
23
23
  description: 2000,
24
+ /** A concept's description: a paragraph at most, so it stays cheap to show beside its neighbours. */
25
+ conceptDescription: 400,
26
+ tags: 5,
27
+ tag: 24,
24
28
  context: 1000,
25
29
  question: 4000,
26
30
  answer: 8000,
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAeA,+DAA+D;AAC/D,MAAM,CAAC,MAAM,QAAQ,GAAG,sFAAsF,CAAC;AAC/G,MAAM,CAAC,MAAM,YAAY,GACvB,gGAAgG,CAAC;AAEnG;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,SAAS,EAAE,GAAG;IACd,GAAG,EAAE,IAAI;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,GAAG;IACX,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,EAAE;IACZ,KAAK,EAAE,GAAG;CACF,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAeA,+DAA+D;AAC/D,MAAM,CAAC,MAAM,QAAQ,GAAG,sFAAsF,CAAC;AAC/G,MAAM,CAAC,MAAM,YAAY,GACvB,gGAAgG,CAAC;AAEnG;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,SAAS,EAAE,GAAG;IACd,GAAG,EAAE,IAAI;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,GAAG;IACX,WAAW,EAAE,IAAI;IACjB,qGAAqG;IACrG,kBAAkB,EAAE,GAAG;IACvB,IAAI,EAAE,CAAC;IACP,GAAG,EAAE,EAAE;IACP,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,EAAE;IACZ,KAAK,EAAE,GAAG;CACF,CAAC"}
@@ -2,23 +2,30 @@ import { z } from 'zod';
2
2
  import { loadConfig } from '../config.js';
3
3
  import { normalizeSlug, isValidSlug, findFuzzyMatch } from '../slug.js';
4
4
  import { resolveSessionId } from '../session.js';
5
+ import { cleanTags, findCandidates, growConcept, MAX_NAME_WORDS, wordCount } from '../concepts.js';
5
6
  import { allConceptSlugs, conceptBySlug, insertConcept, newConceptsThisSession } from '../store.js';
6
7
  import { CWD_HINT, LIMITS, SESSION_HINT } from './types.js';
7
8
  const DEFAULT_DOMAIN = 'general';
8
9
  export const upsertConcepts = {
9
10
  name: 'upsert_concepts',
10
11
  title: 'Upsert concepts',
11
- description: 'Grow the knowledge graph when work touches a concept that has no slug yet, or give a concept log_session_concepts just created bare its real domain, tier and description. Slugs are normalized and near-duplicates are folded into the existing concept, so check the returned canonical slug before using it. A concept that is already curated (from the seed or a pack, or given a domain) is never rewritten; `updated` lists the bare ones that were filled in.',
12
+ description: 'Grow the knowledge graph when work touches a concept that has no slug yet, or give a concept log_session_concepts just created its real domain, tier, description and tags. A concept is a short name (1-3 words), a description and tags. Slugs are normalized and near-duplicates are folded into the existing concept, so check the returned canonical slug before using it; a new concept that resembles existing ones is listed in needs_decision instead of created, so reuse a candidate or repeat it with new: true. A concept from the seed or a pack, or one that already has a domain (given when it was logged, or its first tag), keeps its domain, tier and description; its tags can still grow. `updated` lists what changed.',
12
13
  inputSchema: {
13
14
  session_id: z.string().max(LIMITS.sessionId).optional().describe(SESSION_HINT),
14
15
  cwd: z.string().max(LIMITS.cwd).optional().describe(CWD_HINT),
15
16
  concepts: z
16
17
  .array(z.object({
17
18
  slug: z.string().max(LIMITS.slug),
18
- name: z.string().max(LIMITS.name).optional(),
19
+ name: z
20
+ .string()
21
+ .max(LIMITS.name)
22
+ .refine((n) => wordCount(n) <= MAX_NAME_WORDS, `a concept name is 1-${MAX_NAME_WORDS} words; put the detail in description`)
23
+ .optional(),
19
24
  domain: z.string().max(LIMITS.domain).optional(),
20
25
  tier: z.number().int().min(1).max(5).optional(),
21
- description: z.string().max(LIMITS.description).optional(),
26
+ description: z.string().max(LIMITS.conceptDescription).optional(),
27
+ tags: z.array(z.string().max(LIMITS.tag)).max(LIMITS.tags).optional(),
28
+ new: z.boolean().optional().describe('Set when needs_decision listed candidates and none is the same idea.'),
22
29
  }))
23
30
  .min(1)
24
31
  .max(LIMITS.concepts),
@@ -39,6 +46,7 @@ export const upsertConcepts = {
39
46
  const matched = [];
40
47
  const updated = [];
41
48
  const rejected = [];
49
+ const needsDecision = [];
42
50
  const resolvedSlug = new Map();
43
51
  let edgesAdded = 0;
44
52
  db.transaction(() => {
@@ -51,18 +59,23 @@ export const upsertConcepts = {
51
59
  }
52
60
  const existing = conceptBySlug(db, slug);
53
61
  if (existing) {
54
- // `log_session_concepts` mints concepts bare and tells the tutor to come
55
- // back here for their real domain and tier. Until this filled them in,
56
- // the follow-up added edges and nothing else, and the concept stayed
57
- // `general`, tier 2. Only a bare concept qualifies: a seeded, pack or
58
- // already-placed concept is the catalogue's, and one model call must
59
- // not rewrite it for every learner.
62
+ // `log_session_concepts` mints a concept in the domain it was given (or
63
+ // its first tag), else `general`, at tier 2. Only a concept still in
64
+ // `general` is unplaced: a seeded, pack or already-placed concept is the
65
+ // catalogue's, and one model call must not rewrite it for every learner.
60
66
  const bare = existing.source === 'llm' && existing.domain === DEFAULT_DOMAIN;
61
67
  const domain = input.domain && input.domain !== DEFAULT_DOMAIN ? input.domain : null;
62
- if (bare && (domain || input.tier !== undefined || (input.description && !existing.description))) {
63
- db.prepare('UPDATE concepts SET domain = ?, tier = ?, description = ? WHERE id = ?').run(domain ?? existing.domain, input.tier ?? existing.tier, existing.description ?? input.description ?? null, existing.id);
64
- updated.push(existing.slug);
68
+ let changed = false;
69
+ if (bare && (domain || input.tier !== undefined)) {
70
+ db.prepare('UPDATE concepts SET domain = ?, tier = ? WHERE id = ?').run(domain ?? existing.domain, input.tier ?? existing.tier, existing.id);
71
+ changed = true;
65
72
  }
73
+ // Description and tags deepen any concept the session met again; the
74
+ // catalogue's own descriptions are left alone (see growConcept).
75
+ if (growConcept(db, existing, { description: input.description, tags: input.tags }))
76
+ changed = true;
77
+ if (changed)
78
+ updated.push(existing.slug);
66
79
  resolvedSlug.set(input.slug, existing.slug);
67
80
  matched.push({ requested: slug, resolved: existing.slug });
68
81
  continue;
@@ -73,14 +86,23 @@ export const upsertConcepts = {
73
86
  matched.push({ requested: slug, resolved: near.slug });
74
87
  continue;
75
88
  }
89
+ if (!input.new) {
90
+ const candidates = findCandidates(db, { slug, name: input.name, tags: input.tags, domain: input.domain });
91
+ if (candidates.length > 0) {
92
+ needsDecision.push({ requested: slug, candidates });
93
+ continue;
94
+ }
95
+ }
76
96
  if (budget <= 0) {
77
97
  rejected.push({ slug, reason: 'session_cap_reached' });
78
98
  continue;
79
99
  }
100
+ const tags = cleanTags([input.domain ?? '', ...(input.tags ?? [])]);
80
101
  const concept = insertConcept(db, {
81
102
  slug,
82
103
  name: input.name ?? slug.replace(/-/g, ' '),
83
- domain: input.domain ?? DEFAULT_DOMAIN,
104
+ domain: input.domain ?? tags[0] ?? DEFAULT_DOMAIN,
105
+ tags,
84
106
  description: input.description ?? null,
85
107
  tier: input.tier ?? 2,
86
108
  source: 'llm',
@@ -99,7 +121,7 @@ export const upsertConcepts = {
99
121
  edgesAdded += result.changes;
100
122
  }
101
123
  })();
102
- return { created, updated, matched, rejected, edges_added: edgesAdded };
124
+ return { created, updated, matched, rejected, needs_decision: needsDecision, edges_added: edgesAdded };
103
125
  },
104
126
  };
105
127
  //# sourceMappingURL=upsert_concepts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"upsert_concepts.js","sourceRoot":"","sources":["../../src/tools/upsert_concepts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upsert_concepts.js","sourceRoot":"","sources":["../../src/tools/upsert_concepts.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eklavya",
3
- "version": "1.71.2",
3
+ "version": "1.73.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": {