@dzhechkov/harness-core 0.8.5 → 0.8.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/.dz-manifest.json +286 -82
  2. package/README.md +54 -2
  3. package/dist/amendment-trace.d.ts.map +1 -1
  4. package/dist/amendment-trace.js +12 -1
  5. package/dist/amendment-trace.js.map +1 -1
  6. package/dist/compounding.d.ts +54 -0
  7. package/dist/compounding.d.ts.map +1 -1
  8. package/dist/compounding.js +221 -1
  9. package/dist/compounding.js.map +1 -1
  10. package/dist/eta.d.ts +92 -0
  11. package/dist/eta.d.ts.map +1 -0
  12. package/dist/eta.js +488 -0
  13. package/dist/eta.js.map +1 -0
  14. package/dist/feature-adr-checkpoints.d.ts +11 -2
  15. package/dist/feature-adr-checkpoints.d.ts.map +1 -1
  16. package/dist/feature-adr-checkpoints.js +38 -3
  17. package/dist/feature-adr-checkpoints.js.map +1 -1
  18. package/dist/feature-adr-decision-recall.d.ts +167 -0
  19. package/dist/feature-adr-decision-recall.d.ts.map +1 -0
  20. package/dist/feature-adr-decision-recall.js +519 -0
  21. package/dist/feature-adr-decision-recall.js.map +1 -0
  22. package/dist/feature-adr-landing.d.ts +37 -0
  23. package/dist/feature-adr-landing.d.ts.map +1 -0
  24. package/dist/feature-adr-landing.js +59 -0
  25. package/dist/feature-adr-landing.js.map +1 -0
  26. package/dist/feature-adr-routing.d.ts +58 -23
  27. package/dist/feature-adr-routing.d.ts.map +1 -1
  28. package/dist/feature-adr-routing.js +194 -69
  29. package/dist/feature-adr-routing.js.map +1 -1
  30. package/dist/guard-promotion.d.ts +41 -0
  31. package/dist/guard-promotion.d.ts.map +1 -1
  32. package/dist/guard-promotion.js +218 -4
  33. package/dist/guard-promotion.js.map +1 -1
  34. package/dist/guard-volume.d.ts +108 -0
  35. package/dist/guard-volume.d.ts.map +1 -0
  36. package/dist/guard-volume.js +536 -0
  37. package/dist/guard-volume.js.map +1 -0
  38. package/dist/guard.d.ts +34 -0
  39. package/dist/guard.d.ts.map +1 -1
  40. package/dist/guard.js +113 -4
  41. package/dist/guard.js.map +1 -1
  42. package/dist/index.d.ts +18 -4
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +12 -2
  45. package/dist/index.js.map +1 -1
  46. package/dist/integration-apply.d.ts +25 -0
  47. package/dist/integration-apply.d.ts.map +1 -0
  48. package/dist/integration-apply.js +299 -0
  49. package/dist/integration-apply.js.map +1 -0
  50. package/dist/integration-evidence.d.ts +46 -0
  51. package/dist/integration-evidence.d.ts.map +1 -0
  52. package/dist/integration-evidence.js +44 -0
  53. package/dist/integration-evidence.js.map +1 -0
  54. package/dist/integration-probe-worker.d.ts +22 -0
  55. package/dist/integration-probe-worker.d.ts.map +1 -0
  56. package/dist/integration-probe-worker.js +334 -0
  57. package/dist/integration-probe-worker.js.map +1 -0
  58. package/dist/integrations-verify.d.ts +60 -0
  59. package/dist/integrations-verify.d.ts.map +1 -0
  60. package/dist/integrations-verify.js +194 -0
  61. package/dist/integrations-verify.js.map +1 -0
  62. package/dist/lesson-generalization.d.ts +29 -0
  63. package/dist/lesson-generalization.d.ts.map +1 -0
  64. package/dist/lesson-generalization.js +84 -0
  65. package/dist/lesson-generalization.js.map +1 -0
  66. package/dist/loop-blobs.generated.js +8 -8
  67. package/dist/loop-blobs.generated.js.map +1 -1
  68. package/dist/loop-plan.d.ts +13 -1
  69. package/dist/loop-plan.d.ts.map +1 -1
  70. package/dist/loop-plan.js +15 -1
  71. package/dist/loop-plan.js.map +1 -1
  72. package/dist/loop-render.d.ts.map +1 -1
  73. package/dist/loop-render.js +51 -6
  74. package/dist/loop-render.js.map +1 -1
  75. package/dist/loop-trace.d.ts +20 -1
  76. package/dist/loop-trace.d.ts.map +1 -1
  77. package/dist/loop-trace.js +83 -1
  78. package/dist/loop-trace.js.map +1 -1
  79. package/dist/model-recommender.d.ts +8 -0
  80. package/dist/model-recommender.d.ts.map +1 -1
  81. package/dist/model-recommender.js +31 -4
  82. package/dist/model-recommender.js.map +1 -1
  83. package/dist/operations.d.ts +27 -0
  84. package/dist/operations.d.ts.map +1 -1
  85. package/dist/operations.js +178 -2
  86. package/dist/operations.js.map +1 -1
  87. package/dist/patterns.d.ts +27 -1
  88. package/dist/patterns.d.ts.map +1 -1
  89. package/dist/patterns.js +211 -45
  90. package/dist/patterns.js.map +1 -1
  91. package/dist/setup.d.ts.map +1 -1
  92. package/dist/setup.js +20 -17
  93. package/dist/setup.js.map +1 -1
  94. package/dist/target-integrations.d.ts +65 -0
  95. package/dist/target-integrations.d.ts.map +1 -0
  96. package/dist/target-integrations.js +152 -0
  97. package/dist/target-integrations.js.map +1 -0
  98. package/dist/vector-tier.d.ts +6 -1
  99. package/dist/vector-tier.d.ts.map +1 -1
  100. package/dist/vector-tier.js +32 -7
  101. package/dist/vector-tier.js.map +1 -1
  102. package/dist/workflow-run.d.ts.map +1 -1
  103. package/dist/workflow-run.js +18 -12
  104. package/dist/workflow-run.js.map +1 -1
  105. package/package.json +19 -15
  106. package/sbom.json +591 -81
  107. package/src/amendment-trace.ts +12 -1
  108. package/src/compounding.ts +300 -1
  109. package/src/eta.ts +590 -0
  110. package/src/feature-adr-checkpoints.ts +39 -3
  111. package/src/feature-adr-decision-recall.ts +652 -0
  112. package/src/feature-adr-landing.ts +109 -0
  113. package/src/feature-adr-routing.ts +224 -65
  114. package/src/guard-promotion.ts +245 -4
  115. package/src/guard-volume.ts +752 -0
  116. package/src/guard.ts +148 -4
  117. package/src/index.ts +65 -3
  118. package/src/integration-apply.ts +332 -0
  119. package/src/integration-evidence.ts +89 -0
  120. package/src/integration-probe-worker.ts +310 -0
  121. package/src/integration-receipts/claude-code/mcp/2.1.235.json +35 -0
  122. package/src/integrations-verify.ts +258 -0
  123. package/src/lesson-generalization.ts +115 -0
  124. package/src/loop-blobs.generated.ts +8 -8
  125. package/src/loop-plan.ts +36 -3
  126. package/src/loop-render.ts +50 -6
  127. package/src/loop-trace.ts +91 -2
  128. package/src/model-recommender.ts +35 -4
  129. package/src/operations.ts +199 -2
  130. package/src/patterns.ts +252 -43
  131. package/src/setup.ts +20 -17
  132. package/src/target-integrations.ts +225 -0
  133. package/src/vector-tier.ts +44 -14
  134. package/src/workflow-run.ts +18 -11
