@prmichaelsen/remember-mcp 2.2.1 → 2.3.1

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 (69) hide show
  1. package/AGENT.md +98 -5
  2. package/CHANGELOG.md +45 -0
  3. package/README.md +43 -3
  4. package/agent/commands/acp.init.md +376 -0
  5. package/agent/commands/acp.package-install.md +347 -0
  6. package/agent/commands/acp.proceed.md +311 -0
  7. package/agent/commands/acp.report.md +392 -0
  8. package/agent/commands/acp.status.md +280 -0
  9. package/agent/commands/acp.sync.md +323 -0
  10. package/agent/commands/acp.update.md +301 -0
  11. package/agent/commands/acp.validate.md +385 -0
  12. package/agent/commands/acp.version-check-for-updates.md +275 -0
  13. package/agent/commands/acp.version-check.md +190 -0
  14. package/agent/commands/acp.version-update.md +288 -0
  15. package/agent/commands/command.template.md +273 -0
  16. package/agent/design/core-memory-user-profile.md +1253 -0
  17. package/agent/design/ghost-profiles-pseudonymous-identity.md +194 -0
  18. package/agent/design/publish-tools-confirmation-flow.md +922 -0
  19. package/agent/milestones/milestone-10-shared-spaces.md +169 -0
  20. package/agent/progress.yaml +90 -4
  21. package/agent/scripts/install.sh +118 -0
  22. package/agent/scripts/update.sh +22 -10
  23. package/agent/scripts/version.sh +35 -0
  24. package/agent/tasks/task-27-implement-llm-provider-interface.md +51 -0
  25. package/agent/tasks/task-28-implement-llm-provider-factory.md +64 -0
  26. package/agent/tasks/task-29-update-config-for-llm.md +71 -0
  27. package/agent/tasks/task-30-implement-bedrock-provider.md +147 -0
  28. package/agent/tasks/task-31-implement-background-job-service.md +120 -0
  29. package/agent/tasks/task-32-test-llm-provider-integration.md +152 -0
  30. package/agent/tasks/task-34-create-confirmation-token-service.md +191 -0
  31. package/agent/tasks/task-35-create-space-memory-types-schema.md +183 -0
  32. package/agent/tasks/task-36-implement-remember-publish.md +227 -0
  33. package/agent/tasks/task-37-implement-remember-confirm.md +225 -0
  34. package/agent/tasks/task-38-implement-remember-deny.md +161 -0
  35. package/agent/tasks/task-39-implement-remember-search-space.md +188 -0
  36. package/agent/tasks/task-40-implement-remember-query-space.md +193 -0
  37. package/agent/tasks/task-41-configure-firestore-ttl.md +188 -0
  38. package/agent/tasks/task-42-create-tests-shared-spaces.md +216 -0
  39. package/agent/tasks/task-43-update-documentation.md +255 -0
  40. package/agent/tasks/task-44-implement-remember-retract.md +263 -0
  41. package/agent/tasks/task-45-fix-publish-false-success-bug.md +230 -0
  42. package/dist/llm/types.d.ts +1 -0
  43. package/dist/server-factory.js +1000 -1
  44. package/dist/server.js +1002 -3
  45. package/dist/services/confirmation-token.service.d.ts +99 -0
  46. package/dist/services/confirmation-token.service.spec.d.ts +5 -0
  47. package/dist/tools/confirm.d.ts +20 -0
  48. package/dist/tools/deny.d.ts +19 -0
  49. package/dist/tools/publish.d.ts +22 -0
  50. package/dist/tools/query-space.d.ts +28 -0
  51. package/dist/tools/search-space.d.ts +29 -0
  52. package/dist/types/space-memory.d.ts +80 -0
  53. package/dist/weaviate/space-schema.d.ts +59 -0
  54. package/dist/weaviate/space-schema.spec.d.ts +5 -0
  55. package/package.json +1 -1
  56. package/src/llm/types.ts +0 -0
  57. package/src/server-factory.ts +33 -0
  58. package/src/server.ts +33 -0
  59. package/src/services/confirmation-token.service.spec.ts +254 -0
  60. package/src/services/confirmation-token.service.ts +265 -0
  61. package/src/tools/confirm.ts +219 -0
  62. package/src/tools/create-memory.ts +7 -0
  63. package/src/tools/deny.ts +70 -0
  64. package/src/tools/publish.ts +190 -0
  65. package/src/tools/query-space.ts +197 -0
  66. package/src/tools/search-space.ts +189 -0
  67. package/src/types/space-memory.ts +94 -0
  68. package/src/weaviate/space-schema.spec.ts +131 -0
  69. package/src/weaviate/space-schema.ts +275 -0
