aidevops 2.52.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/.agent/AGENTS.md +614 -0
- package/.agent/accounts.md +65 -0
- package/.agent/aidevops/add-new-mcp-to-aidevops.md +456 -0
- package/.agent/aidevops/api-integrations.md +335 -0
- package/.agent/aidevops/architecture.md +510 -0
- package/.agent/aidevops/configs.md +274 -0
- package/.agent/aidevops/docs.md +244 -0
- package/.agent/aidevops/extension.md +311 -0
- package/.agent/aidevops/mcp-integrations.md +340 -0
- package/.agent/aidevops/mcp-troubleshooting.md +162 -0
- package/.agent/aidevops/memory-patterns.md +172 -0
- package/.agent/aidevops/providers.md +217 -0
- package/.agent/aidevops/recommendations.md +321 -0
- package/.agent/aidevops/requirements.md +301 -0
- package/.agent/aidevops/resources.md +214 -0
- package/.agent/aidevops/security-requirements.md +174 -0
- package/.agent/aidevops/security.md +350 -0
- package/.agent/aidevops/service-links.md +400 -0
- package/.agent/aidevops/services.md +357 -0
- package/.agent/aidevops/setup.md +153 -0
- package/.agent/aidevops/troubleshooting.md +389 -0
- package/.agent/aidevops.md +124 -0
- package/.agent/build-plus.md +244 -0
- package/.agent/content/guidelines.md +109 -0
- package/.agent/content.md +87 -0
- package/.agent/health.md +59 -0
- package/.agent/legal.md +59 -0
- package/.agent/loop-state/full-loop.local.md +16 -0
- package/.agent/loop-state/ralph-loop.local.md +10 -0
- package/.agent/marketing.md +440 -0
- package/.agent/memory/README.md +260 -0
- package/.agent/onboarding.md +796 -0
- package/.agent/plan-plus.md +245 -0
- package/.agent/research.md +100 -0
- package/.agent/sales.md +333 -0
- package/.agent/scripts/101domains-helper.sh +701 -0
- package/.agent/scripts/add-missing-returns.sh +140 -0
- package/.agent/scripts/agent-browser-helper.sh +311 -0
- package/.agent/scripts/agno-setup.sh +712 -0
- package/.agent/scripts/ahrefs-mcp-wrapper.js +168 -0
- package/.agent/scripts/aidevops-update-check.sh +71 -0
- package/.agent/scripts/ampcode-cli.sh +522 -0
- package/.agent/scripts/auto-version-bump.sh +156 -0
- package/.agent/scripts/autogen-helper.sh +512 -0
- package/.agent/scripts/beads-sync-helper.sh +596 -0
- package/.agent/scripts/closte-helper.sh +5 -0
- package/.agent/scripts/cloudron-helper.sh +321 -0
- package/.agent/scripts/codacy-cli-chunked.sh +581 -0
- package/.agent/scripts/codacy-cli.sh +442 -0
- package/.agent/scripts/code-audit-helper.sh +5 -0
- package/.agent/scripts/coderabbit-cli.sh +417 -0
- package/.agent/scripts/coderabbit-pro-analysis.sh +238 -0
- package/.agent/scripts/commands/code-simplifier.md +86 -0
- package/.agent/scripts/commands/full-loop.md +246 -0
- package/.agent/scripts/commands/postflight-loop.md +103 -0
- package/.agent/scripts/commands/recall.md +182 -0
- package/.agent/scripts/commands/remember.md +132 -0
- package/.agent/scripts/commands/save-todo.md +175 -0
- package/.agent/scripts/commands/session-review.md +154 -0
- package/.agent/scripts/comprehensive-quality-fix.sh +106 -0
- package/.agent/scripts/context-builder-helper.sh +522 -0
- package/.agent/scripts/coolify-cli-helper.sh +674 -0
- package/.agent/scripts/coolify-helper.sh +380 -0
- package/.agent/scripts/crawl4ai-examples.sh +401 -0
- package/.agent/scripts/crawl4ai-helper.sh +1078 -0
- package/.agent/scripts/crewai-helper.sh +681 -0
- package/.agent/scripts/dev-browser-helper.sh +513 -0
- package/.agent/scripts/dns-helper.sh +396 -0
- package/.agent/scripts/domain-research-helper.sh +917 -0
- package/.agent/scripts/dspy-helper.sh +285 -0
- package/.agent/scripts/dspyground-helper.sh +291 -0
- package/.agent/scripts/eeat-score-helper.sh +1242 -0
- package/.agent/scripts/efficient-return-fix.sh +92 -0
- package/.agent/scripts/extract-opencode-prompts.sh +128 -0
- package/.agent/scripts/find-missing-returns.sh +113 -0
- package/.agent/scripts/fix-auth-headers.sh +104 -0
- package/.agent/scripts/fix-common-strings.sh +254 -0
- package/.agent/scripts/fix-content-type.sh +100 -0
- package/.agent/scripts/fix-error-messages.sh +130 -0
- package/.agent/scripts/fix-misplaced-returns.sh +74 -0
- package/.agent/scripts/fix-remaining-literals.sh +152 -0
- package/.agent/scripts/fix-return-statements.sh +41 -0
- package/.agent/scripts/fix-s131-default-cases.sh +249 -0
- package/.agent/scripts/fix-sc2155-simple.sh +102 -0
- package/.agent/scripts/fix-shellcheck-critical.sh +187 -0
- package/.agent/scripts/fix-string-literals.sh +273 -0
- package/.agent/scripts/full-loop-helper.sh +773 -0
- package/.agent/scripts/generate-opencode-agents.sh +497 -0
- package/.agent/scripts/generate-opencode-commands.sh +1629 -0
- package/.agent/scripts/generate-skills.sh +366 -0
- package/.agent/scripts/git-platforms-helper.sh +640 -0
- package/.agent/scripts/gitea-cli-helper.sh +743 -0
- package/.agent/scripts/github-cli-helper.sh +702 -0
- package/.agent/scripts/gitlab-cli-helper.sh +682 -0
- package/.agent/scripts/gsc-add-user-helper.sh +325 -0
- package/.agent/scripts/gsc-sitemap-helper.sh +678 -0
- package/.agent/scripts/hetzner-helper.sh +485 -0
- package/.agent/scripts/hostinger-helper.sh +229 -0
- package/.agent/scripts/keyword-research-helper.sh +1815 -0
- package/.agent/scripts/langflow-helper.sh +544 -0
- package/.agent/scripts/linkedin-automation.py +241 -0
- package/.agent/scripts/linter-manager.sh +599 -0
- package/.agent/scripts/linters-local.sh +434 -0
- package/.agent/scripts/list-keys-helper.sh +488 -0
- package/.agent/scripts/local-browser-automation.py +339 -0
- package/.agent/scripts/localhost-helper.sh +744 -0
- package/.agent/scripts/loop-common.sh +806 -0
- package/.agent/scripts/mainwp-helper.sh +728 -0
- package/.agent/scripts/markdown-formatter.sh +338 -0
- package/.agent/scripts/markdown-lint-fix.sh +311 -0
- package/.agent/scripts/mass-fix-returns.sh +58 -0
- package/.agent/scripts/mcp-diagnose.sh +167 -0
- package/.agent/scripts/mcp-inspector-helper.sh +449 -0
- package/.agent/scripts/memory-helper.sh +650 -0
- package/.agent/scripts/monitor-code-review.sh +255 -0
- package/.agent/scripts/onboarding-helper.sh +706 -0
- package/.agent/scripts/opencode-github-setup-helper.sh +797 -0
- package/.agent/scripts/opencode-test-helper.sh +213 -0
- package/.agent/scripts/pagespeed-helper.sh +464 -0
- package/.agent/scripts/pandoc-helper.sh +362 -0
- package/.agent/scripts/postflight-check.sh +555 -0
- package/.agent/scripts/pre-commit-hook.sh +259 -0
- package/.agent/scripts/pre-edit-check.sh +169 -0
- package/.agent/scripts/qlty-cli.sh +356 -0
- package/.agent/scripts/quality-cli-manager.sh +525 -0
- package/.agent/scripts/quality-feedback-helper.sh +462 -0
- package/.agent/scripts/quality-fix.sh +263 -0
- package/.agent/scripts/quality-loop-helper.sh +1108 -0
- package/.agent/scripts/ralph-loop-helper.sh +836 -0
- package/.agent/scripts/ralph-upstream-check.sh +341 -0
- package/.agent/scripts/secretlint-helper.sh +847 -0
- package/.agent/scripts/servers-helper.sh +241 -0
- package/.agent/scripts/ses-helper.sh +619 -0
- package/.agent/scripts/session-review-helper.sh +404 -0
- package/.agent/scripts/setup-linters-wizard.sh +379 -0
- package/.agent/scripts/setup-local-api-keys.sh +330 -0
- package/.agent/scripts/setup-mcp-integrations.sh +472 -0
- package/.agent/scripts/shared-constants.sh +246 -0
- package/.agent/scripts/site-crawler-helper.sh +1487 -0
- package/.agent/scripts/snyk-helper.sh +940 -0
- package/.agent/scripts/sonarcloud-autofix.sh +193 -0
- package/.agent/scripts/sonarcloud-cli.sh +191 -0
- package/.agent/scripts/sonarscanner-cli.sh +455 -0
- package/.agent/scripts/spaceship-helper.sh +747 -0
- package/.agent/scripts/stagehand-helper.sh +321 -0
- package/.agent/scripts/stagehand-python-helper.sh +321 -0
- package/.agent/scripts/stagehand-python-setup.sh +441 -0
- package/.agent/scripts/stagehand-setup.sh +439 -0
- package/.agent/scripts/system-cleanup.sh +340 -0
- package/.agent/scripts/terminal-title-helper.sh +388 -0
- package/.agent/scripts/terminal-title-setup.sh +549 -0
- package/.agent/scripts/test-stagehand-both-integration.sh +317 -0
- package/.agent/scripts/test-stagehand-integration.sh +309 -0
- package/.agent/scripts/test-stagehand-python-integration.sh +341 -0
- package/.agent/scripts/todo-ready.sh +263 -0
- package/.agent/scripts/tool-version-check.sh +362 -0
- package/.agent/scripts/toon-helper.sh +469 -0
- package/.agent/scripts/twilio-helper.sh +917 -0
- package/.agent/scripts/updown-helper.sh +279 -0
- package/.agent/scripts/validate-mcp-integrations.sh +250 -0
- package/.agent/scripts/validate-version-consistency.sh +131 -0
- package/.agent/scripts/vaultwarden-helper.sh +597 -0
- package/.agent/scripts/vercel-cli-helper.sh +816 -0
- package/.agent/scripts/verify-mirrors.sh +169 -0
- package/.agent/scripts/version-manager.sh +831 -0
- package/.agent/scripts/webhosting-helper.sh +471 -0
- package/.agent/scripts/webhosting-verify.sh +238 -0
- package/.agent/scripts/wordpress-mcp-helper.sh +508 -0
- package/.agent/scripts/worktree-helper.sh +595 -0
- package/.agent/scripts/worktree-sessions.sh +577 -0
- package/.agent/seo/dataforseo.md +215 -0
- package/.agent/seo/domain-research.md +532 -0
- package/.agent/seo/eeat-score.md +659 -0
- package/.agent/seo/google-search-console.md +366 -0
- package/.agent/seo/gsc-sitemaps.md +282 -0
- package/.agent/seo/keyword-research.md +521 -0
- package/.agent/seo/serper.md +278 -0
- package/.agent/seo/site-crawler.md +387 -0
- package/.agent/seo.md +236 -0
- package/.agent/services/accounting/quickfile.md +159 -0
- package/.agent/services/communications/telfon.md +470 -0
- package/.agent/services/communications/twilio.md +569 -0
- package/.agent/services/crm/fluentcrm.md +449 -0
- package/.agent/services/email/ses.md +399 -0
- package/.agent/services/hosting/101domains.md +378 -0
- package/.agent/services/hosting/closte.md +177 -0
- package/.agent/services/hosting/cloudflare.md +251 -0
- package/.agent/services/hosting/cloudron.md +478 -0
- package/.agent/services/hosting/dns-providers.md +335 -0
- package/.agent/services/hosting/domain-purchasing.md +344 -0
- package/.agent/services/hosting/hetzner.md +327 -0
- package/.agent/services/hosting/hostinger.md +287 -0
- package/.agent/services/hosting/localhost.md +419 -0
- package/.agent/services/hosting/spaceship.md +353 -0
- package/.agent/services/hosting/webhosting.md +330 -0
- package/.agent/social-media.md +69 -0
- package/.agent/templates/plans-template.md +114 -0
- package/.agent/templates/prd-template.md +129 -0
- package/.agent/templates/tasks-template.md +108 -0
- package/.agent/templates/todo-template.md +89 -0
- package/.agent/tools/ai-assistants/agno.md +471 -0
- package/.agent/tools/ai-assistants/capsolver.md +326 -0
- package/.agent/tools/ai-assistants/configuration.md +221 -0
- package/.agent/tools/ai-assistants/overview.md +209 -0
- package/.agent/tools/ai-assistants/status.md +171 -0
- package/.agent/tools/ai-assistants/windsurf.md +193 -0
- package/.agent/tools/ai-orchestration/autogen.md +406 -0
- package/.agent/tools/ai-orchestration/crewai.md +445 -0
- package/.agent/tools/ai-orchestration/langflow.md +405 -0
- package/.agent/tools/ai-orchestration/openprose.md +487 -0
- package/.agent/tools/ai-orchestration/overview.md +362 -0
- package/.agent/tools/ai-orchestration/packaging.md +647 -0
- package/.agent/tools/browser/agent-browser.md +464 -0
- package/.agent/tools/browser/browser-automation.md +400 -0
- package/.agent/tools/browser/chrome-devtools.md +282 -0
- package/.agent/tools/browser/crawl4ai-integration.md +422 -0
- package/.agent/tools/browser/crawl4ai-resources.md +277 -0
- package/.agent/tools/browser/crawl4ai-usage.md +416 -0
- package/.agent/tools/browser/crawl4ai.md +585 -0
- package/.agent/tools/browser/dev-browser.md +341 -0
- package/.agent/tools/browser/pagespeed.md +260 -0
- package/.agent/tools/browser/playwright.md +266 -0
- package/.agent/tools/browser/playwriter.md +310 -0
- package/.agent/tools/browser/stagehand-examples.md +456 -0
- package/.agent/tools/browser/stagehand-python.md +483 -0
- package/.agent/tools/browser/stagehand.md +421 -0
- package/.agent/tools/build-agent/agent-review.md +224 -0
- package/.agent/tools/build-agent/build-agent.md +784 -0
- package/.agent/tools/build-mcp/aidevops-plugin.md +476 -0
- package/.agent/tools/build-mcp/api-wrapper.md +445 -0
- package/.agent/tools/build-mcp/build-mcp.md +240 -0
- package/.agent/tools/build-mcp/deployment.md +401 -0
- package/.agent/tools/build-mcp/server-patterns.md +632 -0
- package/.agent/tools/build-mcp/transports.md +366 -0
- package/.agent/tools/code-review/auditing.md +383 -0
- package/.agent/tools/code-review/automation.md +219 -0
- package/.agent/tools/code-review/best-practices.md +203 -0
- package/.agent/tools/code-review/codacy.md +151 -0
- package/.agent/tools/code-review/code-simplifier.md +174 -0
- package/.agent/tools/code-review/code-standards.md +309 -0
- package/.agent/tools/code-review/coderabbit.md +101 -0
- package/.agent/tools/code-review/management.md +155 -0
- package/.agent/tools/code-review/qlty.md +248 -0
- package/.agent/tools/code-review/secretlint.md +565 -0
- package/.agent/tools/code-review/setup.md +250 -0
- package/.agent/tools/code-review/snyk.md +563 -0
- package/.agent/tools/code-review/tools.md +230 -0
- package/.agent/tools/content/summarize.md +353 -0
- package/.agent/tools/context/augment-context-engine.md +468 -0
- package/.agent/tools/context/context-builder-agent.md +76 -0
- package/.agent/tools/context/context-builder.md +375 -0
- package/.agent/tools/context/context7.md +371 -0
- package/.agent/tools/context/dspy.md +302 -0
- package/.agent/tools/context/dspyground.md +374 -0
- package/.agent/tools/context/llm-tldr.md +219 -0
- package/.agent/tools/context/osgrep.md +488 -0
- package/.agent/tools/context/prompt-optimization.md +338 -0
- package/.agent/tools/context/toon.md +292 -0
- package/.agent/tools/conversion/pandoc.md +304 -0
- package/.agent/tools/credentials/api-key-management.md +154 -0
- package/.agent/tools/credentials/api-key-setup.md +224 -0
- package/.agent/tools/credentials/environment-variables.md +180 -0
- package/.agent/tools/credentials/vaultwarden.md +382 -0
- package/.agent/tools/data-extraction/outscraper.md +974 -0
- package/.agent/tools/deployment/coolify-cli.md +388 -0
- package/.agent/tools/deployment/coolify-setup.md +353 -0
- package/.agent/tools/deployment/coolify.md +345 -0
- package/.agent/tools/deployment/vercel.md +390 -0
- package/.agent/tools/git/authentication.md +132 -0
- package/.agent/tools/git/gitea-cli.md +193 -0
- package/.agent/tools/git/github-actions.md +207 -0
- package/.agent/tools/git/github-cli.md +223 -0
- package/.agent/tools/git/gitlab-cli.md +190 -0
- package/.agent/tools/git/opencode-github-security.md +350 -0
- package/.agent/tools/git/opencode-github.md +328 -0
- package/.agent/tools/git/opencode-gitlab.md +252 -0
- package/.agent/tools/git/security.md +196 -0
- package/.agent/tools/git.md +207 -0
- package/.agent/tools/opencode/oh-my-opencode.md +375 -0
- package/.agent/tools/opencode/opencode-anthropic-auth.md +446 -0
- package/.agent/tools/opencode/opencode.md +651 -0
- package/.agent/tools/social-media/bird.md +437 -0
- package/.agent/tools/task-management/beads.md +336 -0
- package/.agent/tools/terminal/terminal-title.md +251 -0
- package/.agent/tools/ui/shadcn.md +196 -0
- package/.agent/tools/ui/ui-skills.md +115 -0
- package/.agent/tools/wordpress/localwp.md +311 -0
- package/.agent/tools/wordpress/mainwp.md +391 -0
- package/.agent/tools/wordpress/scf.md +527 -0
- package/.agent/tools/wordpress/wp-admin.md +729 -0
- package/.agent/tools/wordpress/wp-dev.md +940 -0
- package/.agent/tools/wordpress/wp-preferred.md +398 -0
- package/.agent/tools/wordpress.md +95 -0
- package/.agent/workflows/branch/bugfix.md +63 -0
- package/.agent/workflows/branch/chore.md +95 -0
- package/.agent/workflows/branch/experiment.md +115 -0
- package/.agent/workflows/branch/feature.md +59 -0
- package/.agent/workflows/branch/hotfix.md +98 -0
- package/.agent/workflows/branch/refactor.md +92 -0
- package/.agent/workflows/branch/release.md +96 -0
- package/.agent/workflows/branch.md +347 -0
- package/.agent/workflows/bug-fixing.md +267 -0
- package/.agent/workflows/changelog.md +129 -0
- package/.agent/workflows/code-audit-remote.md +279 -0
- package/.agent/workflows/conversation-starter.md +69 -0
- package/.agent/workflows/error-feedback.md +578 -0
- package/.agent/workflows/feature-development.md +355 -0
- package/.agent/workflows/git-workflow.md +702 -0
- package/.agent/workflows/multi-repo-workspace.md +268 -0
- package/.agent/workflows/plans.md +709 -0
- package/.agent/workflows/postflight.md +604 -0
- package/.agent/workflows/pr.md +571 -0
- package/.agent/workflows/preflight.md +278 -0
- package/.agent/workflows/ralph-loop.md +773 -0
- package/.agent/workflows/release.md +498 -0
- package/.agent/workflows/session-manager.md +254 -0
- package/.agent/workflows/session-review.md +311 -0
- package/.agent/workflows/sql-migrations.md +631 -0
- package/.agent/workflows/version-bump.md +283 -0
- package/.agent/workflows/wiki-update.md +333 -0
- package/.agent/workflows/worktree.md +477 -0
- package/LICENSE +21 -0
- package/README.md +1446 -0
- package/VERSION +1 -0
- package/aidevops.sh +1746 -0
- package/bin/aidevops +21 -0
- package/package.json +75 -0
- package/scripts/npm-postinstall.js +60 -0
- package/setup.sh +2366 -0
|
@@ -0,0 +1,712 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# shellcheck disable=SC2034,SC2155,SC2317,SC2329,SC2016,SC2181,SC1091,SC2154,SC2015,SC2086,SC2129,SC2030,SC2031,SC2119,SC2120,SC2001,SC2162,SC2088,SC2089,SC2090,SC2029,SC2006,SC2153
|
|
3
|
+
|
|
4
|
+
# Agno + Agent-UI Setup Script for AI DevOps Framework
|
|
5
|
+
# Sets up local Agno AgentOS and Agent-UI for AI assistant capabilities
|
|
6
|
+
#
|
|
7
|
+
# Author: AI DevOps Framework
|
|
8
|
+
# Version: 1.2.0
|
|
9
|
+
|
|
10
|
+
# Colors for output
|
|
11
|
+
readonly GREEN='\033[0;32m'
|
|
12
|
+
readonly BLUE='\033[0;34m'
|
|
13
|
+
readonly YELLOW='\033[1;33m'
|
|
14
|
+
readonly RED='\033[0;31m'
|
|
15
|
+
readonly NC='\033[0m' # No Color
|
|
16
|
+
|
|
17
|
+
print_info() { local msg="$1"; echo -e "${BLUE}[INFO]${NC} $msg"; return 0; }
|
|
18
|
+
print_success() { local msg="$1"; echo -e "${GREEN}[SUCCESS]${NC} $msg"; return 0; }
|
|
19
|
+
print_warning() { local msg="$1"; echo -e "${YELLOW}[WARNING]${NC} $msg"; return 0; }
|
|
20
|
+
print_error() { local msg="$1"; echo -e "${RED}[ERROR]${NC} $msg" >&2; return 0; }
|
|
21
|
+
|
|
22
|
+
# Configuration
|
|
23
|
+
AGNO_DIR="$HOME/.aidevops/agno"
|
|
24
|
+
AGENT_UI_DIR="$HOME/.aidevops/agent-ui"
|
|
25
|
+
AGNO_PORT="${AGNO_PORT:-8000}"
|
|
26
|
+
AGENT_UI_PORT="${AGENT_UI_PORT:-3000}"
|
|
27
|
+
|
|
28
|
+
# Function to check prerequisites
|
|
29
|
+
check_prerequisites() {
|
|
30
|
+
print_info "Checking prerequisites..."
|
|
31
|
+
|
|
32
|
+
# Check Python
|
|
33
|
+
if ! command -v python3 &> /dev/null; then
|
|
34
|
+
print_error "Python 3 is required but not installed"
|
|
35
|
+
return 1
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
local python_version
|
|
39
|
+
python_version=$(python3 --version | cut -d' ' -f2 | cut -d'.' -f1-2)
|
|
40
|
+
if [[ $(echo "$python_version >= 3.8" | bc -l) -eq 0 ]]; then
|
|
41
|
+
print_error "Python 3.8+ is required, found $python_version"
|
|
42
|
+
return 1
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
# Check Node.js
|
|
46
|
+
# Check for Bun (preferred) or Node.js
|
|
47
|
+
if command -v bun &> /dev/null; then
|
|
48
|
+
print_success "Bun $(bun --version) found (preferred)"
|
|
49
|
+
elif command -v node &> /dev/null; then
|
|
50
|
+
local node_version
|
|
51
|
+
node_version=$(node --version | cut -d'v' -f2 | cut -d'.' -f1)
|
|
52
|
+
if [[ $node_version -lt 18 ]]; then
|
|
53
|
+
print_error "Node.js 18+ is required, found v$node_version"
|
|
54
|
+
return 1
|
|
55
|
+
fi
|
|
56
|
+
if ! command -v npm &> /dev/null; then
|
|
57
|
+
print_error "npm is required but not installed"
|
|
58
|
+
return 1
|
|
59
|
+
fi
|
|
60
|
+
print_info "Node.js found (install Bun for faster setup: curl -fsSL https://bun.sh/install | bash)"
|
|
61
|
+
else
|
|
62
|
+
print_error "Bun or Node.js is required"
|
|
63
|
+
print_info "Install Bun: curl -fsSL https://bun.sh/install | bash"
|
|
64
|
+
return 1
|
|
65
|
+
fi
|
|
66
|
+
|
|
67
|
+
print_success "All prerequisites met"
|
|
68
|
+
return 0
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
# Function to setup Agno AgentOS
|
|
72
|
+
setup_agno() {
|
|
73
|
+
print_info "Setting up Agno AgentOS..."
|
|
74
|
+
|
|
75
|
+
# Create directory
|
|
76
|
+
mkdir -p "$AGNO_DIR"
|
|
77
|
+
cd "$AGNO_DIR" || exit
|
|
78
|
+
|
|
79
|
+
# Create virtual environment
|
|
80
|
+
if [[ ! -d "venv" ]]; then
|
|
81
|
+
print_info "Creating Python virtual environment..."
|
|
82
|
+
python3 -m venv venv
|
|
83
|
+
fi
|
|
84
|
+
|
|
85
|
+
# Activate virtual environment
|
|
86
|
+
source venv/bin/activate
|
|
87
|
+
|
|
88
|
+
# Install Agno with browser automation
|
|
89
|
+
print_info "Installing Agno with browser automation..."
|
|
90
|
+
pip install --upgrade pip
|
|
91
|
+
pip install "agno[all]"
|
|
92
|
+
pip install playwright selenium beautifulsoup4 requests-html
|
|
93
|
+
|
|
94
|
+
# Install Playwright browsers
|
|
95
|
+
print_info "Installing Playwright browsers..."
|
|
96
|
+
playwright install
|
|
97
|
+
|
|
98
|
+
# Create basic AgentOS configuration
|
|
99
|
+
if [[ ! -f "agent_os.py" ]]; then
|
|
100
|
+
print_info "Creating AgentOS configuration..."
|
|
101
|
+
cat > agent_os.py << 'EOF'
|
|
102
|
+
#!/usr/bin/env python3
|
|
103
|
+
"""
|
|
104
|
+
AI DevOps Framework - Agno AgentOS Configuration
|
|
105
|
+
Provides local AI agent capabilities for the AI DevOps framework
|
|
106
|
+
"""
|
|
107
|
+
|
|
108
|
+
from agno import Agent, AgentOS
|
|
109
|
+
from agno.models.openai import OpenAIChat
|
|
110
|
+
from agno.tools.duckduckgo import DuckDuckGoTools
|
|
111
|
+
from agno.tools.shell import ShellTools
|
|
112
|
+
from agno.tools.file import FileTools
|
|
113
|
+
from agno.tools.python import PythonTools
|
|
114
|
+
from agno.knowledge.pdf import PDFKnowledgeBase
|
|
115
|
+
from agno.storage.postgres import PostgresDb
|
|
116
|
+
import os
|
|
117
|
+
|
|
118
|
+
# Local browser automation imports (no cloud services)
|
|
119
|
+
try:
|
|
120
|
+
from playwright.sync_api import sync_playwright
|
|
121
|
+
PLAYWRIGHT_AVAILABLE = True
|
|
122
|
+
except ImportError:
|
|
123
|
+
PLAYWRIGHT_AVAILABLE = False
|
|
124
|
+
|
|
125
|
+
try:
|
|
126
|
+
from selenium import webdriver
|
|
127
|
+
from selenium.webdriver.common.by import By
|
|
128
|
+
from selenium.webdriver.support.ui import WebDriverWait
|
|
129
|
+
from selenium.webdriver.support import expected_conditions as EC
|
|
130
|
+
from selenium.webdriver.chrome.options import Options as ChromeOptions
|
|
131
|
+
from selenium.webdriver.firefox.options import Options as FirefoxOptions
|
|
132
|
+
SELENIUM_AVAILABLE = True
|
|
133
|
+
except ImportError:
|
|
134
|
+
SELENIUM_AVAILABLE = False
|
|
135
|
+
|
|
136
|
+
# Custom local browser tools
|
|
137
|
+
class LocalBrowserTools:
|
|
138
|
+
"""Local browser automation tools using Playwright and Selenium"""
|
|
139
|
+
|
|
140
|
+
def __init__(self):
|
|
141
|
+
self.playwright_available = PLAYWRIGHT_AVAILABLE
|
|
142
|
+
self.selenium_available = SELENIUM_AVAILABLE
|
|
143
|
+
|
|
144
|
+
def get_playwright_browser(self, headless=True, browser_type="chromium"):
|
|
145
|
+
"""Get a local Playwright browser instance"""
|
|
146
|
+
if not self.playwright_available:
|
|
147
|
+
raise ImportError("Playwright not available")
|
|
148
|
+
|
|
149
|
+
p = sync_playwright().start()
|
|
150
|
+
if browser_type == "chromium":
|
|
151
|
+
browser = p.chromium.launch(headless=headless)
|
|
152
|
+
elif browser_type == "firefox":
|
|
153
|
+
browser = p.firefox.launch(headless=headless)
|
|
154
|
+
elif browser_type == "webkit":
|
|
155
|
+
browser = p.webkit.launch(headless=headless)
|
|
156
|
+
else:
|
|
157
|
+
browser = p.chromium.launch(headless=headless)
|
|
158
|
+
|
|
159
|
+
return browser, p
|
|
160
|
+
|
|
161
|
+
def get_selenium_driver(self, headless=True, browser_type="chrome"):
|
|
162
|
+
"""Get a local Selenium WebDriver instance"""
|
|
163
|
+
if not self.selenium_available:
|
|
164
|
+
raise ImportError("Selenium not available")
|
|
165
|
+
|
|
166
|
+
if browser_type == "chrome":
|
|
167
|
+
options = ChromeOptions()
|
|
168
|
+
if headless:
|
|
169
|
+
options.add_argument("--headless")
|
|
170
|
+
options.add_argument("--no-sandbox")
|
|
171
|
+
options.add_argument("--disable-dev-shm-usage")
|
|
172
|
+
options.add_argument("--disable-blink-features=AutomationControlled")
|
|
173
|
+
return webdriver.Chrome(options=options)
|
|
174
|
+
elif browser_type == "firefox":
|
|
175
|
+
options = FirefoxOptions()
|
|
176
|
+
if headless:
|
|
177
|
+
options.add_argument("--headless")
|
|
178
|
+
return webdriver.Firefox(options=options)
|
|
179
|
+
else:
|
|
180
|
+
raise ValueError(f"Unsupported browser type: {browser_type}")
|
|
181
|
+
|
|
182
|
+
LOCAL_BROWSER_TOOLS = LocalBrowserTools() if (PLAYWRIGHT_AVAILABLE or SELENIUM_AVAILABLE) else None
|
|
183
|
+
|
|
184
|
+
# Configure OpenAI model (requires OPENAI_API_KEY)
|
|
185
|
+
model = OpenAIChat(
|
|
186
|
+
model="gpt-4o-mini",
|
|
187
|
+
temperature=0.1,
|
|
188
|
+
max_tokens=4000
|
|
189
|
+
)
|
|
190
|
+
|
|
191
|
+
# DevOps Assistant Agent
|
|
192
|
+
devops_agent = Agent(
|
|
193
|
+
name="AI DevOps Assistant",
|
|
194
|
+
description="Expert AI assistant for DevOps operations, infrastructure management, and automation",
|
|
195
|
+
model=model,
|
|
196
|
+
tools=[
|
|
197
|
+
DuckDuckGoTools(),
|
|
198
|
+
ShellTools(run_code=False), # Safe mode - no code execution
|
|
199
|
+
FileTools(),
|
|
200
|
+
PythonTools(run_code=False), # Safe mode - no code execution
|
|
201
|
+
],
|
|
202
|
+
instructions=[
|
|
203
|
+
"You are an expert DevOps assistant specializing in:",
|
|
204
|
+
"- Infrastructure automation and management",
|
|
205
|
+
"- CI/CD pipeline optimization",
|
|
206
|
+
"- Cloud platform integration",
|
|
207
|
+
"- Security best practices",
|
|
208
|
+
"- Monitoring and observability",
|
|
209
|
+
"- Container orchestration",
|
|
210
|
+
"Always provide safe, well-documented solutions.",
|
|
211
|
+
"Explain your reasoning and include relevant examples.",
|
|
212
|
+
"Focus on enterprise-grade, production-ready approaches."
|
|
213
|
+
],
|
|
214
|
+
show_tool_calls=True,
|
|
215
|
+
markdown=True
|
|
216
|
+
)
|
|
217
|
+
|
|
218
|
+
# Code Review Agent
|
|
219
|
+
code_review_agent = Agent(
|
|
220
|
+
name="Code Review Assistant",
|
|
221
|
+
description="AI assistant for code review, quality analysis, and best practices",
|
|
222
|
+
model=model,
|
|
223
|
+
tools=[
|
|
224
|
+
FileTools(),
|
|
225
|
+
PythonTools(run_code=False),
|
|
226
|
+
],
|
|
227
|
+
instructions=[
|
|
228
|
+
"You are an expert code reviewer focusing on:",
|
|
229
|
+
"- Code quality and best practices",
|
|
230
|
+
"- Security vulnerability detection",
|
|
231
|
+
"- Performance optimization opportunities",
|
|
232
|
+
"- Documentation and maintainability",
|
|
233
|
+
"- Testing coverage and strategies",
|
|
234
|
+
"Provide constructive feedback with specific examples.",
|
|
235
|
+
"Suggest improvements with code snippets when helpful.",
|
|
236
|
+
"Prioritize security and maintainability."
|
|
237
|
+
],
|
|
238
|
+
show_tool_calls=True,
|
|
239
|
+
markdown=True
|
|
240
|
+
)
|
|
241
|
+
|
|
242
|
+
# Documentation Agent
|
|
243
|
+
docs_agent = Agent(
|
|
244
|
+
name="Documentation Assistant",
|
|
245
|
+
description="AI assistant for creating and maintaining technical documentation",
|
|
246
|
+
model=model,
|
|
247
|
+
tools=[
|
|
248
|
+
FileTools(),
|
|
249
|
+
DuckDuckGoTools(),
|
|
250
|
+
],
|
|
251
|
+
instructions=[
|
|
252
|
+
"You are an expert technical writer specializing in:",
|
|
253
|
+
"- API documentation and guides",
|
|
254
|
+
"- Architecture documentation",
|
|
255
|
+
"- User manuals and tutorials",
|
|
256
|
+
"- README files and project documentation",
|
|
257
|
+
"- Runbooks and operational procedures",
|
|
258
|
+
"Create clear, comprehensive, and well-structured documentation.",
|
|
259
|
+
"Use appropriate formatting and include examples.",
|
|
260
|
+
"Focus on user experience and clarity."
|
|
261
|
+
],
|
|
262
|
+
show_tool_calls=True,
|
|
263
|
+
markdown=True
|
|
264
|
+
)
|
|
265
|
+
|
|
266
|
+
# LinkedIn Automation Agent (Local Browser Only)
|
|
267
|
+
linkedin_tools = [
|
|
268
|
+
FileTools(),
|
|
269
|
+
PythonTools(run_code=False), # Safe mode - no code execution
|
|
270
|
+
]
|
|
271
|
+
|
|
272
|
+
linkedin_agent = Agent(
|
|
273
|
+
name="LinkedIn Automation Assistant",
|
|
274
|
+
description="AI assistant for LinkedIn automation using LOCAL browsers only (no cloud services)",
|
|
275
|
+
model=model,
|
|
276
|
+
tools=linkedin_tools,
|
|
277
|
+
instructions=[
|
|
278
|
+
"You are a LinkedIn automation specialist using LOCAL browsers only (no cloud services):",
|
|
279
|
+
"- Automated post engagement (liking, commenting) using local Playwright/Selenium",
|
|
280
|
+
"- Timeline monitoring and content analysis with local browser instances",
|
|
281
|
+
"- Connection management and networking through local automation",
|
|
282
|
+
"- Content scheduling and posting via local browser control",
|
|
283
|
+
"- Profile optimization and management with local tools",
|
|
284
|
+
"- Analytics and engagement tracking using local data collection",
|
|
285
|
+
"SECURITY & PRIVACY FIRST:",
|
|
286
|
+
"- ALL browser automation runs locally on user's machine",
|
|
287
|
+
"- NO data sent to cloud services or external browsers",
|
|
288
|
+
"- Complete privacy and security with local-only operation",
|
|
289
|
+
"- User maintains full control over browser and data",
|
|
290
|
+
"IMPORTANT SAFETY GUIDELINES:",
|
|
291
|
+
"- Always respect LinkedIn's Terms of Service",
|
|
292
|
+
"- Use reasonable delays between actions (2-5 seconds)",
|
|
293
|
+
"- Limit daily actions to avoid rate limiting",
|
|
294
|
+
"- Never spam or engage in inappropriate behavior",
|
|
295
|
+
"- Respect user privacy and data protection",
|
|
296
|
+
"- Provide ethical automation strategies only",
|
|
297
|
+
"Focus on authentic engagement and professional networking with complete privacy."
|
|
298
|
+
],
|
|
299
|
+
show_tool_calls=True,
|
|
300
|
+
markdown=True
|
|
301
|
+
)
|
|
302
|
+
|
|
303
|
+
# Web Automation Agent (Local Browser Only)
|
|
304
|
+
web_automation_agent = Agent(
|
|
305
|
+
name="Web Automation Assistant",
|
|
306
|
+
description="AI assistant for general web automation using LOCAL browsers only (no cloud services)",
|
|
307
|
+
model=model,
|
|
308
|
+
tools=[
|
|
309
|
+
FileTools(),
|
|
310
|
+
PythonTools(run_code=False), # Safe mode - no code execution
|
|
311
|
+
],
|
|
312
|
+
instructions=[
|
|
313
|
+
"You are a web automation expert using LOCAL browsers only (no cloud services):",
|
|
314
|
+
"- Browser automation with LOCAL Playwright and Selenium instances",
|
|
315
|
+
"- Web scraping and data extraction using local browser control",
|
|
316
|
+
"- Form filling and submission automation with local browsers",
|
|
317
|
+
"- Website monitoring and testing through local automation",
|
|
318
|
+
"- Social media automation (ethical) with complete privacy",
|
|
319
|
+
"- E-commerce automation and monitoring using local tools",
|
|
320
|
+
"SECURITY & PRIVACY FIRST:",
|
|
321
|
+
"- ALL browser automation runs locally on user's machine",
|
|
322
|
+
"- NO data sent to cloud services or external browsers",
|
|
323
|
+
"- Complete privacy and security with local-only operation",
|
|
324
|
+
"- User maintains full control over browser and data",
|
|
325
|
+
"IMPORTANT GUIDELINES:",
|
|
326
|
+
"- Always respect website Terms of Service",
|
|
327
|
+
"- Use appropriate delays and rate limiting",
|
|
328
|
+
"- Handle errors gracefully with retries",
|
|
329
|
+
"- Respect robots.txt and website policies",
|
|
330
|
+
"- Provide ethical automation solutions only",
|
|
331
|
+
"- Focus on legitimate business use cases",
|
|
332
|
+
"Create robust, maintainable automation scripts with complete privacy."
|
|
333
|
+
],
|
|
334
|
+
show_tool_calls=True,
|
|
335
|
+
markdown=True
|
|
336
|
+
)
|
|
337
|
+
|
|
338
|
+
# Create AgentOS instance
|
|
339
|
+
available_agents = [devops_agent, code_review_agent, docs_agent]
|
|
340
|
+
|
|
341
|
+
# Add local browser automation agents if tools are available
|
|
342
|
+
if PLAYWRIGHT_AVAILABLE or SELENIUM_AVAILABLE:
|
|
343
|
+
available_agents.extend([linkedin_agent, web_automation_agent])
|
|
344
|
+
print("🔒 Local browser automation agents enabled (privacy-first)")
|
|
345
|
+
if PLAYWRIGHT_AVAILABLE:
|
|
346
|
+
print(" ✅ Playwright available for modern browser automation")
|
|
347
|
+
if SELENIUM_AVAILABLE:
|
|
348
|
+
print(" ✅ Selenium available for robust browser automation")
|
|
349
|
+
else:
|
|
350
|
+
print("⚠️ Local browser automation tools not available")
|
|
351
|
+
print(" Install with: pip install playwright selenium")
|
|
352
|
+
print(" Then run: playwright install")
|
|
353
|
+
|
|
354
|
+
agent_os = AgentOS(
|
|
355
|
+
name="AI DevOps AgentOS",
|
|
356
|
+
agents=available_agents,
|
|
357
|
+
port=int(os.getenv("AGNO_PORT", "7777")),
|
|
358
|
+
debug=True
|
|
359
|
+
)
|
|
360
|
+
|
|
361
|
+
if __name__ == "__main__":
|
|
362
|
+
print("🚀 Starting AI DevOps AgentOS...")
|
|
363
|
+
print(f"📊 Available Agents: {len(agent_os.agents)}")
|
|
364
|
+
print(f"🌐 Server will run on: http://localhost:{agent_os.port}")
|
|
365
|
+
print("💡 Use Ctrl+C to stop the server")
|
|
366
|
+
|
|
367
|
+
agent_os.serve()
|
|
368
|
+
EOF
|
|
369
|
+
print_success "Created AgentOS configuration"
|
|
370
|
+
fi
|
|
371
|
+
|
|
372
|
+
# Create environment template
|
|
373
|
+
if [[ ! -f ".env.example" ]]; then
|
|
374
|
+
cat > .env.example << 'EOF'
|
|
375
|
+
# AI DevOps Framework - Agno Configuration (Local Browser Automation)
|
|
376
|
+
# Copy this file to .env and configure your API keys
|
|
377
|
+
|
|
378
|
+
# OpenAI Configuration (Required)
|
|
379
|
+
OPENAI_API_KEY=your_openai_api_key_here
|
|
380
|
+
|
|
381
|
+
# Agno Configuration
|
|
382
|
+
AGNO_PORT=7777
|
|
383
|
+
AGNO_DEBUG=true
|
|
384
|
+
|
|
385
|
+
# Local Browser Automation Configuration
|
|
386
|
+
BROWSER_HEADLESS=false
|
|
387
|
+
BROWSER_TIMEOUT=30000
|
|
388
|
+
BROWSER_DELAY_MIN=2
|
|
389
|
+
BROWSER_DELAY_MAX=5
|
|
390
|
+
|
|
391
|
+
# LinkedIn Automation (Local Browser Only)
|
|
392
|
+
LINKEDIN_EMAIL=your_linkedin_email
|
|
393
|
+
LINKEDIN_PASSWORD=your_linkedin_password
|
|
394
|
+
LINKEDIN_MAX_LIKES=10
|
|
395
|
+
LINKEDIN_HEADLESS=false
|
|
396
|
+
|
|
397
|
+
# Optional: Database Configuration
|
|
398
|
+
# DATABASE_URL=postgresql://user:password@localhost:5432/agno_db
|
|
399
|
+
|
|
400
|
+
# Optional: Additional Model Providers
|
|
401
|
+
# ANTHROPIC_API_KEY=your_anthropic_key_here
|
|
402
|
+
# GOOGLE_API_KEY=your_google_key_here
|
|
403
|
+
# GROQ_API_KEY=your_groq_key_here
|
|
404
|
+
|
|
405
|
+
# Security Note: All browser automation runs locally
|
|
406
|
+
# No data is sent to cloud services or external browsers
|
|
407
|
+
# Complete privacy and security with local-only operation
|
|
408
|
+
EOF
|
|
409
|
+
print_success "Created environment template (local browser automation)"
|
|
410
|
+
fi
|
|
411
|
+
|
|
412
|
+
# Create startup script
|
|
413
|
+
cat > start_agno.sh << 'EOF'
|
|
414
|
+
#!/bin/bash
|
|
415
|
+
cd "$(dirname "$0")"
|
|
416
|
+
source venv/bin/activate
|
|
417
|
+
python agent_os.py
|
|
418
|
+
EOF
|
|
419
|
+
chmod +x start_agno.sh
|
|
420
|
+
|
|
421
|
+
print_success "Agno AgentOS setup complete"
|
|
422
|
+
print_info "Directory: $AGNO_DIR"
|
|
423
|
+
print_info "Configure your API keys in .env file"
|
|
424
|
+
return 0
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
# Function to setup Agent-UI
|
|
428
|
+
setup_agent_ui() {
|
|
429
|
+
print_info "Setting up Agent-UI..."
|
|
430
|
+
|
|
431
|
+
# Create directory
|
|
432
|
+
mkdir -p "$AGENT_UI_DIR"
|
|
433
|
+
cd "$AGENT_UI_DIR" || exit
|
|
434
|
+
|
|
435
|
+
# Check if already initialized
|
|
436
|
+
if [[ ! -f "package.json" ]]; then
|
|
437
|
+
print_info "Creating Agent-UI project..."
|
|
438
|
+
if command -v bun &> /dev/null; then
|
|
439
|
+
bun x create-agent-ui@latest . --yes
|
|
440
|
+
else
|
|
441
|
+
# NOSONAR - npm scripts required for project scaffolding
|
|
442
|
+
npx create-agent-ui@latest . --yes
|
|
443
|
+
fi
|
|
444
|
+
else
|
|
445
|
+
print_info "Agent-UI already initialized, updating dependencies..."
|
|
446
|
+
if command -v bun &> /dev/null; then
|
|
447
|
+
bun install
|
|
448
|
+
else
|
|
449
|
+
# NOSONAR - npm scripts required for native dependencies
|
|
450
|
+
npm install
|
|
451
|
+
fi
|
|
452
|
+
fi
|
|
453
|
+
|
|
454
|
+
# Create configuration
|
|
455
|
+
if [[ ! -f ".env.local" ]]; then
|
|
456
|
+
cat > .env.local << EOF
|
|
457
|
+
# Agent-UI Configuration for AI DevOps Framework
|
|
458
|
+
NEXT_PUBLIC_AGNO_API_URL=http://localhost:${AGNO_PORT}
|
|
459
|
+
NEXT_PUBLIC_APP_NAME=AI DevOps Assistant
|
|
460
|
+
NEXT_PUBLIC_APP_DESCRIPTION=AI-powered DevOps automation and assistance
|
|
461
|
+
PORT=${AGENT_UI_PORT}
|
|
462
|
+
EOF
|
|
463
|
+
print_success "Created Agent-UI configuration"
|
|
464
|
+
fi
|
|
465
|
+
|
|
466
|
+
# Create startup script (prefers bun)
|
|
467
|
+
cat > start_agent_ui.sh << 'EOF'
|
|
468
|
+
#!/bin/bash
|
|
469
|
+
cd "$(dirname "$0")"
|
|
470
|
+
if command -v bun &> /dev/null; then
|
|
471
|
+
bun run dev
|
|
472
|
+
else
|
|
473
|
+
npm run dev
|
|
474
|
+
fi
|
|
475
|
+
EOF
|
|
476
|
+
chmod +x start_agent_ui.sh
|
|
477
|
+
|
|
478
|
+
print_success "Agent-UI setup complete"
|
|
479
|
+
print_info "Directory: $AGENT_UI_DIR"
|
|
480
|
+
return 0
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
# Function to create management scripts
|
|
484
|
+
create_management_scripts() {
|
|
485
|
+
print_info "Creating management scripts..."
|
|
486
|
+
|
|
487
|
+
local script_dir="$HOME/.aidevops/scripts"
|
|
488
|
+
mkdir -p "$script_dir"
|
|
489
|
+
|
|
490
|
+
# Create unified start script
|
|
491
|
+
cat > "$script_dir/start-agno-stack.sh" << 'EOF'
|
|
492
|
+
#!/bin/bash
|
|
493
|
+
|
|
494
|
+
# AI DevOps Framework - Agno Stack Startup Script
|
|
495
|
+
# Starts both AgentOS and Agent-UI in the background
|
|
496
|
+
|
|
497
|
+
AGNO_DIR="$HOME/.aidevops/agno"
|
|
498
|
+
AGENT_UI_DIR="$HOME/.aidevops/agent-ui"
|
|
499
|
+
|
|
500
|
+
echo "🚀 Starting AI DevOps Agno Stack..."
|
|
501
|
+
|
|
502
|
+
# Start AgentOS in background
|
|
503
|
+
if [[ -f "$AGNO_DIR/start_agno.sh" ]]; then
|
|
504
|
+
echo "📡 Starting AgentOS..."
|
|
505
|
+
cd "$AGNO_DIR"
|
|
506
|
+
./start_agno.sh &
|
|
507
|
+
AGNO_PID=$!
|
|
508
|
+
echo "AgentOS PID: $AGNO_PID"
|
|
509
|
+
sleep 3
|
|
510
|
+
else
|
|
511
|
+
echo "❌ AgentOS not found. Run setup first."
|
|
512
|
+
exit 1
|
|
513
|
+
fi
|
|
514
|
+
|
|
515
|
+
# Start Agent-UI in background
|
|
516
|
+
if [[ -f "$AGENT_UI_DIR/start_agent_ui.sh" ]]; then
|
|
517
|
+
echo "🎨 Starting Agent-UI..."
|
|
518
|
+
cd "$AGENT_UI_DIR"
|
|
519
|
+
./start_agent_ui.sh &
|
|
520
|
+
AGENT_UI_PID=$!
|
|
521
|
+
echo "Agent-UI PID: $AGENT_UI_PID"
|
|
522
|
+
sleep 3
|
|
523
|
+
else
|
|
524
|
+
echo "❌ Agent-UI not found. Run setup first."
|
|
525
|
+
kill $AGNO_PID 2>/dev/null
|
|
526
|
+
exit 1
|
|
527
|
+
fi
|
|
528
|
+
|
|
529
|
+
echo ""
|
|
530
|
+
echo "✅ AI DevOps Agno Stack Started Successfully!"
|
|
531
|
+
echo "📡 AgentOS: http://localhost:8000"
|
|
532
|
+
echo "🎨 Agent-UI: http://localhost:3000"
|
|
533
|
+
echo ""
|
|
534
|
+
echo "💡 Use 'stop-agno-stack.sh' to stop all services"
|
|
535
|
+
echo "📊 Use 'agno-status.sh' to check service status"
|
|
536
|
+
|
|
537
|
+
# Save PIDs for later cleanup
|
|
538
|
+
echo "$AGNO_PID" > /tmp/agno_pid
|
|
539
|
+
echo "$AGENT_UI_PID" > /tmp/agent_ui_pid
|
|
540
|
+
|
|
541
|
+
# Keep script running to monitor services
|
|
542
|
+
wait
|
|
543
|
+
EOF
|
|
544
|
+
chmod +x "$script_dir/start-agno-stack.sh"
|
|
545
|
+
|
|
546
|
+
# Create stop script
|
|
547
|
+
cat > "$script_dir/stop-agno-stack.sh" << 'EOF'
|
|
548
|
+
#!/bin/bash
|
|
549
|
+
|
|
550
|
+
echo "🛑 Stopping AI DevOps Agno Stack..."
|
|
551
|
+
|
|
552
|
+
# Stop services by PID
|
|
553
|
+
if [[ -f /tmp/agno_pid ]]; then
|
|
554
|
+
AGNO_PID=$(cat /tmp/agno_pid)
|
|
555
|
+
if kill -0 "$AGNO_PID" 2>/dev/null; then
|
|
556
|
+
echo "📡 Stopping AgentOS (PID: $AGNO_PID)..."
|
|
557
|
+
kill "$AGNO_PID"
|
|
558
|
+
fi
|
|
559
|
+
rm -f /tmp/agno_pid
|
|
560
|
+
fi
|
|
561
|
+
|
|
562
|
+
if [[ -f /tmp/agent_ui_pid ]]; then
|
|
563
|
+
AGENT_UI_PID=$(cat /tmp/agent_ui_pid)
|
|
564
|
+
if kill -0 "$AGENT_UI_PID" 2>/dev/null; then
|
|
565
|
+
echo "🎨 Stopping Agent-UI (PID: $AGENT_UI_PID)..."
|
|
566
|
+
kill "$AGENT_UI_PID"
|
|
567
|
+
fi
|
|
568
|
+
rm -f /tmp/agent_ui_pid
|
|
569
|
+
fi
|
|
570
|
+
|
|
571
|
+
# Fallback: kill by port
|
|
572
|
+
echo "🔍 Checking for remaining processes..."
|
|
573
|
+
pkill -f "python.*agent_os.py" 2>/dev/null
|
|
574
|
+
pkill -f "npm.*run.*dev" 2>/dev/null
|
|
575
|
+
|
|
576
|
+
echo "✅ AI DevOps Agno Stack stopped"
|
|
577
|
+
EOF
|
|
578
|
+
chmod +x "$script_dir/stop-agno-stack.sh"
|
|
579
|
+
|
|
580
|
+
# Create status script
|
|
581
|
+
cat > "$script_dir/agno-status.sh" << 'EOF'
|
|
582
|
+
#!/bin/bash
|
|
583
|
+
|
|
584
|
+
echo "📊 AI DevOps Agno Stack Status"
|
|
585
|
+
echo "================================"
|
|
586
|
+
|
|
587
|
+
# Check AgentOS
|
|
588
|
+
if curl -s http://localhost:8000/health >/dev/null 2>&1; then
|
|
589
|
+
echo "📡 AgentOS: ✅ Running (http://localhost:8000)"
|
|
590
|
+
else
|
|
591
|
+
echo "📡 AgentOS: ❌ Not running"
|
|
592
|
+
fi
|
|
593
|
+
|
|
594
|
+
# Check Agent-UI
|
|
595
|
+
if curl -s http://localhost:3000 >/dev/null 2>&1; then
|
|
596
|
+
echo "🎨 Agent-UI: ✅ Running (http://localhost:3000)"
|
|
597
|
+
else
|
|
598
|
+
echo "🎨 Agent-UI: ❌ Not running"
|
|
599
|
+
fi
|
|
600
|
+
|
|
601
|
+
echo ""
|
|
602
|
+
echo "🔧 Process Information:"
|
|
603
|
+
ps aux | grep -E "(agent_os\.py|npm.*run.*dev)" | grep -v grep || echo "No Agno processes found"
|
|
604
|
+
EOF
|
|
605
|
+
chmod +x "$script_dir/agno-status.sh"
|
|
606
|
+
|
|
607
|
+
print_success "Management scripts created in $script_dir"
|
|
608
|
+
return 0
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
# Function to show usage information
|
|
612
|
+
show_usage() {
|
|
613
|
+
echo "AI DevOps Framework - Agno Setup"
|
|
614
|
+
echo ""
|
|
615
|
+
echo "Usage: $0 [action]"
|
|
616
|
+
echo ""
|
|
617
|
+
echo "Actions:"
|
|
618
|
+
echo " setup Complete setup of Agno + Agent-UI"
|
|
619
|
+
echo " agno Setup only Agno AgentOS"
|
|
620
|
+
echo " ui Setup only Agent-UI"
|
|
621
|
+
echo " check Check prerequisites"
|
|
622
|
+
echo " status Show current status"
|
|
623
|
+
echo " start Start the Agno stack"
|
|
624
|
+
echo " stop Stop the Agno stack"
|
|
625
|
+
echo ""
|
|
626
|
+
echo "Examples:"
|
|
627
|
+
echo " $0 setup # Full setup"
|
|
628
|
+
echo " $0 start # Start services"
|
|
629
|
+
echo " $0 status # Check status"
|
|
630
|
+
return 0
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
# Main function
|
|
634
|
+
main() {
|
|
635
|
+
# Assign positional parameters to local variables
|
|
636
|
+
local command="${1:-help}"
|
|
637
|
+
local account_name="$account_name"
|
|
638
|
+
local target="$target"
|
|
639
|
+
local options="$options"
|
|
640
|
+
# Assign positional parameters to local variables
|
|
641
|
+
local command="${1:-help}"
|
|
642
|
+
local account_name="$account_name"
|
|
643
|
+
local target="$target"
|
|
644
|
+
local options="$options"
|
|
645
|
+
# Assign positional parameters to local variables
|
|
646
|
+
local command="${1:-help}"
|
|
647
|
+
local account_name="$account_name"
|
|
648
|
+
local target="$target"
|
|
649
|
+
local options="$options"
|
|
650
|
+
# Assign positional parameters to local variables
|
|
651
|
+
local action="$command"
|
|
652
|
+
|
|
653
|
+
case "$action" in
|
|
654
|
+
"setup")
|
|
655
|
+
if check_prerequisites; then
|
|
656
|
+
setup_agno
|
|
657
|
+
setup_agent_ui
|
|
658
|
+
create_management_scripts
|
|
659
|
+
echo ""
|
|
660
|
+
print_success "🎉 AI DevOps Agno Stack setup complete!"
|
|
661
|
+
echo ""
|
|
662
|
+
echo "📋 Next Steps:"
|
|
663
|
+
echo "1. Configure API keys in $AGNO_DIR/.env"
|
|
664
|
+
echo "2. Start services: ~/.aidevops/scripts/start-agno-stack.sh"
|
|
665
|
+
echo "3. Access Agent-UI: http://localhost:3000"
|
|
666
|
+
echo "4. Access AgentOS API: http://localhost:8000"
|
|
667
|
+
fi
|
|
668
|
+
;;
|
|
669
|
+
"agno")
|
|
670
|
+
if check_prerequisites; then
|
|
671
|
+
setup_agno
|
|
672
|
+
fi
|
|
673
|
+
;;
|
|
674
|
+
"ui")
|
|
675
|
+
if check_prerequisites; then
|
|
676
|
+
setup_agent_ui
|
|
677
|
+
fi
|
|
678
|
+
;;
|
|
679
|
+
"check")
|
|
680
|
+
check_prerequisites
|
|
681
|
+
;;
|
|
682
|
+
"status")
|
|
683
|
+
if [[ -f "$HOME/.aidevops/scripts/agno-status.sh" ]]; then
|
|
684
|
+
"$HOME/.aidevops/scripts/agno-status.sh"
|
|
685
|
+
else
|
|
686
|
+
print_error "Agno stack not set up. Run '$0 setup' first."
|
|
687
|
+
fi
|
|
688
|
+
;;
|
|
689
|
+
"start")
|
|
690
|
+
if [[ -f "$HOME/.aidevops/scripts/start-agno-stack.sh" ]]; then
|
|
691
|
+
"$HOME/.aidevops/scripts/start-agno-stack.sh"
|
|
692
|
+
else
|
|
693
|
+
print_error "Agno stack not set up. Run '$0 setup' first."
|
|
694
|
+
fi
|
|
695
|
+
;;
|
|
696
|
+
"stop")
|
|
697
|
+
if [[ -f "$HOME/.aidevops/scripts/stop-agno-stack.sh" ]]; then
|
|
698
|
+
"$HOME/.aidevops/scripts/stop-agno-stack.sh"
|
|
699
|
+
else
|
|
700
|
+
print_error "Agno stack not set up. Run '$0 setup' first."
|
|
701
|
+
fi
|
|
702
|
+
;;
|
|
703
|
+
*)
|
|
704
|
+
show_usage
|
|
705
|
+
;;
|
|
706
|
+
esac
|
|
707
|
+
return 0
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
main "$@"
|
|
711
|
+
|
|
712
|
+
return 0
|