@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.
Files changed (95) hide show
  1. package/.env.example +65 -0
  2. package/AGENT.md +840 -0
  3. package/README.md +72 -0
  4. package/agent/design/.gitkeep +0 -0
  5. package/agent/design/access-control-result-pattern.md +458 -0
  6. package/agent/design/action-audit-memory-types.md +637 -0
  7. package/agent/design/common-template-fields.md +282 -0
  8. package/agent/design/complete-tool-set.md +407 -0
  9. package/agent/design/content-types-expansion.md +521 -0
  10. package/agent/design/cross-database-id-strategy.md +358 -0
  11. package/agent/design/default-template-library.md +423 -0
  12. package/agent/design/firestore-wrapper-analysis.md +606 -0
  13. package/agent/design/llm-provider-abstraction.md +691 -0
  14. package/agent/design/location-handling-architecture.md +523 -0
  15. package/agent/design/memory-templates-design.md +364 -0
  16. package/agent/design/permissions-storage-architecture.md +680 -0
  17. package/agent/design/relationship-storage-strategy.md +361 -0
  18. package/agent/design/remember-mcp-implementation-tasks.md +417 -0
  19. package/agent/design/remember-mcp-progress.yaml +141 -0
  20. package/agent/design/requirements-enhancements.md +468 -0
  21. package/agent/design/requirements.md +56 -0
  22. package/agent/design/template-storage-strategy.md +412 -0
  23. package/agent/design/template-suggestion-system.md +853 -0
  24. package/agent/design/trust-escalation-prevention.md +343 -0
  25. package/agent/design/trust-system-implementation.md +592 -0
  26. package/agent/design/user-preferences.md +683 -0
  27. package/agent/design/weaviate-collection-strategy.md +461 -0
  28. package/agent/milestones/.gitkeep +0 -0
  29. package/agent/milestones/milestone-1-project-foundation.md +121 -0
  30. package/agent/milestones/milestone-2-core-memory-system.md +150 -0
  31. package/agent/milestones/milestone-3-relationships-graph.md +116 -0
  32. package/agent/milestones/milestone-4-user-preferences.md +103 -0
  33. package/agent/milestones/milestone-5-template-system.md +126 -0
  34. package/agent/milestones/milestone-6-auth-multi-tenancy.md +124 -0
  35. package/agent/milestones/milestone-7-trust-permissions.md +133 -0
  36. package/agent/milestones/milestone-8-testing-quality.md +137 -0
  37. package/agent/milestones/milestone-9-deployment-documentation.md +147 -0
  38. package/agent/patterns/.gitkeep +0 -0
  39. package/agent/patterns/bootstrap.md +1271 -0
  40. package/agent/patterns/firebase-admin-sdk-v8-usage.md +950 -0
  41. package/agent/patterns/firestore-users-pattern-best-practices.md +347 -0
  42. package/agent/patterns/library-services.md +454 -0
  43. package/agent/patterns/testing-colocated.md +316 -0
  44. package/agent/progress.yaml +395 -0
  45. package/agent/tasks/.gitkeep +0 -0
  46. package/agent/tasks/task-1-initialize-project-structure.md +266 -0
  47. package/agent/tasks/task-2-install-dependencies.md +199 -0
  48. package/agent/tasks/task-3-setup-weaviate-client.md +330 -0
  49. package/agent/tasks/task-4-setup-firestore-client.md +362 -0
  50. package/agent/tasks/task-5-create-basic-mcp-server.md +114 -0
  51. package/agent/tasks/task-6-create-integration-tests.md +195 -0
  52. package/agent/tasks/task-7-finalize-milestone-1.md +363 -0
  53. package/agent/tasks/task-8-setup-utility-scripts.md +382 -0
  54. package/agent/tasks/task-9-create-server-factory.md +404 -0
  55. package/dist/config.d.ts +26 -0
  56. package/dist/constants/content-types.d.ts +60 -0
  57. package/dist/firestore/init.d.ts +14 -0
  58. package/dist/firestore/paths.d.ts +53 -0
  59. package/dist/firestore/paths.spec.d.ts +2 -0
  60. package/dist/server-factory.d.ts +40 -0
  61. package/dist/server-factory.js +1741 -0
  62. package/dist/server-factory.spec.d.ts +2 -0
  63. package/dist/server.d.ts +3 -0
  64. package/dist/server.js +1690 -0
  65. package/dist/tools/create-memory.d.ts +94 -0
  66. package/dist/tools/delete-memory.d.ts +47 -0
  67. package/dist/tools/search-memory.d.ts +88 -0
  68. package/dist/types/memory.d.ts +183 -0
  69. package/dist/utils/logger.d.ts +7 -0
  70. package/dist/weaviate/client.d.ts +39 -0
  71. package/dist/weaviate/client.spec.d.ts +2 -0
  72. package/dist/weaviate/schema.d.ts +29 -0
  73. package/esbuild.build.js +60 -0
  74. package/esbuild.watch.js +25 -0
  75. package/jest.config.js +31 -0
  76. package/jest.e2e.config.js +17 -0
  77. package/package.json +68 -0
  78. package/src/.gitkeep +0 -0
  79. package/src/config.ts +56 -0
  80. package/src/constants/content-types.ts +454 -0
  81. package/src/firestore/init.ts +68 -0
  82. package/src/firestore/paths.spec.ts +75 -0
  83. package/src/firestore/paths.ts +124 -0
  84. package/src/server-factory.spec.ts +60 -0
  85. package/src/server-factory.ts +215 -0
  86. package/src/server.ts +243 -0
  87. package/src/tools/create-memory.ts +198 -0
  88. package/src/tools/delete-memory.ts +126 -0
  89. package/src/tools/search-memory.ts +216 -0
  90. package/src/types/memory.ts +276 -0
  91. package/src/utils/logger.ts +42 -0
  92. package/src/weaviate/client.spec.ts +58 -0
  93. package/src/weaviate/client.ts +114 -0
  94. package/src/weaviate/schema.ts +288 -0
  95. 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."