aidevops 2.52.1

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 (329) hide show
  1. package/.agent/AGENTS.md +614 -0
  2. package/.agent/accounts.md +65 -0
  3. package/.agent/aidevops/add-new-mcp-to-aidevops.md +456 -0
  4. package/.agent/aidevops/api-integrations.md +335 -0
  5. package/.agent/aidevops/architecture.md +510 -0
  6. package/.agent/aidevops/configs.md +274 -0
  7. package/.agent/aidevops/docs.md +244 -0
  8. package/.agent/aidevops/extension.md +311 -0
  9. package/.agent/aidevops/mcp-integrations.md +340 -0
  10. package/.agent/aidevops/mcp-troubleshooting.md +162 -0
  11. package/.agent/aidevops/memory-patterns.md +172 -0
  12. package/.agent/aidevops/providers.md +217 -0
  13. package/.agent/aidevops/recommendations.md +321 -0
  14. package/.agent/aidevops/requirements.md +301 -0
  15. package/.agent/aidevops/resources.md +214 -0
  16. package/.agent/aidevops/security-requirements.md +174 -0
  17. package/.agent/aidevops/security.md +350 -0
  18. package/.agent/aidevops/service-links.md +400 -0
  19. package/.agent/aidevops/services.md +357 -0
  20. package/.agent/aidevops/setup.md +153 -0
  21. package/.agent/aidevops/troubleshooting.md +389 -0
  22. package/.agent/aidevops.md +124 -0
  23. package/.agent/build-plus.md +244 -0
  24. package/.agent/content/guidelines.md +109 -0
  25. package/.agent/content.md +87 -0
  26. package/.agent/health.md +59 -0
  27. package/.agent/legal.md +59 -0
  28. package/.agent/loop-state/full-loop.local.md +16 -0
  29. package/.agent/loop-state/ralph-loop.local.md +10 -0
  30. package/.agent/marketing.md +440 -0
  31. package/.agent/memory/README.md +260 -0
  32. package/.agent/onboarding.md +796 -0
  33. package/.agent/plan-plus.md +245 -0
  34. package/.agent/research.md +100 -0
  35. package/.agent/sales.md +333 -0
  36. package/.agent/scripts/101domains-helper.sh +701 -0
  37. package/.agent/scripts/add-missing-returns.sh +140 -0
  38. package/.agent/scripts/agent-browser-helper.sh +311 -0
  39. package/.agent/scripts/agno-setup.sh +712 -0
  40. package/.agent/scripts/ahrefs-mcp-wrapper.js +168 -0
  41. package/.agent/scripts/aidevops-update-check.sh +71 -0
  42. package/.agent/scripts/ampcode-cli.sh +522 -0
  43. package/.agent/scripts/auto-version-bump.sh +156 -0
  44. package/.agent/scripts/autogen-helper.sh +512 -0
  45. package/.agent/scripts/beads-sync-helper.sh +596 -0
  46. package/.agent/scripts/closte-helper.sh +5 -0
  47. package/.agent/scripts/cloudron-helper.sh +321 -0
  48. package/.agent/scripts/codacy-cli-chunked.sh +581 -0
  49. package/.agent/scripts/codacy-cli.sh +442 -0
  50. package/.agent/scripts/code-audit-helper.sh +5 -0
  51. package/.agent/scripts/coderabbit-cli.sh +417 -0
  52. package/.agent/scripts/coderabbit-pro-analysis.sh +238 -0
  53. package/.agent/scripts/commands/code-simplifier.md +86 -0
  54. package/.agent/scripts/commands/full-loop.md +246 -0
  55. package/.agent/scripts/commands/postflight-loop.md +103 -0
  56. package/.agent/scripts/commands/recall.md +182 -0
  57. package/.agent/scripts/commands/remember.md +132 -0
  58. package/.agent/scripts/commands/save-todo.md +175 -0
  59. package/.agent/scripts/commands/session-review.md +154 -0
  60. package/.agent/scripts/comprehensive-quality-fix.sh +106 -0
  61. package/.agent/scripts/context-builder-helper.sh +522 -0
  62. package/.agent/scripts/coolify-cli-helper.sh +674 -0
  63. package/.agent/scripts/coolify-helper.sh +380 -0
  64. package/.agent/scripts/crawl4ai-examples.sh +401 -0
  65. package/.agent/scripts/crawl4ai-helper.sh +1078 -0
  66. package/.agent/scripts/crewai-helper.sh +681 -0
  67. package/.agent/scripts/dev-browser-helper.sh +513 -0
  68. package/.agent/scripts/dns-helper.sh +396 -0
  69. package/.agent/scripts/domain-research-helper.sh +917 -0
  70. package/.agent/scripts/dspy-helper.sh +285 -0
  71. package/.agent/scripts/dspyground-helper.sh +291 -0
  72. package/.agent/scripts/eeat-score-helper.sh +1242 -0
  73. package/.agent/scripts/efficient-return-fix.sh +92 -0
  74. package/.agent/scripts/extract-opencode-prompts.sh +128 -0
  75. package/.agent/scripts/find-missing-returns.sh +113 -0
  76. package/.agent/scripts/fix-auth-headers.sh +104 -0
  77. package/.agent/scripts/fix-common-strings.sh +254 -0
  78. package/.agent/scripts/fix-content-type.sh +100 -0
  79. package/.agent/scripts/fix-error-messages.sh +130 -0
  80. package/.agent/scripts/fix-misplaced-returns.sh +74 -0
  81. package/.agent/scripts/fix-remaining-literals.sh +152 -0
  82. package/.agent/scripts/fix-return-statements.sh +41 -0
  83. package/.agent/scripts/fix-s131-default-cases.sh +249 -0
  84. package/.agent/scripts/fix-sc2155-simple.sh +102 -0
  85. package/.agent/scripts/fix-shellcheck-critical.sh +187 -0
  86. package/.agent/scripts/fix-string-literals.sh +273 -0
  87. package/.agent/scripts/full-loop-helper.sh +773 -0
  88. package/.agent/scripts/generate-opencode-agents.sh +497 -0
  89. package/.agent/scripts/generate-opencode-commands.sh +1629 -0
  90. package/.agent/scripts/generate-skills.sh +366 -0
  91. package/.agent/scripts/git-platforms-helper.sh +640 -0
  92. package/.agent/scripts/gitea-cli-helper.sh +743 -0
  93. package/.agent/scripts/github-cli-helper.sh +702 -0
  94. package/.agent/scripts/gitlab-cli-helper.sh +682 -0
  95. package/.agent/scripts/gsc-add-user-helper.sh +325 -0
  96. package/.agent/scripts/gsc-sitemap-helper.sh +678 -0
  97. package/.agent/scripts/hetzner-helper.sh +485 -0
  98. package/.agent/scripts/hostinger-helper.sh +229 -0
  99. package/.agent/scripts/keyword-research-helper.sh +1815 -0
  100. package/.agent/scripts/langflow-helper.sh +544 -0
  101. package/.agent/scripts/linkedin-automation.py +241 -0
  102. package/.agent/scripts/linter-manager.sh +599 -0
  103. package/.agent/scripts/linters-local.sh +434 -0
  104. package/.agent/scripts/list-keys-helper.sh +488 -0
  105. package/.agent/scripts/local-browser-automation.py +339 -0
  106. package/.agent/scripts/localhost-helper.sh +744 -0
  107. package/.agent/scripts/loop-common.sh +806 -0
  108. package/.agent/scripts/mainwp-helper.sh +728 -0
  109. package/.agent/scripts/markdown-formatter.sh +338 -0
  110. package/.agent/scripts/markdown-lint-fix.sh +311 -0
  111. package/.agent/scripts/mass-fix-returns.sh +58 -0
  112. package/.agent/scripts/mcp-diagnose.sh +167 -0
  113. package/.agent/scripts/mcp-inspector-helper.sh +449 -0
  114. package/.agent/scripts/memory-helper.sh +650 -0
  115. package/.agent/scripts/monitor-code-review.sh +255 -0
  116. package/.agent/scripts/onboarding-helper.sh +706 -0
  117. package/.agent/scripts/opencode-github-setup-helper.sh +797 -0
  118. package/.agent/scripts/opencode-test-helper.sh +213 -0
  119. package/.agent/scripts/pagespeed-helper.sh +464 -0
  120. package/.agent/scripts/pandoc-helper.sh +362 -0
  121. package/.agent/scripts/postflight-check.sh +555 -0
  122. package/.agent/scripts/pre-commit-hook.sh +259 -0
  123. package/.agent/scripts/pre-edit-check.sh +169 -0
  124. package/.agent/scripts/qlty-cli.sh +356 -0
  125. package/.agent/scripts/quality-cli-manager.sh +525 -0
  126. package/.agent/scripts/quality-feedback-helper.sh +462 -0
  127. package/.agent/scripts/quality-fix.sh +263 -0
  128. package/.agent/scripts/quality-loop-helper.sh +1108 -0
  129. package/.agent/scripts/ralph-loop-helper.sh +836 -0
  130. package/.agent/scripts/ralph-upstream-check.sh +341 -0
  131. package/.agent/scripts/secretlint-helper.sh +847 -0
  132. package/.agent/scripts/servers-helper.sh +241 -0
  133. package/.agent/scripts/ses-helper.sh +619 -0
  134. package/.agent/scripts/session-review-helper.sh +404 -0
  135. package/.agent/scripts/setup-linters-wizard.sh +379 -0
  136. package/.agent/scripts/setup-local-api-keys.sh +330 -0
  137. package/.agent/scripts/setup-mcp-integrations.sh +472 -0
  138. package/.agent/scripts/shared-constants.sh +246 -0
  139. package/.agent/scripts/site-crawler-helper.sh +1487 -0
  140. package/.agent/scripts/snyk-helper.sh +940 -0
  141. package/.agent/scripts/sonarcloud-autofix.sh +193 -0
  142. package/.agent/scripts/sonarcloud-cli.sh +191 -0
  143. package/.agent/scripts/sonarscanner-cli.sh +455 -0
  144. package/.agent/scripts/spaceship-helper.sh +747 -0
  145. package/.agent/scripts/stagehand-helper.sh +321 -0
  146. package/.agent/scripts/stagehand-python-helper.sh +321 -0
  147. package/.agent/scripts/stagehand-python-setup.sh +441 -0
  148. package/.agent/scripts/stagehand-setup.sh +439 -0
  149. package/.agent/scripts/system-cleanup.sh +340 -0
  150. package/.agent/scripts/terminal-title-helper.sh +388 -0
  151. package/.agent/scripts/terminal-title-setup.sh +549 -0
  152. package/.agent/scripts/test-stagehand-both-integration.sh +317 -0
  153. package/.agent/scripts/test-stagehand-integration.sh +309 -0
  154. package/.agent/scripts/test-stagehand-python-integration.sh +341 -0
  155. package/.agent/scripts/todo-ready.sh +263 -0
  156. package/.agent/scripts/tool-version-check.sh +362 -0
  157. package/.agent/scripts/toon-helper.sh +469 -0
  158. package/.agent/scripts/twilio-helper.sh +917 -0
  159. package/.agent/scripts/updown-helper.sh +279 -0
  160. package/.agent/scripts/validate-mcp-integrations.sh +250 -0
  161. package/.agent/scripts/validate-version-consistency.sh +131 -0
  162. package/.agent/scripts/vaultwarden-helper.sh +597 -0
  163. package/.agent/scripts/vercel-cli-helper.sh +816 -0
  164. package/.agent/scripts/verify-mirrors.sh +169 -0
  165. package/.agent/scripts/version-manager.sh +831 -0
  166. package/.agent/scripts/webhosting-helper.sh +471 -0
  167. package/.agent/scripts/webhosting-verify.sh +238 -0
  168. package/.agent/scripts/wordpress-mcp-helper.sh +508 -0
  169. package/.agent/scripts/worktree-helper.sh +595 -0
  170. package/.agent/scripts/worktree-sessions.sh +577 -0
  171. package/.agent/seo/dataforseo.md +215 -0
  172. package/.agent/seo/domain-research.md +532 -0
  173. package/.agent/seo/eeat-score.md +659 -0
  174. package/.agent/seo/google-search-console.md +366 -0
  175. package/.agent/seo/gsc-sitemaps.md +282 -0
  176. package/.agent/seo/keyword-research.md +521 -0
  177. package/.agent/seo/serper.md +278 -0
  178. package/.agent/seo/site-crawler.md +387 -0
  179. package/.agent/seo.md +236 -0
  180. package/.agent/services/accounting/quickfile.md +159 -0
  181. package/.agent/services/communications/telfon.md +470 -0
  182. package/.agent/services/communications/twilio.md +569 -0
  183. package/.agent/services/crm/fluentcrm.md +449 -0
  184. package/.agent/services/email/ses.md +399 -0
  185. package/.agent/services/hosting/101domains.md +378 -0
  186. package/.agent/services/hosting/closte.md +177 -0
  187. package/.agent/services/hosting/cloudflare.md +251 -0
  188. package/.agent/services/hosting/cloudron.md +478 -0
  189. package/.agent/services/hosting/dns-providers.md +335 -0
  190. package/.agent/services/hosting/domain-purchasing.md +344 -0
  191. package/.agent/services/hosting/hetzner.md +327 -0
  192. package/.agent/services/hosting/hostinger.md +287 -0
  193. package/.agent/services/hosting/localhost.md +419 -0
  194. package/.agent/services/hosting/spaceship.md +353 -0
  195. package/.agent/services/hosting/webhosting.md +330 -0
  196. package/.agent/social-media.md +69 -0
  197. package/.agent/templates/plans-template.md +114 -0
  198. package/.agent/templates/prd-template.md +129 -0
  199. package/.agent/templates/tasks-template.md +108 -0
  200. package/.agent/templates/todo-template.md +89 -0
  201. package/.agent/tools/ai-assistants/agno.md +471 -0
  202. package/.agent/tools/ai-assistants/capsolver.md +326 -0
  203. package/.agent/tools/ai-assistants/configuration.md +221 -0
  204. package/.agent/tools/ai-assistants/overview.md +209 -0
  205. package/.agent/tools/ai-assistants/status.md +171 -0
  206. package/.agent/tools/ai-assistants/windsurf.md +193 -0
  207. package/.agent/tools/ai-orchestration/autogen.md +406 -0
  208. package/.agent/tools/ai-orchestration/crewai.md +445 -0
  209. package/.agent/tools/ai-orchestration/langflow.md +405 -0
  210. package/.agent/tools/ai-orchestration/openprose.md +487 -0
  211. package/.agent/tools/ai-orchestration/overview.md +362 -0
  212. package/.agent/tools/ai-orchestration/packaging.md +647 -0
  213. package/.agent/tools/browser/agent-browser.md +464 -0
  214. package/.agent/tools/browser/browser-automation.md +400 -0
  215. package/.agent/tools/browser/chrome-devtools.md +282 -0
  216. package/.agent/tools/browser/crawl4ai-integration.md +422 -0
  217. package/.agent/tools/browser/crawl4ai-resources.md +277 -0
  218. package/.agent/tools/browser/crawl4ai-usage.md +416 -0
  219. package/.agent/tools/browser/crawl4ai.md +585 -0
  220. package/.agent/tools/browser/dev-browser.md +341 -0
  221. package/.agent/tools/browser/pagespeed.md +260 -0
  222. package/.agent/tools/browser/playwright.md +266 -0
  223. package/.agent/tools/browser/playwriter.md +310 -0
  224. package/.agent/tools/browser/stagehand-examples.md +456 -0
  225. package/.agent/tools/browser/stagehand-python.md +483 -0
  226. package/.agent/tools/browser/stagehand.md +421 -0
  227. package/.agent/tools/build-agent/agent-review.md +224 -0
  228. package/.agent/tools/build-agent/build-agent.md +784 -0
  229. package/.agent/tools/build-mcp/aidevops-plugin.md +476 -0
  230. package/.agent/tools/build-mcp/api-wrapper.md +445 -0
  231. package/.agent/tools/build-mcp/build-mcp.md +240 -0
  232. package/.agent/tools/build-mcp/deployment.md +401 -0
  233. package/.agent/tools/build-mcp/server-patterns.md +632 -0
  234. package/.agent/tools/build-mcp/transports.md +366 -0
  235. package/.agent/tools/code-review/auditing.md +383 -0
  236. package/.agent/tools/code-review/automation.md +219 -0
  237. package/.agent/tools/code-review/best-practices.md +203 -0
  238. package/.agent/tools/code-review/codacy.md +151 -0
  239. package/.agent/tools/code-review/code-simplifier.md +174 -0
  240. package/.agent/tools/code-review/code-standards.md +309 -0
  241. package/.agent/tools/code-review/coderabbit.md +101 -0
  242. package/.agent/tools/code-review/management.md +155 -0
  243. package/.agent/tools/code-review/qlty.md +248 -0
  244. package/.agent/tools/code-review/secretlint.md +565 -0
  245. package/.agent/tools/code-review/setup.md +250 -0
  246. package/.agent/tools/code-review/snyk.md +563 -0
  247. package/.agent/tools/code-review/tools.md +230 -0
  248. package/.agent/tools/content/summarize.md +353 -0
  249. package/.agent/tools/context/augment-context-engine.md +468 -0
  250. package/.agent/tools/context/context-builder-agent.md +76 -0
  251. package/.agent/tools/context/context-builder.md +375 -0
  252. package/.agent/tools/context/context7.md +371 -0
  253. package/.agent/tools/context/dspy.md +302 -0
  254. package/.agent/tools/context/dspyground.md +374 -0
  255. package/.agent/tools/context/llm-tldr.md +219 -0
  256. package/.agent/tools/context/osgrep.md +488 -0
  257. package/.agent/tools/context/prompt-optimization.md +338 -0
  258. package/.agent/tools/context/toon.md +292 -0
  259. package/.agent/tools/conversion/pandoc.md +304 -0
  260. package/.agent/tools/credentials/api-key-management.md +154 -0
  261. package/.agent/tools/credentials/api-key-setup.md +224 -0
  262. package/.agent/tools/credentials/environment-variables.md +180 -0
  263. package/.agent/tools/credentials/vaultwarden.md +382 -0
  264. package/.agent/tools/data-extraction/outscraper.md +974 -0
  265. package/.agent/tools/deployment/coolify-cli.md +388 -0
  266. package/.agent/tools/deployment/coolify-setup.md +353 -0
  267. package/.agent/tools/deployment/coolify.md +345 -0
  268. package/.agent/tools/deployment/vercel.md +390 -0
  269. package/.agent/tools/git/authentication.md +132 -0
  270. package/.agent/tools/git/gitea-cli.md +193 -0
  271. package/.agent/tools/git/github-actions.md +207 -0
  272. package/.agent/tools/git/github-cli.md +223 -0
  273. package/.agent/tools/git/gitlab-cli.md +190 -0
  274. package/.agent/tools/git/opencode-github-security.md +350 -0
  275. package/.agent/tools/git/opencode-github.md +328 -0
  276. package/.agent/tools/git/opencode-gitlab.md +252 -0
  277. package/.agent/tools/git/security.md +196 -0
  278. package/.agent/tools/git.md +207 -0
  279. package/.agent/tools/opencode/oh-my-opencode.md +375 -0
  280. package/.agent/tools/opencode/opencode-anthropic-auth.md +446 -0
  281. package/.agent/tools/opencode/opencode.md +651 -0
  282. package/.agent/tools/social-media/bird.md +437 -0
  283. package/.agent/tools/task-management/beads.md +336 -0
  284. package/.agent/tools/terminal/terminal-title.md +251 -0
  285. package/.agent/tools/ui/shadcn.md +196 -0
  286. package/.agent/tools/ui/ui-skills.md +115 -0
  287. package/.agent/tools/wordpress/localwp.md +311 -0
  288. package/.agent/tools/wordpress/mainwp.md +391 -0
  289. package/.agent/tools/wordpress/scf.md +527 -0
  290. package/.agent/tools/wordpress/wp-admin.md +729 -0
  291. package/.agent/tools/wordpress/wp-dev.md +940 -0
  292. package/.agent/tools/wordpress/wp-preferred.md +398 -0
  293. package/.agent/tools/wordpress.md +95 -0
  294. package/.agent/workflows/branch/bugfix.md +63 -0
  295. package/.agent/workflows/branch/chore.md +95 -0
  296. package/.agent/workflows/branch/experiment.md +115 -0
  297. package/.agent/workflows/branch/feature.md +59 -0
  298. package/.agent/workflows/branch/hotfix.md +98 -0
  299. package/.agent/workflows/branch/refactor.md +92 -0
  300. package/.agent/workflows/branch/release.md +96 -0
  301. package/.agent/workflows/branch.md +347 -0
  302. package/.agent/workflows/bug-fixing.md +267 -0
  303. package/.agent/workflows/changelog.md +129 -0
  304. package/.agent/workflows/code-audit-remote.md +279 -0
  305. package/.agent/workflows/conversation-starter.md +69 -0
  306. package/.agent/workflows/error-feedback.md +578 -0
  307. package/.agent/workflows/feature-development.md +355 -0
  308. package/.agent/workflows/git-workflow.md +702 -0
  309. package/.agent/workflows/multi-repo-workspace.md +268 -0
  310. package/.agent/workflows/plans.md +709 -0
  311. package/.agent/workflows/postflight.md +604 -0
  312. package/.agent/workflows/pr.md +571 -0
  313. package/.agent/workflows/preflight.md +278 -0
  314. package/.agent/workflows/ralph-loop.md +773 -0
  315. package/.agent/workflows/release.md +498 -0
  316. package/.agent/workflows/session-manager.md +254 -0
  317. package/.agent/workflows/session-review.md +311 -0
  318. package/.agent/workflows/sql-migrations.md +631 -0
  319. package/.agent/workflows/version-bump.md +283 -0
  320. package/.agent/workflows/wiki-update.md +333 -0
  321. package/.agent/workflows/worktree.md +477 -0
  322. package/LICENSE +21 -0
  323. package/README.md +1446 -0
  324. package/VERSION +1 -0
  325. package/aidevops.sh +1746 -0
  326. package/bin/aidevops +21 -0
  327. package/package.json +75 -0
  328. package/scripts/npm-postinstall.js +60 -0
  329. package/setup.sh +2366 -0
