@prmichaelsen/remember-mcp 2.8.0 → 3.12.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 (250) hide show
  1. package/AGENT.md +296 -250
  2. package/CHANGELOG.md +468 -0
  3. package/README.md +163 -46
  4. package/agent/commands/acp.clarification-create.md +382 -0
  5. package/agent/commands/acp.command-create.md +0 -1
  6. package/agent/commands/acp.design-create.md +0 -1
  7. package/agent/commands/acp.init.md +0 -1
  8. package/agent/commands/acp.package-create.md +0 -1
  9. package/agent/commands/acp.package-info.md +0 -1
  10. package/agent/commands/acp.package-install.md +0 -1
  11. package/agent/commands/acp.package-list.md +0 -1
  12. package/agent/commands/acp.package-publish.md +0 -1
  13. package/agent/commands/acp.package-remove.md +0 -1
  14. package/agent/commands/acp.package-search.md +0 -1
  15. package/agent/commands/acp.package-update.md +0 -1
  16. package/agent/commands/acp.package-validate.md +0 -1
  17. package/agent/commands/acp.pattern-create.md +0 -1
  18. package/agent/commands/acp.plan.md +0 -1
  19. package/agent/commands/acp.proceed.md +0 -1
  20. package/agent/commands/acp.project-create.md +0 -1
  21. package/agent/commands/acp.project-info.md +309 -0
  22. package/agent/commands/acp.project-list.md +0 -1
  23. package/agent/commands/acp.project-remove.md +379 -0
  24. package/agent/commands/acp.project-set.md +0 -1
  25. package/agent/commands/acp.project-update.md +296 -0
  26. package/agent/commands/acp.report.md +0 -1
  27. package/agent/commands/acp.resume.md +0 -1
  28. package/agent/commands/acp.status.md +0 -1
  29. package/agent/commands/acp.sync.md +0 -1
  30. package/agent/commands/acp.task-create.md +17 -10
  31. package/agent/commands/acp.update.md +0 -1
  32. package/agent/commands/acp.validate.md +0 -1
  33. package/agent/commands/acp.version-check-for-updates.md +0 -1
  34. package/agent/commands/acp.version-check.md +0 -1
  35. package/agent/commands/acp.version-update.md +0 -1
  36. package/agent/commands/command.template.md +0 -5
  37. package/agent/commands/git.commit.md +13 -2
  38. package/agent/commands/git.init.md +0 -1
  39. package/agent/design/comment-memory-type.md +2 -2
  40. package/agent/design/local.collaborative-memory-sync.md +265 -0
  41. package/agent/design/local.content-flags.md +210 -0
  42. package/agent/design/local.ghost-persona-system.md +273 -0
  43. package/agent/design/local.group-acl-integration.md +338 -0
  44. package/agent/design/local.memory-acl-schema.md +352 -0
  45. package/agent/design/local.memory-collection-pattern-v2.md +348 -0
  46. package/agent/design/local.moderation-and-space-config.md +257 -0
  47. package/agent/design/local.v2-api-reference.md +621 -0
  48. package/agent/design/local.v2-migration-guide.md +191 -0
  49. package/agent/design/local.v2-usage-examples.md +265 -0
  50. package/agent/design/permissions-storage-architecture.md +11 -3
  51. package/agent/design/soft-delete-system.md +291 -0
  52. package/agent/design/trust-escalation-prevention.md +9 -2
  53. package/agent/design/trust-system-implementation.md +12 -3
  54. package/agent/milestones/milestone-13-soft-delete-system.md +306 -0
  55. package/agent/milestones/milestone-14-memory-collection-v2.md +182 -0
  56. package/agent/milestones/milestone-15-moderation-space-config.md +126 -0
  57. package/agent/package.template.yaml +0 -17
  58. package/agent/progress.yaml +762 -49
  59. package/agent/scripts/acp.common.sh +2 -0
  60. package/agent/scripts/acp.install.sh +15 -85
  61. package/agent/scripts/acp.package-install-optimized.sh +454 -0
  62. package/agent/scripts/acp.package-install.sh +248 -380
  63. package/agent/scripts/acp.package-validate.sh +0 -99
  64. package/agent/scripts/acp.project-info.sh +218 -0
  65. package/agent/scripts/acp.project-remove.sh +302 -0
  66. package/agent/scripts/acp.project-update.sh +296 -0
  67. package/agent/scripts/acp.yaml-parser.sh +128 -10
  68. package/agent/tasks/milestone-14-memory-collection-v2/task-165-core-infrastructure-setup.md +171 -0
  69. package/agent/tasks/milestone-14-memory-collection-v2/task-166-update-remember-publish.md +191 -0
  70. package/agent/tasks/milestone-14-memory-collection-v2/task-167-update-remember-retract.md +186 -0
  71. package/agent/tasks/milestone-14-memory-collection-v2/task-168-implement-remember-revise.md +184 -0
  72. package/agent/tasks/milestone-14-memory-collection-v2/task-169-update-remember-search-space.md +179 -0
  73. package/agent/tasks/milestone-14-memory-collection-v2/task-170-update-remember-create-update.md +139 -0
  74. package/agent/tasks/milestone-14-memory-collection-v2/task-172-performance-testing-optimization.md +161 -0
  75. package/agent/tasks/milestone-14-memory-collection-v2/task-173-documentation-examples.md +258 -0
  76. package/agent/tasks/milestone-15-moderation-space-config/task-174-add-moderation-schema-fields.md +57 -0
  77. package/agent/tasks/milestone-15-moderation-space-config/task-175-create-space-config-service.md +64 -0
  78. package/agent/tasks/milestone-15-moderation-space-config/task-176-wire-moderation-publish-flow.md +45 -0
  79. package/agent/tasks/milestone-15-moderation-space-config/task-177-add-moderation-search-filters.md +70 -0
  80. package/agent/tasks/milestone-15-moderation-space-config/task-178-create-remember-moderate-tool.md +69 -0
  81. package/agent/tasks/milestone-15-moderation-space-config/task-179-documentation-integration-tests.md +58 -0
  82. package/agent/tasks/milestone-16-ghost-system/task-187-ghost-config-firestore.md +41 -0
  83. package/agent/tasks/milestone-16-ghost-system/task-188-trust-filter-integration.md +44 -0
  84. package/agent/tasks/milestone-16-ghost-system/task-189-ghost-memory-filtering.md +43 -0
  85. package/agent/tasks/milestone-16-ghost-system/task-190-ghost-config-tools.md +45 -0
  86. package/agent/tasks/milestone-16-ghost-system/task-191-escalation-firestore.md +38 -0
  87. package/agent/tasks/milestone-16-ghost-system/task-192-documentation-verification.md +39 -0
  88. package/agent/tasks/milestone-7-trust-permissions/task-180-access-result-permission-types.md +69 -0
  89. package/agent/tasks/milestone-7-trust-permissions/task-181-firestore-permissions-access-logs.md +56 -0
  90. package/agent/tasks/milestone-7-trust-permissions/task-182-trust-enforcement-service.md +68 -0
  91. package/agent/tasks/milestone-7-trust-permissions/task-183-access-control-service.md +70 -0
  92. package/agent/tasks/milestone-7-trust-permissions/task-184-permission-tools.md +79 -0
  93. package/agent/tasks/milestone-7-trust-permissions/task-185-wire-trust-into-search-query.md +55 -0
  94. package/agent/tasks/milestone-7-trust-permissions/task-186-documentation-verification.md +56 -0
  95. package/agent/tasks/task-70-add-soft-delete-schema-fields.md +165 -0
  96. package/agent/tasks/task-71-implement-delete-confirmation-flow.md +257 -0
  97. package/agent/tasks/task-72-add-deleted-filter-to-search-tools.md +18 -0
  98. package/agent/tasks/task-73-update-relationship-handling.md +18 -0
  99. package/agent/tasks/task-74-add-unit-tests-soft-delete.md +18 -0
  100. package/agent/tasks/task-75-update-documentation-changelog.md +26 -0
  101. package/agent/tasks/task-76-fix-indexnullstate-schema-bug.md +197 -0
  102. package/dist/collections/composite-ids.d.ts +106 -0
  103. package/dist/collections/core-infrastructure.spec.d.ts +11 -0
  104. package/dist/collections/dot-notation.d.ts +106 -0
  105. package/dist/collections/tracking-arrays.d.ts +176 -0
  106. package/dist/constants/content-types.d.ts +1 -0
  107. package/dist/schema/v2-collections-comments.spec.d.ts +8 -0
  108. package/dist/schema/v2-collections.d.ts +210 -0
  109. package/dist/server-factory.d.ts +15 -0
  110. package/dist/server-factory.js +3261 -1316
  111. package/dist/server.js +2926 -1236
  112. package/dist/services/access-control.d.ts +103 -0
  113. package/dist/services/access-control.spec.d.ts +2 -0
  114. package/dist/services/credentials-provider.d.ts +24 -0
  115. package/dist/services/credentials-provider.spec.d.ts +2 -0
  116. package/dist/services/escalation.service.d.ts +22 -0
  117. package/dist/services/escalation.service.spec.d.ts +2 -0
  118. package/dist/services/ghost-config.service.d.ts +55 -0
  119. package/dist/services/ghost-config.service.spec.d.ts +2 -0
  120. package/dist/services/space-config.service.d.ts +23 -0
  121. package/dist/services/space-config.service.spec.d.ts +2 -0
  122. package/dist/services/trust-enforcement.d.ts +83 -0
  123. package/dist/services/trust-enforcement.spec.d.ts +2 -0
  124. package/dist/services/trust-validator.d.ts +43 -0
  125. package/dist/services/trust-validator.spec.d.ts +2 -0
  126. package/dist/tools/confirm-publish-moderation.spec.d.ts +8 -0
  127. package/dist/tools/confirm.d.ts +8 -1
  128. package/dist/tools/create-memory.d.ts +2 -1
  129. package/dist/tools/create-memory.spec.d.ts +10 -0
  130. package/dist/tools/create-relationship.d.ts +2 -1
  131. package/dist/tools/delete-memory.d.ts +7 -31
  132. package/dist/tools/delete-relationship.d.ts +2 -1
  133. package/dist/tools/deny.d.ts +2 -1
  134. package/dist/tools/find-similar.d.ts +10 -2
  135. package/dist/tools/get-preferences.d.ts +2 -1
  136. package/dist/tools/ghost-config.d.ts +27 -0
  137. package/dist/tools/ghost-config.spec.d.ts +2 -0
  138. package/dist/tools/moderate.d.ts +20 -0
  139. package/dist/tools/moderate.spec.d.ts +5 -0
  140. package/dist/tools/publish.d.ts +11 -3
  141. package/dist/tools/query-memory.d.ts +11 -2
  142. package/dist/tools/query-space.d.ts +4 -1
  143. package/dist/tools/retract.d.ts +29 -0
  144. package/dist/tools/revise.d.ts +45 -0
  145. package/dist/tools/revise.spec.d.ts +8 -0
  146. package/dist/tools/search-memory.d.ts +8 -1
  147. package/dist/tools/search-relationship.d.ts +10 -2
  148. package/dist/tools/search-space.d.ts +25 -5
  149. package/dist/tools/search-space.spec.d.ts +9 -0
  150. package/dist/tools/set-preference.d.ts +2 -1
  151. package/dist/tools/update-memory.d.ts +2 -1
  152. package/dist/tools/update-relationship.d.ts +2 -1
  153. package/dist/types/access-result.d.ts +48 -0
  154. package/dist/types/access-result.spec.d.ts +2 -0
  155. package/dist/types/auth.d.ts +46 -0
  156. package/dist/types/ghost-config.d.ts +36 -0
  157. package/dist/types/memory.d.ts +11 -1
  158. package/dist/types/preferences.d.ts +1 -1
  159. package/dist/types/space-memory.d.ts +3 -0
  160. package/dist/utils/auth-helpers.d.ts +14 -0
  161. package/dist/utils/auth-helpers.spec.d.ts +2 -0
  162. package/dist/utils/test-data-generator.d.ts +124 -0
  163. package/dist/utils/test-data-generator.spec.d.ts +12 -0
  164. package/dist/utils/weaviate-filters.d.ts +19 -0
  165. package/dist/v2-performance.e2e.d.ts +17 -0
  166. package/dist/v2-smoke.e2e.d.ts +14 -0
  167. package/dist/weaviate/client.d.ts +5 -8
  168. package/dist/weaviate/space-schema.d.ts +2 -2
  169. package/docs/performance/v2-benchmarks.md +80 -0
  170. package/jest.e2e.config.js +14 -3
  171. package/package.json +1 -1
  172. package/scripts/.collection-recreation-state.yaml +16 -0
  173. package/scripts/.gitkeep +5 -0
  174. package/scripts/README-collection-recreation.md +224 -0
  175. package/scripts/README.md +51 -0
  176. package/scripts/backup-collections.ts +543 -0
  177. package/scripts/delete-collection.ts +137 -0
  178. package/scripts/migrate-recreate-collections.ts +578 -0
  179. package/scripts/migrate-v1-to-v2.ts +1094 -0
  180. package/scripts/package-lock.json +1113 -0
  181. package/scripts/package.json +27 -0
  182. package/src/collections/composite-ids.ts +193 -0
  183. package/src/collections/core-infrastructure.spec.ts +353 -0
  184. package/src/collections/dot-notation.ts +212 -0
  185. package/src/collections/tracking-arrays.ts +298 -0
  186. package/src/constants/content-types.ts +20 -0
  187. package/src/schema/v2-collections-comments.spec.ts +141 -0
  188. package/src/schema/v2-collections.ts +433 -0
  189. package/src/server-factory.ts +89 -20
  190. package/src/server.ts +45 -17
  191. package/src/services/access-control.spec.ts +383 -0
  192. package/src/services/access-control.ts +291 -0
  193. package/src/services/credentials-provider.spec.ts +22 -0
  194. package/src/services/credentials-provider.ts +34 -0
  195. package/src/services/escalation.service.spec.ts +183 -0
  196. package/src/services/escalation.service.ts +150 -0
  197. package/src/services/ghost-config.service.spec.ts +339 -0
  198. package/src/services/ghost-config.service.ts +219 -0
  199. package/src/services/space-config.service.spec.ts +102 -0
  200. package/src/services/space-config.service.ts +79 -0
  201. package/src/services/trust-enforcement.spec.ts +309 -0
  202. package/src/services/trust-enforcement.ts +197 -0
  203. package/src/services/trust-validator.spec.ts +108 -0
  204. package/src/services/trust-validator.ts +105 -0
  205. package/src/tools/confirm-publish-moderation.spec.ts +240 -0
  206. package/src/tools/confirm.ts +914 -116
  207. package/src/tools/create-memory.spec.ts +126 -0
  208. package/src/tools/create-memory.ts +20 -27
  209. package/src/tools/create-relationship.ts +30 -8
  210. package/src/tools/delete-memory.ts +99 -64
  211. package/src/tools/delete-relationship.ts +15 -6
  212. package/src/tools/deny.ts +8 -1
  213. package/src/tools/find-similar.ts +44 -6
  214. package/src/tools/get-preferences.ts +10 -1
  215. package/src/tools/ghost-config.spec.ts +180 -0
  216. package/src/tools/ghost-config.ts +230 -0
  217. package/src/tools/moderate.spec.ts +277 -0
  218. package/src/tools/moderate.ts +219 -0
  219. package/src/tools/publish.ts +99 -41
  220. package/src/tools/query-memory.ts +44 -9
  221. package/src/tools/query-space.ts +39 -4
  222. package/src/tools/retract.ts +292 -0
  223. package/src/tools/revise.spec.ts +146 -0
  224. package/src/tools/revise.ts +283 -0
  225. package/src/tools/search-memory.ts +46 -10
  226. package/src/tools/search-relationship.ts +30 -7
  227. package/src/tools/search-space.spec.ts +341 -0
  228. package/src/tools/search-space.ts +323 -99
  229. package/src/tools/set-preference.ts +10 -1
  230. package/src/tools/update-memory.ts +24 -5
  231. package/src/tools/update-relationship.ts +10 -1
  232. package/src/types/access-result.spec.ts +193 -0
  233. package/src/types/access-result.ts +62 -0
  234. package/src/types/auth.ts +52 -0
  235. package/src/types/ghost-config.ts +46 -0
  236. package/src/types/memory.ts +20 -1
  237. package/src/types/preferences.ts +2 -2
  238. package/src/types/space-memory.ts +5 -0
  239. package/src/utils/auth-helpers.spec.ts +75 -0
  240. package/src/utils/auth-helpers.ts +25 -0
  241. package/src/utils/test-data-generator.spec.ts +317 -0
  242. package/src/utils/test-data-generator.ts +292 -0
  243. package/src/utils/weaviate-filters.ts +32 -5
  244. package/src/v2-performance.e2e.ts +173 -0
  245. package/src/v2-smoke.e2e.ts +401 -0
  246. package/src/weaviate/client.spec.ts +5 -5
  247. package/src/weaviate/client.ts +55 -35
  248. package/src/weaviate/schema.ts +11 -239
  249. package/src/weaviate/space-schema.spec.ts +28 -25
  250. package/src/weaviate/space-schema.ts +35 -11
