@futdevpro/fdp-agent-memory 0.1.0

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 (117) hide show
  1. package/README.md +345 -0
  2. package/build/package.json +96 -0
  3. package/build/src/_assets/mcp-client-config/README.md +29 -0
  4. package/build/src/_assets/mcp-client-config/claude_desktop_config.json +15 -0
  5. package/build/src/_assets/mcp-client-config/mcp.json +15 -0
  6. package/build/src/_collections/config-catalog.const.js +180 -0
  7. package/build/src/_collections/config-error-codes.const.js +30 -0
  8. package/build/src/_collections/config-presets.const.js +25 -0
  9. package/build/src/_collections/error-banners.const.js +100 -0
  10. package/build/src/_collections/error-codes.const.js +150 -0
  11. package/build/src/_collections/fam-db-models.const.js +37 -0
  12. package/build/src/_collections/fam-entry-bootstrap.util.js +80 -0
  13. package/build/src/_collections/fam-error-context.util.js +90 -0
  14. package/build/src/_collections/fam-error-factory.util.js +64 -0
  15. package/build/src/_enums/fam-config-level.type-enum.js +15 -0
  16. package/build/src/_enums/fam-table.type-enum.js +20 -0
  17. package/build/src/_integration-tests/_helpers/fam-integration-test-setup.util.js +105 -0
  18. package/build/src/_models/data-models/fam-codebase.data-model.js +51 -0
  19. package/build/src/_models/data-models/fam-coding-patterns.data-model.js +58 -0
  20. package/build/src/_models/data-models/fam-config.data-model.js +68 -0
  21. package/build/src/_models/data-models/fam-documents.data-model.js +53 -0
  22. package/build/src/_models/data-models/fam-entry-base-properties.const.js +43 -0
  23. package/build/src/_models/data-models/fam-entry.data-model.js +81 -0
  24. package/build/src/_models/data-models/fam-error.data-model.js +88 -0
  25. package/build/src/_models/data-models/fam-ingest-run.data-model.js +74 -0
  26. package/build/src/_models/data-models/fam-knowledge.data-model.js +48 -0
  27. package/build/src/_models/data-models/fam-memory.data-model.js +55 -0
  28. package/build/src/_models/data-models/fam-reference.data-model.js +67 -0
  29. package/build/src/_models/data-models/fam-rules.data-model.js +51 -0
  30. package/build/src/_models/data-models/fam-scope.data-model.js +52 -0
  31. package/build/src/_models/interfaces/fam-common.interface.js +23 -0
  32. package/build/src/_models/interfaces/fam-config.interface.js +2 -0
  33. package/build/src/_models/interfaces/fam-error.interface.js +2 -0
  34. package/build/src/_modules/embedding/_collections/fam-embedding-pricing.const.js +22 -0
  35. package/build/src/_modules/embedding/_collections/fam-store-registry.const.js +63 -0
  36. package/build/src/_modules/embedding/_models/interfaces/fam-embedding-cost.interface.js +10 -0
  37. package/build/src/_modules/embedding/_models/interfaces/fam-embedding-provider.interface.js +2 -0
  38. package/build/src/_modules/embedding/_models/interfaces/fam-resolved-provider.interface.js +2 -0
  39. package/build/src/_modules/embedding/_services/fam-embedding-bootstrap.control-service.js +52 -0
  40. package/build/src/_modules/embedding/_services/fam-embedding-cost.control-service.js +175 -0
  41. package/build/src/_modules/embedding/_services/fam-embedding-pipeline.control-service.js +202 -0
  42. package/build/src/_modules/embedding/_services/fam-embedding-preset.control-service.js +66 -0
  43. package/build/src/_modules/embedding/_services/fam-embedding.control-service.js +253 -0
  44. package/build/src/_modules/embedding/_services/fam-entry.data-service.js +64 -0
  45. package/build/src/_modules/embedding/_services/fam-lmstudio-embedding.provider.js +112 -0
  46. package/build/src/_modules/embedding/_services/fam-mock-embedding.provider.js +64 -0
  47. package/build/src/_modules/embedding/_services/fam-openai-embedding.provider.js +64 -0
  48. package/build/src/_modules/embedding/_services/fam-vector-search.control-service.js +244 -0
  49. package/build/src/_modules/embedding/index.js +40 -0
  50. package/build/src/_modules/ingest/_collections/fam-content-hash.util.js +35 -0
  51. package/build/src/_modules/ingest/_collections/fam-file-routing.util.js +95 -0
  52. package/build/src/_modules/ingest/_collections/fam-glob-match.util.js +84 -0
  53. package/build/src/_modules/ingest/_collections/fam-md-chunker.util.js +164 -0
  54. package/build/src/_modules/ingest/_collections/fam-scan-path.util.js +91 -0
  55. package/build/src/_modules/ingest/_collections/fam-secret-exclude.util.js +54 -0
  56. package/build/src/_modules/ingest/_collections/fam-sliding-chunker.util.js +76 -0
  57. package/build/src/_modules/ingest/_collections/fam-ts-chunker.util.js +316 -0
  58. package/build/src/_modules/ingest/_models/interfaces/fam-ingest.interface.js +2 -0
  59. package/build/src/_modules/ingest/_services/fam-chunker.control-service.js +114 -0
  60. package/build/src/_modules/ingest/_services/fam-delta-compare.util.js +74 -0
  61. package/build/src/_modules/ingest/_services/fam-ingest-run.data-service.js +85 -0
  62. package/build/src/_modules/ingest/_services/fam-ingest.control-service.js +384 -0
  63. package/build/src/_modules/ingest/_services/fam-scan.control-service.js +211 -0
  64. package/build/src/_modules/ingest/index.js +46 -0
  65. package/build/src/_modules/mcp/_collections/fam-core-tools.const.js +186 -0
  66. package/build/src/_modules/mcp/_models/interfaces/fam-mcp.interface.js +31 -0
  67. package/build/src/_modules/mcp/_services/fam-capabilities-tool.service.js +111 -0
  68. package/build/src/_modules/mcp/_services/fam-capability-registry.service.js +1180 -0
  69. package/build/src/_modules/mcp/_services/fam-mcp-adapter.service.js +123 -0
  70. package/build/src/_modules/mcp/_services/fam-mcp-server.service.js +69 -0
  71. package/build/src/_modules/mcp/_services/fam-read-tool.service.js +99 -0
  72. package/build/src/_modules/mcp/_services/fam-write-tool.service.js +460 -0
  73. package/build/src/_modules/mcp/index.js +35 -0
  74. package/build/src/_modules/migration/_collections/fam-claude-mem-normalize.util.js +166 -0
  75. package/build/src/_modules/migration/_collections/fam-import-content-hash.util.js +38 -0
  76. package/build/src/_modules/migration/_collections/fam-target-mapping.util.js +90 -0
  77. package/build/src/_modules/migration/_enums/fam-claude-mem-source.type-enum.js +20 -0
  78. package/build/src/_modules/migration/_models/interfaces/fam-claude-mem.interface.js +26 -0
  79. package/build/src/_modules/migration/_services/fam-claude-mem-export-reader.service.js +134 -0
  80. package/build/src/_modules/migration/_services/fam-claude-mem-import.control-service.js +533 -0
  81. package/build/src/_modules/migration/_services/fam-claude-mem-sqlite-reader.service.js +144 -0
  82. package/build/src/_modules/migration/_services/fam-claude-mem-worker-reader.service.js +115 -0
  83. package/build/src/_modules/migration/_services/fam-import-dedup.data-service.js +102 -0
  84. package/build/src/_modules/migration/index.js +38 -0
  85. package/build/src/_modules/retrieval/_models/interfaces/fam-retrieval.interface.js +2 -0
  86. package/build/src/_modules/retrieval/_services/fam-retrieval-candidate.data-service.js +67 -0
  87. package/build/src/_modules/retrieval/_services/fam-retrieval-suggestions.util.js +182 -0
  88. package/build/src/_modules/retrieval/_services/fam-retrieval.control-service.js +282 -0
  89. package/build/src/_modules/retrieval/index.js +22 -0
  90. package/build/src/_modules/scope-reference/_collections/fam-fuzzy-match.util.js +86 -0
  91. package/build/src/_modules/scope-reference/_collections/fam-scope-normalize.util.js +47 -0
  92. package/build/src/_modules/scope-reference/_models/interfaces/fam-reference-resolution.interface.js +2 -0
  93. package/build/src/_modules/scope-reference/_models/interfaces/fam-resolution-trace.interface.js +2 -0
  94. package/build/src/_modules/scope-reference/_services/fam-reference.data-service.js +179 -0
  95. package/build/src/_modules/scope-reference/_services/fam-scope-resolver.control-service.js +473 -0
  96. package/build/src/_modules/scope-reference/_services/fam-scope.data-service.js +215 -0
  97. package/build/src/_modules/scope-reference/index.js +26 -0
  98. package/build/src/_routes/server/api/api.controller.js +400 -0
  99. package/build/src/_routes/server/client-app/client-app.control-service.js +132 -0
  100. package/build/src/_routes/server/client-app/client-app.controller.js +35 -0
  101. package/build/src/_routes/server/config/config.control-service.js +476 -0
  102. package/build/src/_routes/server/config/config.data-service.js +49 -0
  103. package/build/src/_routes/server/errors/errors.control-service.js +123 -0
  104. package/build/src/_routes/server/errors/errors.controller.js +65 -0
  105. package/build/src/_routes/server/errors/errors.data-service.js +80 -0
  106. package/build/src/_routes/server/server-status/server-status.control-service.js +19 -0
  107. package/build/src/_routes/server/server-status/server-status.controller.js +39 -0
  108. package/build/src/app.server.js +122 -0
  109. package/build/src/environments/environment.js +20 -0
  110. package/build/src/index.js +18 -0
  111. package/client-dist/chunk-GHKRM4SM.js +1 -0
  112. package/client-dist/chunk-LMTL7GA3.js +575 -0
  113. package/client-dist/index.html +17 -0
  114. package/client-dist/main-2KWB3QYK.js +2 -0
  115. package/client-dist/polyfills-HGDOEU5L.js +2 -0
  116. package/client-dist/styles-3J7JD5YE.css +1 -0
  117. package/package.json +96 -0
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CONFIG_CATALOG = exports.SCAN_IGNORE_PATTERNS_DEFAULT = void 0;
4
+ const fam_table_type_enum_1 = require("../_enums/fam-table.type-enum");
5
+ const fam_config_level_type_enum_1 = require("../_enums/fam-config-level.type-enum");
6
+ /**
7
+ * `CONFIG_CATALOG` — a hangolható config-kulcsok **single source of truth**-ja (dsgn-007 §4).
8
+ *
9
+ * Minden kulcshoz: `type` + reasonable `default` + tartomány/enum + a hozzá értelmezett `levels`.
10
+ * A default-ok grounding-forrása a CCAP RAG-konstansok (dsgn-007 §4, grounding [C]); a fogyasztó-MP-k
11
+ * (dsgn-004/005/006) a `resolve`-ot hívják (NEM hard-code-olnak), így a default EGY helyen él.
12
+ *
13
+ * A katalógus bővíthető, de minden új kulcsnak ugyanazt a leírást kell adnia (`type`/`default`/
14
+ * tartomány/`levels`). Ismeretlen kulcs `set`-je → `FAM-CONFIG-SET-001` (dsgn-007 §7.1).
15
+ */
16
+ /** A három feloldási-szint összes kulcshoz (a leggyakoribb `levels` érték). */
17
+ const ALL_LEVELS = [fam_config_level_type_enum_1.FAM_ConfigLevel.global, fam_config_level_type_enum_1.FAM_ConfigLevel.table, fam_config_level_type_enum_1.FAM_ConfigLevel.scope];
18
+ /** Csak global + table (a scope-szinten NEM értelmezett kulcsoknak). */
19
+ const GLOBAL_TABLE = [fam_config_level_type_enum_1.FAM_ConfigLevel.global, fam_config_level_type_enum_1.FAM_ConfigLevel.table];
20
+ /** Csak global (a kizárólag rendszer-szintű kulcsoknak — pl. `reference.cacheTtlMs`). */
21
+ const GLOBAL_ONLY = [fam_config_level_type_enum_1.FAM_ConfigLevel.global];
22
+ /**
23
+ * `scan.ignorePatterns` biztonsági default (dsgn-007 §4.5). A `.env` / `*.pem` / `*.key` /
24
+ * `secrets/**` kizárás **biztonsági alap** (a scan ezeket alapból NEM dolgozza fel). A scan-input
25
+ * `exclude`-ja ehhez **hozzáadódik** (nem felülír) — a scan-réteg (MP-4) felelőssége.
26
+ */
27
+ exports.SCAN_IGNORE_PATTERNS_DEFAULT = [
28
+ '**/node_modules/**', '**/.git/**', '**/build/**', '**/dist/**', '**/coverage/**',
29
+ '**/*.min.js', '**/*.map', '**/.env', '**/.env.*', '**/*.pem', '**/*.key',
30
+ '**/*.secret', '**/secrets/**', '**/*.lock', '**/package-lock.json', '**/pnpm-lock.yaml',
31
+ ];
32
+ /**
33
+ * A teljes katalógus (dsgn-007 §4). A kulcsok dotted-formában; a `FAM_ConfigKey` típus ebből
34
+ * származik (a `set`/`resolve` típusosan csak katalógus-kulcsot fogad, nem `string`).
35
+ */
36
+ exports.CONFIG_CATALOG = {
37
+ // --- 4.1. Read / retrieval limitek (fogyasztó: dsgn-005) ---
38
+ 'read.topK': {
39
+ type: 'number', default: 5, min: 1, max: 200, integer: true, levels: ALL_LEVELS,
40
+ description: 'Alap visszaadott találat-szám (CCAP DEFAULT_TOP_K=5).',
41
+ },
42
+ 'read.maxResults': {
43
+ type: 'number', default: 50, min: 1, max: 500, integer: true, levels: ALL_LEVELS,
44
+ description: 'A topK effektív felső korlátja (CCAP DEFAULT_PAGE_SIZE=50, cap 500).',
45
+ },
46
+ 'read.maxTokens': {
47
+ type: 'number', default: 6000, min: 256, max: 32000, integer: true, levels: ALL_LEVELS,
48
+ description: 'Az agent context védelme (max token a read-válaszban).',
49
+ },
50
+ 'read.minScore': {
51
+ type: 'number', default: 0.0, min: 0.0, max: 1.0, levels: ALL_LEVELS,
52
+ description: 'Minimum similarity-score küszöb (CCAP default 0 = nincs vágás).',
53
+ },
54
+ 'read.denseResultRatio': {
55
+ type: 'number', default: 2.0, min: 1.0, max: 50.0, levels: ALL_LEVELS,
56
+ description: 'Dense-jelzés ratio-kapuja: totalRelevant >= ratio*topK → denseResults (dsgn-005 §4.2).',
57
+ },
58
+ 'read.denseResultAbsMin': {
59
+ type: 'number', default: 25, min: 1, max: 500, integer: true, levels: ALL_LEVELS,
60
+ description: 'Dense-jelzés abszolút kapuja: totalRelevant >= absMin → denseResults (OR a ratio-val).',
61
+ },
62
+ 'read.scoreOrder': {
63
+ type: 'string', default: 'weighted', enumValues: ['weighted', 'raw', 'recency'], levels: ALL_LEVELS,
64
+ description: 'Score-rendezés módja (súlyozott / nyers / recency).',
65
+ },
66
+ // --- 4.2. Chunking — fájl-típusonként (fogyasztó: dsgn-004) ---
67
+ 'chunk.ts.maxSize': {
68
+ type: 'number', default: 1500, min: 200, max: 8000, integer: true, levels: ALL_LEVELS,
69
+ description: 'TypeScript chunker max chunk-méret (CCAP 1500).',
70
+ },
71
+ 'chunk.ts.overlap': {
72
+ type: 'number', default: 100, min: 0, max: 1000, integer: true, levels: ALL_LEVELS,
73
+ description: 'TypeScript chunker overlap (CCAP 100).',
74
+ },
75
+ 'chunk.ts.minSize': {
76
+ type: 'number', default: 50, min: 0, max: 2000, integer: true, levels: ALL_LEVELS,
77
+ description: 'TypeScript chunker minimum chunk-méret (CCAP 50).',
78
+ },
79
+ 'chunk.md.maxSize': {
80
+ type: 'number', default: 1200, min: 200, max: 8000, integer: true, levels: ALL_LEVELS,
81
+ description: 'Markdown chunker max chunk-méret (CCAP 1200).',
82
+ },
83
+ 'chunk.md.overlap': {
84
+ type: 'number', default: 150, min: 0, max: 1000, integer: true, levels: ALL_LEVELS,
85
+ description: 'Markdown chunker overlap (CCAP 150).',
86
+ },
87
+ 'chunk.md.minSize': {
88
+ type: 'number', default: 80, min: 0, max: 2000, integer: true, levels: ALL_LEVELS,
89
+ description: 'Markdown chunker minimum chunk-méret (CCAP 80).',
90
+ },
91
+ 'chunk.generic.maxSize': {
92
+ type: 'number', default: 1200, min: 200, max: 8000, integer: true, levels: ALL_LEVELS,
93
+ description: 'Sliding-window chunker max chunk-méret (CCAP 1200).',
94
+ },
95
+ 'chunk.generic.overlap': {
96
+ type: 'number', default: 150, min: 0, max: 1000, integer: true, levels: ALL_LEVELS,
97
+ description: 'Sliding-window chunker overlap (CCAP 150).',
98
+ },
99
+ 'chunk.generic.minSize': {
100
+ type: 'number', default: 50, min: 0, max: 2000, integer: true, levels: ALL_LEVELS,
101
+ description: 'Sliding-window fallback-küszöb (CCAP 50).',
102
+ },
103
+ 'chunk.fallbackWholeFileUnder': {
104
+ type: 'number', default: 50, min: 0, max: 2000, integer: true, levels: ALL_LEVELS,
105
+ description: 'E méret alatt a fájl 1 chunk fallback jelzéssel (CCAP).',
106
+ },
107
+ // --- 4.3. Embedding — provider + modell (fogyasztó: dsgn-006) ---
108
+ 'embedding.provider': {
109
+ type: 'string', default: 'lmstudio', enumValues: ['openai', 'lmstudio', 'mock'], levels: ALL_LEVELS,
110
+ description: 'Embedding-provider választás (a secret/baseUrl ENV-ből, dsgn-007 §6). DEFAULT: lmstudio '
111
+ + '(lokális, ingyenes, offline — a local-first filozófiához; az openai opcionális, kulccsal). A '
112
+ + '`mock` egy determinisztikus, külső-függőség-mentes test/offline double (BFR-AM-008) — e2e/CI-hez '
113
+ + '(NEM szemantikus keresésre).',
114
+ },
115
+ 'embedding.model': {
116
+ type: 'string', default: 'nomic-embed-text-v1.5', levels: ALL_LEVELS,
117
+ description: 'Embedding-modell azonosító. DEFAULT: nomic-embed-text-v1.5 (LM Studio default; SSOT dsgn-006). '
118
+ + 'OpenAI-providerrel pl. text-embedding-3-large.',
119
+ },
120
+ 'embedding.dimensions': {
121
+ type: 'number-or-null', default: null, min: 64, max: 4096, integer: true, levels: ALL_LEVELS,
122
+ description: 'Embedding-dimenzió; null = a modell natív dimenziója.',
123
+ },
124
+ 'embedding.batchSize': {
125
+ type: 'number', default: 64, min: 1, max: 512, integer: true, levels: ALL_LEVELS,
126
+ description: 'Embed-batch méret (token-/rate-limit védelem).',
127
+ },
128
+ // --- 4.4. Embedding cost — cap + warn (fogyasztó: dsgn-006 / dsgn-008) ---
129
+ 'embedding.costCapUsd': {
130
+ type: 'number-or-null', default: null, min: 0, levels: ALL_LEVELS,
131
+ description: 'Embedding cost-plafon USD-ben; null = nincs plafon; túllépésnél a hívás blokkolva.',
132
+ },
133
+ 'embedding.costCapWarnRatio': {
134
+ type: 'number', default: 0.8, min: 0.0, max: 1.0, levels: ALL_LEVELS,
135
+ description: 'A costCapUsd hányadánál vált sárga warn-t (dsgn-006 §7).',
136
+ },
137
+ 'embedding.costWarnUsd': {
138
+ type: 'number-or-null', default: null, min: 0, levels: ALL_LEVELS,
139
+ description: 'Opcionális abszolút warn-küszöb (<= costCapUsd ha mindkettő adott).',
140
+ },
141
+ 'embedding.costWindow': {
142
+ type: 'string', default: 'run', enumValues: ['run', 'day', 'total'], levels: ALL_LEVELS,
143
+ description: 'Melyik aggregátumra vonatkozik a cap/warn (futtatás/nap/összes).',
144
+ },
145
+ // --- 4.5. Scan — ignore patterns + biztonság (fogyasztó: dsgn-004) ---
146
+ 'scan.ignorePatterns': {
147
+ type: 'string[]', default: exports.SCAN_IGNORE_PATTERNS_DEFAULT, levels: ALL_LEVELS,
148
+ description: 'Secret-/zaj-kizárás glob-minták; a scan-input exclude-ja HOZZÁADÓDIK (nem felülír).',
149
+ },
150
+ 'scan.maxFileSizeBytes': {
151
+ type: 'number', default: 1048576, min: 1024, max: 52428800, integer: true, levels: ALL_LEVELS,
152
+ description: 'E méret felett a fájl kihagyva (1 MB default).',
153
+ },
154
+ 'scan.followSymlinks': {
155
+ type: 'boolean', default: false, levels: ALL_LEVELS,
156
+ description: 'Symlink-követés (path-traversal védelem, dsgn-004).',
157
+ },
158
+ // --- 4.6. Reference / scope (fogyasztó: dsgn-002) ---
159
+ 'reference.cacheTtlMs': {
160
+ type: 'number', default: 60000, min: 0, max: 3600000, integer: true, levels: GLOBAL_ONLY,
161
+ description: 'Reference-cache TTL ms-ben (CCAP REFERENCE_CACHE_TTL_MS=60000).',
162
+ },
163
+ 'reference.fuzzyMinScore': {
164
+ type: 'number', default: 0.75, min: 0.0, max: 1.0, levels: GLOBAL_ONLY,
165
+ description: 'Fuzzy alias-match konfidencia-küszöb (dsgn-002 §3.1).',
166
+ },
167
+ 'reference.autoCreateScope': {
168
+ type: 'boolean', default: true, levels: GLOBAL_TABLE,
169
+ description: 'Write-on hiányzó (biztos) scope auto-regisztráció (dsgn-002 §3.2).',
170
+ },
171
+ // --- 4.7. Ingest flow-limit (fogyasztó: dsgn-004) ---
172
+ 'ingest.flowLimit': {
173
+ type: 'number', default: 20, min: 1, max: 200, integer: true, levels: GLOBAL_TABLE,
174
+ description: 'Párhuzamos ingest flow-limit (CCAP DEFAULT_INGEST_FLOW_LIMIT=20, cap 200).',
175
+ },
176
+ 'patterns.defaultWeight': {
177
+ 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,
178
+ description: 'A coding_patterns tár default retrieval-súlya (CCAP weight 5; csak coding_patterns).',
179
+ },
180
+ };
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FAM_CONFIG_ERROR_CODES = void 0;
4
+ /**
5
+ * Config-réteg hibakódok (dsgn-007 §7.1 + dsgn-008 §3 `FAM-CFG-*`). NEM coinolunk új kódot:
6
+ * a `set`-validáció kódjai a dsgn-007 §7 SSOT-ból (`FAM-CONFIG-SET-001..006`), a resolve/preset
7
+ * kódok a dsgn-008 §3 katalógusból (`FAM-CFG-RESOLVE-001`, `FAM-CFG-PRESET-001`).
8
+ *
9
+ * A `<SVC>` réteg-kód a config-rétegen `FAM-CFG` (dsgn-008 §3 táblázat); a `set`-validáció a
10
+ * dsgn-007 §7-ben rögzített `FAM-CONFIG-SET` névteret használja (a két névtér a két doc szerint
11
+ * párhuzamosan él; mindkettő SSOT a saját rétegére).
12
+ */
13
+ exports.FAM_CONFIG_ERROR_CODES = {
14
+ /** Ismeretlen kulcs a `set`-en (a katalógusban nincs; hasonló-kulcs javaslat — dsgn-007 §7.1). */
15
+ setUnknownKey: 'FAM-CONFIG-SET-001',
16
+ /** Típus-eltérés (várt típus vs. kapott — dsgn-007 §7.1). */
17
+ setTypeMismatch: 'FAM-CONFIG-SET-002',
18
+ /** Tartomány-/enum-sértés (a megengedett tartomány/enum felsorolva — dsgn-007 §7.1). */
19
+ setRangeViolation: 'FAM-CONFIG-SET-003',
20
+ /** Cross-field invariáns-sértés (topK<=maxResults, overlap<maxSize, costWarn<=costCap — dsgn-007 §7.1). */
21
+ setCrossFieldViolation: 'FAM-CONFIG-SET-004',
22
+ /** Szint-sértés (a kulcs nem értelmezett a kért level-en / tableOnly — dsgn-007 §7.1). */
23
+ setLevelViolation: 'FAM-CONFIG-SET-005',
24
+ /** Scope-azonosítás: a level='scope' scopeId nem létező/aktív FAM_Scope (dsgn-007 §7.1, dsgn-002). */
25
+ setScopeNotFound: 'FAM-CONFIG-SET-006',
26
+ /** Precedencia-feloldás hiba (global<table<scope — dsgn-008 §3). */
27
+ resolve: 'FAM-CFG-RESOLVE-001',
28
+ /** Ismeretlen / hiányos embedding-preset (dsgn-008 §3). */
29
+ preset: 'FAM-CFG-PRESET-001',
30
+ };
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CONFIG_PRESETS = void 0;
4
+ /**
5
+ * A két beépített preset (dsgn-007 §5). `openai-recommended` a magasabb minőségű OpenAI modellel;
6
+ * `lmstudio-recommended` a lokális, olcsó LM Studio modellel (pl. nagy `codebase` tárhoz).
7
+ */
8
+ exports.CONFIG_PRESETS = {
9
+ 'openai-recommended': {
10
+ 'embedding.provider': 'openai',
11
+ 'embedding.model': 'text-embedding-3-large',
12
+ 'embedding.dimensions': null, // natív 3072 (dsgn-006)
13
+ 'embedding.batchSize': 64,
14
+ 'read.minScore': 0.0,
15
+ 'read.topK': 5,
16
+ },
17
+ 'lmstudio-recommended': {
18
+ 'embedding.provider': 'lmstudio',
19
+ 'embedding.model': 'nomic-embed-text-v1.5', // OpenAI-kompatibilis lokális endpoint (dsgn-006)
20
+ 'embedding.dimensions': 768,
21
+ 'embedding.batchSize': 32,
22
+ 'read.minScore': 0.0,
23
+ 'read.topK': 5,
24
+ },
25
+ };
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FAM_BANNER_DESCRIPTORS = exports.FAM_BannerCase = exports.FAM_Banner_Util = exports.FAM_BannerColor = void 0;
4
+ const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
5
+ const error_codes_const_1 = require("./error-codes.const");
6
+ /**
7
+ * Felhasználói banner-szerződés (dsgn-008 §5, SP-8.3). Itt az **adat/szerződés** él: a level→szín
8
+ * leképezés + a három nevesített banner-eset trigger + üzenet-payload deskriptora. A **render** az
9
+ * adott felület-MP-ben (banner + `/errors` UI → MP-10, capability → MP-6, `errors` CLI → MP-9) — ez
10
+ * a const a render-bemenet (a trigger→payload) SSOT-ja, hogy a felület csak megjeleníti.
11
+ */
12
+ /**
13
+ * Banner-szín (dsgn-008 §5): `user`/`warning` → sárga (nem-blokkoló), `error`/`critical`/`fatal` →
14
+ * piros. Enum-konvenció: key camelCase, value kebab-case.
15
+ */
16
+ var FAM_BannerColor;
17
+ (function (FAM_BannerColor) {
18
+ FAM_BannerColor["yellow"] = "yellow";
19
+ FAM_BannerColor["red"] = "red";
20
+ })(FAM_BannerColor || (exports.FAM_BannerColor = FAM_BannerColor = {}));
21
+ /**
22
+ * Banner-domén segéd (dependency-mentes statikus util — FDP-konvenció: nincs top-level export-function).
23
+ */
24
+ class FAM_Banner_Util {
25
+ /**
26
+ * A `DyFM_ErrorLevel` → banner-szín leképezés (dsgn-008 §5). A `user`/`warning`/`info`/`debug`/
27
+ * `known` nem-blokkoló → **sárga**; az `error`/`serious`/`critical`/`fatal`/`systemUnreachable`/
28
+ * `buildFailure` → **piros**.
29
+ */
30
+ static colorForLevel(level) {
31
+ switch (level) {
32
+ case fsm_dynamo_1.DyFM_ErrorLevel.user:
33
+ case fsm_dynamo_1.DyFM_ErrorLevel.warning:
34
+ case fsm_dynamo_1.DyFM_ErrorLevel.info:
35
+ case fsm_dynamo_1.DyFM_ErrorLevel.debug:
36
+ case fsm_dynamo_1.DyFM_ErrorLevel.known:
37
+ return FAM_BannerColor.yellow;
38
+ default:
39
+ return FAM_BannerColor.red;
40
+ }
41
+ }
42
+ }
43
+ exports.FAM_Banner_Util = FAM_Banner_Util;
44
+ /**
45
+ * A három nevesített banner-eset azonosítója (dsgn-008 §5; konzultáció §12.2). A trigger a
46
+ * megfelelő `errorCode` kibocsátása; a render-MP a `descriptorId`-re kapcsol.
47
+ */
48
+ var FAM_BannerCase;
49
+ (function (FAM_BannerCase) {
50
+ /** Sync lefutott — 0 fájl matchelt (sárga, info, NEM hiba). */
51
+ FAM_BannerCase["syncZeroMatch"] = "sync-zero-match";
52
+ /** Embedding nincs konfigurálva (piros bootstrap-skip + settings-link). */
53
+ FAM_BannerCase["embeddingNotConfigured"] = "embedding-not-configured";
54
+ /** Költség-plafon közelít (sárga a blokk előtt; cap elérve → piros + blokk). */
55
+ FAM_BannerCase["costCapApproaching"] = "cost-cap-approaching";
56
+ })(FAM_BannerCase || (exports.FAM_BannerCase = FAM_BannerCase = {}));
57
+ /**
58
+ * A három **kötelező nevesített banner-deszkriptor** (dsgn-008 §5). Ez a render-szerződés SSOT-ja:
59
+ * a felület-MP (MP-9/10) a `bannerCase`-re kapcsol és a `title`/`messageTemplate`/`color`/
60
+ * `settingsLink` mezőket jeleníti meg; a trigger-MP (MP-2/4) a `errorCode`-ot bocsátja ki.
61
+ *
62
+ * **A cost-cap KÉT állapotú** (dsgn-008 §5): a `costCapApproaching` a blokk ELŐTTI sárga
63
+ * figyelmeztetés (NEM blokkoló); a cap-elérés blokkoló piros ágát a render a trigger-kontextus
64
+ * `blocking`/`level` felülírásából képezi (ugyanaz a `FAM-EMB-COSTCAP-001` kód, `level:user`).
65
+ */
66
+ exports.FAM_BANNER_DESCRIPTORS = {
67
+ [FAM_BannerCase.syncZeroMatch]: {
68
+ bannerCase: FAM_BannerCase.syncZeroMatch,
69
+ errorCode: error_codes_const_1.FAM_ERROR_CODES.scanEmpty,
70
+ level: fsm_dynamo_1.DyFM_ErrorLevel.info,
71
+ color: FAM_BannerColor.yellow,
72
+ blocking: false,
73
+ title: 'Sync lefutott — 0 fájl matchelt',
74
+ messageTemplate: 'A scan/sync lefutott, de a konfigurált mintára 0 fájl illeszkedett. ' +
75
+ 'A forrás-mappák üresek a mintákra (vagy a minta túl szűk). Ez NEM hiba.',
76
+ settingsLink: false,
77
+ },
78
+ [FAM_BannerCase.embeddingNotConfigured]: {
79
+ bannerCase: FAM_BannerCase.embeddingNotConfigured,
80
+ errorCode: error_codes_const_1.FAM_ERROR_CODES.embProviderNotConfigured,
81
+ level: fsm_dynamo_1.DyFM_ErrorLevel.user,
82
+ color: FAM_BannerColor.red,
83
+ blocking: true,
84
+ title: 'Embedding nincs konfigurálva',
85
+ messageTemplate: 'Nincs embedding-provider beállítva, ezért a mentés/scan kihagyva (bootstrap-skip). ' +
86
+ 'Állíts be egy providert (OpenAI / LM Studio) a beállításokban a folytatáshoz.',
87
+ settingsLink: true,
88
+ },
89
+ [FAM_BannerCase.costCapApproaching]: {
90
+ bannerCase: FAM_BannerCase.costCapApproaching,
91
+ errorCode: error_codes_const_1.FAM_ERROR_CODES.embCostCap,
92
+ level: fsm_dynamo_1.DyFM_ErrorLevel.warning,
93
+ color: FAM_BannerColor.yellow,
94
+ blocking: false,
95
+ title: 'Költség-plafon közelít',
96
+ messageTemplate: 'Az embedding-költség a konfigurált plafonhoz közelít ({current} / {cap}). ' +
97
+ 'A plafon elérésekor a következő embedding-hívás blokkolva lesz.',
98
+ settingsLink: true,
99
+ },
100
+ };
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FAM_CFG_ERROR_CODES = exports.FAM_ERROR_CODES = exports.FAM_ERROR_SVC_DEFAULT_LEVEL = exports.FAM_ErrorSvc = void 0;
4
+ const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
5
+ const config_error_codes_const_1 = require("./config-error-codes.const");
6
+ /**
7
+ * Hibakód-katalógus **egyetlen SSOT-ja** (dsgn-008 §3, SP-8.1). A FAM hibakód-konvenció:
8
+ * `FAM-<SVC>-<METHOD>-NNN`, ahol `<SVC>` a réteg/service rövid kódja (9 prefix), `<METHOD>` a
9
+ * kibocsátó metódus, `NNN` réteg-stabil sorszám.
10
+ *
11
+ * **HARD szabály (dsgn-008 §3, MP-8-detailed kockázat "katalógus-szétfolyás"):** új hibakód CSAK
12
+ * ide kerül. A réteg-MP-k (MP-2 embedding, MP-3 scope/reference, MP-4 scan, MP-6 MCP/validation)
13
+ * NEM találnak ki saját prefixet — innen importálnak, különben a `list_errors` / `/errors` UI
14
+ * réteg-szerinti csoportosítása törik.
15
+ *
16
+ * **MP-7 alignment (nincs duplikáció):** a config-réteg `set`-validációs kódjai
17
+ * (`FAM-CONFIG-SET-001..006`) és a resolve/preset kódjai (`FAM-CFG-RESOLVE-001`,
18
+ * `FAM-CFG-PRESET-001`) MÁR a `config-error-codes.const.ts`-ben élnek (dsgn-007 §7 SSOT). Ez a
19
+ * katalógus NEM definiálja újra őket — a `FAM_CFG_ERROR_CODES` re-exporton át hivatkozik rájuk, így
20
+ * a teljes `FAM-<SVC>-<METHOD>-NNN` séma EGY home-mal rendelkezik, ütközés/duplikáció nélkül.
21
+ */
22
+ /**
23
+ * A 9 réteg/service prefix (dsgn-008 §3 táblázat). A `<SVC>` szegmens a `FAM-<SVC>-<METHOD>-NNN`
24
+ * kódban; a `list_errors`/UI réteg szerint csoportosít ezen.
25
+ *
26
+ * Enum-konvenció (workspace base CLAUDE.md): key camelCase, value a kód-szegmens.
27
+ */
28
+ var FAM_ErrorSvc;
29
+ (function (FAM_ErrorSvc) {
30
+ /** MCP-tool határ (transport, schema-dispatch, capabilities-invoke). */
31
+ FAM_ErrorSvc["mcp"] = "MCP";
32
+ /** Input-validáció (`read`/`write` schema, kötelező mezők). */
33
+ FAM_ErrorSvc["validation"] = "VAL";
34
+ /** MongoDB adatréteg (connect, query, write). */
35
+ FAM_ErrorSvc["db"] = "DB";
36
+ /** VectorDB / Memory Vector Search (hidratálás, keresés, persist). */
37
+ FAM_ErrorSvc["vector"] = "VEC";
38
+ /** Embedding-provider (OpenAI / LM Studio, cost-cap). */
39
+ FAM_ErrorSvc["embedding"] = "EMB";
40
+ /** Scan + chunking (fájlolvasás, parser, delta). */
41
+ FAM_ErrorSvc["scan"] = "SCAN";
42
+ /** Scope + reference resolve (feloldatlan/bizonytalan). */
43
+ FAM_ErrorSvc["reference"] = "REF";
44
+ /** Config-réteg (DB-backed scoped config, preset). */
45
+ FAM_ErrorSvc["config"] = "CFG";
46
+ /** claude-mem import / migráció. */
47
+ FAM_ErrorSvc["import"] = "IMP";
48
+ })(FAM_ErrorSvc || (exports.FAM_ErrorSvc = FAM_ErrorSvc = {}));
49
+ /**
50
+ * Réteg-default hiba-szint (dsgn-008 §3 "Default `level`" oszlop). A `DyFM_ErrorLevel` enum a
51
+ * tényleges Dynamo-érték (`debug`/`info`/`known`/`warning`/`error`/`serious`/`critical`/`fatal`/
52
+ * `user`/...). A dsgn-008 §2 `warn` rövidítés a Dynamo `DyFM_ErrorLevel.warning`-jára képződik.
53
+ *
54
+ * A `<SCAN>` réteg default-ja `error`, de a 0-match (`EMPTY`) `info`, a parse-fallback `warning`
55
+ * (eset-szintű override, NEM réteg-default). A `<REF>` default `user`-felé hajlik (a feloldatlan
56
+ * scope user-hiba), de az index-rebuild `error`.
57
+ */
58
+ exports.FAM_ERROR_SVC_DEFAULT_LEVEL = {
59
+ [FAM_ErrorSvc.mcp]: fsm_dynamo_1.DyFM_ErrorLevel.error,
60
+ [FAM_ErrorSvc.validation]: fsm_dynamo_1.DyFM_ErrorLevel.user,
61
+ [FAM_ErrorSvc.db]: fsm_dynamo_1.DyFM_ErrorLevel.critical,
62
+ [FAM_ErrorSvc.vector]: fsm_dynamo_1.DyFM_ErrorLevel.error,
63
+ [FAM_ErrorSvc.embedding]: fsm_dynamo_1.DyFM_ErrorLevel.error,
64
+ [FAM_ErrorSvc.scan]: fsm_dynamo_1.DyFM_ErrorLevel.error,
65
+ [FAM_ErrorSvc.reference]: fsm_dynamo_1.DyFM_ErrorLevel.user,
66
+ [FAM_ErrorSvc.config]: fsm_dynamo_1.DyFM_ErrorLevel.error,
67
+ [FAM_ErrorSvc.import]: fsm_dynamo_1.DyFM_ErrorLevel.error,
68
+ };
69
+ /**
70
+ * A reprezentatív hibakódok (dsgn-008 §3). A sorszám-tartomány réteg-stabil; a teljes lista a
71
+ * service-ek bevezetésekor (réteg-MP) bővül — DE mindig ITT (SSOT), nem a réteg-MP-ben.
72
+ *
73
+ * Egy lapos `const` objektum (camelCase kulcs → kód string), réteg-szekciókba rendezve. A
74
+ * réteg-MP-k a `FAM_ERROR_CODES.<kulcs>`-ra hivatkoznak.
75
+ */
76
+ exports.FAM_ERROR_CODES = {
77
+ // --- MCP (FAM-MCP-*) ---
78
+ /** unknown tool name a hirdetett 3-on kívül (dsgn-008 §3). */
79
+ mcpDispatchUnknownTool: 'FAM-MCP-DISPATCH-001',
80
+ /** capabilities.invoke ismeretlen capability-névre. */
81
+ mcpDispatchUnknownCapability: 'FAM-MCP-DISPATCH-002',
82
+ /** tool-input nem felel meg a JSON-schema-nak (transport-szint). */
83
+ mcpSchemaMismatch: 'FAM-MCP-SCHEMA-001',
84
+ // --- Validation (FAM-VAL-*) ---
85
+ /** write: hiányzó kötelező mező (table | content | scopePath). */
86
+ valWriteMissingField: 'FAM-VAL-WRITE-001',
87
+ /** write: 'reference' tár tartalom-műveletre (helper, csak CRUD). */
88
+ valWriteReferenceContent: 'FAM-VAL-WRITE-002',
89
+ /** update/delete target hiányzik vagy nem azonosít egyértelműen. */
90
+ valWriteTargetAmbiguous: 'FAM-VAL-WRITE-003',
91
+ /** read: üres queries / 'reference' a tables-ben (dsgn-003 §2.1). */
92
+ valReadEmptyOrReference: 'FAM-VAL-READ-001',
93
+ // --- Reference / Scope (FAM-REF-* / FAM-SCOPE-*; dsgn-002 §4) ---
94
+ /** nincs-match + bizonytalan → részletes hiba (level=user). */
95
+ refResolveNoMatch: 'FAM-REF-RESOLVE-001',
96
+ /** több magas-konfidenciájú kandidátus, scope nem egyértelmű. */
97
+ refResolveAmbiguous: 'FAM-REF-RESOLVE-002',
98
+ /** reference-index rebuild sikertelen (cache stale). */
99
+ refIndexRebuild: 'FAM-REF-INDEX-001',
100
+ /** write scope kötelezőség megsértve (scope nélküli create/scan/import). */
101
+ scopeWriteRequired: 'FAM-SCOPE-WRITE-001',
102
+ // --- Embedding (FAM-EMB-*) ---
103
+ /** provider nincs konfigurálva (bootstrap-skip, level=user, dsgn-008 §5). */
104
+ embProviderNotConfigured: 'FAM-EMB-PROVIDER-001',
105
+ /** provider elérhetetlen (OpenAI 5xx / LM Studio baseUrl down). */
106
+ embProviderUnreachable: 'FAM-EMB-PROVIDER-002',
107
+ /** model-válasz dimenzió-eltérés a tárhoz konfigurálttól. */
108
+ embProviderDimensionMismatch: 'FAM-EMB-PROVIDER-003',
109
+ /** embedding cost-cap elérve → következő hívás blokkolva (dsgn-007). */
110
+ embCostCap: 'FAM-EMB-COSTCAP-001',
111
+ // --- Vector (FAM-VEC-*) ---
112
+ /** Mongo→in-memory pool hidratálás sikertelen boot-on (BFR-AM-001). */
113
+ vecHydrate: 'FAM-VEC-HYDRATE-001',
114
+ /** vectorSearch hiba (dimenzió / üres pool / searchMode). */
115
+ vecSearch: 'FAM-VEC-SEARCH-001',
116
+ /** contentVector Mongo-persist sikertelen (BFR-AM-005). */
117
+ vecPersist: 'FAM-VEC-PERSIST-001',
118
+ // --- Scan / Chunking (FAM-SCAN-*) ---
119
+ /** fájl olvashatatlan / engedély / path-traversal védelem. */
120
+ scanRead: 'FAM-SCAN-READ-001',
121
+ /** parser hiba (markdown / AST) → fallback whole-content chunk (warn). */
122
+ scanParse: 'FAM-SCAN-PARSE-001',
123
+ /** delta-detection / compareData hiba (BFR-AM-006 compareData). */
124
+ scanDelta: 'FAM-SCAN-DELTA-001',
125
+ /** 0 fájl matchelt a konfigurált mintára (level=info, NEM error, dsgn-008 §5). */
126
+ scanEmpty: 'FAM-SCAN-EMPTY-001',
127
+ // --- DB (FAM-DB-*) ---
128
+ /** MongoDB connect sikertelen (critical). */
129
+ dbConnect: 'FAM-DB-CONNECT-001',
130
+ /** saveData / updateOne sikertelen. */
131
+ dbWrite: 'FAM-DB-WRITE-001',
132
+ // --- Config (FAM-CFG-*) — a `set`-validáció kódjai a config-error-codes.const SSOT-ból (alább). ---
133
+ /** config precedencia-feloldás hiba (global<table<scope). */
134
+ cfgResolve: config_error_codes_const_1.FAM_CONFIG_ERROR_CODES.resolve,
135
+ /** ismeretlen / hiányos embedding-preset. */
136
+ cfgPreset: config_error_codes_const_1.FAM_CONFIG_ERROR_CODES.preset,
137
+ // --- Import (FAM-IMP-*) ---
138
+ /** claude-mem forrás elérhetetlen (sqlite path / worker API). */
139
+ impSource: 'FAM-IMP-SOURCE-001',
140
+ /** target-mapping nem egyértelmű (dsgn-009). */
141
+ impMap: 'FAM-IMP-MAP-001',
142
+ };
143
+ /**
144
+ * MP-7 alignment re-export (nincs duplikáció): a config `set`-validációs + resolve/preset kódok
145
+ * (`FAM-CONFIG-SET-001..006`, `FAM-CFG-RESOLVE-001`, `FAM-CFG-PRESET-001`) a dsgn-007 §7 SSOT-ból
146
+ * (`config-error-codes.const.ts`). A katalógus innen hivatkozik rájuk — egy import-pont a teljes
147
+ * sémához, a két névtér ütközés nélkül együtt él (a `FAM-CONFIG-SET` a `<SVC>=CONFIG` névtér, a
148
+ * `FAM-CFG` a `<SVC>=CFG` réteg-kód; mindkettő stabil).
149
+ */
150
+ exports.FAM_CFG_ERROR_CODES = config_error_codes_const_1.FAM_CONFIG_ERROR_CODES;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FAM_DB_MODELS = void 0;
4
+ const fam_codebase_data_model_1 = require("../_models/data-models/fam-codebase.data-model");
5
+ const fam_coding_patterns_data_model_1 = require("../_models/data-models/fam-coding-patterns.data-model");
6
+ const fam_config_data_model_1 = require("../_models/data-models/fam-config.data-model");
7
+ const fam_documents_data_model_1 = require("../_models/data-models/fam-documents.data-model");
8
+ const fam_error_data_model_1 = require("../_models/data-models/fam-error.data-model");
9
+ const fam_ingest_run_data_model_1 = require("../_models/data-models/fam-ingest-run.data-model");
10
+ const fam_knowledge_data_model_1 = require("../_models/data-models/fam-knowledge.data-model");
11
+ const fam_memory_data_model_1 = require("../_models/data-models/fam-memory.data-model");
12
+ const fam_reference_data_model_1 = require("../_models/data-models/fam-reference.data-model");
13
+ const fam_rules_data_model_1 = require("../_models/data-models/fam-rules.data-model");
14
+ const fam_scope_data_model_1 = require("../_models/data-models/fam-scope.data-model");
15
+ /**
16
+ * A FAM perzisztens collection-jeinek `dataParams`-listája (MP-1, dsgn-001) — **SSOT**.
17
+ * A `DyNTS_GlobalService.setServices({ dbModels })` ezt regisztrálja a boot-kor (`app.server.ts`),
18
+ * és UGYANEZT használja az integration-test setup (`_integration-tests/_helpers`) a lightweight
19
+ * DB-setuphoz — így a két regisztráció SOSEM driftel (egy-forrás).
20
+ */
21
+ exports.FAM_DB_MODELS = [
22
+ // Error-réteg (MP-8, dsgn-008 §2): `fam_errors` (DyNTS_Errors-pipeline, dedup + occurrence-count).
23
+ fam_error_data_model_1.famError_dataParams, // fam_errors
24
+ // A 6 fő RAG-tár (`addArchive: true` → soft-delete, dsgn-001 §8):
25
+ fam_rules_data_model_1.famRules_dataParams, // fam_rules
26
+ fam_documents_data_model_1.famDocuments_dataParams, // fam_documents
27
+ fam_codebase_data_model_1.famCodebase_dataParams, // fam_codebase
28
+ fam_knowledge_data_model_1.famKnowledge_dataParams, // fam_knowledge
29
+ fam_coding_patterns_data_model_1.famCodingPatterns_dataParams, // fam_coding_patterns
30
+ fam_memory_data_model_1.famMemory_dataParams, // fam_memory
31
+ // Helper-collection-ök (dsgn-001 §5, dsgn-002 §2, dsgn-004 §5):
32
+ fam_reference_data_model_1.famReference_dataParams, // fam_reference
33
+ fam_scope_data_model_1.famScope_dataParams, // fam_scopes
34
+ fam_ingest_run_data_model_1.famIngestRun_dataParams, // fam_ingest_runs
35
+ // Config-réteg (MP-7, dsgn-007): DB-backed scoped config (global<table<scope).
36
+ fam_config_data_model_1.famConfig_dataParams, // fam_config
37
+ ];
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FAM_EntryBootstrap_Util = void 0;
4
+ const app_server_1 = require("../app.server");
5
+ const package_json_1 = require("../../package.json");
6
+ const mcp_1 = require("../_modules/mcp");
7
+ /** Az MCP-szerver SDK-neve (REQ-001, dsgn-003 §5). */
8
+ const MCP_SERVER_NAME = 'fdp-agent-memory';
9
+ /**
10
+ * `FAM_EntryBootstrap_Util` (MP-6, dsgn-010 §6 / dsgn-012 §4) — a `node build/src/index.js [start]`
11
+ * (és a publikált `fam start` bin) belépési orchestrátora. A `fam start` MINDKÉT csatornát felhúzza:
12
+ * - **REST szerver** (port 39185, `App extends DyNTS_App`) — a CLI (MP-9) + UI (MP-10) belépője,
13
+ * - **MCP stdio szerver** — a `read`/`write`/`capabilities` 3 tool a JSON-RPC stdio transporton.
14
+ *
15
+ * A kettő KÜLÖN csatorna (stdio JSON-RPC vs. HTTP), így egyszerre futhat: a REST a HTTP-porton, az MCP
16
+ * a stdin/stdout-on. Mindkettő ugyanazt a Mongo-kapcsolatot + a hidratált vektor-pool-t használja (az
17
+ * `App` connect + `postProcess` boot).
18
+ *
19
+ * **stdio-konvenció (dsgn-003 §1, dsgn-010 §6):** stdio módban a stdout a JSON-RPC csatorna — minden
20
+ * log/diag a stderr-re kerül. Ezért a boot ELŐTT a `console.log`/`info`/`warn` stdout-írásait a
21
+ * stderr-re irányítjuk (a `DyFM_Log` ezeken megy); az MCP `StdioServerTransport` közvetlenül a
22
+ * `process.stdout`-ra ír (nem console-on át), így a JSON-RPC framing tiszta marad.
23
+ */
24
+ class FAM_EntryBootstrap_Util {
25
+ /**
26
+ * A belépő (`index.ts` ezt hívja). A `start` (vagy `start-server`) argumentum → REST + MCP stdio
27
+ * együtt; argumentum nélkül VISSZAFELÉ-KOMPATIBILIS: csak a REST `App` indul (a régi `new App()`
28
+ * viselkedés). A `--transport stdio` MVP1-ben az egyetlen MCP-transport (dsgn-010 §6).
29
+ */
30
+ static async main(argv) {
31
+ const command = argv[2];
32
+ const isStart = command === 'start' || command === 'start-server';
33
+ if (isStart) {
34
+ // stdio-konvenció: a log-stdout-ot a stderr-re irányítjuk a JSON-RPC csatorna tisztaságáért.
35
+ FAM_EntryBootstrap_Util.redirectConsoleToStderr();
36
+ }
37
+ // (1) REST szerver felhúzása (a DyNTS_App ctor indítja a connect + setup + postProcess láncot;
38
+ // a DyNTS_App a side-effect-konstruktor mintát követi — az `index.ts` is így indít).
39
+ FAM_EntryBootstrap_Util.startRestApp();
40
+ if (isStart) {
41
+ // (2) MCP stdio szerver indítása (a 3 advertised core-tool: read/write/capabilities).
42
+ await mcp_1.FAM_McpServer_Service.getInstance().start({ name: MCP_SERVER_NAME, version: package_json_1.version });
43
+ }
44
+ }
45
+ /**
46
+ * A REST `App` felhúzása (a `DyNTS_App` ctor a connect + setup + postProcess láncot indítja —
47
+ * side-effect-konstruktor minta, az App-ot nem kell elkapni, a globális service-be regisztrálódik).
48
+ */
49
+ static startRestApp() {
50
+ const app = new app_server_1.App();
51
+ void app;
52
+ }
53
+ /**
54
+ * A `console.log`/`info`/`warn`/`debug` stdout-írásainak átirányítása a stderr-re (stdio mód). A
55
+ * `console.error` már alapból stderr-re megy. Így a `DyFM_Log` (ami `console.*`-on megy) NEM
56
+ * szennyezi a JSON-RPC stdout-csatornát; az MCP transport `process.stdout`-ja érintetlen marad.
57
+ */
58
+ static redirectConsoleToStderr() {
59
+ const toStderr = (...args) => {
60
+ process.stderr.write(`${args.map((arg) => FAM_EntryBootstrap_Util.stringifyArg(arg)).join(' ')}\n`);
61
+ };
62
+ console.log = toStderr;
63
+ console.info = toStderr;
64
+ console.warn = toStderr;
65
+ console.debug = toStderr;
66
+ }
67
+ /** Egy log-argumentum string-reprezentációja (objektum → JSON, primitív → String). */
68
+ static stringifyArg(arg) {
69
+ if (typeof arg === 'string') {
70
+ return arg;
71
+ }
72
+ try {
73
+ return JSON.stringify(arg);
74
+ }
75
+ catch {
76
+ return String(arg);
77
+ }
78
+ }
79
+ }
80
+ exports.FAM_EntryBootstrap_Util = FAM_EntryBootstrap_Util;