@prmichaelsen/remember-mcp 2.0.0 → 2.0.2
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/AGENT.md +216 -2
- package/CHANGELOG.md +28 -0
- package/agent/design/design.template.md +136 -0
- package/agent/design/requirements.template.md +387 -0
- package/agent/milestones/milestone-1-{title}.template.md +206 -0
- package/agent/patterns/bootstrap.template.md +1237 -0
- package/agent/patterns/pattern.template.md +364 -0
- package/agent/progress.template.yaml +158 -0
- package/agent/progress.yaml +43 -7
- package/agent/scripts/check-for-updates.sh +88 -0
- package/agent/scripts/uninstall.sh +75 -0
- package/agent/scripts/update.sh +75 -0
- package/agent/tasks/task-1-{title}.template.md +225 -0
- package/dist/server-factory.js +78 -12
- package/dist/server.js +78 -12
- package/dist/utils/error-handler.d.ts +40 -0
- package/package.json +1 -1
- package/src/tools/create-memory.ts +8 -2
- package/src/tools/update-memory.ts +50 -10
- package/src/utils/error-handler.ts +79 -0
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
# {Pattern Name}
|
|
2
|
+
|
|
3
|
+
**Category**: [Architecture | Design | Code | Testing | Deployment]
|
|
4
|
+
**Applicable To**: [What types of projects or components this pattern applies to]
|
|
5
|
+
**Status**: [Stable | Experimental | Deprecated]
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
[Provide a high-level description of what this pattern is and when to use it. Include the problem space it addresses and the general approach it takes.]
|
|
12
|
+
|
|
13
|
+
**Example**: "The Service Layer Pattern provides a clear separation between business logic and data access, enabling better testability, maintainability, and code reuse across different interfaces (API, CLI, etc.)."
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## When to Use This Pattern
|
|
18
|
+
|
|
19
|
+
[Describe the scenarios where this pattern is appropriate:]
|
|
20
|
+
|
|
21
|
+
✅ **Use this pattern when:**
|
|
22
|
+
- Condition 1
|
|
23
|
+
- Condition 2
|
|
24
|
+
- Condition 3
|
|
25
|
+
|
|
26
|
+
❌ **Don't use this pattern when:**
|
|
27
|
+
- Condition 1
|
|
28
|
+
- Condition 2
|
|
29
|
+
- Condition 3
|
|
30
|
+
|
|
31
|
+
**Example**:
|
|
32
|
+
|
|
33
|
+
✅ **Use this pattern when:**
|
|
34
|
+
- You have complex business logic that needs to be shared across multiple interfaces
|
|
35
|
+
- You want to isolate business logic from infrastructure concerns
|
|
36
|
+
- You need to test business logic independently of data access
|
|
37
|
+
|
|
38
|
+
❌ **Don't use this pattern when:**
|
|
39
|
+
- Your application is very simple with minimal business logic
|
|
40
|
+
- You're building a thin wrapper around a database
|
|
41
|
+
- The overhead of additional layers outweighs the benefits
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Core Principles
|
|
46
|
+
|
|
47
|
+
[List the fundamental concepts that underpin this pattern:]
|
|
48
|
+
|
|
49
|
+
1. **Principle 1**: [Description]
|
|
50
|
+
2. **Principle 2**: [Description]
|
|
51
|
+
3. **Principle 3**: [Description]
|
|
52
|
+
4. **Principle 4**: [Description]
|
|
53
|
+
|
|
54
|
+
**Example**:
|
|
55
|
+
|
|
56
|
+
1. **Separation of Concerns**: Business logic is isolated from data access and presentation
|
|
57
|
+
2. **Single Responsibility**: Each service handles one domain concept
|
|
58
|
+
3. **Dependency Injection**: Services receive their dependencies rather than creating them
|
|
59
|
+
4. **Interface-Based Design**: Services depend on abstractions, not concrete implementations
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Implementation
|
|
64
|
+
|
|
65
|
+
[Provide detailed implementation guidance with code examples:]
|
|
66
|
+
|
|
67
|
+
### Structure
|
|
68
|
+
|
|
69
|
+
[Describe the overall structure of the pattern]
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
directory-structure/
|
|
73
|
+
├── component1/
|
|
74
|
+
│ └── file1.ext
|
|
75
|
+
└── component2/
|
|
76
|
+
└── file2.ext
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Code Example
|
|
80
|
+
|
|
81
|
+
[Provide a complete, working example:]
|
|
82
|
+
|
|
83
|
+
```typescript
|
|
84
|
+
// Example implementation
|
|
85
|
+
interface ExampleInterface {
|
|
86
|
+
method(): Promise<Result>;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
class ExampleImplementation implements ExampleInterface {
|
|
90
|
+
constructor(private dependency: Dependency) {}
|
|
91
|
+
|
|
92
|
+
async method(): Promise<Result> {
|
|
93
|
+
// Implementation
|
|
94
|
+
return result;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Key Components
|
|
100
|
+
|
|
101
|
+
[Break down the major components:]
|
|
102
|
+
|
|
103
|
+
#### Component 1: [Name]
|
|
104
|
+
[Description and purpose]
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
// Code example for this component
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
#### Component 2: [Name]
|
|
111
|
+
[Description and purpose]
|
|
112
|
+
|
|
113
|
+
```typescript
|
|
114
|
+
// Code example for this component
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Examples
|
|
120
|
+
|
|
121
|
+
[Provide multiple real-world examples showing different use cases:]
|
|
122
|
+
|
|
123
|
+
### Example 1: [Use Case Name]
|
|
124
|
+
|
|
125
|
+
[Description of the scenario]
|
|
126
|
+
|
|
127
|
+
```typescript
|
|
128
|
+
// Complete code example
|
|
129
|
+
class ConcreteExample {
|
|
130
|
+
// Implementation
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Usage
|
|
134
|
+
const example = new ConcreteExample();
|
|
135
|
+
const result = await example.doSomething();
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Example 2: [Use Case Name]
|
|
139
|
+
|
|
140
|
+
[Description of the scenario]
|
|
141
|
+
|
|
142
|
+
```typescript
|
|
143
|
+
// Complete code example
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Benefits
|
|
149
|
+
|
|
150
|
+
[List the advantages of using this pattern:]
|
|
151
|
+
|
|
152
|
+
### 1. [Benefit Name]
|
|
153
|
+
[Detailed explanation of this benefit and why it matters]
|
|
154
|
+
|
|
155
|
+
### 2. [Benefit Name]
|
|
156
|
+
[Detailed explanation of this benefit and why it matters]
|
|
157
|
+
|
|
158
|
+
### 3. [Benefit Name]
|
|
159
|
+
[Detailed explanation of this benefit and why it matters]
|
|
160
|
+
|
|
161
|
+
**Example**:
|
|
162
|
+
|
|
163
|
+
### 1. Testability
|
|
164
|
+
Business logic can be tested in isolation without requiring database connections or external services. Mock dependencies can be easily injected for unit testing.
|
|
165
|
+
|
|
166
|
+
### 2. Reusability
|
|
167
|
+
The same business logic can be used across multiple interfaces (REST API, GraphQL, CLI, etc.) without duplication.
|
|
168
|
+
|
|
169
|
+
### 3. Maintainability
|
|
170
|
+
Changes to business logic are centralized in service classes, making the codebase easier to understand and modify.
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Trade-offs
|
|
175
|
+
|
|
176
|
+
[Honestly assess the downsides and limitations:]
|
|
177
|
+
|
|
178
|
+
### 1. [Trade-off Name]
|
|
179
|
+
**Downside**: [Description]
|
|
180
|
+
**Mitigation**: [How to minimize this downside]
|
|
181
|
+
|
|
182
|
+
### 2. [Trade-off Name]
|
|
183
|
+
**Downside**: [Description]
|
|
184
|
+
**Mitigation**: [How to minimize this downside]
|
|
185
|
+
|
|
186
|
+
**Example**:
|
|
187
|
+
|
|
188
|
+
### 1. Additional Complexity
|
|
189
|
+
**Downside**: Adds extra layers and files to the codebase, which can feel like over-engineering for simple applications.
|
|
190
|
+
**Mitigation**: Only apply this pattern when complexity justifies it. Start simple and refactor to this pattern as needs grow.
|
|
191
|
+
|
|
192
|
+
### 2. Performance Overhead
|
|
193
|
+
**Downside**: Additional function calls and abstractions can add minor performance overhead.
|
|
194
|
+
**Mitigation**: In most applications, this overhead is negligible. Profile before optimizing.
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## Anti-Patterns
|
|
199
|
+
|
|
200
|
+
[Document what NOT to do - common mistakes and misuses:]
|
|
201
|
+
|
|
202
|
+
### ❌ Anti-Pattern 1: [Name]
|
|
203
|
+
|
|
204
|
+
**Description**: [What people do wrong]
|
|
205
|
+
|
|
206
|
+
**Why it's bad**: [Consequences]
|
|
207
|
+
|
|
208
|
+
**Instead, do this**: [Correct approach]
|
|
209
|
+
|
|
210
|
+
```typescript
|
|
211
|
+
// ❌ Bad example
|
|
212
|
+
class BadExample {
|
|
213
|
+
// What not to do
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// ✅ Good example
|
|
217
|
+
class GoodExample {
|
|
218
|
+
// Correct approach
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### ❌ Anti-Pattern 2: [Name]
|
|
223
|
+
|
|
224
|
+
[Similar structure as above]
|
|
225
|
+
|
|
226
|
+
**Example**:
|
|
227
|
+
|
|
228
|
+
### ❌ Anti-Pattern 1: God Service
|
|
229
|
+
|
|
230
|
+
**Description**: Creating a single service class that handles all business logic for the entire application.
|
|
231
|
+
|
|
232
|
+
**Why it's bad**: Violates single responsibility principle, becomes difficult to test and maintain, creates tight coupling.
|
|
233
|
+
|
|
234
|
+
**Instead, do this**: Create focused services, each handling a specific domain concept.
|
|
235
|
+
|
|
236
|
+
```typescript
|
|
237
|
+
// ❌ Bad: Everything in one service
|
|
238
|
+
class ApplicationService {
|
|
239
|
+
createUser() {}
|
|
240
|
+
deleteUser() {}
|
|
241
|
+
createProduct() {}
|
|
242
|
+
deleteProduct() {}
|
|
243
|
+
processPayment() {}
|
|
244
|
+
sendEmail() {}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
// ✅ Good: Focused services
|
|
248
|
+
class UserService {
|
|
249
|
+
createUser() {}
|
|
250
|
+
deleteUser() {}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
class ProductService {
|
|
254
|
+
createProduct() {}
|
|
255
|
+
deleteProduct() {}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
class PaymentService {
|
|
259
|
+
processPayment() {}
|
|
260
|
+
}
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## Testing Strategy
|
|
266
|
+
|
|
267
|
+
[Describe how to test code that uses this pattern:]
|
|
268
|
+
|
|
269
|
+
### Unit Testing
|
|
270
|
+
[Approach for unit tests]
|
|
271
|
+
|
|
272
|
+
```typescript
|
|
273
|
+
// Example unit test
|
|
274
|
+
describe('ExampleService', () => {
|
|
275
|
+
it('should do something', async () => {
|
|
276
|
+
// Test implementation
|
|
277
|
+
});
|
|
278
|
+
});
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### Integration Testing
|
|
282
|
+
[Approach for integration tests]
|
|
283
|
+
|
|
284
|
+
```typescript
|
|
285
|
+
// Example integration test
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
## Related Patterns
|
|
291
|
+
|
|
292
|
+
[Link to related patterns and explain relationships:]
|
|
293
|
+
|
|
294
|
+
- **[Pattern Name](./pattern-name.md)**: [How it relates]
|
|
295
|
+
- **[Pattern Name](./pattern-name.md)**: [How it relates]
|
|
296
|
+
- **[Pattern Name](./pattern-name.md)**: [How it relates]
|
|
297
|
+
|
|
298
|
+
**Example**:
|
|
299
|
+
- **[Repository Pattern](./repository-pattern.md)**: Often used together; services use repositories for data access
|
|
300
|
+
- **[Factory Pattern](./factory-pattern.md)**: Can be used to create service instances with proper dependencies
|
|
301
|
+
- **[Dependency Injection](./dependency-injection.md)**: Essential for implementing this pattern correctly
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## Migration Guide
|
|
306
|
+
|
|
307
|
+
[If adopting this pattern in an existing codebase, provide migration steps:]
|
|
308
|
+
|
|
309
|
+
### Step 1: [Action]
|
|
310
|
+
[Detailed description]
|
|
311
|
+
|
|
312
|
+
### Step 2: [Action]
|
|
313
|
+
[Detailed description]
|
|
314
|
+
|
|
315
|
+
### Step 3: [Action]
|
|
316
|
+
[Detailed description]
|
|
317
|
+
|
|
318
|
+
**Example**:
|
|
319
|
+
|
|
320
|
+
### Step 1: Identify Business Logic
|
|
321
|
+
Review existing code and identify business logic that's currently mixed with data access or presentation code.
|
|
322
|
+
|
|
323
|
+
### Step 2: Extract to Services
|
|
324
|
+
Create service classes and move business logic into them. Start with the most complex or frequently used logic.
|
|
325
|
+
|
|
326
|
+
### Step 3: Refactor Dependencies
|
|
327
|
+
Update calling code to use the new services. Inject dependencies rather than creating them directly.
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
## References
|
|
332
|
+
|
|
333
|
+
[Link to external resources, papers, books, or articles:]
|
|
334
|
+
|
|
335
|
+
- [Resource 1](URL): Description
|
|
336
|
+
- [Resource 2](URL): Description
|
|
337
|
+
- [Resource 3](URL): Description
|
|
338
|
+
|
|
339
|
+
**Example**:
|
|
340
|
+
- [Martin Fowler - Service Layer](https://martinfowler.com/eaaCatalog/serviceLayer.html): Original pattern description
|
|
341
|
+
- [Clean Architecture](https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html): Related architectural concepts
|
|
342
|
+
- [Domain-Driven Design](https://www.domainlanguage.com/ddd/): Context for service design
|
|
343
|
+
|
|
344
|
+
---
|
|
345
|
+
|
|
346
|
+
## Checklist for Implementation
|
|
347
|
+
|
|
348
|
+
[Provide a checklist to ensure proper implementation:]
|
|
349
|
+
|
|
350
|
+
- [ ] Services are focused on single domain concepts
|
|
351
|
+
- [ ] Dependencies are injected, not created internally
|
|
352
|
+
- [ ] Business logic is isolated from infrastructure concerns
|
|
353
|
+
- [ ] Services have clear, well-documented interfaces
|
|
354
|
+
- [ ] Unit tests cover business logic in isolation
|
|
355
|
+
- [ ] Integration tests verify end-to-end functionality
|
|
356
|
+
- [ ] Error handling is consistent and appropriate
|
|
357
|
+
- [ ] Logging provides adequate visibility
|
|
358
|
+
|
|
359
|
+
---
|
|
360
|
+
|
|
361
|
+
**Status**: [Current status of this pattern document]
|
|
362
|
+
**Recommendation**: [When and how to use this pattern]
|
|
363
|
+
**Last Updated**: [YYYY-MM-DD]
|
|
364
|
+
**Contributors**: [Names or "Community"]
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# Project Progress Tracking
|
|
2
|
+
# This file tracks the overall progress of the project, including milestones, tasks, and recent work.
|
|
3
|
+
# Update this file regularly as work progresses.
|
|
4
|
+
|
|
5
|
+
project:
|
|
6
|
+
name: project-name # Replace with your project name
|
|
7
|
+
version: 0.1.0 # Current version (semantic versioning)
|
|
8
|
+
started: YYYY-MM-DD # Date project started
|
|
9
|
+
status: not_started # not_started | in_progress | completed
|
|
10
|
+
current_milestone: M1 # Current milestone identifier
|
|
11
|
+
description: | # Brief project description
|
|
12
|
+
A short description of what this project does and its main purpose.
|
|
13
|
+
|
|
14
|
+
# Milestones represent major phases of the project
|
|
15
|
+
milestones:
|
|
16
|
+
- id: M1 # Unique milestone identifier
|
|
17
|
+
name: Milestone Name # Descriptive name
|
|
18
|
+
status: not_started # not_started | in_progress | completed
|
|
19
|
+
progress: 0 # Percentage complete (0-100)
|
|
20
|
+
started: null # YYYY-MM-DD when started, null if not started
|
|
21
|
+
completed: null # YYYY-MM-DD when completed, null if not completed
|
|
22
|
+
estimated_weeks: 2 # Estimated duration in weeks
|
|
23
|
+
tasks_completed: 0 # Number of tasks completed
|
|
24
|
+
tasks_total: 5 # Total number of tasks in this milestone
|
|
25
|
+
notes: | # Progress notes and observations
|
|
26
|
+
Notes about this milestone's progress, blockers, or important decisions.
|
|
27
|
+
|
|
28
|
+
- id: M2
|
|
29
|
+
name: Second Milestone Name
|
|
30
|
+
status: not_started
|
|
31
|
+
progress: 0
|
|
32
|
+
started: null
|
|
33
|
+
completed: null
|
|
34
|
+
estimated_weeks: 3
|
|
35
|
+
tasks_completed: 0
|
|
36
|
+
tasks_total: 7
|
|
37
|
+
notes: |
|
|
38
|
+
This milestone depends on M1 completion.
|
|
39
|
+
|
|
40
|
+
# Tasks are granular work items within milestones
|
|
41
|
+
tasks:
|
|
42
|
+
milestone_1: # Group tasks by milestone
|
|
43
|
+
- id: task-1 # Unique task identifier
|
|
44
|
+
name: Task Name # Descriptive task name
|
|
45
|
+
status: not_started # not_started | in_progress | completed
|
|
46
|
+
file: agent/tasks/task-1-name.md # Path to task document
|
|
47
|
+
estimated_hours: 4 # Estimated time in hours
|
|
48
|
+
completed_date: null # YYYY-MM-DD when completed, null if not completed
|
|
49
|
+
notes: | # Task-specific notes
|
|
50
|
+
Any important notes about this task.
|
|
51
|
+
|
|
52
|
+
- id: task-2
|
|
53
|
+
name: Second Task Name
|
|
54
|
+
status: not_started
|
|
55
|
+
file: agent/tasks/task-2-name.md
|
|
56
|
+
estimated_hours: 2
|
|
57
|
+
completed_date: null
|
|
58
|
+
notes: |
|
|
59
|
+
Depends on task-1 completion.
|
|
60
|
+
|
|
61
|
+
milestone_2:
|
|
62
|
+
- id: task-3
|
|
63
|
+
name: Third Task Name
|
|
64
|
+
status: not_started
|
|
65
|
+
file: agent/tasks/task-3-name.md
|
|
66
|
+
estimated_hours: 6
|
|
67
|
+
completed_date: null
|
|
68
|
+
notes: |
|
|
69
|
+
First task of second milestone.
|
|
70
|
+
|
|
71
|
+
# Documentation tracking
|
|
72
|
+
documentation:
|
|
73
|
+
design_documents: 0 # Number of design documents created
|
|
74
|
+
milestone_documents: 0 # Number of milestone documents
|
|
75
|
+
pattern_documents: 0 # Number of pattern documents
|
|
76
|
+
task_documents: 0 # Number of task documents
|
|
77
|
+
last_updated: YYYY-MM-DD # Last documentation update date
|
|
78
|
+
|
|
79
|
+
# Overall progress metrics
|
|
80
|
+
progress:
|
|
81
|
+
planning: 0 # Planning phase completion (0-100%)
|
|
82
|
+
implementation: 0 # Implementation phase completion (0-100%)
|
|
83
|
+
testing: 0 # Testing phase completion (0-100%)
|
|
84
|
+
documentation: 0 # Documentation completion (0-100%)
|
|
85
|
+
overall: 0 # Overall project completion (0-100%)
|
|
86
|
+
|
|
87
|
+
# Recent work log (most recent first)
|
|
88
|
+
recent_work:
|
|
89
|
+
- date: YYYY-MM-DD # Date of work
|
|
90
|
+
description: | # Description of what was done
|
|
91
|
+
Brief description of work completed on this date.
|
|
92
|
+
items: # Specific items completed
|
|
93
|
+
- ✅ Completed item 1
|
|
94
|
+
- ✅ Completed item 2
|
|
95
|
+
- ⚠️ Warning or note about something
|
|
96
|
+
- 📋 Pending item or follow-up needed
|
|
97
|
+
|
|
98
|
+
- date: YYYY-MM-DD
|
|
99
|
+
description: |
|
|
100
|
+
Earlier work session description.
|
|
101
|
+
items:
|
|
102
|
+
- ✅ Another completed item
|
|
103
|
+
- 📋 Something to revisit
|
|
104
|
+
|
|
105
|
+
# Next steps (prioritized list)
|
|
106
|
+
next_steps:
|
|
107
|
+
- Next action item 1 (highest priority)
|
|
108
|
+
- Next action item 2
|
|
109
|
+
- Next action item 3
|
|
110
|
+
- Future consideration or enhancement
|
|
111
|
+
|
|
112
|
+
# General notes and observations
|
|
113
|
+
notes:
|
|
114
|
+
- Important note 1 about the project
|
|
115
|
+
- Important note 2 about architectural decisions
|
|
116
|
+
- Important note 3 about dependencies or constraints
|
|
117
|
+
|
|
118
|
+
# Current blockers (remove when resolved)
|
|
119
|
+
current_blockers:
|
|
120
|
+
- Blocker 1: Description of what's blocking progress
|
|
121
|
+
- Blocker 2: Another blocker and potential resolution
|
|
122
|
+
|
|
123
|
+
# Team and contributors (if applicable)
|
|
124
|
+
team:
|
|
125
|
+
- role: Lead Developer # Role or responsibility
|
|
126
|
+
name: Name or "Agent" # Name or identifier
|
|
127
|
+
focus: | # Current focus area
|
|
128
|
+
What this person/agent is currently working on
|
|
129
|
+
|
|
130
|
+
- role: Documentation
|
|
131
|
+
name: Name or "Agent"
|
|
132
|
+
focus: |
|
|
133
|
+
Maintaining documentation and patterns
|
|
134
|
+
|
|
135
|
+
# Dependencies and integrations
|
|
136
|
+
dependencies:
|
|
137
|
+
external_services: # External services this project depends on
|
|
138
|
+
- name: Service Name
|
|
139
|
+
status: configured | pending | blocked
|
|
140
|
+
notes: |
|
|
141
|
+
Notes about this dependency
|
|
142
|
+
|
|
143
|
+
libraries: # Key library dependencies
|
|
144
|
+
- name: Library Name
|
|
145
|
+
version: 1.0.0
|
|
146
|
+
purpose: |
|
|
147
|
+
Why this library is used
|
|
148
|
+
|
|
149
|
+
infrastructure: # Infrastructure requirements
|
|
150
|
+
- name: Infrastructure Component
|
|
151
|
+
status: ready | pending | blocked
|
|
152
|
+
notes: |
|
|
153
|
+
Notes about this infrastructure
|
|
154
|
+
|
|
155
|
+
# Quality metrics (optional)
|
|
156
|
+
quality:
|
|
157
|
+
test_coverage: 0 # Percentage (0-100)
|
|
158
|
+
code_review_status: pending # pending | in
|
package/agent/progress.yaml
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
project:
|
|
4
4
|
name: remember-mcp
|
|
5
|
-
version:
|
|
5
|
+
version: 2.0.1
|
|
6
6
|
started: 2026-02-11
|
|
7
7
|
status: in_progress
|
|
8
8
|
current_milestone: M5
|
|
9
|
-
last_updated: 2026-02-
|
|
9
|
+
last_updated: 2026-02-14
|
|
10
10
|
|
|
11
11
|
milestones:
|
|
12
12
|
- id: M1
|
|
@@ -378,6 +378,36 @@ progress:
|
|
|
378
378
|
overall: 50%
|
|
379
379
|
|
|
380
380
|
recent_work:
|
|
381
|
+
- date: 2026-02-14
|
|
382
|
+
description: v2.0.1 Released - Enhanced Error Logging Framework
|
|
383
|
+
items:
|
|
384
|
+
- 🎉 v2.0.1 RELEASED - Patch release with error handling improvements
|
|
385
|
+
- ✅ Created centralized error-handler utility (src/utils/error-handler.ts)
|
|
386
|
+
- ✅ Enhanced error logging in remember_update_memory
|
|
387
|
+
- ✅ Detailed error context: userId, memoryId, operation, stack traces
|
|
388
|
+
- ✅ Separate error handling for fetch and update operations
|
|
389
|
+
- ✅ Error messages now include full context for Cloud Run debugging
|
|
390
|
+
- ✅ Framework ready for application to all 12 tools
|
|
391
|
+
- ✅ Build successful
|
|
392
|
+
- ✅ All tests passing
|
|
393
|
+
- 📋 Production error diagnostics significantly improved
|
|
394
|
+
|
|
395
|
+
- date: 2026-02-14
|
|
396
|
+
description: Project Status Review - ACP Initialization
|
|
397
|
+
items:
|
|
398
|
+
- 📊 Comprehensive project review completed via ACP initialization
|
|
399
|
+
- ✅ All 12 MCP tools implemented and working
|
|
400
|
+
- ✅ 54 tests passing (53 passed, 1 skipped integration test)
|
|
401
|
+
- ✅ Test coverage: 29.26% overall
|
|
402
|
+
- ✅ TypeScript compiles without errors
|
|
403
|
+
- ✅ Build successful (v2.0.0)
|
|
404
|
+
- ✅ 30 TypeScript source files in project (added error-handler.ts)
|
|
405
|
+
- ✅ Dual export: standalone server + factory for mcp-auth
|
|
406
|
+
- ✅ All 4 milestones complete (M1-M4: 100%)
|
|
407
|
+
- ✅ Ready to begin M5: Template System
|
|
408
|
+
- 📋 Project structure follows ACP and bootstrap patterns
|
|
409
|
+
- 📋 Documentation comprehensive and up-to-date
|
|
410
|
+
|
|
381
411
|
- date: 2026-02-12
|
|
382
412
|
description: v1.0.1 Released - Or Operator Bug Fix
|
|
383
413
|
items:
|
|
@@ -523,10 +553,14 @@ environment_configured:
|
|
|
523
553
|
- 📋 Firebase project needs to be created with Firestore enabled
|
|
524
554
|
|
|
525
555
|
test_status:
|
|
526
|
-
- ✅
|
|
556
|
+
- ✅ 53 unit tests passing
|
|
527
557
|
- ✅ 1 test skipped (integration test requiring live Weaviate)
|
|
528
|
-
- ✅ Test coverage:
|
|
529
|
-
- ✅ All critical paths covered: config, client, factory, paths, content-types
|
|
558
|
+
- ✅ Test coverage: 29.26% overall
|
|
559
|
+
- ✅ All critical paths covered: config, client, factory, paths, content-types, weaviate-filters
|
|
560
|
+
- ✅ 32 tests for weaviate-filters (filter builders and edge cases)
|
|
561
|
+
- ✅ 9 tests for server-factory (async initialization)
|
|
562
|
+
- ✅ 7 tests for firestore paths
|
|
563
|
+
- ✅ 5 tests for weaviate client
|
|
530
564
|
- 📋 Integration tests deferred (Task 6)
|
|
531
565
|
- 📋 E2E tests not yet created
|
|
532
566
|
|
|
@@ -537,11 +571,13 @@ build_status:
|
|
|
537
571
|
- ✅ Source maps generated
|
|
538
572
|
- ✅ Type definitions generated (.d.ts files)
|
|
539
573
|
- ✅ Package exports configured for both entry points
|
|
540
|
-
- ✅ Version
|
|
541
|
-
- ✅
|
|
574
|
+
- ✅ Version 2.0.1 published (patch release - error logging)
|
|
575
|
+
- ✅ 30 TypeScript source files (added error-handler.ts)
|
|
542
576
|
- ✅ All 12 tools implemented
|
|
543
577
|
- ✅ Weaviate v3 filter API implemented
|
|
544
578
|
- ✅ Or/And operator validation implemented
|
|
579
|
+
- ✅ Async createServer pattern (breaking change in v2.0.0)
|
|
580
|
+
- ✅ Centralized error handling framework
|
|
545
581
|
|
|
546
582
|
tools_status:
|
|
547
583
|
memory_tools:
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Agent Context Protocol (ACP) Update Checker
|
|
4
|
+
# This script checks if updates are available for AGENT.md
|
|
5
|
+
|
|
6
|
+
set -e
|
|
7
|
+
|
|
8
|
+
# Colors for output
|
|
9
|
+
RED='\033[0;31m'
|
|
10
|
+
GREEN='\033[0;32m'
|
|
11
|
+
YELLOW='\033[1;33m'
|
|
12
|
+
BLUE='\033[0;34m'
|
|
13
|
+
NC='\033[0m' # No Color
|
|
14
|
+
|
|
15
|
+
# Repository URL
|
|
16
|
+
REPO_URL="https://raw.githubusercontent.com/prmichaelsen/agent-context-protocol/mainline"
|
|
17
|
+
AGENT_MD_URL="$REPO_URL/AGENT.md"
|
|
18
|
+
CHANGELOG_URL="$REPO_URL/CHANGELOG.md"
|
|
19
|
+
|
|
20
|
+
# Silent mode (no output, just exit codes)
|
|
21
|
+
SILENT=false
|
|
22
|
+
if [ "$1" = "--silent" ] || [ "$1" = "-s" ]; then
|
|
23
|
+
SILENT=true
|
|
24
|
+
fi
|
|
25
|
+
|
|
26
|
+
# Check if AGENT.md exists
|
|
27
|
+
if [ ! -f "AGENT.md" ]; then
|
|
28
|
+
if [ "$SILENT" = false ]; then
|
|
29
|
+
echo -e "${RED}Error: AGENT.md not found in current directory${NC}" >&2
|
|
30
|
+
echo "This script should be run from your project root where AGENT.md is located." >&2
|
|
31
|
+
fi
|
|
32
|
+
exit 2
|
|
33
|
+
fi
|
|
34
|
+
|
|
35
|
+
# Download latest AGENT.md for comparison
|
|
36
|
+
if [ "$SILENT" = false ]; then
|
|
37
|
+
echo -e "${BLUE}Checking for updates...${NC}"
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
if command -v curl &> /dev/null; then
|
|
41
|
+
curl -fsSL "$AGENT_MD_URL" -o /tmp/AGENT.md.latest 2>/dev/null
|
|
42
|
+
elif command -v wget &> /dev/null; then
|
|
43
|
+
wget -q "$AGENT_MD_URL" -O /tmp/AGENT.md.latest 2>/dev/null
|
|
44
|
+
else
|
|
45
|
+
if [ "$SILENT" = false ]; then
|
|
46
|
+
echo -e "${RED}Error: Neither curl nor wget is available${NC}" >&2
|
|
47
|
+
fi
|
|
48
|
+
exit 2
|
|
49
|
+
fi
|
|
50
|
+
|
|
51
|
+
if [ $? -ne 0 ]; then
|
|
52
|
+
if [ "$SILENT" = false ]; then
|
|
53
|
+
echo -e "${RED}Error: Failed to download latest AGENT.md${NC}" >&2
|
|
54
|
+
echo "Please check your internet connection." >&2
|
|
55
|
+
fi
|
|
56
|
+
rm -f /tmp/AGENT.md.latest
|
|
57
|
+
exit 2
|
|
58
|
+
fi
|
|
59
|
+
|
|
60
|
+
# Compare files
|
|
61
|
+
if cmp -s AGENT.md /tmp/AGENT.md.latest; then
|
|
62
|
+
# Files are identical - no updates
|
|
63
|
+
if [ "$SILENT" = false ]; then
|
|
64
|
+
echo -e "${GREEN}✓${NC} Your AGENT.md is up to date!"
|
|
65
|
+
fi
|
|
66
|
+
rm -f /tmp/AGENT.md.latest
|
|
67
|
+
exit 0
|
|
68
|
+
else
|
|
69
|
+
# Files differ - updates available
|
|
70
|
+
if [ "$SILENT" = false ]; then
|
|
71
|
+
echo -e "${YELLOW}⚠${NC} Updates are available for AGENT.md"
|
|
72
|
+
echo ""
|
|
73
|
+
|
|
74
|
+
# Download and display changelog
|
|
75
|
+
echo "Recent changes:"
|
|
76
|
+
echo "---------------"
|
|
77
|
+
if command -v curl &> /dev/null; then
|
|
78
|
+
curl -fsSL "$CHANGELOG_URL" 2>/dev/null | head -n 50
|
|
79
|
+
elif command -v wget &> /dev/null; then
|
|
80
|
+
wget -q "$CHANGELOG_URL" -O - 2>/dev/null | head -n 50
|
|
81
|
+
fi
|
|
82
|
+
echo ""
|
|
83
|
+
echo "To update, run: ./agent/scripts/update.sh"
|
|
84
|
+
echo "Or: curl -fsSL https://raw.githubusercontent.com/prmichaelsen/agent-context-protocol/mainlin./agent/scripts/update.sh | bash"
|
|
85
|
+
fi
|
|
86
|
+
rm -f /tmp/AGENT.md.latest
|
|
87
|
+
exit 1
|
|
88
|
+
fi
|