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,356 @@
1
+ #!/bin/bash
2
+ # shellcheck disable=SC2034,SC2155,SC2317,SC2329,SC2016,SC2181,SC1091,SC2154,SC2015,SC2086,SC2129,SC2030,SC2031,SC2119,SC2120,SC2001,SC2162,SC2088,SC2089,SC2090,SC2029,SC2006,SC2153
3
+
4
+ # Qlty CLI Integration Script
5
+ # Universal linting, auto-formatting, security scanning, and maintainability
6
+ #
7
+ # Author: AI DevOps Framework
8
+ # Version: 1.1.1
9
+
10
+ # Colors for output
11
+ readonly GREEN='\033[0;32m'
12
+ readonly RED='\033[0;31m'
13
+ readonly YELLOW='\033[1;33m'
14
+ readonly BLUE='\033[0;34m'
15
+ readonly NC='\033[0m'
16
+
17
+ # Common constants
18
+ readonly ERROR_UNKNOWN_COMMAND="Unknown command:"
19
+ print_success() {
20
+ local _arg1="$1"
21
+ echo -e "${GREEN}✅ $_arg1${NC}"
22
+ return 0
23
+ }
24
+
25
+ print_error() {
26
+ local _arg1="$1"
27
+ echo -e "${RED}❌ $_arg1${NC}" >&2
28
+ return 0
29
+ }
30
+
31
+ print_warning() {
32
+ local _arg1="$1"
33
+ echo -e "${YELLOW}⚠️ $_arg1${NC}"
34
+ return 0
35
+ }
36
+
37
+ print_info() {
38
+ local _arg1="$1"
39
+ echo -e "${BLUE}ℹ️ $_arg1${NC}"
40
+ return 0
41
+ }
42
+
43
+ print_header() {
44
+ local _arg1="$1"
45
+ echo -e "${BLUE}🚀 $_arg1${NC}"
46
+ echo "=========================================="
47
+ return 0
48
+ }
49
+
50
+ # Load API configuration with intelligent credential selection
51
+ load_api_config() {
52
+ local org="${1:-marcusquinn}" # Default to marcusquinn organization
53
+
54
+ # First check environment variables (set via mcp-env.sh, sourced by .zshrc)
55
+ local account_api_key="${QLTY_ACCOUNT_API_KEY:-}"
56
+ local api_key="${QLTY_API_KEY:-}"
57
+ local workspace_id="${QLTY_WORKSPACE_ID:-}"
58
+
59
+ # Intelligent credential selection
60
+ if [[ -n "$account_api_key" ]]; then
61
+ # Prefer account-level API key (broader access)
62
+ export QLTY_API_TOKEN="$account_api_key"
63
+ print_info "Using Qlty Account API Key (account-wide access)"
64
+
65
+ if [[ -n "$workspace_id" ]]; then
66
+ export QLTY_WORKSPACE_ID="$workspace_id"
67
+ print_info "Loaded Qlty Workspace ID for organization: $org"
68
+ fi
69
+
70
+ if [[ -n "$api_key" ]]; then
71
+ print_info "Note: Organization Coverage Token available but using Account API Key for broader access"
72
+ fi
73
+
74
+ return 0
75
+
76
+ elif [[ -n "$api_key" ]]; then
77
+ # Fall back to organization-specific coverage token
78
+ export QLTY_COVERAGE_TOKEN="$api_key"
79
+ print_info "Using Qlty Coverage Token for organization: $org"
80
+
81
+ if [[ -n "$workspace_id" ]]; then
82
+ export QLTY_WORKSPACE_ID="$workspace_id"
83
+ print_info "Loaded Qlty Workspace ID for organization: $org"
84
+ else
85
+ print_warning "No Qlty Workspace ID found for organization: $org (optional)"
86
+ fi
87
+
88
+ return 0
89
+
90
+ else
91
+ # No credentials found
92
+ print_warning "No Qlty credentials found"
93
+ print_info "Add to ~/.config/aidevops/mcp-env.sh:"
94
+ print_info " export QLTY_ACCOUNT_API_KEY=\"your-key\""
95
+ print_info " export QLTY_WORKSPACE_ID=\"your-workspace-id\""
96
+ return 1
97
+ fi
98
+ return 0
99
+ }
100
+
101
+ # Install Qlty CLI
102
+ install_qlty() {
103
+ print_header "Installing Qlty CLI"
104
+
105
+ if command -v qlty &> /dev/null; then
106
+ print_warning "Qlty CLI already installed: $(qlty --version)"
107
+ return 0
108
+ fi
109
+
110
+ print_info "Installing Qlty CLI..."
111
+
112
+ # Install using the official installer
113
+ # Use --proto =https to enforce HTTPS and prevent protocol downgrade
114
+ if command -v curl &> /dev/null; then
115
+ curl --proto '=https' -sSL https://qlty.sh | bash
116
+ else
117
+ print_error "curl is required to install Qlty CLI"
118
+ return 1
119
+ fi
120
+
121
+ # Update PATH for current session
122
+ export PATH="$HOME/.qlty/bin:$PATH"
123
+
124
+ # Verify installation
125
+ if command -v qlty &> /dev/null; then
126
+ print_success "Qlty CLI installed successfully: $(qlty --version)"
127
+ print_info "PATH updated for current session. Restart shell for permanent access."
128
+ return 0
129
+ else
130
+ print_error "Failed to install Qlty CLI"
131
+ return 1
132
+ fi
133
+ return 0
134
+ }
135
+
136
+ # Initialize Qlty in repository
137
+ init_qlty() {
138
+ print_header "Initializing Qlty in Repository"
139
+
140
+ if [[ ! -d ".git" ]]; then
141
+ print_error "Not in a Git repository. Qlty requires a Git repository."
142
+ return 1
143
+ fi
144
+
145
+ if [[ -f ".qlty/qlty.toml" ]]; then
146
+ print_warning "Qlty already initialized (.qlty/qlty.toml exists)"
147
+ return 0
148
+ fi
149
+
150
+ print_info "Initializing Qlty configuration..."
151
+ qlty init
152
+
153
+ if [[ -f ".qlty/qlty.toml" ]]; then
154
+ print_success "Qlty initialized successfully"
155
+ print_info "Configuration file created: .qlty/qlty.toml"
156
+ return 0
157
+ else
158
+ print_error "Failed to initialize Qlty"
159
+ return 1
160
+ fi
161
+ return 0
162
+ }
163
+
164
+ # Run Qlty check (linting)
165
+ check_qlty() {
166
+ local sample_size="$1"
167
+ local org="$2"
168
+
169
+ print_header "Running Qlty Code Quality Check"
170
+
171
+ # Load API configuration
172
+ load_api_config "$org"
173
+
174
+ if [[ ! -f ".qlty/qlty.toml" ]]; then
175
+ print_error "Qlty not initialized. Run 'init' first."
176
+ return 1
177
+ fi
178
+
179
+ local cmd="qlty check"
180
+
181
+ if [[ -n "$sample_size" ]]; then
182
+ cmd="$cmd --sample=$sample_size"
183
+ print_info "Running check with sample size: $sample_size"
184
+ else
185
+ print_info "Running full codebase check"
186
+ fi
187
+
188
+ print_info "Executing: $cmd"
189
+ eval "$cmd"
190
+
191
+ return $?
192
+ }
193
+
194
+ # Run Qlty auto-formatting
195
+ format_qlty() {
196
+ local scope="$1"
197
+ local org="$2"
198
+
199
+ print_header "Running Qlty Auto-Formatting"
200
+
201
+ # Load API configuration
202
+ load_api_config "$org"
203
+
204
+ if [[ ! -f ".qlty/qlty.toml" ]]; then
205
+ print_error "Qlty not initialized. Run 'init' first."
206
+ return 1
207
+ fi
208
+
209
+ local cmd="qlty fmt"
210
+
211
+ if [[ "$scope" == "--all" ]]; then
212
+ cmd="$cmd --all"
213
+ print_info "Auto-formatting entire codebase"
214
+ else
215
+ print_info "Auto-formatting changed files"
216
+ fi
217
+
218
+ print_info "Executing: $cmd"
219
+
220
+ if eval "$cmd"; then
221
+ print_success "Auto-formatting completed successfully"
222
+ return 0
223
+ else
224
+ print_error "Auto-formatting failed"
225
+ return 1
226
+ fi
227
+ return 0
228
+ }
229
+
230
+ # Run Qlty code smells detection
231
+ smells_qlty() {
232
+ local scope="$1"
233
+ local org="$2"
234
+
235
+ print_header "Running Qlty Code Smells Detection"
236
+
237
+ # Load API configuration
238
+ load_api_config "$org"
239
+
240
+ if [[ ! -f ".qlty/qlty.toml" ]]; then
241
+ print_error "Qlty not initialized. Run 'init' first."
242
+ return 1
243
+ fi
244
+
245
+ local cmd="qlty smells"
246
+
247
+ if [[ "$scope" == "--all" ]]; then
248
+ cmd="$cmd --all"
249
+ print_info "Scanning entire codebase for code smells"
250
+ else
251
+ print_info "Scanning changed files for code smells"
252
+ fi
253
+
254
+ print_info "Executing: $cmd"
255
+ eval "$cmd"
256
+
257
+ return $?
258
+ }
259
+
260
+ # Show help
261
+ show_help() {
262
+ echo "Qlty CLI Integration - Universal Code Quality Tool"
263
+ echo ""
264
+ echo "Usage: $0 <command> [options]"
265
+ echo ""
266
+ echo "Commands:"
267
+ echo " install - Install Qlty CLI"
268
+ echo " init - Initialize Qlty in repository"
269
+ echo " check [sample] [org] - Run code quality check (optionally with sample size and organization)"
270
+ echo " fmt [--all] [org] - Auto-format code (optionally entire codebase and organization)"
271
+ echo " smells [--all] [org] - Detect code smells (optionally entire codebase and organization)"
272
+ echo " help - Show this help message"
273
+ echo ""
274
+ echo "Examples:"
275
+ echo " $0 install"
276
+ echo " $0 init"
277
+ echo " $0 check 5 # Check sample of 5 issues (default: marcusquinn org)"
278
+ echo " $0 check 5 myorg # Check sample of 5 issues for 'myorg' organization"
279
+ echo " $0 fmt --all # Format entire codebase (default: marcusquinn org)"
280
+ echo " $0 fmt --all myorg # Format entire codebase for 'myorg' organization"
281
+ echo " $0 smells --all # Scan all files for code smells"
282
+ echo ""
283
+ echo "Features:"
284
+ echo " 🐛 Linting: 70+ tools for 40+ languages"
285
+ echo " 🖌️ Auto-formatting: Consistent code style"
286
+ echo " 💩 Code smells: Duplication and complexity detection"
287
+ echo " 🚨 Security: SAST, SCA, secret detection"
288
+ echo " ⚡ Performance: Fast, concurrent execution"
289
+ echo ""
290
+ echo "Qlty Credential Management:"
291
+ echo " Add to ~/.config/aidevops/mcp-env.sh:"
292
+ echo " export QLTY_ACCOUNT_API_KEY=\"qltp_...\""
293
+ echo " export QLTY_API_KEY=\"qltcw_...\""
294
+ echo " export QLTY_WORKSPACE_ID=\"...\""
295
+ echo " Then run: source ~/.zshrc"
296
+ echo ""
297
+ echo "Credential Priority:"
298
+ echo " 1. Account API Key (qltp_...) - Preferred for account-wide access"
299
+ echo " 2. Coverage Token (qltcw_...) - Organization-specific access"
300
+ echo ""
301
+ echo "Current Qlty Configuration:"
302
+ if [[ -n "${QLTY_ACCOUNT_API_KEY:-}" ]]; then
303
+ echo " Account API Key: Configured (account-wide access)"
304
+ else
305
+ echo " Account API Key: Not configured"
306
+ fi
307
+ if [[ -n "${QLTY_API_KEY:-}" ]]; then
308
+ echo " Coverage Token: Configured"
309
+ else
310
+ echo " Coverage Token: Not configured"
311
+ fi
312
+ if [[ -n "${QLTY_WORKSPACE_ID:-}" ]]; then
313
+ echo " Workspace ID: Configured"
314
+ else
315
+ echo " Workspace ID: Not configured"
316
+ fi
317
+ return 0
318
+ }
319
+
320
+ # Main execution
321
+ main() {
322
+ local _arg1="$1"
323
+ local _arg2="$2"
324
+ local command="$1"
325
+ shift
326
+
327
+ case "$command" in
328
+ "install")
329
+ install_qlty
330
+ ;;
331
+ "init")
332
+ init_qlty
333
+ ;;
334
+ "check")
335
+ check_qlty "$_arg1" "$_arg2"
336
+ ;;
337
+ "fmt")
338
+ format_qlty "$_arg1" "$_arg2"
339
+ ;;
340
+ "smells")
341
+ smells_qlty "$_arg1" "$_arg2"
342
+ ;;
343
+ "help"|"--help"|"-h"|"")
344
+ show_help
345
+ ;;
346
+ *)
347
+ print_error "$ERROR_UNKNOWN_COMMAND $command"
348
+ echo ""
349
+ show_help
350
+ return 1
351
+ ;;
352
+ esac
353
+ return 0
354
+ }
355
+
356
+ main "$@"