traqr-memory-mcp 0.1.4 → 0.1.5
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 +138 -65
- package/dist/cli/config-templates.d.ts +23 -0
- package/dist/cli/config-templates.d.ts.map +1 -0
- package/dist/cli/config-templates.js +66 -0
- package/dist/cli/config-templates.js.map +1 -0
- package/dist/cli/detect-client.d.ts +14 -0
- package/dist/cli/detect-client.d.ts.map +1 -0
- package/dist/cli/detect-client.js +40 -0
- package/dist/cli/detect-client.js.map +1 -0
- package/dist/cli/install.d.ts +10 -0
- package/dist/cli/install.d.ts.map +1 -0
- package/dist/cli/install.js +223 -0
- package/dist/cli/install.js.map +1 -0
- package/dist/cli/instructions.d.ts +10 -0
- package/dist/cli/instructions.d.ts.map +1 -0
- package/dist/cli/instructions.js +22 -0
- package/dist/cli/instructions.js.map +1 -0
- package/dist/cli/setup-db.d.ts +10 -0
- package/dist/cli/setup-db.d.ts.map +1 -0
- package/dist/cli/setup-db.js +114 -0
- package/dist/cli/setup-db.js.map +1 -0
- package/dist/cli/verify.d.ts +9 -0
- package/dist/cli/verify.d.ts.map +1 -0
- package/dist/cli/verify.js +133 -0
- package/dist/cli/verify.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -1,68 +1,114 @@
|
|
|
1
|
-
#
|
|
1
|
+
# traqr-memory-mcp
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
MCP server for persistent AI agent memory. 10 tools, Postgres + pgvector, multi-strategy retrieval (semantic + BM25 + RRF). Works with Claude Code, Cursor, Codex, and any MCP client.
|
|
4
4
|
|
|
5
|
-
## Quick Start
|
|
5
|
+
## Quick Start
|
|
6
6
|
|
|
7
7
|
### 1. Set Up Your Database
|
|
8
8
|
|
|
9
|
-
**
|
|
9
|
+
**Supabase (easiest, free tier)**
|
|
10
10
|
1. Create a project at [supabase.com](https://supabase.com)
|
|
11
11
|
2. Go to SQL Editor, paste contents of `setup.sql`, run
|
|
12
12
|
3. Copy your project URL + service role key from Settings > API
|
|
13
13
|
|
|
14
|
-
**
|
|
15
|
-
1.
|
|
16
|
-
2.
|
|
17
|
-
3. Run setup.sql via psql: `psql $DATABASE_URL -f setup.sql`
|
|
14
|
+
**Postgres (RDS, Aurora, Docker, any Postgres 15+)**
|
|
15
|
+
1. Enable pgvector: `CREATE EXTENSION vector;`
|
|
16
|
+
2. Run setup.sql: `psql $DATABASE_URL -f setup.sql`
|
|
18
17
|
|
|
19
|
-
**
|
|
18
|
+
**Docker (local dev)**
|
|
20
19
|
```bash
|
|
21
|
-
docker run -d --name traqrdb
|
|
22
|
-
-e POSTGRES_PASSWORD=postgres \
|
|
23
|
-
-p 5432:5432 \
|
|
24
|
-
pgvector/pgvector:pg16
|
|
20
|
+
docker run -d --name traqrdb -e POSTGRES_PASSWORD=postgres -p 5432:5432 pgvector/pgvector:pg16
|
|
25
21
|
psql postgresql://postgres:postgres@localhost:5432/postgres -f setup.sql
|
|
26
22
|
```
|
|
27
23
|
|
|
28
|
-
### 2.
|
|
24
|
+
### 2. Add to Your MCP Client
|
|
29
25
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
26
|
+
<!-- AI agents: copy the appropriate JSON block below into the user's MCP config -->
|
|
27
|
+
|
|
28
|
+
**Supabase + OpenAI** (most common)
|
|
29
|
+
```json
|
|
30
|
+
{
|
|
31
|
+
"traqr-memory": {
|
|
32
|
+
"command": "npx",
|
|
33
|
+
"args": ["traqr-memory-mcp"],
|
|
34
|
+
"env": {
|
|
35
|
+
"SUPABASE_URL": "https://xxx.supabase.co",
|
|
36
|
+
"SUPABASE_SERVICE_ROLE_KEY": "eyJ...",
|
|
37
|
+
"OPENAI_API_KEY": "sk-..."
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Postgres + OpenAI**
|
|
44
|
+
```json
|
|
45
|
+
{
|
|
46
|
+
"traqr-memory": {
|
|
47
|
+
"command": "npx",
|
|
48
|
+
"args": ["-p", "pg", "traqr-memory-mcp"],
|
|
49
|
+
"env": {
|
|
50
|
+
"DATABASE_URL": "postgresql://user:pass@host:5432/dbname",
|
|
51
|
+
"OPENAI_API_KEY": "sk-..."
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**Postgres + Amazon Bedrock** (enterprise/AWS)
|
|
58
|
+
```json
|
|
59
|
+
{
|
|
60
|
+
"traqr-memory": {
|
|
61
|
+
"command": "npx",
|
|
62
|
+
"args": ["-p", "@aws-sdk/client-bedrock-runtime", "-p", "pg", "traqr-memory-mcp"],
|
|
63
|
+
"env": {
|
|
64
|
+
"DATABASE_URL": "postgresql://user:pass@host:5432/dbname",
|
|
65
|
+
"EMBEDDING_PROVIDER": "bedrock",
|
|
66
|
+
"EMBEDDING_MODEL": "amazon.nova-embed-v1:0",
|
|
67
|
+
"AWS_REGION": "us-east-1"
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
44
71
|
```
|
|
45
72
|
|
|
46
|
-
|
|
73
|
+
**Supabase + Gemini** (free embeddings)
|
|
74
|
+
```json
|
|
75
|
+
{
|
|
76
|
+
"traqr-memory": {
|
|
77
|
+
"command": "npx",
|
|
78
|
+
"args": ["traqr-memory-mcp"],
|
|
79
|
+
"env": {
|
|
80
|
+
"SUPABASE_URL": "https://xxx.supabase.co",
|
|
81
|
+
"SUPABASE_SERVICE_ROLE_KEY": "eyJ...",
|
|
82
|
+
"GOOGLE_API_KEY": "AIza..."
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
```
|
|
47
87
|
|
|
48
|
-
|
|
88
|
+
**No embeddings** (BM25 keyword search only)
|
|
49
89
|
```json
|
|
50
90
|
{
|
|
51
91
|
"traqr-memory": {
|
|
52
92
|
"command": "npx",
|
|
53
93
|
"args": ["traqr-memory-mcp"],
|
|
54
94
|
"env": {
|
|
55
|
-
"
|
|
56
|
-
"
|
|
95
|
+
"SUPABASE_URL": "https://xxx.supabase.co",
|
|
96
|
+
"SUPABASE_SERVICE_ROLE_KEY": "eyJ...",
|
|
97
|
+
"EMBEDDING_PROVIDER": "none"
|
|
57
98
|
}
|
|
58
99
|
}
|
|
59
100
|
}
|
|
60
101
|
```
|
|
61
102
|
|
|
62
|
-
###
|
|
103
|
+
### 3. Verify
|
|
63
104
|
|
|
64
105
|
Use `memory_audit` to check health, then `memory_store` to create your first memory.
|
|
65
106
|
|
|
107
|
+
On startup you should see:
|
|
108
|
+
```
|
|
109
|
+
TraqrDB Memory MCP v0.1.3 | Schema v2 | DB: Supabase | Embeddings: openai/text-embedding-3-small | Ready
|
|
110
|
+
```
|
|
111
|
+
|
|
66
112
|
---
|
|
67
113
|
|
|
68
114
|
## 10 MCP Tools
|
|
@@ -70,65 +116,92 @@ Use `memory_audit` to check health, then `memory_store` to create your first mem
|
|
|
70
116
|
| Tool | Description |
|
|
71
117
|
|------|-------------|
|
|
72
118
|
| `memory_store` | Remember something. Only content required — everything else auto-derived. |
|
|
73
|
-
| `memory_search` | Search memories by meaning. Returns summaries. |
|
|
74
|
-
| `memory_read` | Expand a memory by ID. Full content + version history. |
|
|
119
|
+
| `memory_search` | Search memories by meaning. Returns summaries (~30 tokens each). |
|
|
120
|
+
| `memory_read` | Expand a memory by ID. Full content + metadata + version history. |
|
|
75
121
|
| `memory_enhance` | Deepen understanding. Creates connected memories via triage pipeline. |
|
|
76
122
|
| `memory_browse` | Navigate by facet. Domain > category > summaries. Zero embedding cost. |
|
|
77
123
|
| `memory_context` | Load task-relevant context — principles, preferences, gotchas. |
|
|
78
|
-
| `memory_pulse` | Batch: capture multiple learnings + search
|
|
124
|
+
| `memory_pulse` | Batch: capture multiple learnings + search in one call. |
|
|
79
125
|
| `memory_audit` | System health, stats, quality metrics. |
|
|
80
126
|
| `memory_archive` | Archive stale content that was once correct. |
|
|
81
127
|
| `memory_forget` | Forget incorrect or harmful content permanently. |
|
|
82
128
|
|
|
129
|
+
## Environment Variables
|
|
130
|
+
|
|
131
|
+
### Database (required — choose one)
|
|
132
|
+
|
|
133
|
+
| Variable | Description |
|
|
134
|
+
|----------|-------------|
|
|
135
|
+
| `SUPABASE_URL` | Supabase project URL (e.g., `https://xxx.supabase.co`) |
|
|
136
|
+
| `SUPABASE_SERVICE_ROLE_KEY` | Supabase service role key (not anon key) |
|
|
137
|
+
| `DATABASE_URL` | Raw Postgres connection string. Requires `npm install pg`. |
|
|
138
|
+
|
|
139
|
+
### Embedding Provider (choose one)
|
|
140
|
+
|
|
141
|
+
| Variable | Provider | Notes |
|
|
142
|
+
|----------|----------|-------|
|
|
143
|
+
| `OPENAI_API_KEY` | OpenAI | text-embedding-3-small, 1536 dims. $0.02/1M tokens. |
|
|
144
|
+
| `GOOGLE_API_KEY` | Gemini | gemini-embedding-001, 1536 dims. Free tier available. |
|
|
145
|
+
| `EMBEDDING_PROVIDER=bedrock` | Amazon Bedrock | Requires AWS credentials (IAM role, env vars, or ~/.aws/credentials). |
|
|
146
|
+
| `EMBEDDING_PROVIDER=ollama` | Ollama | Local models. Set `OLLAMA_BASE_URL` if not localhost:11434. |
|
|
147
|
+
| `EMBEDDING_PROVIDER=none` | None | BM25 keyword search only. No API key needed. |
|
|
148
|
+
|
|
149
|
+
### Provider-Specific
|
|
150
|
+
|
|
151
|
+
| Variable | When | Description |
|
|
152
|
+
|----------|------|-------------|
|
|
153
|
+
| `EMBEDDING_PROVIDER` | Always | Explicit provider selection: `openai`, `gemini`, `bedrock`, `ollama`, `none`. Auto-detects from API keys if not set. |
|
|
154
|
+
| `EMBEDDING_MODEL` | Bedrock/Ollama | Override default model (e.g., `amazon.nova-embed-v1:0`, `nomic-embed-text`) |
|
|
155
|
+
| `EMBEDDING_DIMENSIONS` | Bedrock/Ollama | Override embedding dimensions (default: 1536 for Bedrock, 768 for Ollama) |
|
|
156
|
+
| `OPENAI_BASE_URL` | OpenAI | Custom base URL for corporate proxies or compatible APIs |
|
|
157
|
+
| `OLLAMA_BASE_URL` | Ollama | Ollama server URL (default: `http://localhost:11434`) |
|
|
158
|
+
| `AWS_REGION` | Bedrock | AWS region (default: `us-east-1`) |
|
|
159
|
+
|
|
160
|
+
### Optional
|
|
161
|
+
|
|
162
|
+
| Variable | Description |
|
|
163
|
+
|----------|-------------|
|
|
164
|
+
| `COHERE_API_KEY` | Cohere Rerank v3.5 (quality boost for search results) |
|
|
165
|
+
| `TRAQR_USER_ID` | Override default user ID (for multi-user setups) |
|
|
166
|
+
| `TRAQR_PROJECT_ID` | Override default project ID |
|
|
167
|
+
|
|
83
168
|
## What's Inside
|
|
84
169
|
|
|
85
170
|
**Schema** (created by `setup.sql`):
|
|
86
|
-
- `traqr_memories` — content, embeddings, lifecycle, dual tsvectors
|
|
87
|
-
- `memory_relationships` — graph edges between memories
|
|
171
|
+
- `traqr_memories` — content, embeddings, lifecycle metadata, dual tsvectors for BM25
|
|
172
|
+
- `memory_relationships` — typed graph edges between memories
|
|
88
173
|
- `memory_entities` — extracted entities with embeddings
|
|
89
174
|
- `memory_entity_links` — memory-to-entity junction table
|
|
90
175
|
- 12+ indexes including partial HNSW, BM25 GIN, lifecycle
|
|
91
|
-
- 10+
|
|
176
|
+
- 10+ SQL functions for search, BM25, temporal, graph, confidence decay
|
|
92
177
|
|
|
93
178
|
**Intelligence** (in the TypeScript package):
|
|
94
179
|
- Multi-strategy retrieval: semantic + BM25 > RRF fusion > optional Cohere rerank
|
|
95
180
|
- 3-zone cosine triage: NOOP (>=0.90), ADD (<0.60), borderline (GPT-4o-mini decision)
|
|
96
181
|
- Type-aware lifecycle: facts invalidate, preferences supersede, patterns coexist
|
|
97
|
-
- Entity extraction: multi-signal canonicalization (name > ILIKE > embedding)
|
|
98
|
-
-
|
|
182
|
+
- Entity extraction: multi-signal canonicalization (exact name > ILIKE > embedding similarity)
|
|
183
|
+
- Citation-aware decay: frequently cited memories resist archival
|
|
99
184
|
|
|
100
185
|
## Graceful Degradation
|
|
101
186
|
|
|
102
|
-
|
|
|
103
|
-
|
|
104
|
-
|
|
|
105
|
-
|
|
|
187
|
+
| Configuration | Search Behavior | Entity Behavior |
|
|
188
|
+
|---------------|----------------|-----------------|
|
|
189
|
+
| OpenAI/Gemini/Bedrock + Cohere | Full: semantic + BM25 + RRF + Cohere rerank | Full: name + fuzzy + embedding matching |
|
|
190
|
+
| OpenAI/Gemini/Bedrock (no Cohere) | Semantic + BM25 + RRF fusion | Full: name + fuzzy + embedding matching |
|
|
191
|
+
| Ollama (local) | Semantic + BM25 + RRF fusion | Full: name + fuzzy + embedding matching |
|
|
192
|
+
| `EMBEDDING_PROVIDER=none` | BM25 keyword search only | Name + fuzzy matching only (no embedding) |
|
|
106
193
|
|
|
107
|
-
##
|
|
194
|
+
## Troubleshooting
|
|
108
195
|
|
|
109
|
-
|
|
110
|
-
import { storeMemory, searchMemories, triageAndStore } from '@traqr/memory'
|
|
196
|
+
If something goes wrong, the MCP server prints structured error messages with fix steps. Common issues:
|
|
111
197
|
|
|
112
|
-
|
|
113
|
-
await storeMemory({ content: 'Always use bun', sourceType: 'manual' })
|
|
198
|
+
**"schema_version table not found"** — Run `setup.sql` on your database. For Supabase: paste into SQL Editor. For Postgres: `psql $DATABASE_URL -f setup.sql`.
|
|
114
199
|
|
|
115
|
-
|
|
116
|
-
const results = await searchMemories('package manager', { limit: 5 })
|
|
200
|
+
**"SUPABASE_SERVICE_ROLE_KEY is missing"** — Find it at Supabase Dashboard > Settings > API > service_role (not the anon key).
|
|
117
201
|
|
|
118
|
-
|
|
119
|
-
const result = await triageAndStore({ content: '...', sourceType: 'session' })
|
|
120
|
-
// result.zone: 'noop' | 'add' | 'borderline'
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
## Environment Variables
|
|
202
|
+
**"Raw Postgres requires the pg package"** — Install it: `npm install pg` or add `-p pg` to your npx args.
|
|
124
203
|
|
|
125
|
-
|
|
126
|
-
|----------|----------|-------------|
|
|
127
|
-
| `DATABASE_URL` or `SUPABASE_URL` | Yes | Postgres connection |
|
|
128
|
-
| `SUPABASE_SERVICE_ROLE_KEY` | Supabase only | Service role key |
|
|
129
|
-
| `OPENAI_API_KEY` | Recommended | OpenAI embeddings |
|
|
130
|
-
| `GOOGLE_API_KEY` | Alternative | Gemini Embedding 2 (free) |
|
|
131
|
-
| `COHERE_API_KEY` | No | Cohere Rerank (quality boost) |
|
|
204
|
+
**Embedding errors** — Check your API key is valid. For Bedrock, ensure AWS credentials are configured (IAM role, env vars, or `~/.aws/credentials`).
|
|
132
205
|
|
|
133
206
|
## License
|
|
134
207
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Config Templates
|
|
3
|
+
*
|
|
4
|
+
* Builds the JSON config block that goes into the user's MCP client config.
|
|
5
|
+
* Templates match the README exactly — same args, same env vars.
|
|
6
|
+
*/
|
|
7
|
+
export type DbProvider = 'supabase' | 'postgres';
|
|
8
|
+
export type EmbeddingProvider = 'openai' | 'gemini' | 'bedrock' | 'ollama' | 'none';
|
|
9
|
+
export interface WizardAnswers {
|
|
10
|
+
db: DbProvider;
|
|
11
|
+
embedding: EmbeddingProvider;
|
|
12
|
+
supabaseUrl?: string;
|
|
13
|
+
supabaseKey?: string;
|
|
14
|
+
databaseUrl?: string;
|
|
15
|
+
openaiKey?: string;
|
|
16
|
+
googleKey?: string;
|
|
17
|
+
awsRegion?: string;
|
|
18
|
+
ollamaUrl?: string;
|
|
19
|
+
ollamaModel?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function buildMcpConfig(answers: WizardAnswers): Record<string, any>;
|
|
22
|
+
export declare function formatConfig(config: Record<string, any>): string;
|
|
23
|
+
//# sourceMappingURL=config-templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-templates.d.ts","sourceRoot":"","sources":["../../src/cli/config-templates.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU,CAAA;AAChD,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAA;AAEnF,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,UAAU,CAAA;IACd,SAAS,EAAE,iBAAiB,CAAA;IAE5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAiD1E;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAEhE"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Config Templates
|
|
3
|
+
*
|
|
4
|
+
* Builds the JSON config block that goes into the user's MCP client config.
|
|
5
|
+
* Templates match the README exactly — same args, same env vars.
|
|
6
|
+
*/
|
|
7
|
+
export function buildMcpConfig(answers) {
|
|
8
|
+
const args = [];
|
|
9
|
+
// Optional peer deps via npx -p
|
|
10
|
+
if (answers.embedding === 'bedrock')
|
|
11
|
+
args.push('-p', '@aws-sdk/client-bedrock-runtime');
|
|
12
|
+
if (answers.db === 'postgres')
|
|
13
|
+
args.push('-p', 'pg');
|
|
14
|
+
args.push('traqr-memory-mcp');
|
|
15
|
+
// Env vars
|
|
16
|
+
const env = {};
|
|
17
|
+
// DB
|
|
18
|
+
if (answers.db === 'supabase') {
|
|
19
|
+
if (answers.supabaseUrl)
|
|
20
|
+
env.SUPABASE_URL = answers.supabaseUrl;
|
|
21
|
+
if (answers.supabaseKey)
|
|
22
|
+
env.SUPABASE_SERVICE_ROLE_KEY = answers.supabaseKey;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
if (answers.databaseUrl)
|
|
26
|
+
env.DATABASE_URL = answers.databaseUrl;
|
|
27
|
+
}
|
|
28
|
+
// Embedding
|
|
29
|
+
switch (answers.embedding) {
|
|
30
|
+
case 'openai':
|
|
31
|
+
if (answers.openaiKey)
|
|
32
|
+
env.OPENAI_API_KEY = answers.openaiKey;
|
|
33
|
+
break;
|
|
34
|
+
case 'gemini':
|
|
35
|
+
if (answers.googleKey)
|
|
36
|
+
env.GOOGLE_API_KEY = answers.googleKey;
|
|
37
|
+
break;
|
|
38
|
+
case 'bedrock':
|
|
39
|
+
env.EMBEDDING_PROVIDER = 'bedrock';
|
|
40
|
+
env.EMBEDDING_MODEL = 'amazon.nova-embed-v1:0';
|
|
41
|
+
if (answers.awsRegion)
|
|
42
|
+
env.AWS_REGION = answers.awsRegion;
|
|
43
|
+
break;
|
|
44
|
+
case 'ollama':
|
|
45
|
+
env.EMBEDDING_PROVIDER = 'ollama';
|
|
46
|
+
if (answers.ollamaUrl)
|
|
47
|
+
env.OLLAMA_BASE_URL = answers.ollamaUrl;
|
|
48
|
+
if (answers.ollamaModel)
|
|
49
|
+
env.EMBEDDING_MODEL = answers.ollamaModel;
|
|
50
|
+
break;
|
|
51
|
+
case 'none':
|
|
52
|
+
env.EMBEDDING_PROVIDER = 'none';
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
'traqr-memory': {
|
|
57
|
+
command: 'npx',
|
|
58
|
+
args,
|
|
59
|
+
env,
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export function formatConfig(config) {
|
|
64
|
+
return JSON.stringify(config, null, 2);
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=config-templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-templates.js","sourceRoot":"","sources":["../../src/cli/config-templates.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoBH,MAAM,UAAU,cAAc,CAAC,OAAsB;IACnD,MAAM,IAAI,GAAa,EAAE,CAAA;IAEzB,gCAAgC;IAChC,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,iCAAiC,CAAC,CAAA;IACvF,IAAI,OAAO,CAAC,EAAE,KAAK,UAAU;QAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACpD,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAE7B,WAAW;IACX,MAAM,GAAG,GAA2B,EAAE,CAAA;IAEtC,KAAK;IACL,IAAI,OAAO,CAAC,EAAE,KAAK,UAAU,EAAE,CAAC;QAC9B,IAAI,OAAO,CAAC,WAAW;YAAE,GAAG,CAAC,YAAY,GAAG,OAAO,CAAC,WAAW,CAAA;QAC/D,IAAI,OAAO,CAAC,WAAW;YAAE,GAAG,CAAC,yBAAyB,GAAG,OAAO,CAAC,WAAW,CAAA;IAC9E,CAAC;SAAM,CAAC;QACN,IAAI,OAAO,CAAC,WAAW;YAAE,GAAG,CAAC,YAAY,GAAG,OAAO,CAAC,WAAW,CAAA;IACjE,CAAC;IAED,YAAY;IACZ,QAAQ,OAAO,CAAC,SAAS,EAAE,CAAC;QAC1B,KAAK,QAAQ;YACX,IAAI,OAAO,CAAC,SAAS;gBAAE,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC,SAAS,CAAA;YAC7D,MAAK;QACP,KAAK,QAAQ;YACX,IAAI,OAAO,CAAC,SAAS;gBAAE,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC,SAAS,CAAA;YAC7D,MAAK;QACP,KAAK,SAAS;YACZ,GAAG,CAAC,kBAAkB,GAAG,SAAS,CAAA;YAClC,GAAG,CAAC,eAAe,GAAG,wBAAwB,CAAA;YAC9C,IAAI,OAAO,CAAC,SAAS;gBAAE,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,CAAA;YACzD,MAAK;QACP,KAAK,QAAQ;YACX,GAAG,CAAC,kBAAkB,GAAG,QAAQ,CAAA;YACjC,IAAI,OAAO,CAAC,SAAS;gBAAE,GAAG,CAAC,eAAe,GAAG,OAAO,CAAC,SAAS,CAAA;YAC9D,IAAI,OAAO,CAAC,WAAW;gBAAE,GAAG,CAAC,eAAe,GAAG,OAAO,CAAC,WAAW,CAAA;YAClE,MAAK;QACP,KAAK,MAAM;YACT,GAAG,CAAC,kBAAkB,GAAG,MAAM,CAAA;YAC/B,MAAK;IACT,CAAC;IAED,OAAO;QACL,cAAc,EAAE;YACd,OAAO,EAAE,KAAK;YACd,IAAI;YACJ,GAAG;SACJ;KACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAA2B;IACtD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AACxC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Client Detection
|
|
3
|
+
*
|
|
4
|
+
* Finds the config file for the user's MCP client so --install
|
|
5
|
+
* can write the traqr-memory server config directly.
|
|
6
|
+
*/
|
|
7
|
+
export interface DetectedClient {
|
|
8
|
+
name: string;
|
|
9
|
+
configPath: string;
|
|
10
|
+
configKey: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function detectMcpClients(): DetectedClient[];
|
|
13
|
+
export declare function readClientConfig(client: DetectedClient): Record<string, any>;
|
|
14
|
+
//# sourceMappingURL=detect-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect-client.d.ts","sourceRoot":"","sources":["../../src/cli/detect-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CAClB;AAsBD,wBAAgB,gBAAgB,IAAI,cAAc,EAAE,CAInD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAM5E"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Client Detection
|
|
3
|
+
*
|
|
4
|
+
* Finds the config file for the user's MCP client so --install
|
|
5
|
+
* can write the traqr-memory server config directly.
|
|
6
|
+
*/
|
|
7
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
8
|
+
import { join } from 'node:path';
|
|
9
|
+
const HOME = process.env.HOME || '';
|
|
10
|
+
const CLIENTS = [
|
|
11
|
+
{
|
|
12
|
+
name: 'Claude Code',
|
|
13
|
+
path: join(HOME, '.claude', 'settings.json'),
|
|
14
|
+
key: 'mcpServers',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: 'Claude Desktop',
|
|
18
|
+
path: join(HOME, 'Library', 'Application Support', 'Claude', 'claude_desktop_config.json'),
|
|
19
|
+
key: 'mcpServers',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'Cursor',
|
|
23
|
+
path: join(process.cwd(), '.cursor', 'mcp.json'),
|
|
24
|
+
key: 'mcpServers',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
export function detectMcpClients() {
|
|
28
|
+
return CLIENTS
|
|
29
|
+
.filter(c => existsSync(c.path))
|
|
30
|
+
.map(c => ({ name: c.name, configPath: c.path, configKey: c.key }));
|
|
31
|
+
}
|
|
32
|
+
export function readClientConfig(client) {
|
|
33
|
+
try {
|
|
34
|
+
return JSON.parse(readFileSync(client.configPath, 'utf-8'));
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return {};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=detect-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect-client.js","sourceRoot":"","sources":["../../src/cli/detect-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAQhC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;AAEnC,MAAM,OAAO,GAAuD;IAClE;QACE,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC;QAC5C,GAAG,EAAE,YAAY;KAClB;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAE,4BAA4B,CAAC;QAC1F,GAAG,EAAE,YAAY;KAClB;IACD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC;QAChD,GAAG,EAAE,YAAY;KAClB;CACF,CAAA;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,OAAO;SACX,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;AACvE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAsB;IACrD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAA;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* --install — Interactive Setup Wizard
|
|
3
|
+
*
|
|
4
|
+
* Detects MCP client, asks 2-3 questions, writes config.
|
|
5
|
+
* Uses @clack/prompts for polished interactive UI.
|
|
6
|
+
*
|
|
7
|
+
* Usage: npx traqr-memory-mcp --install
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/cli/install.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* --install — Interactive Setup Wizard
|
|
3
|
+
*
|
|
4
|
+
* Detects MCP client, asks 2-3 questions, writes config.
|
|
5
|
+
* Uses @clack/prompts for polished interactive UI.
|
|
6
|
+
*
|
|
7
|
+
* Usage: npx traqr-memory-mcp --install
|
|
8
|
+
*/
|
|
9
|
+
import * as p from '@clack/prompts';
|
|
10
|
+
import { writeFileSync } from 'node:fs';
|
|
11
|
+
import { detectMcpClients, readClientConfig } from './detect-client.js';
|
|
12
|
+
import { buildMcpConfig, formatConfig } from './config-templates.js';
|
|
13
|
+
async function run() {
|
|
14
|
+
p.intro('TraqrDB Memory — Setup Wizard');
|
|
15
|
+
// Step 1: Detect MCP clients
|
|
16
|
+
const clients = detectMcpClients();
|
|
17
|
+
let targetClient = null;
|
|
18
|
+
if (clients.length === 1) {
|
|
19
|
+
p.log.info(`Detected ${clients[0].name} at ${clients[0].configPath}`);
|
|
20
|
+
targetClient = clients[0];
|
|
21
|
+
}
|
|
22
|
+
else if (clients.length > 1) {
|
|
23
|
+
const choice = await p.select({
|
|
24
|
+
message: 'Multiple MCP clients detected. Which one?',
|
|
25
|
+
options: [
|
|
26
|
+
...clients.map(c => ({ label: c.name, value: c.configPath })),
|
|
27
|
+
{ label: 'Print config to terminal (manual setup)', value: '__stdout__' },
|
|
28
|
+
],
|
|
29
|
+
});
|
|
30
|
+
if (p.isCancel(choice)) {
|
|
31
|
+
p.cancel('Setup cancelled.');
|
|
32
|
+
process.exit(0);
|
|
33
|
+
}
|
|
34
|
+
if (choice !== '__stdout__') {
|
|
35
|
+
targetClient = clients.find(c => c.configPath === choice) || null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
p.log.warn('No MCP client config detected. Config will be printed to terminal.');
|
|
40
|
+
}
|
|
41
|
+
// Step 2: Database provider
|
|
42
|
+
const db = await p.select({
|
|
43
|
+
message: 'Where is your database?',
|
|
44
|
+
options: [
|
|
45
|
+
{ label: 'Supabase', value: 'supabase', hint: 'easiest — free tier at supabase.com' },
|
|
46
|
+
{ label: 'Postgres', value: 'postgres', hint: 'RDS, Aurora, Docker, any Postgres 15+ with pgvector' },
|
|
47
|
+
{ label: "I don't have one yet", value: 'none', hint: 'we\'ll help you set one up' },
|
|
48
|
+
],
|
|
49
|
+
});
|
|
50
|
+
if (p.isCancel(db)) {
|
|
51
|
+
p.cancel('Setup cancelled.');
|
|
52
|
+
process.exit(0);
|
|
53
|
+
}
|
|
54
|
+
if (db === 'none') {
|
|
55
|
+
p.log.info('Create a free Supabase project at https://supabase.com');
|
|
56
|
+
p.log.info('Then run this wizard again with your project URL and service role key.');
|
|
57
|
+
p.outro('Come back when your database is ready!');
|
|
58
|
+
process.exit(0);
|
|
59
|
+
}
|
|
60
|
+
// Step 3: Collect DB credentials
|
|
61
|
+
const answers = { db: db, embedding: 'none' };
|
|
62
|
+
if (db === 'supabase') {
|
|
63
|
+
const url = await p.text({
|
|
64
|
+
message: 'Supabase project URL',
|
|
65
|
+
placeholder: 'https://xxx.supabase.co',
|
|
66
|
+
validate: (v) => v && !v.includes('supabase.co') ? 'Should be a Supabase URL (https://xxx.supabase.co)' : undefined,
|
|
67
|
+
});
|
|
68
|
+
if (p.isCancel(url)) {
|
|
69
|
+
p.cancel('Setup cancelled.');
|
|
70
|
+
process.exit(0);
|
|
71
|
+
}
|
|
72
|
+
answers.supabaseUrl = url;
|
|
73
|
+
const key = await p.text({
|
|
74
|
+
message: 'Supabase service role key',
|
|
75
|
+
placeholder: 'eyJ...',
|
|
76
|
+
validate: (v) => v && !v.startsWith('eyJ') ? 'Service role key starts with eyJ (not the anon key)' : undefined,
|
|
77
|
+
});
|
|
78
|
+
if (p.isCancel(key)) {
|
|
79
|
+
p.cancel('Setup cancelled.');
|
|
80
|
+
process.exit(0);
|
|
81
|
+
}
|
|
82
|
+
answers.supabaseKey = key;
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
const url = await p.text({
|
|
86
|
+
message: 'Postgres connection string',
|
|
87
|
+
placeholder: 'postgresql://user:pass@host:5432/dbname',
|
|
88
|
+
validate: (v) => v && !v.startsWith('postgres') ? 'Should start with postgresql:// or postgres://' : undefined,
|
|
89
|
+
});
|
|
90
|
+
if (p.isCancel(url)) {
|
|
91
|
+
p.cancel('Setup cancelled.');
|
|
92
|
+
process.exit(0);
|
|
93
|
+
}
|
|
94
|
+
answers.databaseUrl = url;
|
|
95
|
+
}
|
|
96
|
+
// Step 4: Embedding provider
|
|
97
|
+
const embedding = await p.select({
|
|
98
|
+
message: 'Which embedding provider?',
|
|
99
|
+
options: [
|
|
100
|
+
{ label: 'OpenAI', value: 'openai', hint: 'text-embedding-3-small — $0.02/1M tokens' },
|
|
101
|
+
{ label: 'Gemini', value: 'gemini', hint: 'gemini-embedding-001 — free tier available' },
|
|
102
|
+
{ label: 'Amazon Bedrock', value: 'bedrock', hint: 'Nova Embeddings — uses AWS credentials' },
|
|
103
|
+
{ label: 'Ollama', value: 'ollama', hint: 'local models — no API key needed' },
|
|
104
|
+
{ label: 'None', value: 'none', hint: 'BM25 keyword search only — no embeddings' },
|
|
105
|
+
],
|
|
106
|
+
});
|
|
107
|
+
if (p.isCancel(embedding)) {
|
|
108
|
+
p.cancel('Setup cancelled.');
|
|
109
|
+
process.exit(0);
|
|
110
|
+
}
|
|
111
|
+
answers.embedding = embedding;
|
|
112
|
+
// Step 5: Collect embedding credentials
|
|
113
|
+
switch (embedding) {
|
|
114
|
+
case 'openai': {
|
|
115
|
+
const key = await p.text({
|
|
116
|
+
message: 'OpenAI API key',
|
|
117
|
+
placeholder: 'sk-...',
|
|
118
|
+
validate: (v) => v && !v.startsWith('sk-') ? 'OpenAI keys start with sk-' : undefined,
|
|
119
|
+
});
|
|
120
|
+
if (p.isCancel(key)) {
|
|
121
|
+
p.cancel('Setup cancelled.');
|
|
122
|
+
process.exit(0);
|
|
123
|
+
}
|
|
124
|
+
answers.openaiKey = key;
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
case 'gemini': {
|
|
128
|
+
const key = await p.text({
|
|
129
|
+
message: 'Google API key',
|
|
130
|
+
placeholder: 'AIza...',
|
|
131
|
+
});
|
|
132
|
+
if (p.isCancel(key)) {
|
|
133
|
+
p.cancel('Setup cancelled.');
|
|
134
|
+
process.exit(0);
|
|
135
|
+
}
|
|
136
|
+
answers.googleKey = key;
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
case 'bedrock': {
|
|
140
|
+
const region = await p.text({
|
|
141
|
+
message: 'AWS region',
|
|
142
|
+
placeholder: 'us-east-1',
|
|
143
|
+
initialValue: 'us-east-1',
|
|
144
|
+
});
|
|
145
|
+
if (p.isCancel(region)) {
|
|
146
|
+
p.cancel('Setup cancelled.');
|
|
147
|
+
process.exit(0);
|
|
148
|
+
}
|
|
149
|
+
answers.awsRegion = region;
|
|
150
|
+
p.log.info('Bedrock uses your AWS credentials (IAM role, env vars, or ~/.aws/credentials).');
|
|
151
|
+
p.log.info('Make sure the role has bedrock:InvokeModel permission.');
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
case 'ollama': {
|
|
155
|
+
const url = await p.text({
|
|
156
|
+
message: 'Ollama URL',
|
|
157
|
+
placeholder: 'http://localhost:11434',
|
|
158
|
+
initialValue: 'http://localhost:11434',
|
|
159
|
+
});
|
|
160
|
+
if (p.isCancel(url)) {
|
|
161
|
+
p.cancel('Setup cancelled.');
|
|
162
|
+
process.exit(0);
|
|
163
|
+
}
|
|
164
|
+
answers.ollamaUrl = url;
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
// 'none' needs no credentials
|
|
168
|
+
}
|
|
169
|
+
// Step 6: Build config
|
|
170
|
+
const config = buildMcpConfig(answers);
|
|
171
|
+
const configJson = formatConfig(config);
|
|
172
|
+
// Step 7: Write or print config
|
|
173
|
+
if (targetClient) {
|
|
174
|
+
const existingConfig = readClientConfig(targetClient);
|
|
175
|
+
const servers = existingConfig[targetClient.configKey] || {};
|
|
176
|
+
if (servers['traqr-memory']) {
|
|
177
|
+
const overwrite = await p.confirm({
|
|
178
|
+
message: 'traqr-memory already exists in your config. Overwrite?',
|
|
179
|
+
});
|
|
180
|
+
if (p.isCancel(overwrite) || !overwrite) {
|
|
181
|
+
p.log.info('Existing config preserved. Here\'s the new config for reference:');
|
|
182
|
+
console.log('\n' + configJson + '\n');
|
|
183
|
+
p.outro('Add it manually if needed.');
|
|
184
|
+
process.exit(0);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
servers['traqr-memory'] = config['traqr-memory'];
|
|
188
|
+
existingConfig[targetClient.configKey] = servers;
|
|
189
|
+
try {
|
|
190
|
+
writeFileSync(targetClient.configPath, JSON.stringify(existingConfig, null, 2) + '\n');
|
|
191
|
+
p.log.success(`Written to ${targetClient.configPath}`);
|
|
192
|
+
}
|
|
193
|
+
catch (err) {
|
|
194
|
+
p.log.error(`Failed to write config: ${err instanceof Error ? err.message : err}`);
|
|
195
|
+
p.log.info('Add this to your MCP config manually:');
|
|
196
|
+
console.log('\n' + configJson + '\n');
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
p.log.info('Add this to your MCP client config:');
|
|
201
|
+
console.log('\n' + configJson + '\n');
|
|
202
|
+
}
|
|
203
|
+
// Step 8: Next steps
|
|
204
|
+
p.log.step('Next steps:');
|
|
205
|
+
if (db === 'supabase') {
|
|
206
|
+
p.log.info('1. Run setup.sql in your Supabase SQL Editor');
|
|
207
|
+
p.log.info(' Get it: npx traqr-memory-mcp --setup');
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
p.log.info('1. Run: npx traqr-memory-mcp --setup');
|
|
211
|
+
p.log.info(' This will create the schema in your Postgres database');
|
|
212
|
+
}
|
|
213
|
+
p.log.info('2. Restart your MCP client');
|
|
214
|
+
p.log.info('3. Run: npx traqr-memory-mcp --verify');
|
|
215
|
+
p.log.info('4. Optional: npx traqr-memory-mcp --print-instructions');
|
|
216
|
+
p.log.info(' Prints a CLAUDE.md section that teaches Claude how to use memory proactively');
|
|
217
|
+
p.outro('Setup complete! Restart your MCP client to connect.');
|
|
218
|
+
}
|
|
219
|
+
run().catch((err) => {
|
|
220
|
+
console.error('Setup failed:', err instanceof Error ? err.message : err);
|
|
221
|
+
process.exit(1);
|
|
222
|
+
});
|
|
223
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/cli/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* --print-instructions — Print MEMORY_INSTRUCTIONS.md to stdout
|
|
3
|
+
*
|
|
4
|
+
* Users paste this into their CLAUDE.md to teach Claude
|
|
5
|
+
* how to use memory proactively.
|
|
6
|
+
*
|
|
7
|
+
* Usage: npx traqr-memory-mcp --print-instructions
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=instructions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../../src/cli/instructions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* --print-instructions — Print MEMORY_INSTRUCTIONS.md to stdout
|
|
3
|
+
*
|
|
4
|
+
* Users paste this into their CLAUDE.md to teach Claude
|
|
5
|
+
* how to use memory proactively.
|
|
6
|
+
*
|
|
7
|
+
* Usage: npx traqr-memory-mcp --print-instructions
|
|
8
|
+
*/
|
|
9
|
+
import { readFileSync } from 'node:fs';
|
|
10
|
+
import { fileURLToPath } from 'node:url';
|
|
11
|
+
import { dirname, join } from 'node:path';
|
|
12
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
13
|
+
try {
|
|
14
|
+
const content = readFileSync(join(__dirname, '..', 'MEMORY_INSTRUCTIONS.md'), 'utf-8');
|
|
15
|
+
console.log(content);
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
console.error('MEMORY_INSTRUCTIONS.md not found.');
|
|
19
|
+
console.error('If installed via npm, it should be at: node_modules/traqr-memory-mcp/MEMORY_INSTRUCTIONS.md');
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=instructions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/cli/instructions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEzC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAEzD,IAAI,CAAC;IACH,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,wBAAwB,CAAC,EAAE,OAAO,CAAC,CAAA;IACtF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;AACtB,CAAC;AAAC,MAAM,CAAC;IACP,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;IAClD,OAAO,CAAC,KAAK,CAAC,6FAA6F,CAAC,CAAA;IAC5G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* --setup — Run setup.sql on configured database
|
|
3
|
+
*
|
|
4
|
+
* For Postgres: executes setup.sql directly via pg.
|
|
5
|
+
* For Supabase: prints the SQL with instructions to paste into SQL Editor.
|
|
6
|
+
*
|
|
7
|
+
* Usage: npx traqr-memory-mcp --setup
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=setup-db.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-db.d.ts","sourceRoot":"","sources":["../../src/cli/setup-db.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* --setup — Run setup.sql on configured database
|
|
3
|
+
*
|
|
4
|
+
* For Postgres: executes setup.sql directly via pg.
|
|
5
|
+
* For Supabase: prints the SQL with instructions to paste into SQL Editor.
|
|
6
|
+
*
|
|
7
|
+
* Usage: npx traqr-memory-mcp --setup
|
|
8
|
+
*/
|
|
9
|
+
import { readFileSync } from 'node:fs';
|
|
10
|
+
import { fileURLToPath } from 'node:url';
|
|
11
|
+
import { dirname, join } from 'node:path';
|
|
12
|
+
import * as p from '@clack/prompts';
|
|
13
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
14
|
+
async function run() {
|
|
15
|
+
p.intro('TraqrDB Memory — Database Setup');
|
|
16
|
+
const setupSqlPath = join(__dirname, '..', 'setup.sql');
|
|
17
|
+
let setupSql;
|
|
18
|
+
try {
|
|
19
|
+
setupSql = readFileSync(setupSqlPath, 'utf-8');
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
p.log.error(`setup.sql not found at ${setupSqlPath}`);
|
|
23
|
+
p.log.info('If installed via npm, it should be at: node_modules/traqr-memory-mcp/setup.sql');
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
const databaseUrl = process.env.DATABASE_URL;
|
|
27
|
+
const supabaseUrl = process.env.SUPABASE_URL;
|
|
28
|
+
if (!databaseUrl && !supabaseUrl) {
|
|
29
|
+
p.log.error('No database configured.');
|
|
30
|
+
p.log.info('Set DATABASE_URL or SUPABASE_URL environment variable, then run again.');
|
|
31
|
+
p.log.info('Or run: npx traqr-memory-mcp --install');
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
if (databaseUrl) {
|
|
35
|
+
// Postgres: execute directly
|
|
36
|
+
p.log.info(`Connecting to Postgres...`);
|
|
37
|
+
let pg;
|
|
38
|
+
try {
|
|
39
|
+
pg = await Function('return import("pg")')();
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
p.log.error('The pg package is required for direct Postgres setup.');
|
|
43
|
+
p.log.info('Install it: npm install pg');
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
const Pool = pg.default?.Pool || pg.Pool;
|
|
47
|
+
const pool = new Pool({ connectionString: databaseUrl });
|
|
48
|
+
try {
|
|
49
|
+
// Check if schema already exists
|
|
50
|
+
try {
|
|
51
|
+
const result = await pool.query('SELECT version FROM schema_version ORDER BY version DESC LIMIT 1');
|
|
52
|
+
if (result.rows.length > 0) {
|
|
53
|
+
const version = result.rows[0].version;
|
|
54
|
+
p.log.success(`Schema v${version} already exists.`);
|
|
55
|
+
const proceed = await p.confirm({
|
|
56
|
+
message: 'Re-run setup.sql anyway? (safe — uses IF NOT EXISTS)',
|
|
57
|
+
});
|
|
58
|
+
if (p.isCancel(proceed) || !proceed) {
|
|
59
|
+
p.outro('Schema is up to date.');
|
|
60
|
+
await pool.end();
|
|
61
|
+
process.exit(0);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// schema_version doesn't exist — fresh database
|
|
67
|
+
p.log.info('Fresh database detected. Running setup.sql...');
|
|
68
|
+
}
|
|
69
|
+
const s = p.spinner();
|
|
70
|
+
s.start('Running setup.sql...');
|
|
71
|
+
await pool.query(setupSql);
|
|
72
|
+
s.stop('Schema created successfully!');
|
|
73
|
+
// Verify
|
|
74
|
+
const result = await pool.query('SELECT version FROM schema_version ORDER BY version DESC LIMIT 1');
|
|
75
|
+
if (result.rows.length > 0) {
|
|
76
|
+
p.log.success(`Schema v${result.rows[0].version} is ready.`);
|
|
77
|
+
}
|
|
78
|
+
await pool.end();
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
p.log.error(`Failed to run setup.sql: ${err instanceof Error ? err.message : err}`);
|
|
82
|
+
p.log.info('Check your DATABASE_URL and ensure pgvector is enabled:');
|
|
83
|
+
p.log.info(' CREATE EXTENSION IF NOT EXISTS vector;');
|
|
84
|
+
await pool.end();
|
|
85
|
+
process.exit(1);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
// Supabase: print instructions
|
|
90
|
+
p.log.info('Supabase detected. Setup.sql must be run via the Supabase SQL Editor.');
|
|
91
|
+
p.log.step('Steps:');
|
|
92
|
+
p.log.info('1. Go to your Supabase project dashboard');
|
|
93
|
+
p.log.info('2. Open SQL Editor (left sidebar)');
|
|
94
|
+
p.log.info('3. Paste the contents of setup.sql');
|
|
95
|
+
p.log.info('4. Click "Run"');
|
|
96
|
+
p.log.info('');
|
|
97
|
+
p.log.info(`setup.sql location: ${setupSqlPath}`);
|
|
98
|
+
p.log.info('');
|
|
99
|
+
const print = await p.confirm({
|
|
100
|
+
message: 'Print setup.sql contents to terminal? (for easy copy-paste)',
|
|
101
|
+
});
|
|
102
|
+
if (!p.isCancel(print) && print) {
|
|
103
|
+
console.log('\n--- BEGIN setup.sql ---\n');
|
|
104
|
+
console.log(setupSql);
|
|
105
|
+
console.log('\n--- END setup.sql ---\n');
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
p.outro('Database setup complete! Run: npx traqr-memory-mcp --verify');
|
|
109
|
+
}
|
|
110
|
+
run().catch((err) => {
|
|
111
|
+
console.error('Setup failed:', err instanceof Error ? err.message : err);
|
|
112
|
+
process.exit(1);
|
|
113
|
+
});
|
|
114
|
+
//# sourceMappingURL=setup-db.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-db.js","sourceRoot":"","sources":["../../src/cli/setup-db.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/cli/verify.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* --verify — Health check + round trip test
|
|
3
|
+
*
|
|
4
|
+
* Verifies the complete setup: DB connection, schema, embeddings, round trip.
|
|
5
|
+
*
|
|
6
|
+
* Usage: npx traqr-memory-mcp --verify
|
|
7
|
+
*/
|
|
8
|
+
import * as p from '@clack/prompts';
|
|
9
|
+
import { configureMemory, getVectorDB, getEmbeddingProvider, storeMemory, searchMemoriesV2 } from '@traqr/memory';
|
|
10
|
+
async function run() {
|
|
11
|
+
p.intro('TraqrDB Memory — Verify Setup');
|
|
12
|
+
// Configure from env
|
|
13
|
+
const supabaseUrl = process.env.SUPABASE_URL;
|
|
14
|
+
const databaseUrl = process.env.DATABASE_URL;
|
|
15
|
+
const supabaseKey = process.env.SUPABASE_SERVICE_ROLE_KEY;
|
|
16
|
+
if (!supabaseUrl && !databaseUrl) {
|
|
17
|
+
p.log.error('No database configured. Set DATABASE_URL or SUPABASE_URL.');
|
|
18
|
+
p.log.info('Run: npx traqr-memory-mcp --install');
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
configureMemory({
|
|
22
|
+
supabaseUrl,
|
|
23
|
+
supabaseKey,
|
|
24
|
+
databaseUrl,
|
|
25
|
+
});
|
|
26
|
+
const checks = { db: false, schema: false, embedding: false, roundTrip: false };
|
|
27
|
+
const dbProvider = supabaseUrl ? 'Supabase' : 'Postgres';
|
|
28
|
+
const ep = getEmbeddingProvider();
|
|
29
|
+
const embeddingInfo = ep.provider === 'none' ? 'None (BM25 only)' : `${ep.provider}/${ep.model}`;
|
|
30
|
+
// Check 1: DB connection
|
|
31
|
+
const s = p.spinner();
|
|
32
|
+
s.start('Checking database connection...');
|
|
33
|
+
try {
|
|
34
|
+
const db = getVectorDB();
|
|
35
|
+
const ok = await db.ping();
|
|
36
|
+
if (!ok)
|
|
37
|
+
throw new Error('ping returned false');
|
|
38
|
+
checks.db = true;
|
|
39
|
+
s.stop(`Database: ${dbProvider} — connected`);
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
s.stop(`Database: ${dbProvider} — FAILED`);
|
|
43
|
+
p.log.error(err instanceof Error ? err.message : String(err));
|
|
44
|
+
}
|
|
45
|
+
// Check 2: Schema version
|
|
46
|
+
if (checks.db) {
|
|
47
|
+
s.start('Checking schema version...');
|
|
48
|
+
try {
|
|
49
|
+
const db = getVectorDB();
|
|
50
|
+
const version = await db.schemaVersion();
|
|
51
|
+
if (version === null)
|
|
52
|
+
throw new Error('schema_version table not found — run setup.sql first');
|
|
53
|
+
checks.schema = true;
|
|
54
|
+
s.stop(`Schema: v${version}`);
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
s.stop('Schema: FAILED');
|
|
58
|
+
p.log.error(err instanceof Error ? err.message : String(err));
|
|
59
|
+
p.log.info('Run: npx traqr-memory-mcp --setup');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Check 3: Embedding provider
|
|
63
|
+
s.start(`Checking embeddings (${embeddingInfo})...`);
|
|
64
|
+
try {
|
|
65
|
+
if (ep.provider === 'none') {
|
|
66
|
+
checks.embedding = true;
|
|
67
|
+
s.stop(`Embeddings: None (BM25 keyword search only)`);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
const result = await ep.generate('health check');
|
|
71
|
+
if (!result.embedding?.length)
|
|
72
|
+
throw new Error('Empty embedding returned');
|
|
73
|
+
checks.embedding = true;
|
|
74
|
+
s.stop(`Embeddings: ${embeddingInfo} — ${result.dimensions} dimensions`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
s.stop(`Embeddings: ${embeddingInfo} — FAILED`);
|
|
79
|
+
p.log.error(err instanceof Error ? err.message : String(err));
|
|
80
|
+
}
|
|
81
|
+
// Check 4: Round trip (store → search → delete)
|
|
82
|
+
if (checks.db && checks.schema) {
|
|
83
|
+
s.start('Running round-trip test (store → search → delete)...');
|
|
84
|
+
try {
|
|
85
|
+
const testContent = `TraqrDB verify test — ${Date.now()}`;
|
|
86
|
+
const memory = await storeMemory({
|
|
87
|
+
content: testContent,
|
|
88
|
+
sourceType: 'session',
|
|
89
|
+
sourceProject: 'verify-test',
|
|
90
|
+
confidence: 0.1,
|
|
91
|
+
});
|
|
92
|
+
// Search for it (only if embeddings work)
|
|
93
|
+
if (checks.embedding && ep.provider !== 'none') {
|
|
94
|
+
const results = await searchMemoriesV2(testContent, { limit: 1 });
|
|
95
|
+
if (results.length === 0) {
|
|
96
|
+
p.log.warn('Search returned no results for test memory (may be indexing delay)');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Clean up
|
|
100
|
+
const db = getVectorDB();
|
|
101
|
+
await db.delete(memory.id);
|
|
102
|
+
checks.roundTrip = true;
|
|
103
|
+
s.stop('Round trip: store → search → delete — OK');
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
s.stop('Round trip: FAILED');
|
|
107
|
+
p.log.error(err instanceof Error ? err.message : String(err));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// Summary
|
|
111
|
+
const allPassed = Object.values(checks).every(Boolean);
|
|
112
|
+
const passCount = Object.values(checks).filter(Boolean).length;
|
|
113
|
+
console.log('');
|
|
114
|
+
p.log.info(`DB: ${dbProvider} | Embeddings: ${embeddingInfo}`);
|
|
115
|
+
console.log('');
|
|
116
|
+
console.log(` ${checks.db ? 'pass' : 'FAIL'} Database connection`);
|
|
117
|
+
console.log(` ${checks.schema ? 'pass' : 'FAIL'} Schema version`);
|
|
118
|
+
console.log(` ${checks.embedding ? 'pass' : 'FAIL'} Embedding provider`);
|
|
119
|
+
console.log(` ${checks.roundTrip ? 'pass' : 'FAIL'} Round trip (store/search/delete)`);
|
|
120
|
+
console.log('');
|
|
121
|
+
if (allPassed) {
|
|
122
|
+
p.outro(`All ${passCount} checks passed! TraqrDB is ready.`);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
p.outro(`${passCount}/4 checks passed. Fix the failures above and re-run.`);
|
|
126
|
+
process.exit(1);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
run().catch((err) => {
|
|
130
|
+
console.error('Verify failed:', err instanceof Error ? err.message : err);
|
|
131
|
+
process.exit(1);
|
|
132
|
+
});
|
|
133
|
+
//# sourceMappingURL=verify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/cli/verify.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* TraqrDB Memory MCP Server
|
|
4
4
|
*
|
|
5
|
+
* CLI flags (run instead of MCP server):
|
|
6
|
+
* --install Interactive setup wizard
|
|
7
|
+
* --setup Run setup.sql on your database
|
|
8
|
+
* --verify Health check + round trip test
|
|
9
|
+
* --print-instructions Print CLAUDE.md memory instructions
|
|
10
|
+
*
|
|
5
11
|
* Standalone MCP server for AI agents. 10 memory tools powered by
|
|
6
12
|
* Postgres + pgvector. Multi-strategy retrieval (semantic + BM25 + RRF),
|
|
7
13
|
* cosine triage, LLM borderline decisions, entity extraction.
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG"}
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* TraqrDB Memory MCP Server
|
|
4
4
|
*
|
|
5
|
+
* CLI flags (run instead of MCP server):
|
|
6
|
+
* --install Interactive setup wizard
|
|
7
|
+
* --setup Run setup.sql on your database
|
|
8
|
+
* --verify Health check + round trip test
|
|
9
|
+
* --print-instructions Print CLAUDE.md memory instructions
|
|
10
|
+
*
|
|
5
11
|
* Standalone MCP server for AI agents. 10 memory tools powered by
|
|
6
12
|
* Postgres + pgvector. Multi-strategy retrieval (semantic + BM25 + RRF),
|
|
7
13
|
* cosine triage, LLM borderline decisions, entity extraction.
|
|
@@ -9,6 +15,44 @@
|
|
|
9
15
|
* Usage:
|
|
10
16
|
* SUPABASE_URL=... SUPABASE_SERVICE_ROLE_KEY=... npx traqr-memory-mcp
|
|
11
17
|
*/
|
|
18
|
+
// CLI flag routing — handle before heavy imports
|
|
19
|
+
const cliFlag = process.argv[2];
|
|
20
|
+
if (cliFlag === '--install') {
|
|
21
|
+
await import('./cli/install.js');
|
|
22
|
+
process.exit(0);
|
|
23
|
+
}
|
|
24
|
+
if (cliFlag === '--setup') {
|
|
25
|
+
await import('./cli/setup-db.js');
|
|
26
|
+
process.exit(0);
|
|
27
|
+
}
|
|
28
|
+
if (cliFlag === '--verify') {
|
|
29
|
+
await import('./cli/verify.js');
|
|
30
|
+
process.exit(0);
|
|
31
|
+
}
|
|
32
|
+
if (cliFlag === '--print-instructions') {
|
|
33
|
+
await import('./cli/instructions.js');
|
|
34
|
+
process.exit(0);
|
|
35
|
+
}
|
|
36
|
+
if (cliFlag === '--help' || cliFlag === '-h') {
|
|
37
|
+
console.log(`
|
|
38
|
+
traqr-memory-mcp — MCP server for persistent AI agent memory
|
|
39
|
+
|
|
40
|
+
Usage: npx traqr-memory-mcp [flag]
|
|
41
|
+
|
|
42
|
+
Flags:
|
|
43
|
+
--install Interactive setup wizard
|
|
44
|
+
--setup Run setup.sql on your database
|
|
45
|
+
--verify Health check + round trip test
|
|
46
|
+
--print-instructions Print CLAUDE.md memory instructions
|
|
47
|
+
--help, -h Show this help
|
|
48
|
+
|
|
49
|
+
No flags: start MCP server (for MCP client config, not direct use)
|
|
50
|
+
|
|
51
|
+
Quick start:
|
|
52
|
+
npx traqr-memory-mcp --install
|
|
53
|
+
`);
|
|
54
|
+
process.exit(0);
|
|
55
|
+
}
|
|
12
56
|
import { readFileSync } from 'node:fs';
|
|
13
57
|
import { fileURLToPath } from 'node:url';
|
|
14
58
|
import { dirname, join } from 'node:path';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "traqr-memory-mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "Memory-as-a-service MCP server for AI agents. 10 tools, Postgres + pgvector, multi-strategy retrieval. Works with Claude Code, Cursor, Codex, and any MCP client.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -26,8 +26,9 @@
|
|
|
26
26
|
"start": "node dist/index.js"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@
|
|
29
|
+
"@clack/prompts": "^1.1.0",
|
|
30
30
|
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
31
|
+
"@traqr/memory": "^0.1.0",
|
|
31
32
|
"zod": "^3.24.2"
|
|
32
33
|
},
|
|
33
34
|
"keywords": [
|