@cstart/coldstart 2.2.8 → 2.2.9
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 +21 -0
- package/dist/kb/cli.d.ts.map +1 -1
- package/dist/kb/cli.js +9 -1
- package/dist/kb/cli.js.map +1 -1
- package/dist/kb/search.d.ts +15 -0
- package/dist/kb/search.d.ts.map +1 -1
- package/dist/kb/search.js +195 -18
- package/dist/kb/search.js.map +1 -1
- package/hooks/capture-payload.mjs +11 -4
- package/hooks/codex-kb-recall.mjs +19 -3
- package/hooks/cursor-kb-recall.mjs +15 -2
- package/hooks/elicit-core.mjs +4 -1
- package/hooks/kb-elicit.mjs +25 -7
- package/hooks/kb-recall.mjs +18 -2
- package/hooks/recall-query.mjs +83 -0
- package/hooks/recall-seen.mjs +76 -0
- package/hooks/trigger.mjs +14 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
<p>
|
|
20
20
|
<a href="https://akashgoenka.github.io/coldstart/"><b>Website</b></a> ·
|
|
21
21
|
<a href="https://akashgoenka.github.io/coldstart/docs.html"><b>Docs</b></a> ·
|
|
22
|
+
<a href="https://akashgoenka.github.io/coldstart/blog.html"><b>Blog</b></a> ·
|
|
22
23
|
<a href="./PHILOSOPHY.md"><b>Philosophy</b></a> ·
|
|
23
24
|
<a href="https://www.npmjs.com/package/@cstart/coldstart"><b>npm</b></a>
|
|
24
25
|
</p>
|
|
@@ -272,6 +273,26 @@ See [PHILOSOPHY.md](./PHILOSOPHY.md) for why coldstart computes no semantics of
|
|
|
272
273
|
5. The keeper is per-repo and per-machine — no sharing across projects or hosts. The notebook _does_ travel: its `.raw` logs are committed and union-merge across branches and machines.
|
|
273
274
|
6. Notebook quality is bounded by what writing agents actually read — notes are accurate about what they state, but a note is not a proof of completeness.
|
|
274
275
|
|
|
276
|
+
## Writing
|
|
277
|
+
|
|
278
|
+
Longer pieces on the problems behind this tool — what agent sessions actually cost, and what
|
|
279
|
+
happened to the design when the measurements disagreed with the plan.
|
|
280
|
+
|
|
281
|
+
- [Where the tokens go in an agent session](https://akashgoenka.github.io/coldstart/blog/where-the-tokens-go.html)
|
|
282
|
+
— session cost is roughly turns × resident context, and output is a rounding error. How to
|
|
283
|
+
decompose your own transcripts instead of trusting anyone's published numbers.
|
|
284
|
+
- [An index cannot answer the same question twice](https://akashgoenka.github.io/coldstart/blog/an-index-cannot-answer-twice.html)
|
|
285
|
+
— a code graph makes each hop cheaper without reducing how many hops you take, and ranking by
|
|
286
|
+
in-degree makes leaf files structurally unrankable.
|
|
287
|
+
- [The tool the agent doesn't call](https://akashgoenka.github.io/coldstart/blog/the-tool-the-agent-doesnt-call.html)
|
|
288
|
+
— availability, documentation, and an explicit instruction still don't add up to adoption.
|
|
289
|
+
Including the times our own agents bypassed our own command.
|
|
290
|
+
- [From four tools to two](https://akashgoenka.github.io/coldstart/blog/from-four-tools-to-two.html)
|
|
291
|
+
— which tools got deleted, which capability genuinely went with them, and why the surface
|
|
292
|
+
stayed small afterwards.
|
|
293
|
+
- [Notes about code should be written by whoever read the code](https://akashgoenka.github.io/coldstart/blog/notes-should-be-written-by-whoever-read-the-code.html)
|
|
294
|
+
— why the notebook captures in-session rather than summarizing transcripts later.
|
|
295
|
+
|
|
275
296
|
## License
|
|
276
297
|
|
|
277
298
|
MIT — see [LICENSE](./LICENSE).
|
package/dist/kb/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/kb/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/kb/cli.ts"],"names":[],"mappings":"AAyGA,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA0C3D"}
|
package/dist/kb/cli.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* `coldstart kb <verb>` — the notebook's CLI surface. Same reader discipline
|
|
3
3
|
* as find/gs: stdout carries only the answer, diagnostics go to stderr.
|
|
4
4
|
*
|
|
5
|
-
* kb search <words...> [--max N] [--json] [--hook] [--no-index]
|
|
5
|
+
* kb search <words...> [--max N] [--json] [--hook] [--no-index] [--seen a,b]
|
|
6
6
|
* kb lookup <path> [symbol] [--json]
|
|
7
7
|
* kb write <spec.json | -> [--into ID] [--new] [--force] [--session S]
|
|
8
8
|
* kb status [--paths a,b,c] [--json]
|
|
@@ -57,6 +57,9 @@ function parseKbArgs(argv) {
|
|
|
57
57
|
case '--max':
|
|
58
58
|
flags.max = Number(argv[++i]) || undefined;
|
|
59
59
|
break;
|
|
60
|
+
case '--seen':
|
|
61
|
+
flags.seen = (argv[++i] ?? '').split(',').map((s) => s.trim()).filter(Boolean);
|
|
62
|
+
break;
|
|
60
63
|
case '--into':
|
|
61
64
|
flags.into = argv[++i];
|
|
62
65
|
break;
|
|
@@ -197,6 +200,7 @@ async function cmdSearch(words, flags) {
|
|
|
197
200
|
maxResults: flags.max ?? (flags.hook ? 3 : 8),
|
|
198
201
|
source: flags.hook ? 'hook' : 'tool',
|
|
199
202
|
strongOnly: flags.hook, // an arbitrary user sentence must not inject weak grazes
|
|
203
|
+
excludeIds: flags.seen?.length ? new Set(flags.seen) : undefined,
|
|
200
204
|
});
|
|
201
205
|
for (const w of result.warnings)
|
|
202
206
|
err(`[coldstart kb] ${w}`);
|
|
@@ -209,6 +213,10 @@ async function cmdSearch(words, flags) {
|
|
|
209
213
|
implant: shouldImplantTop(result),
|
|
210
214
|
convergence: result.hits[0].convergence,
|
|
211
215
|
strongTerms: result.hits[0].strongTerms,
|
|
216
|
+
// Which words carried the hit, and in which channel — not recoverable
|
|
217
|
+
// from the query string after the fact, and the input any later analysis
|
|
218
|
+
// of injection quality needs.
|
|
219
|
+
carriers: result.hits[0].carriers,
|
|
212
220
|
scores: result.hits.map((h) => Math.round(h.score * 100) / 100),
|
|
213
221
|
});
|
|
214
222
|
}
|
package/dist/kb/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/kb/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/kb/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/kb/search.d.ts
CHANGED
|
@@ -41,6 +41,16 @@ export interface KbSearchOptions {
|
|
|
41
41
|
* (the agent chose its terms).
|
|
42
42
|
*/
|
|
43
43
|
strongOnly?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Note ids already injected earlier in THIS session — dropped from the
|
|
46
|
+
* final page. Recall re-showed the same note inside one session on 61% of
|
|
47
|
+
* injections (worst: 12×), which is pure tax: the agent already has the
|
|
48
|
+
* title and gist in context. Applied AFTER ranking, so a suppressed repeat
|
|
49
|
+
* does NOT get backfilled by a lower-ranked note — the page just shrinks
|
|
50
|
+
* (and an all-seen page injects nothing). Hook-side bookkeeping, so tool
|
|
51
|
+
* `kb search` is unaffected.
|
|
52
|
+
*/
|
|
53
|
+
excludeIds?: ReadonlySet<string>;
|
|
44
54
|
}
|
|
45
55
|
export interface KbSearchHit {
|
|
46
56
|
note: FoldedNote;
|
|
@@ -65,6 +75,11 @@ export interface KbSearchHit {
|
|
|
65
75
|
* a scale-free convergence measure: a boilerplate graze shares ONE word
|
|
66
76
|
* with the top note; a task that names a mechanism lands several. */
|
|
67
77
|
strongTerms: number;
|
|
78
|
+
/** The eligible terms that actually carried this hit, with the channel each
|
|
79
|
+
* landed in (n=name, a=anchor, b=body) — e.g. "keeper:na". Recorded so the
|
|
80
|
+
* injection log can be analyzed after the fact: which words are doing the
|
|
81
|
+
* work is not recoverable from the query string alone. */
|
|
82
|
+
carriers: string[];
|
|
68
83
|
}
|
|
69
84
|
export interface KbSearchResult {
|
|
70
85
|
hits: KbSearchHit[];
|
package/dist/kb/search.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/kb/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAOvE,MAAM,WAAW,eAAe;IAC9B;;8EAE0E;IAC1E,UAAU,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,wEAAwE;IACxE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/kb/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAOvE,MAAM,WAAW,eAAe;IAC9B;;8EAE0E;IAC1E,UAAU,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,wEAAwE;IACxE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAClC;AAgBD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd;sEACkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb;;sEAEkE;IAClE,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;uCAGmC;IACnC,WAAW,EAAE,OAAO,CAAC;IACrB;;;0EAGsE;IACtE,WAAW,EAAE,MAAM,CAAC;IACpB;;;+DAG2D;IAC3D,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;;gDAE4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;0CACsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAsRD,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAwO/G;AASD;;;;;;;;;oEASoE;AACpE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAKhE;AA8BD;;;;;;;;;wBASwB;AACxB,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,CAO/E;AAED;;;;;2CAK2C;AAC3C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,CAuC/E;AAeD;;gCAEgC;AAChC,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,CAmB5F"}
|
package/dist/kb/search.js
CHANGED
|
@@ -78,6 +78,35 @@ const rarityMax = (n) => Math.ceil(n / HOOK_RARITY_DIVISOR);
|
|
|
78
78
|
* (2026-07-08): boilerplate max 2, known-graze 3, false suppressions 4–5.
|
|
79
79
|
* strongTerms is logged on every injection decision for re-calibration. */
|
|
80
80
|
const HOOK_CONVERGE_MIN = 4;
|
|
81
|
+
/**
|
|
82
|
+
* Hook mode: a hit carried by ONE PLAIN-ENGLISH term is a graze, not a match.
|
|
83
|
+
*
|
|
84
|
+
* Measured 2026-07-30 on 140 hand-labeled injections (two 70-query samples
|
|
85
|
+
* drawn from 563 logged prompts, the second held out). Single-carrier hits are
|
|
86
|
+
* 61% of all injections, but they are not one population — split by the same
|
|
87
|
+
* evidence distinction the eligibility gate above already makes:
|
|
88
|
+
*
|
|
89
|
+
* plain prose, no convergence 65 hits 3 good / 53 junk 5% precise
|
|
90
|
+
* code-shaped term 7 hits 4 good / 2 junk 67% precise
|
|
91
|
+
* converged term 15 hits 7 good / 8 junk 47% precise
|
|
92
|
+
*
|
|
93
|
+
* So the defect is not "one term", it is "one ORDINARY WORD": a prose word
|
|
94
|
+
* landing in one note's alias list is a homonym far more often than a topic
|
|
95
|
+
* match — "merge the PR" hits the fold note (whose aliases say "notebook merge
|
|
96
|
+
* conflict"), "status 403" hits the status note, "docker image" hits the site
|
|
97
|
+
* page. An identifier (max_files, AddAddress) or a term that converged on a
|
|
98
|
+
* declared symbol in the note's own anchor carries real evidence at n=1 and is
|
|
99
|
+
* kept; those match the multi-carrier population's precision (54%).
|
|
100
|
+
*
|
|
101
|
+
* Deliberately NOT a score threshold and NOT a stopword list: the best
|
|
102
|
+
* score-based rule won on one half and collapsed to 46% on the other, and a
|
|
103
|
+
* stoplist fitted on the first sample fell 72% → 38% held out. This counts
|
|
104
|
+
* evidence, so it stays scale-free as the notebook grows.
|
|
105
|
+
*
|
|
106
|
+
* A prompt that NAMES the note's path is exempt — an explicit request, not a
|
|
107
|
+
* graze.
|
|
108
|
+
*/
|
|
109
|
+
const HOOK_MIN_CARRIERS = 2;
|
|
81
110
|
/** Path-name override: when the raw prompt literally contains a note's anchor
|
|
82
111
|
* path (case/separator-insensitive), the user named that file — surface its
|
|
83
112
|
* note regardless of term rarity. parseTerms drops `/`-glued paths (the `/`
|
|
@@ -89,6 +118,23 @@ const HOOK_CONVERGE_MIN = 4;
|
|
|
89
118
|
const PATH_MATCH_MIN_SQUASH = 6;
|
|
90
119
|
const PATH_MATCH_BOOST = 100;
|
|
91
120
|
const tokenCount = (s) => (s ? s.split(/\s+/).filter(Boolean).length : 0);
|
|
121
|
+
/** Divisor applied to the hook-mode name channel so a note cannot buy rank with
|
|
122
|
+
* alias volume: a note's size RELATIVE to the corpus average, floored at 1.
|
|
123
|
+
* Only bloat is penalised — a median-length note scores exactly as it did
|
|
124
|
+
* before, and a terse note gets no windfall for being short (floor).
|
|
125
|
+
*
|
|
126
|
+
* Measured against the literal matches/identifiers form (divide by the raw
|
|
127
|
+
* count) on 563 logged queries, 2026-07-29:
|
|
128
|
+
* off 444 injected · magnet note 123 (28%) · top-5 share 58%
|
|
129
|
+
* rel 437 injected · magnet note 66 (15%) · top-5 share 48%
|
|
130
|
+
* abs 400 injected · magnet note 101 (25%) · top-5 share 54%
|
|
131
|
+
* The absolute form loses 57 injections and barely dents the magnet: dividing
|
|
132
|
+
* every name score by ~22 does not change name-vs-name ranking, it just sinks
|
|
133
|
+
* the whole name channel beneath the unnormalised anchor (2) and body (1)
|
|
134
|
+
* weights, so bloated notes keep winning through their other channels. */
|
|
135
|
+
function hookNameNorm(ids, avg) {
|
|
136
|
+
return Math.max(1, ids / avg);
|
|
137
|
+
}
|
|
92
138
|
/** Substring occurrence count in normalized text; a squash-only match counts 1. */
|
|
93
139
|
function countOcc(hay, haySquash, term) {
|
|
94
140
|
const t = norm(term);
|
|
@@ -117,9 +163,57 @@ function isCodeShaped(term) {
|
|
|
117
163
|
return true;
|
|
118
164
|
return false;
|
|
119
165
|
}
|
|
120
|
-
/**
|
|
166
|
+
/** Light Porter-style step-1 stem: plural and tense suffixes only, so that a
|
|
167
|
+
* prompt's "fires" reaches a note titled "…capture fire". Deliberately NOT a
|
|
168
|
+
* full stemmer — aggressive stemming collapses distinct identifiers, and this
|
|
169
|
+
* runs on the name channel where a false merge is a wrong injection. */
|
|
170
|
+
const STEM_CACHE = new Map();
|
|
171
|
+
function stem(word) {
|
|
172
|
+
const k = word.toLowerCase();
|
|
173
|
+
const cached = STEM_CACHE.get(k);
|
|
174
|
+
if (cached !== undefined)
|
|
175
|
+
return cached;
|
|
176
|
+
// A doubled final consonant is an artifact of the suffix ("stopping" →
|
|
177
|
+
// "stopp"); l/s/z double legitimately ("call", "pass", "buzz").
|
|
178
|
+
const dedouble = (s) => s.length > 2 && s[s.length - 1] === s[s.length - 2] && !'lsz'.includes(s[s.length - 1])
|
|
179
|
+
? s.slice(0, -1)
|
|
180
|
+
: s;
|
|
181
|
+
let s = k;
|
|
182
|
+
if (s.length > 4 && s.endsWith('ies'))
|
|
183
|
+
s = `${s.slice(0, -3)}y`;
|
|
184
|
+
else if (s.length > 4 && s.endsWith('ing'))
|
|
185
|
+
s = dedouble(s.slice(0, -3));
|
|
186
|
+
else if (s.length > 3 && s.endsWith('ed'))
|
|
187
|
+
s = dedouble(s.slice(0, -2));
|
|
188
|
+
// "boxes"/"matches" drop "es"; "fires"/"notes" drop only the "s", so the
|
|
189
|
+
// stem keeps its "e" and cannot collide with an unrelated short word.
|
|
190
|
+
else if (s.length > 3 && /(?:s|x|z|ch|sh)es$/.test(s))
|
|
191
|
+
s = s.slice(0, -2);
|
|
192
|
+
else if (s.length > 3 && s.endsWith('s') && !s.endsWith('ss'))
|
|
193
|
+
s = s.slice(0, -1);
|
|
194
|
+
STEM_CACHE.set(k, s);
|
|
195
|
+
return s;
|
|
196
|
+
}
|
|
197
|
+
/** Stems agree, allowing the silent "e" the suffix rules drop ("fire" → "fire",
|
|
198
|
+
* "firing" → "fir"). */
|
|
199
|
+
const sameStem = (a, b) => {
|
|
200
|
+
const sa = stem(a);
|
|
201
|
+
const sb = stem(b);
|
|
202
|
+
return sa === sb || sa === `${sb}e` || sb === `${sa}e`;
|
|
203
|
+
};
|
|
204
|
+
/** Whole-word, case-insensitive, stem-tolerant hit — "error" must not match
|
|
205
|
+
* "LoadErrors" (not a word boundary), but "fires" must match "fire". */
|
|
121
206
|
function wordHit(hay, term) {
|
|
122
|
-
|
|
207
|
+
const words = hay.match(/[A-Za-z0-9]+/g);
|
|
208
|
+
if (!words)
|
|
209
|
+
return false;
|
|
210
|
+
const t = norm(term);
|
|
211
|
+
for (const w of words) {
|
|
212
|
+
const lw = w.toLowerCase();
|
|
213
|
+
if (lw === t || sameStem(lw, t))
|
|
214
|
+
return true;
|
|
215
|
+
}
|
|
216
|
+
return false;
|
|
123
217
|
}
|
|
124
218
|
/** Case- and separator-insensitive containment (LoadStaging ≡ load_staging). */
|
|
125
219
|
function hits(hay, haySquash, term) {
|
|
@@ -144,12 +238,37 @@ function resolveTermToAnchors(kb, term) {
|
|
|
144
238
|
function resolveTermToSymbolFiles(kb, term) {
|
|
145
239
|
const out = new Set();
|
|
146
240
|
const t = norm(term);
|
|
241
|
+
// Same asymmetry the eligibility gate uses below: a code-shaped term may
|
|
242
|
+
// match a fragment of a symbol ("loadstaging" → LoadStagingFiles), but a
|
|
243
|
+
// plain English word must equal a WHOLE identifier token. Substring for
|
|
244
|
+
// English words is a lottery, measured on 236 logged queries: 164 terms
|
|
245
|
+
// resolved but only 8 were real symbol names — "but" matched
|
|
246
|
+
// ensureGitattri(but)es, "see" matched par(seE)xperience, "our" matched
|
|
247
|
+
// stripOurs. Token equality drops that class and keeps the real one.
|
|
248
|
+
const codeShaped = isCodeShaped(term);
|
|
147
249
|
for (const [path, symbols] of Object.entries(kb.anchors)) {
|
|
148
|
-
|
|
250
|
+
const hit = symbols.some((s) => (codeShaped ? norm(s).includes(t) : symbolTokens(s).includes(t)));
|
|
251
|
+
if (hit)
|
|
149
252
|
out.add(path);
|
|
150
253
|
}
|
|
151
254
|
return out;
|
|
152
255
|
}
|
|
256
|
+
/** Split an identifier into its lowercase word tokens: camelCase, PascalCase,
|
|
257
|
+
* ALLCAPS runs, snake_case, kebab-case, and dotted members. */
|
|
258
|
+
const TOKEN_CACHE = new Map();
|
|
259
|
+
function symbolTokens(symbol) {
|
|
260
|
+
const cached = TOKEN_CACHE.get(symbol);
|
|
261
|
+
if (cached)
|
|
262
|
+
return cached;
|
|
263
|
+
const tokens = symbol
|
|
264
|
+
.replace(/([a-z0-9])([A-Z])/g, '$1 $2')
|
|
265
|
+
.replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2')
|
|
266
|
+
.split(/[^A-Za-z0-9]+/)
|
|
267
|
+
.filter(Boolean)
|
|
268
|
+
.map((x) => x.toLowerCase());
|
|
269
|
+
TOKEN_CACHE.set(symbol, tokens);
|
|
270
|
+
return tokens;
|
|
271
|
+
}
|
|
153
272
|
/** An absence note's verdict comes from the keeper's stamp (it re-runs the
|
|
154
273
|
* stored search on every code/notebook change) — never from a live scan here. */
|
|
155
274
|
function absenceVerdict(note, kb) {
|
|
@@ -198,12 +317,31 @@ export async function kbSearch(root, query, opts = {}) {
|
|
|
198
317
|
// BM25 length normalization inputs (tool mode).
|
|
199
318
|
const lens = stacks.map(bm25Len);
|
|
200
319
|
const avgLen = Math.max(1, lens.reduce((a, b) => a + b, 0) / Math.max(1, lens.length));
|
|
320
|
+
// Hook-mode name-channel length normalization. Hook scoring is a flat
|
|
321
|
+
// presence·idf sum with NO length term, so a note's name channel (title +
|
|
322
|
+
// aliases) buys score by SURFACE AREA: aliases are natural-language symptom
|
|
323
|
+
// phrases, and every content word in them is another chance to match. Measured
|
|
324
|
+
// 2026-07-29 on 563 logged queries — hooks/kb-elicit.mjs carries 34 aliases
|
|
325
|
+
// (108 name tokens vs a 22-token median) and won 123/456 injections (27%),
|
|
326
|
+
// pulled in by "another", "first", "already", "resume" sitting inside phrases
|
|
327
|
+
// like "capture worklist has files from another directory". Across the corpus,
|
|
328
|
+
// name-channel size vs injections won: r = 0.71. Tool mode already divides by
|
|
329
|
+
// length (BM25 b·len/avgLen); this is the same correction for the mode where
|
|
330
|
+
// precision actually matters.
|
|
331
|
+
const nameIds = stacks.map((h) => Math.max(1, tokenCount(h.name)));
|
|
332
|
+
const avgNameIds = Math.max(1, nameIds.reduce((a, b) => a + b, 0) / Math.max(1, nameIds.length));
|
|
201
333
|
// Convergence channel: code-shaped term → files where it's a declared symbol.
|
|
202
334
|
const symFiles = new Map();
|
|
203
335
|
if (opts.notesIndex) {
|
|
336
|
+
// Every term gets the lookup, not just code-shaped ones. isCodeShaped is a
|
|
337
|
+
// SPELLING test (digits/underscore/hyphen/interior caps), not a "does this
|
|
338
|
+
// match the codebase" test — it rejects `keeper` though src/keeper.ts
|
|
339
|
+
// exists, so in a repo whose domain nouns are ordinary words the strongest
|
|
340
|
+
// channel we have was switched off: convergence fired on 1 of 236 logged
|
|
341
|
+
// queries. The shape asymmetry now lives inside the resolver, where it
|
|
342
|
+
// guards precision without gating access.
|
|
204
343
|
for (const t of terms)
|
|
205
|
-
|
|
206
|
-
symFiles.set(t, resolveTermToSymbolFiles(opts.notesIndex, t));
|
|
344
|
+
symFiles.set(t, resolveTermToSymbolFiles(opts.notesIndex, t));
|
|
207
345
|
}
|
|
208
346
|
const rareMax = rarityMax(notes.length);
|
|
209
347
|
const scored = [];
|
|
@@ -216,9 +354,11 @@ export async function kbSearch(root, query, opts = {}) {
|
|
|
216
354
|
let strongTerms = 0;
|
|
217
355
|
let convergence = false;
|
|
218
356
|
let rare = false;
|
|
357
|
+
let hardEvidence = false;
|
|
358
|
+
const carriers = [];
|
|
219
359
|
for (let k = 0; k < terms.length; k++) {
|
|
220
360
|
const t = terms[k];
|
|
221
|
-
|
|
361
|
+
let inName = hits(h.name, h.nameSquash, t);
|
|
222
362
|
let inAnchor = hits(h.anchor, h.anchorSquash, t);
|
|
223
363
|
// Lane-2 admission (term matches ONLY via the keeper's symbol inventory)
|
|
224
364
|
// stays off in strongOnly: an arbitrary sentence sharing one symbol with
|
|
@@ -231,8 +371,16 @@ export async function kbSearch(root, query, opts = {}) {
|
|
|
231
371
|
inAnchor = note.anchors.some((a) => files.has(a.path));
|
|
232
372
|
}
|
|
233
373
|
const inBody = h.body.includes(norm(t));
|
|
234
|
-
if (!inName && !inAnchor && !inBody)
|
|
235
|
-
|
|
374
|
+
if (!inName && !inAnchor && !inBody) {
|
|
375
|
+
// Presence above is substring containment, so "charging" misses a title
|
|
376
|
+
// that says "charge" and the term is dropped before the shape gate ever
|
|
377
|
+
// sees it — stemming in wordHit alone would be a no-op. Hook mode only:
|
|
378
|
+
// tool mode scores by countOcc, which would credit a stem hit with zero
|
|
379
|
+
// weight, so its behaviour stays byte-identical.
|
|
380
|
+
if (!(opts.strongOnly && !isCodeShaped(t) && wordHit(h.nameRaw, t)))
|
|
381
|
+
continue;
|
|
382
|
+
inName = true;
|
|
383
|
+
}
|
|
236
384
|
// Hook-mode term eligibility — the query is an arbitrary English
|
|
237
385
|
// sentence, so a term counts only when it (a) DISCRIMINATES (a word
|
|
238
386
|
// matching half the notebook — "save", "files" — identifies nothing)
|
|
@@ -254,12 +402,19 @@ export async function kbSearch(root, query, opts = {}) {
|
|
|
254
402
|
if (df[k] <= rareMax)
|
|
255
403
|
rare = true;
|
|
256
404
|
const files = symFiles.get(t);
|
|
257
|
-
|
|
405
|
+
const converged = !!files?.size && note.anchors.some((a) => files.has(a.path));
|
|
406
|
+
if (converged)
|
|
258
407
|
convergence = true;
|
|
408
|
+
// Evidence strong enough to stand alone: an identifier the user typed, or
|
|
409
|
+
// a term confirmed by the note's own anchor symbols. See HOOK_MIN_CARRIERS.
|
|
410
|
+
if (converged || isCodeShaped(t))
|
|
411
|
+
hardEvidence = true;
|
|
412
|
+
carriers.push(`${t}:${inName ? 'n' : ''}${inAnchor ? 'a' : ''}${inBody ? 'b' : ''}${converged ? 'c' : ''}`);
|
|
259
413
|
if (opts.strongOnly) {
|
|
260
|
-
//
|
|
261
|
-
//
|
|
262
|
-
|
|
414
|
+
// Presence·idf, with the name channel divided by how many identifiers
|
|
415
|
+
// that note put in the channel — a match on a 3-alias note outranks the
|
|
416
|
+
// same match on a 34-alias one. See nameIds above for the measurement.
|
|
417
|
+
boost += ((inName ? CHANNEL_W.name / hookNameNorm(nameIds[i], avgNameIds) : 0) + (inAnchor ? CHANNEL_W.anchor : 0) + (inBody ? CHANNEL_W.body : 0)) * idf(k);
|
|
263
418
|
}
|
|
264
419
|
else {
|
|
265
420
|
// BM25: term frequency across weighted channels, saturated by k1,
|
|
@@ -282,12 +437,18 @@ export async function kbSearch(root, query, opts = {}) {
|
|
|
282
437
|
rare = true;
|
|
283
438
|
strongTerms = Math.max(strongTerms, 1);
|
|
284
439
|
boost += PATH_MATCH_BOOST;
|
|
440
|
+
carriers.push('<path>');
|
|
285
441
|
}
|
|
286
442
|
if (!covered)
|
|
287
443
|
continue;
|
|
288
444
|
if (opts.strongOnly && !strong)
|
|
289
445
|
continue; // body-word coverage ≠ a hit on an arbitrary sentence
|
|
290
|
-
|
|
446
|
+
// One ORDINARY word is a graze — see HOOK_MIN_CARRIERS. Uniform on every
|
|
447
|
+
// candidate at every rank: a hit that clears the bar is eligible to rank
|
|
448
|
+
// first, whatever fell away above it.
|
|
449
|
+
if (opts.strongOnly && !pathNamedIds.has(note.id) && !hardEvidence && carriers.length < HOOK_MIN_CARRIERS)
|
|
450
|
+
continue;
|
|
451
|
+
scored.push({ note, score: boost, convergence, rare, strongTerms, carriers });
|
|
291
452
|
}
|
|
292
453
|
if (!scored.length) {
|
|
293
454
|
if (!opts.noMissLog)
|
|
@@ -296,7 +457,7 @@ export async function kbSearch(root, query, opts = {}) {
|
|
|
296
457
|
}
|
|
297
458
|
// Freshness NOW for everything scored, then hard-tier: fresh+active first.
|
|
298
459
|
const rareById = new Map(scored.map((s) => [s.note.id, s.rare]));
|
|
299
|
-
const withTier = scored.map(({ note, score, convergence, strongTerms }) => {
|
|
460
|
+
const withTier = scored.map(({ note, score, convergence, strongTerms, carriers }) => {
|
|
300
461
|
// The keeper's rename overlay lets a note whose file was renamed resolve to
|
|
301
462
|
// its new path ('moved', not 'missing'), so a byte-exact refactor doesn't
|
|
302
463
|
// send the note inactive. Live-re-verified inside stampAnchors.
|
|
@@ -306,7 +467,7 @@ export async function kbSearch(root, query, opts = {}) {
|
|
|
306
467
|
const inactive = note.type !== 'lesson' && anchorsAllMissing(stamped);
|
|
307
468
|
const stale = stamped.some((s) => s.state === 'changed' || s.state === 'missing');
|
|
308
469
|
const tier = inactive ? 3 : note.status !== 'active' ? 2 : stale ? 1 : 0;
|
|
309
|
-
return { note, score, tier, inactive, stamped, absence: absenceVerdict(note, opts.notesIndex), convergence, strongTerms };
|
|
470
|
+
return { note, score, tier, inactive, stamped, absence: absenceVerdict(note, opts.notesIndex), convergence, strongTerms, carriers };
|
|
310
471
|
});
|
|
311
472
|
// Recall (hook mode) must never inject a note whose subject doesn't exist on
|
|
312
473
|
// the current branch — a review/feature-branch note viewed from elsewhere.
|
|
@@ -322,10 +483,17 @@ export async function kbSearch(root, query, opts = {}) {
|
|
|
322
483
|
// corpus grows. Every suppression is metric-logged for re-calibration.
|
|
323
484
|
// The convergence override (HOOK_CONVERGE_MIN) rescues the one measured
|
|
324
485
|
// false-suppression mode: a real task named entirely in common words.
|
|
486
|
+
// Convergence is the strictest evidence in the system — the term matched the
|
|
487
|
+
// note's own authored text AND is a declared symbol in that note's anchor
|
|
488
|
+
// file, two independent channels agreeing (11/11 precise at rank 0 on the 27q
|
|
489
|
+
// corpus). It was computed and used for the implant tier but never consulted
|
|
490
|
+
// here, so an exact-symbol prompt could be suppressed purely because the
|
|
491
|
+
// symbol is common across sibling notes in a small notebook.
|
|
325
492
|
if (opts.strongOnly && notes.length >= HOOK_FLOOR_MIN_NOTES && surfaced.length &&
|
|
326
|
-
!rareById.get(surfaced[0].note.id) && surfaced[0].
|
|
493
|
+
!rareById.get(surfaced[0].note.id) && !surfaced[0].convergence &&
|
|
494
|
+
surfaced[0].strongTerms < HOOK_CONVERGE_MIN) {
|
|
327
495
|
if (!opts.noMissLog)
|
|
328
|
-
logMetric(root, 'inject-log', { query: query.slice(0, 200), suppressed: true, top: surfaced[0].note.id, score: Math.round(surfaced[0].score * 10) / 10, strongTerms: surfaced[0].strongTerms });
|
|
496
|
+
logMetric(root, 'inject-log', { query: query.slice(0, 200), suppressed: true, top: surfaced[0].note.id, score: Math.round(surfaced[0].score * 10) / 10, strongTerms: surfaced[0].strongTerms, carriers: surfaced[0].carriers });
|
|
329
497
|
return { hits: [], terms, warnings };
|
|
330
498
|
}
|
|
331
499
|
// Hook mode: hits far below the best are padding (a generic path segment
|
|
@@ -338,7 +506,16 @@ export async function kbSearch(root, query, opts = {}) {
|
|
|
338
506
|
// by the floor (not the cap) isn't worth widening for.
|
|
339
507
|
const top = trimmed[0]?.score ?? 0;
|
|
340
508
|
const omitted = trimmed.slice(max).filter((h) => h.score >= RESULTS_FLOOR * top).length;
|
|
341
|
-
|
|
509
|
+
// Session dedup runs LAST, on the page we would actually have shown, so a
|
|
510
|
+
// suppressed repeat frees no slot: the page shrinks (all-seen → inject
|
|
511
|
+
// nothing) instead of pulling up a note the cap had already rejected. That
|
|
512
|
+
// keeps this "don't repeat yourself" and not a second ranking pass. See
|
|
513
|
+
// excludeIds.
|
|
514
|
+
const page = trimmed.slice(0, max);
|
|
515
|
+
const deduped = opts.excludeIds?.size
|
|
516
|
+
? page.filter((h) => !opts.excludeIds.has(h.note.id))
|
|
517
|
+
: page;
|
|
518
|
+
return { hits: deduped, terms, warnings, omitted, maxUsed: max };
|
|
342
519
|
}
|
|
343
520
|
/** Body section of the rendered md (frontmatter stripped) for inlining. */
|
|
344
521
|
function noteBody(note) {
|
package/dist/kb/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/kb/search.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/kb/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -87,7 +87,7 @@ for it — your findings, not the notebook decision.`
|
|
|
87
87
|
body = body.includes("{{WORKLIST}}")
|
|
88
88
|
? body.replaceAll("{{WORKLIST}}", worklist)
|
|
89
89
|
: `${body.trimEnd()}\n\nWORKLIST — files you actually read this session, most-worked first \
|
|
90
|
-
(
|
|
90
|
+
(your scope; if you edited or deep-read a file that isn't listed, you can note it too):\n\n${worklist}`;
|
|
91
91
|
return `**Notebook capture point.** ${opening}\n\n${body.trimEnd()}${tail}`;
|
|
92
92
|
}
|
|
93
93
|
|
|
@@ -102,8 +102,9 @@ branch, reviewing a PR, or reading vendored/generated code, that knowledge is ab
|
|
|
102
102
|
or the future — write nothing and say so.
|
|
103
103
|
2. If nothing about the current code is worth recording, no note is the right answer. If a \
|
|
104
104
|
future agent would not act differently for knowing it, don't store it.
|
|
105
|
-
3. The worklist below is
|
|
106
|
-
(.coldstartignore) or already captured.
|
|
105
|
+
3. The worklist below is your scope, most-worked first. Unlisted files are out — ignored \
|
|
106
|
+
(.coldstartignore) or already captured. If you edited or deep-read a file this session that \
|
|
107
|
+
isn't listed, you can write a note for it too.
|
|
107
108
|
|
|
108
109
|
WORKLIST — files you actually read this session, most-worked first:
|
|
109
110
|
|
|
@@ -119,7 +120,13 @@ naming convention) is exactly what to record — ONLY if you actually observed i
|
|
|
119
120
|
session's work. Never guess at usage or go searching for it now. Files flagged "no consumers \
|
|
120
121
|
in import graph" are where an observed usage fact matters most.
|
|
121
122
|
7. Fixed a bug? The cause goes in the culpable file's note; the SYMPTOM words go in \
|
|
122
|
-
"aliases" — symptoms are what a future agent will search.
|
|
123
|
+
"aliases" — symptoms are what a future agent will search. Aliases are SEARCH KEYS, not \
|
|
124
|
+
sentences: each one 2-5 words, no filler ("after", "already", "another", "still"), because \
|
|
125
|
+
every word in an alias is an independent match chance and a long alias makes the note fire \
|
|
126
|
+
on prompts it has nothing to do with. Cover the vocabulary THIS FILE owns — the concept \
|
|
127
|
+
nouns someone would type when they want this file, including the ones already in its name \
|
|
128
|
+
and symbols. A note about alias handling that never says "aliases" cannot be found by \
|
|
129
|
+
someone asking about aliases. 6-10 aliases is plenty; more surface area is not more recall.
|
|
123
130
|
8. Read a note this session that proved wrong? Correct or retract it now — you are the warm \
|
|
124
131
|
agent; there is no "next".
|
|
125
132
|
9. Firsthand only: nothing from a subagent's report you didn't verify yourself.
|
|
@@ -27,6 +27,11 @@ import { existsSync, appendFileSync, readFileSync, writeFileSync } from "node:fs
|
|
|
27
27
|
import { join } from "node:path";
|
|
28
28
|
import { tmpdir } from "node:os";
|
|
29
29
|
import { fileURLToPath } from "node:url";
|
|
30
|
+
// Strip host telemetry wrappers before the query is built — see recall-query.mjs.
|
|
31
|
+
import { recallQuery } from "./recall-query.mjs";
|
|
32
|
+
// Per-session dedup shared with the other recall hooks — see recall-seen.mjs.
|
|
33
|
+
// Hosts with no transcript path never reset; dedup still holds for the session.
|
|
34
|
+
import { readSeen, writeSeen, idsInPage, seenArgs } from "./recall-seen.mjs";
|
|
30
35
|
|
|
31
36
|
// hooks/ sits beside dist/ in both the repo and the published package.
|
|
32
37
|
const CLI = fileURLToPath(new URL("../dist/index.js", import.meta.url));
|
|
@@ -71,15 +76,23 @@ process.on("unhandledRejection", (e) => { log(`unhandled ${e?.stack || e}`); pro
|
|
|
71
76
|
if (!root) process.exit(0);
|
|
72
77
|
setLogRoot(root);
|
|
73
78
|
|
|
79
|
+
const sid = String(input.session_id || "").replace(/[^\w-]/g, "");
|
|
80
|
+
|
|
74
81
|
// No notebook → no tax, not even a child process.
|
|
75
82
|
if (!existsSync(join(root, ".coldstart", "notebook", ".raw"))) process.exit(0);
|
|
76
83
|
|
|
77
|
-
const prompt =
|
|
84
|
+
const prompt = recallQuery(input.prompt, MAX_QUERY_CHARS);
|
|
78
85
|
if (!prompt) process.exit(0);
|
|
79
86
|
|
|
87
|
+
// Ephemeral Codex runs expose no rollout path; readSeen then never resets,
|
|
88
|
+
// which is the safe direction — dedup simply holds for the whole session.
|
|
89
|
+
const tPath = String(input.transcript_path || "");
|
|
90
|
+
const seen = readSeen(sid, tPath, log);
|
|
91
|
+
|
|
80
92
|
let page = "";
|
|
81
93
|
try {
|
|
82
|
-
|
|
94
|
+
const args = [CLI, "kb", "search", "--hook", "--max", "3", "--root", root, ...seenArgs(seen.ids)];
|
|
95
|
+
page = execFileSync("node", [...args, prompt], {
|
|
83
96
|
encoding: "utf8",
|
|
84
97
|
timeout: SEARCH_TIMEOUT_MS,
|
|
85
98
|
stdio: ["ignore", "pipe", "ignore"],
|
|
@@ -94,6 +107,10 @@ process.on("unhandledRejection", (e) => { log(`unhandled ${e?.stack || e}`); pro
|
|
|
94
107
|
process.exit(0);
|
|
95
108
|
}
|
|
96
109
|
|
|
110
|
+
// Record what this page hands over before the size guards can trim it — a
|
|
111
|
+
// note the agent was shown is seen, whichever way it ends up rendered.
|
|
112
|
+
writeSeen(sid, [...seen.ids, ...idsInPage(page)], tPath);
|
|
113
|
+
|
|
97
114
|
// Pointer page (rulings 2026-07-06/08): titles + gists + an OPENABLE note
|
|
98
115
|
// path, never a full body — a wrong pointer costs a glance, a wrong
|
|
99
116
|
// implant poisons the whole session. Depth is one Read of the → path away
|
|
@@ -130,7 +147,6 @@ process.on("unhandledRejection", (e) => { log(`unhandled ${e?.stack || e}`); pro
|
|
|
130
147
|
// grep-spiral unguarded otherwise. Path/shape must match the handler's state
|
|
131
148
|
// file: literal /tmp + main-agent key = session_id.
|
|
132
149
|
try {
|
|
133
|
-
const sid = String(input.session_id || "");
|
|
134
150
|
if (sid && /^[\w-]+$/.test(sid)) {
|
|
135
151
|
const sf = `/tmp/find_nudge_${sid}.json`;
|
|
136
152
|
let st = {};
|
|
@@ -29,6 +29,11 @@ import { cursorRoot } from "./cursor-input.mjs";
|
|
|
29
29
|
// stop wrote its worklist payload to a pending file instead of blocking; it
|
|
30
30
|
// rides this same next-prompt channel — capture first, then the user's request.
|
|
31
31
|
import { takePendingCapture } from "./elicit-core.mjs";
|
|
32
|
+
// Strip host telemetry wrappers before the query is built — see recall-query.mjs.
|
|
33
|
+
import { recallQuery } from "./recall-query.mjs";
|
|
34
|
+
// Per-session dedup shared with the other recall hooks — see recall-seen.mjs.
|
|
35
|
+
// Hosts with no transcript path never reset; dedup still holds for the session.
|
|
36
|
+
import { readSeen, writeSeen, idsInPage, seenArgs } from "./recall-seen.mjs";
|
|
32
37
|
|
|
33
38
|
// hooks/ sits beside dist/ in both the repo and the published package.
|
|
34
39
|
const CLI = fileURLToPath(new URL("../dist/index.js", import.meta.url));
|
|
@@ -80,13 +85,17 @@ process.on("unhandledRejection", (e) => { log(`unhandled ${e?.stack || e}`); pro
|
|
|
80
85
|
// (the first capture is what creates it).
|
|
81
86
|
const pending = takePendingCapture(sid);
|
|
82
87
|
|
|
83
|
-
const prompt =
|
|
88
|
+
const prompt = recallQuery(input.prompt, MAX_QUERY_CHARS);
|
|
89
|
+
|
|
90
|
+
const tPath = String(input.transcript_path || "");
|
|
91
|
+
const seen = readSeen(sid, tPath, log);
|
|
84
92
|
|
|
85
93
|
let page = "";
|
|
86
94
|
// No notebook / no prompt → no recall search, not even a child process.
|
|
87
95
|
if (prompt && existsSync(join(root, ".coldstart", "notebook", ".raw"))) {
|
|
96
|
+
const args = [CLI, "kb", "search", "--hook", "--max", "3", "--root", root, ...seenArgs(seen.ids)];
|
|
88
97
|
try {
|
|
89
|
-
page = execFileSync("node", [
|
|
98
|
+
page = execFileSync("node", [...args, prompt], {
|
|
90
99
|
encoding: "utf8",
|
|
91
100
|
timeout: SEARCH_TIMEOUT_MS,
|
|
92
101
|
stdio: ["ignore", "pipe", "ignore"],
|
|
@@ -108,6 +117,10 @@ process.on("unhandledRejection", (e) => { log(`unhandled ${e?.stack || e}`); pro
|
|
|
108
117
|
// Pointer page — titles + gists + an OPENABLE note path, never a full body.
|
|
109
118
|
// (Same framing as codex-kb-recall.mjs; notes are REFERENCE DATA, not
|
|
110
119
|
// instructions.)
|
|
120
|
+
// Record what this page hands over before the size guards can trim it — a
|
|
121
|
+
// note the agent was shown is seen, whichever way it ends up rendered.
|
|
122
|
+
if (page) writeSeen(sid, [...seen.ids, ...idsInPage(page)], tPath);
|
|
123
|
+
|
|
111
124
|
let block = "";
|
|
112
125
|
if (page) block =
|
|
113
126
|
`The repo's notebook (notes written by past agents after real tasks here) has entries ` +
|
package/hooks/elicit-core.mjs
CHANGED
|
@@ -16,7 +16,10 @@ import { tmpdir } from "node:os";
|
|
|
16
16
|
import { execFileSync } from "node:child_process";
|
|
17
17
|
import { existsSync, readFileSync, writeFileSync, unlinkSync, appendFileSync, mkdirSync } from "node:fs";
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
import { MAX_CAPTURE_FILES } from "./trigger.mjs";
|
|
20
|
+
// One source of truth: the display cap equals what a fire claims, so the prompt
|
|
21
|
+
// never shows fewer (or more) files than the fire marks captured.
|
|
22
|
+
export const MAX_WORKLIST = MAX_CAPTURE_FILES;
|
|
20
23
|
|
|
21
24
|
const noop = () => {};
|
|
22
25
|
|
package/hooks/kb-elicit.mjs
CHANGED
|
@@ -38,7 +38,7 @@ import { initialState, step } from "./trigger.mjs";
|
|
|
38
38
|
import { loadIgnore } from "./ignore.mjs";
|
|
39
39
|
import { buildCapturePayload } from "./capture-payload.mjs";
|
|
40
40
|
import {
|
|
41
|
-
worklistEntries, freshNotedSet, gitHead, logCaptureEvent, writePendingCapture,
|
|
41
|
+
worklistEntries, freshNotedSet, gitHead, logCaptureEvent, writePendingCapture, MAX_WORKLIST,
|
|
42
42
|
} from "./elicit-core.mjs";
|
|
43
43
|
|
|
44
44
|
// hooks/ sits beside dist/ in both the repo and the published package.
|
|
@@ -180,7 +180,23 @@ if (process.argv.includes("--manual")) {
|
|
|
180
180
|
process.exit(0);
|
|
181
181
|
}
|
|
182
182
|
const { sid, state, path: markerPath } = found;
|
|
183
|
-
|
|
183
|
+
// A manual /capture-notes is an EXPLICIT request to write up THIS session's
|
|
184
|
+
// work, so its scope is everything worked on — not merely what an automatic
|
|
185
|
+
// fire has yet to offer. Files EDITED this session are the highest-value
|
|
186
|
+
// notes (the fix, a brand-new helper), and an earlier automatic fire may
|
|
187
|
+
// have already marked them `captured` — a flag that means "offered once",
|
|
188
|
+
// never "a good note exists". Excluding them left the single most valuable
|
|
189
|
+
// note unwritten and a now-stale note unfixed (the Bug-1 report). So:
|
|
190
|
+
// include every edited file regardless of the flag, and drop only READ-ONLY
|
|
191
|
+
// files that were already offered (re-listing those on demand is just
|
|
192
|
+
// noise). Rank most-worked first (edits → retouches → reads) so new/edited
|
|
193
|
+
// files lead; the per-file annotations flag when a fresh note needs nothing.
|
|
194
|
+
const files = Object.entries(state.files)
|
|
195
|
+
.filter(([, f]) => (f.reads + f.edits + f.gs) > 0 && (f.edits > 0 || !f.captured))
|
|
196
|
+
.sort((a, b) => (b[1].edits - a[1].edits)
|
|
197
|
+
|| ((b[1].retouches || 0) - (a[1].retouches || 0))
|
|
198
|
+
|| (b[1].reads - a[1].reads))
|
|
199
|
+
.map(([rel]) => rel);
|
|
184
200
|
if (!files.length) {
|
|
185
201
|
process.stdout.write("Everything worked on so far is already captured — nothing new to write right now.\n");
|
|
186
202
|
log(`MANUAL nothing-new session=${sid}`);
|
|
@@ -188,14 +204,16 @@ if (process.argv.includes("--manual")) {
|
|
|
188
204
|
}
|
|
189
205
|
const entries = worklistEntries(CLI, root, files, state.files, log);
|
|
190
206
|
const payload = buildCapturePayload({ root, cli: CLI, sid, entries, envelope: "manual" });
|
|
191
|
-
// Mark ONLY the
|
|
192
|
-
//
|
|
193
|
-
//
|
|
194
|
-
//
|
|
207
|
+
// Mark ONLY the files actually LISTED (the worklist caps its display to
|
|
208
|
+
// MAX_WORKLIST) captured — any overflow stays uncaptured so it rolls into
|
|
209
|
+
// the next capture rather than being marked done but never shown. Re-read
|
|
210
|
+
// first: a Stop hook may have written the marker since we loaded it, and we
|
|
211
|
+
// must not clobber its counters. Best-effort — a failure here costs a
|
|
212
|
+
// duplicate ask, never the payload the user asked for.
|
|
195
213
|
try {
|
|
196
214
|
const live = JSON.parse(readFileSync(markerPath, "utf8"));
|
|
197
215
|
if (live && live.files) {
|
|
198
|
-
for (const rel of files) if (live.files[rel]) live.files[rel].captured = true;
|
|
216
|
+
for (const rel of files.slice(0, MAX_WORKLIST)) if (live.files[rel]) live.files[rel].captured = true;
|
|
199
217
|
writeFileSync(markerPath, JSON.stringify(live));
|
|
200
218
|
}
|
|
201
219
|
} catch (e) { log(`MANUAL mark-captured skipped ${e}`); }
|
package/hooks/kb-recall.mjs
CHANGED
|
@@ -34,6 +34,13 @@ import { fileURLToPath } from "node:url";
|
|
|
34
34
|
// the user's request. Consumed (deleted) on delivery; stale pendings (>24h,
|
|
35
35
|
// e.g. a session resumed days later) are dropped.
|
|
36
36
|
import { takePendingCapture } from "./elicit-core.mjs";
|
|
37
|
+
// The host wraps the user's words in editor/subagent telemetry; that text is
|
|
38
|
+
// file-rich and hijacks the path-name override in kb search. Strip it BEFORE
|
|
39
|
+
// truncating, or a long <ide_selection> eats the whole query budget.
|
|
40
|
+
import { recallQuery } from "./recall-query.mjs";
|
|
41
|
+
// Per-session dedup: don't re-show a note this session already got, and forget
|
|
42
|
+
// what was shown once the transcript shrinks (a compact). See recall-seen.mjs.
|
|
43
|
+
import { readSeen, writeSeen, idsInPage, seenArgs } from "./recall-seen.mjs";
|
|
37
44
|
|
|
38
45
|
// hooks/ sits beside dist/ in both the repo and the published package.
|
|
39
46
|
const CLI = fileURLToPath(new URL("../dist/index.js", import.meta.url));
|
|
@@ -41,6 +48,7 @@ const CLI = fileURLToPath(new URL("../dist/index.js", import.meta.url));
|
|
|
41
48
|
const MAX_QUERY_CHARS = 2000; // pasted-code prompts: the head carries the ask
|
|
42
49
|
const SEARCH_TIMEOUT_MS = 4000;
|
|
43
50
|
|
|
51
|
+
|
|
44
52
|
let LOG_FILE = join(tmpdir(), "coldstart-kb-hook.log");
|
|
45
53
|
function setLogRoot(root) { if (root) LOG_FILE = join(root, ".coldstart", "kb-hook.log"); }
|
|
46
54
|
function log(msg) {
|
|
@@ -85,13 +93,17 @@ process.on("unhandledRejection", (e) => { log(`unhandled ${e?.stack || e}`); pro
|
|
|
85
93
|
// (the first capture is what creates it).
|
|
86
94
|
const pending = takePendingCapture(sid);
|
|
87
95
|
|
|
88
|
-
const prompt =
|
|
96
|
+
const prompt = recallQuery(input.prompt, MAX_QUERY_CHARS);
|
|
97
|
+
|
|
98
|
+
const tPath = String(input.transcript_path || "");
|
|
99
|
+
const seen = readSeen(sid, tPath, log);
|
|
89
100
|
|
|
90
101
|
let page = "";
|
|
91
102
|
// No notebook / no prompt → no recall search, not even a child process.
|
|
92
103
|
if (prompt && existsSync(join(root, ".coldstart", "notebook", ".raw"))) {
|
|
104
|
+
const args = [CLI, "kb", "search", "--hook", "--max", "3", "--root", root, ...seenArgs(seen.ids)];
|
|
93
105
|
try {
|
|
94
|
-
page = execFileSync("node", [
|
|
106
|
+
page = execFileSync("node", [...args, prompt], {
|
|
95
107
|
encoding: "utf8",
|
|
96
108
|
timeout: SEARCH_TIMEOUT_MS,
|
|
97
109
|
stdio: ["ignore", "pipe", "ignore"],
|
|
@@ -117,6 +129,10 @@ process.on("unhandledRejection", (e) => { log(`unhandled ${e?.stack || e}`); pro
|
|
|
117
129
|
// agents never used it). Trust framing: [fresh] content is reliable
|
|
118
130
|
// as-is; the caution that remains is about COMPLETENESS (a note names a
|
|
119
131
|
// finding, not necessarily your whole file set), not about content.
|
|
132
|
+
// Record what this page hands over BEFORE the size guards below can trim
|
|
133
|
+
// it — a note the agent was shown is seen, whichever way it was rendered.
|
|
134
|
+
if (page) writeSeen(sid, [...seen.ids, ...idsInPage(page)], tPath);
|
|
135
|
+
|
|
120
136
|
let block = "";
|
|
121
137
|
if (page) block =
|
|
122
138
|
`The repo's notebook (notes written by past agents after real tasks here) has entries ` +
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* recall-query.mjs — turn a raw UserPromptSubmit payload into a recall QUERY.
|
|
3
|
+
*
|
|
4
|
+
* The hosts do not hand us the user's words. They hand us the user's words
|
|
5
|
+
* WRAPPED IN HARNESS TELEMETRY: the file that happens to be open in the editor,
|
|
6
|
+
* the current selection, a finished subagent's summary, the expansion of a
|
|
7
|
+
* slash command. That text is file- and symbol-rich, so `kb search --hook`
|
|
8
|
+
* treats it as if the user had named those files — most damagingly through the
|
|
9
|
+
* path-name override in src/kb/search.ts, which boosts a note past every
|
|
10
|
+
* eligibility gate when the query string contains its anchor path. A stale-open
|
|
11
|
+
* editor tab then hijacks recall for turns at a time.
|
|
12
|
+
*
|
|
13
|
+
* So: strip the wrappers (tag AND content) before the query is built, and
|
|
14
|
+
* before truncation — a 1.5KB <ide_selection> ahead of a short question would
|
|
15
|
+
* otherwise eat the whole MAX_QUERY_CHARS budget and leave the real ask cut off.
|
|
16
|
+
*
|
|
17
|
+
* Only a NAMED set of tags is stripped. Anything else — including XML or HTML
|
|
18
|
+
* the user pasted deliberately — is left alone; over-stripping would silently
|
|
19
|
+
* drop real questions, which is the failure this is meant to prevent.
|
|
20
|
+
*
|
|
21
|
+
* Fail-open: on any error the raw text is returned unchanged.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
/** Harness-emitted wrappers, union across Claude Code / Cursor / Codex. A tag
|
|
25
|
+
* a given host never emits simply never matches. */
|
|
26
|
+
export const HARNESS_TAGS = [
|
|
27
|
+
// Claude Code
|
|
28
|
+
"system-reminder",
|
|
29
|
+
"ide_opened_file",
|
|
30
|
+
"ide_selection",
|
|
31
|
+
"ide_diagnostics",
|
|
32
|
+
"task-notification",
|
|
33
|
+
"local-command-caveat",
|
|
34
|
+
"local-command-stdout",
|
|
35
|
+
"local-command-stderr",
|
|
36
|
+
"command-name",
|
|
37
|
+
"command-message",
|
|
38
|
+
"command-args",
|
|
39
|
+
"user-prompt-submit-hook",
|
|
40
|
+
// Cursor
|
|
41
|
+
"browser_instruction",
|
|
42
|
+
// Codex
|
|
43
|
+
"environment_context",
|
|
44
|
+
"user_instructions",
|
|
45
|
+
];
|
|
46
|
+
|
|
47
|
+
const NAMES = HARNESS_TAGS.map((t) => t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|");
|
|
48
|
+
// Well-formed pair, content included. Non-greedy, /s so it spans newlines.
|
|
49
|
+
const PAIRED = new RegExp(`<(${NAMES})(?:\\s[^>]*)?>[\\s\\S]*?<\\/\\1\\s*>`, "gi");
|
|
50
|
+
// Leftovers: self-closing, or a lone open/close tag from a truncated payload.
|
|
51
|
+
const LONE = new RegExp(`<\\/?(?:${NAMES})(?:\\s[^>]*)?\\/?>`, "gi");
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Strip harness wrappers from a raw prompt.
|
|
55
|
+
* @param {string} raw
|
|
56
|
+
* @returns {string} the user's own text; "" when nothing but telemetry remains.
|
|
57
|
+
*/
|
|
58
|
+
export function stripHarnessWrappers(raw) {
|
|
59
|
+
try {
|
|
60
|
+
let s = String(raw ?? "");
|
|
61
|
+
if (!s) return "";
|
|
62
|
+
// Nested wrappers (a system-reminder inside a task-notification) need more
|
|
63
|
+
// than one pass; bounded so a pathological payload cannot spin.
|
|
64
|
+
for (let i = 0; i < 4; i++) {
|
|
65
|
+
const next = s.replace(PAIRED, " ");
|
|
66
|
+
if (next === s) break;
|
|
67
|
+
s = next;
|
|
68
|
+
}
|
|
69
|
+
return s.replace(LONE, " ").replace(/[ \t]+/g, " ").trim();
|
|
70
|
+
} catch {
|
|
71
|
+
return String(raw ?? "");
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* The full prompt → query pipeline: strip, THEN truncate.
|
|
77
|
+
* @param {string} raw raw `input.prompt`
|
|
78
|
+
* @param {number} maxChars
|
|
79
|
+
* @returns {string} "" when there is nothing left to search for.
|
|
80
|
+
*/
|
|
81
|
+
export function recallQuery(raw, maxChars) {
|
|
82
|
+
return stripHarnessWrappers(raw).slice(0, maxChars).trim();
|
|
83
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* recall-seen.mjs — per-session dedup state for the recall hooks.
|
|
4
|
+
*
|
|
5
|
+
* 61% of notebook injections re-showed a note the SAME session had already
|
|
6
|
+
* been given (worst case 12x). That is pure tax: the title and gist are
|
|
7
|
+
* already in the agent's context, so the repeat buys nothing and pushes the
|
|
8
|
+
* page toward the host's size cap. Each recall hook remembers the ids it has
|
|
9
|
+
* shown and passes them to `kb search --seen`, which drops them from the page
|
|
10
|
+
* it would otherwise have rendered (no backfill; all-seen => inject nothing).
|
|
11
|
+
*
|
|
12
|
+
* Reset on COMPACTION, not on a clock. After a compact the session id is
|
|
13
|
+
* unchanged but the agent's context is gone, so a previously-shown note is
|
|
14
|
+
* genuinely absent again and SHOULD be re-injectable. A shrinking transcript
|
|
15
|
+
* file is the observable signal — the same one kb-elicit uses for its own
|
|
16
|
+
* resume handling. Hosts that expose no transcript path (ephemeral Codex runs)
|
|
17
|
+
* simply never reset: dedup still works, it just holds for the whole session.
|
|
18
|
+
*
|
|
19
|
+
* Shared by kb-recall.mjs (Claude), cursor-kb-recall.mjs and
|
|
20
|
+
* codex-kb-recall.mjs so the three cannot drift. Every function is fail-open:
|
|
21
|
+
* any error leaves dedup OFF rather than blocking recall.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
import { readFileSync, writeFileSync, statSync } from "node:fs";
|
|
25
|
+
import { join } from "node:path";
|
|
26
|
+
import { tmpdir } from "node:os";
|
|
27
|
+
|
|
28
|
+
const SEEN_TTL_MS = 24 * 60 * 60 * 1000;
|
|
29
|
+
/** os.tmpdir(), NOT literal /tmp — that path is reserved for the find_nudge
|
|
30
|
+
* state file, which the nudge handler reads back by an agreed literal path. */
|
|
31
|
+
const seenPath = (sid) => join(tmpdir(), `coldstart-recall-seen-${sid}.json`);
|
|
32
|
+
|
|
33
|
+
function transcriptSize(p) {
|
|
34
|
+
try { return p ? statSync(p).size : 0; } catch { return 0; }
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Ids already shown this session. `log` is optional (each host has its own).
|
|
39
|
+
* Returns { ids, size } — pass both back to writeSeen.
|
|
40
|
+
*/
|
|
41
|
+
export function readSeen(sid, transcriptPath, log) {
|
|
42
|
+
if (!sid) return { ids: [], size: 0 };
|
|
43
|
+
try {
|
|
44
|
+
const st = JSON.parse(readFileSync(seenPath(sid), "utf8"));
|
|
45
|
+
if (!st || !Array.isArray(st.ids)) return { ids: [], size: 0 };
|
|
46
|
+
if (Date.now() - (st.ts || 0) > SEEN_TTL_MS) return { ids: [], size: 0 };
|
|
47
|
+
const now = transcriptSize(transcriptPath);
|
|
48
|
+
if (now && st.size && now < st.size) {
|
|
49
|
+
log?.(`compaction detected (${st.size} -> ${now} bytes): clearing ${st.ids.length} seen ids`);
|
|
50
|
+
return { ids: [], size: now };
|
|
51
|
+
}
|
|
52
|
+
return { ids: st.ids, size: st.size || 0 };
|
|
53
|
+
} catch { return { ids: [], size: 0 }; }
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export function writeSeen(sid, ids, transcriptPath) {
|
|
57
|
+
if (!sid) return;
|
|
58
|
+
try {
|
|
59
|
+
writeFileSync(seenPath(sid), JSON.stringify({
|
|
60
|
+
ids: [...new Set(ids)].slice(-200), // bounded; a session never shows this many
|
|
61
|
+
size: transcriptSize(transcriptPath),
|
|
62
|
+
ts: Date.now(),
|
|
63
|
+
}));
|
|
64
|
+
} catch { /* fail-open: dedup is an optimisation, never a gate */ }
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/** Note ids on a rendered pointer page — each hit carries `→ open: …/<id>.md`.
|
|
68
|
+
* Read back off the rendered text so the hooks need no structured output. */
|
|
69
|
+
export function idsInPage(page) {
|
|
70
|
+
return [...page.matchAll(/→ open:\s*\S*?notes\/([\w.-]+)\.md/g)].map((m) => m[1]);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/** The `--seen a,b,c` argv fragment, or [] when there is nothing to exclude. */
|
|
74
|
+
export function seenArgs(ids) {
|
|
75
|
+
return ids.length ? ["--seen", ids.join(",")] : [];
|
|
76
|
+
}
|
package/hooks/trigger.mjs
CHANGED
|
@@ -43,6 +43,12 @@
|
|
|
43
43
|
|
|
44
44
|
export const T_ARM = 10;
|
|
45
45
|
export const T_CAP = 20;
|
|
46
|
+
/** Files a single fire CLAIMS (marks captured) and lists — the same cap the
|
|
47
|
+
* worklist prompt renders (elicit-core slices its display to it). Files beyond
|
|
48
|
+
* it stay UNCAPTURED so they roll into the NEXT fire's worklist, rather than
|
|
49
|
+
* being marked done but never shown — which silently dropped notes on sessions
|
|
50
|
+
* that touched more than this many files (a long autonomous grind). */
|
|
51
|
+
export const MAX_CAPTURE_FILES = 30;
|
|
46
52
|
export const SETTLE_ACTIVE_STOPS = 3;
|
|
47
53
|
export const DESCENT_QUIET = 1;
|
|
48
54
|
/** Uncaptured-file floor for the BLOCKING/backlog paths (head-drift, cap).
|
|
@@ -152,11 +158,15 @@ export function step(state, obs) {
|
|
|
152
158
|
|
|
153
159
|
let decision = null;
|
|
154
160
|
if (fire) {
|
|
155
|
-
// worklist = the uncaptured set, most-worked first (edits, then retouches)
|
|
156
|
-
|
|
161
|
+
// worklist = the uncaptured set, most-worked first (edits, then retouches),
|
|
162
|
+
// capped to what one fire claims. Mark ONLY the listed files captured; the
|
|
163
|
+
// overflow stays uncaptured and rolls into the next fire (which re-fires
|
|
164
|
+
// soon, since the backlog keeps the score high).
|
|
165
|
+
const ranked = uncaptured
|
|
157
166
|
.sort((a, b) => (b[1].edits - a[1].edits) || (b[1].retouches - a[1].retouches) || (b[1].reads - a[1].reads))
|
|
158
|
-
.
|
|
159
|
-
|
|
167
|
+
.slice(0, MAX_CAPTURE_FILES);
|
|
168
|
+
const files = ranked.map(([rel]) => rel);
|
|
169
|
+
for (const [, f] of ranked) f.captured = true;
|
|
160
170
|
s.armed = false;
|
|
161
171
|
s.activeStops = 0;
|
|
162
172
|
s.stopsSinceFire = 0;
|