@dzhechkov/harness-core 0.3.40 → 0.3.42

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/setup.js CHANGED
@@ -4,46 +4,144 @@
4
4
  * Unlike `dz init` (skills only), `dz setup` configures the complete
5
5
  * self-learning environment:
6
6
  * 1. Skills installation (via init)
7
- * 2. Claude Code hooks (session-start/end for memory)
8
- * 3. Memory database initialization (.dz/memory.db)
7
+ * 2. Claude Code session hooks (start/end) with `--memory agentdb`, a real vector-store
8
+ * write via `.dz/agentdb-writer.mjs`; otherwise a `.dz/sessions.jsonl` marker
9
+ * 3. Memory store: `.dz/agentdb.db` (agentdb, shared with the MCP server via AGENTDB_PATH)
10
+ * or `.dz/sessions.jsonl` + `.dz/patterns.jsonl` (jsonl default)
9
11
  * 4. Pretrain (project analysis → auto-recommend)
10
12
  *
11
13
  * All operations are additive — never overwrites existing files.
12
14
  *
13
15
  * @packageDocumentation
14
16
  */
15
- import { existsSync, mkdirSync, writeFileSync, readFileSync } from 'node:fs';
17
+ import { existsSync, mkdirSync, writeFileSync, readFileSync, rmSync } from 'node:fs';
16
18
  import { join } from 'node:path';
