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,544 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# =============================================================================
|
|
3
|
+
# Langflow Helper Script
|
|
4
|
+
# =============================================================================
|
|
5
|
+
# Visual AI workflow builder setup and management
|
|
6
|
+
#
|
|
7
|
+
# Usage:
|
|
8
|
+
# bash .agent/scripts/langflow-helper.sh [action]
|
|
9
|
+
#
|
|
10
|
+
# Actions:
|
|
11
|
+
# setup Complete setup of Langflow
|
|
12
|
+
# start Start Langflow server
|
|
13
|
+
# stop Stop Langflow server
|
|
14
|
+
# status Check Langflow status
|
|
15
|
+
# check Check prerequisites
|
|
16
|
+
# export Export flows to JSON
|
|
17
|
+
# import Import flows from JSON
|
|
18
|
+
# help Show this help message
|
|
19
|
+
# =============================================================================
|
|
20
|
+
|
|
21
|
+
set -euo pipefail
|
|
22
|
+
|
|
23
|
+
# Colors
|
|
24
|
+
RED='\033[0;31m'
|
|
25
|
+
GREEN='\033[0;32m'
|
|
26
|
+
YELLOW='\033[1;33m'
|
|
27
|
+
BLUE='\033[0;34m'
|
|
28
|
+
NC='\033[0m'
|
|
29
|
+
|
|
30
|
+
# Configuration
|
|
31
|
+
LANGFLOW_DIR="$HOME/.aidevops/langflow"
|
|
32
|
+
LANGFLOW_PORT="${LANGFLOW_PORT:-7860}"
|
|
33
|
+
SCRIPTS_DIR="$HOME/.aidevops/scripts"
|
|
34
|
+
FLOWS_DIR="$LANGFLOW_DIR/flows"
|
|
35
|
+
LOCALHOST_HELPER="$SCRIPTS_DIR/localhost-helper.sh"
|
|
36
|
+
|
|
37
|
+
# Helper functions
|
|
38
|
+
print_info() {
|
|
39
|
+
echo -e "${BLUE}[INFO]${NC} $1"
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
print_success() {
|
|
43
|
+
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
print_warning() {
|
|
47
|
+
echo -e "${YELLOW}[WARNING]${NC} $1"
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
print_error() {
|
|
51
|
+
echo -e "${RED}[ERROR]${NC} $1"
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
# Port management integration with localhost-helper.sh
|
|
55
|
+
# Returns available port (original if free, or next available)
|
|
56
|
+
get_available_port() {
|
|
57
|
+
local desired_port="$1"
|
|
58
|
+
|
|
59
|
+
# Use localhost-helper.sh if available
|
|
60
|
+
if [[ -x "$LOCALHOST_HELPER" ]]; then
|
|
61
|
+
if "$LOCALHOST_HELPER" check-port "$desired_port" >/dev/null 2>&1; then
|
|
62
|
+
echo "$desired_port"
|
|
63
|
+
return 0
|
|
64
|
+
else
|
|
65
|
+
# Port in use, find alternative
|
|
66
|
+
local suggested
|
|
67
|
+
suggested=$("$LOCALHOST_HELPER" find-port "$((desired_port + 1))" 2>/dev/null)
|
|
68
|
+
if [[ -n "$suggested" ]]; then
|
|
69
|
+
print_warning "Port $desired_port in use, using $suggested instead"
|
|
70
|
+
echo "$suggested"
|
|
71
|
+
return 0
|
|
72
|
+
fi
|
|
73
|
+
fi
|
|
74
|
+
fi
|
|
75
|
+
|
|
76
|
+
# Fallback: basic port check using lsof
|
|
77
|
+
if ! lsof -i :"$desired_port" >/dev/null 2>&1; then
|
|
78
|
+
echo "$desired_port"
|
|
79
|
+
return 0
|
|
80
|
+
fi
|
|
81
|
+
|
|
82
|
+
# Find next available port
|
|
83
|
+
local port="$desired_port"
|
|
84
|
+
while lsof -i :"$port" >/dev/null 2>&1 && [[ $port -lt 65535 ]]; do
|
|
85
|
+
((port++))
|
|
86
|
+
done
|
|
87
|
+
|
|
88
|
+
if [[ $port -lt 65535 ]]; then
|
|
89
|
+
print_warning "Port $desired_port in use, using $port instead"
|
|
90
|
+
echo "$port"
|
|
91
|
+
return 0
|
|
92
|
+
fi
|
|
93
|
+
|
|
94
|
+
print_error "No available ports found"
|
|
95
|
+
return 1
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
# Check prerequisites
|
|
99
|
+
check_prerequisites() {
|
|
100
|
+
local missing=0
|
|
101
|
+
|
|
102
|
+
print_info "Checking prerequisites..."
|
|
103
|
+
|
|
104
|
+
# Check Python
|
|
105
|
+
if command -v python3 &> /dev/null; then
|
|
106
|
+
local python_version
|
|
107
|
+
python_version=$(python3 --version 2>&1 | cut -d' ' -f2)
|
|
108
|
+
print_success "Python 3 found: $python_version"
|
|
109
|
+
else
|
|
110
|
+
print_error "Python 3 not found"
|
|
111
|
+
missing=1
|
|
112
|
+
fi
|
|
113
|
+
|
|
114
|
+
# Check pip
|
|
115
|
+
if command -v pip3 &> /dev/null || python3 -m pip --version &> /dev/null; then
|
|
116
|
+
print_success "pip found"
|
|
117
|
+
else
|
|
118
|
+
print_error "pip not found"
|
|
119
|
+
missing=1
|
|
120
|
+
fi
|
|
121
|
+
|
|
122
|
+
# Check for uv (preferred) or pip
|
|
123
|
+
if command -v uv &> /dev/null; then
|
|
124
|
+
print_success "uv found (preferred package manager)"
|
|
125
|
+
else
|
|
126
|
+
print_warning "uv not found, will use pip (consider installing uv for faster installs)"
|
|
127
|
+
fi
|
|
128
|
+
|
|
129
|
+
if [[ $missing -eq 1 ]]; then
|
|
130
|
+
print_error "Missing prerequisites. Please install them first."
|
|
131
|
+
return 1
|
|
132
|
+
fi
|
|
133
|
+
|
|
134
|
+
print_success "All prerequisites met"
|
|
135
|
+
return 0
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
# Setup Langflow
|
|
139
|
+
setup_langflow() {
|
|
140
|
+
print_info "Setting up Langflow..."
|
|
141
|
+
|
|
142
|
+
# Create directories
|
|
143
|
+
mkdir -p "$LANGFLOW_DIR"
|
|
144
|
+
mkdir -p "$FLOWS_DIR"
|
|
145
|
+
mkdir -p "$SCRIPTS_DIR"
|
|
146
|
+
|
|
147
|
+
cd "$LANGFLOW_DIR" || exit 1
|
|
148
|
+
|
|
149
|
+
# Create virtual environment
|
|
150
|
+
if [[ ! -d "venv" ]]; then
|
|
151
|
+
print_info "Creating virtual environment..."
|
|
152
|
+
python3 -m venv venv
|
|
153
|
+
fi
|
|
154
|
+
|
|
155
|
+
# Activate venv
|
|
156
|
+
# shellcheck source=/dev/null
|
|
157
|
+
source venv/bin/activate
|
|
158
|
+
|
|
159
|
+
# Install Langflow
|
|
160
|
+
print_info "Installing Langflow..."
|
|
161
|
+
if command -v uv &> /dev/null; then
|
|
162
|
+
uv pip install langflow -U
|
|
163
|
+
else
|
|
164
|
+
pip install langflow -U
|
|
165
|
+
fi
|
|
166
|
+
|
|
167
|
+
# Create environment template
|
|
168
|
+
if [[ ! -f ".env.example" ]]; then
|
|
169
|
+
cat > .env.example << 'EOF'
|
|
170
|
+
# Langflow Configuration for AI DevOps Framework
|
|
171
|
+
# Copy this file to .env and configure your API keys
|
|
172
|
+
|
|
173
|
+
# OpenAI Configuration (Required for most flows)
|
|
174
|
+
OPENAI_API_KEY=your_openai_api_key_here
|
|
175
|
+
|
|
176
|
+
# Anthropic Configuration (Optional)
|
|
177
|
+
ANTHROPIC_API_KEY=your_anthropic_key_here
|
|
178
|
+
|
|
179
|
+
# Google Configuration (Optional)
|
|
180
|
+
GOOGLE_API_KEY=your_google_key_here
|
|
181
|
+
|
|
182
|
+
# Langflow Server Configuration
|
|
183
|
+
LANGFLOW_HOST=0.0.0.0
|
|
184
|
+
LANGFLOW_PORT=7860
|
|
185
|
+
LANGFLOW_WORKERS=1
|
|
186
|
+
LANGFLOW_LOG_LEVEL=INFO
|
|
187
|
+
|
|
188
|
+
# Database Configuration (default: SQLite)
|
|
189
|
+
# For production, use PostgreSQL:
|
|
190
|
+
# LANGFLOW_DATABASE_URL=postgresql://user:password@localhost:5432/langflow
|
|
191
|
+
|
|
192
|
+
# Local LLM Configuration (Ollama)
|
|
193
|
+
OLLAMA_BASE_URL=http://localhost:11434
|
|
194
|
+
|
|
195
|
+
# MCP Server (enable to expose flows as MCP tools)
|
|
196
|
+
LANGFLOW_MCP_ENABLED=false
|
|
197
|
+
|
|
198
|
+
# Security Note: All processing runs locally
|
|
199
|
+
# No data is sent to external services unless you configure external LLMs
|
|
200
|
+
EOF
|
|
201
|
+
print_success "Created environment template"
|
|
202
|
+
fi
|
|
203
|
+
|
|
204
|
+
# Copy template to .env if not exists
|
|
205
|
+
if [[ ! -f ".env" ]]; then
|
|
206
|
+
cp .env.example .env
|
|
207
|
+
print_info "Created .env file - please configure your API keys"
|
|
208
|
+
fi
|
|
209
|
+
|
|
210
|
+
# Create startup script
|
|
211
|
+
cat > start_langflow.sh << 'EOF'
|
|
212
|
+
#!/bin/bash
|
|
213
|
+
cd "$(dirname "$0")" || exit
|
|
214
|
+
source venv/bin/activate
|
|
215
|
+
|
|
216
|
+
# Load environment variables
|
|
217
|
+
if [[ -f .env ]]; then
|
|
218
|
+
set -a
|
|
219
|
+
# shellcheck source=/dev/null
|
|
220
|
+
source .env
|
|
221
|
+
set +a
|
|
222
|
+
fi
|
|
223
|
+
|
|
224
|
+
# Start Langflow
|
|
225
|
+
langflow run --host "${LANGFLOW_HOST:-0.0.0.0}" --port "${LANGFLOW_PORT:-7860}"
|
|
226
|
+
EOF
|
|
227
|
+
chmod +x start_langflow.sh
|
|
228
|
+
|
|
229
|
+
# Create management scripts
|
|
230
|
+
create_management_scripts
|
|
231
|
+
|
|
232
|
+
print_success "Langflow setup complete"
|
|
233
|
+
print_info "Directory: $LANGFLOW_DIR"
|
|
234
|
+
print_info "Configure your API keys in .env file"
|
|
235
|
+
return 0
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
# Create management scripts
|
|
239
|
+
create_management_scripts() {
|
|
240
|
+
print_info "Creating management scripts..."
|
|
241
|
+
|
|
242
|
+
mkdir -p "$SCRIPTS_DIR"
|
|
243
|
+
|
|
244
|
+
# Create start script
|
|
245
|
+
cat > "$SCRIPTS_DIR/start-langflow.sh" << 'EOF'
|
|
246
|
+
#!/bin/bash
|
|
247
|
+
# AI DevOps Framework - Langflow Startup Script
|
|
248
|
+
|
|
249
|
+
LANGFLOW_DIR="$HOME/.aidevops/langflow"
|
|
250
|
+
SCRIPTS_DIR="$HOME/.aidevops/scripts"
|
|
251
|
+
LOCALHOST_HELPER="$SCRIPTS_DIR/localhost-helper.sh"
|
|
252
|
+
DESIRED_PORT="${LANGFLOW_PORT:-7860}"
|
|
253
|
+
|
|
254
|
+
echo "Starting Langflow..."
|
|
255
|
+
|
|
256
|
+
# Check port availability using localhost-helper.sh
|
|
257
|
+
if [[ -x "$LOCALHOST_HELPER" ]]; then
|
|
258
|
+
if ! "$LOCALHOST_HELPER" check-port "$DESIRED_PORT" >/dev/null 2>&1; then
|
|
259
|
+
echo "[WARNING] Port $DESIRED_PORT is in use"
|
|
260
|
+
SUGGESTED=$("$LOCALHOST_HELPER" find-port "$((DESIRED_PORT + 1))" 2>/dev/null)
|
|
261
|
+
if [[ -n "$SUGGESTED" ]]; then
|
|
262
|
+
echo "[INFO] Using alternative port: $SUGGESTED"
|
|
263
|
+
DESIRED_PORT="$SUGGESTED"
|
|
264
|
+
fi
|
|
265
|
+
fi
|
|
266
|
+
else
|
|
267
|
+
# Fallback port check
|
|
268
|
+
if lsof -i :"$DESIRED_PORT" >/dev/null 2>&1; then
|
|
269
|
+
echo "[WARNING] Port $DESIRED_PORT is in use, finding alternative..."
|
|
270
|
+
while lsof -i :"$DESIRED_PORT" >/dev/null 2>&1 && [[ $DESIRED_PORT -lt 65535 ]]; do
|
|
271
|
+
((DESIRED_PORT++))
|
|
272
|
+
done
|
|
273
|
+
echo "[INFO] Using port: $DESIRED_PORT"
|
|
274
|
+
fi
|
|
275
|
+
fi
|
|
276
|
+
|
|
277
|
+
if [[ -f "$LANGFLOW_DIR/start_langflow.sh" ]]; then
|
|
278
|
+
cd "$LANGFLOW_DIR" || exit 1
|
|
279
|
+
|
|
280
|
+
# Export port for the startup script
|
|
281
|
+
export LANGFLOW_PORT="$DESIRED_PORT"
|
|
282
|
+
|
|
283
|
+
./start_langflow.sh &
|
|
284
|
+
LANGFLOW_PID=$!
|
|
285
|
+
echo "$LANGFLOW_PID" > /tmp/langflow_pid
|
|
286
|
+
echo "$DESIRED_PORT" > /tmp/langflow_port
|
|
287
|
+
|
|
288
|
+
# Wait for startup
|
|
289
|
+
sleep 5
|
|
290
|
+
|
|
291
|
+
if curl -s "http://localhost:$DESIRED_PORT/health" >/dev/null 2>&1; then
|
|
292
|
+
echo ""
|
|
293
|
+
echo "Langflow started successfully!"
|
|
294
|
+
echo "URL: http://localhost:$DESIRED_PORT"
|
|
295
|
+
echo "API Docs: http://localhost:$DESIRED_PORT/docs"
|
|
296
|
+
echo ""
|
|
297
|
+
echo "Use 'stop-langflow.sh' to stop the server"
|
|
298
|
+
else
|
|
299
|
+
echo "Langflow may still be starting. Check http://localhost:$DESIRED_PORT"
|
|
300
|
+
fi
|
|
301
|
+
else
|
|
302
|
+
echo "Langflow not set up. Run setup first:"
|
|
303
|
+
echo " bash .agent/scripts/langflow-helper.sh setup"
|
|
304
|
+
exit 1
|
|
305
|
+
fi
|
|
306
|
+
EOF
|
|
307
|
+
chmod +x "$SCRIPTS_DIR/start-langflow.sh"
|
|
308
|
+
|
|
309
|
+
# Create stop script
|
|
310
|
+
cat > "$SCRIPTS_DIR/stop-langflow.sh" << 'EOF'
|
|
311
|
+
#!/bin/bash
|
|
312
|
+
# AI DevOps Framework - Langflow Stop Script
|
|
313
|
+
|
|
314
|
+
echo "Stopping Langflow..."
|
|
315
|
+
|
|
316
|
+
if [[ -f /tmp/langflow_pid ]]; then
|
|
317
|
+
LANGFLOW_PID=$(cat /tmp/langflow_pid)
|
|
318
|
+
if kill -0 "$LANGFLOW_PID" 2>/dev/null; then
|
|
319
|
+
kill "$LANGFLOW_PID"
|
|
320
|
+
echo "Stopped Langflow (PID: $LANGFLOW_PID)"
|
|
321
|
+
fi
|
|
322
|
+
rm -f /tmp/langflow_pid
|
|
323
|
+
fi
|
|
324
|
+
|
|
325
|
+
# Fallback: kill by port
|
|
326
|
+
pkill -f "langflow run" 2>/dev/null || true
|
|
327
|
+
|
|
328
|
+
echo "Langflow stopped"
|
|
329
|
+
EOF
|
|
330
|
+
chmod +x "$SCRIPTS_DIR/stop-langflow.sh"
|
|
331
|
+
|
|
332
|
+
# Create status script
|
|
333
|
+
cat > "$SCRIPTS_DIR/langflow-status.sh" << 'EOF'
|
|
334
|
+
#!/bin/bash
|
|
335
|
+
# AI DevOps Framework - Langflow Status Script
|
|
336
|
+
|
|
337
|
+
# Get actual port (from saved file or default)
|
|
338
|
+
if [[ -f /tmp/langflow_port ]]; then
|
|
339
|
+
PORT=$(cat /tmp/langflow_port)
|
|
340
|
+
else
|
|
341
|
+
PORT="${LANGFLOW_PORT:-7860}"
|
|
342
|
+
fi
|
|
343
|
+
|
|
344
|
+
echo "Langflow Status"
|
|
345
|
+
echo "==============="
|
|
346
|
+
|
|
347
|
+
# Check if running
|
|
348
|
+
if curl -s "http://localhost:$PORT/health" >/dev/null 2>&1; then
|
|
349
|
+
echo "Status: Running"
|
|
350
|
+
echo "URL: http://localhost:$PORT"
|
|
351
|
+
echo "API Docs: http://localhost:$PORT/docs"
|
|
352
|
+
else
|
|
353
|
+
echo "Status: Not running"
|
|
354
|
+
fi
|
|
355
|
+
|
|
356
|
+
echo ""
|
|
357
|
+
echo "Process Information:"
|
|
358
|
+
pgrep -f "langflow" && ps aux | grep -E "langflow" | grep -v grep || echo "No Langflow processes found"
|
|
359
|
+
EOF
|
|
360
|
+
chmod +x "$SCRIPTS_DIR/langflow-status.sh"
|
|
361
|
+
|
|
362
|
+
print_success "Management scripts created in $SCRIPTS_DIR"
|
|
363
|
+
return 0
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
# Start Langflow
|
|
367
|
+
start_langflow() {
|
|
368
|
+
if [[ -f "$SCRIPTS_DIR/start-langflow.sh" ]]; then
|
|
369
|
+
"$SCRIPTS_DIR/start-langflow.sh"
|
|
370
|
+
else
|
|
371
|
+
print_error "Langflow not set up. Run 'setup' first."
|
|
372
|
+
return 1
|
|
373
|
+
fi
|
|
374
|
+
return 0
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
# Stop Langflow
|
|
378
|
+
stop_langflow() {
|
|
379
|
+
if [[ -f "$SCRIPTS_DIR/stop-langflow.sh" ]]; then
|
|
380
|
+
"$SCRIPTS_DIR/stop-langflow.sh"
|
|
381
|
+
else
|
|
382
|
+
print_warning "Stop script not found. Attempting to kill Langflow processes..."
|
|
383
|
+
pkill -f "langflow run" 2>/dev/null || true
|
|
384
|
+
fi
|
|
385
|
+
return 0
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
# Check status
|
|
389
|
+
check_status() {
|
|
390
|
+
if [[ -f "$SCRIPTS_DIR/langflow-status.sh" ]]; then
|
|
391
|
+
"$SCRIPTS_DIR/langflow-status.sh"
|
|
392
|
+
else
|
|
393
|
+
if curl -s "http://localhost:$LANGFLOW_PORT/health" >/dev/null 2>&1; then
|
|
394
|
+
print_success "Langflow is running at http://localhost:$LANGFLOW_PORT"
|
|
395
|
+
else
|
|
396
|
+
print_warning "Langflow is not running"
|
|
397
|
+
fi
|
|
398
|
+
fi
|
|
399
|
+
return 0
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
# Export flows
|
|
403
|
+
export_flows() {
|
|
404
|
+
local output_dir="${1:-$FLOWS_DIR}"
|
|
405
|
+
|
|
406
|
+
print_info "Exporting flows to $output_dir..."
|
|
407
|
+
|
|
408
|
+
if [[ ! -d "$LANGFLOW_DIR/venv" ]]; then
|
|
409
|
+
print_error "Langflow not set up. Run 'setup' first."
|
|
410
|
+
return 1
|
|
411
|
+
fi
|
|
412
|
+
|
|
413
|
+
cd "$LANGFLOW_DIR" || exit 1
|
|
414
|
+
# shellcheck source=/dev/null
|
|
415
|
+
source venv/bin/activate
|
|
416
|
+
|
|
417
|
+
mkdir -p "$output_dir"
|
|
418
|
+
|
|
419
|
+
# Export all flows
|
|
420
|
+
if langflow export --all --output "$output_dir" 2>/dev/null; then
|
|
421
|
+
print_success "Flows exported to $output_dir"
|
|
422
|
+
else
|
|
423
|
+
print_warning "No flows to export or export failed"
|
|
424
|
+
fi
|
|
425
|
+
|
|
426
|
+
return 0
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
# Import flows
|
|
430
|
+
import_flows() {
|
|
431
|
+
local input_dir="${1:-$FLOWS_DIR}"
|
|
432
|
+
|
|
433
|
+
print_info "Importing flows from $input_dir..."
|
|
434
|
+
|
|
435
|
+
if [[ ! -d "$LANGFLOW_DIR/venv" ]]; then
|
|
436
|
+
print_error "Langflow not set up. Run 'setup' first."
|
|
437
|
+
return 1
|
|
438
|
+
fi
|
|
439
|
+
|
|
440
|
+
if [[ ! -d "$input_dir" ]]; then
|
|
441
|
+
print_error "Directory not found: $input_dir"
|
|
442
|
+
return 1
|
|
443
|
+
fi
|
|
444
|
+
|
|
445
|
+
cd "$LANGFLOW_DIR" || exit 1
|
|
446
|
+
# shellcheck source=/dev/null
|
|
447
|
+
source venv/bin/activate
|
|
448
|
+
|
|
449
|
+
# Import all JSON files
|
|
450
|
+
local count=0
|
|
451
|
+
for flow_file in "$input_dir"/*.json; do
|
|
452
|
+
if [[ -f "$flow_file" ]]; then
|
|
453
|
+
if langflow import --file "$flow_file" 2>/dev/null; then
|
|
454
|
+
print_success "Imported: $(basename "$flow_file")"
|
|
455
|
+
((count++))
|
|
456
|
+
else
|
|
457
|
+
print_warning "Failed to import: $(basename "$flow_file")"
|
|
458
|
+
fi
|
|
459
|
+
fi
|
|
460
|
+
done
|
|
461
|
+
|
|
462
|
+
if [[ $count -eq 0 ]]; then
|
|
463
|
+
print_warning "No flows found to import"
|
|
464
|
+
else
|
|
465
|
+
print_success "Imported $count flows"
|
|
466
|
+
fi
|
|
467
|
+
|
|
468
|
+
return 0
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
# Show usage
|
|
472
|
+
show_usage() {
|
|
473
|
+
echo "AI DevOps Framework - Langflow Helper"
|
|
474
|
+
echo ""
|
|
475
|
+
echo "Usage: $0 [action] [options]"
|
|
476
|
+
echo ""
|
|
477
|
+
echo "Actions:"
|
|
478
|
+
echo " setup Complete setup of Langflow"
|
|
479
|
+
echo " start Start Langflow server"
|
|
480
|
+
echo " stop Stop Langflow server"
|
|
481
|
+
echo " status Check Langflow status"
|
|
482
|
+
echo " check Check prerequisites"
|
|
483
|
+
echo " export Export flows to JSON (default: ~/.aidevops/langflow/flows/)"
|
|
484
|
+
echo " import Import flows from JSON (default: ~/.aidevops/langflow/flows/)"
|
|
485
|
+
echo " help Show this help message"
|
|
486
|
+
echo ""
|
|
487
|
+
echo "Examples:"
|
|
488
|
+
echo " $0 setup # Full setup"
|
|
489
|
+
echo " $0 start # Start server"
|
|
490
|
+
echo " $0 status # Check status"
|
|
491
|
+
echo " $0 export ./my-flows # Export to custom directory"
|
|
492
|
+
echo " $0 import ./my-flows # Import from custom directory"
|
|
493
|
+
echo ""
|
|
494
|
+
echo "URLs (after start):"
|
|
495
|
+
echo " Web UI: http://localhost:7860"
|
|
496
|
+
echo " API Docs: http://localhost:7860/docs"
|
|
497
|
+
echo " Health: http://localhost:7860/health"
|
|
498
|
+
return 0
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
# Main function
|
|
502
|
+
main() {
|
|
503
|
+
local action="${1:-help}"
|
|
504
|
+
shift || true
|
|
505
|
+
|
|
506
|
+
case "$action" in
|
|
507
|
+
"setup")
|
|
508
|
+
if check_prerequisites; then
|
|
509
|
+
setup_langflow
|
|
510
|
+
echo ""
|
|
511
|
+
print_success "Langflow setup complete!"
|
|
512
|
+
echo ""
|
|
513
|
+
echo "Next Steps:"
|
|
514
|
+
echo "1. Configure API keys in $LANGFLOW_DIR/.env"
|
|
515
|
+
echo "2. Start Langflow: $SCRIPTS_DIR/start-langflow.sh"
|
|
516
|
+
echo "3. Open http://localhost:7860"
|
|
517
|
+
fi
|
|
518
|
+
;;
|
|
519
|
+
"start")
|
|
520
|
+
start_langflow
|
|
521
|
+
;;
|
|
522
|
+
"stop")
|
|
523
|
+
stop_langflow
|
|
524
|
+
;;
|
|
525
|
+
"status")
|
|
526
|
+
check_status
|
|
527
|
+
;;
|
|
528
|
+
"check")
|
|
529
|
+
check_prerequisites
|
|
530
|
+
;;
|
|
531
|
+
"export")
|
|
532
|
+
export_flows "$@"
|
|
533
|
+
;;
|
|
534
|
+
"import")
|
|
535
|
+
import_flows "$@"
|
|
536
|
+
;;
|
|
537
|
+
"help"|*)
|
|
538
|
+
show_usage
|
|
539
|
+
;;
|
|
540
|
+
esac
|
|
541
|
+
return 0
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
main "$@"
|