aidevops 2.52.1 → 2.53.2
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/README.md +1 -1
- package/VERSION +1 -1
- package/aidevops.sh +15 -9
- package/package.json +4 -4
- package/scripts/npm-postinstall.js +6 -7
- package/setup.sh +1 -1
- package/templates/deploy-templates.sh +144 -0
- package/templates/home/.agent/README.md +33 -0
- package/templates/home/AGENTS.md +96 -0
- package/templates/home/git/.agent/README.md +48 -0
- package/templates/home/git/AGENTS.md +97 -0
- package/templates/standard-functions.sh +179 -0
- package/templates/wordpress-performance-workflow.md +217 -0
- package/.agent/AGENTS.md +0 -614
- package/.agent/accounts.md +0 -65
- package/.agent/aidevops/add-new-mcp-to-aidevops.md +0 -456
- package/.agent/aidevops/api-integrations.md +0 -335
- package/.agent/aidevops/architecture.md +0 -510
- package/.agent/aidevops/configs.md +0 -274
- package/.agent/aidevops/docs.md +0 -244
- package/.agent/aidevops/extension.md +0 -311
- package/.agent/aidevops/mcp-integrations.md +0 -340
- package/.agent/aidevops/mcp-troubleshooting.md +0 -162
- package/.agent/aidevops/memory-patterns.md +0 -172
- package/.agent/aidevops/providers.md +0 -217
- package/.agent/aidevops/recommendations.md +0 -321
- package/.agent/aidevops/requirements.md +0 -301
- package/.agent/aidevops/resources.md +0 -214
- package/.agent/aidevops/security-requirements.md +0 -174
- package/.agent/aidevops/security.md +0 -350
- package/.agent/aidevops/service-links.md +0 -400
- package/.agent/aidevops/services.md +0 -357
- package/.agent/aidevops/setup.md +0 -153
- package/.agent/aidevops/troubleshooting.md +0 -389
- package/.agent/aidevops.md +0 -124
- package/.agent/build-plus.md +0 -244
- package/.agent/content/guidelines.md +0 -109
- package/.agent/content.md +0 -87
- package/.agent/health.md +0 -59
- package/.agent/legal.md +0 -59
- package/.agent/loop-state/full-loop.local.md +0 -16
- package/.agent/loop-state/ralph-loop.local.md +0 -10
- package/.agent/marketing.md +0 -440
- package/.agent/memory/README.md +0 -260
- package/.agent/onboarding.md +0 -796
- package/.agent/plan-plus.md +0 -245
- package/.agent/research.md +0 -100
- package/.agent/sales.md +0 -333
- package/.agent/scripts/101domains-helper.sh +0 -701
- package/.agent/scripts/add-missing-returns.sh +0 -140
- package/.agent/scripts/agent-browser-helper.sh +0 -311
- package/.agent/scripts/agno-setup.sh +0 -712
- package/.agent/scripts/ahrefs-mcp-wrapper.js +0 -168
- package/.agent/scripts/aidevops-update-check.sh +0 -71
- package/.agent/scripts/ampcode-cli.sh +0 -522
- package/.agent/scripts/auto-version-bump.sh +0 -156
- package/.agent/scripts/autogen-helper.sh +0 -512
- package/.agent/scripts/beads-sync-helper.sh +0 -596
- package/.agent/scripts/closte-helper.sh +0 -5
- package/.agent/scripts/cloudron-helper.sh +0 -321
- package/.agent/scripts/codacy-cli-chunked.sh +0 -581
- package/.agent/scripts/codacy-cli.sh +0 -442
- package/.agent/scripts/code-audit-helper.sh +0 -5
- package/.agent/scripts/coderabbit-cli.sh +0 -417
- package/.agent/scripts/coderabbit-pro-analysis.sh +0 -238
- package/.agent/scripts/commands/code-simplifier.md +0 -86
- package/.agent/scripts/commands/full-loop.md +0 -246
- package/.agent/scripts/commands/postflight-loop.md +0 -103
- package/.agent/scripts/commands/recall.md +0 -182
- package/.agent/scripts/commands/remember.md +0 -132
- package/.agent/scripts/commands/save-todo.md +0 -175
- package/.agent/scripts/commands/session-review.md +0 -154
- package/.agent/scripts/comprehensive-quality-fix.sh +0 -106
- package/.agent/scripts/context-builder-helper.sh +0 -522
- package/.agent/scripts/coolify-cli-helper.sh +0 -674
- package/.agent/scripts/coolify-helper.sh +0 -380
- package/.agent/scripts/crawl4ai-examples.sh +0 -401
- package/.agent/scripts/crawl4ai-helper.sh +0 -1078
- package/.agent/scripts/crewai-helper.sh +0 -681
- package/.agent/scripts/dev-browser-helper.sh +0 -513
- package/.agent/scripts/dns-helper.sh +0 -396
- package/.agent/scripts/domain-research-helper.sh +0 -917
- package/.agent/scripts/dspy-helper.sh +0 -285
- package/.agent/scripts/dspyground-helper.sh +0 -291
- package/.agent/scripts/eeat-score-helper.sh +0 -1242
- package/.agent/scripts/efficient-return-fix.sh +0 -92
- package/.agent/scripts/extract-opencode-prompts.sh +0 -128
- package/.agent/scripts/find-missing-returns.sh +0 -113
- package/.agent/scripts/fix-auth-headers.sh +0 -104
- package/.agent/scripts/fix-common-strings.sh +0 -254
- package/.agent/scripts/fix-content-type.sh +0 -100
- package/.agent/scripts/fix-error-messages.sh +0 -130
- package/.agent/scripts/fix-misplaced-returns.sh +0 -74
- package/.agent/scripts/fix-remaining-literals.sh +0 -152
- package/.agent/scripts/fix-return-statements.sh +0 -41
- package/.agent/scripts/fix-s131-default-cases.sh +0 -249
- package/.agent/scripts/fix-sc2155-simple.sh +0 -102
- package/.agent/scripts/fix-shellcheck-critical.sh +0 -187
- package/.agent/scripts/fix-string-literals.sh +0 -273
- package/.agent/scripts/full-loop-helper.sh +0 -773
- package/.agent/scripts/generate-opencode-agents.sh +0 -497
- package/.agent/scripts/generate-opencode-commands.sh +0 -1629
- package/.agent/scripts/generate-skills.sh +0 -366
- package/.agent/scripts/git-platforms-helper.sh +0 -640
- package/.agent/scripts/gitea-cli-helper.sh +0 -743
- package/.agent/scripts/github-cli-helper.sh +0 -702
- package/.agent/scripts/gitlab-cli-helper.sh +0 -682
- package/.agent/scripts/gsc-add-user-helper.sh +0 -325
- package/.agent/scripts/gsc-sitemap-helper.sh +0 -678
- package/.agent/scripts/hetzner-helper.sh +0 -485
- package/.agent/scripts/hostinger-helper.sh +0 -229
- package/.agent/scripts/keyword-research-helper.sh +0 -1815
- package/.agent/scripts/langflow-helper.sh +0 -544
- package/.agent/scripts/linkedin-automation.py +0 -241
- package/.agent/scripts/linter-manager.sh +0 -599
- package/.agent/scripts/linters-local.sh +0 -434
- package/.agent/scripts/list-keys-helper.sh +0 -488
- package/.agent/scripts/local-browser-automation.py +0 -339
- package/.agent/scripts/localhost-helper.sh +0 -744
- package/.agent/scripts/loop-common.sh +0 -806
- package/.agent/scripts/mainwp-helper.sh +0 -728
- package/.agent/scripts/markdown-formatter.sh +0 -338
- package/.agent/scripts/markdown-lint-fix.sh +0 -311
- package/.agent/scripts/mass-fix-returns.sh +0 -58
- package/.agent/scripts/mcp-diagnose.sh +0 -167
- package/.agent/scripts/mcp-inspector-helper.sh +0 -449
- package/.agent/scripts/memory-helper.sh +0 -650
- package/.agent/scripts/monitor-code-review.sh +0 -255
- package/.agent/scripts/onboarding-helper.sh +0 -706
- package/.agent/scripts/opencode-github-setup-helper.sh +0 -797
- package/.agent/scripts/opencode-test-helper.sh +0 -213
- package/.agent/scripts/pagespeed-helper.sh +0 -464
- package/.agent/scripts/pandoc-helper.sh +0 -362
- package/.agent/scripts/postflight-check.sh +0 -555
- package/.agent/scripts/pre-commit-hook.sh +0 -259
- package/.agent/scripts/pre-edit-check.sh +0 -169
- package/.agent/scripts/qlty-cli.sh +0 -356
- package/.agent/scripts/quality-cli-manager.sh +0 -525
- package/.agent/scripts/quality-feedback-helper.sh +0 -462
- package/.agent/scripts/quality-fix.sh +0 -263
- package/.agent/scripts/quality-loop-helper.sh +0 -1108
- package/.agent/scripts/ralph-loop-helper.sh +0 -836
- package/.agent/scripts/ralph-upstream-check.sh +0 -341
- package/.agent/scripts/secretlint-helper.sh +0 -847
- package/.agent/scripts/servers-helper.sh +0 -241
- package/.agent/scripts/ses-helper.sh +0 -619
- package/.agent/scripts/session-review-helper.sh +0 -404
- package/.agent/scripts/setup-linters-wizard.sh +0 -379
- package/.agent/scripts/setup-local-api-keys.sh +0 -330
- package/.agent/scripts/setup-mcp-integrations.sh +0 -472
- package/.agent/scripts/shared-constants.sh +0 -246
- package/.agent/scripts/site-crawler-helper.sh +0 -1487
- package/.agent/scripts/snyk-helper.sh +0 -940
- package/.agent/scripts/sonarcloud-autofix.sh +0 -193
- package/.agent/scripts/sonarcloud-cli.sh +0 -191
- package/.agent/scripts/sonarscanner-cli.sh +0 -455
- package/.agent/scripts/spaceship-helper.sh +0 -747
- package/.agent/scripts/stagehand-helper.sh +0 -321
- package/.agent/scripts/stagehand-python-helper.sh +0 -321
- package/.agent/scripts/stagehand-python-setup.sh +0 -441
- package/.agent/scripts/stagehand-setup.sh +0 -439
- package/.agent/scripts/system-cleanup.sh +0 -340
- package/.agent/scripts/terminal-title-helper.sh +0 -388
- package/.agent/scripts/terminal-title-setup.sh +0 -549
- package/.agent/scripts/test-stagehand-both-integration.sh +0 -317
- package/.agent/scripts/test-stagehand-integration.sh +0 -309
- package/.agent/scripts/test-stagehand-python-integration.sh +0 -341
- package/.agent/scripts/todo-ready.sh +0 -263
- package/.agent/scripts/tool-version-check.sh +0 -362
- package/.agent/scripts/toon-helper.sh +0 -469
- package/.agent/scripts/twilio-helper.sh +0 -917
- package/.agent/scripts/updown-helper.sh +0 -279
- package/.agent/scripts/validate-mcp-integrations.sh +0 -250
- package/.agent/scripts/validate-version-consistency.sh +0 -131
- package/.agent/scripts/vaultwarden-helper.sh +0 -597
- package/.agent/scripts/vercel-cli-helper.sh +0 -816
- package/.agent/scripts/verify-mirrors.sh +0 -169
- package/.agent/scripts/version-manager.sh +0 -831
- package/.agent/scripts/webhosting-helper.sh +0 -471
- package/.agent/scripts/webhosting-verify.sh +0 -238
- package/.agent/scripts/wordpress-mcp-helper.sh +0 -508
- package/.agent/scripts/worktree-helper.sh +0 -595
- package/.agent/scripts/worktree-sessions.sh +0 -577
- package/.agent/seo/dataforseo.md +0 -215
- package/.agent/seo/domain-research.md +0 -532
- package/.agent/seo/eeat-score.md +0 -659
- package/.agent/seo/google-search-console.md +0 -366
- package/.agent/seo/gsc-sitemaps.md +0 -282
- package/.agent/seo/keyword-research.md +0 -521
- package/.agent/seo/serper.md +0 -278
- package/.agent/seo/site-crawler.md +0 -387
- package/.agent/seo.md +0 -236
- package/.agent/services/accounting/quickfile.md +0 -159
- package/.agent/services/communications/telfon.md +0 -470
- package/.agent/services/communications/twilio.md +0 -569
- package/.agent/services/crm/fluentcrm.md +0 -449
- package/.agent/services/email/ses.md +0 -399
- package/.agent/services/hosting/101domains.md +0 -378
- package/.agent/services/hosting/closte.md +0 -177
- package/.agent/services/hosting/cloudflare.md +0 -251
- package/.agent/services/hosting/cloudron.md +0 -478
- package/.agent/services/hosting/dns-providers.md +0 -335
- package/.agent/services/hosting/domain-purchasing.md +0 -344
- package/.agent/services/hosting/hetzner.md +0 -327
- package/.agent/services/hosting/hostinger.md +0 -287
- package/.agent/services/hosting/localhost.md +0 -419
- package/.agent/services/hosting/spaceship.md +0 -353
- package/.agent/services/hosting/webhosting.md +0 -330
- package/.agent/social-media.md +0 -69
- package/.agent/templates/plans-template.md +0 -114
- package/.agent/templates/prd-template.md +0 -129
- package/.agent/templates/tasks-template.md +0 -108
- package/.agent/templates/todo-template.md +0 -89
- package/.agent/tools/ai-assistants/agno.md +0 -471
- package/.agent/tools/ai-assistants/capsolver.md +0 -326
- package/.agent/tools/ai-assistants/configuration.md +0 -221
- package/.agent/tools/ai-assistants/overview.md +0 -209
- package/.agent/tools/ai-assistants/status.md +0 -171
- package/.agent/tools/ai-assistants/windsurf.md +0 -193
- package/.agent/tools/ai-orchestration/autogen.md +0 -406
- package/.agent/tools/ai-orchestration/crewai.md +0 -445
- package/.agent/tools/ai-orchestration/langflow.md +0 -405
- package/.agent/tools/ai-orchestration/openprose.md +0 -487
- package/.agent/tools/ai-orchestration/overview.md +0 -362
- package/.agent/tools/ai-orchestration/packaging.md +0 -647
- package/.agent/tools/browser/agent-browser.md +0 -464
- package/.agent/tools/browser/browser-automation.md +0 -400
- package/.agent/tools/browser/chrome-devtools.md +0 -282
- package/.agent/tools/browser/crawl4ai-integration.md +0 -422
- package/.agent/tools/browser/crawl4ai-resources.md +0 -277
- package/.agent/tools/browser/crawl4ai-usage.md +0 -416
- package/.agent/tools/browser/crawl4ai.md +0 -585
- package/.agent/tools/browser/dev-browser.md +0 -341
- package/.agent/tools/browser/pagespeed.md +0 -260
- package/.agent/tools/browser/playwright.md +0 -266
- package/.agent/tools/browser/playwriter.md +0 -310
- package/.agent/tools/browser/stagehand-examples.md +0 -456
- package/.agent/tools/browser/stagehand-python.md +0 -483
- package/.agent/tools/browser/stagehand.md +0 -421
- package/.agent/tools/build-agent/agent-review.md +0 -224
- package/.agent/tools/build-agent/build-agent.md +0 -784
- package/.agent/tools/build-mcp/aidevops-plugin.md +0 -476
- package/.agent/tools/build-mcp/api-wrapper.md +0 -445
- package/.agent/tools/build-mcp/build-mcp.md +0 -240
- package/.agent/tools/build-mcp/deployment.md +0 -401
- package/.agent/tools/build-mcp/server-patterns.md +0 -632
- package/.agent/tools/build-mcp/transports.md +0 -366
- package/.agent/tools/code-review/auditing.md +0 -383
- package/.agent/tools/code-review/automation.md +0 -219
- package/.agent/tools/code-review/best-practices.md +0 -203
- package/.agent/tools/code-review/codacy.md +0 -151
- package/.agent/tools/code-review/code-simplifier.md +0 -174
- package/.agent/tools/code-review/code-standards.md +0 -309
- package/.agent/tools/code-review/coderabbit.md +0 -101
- package/.agent/tools/code-review/management.md +0 -155
- package/.agent/tools/code-review/qlty.md +0 -248
- package/.agent/tools/code-review/secretlint.md +0 -565
- package/.agent/tools/code-review/setup.md +0 -250
- package/.agent/tools/code-review/snyk.md +0 -563
- package/.agent/tools/code-review/tools.md +0 -230
- package/.agent/tools/content/summarize.md +0 -353
- package/.agent/tools/context/augment-context-engine.md +0 -468
- package/.agent/tools/context/context-builder-agent.md +0 -76
- package/.agent/tools/context/context-builder.md +0 -375
- package/.agent/tools/context/context7.md +0 -371
- package/.agent/tools/context/dspy.md +0 -302
- package/.agent/tools/context/dspyground.md +0 -374
- package/.agent/tools/context/llm-tldr.md +0 -219
- package/.agent/tools/context/osgrep.md +0 -488
- package/.agent/tools/context/prompt-optimization.md +0 -338
- package/.agent/tools/context/toon.md +0 -292
- package/.agent/tools/conversion/pandoc.md +0 -304
- package/.agent/tools/credentials/api-key-management.md +0 -154
- package/.agent/tools/credentials/api-key-setup.md +0 -224
- package/.agent/tools/credentials/environment-variables.md +0 -180
- package/.agent/tools/credentials/vaultwarden.md +0 -382
- package/.agent/tools/data-extraction/outscraper.md +0 -974
- package/.agent/tools/deployment/coolify-cli.md +0 -388
- package/.agent/tools/deployment/coolify-setup.md +0 -353
- package/.agent/tools/deployment/coolify.md +0 -345
- package/.agent/tools/deployment/vercel.md +0 -390
- package/.agent/tools/git/authentication.md +0 -132
- package/.agent/tools/git/gitea-cli.md +0 -193
- package/.agent/tools/git/github-actions.md +0 -207
- package/.agent/tools/git/github-cli.md +0 -223
- package/.agent/tools/git/gitlab-cli.md +0 -190
- package/.agent/tools/git/opencode-github-security.md +0 -350
- package/.agent/tools/git/opencode-github.md +0 -328
- package/.agent/tools/git/opencode-gitlab.md +0 -252
- package/.agent/tools/git/security.md +0 -196
- package/.agent/tools/git.md +0 -207
- package/.agent/tools/opencode/oh-my-opencode.md +0 -375
- package/.agent/tools/opencode/opencode-anthropic-auth.md +0 -446
- package/.agent/tools/opencode/opencode.md +0 -651
- package/.agent/tools/social-media/bird.md +0 -437
- package/.agent/tools/task-management/beads.md +0 -336
- package/.agent/tools/terminal/terminal-title.md +0 -251
- package/.agent/tools/ui/shadcn.md +0 -196
- package/.agent/tools/ui/ui-skills.md +0 -115
- package/.agent/tools/wordpress/localwp.md +0 -311
- package/.agent/tools/wordpress/mainwp.md +0 -391
- package/.agent/tools/wordpress/scf.md +0 -527
- package/.agent/tools/wordpress/wp-admin.md +0 -729
- package/.agent/tools/wordpress/wp-dev.md +0 -940
- package/.agent/tools/wordpress/wp-preferred.md +0 -398
- package/.agent/tools/wordpress.md +0 -95
- package/.agent/workflows/branch/bugfix.md +0 -63
- package/.agent/workflows/branch/chore.md +0 -95
- package/.agent/workflows/branch/experiment.md +0 -115
- package/.agent/workflows/branch/feature.md +0 -59
- package/.agent/workflows/branch/hotfix.md +0 -98
- package/.agent/workflows/branch/refactor.md +0 -92
- package/.agent/workflows/branch/release.md +0 -96
- package/.agent/workflows/branch.md +0 -347
- package/.agent/workflows/bug-fixing.md +0 -267
- package/.agent/workflows/changelog.md +0 -129
- package/.agent/workflows/code-audit-remote.md +0 -279
- package/.agent/workflows/conversation-starter.md +0 -69
- package/.agent/workflows/error-feedback.md +0 -578
- package/.agent/workflows/feature-development.md +0 -355
- package/.agent/workflows/git-workflow.md +0 -702
- package/.agent/workflows/multi-repo-workspace.md +0 -268
- package/.agent/workflows/plans.md +0 -709
- package/.agent/workflows/postflight.md +0 -604
- package/.agent/workflows/pr.md +0 -571
- package/.agent/workflows/preflight.md +0 -278
- package/.agent/workflows/ralph-loop.md +0 -773
- package/.agent/workflows/release.md +0 -498
- package/.agent/workflows/session-manager.md +0 -254
- package/.agent/workflows/session-review.md +0 -311
- package/.agent/workflows/sql-migrations.md +0 -631
- package/.agent/workflows/version-bump.md +0 -283
- package/.agent/workflows/wiki-update.md +0 -333
- package/.agent/workflows/worktree.md +0 -477
|
@@ -1,513 +0,0 @@
|
|
|
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
|
-
# Dev-Browser Helper - Stateful Browser Automation
|
|
5
|
-
# Part of AI DevOps Framework
|
|
6
|
-
# Provides setup and management of dev-browser for persistent Playwright automation
|
|
7
|
-
|
|
8
|
-
set -euo pipefail
|
|
9
|
-
|
|
10
|
-
# Source shared constants and functions
|
|
11
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" || exit
|
|
12
|
-
if [[ -f "${SCRIPT_DIR}/shared-constants.sh" ]]; then
|
|
13
|
-
source "${SCRIPT_DIR}/shared-constants.sh"
|
|
14
|
-
fi
|
|
15
|
-
|
|
16
|
-
# Colors for output
|
|
17
|
-
readonly BLUE='\033[0;34m'
|
|
18
|
-
readonly GREEN='\033[0;32m'
|
|
19
|
-
readonly YELLOW='\033[1;33m'
|
|
20
|
-
readonly RED='\033[0;31m'
|
|
21
|
-
readonly NC='\033[0m'
|
|
22
|
-
|
|
23
|
-
# Print functions
|
|
24
|
-
print_info() {
|
|
25
|
-
local msg="$1"
|
|
26
|
-
echo -e "${BLUE}[INFO]${NC} $msg"
|
|
27
|
-
return 0
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
print_success() {
|
|
31
|
-
local msg="$1"
|
|
32
|
-
echo -e "${GREEN}[SUCCESS]${NC} $msg"
|
|
33
|
-
return 0
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
print_warning() {
|
|
37
|
-
local msg="$1"
|
|
38
|
-
echo -e "${YELLOW}[WARNING]${NC} $msg"
|
|
39
|
-
return 0
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
print_error() {
|
|
43
|
-
local msg="$1"
|
|
44
|
-
echo -e "${RED}[ERROR]${NC} $msg" >&2
|
|
45
|
-
return 0
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
# Dev-browser specific constants
|
|
49
|
-
readonly DEV_BROWSER_DIR="${HOME}/.aidevops/dev-browser"
|
|
50
|
-
readonly DEV_BROWSER_SKILL_DIR="${DEV_BROWSER_DIR}/skills/dev-browser"
|
|
51
|
-
readonly DEV_BROWSER_REPO="https://github.com/SawyerHood/dev-browser.git"
|
|
52
|
-
readonly SERVER_PORT=9222
|
|
53
|
-
readonly PID_FILE="${DEV_BROWSER_DIR}/.server.pid"
|
|
54
|
-
readonly PROFILE_DIR="${DEV_BROWSER_SKILL_DIR}/profiles/browser-data"
|
|
55
|
-
|
|
56
|
-
# Check if Bun is installed
|
|
57
|
-
check_bun() {
|
|
58
|
-
if command -v bun &> /dev/null; then
|
|
59
|
-
print_success "Bun $(bun --version) found"
|
|
60
|
-
return 0
|
|
61
|
-
else
|
|
62
|
-
print_error "Bun is required but not installed"
|
|
63
|
-
print_info "Install with: curl -fsSL https://bun.sh/install | bash"
|
|
64
|
-
return 1
|
|
65
|
-
fi
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
# Install Bun if not present
|
|
69
|
-
install_bun() {
|
|
70
|
-
if command -v bun &> /dev/null; then
|
|
71
|
-
print_info "Bun already installed: $(bun --version)"
|
|
72
|
-
return 0
|
|
73
|
-
fi
|
|
74
|
-
|
|
75
|
-
print_info "Installing Bun..."
|
|
76
|
-
# SONAR: Official Bun installer from verified HTTPS source
|
|
77
|
-
curl -fsSL https://bun.sh/install | bash
|
|
78
|
-
|
|
79
|
-
# Source the updated PATH
|
|
80
|
-
export BUN_INSTALL="$HOME/.bun"
|
|
81
|
-
export PATH="$BUN_INSTALL/bin:$PATH"
|
|
82
|
-
|
|
83
|
-
if command -v bun &> /dev/null; then
|
|
84
|
-
print_success "Bun installed: $(bun --version)"
|
|
85
|
-
return 0
|
|
86
|
-
else
|
|
87
|
-
print_error "Bun installation failed"
|
|
88
|
-
return 1
|
|
89
|
-
fi
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
# Install dev-browser
|
|
93
|
-
install_dev_browser() {
|
|
94
|
-
print_info "Installing dev-browser..."
|
|
95
|
-
|
|
96
|
-
# Ensure Bun is installed
|
|
97
|
-
install_bun || return 1
|
|
98
|
-
|
|
99
|
-
# Create directory
|
|
100
|
-
mkdir -p "${DEV_BROWSER_DIR}"
|
|
101
|
-
|
|
102
|
-
if [[ -d "${DEV_BROWSER_DIR}/.git" ]]; then
|
|
103
|
-
print_info "Updating existing installation..."
|
|
104
|
-
cd "${DEV_BROWSER_DIR}" || exit
|
|
105
|
-
git pull origin main || {
|
|
106
|
-
print_warning "Git pull failed, continuing with existing version"
|
|
107
|
-
}
|
|
108
|
-
else
|
|
109
|
-
print_info "Cloning dev-browser repository..."
|
|
110
|
-
rm -rf "${DEV_BROWSER_DIR}"
|
|
111
|
-
git clone "${DEV_BROWSER_REPO}" "${DEV_BROWSER_DIR}"
|
|
112
|
-
fi
|
|
113
|
-
|
|
114
|
-
# Install dependencies
|
|
115
|
-
cd "${DEV_BROWSER_SKILL_DIR}" || exit
|
|
116
|
-
print_info "Installing dependencies..."
|
|
117
|
-
bun install
|
|
118
|
-
|
|
119
|
-
# Install Playwright browsers
|
|
120
|
-
print_info "Installing Playwright browsers..."
|
|
121
|
-
bunx playwright install chromium
|
|
122
|
-
|
|
123
|
-
# Create tmp directory for screenshots
|
|
124
|
-
mkdir -p "${DEV_BROWSER_SKILL_DIR}/tmp"
|
|
125
|
-
|
|
126
|
-
# Create convenience symlink
|
|
127
|
-
ln -sf "${DEV_BROWSER_SKILL_DIR}/server.sh" "${DEV_BROWSER_DIR}/server.sh" 2>/dev/null || true
|
|
128
|
-
|
|
129
|
-
print_success "Dev-browser installed at: ${DEV_BROWSER_DIR}"
|
|
130
|
-
print_info "Start server with: $0 start"
|
|
131
|
-
return 0
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
# Check if server is running
|
|
135
|
-
is_server_running() {
|
|
136
|
-
if [[ -f "${PID_FILE}" ]]; then
|
|
137
|
-
local pid
|
|
138
|
-
pid=$(cat "${PID_FILE}")
|
|
139
|
-
if kill -0 "$pid" 2>/dev/null; then
|
|
140
|
-
return 0
|
|
141
|
-
fi
|
|
142
|
-
fi
|
|
143
|
-
|
|
144
|
-
# Also check by process name
|
|
145
|
-
if pgrep -f "dev-browser.*start-server" > /dev/null 2>&1; then
|
|
146
|
-
return 0
|
|
147
|
-
fi
|
|
148
|
-
|
|
149
|
-
return 1
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
# Start the server
|
|
153
|
-
start_server() {
|
|
154
|
-
local headless="${1:-false}"
|
|
155
|
-
|
|
156
|
-
if ! [[ -d "${DEV_BROWSER_SKILL_DIR}" ]]; then
|
|
157
|
-
print_error "Dev-browser not installed. Run: $0 setup"
|
|
158
|
-
return 1
|
|
159
|
-
fi
|
|
160
|
-
|
|
161
|
-
# Check if already running
|
|
162
|
-
if is_server_running; then
|
|
163
|
-
print_warning "Dev-browser server already running"
|
|
164
|
-
print_info "Use '$0 restart' to restart"
|
|
165
|
-
return 0
|
|
166
|
-
fi
|
|
167
|
-
|
|
168
|
-
print_info "Starting dev-browser server on port ${SERVER_PORT}..."
|
|
169
|
-
cd "${DEV_BROWSER_SKILL_DIR}" || exit
|
|
170
|
-
|
|
171
|
-
# Start server in background
|
|
172
|
-
if [[ "${headless}" == "true" ]]; then
|
|
173
|
-
nohup ./server.sh --headless > "${DEV_BROWSER_DIR}/server.log" 2>&1 &
|
|
174
|
-
else
|
|
175
|
-
nohup ./server.sh > "${DEV_BROWSER_DIR}/server.log" 2>&1 &
|
|
176
|
-
fi
|
|
177
|
-
|
|
178
|
-
local server_pid=$!
|
|
179
|
-
echo "${server_pid}" > "${PID_FILE}"
|
|
180
|
-
|
|
181
|
-
# Wait for server to be ready
|
|
182
|
-
print_info "Waiting for server to be ready..."
|
|
183
|
-
local max_wait=30
|
|
184
|
-
local waited=0
|
|
185
|
-
|
|
186
|
-
while ! curl -s "http://localhost:${SERVER_PORT}" > /dev/null 2>&1; do
|
|
187
|
-
sleep 1
|
|
188
|
-
((waited++))
|
|
189
|
-
if [[ ${waited} -ge ${max_wait} ]]; then
|
|
190
|
-
print_error "Server failed to start within ${max_wait}s"
|
|
191
|
-
print_info "Check logs: cat ${DEV_BROWSER_DIR}/server.log"
|
|
192
|
-
return 1
|
|
193
|
-
fi
|
|
194
|
-
printf "."
|
|
195
|
-
done
|
|
196
|
-
echo ""
|
|
197
|
-
|
|
198
|
-
print_success "Server ready on http://localhost:${SERVER_PORT}"
|
|
199
|
-
print_info "Server PID: ${server_pid}"
|
|
200
|
-
print_info "Logs: ${DEV_BROWSER_DIR}/server.log"
|
|
201
|
-
return 0
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
# Stop the server
|
|
205
|
-
stop_server() {
|
|
206
|
-
print_info "Stopping dev-browser server..."
|
|
207
|
-
|
|
208
|
-
# Kill by PID file
|
|
209
|
-
if [[ -f "${PID_FILE}" ]]; then
|
|
210
|
-
local pid
|
|
211
|
-
pid=$(cat "${PID_FILE}")
|
|
212
|
-
if kill -0 "$pid" 2>/dev/null; then
|
|
213
|
-
kill "$pid" 2>/dev/null || true
|
|
214
|
-
print_info "Killed process ${pid}"
|
|
215
|
-
fi
|
|
216
|
-
rm -f "${PID_FILE}"
|
|
217
|
-
fi
|
|
218
|
-
|
|
219
|
-
# Also kill any remaining processes
|
|
220
|
-
pkill -f "dev-browser.*start-server" 2>/dev/null || true
|
|
221
|
-
pkill -f "chromium.*remote-debugging-port=${SERVER_PORT}" 2>/dev/null || true
|
|
222
|
-
|
|
223
|
-
# Wait a moment for cleanup
|
|
224
|
-
sleep 1
|
|
225
|
-
|
|
226
|
-
if is_server_running; then
|
|
227
|
-
print_warning "Some processes may still be running"
|
|
228
|
-
return 1
|
|
229
|
-
fi
|
|
230
|
-
|
|
231
|
-
print_success "Server stopped"
|
|
232
|
-
return 0
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
# Show status
|
|
236
|
-
show_status() {
|
|
237
|
-
echo "=== Dev-Browser Status ==="
|
|
238
|
-
echo ""
|
|
239
|
-
|
|
240
|
-
# Installation
|
|
241
|
-
if [[ -d "${DEV_BROWSER_SKILL_DIR}" ]]; then
|
|
242
|
-
print_success "Installed: ${DEV_BROWSER_DIR}"
|
|
243
|
-
else
|
|
244
|
-
print_error "Not installed"
|
|
245
|
-
print_info "Run: $0 setup"
|
|
246
|
-
return 1
|
|
247
|
-
fi
|
|
248
|
-
|
|
249
|
-
# Bun
|
|
250
|
-
if command -v bun &> /dev/null; then
|
|
251
|
-
print_success "Bun: $(bun --version)"
|
|
252
|
-
else
|
|
253
|
-
print_error "Bun: not found"
|
|
254
|
-
fi
|
|
255
|
-
|
|
256
|
-
# Server
|
|
257
|
-
if is_server_running; then
|
|
258
|
-
print_success "Server: running"
|
|
259
|
-
if [[ -f "${PID_FILE}" ]]; then
|
|
260
|
-
print_info " PID: $(cat "${PID_FILE}")"
|
|
261
|
-
fi
|
|
262
|
-
else
|
|
263
|
-
print_warning "Server: not running"
|
|
264
|
-
fi
|
|
265
|
-
|
|
266
|
-
# Port
|
|
267
|
-
if curl -s "http://localhost:${SERVER_PORT}" > /dev/null 2>&1; then
|
|
268
|
-
print_success "Port ${SERVER_PORT}: responding"
|
|
269
|
-
else
|
|
270
|
-
print_warning "Port ${SERVER_PORT}: not responding"
|
|
271
|
-
fi
|
|
272
|
-
|
|
273
|
-
# Profile (persistent browser data)
|
|
274
|
-
if [[ -d "${PROFILE_DIR}" ]]; then
|
|
275
|
-
local profile_size
|
|
276
|
-
profile_size=$(du -sh "${PROFILE_DIR}" 2>/dev/null | cut -f1)
|
|
277
|
-
print_success "Profile: ${PROFILE_DIR} (${profile_size})"
|
|
278
|
-
print_info " Cookies, localStorage, extensions persist across restarts"
|
|
279
|
-
else
|
|
280
|
-
print_info "Profile: not yet created (will be created on first start)"
|
|
281
|
-
fi
|
|
282
|
-
|
|
283
|
-
# Logs
|
|
284
|
-
if [[ -f "${DEV_BROWSER_DIR}/server.log" ]]; then
|
|
285
|
-
print_info "Logs: ${DEV_BROWSER_DIR}/server.log"
|
|
286
|
-
fi
|
|
287
|
-
|
|
288
|
-
echo ""
|
|
289
|
-
return 0
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
# Reset browser profile (clean start)
|
|
293
|
-
reset_profile() {
|
|
294
|
-
if is_server_running; then
|
|
295
|
-
print_error "Server is running. Stop it first with: $0 stop"
|
|
296
|
-
return 1
|
|
297
|
-
fi
|
|
298
|
-
|
|
299
|
-
if [[ -d "${PROFILE_DIR}" ]]; then
|
|
300
|
-
print_warning "This will delete all browser data including:"
|
|
301
|
-
print_info " - Cookies and login sessions"
|
|
302
|
-
print_info " - localStorage and sessionStorage"
|
|
303
|
-
print_info " - Browser cache"
|
|
304
|
-
print_info " - Extension data"
|
|
305
|
-
echo ""
|
|
306
|
-
read -p "Are you sure? (y/N): " confirm
|
|
307
|
-
if [[ "${confirm}" =~ ^[Yy]$ ]]; then
|
|
308
|
-
rm -rf "${PROFILE_DIR}"
|
|
309
|
-
print_success "Profile reset. Next start will use a fresh browser."
|
|
310
|
-
else
|
|
311
|
-
print_info "Cancelled."
|
|
312
|
-
fi
|
|
313
|
-
else
|
|
314
|
-
print_info "No profile exists yet."
|
|
315
|
-
fi
|
|
316
|
-
return 0
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
# Show profile info
|
|
320
|
-
show_profile() {
|
|
321
|
-
echo "=== Browser Profile ==="
|
|
322
|
-
echo ""
|
|
323
|
-
print_info "Location: ${PROFILE_DIR}"
|
|
324
|
-
echo ""
|
|
325
|
-
|
|
326
|
-
if [[ -d "${PROFILE_DIR}" ]]; then
|
|
327
|
-
local profile_size
|
|
328
|
-
profile_size=$(du -sh "${PROFILE_DIR}" 2>/dev/null | cut -f1)
|
|
329
|
-
print_success "Profile exists (${profile_size})"
|
|
330
|
-
echo ""
|
|
331
|
-
print_info "Contents:"
|
|
332
|
-
(cd "${PROFILE_DIR}" && find . -maxdepth 1 -mindepth 1 -exec ls -ld {} +) 2>/dev/null | head -20
|
|
333
|
-
echo ""
|
|
334
|
-
print_info "This profile persists:"
|
|
335
|
-
print_info " - Cookies (stay logged into sites)"
|
|
336
|
-
print_info " - localStorage/sessionStorage"
|
|
337
|
-
print_info " - Browser cache"
|
|
338
|
-
print_info " - Extension data"
|
|
339
|
-
echo ""
|
|
340
|
-
print_info "To reset: $0 reset-profile"
|
|
341
|
-
else
|
|
342
|
-
print_warning "No profile yet. Will be created on first server start."
|
|
343
|
-
fi
|
|
344
|
-
|
|
345
|
-
echo ""
|
|
346
|
-
return 0
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
# Run a test script
|
|
350
|
-
run_test() {
|
|
351
|
-
if ! is_server_running; then
|
|
352
|
-
print_error "Server not running. Start with: $0 start"
|
|
353
|
-
return 1
|
|
354
|
-
fi
|
|
355
|
-
|
|
356
|
-
print_info "Running test script..."
|
|
357
|
-
cd "${DEV_BROWSER_SKILL_DIR}" && bun x tsx <<'EOF' || exit
|
|
358
|
-
import { connect, waitForPageLoad } from "@/client.js";
|
|
359
|
-
|
|
360
|
-
const client = await connect("http://localhost:9222");
|
|
361
|
-
const page = await client.page("test");
|
|
362
|
-
|
|
363
|
-
await page.goto("https://example.com");
|
|
364
|
-
await waitForPageLoad(page);
|
|
365
|
-
|
|
366
|
-
console.log({
|
|
367
|
-
title: await page.title(),
|
|
368
|
-
url: page.url()
|
|
369
|
-
});
|
|
370
|
-
|
|
371
|
-
await page.screenshot({ path: "tmp/test.png" });
|
|
372
|
-
console.log("Screenshot saved to tmp/test.png");
|
|
373
|
-
|
|
374
|
-
await client.disconnect();
|
|
375
|
-
EOF
|
|
376
|
-
|
|
377
|
-
local result=$?
|
|
378
|
-
if [[ ${result} -eq 0 ]]; then
|
|
379
|
-
print_success "Test passed!"
|
|
380
|
-
else
|
|
381
|
-
print_error "Test failed"
|
|
382
|
-
fi
|
|
383
|
-
return ${result}
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
# Show help
|
|
387
|
-
show_help() {
|
|
388
|
-
cat << 'EOF'
|
|
389
|
-
Dev-Browser Helper - Stateful Browser Automation with Persistent Profile
|
|
390
|
-
|
|
391
|
-
USAGE:
|
|
392
|
-
dev-browser-helper.sh [COMMAND] [OPTIONS]
|
|
393
|
-
|
|
394
|
-
COMMANDS:
|
|
395
|
-
help Show this help message
|
|
396
|
-
setup Install dev-browser and dependencies
|
|
397
|
-
start Start server (reuses existing browser profile)
|
|
398
|
-
start-headless Start server in headless mode
|
|
399
|
-
start-clean Start with a fresh browser profile (no cookies/data)
|
|
400
|
-
stop Stop the dev-browser server
|
|
401
|
-
restart Restart the server (keeps profile)
|
|
402
|
-
status Check installation, server, and profile status
|
|
403
|
-
profile Show browser profile details
|
|
404
|
-
reset-profile Delete browser profile for clean start
|
|
405
|
-
test Run a test script to verify setup
|
|
406
|
-
update Update dev-browser to latest version
|
|
407
|
-
logs Show server logs
|
|
408
|
-
clean Remove temporary files (keeps profile)
|
|
409
|
-
|
|
410
|
-
BROWSER PROFILE:
|
|
411
|
-
The browser profile persists across restarts, preserving:
|
|
412
|
-
- Cookies (stay logged into sites)
|
|
413
|
-
- localStorage and sessionStorage
|
|
414
|
-
- Browser cache
|
|
415
|
-
- Extension data (if installed manually in the browser)
|
|
416
|
-
|
|
417
|
-
Location: ~/.aidevops/dev-browser/skills/dev-browser/profiles/browser-data/
|
|
418
|
-
|
|
419
|
-
EXAMPLES:
|
|
420
|
-
dev-browser-helper.sh setup # Install dev-browser
|
|
421
|
-
dev-browser-helper.sh start # Start (keeps logins)
|
|
422
|
-
dev-browser-helper.sh start-clean # Start fresh (no logins)
|
|
423
|
-
dev-browser-helper.sh profile # Show profile info
|
|
424
|
-
dev-browser-helper.sh reset-profile # Delete all browser data
|
|
425
|
-
|
|
426
|
-
USAGE WITH OPENCODE:
|
|
427
|
-
1. Setup: dev-browser-helper.sh setup
|
|
428
|
-
2. Start: dev-browser-helper.sh start
|
|
429
|
-
3. Use @dev-browser subagent in OpenCode
|
|
430
|
-
4. Browser stays logged in between sessions!
|
|
431
|
-
|
|
432
|
-
DOCUMENTATION:
|
|
433
|
-
See: ~/.aidevops/agents/tools/browser/dev-browser.md
|
|
434
|
-
GitHub: https://github.com/SawyerHood/dev-browser
|
|
435
|
-
EOF
|
|
436
|
-
return 0
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
# Main function
|
|
440
|
-
main() {
|
|
441
|
-
local command="${1:-help}"
|
|
442
|
-
|
|
443
|
-
case "${command}" in
|
|
444
|
-
help|--help|-h)
|
|
445
|
-
show_help
|
|
446
|
-
;;
|
|
447
|
-
setup|install)
|
|
448
|
-
install_dev_browser
|
|
449
|
-
;;
|
|
450
|
-
start)
|
|
451
|
-
start_server false
|
|
452
|
-
;;
|
|
453
|
-
start-headless|headless)
|
|
454
|
-
start_server true
|
|
455
|
-
;;
|
|
456
|
-
start-clean)
|
|
457
|
-
# Start with fresh profile
|
|
458
|
-
if is_server_running; then
|
|
459
|
-
print_error "Server is running. Stop it first with: $0 stop"
|
|
460
|
-
return 1
|
|
461
|
-
fi
|
|
462
|
-
if [[ -d "${PROFILE_DIR}" ]]; then
|
|
463
|
-
print_info "Removing existing browser profile for clean start..."
|
|
464
|
-
rm -rf "${PROFILE_DIR}"
|
|
465
|
-
fi
|
|
466
|
-
start_server false
|
|
467
|
-
;;
|
|
468
|
-
stop)
|
|
469
|
-
stop_server
|
|
470
|
-
;;
|
|
471
|
-
restart)
|
|
472
|
-
stop_server
|
|
473
|
-
sleep 2
|
|
474
|
-
start_server false
|
|
475
|
-
;;
|
|
476
|
-
status)
|
|
477
|
-
show_status
|
|
478
|
-
;;
|
|
479
|
-
profile)
|
|
480
|
-
show_profile
|
|
481
|
-
;;
|
|
482
|
-
reset-profile)
|
|
483
|
-
reset_profile
|
|
484
|
-
;;
|
|
485
|
-
test)
|
|
486
|
-
run_test
|
|
487
|
-
;;
|
|
488
|
-
update)
|
|
489
|
-
install_dev_browser
|
|
490
|
-
;;
|
|
491
|
-
logs)
|
|
492
|
-
if [[ -f "${DEV_BROWSER_DIR}/server.log" ]]; then
|
|
493
|
-
tail -f "${DEV_BROWSER_DIR}/server.log"
|
|
494
|
-
else
|
|
495
|
-
print_error "No log file found"
|
|
496
|
-
return 1
|
|
497
|
-
fi
|
|
498
|
-
;;
|
|
499
|
-
clean)
|
|
500
|
-
rm -rf "${DEV_BROWSER_SKILL_DIR}/tmp"/*
|
|
501
|
-
print_success "Cleaned temporary files (profile preserved)"
|
|
502
|
-
;;
|
|
503
|
-
*)
|
|
504
|
-
print_error "Unknown command: ${command}"
|
|
505
|
-
show_help
|
|
506
|
-
return 1
|
|
507
|
-
;;
|
|
508
|
-
esac
|
|
509
|
-
|
|
510
|
-
return $?
|
|
511
|
-
}
|
|
512
|
-
|
|
513
|
-
main "$@"
|