@futdevpro/fdp-agent-memory 1.1.112 → 1.1.113

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@futdevpro/fdp-agent-memory",
3
- "version": "1.1.112",
3
+ "version": "1.1.113",
4
4
  "description": "Local-first, vector-backed multi-table agent memory exposed as an MCP server (read/write/capabilities). Public, FDP-Templates-free, no auth.",
5
5
  "private": false,
6
6
  "publishConfig": {
@@ -140,6 +140,18 @@ exports.CONFIG_CATALOG = {
140
140
  + 'A tiszta-szemantikus találat (lexical 0) SOHA nem süllyed (×1). READ-time (nincs re-embed). `0` = pure-vektor '
141
141
  + '(régi viselkedés). Default 0.6.',
142
142
  },
143
+ 'read.scanSummaryWeight': {
144
+ type: 'number', default: 1.0, min: 0.0, max: 10.0, levels: ALL_LEVELS,
145
+ description: 'A `source.type:"scan-summary"` (auto-generált projekt-összefoglaló: `project-identity` + '
146
+ + '`fs-summary`) chunkok EFFEKTÍV statikus weight-SAPKÁJA read-időben (2026-07-26 dispatch-eval): e '
147
+ + 'generikus entry-k `weight:3` (project-identity) / `weight:2` (fs-summary) → `finalScore ~2.2` még '
148
+ + 'lexicalScore 0-0.2 mellett is elnyomta a szemantikailag+lexikailag relevánsabb doksikat. E cap a '
149
+ + 'scan-summary effektív weight-jét `min(weight, scanSummaryWeight)`-re szorítja (factor = cap/weight), '
150
+ + 'hogy a STATIKUS weight NE tudja legyőzni a relevanciát. `1.0` = tiszta relevancia-rangsor (nincs statikus '
151
+ + 'boost); az identity-jellegű query-ken a summary a MAGAS cosine-ja miatt így is felszínre kerül (nincs '
152
+ + 'regresszió). READ-time (nincs re-embed); a nyers cosine + a `weight` DTO-mező NEM változik, csak a ranking. '
153
+ + 'A stored weight ALÁ csökkenteni is lehet (<1) az agresszívabb leszorításhoz; ≥ stored weight = kikapcsolva.',
154
+ },
143
155
  'read.denseResultRatio': {
144
156
  type: 'number', default: 2.0, min: 1.0, max: 50.0, levels: ALL_LEVELS,
145
157
  description: 'Dense-jelzés ratio-kapuja: totalRelevant >= ratio*topK → denseResults (dsgn-005 §4.2).',
@@ -398,6 +398,22 @@ class FAM_Retrieval_ControlService {
398
398
  importSourceFactor(source, importSourceWeight) {
399
399
  return source?.type === 'import' ? importSourceWeight : 1;
400
400
  }
401
+ /**
402
+ * Scan-summary read-idejű weight-SAPKA (2026-07-26 dispatch-eval): az auto-generált projekt-összefoglaló
403
+ * (`source.type:'scan-summary'` — EGYSZERRE fedi a `project-identity` weight:3 ÉS az `fs-summary` weight:2
404
+ * entry-ket) statikus weight-boost-ját neutralizálja. Mérve: e generikus chunkok `finalScore ~1.3-2.2`-vel a
405
+ * TOP-hitek lettek OFF-topic query-ken is (lexicalScore 0-0.2), elnyomva a relevánsabb doksikat. A factor a
406
+ * effektív weight-et `min(weight, scanSummaryWeight)`-re szorítja (weight > cap → `cap/weight`, különben ×1),
407
+ * így a STATIKUS weight NEM tudja legyőzni a szemantikai + lexikai relevanciát. `scanSummaryWeight=1.0` (default)
408
+ * → tiszta relevancia-rangsor; az identity-query-ken a summary a MAGAS cosine miatt így is felszínre kerül. Minden
409
+ * NEM-scan-summary source érintetlen (×1). READ-time, a nyers `score` (relevancia) változatlan.
410
+ */
411
+ scanSummaryFactor(source, weight, scanSummaryWeight) {
412
+ if (source?.type !== 'scan-summary' || weight <= scanSummaryWeight) {
413
+ return 1;
414
+ }
415
+ return scanSummaryWeight / weight;
416
+ }
401
417
  /**
402
418
  * Memory Activation Model decay-szorzó (dsgn-013 §3) — CSAK a `memory` táron, ha engedélyezett. A frissen/gyakran
403
419
  * FELIDÉZETT memória felül-, a régóta érintetlen alul-rangsorol, de a `floorWeight > 0` miatt SOSEM esik ki. A
@@ -437,6 +453,7 @@ class FAM_Retrieval_ControlService {
437
453
  // finalScore = score × weight × chunkF × sourceF × decayF × (1 + keywordWeight × lexicalScore).
438
454
  const chunkFactor = this.chunkTypeFactor(set.entry.chunkType, set.importChunkWeight);
439
455
  const sourceFactor = this.importSourceFactor(set.entry.source, set.importSourceWeight);
456
+ const summaryFactor = this.scanSummaryFactor(set.entry.source, set.weight, set.config.scanSummaryWeight);
440
457
  const decayFactor = this.memoryDecayFactor(set.entry, set.table, set.config, set.nowMs);
441
458
  const lexicalScore = set.config.keywordWeight > 0
442
459
  ? fam_lexical_match_util_1.FAM_LexicalMatch_Util.score(set.queryTerms, {
@@ -449,7 +466,7 @@ class FAM_Retrieval_ControlService {
449
466
  table: set.table,
450
467
  score: set.vectorHit.score,
451
468
  weight: set.weight,
452
- finalScore: set.vectorHit.score * set.weight * chunkFactor * sourceFactor * decayFactor * keywordBoost,
469
+ finalScore: set.vectorHit.score * set.weight * chunkFactor * sourceFactor * summaryFactor * decayFactor * keywordBoost,
453
470
  lexicalScore: lexicalScore,
454
471
  content: set.includeContent ? set.entry.content : undefined,
455
472
  contentHash: set.entry.contentHash,
@@ -655,6 +672,7 @@ class FAM_Retrieval_ControlService {
655
672
  const relevanceFloor = await this.resolveNumber(config, 'read.relevanceFloor', ctx, 0.5);
656
673
  const importChunkWeight = await this.resolveNumber(config, 'read.importChunkWeight', ctx, 0.4);
657
674
  const importSourceWeight = await this.resolveNumber(config, 'read.importSourceWeight', ctx, 0.85);
675
+ const scanSummaryWeight = await this.resolveNumber(config, 'read.scanSummaryWeight', ctx, 1.0);
658
676
  const keywordWeight = await this.resolveNumber(config, 'read.keywordWeight', ctx, 0.6);
659
677
  const denseResultRatio = await this.resolveNumber(config, 'read.denseResultRatio', ctx, 2.0);
660
678
  const denseResultAbsMin = await this.resolveNumber(config, 'read.denseResultAbsMin', ctx, 25);
@@ -679,6 +697,7 @@ class FAM_Retrieval_ControlService {
679
697
  relevanceFloor: relevanceFloor,
680
698
  importChunkWeight: importChunkWeight,
681
699
  importSourceWeight: importSourceWeight,
700
+ scanSummaryWeight: scanSummaryWeight,
682
701
  keywordWeight: keywordWeight,
683
702
  denseResultRatio: denseResultRatio,
684
703
  denseResultAbsMin: denseResultAbsMin,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@futdevpro/fdp-agent-memory",
3
- "version": "1.1.112",
3
+ "version": "1.1.113",
4
4
  "description": "Local-first, vector-backed multi-table agent memory exposed as an MCP server (read/write/capabilities). Public, FDP-Templates-free, no auth.",
5
5
  "private": false,
6
6
  "publishConfig": {