@dzhechkov/harness-core 0.3.128 → 0.3.129
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/.dz-manifest.json +36 -32
- package/README.md +1 -1
- package/dist/agentdb-index.d.ts +11 -0
- package/dist/agentdb-index.d.ts.map +1 -1
- package/dist/agentdb-index.js +44 -0
- package/dist/agentdb-index.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/learning-backend.d.ts.map +1 -1
- package/dist/learning-backend.js +4 -0
- package/dist/learning-backend.js.map +1 -1
- package/dist/patterns.d.ts +74 -1
- package/dist/patterns.d.ts.map +1 -1
- package/dist/patterns.js +148 -9
- package/dist/patterns.js.map +1 -1
- package/dist/recall-hook-policy.d.ts +7 -0
- package/dist/recall-hook-policy.d.ts.map +1 -1
- package/dist/recall-hook-policy.js +6 -2
- package/dist/recall-hook-policy.js.map +1 -1
- package/dist/vector-tier.d.ts +5 -1
- package/dist/vector-tier.d.ts.map +1 -1
- package/dist/vector-tier.js +22 -6
- package/dist/vector-tier.js.map +1 -1
- package/package.json +5 -5
- package/sbom.json +41 -31
- package/src/agentdb-index.ts +46 -0
- package/src/index.ts +3 -3
- package/src/learning-backend.ts +4 -0
- package/src/patterns.ts +195 -11
- package/src/recall-hook-policy.ts +14 -2
- package/src/vector-tier.ts +23 -5
package/sbom.json
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"hashes": [
|
|
26
26
|
{
|
|
27
27
|
"alg": "SHA-256",
|
|
28
|
-
"content": "
|
|
28
|
+
"content": "64ade4559a5d8c120a5f3a0ab2707c62b3fcf04855e4d5c4cdeff2eae1c33ecd"
|
|
29
29
|
}
|
|
30
30
|
]
|
|
31
31
|
},
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
"hashes": [
|
|
96
96
|
{
|
|
97
97
|
"alg": "SHA-256",
|
|
98
|
-
"content": "
|
|
98
|
+
"content": "f5baab841b3179512cf72fd12884869719f0a352b9e231a87dfa1b87b772974f"
|
|
99
99
|
}
|
|
100
100
|
]
|
|
101
101
|
},
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
"hashes": [
|
|
106
106
|
{
|
|
107
107
|
"alg": "SHA-256",
|
|
108
|
-
"content": "
|
|
108
|
+
"content": "eb8f01ef67cb90a2d95b18ae1f10bb3ce2dd5855dc297402665a1fa621a8fb65"
|
|
109
109
|
}
|
|
110
110
|
]
|
|
111
111
|
},
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
"hashes": [
|
|
116
116
|
{
|
|
117
117
|
"alg": "SHA-256",
|
|
118
|
-
"content": "
|
|
118
|
+
"content": "f661d868e08152e9e293c83d9914e53c0c2ea52e0afc0ff49d1f8c320017eabd"
|
|
119
119
|
}
|
|
120
120
|
]
|
|
121
121
|
},
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
"hashes": [
|
|
126
126
|
{
|
|
127
127
|
"alg": "SHA-256",
|
|
128
|
-
"content": "
|
|
128
|
+
"content": "a994c29d7f265c129dccaf9c0e00b55eb7f6312af8112691035c3889a113668b"
|
|
129
129
|
}
|
|
130
130
|
]
|
|
131
131
|
},
|
|
@@ -1015,7 +1015,7 @@
|
|
|
1015
1015
|
"hashes": [
|
|
1016
1016
|
{
|
|
1017
1017
|
"alg": "SHA-256",
|
|
1018
|
-
"content": "
|
|
1018
|
+
"content": "ecee9fb65fab5133b2f39642760a3bd508dbe5190b643c32bd1d465f5beb7e97"
|
|
1019
1019
|
}
|
|
1020
1020
|
]
|
|
1021
1021
|
},
|
|
@@ -1025,7 +1025,7 @@
|
|
|
1025
1025
|
"hashes": [
|
|
1026
1026
|
{
|
|
1027
1027
|
"alg": "SHA-256",
|
|
1028
|
-
"content": "
|
|
1028
|
+
"content": "df89bb1d72d9b80d0569c833d912d06ef4b318fd0bd071764f6ee185b3588feb"
|
|
1029
1029
|
}
|
|
1030
1030
|
]
|
|
1031
1031
|
},
|
|
@@ -1035,7 +1035,7 @@
|
|
|
1035
1035
|
"hashes": [
|
|
1036
1036
|
{
|
|
1037
1037
|
"alg": "SHA-256",
|
|
1038
|
-
"content": "
|
|
1038
|
+
"content": "bf03f6c420d051d21a794a7f4626e594fe9b906c3acc8fffe7f4a93fe03ce655"
|
|
1039
1039
|
}
|
|
1040
1040
|
]
|
|
1041
1041
|
},
|
|
@@ -1045,7 +1045,7 @@
|
|
|
1045
1045
|
"hashes": [
|
|
1046
1046
|
{
|
|
1047
1047
|
"alg": "SHA-256",
|
|
1048
|
-
"content": "
|
|
1048
|
+
"content": "6d2e75ce1a9dff3ed2f917a4784b722f25c5e8d0489a8055961b8b9faa5b1a6b"
|
|
1049
1049
|
}
|
|
1050
1050
|
]
|
|
1051
1051
|
},
|
|
@@ -1065,7 +1065,7 @@
|
|
|
1065
1065
|
"hashes": [
|
|
1066
1066
|
{
|
|
1067
1067
|
"alg": "SHA-256",
|
|
1068
|
-
"content": "
|
|
1068
|
+
"content": "1fb488eaaef87d92cd95ca18901508cfb1793057470c31df01f399dae6c9af6e"
|
|
1069
1069
|
}
|
|
1070
1070
|
]
|
|
1071
1071
|
},
|
|
@@ -1075,7 +1075,7 @@
|
|
|
1075
1075
|
"hashes": [
|
|
1076
1076
|
{
|
|
1077
1077
|
"alg": "SHA-256",
|
|
1078
|
-
"content": "
|
|
1078
|
+
"content": "55ae03d431dd90aa819f8ea28aa590aad076a2f0222bb076461ce627ac342187"
|
|
1079
1079
|
}
|
|
1080
1080
|
]
|
|
1081
1081
|
},
|
|
@@ -1085,7 +1085,7 @@
|
|
|
1085
1085
|
"hashes": [
|
|
1086
1086
|
{
|
|
1087
1087
|
"alg": "SHA-256",
|
|
1088
|
-
"content": "
|
|
1088
|
+
"content": "7752efa7cba6b11dd7230b6d965f72a1b3a9e47e0c32fab619496d67f5f5ba22"
|
|
1089
1089
|
}
|
|
1090
1090
|
]
|
|
1091
1091
|
},
|
|
@@ -1215,7 +1215,7 @@
|
|
|
1215
1215
|
"hashes": [
|
|
1216
1216
|
{
|
|
1217
1217
|
"alg": "SHA-256",
|
|
1218
|
-
"content": "
|
|
1218
|
+
"content": "f1c730b94dc591aa592b7b31b86982561f099680fb822e7da68045ec01d44a99"
|
|
1219
1219
|
}
|
|
1220
1220
|
]
|
|
1221
1221
|
},
|
|
@@ -1225,7 +1225,7 @@
|
|
|
1225
1225
|
"hashes": [
|
|
1226
1226
|
{
|
|
1227
1227
|
"alg": "SHA-256",
|
|
1228
|
-
"content": "
|
|
1228
|
+
"content": "f59c1f9742028737b973c4129ac2b4f8e50c3c0b762f48ea2ce97f0a4f89c20a"
|
|
1229
1229
|
}
|
|
1230
1230
|
]
|
|
1231
1231
|
},
|
|
@@ -1235,7 +1235,7 @@
|
|
|
1235
1235
|
"hashes": [
|
|
1236
1236
|
{
|
|
1237
1237
|
"alg": "SHA-256",
|
|
1238
|
-
"content": "
|
|
1238
|
+
"content": "f8f8e5a7139e6c898b466a208a14228752501845ca755c94d80e2200cb24d890"
|
|
1239
1239
|
}
|
|
1240
1240
|
]
|
|
1241
1241
|
},
|
|
@@ -1245,7 +1245,7 @@
|
|
|
1245
1245
|
"hashes": [
|
|
1246
1246
|
{
|
|
1247
1247
|
"alg": "SHA-256",
|
|
1248
|
-
"content": "
|
|
1248
|
+
"content": "ac7463223c47a36d03e2875995c98624c681bc36f04cd37490aa76616513d5aa"
|
|
1249
1249
|
}
|
|
1250
1250
|
]
|
|
1251
1251
|
},
|
|
@@ -1495,7 +1495,7 @@
|
|
|
1495
1495
|
"hashes": [
|
|
1496
1496
|
{
|
|
1497
1497
|
"alg": "SHA-256",
|
|
1498
|
-
"content": "
|
|
1498
|
+
"content": "9a74c9472688a4326b10065f61c9294b473baf232a27cf69f6ae7a74a5ce9bb6"
|
|
1499
1499
|
}
|
|
1500
1500
|
]
|
|
1501
1501
|
},
|
|
@@ -1505,7 +1505,7 @@
|
|
|
1505
1505
|
"hashes": [
|
|
1506
1506
|
{
|
|
1507
1507
|
"alg": "SHA-256",
|
|
1508
|
-
"content": "
|
|
1508
|
+
"content": "0631cf526a8aae076d5512bcc75c629ea69830f65aa267ade03028e532a2a923"
|
|
1509
1509
|
}
|
|
1510
1510
|
]
|
|
1511
1511
|
},
|
|
@@ -1515,7 +1515,7 @@
|
|
|
1515
1515
|
"hashes": [
|
|
1516
1516
|
{
|
|
1517
1517
|
"alg": "SHA-256",
|
|
1518
|
-
"content": "
|
|
1518
|
+
"content": "73fa2d3bcedb0158a2860171b66046aa67c7aa1aab80a93502588202f0aed09e"
|
|
1519
1519
|
}
|
|
1520
1520
|
]
|
|
1521
1521
|
},
|
|
@@ -1525,7 +1525,7 @@
|
|
|
1525
1525
|
"hashes": [
|
|
1526
1526
|
{
|
|
1527
1527
|
"alg": "SHA-256",
|
|
1528
|
-
"content": "
|
|
1528
|
+
"content": "abdfa155fca15e8aa950430d201c2e6754872c0b02d0201a10c5f0923210373a"
|
|
1529
1529
|
}
|
|
1530
1530
|
]
|
|
1531
1531
|
},
|
|
@@ -2335,7 +2335,7 @@
|
|
|
2335
2335
|
"hashes": [
|
|
2336
2336
|
{
|
|
2337
2337
|
"alg": "SHA-256",
|
|
2338
|
-
"content": "
|
|
2338
|
+
"content": "2bc60f782f3b2f9ee179894b88d8b2b9ff487f286c17f3d3dfd7f0ca0d640ffc"
|
|
2339
2339
|
}
|
|
2340
2340
|
]
|
|
2341
2341
|
},
|
|
@@ -2345,7 +2345,7 @@
|
|
|
2345
2345
|
"hashes": [
|
|
2346
2346
|
{
|
|
2347
2347
|
"alg": "SHA-256",
|
|
2348
|
-
"content": "
|
|
2348
|
+
"content": "2a30a5bd7b8caf0e1cca2587817d25d9b0a366162ca098d5464f9783cdc2311d"
|
|
2349
2349
|
}
|
|
2350
2350
|
]
|
|
2351
2351
|
},
|
|
@@ -2355,7 +2355,7 @@
|
|
|
2355
2355
|
"hashes": [
|
|
2356
2356
|
{
|
|
2357
2357
|
"alg": "SHA-256",
|
|
2358
|
-
"content": "
|
|
2358
|
+
"content": "c0d917225ced953324609cb086fff6d6a2f31dead7dad470a31ec5d6bb257a32"
|
|
2359
2359
|
}
|
|
2360
2360
|
]
|
|
2361
2361
|
},
|
|
@@ -2365,7 +2365,7 @@
|
|
|
2365
2365
|
"hashes": [
|
|
2366
2366
|
{
|
|
2367
2367
|
"alg": "SHA-256",
|
|
2368
|
-
"content": "
|
|
2368
|
+
"content": "70e3c78890c71f0bb1cdd66bc2f787ead25c88edc130449d71003275e5adf57b"
|
|
2369
2369
|
}
|
|
2370
2370
|
]
|
|
2371
2371
|
},
|
|
@@ -2415,7 +2415,7 @@
|
|
|
2415
2415
|
"hashes": [
|
|
2416
2416
|
{
|
|
2417
2417
|
"alg": "SHA-256",
|
|
2418
|
-
"content": "
|
|
2418
|
+
"content": "df8d2ed464b0d85739f21569fa96bc8ca0f2a908373deb8afb9feebf0c79582d"
|
|
2419
2419
|
}
|
|
2420
2420
|
]
|
|
2421
2421
|
},
|
|
@@ -2435,7 +2435,7 @@
|
|
|
2435
2435
|
"hashes": [
|
|
2436
2436
|
{
|
|
2437
2437
|
"alg": "SHA-256",
|
|
2438
|
-
"content": "
|
|
2438
|
+
"content": "91f8d26b81e3262bc9e3b4ca357165eaed5d889660ef60f18b63e483009ea44e"
|
|
2439
2439
|
}
|
|
2440
2440
|
]
|
|
2441
2441
|
},
|
|
@@ -2665,7 +2665,7 @@
|
|
|
2665
2665
|
"hashes": [
|
|
2666
2666
|
{
|
|
2667
2667
|
"alg": "SHA-256",
|
|
2668
|
-
"content": "
|
|
2668
|
+
"content": "5159e876d79bbc30b3d44a54a147d74d92cbb44e87b8568a456ea46f402aa345"
|
|
2669
2669
|
}
|
|
2670
2670
|
]
|
|
2671
2671
|
},
|
|
@@ -2675,7 +2675,7 @@
|
|
|
2675
2675
|
"hashes": [
|
|
2676
2676
|
{
|
|
2677
2677
|
"alg": "SHA-256",
|
|
2678
|
-
"content": "
|
|
2678
|
+
"content": "041fea2a00543016e0d2d9c5fc45df0df3bd97744c1705f95f6bb73725f03aee"
|
|
2679
2679
|
}
|
|
2680
2680
|
]
|
|
2681
2681
|
},
|
|
@@ -2715,7 +2715,7 @@
|
|
|
2715
2715
|
"hashes": [
|
|
2716
2716
|
{
|
|
2717
2717
|
"alg": "SHA-256",
|
|
2718
|
-
"content": "
|
|
2718
|
+
"content": "dba61149547898122304b11d4be377aed17ad822b0f4a017d76815ddb295eb0a"
|
|
2719
2719
|
}
|
|
2720
2720
|
]
|
|
2721
2721
|
},
|
|
@@ -2775,7 +2775,7 @@
|
|
|
2775
2775
|
"hashes": [
|
|
2776
2776
|
{
|
|
2777
2777
|
"alg": "SHA-256",
|
|
2778
|
-
"content": "
|
|
2778
|
+
"content": "b4a3c6b3fc2e8338efeee729038a01e3881dc578b65427ffbb03c236e160b470"
|
|
2779
2779
|
}
|
|
2780
2780
|
]
|
|
2781
2781
|
},
|
|
@@ -2985,7 +2985,7 @@
|
|
|
2985
2985
|
"hashes": [
|
|
2986
2986
|
{
|
|
2987
2987
|
"alg": "SHA-256",
|
|
2988
|
-
"content": "
|
|
2988
|
+
"content": "9707fa46b1f92cfa75e45c6619e01ef8f74bb5f50a913b778edfe6143d818d8a"
|
|
2989
2989
|
}
|
|
2990
2990
|
]
|
|
2991
2991
|
},
|
|
@@ -3419,6 +3419,16 @@
|
|
|
3419
3419
|
}
|
|
3420
3420
|
]
|
|
3421
3421
|
},
|
|
3422
|
+
{
|
|
3423
|
+
"type": "file",
|
|
3424
|
+
"name": "test/lesson-quarantine.test.ts",
|
|
3425
|
+
"hashes": [
|
|
3426
|
+
{
|
|
3427
|
+
"alg": "SHA-256",
|
|
3428
|
+
"content": "61931781195ab6093482060120f537a047223c6f345ce8c1809a81655ffb74d6"
|
|
3429
|
+
}
|
|
3430
|
+
]
|
|
3431
|
+
},
|
|
3422
3432
|
{
|
|
3423
3433
|
"type": "file",
|
|
3424
3434
|
"name": "test/mcp-scan.test.ts",
|
package/src/agentdb-index.ts
CHANGED
|
@@ -484,6 +484,52 @@ export async function importVectorsToAgentdb(
|
|
|
484
484
|
}
|
|
485
485
|
}
|
|
486
486
|
|
|
487
|
+
/**
|
|
488
|
+
* lesson-quarantine: clear the `qStatus` marker from mirrored rows after a promotion — the hook
|
|
489
|
+
* daemon reads ONLY this mirror's metadata, so a promoted lesson must stop being excluded there
|
|
490
|
+
* too. Best-effort, same custody model as {@link bumpAgentdbUses} (missing db/deps ⇒ no-op).
|
|
491
|
+
*/
|
|
492
|
+
export function clearAgentdbQuarantine(
|
|
493
|
+
projectRoot: string,
|
|
494
|
+
dzIds: readonly string[],
|
|
495
|
+
opts: { dbPath?: string } = {},
|
|
496
|
+
): { cleared: number; error?: string } {
|
|
497
|
+
if (dzIds.length === 0) return { cleared: 0 };
|
|
498
|
+
const dbFile = resolveAgentdbPath(projectRoot, opts.dbPath);
|
|
499
|
+
if (!existsSync(dbFile)) return { cleared: 0 };
|
|
500
|
+
let Database: new (p: string) => UpsertDb;
|
|
501
|
+
try {
|
|
502
|
+
const req = createRequire(join(projectRoot, 'package.json'));
|
|
503
|
+
Database = req('better-sqlite3') as new (p: string) => UpsertDb;
|
|
504
|
+
} catch {
|
|
505
|
+
return { cleared: 0, error: DEPS_MISSING };
|
|
506
|
+
}
|
|
507
|
+
try {
|
|
508
|
+
const db = new Database(dbFile);
|
|
509
|
+
try {
|
|
510
|
+
db.pragma('journal_mode = WAL');
|
|
511
|
+
db.pragma('busy_timeout = 5000');
|
|
512
|
+
db.exec(REASONING_BANK_SCHEMA);
|
|
513
|
+
const stmt = db.prepare(
|
|
514
|
+
"UPDATE reasoning_patterns SET metadata = json_remove(metadata, '$.qStatus', '$.quarantinedAt') WHERE json_extract(metadata, '$.dzId') = ? AND json_extract(metadata, '$.qStatus') = 'quarantined'",
|
|
515
|
+
);
|
|
516
|
+
const tx = db.transaction(() => {
|
|
517
|
+
let cleared = 0;
|
|
518
|
+
for (const dzId of dzIds) {
|
|
519
|
+
const r = stmt.run(dzId);
|
|
520
|
+
cleared += Number((r as unknown as { changes?: number }).changes ?? 0);
|
|
521
|
+
}
|
|
522
|
+
return cleared;
|
|
523
|
+
});
|
|
524
|
+
return { cleared: tx() };
|
|
525
|
+
} finally {
|
|
526
|
+
db.close();
|
|
527
|
+
}
|
|
528
|
+
} catch (err) {
|
|
529
|
+
return { cleared: 0, error: `quarantine clear failed: ${err instanceof Error ? err.message : String(err)}` };
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
|
|
487
533
|
export function bumpAgentdbUses(
|
|
488
534
|
projectRoot: string,
|
|
489
535
|
dzIds: readonly string[],
|
package/src/index.ts
CHANGED
|
@@ -40,8 +40,8 @@ export { benchmarkSkill, benchmarkSkills, compareSkills } from './benchmark.js';
|
|
|
40
40
|
export { buildRegistry, searchRegistry, filterByCategory, skillPackBaseDirs, discoverSkillPackDirs } from './registry.js';
|
|
41
41
|
export { recommend } from './recommend.js';
|
|
42
42
|
export { pretrain } from './pretrain.js';
|
|
43
|
-
export { loadPatterns, loadSessions, computePatternBoost, readLearningConfig, readMemoryLearningConfig, BOOST_CAP, recordPattern, loadStorePatternsSync, loadStoreRecords, patternToRecord, recordToPattern, patternRecordId, patternIdentityOf, dreamRecordId, isMirrorableLearning, consolidateSessions, recallPatterns, pruneNoisePatterns, removePatternsByIds, snapshotStore, readReinforcementState, encodeReinforcementState, reinforcePattern, updateReinforcementState, storeStats, lessonDeltaReport, lessonDeltaMap } from './patterns.js';
|
|
44
|
-
export type { PatternRecord, SessionRecord, LearningConfig, MemoryLearningConfig, LoadOptions, ConsolidateResult, ConsolidateOptions, SqliteBackendMode, RecallHit, SessionsSource, PruneNoiseResult, RemovePatternsResult, SnapshotStoreResult, ReinforcementState, ReinforcePatternResult, StoreStats, LessonDeltaReport, LessonDeltaRow } from './patterns.js';
|
|
43
|
+
export { loadPatterns, loadSessions, computePatternBoost, readLearningConfig, readMemoryLearningConfig, BOOST_CAP, recordPattern, loadStorePatternsSync, loadStoreRecords, patternToRecord, recordToPattern, patternRecordId, patternIdentityOf, dreamRecordId, isMirrorableLearning, consolidateSessions, recallPatterns, pruneNoisePatterns, removePatternsByIds, snapshotStore, readReinforcementState, encodeReinforcementState, reinforcePattern, updateReinforcementState, storeStats, lessonDeltaReport, lessonDeltaMap, readQuarantineState, encodeQuarantineState, promotePatterns, quarantineExpiryCandidates, pruneQuarantinePatterns } from './patterns.js';
|
|
44
|
+
export type { PatternRecord, SessionRecord, LearningConfig, MemoryLearningConfig, LoadOptions, ConsolidateResult, ConsolidateOptions, SqliteBackendMode, RecallHit, SessionsSource, PruneNoiseResult, RemovePatternsResult, SnapshotStoreResult, ReinforcementState, ReinforcePatternResult, StoreStats, LessonDeltaReport, LessonDeltaRow, QuarantineState, PromoteResult, QuarantineExpiryCandidate } from './patterns.js';
|
|
45
45
|
export { DEFAULT_REINFORCE_THRESHOLD, NoopLearningBackend, NativeReinforcementBackend, resolveLearningBackend, isLearningSignalBackend } from './learning-backend.js';
|
|
46
46
|
export type { LearningSignalBackend, LearningSignalStats, LearningSample, SignalCandidate, EnhanceContext, TrainingResult, LearningBackendMode } from './learning-backend.js';
|
|
47
47
|
export {
|
|
@@ -96,7 +96,7 @@ export type {
|
|
|
96
96
|
export { runSetup, generateHooksConfig, generateAgentdbWriter, writerVersionOf, AGENTDB_WRITER_VERSION } from './setup.js';
|
|
97
97
|
export { statuslineData, readFeatureAdrState, writeFeatureAdrState, featureAdrStatePath } from './statusline.js';
|
|
98
98
|
export type { StatuslineData, FeatureAdrState, WriteFeatureAdrStateInput } from './statusline.js';
|
|
99
|
-
export { indexPatternsToAgentdb, resolveAgentdbPath, searchAgentdbPatterns, listAgentdbDzIds, resolveAgentdbEmbedder, cosineSimilarity, importVectorsToAgentdb, reindexAgentdbRows, bumpAgentdbUses } from './agentdb-index.js';
|
|
99
|
+
export { indexPatternsToAgentdb, resolveAgentdbPath, searchAgentdbPatterns, listAgentdbDzIds, resolveAgentdbEmbedder, cosineSimilarity, importVectorsToAgentdb, reindexAgentdbRows, bumpAgentdbUses, clearAgentdbQuarantine } from './agentdb-index.js';
|
|
100
100
|
export type { AgentdbSearchHit, AgentdbSearchResult, AgentdbImportRow } from './agentdb-index.js';
|
|
101
101
|
export { DEFAULT_EMBED_MODEL, LEGACY_EMBED_MODEL, DEFAULT_EMBED_DIM, KNOWN_EMBED_DIMS, resolveEmbedModel, readEmbedManifest, writeEmbedManifest, embedManifestPath, legacyEmbedManifest } from './embedding-config.js';
|
|
102
102
|
export type { EmbedModelConfig, EmbedModelSource, EmbedManifest } from './embedding-config.js';
|
package/src/learning-backend.ts
CHANGED
|
@@ -115,9 +115,13 @@ export class NativeReinforcementBackend implements LearningSignalBackend {
|
|
|
115
115
|
let failed = 0;
|
|
116
116
|
let error: string | undefined;
|
|
117
117
|
for (const sample of batch) {
|
|
118
|
+
// lesson-quarantine (CRITICAL, cross-model QE): a `recall-hit` sample is EXPOSURE, not
|
|
119
|
+
// confirmation — it must update reinforcement stats WITHOUT lifting quarantine. Only an
|
|
120
|
+
// explicit `reinforce` sample promotes (the ADR's no-promotion-by-exposure invariant).
|
|
118
121
|
const r = await reinforcePattern(this.projectRoot, sample.dzId, {
|
|
119
122
|
ts: sample.ts,
|
|
120
123
|
...(sample.reward !== undefined ? { reward: sample.reward } : {}),
|
|
124
|
+
...(sample.kind === 'recall-hit' ? { exposure: true } : {}),
|
|
121
125
|
});
|
|
122
126
|
if (r.ok) flushed += 1;
|
|
123
127
|
else {
|