@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,364 @@
|
|
|
1
|
+
# Memory Templates - Design Proposal
|
|
2
|
+
|
|
3
|
+
**Concept**: Template memories that guide the creation and structure of future memories
|
|
4
|
+
**Created**: 2026-02-11
|
|
5
|
+
**Status**: Proposal
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
A **template memory** is a special type of memory that defines the structure, fields, and guidelines for creating specific types of memories. This enables consistent, structured memory creation and can guide AI assistants in capturing information in standardized ways.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Use Cases
|
|
16
|
+
|
|
17
|
+
### 1. **Structured Information Capture**
|
|
18
|
+
```yaml
|
|
19
|
+
Template: "Person Profile"
|
|
20
|
+
Purpose: Ensure consistent capture of information about people
|
|
21
|
+
Fields:
|
|
22
|
+
- name: required
|
|
23
|
+
- relationship: required
|
|
24
|
+
- contact_info: optional
|
|
25
|
+
- interests: array
|
|
26
|
+
- last_interaction: datetime
|
|
27
|
+
- notes: text
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### 2. **Recurring Event Memories**
|
|
31
|
+
```yaml
|
|
32
|
+
Template: "Weekly Team Meeting"
|
|
33
|
+
Purpose: Standardize meeting notes
|
|
34
|
+
Fields:
|
|
35
|
+
- date: required
|
|
36
|
+
- attendees: array
|
|
37
|
+
- agenda_items: array
|
|
38
|
+
- decisions: array
|
|
39
|
+
- action_items: array
|
|
40
|
+
- next_meeting: datetime
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### 3. **Learning & Knowledge**
|
|
44
|
+
```yaml
|
|
45
|
+
Template: "Technical Concept"
|
|
46
|
+
Purpose: Capture technical learning consistently
|
|
47
|
+
Fields:
|
|
48
|
+
- concept_name: required
|
|
49
|
+
- category: enum [language, framework, pattern, tool]
|
|
50
|
+
- definition: text
|
|
51
|
+
- examples: array
|
|
52
|
+
- related_concepts: array
|
|
53
|
+
- resources: array
|
|
54
|
+
- proficiency: enum [beginner, intermediate, advanced]
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### 4. **Personal Preferences**
|
|
58
|
+
```yaml
|
|
59
|
+
Template: "Restaurant Preference"
|
|
60
|
+
Purpose: Track dining preferences
|
|
61
|
+
Fields:
|
|
62
|
+
- restaurant_name: required
|
|
63
|
+
- cuisine_type: string
|
|
64
|
+
- location: object
|
|
65
|
+
- rating: float (0-5)
|
|
66
|
+
- favorite_dishes: array
|
|
67
|
+
- price_range: enum [$, $$, $$$, $$$$]
|
|
68
|
+
- last_visited: datetime
|
|
69
|
+
- would_return: boolean
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 5. **Project Tracking**
|
|
73
|
+
```yaml
|
|
74
|
+
Template: "Project Memory"
|
|
75
|
+
Purpose: Track project information
|
|
76
|
+
Fields:
|
|
77
|
+
- project_name: required
|
|
78
|
+
- status: enum [planning, active, paused, completed]
|
|
79
|
+
- start_date: datetime
|
|
80
|
+
- end_date: datetime
|
|
81
|
+
- stakeholders: array
|
|
82
|
+
- milestones: array
|
|
83
|
+
- risks: array
|
|
84
|
+
- notes: text
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Template Memory Schema
|
|
90
|
+
|
|
91
|
+
```yaml
|
|
92
|
+
TemplateMemory:
|
|
93
|
+
# Core Identity
|
|
94
|
+
id: uuid
|
|
95
|
+
user_id: string
|
|
96
|
+
type: "template" # Special memory type
|
|
97
|
+
|
|
98
|
+
# Template Definition
|
|
99
|
+
template_name: string # e.g., "Person Profile", "Meeting Notes"
|
|
100
|
+
template_description: string # What this template is for
|
|
101
|
+
template_version: string # Version for template evolution
|
|
102
|
+
|
|
103
|
+
# Field Definitions
|
|
104
|
+
fields:
|
|
105
|
+
- name: string # Field name
|
|
106
|
+
type: enum # string, number, boolean, datetime, array, object
|
|
107
|
+
required: boolean # Is this field required?
|
|
108
|
+
default_value: any # Optional default value
|
|
109
|
+
validation: object # Validation rules
|
|
110
|
+
description: string # Field description
|
|
111
|
+
options: array # For enum types
|
|
112
|
+
|
|
113
|
+
# Usage Metadata
|
|
114
|
+
usage_count: int # How many times used
|
|
115
|
+
last_used: datetime
|
|
116
|
+
created_at: datetime
|
|
117
|
+
updated_at: datetime
|
|
118
|
+
|
|
119
|
+
# Template Behavior
|
|
120
|
+
auto_apply: boolean # Auto-suggest when context matches
|
|
121
|
+
trigger_keywords: array # Keywords that suggest this template
|
|
122
|
+
trigger_context: object # Context patterns that trigger template
|
|
123
|
+
|
|
124
|
+
# Relationships
|
|
125
|
+
parent_template_id: uuid # For template inheritance
|
|
126
|
+
derived_memories: array # Memories created from this template
|
|
127
|
+
|
|
128
|
+
# Organization
|
|
129
|
+
category: string
|
|
130
|
+
tags: array
|
|
131
|
+
weight: float # Template importance
|
|
132
|
+
trust: float # Who can use this template
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Template Features
|
|
138
|
+
|
|
139
|
+
### 1. **Field Validation**
|
|
140
|
+
```yaml
|
|
141
|
+
fields:
|
|
142
|
+
- name: "email"
|
|
143
|
+
type: "string"
|
|
144
|
+
required: true
|
|
145
|
+
validation:
|
|
146
|
+
pattern: "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$"
|
|
147
|
+
error_message: "Invalid email format"
|
|
148
|
+
|
|
149
|
+
- name: "age"
|
|
150
|
+
type: "number"
|
|
151
|
+
required: false
|
|
152
|
+
validation:
|
|
153
|
+
min: 0
|
|
154
|
+
max: 150
|
|
155
|
+
error_message: "Age must be between 0 and 150"
|
|
156
|
+
|
|
157
|
+
- name: "priority"
|
|
158
|
+
type: "string"
|
|
159
|
+
required: true
|
|
160
|
+
options: ["low", "medium", "high", "critical"]
|
|
161
|
+
default_value: "medium"
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### 2. **Template Inheritance**
|
|
165
|
+
```yaml
|
|
166
|
+
# Base Template
|
|
167
|
+
Template: "Contact"
|
|
168
|
+
fields:
|
|
169
|
+
- name: required
|
|
170
|
+
- email: optional
|
|
171
|
+
- phone: optional
|
|
172
|
+
|
|
173
|
+
# Derived Template
|
|
174
|
+
Template: "Business Contact"
|
|
175
|
+
parent_template: "Contact"
|
|
176
|
+
additional_fields:
|
|
177
|
+
- company: required
|
|
178
|
+
- job_title: required
|
|
179
|
+
- linkedin: optional
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### 3. **Auto-Suggestion**
|
|
183
|
+
```yaml
|
|
184
|
+
Template: "Restaurant Review"
|
|
185
|
+
auto_apply: true
|
|
186
|
+
trigger_keywords: ["restaurant", "ate at", "dinner at", "lunch at"]
|
|
187
|
+
trigger_context:
|
|
188
|
+
location_present: true
|
|
189
|
+
time_of_day: ["lunch", "dinner"]
|
|
190
|
+
|
|
191
|
+
# When user says: "Had great sushi at Nobu yesterday"
|
|
192
|
+
# System suggests: "Would you like to create a Restaurant Review memory?"
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### 4. **Computed Fields**
|
|
196
|
+
```yaml
|
|
197
|
+
fields:
|
|
198
|
+
- name: "full_name"
|
|
199
|
+
type: "computed"
|
|
200
|
+
formula: "concat(first_name, ' ', last_name)"
|
|
201
|
+
|
|
202
|
+
- name: "days_since_last_contact"
|
|
203
|
+
type: "computed"
|
|
204
|
+
formula: "date_diff(now(), last_contact_date)"
|
|
205
|
+
|
|
206
|
+
- name: "completion_percentage"
|
|
207
|
+
type: "computed"
|
|
208
|
+
formula: "count(completed_items) / count(total_items) * 100"
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### 5. **Conditional Fields**
|
|
212
|
+
```yaml
|
|
213
|
+
fields:
|
|
214
|
+
- name: "has_children"
|
|
215
|
+
type: "boolean"
|
|
216
|
+
|
|
217
|
+
- name: "children_names"
|
|
218
|
+
type: "array"
|
|
219
|
+
required: false
|
|
220
|
+
conditional:
|
|
221
|
+
show_if: "has_children == true"
|
|
222
|
+
|
|
223
|
+
- name: "children_ages"
|
|
224
|
+
type: "array"
|
|
225
|
+
required: false
|
|
226
|
+
conditional:
|
|
227
|
+
show_if: "has_children == true"
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## Template Operations
|
|
233
|
+
|
|
234
|
+
### New Tool: `remember_create_template`
|
|
235
|
+
```typescript
|
|
236
|
+
remember_create_template({
|
|
237
|
+
template_name: "Book Review",
|
|
238
|
+
description: "Template for tracking books I've read",
|
|
239
|
+
fields: [
|
|
240
|
+
{ name: "title", type: "string", required: true },
|
|
241
|
+
{ name: "author", type: "string", required: true },
|
|
242
|
+
{ name: "rating", type: "number", required: true, validation: { min: 1, max: 5 } },
|
|
243
|
+
{ name: "genre", type: "string", required: false },
|
|
244
|
+
{ name: "date_finished", type: "datetime", required: false },
|
|
245
|
+
{ name: "summary", type: "text", required: false },
|
|
246
|
+
{ name: "favorite_quotes", type: "array", required: false },
|
|
247
|
+
{ name: "would_recommend", type: "boolean", required: true }
|
|
248
|
+
],
|
|
249
|
+
auto_apply: true,
|
|
250
|
+
trigger_keywords: ["finished reading", "just read", "book review"]
|
|
251
|
+
})
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### Enhanced: `remember_create_memory` (with template)
|
|
255
|
+
```typescript
|
|
256
|
+
remember_create_memory({
|
|
257
|
+
template_id: "template_book_review_123",
|
|
258
|
+
content: {
|
|
259
|
+
title: "The Pragmatic Programmer",
|
|
260
|
+
author: "Andrew Hunt and David Thomas",
|
|
261
|
+
rating: 5,
|
|
262
|
+
genre: "Technical",
|
|
263
|
+
date_finished: "2026-02-10",
|
|
264
|
+
summary: "Excellent guide to software craftsmanship...",
|
|
265
|
+
favorite_quotes: [
|
|
266
|
+
"Don't live with broken windows",
|
|
267
|
+
"DRY - Don't Repeat Yourself"
|
|
268
|
+
],
|
|
269
|
+
would_recommend: true
|
|
270
|
+
}
|
|
271
|
+
})
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### New Tool: `remember_list_templates`
|
|
275
|
+
```typescript
|
|
276
|
+
remember_list_templates({
|
|
277
|
+
category: "personal",
|
|
278
|
+
sort_by: "usage_count",
|
|
279
|
+
limit: 10
|
|
280
|
+
})
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### New Tool: `remember_update_template`
|
|
284
|
+
```typescript
|
|
285
|
+
remember_update_template({
|
|
286
|
+
template_id: "template_book_review_123",
|
|
287
|
+
add_fields: [
|
|
288
|
+
{ name: "isbn", type: "string", required: false }
|
|
289
|
+
],
|
|
290
|
+
version: "1.1"
|
|
291
|
+
})
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
### New Tool: `remember_validate_memory`
|
|
295
|
+
```typescript
|
|
296
|
+
remember_validate_memory({
|
|
297
|
+
template_id: "template_book_review_123",
|
|
298
|
+
content: {
|
|
299
|
+
title: "Some Book",
|
|
300
|
+
// Missing required field: author
|
|
301
|
+
rating: 6 // Invalid: exceeds max of 5
|
|
302
|
+
}
|
|
303
|
+
})
|
|
304
|
+
// Returns: validation errors
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### New Tool: `remember_delete_template`
|
|
308
|
+
```typescript
|
|
309
|
+
remember_delete_template({
|
|
310
|
+
template_id: "template_book_review_123",
|
|
311
|
+
delete_derived_memories: false // Keep memories created from template
|
|
312
|
+
})
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
---
|
|
316
|
+
|
|
317
|
+
## Integration with Existing Memory System
|
|
318
|
+
|
|
319
|
+
### Memory Schema Extension
|
|
320
|
+
```yaml
|
|
321
|
+
Memory:
|
|
322
|
+
# ... existing fields ...
|
|
323
|
+
|
|
324
|
+
# Template Integration
|
|
325
|
+
template_id: uuid # Which template was used (if any)
|
|
326
|
+
template_version: string # Template version at creation time
|
|
327
|
+
template_compliance: boolean # Does memory still match template?
|
|
328
|
+
template_validation_errors: array # Any validation issues
|
|
329
|
+
structured_content: object # Template-structured data
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
### Template-Aware Search
|
|
333
|
+
```typescript
|
|
334
|
+
remember_search_memory({
|
|
335
|
+
query: "technical books",
|
|
336
|
+
filters: {
|
|
337
|
+
template_id: "template_book_review_123",
|
|
338
|
+
"structured_content.rating": { gte: 4 }
|
|
339
|
+
}
|
|
340
|
+
})
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
### Template Analytics
|
|
344
|
+
```typescript
|
|
345
|
+
remember_template_analytics({
|
|
346
|
+
template_id: "template_book_review_123",
|
|
347
|
+
metrics: [
|
|
348
|
+
"usage_count",
|
|
349
|
+
"average_completion_rate",
|
|
350
|
+
"most_common_values",
|
|
351
|
+
"field_usage_statistics"
|
|
352
|
+
]
|
|
353
|
+
})
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
---
|
|
357
|
+
|
|
358
|
+
## Advanced Features
|
|
359
|
+
|
|
360
|
+
### 1. **Template Suggestions**
|
|
361
|
+
AI assistant analyzes conversation and suggests appropriate template:
|
|
362
|
+
|
|
363
|
+
```
|
|
364
|
+
User: "I just met Sarah at the conference. She's a product manager at Google."
|