aidevops 2.110.10 → 2.110.12

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 (4) hide show
  1. package/VERSION +1 -1
  2. package/aidevops.sh +3 -2
  3. package/package.json +1 -1
  4. package/setup.sh +212 -21
package/VERSION CHANGED
@@ -1 +1 @@
1
- 2.110.10
1
+ 2.110.12
package/aidevops.sh CHANGED
@@ -3,7 +3,7 @@
3
3
  # AI DevOps Framework CLI
4
4
  # Usage: aidevops <command> [options]
5
5
  #
6
- # Version: 2.110.10
6
+ # Version: 2.110.12
7
7
 
8
8
  set -euo pipefail
9
9
 
@@ -1107,7 +1107,8 @@ EOF
1107
1107
  if ! command -v bd &> /dev/null; then
1108
1108
  print_warning "Beads CLI (bd) not installed"
1109
1109
  echo " Install with: brew install steveyegge/beads/bd"
1110
- echo " Or: go install github.com/steveyegge/beads/cmd/bd@latest"
1110
+ echo " Or download: https://github.com/steveyegge/beads/releases"
1111
+ echo " Or via Go: go install github.com/steveyegge/beads/cmd/bd@latest"
1111
1112
  else
1112
1113
  # Initialize Beads in the project
1113
1114
  if [[ ! -d "$project_root/.beads" ]]; then
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aidevops",
3
- "version": "2.110.10",
3
+ "version": "2.110.12",
4
4
  "description": "AI DevOps Framework - AI-assisted development workflows, code quality, and deployment automation",
5
5
  "type": "module",