@@ -0,0 +1,291 @@
1
+ # Soft Delete System
2
+
3
+ **Concept**: Implement soft delete with confirmation flow for memory deletion
4
+ **Created**: 2026-02-25
5
+ **Status**: Design Specification
6
+
7
+ ---
8
+
9
+ ## Overview
10
+
11
+ Implement a soft delete system that prevents accidental data loss by requiring confirmation before deletion and marking memories as deleted rather than permanently removing them. This enables recovery and maintains data integrity while providing a safer deletion workflow.
12
+
13
+ ---
14
+
15
+ ## Problem Statement
16
+
17
+ Current deletion implementation has critical issues:
18
+ - **No confirmation flow**: Memories are instantly deleted without user confirmation
19
+ - **No recovery**: Deleted memories cannot be recovered
20
+ - **No visibility**: Cannot search or view deleted memories
21
+ - **Data loss risk**: Accidental deletions result in permanent data loss
22
+
23
+ ---
24
+
25
+ ## Solution
26
+
27
+ Implement a comprehensive soft delete system with:
28
+
29
+ 1. **Confirmation Flow**: Reuse existing token-based confirmation system
30
+ 2. **Soft Delete Schema**: Add `deleted_at`, `deleted_by`, `deletion_reason` fields
31
+ 3. **Default Filtering**: Exclude deleted memories from all searches by default
32
+ 4. **Explicit Override**: `deleted_filter` parameter to include/only show deleted memories
33
+ 5. **Relationship Handling**: Mark relationships as "orphaned" when memories deleted
34
+ 6. **Breaking Change**: Immediate migration to new behavior (no feature flags)
35
+
36
+ ---
37
+
38
+ ## Implementation
39
+
40
+ ### Schema Changes
41
+
42
+ Add three new fields to Memory schema (both `Memory_{user_id}` and `Memory_public`):
43
+
44
+ ```typescript
45
+ {
46
+ name: 'deleted_at',
47
+ dataType: 'date' as any,
48
+ description: 'Timestamp when memory was soft-deleted (null = not deleted)'
49
+ },
50
+ {
51
+ name: 'deleted_by',
52
+ dataType: 'text' as any,
53
+ description: 'User ID who deleted the memory'
54
+ },
55
+ {
56
+ name: 'deletion_reason',
57
+ dataType: 'text' as any,
58
+ description: 'Optional reason for deletion'
59
+ }
60
+ ```
61
+
62
+ **Note**: `deleted_at` is nullable. `null` or missing = not deleted.
63
+
64
+ ### Tool Modifications
65
+
66
+ #### `remember_delete_memory` (Modified)
67
+
68
+ **Old Behavior**: Immediately deletes memory from Weaviate
69
+
70
+ **New Behavior**: Creates confirmation token and returns it
71
+
72
+ ```typescript
73
+ // Input
74
+ {
75
+ memory_id: string;
76
+ reason?: string; // Optional deletion reason
77
+ }
78
+
79
+ // Output
80
+ {
81
+ success: true;
82
+ token: string;
83
+ expires_at: string;
84
+ preview: {
85
+ memory_id: string;
86
+ content: string;
87
+ relationships_count: number;
88
+ will_orphan: string[]; // IDs of relationships that will be orphaned
89
+ }
90
+ }
91
+ ```
92
+
93
+ #### `remember_confirm` (Enhanced)
94
+
95
+ Already handles confirmation. Will be enhanced to support `delete_memory` action:
96
+
97
+ ```typescript
98
+ // When confirming deletion
99
+ {
100
+ action: 'delete_memory',
101
+ payload: {
102
+ memory_id: string;
103
+ reason?: string;
104
+ }
105
+ }
106
+
107
+ // Execution:
108
+ // 1. Update memory: deleted_at = now(), deleted_by = user_id, deletion_reason = reason
109
+ // 2. Mark relationships as orphaned (implementation TBD)
110
+ // 3. Return success
111
+ ```
112
+
113
+ #### `remember_deny` (No Changes)
114
+
115
+ Already handles denial of any pending action.
116
+
117
+ ### Search Tool Modifications
118
+
119
+ All search tools get new `deleted_filter` parameter:
120
+
121
+ ```typescript
122
+ deleted_filter?: 'exclude' | 'include' | 'only'
123
+ // Default: 'exclude'
124
+ ```
125
+
126
+ **Affected Tools**:
127
+ - `remember_search_memory`
128
+ - `remember_query_memory`
129
+ - `remember_find_similar`
130
+ - `remember_search_relationship`
131
+
132
+ **Filter Implementation** (Weaviate query level):
133
+
134
+ ```typescript
135
+ // deleted_filter: 'exclude' (default)
136
+ .where(Filters.or(
137
+ collection.filter.byProperty('deleted_at').isNull(true),
138
+ // ... other filters
139
+ ))
140
+
141
+ // deleted_filter: 'include'
142
+ // No filter applied
143
+
144
+ // deleted_filter: 'only'
145
+ .where(
146
+ collection.filter.byProperty('deleted_at').isNull(false)
147
+ )
148
+ ```
149
+
150
+ ### Relationship Handling
151
+
152
+ **When memory is soft-deleted**:
153
+ - Relationships remain in database
154
+ - Relationships are marked as "orphaned" (implementation TBD - may use a flag or computed property)
155
+ - Searching relationships excludes deleted memories by default
156
+
157
+ **Creating relationships**:
158
+ - Cannot create relationship with deleted memory
159
+ - Error: "Cannot create relationship: memory {id} is deleted"
160
+
161
+ **Updating deleted memories**:
162
+ - Error: "Cannot update deleted memory"
163
+ - User must restore first (future enhancement)
164
+
165
+ ---
166
+
167
+ ## Benefits
168
+
169
+ 1. **Safety**: Confirmation flow prevents accidental deletions
170
+ 2. **Recovery**: Soft delete enables future restoration feature
171
+ 3. **Audit Trail**: Track who deleted what and when
172
+ 4. **Flexibility**: `deleted_filter` parameter allows searching deleted memories when needed
173
+ 5. **Data Integrity**: Relationships preserved (orphaned but not lost)
174
+
175
+ ---
176
+
177
+ ## Trade-offs
178
+
179
+ 1. **Storage**: Deleted memories consume storage (acceptable trade-off)
180
+ 2. **Complexity**: Additional filtering logic in all search tools
181
+ 3. **Breaking Change**: Immediate behavior change (no backward compatibility)
182
+ 4. **No Restoration**: Phase 1 doesn't include restoration tool (future enhancement)
183
+ 5. **Shared Spaces**: Deleted published memories remain in spaces (future: `remember_retract`)
184
+
185
+ ---
186
+
187
+ ## Migration Strategy
188
+
189
+ ### Existing Data
190
+
191
+ **Approach**: Treat missing `deleted_at` field as "not deleted"
192
+ - No migration script needed
193
+ - Existing memories implicitly have `deleted_at: null`
194
+ - Weaviate `isNull(true)` filter handles this correctly
195
+
196
+ ### API Changes
197
+
198
+ **Breaking Change**: Immediate migration
199
+ - `remember_delete_memory` behavior changes immediately
200
+ - All search tools add `deleted_filter` parameter (default: 'exclude')
201
+ - No feature flags or gradual rollout
202
+ - Version bump: v2.8.0 → v3.0.0 (major version)
203
+
204
+ ---
205
+
206
+ ## Future Enhancements
207
+
208
+ ### Phase 2: Recovery (Future)
209
+ - `remember_restore_memory` tool
210
+ - Confirmation flow for restoration
211
+ - Automatic relationship restoration
212
+
213
+ ### Phase 3: Permanent Deletion (Not Planned)
214
+ - No permanent deletion feature
215
+ - Soft delete is sufficient
216
+ - Storage cost is acceptable
217
+
218
+ ### Phase 4: Shared Space Integration (Future)
219
+ - `remember_retract` tool to unpublish memories
220
+ - Separate from deletion
221
+ - Requires confirmation
222
+
223
+ ### Phase 5: Moderation (Future)
224
+ - Space moderators can hide memories
225
+ - Uses `moderation_flags` instead of `deleted_at`
226
+ - Separate from user deletion
227
+
228
+ ---
229
+
230
+ ## Security Considerations
231
+
232
+ ### Access Control
233
+
234
+ **Deleted memories**:
235
+ - Only owner can search their deleted memories (`deleted_filter: 'include'` or `'only'`)
236
+ - Other users cannot see deleted memories (filtered out)
237
+ - Shared space memories remain visible until retracted (future enhancement)
238
+
239
+ **Confirmation tokens**:
240
+ - Reuse existing token service
241
+ - 5-minute expiry
242
+ - One-time use
243
+
244
+ ---
245
+
246
+ ## Testing Strategy
247
+
248
+ 1. **Unit Tests**:
249
+ - Schema field validation
250
+ - Filter logic (exclude/include/only)
251
+ - Confirmation flow
252
+ - Relationship orphaning
253
+
254
+ 2. **Integration Tests**:
255
+ - End-to-end deletion workflow
256
+ - Search with deleted_filter variations
257
+ - Relationship creation with deleted memories (should fail)
258
+ - Update deleted memory (should fail)
259
+
260
+ 3. **Edge Cases**:
261
+ - Delete already deleted memory
262
+ - Confirm expired token
263
+ - Search with invalid deleted_filter value
264
+
265
+ ---
266
+
267
+ ## Documentation Updates
268
+
269
+ 1. **README.md**: Update deletion workflow examples
270
+ 2. **CHANGELOG.md**: Document breaking change (v3.0.0)
271
+ 3. **Tool Descriptions**: Update all affected tools
272
+ 4. **Migration Guide**: Document behavior changes
273
+
274
+ ---
275
+
276
+ ## Open Questions
277
+
278
+ **From Clarification Document**:
279
+
280
+ 1. **Agent Permission** (Item 3.2, Question 3):
281
+ > "Should agents be able to search deleted memories without explicit user permission, or should this require a special flag?"
282
+ > Response: "Clarification needed"
283
+
284
+ **Recommendation**: Allow agents to search deleted memories if user explicitly requests it in natural language (e.g., "search my deleted memories"). The `deleted_filter` parameter provides the mechanism. No additional permission system needed.
285
+
286
+ ---
287
+
288
+ **Status**: Design Specification Complete
289
+ **Recommendation**: Proceed with milestone and task creation
290
+ **Priority**: Highest (per user feedback)
291
+ **Estimated Effort**: 2-3 weeks
@@ -1,9 +1,16 @@
1
1
  # Trust Escalation Prevention