19
+ import { execSync } from 'node:child_process';
20
+ /** Absolute path to the agentdb store shared by the hook writer and the MCP server. */
21
+ function agentdbStorePath(projectRoot) {
22
+ return join(projectRoot, '.dz', 'agentdb.db');
23
+ }
24
+ /**
25
+ * Version of the generated `.dz/agentdb-writer.mjs`. Bump on ANY change to
26
+ * {@link generateAgentdbWriter}'s output — setup regenerates deployed writers whose
27
+ * `dz-writer-version` stamp is older, WITHOUT requiring `--force` (audit gap G4: generated code
28
+ * must not fossilize outside the package lifecycle).
29
+ */
30
+ export const AGENTDB_WRITER_VERSION = 3;
31
+ /**
32
+ * Generate the `.dz/agentdb-writer.mjs` helper invoked by the session hooks.
33
+ *
34
+ * v2 (ADR-002, audit gaps G3 + code#1 + code#4): session markers are **metadata-only telemetry** —
35
+ * a plain row in the `dz_session_events` table inside the SAME shared `.dz/agentdb.db` the MCP
36
+ * server is pinned to (`AGENTDB_PATH`). No embedding, no model load, no `successRate`:
37
+ * - ~ms latency (v1 loaded a ~90 MB transformers model → 12 s cold-timeout losing the marker);
38
+ * - zero pollution of the HNSW index real learnings live in (those enter via `agentdb_*` MCP tools);
39
+ * - uses better-sqlite3 DIRECTLY (WAL + busy_timeout) — if it is unavailable the writer falls back
40
+ * to the jsonl marker instead of ever touching the sql.js in-memory backend, whose
41
+ * last-write-wins semantics were the design's one real corruption vector.
42
+ *
43
+ * Best-effort and never throws: any failure degrades to a `.dz/sessions.jsonl` line labelled
44
+ * `jsonl-fallback` (with the error), so the hook always exits 0 and never blocks a session.
45
+ */
46
+ export function generateAgentdbWriter(projectRoot) {
47
+ const dbPath = agentdbStorePath(projectRoot);
48
+ const sessionsPath = join(projectRoot, '.dz', 'sessions.jsonl');
49
+ return `#!/usr/bin/env node
50
+ // dz-writer-version: ${AGENTDB_WRITER_VERSION}
51
+ // Auto-generated by \`dz setup --memory agentdb\`. Do not edit — re-run \`dz setup\` to upgrade
52
+ // (setup regenerates automatically when this version stamp is outdated; --force not required).
53
+ // Writes a metadata-only session-event row into the shared AgentDB store (.dz/agentdb.db — the
54
+ // same file the agentdb MCP server is pinned to via AGENTDB_PATH). Real learnings go into the
55
+ // vector index via the agentdb_* MCP tools; this is deliberately non-semantic telemetry.
56
+ // On SessionEnd it ALSO fires a detached \`dz consolidate\` (Option C, ADR-003): harvest this
57
+ // session's learnings into the lexical store and mirror them — with real embeddings — into the
58
+ // shared AgentDB vector index. Detached + unref'd: the hook returns immediately; the model-load
59
+ // cost happens off the session's critical path.
60
+ // Best-effort: on ANY error it appends a .dz/sessions.jsonl marker and exits 0 — never throws,
61
+ // never blocks the session.
62
+ import { appendFileSync } from 'node:fs';
63
+ import { spawn } from 'node:child_process';
64
+
65
+ const event = process.argv[2] === 'end' ? 'end' : 'start';
66
+ const ts = new Date().toISOString();
67
+ const DB = process.env.AGENTDB_PATH || ${JSON.stringify(dbPath)};
68
+ const SESSIONS = ${JSON.stringify(sessionsPath)};
69
+ const ROOT = ${JSON.stringify(projectRoot)};
70
+
71
+ function note(extra) {
72
+ try {
73
+ appendFileSync(SESSIONS, JSON.stringify({ event, ts, ...extra }) + '\\n');
74
+ } catch { /* last resort: swallow */ }
75
+ }
76
+ function fallback(err) {
77
+ note({ backend: 'jsonl-fallback', error: String((err && err.message) || err) });
78
+ }
79
+
80
+ try {
81
+ // Native better-sqlite3 ONLY (prebuilt; synchronous; WAL). Never the sql.js fallback — its
82
+ // whole-file-in-memory persistence is unsafe against a concurrently-writing MCP server.
83
+ const { default: Database } = await import('better-sqlite3');
84
+ const db = new Database(DB);
85
+ db.pragma('journal_mode = WAL');
86
+ db.pragma('busy_timeout = 5000'); // wait out a brief MCP-server write lock instead of failing
87
+ db.exec('CREATE TABLE IF NOT EXISTS dz_session_events (id INTEGER PRIMARY KEY AUTOINCREMENT, event TEXT NOT NULL, ts TEXT NOT NULL, source TEXT NOT NULL DEFAULT \\'dz-session-hook\\')');
88
+ db.prepare('INSERT INTO dz_session_events (event, ts) VALUES (?, ?)').run(event, ts);
89
+ db.close();
90
+ } catch (err) {
91
+ fallback(err);
92
+ }
93
+
94
+ if (event === 'end') {
95
+ // Option C: harvest learnings + mirror to the vector index, DETACHED (fire-and-forget) so the
96
+ // hook never waits on transcript parsing or the embedding model. Uses the globally-installed
97
+ // \`dz\` from PATH. NO shell on posix: spawn's args-array + shell:true silently word-splits a
98
+ // ROOT containing spaces AND is Node's documented command-injection hazard (QE P1+P2); a plain
99
+ // spawn searches PATH itself and quotes nothing. Windows needs a shell for the .cmd shim, so
100
+ // there we pass ONE pre-quoted string (") — quotes are illegal in Windows paths, so wrapping
101
+ // is sufficient. Failure is detected via BOTH the error event (posix ENOENT) and a non-zero
102
+ // exit code (shell-mediated "not found"), each leaving an honest note.
103
+ try {
104
+ const child = process.platform === 'win32'
105
+ ? spawn('dz consolidate --project "' + ROOT + '"', { detached: true, stdio: 'ignore', shell: true, cwd: ROOT })
106
+ : spawn('dz', ['consolidate', '--project', ROOT], { detached: true, stdio: 'ignore', cwd: ROOT });
107
+ child.on('error', (err) => note({ consolidate: 'skipped', error: String((err && err.message) || err) }));
108
+ child.on('exit', (code) => { if (code !== null && code !== 0) note({ consolidate: 'skipped', error: 'dz exited ' + code + ' (not on PATH?)' }); });
109
+ child.unref();
110
+ } catch (err) {
111
+ note({ consolidate: 'skipped', error: String((err && err.message) || err) });
112
+ }
113
+ }
114
+ `;
115
+ }
116
+ /** Parse the `dz-writer-version` stamp from a deployed writer file ('' or absent → 0). */
117
+ export function writerVersionOf(content) {
118
+ const m = /^\/\/ dz-writer-version:\s*(\d+)/m.exec(content);
119
+ return m ? parseInt(m[1] ?? '0', 10) : 0;
120
+ }
17
121
  /** Generate Claude Code hooks configuration for self-learning. */
