@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.
- package/README.md +345 -0
- package/build/package.json +96 -0
- package/build/src/_assets/mcp-client-config/README.md +29 -0
- package/build/src/_assets/mcp-client-config/claude_desktop_config.json +15 -0
- package/build/src/_assets/mcp-client-config/mcp.json +15 -0
- package/build/src/_collections/config-catalog.const.js +180 -0
- package/build/src/_collections/config-error-codes.const.js +30 -0
- package/build/src/_collections/config-presets.const.js +25 -0
- package/build/src/_collections/error-banners.const.js +100 -0
- package/build/src/_collections/error-codes.const.js +150 -0
- package/build/src/_collections/fam-db-models.const.js +37 -0
- package/build/src/_collections/fam-entry-bootstrap.util.js +80 -0
- package/build/src/_collections/fam-error-context.util.js +90 -0
- package/build/src/_collections/fam-error-factory.util.js +64 -0
- package/build/src/_enums/fam-config-level.type-enum.js +15 -0
- package/build/src/_enums/fam-table.type-enum.js +20 -0
- package/build/src/_integration-tests/_helpers/fam-integration-test-setup.util.js +105 -0
- package/build/src/_models/data-models/fam-codebase.data-model.js +51 -0
- package/build/src/_models/data-models/fam-coding-patterns.data-model.js +58 -0
- package/build/src/_models/data-models/fam-config.data-model.js +68 -0
- package/build/src/_models/data-models/fam-documents.data-model.js +53 -0
- package/build/src/_models/data-models/fam-entry-base-properties.const.js +43 -0
- package/build/src/_models/data-models/fam-entry.data-model.js +81 -0
- package/build/src/_models/data-models/fam-error.data-model.js +88 -0
- package/build/src/_models/data-models/fam-ingest-run.data-model.js +74 -0
- package/build/src/_models/data-models/fam-knowledge.data-model.js +48 -0
- package/build/src/_models/data-models/fam-memory.data-model.js +55 -0
- package/build/src/_models/data-models/fam-reference.data-model.js +67 -0
- package/build/src/_models/data-models/fam-rules.data-model.js +51 -0
- package/build/src/_models/data-models/fam-scope.data-model.js +52 -0
- package/build/src/_models/interfaces/fam-common.interface.js +23 -0
- package/build/src/_models/interfaces/fam-config.interface.js +2 -0
- package/build/src/_models/interfaces/fam-error.interface.js +2 -0
- package/build/src/_modules/embedding/_collections/fam-embedding-pricing.const.js +22 -0
- package/build/src/_modules/embedding/_collections/fam-store-registry.const.js +63 -0
- package/build/src/_modules/embedding/_models/interfaces/fam-embedding-cost.interface.js +10 -0
- package/build/src/_modules/embedding/_models/interfaces/fam-embedding-provider.interface.js +2 -0
- package/build/src/_modules/embedding/_models/interfaces/fam-resolved-provider.interface.js +2 -0
- package/build/src/_modules/embedding/_services/fam-embedding-bootstrap.control-service.js +52 -0
- package/build/src/_modules/embedding/_services/fam-embedding-cost.control-service.js +175 -0
- package/build/src/_modules/embedding/_services/fam-embedding-pipeline.control-service.js +202 -0
- package/build/src/_modules/embedding/_services/fam-embedding-preset.control-service.js +66 -0
- package/build/src/_modules/embedding/_services/fam-embedding.control-service.js +253 -0
- package/build/src/_modules/embedding/_services/fam-entry.data-service.js +64 -0
- package/build/src/_modules/embedding/_services/fam-lmstudio-embedding.provider.js +112 -0
- package/build/src/_modules/embedding/_services/fam-mock-embedding.provider.js +64 -0
- package/build/src/_modules/embedding/_services/fam-openai-embedding.provider.js +64 -0
- package/build/src/_modules/embedding/_services/fam-vector-search.control-service.js +244 -0
- package/build/src/_modules/embedding/index.js +40 -0
- package/build/src/_modules/ingest/_collections/fam-content-hash.util.js +35 -0
- package/build/src/_modules/ingest/_collections/fam-file-routing.util.js +95 -0
- package/build/src/_modules/ingest/_collections/fam-glob-match.util.js +84 -0
- package/build/src/_modules/ingest/_collections/fam-md-chunker.util.js +164 -0
- package/build/src/_modules/ingest/_collections/fam-scan-path.util.js +91 -0
- package/build/src/_modules/ingest/_collections/fam-secret-exclude.util.js +54 -0
- package/build/src/_modules/ingest/_collections/fam-sliding-chunker.util.js +76 -0
- package/build/src/_modules/ingest/_collections/fam-ts-chunker.util.js +316 -0
- package/build/src/_modules/ingest/_models/interfaces/fam-ingest.interface.js +2 -0
- package/build/src/_modules/ingest/_services/fam-chunker.control-service.js +114 -0
- package/build/src/_modules/ingest/_services/fam-delta-compare.util.js +74 -0
- package/build/src/_modules/ingest/_services/fam-ingest-run.data-service.js +85 -0
- package/build/src/_modules/ingest/_services/fam-ingest.control-service.js +384 -0
- package/build/src/_modules/ingest/_services/fam-scan.control-service.js +211 -0
- package/build/src/_modules/ingest/index.js +46 -0
- package/build/src/_modules/mcp/_collections/fam-core-tools.const.js +186 -0
- package/build/src/_modules/mcp/_models/interfaces/fam-mcp.interface.js +31 -0
- package/build/src/_modules/mcp/_services/fam-capabilities-tool.service.js +111 -0
- package/build/src/_modules/mcp/_services/fam-capability-registry.service.js +1180 -0
- package/build/src/_modules/mcp/_services/fam-mcp-adapter.service.js +123 -0
- package/build/src/_modules/mcp/_services/fam-mcp-server.service.js +69 -0
- package/build/src/_modules/mcp/_services/fam-read-tool.service.js +99 -0
- package/build/src/_modules/mcp/_services/fam-write-tool.service.js +460 -0
- package/build/src/_modules/mcp/index.js +35 -0
- package/build/src/_modules/migration/_collections/fam-claude-mem-normalize.util.js +166 -0
- package/build/src/_modules/migration/_collections/fam-import-content-hash.util.js +38 -0
- package/build/src/_modules/migration/_collections/fam-target-mapping.util.js +90 -0
- package/build/src/_modules/migration/_enums/fam-claude-mem-source.type-enum.js +20 -0
- package/build/src/_modules/migration/_models/interfaces/fam-claude-mem.interface.js +26 -0
- package/build/src/_modules/migration/_services/fam-claude-mem-export-reader.service.js +134 -0
- package/build/src/_modules/migration/_services/fam-claude-mem-import.control-service.js +533 -0
- package/build/src/_modules/migration/_services/fam-claude-mem-sqlite-reader.service.js +144 -0
- package/build/src/_modules/migration/_services/fam-claude-mem-worker-reader.service.js +115 -0
- package/build/src/_modules/migration/_services/fam-import-dedup.data-service.js +102 -0
- package/build/src/_modules/migration/index.js +38 -0
- package/build/src/_modules/retrieval/_models/interfaces/fam-retrieval.interface.js +2 -0
- package/build/src/_modules/retrieval/_services/fam-retrieval-candidate.data-service.js +67 -0
- package/build/src/_modules/retrieval/_services/fam-retrieval-suggestions.util.js +182 -0
- package/build/src/_modules/retrieval/_services/fam-retrieval.control-service.js +282 -0
- package/build/src/_modules/retrieval/index.js +22 -0
- package/build/src/_modules/scope-reference/_collections/fam-fuzzy-match.util.js +86 -0
- package/build/src/_modules/scope-reference/_collections/fam-scope-normalize.util.js +47 -0
- package/build/src/_modules/scope-reference/_models/interfaces/fam-reference-resolution.interface.js +2 -0
- package/build/src/_modules/scope-reference/_models/interfaces/fam-resolution-trace.interface.js +2 -0
- package/build/src/_modules/scope-reference/_services/fam-reference.data-service.js +179 -0
- package/build/src/_modules/scope-reference/_services/fam-scope-resolver.control-service.js +473 -0
- package/build/src/_modules/scope-reference/_services/fam-scope.data-service.js +215 -0
- package/build/src/_modules/scope-reference/index.js +26 -0
- package/build/src/_routes/server/api/api.controller.js +400 -0
- package/build/src/_routes/server/client-app/client-app.control-service.js +132 -0
- package/build/src/_routes/server/client-app/client-app.controller.js +35 -0
- package/build/src/_routes/server/config/config.control-service.js +476 -0
- package/build/src/_routes/server/config/config.data-service.js +49 -0
- package/build/src/_routes/server/errors/errors.control-service.js +123 -0
- package/build/src/_routes/server/errors/errors.controller.js +65 -0
- package/build/src/_routes/server/errors/errors.data-service.js +80 -0
- package/build/src/_routes/server/server-status/server-status.control-service.js +19 -0
- package/build/src/_routes/server/server-status/server-status.controller.js +39 -0
- package/build/src/app.server.js +122 -0
- package/build/src/environments/environment.js +20 -0
- package/build/src/index.js +18 -0
- package/client-dist/chunk-GHKRM4SM.js +1 -0
- package/client-dist/chunk-LMTL7GA3.js +575 -0
- package/client-dist/index.html +17 -0
- package/client-dist/main-2KWB3QYK.js +2 -0
- package/client-dist/polyfills-HGDOEU5L.js +2 -0
- package/client-dist/styles-3J7JD5YE.css +1 -0
- 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
|
+
}
|