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,488 @@
1
+ #!/bin/bash
2
+ # shellcheck disable=SC2034,SC2155
3
+
4
+ # List Keys Helper - Show all API keys available in session with their sources
5
+ # This script NEVER exposes actual key values, only names and locations
6
+ #
7
+ # Author: AI DevOps Framework
8
+ # Version: 1.0.0
9
+
10
+ set -euo pipefail
11
+
12
+ # Colors for output
13
+ readonly GREEN='\033[0;32m'
14
+ readonly BLUE='\033[0;34m'
15
+ readonly YELLOW='\033[1;33m'
16
+ readonly RED='\033[0;31m'
17
+ readonly DIM='\033[2m'
18
+ readonly NC='\033[0m'
19
+
20
+ # Key storage locations
21
+ readonly MCP_ENV_FILE="$HOME/.config/aidevops/mcp-env.sh"
22
+ readonly CODERABBIT_KEY_FILE="$HOME/.config/coderabbit/api_key"
23
+ readonly REPO_CONFIGS_DIR="./configs"
24
+
25
+ # Counters
26
+ total_keys=0
27
+ total_sources=0
28
+
29
+ print_header() {
30
+ echo ""
31
+ echo -e "${BLUE}API Keys Available in Session${NC}"
32
+ echo "==============================="
33
+ echo ""
34
+ return 0
35
+ }
36
+
37
+ print_source() {
38
+ local source="$1"
39
+ # Shorten home directory paths for readability
40
+ source="${source/#$HOME/~}"
41
+ echo -e "${BLUE}Source:${NC} $source"
42
+ ((total_sources++)) || true
43
+ return 0
44
+ }
45
+
46
+ print_key() {
47
+ local key_name="$1"
48
+ local status="$2"
49
+ local status_color="${GREEN}"
50
+
51
+ case "$status" in
52
+ "not loaded")
53
+ status_color="${YELLOW}"
54
+ ;;
55
+ "placeholder")
56
+ status_color="${RED}"
57
+ ;;
58
+ "configured")
59
+ status_color="${BLUE}"
60
+ ;;
61
+ *)
62
+ # Default: keep GREEN
63
+ ;;
64
+ esac
65
+
66
+ # Simple format: " KEY_NAME [status]" - no fixed width padding
67
+ echo -e " ${key_name} ${status_color}[${status}]${NC}"
68
+ ((total_keys++)) || true
69
+ return 0
70
+ }
71
+
72
+ # Check if a value is a placeholder (not a real key)
73
+ is_placeholder() {
74
+ local value="$1"
75
+
76
+ # Empty or very short values
77
+ if [[ -z "$value" || ${#value} -lt 4 ]]; then
78
+ return 0
79
+ fi
80
+
81
+ # Common placeholder patterns (case-insensitive)
82
+ local lower_value
83
+ lower_value=$(echo "$value" | tr '[:upper:]' '[:lower:]')
84
+
85
+ case "$lower_value" in
86
+ # Explicit placeholders
87
+ *your*key*|*your*token*|*your*secret*|*your*password*)
88
+ return 0 ;;
89
+ *replace*|*changeme*|*change_me*|*fixme*|*todo*)
90
+ return 0 ;;
91
+ *example*|*sample*|*test*key*|*dummy*|*fake*)
92
+ return 0 ;;
93
+ *insert*here*|*put*here*|*add*here*|*enter*here*)
94
+ return 0 ;;
95
+ # Generic placeholders
96
+ xxx*|yyy*|zzz*|aaa*|placeholder*|none|null|undefined)
97
+ return 0 ;;
98
+ # Template markers
99
+ *\<*\>*|*\{*\}*|*\[*\]*)
100
+ return 0 ;;
101
+ *)
102
+ # Not a placeholder pattern, continue checking
103
+ ;;
104
+ esac
105
+
106
+ # All same character (like "xxxx" or "0000")
107
+ if [[ "$value" =~ ^(.)\1+$ ]]; then
108
+ return 0
109
+ fi
110
+
111
+ return 1
112
+ }
113
+
114
+ check_key_loaded() {
115
+ local key_name="$1"
116
+ local value="${!key_name:-}"
117
+
118
+ if [[ -z "$value" ]]; then
119
+ echo "not loaded"
120
+ elif is_placeholder "$value"; then
121
+ echo "placeholder"
122
+ else
123
+ echo "loaded"
124
+ fi
125
+ return 0
126
+ }
127
+
128
+ # List keys from mcp-env.sh
129
+ list_mcp_env_keys() {
130
+ if [[ ! -f "$MCP_ENV_FILE" ]]; then
131
+ return 0
132
+ fi
133
+
134
+ print_source "$MCP_ENV_FILE"
135
+
136
+ while IFS= read -r line; do
137
+ # Extract variable name from export statements
138
+ if [[ "$line" =~ ^export[[:space:]]+([A-Z_][A-Z0-9_]*)= ]]; then
139
+ local key_name="${BASH_REMATCH[1]}"
140
+ local status
141
+ status=$(check_key_loaded "$key_name")
142
+ print_key "$key_name" "$status"
143
+ fi
144
+ done < "$MCP_ENV_FILE"
145
+
146
+ echo ""
147
+ return 0
148
+ }
149
+
150
+ # List environment-only keys (not from mcp-env.sh)
151
+ # Scans all env vars for credential patterns: *_KEY, *_TOKEN, *_SECRET, *_PASSWORD, *_API_*
152
+ list_env_only_keys() {
153
+ local mcp_keys=""
154
+ local found_env_only=0
155
+
156
+ # Get list of keys from mcp-env.sh for comparison
157
+ if [[ -f "$MCP_ENV_FILE" ]]; then
158
+ mcp_keys=$(grep -oE '^export[[:space:]]+[A-Z_][A-Z0-9_]*' "$MCP_ENV_FILE" 2>/dev/null | sed 's/export[[:space:]]*//' || true)
159
+ fi
160
+
161
+ # Scan all environment variables for credential patterns
162
+ # Patterns: *_KEY, *_TOKEN, *_SECRET, *_PASSWORD, *_CREDENTIAL, *_API_*, *_AUTH_*
163
+ local env_keys
164
+ env_keys=$(env | grep -E '^[A-Z_][A-Z0-9_]*=.' | cut -d= -f1 | grep -E '(_KEY|_TOKEN|_SECRET|_PASSWORD|_CREDENTIAL|_API_|_AUTH_|_ACCESS_)' | sort || true)
165
+
166
+ for key_name in $env_keys; do
167
+ # Skip if already in mcp-env.sh
168
+ if echo "$mcp_keys" | grep -q "^${key_name}$"; then
169
+ continue
170
+ fi
171
+
172
+ # Skip common non-credential env vars that match patterns
173
+ case "$key_name" in
174
+ SSH_AUTH_SOCK|GPG_AGENT_*|DBUS_*|XDG_*|GNOME_*|KDE_*)
175
+ continue
176
+ ;;
177
+ *)
178
+ # Process this key
179
+ ;;
180
+ esac
181
+
182
+ if [[ $found_env_only -eq 0 ]]; then
183
+ print_source "Environment (shell session)"
184
+ found_env_only=1
185
+ fi
186
+
187
+ local status
188
+ status=$(check_key_loaded "$key_name")
189
+ print_key "$key_name" "$status"
190
+ done
191
+
192
+ if [[ $found_env_only -eq 1 ]]; then
193
+ echo ""
194
+ fi
195
+
196
+ return 0
197
+ }
198
+
199
+ # List keys from shell config files (.zshrc, .bashrc, .bash_profile)
200
+ # These are exports defined directly in shell configs, not via mcp-env.sh
201
+ list_shell_config_keys() {
202
+ local mcp_keys=""
203
+ local found_shell_keys=0
204
+
205
+ # Get list of keys from mcp-env.sh for comparison
206
+ if [[ -f "$MCP_ENV_FILE" ]]; then
207
+ mcp_keys=$(grep -oE '^export[[:space:]]+[A-Z_][A-Z0-9_]*' "$MCP_ENV_FILE" 2>/dev/null | sed 's/export[[:space:]]*//' || true)
208
+ fi
209
+
210
+ # Shell config files to scan
211
+ local shell_configs=(
212
+ "$HOME/.zshrc"
213
+ "$HOME/.bashrc"
214
+ "$HOME/.bash_profile"
215
+ "$HOME/.profile"
216
+ "$HOME/.zprofile"
217
+ )
218
+
219
+ for config_file in "${shell_configs[@]}"; do
220
+ if [[ ! -f "$config_file" ]]; then
221
+ continue
222
+ fi
223
+
224
+ # Find export statements with credential patterns
225
+ local shell_keys
226
+ shell_keys=$(grep -E '^[[:space:]]*export[[:space:]]+[A-Z_][A-Z0-9_]*=' "$config_file" 2>/dev/null | \
227
+ grep -E '(_KEY|_TOKEN|_SECRET|_PASSWORD|_CREDENTIAL|_API_|_AUTH_)' | \
228
+ sed 's/.*export[[:space:]]*//' | cut -d= -f1 | sort -u || true)
229
+
230
+ for key_name in $shell_keys; do
231
+ # Skip if already in mcp-env.sh
232
+ if echo "$mcp_keys" | grep -q "^${key_name}$"; then
233
+ continue
234
+ fi
235
+
236
+ if [[ $found_shell_keys -eq 0 ]]; then
237
+ print_source "Shell configs (~/.zshrc, ~/.bashrc, etc.)"
238
+ found_shell_keys=1
239
+ fi
240
+
241
+ local status
242
+ status=$(check_key_loaded "$key_name")
243
+ print_key "$key_name" "$status"
244
+ done
245
+ done
246
+
247
+ if [[ $found_shell_keys -eq 1 ]]; then
248
+ echo ""
249
+ fi
250
+
251
+ return 0
252
+ }
253
+
254
+ # List CodeRabbit key
255
+ list_coderabbit_key() {
256
+ if [[ -f "$CODERABBIT_KEY_FILE" ]]; then
257
+ print_source "$CODERABBIT_KEY_FILE"
258
+ print_key "CODERABBIT_API_KEY" "loaded"
259
+ echo ""
260
+ fi
261
+ return 0
262
+ }
263
+
264
+ # List keys from repository configs
265
+ list_repo_config_keys() {
266
+ if [[ ! -d "$REPO_CONFIGS_DIR" ]]; then
267
+ return 0
268
+ fi
269
+
270
+ local found_configs=0
271
+
272
+ for config_file in "$REPO_CONFIGS_DIR"/*-config.json; do
273
+ if [[ -f "$config_file" ]]; then
274
+ if [[ $found_configs -eq 0 ]]; then
275
+ print_source "$REPO_CONFIGS_DIR/*-config.json (gitignored)"
276
+ found_configs=1
277
+ fi
278
+
279
+ # Extract key names from JSON (look for common patterns)
280
+ local keys
281
+ keys=$(grep -oE '"(api_key|apiKey|token|API_KEY|TOKEN|secret|SECRET)"' "$config_file" 2>/dev/null | tr -d '"' | sort -u || true)
282
+
283
+ if [[ -n "$keys" ]]; then
284
+ local basename
285
+ basename=$(basename "$config_file" .json)
286
+ for key in $keys; do
287
+ print_key "${basename}:${key}" "configured"
288
+ done
289
+ fi
290
+ fi
291
+ done
292
+
293
+ if [[ $found_configs -eq 1 ]]; then
294
+ echo ""
295
+ fi
296
+
297
+ return 0
298
+ }
299
+
300
+ print_summary() {
301
+ echo -e "${DIM}---${NC}"
302
+ echo -e "Total: ${GREEN}${total_keys}${NC} keys, ${BLUE}${total_sources}${NC} sources"
303
+ echo ""
304
+ echo -e "${DIM}Key values never displayed.${NC}"
305
+ return 0
306
+ }
307
+
308
+ show_help() {
309
+ echo "List Keys - Show all API keys available in session"
310
+ echo ""
311
+ echo "Usage: $0 [options]"
312
+ echo ""
313
+ echo "Options:"
314
+ echo " --help, -h Show this help message"
315
+ echo " --json Output in JSON format (for programmatic use)"
316
+ echo ""
317
+ echo "Sources checked:"
318
+ echo " 1. ~/.config/aidevops/mcp-env.sh (primary credential store)"
319
+ echo " 2. ~/.zshrc, ~/.bashrc, etc. (shell config exports)"
320
+ echo " 3. Environment variables (session-only, pattern match)"
321
+ echo " 4. ~/.config/coderabbit/api_key (CodeRabbit CLI)"
322
+ echo " 5. ./configs/*-config.json (repo-specific configs)"
323
+ echo ""
324
+ echo "Patterns matched: *_KEY, *_TOKEN, *_SECRET, *_PASSWORD, *_API_*, *_AUTH_*"
325
+ echo ""
326
+ echo "Security: This script NEVER displays actual key values."
327
+ return 0
328
+ }
329
+
330
+ output_json() {
331
+ echo "{"
332
+ echo ' "sources": ['
333
+
334
+ local first_source=1
335
+ local mcp_keys=""
336
+
337
+ # Get list of keys from mcp-env.sh for comparison
338
+ if [[ -f "$MCP_ENV_FILE" ]]; then
339
+ mcp_keys=$(grep -oE '^export[[:space:]]+[A-Z_][A-Z0-9_]*' "$MCP_ENV_FILE" 2>/dev/null | sed 's/export[[:space:]]*//' || true)
340
+ fi
341
+
342
+ # 1. mcp-env.sh keys
343
+ if [[ -f "$MCP_ENV_FILE" ]]; then
344
+ [[ $first_source -eq 0 ]] && echo ","
345
+ first_source=0
346
+ echo " {"
347
+ echo " \"path\": \"$MCP_ENV_FILE\","
348
+ echo ' "keys": ['
349
+
350
+ local first_key=1
351
+ while IFS= read -r line; do
352
+ if [[ "$line" =~ ^export[[:space:]]+([A-Z_][A-Z0-9_]*)= ]]; then
353
+ local key_name="${BASH_REMATCH[1]}"
354
+ local status
355
+ status=$(check_key_loaded "$key_name")
356
+ [[ $first_key -eq 0 ]] && echo ","
357
+ first_key=0
358
+ echo -n " {\"name\": \"$key_name\", \"status\": \"$status\"}"
359
+ fi
360
+ done < "$MCP_ENV_FILE"
361
+
362
+ echo ""
363
+ echo " ]"
364
+ echo -n " }"
365
+ fi
366
+
367
+ # 2. Shell config keys (not in mcp-env.sh)
368
+ local shell_configs=("$HOME/.zshrc" "$HOME/.bashrc" "$HOME/.bash_profile" "$HOME/.profile" "$HOME/.zprofile")
369
+ local shell_keys_json=""
370
+ local found_shell=0
371
+
372
+ for config_file in "${shell_configs[@]}"; do
373
+ if [[ -f "$config_file" ]]; then
374
+ local shell_keys
375
+ shell_keys=$(grep -E '^[[:space:]]*export[[:space:]]+[A-Z_][A-Z0-9_]*=' "$config_file" 2>/dev/null | \
376
+ grep -E '(_KEY|_TOKEN|_SECRET|_PASSWORD|_CREDENTIAL|_API_|_AUTH_)' | \
377
+ sed 's/.*export[[:space:]]*//' | cut -d= -f1 | sort -u || true)
378
+
379
+ for key_name in $shell_keys; do
380
+ if ! echo "$mcp_keys" | grep -q "^${key_name}$"; then
381
+ local status
382
+ status=$(check_key_loaded "$key_name")
383
+ if [[ $found_shell -eq 0 ]]; then
384
+ found_shell=1
385
+ else
386
+ shell_keys_json+=","
387
+ fi
388
+ shell_keys_json+=$'\n'" {\"name\": \"$key_name\", \"status\": \"$status\"}"
389
+ fi
390
+ done
391
+ fi
392
+ done
393
+
394
+ if [[ $found_shell -eq 1 ]]; then
395
+ [[ $first_source -eq 0 ]] && echo ","
396
+ first_source=0
397
+ echo " {"
398
+ echo " \"path\": \"~/.zshrc, ~/.bashrc, etc.\","
399
+ echo ' "keys": ['"$shell_keys_json"
400
+ echo " ]"
401
+ echo -n " }"
402
+ fi
403
+
404
+ # 3. Environment-only keys (pattern match, not in mcp-env.sh or shell configs)
405
+ local env_keys
406
+ env_keys=$(env | grep -E '^[A-Z_][A-Z0-9_]*=.' | cut -d= -f1 | grep -E '(_KEY|_TOKEN|_SECRET|_PASSWORD|_CREDENTIAL|_API_|_AUTH_|_ACCESS_)' | sort || true)
407
+ local env_keys_json=""
408
+ local found_env=0
409
+
410
+ for key_name in $env_keys; do
411
+ # Skip if in mcp-env.sh
412
+ if echo "$mcp_keys" | grep -q "^${key_name}$"; then
413
+ continue
414
+ fi
415
+ # Skip system vars
416
+ case "$key_name" in
417
+ SSH_AUTH_SOCK|GPG_AGENT_*|DBUS_*|XDG_*|GNOME_*|KDE_*)
418
+ continue ;;
419
+ *)
420
+ # Process this key
421
+ ;;
422
+ esac
423
+
424
+ local status
425
+ status=$(check_key_loaded "$key_name")
426
+ if [[ $found_env -eq 0 ]]; then
427
+ found_env=1
428
+ else
429
+ env_keys_json+=","
430
+ fi
431
+ env_keys_json+=$'\n'" {\"name\": \"$key_name\", \"status\": \"$status\"}"
432
+ done
433
+
434
+ if [[ $found_env -eq 1 ]]; then
435
+ [[ $first_source -eq 0 ]] && echo ","
436
+ first_source=0
437
+ echo " {"
438
+ echo " \"path\": \"Environment (session)\","
439
+ echo ' "keys": ['"$env_keys_json"
440
+ echo " ]"
441
+ echo -n " }"
442
+ fi
443
+
444
+ # 4. CodeRabbit key
445
+ if [[ -f "$CODERABBIT_KEY_FILE" ]]; then
446
+ [[ $first_source -eq 0 ]] && echo ","
447
+ first_source=0
448
+ echo " {"
449
+ echo " \"path\": \"$CODERABBIT_KEY_FILE\","
450
+ echo ' "keys": ['
451
+ echo " {\"name\": \"CODERABBIT_API_KEY\", \"status\": \"loaded\"}"
452
+ echo " ]"
453
+ echo -n " }"
454
+ fi
455
+
456
+ echo ""
457
+ echo " ]"
458
+ echo "}"
459
+ return 0
460
+ }
461
+
462
+ main() {
463
+ case "${1:-}" in
464
+ --help|-h)
465
+ show_help
466
+ return 0
467
+ ;;
468
+ --json)
469
+ output_json
470
+ return 0
471
+ ;;
472
+ *)
473
+ # Default: run normal output
474
+ ;;
475
+ esac
476
+
477
+ print_header
478
+ list_mcp_env_keys
479
+ list_shell_config_keys
480
+ list_env_only_keys
481
+ list_coderabbit_key
482
+ list_repo_config_keys
483
+ print_summary
484
+
485
+ return 0
486
+ }
487
+
488
+ main "$@"