@cstart/coldstart 2.2.1 → 2.2.2
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/index-manager.d.ts +10 -0
- package/dist/index-manager.d.ts.map +1 -1
- package/dist/index-manager.js +24 -1
- package/dist/index-manager.js.map +1 -1
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +47 -2
- package/dist/status.js.map +1 -1
- package/hooks/codex-kb-elicit.mjs +1 -1
- package/hooks/cursor-kb-elicit.mjs +1 -1
- package/hooks/cursor-kb-recall.mjs +1 -1
- package/hooks/elicit-core.mjs +1 -1
- package/hooks/kb-elicit.mjs +70 -6
- package/hooks/kb-recall.mjs +1 -1
- package/hooks/trigger.mjs +16 -14
- package/package.json +1 -1
package/dist/index-manager.d.ts
CHANGED
|
@@ -61,6 +61,16 @@ export declare class IndexManager {
|
|
|
61
61
|
private refreshingKb;
|
|
62
62
|
private kbRefreshQueued;
|
|
63
63
|
private refreshKbNotesIndex;
|
|
64
|
+
/**
|
|
65
|
+
* Keep an already-generated notebook `index.html` current. `kb view` is
|
|
66
|
+
* opt-in (generate-and-open); once the user has opened it, the browser tab
|
|
67
|
+
* otherwise shows a frozen snapshot until they re-run the command. When the
|
|
68
|
+
* file exists we re-render it on every notes refresh so a plain tab reload
|
|
69
|
+
* shows the latest notes — no command re-run. We never CREATE the file (that
|
|
70
|
+
* stays the user's explicit `kb view`), and this is best-effort: a render
|
|
71
|
+
* failure must never wedge the keeper.
|
|
72
|
+
*/
|
|
73
|
+
private regenerateKbViewIfPresent;
|
|
64
74
|
private handleBatch;
|
|
65
75
|
/** Best-effort observability writers (skipped under --no-cache). Stamps are
|
|
66
76
|
* serialized through one promise chain: updateKeeperState is read-merge-
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-manager.d.ts","sourceRoot":"","sources":["../src/index-manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index-manager.d.ts","sourceRoot":"","sources":["../src/index-manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAchD,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;AAErD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,aAAa,CAAC;IACrB,sFAAsF;IACtF,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,YAAY;IAerB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAjBxB,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,gBAAgB,CAA8C;IAEtE;;;OAGG;IACH,OAAO,CAAC,oBAAoB,CAAqB;gBAG/C,YAAY,EAAE,aAAa,EACV,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,OAAO;IAKjC,4EAA4E;IAC5E,UAAU,IAAI,YAAY;IAI1B,wDAAwD;IACxD,aAAa,IAAI,IAAI;IAgBrB,8CAA8C;IAC9C,YAAY,IAAI,IAAI;IAapB,OAAO,CAAC,GAAG;IAIX;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;;;;;OAMG;IACH,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,eAAe,CAAS;YAClB,mBAAmB;IAqBjC;;;;;;;;OAQG;IACH,OAAO,CAAC,yBAAyB;YAUnB,WAAW;IAuCzB;;kFAE8E;IAC9E,OAAO,CAAC,UAAU,CAAoC;YACxC,KAAK;YAQL,MAAM;YAKN,cAAc;IA4B5B;;;;OAIG;IACH,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,iBAAiB,CAA8C;IACvE,OAAO,CAAC,oBAAoB;IAgB5B;;;;;OAKG;IACH,OAAO,CAAC,WAAW,CAAK;YACV,iBAAiB;IAsB/B,iFAAiF;IACjF,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,iBAAiB;IAwBzB;;;;;;;;;OASG;IACH,OAAO,CAAC,iBAAiB;CAwC1B"}
|
package/dist/index-manager.js
CHANGED
|
@@ -3,8 +3,10 @@ import { existsSync } from 'node:fs';
|
|
|
3
3
|
import { stat } from 'node:fs/promises';
|
|
4
4
|
import { join, basename } from 'node:path';
|
|
5
5
|
import { startWatcher } from './watcher.js';
|
|
6
|
-
import { renderIds, notebookExists } from './kb/store.js';
|
|
6
|
+
import { renderIds, notebookExists, notebookDir } from './kb/store.js';
|
|
7
7
|
import { buildKbNotesIndex, saveKbNotesIndex } from './kb/notes-index.js';
|
|
8
|
+
import { kbView } from './kb/view.js';
|
|
9
|
+
import { VIEW_TEMPLATE } from './kb/view-template.js';
|
|
8
10
|
import { patchIndex } from './indexer/patch.js';
|
|
9
11
|
import { getGitHead } from './indexer/git.js';
|
|
10
12
|
import { lintIndexInvariants } from './indexer/invariants.js';
|
|
@@ -126,6 +128,7 @@ export class IndexManager {
|
|
|
126
128
|
const kb = await buildKbNotesIndex(this.activeIndex, this.activeIndex.rootDir);
|
|
127
129
|
await saveKbNotesIndex(this.activeIndex.rootDir, kb, this.cacheDir);
|
|
128
130
|
this.log(`[coldstart] KB notes index refreshed (${Object.keys(kb.anchors).length} anchors, ${Object.keys(kb.absence).length} absence stamps, ${Object.keys(kb.renames).length} renames)`);
|
|
131
|
+
this.regenerateKbViewIfPresent();
|
|
129
132
|
}
|
|
130
133
|
catch (err) {
|
|
131
134
|
this.log(`[coldstart] KB notes index refresh failed: ${err}`);
|
|
@@ -138,6 +141,26 @@ export class IndexManager {
|
|
|
138
141
|
}
|
|
139
142
|
}
|
|
140
143
|
}
|
|
144
|
+
/**
|
|
145
|
+
* Keep an already-generated notebook `index.html` current. `kb view` is
|
|
146
|
+
* opt-in (generate-and-open); once the user has opened it, the browser tab
|
|
147
|
+
* otherwise shows a frozen snapshot until they re-run the command. When the
|
|
148
|
+
* file exists we re-render it on every notes refresh so a plain tab reload
|
|
149
|
+
* shows the latest notes — no command re-run. We never CREATE the file (that
|
|
150
|
+
* stays the user's explicit `kb view`), and this is best-effort: a render
|
|
151
|
+
* failure must never wedge the keeper.
|
|
152
|
+
*/
|
|
153
|
+
regenerateKbViewIfPresent() {
|
|
154
|
+
const root = this.activeIndex.rootDir;
|
|
155
|
+
try {
|
|
156
|
+
if (!existsSync(join(notebookDir(root), 'index.html')))
|
|
157
|
+
return;
|
|
158
|
+
kbView(root, VIEW_TEMPLATE, { open: false, generated: new Date().toISOString().slice(0, 10) });
|
|
159
|
+
}
|
|
160
|
+
catch (err) {
|
|
161
|
+
this.log(`[coldstart] KB view regen skipped: ${err}`);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
141
164
|
async handleBatch(batch) {
|
|
142
165
|
if (batch.size === 0)
|
|
143
166
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-manager.js","sourceRoot":"","sources":["../src/index-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-manager.js","sourceRoot":"","sources":["../src/index-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/status.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA6FH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAwH/C"}
|
package/dist/status.js
CHANGED
|
@@ -9,8 +9,9 @@
|
|
|
9
9
|
* Output is simple grep-friendly stdout text.
|
|
10
10
|
*/
|
|
11
11
|
import { existsSync, statSync, readFileSync } from 'node:fs';
|
|
12
|
-
import { join } from 'node:path';
|
|
13
|
-
import {
|
|
12
|
+
import { join, dirname } from 'node:path';
|
|
13
|
+
import { fileURLToPath } from 'node:url';
|
|
14
|
+
import { daemonDir, daemonLogPath, isDaemonAlive, listDaemonLocks, getCurrentVersion, } from './daemon-lock.js';
|
|
14
15
|
import { getCacheDir } from './cache/disk-cache.js';
|
|
15
16
|
import { readKeeperState, readRepairTail } from './keeper-state.js';
|
|
16
17
|
function fileSize(path) {
|
|
@@ -40,6 +41,25 @@ function relativeAge(ms) {
|
|
|
40
41
|
return `${h}h ago`;
|
|
41
42
|
return `${Math.round(h / 24)}d ago`;
|
|
42
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Absolute coldstart hook script paths wired into a repo's Claude settings.
|
|
46
|
+
* Scanned as raw text (structure-agnostic across settings shapes): every
|
|
47
|
+
* `/…/hooks/<name>.mjs` referenced in a hook command. Used only to flag a path
|
|
48
|
+
* a global-install move (node/nvm/prefix change) left dangling.
|
|
49
|
+
*/
|
|
50
|
+
function wiredHookPaths(rootDir) {
|
|
51
|
+
const settings = join(rootDir, '.claude', 'settings.json');
|
|
52
|
+
if (!existsSync(settings))
|
|
53
|
+
return [];
|
|
54
|
+
try {
|
|
55
|
+
const raw = readFileSync(settings, 'utf-8');
|
|
56
|
+
const re = /(\/[^\s"']+\/hooks\/(?:kb-elicit|kb-recall|find-nudge|find-preguard)\.mjs)/g;
|
|
57
|
+
return [...new Set(Array.from(raw.matchAll(re), (m) => m[1]))];
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return [];
|
|
61
|
+
}
|
|
62
|
+
}
|
|
43
63
|
/** Freshness of a root's on-disk index, derived from the cache meta.json. */
|
|
44
64
|
function indexFreshness(rootDir) {
|
|
45
65
|
if (!rootDir)
|
|
@@ -149,6 +169,31 @@ export async function runStatus() {
|
|
|
149
169
|
if (detailLines.length > 0) {
|
|
150
170
|
process.stdout.write('\n' + detailLines.join('\n') + '\n');
|
|
151
171
|
}
|
|
172
|
+
// Install health: the #1 cause of "the update didn't take" is a keeper still
|
|
173
|
+
// running old code, or hooks wired to a global path a node/prefix change left
|
|
174
|
+
// behind. Surface both so it's diagnosed, not guessed.
|
|
175
|
+
const installed = getCurrentVersion();
|
|
176
|
+
// status.js runs from <installRoot>/dist/, so the package root is two up.
|
|
177
|
+
const thisInstallRoot = dirname(dirname(fileURLToPath(import.meta.url)));
|
|
178
|
+
const healthLines = [`\nInstalled: ${installed} (${thisInstallRoot})`];
|
|
179
|
+
for (const r of rows) {
|
|
180
|
+
if (r.version !== '-' && r.version !== installed) {
|
|
181
|
+
healthLines.push(` ⚠ keeper on ${r.root} runs ${r.version} but ${installed} is installed — ` +
|
|
182
|
+
`run \`coldstart restart\` to pick up the update`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
for (const l of listings) {
|
|
186
|
+
if (!l.lock.rootDir)
|
|
187
|
+
continue;
|
|
188
|
+
for (const w of wiredHookPaths(l.lock.rootDir)) {
|
|
189
|
+
if (!existsSync(w)) {
|
|
190
|
+
healthLines.push(` ⚠ wired hook path missing: ${w}\n` +
|
|
191
|
+
` (global install moved — likely a node/nvm or npm-prefix change) — ` +
|
|
192
|
+
`run \`coldstart init\` in that repo to re-point the hooks`);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
process.stdout.write(healthLines.join('\n') + '\n');
|
|
152
197
|
if (rows.some(r => r.status !== 'alive')) {
|
|
153
198
|
process.stdout.write(`\nA dead keeper means a stale lockfile. \`coldstart restart\` clears it; ` +
|
|
154
199
|
`the next \`coldstart find\` respawns a fresh keeper.\n`);
|
package/dist/status.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* HOST CONSTRAINT: Codex's Stop does NOT fire per turn — in the TUI it fires
|
|
7
7
|
* once at session EXIT, and `codex exec` is one Stop by construction
|
|
8
|
-
* (confirmed live 2026-07-13). A multi-stop trigger (arm/descent
|
|
8
|
+
* (confirmed live 2026-07-13). A multi-stop trigger (arm/descent) has
|
|
9
9
|
* nothing to time against here, and a pending-file handoff has no next prompt
|
|
10
10
|
* to ride. So Codex capture is ONE-SHOT: at the session's single Stop, build
|
|
11
11
|
* the v5 worklist and deliver it BLOCKING ({decision:"block"} re-prompts the
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* .coldstartignore'd files never count) and advances trigger.mjs. Most stops
|
|
11
11
|
* exit silently. Fires:
|
|
12
12
|
*
|
|
13
|
-
* descent
|
|
13
|
+
* descent → NON-BLOCKING: payload → pending file; cursor-kb-recall
|
|
14
14
|
* (beforeSubmitPrompt) delivers it with the user's next prompt via
|
|
15
15
|
* additional_context.
|
|
16
16
|
* cap → also non-blocking (same rationale as the Claude hook: replay showed
|
|
@@ -25,7 +25,7 @@ import { join } from "node:path";
|
|
|
25
25
|
import { tmpdir } from "node:os";
|
|
26
26
|
import { fileURLToPath } from "node:url";
|
|
27
27
|
import { cursorRoot } from "./cursor-input.mjs";
|
|
28
|
-
// Pending-capture delivery (v5 trigger): a descent/
|
|
28
|
+
// Pending-capture delivery (v5 trigger): a descent/cap fire at a previous
|
|
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";
|
package/hooks/elicit-core.mjs
CHANGED
|
@@ -98,7 +98,7 @@ export function logCaptureEvent(root, event) {
|
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
// --- Pending-capture handoff ---------------------------------------------------
|
|
101
|
-
// A descent
|
|
101
|
+
// A descent fire writes its worklist payload here instead of blocking the
|
|
102
102
|
// stop; the host's next-prompt recall hook consumes it (capture first, then the
|
|
103
103
|
// user's request). One file per session id — a second fire before delivery
|
|
104
104
|
// overwrites (the later worklist supersedes). Same path scheme across hosts;
|
package/hooks/kb-elicit.mjs
CHANGED
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
* v5 (2026-07-17): the always-fire gate is gone. Every Stop updates per-file
|
|
6
6
|
* EVIDENCE RECORDS (hooks/evidence.mjs — edit/read/gs tiers; mentions and
|
|
7
7
|
* .coldstartignore'd files never count) and advances the TRIGGER state machine
|
|
8
|
-
* (hooks/trigger.mjs — score/arm, fire on descent
|
|
8
|
+
* (hooks/trigger.mjs — score/arm, fire on descent, cap, .git HEAD
|
|
9
9
|
* drift). Most stops exit silently. When the trigger fires:
|
|
10
10
|
*
|
|
11
|
-
* descent
|
|
11
|
+
* descent → NON-BLOCKING: the capture payload is written to a pending
|
|
12
12
|
* file; kb-recall.mjs (UserPromptSubmit) delivers it with the user's next
|
|
13
13
|
* prompt. The stop itself is never blocked — no more answer-then-homework
|
|
14
14
|
* agitation (upstream #76721 sidestepped).
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
import { tmpdir } from "node:os";
|
|
32
32
|
import { join } from "node:path";
|
|
33
33
|
import { fileURLToPath } from "node:url";
|
|
34
|
-
import { existsSync, writeFileSync, appendFileSync, readFileSync } from "node:fs";
|
|
34
|
+
import { existsSync, writeFileSync, appendFileSync, readFileSync, readdirSync } from "node:fs";
|
|
35
35
|
|
|
36
36
|
import { extractEvidence, segmentStats } from "./evidence.mjs";
|
|
37
37
|
import { initialState, step } from "./trigger.mjs";
|
|
@@ -51,6 +51,37 @@ function log(msg) {
|
|
|
51
51
|
try { appendFileSync(LOG_FILE, `[${new Date().toISOString()}] elicit: ${msg}\n`); } catch { /* never fail logging */ }
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
+
// --- Subagent transcript resolution ------------------------------------------
|
|
55
|
+
/**
|
|
56
|
+
* Resolve a subagent's transcript, supporting both flat and nested layouts.
|
|
57
|
+
* - Flat: stem/subagents/agent-id.jsonl
|
|
58
|
+
* - Nested (parallel/batched): stem/subagents/workflows/wf_id/agent-id.jsonl
|
|
59
|
+
* Returns "" if the subagents dir is absent or no match is found.
|
|
60
|
+
*/
|
|
61
|
+
function resolveSubagentTranscript(parentTranscriptPath, agentId) {
|
|
62
|
+
const stem = parentTranscriptPath.replace(/\.jsonl$/, "");
|
|
63
|
+
const flatPath = join(stem, "subagents", `agent-${agentId}.jsonl`);
|
|
64
|
+
|
|
65
|
+
// First try flat path.
|
|
66
|
+
if (existsSync(flatPath)) return flatPath;
|
|
67
|
+
|
|
68
|
+
// Recursive search for nested layout.
|
|
69
|
+
const filename = `agent-${agentId}.jsonl`;
|
|
70
|
+
const subagentsDir = join(stem, "subagents");
|
|
71
|
+
try {
|
|
72
|
+
if (!existsSync(subagentsDir)) return "";
|
|
73
|
+
// Use recursive option to walk all depths.
|
|
74
|
+
const entries = readdirSync(subagentsDir, { recursive: true, withFileTypes: false });
|
|
75
|
+
for (const entry of entries) {
|
|
76
|
+
if (typeof entry === "string" && entry.endsWith(filename)) {
|
|
77
|
+
const fullPath = join(subagentsDir, entry);
|
|
78
|
+
if (existsSync(fullPath)) return fullPath;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
} catch { /* permission/read error: return empty */ }
|
|
82
|
+
return "";
|
|
83
|
+
}
|
|
84
|
+
|
|
54
85
|
// --- stdin ---------------------------------------------------------------------
|
|
55
86
|
function readStdin() {
|
|
56
87
|
return new Promise((res) => {
|
|
@@ -92,14 +123,20 @@ process.on("unhandledRejection", (e) => { log(`unhandled ${e?.stack || e}`); pro
|
|
|
92
123
|
const aid = String(input.agent_id || "main").replace(/[^A-Za-z0-9_-]/g, "") || "main";
|
|
93
124
|
const isSubagent = input.hook_event_name === "SubagentStop";
|
|
94
125
|
|
|
126
|
+
// Guard: compaction subagents read transcripts, not code—skip silently.
|
|
127
|
+
if (isSubagent && aid.startsWith("acompact")) {
|
|
128
|
+
log(`SKIP compaction-agent session=${sid} agent=${aid}`);
|
|
129
|
+
process.exit(0);
|
|
130
|
+
}
|
|
131
|
+
|
|
95
132
|
// On SubagentStop, transcript_path is the PARENT's transcript (confirmed:
|
|
96
|
-
// claude-code#11396); the sub's own lives at
|
|
97
|
-
//
|
|
133
|
+
// claude-code#11396); the sub's own lives at stem/subagents/agent-id.jsonl
|
|
134
|
+
// (flat) or stem/subagents/workflows/wf_id/agent-id.jsonl (nested).
|
|
98
135
|
let transcriptPath = String(input.transcript_path || "");
|
|
99
136
|
if (isSubagent) {
|
|
100
137
|
const own = String(input.agent_transcript_path || "") ||
|
|
101
138
|
(aid !== "main" && transcriptPath
|
|
102
|
-
?
|
|
139
|
+
? resolveSubagentTranscript(transcriptPath, aid)
|
|
103
140
|
: "");
|
|
104
141
|
if (!own || !existsSync(own)) {
|
|
105
142
|
log(`SKIP subagent-transcript-missing session=${sid} agent=${aid} tried=${own || "n/a"}`);
|
|
@@ -116,17 +153,44 @@ process.on("unhandledRejection", (e) => { log(`unhandled ${e?.stack || e}`); pro
|
|
|
116
153
|
const parsed = JSON.parse(readFileSync(marker, "utf8"));
|
|
117
154
|
if (parsed && parsed.v === 2) state = parsed;
|
|
118
155
|
} catch { /* first Stop of this session (or a pre-v5 marker: start fresh) */ }
|
|
156
|
+
const freshMarker = !state; // no valid prior marker: we're attaching, not resuming our own place
|
|
119
157
|
if (!state) state = initialState();
|
|
120
158
|
|
|
121
159
|
// This stop's transcript slice (everything since the last processed line).
|
|
122
160
|
const text = readFileSync(transcriptPath, "utf8");
|
|
123
161
|
const lines = text.split("\n");
|
|
162
|
+
// A newline-terminated transcript splits to a phantom trailing "" — counting
|
|
163
|
+
// it as a consumed line would push the offset one past the last real line and
|
|
164
|
+
// silently skip the FIRST line appended next stop (dropping a tool_use → its
|
|
165
|
+
// file's evidence). Trim it so the offset tracks real lines only.
|
|
166
|
+
if (lines.length && lines[lines.length - 1] === "") lines.pop();
|
|
124
167
|
// A transcript SHORTER than our stored offset was replaced out from under us
|
|
125
168
|
// — Claude Code's /compact rewrites it far shorter (also log rotation). The
|
|
126
169
|
// offset now points past the end, so slice() would return an empty segment
|
|
127
170
|
// and silently drop this turn's (and every later turn's) evidence until the
|
|
128
171
|
// line count grows back. Reset to reprocess the new transcript from its start.
|
|
129
172
|
if (state.lineCount > lines.length) state.lineCount = 0;
|
|
173
|
+
|
|
174
|
+
// Fresh attach to an ALREADY-LARGE transcript → baseline, fire NOTHING.
|
|
175
|
+
// When the OS clears the tmp marker between days, the next Stop starts fresh
|
|
176
|
+
// but the on-disk transcript still holds the WHOLE session. Reprocessing it
|
|
177
|
+
// from line 0 treats all of history as this turn's work and dumps the entire
|
|
178
|
+
// file set into one cap "blob" (the stop=1 cap fires we saw on resumed
|
|
179
|
+
// sessions). A genuine first Stop, by contrast, has a tiny transcript (this
|
|
180
|
+
// turn only) and must still be processed so its evidence can build toward
|
|
181
|
+
// arming. So baseline ONLY when a fresh marker meets a large transcript:
|
|
182
|
+
// snapshot the offset + HEAD and start watching from here. Subagents keep
|
|
183
|
+
// their own one-shot path below (a fresh aid-marker is normal — never baseline).
|
|
184
|
+
const RESUMED_ATTACH_LINES = 400; // a first turn is tens of lines; a resume is thousands
|
|
185
|
+
if (freshMarker && !isSubagent && lines.length > RESUMED_ATTACH_LINES) {
|
|
186
|
+
state.lineCount = lines.length;
|
|
187
|
+
state.head = gitHead(root) || state.head;
|
|
188
|
+
writeFileSync(marker, JSON.stringify(state));
|
|
189
|
+
logCaptureEvent(root, { event: "baseline", session: sid, lines: lines.length });
|
|
190
|
+
log(`BASELINE fresh-marker-large-transcript session=${sid} lines=${lines.length}`);
|
|
191
|
+
process.exit(0);
|
|
192
|
+
}
|
|
193
|
+
|
|
130
194
|
const segment = lines.slice(state.lineCount).join("\n");
|
|
131
195
|
state.lineCount = lines.length;
|
|
132
196
|
|
package/hooks/kb-recall.mjs
CHANGED
|
@@ -28,7 +28,7 @@ import { join } from "node:path";
|
|
|
28
28
|
import { tmpdir } from "node:os";
|
|
29
29
|
import { fileURLToPath } from "node:url";
|
|
30
30
|
|
|
31
|
-
// Pending-capture delivery (v5 trigger): a descent
|
|
31
|
+
// Pending-capture delivery (v5 trigger): a descent fire at the previous
|
|
32
32
|
// Stop wrote its worklist payload to a pending file instead of blocking the
|
|
33
33
|
// stop. It rides the SAME next-prompt channel as recall — capture first, then
|
|
34
34
|
// the user's request. Consumed (deleted) on delivery; stale pendings (>24h,
|
package/hooks/trigger.mjs
CHANGED
|
@@ -3,20 +3,22 @@
|
|
|
3
3
|
* clock, no client specifics. The hook feeds it one stop's observations and
|
|
4
4
|
* it returns the updated state + a fire decision.
|
|
5
5
|
*
|
|
6
|
-
* FROZEN SPEC (2026-07-15, replay + wave-lab validated):
|
|
6
|
+
* FROZEN SPEC (2026-07-15, replay + wave-lab validated; 2026-07-21 descent/synthesis update):
|
|
7
7
|
* score = uncaptured contentRead files ×1
|
|
8
8
|
* + settled edited files ×2 (settled = 3 active stops w/o re-edit)
|
|
9
|
-
* + active stops since last fire (synthesis
|
|
9
|
+
* + active stops since last fire (new files or edits only; synthesis no longer counts as active)
|
|
10
10
|
* fresh-noted files contribute NOTHING — genuinely new knowledge drives firing.
|
|
11
11
|
* arm at score ≥ T(10), requiring ≥2 active stops AND ≥2 uncaptured files.
|
|
12
|
-
* fire armed + descent (
|
|
13
|
-
*
|
|
14
|
-
* score ≥ CAP(20) → non-blocking (backlog
|
|
12
|
+
* fire armed + descent (1 quiet stop) → non-blocking (inject)
|
|
13
|
+
* score ≥ CAP(20) → non-blocking (backlog
|
|
15
14
|
* rescue — replay showed dense sessions starve descent and hit cap
|
|
16
15
|
* repeatedly; blocking each cap re-created the v4 agitation)
|
|
17
|
-
* .git/HEAD drift, ≥2 uncaptured files
|
|
16
|
+
* .git/HEAD drift, ≥2 uncaptured files → BLOCKING (instant —
|
|
18
17
|
* the one boundary where waiting for a next prompt loses the moment)
|
|
19
18
|
* NEVER: first-stop fire, wall-clock, gap/resume, conversation classification.
|
|
19
|
+
* (surge removed 2026-07-21: with descent=1 a quiet stop fires descent before
|
|
20
|
+
* surge could ever apply — the two were redundant. cap + head-drift remain the
|
|
21
|
+
* safety nets, so no armed state escapes a fire.)
|
|
20
22
|
*
|
|
21
23
|
* State lives in the session marker (JSON-serializable, owned by the caller).
|
|
22
24
|
* Files enter state ONLY if they passed the ignore filter and have contentRead
|
|
@@ -26,8 +28,7 @@
|
|
|
26
28
|
export const T_ARM = 10;
|
|
27
29
|
export const T_CAP = 20;
|
|
28
30
|
export const SETTLE_ACTIVE_STOPS = 3;
|
|
29
|
-
export const DESCENT_QUIET =
|
|
30
|
-
export const SURGE_NEW_FILES = 2;
|
|
31
|
+
export const DESCENT_QUIET = 1;
|
|
31
32
|
export const MIN_FILES = 2;
|
|
32
33
|
|
|
33
34
|
export function initialState() {
|
|
@@ -36,11 +37,12 @@ export function initialState() {
|
|
|
36
37
|
stop: 0, // stops processed
|
|
37
38
|
activeStops: 0, // ACTIVE stops since last fire
|
|
38
39
|
quietRun: 0, // consecutive quiet stops
|
|
39
|
-
wasQuiet: false, // previous stop was quiet (surge detection)
|
|
40
40
|
armed: false,
|
|
41
41
|
fires: 0,
|
|
42
42
|
lineCount: 0, // transcript lines already consumed (caller-owned)
|
|
43
43
|
head: "", // .git/HEAD fingerprint at last stop (caller-owned)
|
|
44
|
+
// (surge removed 2026-07-21 — descent=1 subsumes it; old markers may still
|
|
45
|
+
// carry a wasQuiet field, which is simply ignored.)
|
|
44
46
|
files: {}, // rel → { reads, edits, gs, firstStop, lastStop,
|
|
45
47
|
// lastEditActive, retouches, captured, fresh }
|
|
46
48
|
};
|
|
@@ -55,7 +57,7 @@ export function initialState() {
|
|
|
55
57
|
* freshNoted: Set<rel> (files whose note is currently fresh),
|
|
56
58
|
* headDrift: bool (.git/HEAD changed since last stop — manual commits too),
|
|
57
59
|
* }
|
|
58
|
-
* decision = null | { fire: "descent"|"
|
|
60
|
+
* decision = null | { fire: "descent"|"cap"|"head-drift",
|
|
59
61
|
* mode: "inject"|"block", files: [rel…] }
|
|
60
62
|
*/
|
|
61
63
|
export function step(state, obs) {
|
|
@@ -92,7 +94,10 @@ export function step(state, obs) {
|
|
|
92
94
|
}
|
|
93
95
|
|
|
94
96
|
// ---- active vs quiet --------------------------------------------------------
|
|
95
|
-
|
|
97
|
+
// Active = new files or edits only. Synthesis (prose-heavy, tool-light turns)
|
|
98
|
+
// is the agent settling/explaining — exactly the wind-down signal descent should fire on —
|
|
99
|
+
// so it counts as quiet, not active.
|
|
100
|
+
const active = newFiles > 0 || editsThisStop > 0;
|
|
96
101
|
if (active) { s.activeStops++; s.quietRun = 0; } else { s.quietRun++; }
|
|
97
102
|
for (const f of Object.values(s.files)) {
|
|
98
103
|
if (f.lastEditActive === -2) f.lastEditActive = s.activeStops; // edit stamped at current active count
|
|
@@ -118,10 +123,7 @@ export function step(state, obs) {
|
|
|
118
123
|
fire = { fire: "cap", mode: "inject" };
|
|
119
124
|
} else if (s.armed && s.quietRun >= DESCENT_QUIET) {
|
|
120
125
|
fire = { fire: "descent", mode: "inject" };
|
|
121
|
-
} else if (s.armed && s.wasQuiet && newFiles >= SURGE_NEW_FILES) {
|
|
122
|
-
fire = { fire: "surge", mode: "inject" };
|
|
123
126
|
}
|
|
124
|
-
s.wasQuiet = !active;
|
|
125
127
|
|
|
126
128
|
let decision = null;
|
|
127
129
|
if (fire) {
|