aidevops 2.79.0 → 2.79.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/VERSION CHANGED
@@ -1 +1 @@
1
- 2.79.0
1
+ 2.79.1
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.79.0
6
+ # Version: 2.79.1
7
7
 
8
8
  set -euo pipefail
9
9
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aidevops",
3
- "version": "2.79.0",
3
+ "version": "2.79.1",
4
4
  "description": "AI DevOps Framework - AI-assisted development workflows, code quality, and deployment automation",
5
5
  "type": "module",
6
6
  "main": "index.js",
package/setup.sh CHANGED
@@ -3,7 +3,7 @@
3
3
  # AI Assistant Server Access Framework Setup Script
4
4
  # Helps developers set up the framework for their infrastructure
5
5
  #
6
- # Version: 2.79.0
6
+ # Version: 2.79.1
7
7
  #
8
8
  # Quick Install (one-liner):
9
9
  # bash <(curl -fsSL https://aidevops.dev/install)
@@ -228,10 +228,57 @@ cleanup_deprecated_mcps() {
228
228
  jq 'del(.agent.SEO.tools["dataforseo_*"]) | del(.agent.SEO.tools["serper_*"]) | del(.agent.SEO.tools["ahrefs_*"])' "$tmp_config" > "${tmp_config}.new" && mv "${tmp_config}.new" "$tmp_config"
229
229
  fi
230
230
 
231
+ # Migrate npx/pipx commands to bare binary names (faster startup)
232
+ # Maps: package-name -> binary-name
233
+ local -A mcp_migrations=(
234
+ ["chrome-devtools-mcp"]="chrome-devtools-mcp"
235
+ ["mcp-server-gsc"]="mcp-server-gsc"
236
+ ["repomix"]="repomix"
237
+ ["playwriter"]="playwriter"
238
+ ["@steipete/macos-automator-mcp"]="macos-automator-mcp"
239
+ ["@steipete/claude-code-mcp"]="claude-code-mcp"
240
+ ["analytics-mcp"]="analytics-mcp"
241
+ )
242
+
243
+ for pkg in "${!mcp_migrations[@]}"; do
244
+ local bin_name="${mcp_migrations[$pkg]}"
245
+ # Check if any MCP entry uses npx/bunx with this package
246
+ if jq -e ".mcp | to_entries[] | select(.value.command != null) | select(.value.command | join(\" \") | test(\"npx.*${pkg}|bunx.*${pkg}|pipx.*run.*${pkg}\"))" "$tmp_config" > /dev/null 2>&1; then
247
+ if command -v "$bin_name" &> /dev/null; then
248
+ # Find the MCP key and update its command to bare binary
249
+ local mcp_key
250
+ mcp_key=$(jq -r ".mcp | to_entries[] | select(.value.command != null) | select(.value.command | join(\" \") | test(\"npx.*${pkg}|bunx.*${pkg}|pipx.*run.*${pkg}\")) | .key" "$tmp_config" 2>/dev/null | head -1)
251
+ if [[ -n "$mcp_key" ]]; then
252
+ # Preserve --mcp flag for repomix
253
+ if [[ "$bin_name" == "repomix" ]]; then
254
+ jq ".mcp[\"$mcp_key\"].command = [\"$bin_name\", \"--mcp\"]" "$tmp_config" > "${tmp_config}.new" && mv "${tmp_config}.new" "$tmp_config"
255
+ else
256
+ jq ".mcp[\"$mcp_key\"].command = [\"$bin_name\"]" "$tmp_config" > "${tmp_config}.new" && mv "${tmp_config}.new" "$tmp_config"
257
+ fi
258
+ ((cleaned++))
259
+ fi
260
+ fi
261
+ fi
262
+ done
263
+
264
+ # Migrate outscraper from bash -c wrapper to bare binary
265
+ if jq -e '.mcp.outscraper.command | join(" ") | test("bash.*outscraper")' "$tmp_config" > /dev/null 2>&1; then
266
+ if command -v outscraper-mcp-server &> /dev/null; then
267
+ # Source the API key and set it in environment
268
+ local outscraper_key=""
269
+ if [[ -f "$HOME/.config/aidevops/mcp-env.sh" ]]; then
270
+ # shellcheck source=/dev/null
271
+ outscraper_key=$(source "$HOME/.config/aidevops/mcp-env.sh" && echo "${OUTSCRAPER_API_KEY:-}")
272
+ fi
273
+ jq --arg key "$outscraper_key" '.mcp.outscraper.command = ["outscraper-mcp-server"] | .mcp.outscraper.environment = {"OUTSCRAPER_API_KEY": $key}' "$tmp_config" > "${tmp_config}.new" && mv "${tmp_config}.new" "$tmp_config"
274
+ ((cleaned++))
275
+ fi
276
+ fi
277
+
231
278
  if [[ $cleaned -gt 0 ]]; then
232
279
  create_backup_with_rotation "$opencode_config" "opencode"
233
280
  mv "$tmp_config" "$opencode_config"
234
- print_info "Removed $cleaned deprecated MCP(s) from opencode.json (replaced by curl subagents)"
281
+ print_info "Updated $cleaned MCP entry/entries in opencode.json (removed npx overhead, using global binaries)"
235
282
  else
236
283
  rm -f "$tmp_config"
237
284
  fi
@@ -2085,6 +2132,89 @@ setup_nodejs_env() {
2085
2132
  fi
2086
2133
  }
2087
2134
 
2135
+ # Install MCP servers globally for fast startup (no npx/pipx overhead)
2136
+ install_mcp_packages() {
2137
+ print_info "Installing MCP server packages globally (eliminates npx startup delay)..."
2138
+
2139
+ # Node.js MCP packages (prefer bun, fallback to npm)
2140
+ local node_mcps=(
2141
+ "chrome-devtools-mcp"
2142
+ "mcp-server-gsc"
2143
+ "repomix"
2144
+ "playwriter"
2145
+ "@steipete/macos-automator-mcp"
2146
+ "@steipete/claude-code-mcp"
2147
+ )
2148
+
2149
+ local installer=""
2150
+ local install_cmd=""
2151
+
2152
+ if command -v bun &> /dev/null; then
2153
+ installer="bun"
2154
+ install_cmd="bun install -g"
2155
+ elif command -v npm &> /dev/null; then
2156
+ installer="npm"
2157
+ install_cmd="npm install -g"
2158
+ else
2159
+ print_warning "Neither bun nor npm found - cannot install MCP packages"
2160
+ print_info "Install bun (recommended): curl -fsSL https://bun.sh/install | bash"
2161
+ return 0
2162
+ fi
2163
+
2164
+ print_info "Using $installer for Node.js MCP packages..."
2165
+
2166
+ local installed=0
2167
+ local skipped=0
2168
+ for pkg in "${node_mcps[@]}"; do
2169
+ # Extract binary name from package name (strip @scope/ prefix)
2170
+ local bin_name
2171
+ bin_name="${pkg##*/}"
2172
+ if command -v "$bin_name" &> /dev/null; then
2173
+ ((skipped++))
2174
+ continue
2175
+ fi
2176
+ if $install_cmd "$pkg" > /dev/null 2>&1; then
2177
+ ((installed++))
2178
+ else
2179
+ print_warning "Failed to install $pkg"
2180
+ fi
2181
+ done
2182
+
2183
+ if [[ $installed -gt 0 ]]; then
2184
+ print_success "Installed $installed Node.js MCP packages via $installer"
2185
+ fi
2186
+ if [[ $skipped -gt 0 ]]; then
2187
+ print_info "$skipped Node.js MCP packages already installed"
2188
+ fi
2189
+
2190
+ # Python MCP packages
2191
+ if command -v pipx &> /dev/null; then
2192
+ if ! command -v analytics-mcp &> /dev/null; then
2193
+ print_info "Installing analytics-mcp via pipx..."
2194
+ if pipx install analytics-mcp > /dev/null 2>&1; then
2195
+ print_success "analytics-mcp installed"
2196
+ else
2197
+ print_warning "Failed to install analytics-mcp"
2198
+ fi
2199
+ fi
2200
+ fi
2201
+
2202
+ if command -v uv &> /dev/null; then
2203
+ if ! command -v outscraper-mcp-server &> /dev/null; then
2204
+ print_info "Installing outscraper-mcp-server via uv..."
2205
+ if uv tool install outscraper-mcp-server > /dev/null 2>&1; then
2206
+ print_success "outscraper-mcp-server installed"
2207
+ else
2208
+ print_warning "Failed to install outscraper-mcp-server"
2209
+ fi
2210
+ fi
2211
+ fi
2212
+
2213
+ print_info "MCP servers will start instantly (no registry lookups on each launch)"
2214
+ print_info "Run 'aidevops update-tools' to check for updates"
2215
+ return 0
2216
+ }
2217
+
2088
2218
  # Setup LocalWP MCP server for AI database access
2089
2219
  setup_localwp_mcp() {
2090
2220
  print_info "Setting up LocalWP MCP server..."
@@ -2843,7 +2973,7 @@ setup_google_analytics_mcp() {
2843
2973
  if jq --arg creds "$creds_path" --arg proj "$project_id" --argjson enabled "$enable_mcp" \
2844
2974
  '.mcp["google-analytics-mcp"] = {
2845
2975
  "type": "local",
2846
- "command": ["pipx", "run", "analytics-mcp"],
2976
+ "command": ["analytics-mcp"],
2847
2977
  "environment": {
2848
2978
  "GOOGLE_APPLICATION_CREDENTIALS": $creds,
2849
2979
  "GOOGLE_PROJECT_ID": $proj
@@ -3026,6 +3156,7 @@ main() {
3026
3156
  confirm_step "Update OpenCode configuration" && update_opencode_config
3027
3157
  confirm_step "Setup Python environment (DSPy, crawl4ai)" && setup_python_env
3028
3158
  confirm_step "Setup Node.js environment" && setup_nodejs_env
3159
+ confirm_step "Install MCP packages globally (fast startup)" && install_mcp_packages
3029
3160
  confirm_step "Setup LocalWP MCP server" && setup_localwp_mcp
3030
3161
  confirm_step "Setup Augment Context Engine MCP" && setup_augment_context_engine
3031
3162
  confirm_step "Setup osgrep (local semantic search)" && setup_osgrep