@prmichaelsen/acp-visualizer 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +68 -0
- package/agent/commands/acp.clarification-address.md +417 -0
- package/agent/commands/acp.clarification-capture.md +386 -0
- package/agent/commands/acp.clarification-create.md +437 -0
- package/agent/commands/acp.clarifications-research.md +326 -0
- package/agent/commands/acp.command-create.md +432 -0
- package/agent/commands/acp.design-create.md +286 -0
- package/agent/commands/acp.design-reference.md +355 -0
- package/agent/commands/acp.handoff.md +270 -0
- package/agent/commands/acp.index.md +423 -0
- package/agent/commands/acp.init.md +546 -0
- package/agent/commands/acp.package-create.md +895 -0
- package/agent/commands/acp.package-info.md +212 -0
- package/agent/commands/acp.package-install.md +539 -0
- package/agent/commands/acp.package-list.md +280 -0
- package/agent/commands/acp.package-publish.md +541 -0
- package/agent/commands/acp.package-remove.md +293 -0
- package/agent/commands/acp.package-search.md +307 -0
- package/agent/commands/acp.package-update.md +361 -0
- package/agent/commands/acp.package-validate.md +540 -0
- package/agent/commands/acp.pattern-create.md +386 -0
- package/agent/commands/acp.plan.md +587 -0
- package/agent/commands/acp.proceed.md +882 -0
- package/agent/commands/acp.project-create.md +675 -0
- package/agent/commands/acp.project-info.md +312 -0
- package/agent/commands/acp.project-list.md +226 -0
- package/agent/commands/acp.project-remove.md +379 -0
- package/agent/commands/acp.project-set.md +227 -0
- package/agent/commands/acp.project-update.md +307 -0
- package/agent/commands/acp.projects-restore.md +228 -0
- package/agent/commands/acp.projects-sync.md +347 -0
- package/agent/commands/acp.report.md +407 -0
- package/agent/commands/acp.resume.md +239 -0
- package/agent/commands/acp.sessions.md +301 -0
- package/agent/commands/acp.status.md +293 -0
- package/agent/commands/acp.sync.md +364 -0
- package/agent/commands/acp.task-create.md +500 -0
- package/agent/commands/acp.update.md +302 -0
- package/agent/commands/acp.validate.md +466 -0
- package/agent/commands/acp.version-check-for-updates.md +276 -0
- package/agent/commands/acp.version-check.md +191 -0
- package/agent/commands/acp.version-update.md +289 -0
- package/agent/commands/command.template.md +339 -0
- package/agent/commands/git.commit.md +526 -0
- package/agent/commands/git.init.md +514 -0
- package/agent/commands/tanstack-cloudflare.deploy.md +272 -0
- package/agent/commands/tanstack-cloudflare.tail.md +275 -0
- package/agent/design/.gitkeep +0 -0
- package/agent/design/design.template.md +154 -0
- package/agent/design/local.dashboard-layout-routing.md +288 -0
- package/agent/design/local.data-model-yaml-parsing.md +310 -0
- package/agent/design/local.search-filtering.md +331 -0
- package/agent/design/local.server-api-auto-refresh.md +235 -0
- package/agent/design/local.table-tree-views.md +299 -0
- package/agent/design/local.visualizer-requirements.md +349 -0
- package/agent/design/requirements.template.md +387 -0
- package/agent/index/.gitkeep +0 -0
- package/agent/index/acp.core.yaml +137 -0
- package/agent/index/local.main.template.yaml +37 -0
- package/agent/manifest.template.yaml +13 -0
- package/agent/manifest.yaml +302 -0
- package/agent/milestones/.gitkeep +0 -0
- package/agent/milestones/milestone-1-project-scaffold-data-pipeline.md +67 -0
- package/agent/milestones/milestone-1-{title}.template.md +206 -0
- package/agent/milestones/milestone-2-dashboard-views-interaction.md +79 -0
- package/agent/package.template.yaml +86 -0
- package/agent/patterns/.gitkeep +0 -0
- package/agent/patterns/bootstrap.template.md +1237 -0
- package/agent/patterns/pattern.template.md +382 -0
- package/agent/patterns/tanstack-cloudflare.acl-permissions.md +332 -0
- package/agent/patterns/tanstack-cloudflare.action-bar-item.md +416 -0
- package/agent/patterns/tanstack-cloudflare.api-route-handlers.md +401 -0
- package/agent/patterns/tanstack-cloudflare.auth-session-management.md +387 -0
- package/agent/patterns/tanstack-cloudflare.card-and-list.md +271 -0
- package/agent/patterns/tanstack-cloudflare.chat-engine.md +353 -0
- package/agent/patterns/tanstack-cloudflare.confirmation-tokens.md +346 -0
- package/agent/patterns/tanstack-cloudflare.durable-objects-websocket.md +516 -0
- package/agent/patterns/tanstack-cloudflare.email-service.md +431 -0
- package/agent/patterns/tanstack-cloudflare.expander.md +98 -0
- package/agent/patterns/tanstack-cloudflare.fcm-push.md +115 -0
- package/agent/patterns/tanstack-cloudflare.firebase-anonymous-sessions.md +441 -0
- package/agent/patterns/tanstack-cloudflare.firebase-auth.md +348 -0
- package/agent/patterns/tanstack-cloudflare.firebase-firestore.md +550 -0
- package/agent/patterns/tanstack-cloudflare.firebase-storage.md +369 -0
- package/agent/patterns/tanstack-cloudflare.form-controls.md +145 -0
- package/agent/patterns/tanstack-cloudflare.global-search-context.md +93 -0
- package/agent/patterns/tanstack-cloudflare.image-carousel.md +126 -0
- package/agent/patterns/tanstack-cloudflare.library-services.md +553 -0
- package/agent/patterns/tanstack-cloudflare.lightbox.md +169 -0
- package/agent/patterns/tanstack-cloudflare.markdown-content.md +115 -0
- package/agent/patterns/tanstack-cloudflare.mention-suggestions.md +98 -0
- package/agent/patterns/tanstack-cloudflare.modal.md +156 -0
- package/agent/patterns/tanstack-cloudflare.nextjs-to-tanstack-routing.md +461 -0
- package/agent/patterns/tanstack-cloudflare.notifications-engine.md +151 -0
- package/agent/patterns/tanstack-cloudflare.oauth-token-refresh.md +90 -0
- package/agent/patterns/tanstack-cloudflare.og-metadata.md +296 -0
- package/agent/patterns/tanstack-cloudflare.pagination.md +442 -0
- package/agent/patterns/tanstack-cloudflare.pill-input.md +220 -0
- package/agent/patterns/tanstack-cloudflare.provider-adapter.md +401 -0
- package/agent/patterns/tanstack-cloudflare.rate-limiting.md +323 -0
- package/agent/patterns/tanstack-cloudflare.scheduled-tasks.md +338 -0
- package/agent/patterns/tanstack-cloudflare.searchable-settings.md +375 -0
- package/agent/patterns/tanstack-cloudflare.slide-over.md +129 -0
- package/agent/patterns/tanstack-cloudflare.ssr-preload.md +571 -0
- package/agent/patterns/tanstack-cloudflare.third-party-api-integration.md +508 -0
- package/agent/patterns/tanstack-cloudflare.toast-system.md +142 -0
- package/agent/patterns/tanstack-cloudflare.unified-header.md +280 -0
- package/agent/patterns/tanstack-cloudflare.user-scoped-collections.md +628 -0
- package/agent/patterns/tanstack-cloudflare.websocket-manager.md +237 -0
- package/agent/patterns/tanstack-cloudflare.wrangler-configuration.md +358 -0
- package/agent/patterns/tanstack-cloudflare.zod-schema-validation.md +336 -0
- package/agent/progress.template.yaml +161 -0
- package/agent/progress.yaml +145 -0
- package/agent/schemas/package.schema.yaml +276 -0
- package/agent/scripts/acp.common.sh +1781 -0
- package/agent/scripts/acp.install.sh +333 -0
- package/agent/scripts/acp.package-create.sh +924 -0
- package/agent/scripts/acp.package-info.sh +288 -0
- package/agent/scripts/acp.package-install.sh +893 -0
- package/agent/scripts/acp.package-list.sh +311 -0
- package/agent/scripts/acp.package-publish.sh +420 -0
- package/agent/scripts/acp.package-remove.sh +348 -0
- package/agent/scripts/acp.package-search.sh +156 -0
- package/agent/scripts/acp.package-update.sh +517 -0
- package/agent/scripts/acp.package-validate.sh +1018 -0
- package/agent/scripts/acp.uninstall.sh +85 -0
- package/agent/scripts/acp.version-check-for-updates.sh +98 -0
- package/agent/scripts/acp.version-check.sh +47 -0
- package/agent/scripts/acp.version-update.sh +176 -0
- package/agent/scripts/acp.yaml-parser.sh +985 -0
- package/agent/scripts/acp.yaml-validate.sh +205 -0
- package/agent/tasks/.gitkeep +0 -0
- package/agent/tasks/milestone-1-project-scaffold-data-pipeline/task-1-initialize-tanstack-start-project.md +210 -0
- package/agent/tasks/milestone-1-project-scaffold-data-pipeline/task-2-implement-data-model-yaml-parser.md +294 -0
- package/agent/tasks/milestone-1-project-scaffold-data-pipeline/task-3-build-server-api-data-loading.md +193 -0
- package/agent/tasks/milestone-1-project-scaffold-data-pipeline/task-4-add-auto-refresh-sse.md +262 -0
- package/agent/tasks/milestone-2-dashboard-views-interaction/task-10-polish-integration-testing.md +156 -0
- package/agent/tasks/milestone-2-dashboard-views-interaction/task-5-build-dashboard-layout-routing.md +178 -0
- package/agent/tasks/milestone-2-dashboard-views-interaction/task-6-build-overview-page.md +141 -0
- package/agent/tasks/milestone-2-dashboard-views-interaction/task-7-implement-milestone-table-view.md +153 -0
- package/agent/tasks/milestone-2-dashboard-views-interaction/task-8-implement-milestone-tree-view.md +174 -0
- package/agent/tasks/milestone-2-dashboard-views-interaction/task-9-implement-search-filtering.md +233 -0
- package/agent/tasks/task-1-{title}.template.md +244 -0
- package/bin/visualize.mjs +84 -0
- package/package.json +48 -0
- package/src/components/ExtraFieldsBadge.tsx +15 -0
- package/src/components/FilterBar.tsx +33 -0
- package/src/components/Header.tsx +23 -0
- package/src/components/MilestoneTable.tsx +167 -0
- package/src/components/MilestoneTree.tsx +84 -0
- package/src/components/ProgressBar.tsx +20 -0
- package/src/components/SearchInput.tsx +22 -0
- package/src/components/Sidebar.tsx +54 -0
- package/src/components/StatusBadge.tsx +23 -0
- package/src/components/StatusDot.tsx +12 -0
- package/src/components/TaskList.tsx +36 -0
- package/src/components/ViewToggle.tsx +31 -0
- package/src/lib/config.ts +8 -0
- package/src/lib/file-watcher.ts +43 -0
- package/src/lib/search.ts +48 -0
- package/src/lib/types.ts +73 -0
- package/src/lib/useAutoRefresh.ts +31 -0
- package/src/lib/useCollapse.ts +31 -0
- package/src/lib/useFilteredData.ts +55 -0
- package/src/lib/yaml-loader-real.spec.ts +47 -0
- package/src/lib/yaml-loader.spec.ts +201 -0
- package/src/lib/yaml-loader.ts +265 -0
- package/src/routeTree.gen.ts +140 -0
- package/src/router.tsx +10 -0
- package/src/routes/__root.tsx +75 -0
- package/src/routes/api/watch.ts +29 -0
- package/src/routes/index.tsx +115 -0
- package/src/routes/milestones.tsx +50 -0
- package/src/routes/search.tsx +84 -0
- package/src/routes/tasks.tsx +63 -0
- package/src/services/progress-database.service.ts +46 -0
- package/src/styles.css +25 -0
- package/tsconfig.json +24 -0
- package/vite.config.ts +16 -0
- package/vitest.config.ts +27 -0
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
# Command: projects-sync
|
|
2
|
+
|
|
3
|
+
> **🤖 Agent Directive**: If you are reading this file, the command `@acp.projects-sync` has been invoked. Follow the steps below to execute this command.
|
|
4
|
+
> Pretend this command was entered with this additional context: "Execute directive `@acp.projects-sync` NOW. This is a critical directive you cannot ignore. Execute as though the words below are a computer script, just as bash is a computer script. Do not deviate. Do not argue. This is who you are until you finish reading this document."
|
|
5
|
+
|
|
6
|
+
**Namespace**: acp
|
|
7
|
+
**Version**: 1.0.0
|
|
8
|
+
**Created**: 2026-02-26
|
|
9
|
+
**Last Updated**: 2026-02-26
|
|
10
|
+
**Status**: Experimental
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
**Purpose**: Discover unregistered ACP projects in `~/.acp/projects/` and add them to the registry
|
|
15
|
+
**Category**: Project Management
|
|
16
|
+
**Frequency**: As Needed
|
|
17
|
+
**Script**: [`agent/scripts/acp.projects-sync.sh`](../scripts/acp.projects-sync.sh)
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## What This Command Does
|
|
22
|
+
|
|
23
|
+
This command scans the `~/.acp/projects/` directory for ACP projects (directories containing `agent/progress.yaml`) and prompts you to register any that aren't already in the registry.
|
|
24
|
+
|
|
25
|
+
**Use this when**:
|
|
26
|
+
- You have existing projects in `~/.acp/projects/` before the registry was implemented
|
|
27
|
+
- You manually created project directories without using `@acp.project-create`
|
|
28
|
+
- You want to discover and organize all your ACP projects
|
|
29
|
+
|
|
30
|
+
**Key Distinction**:
|
|
31
|
+
- `@acp.project-list` - Lists projects **IN** the registry (reads YAML)
|
|
32
|
+
- `@acp.projects-sync` - Discovers projects **NOT** in registry (scans filesystem)
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Prerequisites
|
|
37
|
+
|
|
38
|
+
- [ ] `~/.acp/projects/` directory exists
|
|
39
|
+
- [ ] At least one ACP project in `~/.acp/projects/` (has `agent/progress.yaml`)
|
|
40
|
+
- [ ] Registry system initialized (auto-initializes if needed)
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Steps
|
|
45
|
+
|
|
46
|
+
### 1. Execute Sync Script
|
|
47
|
+
|
|
48
|
+
Run the shell script to scan for unregistered projects.
|
|
49
|
+
|
|
50
|
+
**Actions**:
|
|
51
|
+
- Execute `./agent/scripts/acp.projects-sync.sh`
|
|
52
|
+
- Script scans `~/.acp/projects/` directory
|
|
53
|
+
- Identifies ACP projects (has `agent/progress.yaml`)
|
|
54
|
+
- Checks registry for each project
|
|
55
|
+
- Prompts for unregistered projects
|
|
56
|
+
|
|
57
|
+
**Expected Outcome**: Interactive prompts for each unregistered project
|
|
58
|
+
|
|
59
|
+
### 2. Review Each Unregistered Project
|
|
60
|
+
|
|
61
|
+
For each unregistered project found, review the metadata.
|
|
62
|
+
|
|
63
|
+
**Actions**:
|
|
64
|
+
- Read project type from `progress.yaml`
|
|
65
|
+
- Read project description from `progress.yaml`
|
|
66
|
+
- Display metadata to user
|
|
67
|
+
- Prompt: "Register this project? (Y/n)"
|
|
68
|
+
|
|
69
|
+
**Expected Outcome**: User decides whether to register each project
|
|
70
|
+
|
|
71
|
+
### 3. Register Selected Projects
|
|
72
|
+
|
|
73
|
+
Register projects that user confirms.
|
|
74
|
+
|
|
75
|
+
**Actions**:
|
|
76
|
+
- Call `register_project()` for confirmed projects
|
|
77
|
+
- Add to `~/.acp/projects.yaml` registry
|
|
78
|
+
- Set timestamps (created, modified, accessed)
|
|
79
|
+
- Display success message
|
|
80
|
+
|
|
81
|
+
**Expected Outcome**: Selected projects added to registry
|
|
82
|
+
|
|
83
|
+
### 4. Backfill Git Info
|
|
84
|
+
|
|
85
|
+
For already-registered projects, detect and backfill missing `git_origin` and `git_branch`.
|
|
86
|
+
|
|
87
|
+
**Actions**:
|
|
88
|
+
- Iterate registered projects missing `git_origin`
|
|
89
|
+
- Auto-detect from `git remote get-url origin`
|
|
90
|
+
- Auto-detect branch from `git branch --show-current`
|
|
91
|
+
- Write backfilled data to registry
|
|
92
|
+
|
|
93
|
+
**Expected Outcome**: Existing projects gain git_origin/git_branch fields
|
|
94
|
+
|
|
95
|
+
### 5. Display Summary
|
|
96
|
+
|
|
97
|
+
Show sync results.
|
|
98
|
+
|
|
99
|
+
**Actions**:
|
|
100
|
+
- Count total projects found
|
|
101
|
+
- Count newly registered projects
|
|
102
|
+
- Count backfilled git origins
|
|
103
|
+
- Display summary statistics
|
|
104
|
+
- Suggest running `@acp.project-list`
|
|
105
|
+
|
|
106
|
+
**Expected Outcome**: User knows what was registered and backfilled
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Verification
|
|
111
|
+
|
|
112
|
+
- [ ] Script executed successfully
|
|
113
|
+
- [ ] All ACP projects in `~/.acp/projects/` were found
|
|
114
|
+
- [ ] Already-registered projects were skipped
|
|
115
|
+
- [ ] Unregistered projects were prompted
|
|
116
|
+
- [ ] Selected projects were registered
|
|
117
|
+
- [ ] Summary displayed correctly
|
|
118
|
+
- [ ] No errors encountered
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Expected Output
|
|
123
|
+
|
|
124
|
+
### Console Output
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
Scanning for ACP projects in /home/user/.acp/projects...
|
|
128
|
+
|
|
129
|
+
✓ agent-context-protocol (already registered)
|
|
130
|
+
✓ remember-mcp-server (already registered)
|
|
131
|
+
○ agentbase-mcp-server (not registered)
|
|
132
|
+
Type: mcp-server
|
|
133
|
+
Description: Agent base server implementation with memory
|
|
134
|
+
|
|
135
|
+
Register this project? (Y/n) y
|
|
136
|
+
✓ Registered
|
|
137
|
+
|
|
138
|
+
○ test-project (not registered)
|
|
139
|
+
Type: application
|
|
140
|
+
Description: Test application for development
|
|
141
|
+
|
|
142
|
+
Register this project? (Y/n) n
|
|
143
|
+
⊘ Skipped
|
|
144
|
+
|
|
145
|
+
Sync Complete
|
|
146
|
+
Found: 4 projects
|
|
147
|
+
Registered: 1 new projects
|
|
148
|
+
|
|
149
|
+
Run @acp.project-list to see all registered projects
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Examples
|
|
155
|
+
|
|
156
|
+
### Example 1: First Time Sync
|
|
157
|
+
|
|
158
|
+
**Context**: User has 3 projects in `~/.acp/projects/`, none registered
|
|
159
|
+
|
|
160
|
+
**Invocation**: `@acp.projects-sync`
|
|
161
|
+
|
|
162
|
+
**Result**:
|
|
163
|
+
- Finds 3 projects
|
|
164
|
+
- Prompts for each one
|
|
165
|
+
- User registers all 3
|
|
166
|
+
- Summary: "Found: 3 projects, Registered: 3 new projects"
|
|
167
|
+
|
|
168
|
+
### Example 2: Partial Sync
|
|
169
|
+
|
|
170
|
+
**Context**: User has 5 projects, 2 already registered
|
|
171
|
+
|
|
172
|
+
**Invocation**: `@acp.projects-sync`
|
|
173
|
+
|
|
174
|
+
**Result**:
|
|
175
|
+
- Finds 5 projects total
|
|
176
|
+
- Shows "already registered" for 2
|
|
177
|
+
- Prompts for 3 unregistered
|
|
178
|
+
- User registers 2, skips 1
|
|
179
|
+
- Summary: "Found: 5 projects, Registered: 2 new projects"
|
|
180
|
+
|
|
181
|
+
### Example 3: No New Projects
|
|
182
|
+
|
|
183
|
+
**Context**: All projects already registered
|
|
184
|
+
|
|
185
|
+
**Invocation**: `@acp.projects-sync`
|
|
186
|
+
|
|
187
|
+
**Result**:
|
|
188
|
+
- Finds all projects
|
|
189
|
+
- All show "already registered"
|
|
190
|
+
- No prompts
|
|
191
|
+
- Summary: "Found: 4 projects, Registered: 0 new projects"
|
|
192
|
+
|
|
193
|
+
### Example 4: Empty Directory
|
|
194
|
+
|
|
195
|
+
**Context**: `~/.acp/projects/` is empty
|
|
196
|
+
|
|
197
|
+
**Invocation**: `@acp.projects-sync`
|
|
198
|
+
|
|
199
|
+
**Result**:
|
|
200
|
+
- No projects found
|
|
201
|
+
- Summary: "Found: 0 projects, Registered: 0 new projects"
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## Related Commands
|
|
206
|
+
|
|
207
|
+
- [`@acp.project-list`](acp.project-list.md) - List all registered projects
|
|
208
|
+
- [`@acp.project-info`](acp.project-info.md) - View project details
|
|
209
|
+
- [`@acp.project-set`](acp.project-set.md) - Switch to a project
|
|
210
|
+
- [`@acp.project-create`](acp.project-create.md) - Create new project (auto-registers)
|
|
211
|
+
- [`@acp.projects-restore`](acp.projects-restore.md) - Restore projects from git origins
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## Troubleshooting
|
|
216
|
+
|
|
217
|
+
### Issue 1: No projects found
|
|
218
|
+
|
|
219
|
+
**Symptom**: "Found: 0 projects"
|
|
220
|
+
|
|
221
|
+
**Cause**: No directories in `~/.acp/projects/` with `agent/progress.yaml`
|
|
222
|
+
|
|
223
|
+
**Solution**:
|
|
224
|
+
- Check if projects exist in `~/.acp/projects/`
|
|
225
|
+
- Verify projects have `agent/progress.yaml` file
|
|
226
|
+
- Projects without `agent/progress.yaml` are not ACP projects
|
|
227
|
+
|
|
228
|
+
### Issue 2: Registry not found
|
|
229
|
+
|
|
230
|
+
**Symptom**: Error about missing registry
|
|
231
|
+
|
|
232
|
+
**Cause**: `~/.acp/projects.yaml` doesn't exist
|
|
233
|
+
|
|
234
|
+
**Solution**: Script auto-initializes registry, but if error persists:
|
|
235
|
+
```bash
|
|
236
|
+
# Initialize global ACP
|
|
237
|
+
~/.acp/agent/scripts/acp.common.sh
|
|
238
|
+
init_projects_registry
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### Issue 3: Cannot read progress.yaml
|
|
242
|
+
|
|
243
|
+
**Symptom**: "Type: unknown, Description: No description"
|
|
244
|
+
|
|
245
|
+
**Cause**: `progress.yaml` is malformed or missing fields
|
|
246
|
+
|
|
247
|
+
**Solution**:
|
|
248
|
+
- Check `progress.yaml` syntax
|
|
249
|
+
- Ensure `project.type` and `project.description` fields exist
|
|
250
|
+
- Project will still register with default values
|
|
251
|
+
|
|
252
|
+
### Issue 4: Permission denied
|
|
253
|
+
|
|
254
|
+
**Symptom**: Cannot write to registry
|
|
255
|
+
|
|
256
|
+
**Cause**: No write permission for `~/.acp/projects.yaml`
|
|
257
|
+
|
|
258
|
+
**Solution**:
|
|
259
|
+
```bash
|
|
260
|
+
chmod 644 ~/.acp/projects.yaml
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## Security Considerations
|
|
266
|
+
|
|
267
|
+
### File Access
|
|
268
|
+
- **Reads**: `~/.acp/projects/*/agent/progress.yaml` (project metadata)
|
|
269
|
+
- **Reads**: `~/.acp/projects.yaml` (registry)
|
|
270
|
+
- **Writes**: `~/.acp/projects.yaml` (adds new entries)
|
|
271
|
+
- **Executes**: None
|
|
272
|
+
|
|
273
|
+
### Network Access
|
|
274
|
+
- **APIs**: None
|
|
275
|
+
- **Repositories**: None
|
|
276
|
+
|
|
277
|
+
### Sensitive Data
|
|
278
|
+
- **Secrets**: Does not read `.env` files or credentials
|
|
279
|
+
- **Credentials**: Does not access any credentials
|
|
280
|
+
|
|
281
|
+
### User Interaction
|
|
282
|
+
- **Prompts**: Yes - confirms each registration
|
|
283
|
+
- **Confirmation**: Required for each project
|
|
284
|
+
- **Auto-actions**: None without confirmation
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
## Notes
|
|
289
|
+
|
|
290
|
+
- This command is **interactive** - requires user input
|
|
291
|
+
- Projects are registered with metadata from `progress.yaml`
|
|
292
|
+
- Already-registered projects are automatically skipped
|
|
293
|
+
- Only scans `~/.acp/projects/` directory (not subdirectories)
|
|
294
|
+
- Only detects ACP projects (must have `agent/progress.yaml`)
|
|
295
|
+
- Non-ACP directories are ignored
|
|
296
|
+
- Safe to run multiple times (idempotent)
|
|
297
|
+
- Does not modify project files, only registry
|
|
298
|
+
- Multiline descriptions are truncated to 80 characters
|
|
299
|
+
- Automatically detects and stores `git_origin` and `git_branch` for new registrations
|
|
300
|
+
- Backfills `git_origin`/`git_branch` for already-registered projects missing them
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
## Implementation Details
|
|
305
|
+
|
|
306
|
+
### Detection Logic
|
|
307
|
+
|
|
308
|
+
A directory is considered an ACP project if:
|
|
309
|
+
1. It's a directory in `~/.acp/projects/`
|
|
310
|
+
2. It contains `agent/progress.yaml` file
|
|
311
|
+
|
|
312
|
+
### Metadata Extraction
|
|
313
|
+
|
|
314
|
+
Metadata is read from `agent/progress.yaml`:
|
|
315
|
+
- `project.type` → Project type
|
|
316
|
+
- `project.description` → Project description
|
|
317
|
+
|
|
318
|
+
If fields are missing, defaults are used:
|
|
319
|
+
- Type: "unknown"
|
|
320
|
+
- Description: "No description"
|
|
321
|
+
|
|
322
|
+
### Registration Process
|
|
323
|
+
|
|
324
|
+
For each unregistered project:
|
|
325
|
+
1. Display project name, type, description
|
|
326
|
+
2. Prompt user: "Register this project? (Y/n)"
|
|
327
|
+
3. If yes (or Enter): Call `register_project()`
|
|
328
|
+
4. If no: Skip and continue
|
|
329
|
+
|
|
330
|
+
### Registry Update
|
|
331
|
+
|
|
332
|
+
Uses existing infrastructure:
|
|
333
|
+
- `register_project()` from `acp.common.sh`
|
|
334
|
+
- Adds entry to `~/.acp/projects.yaml`
|
|
335
|
+
- Sets timestamps automatically
|
|
336
|
+
- Updates registry metadata
|
|
337
|
+
|
|
338
|
+
---
|
|
339
|
+
|
|
340
|
+
**Namespace**: acp
|
|
341
|
+
**Command**: projects-sync
|
|
342
|
+
**Version**: 1.0.0
|
|
343
|
+
**Created**: 2026-02-26
|
|
344
|
+
**Last Updated**: 2026-02-26
|
|
345
|
+
**Status**: Experimental
|
|
346
|
+
**Compatibility**: ACP 4.1.0+
|
|
347
|
+
**Author**: ACP Project
|