@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
package/README.md ADDED
@@ -0,0 +1,345 @@
1
+ # @futdevpro/fdp-agent-memory
2
+
3
+ > **Local-first, vektor-alapú, többtáras agent-memória MCP-szerver.** Bármely MCP-kliens (Claude
4
+ > Desktop / Claude Code / CCAP) egységes **`read` / `write` / `capabilities`** felületen ér el tartós,
5
+ > kereshető tudást — **lokálisan futó, saját MongoDB-vel, auth nélkül**.
6
+
7
+ ## 1. Mi ez?
8
+
9
+ Az FDP Agent Memory egy **publikus NPM package + lokális MCP-szerver**: a saját gépeden futó,
10
+ vektor-alapú RAG-memória, amit az agented mentésre (`write`) és visszakeresésre (`read`) használ.
11
+ A szerver az MCP-kliensnek **pontosan 3 toolt** hirdet:
12
+
13
+ - **`read`** — tudás keresése/lekérése (egylépcsős, multi-tábla + multi-query, dense-jelzéssel),
14
+ - **`write`** — tudás mentése / módosítása / törlése / scan / re-embed / import (pontosan 1 tár),
15
+ - **`capabilities`** — a ritkán használt speciális eszközök (diagnosztika/statisztika/inspekció/
16
+ karbantartás/import/debug) felderítése + meghívása EGYETLEN tool-on át (context-tisztaság).
17
+
18
+ **6 fő tár** (`rules` / `documents` / `codebase` / `knowledge` / `coding_patterns` / `memory`) +
19
+ egy `reference` helper (alias/fogalom-feloldás). A tárak/mezők részleteit lásd a design-doksiban
20
+ (`__specifications/_design/dsgn-001`). A vektorok a **saját MongoDB-ben** élnek, és boot-kor egy
21
+ in-memory pool-ba hidratálódnak — **NINCS Atlas-dependencia**.
22
+
23
+ > **Boundary:** **nincs auth / jogosultságkezelés** (lokális, single-user); FDP Templates package
24
+ > nélkül (Pure Dynamo). Az MCP-transport MVP1-ben **stdio** (nincs hálózati port az MCP-felületnek;
25
+ > a `39185`-ös port a REST/UI réteghez tartozik). HTTP/SSE transport későbbi fázis (BACKLOG).
26
+
27
+ ## 2. Install
28
+
29
+ ```bash
30
+ npm i -g @futdevpro/fdp-agent-memory
31
+ # vagy pnpm-mel:
32
+ pnpm add -g @futdevpro/fdp-agent-memory
33
+ ```
34
+
35
+ A bin neve **`fam`**. Smoke-teszt:
36
+
37
+ ```bash
38
+ fam --version
39
+ fam --help # listázza a parancsokat
40
+ ```
41
+
42
+ ## 3. Prerequisites
43
+
44
+ - **Node 20+** (`engines.node >= 20`).
45
+ - **MongoDB** — lokális / saját (NEM Atlas). Lásd §5.
46
+ - **Embedding-provider** — **OpenAI** (API-kulcs) **vagy** **LM Studio** (lokális, kulcs nélküli). Lásd §6.
47
+
48
+ ## 4. Env setup
49
+
50
+ A szerver `process.env`-ből + a `.env`-ből tölt (a Dynamo env-loader olvassa a `.env`-et — prod-kódban
51
+ NINCS `dotenv` import). Minta `.env`:
52
+
53
+ ```env
54
+ # MongoDB (saját / lokális — NEM Atlas)
55
+ MONGODB_URI=mongodb://127.0.0.1:27017
56
+ MONGODB_DB_NAME=fdp_agent_memory
57
+
58
+ # Embedding provider: lmstudio (DEFAULT — lokális, ingyenes, offline) | openai
59
+ EMBEDDING_PROVIDER=lmstudio
60
+ LMSTUDIO_BASE_URL=http://127.0.0.1:1234/v1
61
+ LMSTUDIO_EMBEDDING_MODEL=nomic-embed-text-v1.5
62
+
63
+ # (OpenAI preset esetén helyette:)
64
+ # EMBEDDING_PROVIDER=openai
65
+ # OPENAI_API_KEY=sk-...
66
+ # OPENAI_EMBEDDING_MODEL=text-embedding-3-large
67
+
68
+ # Portok (a REST/UI réteg; NEM az MCP-stdio)
69
+ FAM_SERVER_PORT=39185
70
+ FAM_CLIENT_PORT=4205
71
+ ```
72
+
73
+ ### Teljes env-var referencia
74
+
75
+ | Env-var | Kötelező | Default | Leírás |
76
+ |---|---|---|---|
77
+ | `MONGODB_URI` | igen | — | Saját MongoDB connection string (NEM Atlas), pl. `mongodb://127.0.0.1:27017`. |
78
+ | `MONGODB_DB_NAME` | igen | `fdp_agent_memory` | Adatbázis-név (collection-ök: `fam_*`). |
79
+ | `EMBEDDING_PROVIDER` | igen | `lmstudio` | `lmstudio` (DEFAULT — lokális) \| `openai` — az aktív embedding-provider. |
80
+ | `OPENAI_API_KEY` | ha `provider=openai` | — | OpenAI API-kulcs. |
81
+ | `OPENAI_EMBEDDING_MODEL` | nem | `text-embedding-3-large` | OpenAI embedding-modell. |
82
+ | `LMSTUDIO_BASE_URL` | ha `provider=lmstudio` | `http://127.0.0.1:1234/v1` | LM Studio OpenAI-kompatibilis endpoint. |
83
+ | `LMSTUDIO_EMBEDDING_MODEL` | ha `provider=lmstudio` | — | A betöltött embedding-modell neve. |
84
+ | `FAM_SERVER_PORT` | nem | `39185` | REST/UI szerver-port (NEM az MCP-stdio). |
85
+ | `FAM_CLIENT_PORT` | nem | `4205` | Angular UI dev-port (külön kliens-app). |
86
+ | `FAM_CONFIG_OVERRIDE` | nem | — | Opcionális boot-time config-override JSON-path (a DB-backed config-on felül). |
87
+
88
+ > **A futás-idejű minőségi paraméterek (`topK` / `minScore` / chunk-méret / overlap / dense-küszöb /
89
+ > embedding-cost-cap) NEM env-var-ok**, hanem **DB-backed config** (global/table/scope precedenciával —
90
+ > `fam config set …`). Az env csak az infra-csatlakozást + a provider-választást adja.
91
+
92
+ Az env validálása: `fam validate-env`.
93
+
94
+ ## 5. MongoDB setup (saját, NEM Atlas)
95
+
96
+ A FAM a **saját MongoDB-det** használja (saját Memory Vector Search — **nincs Atlas Vector Search
97
+ dependencia**). Indíts egy lokális Mongo-t:
98
+
99
+ ```bash
100
+ # natív mongod:
101
+ mongod --dbpath ./data/db --port 27017
102
+
103
+ # vagy Docker:
104
+ docker run -d --name fam-mongo -p 27017:27017 mongo:8
105
+ ```
106
+
107
+ Állítsd be a `MONGODB_URI`-t + `MONGODB_DB_NAME`-et a `.env`-ben (§4), majd:
108
+
109
+ ```bash
110
+ fam test-db
111
+ ```
112
+
113
+ A collection-ök (`fam_rules`, `fam_documents`, … `fam_config`) a szerver első indításakor automatikusan
114
+ létrejönnek.
115
+
116
+ ## 6. Embedding provider setup
117
+
118
+ Két ajánlott preset (`fam init` / `fam create-config` egyikét alkalmazza):
119
+
120
+ **OpenAI** (cloud, magasabb minőség):
121
+
122
+ ```env
123
+ EMBEDDING_PROVIDER=openai
124
+ OPENAI_API_KEY=sk-...
125
+ OPENAI_EMBEDDING_MODEL=text-embedding-3-large
126
+ ```
127
+
128
+ **LM Studio** (lokális, ingyenes, offline — OpenAI-kompatibilis HTTP endpoint):
129
+
130
+ ```env
131
+ EMBEDDING_PROVIDER=lmstudio
132
+ LMSTUDIO_BASE_URL=http://127.0.0.1:1234/v1
133
+ LMSTUDIO_EMBEDDING_MODEL=nomic-embed-text-v1.5
134
+ ```
135
+
136
+ Validálás (a megfelelő env-vel) — cost-jelzéssel:
137
+
138
+ ```bash
139
+ fam test-embedding
140
+ ```
141
+
142
+ ## 7. MCP client config
143
+
144
+ Mindkét kliens a `fam start` stdio-belépőt indítja. Copy-paste-elhető config-példák a package-ben:
145
+ `build/src/_assets/mcp-client-config/` (`claude_desktop_config.json` + `mcp.json` — utóbbit mentsd
146
+ `.mcp.json` néven a projekt-gyökérbe). Röviden:
147
+
148
+ **Claude Desktop** — `claude_desktop_config.json` (OpenAI-preset):
149
+
150
+ ```jsonc
151
+ {
152
+ "mcpServers": {
153
+ "fdp-agent-memory": {
154
+ "command": "fam",
155
+ "args": ["start"],
156
+ "env": {
157
+ "MONGODB_URI": "mongodb://127.0.0.1:27017",
158
+ "MONGODB_DB_NAME": "fdp_agent_memory",
159
+ "EMBEDDING_PROVIDER": "openai",
160
+ "OPENAI_API_KEY": "sk-...",
161
+ "OPENAI_EMBEDDING_MODEL": "text-embedding-3-large"
162
+ }
163
+ }
164
+ }
165
+ }
166
+ ```
167
+
168
+ **Claude Code** — `.mcp.json` (projekt-gyökér, LM Studio-preset):
169
+
170
+ ```jsonc
171
+ {
172
+ "mcpServers": {
173
+ "fdp-agent-memory": {
174
+ "command": "fam",
175
+ "args": ["start"],
176
+ "env": {
177
+ "MONGODB_URI": "mongodb://127.0.0.1:27017",
178
+ "MONGODB_DB_NAME": "fdp_agent_memory",
179
+ "EMBEDDING_PROVIDER": "lmstudio",
180
+ "LMSTUDIO_BASE_URL": "http://127.0.0.1:1234/v1",
181
+ "LMSTUDIO_EMBEDDING_MODEL": "nomic-embed-text-v1.5"
182
+ }
183
+ }
184
+ }
185
+ }
186
+ ```
187
+
188
+ > Ha a `fam` nincs a PATH-on: `"command": "npx", "args": ["-y", "@futdevpro/fdp-agent-memory", "start"]`.
189
+ > Az `env`-blokk felülírja a `.env`-et a kliens-indított folyamatban (self-contained kliens). Csatlakozás
190
+ > után az agent **pontosan 3** toolt lát (`read`/`write`/`capabilities`) — a speciálisak `capabilities`-en át.
191
+
192
+ ## 8. First run
193
+
194
+ ```bash
195
+ fam init # interaktív bootstrap: .env + provider-preset + Mongo-URI
196
+ fam create-config # DB-backed config seedelése reasonable default-okkal
197
+ fam start # az MCP-szerver indítása stdio-n (CSAK a szerver)
198
+ ```
199
+
200
+ > `fam start` az **MCP-szervert stdio-n** ÉS a **REST/UI réteget** indítja (port `39185`). A beépített
201
+ > **admin UI a <http://localhost:39185/api/app>** alatt érhető el — a **szerver szolgálja ki**, nincs
202
+ > külön kliens-process (egy `fam start` = teljes lokál felület). Ez az a parancs, amit az MCP-kliens
203
+ > config `command`-ja is meghív. (Alternatíva: `docker compose -f docker-compose.local.yml up` —
204
+ > ugyanez konténerből, lokál Mongo-val.)
205
+
206
+ ## 9. Health check
207
+
208
+ ```bash
209
+ fam doctor
210
+ ```
211
+
212
+ A `doctor` az **egyetlen ajánlott health-check lépés**: aggregálja az env / mongodb / config /
213
+ embedding / vector / collections rétegek állapotát. Zöld kimenet (`✓` minden soron) = kész a
214
+ kliens-csatlakozásra. Minden FAIL/WARN mellé KONKRÉT fix-tipp jár (néma hiba tilos). A többi
215
+ diagnosztika (`validate-env` / `test-db` / `test-embedding`) a `doctor` egy-egy al-checkjére delegál.
216
+
217
+ ## 10. Troubleshooting
218
+
219
+ | Tünet | Valószínű ok | Fix |
220
+ |---|---|---|
221
+ | `fam doctor` → DB hiba (`FAM-DB-CONNECT-001`) | Mongo nem fut / rossz `MONGODB_URI` | Indítsd a `mongod`-ot; ellenőrizd a URI-t; `fam test-db`. |
222
+ | `fam doctor` → embedding hiba (`FAM-EMB-PROVIDER-*`) | provider/kulcs/baseUrl rossz | OpenAI-nál ellenőrizd `OPENAI_API_KEY`-t; LM Studio-nál a futó szervert + betöltött modellt; `fam test-embedding`. |
223
+ | MCP-kliens nem látja a szervert | rossz `command`/PATH | Globális telepítés (`npm i -g …`) vagy `npx -y @futdevpro/fdp-agent-memory start`; ellenőrizd a kliens-config `env`-jét (§7). |
224
+ | Az agent túl sok toolt lát | nem a 3-tool felület | Csak `read`/`write`/`capabilities` hirdetett; a többi `capabilities`-en át. |
225
+ | `FAM-REF-RESOLVE-*` hiba write-on | feloldatlan + bizonytalan scope | A hiba felsorolja a kandidátusokat; hozz létre reference-bejegyzést, vagy adj explicit scope-ot. |
226
+ | dense-warning minden read-en | túl tág query/scope | Szűkíts scope-ra/tag-re a `read`-válasz `suggestions` szerint. |
227
+
228
+ Minden hiba persistált (`fam_errors`), `fam errors`-szal vagy az UI-n lekérdezhető; a hibakódok
229
+ formája `FAM-<SERVICE>-<METHOD>-NNN`. Néma hiba sehol.
230
+
231
+ ## 11. Capability discovery
232
+
233
+ A speciális eszközök a `capabilities` tool-on át (NEM a hirdetett 3-ban):
234
+
235
+ ```bash
236
+ # az MCP-kliensből (capabilities tool):
237
+ { "action": "list" } # a teljes katalógus (kategóriánként)
238
+ { "action": "describe", "name": "get_table_stats" } # egy eszköz schema-ja
239
+ { "action": "invoke", "name": "get_scope_tree" } # egy eszköz futtatása
240
+
241
+ # CLI-ból:
242
+ fam stats # tár-statisztikák
243
+ fam errors # persistált hibák
244
+ ```
245
+
246
+ A 6 kategória: **config-diagnostics** (`validate_environment` / `test_mongodb_connection` /
247
+ `test_vector_search` / `get_config_status` / `get_embedding_config` / `test_embedding_provider`),
248
+ **high-level-stats** (`get_table_stats` / `get_scope_tree` / `get_reference_stats` /
249
+ `get_embedding_cost_stats` / `get_layer_stats` / `get_storage_usage`), **inspection** (`list_tables` /
250
+ `list_scopes` / `list_scan_runs` / `list_errors` / `list_kinds_tags` / `list_recent_writes`),
251
+ **maintenance** (`reembed_table` / `reembed_scope` / `rebuild_reference_index` / `repair_scope_links` /
252
+ `deduplicate_entries`), **import-migration** (`preview_claude_mem_import` / `map_claude_mem_entries` /
253
+ `import_claude_mem` / `run_import` / `rollback_import`), **debug** (`trace_scope_resolution` /
254
+ `trace_reference_expansion` / `explain_search` / `inspect_chunk` / `inspect_embedding`).
255
+
256
+ > `repair_scope_links` és `deduplicate_entries` MVP1-ben **dry-run-only** (diagnosztikus AUDIT, NEM ír);
257
+ > a destruktív write-ág későbbi fázis (`dryRun:false` → clear BACKLOG-hiba).
258
+
259
+ ## 12. CLI reference
260
+
261
+ | Parancs | Mit csinál |
262
+ |---|---|
263
+ | `fam init` | Interaktív bootstrap: `.env` + provider-preset + Mongo-URI + alap-config. |
264
+ | `fam doctor` | Aggregált health-check (env/mongodb/config/embedding/vector/collections). |
265
+ | `fam start` | Az MCP-szerver indítása stdio-n (alias: `fam start-server`). |
266
+ | `fam read` | Tudás keresése (`read` core-tool CLI-tükre). |
267
+ | `fam write` | Tudás mentése/módosítása/törlése (`write` core-tool). |
268
+ | `fam scan` | Fájl/mappa/projekt scan + chunk + embed. |
269
+ | `fam import claude-mem …` | claude-mem migráció (preview→map→run→rollback; alias: `fam migrate`). |
270
+ | `fam config` | DB-backed config get/set (global/table/scope). |
271
+ | `fam stats` | Tár-statisztikák. |
272
+ | `fam errors` | Persistált hibák listája + "kezelve" jelölés. |
273
+ | `fam validate-env` | (alias) a `doctor` `env` al-checkje. |
274
+ | `fam test-db` | (alias) a `doctor` `mongodb` al-checkje. |
275
+ | `fam test-embedding` | (alias) a `doctor` `embedding` al-checkje. |
276
+ | `fam create-config` | DB-backed config seedelése default-okkal + preset. |
277
+ | `fam seed-example` | Minta-bejegyzések + scope-lánc + reference-aliasok (smoke/demo). |
278
+
279
+ Globális opciók: `--json` (gépi kimenet), `--server-url <url>` (env: `FAM_SERVER_URL`), `--quiet`.
280
+
281
+ ## 13. Migration (claude-mem)
282
+
283
+ A claude-mem memóriák egyirányú beolvasása (preview→map→run→rollback):
284
+
285
+ ```bash
286
+ fam import claude-mem --preview # nem-destruktív összegzés + dedup-előrejelzés
287
+ fam import claude-mem # tényleges import egy batchId alatt (dedup-skip + embed)
288
+ fam import claude-mem --rollback <batch> # egy batch visszavonása (soft-delete)
289
+ ```
290
+
291
+ **Egyirányú** (claude-mem → FAM): nincs reverse/export. Részletek: `__specifications/_design/dsgn-009`.
292
+
293
+ ## 14. Architecture & links
294
+
295
+ ```text
296
+ MCP-kliens (Claude Desktop/Code) ──stdio── fam start (MCP-szerver)
297
+ ├── read ──► Retrieval pipeline (vektor + weight + minScore)
298
+ ├── write ──► CRUD / scan / re-embed / import
299
+ └── capabilities ──► registry (6 kategória, discoverable)
300
+
301
+ MongoDB (saját) ── boot ──► in-memory vektor-pool (LVS)
302
+ ```
303
+
304
+ - `__specifications/_design/dsgn-001` — adatmodell (6 tár + reference).
305
+ - `dsgn-002` — scope + reference feloldás. `dsgn-005` — read/dense viselkedés.
306
+ - `dsgn-006` — embedding + Memory Vector Search. `dsgn-007` — DB-backed config.
307
+ - `dsgn-009` — claude-mem migráció. `dsgn-010` — CLI. `dsgn-012` — setup/packaging (ez a README).
308
+
309
+ ---
310
+
311
+ ## Build & teszt (fejlesztőknek)
312
+
313
+ ```bash
314
+ pnpm run prep # pnpm i
315
+ pnpm run build-base # rimraf ./build && tsc && copy-assets (rimraf KÖTELEZŐ — partial-publish guard)
316
+ pnpm run build # build-base + jasmine
317
+ pnpm test # jasmine
318
+ pnpm run build-docker # Dockerfile
319
+ ```
320
+
321
+ ## Publishing
322
+
323
+ Ez egy **publikus** package (`publishConfig.access: "public"`, scoped `@futdevpro/fdp-agent-memory`).
324
+ A `main`/`types` a `build/`-re mutat, a `files` csak `build` + `bin` + `README.md` (nem ship-elünk
325
+ forrást/teszt-fixtúrát). A deps Pure Dynamo (`@futdevpro/fsm-dynamo` + `@futdevpro/nts-dynamo`) — **FDP
326
+ Templates nincs**.
327
+
328
+ > **npm-publish — SZÁNDÉKOS itt** (ADR-004): a workspace/TEMPLATE-projects "no npm-publish" default
329
+ > (`feedback_no_package_lib_in_templates`) egy TEMPLATE-projekt-default, ami ITT NEM érvényes — a FAM
330
+ > publikus package, a publish szándékos és megengedett.
331
+
332
+ Publish-path (a `publishConfig.access: "public"` miatt nem kell `--access public` flag):
333
+
334
+ ```bash
335
+ pnpm run build # build-gate: rimraf ./build && tsc && jasmine — ZÖLD kötelező
336
+ npm pack # dry-run: a tarball-tartalom = files ([build, bin, README.md])
337
+ npm publish
338
+ ```
339
+
340
+ ## Boundary (ADR-004)
341
+
342
+ - Deps: CSAK `@futdevpro/fsm-dynamo` + `@futdevpro/nts-dynamo` (+ runtime: express/mongoose/openai/axios/…).
343
+ - **FDP-Templates package TILOS** (`fdp-templates` / `nts-fdp-templates` / `ngx-fdp-templates`).
344
+ - **NINCS auth** — nincs JWT/bcrypt, nincs login/register/user route, nincs auth guard/interceptor.
345
+ - Server-bázis: `class App extends DyNTS_App` (NEM `FDPNTS_App`).
@@ -0,0 +1,96 @@
1
+ {
2
+ "name": "@futdevpro/fdp-agent-memory",
3
+ "version": "0.1.0",
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
+ "private": false,
6
+ "publishConfig": {
7
+ "access": "public"
8
+ },
9
+ "DyBu_settings": {
10
+ "packageType": "server",
11
+ "systemName": "fdp-agent-memory"
12
+ },
13
+ "main": "build/src/index.js",
14
+ "types": "build/src/index.d.ts",
15
+ "bin": {
16
+ "fam": "build/src/index.js"
17
+ },
18
+ "files": [
19
+ "build",
20
+ "bin",
21
+ "client-dist",
22
+ "README.md"
23
+ ],
24
+ "engines": {
25
+ "node": ">=20"
26
+ },
27
+ "scripts": {
28
+ "prep": "pnpm i",
29
+ "start": "node build/src/index.js start",
30
+ "build": "pnpm run build-base && npx jasmine",
31
+ "build-base": "rimraf ./build && tsc && npm run copy-assets",
32
+ "build-ui-for-publish": "node scripts/build-ui-for-publish.cjs",
33
+ "build-prod": "rimraf ./build && tsc -p tsconfig.prod.json && npm run copy-assets",
34
+ "prepublishOnly": "npm run build-prod",
35
+ "build-docker": "docker build --no-cache -t futdevpro/fdp-agent-memory:local .",
36
+ "copy-assets": "copyfiles -u 1 ./src/_assets/**/* ./build/src/",
37
+ "build-clean": "npm run clean && npm run build-base",
38
+ "clean": "rimraf ./build && rimraf pnpm-lock.yaml && rimraf ./node_modules && rimraf package-lock.json",
39
+ "test": "npx jasmine",
40
+ "test:integration": "jasmine --config=spec/support/jasmine-integration.json",
41
+ "test:integration:coverage": "c8 --lines 0 --branches 0 --functions 0 --statements 0 --reporter=text --reporter=html --report-dir=coverage-integration jasmine --config=spec/support/jasmine-integration.json",
42
+ "lint": "eslint src --ext .ts",
43
+ "lint:fix": "eslint src --ext .ts --fix",
44
+ "validate:imports": "dynamo-validate-imports",
45
+ "validate:naming": "dynamo-validate-naming",
46
+ "audit:eslintrc": "dynamo-eslintrc-audit",
47
+ "fix": "dynamo-fix",
48
+ "fix:return-types": "dynamo-fix-return-types"
49
+ },
50
+ "repository": {
51
+ "type": "git",
52
+ "url": "git@github.com:futdevpro/fdp-agent-memory.git"
53
+ },
54
+ "author": "FutDevPro",
55
+ "license": "FDP",
56
+ "dependencies": {
57
+ "@futdevpro/fsm-dynamo": "^1.16",
58
+ "@futdevpro/nts-dynamo": "^1.15",
59
+ "@modelcontextprotocol/sdk": "^1.12.0",
60
+ "axios": "~1.8.1",
61
+ "better-sqlite3": "^12.4.1",
62
+ "crypto-js": "~4.2.0",
63
+ "dotenv": "^16.4.7",
64
+ "express": "4.21.2",
65
+ "mongoose": "~8.10.1",
66
+ "openai": "~5.23.2",
67
+ "rxjs": "7.8.1",
68
+ "socket.io": "~4.8.1",
69
+ "socket.io-client": "~4.8.1",
70
+ "ts-node": "~10.9.2",
71
+ "tslib": "~2.6.2",
72
+ "uuid": "11.1.0"
73
+ },
74
+ "devDependencies": {
75
+ "@futdevpro/dynamo-eslint": "1.15.8",
76
+ "@types/better-sqlite3": "^7.6.13",
77
+ "@types/express": "4.17.21",
78
+ "@types/jasmine": "~4.3.5",
79
+ "@types/node": "~24.1.0",
80
+ "@typescript-eslint/eslint-plugin": "^8.41.0",
81
+ "@typescript-eslint/parser": "^8.41.0",
82
+ "c8": "^10.1.2",
83
+ "copyfiles": "^2.4.1",
84
+ "eslint": "^9.34.0",
85
+ "eslint-plugin-import": "^2.29.0",
86
+ "eslint-plugin-jsdoc": "^48.0.0",
87
+ "eslint-plugin-max-params-no-constructor": "^0.0.4",
88
+ "eslint-plugin-prettier": "^5.1.3",
89
+ "eslint-plugin-unused-imports": "^4.1.4",
90
+ "jasmine": "5.10.0",
91
+ "jasmine-ts": "~0.4.0",
92
+ "prettier": "^3.3.3",
93
+ "rimraf": "^5.0.0",
94
+ "typescript": "5.5.4"
95
+ }
96
+ }
@@ -0,0 +1,29 @@
1
+ # MCP client config examples — FDP Agent Memory
2
+
3
+ Másold a megfelelő blokkot a kliensed config-jába. Mindkét kliens a `fam start` stdio-belépőt
4
+ indítja (a `bin/fam`). A package globális telepítés után érhető el a PATH-on.
5
+
6
+ - **`claude_desktop_config.json`** — Claude Desktop, **OpenAI**-preset env-blokkal.
7
+ Hely (macOS): `~/Library/Application Support/Claude/claude_desktop_config.json`.
8
+ Hely (Windows): `%APPDATA%\Claude\claude_desktop_config.json`.
9
+ - **`mcp.json`** — Claude Code, **LM Studio** (lokális, kulcs nélküli) preset-tel. Mentsd a projekt-
10
+ gyökérbe **`.mcp.json`** néven (a package-ben a fájl `mcp.json`, mert a build a dotfile-okat kihagyja).
11
+
12
+ ## npx-fallback (ha a `fam` nincs a PATH-on)
13
+
14
+ ```jsonc
15
+ "command": "npx",
16
+ "args": ["-y", "@futdevpro/fdp-agent-memory", "start"]
17
+ ```
18
+
19
+ ## Context-tisztaság (NEM config-beállítás, hanem szerver-contract)
20
+
21
+ Csatlakozás után az agent **pontosan 3** toolt lát: `read` / `write` / `capabilities`. A speciális
22
+ eszközök (config-diagnostics / stats / inspection / maintenance / import-migration / debug) NEM
23
+ hirdetődnek — kizárólag a `capabilities` tool `list` / `describe` / `invoke` action-jén át érhetők el.
24
+
25
+ ## Env (a kliens-indított folyamatban felülírja a `.env`-et)
26
+
27
+ A teljes env-var referencia (kötelezőség / default-ok) a package README-jében. A futás-idejű minőségi
28
+ paraméterek (topK / minScore / chunk-méret / cost-cap) NEM env-var-ok, hanem DB-backed config
29
+ (`fam config set …`).
@@ -0,0 +1,15 @@
1
+ {
2
+ "mcpServers": {
3
+ "fdp-agent-memory": {
4
+ "command": "fam",
5
+ "args": ["start"],
6
+ "env": {
7
+ "MONGODB_URI": "mongodb://127.0.0.1:27017",
8
+ "MONGODB_DB_NAME": "fdp_agent_memory",
9
+ "EMBEDDING_PROVIDER": "openai",
10
+ "OPENAI_API_KEY": "sk-...",
11
+ "OPENAI_EMBEDDING_MODEL": "text-embedding-3-large"
12
+ }
13
+ }
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "mcpServers": {
3
+ "fdp-agent-memory": {
4
+ "command": "fam",
5
+ "args": ["start"],
6
+ "env": {
7
+ "MONGODB_URI": "mongodb://127.0.0.1:27017",
8
+ "MONGODB_DB_NAME": "fdp_agent_memory",
9
+ "EMBEDDING_PROVIDER": "lmstudio",
10
+ "LMSTUDIO_BASE_URL": "http://127.0.0.1:1234/v1",
11
+ "LMSTUDIO_EMBEDDING_MODEL": "nomic-embed-text-v1.5"
12
+ }
13
+ }
14
+ }
15
+ }