@@ -0,0 +1,194 @@
1
+ # Ghost Profiles - Pseudonymous Identity System
2
+
3
+ **Concept**: Users can publish under pseudonymous "ghost" profiles while maintaining accountability
4
+ **Created**: 2026-02-16
5
+ **Status**: Concept / Future Design
6
+
7
+ ---
8
+
9
+ ## Overview
10
+
11
+ A "ghost" is a pseudonymous profile that users can create to publish memories under different identities. Users can have N ghost profiles, each with a unique name.
12
+
13
+ ### Key Concept
14
+
15
+ - **User-Chosen Names**: Users choose their own ghost names (subject to uniqueness)
16
+ - **Public Attribution**: Memories show ghost name (e.g., "ShadowThought")
17
+ - **Private Accountability**: System knows actual `user_id` for permissions
18
+ - **Multiple Personas**: Users can create multiple ghosts
19
+ - **Unique Names**: Ghost names are globally unique (first-come, first-served)
20
+
21
+ ---
22
+
23
+ ## Use Cases
24
+
25
+ 1. **Privacy**: Share thoughts without revealing real identity
26
+ 2. **Multiple Personas**: Different ghosts for different topics/communities
27
+ 3. **Reputation Building**: Build reputation under a consistent pseudonym
28
+ 4. **Experimentation**: Try different voices/perspectives
29
+
30
+ ---
31
+
32
+ ## Core Questions to Explore
33
+
34
+ ### Identity Management
35
+ - How are ghost profiles created?
36
+ - How many ghosts can a user have?
37
+ - Can ghost names be changed?
38
+ - How to ensure ghost name uniqueness?
39
+
40
+ ### Attribution
41
+ - ✅ Memories show ghost name (not user_id)
42
+ - Can users switch between ghosts?
43
+ - Can users publish as themselves vs. a ghost?
44
+
45
+ ### Permissions & Trust
46
+ - Does trust apply to user_id or ghost?
47
+ - Can ghosts have different trust levels?
48
+ - How to prevent abuse (creating many ghosts)?
49
+
50
+ ### Discovery
51
+ - Can users discover other ghosts by the same author?
52
+ - Should there be a way to "verify" a ghost belongs to someone?
53
+ - Can ghosts follow each other?
54
+
55
+ ### Storage
56
+ - Where are ghost profiles stored? (Firestore)
57
+ - What metadata does a ghost have?
58
+ - How to link ghost to user_id securely?
59
+
60
+ ---
61
+
62
+ ## Potential Schema
63
+
64
+ ```typescript
65
+ interface Ghost {
66
+ ghost_id: string; // Firestore document ID (unique internal ID)
67
+ ghost_name: string; // User-chosen display name (unique globally)
68
+ user_id: string; // Actual owner (private, for permissions)
69
+ created_at: string;
70
+ bio?: string; // Optional ghost bio
71
+ avatar?: string; // Optional avatar
72
+ stats: {
73
+ memories_published: number;
74
+ discovery_count: number;
75
+ };
76
+ }
77
+
78
+ // Firestore path: ghosts/{ghost_id}
79
+ // Index on: ghost_name (for uniqueness check)
80
+
81
+ interface VoidMemory {
82
+ // ... existing fields
83
+ author_id: string; // user_id (private, for permissions only)
84
+ ghost_id?: string; // Optional: Firestore ID of ghost (reference only)
85
+ attribution: 'user' | 'ghost';
86
+ }
87
+ ```
88
+
89
+ **Storage**:
90
+ - **Firestore**: `ghosts/{ghost_id}` - Ghost profile data
91
+ - **Firestore Index**: On `ghost_id` (document ID, automatic)
92
+ - **Uniqueness**: Validated manually by querying all ghosts before creation
93
+ - **Weaviate**: Void memories store ONLY `ghost_id` (not ghost_name)
94
+
95
+ **Uniqueness Validation**:
96
+ ```typescript
97
+ // Before creating ghost
98
+ const existingGhosts = await db.collection('ghosts')
99
+ .where('ghost_name', '==', requestedName)
100
+ .limit(1)
101
+ .get();
102
+
103
+ if (!existingGhosts.empty) {
104
+ throw new Error('Ghost name already taken');
105
+ }
106
+ ```
107
+
108
+ **Display Logic**:
109
+ - When displaying memories, fetch `ghost_name` from Firestore via `ghost_id`
110
+ - This ensures name changes propagate automatically
111
+ - If `attribution === 'ghost'`: Fetch and show `ghost_name` from `ghosts/{ghost_id}`
112
+ - If `attribution === 'user'`: Show user's real name/ID
113
+ - `author_id` (user_id) is NEVER shown publicly, only used for permissions
114
+
115
+ **Trade-off**:
116
+ - ✅ Ghost name changes propagate automatically
117
+ - ✅ No stale data in Weaviate
118
+ - ✅ Manual uniqueness validation (full control)
119
+ - ❌ Requires Firestore lookup for each memory display (can be cached)
120
+ - ❌ Uniqueness check requires full collection scan (can optimize with index)
121
+
122
+ ---
123
+
124
+ ## Integration with Publishing
125
+
126
+ ### Modified Flow
127
+
128
+ ```
129
+ Agent: remember_publish(memory_id, target="void", ghost_id="ghost_123")
130
+
131
+ System: Validates ghost belongs to user, generates token
132
+
133
+ Response: { status: "pending", token: "...", payload: {...} }
134
+
135
+ Agent: "Publish as ghost 'ShadowThought'?"
136
+
137
+ User: "Yes" → remember_confirm(token)
138
+ ```
139
+
140
+ ---
141
+
142
+ ## Future Tools
143
+
144
+ - `remember_create_ghost(ghost_name, bio)` - Create new ghost profile
145
+ - `remember_list_ghosts()` - List user's ghost profiles
146
+ - `remember_update_ghost(ghost_id, updates)` - Update ghost profile
147
+ - `remember_delete_ghost(ghost_id)` - Delete ghost (requires confirmation)
148
+ - `remember_search_space(query, ghost_name)` - Filter by ghost
149
+
150
+ ---
151
+
152
+ ## Benefits
153
+
154
+ ✅ **Privacy**: Pseudonymous publishing
155
+ ✅ **Accountability**: System knows real user_id
156
+ ✅ **Flexibility**: Multiple personas
157
+ ✅ **Reputation**: Build consistent identity
158
+ ✅ **Safety**: Can't fully hide (user_id tracked)
159
+
160
+ ---
161
+
162
+ ## Challenges
163
+
164
+ ❌ **Complexity**: Additional layer of identity
165
+ ❌ **Abuse Prevention**: Users creating many ghosts
166
+ ❌ **Name Squatting**: Popular ghost names taken
167
+ ❌ **Trust Model**: How does trust work with ghosts?
168
+ ❌ **Discovery**: Finding ghosts vs. users
169
+
170
+ ---
171
+
172
+ ## Design Decisions Needed
173
+
174
+ 1. **Ghost Limits**: How many ghosts per user?
175
+ 2. **Name Policy**: Length, characters, uniqueness
176
+ 3. **Trust Model**: Per-user or per-ghost?
177
+ 4. **Verification**: Can users prove ghost ownership?
178
+ 5. **Deletion**: What happens to memories when ghost deleted?
179
+ 6. **Migration**: Can memories move between ghosts?
180
+
181
+ ---
182
+
183
+ ## Next Steps
184
+
185
+ 1. Explore trust model implications
186
+ 2. Design ghost creation/management tools
187
+ 3. Consider abuse prevention mechanisms
188
+ 4. Design ghost discovery features
189
+ 5. Plan migration path from current attribution
190
+
191
+ ---
192
+
193
+ **Status**: Concept - Requires intensive design work
194
+ **Recommendation**: Implement basic publishing first, add ghosts in future milestone