@prmichaelsen/acp-visualizer 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/package.json +8 -10
  2. package/src/components/ExtraFieldsBadge.tsx +1 -1
  3. package/src/components/FilterBar.tsx +1 -1
  4. package/src/components/Header.tsx +1 -1
  5. package/src/components/MilestoneTable.tsx +1 -1
  6. package/src/components/MilestoneTree.tsx +2 -2
  7. package/src/components/StatusBadge.tsx +1 -1
  8. package/src/components/StatusDot.tsx +1 -1
  9. package/src/components/TaskList.tsx +1 -1
  10. package/src/routes/__root.tsx +5 -5
  11. package/src/routes/api/watch.ts +1 -1
  12. package/src/routes/index.tsx +2 -2
  13. package/src/routes/milestones.tsx +7 -7
  14. package/src/routes/search.tsx +4 -4
  15. package/src/routes/tasks.tsx +3 -3
  16. package/src/services/progress-database.service.ts +3 -3
  17. package/agent/commands/acp.clarification-address.md +0 -417
  18. package/agent/commands/acp.clarification-capture.md +0 -386
  19. package/agent/commands/acp.clarification-create.md +0 -437
  20. package/agent/commands/acp.clarifications-research.md +0 -326
  21. package/agent/commands/acp.command-create.md +0 -432
  22. package/agent/commands/acp.design-create.md +0 -286
  23. package/agent/commands/acp.design-reference.md +0 -355
  24. package/agent/commands/acp.handoff.md +0 -270
  25. package/agent/commands/acp.index.md +0 -423
  26. package/agent/commands/acp.init.md +0 -546
  27. package/agent/commands/acp.package-create.md +0 -895
  28. package/agent/commands/acp.package-info.md +0 -212
  29. package/agent/commands/acp.package-install.md +0 -539
  30. package/agent/commands/acp.package-list.md +0 -280
  31. package/agent/commands/acp.package-publish.md +0 -541
  32. package/agent/commands/acp.package-remove.md +0 -293
  33. package/agent/commands/acp.package-search.md +0 -307
  34. package/agent/commands/acp.package-update.md +0 -361
  35. package/agent/commands/acp.package-validate.md +0 -540
  36. package/agent/commands/acp.pattern-create.md +0 -386
  37. package/agent/commands/acp.plan.md +0 -587
  38. package/agent/commands/acp.proceed.md +0 -882
  39. package/agent/commands/acp.project-create.md +0 -675
  40. package/agent/commands/acp.project-info.md +0 -312
  41. package/agent/commands/acp.project-list.md +0 -226
  42. package/agent/commands/acp.project-remove.md +0 -379
  43. package/agent/commands/acp.project-set.md +0 -227
  44. package/agent/commands/acp.project-update.md +0 -307
  45. package/agent/commands/acp.projects-restore.md +0 -228
  46. package/agent/commands/acp.projects-sync.md +0 -347
  47. package/agent/commands/acp.report.md +0 -407
  48. package/agent/commands/acp.resume.md +0 -239
  49. package/agent/commands/acp.sessions.md +0 -301
  50. package/agent/commands/acp.status.md +0 -293
  51. package/agent/commands/acp.sync.md +0 -364
  52. package/agent/commands/acp.task-create.md +0 -500
  53. package/agent/commands/acp.update.md +0 -302
  54. package/agent/commands/acp.validate.md +0 -466
  55. package/agent/commands/acp.version-check-for-updates.md +0 -276
  56. package/agent/commands/acp.version-check.md +0 -191
  57. package/agent/commands/acp.version-update.md +0 -289
  58. package/agent/commands/command.template.md +0 -339
  59. package/agent/commands/git.commit.md +0 -526
  60. package/agent/commands/git.init.md +0 -514
  61. package/agent/commands/tanstack-cloudflare.deploy.md +0 -272
  62. package/agent/commands/tanstack-cloudflare.tail.md +0 -275
  63. package/agent/design/.gitkeep +0 -0
  64. package/agent/design/design.template.md +0 -154
  65. package/agent/design/local.dashboard-layout-routing.md +0 -288
  66. package/agent/design/local.data-model-yaml-parsing.md +0 -310
  67. package/agent/design/local.search-filtering.md +0 -331
  68. package/agent/design/local.server-api-auto-refresh.md +0 -235
  69. package/agent/design/local.table-tree-views.md +0 -299
  70. package/agent/design/local.visualizer-requirements.md +0 -349
  71. package/agent/design/requirements.template.md +0 -387
  72. package/agent/index/.gitkeep +0 -0
  73. package/agent/index/acp.core.yaml +0 -137
  74. package/agent/index/local.main.template.yaml +0 -37
  75. package/agent/manifest.template.yaml +0 -13
  76. package/agent/manifest.yaml +0 -302
  77. package/agent/milestones/.gitkeep +0 -0
  78. package/agent/milestones/milestone-1-project-scaffold-data-pipeline.md +0 -67
  79. package/agent/milestones/milestone-1-{title}.template.md +0 -206
  80. package/agent/milestones/milestone-2-dashboard-views-interaction.md +0 -79
  81. package/agent/package.template.yaml +0 -86
  82. package/agent/patterns/.gitkeep +0 -0
  83. package/agent/patterns/bootstrap.template.md +0 -1237
  84. package/agent/patterns/pattern.template.md +0 -382
  85. package/agent/patterns/tanstack-cloudflare.acl-permissions.md +0 -332
  86. package/agent/patterns/tanstack-cloudflare.action-bar-item.md +0 -416
  87. package/agent/patterns/tanstack-cloudflare.api-route-handlers.md +0 -401
  88. package/agent/patterns/tanstack-cloudflare.auth-session-management.md +0 -387
  89. package/agent/patterns/tanstack-cloudflare.card-and-list.md +0 -271
  90. package/agent/patterns/tanstack-cloudflare.chat-engine.md +0 -353
  91. package/agent/patterns/tanstack-cloudflare.confirmation-tokens.md +0 -346
  92. package/agent/patterns/tanstack-cloudflare.durable-objects-websocket.md +0 -516
  93. package/agent/patterns/tanstack-cloudflare.email-service.md +0 -431
  94. package/agent/patterns/tanstack-cloudflare.expander.md +0 -98
  95. package/agent/patterns/tanstack-cloudflare.fcm-push.md +0 -115
  96. package/agent/patterns/tanstack-cloudflare.firebase-anonymous-sessions.md +0 -441
  97. package/agent/patterns/tanstack-cloudflare.firebase-auth.md +0 -348
  98. package/agent/patterns/tanstack-cloudflare.firebase-firestore.md +0 -550
  99. package/agent/patterns/tanstack-cloudflare.firebase-storage.md +0 -369
  100. package/agent/patterns/tanstack-cloudflare.form-controls.md +0 -145
  101. package/agent/patterns/tanstack-cloudflare.global-search-context.md +0 -93
  102. package/agent/patterns/tanstack-cloudflare.image-carousel.md +0 -126
  103. package/agent/patterns/tanstack-cloudflare.library-services.md +0 -553
  104. package/agent/patterns/tanstack-cloudflare.lightbox.md +0 -169
  105. package/agent/patterns/tanstack-cloudflare.markdown-content.md +0 -115
  106. package/agent/patterns/tanstack-cloudflare.mention-suggestions.md +0 -98
  107. package/agent/patterns/tanstack-cloudflare.modal.md +0 -156
  108. package/agent/patterns/tanstack-cloudflare.nextjs-to-tanstack-routing.md +0 -461
  109. package/agent/patterns/tanstack-cloudflare.notifications-engine.md +0 -151
  110. package/agent/patterns/tanstack-cloudflare.oauth-token-refresh.md +0 -90
  111. package/agent/patterns/tanstack-cloudflare.og-metadata.md +0 -296
  112. package/agent/patterns/tanstack-cloudflare.pagination.md +0 -442
  113. package/agent/patterns/tanstack-cloudflare.pill-input.md +0 -220
  114. package/agent/patterns/tanstack-cloudflare.provider-adapter.md +0 -401
  115. package/agent/patterns/tanstack-cloudflare.rate-limiting.md +0 -323
  116. package/agent/patterns/tanstack-cloudflare.scheduled-tasks.md +0 -338
  117. package/agent/patterns/tanstack-cloudflare.searchable-settings.md +0 -375
  118. package/agent/patterns/tanstack-cloudflare.slide-over.md +0 -129
  119. package/agent/patterns/tanstack-cloudflare.ssr-preload.md +0 -571
  120. package/agent/patterns/tanstack-cloudflare.third-party-api-integration.md +0 -508
  121. package/agent/patterns/tanstack-cloudflare.toast-system.md +0 -142
  122. package/agent/patterns/tanstack-cloudflare.unified-header.md +0 -280
  123. package/agent/patterns/tanstack-cloudflare.user-scoped-collections.md +0 -628
  124. package/agent/patterns/tanstack-cloudflare.websocket-manager.md +0 -237
  125. package/agent/patterns/tanstack-cloudflare.wrangler-configuration.md +0 -358
  126. package/agent/patterns/tanstack-cloudflare.zod-schema-validation.md +0 -336
  127. package/agent/progress.template.yaml +0 -161
  128. package/agent/progress.yaml +0 -145
  129. package/agent/schemas/package.schema.yaml +0 -276
  130. package/agent/scripts/acp.common.sh +0 -1781
  131. package/agent/scripts/acp.install.sh +0 -333
  132. package/agent/scripts/acp.package-create.sh +0 -924
  133. package/agent/scripts/acp.package-info.sh +0 -288
  134. package/agent/scripts/acp.package-install.sh +0 -893
  135. package/agent/scripts/acp.package-list.sh +0 -311
  136. package/agent/scripts/acp.package-publish.sh +0 -420
  137. package/agent/scripts/acp.package-remove.sh +0 -348
  138. package/agent/scripts/acp.package-search.sh +0 -156
  139. package/agent/scripts/acp.package-update.sh +0 -517
  140. package/agent/scripts/acp.package-validate.sh +0 -1018
  141. package/agent/scripts/acp.uninstall.sh +0 -85
  142. package/agent/scripts/acp.version-check-for-updates.sh +0 -98
  143. package/agent/scripts/acp.version-check.sh +0 -47
  144. package/agent/scripts/acp.version-update.sh +0 -176
  145. package/agent/scripts/acp.yaml-parser.sh +0 -985
  146. package/agent/scripts/acp.yaml-validate.sh +0 -205
  147. package/agent/tasks/.gitkeep +0 -0
  148. package/agent/tasks/milestone-1-project-scaffold-data-pipeline/task-1-initialize-tanstack-start-project.md +0 -210
  149. package/agent/tasks/milestone-1-project-scaffold-data-pipeline/task-2-implement-data-model-yaml-parser.md +0 -294
  150. package/agent/tasks/milestone-1-project-scaffold-data-pipeline/task-3-build-server-api-data-loading.md +0 -193
  151. package/agent/tasks/milestone-1-project-scaffold-data-pipeline/task-4-add-auto-refresh-sse.md +0 -262
  152. package/agent/tasks/milestone-2-dashboard-views-interaction/task-10-polish-integration-testing.md +0 -156
  153. package/agent/tasks/milestone-2-dashboard-views-interaction/task-5-build-dashboard-layout-routing.md +0 -178
  154. package/agent/tasks/milestone-2-dashboard-views-interaction/task-6-build-overview-page.md +0 -141
  155. package/agent/tasks/milestone-2-dashboard-views-interaction/task-7-implement-milestone-table-view.md +0 -153
  156. package/agent/tasks/milestone-2-dashboard-views-interaction/task-8-implement-milestone-tree-view.md +0 -174
  157. package/agent/tasks/milestone-2-dashboard-views-interaction/task-9-implement-search-filtering.md +0 -233
  158. package/agent/tasks/task-1-{title}.template.md +0 -244
  159. package/vitest.config.ts +0 -27
