@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,288 @@
1
+ #!/bin/bash
2
+
3
+ # Agent Context Protocol (ACP) Package Info Script
4
+ # Shows detailed information about an installed package
5
+
6
+ set -e
7
+
8
+ # Source common utilities
9
+ SCRIPT_DIR="$(dirname "$0")"
10
+ . "${SCRIPT_DIR}/acp.common.sh"
11
+
12
+ # Initialize colors
13
+ init_colors
14
+
15
+ # Parse arguments
16
+ GLOBAL_MODE=false
17
+ PACKAGE_NAME=""
18
+
19
+ while [[ $# -gt 0 ]]; do
20
+ case $1 in
21
+ --global|-g)
22
+ GLOBAL_MODE=true
23
+ shift
24
+ ;;
25
+ *)
26
+ PACKAGE_NAME="$1"
27
+ shift
28
+ ;;
29
+ esac
30
+ done
31
+
32
+ if [ -z "$PACKAGE_NAME" ]; then
33
+ echo "${RED}Error: Package name required${NC}"
34
+ echo "Usage: $0 [--global] <package-name>"
35
+ echo ""
36
+ echo "Example: $0 firebase"
37
+ echo "Example: $0 --global firebase"
38
+ echo ""
39
+ echo "To see installed packages: ./agent/scripts/acp.package-list.sh [--global]"
40
+ exit 1
41
+ fi
42
+
43
+ # Determine manifest file based on mode
44
+ if [ "$GLOBAL_MODE" = true ]; then
45
+ MANIFEST_FILE="$HOME/.acp/manifest.yaml"
46
+ echo "${BLUE}📦 Global Package Information:${NC}"
47
+ else
48
+ MANIFEST_FILE="./agent/manifest.yaml"
49
+ echo "${BLUE}📦 Package Information:${NC}"
50
+ fi
51
+ echo ""
52
+
53
+ # Check if manifest exists
54
+ if [ ! -f "$MANIFEST_FILE" ]; then
55
+ if [ "$GLOBAL_MODE" = true ]; then
56
+ die "No global manifest found. No global packages installed."
57
+ else
58
+ die "No manifest found. No packages installed."
59
+ fi
60
+ fi
61
+
62
+ # Source YAML parser
63
+ source_yaml_parser
64
+
65
+ # Check if package is installed
66
+ if ! package_exists "$PACKAGE_NAME" "$MANIFEST_FILE"; then
67
+ die "Package not installed: $PACKAGE_NAME"
68
+ fi
69
+
70
+ # Get package metadata
71
+ version=$(awk -v pkg="$PACKAGE_NAME" '
72
+ $0 ~ "^ " pkg ":" { in_pkg=1; next }
73
+ in_pkg && /^ [a-z]/ { in_pkg=0 }
74
+ in_pkg && /^ package_version:/ { print $2; exit }
75
+ ' "$MANIFEST_FILE")
76
+
77
+ source_url=$(awk -v pkg="$PACKAGE_NAME" '
78
+ $0 ~ "^ " pkg ":" { in_pkg=1; next }
79
+ in_pkg && /^ [a-z]/ { in_pkg=0 }
80
+ in_pkg && /^ source:/ { print $2; exit }
81
+ ' "$MANIFEST_FILE")
82
+
83
+ commit_hash=$(awk -v pkg="$PACKAGE_NAME" '
84
+ $0 ~ "^ " pkg ":" { in_pkg=1; next }
85
+ in_pkg && /^ [a-z]/ { in_pkg=0 }
86
+ in_pkg && /^ commit:/ { print $2; exit }
87
+ ' "$MANIFEST_FILE")
88
+
89
+ installed_at=$(awk -v pkg="$PACKAGE_NAME" '
90
+ $0 ~ "^ " pkg ":" { in_pkg=1; next }
91
+ in_pkg && /^ [a-z]/ { in_pkg=0 }
92
+ in_pkg && /^ installed_at:/ { print $2; exit }
93
+ ' "$MANIFEST_FILE")
94
+
95
+ updated_at=$(awk -v pkg="$PACKAGE_NAME" '
96
+ $0 ~ "^ " pkg ":" { in_pkg=1; next }
97
+ in_pkg && /^ [a-z]/ { in_pkg=0 }
98
+ in_pkg && /^ updated_at:/ { print $2; exit }
99
+ ' "$MANIFEST_FILE")
100
+
101
+ # Get location for global packages
102
+ location=""
103
+ if [ "$GLOBAL_MODE" = true ]; then
104
+ location=$(awk -v pkg="$PACKAGE_NAME" '
105
+ $0 ~ "^ " pkg ":" { in_pkg=1; next }
106
+ in_pkg && /^ [a-z]/ { in_pkg=0 }
107
+ in_pkg && /^ location:/ { print $2; exit }
108
+ ' "$MANIFEST_FILE")
109
+ fi
110
+
111
+ # Display header
112
+ echo "${BLUE}📦 $PACKAGE_NAME${NC} (${GREEN}$version${NC})"
113
+ echo ""
114
+ if [ "$GLOBAL_MODE" = true ] && [ -n "$location" ]; then
115
+ echo "${BLUE}Location:${NC} $location"
116
+ fi
117
+ echo "${BLUE}Source:${NC} $source_url"
118
+ echo "${BLUE}Commit:${NC} $commit_hash"
119
+ echo "${BLUE}Installed:${NC} $installed_at"
120
+ if [ "$installed_at" != "$updated_at" ]; then
121
+ echo "${BLUE}Updated:${NC} $updated_at"
122
+ fi
123
+ echo ""
124
+
125
+ # Get installed files by type
126
+ patterns_files=$(awk -v pkg="$PACKAGE_NAME" '
127
+ BEGIN { in_pkg=0; in_patterns=0 }
128
+ $0 ~ "^ " pkg ":" { in_pkg=1; next }
129
+ in_pkg && /^ [a-z]/ { in_pkg=0 }
130
+ in_pkg && /^ patterns:/ { in_patterns=1; next }
131
+ in_patterns && /^ [a-z]/ { in_patterns=0 }
132
+ in_patterns && /^ - name:/ { print $3 }
133
+ ' "$MANIFEST_FILE")
134
+
135
+ commands_files=$(awk -v pkg="$PACKAGE_NAME" '
136
+ BEGIN { in_pkg=0; in_commands=0 }
137
+ $0 ~ "^ " pkg ":" { in_pkg=1; next }
138
+ in_pkg && /^ [a-z]/ { in_pkg=0 }
139
+ in_pkg && /^ commands:/ { in_commands=1; next }
140
+ in_commands && /^ [a-z]/ { in_commands=0 }
141
+ in_commands && /^ - name:/ { print $3 }
142
+ ' "$MANIFEST_FILE")
143
+
144
+ designs_files=$(awk -v pkg="$PACKAGE_NAME" '
145
+ BEGIN { in_pkg=0; in_designs=0 }
146
+ $0 ~ "^ " pkg ":" { in_pkg=1; next }
147
+ in_pkg && /^ [a-z]/ { in_pkg=0 }
148
+ in_pkg && /^ designs:/ { in_designs=1; next }
149
+ in_designs && /^ [a-z]/ { in_designs=0 }
150
+ in_designs && /^ - name:/ { print $3 }
151
+ ' "$MANIFEST_FILE")
152
+
153
+ indices_files=$(awk -v pkg="$PACKAGE_NAME" '
154
+ BEGIN { in_pkg=0; in_indices=0 }
155
+ $0 ~ "^ " pkg ":" { in_pkg=1; next }
156
+ in_pkg && /^ [a-z]/ { in_pkg=0 }
157
+ in_pkg && /^ indices:/ { in_indices=1; next }
158
+ in_indices && /^ [a-z]/ { in_indices=0 }
159
+ in_indices && /^ - name:/ { print $3 }
160
+ ' "$MANIFEST_FILE")
161
+
162
+ # Count files
163
+ patterns_count=$(echo "$patterns_files" | grep -c . || echo 0)
164
+ commands_count=$(echo "$commands_files" | grep -c . || echo 0)
165
+ designs_count=$(echo "$designs_files" | grep -c . || echo 0)
166
+ indices_count=$(echo "$indices_files" | grep -c . || echo 0)
167
+ total_files=$((patterns_count + commands_count + designs_count + indices_count))
168
+
169
+ echo "${BLUE}Contents:${NC}"
170
+ echo ""
171
+
172
+ # Display patterns
173
+ if [ "$patterns_count" -gt 0 ]; then
174
+ echo " ${GREEN}Patterns ($patterns_count):${NC}"
175
+ for file in $patterns_files; do
176
+ file_version=$(awk -v pkg="$PACKAGE_NAME" -v name="$file" '
177
+ BEGIN { in_pkg=0; in_patterns=0; in_file=0 }
178
+ $0 ~ "^ " pkg ":" { in_pkg=1; next }
179
+ in_pkg && /^ [a-z]/ { in_pkg=0 }
180
+ in_pkg && /^ patterns:/ { in_patterns=1; next }
181
+ in_patterns && /^ [a-z]/ { in_patterns=0 }
182
+ in_patterns && /^ - name:/ {
183
+ if ($3 == name) { in_file=1 }
184
+ else { in_file=0 }
185
+ next
186
+ }
187
+ in_file && /^ version:/ { print $2; exit }
188
+ ' "$MANIFEST_FILE")
189
+
190
+ # Check if modified
191
+ if is_file_modified "$PACKAGE_NAME" "patterns" "$file"; then
192
+ echo " - $file (v$file_version) ${YELLOW}[MODIFIED]${NC}"
193
+ else
194
+ echo " - $file (v$file_version)"
195
+ fi
196
+ done
197
+ echo ""
198
+ fi
199
+
200
+ # Display commands
201
+ if [ "$commands_count" -gt 0 ]; then
202
+ echo " ${GREEN}Commands ($commands_count):${NC}"
203
+ for file in $commands_files; do
204
+ file_version=$(awk -v pkg="$PACKAGE_NAME" -v name="$file" '
205
+ BEGIN { in_pkg=0; in_commands=0; in_file=0 }
206
+ $0 ~ "^ " pkg ":" { in_pkg=1; next }
207
+ in_pkg && /^ [a-z]/ { in_pkg=0 }
208
+ in_pkg && /^ commands:/ { in_commands=1; next }
209
+ in_commands && /^ [a-z]/ { in_commands=0 }
210
+ in_commands && /^ - name:/ {
211
+ if ($3 == name) { in_file=1 }
212
+ else { in_file=0 }
213
+ next
214
+ }
215
+ in_file && /^ version:/ { print $2; exit }
216
+ ' "$MANIFEST_FILE")
217
+
218
+ # Check if modified
219
+ if is_file_modified "$PACKAGE_NAME" "commands" "$file"; then
220
+ echo " - $file (v$file_version) ${YELLOW}[MODIFIED]${NC}"
221
+ else
222
+ echo " - $file (v$file_version)"
223
+ fi
224
+ done
225
+ echo ""
226
+ fi
227
+
228
+ # Display designs
229
+ if [ "$designs_count" -gt 0 ]; then
230
+ echo " ${GREEN}Designs ($designs_count):${NC}"
231
+ for file in $designs_files; do
232
+ file_version=$(awk -v pkg="$PACKAGE_NAME" -v name="$file" '
233
+ BEGIN { in_pkg=0; in_designs=0; in_file=0 }
234
+ $0 ~ "^ " pkg ":" { in_pkg=1; next }
235
+ in_pkg && /^ [a-z]/ { in_pkg=0 }
236
+ in_pkg && /^ designs:/ { in_designs=1; next }
237
+ in_designs && /^ [a-z]/ { in_designs=0 }
238
+ in_designs && /^ - name:/ {
239
+ if ($3 == name) { in_file=1 }
240
+ else { in_file=0 }
241
+ next
242
+ }
243
+ in_file && /^ version:/ { print $2; exit }
244
+ ' "$MANIFEST_FILE")
245
+
246
+ # Check if modified
247
+ if is_file_modified "$PACKAGE_NAME" "design" "$file"; then
248
+ echo " - $file (v$file_version) ${YELLOW}[MODIFIED]${NC}"
249
+ else
250
+ echo " - $file (v$file_version)"
251
+ fi
252
+ done
253
+ echo ""
254
+ fi
255
+
256
+ if [ "$indices_count" -gt 0 ]; then
257
+ echo " ${GREEN}Indices ($indices_count):${NC}"
258
+ for file in $indices_files; do
259
+ echo " - $file (agent/index/$file)"
260
+ done
261
+ echo ""
262
+ fi
263
+
264
+ # Count modified files
265
+ modified_count=0
266
+ for file in $patterns_files; do
267
+ if is_file_modified "$PACKAGE_NAME" "patterns" "$file"; then
268
+ ((modified_count++))
269
+ fi
270
+ done
271
+ for file in $commands_files; do
272
+ if is_file_modified "$PACKAGE_NAME" "commands" "$file"; then
273
+ ((modified_count++))
274
+ fi
275
+ done
276
+ for file in $designs_files; do
277
+ if is_file_modified "$PACKAGE_NAME" "design" "$file"; then
278
+ ((modified_count++))
279
+ fi
280
+ done
281
+
282
+ if [ $modified_count -gt 0 ]; then
283
+ echo "${YELLOW}Modified Files: $modified_count${NC}"
284
+ echo ""
285
+ fi
286
+
287
+ echo "Total Files: $total_files"
288
+ echo ""