@@ -0,0 +1,362 @@
1
+ #!/bin/bash
2
+ # Tool Version Check
3
+ # Checks versions of key tools and flags outdated ones
4
+ #
5
+ # Usage:
6
+ # tool-version-check.sh # Check all tools
7
+ # tool-version-check.sh --update # Check and update outdated tools
8
+ # tool-version-check.sh --category npm # Check only npm tools
9
+ # tool-version-check.sh --json # Output as JSON
10
+ #
11
+ # Categories: npm, brew, pip, all (default)
12
+
13
+ set -euo pipefail
14
+
15
+ # Colors
16
+ readonly GREEN='\033[0;32m'
17
+ readonly YELLOW='\033[1;33m'
18
+ readonly RED='\033[0;31m'
19
+ readonly BLUE='\033[0;34m'
20
+ readonly CYAN='\033[0;36m'
21
+ readonly BOLD='\033[1m'
22
+ readonly NC='\033[0m'
23
+
24
+ # Parse arguments
25
+ AUTO_UPDATE=false
26
+ CATEGORY="all"
27
+ JSON_OUTPUT=false
28
+ QUIET=false
29
+
30
+ while [[ $# -gt 0 ]]; do
31
+ case "$1" in
32
+ --update|-u)
33
+ AUTO_UPDATE=true
34
+ shift
35
+ ;;
36
+ --category|-c)
37
+ if [[ -z "${2:-}" ]]; then
38
+ echo "Error: --category requires a value (npm, brew, pip, all)"
39
+ exit 1
40
+ fi
41
+ CATEGORY="$2"
42
+ shift 2
43
+ ;;
44
+ --json|-j)
45
+ JSON_OUTPUT=true
46
+ shift
47
+ ;;
48
+ --quiet|-q)
49
+ QUIET=true
50
+ shift
51
+ ;;
52
+ --help|-h)
53
+ echo "Usage: tool-version-check.sh [OPTIONS]"
54
+ echo ""
55
+ echo "Options:"
56
+ echo " --update, -u Automatically update outdated tools"
57
+ echo " --category, -c Check only specific category (npm, brew, pip, all)"
58
+ echo " --json, -j Output results as JSON"
59
+ echo " --quiet, -q Only show outdated tools"
60
+ echo " --help, -h Show this help"
61
+ exit 0
62
+ ;;
63
+ *)
64
+ echo "Unknown option: $1"
65
+ exit 1
66
+ ;;
67
+ esac
68
+ done
69
+
70
+ # Tool definitions
71
+ # Format: category|display_name|cli_command|version_flag|package_name|update_command
72
+
73
+ NPM_TOOLS=(
74
+ "npm|osgrep|osgrep|--version|osgrep|npm update -g osgrep"
75
+ "npm|Augment CLI|auggie|--version|@augmentcode/auggie@prerelease|npm update -g @augmentcode/auggie@prerelease"
76
+ "npm|Repomix|repomix|--version|repomix|npm update -g repomix"
77
+ "npm|DSPyGround|dspyground|--version|dspyground|npm update -g dspyground"
78
+ "npm|LocalWP MCP|mcp-local-wp|--version|@verygoodplugins/mcp-local-wp|npm update -g @verygoodplugins/mcp-local-wp"
79
+ "npm|Beads UI|beads-ui|--version|beads-ui|npm update -g beads-ui"
80
+ "npm|BDUI|bdui|--version|bdui|npm update -g bdui"
81
+ "npm|OpenCode|opencode|--version|opencode|npm update -g opencode"
82
+ )
83
+
84
+ BREW_TOOLS=(
85
+ "brew|GitHub CLI|gh|--version|gh|brew upgrade gh"
86
+ "brew|GitLab CLI|glab|--version|glab|brew upgrade glab"
87
+ "brew|Beads CLI|bd|version|steveyegge/beads/bd|brew upgrade steveyegge/beads/bd"
88
+ "brew|jq|jq|--version|jq|brew upgrade jq"
89
+ "brew|ShellCheck|shellcheck|--version|shellcheck|brew upgrade shellcheck"
90
+ )
91
+
92
+ PIP_TOOLS=(
93
+ "pip|Beads Viewer|beads_viewer|--version|beads-viewer|pip install --upgrade beads-viewer"
94
+ "pip|DSPy|dspy|--version|dspy-ai|pip install --upgrade dspy-ai"
95
+ "pip|Crawl4AI|crawl4ai|--version|crawl4ai|pip install --upgrade crawl4ai"
96
+ )
97
+
98
+ # Counters
99
+ OUTDATED_COUNT=0
100
+ INSTALLED_COUNT=0
101
+ NOT_INSTALLED_COUNT=0
102
+ declare -a OUTDATED_PACKAGES=()
103
+ declare -a JSON_RESULTS=()
104
+
105
+ # Get installed version
106
+ get_installed_version() {
107
+ local cmd="$1"
108
+ local ver_flag="$2"
109
+
110
+ if command -v "$cmd" &>/dev/null; then
111
+ local version
112
+ # shellcheck disable=SC2086
113
+ version=$("$cmd" $ver_flag 2>/dev/null | head -1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1 || echo "")
114
+ if [[ -z "$version" ]]; then
115
+ # Try alternative patterns
116
+ # shellcheck disable=SC2086
117
+ version=$("$cmd" $ver_flag 2>/dev/null | head -1 | grep -oE '[0-9]+\.[0-9]+' | head -1 || echo "unknown")
118
+ fi
119
+ echo "$version"
120
+ else
121
+ echo "not installed"
122
+ fi
123
+ return 0
124
+ }
125
+
126
+ # Get latest npm version
127
+ get_npm_latest() {
128
+ local pkg="$1"
129
+ npm view "$pkg" version 2>/dev/null || echo "unknown"
130
+ return 0
131
+ }
132
+
133
+ # Get latest brew version
134
+ get_brew_latest() {
135
+ local pkg="$1"
136
+ if command -v brew &>/dev/null; then
137
+ brew info "$pkg" 2>/dev/null | head -1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1 || echo "unknown"
138
+ else
139
+ echo "unknown"
140
+ fi
141
+ return 0
142
+ }
143
+
144
+ # Get latest pip version
145
+ get_pip_latest() {
146
+ local pkg="$1"
147
+ pip index versions "$pkg" 2>/dev/null | head -1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1 || echo "unknown"
148
+ return 0
149
+ }
150
+
151
+ # Compare versions (returns 0 if v1 < v2)
152
+ version_lt() {
153
+ local v1="$1"
154
+ local v2="$2"
155
+
156
+ if [[ "$v1" == "$v2" ]]; then
157
+ return 1
158
+ fi
159
+
160
+ # Use sort -V for version comparison
161
+ local lowest
162
+ lowest=$(printf '%s\n%s' "$v1" "$v2" | sort -V | head -1)
163
+ [[ "$lowest" == "$v1" ]]
164
+ }
165
+
166
+ # Check a single tool
167
+ check_tool() {
168
+ local category="$1"
169
+ local name="$2"
170
+ local cmd="$3"
171
+ local ver_flag="$4"
172
+ local pkg="$5"
173
+ local update_cmd="$6"
174
+
175
+ local installed
176
+ installed=$(get_installed_version "$cmd" "$ver_flag")
177
+
178
+ local latest="unknown"
179
+ case "$category" in
180
+ npm) latest=$(get_npm_latest "$pkg") ;;
181
+ brew) latest=$(get_brew_latest "$pkg") ;;
182
+ pip) latest=$(get_pip_latest "$pkg") ;;
183
+ esac
184
+
185
+ local status="up_to_date"
186
+ local icon="✓"
187
+ local color="$GREEN"
188
+
189
+ if [[ "$installed" == "not installed" ]]; then
190
+ status="not_installed"
191
+ icon="○"
192
+ color="$YELLOW"
193
+ ((NOT_INSTALLED_COUNT++)) || true
194
+ elif [[ "$installed" == "unknown" || "$latest" == "unknown" ]]; then
195
+ status="unknown"
196
+ icon="?"
197
+ color="$YELLOW"
198
+ ((INSTALLED_COUNT++)) || true
199
+ elif [[ "$installed" != "$latest" ]] && version_lt "$installed" "$latest"; then
200
+ status="outdated"
201
+ icon="⬆"
202
+ color="$RED"
203
+ ((OUTDATED_COUNT++)) || true
204
+ OUTDATED_PACKAGES+=("$update_cmd")
205
+ else
206
+ ((INSTALLED_COUNT++)) || true
207
+ fi
208
+
209
+ # JSON output (escape special characters for valid JSON)
210
+ if [[ "$JSON_OUTPUT" == "true" ]]; then
211
+ # Escape backslashes and double quotes for JSON safety
212
+ local json_name="${name//\\/\\\\}"
213
+ json_name="${json_name//\"/\\\"}"
214
+ local json_update="${update_cmd//\\/\\\\}"
215
+ json_update="${json_update//\"/\\\"}"
216
+ JSON_RESULTS+=("{\"name\":\"$json_name\",\"category\":\"$category\",\"installed\":\"$installed\",\"latest\":\"$latest\",\"status\":\"$status\",\"update_cmd\":\"$json_update\"}")
217
+ else
218
+ # Console output
219
+ if [[ "$QUIET" == "true" && "$status" != "outdated" ]]; then
220
+ return
221
+ fi
222
+
223
+ case "$status" in
224
+ not_installed)
225
+ echo -e "${color}${icon} $name: not installed${NC}"
226
+ if [[ "$QUIET" != "true" ]]; then
227
+ echo " Latest: $latest"
228
+ fi
229
+ ;;
230
+ outdated)
231
+ echo -e "${color}${icon} $name: $installed → $latest (UPDATE AVAILABLE)${NC}"
232
+ ;;
233
+ unknown)
234
+ echo -e "${color}${icon} $name: $installed (could not check latest)${NC}"
235
+ ;;
236
+ up_to_date)
237
+ echo -e "${color}${icon} $name: $installed${NC}"
238
+ ;;
239
+ esac
240
+ fi
241
+ }
242
+
243
+ # Check tools by category
244
+ check_category() {
245
+ local cat_name="$1"
246
+ shift
247
+ local tools=("$@")
248
+
249
+ if [[ "$JSON_OUTPUT" != "true" && "$QUIET" != "true" ]]; then
250
+ echo ""
251
+ echo -e "${BOLD}${CYAN}=== $cat_name Tools ===${NC}"
252
+ fi
253
+
254
+ for tool_spec in "${tools[@]}"; do
255
+ IFS='|' read -r category name cmd ver_flag pkg update_cmd <<< "$tool_spec"
256
+ check_tool "$category" "$name" "$cmd" "$ver_flag" "$pkg" "$update_cmd"
257
+ done
258
+ return 0
259
+ }
260
+
261
+ # Main
262
+ main() {
263
+ if [[ "$JSON_OUTPUT" != "true" && "$QUIET" != "true" ]]; then
264
+ echo -e "${BOLD}${BLUE}Tool Version Check${NC}"
265
+ echo "=================="
266
+ fi
267
+
268
+ # Check requested categories
269
+ case "$CATEGORY" in
270
+ npm)
271
+ check_category "NPM" "${NPM_TOOLS[@]}"
272
+ ;;
273
+ brew)
274
+ check_category "Homebrew" "${BREW_TOOLS[@]}"
275
+ ;;
276
+ pip)
277
+ check_category "Python/Pip" "${PIP_TOOLS[@]}"
278
+ ;;
279
+ all|*)
280
+ if [[ ${#NPM_TOOLS[@]} -gt 0 ]]; then
281
+ check_category "NPM" "${NPM_TOOLS[@]}"
282
+ fi
283
+ if command -v brew &>/dev/null && [[ ${#BREW_TOOLS[@]} -gt 0 ]]; then
284
+ check_category "Homebrew" "${BREW_TOOLS[@]}"
285
+ fi
286
+ if command -v pip &>/dev/null && [[ ${#PIP_TOOLS[@]} -gt 0 ]]; then
287
+ check_category "Python/Pip" "${PIP_TOOLS[@]}"
288
+ fi
289
+ ;;
290
+ esac
291
+
292
+ # Output results
293
+ if [[ "$JSON_OUTPUT" == "true" ]]; then
294
+ echo "{"
295
+ echo " \"summary\": {"
296
+ echo " \"installed\": $INSTALLED_COUNT,"
297
+ echo " \"outdated\": $OUTDATED_COUNT,"
298
+ echo " \"not_installed\": $NOT_INSTALLED_COUNT"
299
+ echo " },"
300
+ echo " \"tools\": ["
301
+ local first=true
302
+ for result in "${JSON_RESULTS[@]}"; do
303
+ if [[ "$first" == "true" ]]; then
304
+ first=false
305
+ else
306
+ echo ","
307
+ fi
308
+ echo -n " $result"
309
+ done
310
+ echo ""
311
+ echo " ]"
312
+ echo "}"
313
+ return 0
314
+ fi
315
+
316
+ # Summary (skip in quiet mode if nothing outdated)
317
+ if [[ "$QUIET" == "true" && $OUTDATED_COUNT -eq 0 ]]; then
318
+ return 0
319
+ fi
320
+
321
+ if [[ "$QUIET" != "true" ]]; then
322
+ echo ""
323
+ echo -e "${BOLD}Summary${NC}"
324
+ echo " Installed & up to date: $INSTALLED_COUNT"
325
+ echo " Outdated: $OUTDATED_COUNT"
326
+ echo " Not installed: $NOT_INSTALLED_COUNT"
327
+ echo ""
328
+ fi
329
+
330
+ # Handle updates
331
+ if [[ $OUTDATED_COUNT -gt 0 ]]; then
332
+ if [[ "$AUTO_UPDATE" == "true" ]]; then
333
+ echo -e "${BLUE}Updating outdated tools...${NC}"
334
+ echo ""
335
+ for update_cmd in "${OUTDATED_PACKAGES[@]}"; do
336
+ echo " Running: $update_cmd"
337
+ # Run update command directly (not via eval for security)
338
+ # Commands are hardcoded in tool definitions, not user input
339
+ if bash -c "$update_cmd" 2>&1 | tail -2; then
340
+ echo -e " ${GREEN}✓ Updated${NC}"
341
+ else
342
+ echo -e " ${RED}✗ Failed${NC}"
343
+ fi
344
+ echo ""
345
+ done
346
+ echo -e "${GREEN}Updates complete. Re-run to verify.${NC}"
347
+ else
348
+ echo "To update all outdated tools, run:"
349
+ echo " tool-version-check.sh --update"
350
+ echo ""
351
+ echo "Or update individually:"
352
+ for update_cmd in "${OUTDATED_PACKAGES[@]}"; do
353
+ echo " $update_cmd"
354
+ done
355
+ fi
356
+ else
357
+ echo -e "${GREEN}All installed tools are up to date!${NC}"
358
+ fi
359
+ }
360
+
361
+ main
362
+ exit $?