6
6
  "bin": {
package/setup.sh CHANGED
@@ -4,7 +4,7 @@ set -euo pipefail
4
4
  # AI Assistant Server Access Framework Setup Script
5
5
  # Helps developers set up the framework for their infrastructure
6
6
  #
7
- # Version: 2.110.10
7
+ # Version: 2.110.12
8
8
  #
9
9
  # Quick Install:
10
10
  # npm install -g aidevops && aidevops update (recommended)
@@ -1236,6 +1236,89 @@ install_packages() {
1236
1236
  esac
1237
1237
  }
1238
1238
 
1239
+ # Offer to install Homebrew (Linuxbrew) on Linux when brew is not available
1240
+ # Many tools in the aidevops ecosystem (Beads, Worktrunk, bv) are distributed
1241
+ # via Homebrew taps. On macOS, brew is almost always present. On Linux, this
1242
+ # function offers to install it so those tools can be installed automatically.
1243
+ # Returns: 0 if brew is now available, 1 if user declined or install failed
1244
+ ensure_homebrew() {
1245
+ # Already available
1246
+ if command -v brew &> /dev/null; then
1247
+ return 0
1248
+ fi
1249
+
1250
+ # Only offer on Linux (macOS users should install Homebrew themselves)
1251
+ if [[ "$(uname)" == "Darwin" ]]; then
1252
+ print_warning "Homebrew not found. Install from https://brew.sh"
1253
+ return 1
1254
+ fi
1255
+
1256
+ # Non-interactive mode: skip
1257
+ if [[ "$NON_INTERACTIVE" == "true" ]]; then
1258
+ return 1
1259
+ fi
1260
+
1261
+ echo ""
1262
+ print_info "Homebrew (Linuxbrew) is not installed."
1263
+ print_info "Several optional tools (Beads CLI, Worktrunk, bv) install via Homebrew taps."
1264
+ echo ""
1265
+ read -r -p "Install Homebrew for Linux? [Y/n]: " install_brew
1266
+
1267
+ if [[ ! "$install_brew" =~ ^[Yy]?$ ]]; then
1268
+ print_info "Skipped Homebrew installation"
1269
+ return 1
1270
+ fi
1271
+
1272
+ print_info "Installing Homebrew (Linuxbrew)..."
1273
+
1274
+ # Prerequisites for Linuxbrew
1275
+ if command -v apt-get &> /dev/null; then
1276
+ sudo apt-get update -qq
1277
+ sudo apt-get install -y -qq build-essential procps curl file git
1278
+ elif command -v dnf &> /dev/null; then
1279
+ sudo dnf groupinstall -y 'Development Tools'
1280
+ sudo dnf install -y procps-ng curl file git
1281
+ elif command -v yum &> /dev/null; then
1282
+ sudo yum groupinstall -y 'Development Tools'
1283
+ sudo yum install -y procps-ng curl file git
1284
+ fi
1285
+
1286
+ # Install Homebrew using verified_install pattern
1287
+ if verified_install "Homebrew" "https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh"; then
1288
+ # Add Homebrew to PATH for this session
1289
+ local brew_prefix="/home/linuxbrew/.linuxbrew"
1290
+ if [[ -x "$brew_prefix/bin/brew" ]]; then
1291
+ eval "$("$brew_prefix/bin/brew" shellenv)"
1292
+ fi
1293
+
1294
+ # Persist to shell rc files
1295
+ local brew_line="eval \"\$($brew_prefix/bin/brew shellenv)\""
1296
+ local rc_file
1297
+ while IFS= read -r rc_file; do
1298
+ [[ -z "$rc_file" ]] && continue
1299
+ if ! grep -q 'linuxbrew' "$rc_file" 2>/dev/null; then
1300
+ {
1301
+ echo ""
1302
+ echo "# Homebrew (Linuxbrew) - added by aidevops setup"
1303
+ echo "$brew_line"
1304
+ } >> "$rc_file"
1305
+ fi
1306
+ done < <(get_all_shell_rcs)
1307
+
1308
+ if command -v brew &> /dev/null; then
1309
+ print_success "Homebrew installed and added to PATH"
1310
+ return 0
1311
+ else
1312
+ print_warning "Homebrew installed but not yet in PATH. Restart your shell or run:"
1313
+ echo " $brew_line"
1314
+ return 1
1315
+ fi
1316
+ else
1317
+ print_warning "Homebrew installation failed"
1318
+ return 1
1319
+ fi
1320
+ }
1321
+
1239
1322
  # Check system requirements
1240
1323
  check_requirements() {
1241
1324
  print_info "Checking system requirements..."
@@ -2989,7 +3072,7 @@ deploy_plugins() {
2989
3072
  while IFS= read -r disabled_ns; do
2990
3073
  [[ -z "$disabled_ns" ]] && continue
2991
3074
  if [[ -d "$target_dir/$disabled_ns" ]]; then
2992
- rm -rf "$target_dir/$disabled_ns"
3075
+ rm -rf "${target_dir:?}/${disabled_ns:?}"
2993
3076
  print_info " Removed disabled plugin directory: $disabled_ns"
2994
3077
  fi
2995
3078
  done < <(jq -r '.plugins[] | select(.enabled == false) | .namespace // empty' "$plugins_file" 2>/dev/null)
@@ -3535,7 +3618,8 @@ setup_nodejs_env() {
3535
3618
  return
3536
3619
  fi
3537
3620
 
3538
- local node_version=$(node --version | cut -d'v' -f2 | cut -d'.' -f1)
3621
+ local node_version
3622
+ node_version=$(node --version | cut -d'v' -f2 | cut -d'.' -f1)
3539
3623
  if [[ $node_version -lt 18 ]]; then
3540
3624
  print_warning "Node.js 18+ required for DSPyGround, found v$node_version - DSPyGround setup skipped"
3541
3625
  return
@@ -3811,7 +3895,8 @@ setup_augment_context_engine() {
3811
3895
  return
3812
3896
  fi
3813
3897
 
3814
- local node_version=$(node --version | cut -d'v' -f2 | cut -d'.' -f1)
3898
+ local node_version
3899
+ node_version=$(node --version | cut -d'v' -f2 | cut -d'.' -f1)
3815
3900
  if [[ $node_version -lt 22 ]]; then
3816
3901
  print_warning "Node.js 22+ required for Augment Context Engine, found v$node_version"
3817
3902
  print_info "Install: brew install node@22 (macOS) or nvm install 22"
@@ -3913,6 +3998,106 @@ setup_osgrep() {
3913
3998
  return 0
3914
3999
  }
3915
4000
 
4001
+ # Install Beads CLI from GitHub release binary
4002
+ # Downloads the prebuilt binary for the current platform from GitHub releases.
4003
+ # Returns: 0 on success, 1 on failure
4004
+ install_beads_binary() {
4005
+ local os arch tarball_name
4006
+ os=$(uname -s | tr '[:upper:]' '[:lower:]')
4007
+ arch=$(uname -m)
4008
+
4009
+ # Map architecture names to Beads release naming convention
4010
+ case "$arch" in
4011
+ x86_64|amd64) arch="amd64" ;;
4012
+ aarch64|arm64) arch="arm64" ;;
4013
+ *)
4014
+ print_warning "Unsupported architecture for Beads binary download: $arch"
4015
+ return 1
4016
+ ;;
4017
+ esac
4018
+
4019
+ # Get latest version tag from GitHub API
4020
+ local latest_version
4021
+ latest_version=$(curl -fsSL "https://api.github.com/repos/steveyegge/beads/releases/latest" 2>/dev/null \
4022
+ | grep '"tag_name"' | head -1 | sed 's/.*"tag_name": *"v\{0,1\}\([^"]*\)".*/\1/')
4023
+
4024
+ if [[ -z "$latest_version" ]]; then
4025
+ print_warning "Could not determine latest Beads version from GitHub"
4026
+ return 1
4027
+ fi
4028
+
4029
+ tarball_name="beads_${latest_version}_${os}_${arch}.tar.gz"
4030
+ local download_url="https://github.com/steveyegge/beads/releases/download/v${latest_version}/${tarball_name}"
4031
+
4032
+ print_info "Downloading Beads CLI v${latest_version} (${os}/${arch})..."
4033
+
4034
+ local tmp_dir
4035
+ tmp_dir=$(mktemp -d)
4036
+ # shellcheck disable=SC2064
4037
+ trap "rm -rf '$tmp_dir'" RETURN
4038
+
4039
+ if ! curl -fsSL "$download_url" -o "$tmp_dir/$tarball_name" 2>/dev/null; then
4040
+ print_warning "Failed to download Beads binary from $download_url"
4041
+ return 1
4042
+ fi
4043
+
4044
+ # Extract and install
4045
+ if ! tar -xzf "$tmp_dir/$tarball_name" -C "$tmp_dir" 2>/dev/null; then
4046
+ print_warning "Failed to extract Beads binary"
4047
+ return 1
4048
+ fi
4049
+
4050
+ # Find the bd binary in the extracted files
4051
+ local bd_binary
4052
+ bd_binary=$(find "$tmp_dir" -name "bd" -type f 2>/dev/null | head -1)
4053
+ if [[ -z "$bd_binary" ]]; then
4054
+ print_warning "bd binary not found in downloaded archive"
4055
+ return 1
4056
+ fi
4057
+
4058
+ # Install to a writable location
4059
+ local install_dir="/usr/local/bin"
4060
+ if [[ ! -w "$install_dir" ]]; then
4061
+ if command -v sudo &> /dev/null; then
4062
+ sudo install -m 755 "$bd_binary" "$install_dir/bd"
4063
+ else
4064
+ # Fallback to user-local bin
4065
+ install_dir="$HOME/.local/bin"
4066
+ mkdir -p "$install_dir"
4067
+ install -m 755 "$bd_binary" "$install_dir/bd"
4068
+ # Ensure ~/.local/bin is in PATH
4069
+ if ! echo "$PATH" | grep -q "$HOME/.local/bin"; then
4070
+ export PATH="$HOME/.local/bin:$PATH"
4071
+ print_info "Added ~/.local/bin to PATH for this session"
4072
+ fi
4073
+ fi
4074
+ else
4075
+ install -m 755 "$bd_binary" "$install_dir/bd"
4076
+ fi
4077
+
4078
+ if command -v bd &> /dev/null; then
4079
+ print_success "Beads CLI installed via binary download (v${latest_version})"
4080
+ return 0
4081
+ else
4082
+ print_warning "Beads binary installed to $install_dir/bd but not found in PATH"
4083
+ return 1
4084
+ fi
4085
+ }
4086
+
4087
+ # Install Beads CLI via Go
4088
+ # Returns: 0 on success, 1 on failure
4089
+ install_beads_go() {
4090
+ if ! command -v go &> /dev/null; then
4091
+ return 1
4092
+ fi
4093
+ if run_with_spinner "Installing Beads via Go" go install github.com/steveyegge/beads/cmd/bd@latest; then
4094
+ print_info "Ensure \$GOPATH/bin is in your PATH"
4095
+ return 0
4096
+ fi
4097
+ print_warning "Go installation failed"
4098
+ return 1
4099
+ }
4100
+
3916
4101
  # Setup Beads - Task Graph Visualization
3917
4102
  setup_beads() {
3918
4103
  print_info "Setting up Beads (task graph visualization)..."
@@ -3929,30 +4114,36 @@ setup_beads() {
3929
4114
  : # Success message handled by spinner
3930
4115
  else
3931
4116
  print_warning "Homebrew tap installation failed, trying alternative..."
3932
- # Try Go install if Go is available
3933
- if command -v go &> /dev/null; then
3934
- if run_with_spinner "Installing Beads via Go" go install github.com/steveyegge/beads/cmd/bd@latest; then
3935
- print_info "Ensure \$GOPATH/bin is in your PATH"
3936
- else
3937
- print_warning "Go installation failed"
3938
- fi
3939
- fi
4117
+ install_beads_binary || install_beads_go
3940
4118
  fi
3941
4119
  elif command -v go &> /dev/null; then
3942
4120
  if run_with_spinner "Installing Beads via Go" go install github.com/steveyegge/beads/cmd/bd@latest; then
3943
4121
  print_info "Ensure \$GOPATH/bin is in your PATH"
3944
4122
  else
3945
- print_warning "Go installation failed"
4123
+ print_warning "Go installation failed, trying binary download..."
4124
+ install_beads_binary
3946
4125
  fi
3947
4126
  else
3948
- # Provide manual installation instructions
3949
- print_warning "Beads CLI (bd) not installed"
3950
- echo ""
3951
- echo " Install options:"
3952
- echo " macOS/Linux (Homebrew): brew install steveyegge/beads/bd"
3953
- echo " Go: go install github.com/steveyegge/beads/cmd/bd@latest"
3954
- echo " Manual: https://github.com/steveyegge/beads/releases"
3955
- echo ""
4127
+ # No brew, no Go -- try binary download first, then offer Homebrew install
4128
+ if ! install_beads_binary; then
4129
+ # Binary download failed -- offer to install Homebrew (Linux only)
4130
+ if ensure_homebrew; then
4131
+ # Homebrew now available, retry via tap
4132
+ if run_with_spinner "Installing Beads via Homebrew" brew install steveyegge/beads/bd; then
4133
+ : # Success
4134
+ else
4135
+ print_warning "Homebrew tap installation failed"
4136
+ fi
4137
+ else
4138
+ print_warning "Beads CLI (bd) not installed"
4139
+ echo ""
4140
+ echo " Install options:"
4141
+ echo " Binary download: https://github.com/steveyegge/beads/releases"
4142
+ echo " macOS/Linux (Homebrew): brew install steveyegge/beads/bd"
4143
+ echo " Go: go install github.com/steveyegge/beads/cmd/bd@latest"
4144
+ echo ""
4145
+ fi
4146
+ fi
3956
4147
  fi
3957
4148
  fi
3958
4149