aidevops 3.1.388 → 3.1.390
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/plugins.sh +134 -76
- package/setup.sh +1 -1
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.1.
|
|
1
|
+
3.1.390
|
package/aidevops.sh
CHANGED
package/package.json
CHANGED
package/setup-modules/plugins.sh
CHANGED
|
@@ -402,79 +402,102 @@ check_skill_updates() {
|
|
|
402
402
|
return 0
|
|
403
403
|
}
|
|
404
404
|
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
405
|
+
# Find the skill-scanner binary on PATH or in known install locations.
|
|
406
|
+
# Prints the path to the binary if found, empty string otherwise.
|
|
407
|
+
# PATH note: uv/pipx install to ~/.local/bin which may not be on PATH in all shells.
|
|
408
|
+
_find_skill_scanner_bin() {
|
|
409
|
+
local bin
|
|
410
|
+
bin=$(command -v skill-scanner 2>/dev/null || echo "")
|
|
411
|
+
# Fallback: check the known install path directly
|
|
412
|
+
if [[ -z "$bin" && -x "$HOME/.local/bin/skill-scanner" ]]; then
|
|
413
|
+
bin="$HOME/.local/bin/skill-scanner"
|
|
414
|
+
fi
|
|
415
|
+
echo "$bin"
|
|
416
|
+
return 0
|
|
417
|
+
}
|
|
414
418
|
|
|
415
|
-
|
|
416
|
-
|
|
419
|
+
# Find the first Python >= 3.10 interpreter available on this system.
|
|
420
|
+
# Prints the interpreter path if found, empty string otherwise.
|
|
421
|
+
# Checks the same candidates as check_python_for_skill_scanner() so the
|
|
422
|
+
# venv method uses the same interpreter that passed validation.
|
|
423
|
+
_find_python_for_skill_scanner() {
|
|
424
|
+
local py_bin
|
|
425
|
+
for py_bin in python3 python3.13 python3.12 python3.11 python3.10; do
|
|
426
|
+
if command -v "$py_bin" &>/dev/null; then
|
|
427
|
+
local ver_output
|
|
428
|
+
ver_output=$("$py_bin" --version 2>/dev/null) || continue
|
|
429
|
+
if [[ "$ver_output" != Python\ * ]]; then continue; fi
|
|
430
|
+
local version major remainder minor
|
|
431
|
+
version="${ver_output#Python }"
|
|
432
|
+
major="${version%%.*}"
|
|
433
|
+
remainder="${version#*.}"
|
|
434
|
+
minor="${remainder%%.*}"
|
|
435
|
+
if [[ ! "$major" =~ ^[0-9]+$ || ! "$minor" =~ ^[0-9]+$ ]]; then continue; fi
|
|
436
|
+
if [[ "$major" -gt 3 ]] || { [[ "$major" -eq 3 ]] && [[ "$minor" -ge 10 ]]; }; then
|
|
437
|
+
echo "$py_bin"
|
|
438
|
+
return 0
|
|
439
|
+
fi
|
|
440
|
+
fi
|
|
441
|
+
done
|
|
442
|
+
echo ""
|
|
443
|
+
return 1
|
|
444
|
+
}
|
|
417
445
|
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
#
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
# Fallback: uv/pipx install to ~/.local/bin which may not be on PATH
|
|
428
|
-
if [[ -z "$skill_scanner_bin" && -x "$HOME/.local/bin/skill-scanner" ]]; then
|
|
429
|
-
skill_scanner_bin="$HOME/.local/bin/skill-scanner"
|
|
446
|
+
# Install cisco-ai-skill-scanner using a 4-method fallback chain.
|
|
447
|
+
# Fallback order: uv -> pipx -> venv+symlink -> pip3 --user (legacy)
|
|
448
|
+
# PEP 668 (Ubuntu 24.04+) blocks pip3 --user, so isolated methods are tried first.
|
|
449
|
+
# Prints the path to the installed binary on success, empty string on failure.
|
|
450
|
+
_install_skill_scanner() {
|
|
451
|
+
# Verify Python >= 3.10 is available (or install it via uv)
|
|
452
|
+
if ! check_python_for_skill_scanner; then
|
|
453
|
+
print_warning "Skipping Cisco Skill Scanner install (Python >= 3.10 required)"
|
|
454
|
+
return 1
|
|
430
455
|
fi
|
|
431
456
|
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
457
|
+
local installed=false
|
|
458
|
+
local skill_scanner_bin=""
|
|
459
|
+
|
|
460
|
+
# 1. uv tool install (preferred - fast, isolated, manages its own Python)
|
|
461
|
+
# Uses --force to handle two known failure modes:
|
|
462
|
+
# a) Dangling/corrupted environment: uv detects "Invalid environment" and
|
|
463
|
+
# exits 2. Detect via warning in `uv tool list` and uninstall first.
|
|
464
|
+
# b) Executable conflict: skill-scanner already exists (e.g. from pipx).
|
|
465
|
+
# --force overwrites the existing executable.
|
|
466
|
+
if [[ "$installed" == "false" ]] && command -v uv &>/dev/null && uv tool --help &>/dev/null; then
|
|
467
|
+
print_info "Installing Cisco Skill Scanner via uv..."
|
|
468
|
+
# Detect and remove dangling uv environment before attempting install
|
|
469
|
+
if uv tool list 2>&1 | grep -q "Ignoring malformed tool.*cisco-ai-skill-scanner"; then
|
|
470
|
+
print_info "Removing dangling uv environment for cisco-ai-skill-scanner..."
|
|
471
|
+
uv tool uninstall cisco-ai-skill-scanner 2>/dev/null || true
|
|
437
472
|
fi
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
# Uses --force to handle two known failure modes:
|
|
443
|
-
# a) Dangling/corrupted environment: uv detects "Invalid environment" and
|
|
444
|
-
# exits 2. Detect via warning in `uv tool list` and uninstall first.
|
|
445
|
-
# b) Executable conflict: skill-scanner already exists (e.g. from pipx).
|
|
446
|
-
# --force overwrites the existing executable.
|
|
447
|
-
if [[ "$installed" == "false" ]] && command -v uv &>/dev/null && uv tool --help &>/dev/null; then
|
|
448
|
-
print_info "Installing Cisco Skill Scanner via uv..."
|
|
449
|
-
# Detect and remove dangling uv environment before attempting install
|
|
450
|
-
if uv tool list 2>&1 | grep -q "Ignoring malformed tool.*cisco-ai-skill-scanner"; then
|
|
451
|
-
print_info "Removing dangling uv environment for cisco-ai-skill-scanner..."
|
|
452
|
-
uv tool uninstall cisco-ai-skill-scanner 2>/dev/null || true
|
|
453
|
-
fi
|
|
454
|
-
if run_with_spinner "Installing cisco-ai-skill-scanner" uv tool install --force cisco-ai-skill-scanner; then
|
|
455
|
-
print_success "Cisco Skill Scanner installed via uv"
|
|
456
|
-
installed=true
|
|
457
|
-
# uv installs to ~/.local/bin — update skill_scanner_bin for use below
|
|
458
|
-
skill_scanner_bin=$(command -v skill-scanner 2>/dev/null || echo "$HOME/.local/bin/skill-scanner")
|
|
459
|
-
fi
|
|
473
|
+
if run_with_spinner "Installing cisco-ai-skill-scanner" uv tool install --force cisco-ai-skill-scanner; then
|
|
474
|
+
print_success "Cisco Skill Scanner installed via uv"
|
|
475
|
+
installed=true
|
|
476
|
+
skill_scanner_bin=$(command -v skill-scanner 2>/dev/null || echo "$HOME/.local/bin/skill-scanner")
|
|
460
477
|
fi
|
|
478
|
+
fi
|
|
461
479
|
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
fi
|
|
480
|
+
# 2. pipx install (designed for isolated app installs)
|
|
481
|
+
if [[ "$installed" == "false" ]] && command -v pipx &>/dev/null; then
|
|
482
|
+
print_info "Installing Cisco Skill Scanner via pipx..."
|
|
483
|
+
if run_with_spinner "Installing cisco-ai-skill-scanner" pipx install cisco-ai-skill-scanner; then
|
|
484
|
+
print_success "Cisco Skill Scanner installed via pipx"
|
|
485
|
+
installed=true
|
|
486
|
+
skill_scanner_bin=$(command -v skill-scanner 2>/dev/null || echo "$HOME/.local/bin/skill-scanner")
|
|
470
487
|
fi
|
|
488
|
+
fi
|
|
471
489
|
|
|
472
|
-
|
|
473
|
-
|
|
490
|
+
# 3. venv + symlink (works on PEP 668 systems without uv/pipx)
|
|
491
|
+
# Use the validated interpreter (same candidates as check_python_for_skill_scanner)
|
|
492
|
+
# so venv creation succeeds even when python3 itself is < 3.10.
|
|
493
|
+
if [[ "$installed" == "false" ]]; then
|
|
494
|
+
local py_interp
|
|
495
|
+
py_interp=$(_find_python_for_skill_scanner) || true
|
|
496
|
+
if [[ -n "$py_interp" ]]; then
|
|
474
497
|
local venv_dir="$HOME/.aidevops/.agent-workspace/work/cisco-scanner-env"
|
|
475
498
|
local bin_dir="$HOME/.local/bin"
|
|
476
499
|
print_info "Installing Cisco Skill Scanner in isolated venv..."
|
|
477
|
-
if
|
|
500
|
+
if "$py_interp" -m venv "$venv_dir" 2>/dev/null &&
|
|
478
501
|
"$venv_dir/bin/pip" install cisco-ai-skill-scanner 2>/dev/null; then
|
|
479
502
|
mkdir -p "$bin_dir"
|
|
480
503
|
ln -sf "$venv_dir/bin/skill-scanner" "$bin_dir/skill-scanner"
|
|
@@ -485,26 +508,61 @@ scan_imported_skills() {
|
|
|
485
508
|
rm -rf "$venv_dir" 2>/dev/null || true
|
|
486
509
|
fi
|
|
487
510
|
fi
|
|
511
|
+
fi
|
|
488
512
|
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
fi
|
|
513
|
+
# 4. pip3 --user (legacy fallback, fails on PEP 668 systems)
|
|
514
|
+
if [[ "$installed" == "false" ]] && command -v pip3 &>/dev/null; then
|
|
515
|
+
print_info "Installing Cisco Skill Scanner via pip3 --user..."
|
|
516
|
+
if run_with_spinner "Installing cisco-ai-skill-scanner" pip3 install --user cisco-ai-skill-scanner 2>/dev/null; then
|
|
517
|
+
print_success "Cisco Skill Scanner installed via pip3"
|
|
518
|
+
installed=true
|
|
519
|
+
skill_scanner_bin=$(command -v skill-scanner 2>/dev/null || echo "$HOME/.local/bin/skill-scanner")
|
|
497
520
|
fi
|
|
521
|
+
fi
|
|
498
522
|
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
523
|
+
if [[ "$installed" == "false" ]]; then
|
|
524
|
+
print_warning "Failed to install Cisco Skill Scanner - skipping security scan"
|
|
525
|
+
print_info "Install manually with: uv tool install cisco-ai-skill-scanner"
|
|
526
|
+
print_info "Or: pipx install cisco-ai-skill-scanner"
|
|
527
|
+
return 1
|
|
528
|
+
fi
|
|
529
|
+
|
|
530
|
+
echo "$skill_scanner_bin"
|
|
531
|
+
return 0
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
scan_imported_skills() {
|
|
535
|
+
# Check prerequisites before announcing setup (GH#5240)
|
|
536
|
+
local security_helper="$HOME/.aidevops/agents/scripts/security-helper.sh"
|
|
537
|
+
|
|
538
|
+
if [[ ! -f "$security_helper" ]]; then
|
|
539
|
+
print_skip "Skill security scan" "security-helper.sh not found" "Deploy agents first (setup.sh), then re-run"
|
|
540
|
+
setup_track_skipped "Skill security scan" "security-helper.sh not found"
|
|
541
|
+
return 0
|
|
542
|
+
fi
|
|
543
|
+
|
|
544
|
+
# Prerequisites met — proceed with setup
|
|
545
|
+
print_info "Running security scan on imported skills..."
|
|
546
|
+
|
|
547
|
+
# Locate or install skill-scanner binary
|
|
548
|
+
local skill_scanner_bin
|
|
549
|
+
skill_scanner_bin=$(_find_skill_scanner_bin)
|
|
550
|
+
|
|
551
|
+
if [[ -z "$skill_scanner_bin" ]]; then
|
|
552
|
+
# _install_skill_scanner prints the binary path on success
|
|
553
|
+
skill_scanner_bin=$(_install_skill_scanner) || return 0
|
|
554
|
+
fi
|
|
555
|
+
|
|
556
|
+
if [[ ! -x "$skill_scanner_bin" ]]; then
|
|
557
|
+
print_warning "skill-scanner not executable at: $skill_scanner_bin"
|
|
558
|
+
return 0
|
|
505
559
|
fi
|
|
506
560
|
|
|
507
|
-
|
|
561
|
+
# Prepend the scanner's directory to PATH so security-helper.sh can resolve
|
|
562
|
+
# skill-scanner even when ~/.local/bin is not in the caller's PATH.
|
|
563
|
+
local scanner_dir
|
|
564
|
+
scanner_dir=$(dirname "$skill_scanner_bin")
|
|
565
|
+
if PATH="$scanner_dir:$PATH" bash "$security_helper" skill-scan all 2>/dev/null; then
|
|
508
566
|
print_success "All imported skills passed security scan"
|
|
509
567
|
else
|
|
510
568
|
print_warning "Some imported skills have security findings - review with: aidevops skill scan"
|
package/setup.sh
CHANGED
|
@@ -10,7 +10,7 @@ shopt -s inherit_errexit 2>/dev/null || true
|
|
|
10
10
|
# AI Assistant Server Access Framework Setup Script
|
|
11
11
|
# Helps developers set up the framework for their infrastructure
|
|
12
12
|
#
|
|
13
|
-
# Version: 3.1.
|
|
13
|
+
# Version: 3.1.390
|
|
14
14
|
#
|
|
15
15
|
# Quick Install:
|
|
16
16
|
# npm install -g aidevops && aidevops update (recommended)
|