@prmichaelsen/remember-mcp 2.2.1 → 2.3.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 (61) hide show
  1. package/AGENT.md +4 -4
  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.proceed.md +311 -0
  6. package/agent/commands/acp.status.md +280 -0
  7. package/agent/commands/acp.version-check-for-updates.md +275 -0
  8. package/agent/commands/acp.version-check.md +190 -0
  9. package/agent/commands/acp.version-update.md +288 -0
  10. package/agent/commands/command.template.md +273 -0
  11. package/agent/design/core-memory-user-profile.md +1253 -0
  12. package/agent/design/ghost-profiles-pseudonymous-identity.md +194 -0
  13. package/agent/design/publish-tools-confirmation-flow.md +922 -0
  14. package/agent/milestones/milestone-10-shared-spaces.md +169 -0
  15. package/agent/progress.yaml +90 -4
  16. package/agent/scripts/install.sh +118 -0
  17. package/agent/scripts/update.sh +22 -10
  18. package/agent/scripts/version.sh +35 -0
  19. package/agent/tasks/task-27-implement-llm-provider-interface.md +51 -0
  20. package/agent/tasks/task-28-implement-llm-provider-factory.md +64 -0
  21. package/agent/tasks/task-29-update-config-for-llm.md +71 -0
  22. package/agent/tasks/task-30-implement-bedrock-provider.md +147 -0
  23. package/agent/tasks/task-31-implement-background-job-service.md +120 -0
  24. package/agent/tasks/task-32-test-llm-provider-integration.md +152 -0
  25. package/agent/tasks/task-34-create-confirmation-token-service.md +191 -0
  26. package/agent/tasks/task-35-create-space-memory-types-schema.md +183 -0
  27. package/agent/tasks/task-36-implement-remember-publish.md +227 -0
  28. package/agent/tasks/task-37-implement-remember-confirm.md +225 -0
  29. package/agent/tasks/task-38-implement-remember-deny.md +161 -0
  30. package/agent/tasks/task-39-implement-remember-search-space.md +188 -0
  31. package/agent/tasks/task-40-implement-remember-query-space.md +193 -0
  32. package/agent/tasks/task-41-configure-firestore-ttl.md +188 -0
  33. package/agent/tasks/task-42-create-tests-shared-spaces.md +216 -0
  34. package/agent/tasks/task-43-update-documentation.md +255 -0
  35. package/dist/llm/types.d.ts +1 -0
  36. package/dist/server-factory.js +914 -1
  37. package/dist/server.js +916 -3
  38. package/dist/services/confirmation-token.service.d.ts +99 -0
  39. package/dist/services/confirmation-token.service.spec.d.ts +5 -0
  40. package/dist/tools/confirm.d.ts +20 -0
  41. package/dist/tools/deny.d.ts +19 -0
  42. package/dist/tools/publish.d.ts +22 -0
  43. package/dist/tools/query-space.d.ts +28 -0
  44. package/dist/tools/search-space.d.ts +29 -0
  45. package/dist/types/space-memory.d.ts +80 -0
  46. package/dist/weaviate/space-schema.d.ts +59 -0
  47. package/dist/weaviate/space-schema.spec.d.ts +5 -0
  48. package/package.json +1 -1
  49. package/src/llm/types.ts +0 -0
  50. package/src/server-factory.ts +33 -0
  51. package/src/server.ts +33 -0
  52. package/src/services/confirmation-token.service.spec.ts +254 -0
  53. package/src/services/confirmation-token.service.ts +232 -0
  54. package/src/tools/confirm.ts +176 -0
  55. package/src/tools/deny.ts +70 -0
  56. package/src/tools/publish.ts +167 -0
  57. package/src/tools/query-space.ts +197 -0
  58. package/src/tools/search-space.ts +189 -0
  59. package/src/types/space-memory.ts +94 -0
  60. package/src/weaviate/space-schema.spec.ts +131 -0
  61. package/src/weaviate/space-schema.ts +275 -0
