@prmichaelsen/remember-mcp 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/.env.example +65 -0
- package/AGENT.md +840 -0
- package/README.md +72 -0
- package/agent/design/.gitkeep +0 -0
- package/agent/design/access-control-result-pattern.md +458 -0
- package/agent/design/action-audit-memory-types.md +637 -0
- package/agent/design/common-template-fields.md +282 -0
- package/agent/design/complete-tool-set.md +407 -0
- package/agent/design/content-types-expansion.md +521 -0
- package/agent/design/cross-database-id-strategy.md +358 -0
- package/agent/design/default-template-library.md +423 -0
- package/agent/design/firestore-wrapper-analysis.md +606 -0
- package/agent/design/llm-provider-abstraction.md +691 -0
- package/agent/design/location-handling-architecture.md +523 -0
- package/agent/design/memory-templates-design.md +364 -0
- package/agent/design/permissions-storage-architecture.md +680 -0
- package/agent/design/relationship-storage-strategy.md +361 -0
- package/agent/design/remember-mcp-implementation-tasks.md +417 -0
- package/agent/design/remember-mcp-progress.yaml +141 -0
- package/agent/design/requirements-enhancements.md +468 -0
- package/agent/design/requirements.md +56 -0
- package/agent/design/template-storage-strategy.md +412 -0
- package/agent/design/template-suggestion-system.md +853 -0
- package/agent/design/trust-escalation-prevention.md +343 -0
- package/agent/design/trust-system-implementation.md +592 -0
- package/agent/design/user-preferences.md +683 -0
- package/agent/design/weaviate-collection-strategy.md +461 -0
- package/agent/milestones/.gitkeep +0 -0
- package/agent/milestones/milestone-1-project-foundation.md +121 -0
- package/agent/milestones/milestone-2-core-memory-system.md +150 -0
- package/agent/milestones/milestone-3-relationships-graph.md +116 -0
- package/agent/milestones/milestone-4-user-preferences.md +103 -0
- package/agent/milestones/milestone-5-template-system.md +126 -0
- package/agent/milestones/milestone-6-auth-multi-tenancy.md +124 -0
- package/agent/milestones/milestone-7-trust-permissions.md +133 -0
- package/agent/milestones/milestone-8-testing-quality.md +137 -0
- package/agent/milestones/milestone-9-deployment-documentation.md +147 -0
- package/agent/patterns/.gitkeep +0 -0
- package/agent/patterns/bootstrap.md +1271 -0
- package/agent/patterns/firebase-admin-sdk-v8-usage.md +950 -0
- package/agent/patterns/firestore-users-pattern-best-practices.md +347 -0
- package/agent/patterns/library-services.md +454 -0
- package/agent/patterns/testing-colocated.md +316 -0
- package/agent/progress.yaml +395 -0
- package/agent/tasks/.gitkeep +0 -0
- package/agent/tasks/task-1-initialize-project-structure.md +266 -0
- package/agent/tasks/task-2-install-dependencies.md +199 -0
- package/agent/tasks/task-3-setup-weaviate-client.md +330 -0
- package/agent/tasks/task-4-setup-firestore-client.md +362 -0
- package/agent/tasks/task-5-create-basic-mcp-server.md +114 -0
- package/agent/tasks/task-6-create-integration-tests.md +195 -0
- package/agent/tasks/task-7-finalize-milestone-1.md +363 -0
- package/agent/tasks/task-8-setup-utility-scripts.md +382 -0
- package/agent/tasks/task-9-create-server-factory.md +404 -0
- package/dist/config.d.ts +26 -0
- package/dist/constants/content-types.d.ts +60 -0
- package/dist/firestore/init.d.ts +14 -0
- package/dist/firestore/paths.d.ts +53 -0
- package/dist/firestore/paths.spec.d.ts +2 -0
- package/dist/server-factory.d.ts +40 -0
- package/dist/server-factory.js +1741 -0
- package/dist/server-factory.spec.d.ts +2 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.js +1690 -0
- package/dist/tools/create-memory.d.ts +94 -0
- package/dist/tools/delete-memory.d.ts +47 -0
- package/dist/tools/search-memory.d.ts +88 -0
- package/dist/types/memory.d.ts +183 -0
- package/dist/utils/logger.d.ts +7 -0
- package/dist/weaviate/client.d.ts +39 -0
- package/dist/weaviate/client.spec.d.ts +2 -0
- package/dist/weaviate/schema.d.ts +29 -0
- package/esbuild.build.js +60 -0
- package/esbuild.watch.js +25 -0
- package/jest.config.js +31 -0
- package/jest.e2e.config.js +17 -0
- package/package.json +68 -0
- package/src/.gitkeep +0 -0
- package/src/config.ts +56 -0
- package/src/constants/content-types.ts +454 -0
- package/src/firestore/init.ts +68 -0
- package/src/firestore/paths.spec.ts +75 -0
- package/src/firestore/paths.ts +124 -0
- package/src/server-factory.spec.ts +60 -0
- package/src/server-factory.ts +215 -0
- package/src/server.ts +243 -0
- package/src/tools/create-memory.ts +198 -0
- package/src/tools/delete-memory.ts +126 -0
- package/src/tools/search-memory.ts +216 -0
- package/src/types/memory.ts +276 -0
- package/src/utils/logger.ts +42 -0
- package/src/weaviate/client.spec.ts +58 -0
- package/src/weaviate/client.ts +114 -0
- package/src/weaviate/schema.ts +288 -0
- package/tsconfig.json +26 -0
|
@@ -0,0 +1,468 @@
|
|
|
1
|
+
# Requirements Enhancements & Gap Analysis
|
|
2
|
+
|
|
3
|
+
**Project**: remember-mcp (Multi-Tenant Memory System)
|
|
4
|
+
**Based On**: index MCP server architecture
|
|
5
|
+
**Last Updated**: 2026-02-11 (Updated with design decisions)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Executive Summary
|
|
10
|
+
|
|
11
|
+
This document analyzes the requirements for the `remember-mcp` project and documents all design decisions, enhancements, and clarifications made during the planning phase.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Design Decisions Summary
|
|
16
|
+
|
|
17
|
+
### ✅ Resolved Design Questions
|
|
18
|
+
|
|
19
|
+
1. **Tool Mapping**: Clarified - `index_existing` → `remember_update_memory`
|
|
20
|
+
2. **Trust Levels**: **Continuous 0-1 scale** (not discrete levels)
|
|
21
|
+
3. **Trust Enforcement**: **Prompt-based with LLM validation** (see [`trust-system-implementation.md`](trust-system-implementation.md))
|
|
22
|
+
4. **Relationship Types**: **Free-form strings** decided by agent (not enumerated)
|
|
23
|
+
5. **Relationship Directionality**: Not tracked (relationships are undirected)
|
|
24
|
+
6. **Location Handling**: **Provided by platform via cookies** (see [`location-handling-architecture.md`](location-handling-architecture.md))
|
|
25
|
+
7. **Permissions Storage**: **Firestore for permissions**, Weaviate for memories (see [`permissions-storage-architecture.md`](permissions-storage-architecture.md))
|
|
26
|
+
8. **Context Summary**: Added to both Memory and Relationship contexts
|
|
27
|
+
9. **Access Count Weighting**: Implemented in search ranking (see [`action-audit-memory-types.md`](action-audit-memory-types.md))
|
|
28
|
+
10. **Content Types**: Expanded to 21+ types including `checklist` (see [`content-types-expansion.md`](content-types-expansion.md))
|
|
29
|
+
11. **Memory Templates**: Designed for structured memory creation (see [`memory-templates-design.md`](memory-templates-design.md))
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Complete Schema Specifications
|
|
34
|
+
|
|
35
|
+
### 1. Memory Schema (FINAL)
|
|
36
|
+
|
|
37
|
+
```yaml
|
|
38
|
+
Memory:
|
|
39
|
+
# Core Identity
|
|
40
|
+
id: uuid
|
|
41
|
+
user_id: string
|
|
42
|
+
|
|
43
|
+
# Content
|
|
44
|
+
content: text # Main memory content
|
|
45
|
+
title: string # Optional short title
|
|
46
|
+
summary: string # Optional brief summary
|
|
47
|
+
type: string # Content type (see content-types-expansion.md)
|
|
48
|
+
|
|
49
|
+
# Significance & Trust
|
|
50
|
+
weight: float # 0-1, significance/priority (continuous)
|
|
51
|
+
trust: float # 0-1, access control level (continuous)
|
|
52
|
+
confidence: float # 0-1, system confidence in accuracy
|
|
53
|
+
|
|
54
|
+
# Location (provided by platform)
|
|
55
|
+
location:
|
|
56
|
+
address:
|
|
57
|
+
formatted: string # Full address
|
|
58
|
+
street: string
|
|
59
|
+
city: string
|
|
60
|
+
state: string
|
|
61
|
+
country: string
|
|
62
|
+
postal_code: string
|
|
63
|
+
timezone: string
|
|
64
|
+
gps:
|
|
65
|
+
latitude: float
|
|
66
|
+
longitude: float
|
|
67
|
+
accuracy: float # GPS accuracy in meters
|
|
68
|
+
altitude: float
|
|
69
|
+
timestamp: datetime
|
|
70
|
+
source: string # "gps", "ip", "manual", "cached"
|
|
71
|
+
confidence: float # 0-1
|
|
72
|
+
is_approximate: boolean
|
|
73
|
+
|
|
74
|
+
# Context
|
|
75
|
+
context:
|
|
76
|
+
conversation_id: string # Link to conversation
|
|
77
|
+
conversation_title: string
|
|
78
|
+
turn_number: int # Position in conversation
|
|
79
|
+
summary: string # ✅ NEW: Brief summary for quick retrieval
|
|
80
|
+
participants: array
|
|
81
|
+
- user_id: string
|
|
82
|
+
role: string # user, assistant, system
|
|
83
|
+
timestamp: datetime
|
|
84
|
+
timezone: string
|
|
85
|
+
source:
|
|
86
|
+
type: string # conversation, import, inference, manual
|
|
87
|
+
platform: string # web, mobile, api
|
|
88
|
+
client: string
|
|
89
|
+
environment:
|
|
90
|
+
location: object # Same as memory location
|
|
91
|
+
device: string
|
|
92
|
+
tags: array
|
|
93
|
+
notes: string
|
|
94
|
+
|
|
95
|
+
# Relationships
|
|
96
|
+
relationships: array # IDs of relationship objects
|
|
97
|
+
|
|
98
|
+
# Access Tracking (for weight calculation)
|
|
99
|
+
access_count: int # Total times accessed
|
|
100
|
+
last_accessed_at: datetime # Most recent access
|
|
101
|
+
access_frequency: float # Accesses per day
|
|
102
|
+
access_history: array # Recent access timestamps
|
|
103
|
+
|
|
104
|
+
# Metadata
|
|
105
|
+
created_at: datetime
|
|
106
|
+
updated_at: datetime
|
|
107
|
+
version: int
|
|
108
|
+
|
|
109
|
+
# Organization
|
|
110
|
+
tags: array
|
|
111
|
+
category: string
|
|
112
|
+
|
|
113
|
+
# Template Integration (optional)
|
|
114
|
+
template_id: uuid # Which template was used
|
|
115
|
+
template_version: string
|
|
116
|
+
structured_content: object # Template-structured data
|
|
117
|
+
|
|
118
|
+
# Vector embedding (for semantic search)
|
|
119
|
+
embedding: vector
|
|
120
|
+
|
|
121
|
+
# Computed Weight (for search ranking)
|
|
122
|
+
base_weight: float # User-specified
|
|
123
|
+
computed_weight: float # Calculated with access multipliers
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### 2. Relationship Schema (FINAL)
|
|
127
|
+
|
|
128
|
+
```yaml
|
|
129
|
+
Relationship:
|
|
130
|
+
# Core Identity
|
|
131
|
+
id: uuid
|
|
132
|
+
user_id: string
|
|
133
|
+
|
|
134
|
+
# Connection
|
|
135
|
+
memory_ids: array # 2...N memory IDs
|
|
136
|
+
type: string # ✅ FREE-FORM: Agent decides relationship type
|
|
137
|
+
# Examples: "causes", "contradicts", "supports",
|
|
138
|
+
# "relates_to", "inspired_by", "depends_on", etc.
|
|
139
|
+
|
|
140
|
+
# Observation
|
|
141
|
+
observation: text # Description of the connection
|
|
142
|
+
strength: float # 0-1, strength of relationship
|
|
143
|
+
confidence: float # 0-1, confidence in relationship
|
|
144
|
+
|
|
145
|
+
# Context
|
|
146
|
+
context:
|
|
147
|
+
conversation_id: string
|
|
148
|
+
conversation_title: string
|
|
149
|
+
turn_number: int
|
|
150
|
+
summary: string # ✅ NEW: Brief summary of discovery context
|
|
151
|
+
discovered_in: string
|
|
152
|
+
timestamp: datetime
|
|
153
|
+
source: string
|
|
154
|
+
participants: array
|
|
155
|
+
|
|
156
|
+
# Metadata
|
|
157
|
+
created_at: datetime
|
|
158
|
+
updated_at: datetime
|
|
159
|
+
version: int
|
|
160
|
+
|
|
161
|
+
# Organization
|
|
162
|
+
tags: array
|
|
163
|
+
|
|
164
|
+
# Note: 'directed' field removed - relationships are undirected
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### 3. Trust Relationship Schema (Firestore)
|
|
168
|
+
|
|
169
|
+
**Location**: `user_permissions/{owner_user_id}/allowed_accessors/{accessor_user_id}`
|
|
170
|
+
|
|
171
|
+
```yaml
|
|
172
|
+
UserPermission:
|
|
173
|
+
# Identity
|
|
174
|
+
owner_user_id: string # User whose memories can be accessed
|
|
175
|
+
accessor_user_id: string # User who can access
|
|
176
|
+
|
|
177
|
+
# Permission
|
|
178
|
+
can_access: boolean
|
|
179
|
+
access_level: string # "read", "read_write", "admin"
|
|
180
|
+
|
|
181
|
+
# Trust (continuous 0-1)
|
|
182
|
+
trust_level: float # ✅ CONTINUOUS 0-1 (not discrete)
|
|
183
|
+
trust_summary: string # Brief explanation
|
|
184
|
+
trust_reason: string # Detailed reason
|
|
185
|
+
|
|
186
|
+
# Scope
|
|
187
|
+
allowed_memory_types: array
|
|
188
|
+
allowed_tags: array
|
|
189
|
+
excluded_tags: array
|
|
190
|
+
|
|
191
|
+
# Temporal
|
|
192
|
+
granted_at: Timestamp
|
|
193
|
+
expires_at: Timestamp | null
|
|
194
|
+
last_accessed: Timestamp
|
|
195
|
+
access_count: int
|
|
196
|
+
|
|
197
|
+
# Metadata
|
|
198
|
+
granted_by: string
|
|
199
|
+
revoked: boolean
|
|
200
|
+
revoked_at: Timestamp | null
|
|
201
|
+
revoked_reason: string | null
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## Tool Mapping (FINAL)
|
|
207
|
+
|
|
208
|
+
```
|
|
209
|
+
index tool → remember-mcp tool
|
|
210
|
+
----------------- -------------------
|
|
211
|
+
search_index → remember_search_memory (hybrid search)
|
|
212
|
+
ask_index → remember_query_memory (GraphQL + NL interpretation)
|
|
213
|
+
index_new → remember_create_memory
|
|
214
|
+
index_existing → remember_update_memory (✅ update existing memory)
|
|
215
|
+
unindex → remember_delete_memory
|
|
216
|
+
find_similar_in_index → remember_find_similar
|
|
217
|
+
(none) → remember_create_relationship (NEW)
|
|
218
|
+
(none) → remember_update_relationship (NEW)
|
|
219
|
+
(none) → remember_search_relationship (NEW)
|
|
220
|
+
(none) → remember_delete_relationship (NEW)
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
**Additional Tools** (from templates and action tracking):
|
|
224
|
+
- `remember_create_template` - Create memory template
|
|
225
|
+
- `remember_list_templates` - List available templates
|
|
226
|
+
- `remember_update_template` - Update template
|
|
227
|
+
- `remember_delete_template` - Delete template
|
|
228
|
+
- `remember_validate_memory` - Validate against template
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## Architecture Decisions
|
|
233
|
+
|
|
234
|
+
### 1. Trust System (RESOLVED)
|
|
235
|
+
|
|
236
|
+
**Decision**: **Prompt-based enforcement with continuous trust levels**
|
|
237
|
+
|
|
238
|
+
**Implementation**:
|
|
239
|
+
- Trust levels are **continuous 0-1** (not discrete)
|
|
240
|
+
- Trust enforced by including trust context in LLM prompts
|
|
241
|
+
- Low-trust memories (< 0.25) require validation
|
|
242
|
+
- "Intimate details" (trust 0.0) means: hint at existence without revealing specifics
|
|
243
|
+
|
|
244
|
+
**Example** (trust 0.0 - traumatic experience):
|
|
245
|
+
```
|
|
246
|
+
LLM sees: "Significant personal incident with lasting impact"
|
|
247
|
+
Acceptable: "I'm aware something significant happened around that time."
|
|
248
|
+
Unacceptable: "You were in a car accident..." ❌ VIOLATION
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
**See**: [`trust-system-implementation.md`](trust-system-implementation.md)
|
|
252
|
+
|
|
253
|
+
### 2. Location Handling (RESOLVED)
|
|
254
|
+
|
|
255
|
+
**Decision**: **Platform provides location via cookies/headers**
|
|
256
|
+
|
|
257
|
+
**Flow**:
|
|
258
|
+
1. Platform (agentbase.me) captures GPS from device
|
|
259
|
+
2. Geocodes to address
|
|
260
|
+
3. Stores in cookies
|
|
261
|
+
4. Includes in MCP request context
|
|
262
|
+
5. MCP server extracts and stores with memory
|
|
263
|
+
|
|
264
|
+
**Benefits**:
|
|
265
|
+
- Separation of concerns
|
|
266
|
+
- Platform handles permissions
|
|
267
|
+
- Consistent across features
|
|
268
|
+
- User privacy controls
|
|
269
|
+
|
|
270
|
+
**See**: [`location-handling-architecture.md`](location-handling-architecture.md)
|
|
271
|
+
|
|
272
|
+
### 3. Permissions Storage (RESOLVED)
|
|
273
|
+
|
|
274
|
+
**Decision**: **Hybrid - Firestore for permissions, Weaviate for memories**
|
|
275
|
+
|
|
276
|
+
**Rationale**:
|
|
277
|
+
- Firestore optimized for relational queries
|
|
278
|
+
- Weaviate optimized for vector search
|
|
279
|
+
- Each database does what it's best at
|
|
280
|
+
- Firebase security rules for permissions
|
|
281
|
+
- Easy to query "who can access my memories?"
|
|
282
|
+
|
|
283
|
+
**See**: [`permissions-storage-architecture.md`](permissions-storage-architecture.md)
|
|
284
|
+
|
|
285
|
+
### 4. Relationship Types (RESOLVED)
|
|
286
|
+
|
|
287
|
+
**Decision**: **Free-form strings decided by agent**
|
|
288
|
+
|
|
289
|
+
**Rationale**:
|
|
290
|
+
- Flexibility for nuanced relationships
|
|
291
|
+
- LLMs excel at generating appropriate descriptors
|
|
292
|
+
- No schema changes needed for new types
|
|
293
|
+
- Natural language descriptions
|
|
294
|
+
|
|
295
|
+
**Examples**: "causes", "contradicts", "supports", "inspired_by", "depends_on", "similar_to", "prerequisite_for"
|
|
296
|
+
|
|
297
|
+
### 5. Access Count Weighting (RESOLVED)
|
|
298
|
+
|
|
299
|
+
**Decision**: **Frequently accessed memories rank higher in search**
|
|
300
|
+
|
|
301
|
+
**Formula**:
|
|
302
|
+
```
|
|
303
|
+
effective_weight = base_weight × access_multiplier × recency_multiplier × relationship_multiplier
|
|
304
|
+
|
|
305
|
+
where:
|
|
306
|
+
access_multiplier = 1 + (access_count / max_access_count) × 0.5
|
|
307
|
+
recency_multiplier = 1 + (days_since_access < 7 ? 0.3 : 0)
|
|
308
|
+
relationship_multiplier = 1 + (relationship_count / 10) × 0.2
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
**See**: [`action-audit-memory-types.md`](action-audit-memory-types.md)
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
## Additional Features Designed
|
|
316
|
+
|
|
317
|
+
### 1. Content Types Expansion
|
|
318
|
+
|
|
319
|
+
**Added**: 21+ content types including:
|
|
320
|
+
- `checklist` - For grocery lists, packing, camping prep
|
|
321
|
+
- `recipe` - Cooking recipes and instructions
|
|
322
|
+
- `bookmark` - Web bookmarks and resources
|
|
323
|
+
- `journal` - Daily journal entries
|
|
324
|
+
- `reference` - Quick reference guides
|
|
325
|
+
|
|
326
|
+
**See**: [`content-types-expansion.md`](content-types-expansion.md)
|
|
327
|
+
|
|
328
|
+
### 2. Memory Templates
|
|
329
|
+
|
|
330
|
+
**Purpose**: Guide structured memory creation
|
|
331
|
+
|
|
332
|
+
**Features**:
|
|
333
|
+
- Field definitions with validation
|
|
334
|
+
- Template inheritance
|
|
335
|
+
- Auto-suggestion based on context
|
|
336
|
+
- Computed fields
|
|
337
|
+
- Conditional fields
|
|
338
|
+
|
|
339
|
+
**See**: [`memory-templates-design.md`](memory-templates-design.md)
|
|
340
|
+
|
|
341
|
+
### 3. Action & Audit Tracking
|
|
342
|
+
|
|
343
|
+
**Memory Types**:
|
|
344
|
+
- `action` - Track agent actions
|
|
345
|
+
- `audit` - Compliance and security trail
|
|
346
|
+
- `event-log` - System events (optional)
|
|
347
|
+
- `history` - Memory change history
|
|
348
|
+
|
|
349
|
+
**Cost**: ~$1.70/user/year with recommended strategy
|
|
350
|
+
|
|
351
|
+
**See**: [`action-audit-memory-types.md`](action-audit-memory-types.md)
|
|
352
|
+
|
|
353
|
+
---
|
|
354
|
+
|
|
355
|
+
## Implementation Priorities
|
|
356
|
+
|
|
357
|
+
### 🔴 Phase 1: Core Functionality (MVP)
|
|
358
|
+
|
|
359
|
+
1. **Memory CRUD Operations**
|
|
360
|
+
- `remember_create_memory`
|
|
361
|
+
- `remember_update_memory`
|
|
362
|
+
- `remember_delete_memory`
|
|
363
|
+
- `remember_search_memory`
|
|
364
|
+
- `remember_find_similar`
|
|
365
|
+
|
|
366
|
+
2. **Basic Relationships**
|
|
367
|
+
- `remember_create_relationship`
|
|
368
|
+
- `remember_search_relationship`
|
|
369
|
+
- `remember_delete_relationship`
|
|
370
|
+
|
|
371
|
+
3. **Multi-Tenancy**
|
|
372
|
+
- Per-user Weaviate collections
|
|
373
|
+
- User isolation
|
|
374
|
+
- Firebase authentication
|
|
375
|
+
|
|
376
|
+
4. **Location Integration**
|
|
377
|
+
- Extract from request context
|
|
378
|
+
- Store with memories
|
|
379
|
+
- Basic location search
|
|
380
|
+
|
|
381
|
+
### 🟡 Phase 2: Trust & Permissions
|
|
382
|
+
|
|
383
|
+
5. **Trust System**
|
|
384
|
+
- Prompt-based enforcement
|
|
385
|
+
- Validation for low-trust memories
|
|
386
|
+
- Trust relationship storage (Firestore)
|
|
387
|
+
|
|
388
|
+
6. **Cross-User Access**
|
|
389
|
+
- Permission management
|
|
390
|
+
- Trust level filtering
|
|
391
|
+
- Access auditing
|
|
392
|
+
|
|
393
|
+
7. **GraphQL Queries**
|
|
394
|
+
- `remember_query_memory`
|
|
395
|
+
- Query validation
|
|
396
|
+
- Security restrictions
|
|
397
|
+
|
|
398
|
+
### 🟢 Phase 3: Advanced Features
|
|
399
|
+
|
|
400
|
+
8. **Templates**
|
|
401
|
+
- Template creation and management
|
|
402
|
+
- Validation
|
|
403
|
+
- Auto-suggestion
|
|
404
|
+
|
|
405
|
+
9. **Action Tracking**
|
|
406
|
+
- Action memory type
|
|
407
|
+
- Audit logging
|
|
408
|
+
- Trust violation tracking
|
|
409
|
+
|
|
410
|
+
10. **Analytics**
|
|
411
|
+
- Access count tracking
|
|
412
|
+
- Weight calculation
|
|
413
|
+
- Usage metrics
|
|
414
|
+
|
|
415
|
+
---
|
|
416
|
+
|
|
417
|
+
## Reference Documents
|
|
418
|
+
|
|
419
|
+
All design specifications:
|
|
420
|
+
|
|
421
|
+
1. [`requirements.md`](requirements.md) - Original requirements
|
|
422
|
+
2. [`requirements-enhancements.md`](requirements-enhancements.md) - This document
|
|
423
|
+
3. [`content-types-expansion.md`](content-types-expansion.md) - Content type analysis
|
|
424
|
+
4. [`memory-templates-design.md`](memory-templates-design.md) - Template system
|
|
425
|
+
5. [`action-audit-memory-types.md`](action-audit-memory-types.md) - Action tracking
|
|
426
|
+
6. [`location-handling-architecture.md`](location-handling-architecture.md) - Location architecture
|
|
427
|
+
7. [`trust-system-implementation.md`](trust-system-implementation.md) - Trust enforcement
|
|
428
|
+
8. [`permissions-storage-architecture.md`](permissions-storage-architecture.md) - Permission storage
|
|
429
|
+
9. [`trust-escalation-prevention.md`](trust-escalation-prevention.md) - Trust escalation prevention
|
|
430
|
+
10. [`access-control-result-pattern.md`](access-control-result-pattern.md) - Type-safe error handling
|
|
431
|
+
|
|
432
|
+
---
|
|
433
|
+
|
|
434
|
+
## Questions Resolved
|
|
435
|
+
|
|
436
|
+
### ✅ Answered During Planning
|
|
437
|
+
|
|
438
|
+
1. **Trust System**: Continuous 0-1, prompt-based enforcement
|
|
439
|
+
2. **Cross-User Access**: Firestore permissions, trust-based filtering
|
|
440
|
+
3. **GraphQL Access**: Restricted subset with validation
|
|
441
|
+
4. **Location**: Platform-provided via cookies
|
|
442
|
+
5. **Weight**: Auto-calculated with access count multiplier
|
|
443
|
+
6. **Relationships**: Free-form types, undirected, 2...N memories
|
|
444
|
+
7. **Storage**: Hybrid - Firestore + Weaviate
|
|
445
|
+
8. **Tool Mapping**: `index_existing` → `remember_update_memory`
|
|
446
|
+
|
|
447
|
+
### ❓ Remaining Questions
|
|
448
|
+
|
|
449
|
+
1. **Storage Limits**: Max memories/relationships per user?
|
|
450
|
+
2. **Migration**: Existing data to migrate?
|
|
451
|
+
3. **MVP Scope**: Which features for initial release?
|
|
452
|
+
4. **Pricing**: Cost structure for users?
|
|
453
|
+
|
|
454
|
+
---
|
|
455
|
+
|
|
456
|
+
## Next Steps
|
|
457
|
+
|
|
458
|
+
1. ✅ **Planning Complete** - All major design decisions made
|
|
459
|
+
2. **Create Bootstrap Document** - Comprehensive guide for implementation
|
|
460
|
+
3. **Begin Phase 1** - Implement core memory operations
|
|
461
|
+
4. **Set up Infrastructure** - Weaviate + Firestore + Firebase Auth
|
|
462
|
+
5. **Implement Multi-Tenancy** - Per-user collections and isolation
|
|
463
|
+
|
|
464
|
+
---
|
|
465
|
+
|
|
466
|
+
**Document Status**: Complete - All design decisions documented
|
|
467
|
+
**Ready For**: Implementation phase
|
|
468
|
+
**Last Updated**: 2026-02-11
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
Now that you understand this project, read @/agent/requirements.md and then create an agent/bootstrap-related-project.md which documents enough context for another agent to start building the related project from scratch.
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Requirements:
|
|
6
|
+
- Multi-tenant support. The server will have access to a `user_id` field which uniquely identifies a user.
|
|
7
|
+
|
|
8
|
+
This `user_id` acts as a search filter. Only documents with the exact `user_id` may be searched,
|
|
9
|
+
retrieved, GraphQL queried. Documents can only be created in the `user_id` space.
|
|
10
|
+
|
|
11
|
+
Document the standing document schema in `.yaml`. The related app will make modifications to this,
|
|
12
|
+
but for now document it the same way.
|
|
13
|
+
|
|
14
|
+
The key change is multi-tenancy.
|
|
15
|
+
|
|
16
|
+
The project will be called `remember-mcp`.
|
|
17
|
+
|
|
18
|
+
The tool set will be:
|
|
19
|
+
- `remember_create_memory`
|
|
20
|
+
- `remember_update_memory`
|
|
21
|
+
- `remember_delete_memory`
|
|
22
|
+
- `remember_search_memory`
|
|
23
|
+
- `remember_find_similar`
|
|
24
|
+
- `remember_create_relationship`
|
|
25
|
+
- `remember_update_relationship`
|
|
26
|
+
- `remember_search_relationship`
|
|
27
|
+
- `remember_delete_relationship`
|
|
28
|
+
- `remember_query_memory` - Support direct GraphQL queries of the Weaviate instance
|
|
29
|
+
|
|
30
|
+
What operations do `search-index` and `ask-index` map to?
|
|
31
|
+
|
|
32
|
+
Memories will have a `weight` score from `0 - 1`, which determines the weight/significance
|
|
33
|
+
of the memory. This influences which memories receive priority.
|
|
34
|
+
|
|
35
|
+
The memories will track `location` in two methods, full address of current location and GPSs
|
|
36
|
+
coordinates. This can be used to enhance search to find memories based on the location they were created.
|
|
37
|
+
|
|
38
|
+
Memories will have a `trust` score from `0 - 1`, which represents the level of trust required for a
|
|
39
|
+
caller to be able to access a memory. For instance, `0` means the memory cannot be retrieved directly,
|
|
40
|
+
but it is possible to intimate information about the memory. `1` means full trust, and the memory can be
|
|
41
|
+
retrieved directly. This is designed to support a future enhancement where MCP clients with a different
|
|
42
|
+
`user_id` that are properly authenticated and have proper authorization to interact with other user's
|
|
43
|
+
memories on the basis of their trust level respective to the `user_id` whose memories are being accessed.
|
|
44
|
+
This is designed to support a feature where one user can chat with another user's agent, but the user
|
|
45
|
+
agent only exposes information if they trust the other user. The agent will track a memory
|
|
46
|
+
rating the trust of the caller user. The agent will update the trust memory with context as to why
|
|
47
|
+
it trusts this user or does not trust this user.
|
|
48
|
+
|
|
49
|
+
Memories may track relationships between memories. This is three fold:
|
|
50
|
+
- Relationship memory tracks IDs of connected memories
|
|
51
|
+
- Connected memories track IDs of relationships
|
|
52
|
+
- Relationships may bind 2 ... N memories in a single relationship
|
|
53
|
+
- Relationships include an observation about the connection
|
|
54
|
+
|
|
55
|
+
Each entity will track a `context` property. The `context` defines the context in which the memory
|
|
56
|
+
was created. The context is information about the conversation that generated the memory.
|