2
2
 
3
- **Concept**: Automatic trust reduction for repeated unauthorized access attempts
4
- **Created**: 2026-02-11
3
+ **Concept**: Automatic trust reduction for repeated unauthorized access attempts
4
+ **Created**: 2026-02-11
5
+ **Updated**: 2026-02-27
5
6
  **Status**: Design Specification
6
7
 
8
+ > **NOTE (2026-02-27)**: Trust escalation applies to ghost/persona conversations (confirmed in
9
+ > clarification-3). When a user repeatedly asks a ghost about topics above their trust level,
10
+ > the escalation system triggers: -0.1 trust per failed attempt, block after 3 attempts. The
11
+ > ghost's system prompt warns progressively before backend escalation kicks in.
12
+ > See `local.ghost-persona-system.md` for ghost-specific escalation behavior.
13
+
7
14
  ---
8
15
 
9
16
  ## Overview
@@ -1,8 +1,17 @@
1
1
  # Trust System Implementation - Prompt-Based Enforcement
2
2
 
3
- **Concept**: Trust enforcement through LLM prompting and validation
4
- **Created**: 2026-02-11
5
- **Status**: Design Specification
3
+ **Concept**: Trust enforcement through LLM prompting and validation
4
+ **Created**: 2026-02-11
5
+ **Updated**: 2026-02-27
6
+ **Status**: Superseded by Ghost/Persona Design
7
+
8
+ > **NOTE (2026-02-27)**: This document describes **prompt-based enforcement** as the primary
9
+ > trust mechanism. Per the ghost/persona design (`local.ghost-persona-system.md`), the primary
10
+ > enforcement is now **query-level filtering** at the Weaviate layer — memories above the
11
+ > accessor's trust threshold are never returned. Prompt-based enforcement remains as one of
12
+ > three configurable modes (query, prompt, hybrid), but query is the default. The prompt-based
13
+ > approach described here applies only when enforcement_mode is set to 'prompt' or 'hybrid'.
14
+ > See `local.ghost-persona-system.md` for the current architecture.
6
15
 
