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,388 @@
1
+ #!/usr/bin/env bash
2
+ # terminal-title-helper.sh - Terminal tab/window title integration for aidevops
3
+ # Part of aidevops framework: https://aidevops.sh
4
+ #
5
+ # Sets terminal tab titles using OSC escape sequences (works with most modern terminals)
6
+ # Supported: Tabby, iTerm2, Windows Terminal, Kitty, Alacritty, GNOME Terminal, etc.
7
+ #
8
+ # Usage:
9
+ # terminal-title-helper.sh [command] [options]
10
+ #
11
+ # Commands:
12
+ # rename [title] Set tab title (defaults to repo/branch)
13
+ # sync Sync tab title with current git repo/branch
14
+ # reset Reset tab title to default
15
+ # detect Check terminal compatibility
16
+ #
17
+ # Examples:
18
+ # terminal-title-helper.sh sync # Set title to "aidevops/feature/xyz"
19
+ # terminal-title-helper.sh rename "My Project" # Set custom title
20
+ # terminal-title-helper.sh reset # Clear custom title
21
+ #
22
+ # Environment:
23
+ # TERMINAL_TITLE_FORMAT Format string: "repo/branch" (default), "branch", "repo"
24
+ # TERMINAL_TITLE_ENABLED Set to "false" to disable terminal title integration
25
+
26
+ set -euo pipefail
27
+
28
+ # Colors
29
+ RED='\033[0;31m'
30
+ GREEN='\033[0;32m'
31
+ YELLOW='\033[1;33m'
32
+ BLUE='\033[0;34m'
33
+ NC='\033[0m'
34
+
35
+ # Logging
36
+ log_info() { echo -e "${BLUE}[INFO]${NC} $*"; }
37
+ log_success() { echo -e "${GREEN}[OK]${NC} $*"; }
38
+ log_warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
39
+ log_error() { echo -e "${RED}[ERROR]${NC} $*" >&2; }
40
+
41
+ # Configuration (support both old and new env var names for compatibility)
42
+ TERMINAL_TITLE_FORMAT="${TERMINAL_TITLE_FORMAT:-${TABBY_TAB_TITLE_FORMAT:-repo/branch}}"
43
+ TERMINAL_TITLE_ENABLED="${TERMINAL_TITLE_ENABLED:-${AIDEVOPS_TABBY_ENABLED:-true}}"
44
+
45
+ # =============================================================================
46
+ # Core Functions
47
+ # =============================================================================
48
+
49
+ # Set tab title using OSC escape sequence
50
+ # Works with most modern terminals: Tabby, iTerm2, Windows Terminal, Kitty, Alacritty, etc.
51
+ set_tab_title() {
52
+ local title="$1"
53
+
54
+ if [[ "$TERMINAL_TITLE_ENABLED" == "false" ]]; then
55
+ return 0
56
+ fi
57
+
58
+ # OSC 0 sets both icon name and window title
59
+ # OSC 2 sets window title only
60
+ # Using OSC 0 for broader compatibility
61
+ printf '\033]0;%s\007' "$title"
62
+ }
63
+
64
+ # Reset tab title to default (empty string triggers terminal default)
65
+ reset_tab_title() {
66
+ # Send empty title to reset
67
+ printf '\033]0;\007'
68
+ log_success "Tab title reset to default"
69
+ }
70
+
71
+ # Detect terminal type and OSC compatibility
72
+ detect_terminal() {
73
+ local term_program="${TERM_PROGRAM:-}"
74
+ local term="${TERM:-}"
75
+
76
+ # Check known terminals by TERM_PROGRAM
77
+ case "$term_program" in
78
+ "Tabby")
79
+ echo "tabby"
80
+ return 0
81
+ ;;
82
+ "iTerm.app")
83
+ echo "iterm2"
84
+ return 0
85
+ ;;
86
+ "Apple_Terminal")
87
+ echo "apple-terminal"
88
+ return 0
89
+ ;;
90
+ "vscode")
91
+ echo "vscode"
92
+ return 0
93
+ ;;
94
+ "WezTerm")
95
+ echo "wezterm"
96
+ return 0
97
+ ;;
98
+ "Hyper")
99
+ echo "hyper"
100
+ return 0
101
+ ;;
102
+ *)
103
+ # Not a known TERM_PROGRAM, continue to TERM check
104
+ ;;
105
+ esac
106
+
107
+ # Check by TERM variable for other terminals
108
+ case "$term" in
109
+ xterm*|rxvt*|screen*|tmux*|alacritty|kitty*)
110
+ echo "compatible"
111
+ return 0
112
+ ;;
113
+ *)
114
+ # Not a known TERM, continue to other checks
115
+ ;;
116
+ esac
117
+
118
+ # Check for Windows Terminal
119
+ if [[ -n "${WT_SESSION:-}" ]]; then
120
+ echo "windows-terminal"
121
+ return 0
122
+ fi
123
+
124
+ # Check for Kitty
125
+ if [[ -n "${KITTY_WINDOW_ID:-}" ]]; then
126
+ echo "kitty"
127
+ return 0
128
+ fi
129
+
130
+ # Fallback - if TERM is set and not dumb, likely compatible
131
+ if [[ -n "$term" ]] && [[ "$term" != "dumb" ]]; then
132
+ echo "compatible"
133
+ return 0
134
+ fi
135
+
136
+ echo "unknown"
137
+ return 1
138
+ }
139
+
140
+ # Get current git repository name (resolves to main repo name even in worktrees)
141
+ get_repo_name() {
142
+ local git_common_dir repo_path
143
+
144
+ # git rev-parse --git-common-dir returns the main .git directory
145
+ # even when in a linked worktree
146
+ git_common_dir=$(git rev-parse --git-common-dir 2>/dev/null) || return 1
147
+
148
+ # Convert to absolute path to handle subdirectories correctly
149
+ # realpath may not exist on all systems, use cd/pwd as fallback
150
+ local abs_path=""
151
+ if command -v realpath &>/dev/null; then
152
+ abs_path=$(realpath "$git_common_dir" 2>/dev/null)
153
+ fi
154
+
155
+ # Fallback to cd/pwd if realpath failed or doesn't exist
156
+ if [[ -z "$abs_path" ]]; then
157
+ abs_path=$(cd "$git_common_dir" 2>/dev/null && pwd) || return 1
158
+ fi
159
+
160
+ git_common_dir="$abs_path"
161
+
162
+ # The common dir is the .git folder of the main repo
163
+ # Get its parent to find the main repo root
164
+ repo_path=$(dirname "$git_common_dir")
165
+
166
+ basename "$repo_path"
167
+ }
168
+
169
+ # Get current git branch name
170
+ get_branch_name() {
171
+ git branch --show-current 2>/dev/null || echo ""
172
+ }
173
+
174
+ # Generate tab title based on format
175
+ generate_title() {
176
+ local format="${1:-$TERMINAL_TITLE_FORMAT}"
177
+ local repo_name branch_name
178
+
179
+ repo_name=$(get_repo_name) || repo_name=""
180
+ branch_name=$(get_branch_name) || branch_name=""
181
+
182
+ case "$format" in
183
+ "repo/branch")
184
+ if [[ -n "$repo_name" ]] && [[ -n "$branch_name" ]]; then
185
+ echo "${repo_name}/${branch_name}"
186
+ elif [[ -n "$repo_name" ]]; then
187
+ echo "$repo_name"
188
+ elif [[ -n "$branch_name" ]]; then
189
+ echo "$branch_name"
190
+ else
191
+ echo ""
192
+ fi
193
+ ;;
194
+ "branch")
195
+ echo "$branch_name"
196
+ ;;
197
+ "repo")
198
+ echo "$repo_name"
199
+ ;;
200
+ "branch/repo")
201
+ if [[ -n "$branch_name" ]] && [[ -n "$repo_name" ]]; then
202
+ echo "${branch_name} (${repo_name})"
203
+ elif [[ -n "$branch_name" ]]; then
204
+ echo "$branch_name"
205
+ elif [[ -n "$repo_name" ]]; then
206
+ echo "$repo_name"
207
+ else
208
+ echo ""
209
+ fi
210
+ ;;
211
+ *)
212
+ # Custom format - use as-is
213
+ echo "$format"
214
+ ;;
215
+ esac
216
+ }
217
+
218
+ # =============================================================================
219
+ # Commands
220
+ # =============================================================================
221
+
222
+ cmd_rename() {
223
+ local title="${1:-}"
224
+
225
+ if [[ -z "$title" ]]; then
226
+ # Generate title from git context
227
+ title=$(generate_title)
228
+ fi
229
+
230
+ if [[ -z "$title" ]]; then
231
+ log_warn "No title provided and not in a git repository"
232
+ return 1
233
+ fi
234
+
235
+ set_tab_title "$title"
236
+ log_success "Tab title set to: $title"
237
+ }
238
+
239
+ cmd_sync() {
240
+ local title
241
+ title=$(generate_title)
242
+
243
+ if [[ -z "$title" ]]; then
244
+ log_warn "Not in a git repository - cannot sync tab title"
245
+ return 1
246
+ fi
247
+
248
+ set_tab_title "$title"
249
+ log_success "Tab synced: $title"
250
+ }
251
+
252
+ cmd_reset() {
253
+ reset_tab_title
254
+ }
255
+
256
+ cmd_detect() {
257
+ local terminal
258
+ terminal=$(detect_terminal)
259
+ local upper_terminal
260
+ upper_terminal=$(echo "$terminal" | tr '[:lower:]-' '[:upper:]_')
261
+
262
+ case "$terminal" in
263
+ "tabby")
264
+ log_success "Running in Tabby terminal (full OSC support)"
265
+ ;;
266
+ "iterm2")
267
+ log_success "Running in iTerm2 (full OSC support)"
268
+ ;;
269
+ "windows-terminal")
270
+ log_success "Running in Windows Terminal (full OSC support)"
271
+ ;;
272
+ "kitty")
273
+ log_success "Running in Kitty terminal (full OSC support)"
274
+ ;;
275
+ "wezterm")
276
+ log_success "Running in WezTerm (full OSC support)"
277
+ ;;
278
+ "vscode")
279
+ log_success "Running in VS Code integrated terminal (OSC support)"
280
+ ;;
281
+ "apple-terminal")
282
+ log_success "Running in Apple Terminal (basic OSC support)"
283
+ ;;
284
+ "hyper")
285
+ log_success "Running in Hyper terminal (OSC support)"
286
+ ;;
287
+ "compatible")
288
+ log_info "Running in OSC-compatible terminal: ${TERM:-unknown}"
289
+ ;;
290
+ *)
291
+ log_warn "Unknown terminal - OSC sequences may not work"
292
+ echo "$upper_terminal"
293
+ return 1
294
+ ;;
295
+ esac
296
+
297
+ echo "$upper_terminal"
298
+ }
299
+
300
+ cmd_help() {
301
+ cat << 'EOF'
302
+ terminal-title-helper.sh - Terminal tab/window title integration for aidevops
303
+
304
+ Sets terminal tab titles using OSC escape sequences. Works with most modern terminals:
305
+ Tabby, iTerm2, Windows Terminal, Kitty, Alacritty, WezTerm, Hyper, GNOME Terminal, etc.
306
+
307
+ USAGE:
308
+ terminal-title-helper.sh <command> [options]
309
+
310
+ COMMANDS:
311
+ rename [title] Set tab title (defaults to repo/branch if no title given)
312
+ sync Sync tab title with current git repo/branch
313
+ reset Reset tab title to terminal default
314
+ detect Check terminal type and OSC compatibility
315
+ help Show this help message
316
+
317
+ EXAMPLES:
318
+ # Sync tab title with git context
319
+ terminal-title-helper.sh sync
320
+
321
+ # Set custom title
322
+ terminal-title-helper.sh rename "My Project"
323
+
324
+ # Check terminal compatibility
325
+ terminal-title-helper.sh detect
326
+
327
+ ENVIRONMENT VARIABLES:
328
+ TERMINAL_TITLE_FORMAT
329
+ Format for auto-generated titles. Options:
330
+ - "repo/branch" (default): "aidevops/feature/xyz"
331
+ - "branch": "feature/xyz"
332
+ - "repo": "aidevops"
333
+ - "branch/repo": "feature/xyz (aidevops)"
334
+
335
+ TERMINAL_TITLE_ENABLED
336
+ Set to "false" to disable terminal title integration
337
+
338
+ SHELL INTEGRATION:
339
+ Add to ~/.bashrc or ~/.zshrc for automatic sync on directory change:
340
+
341
+ # Bash
342
+ PROMPT_COMMAND='~/.aidevops/agents/scripts/terminal-title-helper.sh sync 2>/dev/null'
343
+
344
+ # Zsh
345
+ precmd() { ~/.aidevops/agents/scripts/terminal-title-helper.sh sync 2>/dev/null }
346
+
347
+ # Fish
348
+ function fish_prompt
349
+ ~/.aidevops/agents/scripts/terminal-title-helper.sh sync 2>/dev/null
350
+ # ... rest of prompt
351
+ end
352
+
353
+ EOF
354
+ }
355
+
356
+ # =============================================================================
357
+ # Main
358
+ # =============================================================================
359
+
360
+ main() {
361
+ local command="${1:-help}"
362
+ shift || true
363
+
364
+ case "$command" in
365
+ rename)
366
+ cmd_rename "$@"
367
+ ;;
368
+ sync)
369
+ cmd_sync
370
+ ;;
371
+ reset)
372
+ cmd_reset
373
+ ;;
374
+ detect)
375
+ cmd_detect
376
+ ;;
377
+ help|--help|-h)
378
+ cmd_help
379
+ ;;
380
+ *)
381
+ log_error "Unknown command: $command"
382
+ cmd_help
383
+ return 1
384
+ ;;
385
+ esac
386
+ }
387
+
388
+ main "$@"