@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.
Files changed (180) hide show
  1. package/README.md +68 -0
  2. package/agent/commands/acp.clarification-address.md +417 -0
  3. package/agent/commands/acp.clarification-capture.md +386 -0
  4. package/agent/commands/acp.clarification-create.md +437 -0
  5. package/agent/commands/acp.clarifications-research.md +326 -0
  6. package/agent/commands/acp.command-create.md +432 -0
  7. package/agent/commands/acp.design-create.md +286 -0
  8. package/agent/commands/acp.design-reference.md +355 -0
  9. package/agent/commands/acp.handoff.md +270 -0
  10. package/agent/commands/acp.index.md +423 -0
  11. package/agent/commands/acp.init.md +546 -0
  12. package/agent/commands/acp.package-create.md +895 -0
  13. package/agent/commands/acp.package-info.md +212 -0
  14. package/agent/commands/acp.package-install.md +539 -0
  15. package/agent/commands/acp.package-list.md +280 -0
  16. package/agent/commands/acp.package-publish.md +541 -0
  17. package/agent/commands/acp.package-remove.md +293 -0
  18. package/agent/commands/acp.package-search.md +307 -0
  19. package/agent/commands/acp.package-update.md +361 -0
  20. package/agent/commands/acp.package-validate.md +540 -0
  21. package/agent/commands/acp.pattern-create.md +386 -0
  22. package/agent/commands/acp.plan.md +587 -0
  23. package/agent/commands/acp.proceed.md +882 -0
  24. package/agent/commands/acp.project-create.md +675 -0
  25. package/agent/commands/acp.project-info.md +312 -0
  26. package/agent/commands/acp.project-list.md +226 -0
  27. package/agent/commands/acp.project-remove.md +379 -0
  28. package/agent/commands/acp.project-set.md +227 -0
  29. package/agent/commands/acp.project-update.md +307 -0
  30. package/agent/commands/acp.projects-restore.md +228 -0
  31. package/agent/commands/acp.projects-sync.md +347 -0
  32. package/agent/commands/acp.report.md +407 -0
  33. package/agent/commands/acp.resume.md +239 -0
  34. package/agent/commands/acp.sessions.md +301 -0
  35. package/agent/commands/acp.status.md +293 -0
  36. package/agent/commands/acp.sync.md +364 -0
  37. package/agent/commands/acp.task-create.md +500 -0
  38. package/agent/commands/acp.update.md +302 -0
  39. package/agent/commands/acp.validate.md +466 -0
  40. package/agent/commands/acp.version-check-for-updates.md +276 -0
  41. package/agent/commands/acp.version-check.md +191 -0
  42. package/agent/commands/acp.version-update.md +289 -0
  43. package/agent/commands/command.template.md +339 -0
  44. package/agent/commands/git.commit.md +526 -0
  45. package/agent/commands/git.init.md +514 -0
  46. package/agent/commands/tanstack-cloudflare.deploy.md +272 -0
  47. package/agent/commands/tanstack-cloudflare.tail.md +275 -0
  48. package/agent/design/.gitkeep +0 -0
  49. package/agent/design/design.template.md +154 -0
  50. package/agent/design/local.dashboard-layout-routing.md +288 -0
  51. package/agent/design/local.data-model-yaml-parsing.md +310 -0
  52. package/agent/design/local.search-filtering.md +331 -0
  53. package/agent/design/local.server-api-auto-refresh.md +235 -0
  54. package/agent/design/local.table-tree-views.md +299 -0
  55. package/agent/design/local.visualizer-requirements.md +349 -0
  56. package/agent/design/requirements.template.md +387 -0
  57. package/agent/index/.gitkeep +0 -0
  58. package/agent/index/acp.core.yaml +137 -0
  59. package/agent/index/local.main.template.yaml +37 -0
  60. package/agent/manifest.template.yaml +13 -0
  61. package/agent/manifest.yaml +302 -0
  62. package/agent/milestones/.gitkeep +0 -0
  63. package/agent/milestones/milestone-1-project-scaffold-data-pipeline.md +67 -0
  64. package/agent/milestones/milestone-1-{title}.template.md +206 -0
  65. package/agent/milestones/milestone-2-dashboard-views-interaction.md +79 -0
  66. package/agent/package.template.yaml +86 -0
  67. package/agent/patterns/.gitkeep +0 -0
  68. package/agent/patterns/bootstrap.template.md +1237 -0
  69. package/agent/patterns/pattern.template.md +382 -0
  70. package/agent/patterns/tanstack-cloudflare.acl-permissions.md +332 -0
  71. package/agent/patterns/tanstack-cloudflare.action-bar-item.md +416 -0
  72. package/agent/patterns/tanstack-cloudflare.api-route-handlers.md +401 -0
  73. package/agent/patterns/tanstack-cloudflare.auth-session-management.md +387 -0
  74. package/agent/patterns/tanstack-cloudflare.card-and-list.md +271 -0
  75. package/agent/patterns/tanstack-cloudflare.chat-engine.md +353 -0
  76. package/agent/patterns/tanstack-cloudflare.confirmation-tokens.md +346 -0
  77. package/agent/patterns/tanstack-cloudflare.durable-objects-websocket.md +516 -0
  78. package/agent/patterns/tanstack-cloudflare.email-service.md +431 -0
  79. package/agent/patterns/tanstack-cloudflare.expander.md +98 -0
  80. package/agent/patterns/tanstack-cloudflare.fcm-push.md +115 -0
  81. package/agent/patterns/tanstack-cloudflare.firebase-anonymous-sessions.md +441 -0
  82. package/agent/patterns/tanstack-cloudflare.firebase-auth.md +348 -0
  83. package/agent/patterns/tanstack-cloudflare.firebase-firestore.md +550 -0
  84. package/agent/patterns/tanstack-cloudflare.firebase-storage.md +369 -0
  85. package/agent/patterns/tanstack-cloudflare.form-controls.md +145 -0
  86. package/agent/patterns/tanstack-cloudflare.global-search-context.md +93 -0
  87. package/agent/patterns/tanstack-cloudflare.image-carousel.md +126 -0
  88. package/agent/patterns/tanstack-cloudflare.library-services.md +553 -0
  89. package/agent/patterns/tanstack-cloudflare.lightbox.md +169 -0
  90. package/agent/patterns/tanstack-cloudflare.markdown-content.md +115 -0
  91. package/agent/patterns/tanstack-cloudflare.mention-suggestions.md +98 -0
  92. package/agent/patterns/tanstack-cloudflare.modal.md +156 -0
  93. package/agent/patterns/tanstack-cloudflare.nextjs-to-tanstack-routing.md +461 -0
  94. package/agent/patterns/tanstack-cloudflare.notifications-engine.md +151 -0
  95. package/agent/patterns/tanstack-cloudflare.oauth-token-refresh.md +90 -0
  96. package/agent/patterns/tanstack-cloudflare.og-metadata.md +296 -0
  97. package/agent/patterns/tanstack-cloudflare.pagination.md +442 -0
  98. package/agent/patterns/tanstack-cloudflare.pill-input.md +220 -0
  99. package/agent/patterns/tanstack-cloudflare.provider-adapter.md +401 -0
  100. package/agent/patterns/tanstack-cloudflare.rate-limiting.md +323 -0
  101. package/agent/patterns/tanstack-cloudflare.scheduled-tasks.md +338 -0
  102. package/agent/patterns/tanstack-cloudflare.searchable-settings.md +375 -0
  103. package/agent/patterns/tanstack-cloudflare.slide-over.md +129 -0
  104. package/agent/patterns/tanstack-cloudflare.ssr-preload.md +571 -0
  105. package/agent/patterns/tanstack-cloudflare.third-party-api-integration.md +508 -0
  106. package/agent/patterns/tanstack-cloudflare.toast-system.md +142 -0
  107. package/agent/patterns/tanstack-cloudflare.unified-header.md +280 -0
  108. package/agent/patterns/tanstack-cloudflare.user-scoped-collections.md +628 -0
  109. package/agent/patterns/tanstack-cloudflare.websocket-manager.md +237 -0
  110. package/agent/patterns/tanstack-cloudflare.wrangler-configuration.md +358 -0
  111. package/agent/patterns/tanstack-cloudflare.zod-schema-validation.md +336 -0
  112. package/agent/progress.template.yaml +161 -0
  113. package/agent/progress.yaml +145 -0
  114. package/agent/schemas/package.schema.yaml +276 -0
  115. package/agent/scripts/acp.common.sh +1781 -0
  116. package/agent/scripts/acp.install.sh +333 -0
  117. package/agent/scripts/acp.package-create.sh +924 -0
  118. package/agent/scripts/acp.package-info.sh +288 -0
  119. package/agent/scripts/acp.package-install.sh +893 -0
  120. package/agent/scripts/acp.package-list.sh +311 -0
  121. package/agent/scripts/acp.package-publish.sh +420 -0
  122. package/agent/scripts/acp.package-remove.sh +348 -0
  123. package/agent/scripts/acp.package-search.sh +156 -0
  124. package/agent/scripts/acp.package-update.sh +517 -0
  125. package/agent/scripts/acp.package-validate.sh +1018 -0
  126. package/agent/scripts/acp.uninstall.sh +85 -0
  127. package/agent/scripts/acp.version-check-for-updates.sh +98 -0
  128. package/agent/scripts/acp.version-check.sh +47 -0
  129. package/agent/scripts/acp.version-update.sh +176 -0
  130. package/agent/scripts/acp.yaml-parser.sh +985 -0
  131. package/agent/scripts/acp.yaml-validate.sh +205 -0
  132. package/agent/tasks/.gitkeep +0 -0
  133. package/agent/tasks/milestone-1-project-scaffold-data-pipeline/task-1-initialize-tanstack-start-project.md +210 -0
  134. package/agent/tasks/milestone-1-project-scaffold-data-pipeline/task-2-implement-data-model-yaml-parser.md +294 -0
  135. package/agent/tasks/milestone-1-project-scaffold-data-pipeline/task-3-build-server-api-data-loading.md +193 -0
  136. package/agent/tasks/milestone-1-project-scaffold-data-pipeline/task-4-add-auto-refresh-sse.md +262 -0
  137. package/agent/tasks/milestone-2-dashboard-views-interaction/task-10-polish-integration-testing.md +156 -0
  138. package/agent/tasks/milestone-2-dashboard-views-interaction/task-5-build-dashboard-layout-routing.md +178 -0
  139. package/agent/tasks/milestone-2-dashboard-views-interaction/task-6-build-overview-page.md +141 -0
  140. package/agent/tasks/milestone-2-dashboard-views-interaction/task-7-implement-milestone-table-view.md +153 -0
  141. package/agent/tasks/milestone-2-dashboard-views-interaction/task-8-implement-milestone-tree-view.md +174 -0
  142. package/agent/tasks/milestone-2-dashboard-views-interaction/task-9-implement-search-filtering.md +233 -0
  143. package/agent/tasks/task-1-{title}.template.md +244 -0
  144. package/bin/visualize.mjs +84 -0
  145. package/package.json +48 -0
  146. package/src/components/ExtraFieldsBadge.tsx +15 -0
  147. package/src/components/FilterBar.tsx +33 -0
  148. package/src/components/Header.tsx +23 -0
  149. package/src/components/MilestoneTable.tsx +167 -0
  150. package/src/components/MilestoneTree.tsx +84 -0
  151. package/src/components/ProgressBar.tsx +20 -0
  152. package/src/components/SearchInput.tsx +22 -0
  153. package/src/components/Sidebar.tsx +54 -0
  154. package/src/components/StatusBadge.tsx +23 -0
  155. package/src/components/StatusDot.tsx +12 -0
  156. package/src/components/TaskList.tsx +36 -0
  157. package/src/components/ViewToggle.tsx +31 -0
  158. package/src/lib/config.ts +8 -0
  159. package/src/lib/file-watcher.ts +43 -0
  160. package/src/lib/search.ts +48 -0
  161. package/src/lib/types.ts +73 -0
  162. package/src/lib/useAutoRefresh.ts +31 -0
  163. package/src/lib/useCollapse.ts +31 -0
  164. package/src/lib/useFilteredData.ts +55 -0
  165. package/src/lib/yaml-loader-real.spec.ts +47 -0
  166. package/src/lib/yaml-loader.spec.ts +201 -0
  167. package/src/lib/yaml-loader.ts +265 -0
  168. package/src/routeTree.gen.ts +140 -0
  169. package/src/router.tsx +10 -0
  170. package/src/routes/__root.tsx +75 -0
  171. package/src/routes/api/watch.ts +29 -0
  172. package/src/routes/index.tsx +115 -0
  173. package/src/routes/milestones.tsx +50 -0
  174. package/src/routes/search.tsx +84 -0
  175. package/src/routes/tasks.tsx +63 -0
  176. package/src/services/progress-database.service.ts +46 -0
  177. package/src/styles.css +25 -0
  178. package/tsconfig.json +24 -0
  179. package/vite.config.ts +16 -0
  180. package/vitest.config.ts +27 -0
