aidevops 2.52.1 โ 2.53.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/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,483 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Stagehand Python SDK for browser automation
|
|
3
|
-
mode: subagent
|
|
4
|
-
tools:
|
|
5
|
-
read: true
|
|
6
|
-
write: false
|
|
7
|
-
edit: false
|
|
8
|
-
bash: true
|
|
9
|
-
glob: true
|
|
10
|
-
grep: true
|
|
11
|
-
webfetch: true
|
|
12
|
-
task: true
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
# Stagehand Python AI Browser Automation Integration
|
|
16
|
-
|
|
17
|
-
<!-- AI-CONTEXT-START -->
|
|
18
|
-
|
|
19
|
-
## Quick Reference
|
|
20
|
-
|
|
21
|
-
- Stagehand Python: AI-powered browser automation with Pydantic validation
|
|
22
|
-
- Helper: `bash .agent/scripts/stagehand-python-helper.sh setup|install|status|activate|clean`
|
|
23
|
-
- Virtual env: `~/.aidevops/stagehand-python/.venv/`
|
|
24
|
-
- Config: `~/.aidevops/stagehand-python/.env`
|
|
25
|
-
- Core primitives:
|
|
26
|
-
- `page.act("natural language action")` - Click, fill, scroll
|
|
27
|
-
- `page.extract("instruction", schema=PydanticModel)` - Structured data
|
|
28
|
-
- `page.observe()` - Discover available actions
|
|
29
|
-
- `stagehand.agent()` - Autonomous workflows
|
|
30
|
-
- Models: `google/gemini-2.5-flash-preview-05-20`, OpenAI, Anthropic
|
|
31
|
-
- API keys: `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `GOOGLE_API_KEY`
|
|
32
|
-
- Env vars: `STAGEHAND_ENV=LOCAL`, `STAGEHAND_HEADLESS=false`
|
|
33
|
-
- Use cases: E-commerce, data collection, testing, business automation
|
|
34
|
-
<!-- AI-CONTEXT-END -->
|
|
35
|
-
|
|
36
|
-
**AI-powered browser automation with natural language control - Now available in Python with Pydantic schema validation**
|
|
37
|
-
|
|
38
|
-
## Overview
|
|
39
|
-
|
|
40
|
-
Stagehand Python brings the power of AI-driven browser automation to Python developers with native async/await support, Pydantic schema validation, and seamless integration with the Python ecosystem.
|
|
41
|
-
|
|
42
|
-
### **๐ Key Features**
|
|
43
|
-
|
|
44
|
-
- **๐ง AI-Powered Actions**: Use natural language to interact with web pages
|
|
45
|
-
- **๐ Pydantic Schema Validation**: Type-safe structured data extraction
|
|
46
|
-
- **๐ Intelligent Observation**: Discover available actions on any page
|
|
47
|
-
- **๐ค Autonomous Agents**: Automate entire workflows with AI decision-making
|
|
48
|
-
- **๐ Local-First**: Works with local browsers for complete privacy
|
|
49
|
-
- **โก Async/Await Support**: Native Python async programming patterns
|
|
50
|
-
|
|
51
|
-
### **๐ Python vs JavaScript Comparison**
|
|
52
|
-
|
|
53
|
-
| Feature | JavaScript | Python | Best For |
|
|
54
|
-
|---------|------------|--------|----------|
|
|
55
|
-
| **Type Safety** | TypeScript + Zod | โ
Pydantic | Python: Better type hints |
|
|
56
|
-
| **Async Support** | Native Promises | โ
async/await | Python: More intuitive |
|
|
57
|
-
| **Data Science** | Limited | โ
Rich ecosystem | Python: ML/AI workflows |
|
|
58
|
-
| **Web Development** | โ
Native | Good | JavaScript: Web-first |
|
|
59
|
-
| **Package Management** | npm/yarn | โ
pip/uv | Python: Better dependency resolution |
|
|
60
|
-
|
|
61
|
-
## ๐ **Quick Start**
|
|
62
|
-
|
|
63
|
-
### **Installation**
|
|
64
|
-
|
|
65
|
-
```bash
|
|
66
|
-
# Complete setup (recommended)
|
|
67
|
-
bash .agent/scripts/stagehand-python-helper.sh setup
|
|
68
|
-
|
|
69
|
-
# Or step by step
|
|
70
|
-
bash .agent/scripts/stagehand-python-helper.sh install
|
|
71
|
-
bash .agent/scripts/stagehand-python-setup.sh examples
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
### **Basic Usage**
|
|
75
|
-
|
|
76
|
-
```python
|
|
77
|
-
import asyncio
|
|
78
|
-
from stagehand import StagehandConfig, Stagehand
|
|
79
|
-
from pydantic import BaseModel, Field
|
|
80
|
-
|
|
81
|
-
class PageData(BaseModel):
|
|
82
|
-
title: str = Field(..., description="Page title")
|
|
83
|
-
summary: str = Field(..., description="Page summary")
|
|
84
|
-
|
|
85
|
-
async def main():
|
|
86
|
-
config = StagehandConfig(
|
|
87
|
-
env="LOCAL",
|
|
88
|
-
model_name="google/gemini-2.5-flash-preview-05-20",
|
|
89
|
-
model_api_key="your_api_key",
|
|
90
|
-
headless=False
|
|
91
|
-
)
|
|
92
|
-
|
|
93
|
-
stagehand = Stagehand(config)
|
|
94
|
-
|
|
95
|
-
try:
|
|
96
|
-
await stagehand.init()
|
|
97
|
-
page = stagehand.page
|
|
98
|
-
|
|
99
|
-
# Navigate and interact with natural language
|
|
100
|
-
await page.goto("https://example.com")
|
|
101
|
-
await page.act("scroll down to see more content")
|
|
102
|
-
|
|
103
|
-
# Extract structured data with Pydantic validation
|
|
104
|
-
data = await page.extract(
|
|
105
|
-
"extract the page title and summary",
|
|
106
|
-
schema=PageData
|
|
107
|
-
)
|
|
108
|
-
|
|
109
|
-
print(f"Title: {data.title}")
|
|
110
|
-
print(f"Summary: {data.summary}")
|
|
111
|
-
|
|
112
|
-
finally:
|
|
113
|
-
await stagehand.close()
|
|
114
|
-
|
|
115
|
-
asyncio.run(main())
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
## ๐ ๏ธ **Core Primitives**
|
|
119
|
-
|
|
120
|
-
### **1. Act - Natural Language Actions**
|
|
121
|
-
|
|
122
|
-
Execute actions using natural language descriptions:
|
|
123
|
-
|
|
124
|
-
```python
|
|
125
|
-
# Simple actions
|
|
126
|
-
await page.act("click the submit button")
|
|
127
|
-
await page.act("fill in the email field with user@example.com")
|
|
128
|
-
await page.act("scroll down to see more content")
|
|
129
|
-
|
|
130
|
-
# Complex interactions
|
|
131
|
-
await page.act("select 'Premium' from the subscription dropdown")
|
|
132
|
-
await page.act("upload the file from the desktop")
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
### **2. Extract - Structured Data with Pydantic**
|
|
136
|
-
|
|
137
|
-
Pull structured data from pages with schema validation:
|
|
138
|
-
|
|
139
|
-
```python
|
|
140
|
-
from pydantic import BaseModel, Field
|
|
141
|
-
from typing import List
|
|
142
|
-
|
|
143
|
-
class Product(BaseModel):
|
|
144
|
-
name: str = Field(..., description="Product name")
|
|
145
|
-
price: float = Field(..., description="Price in USD")
|
|
146
|
-
rating: float = Field(..., description="Star rating out of 5")
|
|
147
|
-
reviews: List[str] = Field(..., description="Customer review texts")
|
|
148
|
-
in_stock: bool = Field(..., description="Whether item is in stock")
|
|
149
|
-
|
|
150
|
-
# Extract with validation
|
|
151
|
-
products = await page.extract(
|
|
152
|
-
"extract all product details from this page",
|
|
153
|
-
schema=List[Product]
|
|
154
|
-
)
|
|
155
|
-
|
|
156
|
-
for product in products:
|
|
157
|
-
print(f"{product.name}: ${product.price} ({product.rating}โญ)")
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
### **3. Observe - Discover Available Actions**
|
|
161
|
-
|
|
162
|
-
Find out what actions are possible on the current page:
|
|
163
|
-
|
|
164
|
-
```python
|
|
165
|
-
# Discover all interactive elements
|
|
166
|
-
actions = await page.observe()
|
|
167
|
-
|
|
168
|
-
# Find specific types of actions
|
|
169
|
-
buttons = await page.observe("find all clickable buttons")
|
|
170
|
-
forms = await page.observe("find all form fields")
|
|
171
|
-
links = await page.observe("find navigation links")
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
### **4. Agent - Autonomous Workflows**
|
|
175
|
-
|
|
176
|
-
Let AI handle entire workflows autonomously:
|
|
177
|
-
|
|
178
|
-
```python
|
|
179
|
-
# Create an autonomous agent
|
|
180
|
-
agent = stagehand.agent(
|
|
181
|
-
provider="openai",
|
|
182
|
-
model="computer-use-preview",
|
|
183
|
-
integrations=[], # Add MCP integrations here
|
|
184
|
-
system_prompt="You are a helpful browser automation agent."
|
|
185
|
-
)
|
|
186
|
-
|
|
187
|
-
# Execute high-level tasks
|
|
188
|
-
await agent.execute("complete the checkout process for 2 items")
|
|
189
|
-
await agent.execute("find and apply for software engineer jobs")
|
|
190
|
-
await agent.execute("research competitor pricing and create a report")
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
## ๐ง **Configuration**
|
|
194
|
-
|
|
195
|
-
### **Environment Variables**
|
|
196
|
-
|
|
197
|
-
Create `~/.aidevops/stagehand-python/.env`:
|
|
198
|
-
|
|
199
|
-
```bash
|
|
200
|
-
# AI Provider (choose one)
|
|
201
|
-
OPENAI_API_KEY=your_openai_api_key_here
|
|
202
|
-
ANTHROPIC_API_KEY=your_anthropic_api_key_here
|
|
203
|
-
GOOGLE_API_KEY=your_google_api_key_here
|
|
204
|
-
|
|
205
|
-
# Browser Configuration
|
|
206
|
-
STAGEHAND_ENV=LOCAL # LOCAL or BROWSERBASE
|
|
207
|
-
STAGEHAND_HEADLESS=false # Show browser window
|
|
208
|
-
STAGEHAND_VERBOSE=1 # Logging level
|
|
209
|
-
STAGEHAND_DEBUG_DOM=true # Debug DOM interactions
|
|
210
|
-
|
|
211
|
-
# Model Configuration
|
|
212
|
-
MODEL_NAME=google/gemini-2.5-flash-preview-05-20
|
|
213
|
-
MODEL_API_KEY=${GOOGLE_API_KEY}
|
|
214
|
-
|
|
215
|
-
# Optional: Browserbase (for cloud browsers)
|
|
216
|
-
BROWSERBASE_API_KEY=your_browserbase_api_key_here
|
|
217
|
-
BROWSERBASE_PROJECT_ID=your_browserbase_project_id_here
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
### **Advanced Configuration**
|
|
221
|
-
|
|
222
|
-
```python
|
|
223
|
-
from stagehand import StagehandConfig, Stagehand
|
|
224
|
-
|
|
225
|
-
config = StagehandConfig(
|
|
226
|
-
env="LOCAL",
|
|
227
|
-
verbose=1,
|
|
228
|
-
debug_dom=True,
|
|
229
|
-
headless=False,
|
|
230
|
-
model_name="google/gemini-2.5-flash-preview-05-20",
|
|
231
|
-
model_api_key=os.getenv("GOOGLE_API_KEY"),
|
|
232
|
-
# Browser options
|
|
233
|
-
browser_options={
|
|
234
|
-
"args": [
|
|
235
|
-
"--disable-web-security",
|
|
236
|
-
"--disable-features=VizDisplayCompositor"
|
|
237
|
-
]
|
|
238
|
-
}
|
|
239
|
-
)
|
|
240
|
-
|
|
241
|
-
stagehand = Stagehand(config)
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
## ๐ **Examples**
|
|
245
|
-
|
|
246
|
-
### **E-commerce Automation**
|
|
247
|
-
|
|
248
|
-
```python
|
|
249
|
-
import asyncio
|
|
250
|
-
from typing import List
|
|
251
|
-
from pydantic import BaseModel, Field
|
|
252
|
-
from stagehand import StagehandConfig, Stagehand
|
|
253
|
-
|
|
254
|
-
class Product(BaseModel):
|
|
255
|
-
name: str = Field(..., description="Product name")
|
|
256
|
-
price: float = Field(..., description="Price in USD")
|
|
257
|
-
rating: float = Field(..., description="Star rating out of 5")
|
|
258
|
-
review_count: int = Field(..., description="Number of reviews")
|
|
259
|
-
|
|
260
|
-
async def search_products(query: str) -> List[Product]:
|
|
261
|
-
config = StagehandConfig(env="LOCAL", headless=True)
|
|
262
|
-
stagehand = Stagehand(config)
|
|
263
|
-
|
|
264
|
-
try:
|
|
265
|
-
await stagehand.init()
|
|
266
|
-
page = stagehand.page
|
|
267
|
-
|
|
268
|
-
await page.goto("https://amazon.com")
|
|
269
|
-
await page.act(f'search for "{query}"')
|
|
270
|
-
|
|
271
|
-
products = await page.extract(
|
|
272
|
-
"extract the first 5 products with details",
|
|
273
|
-
schema=List[Product]
|
|
274
|
-
)
|
|
275
|
-
|
|
276
|
-
return products
|
|
277
|
-
|
|
278
|
-
finally:
|
|
279
|
-
await stagehand.close()
|
|
280
|
-
|
|
281
|
-
# Usage
|
|
282
|
-
products = await search_products("wireless headphones")
|
|
283
|
-
for product in products:
|
|
284
|
-
print(f"{product.name}: ${product.price}")
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
### **Data Collection with Error Handling**
|
|
288
|
-
|
|
289
|
-
```python
|
|
290
|
-
import asyncio
|
|
291
|
-
import json
|
|
292
|
-
from datetime import datetime
|
|
293
|
-
from typing import List, Optional
|
|
294
|
-
from pydantic import BaseModel, Field, ValidationError
|
|
295
|
-
from stagehand import StagehandConfig, Stagehand
|
|
296
|
-
|
|
297
|
-
class Article(BaseModel):
|
|
298
|
-
headline: str = Field(..., description="Article headline")
|
|
299
|
-
summary: str = Field(..., description="Article summary")
|
|
300
|
-
author: Optional[str] = Field(None, description="Article author")
|
|
301
|
-
publish_date: Optional[str] = Field(None, description="Publication date")
|
|
302
|
-
|
|
303
|
-
async def scrape_news(url: str) -> List[Article]:
|
|
304
|
-
config = StagehandConfig(
|
|
305
|
-
env="LOCAL",
|
|
306
|
-
headless=True,
|
|
307
|
-
verbose=1
|
|
308
|
-
)
|
|
309
|
-
|
|
310
|
-
stagehand = Stagehand(config)
|
|
311
|
-
|
|
312
|
-
try:
|
|
313
|
-
await stagehand.init()
|
|
314
|
-
page = stagehand.page
|
|
315
|
-
|
|
316
|
-
await page.goto(url)
|
|
317
|
-
|
|
318
|
-
# Handle cookie banners
|
|
319
|
-
try:
|
|
320
|
-
await page.act("accept cookies if there's a banner")
|
|
321
|
-
except Exception:
|
|
322
|
-
pass # No cookies to handle
|
|
323
|
-
|
|
324
|
-
articles = await page.extract(
|
|
325
|
-
"extract all news articles with headlines and summaries",
|
|
326
|
-
schema=List[Article]
|
|
327
|
-
)
|
|
328
|
-
|
|
329
|
-
# Save results with timestamp
|
|
330
|
-
results = {
|
|
331
|
-
"url": url,
|
|
332
|
-
"timestamp": datetime.now().isoformat(),
|
|
333
|
-
"articles": [article.dict() for article in articles]
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
with open(f"news-{datetime.now().strftime('%Y%m%d_%H%M%S')}.json", 'w') as f:
|
|
337
|
-
json.dump(results, f, indent=2)
|
|
338
|
-
|
|
339
|
-
return articles
|
|
340
|
-
|
|
341
|
-
except ValidationError as e:
|
|
342
|
-
print(f"Data validation error: {e}")
|
|
343
|
-
return []
|
|
344
|
-
except Exception as e:
|
|
345
|
-
print(f"Scraping error: {e}")
|
|
346
|
-
return []
|
|
347
|
-
finally:
|
|
348
|
-
await stagehand.close()
|
|
349
|
-
```
|
|
350
|
-
|
|
351
|
-
## ๐ **MCP Integration**
|
|
352
|
-
|
|
353
|
-
### **Setup MCP Integration**
|
|
354
|
-
|
|
355
|
-
```bash
|
|
356
|
-
# Setup Python MCP integration
|
|
357
|
-
bash .agent/scripts/setup-mcp-integrations.sh stagehand-python
|
|
358
|
-
|
|
359
|
-
# Setup both JavaScript and Python
|
|
360
|
-
bash .agent/scripts/setup-mcp-integrations.sh stagehand-both
|
|
361
|
-
```
|
|
362
|
-
|
|
363
|
-
### **Using MCP with Stagehand Python**
|
|
364
|
-
|
|
365
|
-
```python
|
|
366
|
-
# MCP integration example (when available)
|
|
367
|
-
from stagehand import StagehandConfig, Stagehand
|
|
368
|
-
|
|
369
|
-
config = StagehandConfig(
|
|
370
|
-
env="LOCAL",
|
|
371
|
-
model_name="google/gemini-2.5-flash-preview-05-20",
|
|
372
|
-
model_api_key=os.getenv("GOOGLE_API_KEY")
|
|
373
|
-
)
|
|
374
|
-
|
|
375
|
-
stagehand = Stagehand(config)
|
|
376
|
-
|
|
377
|
-
# Create agent with MCP integrations
|
|
378
|
-
agent = stagehand.agent(
|
|
379
|
-
provider="openai",
|
|
380
|
-
model="computer-use-preview",
|
|
381
|
-
integrations=[
|
|
382
|
-
# MCP integrations will be added here
|
|
383
|
-
],
|
|
384
|
-
system_prompt="You have access to browser automation and external tools."
|
|
385
|
-
)
|
|
386
|
-
|
|
387
|
-
await agent.execute("Search for information and save it to the database")
|
|
388
|
-
```
|
|
389
|
-
|
|
390
|
-
## ๐ฏ **Use Cases**
|
|
391
|
-
|
|
392
|
-
### **๐ E-commerce & Shopping**
|
|
393
|
-
|
|
394
|
-
- Product research and price comparison
|
|
395
|
-
- Automated purchasing workflows
|
|
396
|
-
- Inventory monitoring with Pydantic validation
|
|
397
|
-
- Review and rating analysis
|
|
398
|
-
|
|
399
|
-
### **๐ Data Collection & Research**
|
|
400
|
-
|
|
401
|
-
- Web scraping with structured data extraction
|
|
402
|
-
- Competitive analysis automation
|
|
403
|
-
- Market research data gathering with type safety
|
|
404
|
-
- Content aggregation with validation
|
|
405
|
-
|
|
406
|
-
### **๐งช Testing & QA**
|
|
407
|
-
|
|
408
|
-
- User journey testing with async patterns
|
|
409
|
-
- Form validation testing
|
|
410
|
-
- Cross-browser compatibility testing
|
|
411
|
-
- Accessibility testing with structured reporting
|
|
412
|
-
|
|
413
|
-
### **๐ผ Business Process Automation**
|
|
414
|
-
|
|
415
|
-
- Lead generation workflows
|
|
416
|
-
- CRM data entry automation with validation
|
|
417
|
-
- Report generation with Pydantic models
|
|
418
|
-
- Administrative task automation
|
|
419
|
-
|
|
420
|
-
## ๐ **Security & Privacy**
|
|
421
|
-
|
|
422
|
-
### **Local-First Approach**
|
|
423
|
-
|
|
424
|
-
- **Complete Privacy**: All automation runs on your local machine
|
|
425
|
-
- **No Data Transmission**: Sensitive data never leaves your environment
|
|
426
|
-
- **Full Control**: You control all browser instances and data
|
|
427
|
-
- **Enterprise Ready**: Perfect for confidential business processes
|
|
428
|
-
|
|
429
|
-
### **Type Safety**
|
|
430
|
-
|
|
431
|
-
- **Pydantic Validation**: All extracted data is validated against schemas
|
|
432
|
-
- **Runtime Type Checking**: Catch data issues early
|
|
433
|
-
- **IDE Support**: Full type hints and autocompletion
|
|
434
|
-
- **Error Handling**: Graceful handling of validation errors
|
|
435
|
-
|
|
436
|
-
## ๐ ๏ธ **Helper Commands**
|
|
437
|
-
|
|
438
|
-
```bash
|
|
439
|
-
# Installation and setup
|
|
440
|
-
bash .agent/scripts/stagehand-python-helper.sh install # Install Stagehand Python
|
|
441
|
-
bash .agent/scripts/stagehand-python-helper.sh setup # Complete setup
|
|
442
|
-
bash .agent/scripts/stagehand-python-helper.sh status # Check installation
|
|
443
|
-
|
|
444
|
-
# Virtual environment management
|
|
445
|
-
bash .agent/scripts/stagehand-python-helper.sh activate # Show activation command
|
|
446
|
-
source ~/.aidevops/stagehand-python/.venv/bin/activate # Activate venv
|
|
447
|
-
|
|
448
|
-
# Development and testing
|
|
449
|
-
bash .agent/scripts/stagehand-python-setup.sh examples # Create examples
|
|
450
|
-
python examples/basic_example.py # Run basic example
|
|
451
|
-
python examples/ecommerce_automation.py "headphones" # Run product search
|
|
452
|
-
|
|
453
|
-
# Maintenance
|
|
454
|
-
bash .agent/scripts/stagehand-python-helper.sh clean # Clean cache and logs
|
|
455
|
-
```
|
|
456
|
-
|
|
457
|
-
## ๐ **Resources**
|
|
458
|
-
|
|
459
|
-
### **Official Documentation**
|
|
460
|
-
|
|
461
|
-
- **Stagehand Python Docs**: https://docs.stagehand.dev
|
|
462
|
-
- **GitHub Repository**: https://github.com/browserbase/stagehand-python
|
|
463
|
-
- **Pydantic Documentation**: https://docs.pydantic.dev
|
|
464
|
-
|
|
465
|
-
### **AI DevOps Framework Integration**
|
|
466
|
-
|
|
467
|
-
- **JavaScript Version**: docs/STAGEHAND.md
|
|
468
|
-
- **MCP Integrations**: docs/MCP-INTEGRATIONS.md
|
|
469
|
-
- **Browser Automation**: docs/BROWSER-AUTOMATION.md
|
|
470
|
-
|
|
471
|
-
### **Python Ecosystem**
|
|
472
|
-
|
|
473
|
-
- **AsyncIO Documentation**: https://docs.python.org/3/library/asyncio.html
|
|
474
|
-
- **Type Hints Guide**: https://docs.python.org/3/library/typing.html
|
|
475
|
-
- **Virtual Environments**: https://docs.python.org/3/tutorial/venv.html
|
|
476
|
-
|
|
477
|
-
---
|
|
478
|
-
|
|
479
|
-
**๐ Ready to revolutionize your browser automation with Python? Get started with Stagehand Python today!**
|
|
480
|
-
|
|
481
|
-
```bash
|
|
482
|
-
bash .agent/scripts/stagehand-python-helper.sh setup
|
|
483
|
-
```
|