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 +1 -1
- package/aidevops.sh +1 -1
- package/package.json +1 -1
- package/setup-modules/mcp-setup.sh +1 -47
- package/setup-modules/migrations.sh +28 -13
- package/setup-modules/post-setup.sh +0 -1
- package/setup-modules/schedulers-platform.sh +15 -8
- package/setup.sh +1 -2
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.13.
|
|
1
|
+
3.13.54
|
package/aidevops.sh
CHANGED
package/package.json
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
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[
|
|
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 "
|
|
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[
|
|
701
|
-
jq "del(.mcp[
|
|
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
|
|
715
|
-
|
|
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 '
|
|
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-
|
|
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"
|
|
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
|
|
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
|
|
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
|
-
"
|
|
847
|
-
"
|
|
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
|
|
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 *-*-*
|
|
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.
|
|
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
|