@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,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
|