* feat: add AWS Bedrock AgentCore browser provider (native Rust)
- Add agentcore provider with SigV4 authentication
- AWS SDK deps are optional behind 'agentcore' feature flag
- Build with: cargo build --features agentcore
- Supports AGENTCORE_REGION, AGENTCORE_PROFILE_ID, AGENTCORE_BROWSER_ID env vars
- Returns session ID and Live View URL in launch response
- Add connect_cdp_with_headers for signed WebSocket connections
* test: add unit tests for AgentCore provider
* refactor: use lightweight manual SigV4 signing instead of AWS SDK
- Replace aws-sigv4/aws-config with manual HMAC-SHA256 signing
- Removes ~60s compile time and significant binary size
- Credentials read from AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY env vars
- Supports AWS_SESSION_TOKEN for temporary credentials
* fix: correct AgentCore API endpoints
- Host: bedrock-agentcore.{region}.amazonaws.com
- Start session: PUT /browsers/{id}/sessions/start
- Stop session: PUT /browsers/{id}/sessions/stop
- Add urlencoding for browser ID in path
- Add AWS_DEFAULT_REGION fallback
* fix: use profileConfiguration.profileIdentifier for AgentCore profile
The AWS Bedrock AgentCore API expects profile configuration in the format:
{
"profileConfiguration": {
"profileIdentifier": "<profile-id>"
}
}
Not the flat "profileId" field that was previously used.
* feat: support AWS credential provider chain via AWS CLI
- Try env vars first (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
- Fall back to 'aws configure export-credentials --format env'
- Honor AWS_PROFILE environment variable
- Works with SSO, IAM roles, credential files, etc.
---------
Co-authored-by: Chris Tate <chris@ctate.dev>
64 lines
1.8 KiB
TOML
64 lines
1.8 KiB
TOML
[package]
|
|
name = "agent-browser"
|
|
version = "0.23.4"
|
|
edition = "2021"
|
|
description = "Fast browser automation CLI for AI agents"
|
|
license = "Apache-2.0"
|
|
repository = "https://github.com/vercel-labs/agent-browser"
|
|
homepage = "https://agent-browser.dev"
|
|
readme = "../README.md"
|
|
keywords = ["browser", "automation", "ai", "cdp", "chrome"]
|
|
categories = ["command-line-utilities", "web-programming"]
|
|
|
|
[features]
|
|
default = []
|
|
agentcore = ["hmac", "hex", "chrono", "urlencoding"]
|
|
|
|
[dependencies]
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
serde_json = "1.0"
|
|
dirs = "5.0"
|
|
base64 = "0.22"
|
|
getrandom = "0.2"
|
|
tokio = { version = "1", features = ["rt-multi-thread", "macros", "net", "io-util", "time", "sync", "signal", "process"] }
|
|
tokio-tungstenite = { version = "0.24", features = ["rustls-tls-webpki-roots"] }
|
|
futures-util = "0.3"
|
|
url = "2"
|
|
uuid = { version = "1", features = ["v4"] }
|
|
image = "0.25"
|
|
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls-webpki-roots"] }
|
|
sha2 = "0.10"
|
|
aes-gcm = "0.10"
|
|
async-trait = "0.1"
|
|
socket2 = "0.6"
|
|
similar = "2"
|
|
zip = { version = "8.2.0", default-features = false, features = ["deflate"] }
|
|
time = { version = "0.3", features = ["formatting"] }
|
|
|
|
# AgentCore provider (optional - lightweight SigV4 signing)
|
|
hmac = { version = "0.12", optional = true }
|
|
hex = { version = "0.4", optional = true }
|
|
chrono = { version = "0.4", optional = true }
|
|
urlencoding = { version = "2", optional = true }
|
|
|
|
[target.'cfg(unix)'.dependencies]
|
|
libc = "0.2"
|
|
|
|
[target.'cfg(windows)'.dependencies]
|
|
windows-sys = { version = "0.52", features = ["Win32_System_Threading", "Win32_Foundation"] }
|
|
|
|
[build-dependencies]
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
serde_json = "1.0"
|
|
|
|
[profile.release]
|
|
opt-level = 3
|
|
lto = true
|
|
codegen-units = 1
|
|
strip = true
|
|
|
|
[profile.ci]
|
|
inherits = "release"
|
|
lto = "thin"
|
|
codegen-units = 16
|