eklavya 1.33.2 → 1.34.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/dist/assets/dashboard.html +610 -46
- package/dist/assets/tutor/references/focus-and-level.md +4 -3
- package/dist/cli.js +39 -34
- package/dist/cli.js.map +1 -1
- package/dist/config-path.js +166 -1
- package/dist/config-path.js.map +1 -1
- package/dist/config.js +14 -6
- package/dist/config.js.map +1 -1
- package/dist/dashboard.js +266 -14
- package/dist/dashboard.js.map +1 -1
- package/dist/hooks/changes-lib.js +48 -2
- package/dist/hooks/changes-lib.js.map +1 -1
- package/dist/hooks/checkpoint-quiz.js +47 -18
- package/dist/hooks/checkpoint-quiz.js.map +1 -1
- package/dist/hooks/stop-quiz-check.js +14 -4
- package/dist/hooks/stop-quiz-check.js.map +1 -1
- package/dist/memory/learning.js +27 -5
- package/dist/memory/learning.js.map +1 -1
- package/dist/memory/recall.js +7 -6
- package/dist/memory/recall.js.map +1 -1
- package/dist/plugin/.claude-plugin/plugin.json +1 -1
- package/dist/plugin/hooks/CLAUDE.md +10 -4
- package/dist/plugin/skills/progress/SKILL.md +3 -2
- package/dist/plugin/skills/tutor/references/focus-and-level.md +4 -3
- package/dist/session.js +100 -2
- package/dist/session.js.map +1 -1
- package/dist/srs.js +12 -0
- package/dist/srs.js.map +1 -1
- package/dist/store.js +18 -9
- package/dist/store.js.map +1 -1
- package/dist/time.js +13 -0
- package/dist/time.js.map +1 -1
- package/dist/tools/config_tools.js +45 -22
- package/dist/tools/config_tools.js.map +1 -1
- package/dist/tools/get_learner_profile.js +3 -3
- package/dist/tools/get_learner_profile.js.map +1 -1
- package/dist/tools/get_session_quiz_plan.js +24 -13
- package/dist/tools/get_session_quiz_plan.js.map +1 -1
- package/dist/user-skill/eklavya/SKILL.md +6 -5
- package/package.json +1 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Has this session changed the code? Answered by
|
|
2
|
+
* Has this session changed the code? Answered by its edits and by git.
|
|
3
3
|
*
|
|
4
4
|
* `quiz.only_on_changes` keeps questions out of sessions that only read,
|
|
5
5
|
* searched or answered questions -- being quizzed in the middle of research is
|
|
6
|
-
* an interruption with no new code behind it. Watching Edit and Write is not
|
|
6
|
+
* an interruption with no new code behind it. Watching Edit and Write alone is not
|
|
7
7
|
* enough: agents edit through Bash (`sed -i`, heredocs, codegen) as often as
|
|
8
8
|
* through the edit tools, and all of those land in the working tree.
|
|
9
9
|
*
|
|
@@ -18,6 +18,16 @@
|
|
|
18
18
|
* The baseline lives in `meta` as `<ISO>|<fingerprint>`, one row per session,
|
|
19
19
|
* pruned after a week the way the prompt nudge's rows are. No migration.
|
|
20
20
|
*
|
|
21
|
+
* Git alone misses the commonest layout of all: a session started in the main
|
|
22
|
+
* checkout that edits a sibling worktree (`<repo>-worktrees/<branch>`) by
|
|
23
|
+
* absolute path and `cd`. The tree it started in never moves, so every one of
|
|
24
|
+
* those sessions read as research -- nine of thirteen coding sessions in one
|
|
25
|
+
* OIP day got no question. So the checkpoint hook, which fires on every edit
|
|
26
|
+
* tool, marks the session (`noteEdit`) when the file it edited sits in any git
|
|
27
|
+
* working tree and is not ignored. Research writes elsewhere -- auto-memory
|
|
28
|
+
* notes, plans, a scratchpad -- are outside any tree and do not count. Git
|
|
29
|
+
* still covers Bash edits in the session's own tree.
|
|
30
|
+
*
|
|
21
31
|
* Known edges, all accepted:
|
|
22
32
|
* - a file already dirty at session start, edited and then reverted, still
|
|
23
33
|
* counts (its mtime moved; a clean file reverted is clean again and does not);
|
|
@@ -100,6 +110,8 @@ export function recordBaseline(db, sessionId, cwd, fp = treeFingerprint(cwd)) {
|
|
|
100
110
|
* false, so its changes from here on still count.
|
|
101
111
|
*/
|
|
102
112
|
export function sessionChangedCode(db, sessionId, cwd) {
|
|
113
|
+
if (editMarked(db, sessionId))
|
|
114
|
+
return true;
|
|
103
115
|
const now = treeFingerprint(cwd);
|
|
104
116
|
if (now === null)
|
|
105
117
|
return true;
|
|
@@ -115,4 +127,38 @@ export function sessionChangedCode(db, sessionId, cwd) {
|
|
|
115
127
|
return true;
|
|
116
128
|
}
|
|
117
129
|
}
|
|
130
|
+
const EDIT_PREFIX = 'code_edit:';
|
|
131
|
+
function editMarked(db, sessionId) {
|
|
132
|
+
try {
|
|
133
|
+
return Boolean(db.prepare('SELECT 1 FROM meta WHERE key = ?').get(`${EDIT_PREFIX}${sessionId}`));
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/** True when `file` is in a git working tree and not ignored. Two git calls. */
|
|
140
|
+
function inWorkTree(file) {
|
|
141
|
+
const dir = path.dirname(file);
|
|
142
|
+
if (git(dir, ['rev-parse', '--is-inside-work-tree'])?.trim() !== 'true')
|
|
143
|
+
return false;
|
|
144
|
+
// Exit 0 means ignored: build output, a vendored folder.
|
|
145
|
+
const ignored = spawnSync('git', ['check-ignore', '-q', file], { cwd: dir, timeout: GIT_TIMEOUT_MS, windowsHide: true });
|
|
146
|
+
return ignored.status !== 0;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Marks the session as having changed code, once, when an edit tool wrote a
|
|
150
|
+
* file inside a git working tree -- any tree, including a sibling worktree the
|
|
151
|
+
* session never started in. Once marked, later edits cost no git call.
|
|
152
|
+
*/
|
|
153
|
+
export function noteEdit(db, sessionId, file) {
|
|
154
|
+
try {
|
|
155
|
+
if (!path.isAbsolute(file) || editMarked(db, sessionId) || !inWorkTree(file))
|
|
156
|
+
return;
|
|
157
|
+
db.prepare(`DELETE FROM meta WHERE key LIKE ? AND substr(value, 1, 10) < date('now', '-7 day')`).run(`${EDIT_PREFIX}%`);
|
|
158
|
+
db.prepare('INSERT OR IGNORE INTO meta (key, value) VALUES (?, ?)').run(`${EDIT_PREFIX}${sessionId}`, new Date().toISOString());
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
/* Unmarked falls back to the git comparison. */
|
|
162
|
+
}
|
|
163
|
+
}
|
|
118
164
|
//# sourceMappingURL=changes-lib.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changes-lib.js","sourceRoot":"","sources":["../../src/hooks/changes-lib.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"changes-lib.js","sourceRoot":"","sources":["../../src/hooks/changes-lib.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,32 +41,59 @@
|
|
|
41
41
|
*/
|
|
42
42
|
import { attributionRule } from '../surface.js';
|
|
43
43
|
import { run, openExisting, config, cwdOf, sessionId, minutesSince, framingFor } from './lib.js';
|
|
44
|
-
import { isSessionOff } from '../session.js';
|
|
44
|
+
import { isSessionOff, noteActivity, workSince } from '../session.js';
|
|
45
45
|
import { countUse } from '../telemetry.js';
|
|
46
|
-
import { sessionChangedCode } from './changes-lib.js';
|
|
46
|
+
import { noteEdit, sessionChangedCode } from './changes-lib.js';
|
|
47
|
+
const EDIT_TOOLS = /^(Edit|Write|MultiEdit|NotebookEdit)$/;
|
|
47
48
|
await run(async (input) => {
|
|
48
|
-
// Fast path. `agent_id` is present only inside a subagent, and a subagent
|
|
49
|
-
// cannot ask the developer anything -- AskUserQuestion is not in its toolset,
|
|
50
|
-
// and the human is not watching that transcript. Checkpointing there would
|
|
51
|
-
// burn a question from the budget on a prompt nobody ever sees.
|
|
52
|
-
if (input.agent_id)
|
|
53
|
-
return 0;
|
|
54
49
|
const cwd = cwdOf(input);
|
|
55
50
|
const { quiz, cadence, focus, focus_topic, max_questions_per_task, min_minutes_between_checkpoints } = config(cwd).config;
|
|
56
51
|
if (!quiz.enabled)
|
|
57
52
|
return 0;
|
|
53
|
+
// Before every other exit: an edit is what `quiz.only_on_changes` waits for,
|
|
54
|
+
// and it counts whoever made it (a subagent's edit is the session's work) and
|
|
55
|
+
// under either cadence (the Stop hook reads the same mark).
|
|
56
|
+
// The same goes for activity: every work tool call keeps the session's
|
|
57
|
+
// current stretch of work open (`noteActivity`), whoever made it.
|
|
58
|
+
let db = openExisting();
|
|
59
|
+
if (!db)
|
|
60
|
+
return 0;
|
|
61
|
+
const workSid = sessionId(input, db);
|
|
62
|
+
if (workSid) {
|
|
63
|
+
try {
|
|
64
|
+
noteActivity(db, workSid);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
/* Bookkeeping: a missed stamp only risks one stale-looking stretch. */
|
|
68
|
+
}
|
|
69
|
+
const file = input.tool_input?.file_path ?? input.tool_input?.notebook_path;
|
|
70
|
+
if (quiz.only_on_changes && !quiz.enforced && EDIT_TOOLS.test(input.tool_name ?? '') && typeof file === 'string') {
|
|
71
|
+
noteEdit(db, workSid, file);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// `agent_id` is present only inside a subagent, and a subagent cannot ask the
|
|
75
|
+
// developer anything -- AskUserQuestion is not in its toolset, and the human
|
|
76
|
+
// is not watching that transcript. Checkpointing there would burn a question
|
|
77
|
+
// from the budget on a prompt nobody ever sees.
|
|
78
|
+
if (input.agent_id)
|
|
79
|
+
return 0;
|
|
58
80
|
// The whole feature behind one switch. `end` is the pre-1.4 behaviour: silence
|
|
59
81
|
// until Stop.
|
|
60
82
|
if (cadence !== 'interleaved')
|
|
61
83
|
return 0;
|
|
62
|
-
const
|
|
63
|
-
if (!db)
|
|
64
|
-
return 0;
|
|
65
|
-
const sid = sessionId(input, db);
|
|
84
|
+
const sid = workSid;
|
|
66
85
|
if (!sid)
|
|
67
86
|
return 0;
|
|
68
87
|
if (isSessionOff(db, sid))
|
|
69
88
|
return 0;
|
|
89
|
+
// Only work logged in the current stretch is askable -- since the first prompt
|
|
90
|
+
// after an idle break (`workSince`) -- so a session left open overnight is not
|
|
91
|
+
// asked about yesterday. Not for an enforced gate, whose bar was frozen from
|
|
92
|
+
// everything the session logged. checkpoint-quiz.ts and stop-quiz-check.ts
|
|
93
|
+
// must agree on this line.
|
|
94
|
+
const since = quiz.enforced ? null : workSince(db, sid);
|
|
95
|
+
const recent = since ? 'AND datetime(sc.ts) >= datetime(@since)' : '';
|
|
96
|
+
const bind = since ? { sid, since } : { sid };
|
|
70
97
|
// One query for every number this decision needs.
|
|
71
98
|
//
|
|
72
99
|
// The candidate count and the concept line below share their WHERE clause with
|
|
@@ -80,6 +107,7 @@ await run(async (input) => {
|
|
|
80
107
|
LEFT JOIN mastery m ON m.concept_id = c.id
|
|
81
108
|
WHERE sc.session_id = @sid
|
|
82
109
|
AND COALESCE(sc.origin,'work') = 'work'
|
|
110
|
+
${recent}
|
|
83
111
|
AND NOT (COALESCE(m.score,0) >= 0.7 AND COALESCE(m.reps,0) >= 2)
|
|
84
112
|
AND sc.concept_id NOT IN
|
|
85
113
|
(SELECT concept_id FROM attempts WHERE session_id = @sid)) AS candidates,
|
|
@@ -93,7 +121,7 @@ await run(async (input) => {
|
|
|
93
121
|
-- quiz) should too.
|
|
94
122
|
(SELECT last_checkpoint_at FROM checkpoints WHERE session_id = @sid) AS last_checkpoint,
|
|
95
123
|
(SELECT ts FROM attempts WHERE session_id = @sid ORDER BY id DESC LIMIT 1) AS last_answer`)
|
|
96
|
-
.get(
|
|
124
|
+
.get(bind);
|
|
97
125
|
if (!stats)
|
|
98
126
|
return 0;
|
|
99
127
|
// Nothing unmastered and unasked. Concepts already attempted this session are
|
|
@@ -108,10 +136,10 @@ await run(async (input) => {
|
|
|
108
136
|
if (minutesSince(stats.last_answer) < min_minutes_between_checkpoints)
|
|
109
137
|
return 0;
|
|
110
138
|
// ---------------------------------------------------------------------------
|
|
111
|
-
// The concept most recently logged, not the oldest
|
|
112
|
-
//
|
|
113
|
-
//
|
|
114
|
-
//
|
|
139
|
+
// The concept most recently logged, not the oldest: this hook is asking about
|
|
140
|
+
// the code that was just written, and the last row is the one the call that
|
|
141
|
+
// triggered us put there. The Stop hook and the planner order the same way
|
|
142
|
+
// (ts, then insertion), so the concept named here is the one the plan serves.
|
|
115
143
|
const row = db
|
|
116
144
|
.prepare(`SELECT c.slug || COALESCE(' (' || sc.context || ')', '') AS concept
|
|
117
145
|
FROM session_concepts sc
|
|
@@ -119,12 +147,13 @@ await run(async (input) => {
|
|
|
119
147
|
LEFT JOIN mastery m ON m.concept_id = c.id
|
|
120
148
|
WHERE sc.session_id = @sid
|
|
121
149
|
AND COALESCE(sc.origin,'work') = 'work'
|
|
150
|
+
${recent}
|
|
122
151
|
AND NOT (COALESCE(m.score,0) >= 0.7 AND COALESCE(m.reps,0) >= 2)
|
|
123
152
|
AND sc.concept_id NOT IN
|
|
124
153
|
(SELECT concept_id FROM attempts WHERE session_id = @sid)
|
|
125
154
|
ORDER BY sc.ts DESC, sc.rowid DESC
|
|
126
155
|
LIMIT 1`)
|
|
127
|
-
.get(
|
|
156
|
+
.get(bind);
|
|
128
157
|
if (!row?.concept)
|
|
129
158
|
return 0;
|
|
130
159
|
// Last, because it spawns git: every cheaper reason not to ask goes first.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint-quiz.js","sourceRoot":"","sources":["../../src/hooks/checkpoint-quiz.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"checkpoint-quiz.js","sourceRoot":"","sources":["../../src/hooks/checkpoint-quiz.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
*/
|
|
41
41
|
import { isCowork } from '../surface.js';
|
|
42
42
|
import { run, openExisting, config, cwdOf, sessionId, minutesSince } from './lib.js';
|
|
43
|
-
import { isSessionOff } from '../session.js';
|
|
43
|
+
import { isSessionOff, workSince } from '../session.js';
|
|
44
44
|
import { flushAtSeam, identityOf, record, wrapUpAtSeam } from './memory-lib.js';
|
|
45
45
|
import { fillOmissions } from '../memory/learning.js';
|
|
46
46
|
import { dueInProject, sessionConcepts } from '../store.js';
|
|
@@ -108,6 +108,14 @@ await run(async (input) => {
|
|
|
108
108
|
const { repoRoot } = stopConfig;
|
|
109
109
|
if (!quiz.enabled)
|
|
110
110
|
return 0;
|
|
111
|
+
// Only work logged in the current stretch is askable -- since the first prompt
|
|
112
|
+
// after an idle break (`workSince`) -- so a session left open overnight is not
|
|
113
|
+
// asked about yesterday. Not for an enforced gate, whose bar was frozen from
|
|
114
|
+
// everything the session logged. checkpoint-quiz.ts and stop-quiz-check.ts
|
|
115
|
+
// must agree on this line.
|
|
116
|
+
const since = quiz.enforced ? null : workSince(db, sid);
|
|
117
|
+
const recent = since ? 'AND datetime(sc.ts) >= datetime(@since)' : '';
|
|
118
|
+
const bind = since ? { sid, since } : { sid };
|
|
111
119
|
const stats = db
|
|
112
120
|
.prepare(`SELECT
|
|
113
121
|
(SELECT count(*) FROM session_concepts sc
|
|
@@ -115,6 +123,7 @@ await run(async (input) => {
|
|
|
115
123
|
LEFT JOIN mastery m ON m.concept_id = c.id
|
|
116
124
|
WHERE sc.session_id = @sid
|
|
117
125
|
AND COALESCE(sc.origin,'work') = 'work'
|
|
126
|
+
${recent}
|
|
118
127
|
AND NOT (COALESCE(m.score,0) >= 0.7 AND COALESCE(m.reps,0) >= 2)
|
|
119
128
|
AND sc.concept_id NOT IN
|
|
120
129
|
(SELECT concept_id FROM attempts WHERE session_id = @sid)) AS unmastered,
|
|
@@ -131,7 +140,7 @@ await run(async (input) => {
|
|
|
131
140
|
-- checkpoint hook asks from the same allowance, so this is what turns the
|
|
132
141
|
-- Stop quiz from a fixed batch of four into a sweep of whatever is left.
|
|
133
142
|
(SELECT count(*) FROM attempts WHERE session_id = @sid) AS spent`)
|
|
134
|
-
.get(
|
|
143
|
+
.get(bind);
|
|
135
144
|
if (!stats)
|
|
136
145
|
return 0;
|
|
137
146
|
// Nothing of this session's own worth asking about. Concepts already answered
|
|
@@ -244,12 +253,13 @@ await run(async (input) => {
|
|
|
244
253
|
LEFT JOIN mastery m ON m.concept_id = c.id
|
|
245
254
|
WHERE sc.session_id = @sid
|
|
246
255
|
AND COALESCE(sc.origin,'work') = 'work'
|
|
256
|
+
${recent}
|
|
247
257
|
AND NOT (COALESCE(m.score,0) >= 0.7 AND COALESCE(m.reps,0) >= 2)
|
|
248
258
|
AND sc.concept_id NOT IN
|
|
249
259
|
(SELECT concept_id FROM attempts WHERE session_id = @sid)
|
|
250
|
-
ORDER BY sc.ts
|
|
260
|
+
ORDER BY sc.ts DESC, sc.rowid DESC
|
|
251
261
|
LIMIT @take`)
|
|
252
|
-
.all({
|
|
262
|
+
.all({ ...bind, take });
|
|
253
263
|
const concepts = (due.length ? due.slice(0, take) : rows.map((r) => r.line)).join('; ');
|
|
254
264
|
// Stamp the guard BEFORE blocking. If anything below fails, the worst case is a
|
|
255
265
|
// missed quiz — never a loop.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop-quiz-check.js","sourceRoot":"","sources":["../../src/hooks/stop-quiz-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"stop-quiz-check.js","sourceRoot":"","sources":["../../src/hooks/stop-quiz-check.ts"],"names":[],"mappings":"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"}
|
package/dist/memory/learning.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isDomainEnabled } from '../config.js';
|
|
2
2
|
import { allConceptSlugs, logSessionConcept, newConceptsThisSession } from '../store.js';
|
|
3
3
|
import { findFuzzyMatch, normalizeSlug } from '../slug.js';
|
|
4
|
-
import { addCandidate, entryById,
|
|
4
|
+
import { addCandidate, entryById, resolveCandidate, timeline, } from './store.js';
|
|
5
5
|
/**
|
|
6
6
|
* The bridge from evidence to the concept graph (PRD LRN-02).
|
|
7
7
|
*
|
|
@@ -79,12 +79,12 @@ export function proposeFor(db, entry, config) {
|
|
|
79
79
|
return added;
|
|
80
80
|
}
|
|
81
81
|
/** Proposes for every entry of a project that has not been mined yet. */
|
|
82
|
-
export function proposeForProject(db, config, project, limit = 10) {
|
|
82
|
+
export function proposeForProject(db, config, project, limit = 10, sessionId) {
|
|
83
83
|
// Observations only. A session summary is a roll-up of observation titles
|
|
84
84
|
// this has already mined, so including it proposes the same slugs a second
|
|
85
85
|
// time -- harmless in itself, but it crowds the top five that `fillOmissions`
|
|
86
86
|
// accepts for a session that logged nothing.
|
|
87
|
-
const entries = timeline(db, { project, kind: 'observation', limit }).filter((entry) => {
|
|
87
|
+
const entries = timeline(db, { project, kind: 'observation', limit, ...(sessionId ? { sessionId } : {}) }).filter((entry) => {
|
|
88
88
|
const row = db
|
|
89
89
|
.prepare('SELECT 1 AS hit FROM learning_sources WHERE entry_id = ? LIMIT 1')
|
|
90
90
|
.get(entry.id);
|
|
@@ -119,8 +119,14 @@ export function fillOmissions(db, config, sessionId, project) {
|
|
|
119
119
|
.get(sessionId);
|
|
120
120
|
if (logged.n > 0)
|
|
121
121
|
return { accepted: 0, skipped: 0, reason: 'already_logged' };
|
|
122
|
-
|
|
123
|
-
|
|
122
|
+
// This session's own entries and nothing else. Mined project-wide, the
|
|
123
|
+
// latest observations belong to whichever session wrote them, and a session
|
|
124
|
+
// that looked empty was quizzed on another one's work: one "design system
|
|
125
|
+
// compliance audit" entry turned up as `design-tokens` in four unrelated OIP
|
|
126
|
+
// sessions in a day. Nothing of its own yet means nothing to ask, which is
|
|
127
|
+
// the status quo, not a failure.
|
|
128
|
+
proposeForProject(db, config, project, 10, sessionId);
|
|
129
|
+
const candidates = sessionCandidates(db, project, sessionId, 20);
|
|
124
130
|
if (!candidates.length)
|
|
125
131
|
return { accepted: 0, skipped: 0, reason: 'no_candidates' };
|
|
126
132
|
// The same budget an explicit log is held to. It is a cap on slug sprawl, and
|
|
@@ -142,6 +148,22 @@ export function fillOmissions(db, config, sessionId, project) {
|
|
|
142
148
|
}
|
|
143
149
|
return { accepted, skipped: candidates.length - accepted };
|
|
144
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Pending candidates mined from this session's own entries or events, strongest
|
|
153
|
+
* first. Filtered in the query, not after a project-wide limit: other sessions'
|
|
154
|
+
* candidates are never resolved here, so they accumulate, and a capped list
|
|
155
|
+
* would sooner or later hold none of this session's.
|
|
156
|
+
*/
|
|
157
|
+
function sessionCandidates(db, project, sessionId, limit) {
|
|
158
|
+
return db
|
|
159
|
+
.prepare(`SELECT ls.* FROM learning_sources ls
|
|
160
|
+
WHERE ls.status = 'candidate' AND ls.project = ? AND ls.confidence >= 0.7
|
|
161
|
+
AND (ls.entry_id IN (SELECT id FROM memory_entries WHERE session_id = ?)
|
|
162
|
+
OR ls.event_id IN (SELECT id FROM evidence_events WHERE session_id = ?))
|
|
163
|
+
ORDER BY ls.confidence DESC, ls.id
|
|
164
|
+
LIMIT ?`)
|
|
165
|
+
.all(project, sessionId, sessionId, limit);
|
|
166
|
+
}
|
|
145
167
|
function conceptFor(db, candidate) {
|
|
146
168
|
return db.prepare('SELECT id FROM concepts WHERE slug = ?').get(candidate.slug);
|
|
147
169
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"learning.js","sourceRoot":"","sources":["../../src/memory/learning.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EACL,YAAY,EACZ,SAAS,EACT,
|
|
1
|
+
{"version":3,"file":"learning.js","sourceRoot":"","sources":["../../src/memory/learning.ts"],"names":[],"mappings":"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"}
|
package/dist/memory/recall.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { decayedScore,
|
|
1
|
+
import { decayedScore, isKnown, isOwed } from '../srs.js';
|
|
2
2
|
import { GLOBAL_PROJECT, projectKey } from '../store.js';
|
|
3
3
|
import { ESTIMATOR, estimateTokens } from './tokens.js';
|
|
4
4
|
import { keywordSearch, search, semanticSearch } from './search.js';
|
|
@@ -249,7 +249,8 @@ export function recall(db, config, opts) {
|
|
|
249
249
|
*/
|
|
250
250
|
export function learningCounts(db, project, now = new Date()) {
|
|
251
251
|
const rows = db
|
|
252
|
-
.prepare(`SELECT c.id, m.score, m.reps, m.next_review
|
|
252
|
+
.prepare(`SELECT c.id, m.score, m.reps, m.next_review,
|
|
253
|
+
(SELECT a.grade FROM attempts a WHERE a.concept_id = c.id ORDER BY a.id DESC LIMIT 1) AS last_grade
|
|
253
254
|
FROM concepts c
|
|
254
255
|
LEFT JOIN mastery m ON m.concept_id = c.id
|
|
255
256
|
WHERE c.id IN (
|
|
@@ -271,10 +272,10 @@ export function learningCounts(db, project, now = new Date()) {
|
|
|
271
272
|
mastered++;
|
|
272
273
|
else
|
|
273
274
|
learning++;
|
|
274
|
-
//
|
|
275
|
-
//
|
|
276
|
-
//
|
|
277
|
-
if (
|
|
275
|
+
// The backlog, not the review calendar: only a question declined, blanked
|
|
276
|
+
// or missed is owed (`isOwed`). Not exclusive with the other two -- a
|
|
277
|
+
// mastered concept whose latest answer missed is both.
|
|
278
|
+
if (isOwed(row.last_grade, row.next_review, now))
|
|
278
279
|
due++;
|
|
279
280
|
}
|
|
280
281
|
return { learning, mastered, due };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recall.js","sourceRoot":"","sources":["../../src/memory/recall.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"recall.js","sourceRoot":"","sources":["../../src/memory/recall.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAkB,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAiB,MAAM,YAAY,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C;;;;;;;;GAQG;AAEH;;;;;;;GAOG;AACH,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAErC,MAAM,UAAU,eAAe,CAAC,EAAM,EAAE,SAAiB;IACvD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,GAAG,CAAC,GAAG,gBAAgB,GAAG,SAAS,EAAE,CAEvF,CAAC;QACd,IAAI,CAAC,GAAG,EAAE,KAAK;YAAE,OAAO,IAAI,GAAG,EAAE,CAAC;QAClC,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,GAAG,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,EAAM,EAAE,SAAiB,EAAE,GAAa;IAC5D,IAAI,CAAC,GAAG,CAAC,MAAM;QAAE,OAAO;IACxB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,CAAC,GAAG,eAAe,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;QAC3D,uEAAuE;QACvE,qEAAqE;QACrE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;QAChC,EAAE,CAAC,OAAO,CACR;6DACuD,CACxD,CAAC,GAAG,CAAC,GAAG,gBAAgB,GAAG,SAAS,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,+EAA+E;IACjF,CAAC;AACH,CAAC;AA8BD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAClC,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAYpC,SAAS,SAAS,CAAC,IAAmB;IACpC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;QAC3C,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,MAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAAC,KAAe,EAAE,KAAa;IACjD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,OAAO,KAAK,CAAC,EAAE,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACjG,IAAI,KAAK,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAC9F,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IACjE,IAAI,KAAK,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1E,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,EAAM,EAAE,OAAmB;IAChD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9C,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAE,SAAS;YACvC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACzB,MAAM,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,EAAM,EAAE,MAAqB,EAAE,IAAmB;IACvE,MAAM,KAAK,GAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC;IACzH,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IACzC,2EAA2E;IAC3E,2EAA2E;IAC3E,0BAA0B;IAC1B,IAAI,IAAI,CAAC,OAAO,KAAK,cAAc;QAAE,OAAO,KAAK,CAAC;IAElD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;IAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC;IAChE,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,aAAa;QAC3C,KAAK;KACN,CAAC;IAEF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,GAAG,EAAU,CAAC;IAClD,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjD,MAAM,IAAI,GACR,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,KAAK;QAC5B,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACrG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CACpB,CAAC;IACR,MAAM,MAAM,GAAe,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACrH,MAAM,IAAI,GAAe,MAAM,CAAC,MAAM;QACpC,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,IAAI,CAAC,UAAU;YACf,sEAAsE;YACtE,0DAA0D;YAC1D,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;gBACb,wEAAwE;gBACxE,sEAAsE;gBACtE,6DAA6D;gBAC7D,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO;gBAC7D,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;aAC/D,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAE/B,8EAA8E;IAC9E,8DAA8D;IAC9D,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACtE,MAAM,IAAI,GACR,+GAA+G,CAAC;IAClH,MAAM,MAAM,GAAG,mBAAmB,CAAC;IACnC,8EAA8E;IAC9E,uEAAuE;IACvE,6EAA6E;IAC7E,MAAM,aAAa,GAAG,cAAc,CAClC,CAAC,4BAA4B,WAAW,eAAe,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAClF,CAAC;IAEF,2EAA2E;IAC3E,2EAA2E;IAC3E,wEAAwE;IACxE,4EAA4E;IAC5E,2EAA2E;IAC3E,oDAAoD;IACpD,MAAM,IAAI,GAAe,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,SAAS,GAAG,aAAa,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK;YAAE,MAAM;QAChC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QAClC,6EAA6E;QAC7E,2EAA2E;QAC3E,wEAAwE;QACxE,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,IAAI,SAAS,GAAG,IAAI,GAAG,SAAS;YAAE,SAAS;QACvF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,SAAS,IAAI,IAAI,CAAC;IACpB,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAE/B,8EAA8E;IAC9E,mEAAmE;IACnE,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,IAAI,UAAU,CAAC,MAAM,IAAI,eAAe;gBAAE,MAAM;YAChD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAE,SAAS;YACjC,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACvI,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,KAAK,GAAG,IAAI,GAAG,gBAAgB;gBAAE,MAAM;YAC3C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,KAAK,IAAI,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACtB,UAAU,CAAC,OAAO,CAChB,4HAA4H,CAC7H,CAAC;YACF,SAAS,IAAI,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAErC,MAAM,MAAM,GAAG,4BAA4B,WAAW,YAAY,IAAI,CAAC,MAAM,IAAI,CAAC;IAClF,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE,GAAG,UAAU,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE5E,MAAM,SAAS,GAAG,aAAa,CAAC,EAAE,EAAE;QAClC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;QACjC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,eAAe;QACpC,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,WAAW;QACtC,aAAa,EAAE,aAAa,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9F,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7B,OAAO,EAAE,KAAK,CAAC,EAAE;YACjB,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC;YACrC,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;SACzC,CAAC,CAAC;KACJ,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,SAAS;QAAE,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5E,OAAO;QACL,KAAK;QACL,SAAS;QACT,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3C,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;QACnE,eAAe,EAAE,SAAS;KAC3B,CAAC;AACJ,CAAC;AAQD;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,EAAM,EAAE,OAAe,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE;IACtE,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CACN;;;;;;;;;;;;SAYG,CACJ;SACA,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAMzF,CAAC;IAEJ,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;YAAE,QAAQ,EAAE,CAAC;;YACnD,QAAQ,EAAE,CAAC;QAChB,0EAA0E;QAC1E,sEAAsE;QACtE,uDAAuD;QACvD,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC;YAAE,GAAG,EAAE,CAAC;IAC1D,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,QAAQ,CAAC,EAAM,EAAE,OAAe;IACvC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CACN;;8DAEwD,CACzD;SACA,GAAG,EAAwB,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,OAAO;YAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IACD,uEAAuE;IACvE,kDAAkD;IAClD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAClB,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AACnB,CAAC;AAMD;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,EAAM,EAAE,OAAe,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE;IACtE,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAChD,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAc;IACrC,OAAO,MAAM;SACV,OAAO,CAAC,2EAA2E,EAAE,GAAG,CAAC;SACzF,OAAO,CAAC,gDAAgD,EAAE,EAAE,CAAC;SAC7D,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,EAAM,EACN,MAAqB,EACrB,IAA4D;IAE5D,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,6EAA6E;IAC7E,+DAA+D;IAC/D,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IAEnC,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAChG,4EAA4E;IAC5E,2EAA2E;IAC3E,4EAA4E;IAC5E,0EAA0E;IAC1E,wEAAwE;IACxE,2EAA2E;IAC3E,EAAE;IACF,qEAAqE;IACrE,qEAAqE;IACrE,MAAM,UAAU,GAAG,IAAI,CAAC;IACxB,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,UAAU,CAAC,CAAC;IACvF,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAErD,2EAA2E;IAC3E,2EAA2E;IAC3E,wEAAwE;IACxE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,UAAU,GAAe,EAAE,CAAC;IAClC,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,OAAO,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC5C,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAAE,SAAS;QACrC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvB,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE;QAChC,UAAU;QACV,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,KAAK;QACL,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QACjE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC;QACtD,OAAO,EAAE,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC;KAC7C,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACtC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eklavya",
|
|
3
3
|
"displayName": "Eklavya",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.34.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"
|
|
@@ -12,13 +12,13 @@ registrations, for eight rows total.
|
|
|
12
12
|
|
|
13
13
|
| Event | Implementation | Responsibility |
|
|
14
14
|
|---|---|---|
|
|
15
|
-
| SessionStart | `session-start` |
|
|
16
|
-
| UserPromptSubmit | `prompt-submit-nudge` | Refresh the session pointer, capture the prompt, recall relevant memory and nudge a session that has not logged concepts |
|
|
15
|
+
| SessionStart | `session-start` | Record the session for this host process and the checkout pointer; migrate legacy config; replay, summarize and recall memory; start a due background update; show profile/status and supply the log directive |
|
|
16
|
+
| UserPromptSubmit | `prompt-submit-nudge` | Refresh the host session record and checkout pointer, capture the prompt, recall relevant memory and nudge a session that has not logged concepts |
|
|
17
17
|
| SubagentStart | `subagent-start` | Ask implementers to log, without asking questions; exempt the tutor |
|
|
18
18
|
| PreToolUse (`Bash`) | `pre-tool-gate` | Deny recognized commits when the enforced session gate has not passed |
|
|
19
19
|
| PostToolUse (all tools) | `capture-tool` | Record one memory event with a bounded result excerpt (none for reads and edits); no quiz, summarization or provider call |
|
|
20
20
|
| PostToolUse (`mcp__.*log_session_concepts`) | `checkpoint-quiz` | Ask a due interleaved question after concepts are logged |
|
|
21
|
-
| PostToolUse (`^(Bash|Edit|Write|MultiEdit|NotebookEdit)$`) | `checkpoint-quiz` |
|
|
21
|
+
| PostToolUse (`^(Bash|Edit|Write|MultiEdit|NotebookEdit)$`) | `checkpoint-quiz` | Mark an edit into a git tree for `only_on_changes`; recheck pacing as work continues; no spinner on every tool call |
|
|
22
22
|
| Stop | `stop-quiz-check` | Record the turn's final message (parent only), flush the memory seam and request the remaining eligible quiz |
|
|
23
23
|
|
|
24
24
|
The MCP matcher accepts both standalone and plugin-scoped names. Do not narrow
|
|
@@ -100,7 +100,13 @@ last answer. Stamp `stop_markers` or `checkpoints` before emitting. The Stop
|
|
|
100
100
|
block cap (default 3) and remaining session question budget also bound repeats.
|
|
101
101
|
Every attempt consumes the shared `max_questions_per_task` allowance (default 4).
|
|
102
102
|
Review-origin concepts cannot re-arm the work-count guard. Change matching
|
|
103
|
-
candidate predicates in both hooks together
|
|
103
|
+
candidate predicates in both hooks together: both ask only work logged within
|
|
104
|
+
the current stretch (`workSince` in `session.ts`: activity is a prompt or a
|
|
105
|
+
work tool call, and a gap over `IDLE_BREAK_MINUTES` starts a new stretch),
|
|
106
|
+
newest first then last inserted, and so does the planner;
|
|
107
|
+
enforced gates are exempt. `quiz.only_on_changes` counts an edit-tool write
|
|
108
|
+
into any git working tree, not ignored (`noteEdit`, marked by the checkpoint
|
|
109
|
+
before its subagent and cadence exits), before comparing git trees.
|
|
104
110
|
|
|
105
111
|
The shell lexer in `commit-lib.ts` recognizes common wrappers and nested shell
|
|
106
112
|
forms, with deliberate misses for aliases, variables and scripts. The optional
|
|
@@ -29,8 +29,9 @@ In this order, because this is the order a learner asks them:
|
|
|
29
29
|
3. **What did I skip?** `skipped` — `declined` means they chose to pass,
|
|
30
30
|
`dont_know` means they blanked and were taught. Say which. This is the
|
|
31
31
|
actionable list: each comes back once its review is due, so it is a backlog, not a
|
|
32
|
-
scolding. If it is empty, say so in one clause; it is good news.
|
|
33
|
-
4. **What is due?** `due_for_review` —
|
|
32
|
+
scolding. Wrong answers come back the same way; right answers never do. If it is empty, say so in one clause; it is good news.
|
|
33
|
+
4. **What is due?** `due_for_review` — questions declined, blanked or answered
|
|
34
|
+
wrong whose review date has come (never a correct answer). The count, then the slugs with their
|
|
34
35
|
`tier_to_ask`. Already clamped to the level, so do not re-explain tiers.
|
|
35
36
|
5. **What is shaky?** `weak` — each with a one-clause gloss of what the concept
|
|
36
37
|
actually is. A bare slug list is not a report.
|
|
@@ -71,9 +71,10 @@ and they arrive with **`context: null` on purpose** — the code is withheld so
|
|
|
71
71
|
you reach for the idea instead. Ask about them on their own terms.
|
|
72
72
|
|
|
73
73
|
Items with `reason: "project_review"` are earlier questions from this project
|
|
74
|
-
that
|
|
75
|
-
|
|
76
|
-
|
|
74
|
+
that the learner declined, blanked on or missed and that are due again — the
|
|
75
|
+
only backlog there is. A question answered correctly never comes back this way.
|
|
76
|
+
Offered once this session's own concepts (those logged since the developer's last break of over an hour) are
|
|
77
|
+
covered, in any domain but only from this project -- there is one
|
|
77
78
|
database for every project, so the scope is what keeps a Flutter session off
|
|
78
79
|
last month's Terraform. Never while an enforced gate is open: a review answer
|
|
79
80
|
cannot open it. They also arrive with `context: null`, and for a
|