18
- function generateHooksConfig(projectRoot, backend) {
122
+ export function generateHooksConfig(projectRoot, backend) {
19
123
  const dzDir = join(projectRoot, '.dz');
20
124
  if (backend === 'agentdb') {
21
- // agentdb backend: hooks use agentdb CLI to store patterns
22
- const rvfPath = join(dzDir, 'memory.rvf');
125
+ // agentdb backend: hooks invoke the generated writer, which does a REAL vector-store write
126
+ // (ReasoningBank.storePattern) into the AGENTDB_PATH store the MCP server shares. The writer
127
+ // self-degrades to a sessions.jsonl marker on any failure, so no hook ever throws.
128
+ const writer = join(dzDir, 'agentdb-writer.mjs');
23
129
  return JSON.stringify({
24
130
  hooks: {
25
- SessionStart: [{
26
- type: 'command',
27
- command: `node -e "const fs=require('fs');const d=new Date().toISOString();try{require('child_process').execSync('npx agentdb add \\'${rvfPath}\\' \\'session-start: '+d+'\\'',{stdio:'pipe'})}catch{fs.appendFileSync('${dzDir}/sessions.jsonl',JSON.stringify({event:'start',ts:d,backend:'agentdb'})+'\\n')}"`,
28
- }],
29
- SessionEnd: [{
30
- type: 'command',
31
- command: `node -e "const fs=require('fs');const d=new Date().toISOString();try{require('child_process').execSync('npx agentdb add \\'${rvfPath}\\' \\'session-end: '+d+'\\'',{stdio:'pipe'})}catch{fs.appendFileSync('${dzDir}/sessions.jsonl',JSON.stringify({event:'end',ts:d,backend:'agentdb'})+'\\n')}"`,
32
- }],
131
+ SessionStart: [{ type: 'command', command: `node ${JSON.stringify(writer)} start` }],
132
+ SessionEnd: [{ type: 'command', command: `node ${JSON.stringify(writer)} end` }],
33
133
  },
34
134
  }, null, 2);
35
135
  }
36
- // JSONL backend (default)
136
+ // JSONL backend (default) — honest session bookkeeping, no vector store involved.
137
+ // Use a RELATIVE path (Claude Code runs hooks from the project root): interpolating the absolute
138
+ // ${dzDir} into a single-quoted JS literal inside shell double-quotes breaks on Windows backslash
139
+ // paths (\U, \b…) and on any path containing a quote. `.dz/sessions.jsonl` sidesteps all of it.
140
+ const jsonlCmd = (event) => `node -e "const fs=require('fs');const d=new Date().toISOString();fs.appendFileSync('.dz/sessions.jsonl',JSON.stringify({event:'${event}',ts:d,backend:'jsonl'})+'\\n')"`;
37
141
  return JSON.stringify({
38
142
  hooks: {
39
- SessionStart: [{
40
- type: 'command',
41
- command: `node -e "const fs=require('fs');const d=new Date().toISOString();fs.appendFileSync('${dzDir}/sessions.jsonl',JSON.stringify({event:'start',ts:d})+'\\n')"`,
42
- }],
43
- SessionEnd: [{
44
- type: 'command',
45
- command: `node -e "const fs=require('fs');const d=new Date().toISOString();fs.appendFileSync('${dzDir}/sessions.jsonl',JSON.stringify({event:'end',ts:d})+'\\n')"`,
46
- }],
143
+ SessionStart: [{ type: 'command', command: jsonlCmd('start') }],
144
+ SessionEnd: [{ type: 'command', command: jsonlCmd('end') }],
47
145
  },
48
146
  }, null, 2);
49
147
  }
@@ -59,9 +157,10 @@ function generateDzConfig(target, preset, backend) {
59
157
  // recommend() reads .dz/patterns.jsonl back as a ranking boost (audit #2).
60
158
  // Set false to disable the boost (recommend() reverts to pure keyword scoring).
61
159
  recommendBoost: true,
62
- // No background consolidator ships in Tier 1 flag must not advertise an
63
- // unimplemented capability (the harvestDreamPatterns worker is Tier 2).
64
- patternConsolidation: false,
160
+ // agentdb backend: the SessionEnd hook fires a detached `dz consolidate` that harvests
161
+ // learnings and mirrors them into the vector index (Option C, ADR-003). jsonl backend has
162
+ // no background consolidator — the flag must not advertise an unimplemented capability.
163
+ patternConsolidation: backend === 'agentdb',
65
164
  // Store backend: 'auto' = SQLite (FTS5, scale) when better-sqlite3 is
66
165
  // available, else the JSON fallback. 'json'/'sqlite' force a backend (Tier-3).
67
166
  sqliteBackend: 'auto',
@@ -70,12 +169,18 @@ function generateDzConfig(target, preset, backend) {
70
169
  },
71
170
  memory: {
72
171
  backend,
73
- path: backend === 'agentdb' ? '.dz/memory.rvf' : '.dz/sessions.jsonl',
172
+ // agentdb: the native SQLite vector store shared by the session-hook writer and the
173
+ // agentdb MCP server (both pinned via AGENTDB_PATH). Real ReasoningBank patterns land here.
174
+ path: backend === 'agentdb' ? '.dz/agentdb.db' : '.dz/sessions.jsonl',
74
175
  maxSizeMb: backend === 'agentdb' ? 100 : 10,
75
176
  agentdb: backend === 'agentdb' ? {
76
177
  learning: true,
77
178
  vectorDim: 384,
78
179
  mcpServer: 'agentdb',
180
+ // Both the hook writer and the MCP server read/write THIS path (env AGENTDB_PATH).
181
+ storePath: '.dz/agentdb.db',
182
+ embeddingModel: 'Xenova/all-MiniLM-L6-v2',
183
+ sessionHookWrites: true,
79
184
  } : undefined,
80
185
  },
81
186
  hooks: {
@@ -84,11 +189,52 @@ function generateDzConfig(target, preset, backend) {
84
189
  },
85
190
  }, null, 2);
86
191
  }