@@ -0,0 +1,420 @@
1
+ #!/bin/bash
2
+ # ACP Package Publishing Script
3
+ # Automated package publishing with validation, versioning, and testing
4
+ # Version: 1.0.0
5
+
6
+ set -e
7
+
8
+ # Source common utilities
9
+ SCRIPT_DIR="$(dirname "$0")"
10
+ . "${SCRIPT_DIR}/acp.common.sh"
11
+ . "${SCRIPT_DIR}/acp.yaml-parser.sh"
12
+
13
+ # Initialize colors
14
+ init_colors
15
+
16
+ # Check if we're in a package directory
17
+ if [ ! -f "package.yaml" ]; then
18
+ echo "${RED}Error: Not a package directory${NC}"
19
+ echo "package.yaml not found. This command must be run from an ACP package directory."
20
+ exit 1
21
+ fi
22
+
23
+ # Extract package info
24
+ PACKAGE_NAME=$(yaml_get "package.yaml" "name" 2>/dev/null || echo "unknown")
25
+ CURRENT_VERSION=$(yaml_get "package.yaml" "version" 2>/dev/null || echo "0.0.0")
26
+ REPO_URL=$(yaml_get "package.yaml" "repository" 2>/dev/null || echo "")
27
+
28
+ echo "${BLUE}๐Ÿš€ ACP Package Publishing${NC}"
29
+ echo "${BLUE}โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”${NC}"
30
+ echo ""
31
+ echo "${BOLD}Package: ${PACKAGE_NAME} (v${CURRENT_VERSION})${NC}"
32
+ echo ""
33
+
34
+ # Step 1: Validation
35
+ echo "${BLUE}โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”${NC}"
36
+ echo ""
37
+ echo "${BOLD}๐Ÿ” Step 1: Validation${NC}"
38
+ echo ""
39
+ echo "Running @acp.package-validate..."
40
+ echo ""
41
+
42
+ if ! "${SCRIPT_DIR}/acp.package-validate.sh"; then
43
+ echo ""
44
+ echo "${RED}โŒ Package validation failed${NC}"
45
+ echo ""
46
+ echo "Fix validation errors and run @acp.package-publish again."
47
+ echo "Or use @acp.package-validate to see detailed errors."
48
+ exit 1
49
+ fi
50
+
51
+ echo ""
52
+ echo "${GREEN}โœ… Package validation passed!${NC}"
53
+ echo ""
54
+
55
+ # Step 2: Check working directory
56
+ echo "${BLUE}โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”${NC}"
57
+ echo ""
58
+ echo "${BOLD}๐Ÿ” Step 2: Git Status${NC}"
59
+ echo ""
60
+
61
+ # Check for uncommitted changes
62
+ if [ -n "$(git status --porcelain)" ]; then
63
+ echo "${YELLOW}โš ๏ธ Uncommitted changes detected${NC}"
64
+ git status --short
65
+ echo ""
66
+ echo "${YELLOW}These changes will be committed as part of the release.${NC}"
67
+ echo ""
68
+ fi
69
+
70
+ # Check current branch
71
+ CURRENT_BRANCH=$(git branch --show-current)
72
+ echo "Current branch: ${BOLD}${CURRENT_BRANCH}${NC}"
73
+
74
+ # Validate branch
75
+ RELEASE_BRANCH=$(yaml_get "package.yaml" "release.branch" 2>/dev/null || echo "main")
76
+ VALID_BRANCHES="main master mainline release ${RELEASE_BRANCH}"
77
+
78
+ if ! echo "$VALID_BRANCHES" | grep -qw "$CURRENT_BRANCH"; then
79
+ echo ""
80
+ echo "${RED}โŒ Not on a valid release branch${NC}"
81
+ echo "Current: $CURRENT_BRANCH"
82
+ echo "Valid: $VALID_BRANCHES"
83
+ echo ""
84
+ echo "Switch to a release branch or configure in package.yaml:"
85
+ echo " release:"
86
+ echo " branch: $CURRENT_BRANCH"
87
+ exit 1
88
+ fi
89
+
90
+ echo "${GREEN}โœ“${NC} On valid release branch"
91
+
92
+ # Show remote
93
+ if [ -n "$REPO_URL" ]; then
94
+ echo "Remote: ${REPO_URL}"
95
+ fi
96
+
97
+ echo ""
98
+
99
+ # Step 3: Check remote status
100
+ echo "${BLUE}โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”${NC}"
101
+ echo ""
102
+ echo "${BOLD}๐Ÿ” Step 3: Remote Status${NC}"
103
+ echo ""
104
+
105
+ echo "Fetching latest from origin..."
106
+ if git fetch origin >/dev/null 2>&1; then
107
+ echo "${GREEN}โœ“${NC} Fetched latest from origin"
108
+
109
+ # Check if remote is ahead
110
+ COMMITS_BEHIND=$(git rev-list HEAD..origin/${CURRENT_BRANCH} --count 2>/dev/null || echo "0")
111
+ if [ "$COMMITS_BEHIND" -gt 0 ]; then
112
+ echo ""
113
+ echo "${RED}โŒ Remote is ahead of local${NC}"
114
+ echo "Remote has $COMMITS_BEHIND commit(s) not in local."
115
+ echo ""
116
+ echo "Pull latest changes first:"
117
+ echo " git pull"
118
+ exit 1
119
+ fi
120
+
121
+ echo "${GREEN}โœ“${NC} Local is up to date with remote"
122
+ else
123
+ echo "${YELLOW}โš ๏ธ Could not fetch from remote${NC}"
124
+ echo "Continuing anyway (remote may not exist yet)..."
125
+ fi
126
+
127
+ echo ""
128
+
129
+ # Step 4: Analyze commits for version bump
130
+ echo "${BLUE}โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”${NC}"
131
+ echo ""
132
+ echo "${BOLD}๐Ÿ“Š Step 4: Version Analysis${NC}"
133
+ echo ""
134
+
135
+ # Get last tag
136
+ LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
137
+ if [ -z "$LAST_TAG" ]; then
138
+ echo "No previous tags found. This will be the first release."
139
+ LAST_TAG="HEAD~999" # Get all commits
140
+ COMMIT_COUNT=$(git rev-list HEAD --count)
141
+ else
142
+ echo "Last release: ${LAST_TAG}"
143
+ COMMIT_COUNT=$(git rev-list ${LAST_TAG}..HEAD --count)
144
+ fi
145
+
146
+ echo "Commits since last release: ${COMMIT_COUNT}"
147
+ echo ""
148
+
149
+ if [ "$COMMIT_COUNT" -eq 0 ]; then
150
+ echo "${RED}โŒ No commits since last release${NC}"
151
+ echo "Nothing to publish."
152
+ exit 1
153
+ fi
154
+
155
+ # Analyze commits
156
+ echo "Commit analysis:"
157
+ HAS_BREAKING=false
158
+ HAS_FEAT=false
159
+ HAS_FIX=false
160
+
161
+ while IFS= read -r commit; do
162
+ echo " - $commit"
163
+
164
+ # Check for breaking changes
165
+ if echo "$commit" | grep -qiE "(BREAKING CHANGE|feat!:|fix!:)"; then
166
+ HAS_BREAKING=true
167
+ fi
168
+
169
+ # Check for features
170
+ if echo "$commit" | grep -qE "^feat(\(|:)"; then
171
+ HAS_FEAT=true
172
+ fi
173
+
174
+ # Check for fixes
175
+ if echo "$commit" | grep -qE "^fix(\(|:)"; then
176
+ HAS_FIX=true
177
+ fi
178
+ done < <(git log ${LAST_TAG}..HEAD --oneline)
179
+
180
+ echo ""
181
+
182
+ # Determine version bump
183
+ IFS='.' read -r MAJOR MINOR PATCH <<< "$CURRENT_VERSION"
184
+
185
+ if [ "$HAS_BREAKING" = true ]; then
186
+ NEW_MAJOR=$((MAJOR + 1))
187
+ NEW_MINOR=0
188
+ NEW_PATCH=0
189
+ BUMP_TYPE="major"
190
+ BUMP_REASON="Breaking changes detected"
191
+ elif [ "$HAS_FEAT" = true ]; then
192
+ NEW_MAJOR=$MAJOR
193
+ NEW_MINOR=$((MINOR + 1))
194
+ NEW_PATCH=0
195
+ BUMP_TYPE="minor"
196
+ BUMP_REASON="New features added"
197
+ else
198
+ NEW_MAJOR=$MAJOR
199
+ NEW_MINOR=$MINOR
200
+ NEW_PATCH=$((PATCH + 1))
201
+ BUMP_TYPE="patch"
202
+ BUMP_REASON="Bug fixes or improvements"
203
+ fi
204
+
205
+ NEW_VERSION="${NEW_MAJOR}.${NEW_MINOR}.${NEW_PATCH}"
206
+
207
+ echo "Recommendation: ${BOLD}${NEW_VERSION}${NC} (${BUMP_TYPE})"
208
+ echo "Reason: ${BUMP_REASON}"
209
+ echo ""
210
+
211
+ # Step 5: Confirm version
212
+ echo "${BLUE}โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”${NC}"
213
+ echo ""
214
+ echo "${BOLD}โ“ Step 5: Confirm Version${NC}"
215
+ echo ""
216
+ echo "Publish as version ${BOLD}${NEW_VERSION}${NC}? (Y/n/custom)"
217
+ read -r response
218
+
219
+ case "$response" in
220
+ n|N|no|No|NO)
221
+ echo "Publishing cancelled."
222
+ exit 0
223
+ ;;
224
+ custom|c|C)
225
+ echo "Enter custom version (X.Y.Z format):"
226
+ read -r NEW_VERSION
227
+ if ! echo "$NEW_VERSION" | grep -qE "^[0-9]+\.[0-9]+\.[0-9]+$"; then
228
+ echo "${RED}Error: Invalid version format${NC}"
229
+ exit 1
230
+ fi
231
+ ;;
232
+ *)
233
+ # Use recommended version
234
+ ;;
235
+ esac
236
+
237
+ echo ""
238
+ echo "${GREEN}โœ“${NC} Publishing version: ${BOLD}${NEW_VERSION}${NC}"
239
+ echo ""
240
+
241
+ # Step 6: Generate CHANGELOG (LLM-based - placeholder for now)
242
+ echo "${BLUE}โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”${NC}"
243
+ echo ""
244
+ echo "${BOLD}๐Ÿ“ Step 6: CHANGELOG Generation${NC}"
245
+ echo ""
246
+ echo "${YELLOW}Note: CHANGELOG generation requires LLM context.${NC}"
247
+ echo "When run via agent, CHANGELOG will be generated automatically."
248
+ echo "For now, please update CHANGELOG.md manually."
249
+ echo ""
250
+ echo "Press Enter to continue after updating CHANGELOG.md..."
251
+ read -r
252
+
253
+ # Step 7: Update version files
254
+ echo "${BLUE}โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”${NC}"
255
+ echo ""
256
+ echo "${BOLD}โœ๏ธ Step 7: Updating Version Files${NC}"
257
+ echo ""
258
+
259
+ # Update package.yaml version
260
+ if command -v sed >/dev/null 2>&1; then
261
+ sed -i.bak "s/^version: .*/version: ${NEW_VERSION}/" package.yaml && rm package.yaml.bak
262
+ echo "${GREEN}โœ“${NC} Updated package.yaml (${CURRENT_VERSION} โ†’ ${NEW_VERSION})"
263
+ else
264
+ echo "${YELLOW}โš ๏ธ Please update package.yaml version manually to ${NEW_VERSION}${NC}"
265
+ fi
266
+
267
+ echo ""
268
+
269
+ # Step 8: Commit changes
270
+ echo "${BLUE}โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”${NC}"
271
+ echo ""
272
+ echo "${BOLD}๐Ÿ’พ Step 8: Committing Changes${NC}"
273
+ echo ""
274
+
275
+ git add package.yaml CHANGELOG.md
276
+ COMMIT_MSG="chore(release): bump version to ${NEW_VERSION}
277
+
278
+ Updated package.yaml and CHANGELOG.md for release.
279
+
280
+ Version: ${NEW_VERSION}"
281
+
282
+ git commit -m "$COMMIT_MSG"
283
+ COMMIT_HASH=$(git rev-parse --short HEAD)
284
+
285
+ echo "${GREEN}โœ“${NC} Committed: chore(release): bump version to ${NEW_VERSION}"
286
+ echo "${GREEN}โœ“${NC} Commit hash: ${COMMIT_HASH}"
287
+ echo ""
288
+
289
+ # Step 9: Create git tag
290
+ echo "${BLUE}โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”${NC}"
291
+ echo ""
292
+ echo "${BOLD}๐Ÿท๏ธ Step 9: Creating Git Tag${NC}"
293
+ echo ""
294
+
295
+ TAG_NAME="v${NEW_VERSION}"
296
+ TAG_MSG="Release v${NEW_VERSION}"
297
+
298
+ if git tag -a "$TAG_NAME" -m "$TAG_MSG"; then
299
+ echo "${GREEN}โœ“${NC} Created tag: ${TAG_NAME}"
300
+ echo "${GREEN}โœ“${NC} Tag message: ${TAG_MSG}"
301
+ else
302
+ echo "${RED}โŒ Failed to create tag${NC}"
303
+ echo "Tag may already exist. Delete it first if needed:"
304
+ echo " git tag -d ${TAG_NAME}"
305
+ exit 1
306
+ fi
307
+
308
+ echo ""
309
+
310
+ # Step 10: Push to remote
311
+ echo "${BLUE}โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”${NC}"
312
+ echo ""
313
+ echo "${BOLD}๐Ÿš€ Step 10: Pushing to Remote${NC}"
314
+ echo ""
315
+
316
+ echo "Pushing commits to origin/${CURRENT_BRANCH}..."
317
+ if git push origin "$CURRENT_BRANCH"; then
318
+ echo "${GREEN}โœ“${NC} Pushed commits to origin/${CURRENT_BRANCH}"
319
+ else
320
+ echo "${RED}โŒ Failed to push commits${NC}"
321
+ exit 1
322
+ fi
323
+
324
+ echo "Pushing tag ${TAG_NAME}..."
325
+ if git push origin "$TAG_NAME"; then
326
+ echo "${GREEN}โœ“${NC} Pushed tag ${TAG_NAME}"
327
+ else
328
+ echo "${RED}โŒ Failed to push tag${NC}"
329
+ exit 1
330
+ fi
331
+
332
+ if [ -n "$REPO_URL" ]; then
333
+ echo "Remote: ${REPO_URL}"
334
+ fi
335
+
336
+ echo ""
337
+
338
+ # Step 11: Wait for GitHub
339
+ echo "${BLUE}โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”${NC}"
340
+ echo ""
341
+ echo "${BOLD}โณ Step 11: Waiting for GitHub${NC}"
342
+ echo ""
343
+ echo "Waiting for GitHub to process push... (10 seconds)"
344
+ sleep 10
345
+ echo "${GREEN}โœ“${NC} Ready to test"
346
+ echo ""
347
+
348
+ # Step 12: Test installation from remote
349
+ echo "${BLUE}โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”${NC}"
350
+ echo ""
351
+ echo "${BOLD}๐Ÿงช Step 12: Test Installation${NC}"
352
+ echo ""
353
+
354
+ TEST_DIR="/tmp/acp-publish-test-$(date +%s)"
355
+ echo "Creating test directory: ${TEST_DIR}"
356
+ mkdir -p "$TEST_DIR/agent/"{patterns,commands,design}
357
+
358
+ # Create minimal manifest
359
+ cat > "$TEST_DIR/agent/manifest.yaml" << 'EOF'
360
+ packages: {}
361
+ manifest_version: 1.0.0
362
+ last_updated: null
363
+ EOF
364
+
365
+ echo "${GREEN}โœ“${NC} Test directory created"
366
+ echo ""
367
+
368
+ # Get current directory for install script
369
+ CURRENT_DIR=$(pwd)
370
+
371
+ # Try to install from remote
372
+ echo "Installing from remote: ${REPO_URL}"
373
+ cd "$TEST_DIR"
374
+
375
+ if "${CURRENT_DIR}/agent/scripts/acp.package-install.sh" "$REPO_URL" --yes >/dev/null 2>&1; then
376
+ echo "${GREEN}โœ“${NC} Package installed successfully"
377
+
378
+ # Verify installation
379
+ INSTALLED_FILES=$(find agent/ -name "*.md" -not -name "*.template.md" 2>/dev/null | wc -l)
380
+ echo "${GREEN}โœ“${NC} Verified ${INSTALLED_FILES} file(s) copied"
381
+
382
+ # Check manifest
383
+ if grep -q "$PACKAGE_NAME:" agent/manifest.yaml 2>/dev/null; then
384
+ echo "${GREEN}โœ“${NC} Manifest updated correctly"
385
+ fi
386
+ else
387
+ echo "${RED}โŒ Package installation failed${NC}"
388
+ echo ""
389
+ echo "${YELLOW}This may indicate issues with the published package.${NC}"
390
+ echo "Check repository and try installing manually."
391
+ fi
392
+
393
+ # Cleanup
394
+ cd "$CURRENT_DIR"
395
+ rm -rf "$TEST_DIR"
396
+ echo "${GREEN}โœ“${NC} Test directory cleaned up"
397
+ echo ""
398
+
399
+ # Step 13: Final report
400
+ echo "${BLUE}โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”${NC}"
401
+ echo ""
402
+ echo "${GREEN}${BOLD}โœ… Publishing Complete!${NC}"
403
+ echo ""
404
+ echo "๐Ÿ“ฆ Package: ${BOLD}${PACKAGE_NAME} v${NEW_VERSION}${NC}"
405
+ echo "๐ŸŒ Repository: ${REPO_URL}"
406
+ echo "๐Ÿท๏ธ Tag: ${TAG_NAME}"
407
+ echo "โœ… Test Installation: PASSED"
408
+ echo ""
409
+ echo "${BLUE}โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”${NC}"
410
+ echo ""
411
+ echo "${GREEN}${BOLD}๐ŸŽ‰ Your package is now live!${NC}"
412
+ echo ""
413
+ echo "Users can install it with:"
414
+ echo " ${BOLD}@acp.package-install ${REPO_URL}${NC}"
415
+ echo ""
416
+ echo "Next steps:"
417
+ echo " - Announce release to users"
418
+ echo " - Monitor for issues"
419
+ echo " - Update documentation if needed"
420
+ echo ""