package/AGENT.md CHANGED
@@ -1,9 +1,9 @@
1
1
  # Agent Context Protocol (ACP)
2
2
 
3
- **Also Known As**: The Agent Directory Pattern
4
- **Version**: 1.0.3
5
- **Created**: 2026-02-11
6
- **Status**: Production Pattern
3
+ **Also Known As**: The Agent Directory Pattern
4
+ **Version**: 1.1.0
5
+ **Created**: 2026-02-11
6
+ **Status**: Production Pattern
7
7
 
8
8
  ---
9
9
 
package/CHANGELOG.md CHANGED
@@ -5,6 +5,51 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [2.3.0] - 2026-02-16
9
+
10
+ ### ✨ Added
11
+
12
+ - **Shared Spaces**: Publish memories to shared discovery spaces
13
+ - "The Void" - First shared space for discovering thoughts and ideas
14
+ - Space collections: `Memory_the_void` with snake_case naming
15
+ - Multi-user discovery with attribution tracking
16
+
17
+ - **Token-Based Confirmation**: Secure two-phase workflow for sensitive operations
18
+ - One-time use tokens with 5-minute expiry
19
+ - Firestore storage: `users/{user_id}/requests`
20
+ - Generic pattern extensible to other confirmable actions
21
+
22
+ - **5 New MCP Tools**:
23
+ - `remember_publish` - Request to publish memory to shared space (generates token)
24
+ - `remember_confirm` - Confirm and execute pending actions
25
+ - `remember_deny` - Cancel pending actions
26
+ - `remember_search_space` - Search shared spaces with hybrid search
27
+ - `remember_query_space` - Query shared spaces with natural language
28
+
29
+ - **Confirmation Token Service**: Manages tokens with automatic expiry
30
+ - UUID v4 tokens
31
+ - Status tracking (pending, confirmed, denied, expired, retracted)
32
+ - Firestore TTL integration for automatic cleanup
33
+
34
+ - **Space Memory Types**: SpaceMemory interface with attribution fields
35
+ - `space_id`, `author_id`, `ghost_id`, `published_at`, `discovery_count`
36
+ - Support for pseudonymous publishing (ghost profiles)
37
+
38
+ ### 🔧 Changed
39
+
40
+ - Tool count increased from 12 to 17
41
+ - Firestore structure: Added `users/{user_id}/requests` for confirmation tokens
42
+ - Collection naming: snake_case for spaces ("The Void" → `the_void` → `Memory_the_void`)
43
+
44
+ ### 🔒 Security
45
+
46
+ - One-time use tokens prevent replay attacks
47
+ - User ownership verification before publishing
48
+ - Fresh data fetch during confirmation (not from stored payload)
49
+ - 5-minute token expiry prevents stale requests
50
+
51
+ ---
52
+
8
53
  ## [2.0.2] - 2026-02-14
9
54
 
10
55
  ### ✨ Added
package/README.md CHANGED
@@ -63,8 +63,10 @@ Multi-tenant memory system MCP server with vector search, relationships, and tru
63
63
 
64
64
  ## Features
65
65
 
66
- - **12 MCP Tools**: Complete CRUD for memories, relationships, and preferences
66
+ - **17 MCP Tools**: Complete CRUD for memories, relationships, preferences, and shared spaces
67
67
  - **Multi-Tenant**: Per-user isolation with secure data boundaries
68
+ - **Shared Spaces**: Publish memories to shared discovery spaces like "The Void"
69
+ - **Token-Based Confirmation**: Secure two-phase workflow for sensitive operations
68
70
  - **Vector Search**: Semantic + keyword hybrid search with Weaviate
69
71
  - **Knowledge Graph**: N-way relationships with bidirectional tracking
70
72
  - **RAG Queries**: Natural language queries with context-aware responses
@@ -146,10 +148,48 @@ await wrapped.start();
146
148
 
147
149
  ## Architecture
148
150
 
