aidevops 3.13.52 → 3.13.54

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
- 3.13.52
1
+ 3.13.54
package/aidevops.sh CHANGED
@@ -5,7 +5,7 @@
5
5
  # AI DevOps Framework CLI
6
6
  # Usage: aidevops <command> [options]
7
7
  #
8
- # Version: 3.13.52
8
+ # Version: 3.13.54
9
9
 
10
10
  set -euo pipefail
11
11
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aidevops",
3
- "version": "3.13.52",
3
+ "version": "3.13.54",
4
4
  "description": "AI DevOps Framework - AI-assisted development workflows, code quality, and deployment automation",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env bash
2
2
  # SPDX-License-Identifier: MIT
3
3
  # SPDX-FileCopyrightText: 2025-2026 Marcus Quinn
4
- # MCP setup functions: install_mcp_packages, resolve_mcp_binary, localwp, augment, seo, analytics, quickfile, browser-tools, opencode-plugins
4
+ # MCP setup functions: install_mcp_packages, resolve_mcp_binary, localwp, seo, analytics, quickfile, browser-tools, opencode-plugins
5
5
  # Part of aidevops setup.sh modularization (t316.3)
6
6
 
7
7
  # Shell safety baseline
@@ -281,52 +281,6 @@ setup_localwp_mcp() {
281
281
  return 0
282
282
  }
283
283
 