@@ -1 +1 @@
1
- {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../src/patterns.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../src/patterns.ts"],"names":[],"mappings":"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"}
package/dist/patterns.js CHANGED
@@ -29,6 +29,7 @@ import { resolveAgentdbPath } from './agentdb-index.js';
29
29
  import { rankLessonsByDelta } from './safla-delta.js';
30
30
  import { withStoreLock, withStoreLockSync, StoreLockTimeoutError, StoreLockCompromisedError } from './store-lock.js';
31
31
  import { describeNativeDep, exerciseSqliteOpen, probeNativeDep } from './native-dep-probe.js';
32
+ import { lessonPairIdOf, mergeLessonFormHits, validateClassTemplate, } from './lesson-generalization.js';
32
33
  /** Maximum total boost a learned-pattern set can add to one skill's score. */
33
34
  export const BOOST_CAP = 50;
34
35
  /** Points awarded per matching pattern, scaled by its reward (≈ one keyword topic). */
@@ -263,6 +264,25 @@ function storePath(projectRoot) {
263
264
  function sqlitePath(projectRoot) {
264
265
  return join(projectRoot, '.dz', 'memory', 'patterns.sqlite');
265
266
  }
267
+ function classFormMarkerPath(projectRoot) {
268
+ return join(projectRoot, '.dz', 'memory', '.class-forms-present');
269
+ }
270
+ function ensureClassFormMarker(projectRoot) {
271
+ const marker = classFormMarkerPath(projectRoot);
272
+ if (existsSync(marker))
273
+ return;
274
+ mkdirSync(dirname(marker), { recursive: true });
275
+ try {
276
+ writeFileSync(marker, 'lesson-class-forms/1\n', { flag: 'wx' });
277
+ }
278
+ catch (error) {
279
+ if (error.code !== 'EEXIST')
280
+ throw error;
281
+ }
282
+ }
283
+ function classFormIndexPresent(projectRoot) {
284
+ return existsSync(classFormMarkerPath(projectRoot));
285
+ }
266
286
  /**
267
287
  * Open the SQLite store backend if the configured mode allows it AND the native
268
288
  * `better-sqlite3` is loadable. Returns `undefined` to fall back to JSON (the
@@ -296,7 +316,11 @@ function tryOpenSqlite(projectRoot, mode) {
296
316
  * identity, keeping migration/import an idempotent upsert.
297
317
  */
298
318
  function patternIdentity(p) {
299
- return `${p.pattern}|${p.ts}|${p.reward}|${p.domain}|${p.type}`;
319
+ const legacy = `${p.pattern}|${p.ts}|${p.reward}|${p.domain}|${p.type}`;
320
+ // Existing rows must retain their historical ids; only a complete pair identity changes the key.
321
+ return p.lessonPairId !== undefined && p.lessonForm !== undefined
322
+ ? `${legacy}|${p.lessonForm}|${p.lessonPairId}`
323
+ : legacy;
300
324
  }
301
325
  /** Deterministic store id derived from the full-content {@link patternIdentity}. */
302
326
  function recordId(p) {
@@ -320,6 +344,9 @@ function recordIdentity(r) {
320
344
  const PATTERN_TYPES = new Set(['rule', 'success-pattern', 'lesson-learned']);
321
345
  /** Anti-corruption mapping: harness `PatternRecord` → canonical `MemoryRecord`. */
322
346
  export function patternToRecord(p) {
347
+ const pairMetadata = p.lessonPairId !== undefined && p.lessonForm !== undefined
348
+ ? { lessonForm: p.lessonForm, lessonPairId: p.lessonPairId }
349
+ : {};
323
350
  return {
324
351
  id: recordId(p),
325
352
  skillId: '', // taught patterns are free-text, not tied to one skill
@@ -333,11 +360,17 @@ export function patternToRecord(p) {
333
360
  // the learn-loop write path.
334
361
  outcome: PATTERN_TYPES.has(p.type) ? p.type : 'lesson-learned',
335
362
  timestamp: p.ts,
336
- metadata: { domain: p.domain ?? 'general', source: p.source ?? 'dz-teach' },
363
+ metadata: { domain: p.domain ?? 'general', source: p.source ?? 'dz-teach', ...pairMetadata },
337
364
  };
338
365
  }
339
366
  /** Anti-corruption mapping: canonical `MemoryRecord` → harness `PatternRecord`. */
340
367
  export function recordToPattern(r) {
368
+ const lessonForm = r.metadata?.['lessonForm'];
369
+ const lessonPairId = r.metadata?.['lessonPairId'];
370
+ const pair = (lessonForm === 'specific' || lessonForm === 'class')
371
+ && typeof lessonPairId === 'string' && lessonPairId !== ''
372
+ ? { lessonForm, lessonPairId }
373
+ : {};
341
374
  return {
342
375
  pattern: r.text,
343
376
  type: PATTERN_TYPES.has(r.outcome) ? r.outcome : 'lesson-learned',
@@ -345,6 +378,7 @@ export function recordToPattern(r) {
345
378
  domain: r.metadata?.['domain'] ?? 'general',
346
379
  ts: r.timestamp,
347
380
  source: r.metadata?.['source'] ?? 'dz-teach',
381
+ ...pair,
348
382
  };
349
383
  }
350
384
  export function readQuarantineState(r) {
@@ -518,6 +552,10 @@ async function reinforcePatternLocked(projectRoot, dzIdOrText, opts) {
518
552
  const rec = records.find((r) => r.id === dzIdOrText || r.text === dzIdOrText);
519
553
  if (rec === undefined)
520
554
  return { ok: false, error: `no learned pattern matches ${JSON.stringify(dzIdOrText)}` };
555
+ const pairId = typeof rec.metadata?.['lessonPairId'] === 'string' ? rec.metadata['lessonPairId'] : undefined;
556
+ const targets = pairId === undefined
557
+ ? [rec]
558
+ : records.filter((record) => record.metadata?.['lessonPairId'] === pairId);
521
559
  const prev = readReinforcementState(rec);
522
560
  const ts = opts.ts ?? new Date().toISOString();
523
561
  const observed = opts.reward !== undefined && Number.isFinite(opts.reward) ? Math.max(0, Math.min(1, opts.reward)) : rec.score;
@@ -533,18 +571,16 @@ async function reinforcePatternLocked(projectRoot, dzIdOrText, opts) {
533
571
  // EXPOSURE (a recall-hit sample) is not confirmation — stats update, quarantine stays (the
534
572
  // no-promotion-by-exposure invariant; found by cross-model QE as a live hole: recall-hit
535
573
  // flushes were routed through this same function and silently promoted every viewed lesson).
536
- const promotedMeta = { ...(rec.metadata ?? {}), ...encodeReinforcementState(nextState) };
537
- if (opts.exposure !== true) {
538
- delete promotedMeta['qStatus'];
539
- delete promotedMeta['quarantinedAt'];
540
- }
541
- const next = {
542
- ...rec,
543
- metadata: promotedMeta,
544
- };
545
- const put = await putStoreRecord(projectRoot, next);
546
- if ('error' in put)
547
- return { ok: false, dzId: rec.id, error: put.error };
574
+ for (const target of targets) {
575
+ const promotedMeta = { ...(target.metadata ?? {}), ...encodeReinforcementState(nextState) };
576
+ if (opts.exposure !== true) {
577
+ delete promotedMeta['qStatus'];
578
+ delete promotedMeta['quarantinedAt'];
579
+ }
580
+ const put = await putStoreRecord(projectRoot, { ...target, metadata: promotedMeta });
581
+ if ('error' in put)
582
+ return { ok: false, dzId: rec.id, error: put.error };
583
+ }
548
584
  try {
549
585
  appendFileSync(join(projectRoot, '.dz', 'sessions.jsonl'), JSON.stringify({ event: 'reinforce', ts, dzId: rec.id, uses: nextState.uses }) + '\n');
550
586
  }
@@ -554,16 +590,20 @@ async function reinforcePatternLocked(projectRoot, dzIdOrText, opts) {
554
590
  export async function updateReinforcementState(projectRoot, dzId, state) {
555
591
  try {
556
592
  return await withStoreLock(projectRoot, async () => {
557
- const rec = loadStoreRecords(projectRoot).find((r) => r.id === dzId);
593
+ const records = loadStoreRecords(projectRoot);
594
+ const rec = records.find((r) => r.id === dzId);
558
595
  if (rec === undefined)
559
596
  return { ok: false, error: `no learned pattern matches ${JSON.stringify(dzId)}` };
560
- const next = {
561
- ...rec,
562
- metadata: { ...(rec.metadata ?? {}), ...encodeReinforcementState(state) },
563
- };
564
- const put = await putStoreRecord(projectRoot, next);
565
- if ('error' in put)
566
- return { ok: false, dzId, error: put.error };
597
+ const pairId = typeof rec.metadata?.['lessonPairId'] === 'string' ? rec.metadata['lessonPairId'] : undefined;
598
+ const targets = pairId === undefined ? [rec] : records.filter((r) => r.metadata?.['lessonPairId'] === pairId);
599
+ for (const target of targets) {
600
+ const put = await putStoreRecord(projectRoot, {
601
+ ...target,
602
+ metadata: { ...(target.metadata ?? {}), ...encodeReinforcementState(state) },
603
+ });
604
+ if ('error' in put)
605
+ return { ok: false, dzId, error: put.error };
606
+ }
567
607
  return { ok: true, dzId, uses: state.uses };
568
608
  });
569
609
  }
@@ -584,23 +624,30 @@ export async function promotePatterns(projectRoot, dzIds) {
584
624
  const promoted = [];
585
625
  const notFound = [];
586
626
  const notQuarantined = [];
627
+ const handled = new Set();
587
628
  for (const id of dzIds) {
588
629
  const rec = records.find((r) => r.id === id);
589
630
  if (rec === undefined) {
590
631
  notFound.push(id);
591
632
  continue;
592
633
  }
593
- if (!readQuarantineState(rec).quarantined) {
634
+ const pairId = typeof rec.metadata?.['lessonPairId'] === 'string' ? rec.metadata['lessonPairId'] : undefined;
635
+ const targets = pairId === undefined ? [rec] : records.filter((r) => r.metadata?.['lessonPairId'] === pairId);
636
+ const pending = targets.filter((target) => !handled.has(target.id) && readQuarantineState(target).quarantined);
637
+ if (pending.length === 0) {
594
638
  notQuarantined.push(id);
595
639
  continue;
596
640
  }
597
- const meta = { ...(rec.metadata ?? {}) };
598
- delete meta['qStatus'];
599
- delete meta['quarantinedAt'];
600
- const put = await putStoreRecord(projectRoot, { ...rec, metadata: meta });
601
- if ('error' in put)
602
- return { ok: false, promoted, notFound, notQuarantined, error: put.error };
603
- promoted.push(id);
641
+ for (const target of pending) {
642
+ const meta = { ...(target.metadata ?? {}) };
643
+ delete meta['qStatus'];
644
+ delete meta['quarantinedAt'];
645
+ const put = await putStoreRecord(projectRoot, { ...target, metadata: meta });
646
+ if ('error' in put)
647
+ return { ok: false, promoted, notFound, notQuarantined, error: put.error };
648
+ handled.add(target.id);
649
+ promoted.push(target.id);
650
+ }
604
651
  }
605
652
  return { ok: true, promoted, notFound, notQuarantined };
606
653
  });
@@ -806,6 +853,8 @@ function migrationRecords(projectRoot) {
806
853
  * JSON file is never deleted. Returns the total record count after the write.
807
854
  */
808
855
  export async function recordPattern(projectRoot, p, opts = {}) {
856
+ if (p.lessonForm === 'class')
857
+ ensureClassFormMarker(projectRoot);
809
858
  const { sqliteBackend } = readLearningConfig(projectRoot);
810
859
  // lesson-quarantine: a fresh lesson is a HYPOTHESIS — mark it when the feature is on. Folded
811
860
  // legacy records are NEVER marked (they predate the feature: grandfathered as promoted).
@@ -839,23 +888,127 @@ export async function recordPattern(projectRoot, p, opts = {}) {
839
888
  return backend.count();
840
889
  });
841
890
  }
891
+ export async function recordLessonForms(projectRoot, specific, classTemplate, opts = {}) {
892
+ const persist = opts.writeRecord ?? recordPattern;
893
+ const persistOptions = opts.quarantine === true ? { quarantine: true } : {};
894
+ const proposed = classTemplate?.trim();
895
+ if (proposed === undefined || proposed === '') {
896
+ const count = await persist(projectRoot, specific, persistOptions);
897
+ return { count, specific: 'stored', class: 'absent', records: [specific] };
898
+ }
899
+ const validation = proposed === specific.pattern
900
+ ? { ok: true }
901
+ : validateClassTemplate(specific.pattern, proposed);
902
+ if (!validation.ok) {
903
+ const count = await persist(projectRoot, specific, persistOptions);
904
+ return { count, specific: 'stored', class: 'rejected', reason: validation.reason, records: [specific] };
905
+ }
906
+ const lessonPairId = lessonPairIdOf(specific.pattern, proposed, specific.ts);
907
+ const specificRow = { ...specific, lessonForm: 'specific', lessonPairId };
908
+ const classRow = {
909
+ ...specific,
910
+ pattern: proposed,
911
+ source: 'dz-teach-class',
912
+ lessonForm: 'class',
913
+ lessonPairId,
914
+ };
915
+ const firstCount = await persist(projectRoot, specificRow, persistOptions);
916
+ try {
917
+ const count = await persist(projectRoot, classRow, persistOptions);
918
+ return { count, specific: 'stored', class: 'stored', records: [specificRow, classRow] };
919
+ }
920
+ catch (error) {
921
+ return {
922
+ count: firstCount,
923
+ specific: 'stored',
924
+ class: 'failed',
925
+ reason: error instanceof Error ? error.message : String(error),
926
+ records: [specificRow],
927
+ };
928
+ }
929
+ }
930
+ function mergeRecallRows(records, ranked, backend, query, limit, opts) {
931
+ const pairRows = new Map();
932
+ for (const record of records) {
933
+ const pattern = recordToPattern(record);
934
+ if (pattern.lessonPairId === undefined || pattern.lessonForm === undefined)
935
+ continue;
936
+ const pair = pairRows.get(pattern.lessonPairId) ?? {};
937
+ if (pattern.lessonForm === 'specific')
938
+ pair.specific = record;
939
+ else
940
+ pair.classRow = record;
941
+ pairRows.set(pattern.lessonPairId, pair);
942
+ }
943
+ const rankedIds = new Set(ranked.map((record) => record.id));
944
+ const specificHits = [];
945
+ const rankedClassRows = [];
946
+ const logicalHit = (record) => {
947
+ const source = recordToPattern(record);
948
+ const pair = source.lessonPairId === undefined ? undefined : pairRows.get(source.lessonPairId);
949
+ const specificRecord = source.lessonForm === 'class' ? pair?.specific : record;
950
+ const classRecord = source.lessonForm === 'class' ? record : pair?.classRow;
951
+ const base = recordToPattern(specificRecord ?? record);
952
+ const pattern = classRecord === undefined ? base : { ...base, classForm: classRecord.text };
953
+ const quarantined = readQuarantineState(specificRecord ?? record).quarantined
954
+ || (classRecord !== undefined && readQuarantineState(classRecord).quarantined);
955
+ return { pattern, backend, ...(quarantined ? { quarantined: true } : {}) };
956
+ };
957
+ for (const record of ranked) {
958
+ const pattern = recordToPattern(record);
959
+ const key = pattern.lessonPairId ?? record.id;
960
+ if (pattern.lessonForm === 'class')
961
+ rankedClassRows.push(record);
962
+ else
963
+ specificHits.push({ key, value: logicalHit(record), matchedForm: 'specific' });
964
+ }
965
+ const finish = (classHits) => sinkQuarantined(mergeLessonFormHits(specificHits, classHits, limit * 2).map((hit) => ({ ...hit.value, matchedForm: hit.matchedForm })), limit);
966
+ try {
967
+ const classHits = rankedClassRows.map((record) => {
968
+ const pattern = recordToPattern(record);
969
+ return { key: pattern.lessonPairId ?? record.id, value: logicalHit(record), matchedForm: 'class' };
970
+ });
971
+ const classMatcher = opts.classMatcher ?? validateClassTemplate;
972
+ for (const record of records) {
973
+ const pattern = recordToPattern(record);
974
+ if (pattern.lessonForm !== 'class' || rankedIds.has(record.id))
975
+ continue;
976
+ if (classMatcher(query, pattern.pattern).ok) {
977
+ classHits.push({ key: pattern.lessonPairId ?? record.id, value: logicalHit(record), matchedForm: 'class' });
978
+ }
979
+ }
980
+ return finish(classHits);
981
+ }
982
+ catch (error) {
983
+ const message = `class-form search degraded: ${error instanceof Error ? error.message : String(error)}`;
984
+ try {
985
+ opts.onClassDegraded?.(message);
986
+ }
987
+ catch { /* an advisory sink may not suppress specific recall */ }
988
+ return finish([]);
989
+ }
990
+ }
842
991
  /**
843
992
  * Ranked recall over the store (Tier-3): SQLite **FTS5** full-text ranking when
844
993
  * available, else JSON keyword-overlap. The synchronous CLI analogue of semantic
845
994
  * recall — note it is *lexical*, not vector similarity (true embedding/HNSW recall
846
995
  * lives in the `agentdb-memory` MCP skill, MCP-host only). Graceful: `[]` on failure.
847
996
  */
848
- export function recallPatterns(projectRoot, query, limit = 10) {
997
+ export function recallPatterns(projectRoot, query, limit = 10, opts = {}) {
849
998
  const { sqliteBackend } = readLearningConfig(projectRoot);
850
999
  if (sqliteBackend !== 'json' && existsSync(sqlitePath(projectRoot))) {
851
1000
  try {
852
1001
  const db = SqliteBackend.open(sqlitePath(projectRoot));
853
1002
  try {
854
- return sinkQuarantined(db.querySync({ text: query, limit: limit * 2 }).map((r) => ({
855
- pattern: recordToPattern(r),
856
- backend: 'sqlite',
857
- ...(readQuarantineState(r).quarantined ? { quarantined: true } : {}),
858
- })), limit);
1003
+ if (!classFormIndexPresent(projectRoot)) {
1004
+ return sinkQuarantined(db.querySync({ text: query, limit: limit * 2 }).map((r) => ({
1005
+ pattern: recordToPattern(r),
1006
+ backend: 'sqlite',
1007
+ ...(readQuarantineState(r).quarantined ? { quarantined: true } : {}),
1008
+ })), limit);
1009
+ }
1010
+ const records = db.allSync();
1011
+ return mergeRecallRows(records, db.querySync({ text: query, limit: limit * 4 }), 'sqlite', query, limit, opts);
859
1012
  }
860
1013
  finally {
861
1014
  db.close();
@@ -864,13 +1017,16 @@ export function recallPatterns(projectRoot, query, limit = 10) {
864
1017
  catch { /* fall through to JSON */ }
865
1018
  }
866
1019
  try {
867
- return sinkQuarantined(JsonFileBackend.openSync(storePath(projectRoot))
868
- .querySync({ text: query, limit: limit * 2 })
869
- .map((r) => ({
870
- pattern: recordToPattern(r),
871
- backend: 'json',
872
- ...(readQuarantineState(r).quarantined ? { quarantined: true } : {}),
873
- })), limit);
1020
+ const backend = JsonFileBackend.openSync(storePath(projectRoot));
1021
+ if (!classFormIndexPresent(projectRoot)) {
1022
+ return sinkQuarantined(backend.querySync({ text: query, limit: limit * 2 }).map((r) => ({
1023
+ pattern: recordToPattern(r),
1024
+ backend: 'json',
1025
+ ...(readQuarantineState(r).quarantined ? { quarantined: true } : {}),
1026
+ })), limit);
1027
+ }
1028
+ const records = backend.allSync();
1029
+ return mergeRecallRows(records, backend.querySync({ text: query, limit: limit * 4 }), 'json', query, limit, opts);
874
1030
  }
875
1031
  catch {
876
1032
  return [];
@@ -1186,6 +1342,16 @@ export function pruneNoisePatterns(projectRoot, opts = {}) {
1186
1342
  export function removePatternsByIds(projectRoot, ids) {
1187
1343
  if (ids.size === 0)
1188
1344
  return { removed: 0 };
1345
+ const expandedIds = new Set(ids);
1346
+ const records = loadStoreRecords(projectRoot);
1347
+ const selectedPairs = new Set(records
1348
+ .filter((record) => ids.has(record.id) && typeof record.metadata?.['lessonPairId'] === 'string')
1349
+ .map((record) => record.metadata?.['lessonPairId']));
1350
+ for (const record of records) {
1351
+ if (typeof record.metadata?.['lessonPairId'] === 'string' && selectedPairs.has(record.metadata['lessonPairId'])) {
1352
+ expandedIds.add(record.id);
1353
+ }
1354
+ }
1189
1355
  let removed = 0;
1190
1356
  const errors = [];
1191
1357
  // Lexical store, SQLite tier
@@ -1195,7 +1361,7 @@ export function removePatternsByIds(projectRoot, ids) {
1195
1361
  const db = SqliteBackend.open(sqlitePath(projectRoot));
1196
1362
  try {
1197
1363
  for (const r of db.allSync()) {
1198
- if (ids.has(r.id)) {
1364
+ if (expandedIds.has(r.id)) {
1199
1365
  db.removeSync(r.id);
1200
1366
  removed += 1;
1201
1367
  }
@@ -1220,7 +1386,7 @@ export function removePatternsByIds(projectRoot, ids) {
1220
1386
  const backend = JsonFileBackend.openSync(storePath(projectRoot));
1221
1387
  let localRemoved = 0;
1222
1388
  for (const r of backend.allSync()) {
1223
- if (ids.has(r.id)) {
1389
+ if (expandedIds.has(r.id)) {
1224
1390
  backend.removeSync(r.id);
1225
1391
  localRemoved += 1;
1226
1392
  }