149
- - **Weaviate**: Vector storage for memories, relationships, templates
150
- - **Firestore**: Permissions, preferences, metadata
151
+ - **Weaviate**: Vector storage for memories, relationships, and shared spaces
152
+ - Personal collections: `Memory_{user_id}`
153
+ - Shared collections: `Memory_the_void`, `Memory_public_space`
154
+ - **Firestore**: Permissions, preferences, confirmation tokens
155
+ - User data: `users/{user_id}/preferences`, `users/{user_id}/requests`
151
156
  - **Firebase Auth**: User authentication
152
157
 
158
+ ## Shared Spaces
159
+
160
+ Publish memories to shared discovery spaces where other users can find them.
161
+
162
+ ### The Void
163
+
164
+ "The Void" is a shared space for discovering thoughts and ideas from other users.
165
+
166
+ ### Publishing Workflow
167
+
168
+ 1. **Request Publication**: Generate confirmation token
169
+ ```typescript
170
+ remember_publish({ memory_id: "abc123", target: "the_void" })
171
+ // Returns: { success: true, token: "xyz789" }
172
+ ```
173
+
174
+ 2. **User Confirms**: Execute the publication
175
+ ```typescript
176
+ remember_confirm({ token: "xyz789" })
177
+ // Returns: { success: true, space_memory_id: "new-id" }
178
+ ```
179
+
180
+ 3. **Discover**: Search shared spaces
181
+ ```typescript
182
+ remember_search_space({ query: "interesting ideas", space: "the_void" })
183
+ ```
184
+
185
+ ### Space Tools (5 new)
186
+
187
+ - `remember_publish` - Request to publish memory (generates token)
188
+ - `remember_confirm` - Confirm any pending action
189
+ - `remember_deny` - Cancel any pending action
190
+ - `remember_search_space` - Search shared spaces
191
+ - `remember_query_space` - Ask questions about shared memories
192
+
153
193
  ## Documentation
154
194
 
155
195
  See `agent/` directory for:
@@ -0,0 +1,376 @@
1
+ # Command: init
2
+
3
+ > **🤖 Agent Directive**: If you are reading this file, the command `@acp-init` has been invoked. Follow the steps below to execute this command.
4
+
5
+ **Namespace**: acp
6
+ **Version**: 1.0.0
7
+ **Created**: 2026-02-16
8
+ **Last Updated**: 2026-02-16
9
+ **Status**: Active
10
+
11
+ ---
12
+
13
+ **Purpose**: Initialize agent context by loading all documentation, reviewing source code, and preparing for work
14
+ **Category**: Workflow
15
+ **Frequency**: Once Per Session
16
+
17
+ ---
18
+
19
+ ## What This Command Does
20
+
21
+ This command performs a comprehensive initialization of the agent's context for working on an ACP-structured project. It checks for ACP updates, reads all documentation in the `agent/` directory, reviews key source files to understand the current implementation, updates any stale documentation, and refreshes progress tracking.
22
+
23
+ Use this command at the start of each work session to ensure you have complete project context. It's the most thorough way to get up to speed on a project, understanding both what's documented and what's actually implemented in the code.
24
+
25
+ Unlike `@acp-status` which only reads progress.yaml, or `@acp-proceed` which focuses on a single task, `@acp-init` provides comprehensive context loading across all project documentation and source code. It's designed to answer: "What is this project? Where does it stand? What needs to be done?"
26
+
27
+ ---
28
+
29
+ ## Prerequisites
30
+
31
+ - [ ] ACP installed in project (AGENT.md and agent/ directory exist)
32
+ - [ ] Project has source code to review
33
+ - [ ] Git repository initialized (optional, for update checking)
34
+
35
+ ---
36
+
37
+ ## Steps
38
+
39
+ ### 1. Check for ACP Updates
40
+
41
+ Check if newer version of ACP is available.
42
+
43
+ **Actions**:
44
+ - Run `./agent/scripts/check-for-updates.sh` if it exists
45
+ - Report if updates are available
46
+ - Show what changed via CHANGELOG
47
+ - Ask if user wants to update (don't auto-update)
48
+
49
+ **Expected Outcome**: User informed of ACP version status
50
+
51
+ ### 2. Read All Agent Documentation
52
+
53
+ Load complete context from the agent/ directory.
54
+
55
+ **Actions**:
56
+ - Read `agent/progress.yaml` for current status
57
+ - Read `agent/design/requirements.md` for project goals
58
+ - Read all design documents in `agent/design/`
59
+ - Read current milestone document
60
+ - Read all task documents (focus on current/upcoming)
61
+ - Read relevant pattern documents in `agent/patterns/`
62
+ - Note any missing or incomplete documentation
63
+
64
+ **Expected Outcome**: Complete documentation context loaded
65
+
66
+ ### 3. Identify Key Source Files
67
+
68
+ Determine which source files are most important to review.
69
+
70
+ **Actions**:
71
+ - Check project type (package.json, requirements.txt, go.mod, etc.)
72
+ - Identify main entry points (src/index.ts, main.py, cmd/main.go, etc.)
73
+ - Note key configuration files (tsconfig.json, .env.example, etc.)
74
+ - Identify core business logic files
75
+ - List test files
76
+
77
+ **Expected Outcome**: Key source files identified for review
78
+
79
+ ### 4. Review Key Source Files
80
+
81
+ Read important source files to understand current implementation.
82
+
83
+ **Actions**:
84
+ - Read main entry point files
85
+ - Review core business logic
86
+ - Check configuration files
87
+ - Note any TODOs or FIXMEs
88
+ - Understand current architecture
89
+ - Compare implementation with design documents
90
+
91
+ **Expected Outcome**: Current implementation understood
92
+
93
+ ### 5. Identify Documentation Drift
94
+
95
+ Compare documentation with actual implementation.
96
+
97
+ **Actions**:
98
+ - Check if design documents match implementation
99
+ - Note any undocumented features in code
100
+ - Identify outdated documentation
101
+ - Flag missing documentation
102
+ - List discrepancies
103
+
104
+ **Expected Outcome**: Documentation gaps identified
105
+
106
+ ### 6. Update Stale Documentation
107
+
108
+ Refresh outdated documentation to match current state.
109
+
110
+ **Actions**:
111
+ - Update design documents if implementation differs
112
+ - Update task documents if steps have changed
113
+ - Add notes about discovered issues
114
+ - Update progress.yaml with current understanding
115
+ - Document any new patterns found in code
116
+
117
+ **Expected Outcome**: Documentation synchronized with code
118
+
119
+ ### 7. Update Progress Tracking
120
+
121
+ Refresh progress.yaml with latest status.
122
+
123
+ **Actions**:
124
+ - Verify current milestone is correct
125
+ - Confirm current task is accurate
126
+ - Update progress percentages if needed
127
+ - Add recent work entry for initialization
128
+ - Update next steps based on current state
129
+ - Note any new blockers discovered
130
+
131
+ **Expected Outcome**: Progress tracking is current and accurate
132
+
133
+ ### 8. Report Status and Next Steps
134
+
135
+ Provide comprehensive status report.
136
+
137
+ **Actions**:
138
+ - Summarize project status
139
+ - Show current milestone and progress
140
+ - Identify current task
141
+ - List recent accomplishments
142
+ - Highlight next steps
143
+ - Note any blockers or concerns
144
+ - Provide recommendations
145
+
146
+ **Expected Outcome**: User has complete context and knows what to do next
147
+
148
+ ---
149
+
150
+ ## Verification
151
+
152
+ - [ ] ACP update check completed
153
+ - [ ] All agent/ files read successfully
154
+ - [ ] Key source files identified and reviewed
155
+ - [ ] Documentation drift identified (if any)
156
+ - [ ] Stale documentation updated
157
+ - [ ] progress.yaml updated with current status
158
+ - [ ] Comprehensive status report provided
159
+ - [ ] Next steps clearly identified
160
+ - [ ] No errors encountered during initialization
161
+
162
+ ---
163
+
164
+ ## Expected Output
165
+
166
+ ### Files Modified
167
+ - `agent/progress.yaml` - Updated with current status, recent work entry added
168
+ - Design/task documents - Updated if stale (as needed)
169
+
170
+ ### Console Output
171
+ ```
172
+ 🚀 Initializing Agent Context
173
+
174
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
175
+
176
+ ✓ Checking for ACP updates...
177
+ Current version: 1.0.3
178
+ Status: Up to date
179
+
180
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
181
+
182
+ 📚 Reading Agent Documentation...
183
+ ✓ Read agent/progress.yaml
184
+ ✓ Read agent/design/requirements.md
185
+ ✓ Read agent/design/acp-commands-design.md
186
+ ✓ Read agent/milestones/milestone-1-acp-commands.md
187
+ ✓ Read agent/milestones/milestone-2-acp-commands-advanced.md
188
+ ✓ Read agent/tasks/task-1-commands-infrastructure.md
189
+ ✓ Read agent/tasks/task-2-workflow-commands.md
190
+ ✓ Read agent/tasks/task-3-version-commands.md
191
+ ✓ Read agent/tasks/task-4-update-documentation.md
192
+
193
+ Total: 9 agent files read
194
+
195
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
196
+
197
+ 📂 Reviewing Source Files...
198
+ ✓ Read AGENT.md (1,055 lines)
199
+ ✓ Read README.md (200 lines)
200
+ ✓ Read CHANGELOG.md (50 lines)
201
+ ✓ Read scripts/install.sh
202
+ ✓ Read scripts/update.sh
203
+ ✓ Read agent/commands/command.template.md
204
+ ✓ Read agent/commands/acp.status.md
205
+ ✓ Read agent/commands/acp.proceed.md
206
+
207
+ Total: 8 source files reviewed
208
+
209
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
210
+
211
+ 🔍 Documentation Analysis...
212
+ ✓ Design documents match implementation
213
+ ✓ Task documents are current
214
+ ⚠️ Task-2 document references old nested structure (acp/init.md)
215
+ ✓ Progress tracking is accurate
216
+
217
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
218
+
219
+ 📝 Updating Documentation...
220
+ ✓ Updated progress.yaml with initialization entry
221
+ ℹ️ No other updates needed
222
+
223
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
224
+
225
+ 📊 Project Status
226
+
227
+ Project: agent-context-protocol (v1.0.3)
228
+ Status: in_progress
229
+ Started: 2026-02-16
230
+
231
+ Current Milestone: M1 - ACP Commands Infrastructure
232
+ Progress: 33% (1/4 tasks completed)
233
+ Status: in_progress
234
+
235
+ Current Task: task-2 - Implement Core Workflow Commands
236
+ Status: in_progress (2/3 commands complete)
237
+ File: agent/tasks/task-2-workflow-commands.md
238
+
239
+ Recent Work (2026-02-16):
240
+ - ✅ Created comprehensive design document
241
+ - ✅ Implemented @acp-status command
242
+ - ✅ Implemented @acp-proceed command
243
+ - 📋 Next: Complete workflow commands (init)
244
+
245
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
246
+
247
+ 🎯 Next Steps:
248
+ 1. Complete task-2: Implement acp.init.md command
249
+ 2. Start task-3: Implement version commands
250
+ 3. Complete milestone-1: All 6 core commands
251
+
252
+ ⚠️ Current Blockers: None
253
+
254
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
255
+
256
+ ✅ Initialization Complete!
257
+ Ready to proceed with task-2 completion.
258
+ ```
259
+
260
+ ### Status Update
261
+ - Recent work entry added to progress.yaml
262
+ - Context fully loaded
263
+ - Ready to work
264
+
265
+ ---
266
+
267
+ ## Examples
268
+
269
+ ### Example 1: Starting Fresh Session
270
+
271
+ **Context**: Beginning work on a project for the first time today
272
+
273
+ **Invocation**: `@acp-init`
274
+
275
+ **Result**: Checks for updates, reads all 15 agent files, reviews 10 source files, updates progress tracking, reports you're on milestone 2 task 5, ready to continue
276
+
277
+ ### Example 2: Returning After Break
278
+
279
+ **Context**: Haven't worked on project in a week
280
+
281
+ **Invocation**: `@acp-init`
282
+
283
+ **Result**: Full context reload, discovers 3 new commits since last session, updates documentation to reflect changes, shows current status (milestone 3, 80% complete), identifies next task
284
+
285
+ ### Example 3: New Agent Session
286
+
287
+ **Context**: Different AI agent picking up the project
288
+
289
+ **Invocation**: `@acp-init`
290
+
291
+ **Result**: Complete onboarding - reads all documentation, understands architecture from source code, gets current status, ready to contribute immediately
292
+
293
+ ---
294
+
295
+ ## Related Commands
296
+
297
+ - [`@acp-proceed`](acp.proceed.md) - Use after init to start working on current task
298
+ - [`@acp-status`](acp.status.md) - Use for quick status check without full initialization
299
+ - [`@acp-sync`](acp.sync.md) - Use to sync documentation after code changes
300
+ - [`@acp-version-check-for-updates`](acp.version-check-for-updates.md) - Part of init process
301
+
302
+ ---
303
+
304
+ ## Troubleshooting
305
+
306
+ ### Issue 1: No agent/ directory found
307
+
308
+ **Symptom**: Error message "agent/ directory not found"
309
+
310
+ **Cause**: ACP not installed in this project
311
+
312
+ **Solution**: Install ACP first using the installation script from the ACP repository
313
+
314
+ ### Issue 2: Update check script not found
315
+
316
+ **Symptom**: Warning "check-for-updates.sh not found"
317
+
318
+ **Cause**: Older ACP installation without update scripts
319
+
320
+ **Solution**: This is non-critical, continue with initialization. Consider updating ACP to latest version.
321
+
322
+ ### Issue 3: No source files found
323
+
324
+ **Symptom**: Warning "No source files to review"
325
+
326
+ **Cause**: Project is new or source code is in unexpected location
327
+
328
+ **Solution**: This is fine for new projects. Specify source file locations if they're in non-standard directories.
329
+
330
+ ### Issue 4: progress.yaml doesn't exist
331
+
332
+ **Symptom**: Error "Cannot read progress.yaml"
333
+
334
+ **Cause**: Progress tracking not initialized yet
335
+
336
+ **Solution**: Create progress.yaml from template: `cp agent/progress.template.yaml agent/progress.yaml`, then run `@acp-init` again
337
+
338
+ ---
339
+
340
+ ## Security Considerations
341
+
342
+ ### File Access
343
+ - **Reads**: All files in `agent/` directory, key source files throughout project, AGENT.md, README.md, CHANGELOG.md
344
+ - **Writes**: `agent/progress.yaml` (updates status), design/task documents (if stale)
345
+ - **Executes**: `./agent/scripts/check-for-updates.sh` (if exists)
346
+
347
+ ### Network Access
348
+ - **APIs**: None directly (update check script may access GitHub)
349
+ - **Repositories**: Update check script accesses GitHub repository
350
+
351
+ ### Sensitive Data
352
+ - **Secrets**: Never reads .env files or credential files
353
+ - **Credentials**: Does not access any credentials
354
+
355
+ ---
356
+
357
+ ## Notes
358
+
359
+ - This is the most comprehensive ACP command - expect 30-60 seconds for large projects
360
+ - Reads many files to build complete context
361
+ - Updates documentation if drift is detected
362
+ - Safe to run multiple times (idempotent)
363
+ - Replaces the old "AGENT.md: Initialize" prompt
364
+ - Consider running at start of each session for best results
365
+ - Can be run mid-session if you need to refresh context
366
+
367
+ ---
368
+
369
+ **Namespace**: acp
370
+ **Command**: init
371
+ **Version**: 1.0.0
372
+ **Created**: 2026-02-16
373
+ **Last Updated**: 2026-02-16
374
+ **Status**: Active
375
+ **Compatibility**: ACP 1.0.3+
376
+ **Author**: ACP Project