87
- /** Check if agentdb is available. */
88
- function isAgentdbAvailable() {
192
+ /** True if `agentdb` resolves from the project's node_modules (the hook writer needs it there). */
193
+ function isAgentdbInstalledLocally(projectRoot) {
194
+ return existsSync(join(projectRoot, 'node_modules', 'agentdb', 'package.json'));
195
+ }
196
+ /**
197
+ * The exact agentdb version installed in the project, or `'latest'` as a fallback. Used to pin the
198
+ * MCP server spec (`agentdb@<version>`) so the long-running MCP server and the hook writer — which
199
+ * imports the on-disk local copy — run the SAME schema against the shared DB (agentdb is alpha;
200
+ * `@latest` could drift the MCP server's schema away from what the hook wrote).
201
+ */
202
+ function installedAgentdbSpec(projectRoot) {
89
203
  try {
90
- require('child_process').execSync('npx agentdb --version', { stdio: 'pipe', timeout: 10000 });
204
+ const pkg = JSON.parse(readFileSync(join(projectRoot, 'node_modules', 'agentdb', 'package.json'), 'utf-8'));
205
+ return pkg.version ? `agentdb@${pkg.version}` : 'agentdb@latest';
206
+ }
207
+ catch {
208
+ return 'agentdb@latest';
209
+ }
210
+ }
211
+ /**
212
+ * Install `agentdb` + `better-sqlite3` as LOCAL project deps so the session-hook writer can
213
+ * `import('agentdb')` and get a native SQLite store (better-sqlite3 ships prebuilt binaries — no
214
+ * build tools — and gives true cross-process WAL concurrency so the hook and the MCP server share
215
+ * one live store). Best-effort: returns false (caller degrades to jsonl) if install fails.
216
+ */
217
+ function installAgentdbLocally(projectRoot) {
218
+ if (isAgentdbInstalledLocally(projectRoot))
91
219
  return true;
220
+ try {
221
+ // Anchor npm to THIS project: without a package.json here, npm's prefix walk-up would
222
+ // install into (and mutate the lockfile of) the nearest ANCESTOR project (audit code#2).
223
+ const pkgJsonPath = join(projectRoot, 'package.json');
224
+ if (!existsSync(pkgJsonPath)) {
225
+ writeFileSync(pkgJsonPath, JSON.stringify({ name: 'dz-harness-project', private: true, version: '0.0.0' }, null, 2) + '\n');
226
+ }
227
+ // NB: use the ESM-imported execSync — `require()` is undefined in this ESM module (the
228
+ // original agentdb hooks failed silently for exactly this reason). stdio:'ignore' (not
229
+ // 'pipe') avoids execSync's 1 MB maxBuffer aborting the child on npm's verbose output.
230
+ // --save-exact: agentdb is alpha; a semver range would let a later `npm update` drift the
231
+ // local copy away from the version the MCP registration pins (audit gap G7).
232
+ execSync('npm install agentdb better-sqlite3 --save-exact --no-audit --no-fund --loglevel=error', {
233
+ cwd: projectRoot,
234
+ stdio: 'ignore',
235
+ timeout: 300000,
236
+ });
237
+ return isAgentdbInstalledLocally(projectRoot);
92
238
  }
93
239
  catch {
94
240
  return false;
@@ -216,15 +362,20 @@ export function runSetup(opts) {
216
362
  const steps = [];
217
363
  const dzDir = join(opts.projectRoot, '.dz');
218
364
  const backend = opts.memory ?? 'jsonl';
219
- // Step 0: Check agentdb availability if requested
365
+ // Step 0: Install agentdb + better-sqlite3 locally so the session-hook writer can import them
366
+ // and share a native store with the MCP server. Best-effort — the writer self-degrades to a
367
+ // jsonl marker (and self-heals once the deps exist) if this fails.
220
368
  if (backend === 'agentdb') {
221
- const available = isAgentdbAvailable();
222
- if (available) {
223
- steps.push({ name: 'AgentDB check', status: 'done', detail: 'agentdb available' });
369
+ const ready = installAgentdbLocally(opts.projectRoot);
370
+ if (ready) {
371
+ steps.push({ name: 'Install agentdb + better-sqlite3', status: 'done', detail: 'local deps for real vector writes' });
224
372
  }
225
373
  else {
226
- steps.push({ name: 'AgentDB check', status: 'error', detail: 'not found — install: npm i -g agentdb' });
227
- // Fall through will still create config, hooks will fallback to JSONL
374
+ steps.push({
375
+ name: 'Install agentdb + better-sqlite3',
376
+ status: 'error',
377
+ detail: 'install failed — hooks log to sessions.jsonl until you run: npm i agentdb better-sqlite3',
378
+ });
228
379
  }
229
380
  }
230
381
  // Step 1: Create .dz directory
@@ -255,24 +406,27 @@ export function runSetup(opts) {
255
406
  }
256
407
  // Step 4: Initialize memory store
257
408
  if (backend === 'agentdb') {
258
- // Initialize .rvf via agentdb CLI
259
- const rvfPath = join(dzDir, 'memory.rvf');
260
- if (!existsSync(rvfPath)) {
261
- try {
262
- const { execSync } = require('child_process');
263
- execSync(`npx agentdb init "${rvfPath}"`, { stdio: 'pipe', timeout: 30000 });
264
- steps.push({ name: 'Initialize memory.rvf', status: 'done', detail: 'agentdb vector memory' });
265
- }
266
- catch {
267
- // Fallback: create empty file, agentdb will init on first use
268
- writeFileSync(rvfPath, '');
269
- steps.push({ name: 'Initialize memory.rvf', status: 'done', detail: 'placeholder (agentdb will init on first use)' });
270
- }
409
+ // Write the session-hook writer. The agentdb.db store itself is auto-created on first write
410
+ // by createDatabase() (both the writer and the MCP server init the schema), so there is no
411
+ // orphan placeholder file — the writer targets the real, shared native store.
412
+ const writerPath = join(dzDir, 'agentdb-writer.mjs');
413
+ // Regenerate when missing, forced, OR the deployed stamp is older than the current
414
+ // generator deployed writers must not fossilize outside the package lifecycle (gap G4).
415
+ const deployedVersion = existsSync(writerPath) ? writerVersionOf(readFileSync(writerPath, 'utf-8')) : -1;
416
+ if (deployedVersion === -1 || opts.force || deployedVersion < AGENTDB_WRITER_VERSION) {
417
+ writeFileSync(writerPath, generateAgentdbWriter(opts.projectRoot));
418
+ steps.push({
419
+ name: 'Write agentdb-writer.mjs',
420
+ status: 'done',
421
+ detail: deployedVersion > -1 && deployedVersion < AGENTDB_WRITER_VERSION
422
+ ? `upgraded v${deployedVersion} → v${AGENTDB_WRITER_VERSION}`
423
+ : `session telemetry writer v${AGENTDB_WRITER_VERSION}`,
424
+ });
271
425
  }
272
426
  else {
273
- steps.push({ name: 'Initialize memory.rvf', status: 'skipped', detail: 'already exists' });
427
+ steps.push({ name: 'Write agentdb-writer.mjs', status: 'skipped', detail: `current (v${deployedVersion})` });
274
428
  }
275
- // Also create JSONL fallback
429
+ // Keep the jsonl fallback log available for the writer's degraded path.
276
430
  const sessionsPath = join(dzDir, 'sessions.jsonl');
277
431
  if (!existsSync(sessionsPath))
278
432
  writeFileSync(sessionsPath, '');
@@ -296,74 +450,166 @@ export function runSetup(opts) {
296
450
  steps.push({ name: 'Initialize patterns.jsonl', status: 'skipped', detail: 'already exists' });
297
451
  }
298
452
  }
299
- // Step 5: Configure hooks (write to .claude/settings.json)
453
+ // Step 5: Configure hooks (write to .claude/settings.json) — EVENT-LEVEL merge (gap G2):
454
+ // dz-generated entries (recognized by signature, incl. the broken legacy `agentdb add` hooks
455
+ // this feature fixes) are replaced in place WITHOUT --force; the user's own hooks and every
456
+ // other settings key are preserved. Full-file overwrite happens only when the file is absent.
300
457
  if (!opts.noHooks) {
301
458
  const settingsDir = join(opts.projectRoot, '.claude');
302
459
  const settingsPath = join(settingsDir, 'settings.json');
303
- if (!existsSync(settingsPath) || opts.force) {
460
+ const generated = JSON.parse(generateHooksConfig(opts.projectRoot, backend));
461
+ if (!existsSync(settingsPath)) {
304
462
  mkdirSync(settingsDir, { recursive: true });
305
- writeFileSync(settingsPath, generateHooksConfig(opts.projectRoot, backend));
463
+ writeFileSync(settingsPath, JSON.stringify({ hooks: generated.hooks }, null, 2));
306
464
  steps.push({ name: 'Configure hooks', status: 'done', detail: `${backend} session hooks` });
307
465
  }
308
466
  else {
309
467
  try {
310
468
  const existing = JSON.parse(readFileSync(settingsPath, 'utf-8'));
311
- if (!existing['hooks']) {
312
- const hooks = JSON.parse(generateHooksConfig(opts.projectRoot, backend));
313
- existing['hooks'] = hooks.hooks;
469
+ const hooks = (existing['hooks'] ?? {});
470
+ let changed = false;
471
+ let replacedLegacy = false;
472
+ for (const event of Object.keys(generated.hooks)) {
473
+ const current = Array.isArray(hooks[event]) ? hooks[event] : [];
474
+ // Drop dz-generated entries (any vintage) — keep the user's own hooks untouched.
475
+ const kept = current.filter((entry) => {
476
+ const cmd = String(entry?.command ?? '');
477
+ const isDz = cmd.includes('agentdb add') || cmd.includes('agentdb-writer.mjs') || cmd.includes('sessions.jsonl');
478
+ if (isDz && !cmd.includes('agentdb-writer.mjs'))
479
+ replacedLegacy = true;
480
+ return !isDz;
481
+ });
482
+ const next = [...kept, ...generated.hooks[event]];
483
+ if (JSON.stringify(next) !== JSON.stringify(current))
484
+ changed = true;
485
+ hooks[event] = next;
486
+ }
487
+ if (changed) {
488
+ existing['hooks'] = hooks;
314
489
  writeFileSync(settingsPath, JSON.stringify(existing, null, 2));
315
- steps.push({ name: 'Configure hooks', status: 'done', detail: `merged ${backend} hooks` });
490
+ steps.push({
491
+ name: 'Configure hooks',
492
+ status: 'done',
493
+ detail: replacedLegacy ? `replaced legacy dz hooks with ${backend} hooks` : `merged ${backend} hooks (user hooks preserved)`,
494
+ });
316
495
  }
317
496
  else {
318
- steps.push({ name: 'Configure hooks', status: 'skipped', detail: 'hooks already configured' });
497
+ steps.push({ name: 'Configure hooks', status: 'skipped', detail: 'hooks already current' });
319
498
  }
320
499
  }
321
500
  catch {
322
- steps.push({ name: 'Configure hooks', status: 'skipped', detail: 'could not parse existing settings' });
501
+ steps.push({ name: 'Configure hooks', status: 'error', detail: 'could not parse existing settings.json — fix it and re-run' });
323
502
  }
324
503
  }
325
504
  }
326
505
  else {
327
506
  steps.push({ name: 'Configure hooks', status: 'skipped', detail: '--no-hooks' });
328
507
  }
329
- // Step 5.5: Register agentdb MCP server (if agentdb backend)
508
+ // Step 5.5: Register agentdb MCP server (if agentdb backend) in **`.mcp.json` at the project
509
+ // root** — the project-scope location Claude Code actually loads (gap G5: the previously used
510
+ // `.claude/mcp.json` is NOT read by Claude Code, so the server never got AGENTDB_PATH and the
511
+ // shared-store invariant silently failed). READ-MERGE-WRITE: only the `agentdb` entry is
512
+ // managed; every other registered server is preserved (audit code#5 — never clobber).
330
513
  if (backend === 'agentdb') {
331
- const mcpConfigPath = join(opts.projectRoot, '.claude', 'mcp.json');
332
- if (!existsSync(mcpConfigPath) || opts.force) {
333
- const mcpConfig = {
334
- mcpServers: {
335
- agentdb: {
336
- command: 'npx',
337
- args: ['agentdb@latest', 'mcp', 'start'],
338
- },
339
- },
340
- };
341
- mkdirSync(join(opts.projectRoot, '.claude'), { recursive: true });
342
- writeFileSync(mcpConfigPath, JSON.stringify(mcpConfig, null, 2));
343
- steps.push({ name: 'Register agentdb MCP', status: 'done', detail: '41 tools available' });
514
+ const agentdbEntry = {
515
+ command: 'npx',
516
+ // Pin to the INSTALLED agentdb version (not @latest) so the MCP server and the hook
517
+ // writer run the same alpha schema against one DB.
518
+ args: [installedAgentdbSpec(opts.projectRoot), 'mcp', 'start'],
519
+ // Pin the store to the SAME native DB the session-hook writer targets, so hook telemetry
520
+ // and agentdb_* pattern/reflexion data live in one shared store.
521
+ env: { AGENTDB_PATH: agentdbStorePath(opts.projectRoot) },
522
+ };
523
+ const mcpConfigPath = join(opts.projectRoot, '.mcp.json');
524
+ try {
525
+ const mcpConfig = (existsSync(mcpConfigPath)
526
+ ? JSON.parse(readFileSync(mcpConfigPath, 'utf-8'))
527
+ : {});
528
+ const servers = mcpConfig.mcpServers ?? {};
529
+ const before = JSON.stringify(servers['agentdb']);
530
+ servers['agentdb'] = agentdbEntry;
531
+ mcpConfig.mcpServers = servers;
532
+ if (before !== JSON.stringify(agentdbEntry)) {
533
+ writeFileSync(mcpConfigPath, JSON.stringify(mcpConfig, null, 2));
534
+ steps.push({ name: 'Register agentdb MCP', status: 'done', detail: '.mcp.json: 41 tools, store pinned to .dz/agentdb.db' });
535
+ }
536
+ else {
537
+ steps.push({ name: 'Register agentdb MCP', status: 'skipped', detail: 'already registered and current' });
538
+ }
344
539
  }
345
- else {
346
- steps.push({ name: 'Register agentdb MCP', status: 'skipped', detail: 'mcp.json already exists' });
540
+ catch {
541
+ steps.push({ name: 'Register agentdb MCP', status: 'error', detail: '.mcp.json unparseable — fix it and re-run' });
542
+ }
543
+ // Migrate off the legacy location: `.claude/mcp.json` is not loaded by Claude Code. If it
544
+ // holds ONLY our old agentdb registration, remove the file; otherwise leave it and warn.
545
+ const legacyPath = join(opts.projectRoot, '.claude', 'mcp.json');
546
+ if (existsSync(legacyPath)) {
547
+ try {
548
+ const legacy = JSON.parse(readFileSync(legacyPath, 'utf-8'));
549
+ const keys = Object.keys(legacy.mcpServers ?? {});
550
+ if (keys.length === 1 && keys[0] === 'agentdb') {
551
+ rmSync(legacyPath);
552
+ steps.push({ name: 'Migrate legacy .claude/mcp.json', status: 'done', detail: 'removed (not loaded by Claude Code); registration now in .mcp.json' });
553
+ }
554
+ else {
555
+ steps.push({ name: 'Migrate legacy .claude/mcp.json', status: 'error', detail: 'contains other servers — Claude Code does NOT load this file; move them to .mcp.json' });
556
+ }
557
+ }
558
+ catch {
559
+ steps.push({ name: 'Migrate legacy .claude/mcp.json', status: 'error', detail: 'unparseable legacy file — Claude Code does not load it; review manually' });
560
+ }
347
561
  }
348
562
  }
349
- // Step 6: Update .gitignore
350
- const gitignorePath = join(opts.projectRoot, '.gitignore');
351
- const dzIgnoreEntry = backend === 'agentdb'
352
- ? '\n# DZ Harness learning data\n.dz/memory.rvf\n.dz/sessions.jsonl\n'
353
- : '\n# DZ Harness learning data\n.dz/sessions.jsonl\n.dz/patterns.jsonl\n';
354
- if (existsSync(gitignorePath)) {
355
- const content = readFileSync(gitignorePath, 'utf-8');
356
- if (!content.includes('.dz/sessions.jsonl')) {
357
- writeFileSync(gitignorePath, content + dzIgnoreEntry);
358
- steps.push({ name: 'Update .gitignore', status: 'done', detail: 'added .dz/sessions.jsonl + patterns.jsonl' });
563
+ // Step 5.9: agentdb wiring invariant check (audit code#3). Skip-branches across repeated runs
564
+ // can leave inconsistent combinations (e.g. writer+MCP present but hooks still jsonl). Verify
565
+ // the three-way invariant explicitly and surface a loud error step instead of silent "skipped"s.
566
+ if (backend === 'agentdb' && !opts.noHooks) {
567
+ const problems = [];
568
+ if (!isAgentdbInstalledLocally(opts.projectRoot))
569
+ problems.push('deps missing (npm i agentdb better-sqlite3)');
570
+ try {
571
+ const settings = JSON.parse(readFileSync(join(opts.projectRoot, '.claude', 'settings.json'), 'utf-8'));
572
+ const refs = ['SessionStart', 'SessionEnd'].every((ev) => (settings.hooks?.[ev] ?? []).some((h) => String(h?.command ?? '').includes('agentdb-writer.mjs')));
573
+ if (!refs)
574
+ problems.push('hooks do not invoke the writer');
359
575
  }
360
- else {
361
- steps.push({ name: 'Update .gitignore', status: 'skipped', detail: 'already ignoring .dz data' });
576
+ catch {
577
+ problems.push('settings.json unreadable');
578
+ }
579
+ try {
580
+ const mcp = JSON.parse(readFileSync(join(opts.projectRoot, '.mcp.json'), 'utf-8'));
581
+ if (mcp.mcpServers?.['agentdb']?.env?.['AGENTDB_PATH'] !== agentdbStorePath(opts.projectRoot)) {
582
+ problems.push('.mcp.json agentdb missing or not pinned to .dz/agentdb.db');
583
+ }
362
584
  }
585
+ catch {
586
+ problems.push('.mcp.json unreadable');
587
+ }
588
+ steps.push(problems.length === 0
589
+ ? { name: 'agentdb wiring', status: 'done', detail: 'hooks → writer → .dz/agentdb.db ← MCP (one shared store)' }
590
+ : { name: 'agentdb wiring', status: 'error', detail: `INCOMPLETE: ${problems.join('; ')}` });
591
+ }
592
+ // Step 6: Update .gitignore. Append only the ENTRIES that are actually missing — a single
593
+ // sentinel check (e.g. sessions.jsonl, present in both backends) would skip agentdb.db/-wal/-shm
594
+ // on the documented jsonl→agentdb `--force` switch, leaking the binary store into git.
595
+ const gitignorePath = join(opts.projectRoot, '.gitignore');
596
+ const dzIgnoreLines = backend === 'agentdb'
597
+ ? ['.dz/agentdb.db', '.dz/agentdb.db-wal', '.dz/agentdb.db-shm', '.dz/sessions.jsonl']
598
+ : ['.dz/sessions.jsonl', '.dz/patterns.jsonl'];
599
+ const existing = existsSync(gitignorePath) ? readFileSync(gitignorePath, 'utf-8') : '';
600
+ const missing = dzIgnoreLines.filter((line) => !existing.split(/\r?\n/).includes(line));
601
+ if (missing.length > 0) {
602
+ const prefix = existing === '' ? '' : (existing.endsWith('\n') ? '' : '\n');
603
+ const block = `${prefix}\n# DZ Harness learning data\n${missing.join('\n')}\n`;
604
+ writeFileSync(gitignorePath, existing + block);
605
+ steps.push({
606
+ name: existsSync(gitignorePath) && existing !== '' ? 'Update .gitignore' : 'Create .gitignore',
607
+ status: 'done',
608
+ detail: `added ${missing.join(', ')}`,
609
+ });
363
610
  }
364
611
  else {
365
- writeFileSync(gitignorePath, dzIgnoreEntry);
366
- steps.push({ name: 'Create .gitignore', status: 'done', detail: 'with .dz entries' });
612
+ steps.push({ name: 'Update .gitignore', status: 'skipped', detail: 'already ignoring .dz data' });
367
613
  }
368
614
  // Step 7: Install the CLI-driver skill + agent docs (--install-driver)
369
615
  if (opts.installDriver) {
package/dist/setup.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dzhechkov/harness-core",
3
- "version": "0.3.40",
3
+ "version": "0.3.42",
4
4
  "description": "Shared harness logic - skill loading, additive apply, and the init/sync/verify/doctor operations.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -30,9 +30,9 @@
30
30
  "@dzhechkov/adapter-openclaude": "^0.1.0",
31
31
  "@dzhechkov/adapter-opencode": "^0.2.0",
32
32
  "yaml": "^2.0.0",
33
- "@dzhechkov/memory": "0.2.5",
33
+ "@dzhechkov/adapter-copilot": "0.1.1",
34
34
  "@dzhechkov/core": "0.2.4",
35
- "@dzhechkov/adapter-copilot": "0.1.1"
35
+ "@dzhechkov/memory": "0.2.5"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@types/node": "^25.6.0",