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.
- package/.agent/AGENTS.md +614 -0
- package/.agent/accounts.md +65 -0
- package/.agent/aidevops/add-new-mcp-to-aidevops.md +456 -0
- package/.agent/aidevops/api-integrations.md +335 -0
- package/.agent/aidevops/architecture.md +510 -0
- package/.agent/aidevops/configs.md +274 -0
- package/.agent/aidevops/docs.md +244 -0
- package/.agent/aidevops/extension.md +311 -0
- package/.agent/aidevops/mcp-integrations.md +340 -0
- package/.agent/aidevops/mcp-troubleshooting.md +162 -0
- package/.agent/aidevops/memory-patterns.md +172 -0
- package/.agent/aidevops/providers.md +217 -0
- package/.agent/aidevops/recommendations.md +321 -0
- package/.agent/aidevops/requirements.md +301 -0
- package/.agent/aidevops/resources.md +214 -0
- package/.agent/aidevops/security-requirements.md +174 -0
- package/.agent/aidevops/security.md +350 -0
- package/.agent/aidevops/service-links.md +400 -0
- package/.agent/aidevops/services.md +357 -0
- package/.agent/aidevops/setup.md +153 -0
- package/.agent/aidevops/troubleshooting.md +389 -0
- package/.agent/aidevops.md +124 -0
- package/.agent/build-plus.md +244 -0
- package/.agent/content/guidelines.md +109 -0
- package/.agent/content.md +87 -0
- package/.agent/health.md +59 -0
- package/.agent/legal.md +59 -0
- package/.agent/loop-state/full-loop.local.md +16 -0
- package/.agent/loop-state/ralph-loop.local.md +10 -0
- package/.agent/marketing.md +440 -0
- package/.agent/memory/README.md +260 -0
- package/.agent/onboarding.md +796 -0
- package/.agent/plan-plus.md +245 -0
- package/.agent/research.md +100 -0
- package/.agent/sales.md +333 -0
- package/.agent/scripts/101domains-helper.sh +701 -0
- package/.agent/scripts/add-missing-returns.sh +140 -0
- package/.agent/scripts/agent-browser-helper.sh +311 -0
- package/.agent/scripts/agno-setup.sh +712 -0
- package/.agent/scripts/ahrefs-mcp-wrapper.js +168 -0
- package/.agent/scripts/aidevops-update-check.sh +71 -0
- package/.agent/scripts/ampcode-cli.sh +522 -0
- package/.agent/scripts/auto-version-bump.sh +156 -0
- package/.agent/scripts/autogen-helper.sh +512 -0
- package/.agent/scripts/beads-sync-helper.sh +596 -0
- package/.agent/scripts/closte-helper.sh +5 -0
- package/.agent/scripts/cloudron-helper.sh +321 -0
- package/.agent/scripts/codacy-cli-chunked.sh +581 -0
- package/.agent/scripts/codacy-cli.sh +442 -0
- package/.agent/scripts/code-audit-helper.sh +5 -0
- package/.agent/scripts/coderabbit-cli.sh +417 -0
- package/.agent/scripts/coderabbit-pro-analysis.sh +238 -0
- package/.agent/scripts/commands/code-simplifier.md +86 -0
- package/.agent/scripts/commands/full-loop.md +246 -0
- package/.agent/scripts/commands/postflight-loop.md +103 -0
- package/.agent/scripts/commands/recall.md +182 -0
- package/.agent/scripts/commands/remember.md +132 -0
- package/.agent/scripts/commands/save-todo.md +175 -0
- package/.agent/scripts/commands/session-review.md +154 -0
- package/.agent/scripts/comprehensive-quality-fix.sh +106 -0
- package/.agent/scripts/context-builder-helper.sh +522 -0
- package/.agent/scripts/coolify-cli-helper.sh +674 -0
- package/.agent/scripts/coolify-helper.sh +380 -0
- package/.agent/scripts/crawl4ai-examples.sh +401 -0
- package/.agent/scripts/crawl4ai-helper.sh +1078 -0
- package/.agent/scripts/crewai-helper.sh +681 -0
- package/.agent/scripts/dev-browser-helper.sh +513 -0
- package/.agent/scripts/dns-helper.sh +396 -0
- package/.agent/scripts/domain-research-helper.sh +917 -0
- package/.agent/scripts/dspy-helper.sh +285 -0
- package/.agent/scripts/dspyground-helper.sh +291 -0
- package/.agent/scripts/eeat-score-helper.sh +1242 -0
- package/.agent/scripts/efficient-return-fix.sh +92 -0
- package/.agent/scripts/extract-opencode-prompts.sh +128 -0
- package/.agent/scripts/find-missing-returns.sh +113 -0
- package/.agent/scripts/fix-auth-headers.sh +104 -0
- package/.agent/scripts/fix-common-strings.sh +254 -0
- package/.agent/scripts/fix-content-type.sh +100 -0
- package/.agent/scripts/fix-error-messages.sh +130 -0
- package/.agent/scripts/fix-misplaced-returns.sh +74 -0
- package/.agent/scripts/fix-remaining-literals.sh +152 -0
- package/.agent/scripts/fix-return-statements.sh +41 -0
- package/.agent/scripts/fix-s131-default-cases.sh +249 -0
- package/.agent/scripts/fix-sc2155-simple.sh +102 -0
- package/.agent/scripts/fix-shellcheck-critical.sh +187 -0
- package/.agent/scripts/fix-string-literals.sh +273 -0
- package/.agent/scripts/full-loop-helper.sh +773 -0
- package/.agent/scripts/generate-opencode-agents.sh +497 -0
- package/.agent/scripts/generate-opencode-commands.sh +1629 -0
- package/.agent/scripts/generate-skills.sh +366 -0
- package/.agent/scripts/git-platforms-helper.sh +640 -0
- package/.agent/scripts/gitea-cli-helper.sh +743 -0
- package/.agent/scripts/github-cli-helper.sh +702 -0
- package/.agent/scripts/gitlab-cli-helper.sh +682 -0
- package/.agent/scripts/gsc-add-user-helper.sh +325 -0
- package/.agent/scripts/gsc-sitemap-helper.sh +678 -0
- package/.agent/scripts/hetzner-helper.sh +485 -0
- package/.agent/scripts/hostinger-helper.sh +229 -0
- package/.agent/scripts/keyword-research-helper.sh +1815 -0
- package/.agent/scripts/langflow-helper.sh +544 -0
- package/.agent/scripts/linkedin-automation.py +241 -0
- package/.agent/scripts/linter-manager.sh +599 -0
- package/.agent/scripts/linters-local.sh +434 -0
- package/.agent/scripts/list-keys-helper.sh +488 -0
- package/.agent/scripts/local-browser-automation.py +339 -0
- package/.agent/scripts/localhost-helper.sh +744 -0
- package/.agent/scripts/loop-common.sh +806 -0
- package/.agent/scripts/mainwp-helper.sh +728 -0
- package/.agent/scripts/markdown-formatter.sh +338 -0
- package/.agent/scripts/markdown-lint-fix.sh +311 -0
- package/.agent/scripts/mass-fix-returns.sh +58 -0
- package/.agent/scripts/mcp-diagnose.sh +167 -0
- package/.agent/scripts/mcp-inspector-helper.sh +449 -0
- package/.agent/scripts/memory-helper.sh +650 -0
- package/.agent/scripts/monitor-code-review.sh +255 -0
- package/.agent/scripts/onboarding-helper.sh +706 -0
- package/.agent/scripts/opencode-github-setup-helper.sh +797 -0
- package/.agent/scripts/opencode-test-helper.sh +213 -0
- package/.agent/scripts/pagespeed-helper.sh +464 -0
- package/.agent/scripts/pandoc-helper.sh +362 -0
- package/.agent/scripts/postflight-check.sh +555 -0
- package/.agent/scripts/pre-commit-hook.sh +259 -0
- package/.agent/scripts/pre-edit-check.sh +169 -0
- package/.agent/scripts/qlty-cli.sh +356 -0
- package/.agent/scripts/quality-cli-manager.sh +525 -0
- package/.agent/scripts/quality-feedback-helper.sh +462 -0
- package/.agent/scripts/quality-fix.sh +263 -0
- package/.agent/scripts/quality-loop-helper.sh +1108 -0
- package/.agent/scripts/ralph-loop-helper.sh +836 -0
- package/.agent/scripts/ralph-upstream-check.sh +341 -0
- package/.agent/scripts/secretlint-helper.sh +847 -0
- package/.agent/scripts/servers-helper.sh +241 -0
- package/.agent/scripts/ses-helper.sh +619 -0
- package/.agent/scripts/session-review-helper.sh +404 -0
- package/.agent/scripts/setup-linters-wizard.sh +379 -0
- package/.agent/scripts/setup-local-api-keys.sh +330 -0
- package/.agent/scripts/setup-mcp-integrations.sh +472 -0
- package/.agent/scripts/shared-constants.sh +246 -0
- package/.agent/scripts/site-crawler-helper.sh +1487 -0
- package/.agent/scripts/snyk-helper.sh +940 -0
- package/.agent/scripts/sonarcloud-autofix.sh +193 -0
- package/.agent/scripts/sonarcloud-cli.sh +191 -0
- package/.agent/scripts/sonarscanner-cli.sh +455 -0
- package/.agent/scripts/spaceship-helper.sh +747 -0
- package/.agent/scripts/stagehand-helper.sh +321 -0
- package/.agent/scripts/stagehand-python-helper.sh +321 -0
- package/.agent/scripts/stagehand-python-setup.sh +441 -0
- package/.agent/scripts/stagehand-setup.sh +439 -0
- package/.agent/scripts/system-cleanup.sh +340 -0
- package/.agent/scripts/terminal-title-helper.sh +388 -0
- package/.agent/scripts/terminal-title-setup.sh +549 -0
- package/.agent/scripts/test-stagehand-both-integration.sh +317 -0
- package/.agent/scripts/test-stagehand-integration.sh +309 -0
- package/.agent/scripts/test-stagehand-python-integration.sh +341 -0
- package/.agent/scripts/todo-ready.sh +263 -0
- package/.agent/scripts/tool-version-check.sh +362 -0
- package/.agent/scripts/toon-helper.sh +469 -0
- package/.agent/scripts/twilio-helper.sh +917 -0
- package/.agent/scripts/updown-helper.sh +279 -0
- package/.agent/scripts/validate-mcp-integrations.sh +250 -0
- package/.agent/scripts/validate-version-consistency.sh +131 -0
- package/.agent/scripts/vaultwarden-helper.sh +597 -0
- package/.agent/scripts/vercel-cli-helper.sh +816 -0
- package/.agent/scripts/verify-mirrors.sh +169 -0
- package/.agent/scripts/version-manager.sh +831 -0
- package/.agent/scripts/webhosting-helper.sh +471 -0
- package/.agent/scripts/webhosting-verify.sh +238 -0
- package/.agent/scripts/wordpress-mcp-helper.sh +508 -0
- package/.agent/scripts/worktree-helper.sh +595 -0
- package/.agent/scripts/worktree-sessions.sh +577 -0
- package/.agent/seo/dataforseo.md +215 -0
- package/.agent/seo/domain-research.md +532 -0
- package/.agent/seo/eeat-score.md +659 -0
- package/.agent/seo/google-search-console.md +366 -0
- package/.agent/seo/gsc-sitemaps.md +282 -0
- package/.agent/seo/keyword-research.md +521 -0
- package/.agent/seo/serper.md +278 -0
- package/.agent/seo/site-crawler.md +387 -0
- package/.agent/seo.md +236 -0
- package/.agent/services/accounting/quickfile.md +159 -0
- package/.agent/services/communications/telfon.md +470 -0
- package/.agent/services/communications/twilio.md +569 -0
- package/.agent/services/crm/fluentcrm.md +449 -0
- package/.agent/services/email/ses.md +399 -0
- package/.agent/services/hosting/101domains.md +378 -0
- package/.agent/services/hosting/closte.md +177 -0
- package/.agent/services/hosting/cloudflare.md +251 -0
- package/.agent/services/hosting/cloudron.md +478 -0
- package/.agent/services/hosting/dns-providers.md +335 -0
- package/.agent/services/hosting/domain-purchasing.md +344 -0
- package/.agent/services/hosting/hetzner.md +327 -0
- package/.agent/services/hosting/hostinger.md +287 -0
- package/.agent/services/hosting/localhost.md +419 -0
- package/.agent/services/hosting/spaceship.md +353 -0
- package/.agent/services/hosting/webhosting.md +330 -0
- package/.agent/social-media.md +69 -0
- package/.agent/templates/plans-template.md +114 -0
- package/.agent/templates/prd-template.md +129 -0
- package/.agent/templates/tasks-template.md +108 -0
- package/.agent/templates/todo-template.md +89 -0
- package/.agent/tools/ai-assistants/agno.md +471 -0
- package/.agent/tools/ai-assistants/capsolver.md +326 -0
- package/.agent/tools/ai-assistants/configuration.md +221 -0
- package/.agent/tools/ai-assistants/overview.md +209 -0
- package/.agent/tools/ai-assistants/status.md +171 -0
- package/.agent/tools/ai-assistants/windsurf.md +193 -0
- package/.agent/tools/ai-orchestration/autogen.md +406 -0
- package/.agent/tools/ai-orchestration/crewai.md +445 -0
- package/.agent/tools/ai-orchestration/langflow.md +405 -0
- package/.agent/tools/ai-orchestration/openprose.md +487 -0
- package/.agent/tools/ai-orchestration/overview.md +362 -0
- package/.agent/tools/ai-orchestration/packaging.md +647 -0
- package/.agent/tools/browser/agent-browser.md +464 -0
- package/.agent/tools/browser/browser-automation.md +400 -0
- package/.agent/tools/browser/chrome-devtools.md +282 -0
- package/.agent/tools/browser/crawl4ai-integration.md +422 -0
- package/.agent/tools/browser/crawl4ai-resources.md +277 -0
- package/.agent/tools/browser/crawl4ai-usage.md +416 -0
- package/.agent/tools/browser/crawl4ai.md +585 -0
- package/.agent/tools/browser/dev-browser.md +341 -0
- package/.agent/tools/browser/pagespeed.md +260 -0
- package/.agent/tools/browser/playwright.md +266 -0
- package/.agent/tools/browser/playwriter.md +310 -0
- package/.agent/tools/browser/stagehand-examples.md +456 -0
- package/.agent/tools/browser/stagehand-python.md +483 -0
- package/.agent/tools/browser/stagehand.md +421 -0
- package/.agent/tools/build-agent/agent-review.md +224 -0
- package/.agent/tools/build-agent/build-agent.md +784 -0
- package/.agent/tools/build-mcp/aidevops-plugin.md +476 -0
- package/.agent/tools/build-mcp/api-wrapper.md +445 -0
- package/.agent/tools/build-mcp/build-mcp.md +240 -0
- package/.agent/tools/build-mcp/deployment.md +401 -0
- package/.agent/tools/build-mcp/server-patterns.md +632 -0
- package/.agent/tools/build-mcp/transports.md +366 -0
- package/.agent/tools/code-review/auditing.md +383 -0
- package/.agent/tools/code-review/automation.md +219 -0
- package/.agent/tools/code-review/best-practices.md +203 -0
- package/.agent/tools/code-review/codacy.md +151 -0
- package/.agent/tools/code-review/code-simplifier.md +174 -0
- package/.agent/tools/code-review/code-standards.md +309 -0
- package/.agent/tools/code-review/coderabbit.md +101 -0
- package/.agent/tools/code-review/management.md +155 -0
- package/.agent/tools/code-review/qlty.md +248 -0
- package/.agent/tools/code-review/secretlint.md +565 -0
- package/.agent/tools/code-review/setup.md +250 -0
- package/.agent/tools/code-review/snyk.md +563 -0
- package/.agent/tools/code-review/tools.md +230 -0
- package/.agent/tools/content/summarize.md +353 -0
- package/.agent/tools/context/augment-context-engine.md +468 -0
- package/.agent/tools/context/context-builder-agent.md +76 -0
- package/.agent/tools/context/context-builder.md +375 -0
- package/.agent/tools/context/context7.md +371 -0
- package/.agent/tools/context/dspy.md +302 -0
- package/.agent/tools/context/dspyground.md +374 -0
- package/.agent/tools/context/llm-tldr.md +219 -0
- package/.agent/tools/context/osgrep.md +488 -0
- package/.agent/tools/context/prompt-optimization.md +338 -0
- package/.agent/tools/context/toon.md +292 -0
- package/.agent/tools/conversion/pandoc.md +304 -0
- package/.agent/tools/credentials/api-key-management.md +154 -0
- package/.agent/tools/credentials/api-key-setup.md +224 -0
- package/.agent/tools/credentials/environment-variables.md +180 -0
- package/.agent/tools/credentials/vaultwarden.md +382 -0
- package/.agent/tools/data-extraction/outscraper.md +974 -0
- package/.agent/tools/deployment/coolify-cli.md +388 -0
- package/.agent/tools/deployment/coolify-setup.md +353 -0
- package/.agent/tools/deployment/coolify.md +345 -0
- package/.agent/tools/deployment/vercel.md +390 -0
- package/.agent/tools/git/authentication.md +132 -0
- package/.agent/tools/git/gitea-cli.md +193 -0
- package/.agent/tools/git/github-actions.md +207 -0
- package/.agent/tools/git/github-cli.md +223 -0
- package/.agent/tools/git/gitlab-cli.md +190 -0
- package/.agent/tools/git/opencode-github-security.md +350 -0
- package/.agent/tools/git/opencode-github.md +328 -0
- package/.agent/tools/git/opencode-gitlab.md +252 -0
- package/.agent/tools/git/security.md +196 -0
- package/.agent/tools/git.md +207 -0
- package/.agent/tools/opencode/oh-my-opencode.md +375 -0
- package/.agent/tools/opencode/opencode-anthropic-auth.md +446 -0
- package/.agent/tools/opencode/opencode.md +651 -0
- package/.agent/tools/social-media/bird.md +437 -0
- package/.agent/tools/task-management/beads.md +336 -0
- package/.agent/tools/terminal/terminal-title.md +251 -0
- package/.agent/tools/ui/shadcn.md +196 -0
- package/.agent/tools/ui/ui-skills.md +115 -0
- package/.agent/tools/wordpress/localwp.md +311 -0
- package/.agent/tools/wordpress/mainwp.md +391 -0
- package/.agent/tools/wordpress/scf.md +527 -0
- package/.agent/tools/wordpress/wp-admin.md +729 -0
- package/.agent/tools/wordpress/wp-dev.md +940 -0
- package/.agent/tools/wordpress/wp-preferred.md +398 -0
- package/.agent/tools/wordpress.md +95 -0
- package/.agent/workflows/branch/bugfix.md +63 -0
- package/.agent/workflows/branch/chore.md +95 -0
- package/.agent/workflows/branch/experiment.md +115 -0
- package/.agent/workflows/branch/feature.md +59 -0
- package/.agent/workflows/branch/hotfix.md +98 -0
- package/.agent/workflows/branch/refactor.md +92 -0
- package/.agent/workflows/branch/release.md +96 -0
- package/.agent/workflows/branch.md +347 -0
- package/.agent/workflows/bug-fixing.md +267 -0
- package/.agent/workflows/changelog.md +129 -0
- package/.agent/workflows/code-audit-remote.md +279 -0
- package/.agent/workflows/conversation-starter.md +69 -0
- package/.agent/workflows/error-feedback.md +578 -0
- package/.agent/workflows/feature-development.md +355 -0
- package/.agent/workflows/git-workflow.md +702 -0
- package/.agent/workflows/multi-repo-workspace.md +268 -0
- package/.agent/workflows/plans.md +709 -0
- package/.agent/workflows/postflight.md +604 -0
- package/.agent/workflows/pr.md +571 -0
- package/.agent/workflows/preflight.md +278 -0
- package/.agent/workflows/ralph-loop.md +773 -0
- package/.agent/workflows/release.md +498 -0
- package/.agent/workflows/session-manager.md +254 -0
- package/.agent/workflows/session-review.md +311 -0
- package/.agent/workflows/sql-migrations.md +631 -0
- package/.agent/workflows/version-bump.md +283 -0
- package/.agent/workflows/wiki-update.md +333 -0
- package/.agent/workflows/worktree.md +477 -0
- package/LICENSE +21 -0
- package/README.md +1446 -0
- package/VERSION +1 -0
- package/aidevops.sh +1746 -0
- package/bin/aidevops +21 -0
- package/package.json +75 -0
- package/scripts/npm-postinstall.js +60 -0
- package/setup.sh +2366 -0
|
@@ -0,0 +1,549 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# shellcheck disable=SC2329
|
|
3
|
+
# terminal-title-setup.sh - Install shell integration for terminal title sync
|
|
4
|
+
# Part of aidevops framework: https://aidevops.sh
|
|
5
|
+
#
|
|
6
|
+
# Configures shell to sync terminal tab titles with git repo/branch.
|
|
7
|
+
# Supports: Zsh (with/without Oh-My-Zsh), Bash, Fish
|
|
8
|
+
#
|
|
9
|
+
# Usage:
|
|
10
|
+
# terminal-title-setup.sh [command]
|
|
11
|
+
#
|
|
12
|
+
# Commands:
|
|
13
|
+
# install Install shell integration (default)
|
|
14
|
+
# uninstall Remove shell integration
|
|
15
|
+
# status Check current installation status
|
|
16
|
+
# help Show this help message
|
|
17
|
+
|
|
18
|
+
set -euo pipefail
|
|
19
|
+
|
|
20
|
+
# Colors
|
|
21
|
+
RED='\033[0;31m'
|
|
22
|
+
GREEN='\033[0;32m'
|
|
23
|
+
YELLOW='\033[1;33m'
|
|
24
|
+
BLUE='\033[0;34m'
|
|
25
|
+
NC='\033[0m'
|
|
26
|
+
|
|
27
|
+
# Logging
|
|
28
|
+
log_info() { echo -e "${BLUE}[INFO]${NC} $*"; return 0; }
|
|
29
|
+
log_success() { echo -e "${GREEN}[SUCCESS]${NC} $*"; return 0; }
|
|
30
|
+
log_warn() { echo -e "${YELLOW}[WARNING]${NC} $*"; return 0; }
|
|
31
|
+
log_error() { echo -e "${RED}[ERROR]${NC} $*" >&2; return 0; }
|
|
32
|
+
|
|
33
|
+
# Marker comments for our integration
|
|
34
|
+
MARKER_START="# >>> aidevops terminal-title integration >>>"
|
|
35
|
+
MARKER_END="# <<< aidevops terminal-title integration <<<"
|
|
36
|
+
|
|
37
|
+
# =============================================================================
|
|
38
|
+
# Shell Detection
|
|
39
|
+
# =============================================================================
|
|
40
|
+
|
|
41
|
+
detect_shell() {
|
|
42
|
+
local shell_name
|
|
43
|
+
shell_name=$(basename "${SHELL:-/bin/bash}")
|
|
44
|
+
echo "$shell_name"
|
|
45
|
+
return 0
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
has_oh_my_zsh() {
|
|
49
|
+
[[ -d "$HOME/.oh-my-zsh" ]]
|
|
50
|
+
return 0
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
has_oh_my_bash() {
|
|
54
|
+
[[ -d "$HOME/.oh-my-bash" ]]
|
|
55
|
+
return 0
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
has_starship() {
|
|
59
|
+
command -v starship &>/dev/null
|
|
60
|
+
return 0
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
has_powerlevel10k() {
|
|
64
|
+
[[ -d "$HOME/.oh-my-zsh/custom/themes/powerlevel10k" ]] || \
|
|
65
|
+
[[ -d "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k" ]] || \
|
|
66
|
+
grep -q "powerlevel10k" "$HOME/.zshrc" 2>/dev/null
|
|
67
|
+
return 0
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
# =============================================================================
|
|
71
|
+
# Tabby Terminal Detection and Configuration
|
|
72
|
+
# =============================================================================
|
|
73
|
+
|
|
74
|
+
TABBY_CONFIG_FILE="$HOME/Library/Application Support/tabby/config.yaml"
|
|
75
|
+
|
|
76
|
+
has_tabby() {
|
|
77
|
+
[[ -f "$TABBY_CONFIG_FILE" ]]
|
|
78
|
+
return 0
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
# Check if Tabby has disableDynamicTitle: true (blocks OSC title changes)
|
|
82
|
+
tabby_has_dynamic_title_disabled() {
|
|
83
|
+
if [[ ! -f "$TABBY_CONFIG_FILE" ]]; then
|
|
84
|
+
return 1
|
|
85
|
+
fi
|
|
86
|
+
grep -q "disableDynamicTitle: true" "$TABBY_CONFIG_FILE" 2>/dev/null
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
# Count how many profiles have dynamic title disabled
|
|
90
|
+
tabby_count_disabled_profiles() {
|
|
91
|
+
if [[ ! -f "$TABBY_CONFIG_FILE" ]]; then
|
|
92
|
+
echo "0"
|
|
93
|
+
return 0
|
|
94
|
+
fi
|
|
95
|
+
grep -c "disableDynamicTitle: true" "$TABBY_CONFIG_FILE" 2>/dev/null || echo "0"
|
|
96
|
+
return 0
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
# Fix Tabby config to allow dynamic titles
|
|
100
|
+
tabby_enable_dynamic_titles() {
|
|
101
|
+
if [[ ! -f "$TABBY_CONFIG_FILE" ]]; then
|
|
102
|
+
log_error "Tabby config not found: $TABBY_CONFIG_FILE"
|
|
103
|
+
return 1
|
|
104
|
+
fi
|
|
105
|
+
|
|
106
|
+
# Create backup
|
|
107
|
+
cp "$TABBY_CONFIG_FILE" "${TABBY_CONFIG_FILE}.aidevops-backup"
|
|
108
|
+
|
|
109
|
+
# Replace all instances (cross-platform: works on both macOS and Linux)
|
|
110
|
+
local temp_file
|
|
111
|
+
temp_file=$(mktemp)
|
|
112
|
+
sed 's/disableDynamicTitle: true/disableDynamicTitle: false/g' "$TABBY_CONFIG_FILE" > "$temp_file" && mv "$temp_file" "$TABBY_CONFIG_FILE"
|
|
113
|
+
|
|
114
|
+
local count
|
|
115
|
+
count=$(grep -c "disableDynamicTitle: false" "$TABBY_CONFIG_FILE" 2>/dev/null || echo "0")
|
|
116
|
+
log_success "Updated $count Tabby profile(s) to allow dynamic titles"
|
|
117
|
+
log_info "Backup saved to: ${TABBY_CONFIG_FILE}.aidevops-backup"
|
|
118
|
+
log_info "Restart Tabby for changes to take effect"
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
# Check and offer to fix Tabby configuration
|
|
122
|
+
check_and_fix_tabby() {
|
|
123
|
+
if ! has_tabby; then
|
|
124
|
+
return 0
|
|
125
|
+
fi
|
|
126
|
+
|
|
127
|
+
if ! tabby_has_dynamic_title_disabled; then
|
|
128
|
+
log_success "Tabby is configured to allow dynamic tab titles"
|
|
129
|
+
return 0
|
|
130
|
+
fi
|
|
131
|
+
|
|
132
|
+
local count
|
|
133
|
+
count=$(tabby_count_disabled_profiles)
|
|
134
|
+
|
|
135
|
+
echo ""
|
|
136
|
+
log_warn "Tabby has 'disableDynamicTitle: true' in $count profile(s)"
|
|
137
|
+
log_info "This prevents terminal title sync from working"
|
|
138
|
+
echo ""
|
|
139
|
+
read -r -p "Fix Tabby config to allow dynamic titles? (y/n): " fix_tabby
|
|
140
|
+
|
|
141
|
+
if [[ "$fix_tabby" == "y" ]]; then
|
|
142
|
+
tabby_enable_dynamic_titles
|
|
143
|
+
else
|
|
144
|
+
log_info "Skipped Tabby config fix"
|
|
145
|
+
log_info "You can fix manually: Settings → Profiles → Uncheck 'Disable dynamic title'"
|
|
146
|
+
fi
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
# =============================================================================
|
|
150
|
+
# Integration Code Generators
|
|
151
|
+
# =============================================================================
|
|
152
|
+
|
|
153
|
+
generate_zsh_omz_integration() {
|
|
154
|
+
cat << 'EOF'
|
|
155
|
+
# Sync terminal tab title with git repo/branch (works with Oh-My-Zsh)
|
|
156
|
+
# Falls back to directory when not in a git repo
|
|
157
|
+
_aidevops_terminal_title() {
|
|
158
|
+
local title=""
|
|
159
|
+
if git rev-parse --is-inside-work-tree &>/dev/null 2>&1; then
|
|
160
|
+
local repo branch
|
|
161
|
+
repo=$(basename "$(git rev-parse --show-toplevel 2>/dev/null)")
|
|
162
|
+
branch=$(git branch --show-current 2>/dev/null)
|
|
163
|
+
if [[ -n "$repo" ]] && [[ -n "$branch" ]]; then
|
|
164
|
+
title="${repo}/${branch}"
|
|
165
|
+
elif [[ -n "$repo" ]]; then
|
|
166
|
+
title="$repo"
|
|
167
|
+
fi
|
|
168
|
+
fi
|
|
169
|
+
if [[ -n "$title" ]]; then
|
|
170
|
+
print -Pn "\e]0;${title}\a"
|
|
171
|
+
fi
|
|
172
|
+
return 0
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
# Override Oh-My-Zsh title variables to use our function
|
|
176
|
+
if [[ -n "${ZSH_VERSION:-}" ]] && [[ "${DISABLE_AUTO_TITLE:-}" != "true" ]]; then
|
|
177
|
+
# Hook into precmd to set title after Oh-My-Zsh
|
|
178
|
+
autoload -Uz add-zsh-hook
|
|
179
|
+
add-zsh-hook precmd _aidevops_terminal_title
|
|
180
|
+
fi
|
|
181
|
+
EOF
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
generate_zsh_plain_integration() {
|
|
185
|
+
cat << 'EOF'
|
|
186
|
+
# Sync terminal tab title with git repo/branch
|
|
187
|
+
_aidevops_terminal_title() {
|
|
188
|
+
local title=""
|
|
189
|
+
if git rev-parse --is-inside-work-tree &>/dev/null 2>&1; then
|
|
190
|
+
local repo branch
|
|
191
|
+
repo=$(basename "$(git rev-parse --show-toplevel 2>/dev/null)")
|
|
192
|
+
branch=$(git branch --show-current 2>/dev/null)
|
|
193
|
+
if [[ -n "$repo" ]] && [[ -n "$branch" ]]; then
|
|
194
|
+
title="${repo}/${branch}"
|
|
195
|
+
elif [[ -n "$repo" ]]; then
|
|
196
|
+
title="$repo"
|
|
197
|
+
fi
|
|
198
|
+
fi
|
|
199
|
+
if [[ -n "$title" ]]; then
|
|
200
|
+
print -Pn "\e]0;${title}\a"
|
|
201
|
+
fi
|
|
202
|
+
return 0
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
# Add to precmd hooks
|
|
206
|
+
autoload -Uz add-zsh-hook
|
|
207
|
+
add-zsh-hook precmd _aidevops_terminal_title
|
|
208
|
+
EOF
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
generate_bash_integration() {
|
|
212
|
+
cat << 'EOF'
|
|
213
|
+
# Sync terminal tab title with git repo/branch
|
|
214
|
+
_aidevops_terminal_title() {
|
|
215
|
+
local title=""
|
|
216
|
+
if git rev-parse --is-inside-work-tree &>/dev/null 2>&1; then
|
|
217
|
+
local repo branch
|
|
218
|
+
repo=$(basename "$(git rev-parse --show-toplevel 2>/dev/null)")
|
|
219
|
+
branch=$(git branch --show-current 2>/dev/null)
|
|
220
|
+
if [[ -n "$repo" ]] && [[ -n "$branch" ]]; then
|
|
221
|
+
title="${repo}/${branch}"
|
|
222
|
+
elif [[ -n "$repo" ]]; then
|
|
223
|
+
title="$repo"
|
|
224
|
+
fi
|
|
225
|
+
fi
|
|
226
|
+
if [[ -n "$title" ]]; then
|
|
227
|
+
echo -ne "\033]0;${title}\007"
|
|
228
|
+
fi
|
|
229
|
+
return 0
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
# Add to PROMPT_COMMAND
|
|
233
|
+
if [[ -z "${PROMPT_COMMAND:-}" ]]; then
|
|
234
|
+
PROMPT_COMMAND="_aidevops_terminal_title"
|
|
235
|
+
else
|
|
236
|
+
PROMPT_COMMAND="_aidevops_terminal_title; ${PROMPT_COMMAND}"
|
|
237
|
+
fi
|
|
238
|
+
EOF
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
generate_fish_integration() {
|
|
242
|
+
cat << 'EOF'
|
|
243
|
+
# Sync terminal tab title with git repo/branch
|
|
244
|
+
function _aidevops_terminal_title --on-event fish_prompt
|
|
245
|
+
if git rev-parse --is-inside-work-tree &>/dev/null 2>&1
|
|
246
|
+
set -l repo (basename (git rev-parse --show-toplevel 2>/dev/null))
|
|
247
|
+
set -l branch (git branch --show-current 2>/dev/null)
|
|
248
|
+
if test -n "$repo" -a -n "$branch"
|
|
249
|
+
printf '\033]0;%s/%s\007' $repo $branch
|
|
250
|
+
else if test -n "$repo"
|
|
251
|
+
printf '\033]0;%s\007' $repo
|
|
252
|
+
end
|
|
253
|
+
end
|
|
254
|
+
end
|
|
255
|
+
EOF
|
|
256
|
+
return 0
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
# =============================================================================
|
|
260
|
+
# Installation Functions
|
|
261
|
+
# =============================================================================
|
|
262
|
+
|
|
263
|
+
get_rc_file() {
|
|
264
|
+
local shell_name="$1"
|
|
265
|
+
case "$shell_name" in
|
|
266
|
+
zsh)
|
|
267
|
+
echo "$HOME/.zshrc"
|
|
268
|
+
;;
|
|
269
|
+
bash)
|
|
270
|
+
# Prefer .bashrc, fall back to .bash_profile
|
|
271
|
+
if [[ -f "$HOME/.bashrc" ]]; then
|
|
272
|
+
echo "$HOME/.bashrc"
|
|
273
|
+
else
|
|
274
|
+
echo "$HOME/.bash_profile"
|
|
275
|
+
fi
|
|
276
|
+
;;
|
|
277
|
+
fish)
|
|
278
|
+
echo "$HOME/.config/fish/config.fish"
|
|
279
|
+
;;
|
|
280
|
+
*)
|
|
281
|
+
echo ""
|
|
282
|
+
;;
|
|
283
|
+
esac
|
|
284
|
+
return 0
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
is_installed() {
|
|
288
|
+
local rc_file="$1"
|
|
289
|
+
[[ -f "$rc_file" ]] && grep -q "$MARKER_START" "$rc_file"
|
|
290
|
+
return 0
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
remove_integration() {
|
|
294
|
+
local rc_file="$1"
|
|
295
|
+
|
|
296
|
+
if [[ ! -f "$rc_file" ]]; then
|
|
297
|
+
return 0
|
|
298
|
+
fi
|
|
299
|
+
|
|
300
|
+
if ! grep -q "$MARKER_START" "$rc_file"; then
|
|
301
|
+
return 0
|
|
302
|
+
fi
|
|
303
|
+
|
|
304
|
+
# Create backup
|
|
305
|
+
cp "$rc_file" "${rc_file}.aidevops-backup"
|
|
306
|
+
|
|
307
|
+
# Remove our integration block (cross-platform: works on both macOS and Linux)
|
|
308
|
+
local temp_file
|
|
309
|
+
temp_file=$(mktemp)
|
|
310
|
+
sed "/$MARKER_START/,/$MARKER_END/d" "$rc_file" > "$temp_file" && mv "$temp_file" "$rc_file"
|
|
311
|
+
|
|
312
|
+
log_success "Removed integration from $rc_file (backup: ${rc_file}.aidevops-backup)"
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
install_integration() {
|
|
316
|
+
local shell_name="$1"
|
|
317
|
+
local rc_file="$2"
|
|
318
|
+
local integration_code=""
|
|
319
|
+
|
|
320
|
+
# Generate appropriate integration code
|
|
321
|
+
case "$shell_name" in
|
|
322
|
+
zsh)
|
|
323
|
+
if has_oh_my_zsh; then
|
|
324
|
+
log_info "Detected Oh-My-Zsh"
|
|
325
|
+
integration_code=$(generate_zsh_omz_integration)
|
|
326
|
+
else
|
|
327
|
+
integration_code=$(generate_zsh_plain_integration)
|
|
328
|
+
fi
|
|
329
|
+
;;
|
|
330
|
+
bash)
|
|
331
|
+
integration_code=$(generate_bash_integration)
|
|
332
|
+
;;
|
|
333
|
+
fish)
|
|
334
|
+
integration_code=$(generate_fish_integration)
|
|
335
|
+
;;
|
|
336
|
+
*)
|
|
337
|
+
log_error "Unsupported shell: $shell_name"
|
|
338
|
+
return 1
|
|
339
|
+
;;
|
|
340
|
+
esac
|
|
341
|
+
|
|
342
|
+
# Ensure rc file exists
|
|
343
|
+
if [[ ! -f "$rc_file" ]]; then
|
|
344
|
+
mkdir -p "$(dirname "$rc_file")"
|
|
345
|
+
touch "$rc_file"
|
|
346
|
+
fi
|
|
347
|
+
|
|
348
|
+
# Create backup
|
|
349
|
+
cp "$rc_file" "${rc_file}.aidevops-backup"
|
|
350
|
+
|
|
351
|
+
# Append integration
|
|
352
|
+
{
|
|
353
|
+
echo ""
|
|
354
|
+
echo "$MARKER_START"
|
|
355
|
+
echo "$integration_code"
|
|
356
|
+
echo "$MARKER_END"
|
|
357
|
+
} >> "$rc_file"
|
|
358
|
+
|
|
359
|
+
log_success "Installed integration to $rc_file"
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
# =============================================================================
|
|
363
|
+
# Commands
|
|
364
|
+
# =============================================================================
|
|
365
|
+
|
|
366
|
+
cmd_install() {
|
|
367
|
+
local shell_name
|
|
368
|
+
shell_name=$(detect_shell)
|
|
369
|
+
local rc_file
|
|
370
|
+
rc_file=$(get_rc_file "$shell_name")
|
|
371
|
+
|
|
372
|
+
if [[ -z "$rc_file" ]]; then
|
|
373
|
+
log_error "Could not determine RC file for shell: $shell_name"
|
|
374
|
+
return 1
|
|
375
|
+
fi
|
|
376
|
+
|
|
377
|
+
log_info "Detected shell: $shell_name"
|
|
378
|
+
log_info "RC file: $rc_file"
|
|
379
|
+
|
|
380
|
+
# Check for special configurations
|
|
381
|
+
if [[ "$shell_name" == "zsh" ]]; then
|
|
382
|
+
if has_oh_my_zsh; then
|
|
383
|
+
log_info "Oh-My-Zsh detected - will integrate with existing title hooks"
|
|
384
|
+
fi
|
|
385
|
+
if has_powerlevel10k; then
|
|
386
|
+
log_info "Powerlevel10k detected - integration should work alongside it"
|
|
387
|
+
fi
|
|
388
|
+
fi
|
|
389
|
+
|
|
390
|
+
if has_starship; then
|
|
391
|
+
log_info "Starship prompt detected - integration should work alongside it"
|
|
392
|
+
fi
|
|
393
|
+
|
|
394
|
+
# Remove existing integration if present
|
|
395
|
+
if is_installed "$rc_file"; then
|
|
396
|
+
log_info "Existing integration found, updating..."
|
|
397
|
+
remove_integration "$rc_file"
|
|
398
|
+
fi
|
|
399
|
+
|
|
400
|
+
# Install new integration
|
|
401
|
+
install_integration "$shell_name" "$rc_file"
|
|
402
|
+
|
|
403
|
+
# Check and fix Tabby configuration if needed
|
|
404
|
+
check_and_fix_tabby
|
|
405
|
+
|
|
406
|
+
echo ""
|
|
407
|
+
log_success "Terminal title integration installed!"
|
|
408
|
+
echo ""
|
|
409
|
+
echo "To activate, either:"
|
|
410
|
+
echo " 1. Restart your terminal, or"
|
|
411
|
+
echo " 2. Run: source $rc_file"
|
|
412
|
+
echo ""
|
|
413
|
+
echo "Your terminal tab will now show: repo/branch (e.g., aidevops/feature/xyz)"
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
cmd_uninstall() {
|
|
417
|
+
local shell_name
|
|
418
|
+
shell_name=$(detect_shell)
|
|
419
|
+
local rc_file
|
|
420
|
+
rc_file=$(get_rc_file "$shell_name")
|
|
421
|
+
|
|
422
|
+
if [[ -z "$rc_file" ]]; then
|
|
423
|
+
log_error "Could not determine RC file for shell: $shell_name"
|
|
424
|
+
return 1
|
|
425
|
+
fi
|
|
426
|
+
|
|
427
|
+
if ! is_installed "$rc_file"; then
|
|
428
|
+
log_info "No integration found in $rc_file"
|
|
429
|
+
return 0
|
|
430
|
+
fi
|
|
431
|
+
|
|
432
|
+
remove_integration "$rc_file"
|
|
433
|
+
|
|
434
|
+
echo ""
|
|
435
|
+
log_success "Terminal title integration removed!"
|
|
436
|
+
echo "Restart your terminal or run: source $rc_file"
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
cmd_status() {
|
|
440
|
+
local shell_name
|
|
441
|
+
shell_name=$(detect_shell)
|
|
442
|
+
local rc_file
|
|
443
|
+
rc_file=$(get_rc_file "$shell_name")
|
|
444
|
+
|
|
445
|
+
echo "Shell: $shell_name"
|
|
446
|
+
echo "RC file: $rc_file"
|
|
447
|
+
echo ""
|
|
448
|
+
|
|
449
|
+
if [[ "$shell_name" == "zsh" ]]; then
|
|
450
|
+
echo "Oh-My-Zsh: $(has_oh_my_zsh && echo "yes" || echo "no")"
|
|
451
|
+
echo "Powerlevel10k: $(has_powerlevel10k && echo "yes" || echo "no")"
|
|
452
|
+
fi
|
|
453
|
+
echo "Starship: $(has_starship && echo "yes" || echo "no")"
|
|
454
|
+
|
|
455
|
+
# Tabby status
|
|
456
|
+
if has_tabby; then
|
|
457
|
+
echo ""
|
|
458
|
+
echo "Tabby terminal: yes"
|
|
459
|
+
if tabby_has_dynamic_title_disabled; then
|
|
460
|
+
local count
|
|
461
|
+
count=$(tabby_count_disabled_profiles)
|
|
462
|
+
log_warn "Tabby has dynamic titles DISABLED in $count profile(s)"
|
|
463
|
+
echo " Run 'terminal-title-setup.sh install' to fix"
|
|
464
|
+
else
|
|
465
|
+
echo "Tabby dynamic titles: enabled"
|
|
466
|
+
fi
|
|
467
|
+
fi
|
|
468
|
+
echo ""
|
|
469
|
+
|
|
470
|
+
if [[ -n "$rc_file" ]] && is_installed "$rc_file"; then
|
|
471
|
+
log_success "Terminal title integration is installed"
|
|
472
|
+
else
|
|
473
|
+
log_warn "Terminal title integration is NOT installed"
|
|
474
|
+
echo "Run: terminal-title-setup.sh install"
|
|
475
|
+
fi
|
|
476
|
+
return 0
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
cmd_help() {
|
|
480
|
+
cat << 'EOF'
|
|
481
|
+
terminal-title-setup.sh - Install shell integration for terminal title sync
|
|
482
|
+
|
|
483
|
+
USAGE:
|
|
484
|
+
terminal-title-setup.sh [command]
|
|
485
|
+
|
|
486
|
+
COMMANDS:
|
|
487
|
+
install Install shell integration (default)
|
|
488
|
+
uninstall Remove shell integration
|
|
489
|
+
status Check current installation status
|
|
490
|
+
help Show this help message
|
|
491
|
+
|
|
492
|
+
SUPPORTED SHELLS:
|
|
493
|
+
- Zsh (with or without Oh-My-Zsh, Powerlevel10k, Starship)
|
|
494
|
+
- Bash (with or without Oh-My-Bash)
|
|
495
|
+
- Fish
|
|
496
|
+
|
|
497
|
+
WHAT IT DOES:
|
|
498
|
+
Adds a hook to your shell that updates the terminal tab title
|
|
499
|
+
with the current git repository and branch name.
|
|
500
|
+
|
|
501
|
+
Format: repo/branch (e.g., aidevops/feature/xyz)
|
|
502
|
+
|
|
503
|
+
When not in a git repo, the title is not modified.
|
|
504
|
+
|
|
505
|
+
EXAMPLES:
|
|
506
|
+
# Install integration
|
|
507
|
+
terminal-title-setup.sh install
|
|
508
|
+
|
|
509
|
+
# Check status
|
|
510
|
+
terminal-title-setup.sh status
|
|
511
|
+
|
|
512
|
+
# Remove integration
|
|
513
|
+
terminal-title-setup.sh uninstall
|
|
514
|
+
|
|
515
|
+
EOF
|
|
516
|
+
return 0
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
# =============================================================================
|
|
520
|
+
# Main
|
|
521
|
+
# =============================================================================
|
|
522
|
+
|
|
523
|
+
main() {
|
|
524
|
+
local command="${1:-install}"
|
|
525
|
+
|
|
526
|
+
case "$command" in
|
|
527
|
+
install)
|
|
528
|
+
cmd_install
|
|
529
|
+
;;
|
|
530
|
+
uninstall)
|
|
531
|
+
cmd_uninstall
|
|
532
|
+
;;
|
|
533
|
+
status)
|
|
534
|
+
cmd_status
|
|
535
|
+
;;
|
|
536
|
+
help|--help|-h)
|
|
537
|
+
cmd_help
|
|
538
|
+
;;
|
|
539
|
+
*)
|
|
540
|
+
log_error "Unknown command: $command"
|
|
541
|
+
cmd_help
|
|
542
|
+
return 1
|
|
543
|
+
;;
|
|
544
|
+
esac
|
|
545
|
+
# Return status of the executed command
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
main "$@"
|
|
549
|
+
exit $?
|