284
- setup_augment_context_engine() {
285
- # Check prerequisites before announcing setup (GH#5240)
286
- if ! command -v node &>/dev/null; then
287
- print_skip "Augment Context Engine" "Node.js not installed" "Install Node.js 22+: brew install node@22 (macOS) or nvm install 22"
288
- setup_track_deferred "Augment Context Engine" "Install Node.js 22+"
289
- return 0
290
- fi
291
-
292
- local node_version
293
- node_version=$(node --version 2>/dev/null | cut -d'v' -f2 | cut -d'.' -f1)
294
- if [[ -z "$node_version" ]] || ! [[ "$node_version" =~ ^[0-9]+$ ]]; then
295
- print_skip "Augment Context Engine" "could not determine Node.js version"
296
- setup_track_skipped "Augment Context Engine" "Node.js version unknown"
297
- return 0
298
- fi
299
- if [[ "$node_version" -lt 22 ]]; then
300
- print_skip "Augment Context Engine" "requires Node.js 22+, found v$node_version" "Upgrade: brew install node@22 (macOS) or nvm install 22"
301
- setup_track_deferred "Augment Context Engine" "Upgrade Node.js to 22+ (currently v$node_version)"
302
- return 0
303
- fi
304
-
305
- if ! command -v auggie &>/dev/null; then
306
- print_skip "Augment Context Engine" "Auggie CLI not installed" "Install: npm install -g @augmentcode/auggie@prerelease && auggie login"
307
- setup_track_deferred "Augment Context Engine" "Install Auggie CLI: npm install -g @augmentcode/auggie@prerelease"
308
- return 0
309
- fi
310
-
311
- if [[ ! -f "$HOME/.augment/session.json" ]]; then
312
- print_skip "Augment Context Engine" "Auggie not logged in" "Run: auggie login"
313
- setup_track_deferred "Augment Context Engine" "Run: auggie login"
314
- return 0
315
- fi
316
-
317
- # Prerequisites met — proceed with setup
318
- print_info "Setting up Augment Context Engine MCP..."
319
- print_success "Auggie CLI found and authenticated"
320
-
321
- # MCP configuration is handled by generate-opencode-agents.sh for OpenCode
322
-
323
- print_info "Augment Context Engine available as MCP in OpenCode"
324
- print_info "Verification: 'What is this project? Please use codebase retrieval tool.'"
325
- setup_track_configured "Augment Context Engine"
326
-
327
- return 0
328
- }
329
-
330
284
  _setup_browser_tools_install_bun() {
331
285
  # Install Bun and add it to all shell rc files. Sets has_bun in caller scope.
332
286
  print_info "Installing Bun (required for dev-browser)..."
@@ -157,10 +157,12 @@ cleanup_osgrep() {
157
157
  local opencode_config
158
158
  opencode_config=$(find_opencode_config 2>/dev/null) || true
159
159
  if [[ -n "$opencode_config" ]] && [[ -f "$opencode_config" ]] && command -v jq &>/dev/null; then
160
- if jq -e '.mcp["osgrep"]' "$opencode_config" >/dev/null 2>&1; then
160
+ local osgrep_mcp="osgrep"
161
+ local osgrep_tool="osgrep_*"
162
+ if jq -e --arg mcp "$osgrep_mcp" '.mcp[$mcp]' "$opencode_config" >/dev/null 2>&1; then
161
163
  local tmp_file
162
164
  tmp_file=$(mktemp)
163
- if jq 'del(.mcp["osgrep"]) | del(.tools["osgrep_*"])' "$opencode_config" >"$tmp_file" 2>/dev/null; then
165
+ if jq --arg mcp "$osgrep_mcp" --arg tool "$osgrep_tool" 'del(.mcp[$mcp]) | del(.tools[$tool])' "$opencode_config" >"$tmp_file" 2>/dev/null; then
164
166
  mv "$tmp_file" "$opencode_config"
165
167
  print_info "Removed osgrep from OpenCode MCP config"
166
168
  else
@@ -487,8 +489,9 @@ _migrate_repo_gitignore() {
487
489
  if [[ "${NON_INTERACTIVE:-false}" == "true" ]]; then
488
490
  if [[ -f "$gitignore" ]]; then
489
491
  local needs_gitignore_update=false
492
+ local agents_loop_state_pattern="^\.agents/""loop-state/"
490
493
  if grep -q -e "^\.agents$" -e "^\.agent$" -e "^\.agent/loop-state/" "$gitignore" 2>/dev/null ||
491
- ! grep -q "^\.agents/loop-state/" "$gitignore" 2>/dev/null; then
494
+ ! grep -q "$agents_loop_state_pattern" "$gitignore" 2>/dev/null; then
492
495
  needs_gitignore_update=true
493
496
  fi
494
497
  if [[ "$needs_gitignore_update" == "true" ]]; then
@@ -673,6 +676,8 @@ _remove_deprecated_mcp_entries() {
673
676
 
674
677
  # MCPs replaced by curl subagents in v2.79.0
675
678
  local deprecated_mcps=(
679
+ "auggie-mcp"
680
+ "augment-context-engine"
676
681
  "hetzner-webapp"
677
682
  "hetzner-brandlight"
678
683
  "hetzner-marcusquinn"
@@ -686,7 +691,11 @@ _remove_deprecated_mcp_entries() {
686
691
  )
687
692
 
688
693
  # Tool rules to remove (for MCPs that no longer exist)
694
+ local auggie_tool="auggie-mcp_*"
695
+ local augment_tool="augment-context-engine_*"
689
696
  local deprecated_tools=(
697
+ "$auggie_tool"
698
+ "$augment_tool"
690
699
  "hetzner-*"
691
700
  "hostinger-api_*"
692
701
  "ahrefs_*"
@@ -697,8 +706,8 @@ _remove_deprecated_mcp_entries() {
697
706
  )
698
707
 
699
708
  for mcp in "${deprecated_mcps[@]}"; do
700
- if jq -e ".mcp[\"$mcp\"]" "$tmp_config" >/dev/null 2>&1; then
701
- jq "del(.mcp[\"$mcp\"])" "$tmp_config" >"${tmp_config}.new" && mv "${tmp_config}.new" "$tmp_config"
709
+ if jq -e --arg mcp "$mcp" '.mcp[$mcp]' "$tmp_config" >/dev/null 2>&1; then
710
+ jq --arg mcp "$mcp" 'del(.mcp[$mcp])' "$tmp_config" >"${tmp_config}.new" && mv "${tmp_config}.new" "$tmp_config"
702
711
  ((++_cleanup_count))
703
712
  fi
704
713
  done
@@ -711,10 +720,19 @@ _remove_deprecated_mcp_entries() {
711
720
  fi
712
721
  done
713
722
 
714
- # Also remove deprecated tool refs from SEO agent
715
- if jq -e '(.agent.SEO.tools // {}) | keys[]? | select(. == "dataforseo_*" or . == "serper_*" or . == "ahrefs_*")' \
723
+ # Also remove deprecated tool refs from agents
724
+ local ahrefs_tool="ahrefs_*"
725
+ if jq -e --arg ahrefs_tool "$ahrefs_tool" '(.agent.SEO.tools // {}) | keys[]? | select(. == "dataforseo_*" or . == "serper_*" or . == $ahrefs_tool)' \
726
+ "$tmp_config" >/dev/null 2>&1; then
727
+ jq --arg ahrefs_tool "$ahrefs_tool" 'del(.agent.SEO.tools["dataforseo_*"]) | del(.agent.SEO.tools["serper_*"]) | del(.agent.SEO.tools[$ahrefs_tool])' \
728
+ "$tmp_config" >"${tmp_config}.new" &&
729
+ mv "${tmp_config}.new" "$tmp_config" &&
730
+ ((++_cleanup_count))
731
+ fi
732
+
733
+ if jq -e --arg auggie_tool "$auggie_tool" --arg augment_tool "$augment_tool" '(.agent // {}) | to_entries[]? | (.value.tools // {}) | keys[]? | select(. == $auggie_tool or . == $augment_tool)' \
716
734
  "$tmp_config" >/dev/null 2>&1; then
717
- jq 'del(.agent.SEO.tools["dataforseo_*"]) | del(.agent.SEO.tools["serper_*"]) | del(.agent.SEO.tools["ahrefs_*"])' \
735
+ jq --arg auggie_tool "$auggie_tool" --arg augment_tool "$augment_tool" '(.agent // {}) as $agents | reduce ($agents | keys[]) as $name (. ; del(.agent[$name].tools[$auggie_tool]) | del(.agent[$name].tools[$augment_tool]))' \
718
736
  "$tmp_config" >"${tmp_config}.new" &&
719
737
  mv "${tmp_config}.new" "$tmp_config" &&
720
738
  ((++_cleanup_count))
@@ -814,7 +832,7 @@ cleanup_deprecated_mcps() {
814
832
 
815
833
  # One-time cleanup: remove deprecated MCPs and migrate npx→binary paths.
816
834
  # Sentinel version must be bumped whenever new deprecated MCPs are added.
817
- local _sentinel="${HOME}/.aidevops/.migrations/cleanup-deprecated-mcps-v1"
835
+ local _sentinel="${HOME}/.aidevops/.migrations/cleanup-deprecated-mcps-v2"
818
836
  if [[ ! -f "$_sentinel" ]]; then
819
837
  local cleaned=0
820
838
  local tmp_config
@@ -853,7 +871,6 @@ cleanup_deprecated_mcps() {
853
871
  # Disable MCPs globally that should only be enabled on-demand via subagents
854
872
  # This reduces session startup context by disabling rarely-used MCPs
855
873
  # - playwriter: ~3K tokens - enable via @playwriter subagent
856
- # - augment-context-engine: ~1K tokens - enable via @augment-context-engine subagent
857
874
  # - gh_grep: ~600 tokens - replaced by @github-search subagent (uses rg/bash)
858
875
  # - google-analytics-mcp: ~800 tokens - enable via @google-analytics subagent
859
876
  # - context7: ~800 tokens - enable via @context7 subagent (for library docs lookup)
@@ -873,8 +890,6 @@ disable_ondemand_mcps() {
873
890
  # This reduces idle process/connection overhead to zero.
874
891
  # Note: use exact MCP key names from opencode.json
875
892
  local -a ondemand_mcps=(
876
- "auggie-mcp"
877
- "augment-context-engine"
878
893
  "cloudflare-api"
879
894
  "context7"
880
895
  "gh_grep"
@@ -911,7 +926,7 @@ disable_ondemand_mcps() {
911
926
  # Remove invalid MCP entries added by v2.100.16 bug
912
927
  # These have type "stdio" (invalid - only "local" or "remote" are valid)
913
928
  # or command ["echo", "disabled"] which breaks OpenCode
914
- local invalid_mcps=("grep_app" "websearch" "context7" "augment-context-engine")
929
+ local invalid_mcps=("grep_app" "websearch" "context7")
915
930
  for mcp in "${invalid_mcps[@]}"; do
916
931
  # Check for invalid type "stdio" or dummy command
917
932
  if jq -e ".mcp[\"$mcp\"].type == \"stdio\" or .mcp[\"$mcp\"].command[0] == \"echo\"" "$tmp_config" >/dev/null 2>&1; then
@@ -145,7 +145,6 @@ print_final_instructions() {
145
145
  echo "• Skills include: wordpress, seo, aidevops, build-mcp, and more"
146
146
  echo ""
147
147
  echo "MCP Integrations (OpenCode):"
148
- echo "• Augment Context Engine - Cloud semantic codebase retrieval"
149
148
  echo "• Context7 - Real-time library documentation"
150
149
  echo "• GSC - Google Search Console (MCP + OAuth2)"
151
150
  echo "• Google Analytics - Analytics data (shared GSC credentials)"
@@ -802,7 +802,7 @@ setup_oauth_token_refresh() {
802
802
  }
803
803
 
804
804
  # Setup opencode DB maintenance scheduler (r913, t2183).
805
- # Runs weekly (Sun 04:00 local) to checkpoint/optimize/vacuum opencode.db.
805
+ # Runs weekly (Sun 04:00 local by default) to checkpoint/optimize/vacuum opencode.db.
806
806
  # The helper self-noops on missing DB, so installing unconditionally is safe —
807
807
  # a non-opencode machine wakes up weekly, sees no DB, exits 0 silently.
808
808
  #
@@ -820,14 +820,21 @@ setup_opencode_db_maintenance() {
820
820
  fi
821
821
 
822
822
  local ocdbm_log_dir="$HOME/.aidevops/.agent-workspace/logs"
823
+ local ocdbm_hour="${OPENCODE_DB_MAINTENANCE_HOUR:-4}"
824
+ local ocdbm_minute="${OPENCODE_DB_MAINTENANCE_MINUTE:-0}"
825
+ local ocdbm_mode="${OPENCODE_DB_MAINTENANCE_MODE:-auto}"
826
+ local ocdbm_command="\"${ocdbm_script}\" auto"
827
+ if [[ "$ocdbm_mode" == "maintenance-window" ]]; then
828
+ ocdbm_command="\"${ocdbm_script}\" maintenance-window --force-opencode"
829
+ fi
823
830
  mkdir -p "$ocdbm_log_dir"
824
831
 
825
832
  if [[ "$(uname -s)" == "Darwin" ]]; then
826
833
  # Helper owns its own plist generation (Approach B, like repo-sync).
827
834
  # Quiet the helper's multi-line output and emit one consolidated line
828
835
  # to match the style of setup_profile_readme / setup_oauth_token_refresh.
829
- if bash "$ocdbm_script" install >/dev/null 2>&1; then
830
- print_info "OpenCode DB maintenance enabled (launchd, weekly Sun 04:00)"
836
+ if OPENCODE_DB_MAINTENANCE_HOUR="$ocdbm_hour" OPENCODE_DB_MAINTENANCE_MINUTE="$ocdbm_minute" OPENCODE_DB_MAINTENANCE_MODE="$ocdbm_mode" bash "$ocdbm_script" install >/dev/null 2>&1; then
837
+ print_info "OpenCode DB maintenance enabled (launchd, weekly Sun ${ocdbm_hour}:${ocdbm_minute})"
831
838
  else
832
839
  print_warning "Failed to install opencode DB maintenance LaunchAgent"
833
840
  fi
@@ -838,21 +845,21 @@ setup_opencode_db_maintenance() {
838
845
  return 0
839
846
  else
840
847
  # Linux / WSL: prefer systemd user timer, fall back to cron.
841
- # Weekly Sunday 04:00 local — cron: `0 4 * * 0`; systemd OnCalendar
848
+ # Weekly Sunday local time — cron: `${minute} ${hour} * * 0`; systemd OnCalendar
842
849
  # ensures wall-clock firing even across suspends/reboots.
843
850
  _install_scheduler_linux \
844
851
  "aidevops-opencode-db-maintenance" \
845
852
  "aidevops: opencode-db-maintenance" \
846
- "0 4 * * 0" \
847
- "\"${ocdbm_script}\" auto" \
853
+ "${ocdbm_minute} ${ocdbm_hour} * * 0" \
854
+ "${ocdbm_command}" \
848
855
  "604800" \
849
856
  "${ocdbm_log_dir}/opencode-db-maintenance.log" \
850
857
  "" \
851
- "OpenCode DB maintenance enabled (weekly Sun 04:00)" \
858
+ "OpenCode DB maintenance enabled (weekly Sun ${ocdbm_hour}:${ocdbm_minute})" \
852
859
  "Failed to install opencode DB maintenance scheduler" \
853
860
  "false" \
854
861
  "true" \
855
- "Sun *-*-* 04:00:00"
862
+ "Sun *-*-* ${ocdbm_hour}:${ocdbm_minute}:00"
856
863
  fi
857
864
  return 0
858
865
  }
package/setup.sh CHANGED
@@ -12,7 +12,7 @@ shopt -s inherit_errexit 2>/dev/null || true
12
12
  # AI Assistant Server Access Framework Setup Script
13
13
  # Helps developers set up the framework for their infrastructure
14
14
  #
15
- # Version: 3.13.52
15
+ # Version: 3.13.54
16
16
  #
17
17
  # Quick Install:
18
18
  # npm install -g aidevops && aidevops update (recommended)
@@ -1432,7 +1432,6 @@ _setup_run_interactive() {
1432
1432
  confirm_step "Setup Node.js environment" && setup_nodejs_env
1433
1433
  confirm_step "Install MCP packages globally (fast startup)" && install_mcp_packages
1434
1434
  confirm_step "Setup LocalWP MCP server" && setup_localwp_mcp
1435
- confirm_step "Setup Augment Context Engine MCP" && setup_augment_context_engine
1436
1435
  confirm_step "Setup Beads task management" && setup_beads
1437
1436
  confirm_step "Setup SEO integrations (curl subagents)" && setup_seo_mcps
1438
1437
  confirm_step "Setup Google Analytics MCP" && setup_google_analytics_mcp