7
16
  ---
8
17
 
@@ -0,0 +1,306 @@
1
+ # Milestone 13: Soft Delete System
2
+
3
+ **Goal**: Implement safe deletion with confirmation flow and recovery capabilities
4
+ **Duration**: 2-3 weeks
5
+ **Dependencies**: M10 (Shared Spaces - for confirmation token service)
6
+ **Status**: Not Started
7
+ **Priority**: Highest
8
+
9
+ ---
10
+
11
+ ## Overview
12
+
13
+ Implement a comprehensive soft delete system that prevents accidental data loss by requiring confirmation before deletion and marking memories as deleted rather than permanently removing them. This enables future recovery features and maintains data integrity while providing a safer deletion workflow.
14
+
15
+ **Key Innovation**: Reuse existing confirmation token service from `remember_publish` for a consistent user experience across all destructive operations.
16
+
17
+ ---
18
+
19
+ ## Deliverables
20
+
21
+ ### 1. Schema Updates (3 new fields)
22
+ - Add `deleted_at` field (date, nullable) - Timestamp of deletion
23
+ - Add `deleted_by` field (text) - User ID who deleted the memory
24
+ - Add `deletion_reason` field (text) - Optional reason for deletion
25
+
26
+ ### 2. Confirmation Flow
27
+ - Modify `remember_delete_memory` to create confirmation token
28
+ - Enhance `remember_confirm` to handle `delete_memory` action
29
+ - Include deletion preview (content, relationship count, orphaned relationships)
30
+
31
+ ### 3. Search Tool Updates (4 tools)
32
+ - Add `deleted_filter` parameter to `remember_search_memory`
33
+ - Add `deleted_filter` parameter to `remember_query_memory`
34
+ - Add `deleted_filter` parameter to `remember_find_similar`
35
+ - Add `deleted_filter` parameter to `remember_search_relationship`
36
+
37
+ ### 4. Relationship Handling
38
+ - Mark relationships as "orphaned" when memory deleted
39
+ - Prevent creating relationships with deleted memories
40
+ - Exclude deleted memories from relationship searches by default
41
+
42
+ ### 5. Error Handling
43
+ - Return error when updating deleted memory
44
+ - Return error when creating relationship with deleted memory
45
+ - Clear error messages with actionable guidance
46
+
47
+ ### 6. Documentation Updates
48
+ - Update README with new deletion workflow
49
+ - Document breaking changes in CHANGELOG (v3.0.0)
50
+ - Update tool descriptions
51
+ - Add migration guide
52
+
53
+ ### 7. Testing
54
+ - Unit tests for schema fields
55
+ - Unit tests for confirmation flow
56
+ - Unit tests for deleted_filter parameter
57
+ - Unit tests for relationship orphaning
58
+ - Integration tests for full deletion workflow
59
+
60
+ ---
61
+
62
+ ## Success Criteria
63
+
64
+ - [ ] Schema has 3 new fields: `deleted_at`, `deleted_by`, `deletion_reason`
65
+ - [ ] `remember_delete_memory` creates confirmation token (not immediate delete)
66
+ - [ ] `remember_confirm` handles `delete_memory` action
67
+ - [ ] Deletion preview shows content and relationship impact
68
+ - [ ] All 4 search tools have `deleted_filter` parameter
69
+ - [ ] Default behavior excludes deleted memories from all searches
70
+ - [ ] `deleted_filter: "include"` shows all memories (deleted + active)
71
+ - [ ] `deleted_filter: "only"` shows only deleted memories
72
+ - [ ] Relationships marked as orphaned when memory deleted
73
+ - [ ] Cannot create relationship with deleted memory (returns error)
74
+ - [ ] Cannot update deleted memory (returns error)
75
+ - [ ] All existing tests still passing
76
+ - [ ] New soft delete tests passing
77
+ - [ ] TypeScript compiles without errors
78
+ - [ ] Build successful
79
+ - [ ] Documentation updated with examples
80
+ - [ ] CHANGELOG documents breaking changes
81
+ - [ ] Version bumped to v3.0.0 (major version)
82
+
83
+ ---
84
+
85
+ ## Key Files to Create/Modify
86
+
87
+ ```
88
+ src/
89
+ ├── weaviate/
90
+ │ ├── schema.ts # Add 3 new fields to Memory schema
91
+ │ └── space-schema.ts # Add 3 new fields to Memory_public
92
+ ├── tools/
93
+ │ ├── delete-memory.ts # Modify to create confirmation token
94
+ │ ├── confirm.ts # Enhance to handle delete_memory action
95
+ │ ├── search-memory.ts # Add deleted_filter parameter
96
+ │ ├── query-memory.ts # Add deleted_filter parameter
97
+ │ ├── find-similar.ts # Add deleted_filter parameter
98
+ │ ├── search-relationship.ts # Add deleted_filter parameter
99
+ │ ├── create-relationship.ts # Prevent relationships with deleted memories
100
+ │ └── update-memory.ts # Prevent updating deleted memories
101
+ ├── utils/
102
+ │ └── weaviate-filters.ts # Add deleted_filter helper functions
103
+ └── types/
104
+ └── memory.ts # Add DeletedFilter type
105
+
106
+ tests/
107
+ └── unit/
108
+ ├── schema.test.ts # Test new fields
109
+ ├── space-schema.test.ts # Test new fields in public collection
110
+ ├── delete-memory.test.ts # Test confirmation flow
111
+ ├── confirm.test.ts # Test delete_memory action
112
+ ├── search-memory.test.ts # Test deleted_filter
113
+ ├── query-memory.test.ts # Test deleted_filter
114
+ ├── find-similar.test.ts # Test deleted_filter
115
+ └── search-relationship.test.ts # Test deleted_filter
116
+
117
+ agent/
118
+ └── design/
119
+ └── soft-delete-system.md # ✅ Already created
120
+ ```
121
+
122
+ ---
123
+
124
+ ## Implementation Tasks
125
+
126
+ See individual task documents:
127
+ - Task 70: Add Soft Delete Schema Fields
128
+ - Task 71: Implement Delete Confirmation Flow
129
+ - Task 72: Add deleted_filter to Search Tools
130
+ - Task 73: Update Relationship Handling for Deleted Memories
131
+ - Task 74: Add Unit Tests for Soft Delete
132
+ - Task 75: Update Documentation and CHANGELOG
133
+
134
+ ---
135
+
136
+ ## Architecture Notes
137
+
138
+ ### Soft Delete vs Hard Delete
139
+
140
+ **Soft Delete** (Implemented):
141
+ - Memory remains in Weaviate
142
+ - `deleted_at` field set to current timestamp
143
+ - Filtered out by default
144
+ - Can be searched with `deleted_filter: "include"` or `"only"`
145
+ - Enables future restoration feature
146
+
147
+ **Hard Delete** (Not Implemented):
148
+ - Memory permanently removed from Weaviate
149
+ - Cannot be recovered
150
+ - Not planned for this milestone
151
+
152
+ ### Confirmation Token Reuse
153
+
154
+ **Existing Service**: `ConfirmationTokenService` (from M10)
155
+ - Already handles token generation, validation, expiry
156
+ - Stores tokens in Firestore: `users/{user_id}/requests/{request_id}`
157
+ - 5-minute expiry
158
+ - One-time use
159
+
160
+ **New Action**: `delete_memory`
161
+ ```typescript
162
+ {
163
+ action: 'delete_memory',
164
+ payload: {
165
+ memory_id: string;
166
+ reason?: string;
167
+ }
168
+ }
169
+ ```
170
+
171
+ ### Filter Implementation
172
+
173
+ **Weaviate Query Level**:
174
+ ```typescript
175
+ // deleted_filter: 'exclude' (default)
176
+ collection.query.hybrid(query)
177
+ .where(Filters.or(
178
+ collection.filter.byProperty('deleted_at').isNull(true),
179
+ // ... other filters
180
+ ))
181
+
182
+ // deleted_filter: 'include'
183
+ // No deleted_at filter applied
184
+
185
+ // deleted_filter: 'only'
186
+ collection.query.hybrid(query)
187
+ .where(
188
+ collection.filter.byProperty('deleted_at').isNull(false)
189
+ )
190
+ ```
191
+
192
+ ### Relationship Orphaning
193
+
194
+ **Implementation Options**:
195
+ 1. **Computed Property** (Recommended): Check if any memory in relationship is deleted
196
+ 2. **Flag Field**: Add `is_orphaned` boolean to relationship
197
+ 3. **Status Field**: Add `status: "active" | "orphaned"` to relationship
198
+
199
+ **Recommendation**: Use computed property (Option 1) - no schema changes needed, always accurate.
200
+
201
+ ### Breaking Changes
202
+
203
+ **Version**: v2.8.0 → v3.0.0 (major version bump)
204
+
205
+ **Changes**:
206
+ 1. `remember_delete_memory` behavior changes (immediate → confirmation)
207
+ 2. All search tools add `deleted_filter` parameter
208
+ 3. Default search behavior excludes deleted memories
209
+
210
+ **Migration Path**:
211
+ - No code changes required for users
212
+ - Behavior change is immediate
213
+ - Existing memories implicitly have `deleted_at: null`
214
+
215
+ ---
216
+
217
+ ## Testing Strategy
218
+
219
+ 1. **Unit Tests**: Schema fields, filter logic, confirmation flow
220
+ 2. **Integration Tests**: End-to-end deletion workflow
221
+ 3. **Edge Cases**: Delete deleted memory, expired tokens, invalid filters
222
+ 4. **Performance Tests**: Search with large numbers of deleted memories
223
+
224
+ ---
225
+
226
+ ## Future Phases
227
+
228
+ **Phase 2: Recovery** (Future - Not in M13):
229
+ - `remember_restore_memory` tool
230
+ - Confirmation flow for restoration
231
+ - Automatic relationship restoration
232
+ - Restore to original state
233
+
234
+ **Phase 3: Shared Space Integration** (Future):
235
+ - `remember_retract` tool to unpublish memories
236
+ - Separate from deletion
237
+ - Requires confirmation
238
+ - Removes from shared spaces
239
+
240
+ **Phase 4: Moderation** (Future):
241
+ - Space moderators can hide memories
242
+ - Uses `moderation_flags` instead of `deleted_at`
243
+ - Separate from user deletion
244
+ - Per-space moderation
245
+
246
+ ---
247
+
248
+ ## Breaking Changes
249
+
250
+ **API Changes**:
251
+ - `remember_delete_memory` now returns confirmation token (not immediate delete)
252
+ - All search tools add `deleted_filter` parameter (default: 'exclude')
253
+ - Default search behavior changes (excludes deleted memories)
254
+
255
+ **Data Changes**:
256
+ - None (existing memories implicitly have `deleted_at: null`)
257
+
258
+ **Behavior Changes**:
259
+ - Deletion requires confirmation (two-step process)
260
+ - Deleted memories remain in database (soft delete)
261
+ - Cannot update or create relationships with deleted memories
262
+
263
+ ---
264
+
265
+ ## Security Considerations
266
+
267
+ **Access Control**:
268
+ - Only owner can delete their memories
269
+ - Only owner can search their deleted memories
270
+ - Confirmation tokens are user-specific
271
+ - Deleted memories not visible to other users
272
+
273
+ **Data Retention**:
274
+ - Deleted memories remain in database indefinitely
275
+ - No automatic purge policy
276
+ - Storage cost is acceptable trade-off for safety
277
+
278
+ ---
279
+
280
+ ## Documentation Requirements
281
+
282
+ 1. **README.md**:
283
+ - Update deletion workflow section
284
+ - Add examples of `deleted_filter` usage
285
+ - Document confirmation flow
286
+
287
+ 2. **CHANGELOG.md**:
288
+ - Document breaking changes (v3.0.0)
289
+ - List all modified tools
290
+ - Provide migration guidance
291
+
292
+ 3. **Tool Descriptions**:
293
+ - Update `remember_delete_memory` description
294
+ - Add `deleted_filter` parameter to 4 search tools
295
+ - Update error messages
296
+
297
+ 4. **Migration Guide**:
298
+ - Explain behavior changes
299
+ - Provide code examples
300
+ - Document version bump rationale
301
+
302
+ ---
303
+
304
+ **Next Milestone**: M5 - Template System (deferred until M13 complete)
305
+ **Blockers**: None (builds on M10 confirmation token service)
306
+ **Priority**: Highest (per user feedback)