@@ -1,311 +0,0 @@
1
- #!/bin/bash
2
-
3
- # Agent Context Protocol (ACP) Package List Script
4
- # Lists installed ACP packages with their versions and details
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
- VERBOSE=false
17
- OUTDATED=false
18
- MODIFIED=false
19
- GLOBAL_MODE=false
20
-
21
- while [[ $# -gt 0 ]]; do
22
- case $1 in
23
- --global|-g)
24
- GLOBAL_MODE=true
25
- shift
26
- ;;
27
- -v|--verbose)
28
- VERBOSE=true
29
- shift
30
- ;;
31
- --outdated)
32
- OUTDATED=true
33
- shift
34
- ;;
35
- --modified)
36
- MODIFIED=true
37
- shift
38
- ;;
39
- *)
40
- shift
41
- ;;
42
- esac
43
- done
44
-
45
- # Determine manifest file based on mode
46
- if [ "$GLOBAL_MODE" = true ]; then
47
- # Initialize global ACP infrastructure if needed
48
- init_global_acp || {
49
- echo "${RED}Error: Failed to initialize global infrastructure${NC}" >&2
50
- exit 1
51
- }
52
-
53
- MANIFEST_FILE="$HOME/.acp/agent/manifest.yaml"
54
- echo "${BLUE}📦 Global Packages (installed to ~/.acp/agent/):${NC}"
55
- else
56
- MANIFEST_FILE="./agent/manifest.yaml"
57
- echo "${BLUE}📦 Installed ACP Packages${NC}"
58
- fi
59
- echo ""
60
-
61
- # Check if manifest exists
62
- if [ ! -f "$MANIFEST_FILE" ]; then
63
- if [ "$GLOBAL_MODE" = true ]; then
64
- echo "${YELLOW}No global packages installed${NC}"
65
- echo ""
66
- echo "To install a package globally:"
67
- echo " ./agent/scripts/acp.package-install.sh --global <repository-url>"
68
- else
69
- echo "${YELLOW}No packages installed${NC}"
70
- echo ""
71
- echo "To install a package:"
72
- echo " ./agent/scripts/acp.package-install.sh <repository-url>"
73
- fi
74
- exit 0
75
- fi
76
-
77
- # Source YAML parser
78
- source_yaml_parser
79
-
80
- # Get list of installed packages
81
- INSTALLED_PACKAGES=$(awk '/^ [a-z]/ && !/^ / && /:$/ {gsub(/:/, ""); print $1}' "$MANIFEST_FILE")
82
-
83
- if [ -z "$INSTALLED_PACKAGES" ]; then
84
- if [ "$GLOBAL_MODE" = true ]; then
85
- echo "${YELLOW}No global packages installed${NC}"
86
- else
87
- echo "${YELLOW}No packages installed${NC}"
88
- fi
89
- exit 0
90
- fi
91
-
92
- PACKAGE_COUNT=0
93
- DISPLAYED_COUNT=0
94
-
95
- for package in $INSTALLED_PACKAGES; do
96
- PACKAGE_COUNT=$((PACKAGE_COUNT + 1))
97
-
98
- # Get package info from manifest
99
- version=$(awk -v pkg="$package" '
100
- $0 ~ "^ " pkg ":" { in_pkg=1; next }
101
- in_pkg && /^ [a-z]/ { in_pkg=0 }
102
- in_pkg && /^ package_version:/ { print $2; exit }
103
- ' "$MANIFEST_FILE")
104
-
105
- source_url=$(awk -v pkg="$package" '
106
- $0 ~ "^ " pkg ":" { in_pkg=1; next }
107
- in_pkg && /^ [a-z]/ { in_pkg=0 }
108
- in_pkg && /^ source:/ { print $2; exit }
109
- ' "$MANIFEST_FILE")
110
-
111
- installed_at=$(awk -v pkg="$package" '
112
- $0 ~ "^ " pkg ":" { in_pkg=1; next }
113
- in_pkg && /^ [a-z]/ { in_pkg=0 }
114
- in_pkg && /^ installed_at:/ { print $2; exit }
115
- ' "$MANIFEST_FILE")
116
-
117
- updated_at=$(awk -v pkg="$package" '
118
- $0 ~ "^ " pkg ":" { in_pkg=1; next }
119
- in_pkg && /^ [a-z]/ { in_pkg=0 }
120
- in_pkg && /^ updated_at:/ { print $2; exit }
121
- ' "$MANIFEST_FILE")
122
-
123
- # Count files
124
- patterns_count=$(awk -v pkg="$package" '
125
- BEGIN { in_pkg=0; in_patterns=0; count=0 }
126
- $0 ~ "^ " pkg ":" { in_pkg=1; next }
127
- in_pkg && /^ [a-z]/ { in_pkg=0 }
128
- in_pkg && /^ patterns:/ { in_patterns=1; next }
129
- in_patterns && /^ [a-z]/ { in_patterns=0 }
130
- in_patterns && /^ - name:/ { count++ }
131
- END { print count }
132
- ' "$MANIFEST_FILE")
133
-
134
- commands_count=$(awk -v pkg="$package" '
135
- BEGIN { in_pkg=0; in_commands=0; count=0 }
136
- $0 ~ "^ " pkg ":" { in_pkg=1; next }
137
- in_pkg && /^ [a-z]/ { in_pkg=0 }
138
- in_pkg && /^ commands:/ { in_commands=1; next }
139
- in_commands && /^ [a-z]/ { in_commands=0 }
140
- in_commands && /^ - name:/ { count++ }
141
- END { print count }
142
- ' "$MANIFEST_FILE")
143
-
144
- designs_count=$(awk -v pkg="$package" '
145
- BEGIN { in_pkg=0; in_designs=0; count=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:/ { count++ }
151
- END { print count }
152
- ' "$MANIFEST_FILE")
153
-
154
- files_count=$(awk -v pkg="$package" '
155
- BEGIN { in_pkg=0; in_files=0; count=0 }
156
- $0 ~ "^ " pkg ":" { in_pkg=1; next }
157
- in_pkg && /^ [a-z]/ { in_pkg=0 }
158
- in_pkg && /^ files:$/ { in_files=1; next }
159
- in_files && /^ [a-z]/ { in_files=0 }
160
- in_files && /^ - name:/ { count++ }
161
- END { print count }
162
- ' "$MANIFEST_FILE")
163
-
164
- total_files=$((patterns_count + commands_count + designs_count + files_count))
165
-
166
- # Check if package has updates (for --outdated filter)
167
- has_updates=false
168
- if [ "$OUTDATED" = true ]; then
169
- # Create temp dir for checking
170
- temp_dir=$(mktemp -d)
171
- trap "rm -rf $temp_dir" RETURN
172
-
173
- if git clone --depth 1 "$source_url" "$temp_dir" &>/dev/null 2>&1; then
174
- if [ -f "$temp_dir/package.yaml" ]; then
175
- remote_version=$(awk '/^version:/ {print $2; exit}' "$temp_dir/package.yaml")
176
- comparison=$(compare_versions "$version" "$remote_version")
177
- if [ "$comparison" = "newer" ]; then
178
- has_updates=true
179
- fi
180
- fi
181
- fi
182
-
183
- rm -rf "$temp_dir"
184
-
185
- # Skip if no updates and filtering for outdated
186
- if [ "$has_updates" = false ]; then
187
- continue
188
- fi
189
- fi
190
-
191
- # Check if package has modified files (for --modified filter)
192
- has_modified=false
193
- if [ "$MODIFIED" = true ]; then
194
- for file_type in patterns commands design; do
195
- files=$(awk -v pkg="$package" -v type="$file_type" '
196
- BEGIN { in_pkg=0; in_type=0 }
197
- $0 ~ "^ " pkg ":" { in_pkg=1; next }
198
- in_pkg && /^ [a-z]/ { in_pkg=0 }
199
- in_pkg && $0 ~ "^ " type ":" { in_type=1; next }
200
- in_type && /^ [a-z]/ { in_type=0 }
201
- in_type && /^ - name:/ { print $3 }
202
- ' "$MANIFEST_FILE")
203
-
204
- for file_name in $files; do
205
- if is_file_modified "$package" "$file_type" "$file_name"; then
206
- has_modified=true
207
- break 2
208
- fi
209
- done
210
- done
211
-
212
- # Also check template files for modifications
213
- if [ "$has_modified" = false ]; then
214
- _file_entries=$(awk -v pkg="$package" '
215
- BEGIN { in_pkg=0; in_files=0; in_entry=0; name="" }
216
- $0 ~ "^ " pkg ":" { in_pkg=1; next }
217
- in_pkg && /^ [a-z]/ { in_pkg=0 }
218
- in_pkg && /^ files:$/ { in_files=1; next }
219
- in_files && /^ [a-z]/ { in_files=0 }
220
- in_files && /^ - name:/ { name=$3 }
221
- in_files && /^ target:/ { $1=""; gsub(/^ +/, ""); print name "|" $0 }
222
- ' "$MANIFEST_FILE")
223
-
224
- while IFS='|' read -r _fname _ftarget; do
225
- [ -z "$_fname" ] && continue
226
- if [ -n "$_ftarget" ] && is_template_file_modified "$package" "$_fname" "$_ftarget"; then
227
- has_modified=true
228
- break
229
- fi
230
- done <<< "$_file_entries"
231
- fi
232
-
233
- # Skip if no modifications and filtering for modified
234
- if [ "$has_modified" = false ]; then
235
- continue
236
- fi
237
- fi
238
- DISPLAYED_COUNT=$((DISPLAYED_COUNT + 1))
239
-
240
-
241
- # Display package info
242
- echo "${GREEN}$package${NC} ($version) - $total_files file(s)"
243
-
244
- if [ "$VERBOSE" = true ]; then
245
- echo " ${BLUE}Source:${NC} $source_url"
246
- echo " ${BLUE}Installed:${NC} $installed_at"
247
- if [ "$installed_at" != "$updated_at" ]; then
248
- echo " ${BLUE}Updated:${NC} $updated_at"
249
- fi
250
- echo " ${BLUE}Files:${NC}"
251
- [ "$patterns_count" -gt 0 ] && echo " - $patterns_count pattern(s)"
252
- [ "$commands_count" -gt 0 ] && echo " - $commands_count command(s)"
253
- [ "$designs_count" -gt 0 ] && echo " - $designs_count design(s)"
254
- [ "$files_count" -gt 0 ] && echo " - $files_count file(s)"
255
-
256
- # Show modified files if any
257
- if [ "$has_modified" = true ]; then
258
- echo " ${YELLOW}Modified files:${NC}"
259
- for file_type in patterns commands design; do
260
- files=$(awk -v pkg="$package" -v type="$file_type" '
261
- BEGIN { in_pkg=0; in_type=0 }
262
- $0 ~ "^ " pkg ":" { in_pkg=1; next }
263
- in_pkg && /^ [a-z]/ { in_pkg=0 }
264
- in_pkg && $0 ~ "^ " type ":" { in_type=1; next }
265
- in_type && /^ [a-z]/ { in_type=0 }
266
- in_type && /^ - name:/ { print $3 }
267
- ' "$MANIFEST_FILE")
268
-
269
- for file_name in $files; do
270
- if is_file_modified "$package" "$file_type" "$file_name"; then
271
- echo " - $file_type/$file_name"
272
- fi
273
- done
274
- done
275
- # Check template files too
276
- _file_entries=$(awk -v pkg="$package" '
277
- BEGIN { in_pkg=0; in_files=0; name="" }
278
- $0 ~ "^ " pkg ":" { in_pkg=1; next }
279
- in_pkg && /^ [a-z]/ { in_pkg=0 }
280
- in_pkg && /^ files:$/ { in_files=1; next }
281
- in_files && /^ [a-z]/ { in_files=0 }
282
- in_files && /^ - name:/ { name=$3 }
283
- in_files && /^ target:/ { $1=""; gsub(/^ +/, ""); print name "|" $0 }
284
- ' "$MANIFEST_FILE")
285
- while IFS='|' read -r _fname _ftarget; do
286
- [ -z "$_fname" ] && continue
287
- if [ -n "$_ftarget" ] && is_template_file_modified "$package" "$_fname" "$_ftarget"; then
288
- echo " - files/$_fname → $_ftarget"
289
- fi
290
- done <<< "$_file_entries"
291
- fi
292
-
293
- # Show update status if checking outdated
294
- if [ "$has_updates" = true ]; then
295
- echo " ${GREEN}Update available${NC}"
296
- fi
297
-
298
- echo ""
299
- fi
300
- done
301
-
302
- echo ""
303
- echo "Total: $DISPLAYED_COUNT of $PACKAGE_COUNT package(s)"
304
-
305
- if [ "$OUTDATED" = true ] && [ $DISPLAYED_COUNT -eq 0 ]; then
306
- echo "${GREEN}✓${NC} All packages are up to date"
307
- fi
308
-
309
- if [ "$MODIFIED" = true ] && [ $DISPLAYED_COUNT -eq 0 ]; then
310
- echo "${GREEN}✓${NC} No packages have local modifications"
311
- fi