@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,423 @@
1
+ # Default Template Library - Complete Specification
2
+
3
+ **Concept**: Curated default templates for remember-mcp
4
+ **Created**: 2026-02-11
5
+ **Updated**: 2026-02-11 (Merged person templates)
6
+ **Status**: Design Specification (FINAL)
7
+
8
+ ---
9
+
10
+ ## Complete Template Library (15 Templates)
11
+
12
+ ### Contacts (1 template)
13
+
14
+ #### 1. Person
15
+ ```yaml
16
+ template_name: "Person"
17
+ description: "Track information about people you know - personal, professional, or both"
18
+ category: "contacts"
19
+ fields:
20
+ - name: "name"
21
+ type: "string"
22
+ required: true
23
+ description: "Person's full name"
24
+
25
+ - name: "relationship"
26
+ type: "array"
27
+ required: false
28
+ item_type: "string"
29
+ options: ["friend", "family", "colleague", "client", "mentor", "acquaintance", "neighbor", "professional", "business_partner"]
30
+ description: "Your relationship(s) - can have multiple (e.g., friend AND colleague)"
31
+
32
+ - name: "how_we_met"
33
+ type: "text"
34
+ required: false
35
+ description: "Story of how, where, and why you met - include fun anecdotes!"
36
+ placeholder: "Met at Tech Conference 2026. Great conversation about AI..."
37
+
38
+ - name: "met_at"
39
+ type: "string"
40
+ required: false
41
+ description: "Location or event where you met"
42
+
43
+ - name: "met_date"
44
+ type: "datetime"
45
+ required: false
46
+ description: "When you first met"
47
+
48
+ # Professional fields (optional)
49
+ - name: "company"
50
+ type: "string"
51
+ required: false
52
+ description: "Company or organization they work for"
53
+
54
+ - name: "job_title"
55
+ type: "string"
56
+ required: false
57
+ description: "Their job title or role"
58
+
59
+ - name: "expertise"
60
+ type: "array"
61
+ required: false
62
+ description: "Their areas of expertise (for professional relationships)"
63
+
64
+ # Personal fields (optional)
65
+ - name: "birthday"
66
+ type: "datetime"
67
+ required: false
68
+ description: "Birthday (for personal relationships)"
69
+
70
+ - name: "interests"
71
+ type: "array"
72
+ required: false
73
+ description: "Their interests and hobbies"
74
+
75
+ # Contact information
76
+ - name: "contact_info"
77
+ type: "object"
78
+ required: false
79
+ fields:
80
+ - phone: string
81
+ - email: string
82
+ - linkedin: string
83
+ - twitter: string
84
+ - address: string
85
+ - website: string
86
+
87
+ # Interaction tracking
88
+ - name: "last_interaction"
89
+ type: "datetime"
90
+ required: false
91
+ description: "When you last spoke or met"
92
+
93
+ - name: "follow_up"
94
+ type: "datetime"
95
+ required: false
96
+ description: "When to follow up (for professional relationships)"
97
+
98
+ - name: "notes"
99
+ type: "text"
100
+ required: false
101
+ description: "Additional notes and observations"
102
+
103
+ trigger_keywords: ["met", "person", "know", "introduced", "friend", "colleague", "contact"]
104
+ ```
105
+
106
+ **Why One Template**:
107
+ - ✅ Relationships often overlap (colleague becomes friend)
108
+ - ✅ Simpler for users (no confusion about which to use)
109
+ - ✅ Flexible (fill only relevant fields)
110
+ - ✅ All fields optional except name
111
+ - ✅ Works for any relationship type
112
+
113
+ **Example - Personal**:
114
+ ```yaml
115
+ name: "Alex Johnson"
116
+ relationship: "friend"
117
+ how_we_met: "Met at hiking meetup. We're hiking buddies now!"
118
+ birthday: "1990-05-15"
119
+ interests: ["hiking", "rock climbing", "photography"]
120
+ contact_info:
121
+ phone: "555-0123"
122
+ email: "alex@example.com"
123
+ ```
124
+
125
+ **Example - Professional**:
126
+ ```yaml
127
+ name: "Sarah Chen"
128
+ relationship: "professional"
129
+ company: "Google"
130
+ job_title: "Senior Product Manager"
131
+ how_we_met: "Met at TechCrunch Disrupt 2026. Great talk on AI products."
132
+ expertise: ["product management", "AI", "user research"]
133
+ contact_info:
134
+ email: "sarah.chen@google.com"
135
+ linkedin: "linkedin.com/in/sarahchen"
136
+ follow_up: "2026-03-15"
137
+ ```
138
+
139
+ **Example - Both**:
140
+ ```yaml
141
+ name: "Jamie Lee"
142
+ relationship: "colleague" # Started as colleague, became friend
143
+ company: "Acme Corp"
144
+ job_title: "Software Engineer"
145
+ birthday: "1988-03-20" # Personal
146
+ expertise: ["React", "Node.js"] # Professional
147
+ interests: ["coding", "gaming", "hiking"] # Personal
148
+ # Has both personal AND professional fields!
149
+ ```
150
+
151
+ ---
152
+
153
+ ### Work & Productivity (3 templates)
154
+
155
+ #### 2. Meeting Notes
156
+ ```yaml
157
+ template_name: "Meeting Notes"
158
+ description: "Capture meeting information and action items"
159
+ category: "work"
160
+ fields:
161
+ - meeting_title (required)
162
+ - date (required)
163
+ - attendees (array)
164
+ - agenda_items (array)
165
+ - discussion_points (text)
166
+ - decisions_made (array)
167
+ - action_items (array with task, assignee, due_date)
168
+ - next_meeting (datetime)
169
+ trigger_keywords: ["meeting", "discussed", "team", "sync", "standup"]
170
+ ```
171
+
172
+ #### 3. Project Tracker
173
+ ```yaml
174
+ template_name: "Project Tracker"
175
+ description: "Track project information and progress"
176
+ category: "work"
177
+ fields:
178
+ - project_name (required)
179
+ - status (enum: planning, active, paused, completed)
180
+ - start_date (datetime)
181
+ - end_date (datetime)
182
+ - stakeholders (array)
183
+ - milestones (array)
184
+ - current_phase (string)
185
+ - blockers (array)
186
+ - notes (text)
187
+ trigger_keywords: ["project", "working on", "building", "developing"]
188
+ ```
189
+
190
+ #### 4. Task/Action Item
191
+ ```yaml
192
+ template_name: "Task"
193
+ description: "Individual task or action item"
194
+ category: "work"
195
+ fields:
196
+ - task_description (required)
197
+ - due_date (datetime)
198
+ - priority (enum: low, medium, high, urgent)
199
+ - status (enum: todo, in_progress, blocked, done)
200
+ - assignee (string)
201
+ - project (string)
202
+ - estimated_hours (number)
203
+ - notes (text)
204
+ trigger_keywords: ["task", "todo", "need to", "action item"]
205
+ ```
206
+
207
+ ---
208
+
209
+ ### Personal & Lifestyle (4 templates)
210
+
211
+ #### 5. Journal Entry
212
+ ```yaml
213
+ template_name: "Journal Entry"
214
+ description: "Daily journal and reflections"
215
+ category: "personal"
216
+ fields:
217
+ - date (required)
218
+ - mood (enum: great, good, okay, bad, terrible)
219
+ - highlights (array)
220
+ - challenges (array)
221
+ - gratitude (array)
222
+ - reflections (text)
223
+ - tomorrow_goals (array)
224
+ trigger_keywords: ["today", "feeling", "journal", "reflection"]
225
+ ```
226
+
227
+ #### 6. Goal Tracker
228
+ ```yaml
229
+ template_name: "Goal"
230
+ description: "Personal or professional goals"
231
+ category: "personal"
232
+ fields:
233
+ - goal_name (required)
234
+ - category (enum: health, career, financial, personal, learning)
235
+ - target_date (datetime)
236
+ - current_progress (float, 0-1) # ✅ 0-1 for consistency with weight/trust
237
+ - milestones (array)
238
+ - obstacles (array)
239
+ - notes (text)
240
+ trigger_keywords: ["goal", "want to", "achieve", "target"]
241
+ ```
242
+
243
+ **Note**: Progress uses 0-1 float (not 0-100 int) for consistency with weight, trust, confidence, and other scoring fields throughout the system.
244
+
245
+ #### 7. Habit Tracker
246
+ ```yaml
247
+ template_name: "Habit"
248
+ description: "Track daily habits and routines"
249
+ category: "personal"
250
+ fields:
251
+ - habit_name (required)
252
+ - frequency (enum: daily, weekly, monthly)
253
+ - current_streak (number)
254
+ - best_streak (number)
255
+ - trigger (string)
256
+ - reward (string)
257
+ - notes (text)
258
+ trigger_keywords: ["habit", "routine", "daily", "every day"]
259
+ ```
260
+
261
+ #### 8. Inventory Item
262
+ ```yaml
263
+ template_name: "Inventory Item"
264
+ description: "Track items and their storage locations"
265
+ category: "organization"
266
+ fields:
267
+ - item_name (required)
268
+ - quantity (required)
269
+ - storage_location (required)
270
+ - category (enum: tools, camping, electronics, household, seasonal, sports, kitchen)
271
+ - condition (enum: new, good, worn, needs_repair)
272
+ - purchase_date (datetime)
273
+ - value (number)
274
+ - notes (text)
275
+ trigger_keywords: ["stored", "put", "kept", "where is", "inventory"]
276
+ ```
277
+
278
+ ---
279
+
280
+ ### Entertainment & Reviews (3 templates)
281
+
282
+ #### 9. Restaurant Review
283
+ ```yaml
284
+ template_name: "Restaurant Review"
285
+ description: "Track dining experiences"
286
+ category: "entertainment"
287
+ fields:
288
+ - restaurant_name (required)
289
+ - cuisine_type (string)
290
+ - rating (number, 1-5)
291
+ - favorite_dishes (array)
292
+ - price_range (enum: $, $$, $$$, $$$$)
293
+ - would_return (boolean)
294
+ - notes (text)
295
+ trigger_keywords: ["restaurant", "ate at", "dinner", "lunch", "food"]
296
+ ```
297
+
298
+ #### 10. Book Review
299
+ ```yaml
300
+ template_name: "Book Review"
301
+ description: "Track books you've read"
302
+ category: "entertainment"
303
+ fields:
304
+ - title (required)
305
+ - author (required)
306
+ - rating (number, 1-5)
307
+ - genre (string)
308
+ - date_finished (datetime)
309
+ - summary (text)
310
+ - favorite_quotes (array)
311
+ - would_recommend (boolean)
312
+ trigger_keywords: ["book", "reading", "finished reading", "author"]
313
+ ```
314
+
315
+ #### 11. Movie/Show Review
316
+ ```yaml
317
+ template_name: "Movie Review"
318
+ description: "Track movies and shows you've watched"
319
+ category: "entertainment"
320
+ fields:
321
+ - title (required)
322
+ - type (enum: movie, tv_show, documentary)
323
+ - rating (number, 1-5)
324
+ - genre (string)
325
+ - date_watched (datetime)
326
+ - summary (text)
327
+ - would_recommend (boolean)
328
+ trigger_keywords: ["movie", "watched", "show", "film", "series"]
329
+ ```
330
+
331
+ ---
332
+
333
+ ### Creative & Learning (4 templates)
334
+
335
+ #### 12. Recipe
336
+ ```yaml
337
+ template_name: "Recipe"
338
+ description: "Cooking recipes and instructions"
339
+ category: "creative"
340
+ fields:
341
+ - recipe_name (required)
342
+ - cuisine_type (string)
343
+ - servings (number)
344
+ - prep_time (number, minutes)
345
+ - cook_time (number, minutes)
346
+ - ingredients (array)
347
+ - instructions (array)
348
+ - difficulty (enum: easy, medium, hard)
349
+ - notes (text)
350
+ trigger_keywords: ["recipe", "cooking", "ingredients", "make"]
351
+ ```
352
+
353
+ #### 13. Idea Capture
354
+ ```yaml
355
+ template_name: "Idea"
356
+ description: "Quick ideas and brainstorms"
357
+ category: "creative"
358
+ fields:
359
+ - idea_title (required)
360
+ - description (text)
361
+ - category (string)
362
+ - potential_impact (enum: low, medium, high)
363
+ - next_steps (array)
364
+ - related_ideas (array)
365
+ trigger_keywords: ["idea", "thought", "what if", "brainstorm"]
366
+ ```
367
+
368
+ #### 14. Learning Note
369
+ ```yaml
370
+ template_name: "Learning Note"
371
+ description: "Capture things you've learned"
372
+ category: "learning"
373
+ fields:
374
+ - topic (required)
375
+ - category (string)
376
+ - key_concepts (array)
377
+ - examples (array)
378
+ - resources (array)
379
+ - proficiency (enum: beginner, intermediate, advanced)
380
+ - notes (text)
381
+ trigger_keywords: ["learned", "discovered", "found out", "TIL"]
382
+ ```
383
+
384
+ #### 15. Travel Destination
385
+ ```yaml
386
+ template_name: "Travel Destination"
387
+ description: "Places you've visited or want to visit"
388
+ category: "travel"
389
+ fields:
390
+ - destination_name (required)
391
+ - country (string)
392
+ - visited (boolean)
393
+ - visit_date (datetime)
394
+ - rating (number, 1-5)
395
+ - highlights (array)
396
+ - recommendations (array)
397
+ - would_return (boolean)
398
+ - notes (text)
399
+ trigger_keywords: ["travel", "visited", "trip", "destination", "vacation"]
400
+ ```
401
+
402
+ ---
403
+
404
+ ## Template Categories
405
+
406
+ ```typescript
407
+ const TEMPLATE_CATEGORIES = {
408
+ contacts: ['person'], // Single unified person template
409
+ work: ['meeting_notes', 'project_tracker', 'task'],
410
+ personal: ['journal_entry', 'goal_tracker', 'habit_tracker'],
411
+ organization: ['inventory_item'],
412
+ entertainment: ['restaurant_review', 'book_review', 'movie_review'],
413
+ creative: ['recipe', 'idea_capture'],
414
+ learning: ['learning_note'],
415
+ travel: ['travel_destination']
416
+ };
417
+ ```
418
+
419
+ ---
420
+
421
+ **Status**: Design Specification (FINAL)
422
+ **Total Templates**: 15 (1 person, 3 work, 4 personal, 3 entertainment, 4 creative/learning)
423
+ **Key Design**: Single flexible Person template for all relationship types