@futdevpro/fdp-agent-memory 1.1.21 → 1.1.112
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/build/package.json +2 -2
- package/build/src/_cli/_commands/find-duplicates.command.js +41 -16
- package/build/src/_cli/_commands/scan-projects.command.js +113 -113
- package/build/src/_cli/_commands/scan.command.js +2 -0
- package/build/src/_cli/_commands/serve.command.js +110 -10
- package/build/src/_cli/_services/fam-client.service.js +25 -1
- package/build/src/_cli/register-commands.js +28 -0
- package/build/src/_collections/config-catalog.const.js +152 -33
- package/build/src/_collections/error-codes.const.js +2 -0
- package/build/src/_collections/fam-console.util.js +38 -260
- package/build/src/_collections/fam-db-models.const.js +2 -0
- package/build/src/_collections/fam-entry-bootstrap.util.js +20 -6
- package/build/src/_collections/fam-error-context.util.js +1 -0
- package/build/src/_collections/fam-mcp-bridge.util.js +15 -1
- package/build/src/_collections/fam-operation-queue.service.js +85 -0
- package/build/src/_collections/fam-project-discovery.util.js +148 -0
- package/build/src/_collections/fam-request-origin.util.js +41 -0
- package/build/src/_collections/fam-retry.util.js +48 -0
- package/build/src/_collections/fam-scan-progress-sink.service.js +26 -0
- package/build/src/_collections/title.const.js +26 -26
- package/build/src/_enums/fam-rule-scope.type-enum.js +25 -0
- package/build/src/_models/data-models/fam-entry.data-model.js +29 -0
- package/build/src/_models/data-models/fam-memory.data-model.js +5 -0
- package/build/src/_models/data-models/fam-rules.data-model.js +24 -0
- package/build/src/_models/data-models/fam-scan-job.data-model.js +73 -0
- package/build/src/_models/data-models/fam-scope.data-model.js +9 -0
- package/build/src/_modules/capture/_services/fam-auto-capture.control-service.js +1 -1
- package/build/src/_modules/embedding/_services/fam-dedup-warn.control-service.js +40 -0
- package/build/src/_modules/embedding/_services/fam-duplicate-scan.control-service.js +74 -16
- package/build/src/_modules/embedding/_services/fam-embedding-bootstrap.control-service.js +50 -0
- package/build/src/_modules/embedding/_services/fam-embedding-pipeline.control-service.js +32 -6
- package/build/src/_modules/embedding/_services/fam-embedding.control-service.js +142 -9
- package/build/src/_modules/embedding/_services/fam-entry.data-service.js +32 -1
- package/build/src/_modules/embedding/_services/fam-hydration-coordinator.control-service.js +159 -0
- package/build/src/_modules/embedding/_services/fam-lmstudio-embedding.provider.js +41 -4
- package/build/src/_modules/embedding/_services/fam-vector-search.control-service.js +67 -12
- package/build/src/_modules/embedding/index.js +5 -1
- package/build/src/_modules/ingest/_collections/fam-file-routing.util.js +10 -0
- package/build/src/_modules/ingest/_collections/fam-frontmatter.util.js +134 -0
- package/build/src/_modules/ingest/_collections/fam-project-identity.util.js +30 -0
- package/build/src/_modules/ingest/_collections/fam-scan-progress.util.js +5 -2
- package/build/src/_modules/ingest/_collections/fam-scan-summary.util.js +55 -29
- package/build/src/_modules/ingest/_collections/fam-split-chunker.util.js +139 -0
- package/build/src/_modules/ingest/_models/interfaces/fam-scan-job.interface.js +2 -0
- package/build/src/_modules/ingest/_services/fam-chunker.control-service.js +10 -0
- package/build/src/_modules/ingest/_services/fam-delta-compare.util.js +68 -1
- package/build/src/_modules/ingest/_services/fam-ingest-run.data-service.js +1 -1
- package/build/src/_modules/ingest/_services/fam-ingest.control-service.js +177 -37
- package/build/src/_modules/ingest/_services/fam-scan-job.control-service.js +429 -0
- package/build/src/_modules/ingest/_services/fam-scan-job.data-service.js +34 -0
- package/build/src/_modules/ingest/_services/fam-scan.control-service.js +6 -4
- package/build/src/_modules/ingest/index.js +6 -1
- package/build/src/_modules/mcp/_collections/fam-core-tools.const.js +1 -1
- package/build/src/_modules/mcp/_services/fam-capability-registry.service.js +264 -41
- package/build/src/_modules/mcp/_services/fam-read-tool.service.js +71 -1
- package/build/src/_modules/mcp/_services/fam-write-tool.service.js +36 -0
- package/build/src/_modules/migration/_services/fam-claude-mem-import.control-service.js +1 -1
- package/build/src/_modules/retrieval/_collections/fam-lexical-match.util.js +69 -0
- package/build/src/_modules/retrieval/_collections/fam-memory-activation.util.js +66 -0
- package/build/src/_modules/retrieval/_collections/fam-rule-injection.util.js +125 -0
- package/build/src/_modules/retrieval/_collections/fam-rule-propagation.util.js +95 -0
- package/build/src/_modules/retrieval/_collections/fam-rule-scope-context.util.js +74 -0
- package/build/src/_modules/retrieval/_services/fam-global-rule.control-service.js +82 -0
- package/build/src/_modules/retrieval/_services/fam-memory-cold-search.control-service.js +121 -0
- package/build/src/_modules/retrieval/_services/fam-memory-dormancy.control-service.js +99 -0
- package/build/src/_modules/retrieval/_services/fam-memory-reactivation.control-service.js +68 -0
- package/build/src/_modules/retrieval/_services/fam-retrieval-candidate.data-service.js +15 -2
- package/build/src/_modules/retrieval/_services/fam-retrieval.control-service.js +197 -5
- package/build/src/_modules/retrieval/_services/fam-rule-injection.control-service.js +102 -0
- package/build/src/_modules/retrieval/index.js +12 -1
- package/build/src/_modules/scope-reference/_collections/fam-scope-maintenance.util.js +134 -0
- package/build/src/_modules/scope-reference/_services/fam-scope-maintenance.control-service.js +423 -0
- package/build/src/_modules/scope-reference/_services/fam-scope-resolver.control-service.js +2 -2
- package/build/src/_modules/scope-reference/_services/fam-scope.data-service.js +25 -0
- package/build/src/_modules/scope-reference/index.js +4 -1
- package/build/src/_routes/server/api/api.controller.js +324 -23
- package/build/src/_routes/server/api/fam-doctor.control-service.js +156 -0
- package/build/src/_routes/server/config/config.control-service.js +2 -2
- package/build/src/app.server.js +29 -27
- package/client-dist/{chunk-YXHWCJ5O.js → chunk-GF3FJP7E.js} +71 -71
- package/client-dist/chunk-NMUCMQY6.js +1 -0
- package/client-dist/favicon.ico +0 -0
- package/client-dist/index.html +3 -3
- package/client-dist/main-YK4YIVAQ.js +2 -0
- package/package.json +2 -2
- package/build/src/_cli/_collections/fam-project-discovery.util.js +0 -98
- package/build/src/_collections/fam-heap-guard.control-service.js +0 -176
- package/client-dist/chunk-I77GXVAQ.js +0 -1
- package/client-dist/main-PJPEDVJT.js +0 -2
|
@@ -66,9 +66,37 @@ function registerFAMCommands(program, version) {
|
|
|
66
66
|
];
|
|
67
67
|
for (const command of famCommands) {
|
|
68
68
|
applyExitMapping(command);
|
|
69
|
+
if (SERVER_DEPENDENT_COMMANDS.has(command.name())) {
|
|
70
|
+
attachEnsureServerHook(command);
|
|
71
|
+
}
|
|
69
72
|
program.addCommand(command);
|
|
70
73
|
}
|
|
71
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* A szerver-függő (REST-et hívó) data-parancsok — ezekre rákötjük az auto-ensure pre-action hook-ot (user-FR
|
|
77
|
+
* 2026-06-22: „minden fam funkciónak gondoskodnia kell a fam elindításáról"). A környezet-szintű parancsok
|
|
78
|
+
* (`init`/`doctor`/`validate-env`/…) É a szerver-életciklust kezelő `start`/`serve` KIMARADNAK (azok nem a
|
|
79
|
+
* futó primary-t hívják, vagy MAGUK a szerver).
|
|
80
|
+
*/
|
|
81
|
+
const SERVER_DEPENDENT_COMMANDS = new Set([
|
|
82
|
+
'read', 'write', 'scan', 'scan-projects', 'import', 'export', 'capture',
|
|
83
|
+
'config', 'stats', 'find-duplicates', 'errors', 'migrate', 'seed-example',
|
|
84
|
+
]);
|
|
85
|
+
/**
|
|
86
|
+
* Az auto-ensure pre-action hook rákötése egy szerver-függő parancsra (a commander a hook-ot a parancs ÉS
|
|
87
|
+
* az al-parancsai action-jére is meghívja, így a `config get`/`import claude-mem` is fedett). Best-effort: ha
|
|
88
|
+
* az ensure elhasal, a parancs a SAJÁT `unreachable` hibáját adja (no-silent-failure, dsgn-008) — nem dob itt.
|
|
89
|
+
*/
|
|
90
|
+
function attachEnsureServerHook(command) {
|
|
91
|
+
command.hook('preAction', async () => {
|
|
92
|
+
try {
|
|
93
|
+
await serve_command_1.FAM_Serve_Util.ensureRunning();
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
/* best-effort auto-ensure — a tényleges elérhetetlenséget a parancs HTTP-rétege jelzi tiszta hibával */
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
72
100
|
/**
|
|
73
101
|
* A dsgn-010 §3 exit-kód-mapping rákötése egy FAM parancsra ÉS minden al-parancsára (rekurzívan): a
|
|
74
102
|
* commander használati/argument-hibái `2`-vel lépnek ki (a parancs-handler-ek `0`/`1`/`3` kódjait a
|
|
@@ -26,6 +26,11 @@ const GLOBAL_ONLY = [fam_config_level_type_enum_1.FAM_ConfigLevel.global];
|
|
|
26
26
|
*/
|
|
27
27
|
exports.SCAN_IGNORE_PATTERNS_DEFAULT = [
|
|
28
28
|
'**/node_modules/**', '**/.git/**', '**/build/**', '**/dist/**', '**/coverage/**',
|
|
29
|
+
// Workspace-szintű HARD-kizárás (user-direktíva 2026-06-24, KRITIKUS — „SEMMIT nem akarunk szkennelni, ami a
|
|
30
|
+
// Stale-ben van!!!"). Az archív/elavult projektek (`STALE-projects/`, pl. `fury`) + a sablon-junk
|
|
31
|
+
// (`TEMPLATE-projects/`, `{{PROJECT_NAME}}`) SOHA nem korpusz-anyag — még explicit cél-útvonalon sem. (A
|
|
32
|
+
// felderítés külön, garantáltan kihagyja őket: FAM_ProjectDiscovery_Util.SKIP_DIRS.)
|
|
33
|
+
'**/STALE-projects/**', '**/TEMPLATE-projects/**',
|
|
29
34
|
// Framework build-/futás-cache + generált kimenet (FAM-REV-056) — sosem forrás, gyakran minifikált/bináris-
|
|
30
35
|
// szerű (pl. az Angular `.angular/cache/.../babel-webpack` ezreket számláló, embed-timeout-ot okozó junk-ja).
|
|
31
36
|
'**/.angular/**', '**/.nx/**', '**/.cache/**', '**/.turbo/**', '**/.next/**', '**/.nuxt/**', '**/.svelte-kit/**',
|
|
@@ -45,6 +50,11 @@ exports.SCAN_IGNORE_PATTERNS_DEFAULT = [
|
|
|
45
50
|
// lowercase NEM matchelné a Unity `Logs/`-át).
|
|
46
51
|
'**/Library/**', '**/Temp/**', '**/Obj/**', '**/obj/**', '**/bin/**', '**/Logs/**', '**/Build/**', '**/Builds/**',
|
|
47
52
|
'**/.vs/**', '**/*.csproj', '**/*.sln', '**/*.meta', '**/*.unity', '**/*.prefab', '**/*.asset',
|
|
53
|
+
// Agent-/böngésző-state (lokális futás-melléktermék, SOHA nem korpusz-anyag): `.local-state` (pl. agent
|
|
54
|
+
// browser-automation profil) + Chromium-profil/cache — lockolt SQLite + bináris blobok (Login Data /
|
|
55
|
+
// Cookies / Web Data = SZEMÉLYES adat), olvashatatlanok + junk. (Lelet 2026-06-22: fdp-assistant/__agent/
|
|
56
|
+
// .local-state = 403 MB / 2452 fájl → 2208 `FAM-SCAN-READ-001`. Az `__agent` MAGA MARAD — csak a state junk.)
|
|
57
|
+
'**/.local-state/**', '**/browser-profiles/**', '**/Cache_Data/**',
|
|
48
58
|
// A `.fdpfamignore` SAJÁT MAGÁT kizárja: ignore-spec-ként OLVASSUK (FAM_FamIgnore_Util.loadFromDir,
|
|
49
59
|
// a walk/routing megkerülésével), de SOHA nem ingesteljük content-ként (a router amúgy is skip-elné).
|
|
50
60
|
'**/.fdpfamignore',
|
|
@@ -69,13 +79,35 @@ exports.CONFIG_CATALOG = {
|
|
|
69
79
|
description: 'A topK effektív felső korlátja (CCAP DEFAULT_PAGE_SIZE=50, cap 500).',
|
|
70
80
|
},
|
|
71
81
|
'read.maxTokens': {
|
|
72
|
-
type: 'number', default:
|
|
73
|
-
description: 'Az agent context védelme (max token
|
|
82
|
+
type: 'number', default: 4000, min: 256, max: 32000, integer: true, levels: ALL_LEVELS,
|
|
83
|
+
description: 'Az agent context védelme + a read-válasz INLINE-tartása (max token; ~4 char/token). A read-tool '
|
|
84
|
+
+ 'ÉRVÉNYESÍTI (FAM-REV: korábban dead-config volt → korlátlan hit-tartalom → a host fájlba mentette a választ). '
|
|
85
|
+
+ 'A budget felett a hit-tartalom levágódik + a túlcsorduló hit-ek elhagyva (`truncated:true`).',
|
|
86
|
+
},
|
|
87
|
+
'write.dedupWarnEnabled': {
|
|
88
|
+
type: 'boolean', default: true, levels: ALL_LEVELS,
|
|
89
|
+
description: 'Near-duplikátum-FIGYELMEZTETÉS íráskor (user-FR 2026-06-25): a `create` UTÁN a friss vektorral '
|
|
90
|
+
+ 'megkeresi a tár legközelebbi szomszédait; ha valamelyik a `write.dedupWarnThreshold` FÖLÖTT van, a write-'
|
|
91
|
+
+ 'válasz `warnings`-ába kerül („majdnem ugyanaz, mint X — érdemes UPDATE-elni"). NEM blokkol (a duplikáció-'
|
|
92
|
+
+ 'keletkezés megelőzése). `false` → nincs ellenőrzés (nulla extra munka, mert a friss vektor úgyis kész).',
|
|
93
|
+
},
|
|
94
|
+
'write.dedupWarnThreshold': {
|
|
95
|
+
type: 'number', default: 0.93, min: 0.5, max: 1.0, levels: ALL_LEVELS,
|
|
96
|
+
description: 'A near-duplikátum-warning koszinusz-küszöbe (0..1; default 0.93): e FÖLÖTT egy meglévő entry '
|
|
97
|
+
+ '„majdnem azonosnak" számít az új tartalommal → figyelmeztetés. Magasabb = csak a szinte-teljes egyezésre '
|
|
98
|
+
+ 'jelez; alacsonyabb = agresszívebb (több figyelmeztetés). CSAK jelzés, sosem blokkol.',
|
|
74
99
|
},
|
|
75
100
|
'read.minScore': {
|
|
76
101
|
type: 'number', default: 0.0, min: 0.0, max: 1.0, levels: ALL_LEVELS,
|
|
77
102
|
description: 'Minimum similarity-score küszöb (CCAP default 0 = nincs vágás).',
|
|
78
103
|
},
|
|
104
|
+
'read.hydrationWaitMs': {
|
|
105
|
+
type: 'number', default: 180000, min: 0, max: 600000, integer: true, levels: ALL_LEVELS,
|
|
106
|
+
description: 'A readiness-coordinator hidratálás-bevárás felső korlátja ms-ban: a `read`/`search` MEGVÁRJA a '
|
|
107
|
+
+ 'tár pool-jának (kezdő VAGY újra-) hidratálását ahelyett, hogy `FAM-VEC-SEARCH-001 pool ÜRES`-t dobna. '
|
|
108
|
+
+ '0 = nincs várakozás (azonnali hiba, ha még nem kész). Boot-kor a ~290k-vektor hidratálás percekig tarthat → '
|
|
109
|
+
+ 'a default 180s ezt fedi; time-out után tiszta „még hidratál, próbáld újra" hiba (a következő hívás már kész).',
|
|
110
|
+
},
|
|
79
111
|
'read.relevanceFloor': {
|
|
80
112
|
type: 'number', default: 0.5, min: 0.0, max: 1.0, levels: ALL_LEVELS,
|
|
81
113
|
description: 'Confidence-padló a nyers cosine score-on: a relevancia-JELZÉSEK (totalRelevant / '
|
|
@@ -87,11 +119,27 @@ exports.CONFIG_CATALOG = {
|
|
|
87
119
|
'read.importChunkWeight': {
|
|
88
120
|
type: 'number', default: 0.4, min: 0.0, max: 1.0, levels: ALL_LEVELS,
|
|
89
121
|
description: 'Az import-only chunkok (`chunkType:"imports"`) read-idejű rangsor-szorzója (FAM-REV-060). '
|
|
90
|
-
+ 'A szimbólum-név query-knél az import-sorok (`import { X } from "./y"`) magas cosine-t kapnak, de '
|
|
122
|
+
+ 'A szimbólum-név query-knél az import-sorok (`import { X: X } from "./y"`) magas cosine-t kapnak, de '
|
|
91
123
|
+ 'alacsony az ÉRTÉKük (csak import, nem definíció) → e szorzóval a `finalScore = score × weight × '
|
|
92
124
|
+ 'importChunkWeight` a definíció-chunkok ALÁ rangsorolja őket. READ-time (nincs re-embed); a nyers '
|
|
93
125
|
+ 'cosine score (relevancia-jelzések) NEM változik, csak a ranking. 1 = nincs csökkentés.',
|
|
94
126
|
},
|
|
127
|
+
'read.importSourceWeight': {
|
|
128
|
+
type: 'number', default: 0.85, min: 0.0, max: 1.0, levels: ALL_LEVELS,
|
|
129
|
+
description: 'Az import-FORRÁSÚ (`source.type:"import"`, pl. claude-mem-import) entry-k read-idejű rangsor-'
|
|
130
|
+
+ 'szorzója (R2, 2026-06-22 eval-lelet). A `memory`/`knowledge` táron a 33k import ZAJA elnyomta a kurált '
|
|
131
|
+
+ '(`manual`/`agent`/scan) tanulságokat → e szorzóval (`finalScore × importSourceWeight`) a kurált FÖLÉ '
|
|
132
|
+
+ 'rangsorol. READ-time (nincs re-embed); a nyers cosine NEM változik, csak a ranking. 1 = kikapcsolva.',
|
|
133
|
+
},
|
|
134
|
+
'read.keywordWeight': {
|
|
135
|
+
type: 'number', default: 0.6, min: 0.0, max: 5.0, levels: ALL_LEVELS,
|
|
136
|
+
description: 'Hibrid LEXIKAI (keyword/term-overlap) boost súlya (Improvement 2, eval-lelet 2026-06-25): a tiszta-'
|
|
137
|
+
+ 'vektor `read` ELVÉTI a literal-keyword választ (a koszinusz alacsony a query-megfogalmazásra; a `grep` '
|
|
138
|
+
+ 'azonnal hozza). A finalScore-t `× (1 + keywordWeight × lexicalScore)` szorzóval BOOST-only emeli, ahol a '
|
|
139
|
+
+ 'lexicalScore (0..1) a query disztinktív term-jeinek átfedése az entry szövegével (content+heading+forrás-út). '
|
|
140
|
+
+ 'A tiszta-szemantikus találat (lexical 0) SOHA nem süllyed (×1). READ-time (nincs re-embed). `0` = pure-vektor '
|
|
141
|
+
+ '(régi viselkedés). Default 0.6.',
|
|
142
|
+
},
|
|
95
143
|
'read.denseResultRatio': {
|
|
96
144
|
type: 'number', default: 2.0, min: 1.0, max: 50.0, levels: ALL_LEVELS,
|
|
97
145
|
description: 'Dense-jelzés ratio-kapuja: totalRelevant >= ratio*topK → denseResults (dsgn-005 §4.2).',
|
|
@@ -104,6 +152,77 @@ exports.CONFIG_CATALOG = {
|
|
|
104
152
|
type: 'string', default: 'weighted', enumValues: ['weighted', 'raw', 'recency'], levels: ALL_LEVELS,
|
|
105
153
|
description: 'Score-rendezés módja (súlyozott / nyers / recency).',
|
|
106
154
|
},
|
|
155
|
+
// --- 4.1b. Memory Activation Model — decay/reactivation/dormancy (fogyasztó: dsgn-013) ---
|
|
156
|
+
'memory.activationEnabled': {
|
|
157
|
+
type: 'boolean', default: true, levels: ALL_LEVELS,
|
|
158
|
+
description: 'Memory Activation Model (dsgn-013): a felidézés-alapú lazy-decay rangsor-szorzó a `memory` táron. '
|
|
159
|
+
+ 'A frissen/gyakran FELIDÉZETT memória felül-, a régóta érintetlen alul-rangsorol (de sosem tűnik el, '
|
|
160
|
+
+ 'csak kisebb a súlya). `false` → a decay-mentes (mai) viselkedés. CSAK a memory tárra hat.',
|
|
161
|
+
},
|
|
162
|
+
'memory.decayHalfLifeDays': {
|
|
163
|
+
type: 'number', default: 90, min: 1, max: 3650, integer: true, levels: ALL_LEVELS,
|
|
164
|
+
description: 'A recency-decay FELEZŐDÉSI ideje napban (Ebbinghaus-görbe, dsgn-013 §2): ennyi nap inaktivitás '
|
|
165
|
+
+ '(nem-felidézés) után a recency-faktor a felére csökken. Nagyobb = lassabb felejtés. Default 90.',
|
|
166
|
+
},
|
|
167
|
+
'memory.floorWeight': {
|
|
168
|
+
type: 'number', default: 0.05, min: 0, max: 1, levels: ALL_LEVELS,
|
|
169
|
+
description: 'A memória-decay ALSÓ KORLÁTJA (dsgn-013 §2): az effektív szorzó sosem esik ez alá → a régi memória '
|
|
170
|
+
+ 'lesüllyed a rangsorban, de a vektor-keresésben MÉG MEGTALÁLHATÓ (`> 0` → a `weight ≤ 0 → kizárt` szabályt '
|
|
171
|
+
+ 'nem lépi át). `0` = a degradáció akár teljesen elnyomhat (de a tartalom akkor is megmarad Mongo-ban).',
|
|
172
|
+
},
|
|
173
|
+
'memory.maxFrequencyBoost': {
|
|
174
|
+
type: 'number', default: 2.5, min: 1, max: 100, levels: ALL_LEVELS,
|
|
175
|
+
description: 'A felidézés-gyakoriság (frequency) rangsor-boost FELSŐ KORLÁTJA (eval-lelet 2026-06-25): a nyers '
|
|
176
|
+
+ '`1 + log2(1+recallCount)` KORLÁTLAN (gyakran-felidézett entry-re ~5×), ami multiplikatívan elnyomja a '
|
|
177
|
+
+ 'koszinusz-relevanciát (a „forró" de alig-releváns memória eltemeti a releváns „hideget"). Itt plafonozzuk. '
|
|
178
|
+
+ 'Default 2.5. Nagyobb = a gyakoriság erősebben rangsorol (a régi korlátlan viselkedéshez állítsd magasra).',
|
|
179
|
+
},
|
|
180
|
+
'memory.activationWeight': {
|
|
181
|
+
type: 'number', default: 0.35, min: 0, max: 1, levels: ALL_LEVELS,
|
|
182
|
+
description: 'Az aktiváció-szorzó TEMPER-súlya (α, eval-lelet 2026-06-25): a nyers decay-szorzót az 1 felé húzza '
|
|
183
|
+
+ '(`1 + α·(raw−1)`) → az aktiváció FINOMAN modulál, a koszinusz-RELEVANCIA dominál (de a recent/frequent még '
|
|
184
|
+
+ 'kissé előrébb). MINDKÉT véglet kompresszálódik: a „forró" entry nem boostolódik túl, ÉS a releváns „hideg" '
|
|
185
|
+
+ 'entry nem zuhan a floor-ra. `1` = a régi (temper-mentes) viselkedés. Default 0.35.',
|
|
186
|
+
},
|
|
187
|
+
'memory.reactivateOnRead': {
|
|
188
|
+
type: 'boolean', default: true, levels: ALL_LEVELS,
|
|
189
|
+
description: 'Reaktiváció-on-read (dsgn-013 §4): a `read` által VISSZAADOTT memory-hitek „új energiát kapnak" '
|
|
190
|
+
+ '(lastRecalledAt=most, recallCount++, dormant=false) — a felidézés megerősíti az emléket (feljebb rangsorol, '
|
|
191
|
+
+ 'és ha alvó volt, visszakerül a hot készletbe). Async, NEM blokkolja a read-et. `false` → nincs frissítés.',
|
|
192
|
+
},
|
|
193
|
+
'memory.dormancyEnabled': {
|
|
194
|
+
type: 'boolean', default: true, levels: GLOBAL_ONLY,
|
|
195
|
+
description: 'Dormancy (dsgn-013 §5): a régóta-nem-felidézett, ritkán-használt memóriák ALVÓ-vá jelölése — NEM '
|
|
196
|
+
+ 'hidratálódnak a hot LVS-poolba (RAM-/boot-spórolás), de COLD (Mongo) kereséssel elérhetők + megtaláláskor '
|
|
197
|
+
+ 'reaktiválódnak. SOHA nem törlés. `false` → minden memória hidratálódik (a mai viselkedés).',
|
|
198
|
+
},
|
|
199
|
+
'memory.dormantMinAgeDays': {
|
|
200
|
+
type: 'number', default: 180, min: 1, max: 3650, integer: true, levels: GLOBAL_ONLY,
|
|
201
|
+
description: 'A DORMANT-küszöb minimális inaktivitása napban (dsgn-013 §5.1): egy memória CSAK akkor lehet alvó, '
|
|
202
|
+
+ 'ha legalább ennyi napja nem idéztük fel (biztonsági alsó kor — a friss memória sosem alvó). Default 180.',
|
|
203
|
+
},
|
|
204
|
+
'memory.dormantMaxRecallCount': {
|
|
205
|
+
type: 'number', default: 2, min: 0, max: 1000, integer: true, levels: GLOBAL_ONLY,
|
|
206
|
+
description: 'A DORMANT-küszöb recall-gátja (dsgn-013 §5.1): a memória CSAK akkor lehet alvó, ha ennél kevesebbszer '
|
|
207
|
+
+ 'idéztük fel — a gyakran-használt (≥ ennyi recall) memória SOHA nem alvó. Default 2.',
|
|
208
|
+
},
|
|
209
|
+
'memory.coldSearchEnabled': {
|
|
210
|
+
type: 'boolean', default: true, levels: ALL_LEVELS,
|
|
211
|
+
description: 'Cold-search (dsgn-013 §5.3): ha egy memória-read a HOT poolból kevés találatot ad (a dormant entry-k '
|
|
212
|
+
+ 'nincsenek ott), a dormant készleten Mongo-oldali koszinusz-keresés fut (lassabb, de teljes), és a talált '
|
|
213
|
+
+ 'entry-ket REAKTIVÁLJA (visszakerülnek a hot készletbe). `false` → a dormant entry-k csak re-scan/aktiváláskor jönnek vissza.',
|
|
214
|
+
},
|
|
215
|
+
'memory.coldSearchMaxCandidates': {
|
|
216
|
+
type: 'number', default: 5000, min: 100, max: 100000, integer: true, levels: ALL_LEVELS,
|
|
217
|
+
description: 'A cold-search dormant-scan FELSŐ KORLÁTJA (biztonsági memóriakorlát, dsgn-013 §5.3): a Mongo-koszinusz '
|
|
218
|
+
+ 'legfeljebb ennyi dormant entry vektorát tölti be egy keresésnél. Default 5000.',
|
|
219
|
+
},
|
|
220
|
+
'memory.supersededPenalty': {
|
|
221
|
+
type: 'number', default: 0.25, min: 0, max: 1, levels: ALL_LEVELS,
|
|
222
|
+
description: 'A LEVÁLTOTT (superseded) memória ranking-PENALTYje (dsgn-013 §6): egy additív memory-fájl régi, már '
|
|
223
|
+
+ 'átírt tartalma (pl. kompaktált MEMORY.md korábbi bejegyzései) ezzel a szorzóval süllyed a rangsorban — a friss '
|
|
224
|
+
+ 'verzió fölébe kerül, de a régi MEGMARAD (cold-kereshető). `1` = nincs penalty; `0` = teljesen elnyomott (de megőrzött).',
|
|
225
|
+
},
|
|
107
226
|
// --- 4.2. Chunking — fájl-típusonként (fogyasztó: dsgn-004) ---
|
|
108
227
|
'chunk.ts.maxSize': {
|
|
109
228
|
type: 'number', default: 1500, min: 200, max: 8000, integer: true, levels: ALL_LEVELS,
|
|
@@ -236,10 +355,19 @@ exports.CONFIG_CATALOG = {
|
|
|
236
355
|
+ 'KÖZÖTT vár (az utolsó után nem), és a `dryRun` NEM vár (nincs valódi embed-munka).',
|
|
237
356
|
},
|
|
238
357
|
'scan.projectCooldownMs': {
|
|
239
|
-
type: 'number', default:
|
|
240
|
-
description: '
|
|
241
|
-
+ '
|
|
242
|
-
+ '
|
|
358
|
+
type: 'number', default: 10000, min: 0, max: 60000, integer: true, levels: ALL_LEVELS,
|
|
359
|
+
description: 'Cooldown (ms) a PROJEKTEK KÖZÉ a `scan-projects` soros multi-scan-jében — a sok-projektes '
|
|
360
|
+
+ '(L2/L6) beolvasás ne thrash-elje a gépet. Default `10000` (10s). FELTÉTELES (user-FR 2026-06-22): CSAK '
|
|
361
|
+
+ 'akkor vár, ha az ELŐZŐ projekt VALÓDI embed-munkát végzett (≥ `scan.projectCooldownMinChunks` új+módosult '
|
|
362
|
+
+ 'chunk) — ha minden `equal` volt (0 embed), nincs gép-terhelés → NINCS cooldown. `0` = teljesen KI. A CLI '
|
|
363
|
+
+ '`--cooldown <ms>` felülírja. (A projektek KÖZÖTT vár, az utolsó után nem.)',
|
|
364
|
+
},
|
|
365
|
+
'scan.projectCooldownMinChunks': {
|
|
366
|
+
type: 'number', default: 100, min: 0, max: 100000, integer: true, levels: ALL_LEVELS,
|
|
367
|
+
description: 'A feltételes projekt-cooldown küszöbe (user-FR 2026-06-22): a `scan-projects` CSAK akkor vár a '
|
|
368
|
+
+ 'projektek között, ha az előző projekt ennyi VAGY több új+módosult (ténylegesen embeddelt) chunkot termelt. '
|
|
369
|
+
+ 'Default `100` — a kis/`equal`-csak projektek után nincs felesleges szünet (a cooldown a helyi embed-terhelés '
|
|
370
|
+
+ 'tehermentesítésére van). `0` = mindig vár (ha a cooldownMs > 0).',
|
|
243
371
|
},
|
|
244
372
|
'scan.estimateMsPerChunk': {
|
|
245
373
|
type: 'number', default: 250, min: 1, max: 10000, integer: true, levels: ALL_LEVELS,
|
|
@@ -251,6 +379,20 @@ exports.CONFIG_CATALOG = {
|
|
|
251
379
|
description: 'A futás-közbeni scan-progress log min. időköze (ms) — a nagy scan haladását ennyente jelzi '
|
|
252
380
|
+ 'a konzolon (`[famIngest]` activity-sor). A végső 100% mindig kibocsátódik.',
|
|
253
381
|
},
|
|
382
|
+
'scan.stallThresholdMs': {
|
|
383
|
+
type: 'number', default: 120000, min: 5000, max: 1800000, integer: true, levels: ALL_LEVELS,
|
|
384
|
+
description: 'STALL-küszöb (ms, FEAT-008 Phase 5 — „jobb job kezelés"): ha egy FUTÓ scan-job ennyi ideje nem '
|
|
385
|
+
+ 'mutat haladást (sem per-target befejezés, sem within-target progress), a `status`-ban `stalled:true` jelenik '
|
|
386
|
+
+ 'meg. CSAK JELZÉS (nem szakítja meg automatikusan) — a user/CLI dönt (poll tovább / `cancel`). Az LM Studio '
|
|
387
|
+
+ 'crash/hang determinisztikus felismeréséhez. Default `120000` (2 perc).',
|
|
388
|
+
},
|
|
389
|
+
'scan.maxResumeCount': {
|
|
390
|
+
type: 'number', default: 5, min: 0, max: 100, integer: true, levels: ALL_LEVELS,
|
|
391
|
+
description: 'AUTO-RESUME cap (FEAT-008 Phase 5): egy megszakadt job-ot a szerver legfeljebb ennyiszer indít újra '
|
|
392
|
+
+ 'a startup-resume-on. Efölött a job `failed` (failureReason="resume-cap túllépve") — így egy folyton-elakadó '
|
|
393
|
+
+ '(pl. mindig ugyanazon a tartalmon összeomló) job nem indul újra a végtelenségig minden restartkor. `0` = '
|
|
394
|
+
+ 'soha ne resume-olj automatikusan.',
|
|
395
|
+
},
|
|
254
396
|
// --- 4.6. Reference / scope (fogyasztó: dsgn-002) ---
|
|
255
397
|
'reference.cacheTtlMs': {
|
|
256
398
|
type: 'number', default: 60000, min: 0, max: 3600000, integer: true, levels: GLOBAL_ONLY,
|
|
@@ -269,32 +411,9 @@ exports.CONFIG_CATALOG = {
|
|
|
269
411
|
type: 'number', default: 20, min: 1, max: 200, integer: true, levels: GLOBAL_TABLE,
|
|
270
412
|
description: 'Párhuzamos ingest flow-limit (CCAP DEFAULT_INGEST_FLOW_LIMIT=20, cap 200).',
|
|
271
413
|
},
|
|
272
|
-
//
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
description: 'A heap-guard (OOM-hibakezelés) be/ki. `true` (default): watchdog (heap-arány + GC-hányad) + a '
|
|
276
|
-
+ 'nehéz write-ek (scan/import/re-embed) load-shed-je critical nyomásnál + graceful-exit a near-limit '
|
|
277
|
-
+ 'zónában (a kriptikus exit-134 helyett). `false`: csak a crash-handlerek (uncaught/unhandled) aktívak.',
|
|
278
|
-
},
|
|
279
|
-
'memory.warnRatio': {
|
|
280
|
-
type: 'number', default: 0.70, min: 0.1, max: 1.0, levels: GLOBAL_ONLY,
|
|
281
|
-
description: 'Heap-arány (used/limit), ami fölött a guard `warn` szintet jelez (log; még nincs load-shed).',
|
|
282
|
-
},
|
|
283
|
-
'memory.shedRatio': {
|
|
284
|
-
type: 'number', default: 0.82, min: 0.1, max: 1.0, levels: GLOBAL_ONLY,
|
|
285
|
-
description: 'Heap-arány, ami fölött `critical` → a nehéz write-ek (scan/import/re-embed) 503-mal elutasítva '
|
|
286
|
-
+ '(a könnyű read/create/update fut tovább). A GC-hányad ≥60% is critical-t vált (mark-compact thrash-jel).',
|
|
287
|
-
},
|
|
288
|
-
'memory.exitRatio': {
|
|
289
|
-
type: 'number', default: 0.92, min: 0.1, max: 1.0, levels: GLOBAL_ONLY,
|
|
290
|
-
description: 'Heap-arány, ami fölött tartósan (GC-vel sem csökken) a guard TISZTÁN kilép (exit 137) → a `fam '
|
|
291
|
-
+ 'serve` ps1 prediktíven újraindít. A kriptikus „Ineffective mark-compacts" exit-134 elkerülése. shed < exit ajánlott.',
|
|
292
|
-
},
|
|
293
|
-
'memory.pollMs': {
|
|
294
|
-
type: 'number', default: 3000, min: 500, max: 60000, integer: true, levels: GLOBAL_ONLY,
|
|
295
|
-
description: 'A heap-watchdog mintavételi időköze (ms) + a GC-hányad gördülő-ablaka. Kisebb = gyorsabb '
|
|
296
|
-
+ 'reakció a hirtelen növekedésre, több CPU. 3000 = jó alapérték.',
|
|
297
|
-
},
|
|
414
|
+
// (Az OOM-hibakezelés/heap-guard configja a BEDROCK `DyNTS_global_settings.memoryGuard`-ban van — NEM FAM-config:
|
|
415
|
+
// a bedrock `DyNTS_MemoryGuard`-ot a base App auto-installálja, a FAM a thresholdokat az `overrideDynamoNTSGlobalSettings`-ben
|
|
416
|
+
// állítja. Ezért nincs FAM `memory.*` config-kulcs.)
|
|
298
417
|
'patterns.defaultWeight': {
|
|
299
418
|
type: 'number', default: 5, min: 0, levels: [fam_config_level_type_enum_1.FAM_ConfigLevel.table], tableOnly: fam_table_type_enum_1.FAM_Table.codingPatterns,
|
|
300
419
|
description: 'A coding_patterns tár default retrieval-súlya (CCAP weight 5; csak coding_patterns).',
|
|
@@ -111,6 +111,8 @@ exports.FAM_ERROR_CODES = {
|
|
|
111
111
|
// --- Vector (FAM-VEC-*) ---
|
|
112
112
|
/** Mongo→in-memory pool hidratálás sikertelen boot-on (BFR-AM-001). */
|
|
113
113
|
vecHydrate: 'FAM-VEC-HYDRATE-001',
|
|
114
|
+
/** A hidratálás-bevárás (readiness-coordinator) hibája: a tár hidratálása MEGBUKOTT vagy a várakozás time-outolt. */
|
|
115
|
+
vecHydrateWait: 'FAM-VEC-HYDRATE-002',
|
|
114
116
|
/** vectorSearch hiba (dimenzió / üres pool / searchMode). */
|
|
115
117
|
vecSearch: 'FAM-VEC-SEARCH-001',
|
|
116
118
|
/** contentVector Mongo-persist sikertelen (BFR-AM-005). */
|