[package]
edition = "2021"
rust-version = "1.75"
name = "reasonkit-web"
version = "0.1.7"
authors = ["ReasonKit Team <team@reasonkit.sh>"]
build = false
include = [
"/src/**/*",
"/benches/**/*",
"/examples/**/*",
"/config/**/*",
"/Cargo.toml",
"/Cargo.lock",
"/README.md",
"/LICENSE",
"/CHANGELOG.md",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "High-performance MCP server for browser automation, web capture, and content extraction. Rust-powered CDP client for AI agents."
homepage = "https://reasonkit.sh"
documentation = "https://docs.rs/reasonkit-web"
readme = "README.md"
keywords = [
"mcp",
"browser-automation",
"headless",
"cdp",
"web-scraping",
]
categories = [
"web-programming",
"web-programming::http-server",
"development-tools::testing",
"asynchronous",
]
license = "Apache-2.0"
repository = "https://github.com/reasonkit/reasonkit-web"
[package.metadata.docs.rs]
features = ["full"]
rustdoc-args = [
"--cfg",
"docsrs",
]
default-target = "x86_64-unknown-linux-gnu"
targets = [
"x86_64-unknown-linux-gnu",
"x86_64-apple-darwin",
"aarch64-apple-darwin",
"x86_64-pc-windows-msvc",
]
[badges.maintenance]
status = "actively-developed"
[features]
caching = ["moka"]
code-parsing = [
"tree-sitter",
"tree-sitter-rust",
]
compliant-crawling = [
"sitemap",
"robotstxt",
]
content-extraction = ["readability"]
crawler = ["spider"]
default = []
fast-hash = ["blake3"]
full = [
"stealth",
"screenshots",
]
http-caching = ["http-cache-semantics"]
http-resilience = [
"reqwest-middleware",
"reqwest-retry",
]
mcp-production = [
"rust-mcp-sdk",
"rust-mcp-schema",
]
otel = [
"opentelemetry",
"tracing-opentelemetry",
]
portal = [
"sqlx",
"validator",
]
rate-limiting = [
"tower_governor",
"governor",
]
research-full = [
"research-phase2",
"research-phase3",
"research-phase4",
]
research-phase2 = [
"mcp-production",
"rate-limiting",
"caching",
"otel",
"fast-hash",
]
research-phase3 = [
"crawler",
"content-extraction",
"compliant-crawling",
"http-caching",
]
research-phase4 = [
"http-resilience",
"zero-copy-cache",
"fast-hash",
]
screenshots = []
stealth = []
wasm = ["dep:wasm-bindgen"]
zero-copy-cache = ["rkyv"]
[lib]
name = "reasonkit_web"
crate-type = [
"rlib",
"cdylib",
]
path = "src/lib.rs"
[[bin]]
name = "mcp_server"
path = "src/bin/mcp_server.rs"
[[bin]]
name = "rk-web"
path = "src/main.rs"
[[example]]
name = "quick-start-web"
path = "examples/quick-start-web.rs"
[[example]]
name = "stripe_webhook_example"
path = "examples/stripe_webhook_example.rs"
[[bench]]
name = "capture_bench"
path = "benches/capture_bench.rs"
harness = false
[[bench]]
name = "processing_bench"
path = "benches/processing_bench.rs"
[[bench]]
name = "server_bench"
path = "benches/server_bench.rs"
[dependencies.anyhow]
version = "1"
[dependencies.argon2]
version = "0.5"
features = ["std"]
[dependencies.async-trait]
version = "0.1"
[dependencies.axum]
version = "0.7"
features = [
"multipart",
"ws",
]
[dependencies.base64]
version = "0.22.1"
[dependencies.blake3]
version = "1.5"
optional = true
[dependencies.chromiumoxide]
version = "0.8"
features = ["tokio-runtime"]
[dependencies.chrono]
version = "0.4"
features = ["serde"]
[dependencies.clap]
version = "4"
features = ["derive"]
[dependencies.futures]
version = "0.3.31"
[dependencies.governor]
version = "0.7"
optional = true
[dependencies.hdrhistogram]
version = "7"
[dependencies.hex]
version = "0.4"
[dependencies.hmac]
version = "0.12"
[dependencies.html5ever]
version = "0.29"
[dependencies.htmlescape]
version = "0.3"
[dependencies.http]
version = "1"
[dependencies.http-cache-semantics]
version = "2"
optional = true
[dependencies.hyper]
version = "1"
[dependencies.jsonwebtoken]
version = "9"
[dependencies.metrics]
version = "0.24"
[dependencies.moka]
version = "0.12"
features = ["future"]
optional = true
[dependencies.opentelemetry]
version = "0.27"
optional = true
[dependencies.parking_lot]
version = "0.12"
[dependencies.password-hash]
version = "0.5"
features = ["rand_core"]
[dependencies.rand]
version = "0.9.2"
[dependencies.readability]
version = "0.3"
optional = true
[dependencies.regex]
version = "1.12.2"
[dependencies.reqwest]
version = "0.12"
features = [
"json",
"rustls-tls",
]
[dependencies.reqwest-middleware]
version = "0.4"
optional = true
[dependencies.reqwest-retry]
version = "0.7"
optional = true
[dependencies.rkyv]
version = "0.8"
optional = true
[dependencies.rmcp]
version = "0.1"
[dependencies.robotstxt]
version = "0.3"
optional = true
[dependencies.rust-mcp-schema]
version = "0.2"
optional = true
[dependencies.rust-mcp-sdk]
version = "0.2"
optional = true
[dependencies.scraper]
version = "0.21"
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1"
[dependencies.sha2]
version = "0.10"
[dependencies.sitemap]
version = "0.4"
optional = true
[dependencies.spider]
version = "2"
optional = true
[dependencies.sqlx]
version = "0.8"
features = [
"runtime-tokio",
"postgres",
"uuid",
"chrono",
"json",
]
optional = true
[dependencies.sysinfo]
version = "0.33"
[dependencies.thiserror]
version = "2"
[dependencies.tokio]
version = "1"
features = ["full"]
[dependencies.tokio-util]
version = "0.7.18"
features = ["io"]
[dependencies.tower]
version = "0.5"
[dependencies.tower-http]
version = "0.6"
features = ["cors"]
[dependencies.tower_governor]
version = "0.4"
optional = true
[dependencies.tracing]
version = "0.1"
[dependencies.tracing-opentelemetry]
version = "0.28"
optional = true
[dependencies.tracing-subscriber]
version = "0.3"
features = ["env-filter"]
[dependencies.tree-sitter]
version = "0.24"
optional = true
[dependencies.tree-sitter-rust]
version = "0.23"
optional = true
[dependencies.url]
version = "2"
[dependencies.uuid]
version = "1"
features = [
"v4",
"serde",
]
[dependencies.validator]
version = "0.20"
features = ["derive"]
optional = true
[dependencies.wasm-bindgen]
version = "0.2"
optional = true
[dev-dependencies.criterion]
version = "0.5"
features = ["html_reports"]
[dev-dependencies.js-sys]
version = "0.3"
[dev-dependencies.pretty_assertions]
version = "1"
[dev-dependencies.proptest]
version = "1.4"
[dev-dependencies.tokio-test]
version = "0.4"
[dev-dependencies.wasm-bindgen]
version = "0.2"
[dev-dependencies.wasm-bindgen-futures]
version = "0.4"
[dev-dependencies.wasm-bindgen-test]
version = "0.3"
[dev-dependencies.web-sys]
version = "0.3"
features = [
"Window",
"Document",
"Element",
"HtmlElement",
"Node",
"NodeList",
"DomTokenList",
"CssStyleDeclaration",
"Storage",
"Navigator",
"Location",
"Performance",
"console",
"Headers",
"Request",
"RequestInit",
"RequestMode",
"Response",
"WebSocket",
"BinaryType",
"MessageEvent",
"CloseEvent",
"ErrorEvent",
"Event",
"EventTarget",
"CustomEvent",
"CustomEventInit",
"MouseEvent",
"MouseEventInit",
"AbortController",
"AbortSignal",
]
[target.'cfg(target_arch = "wasm32")'.dependencies.js-sys]
version = "0.3"
[target.'cfg(target_arch = "wasm32")'.dependencies.wasm-bindgen]
version = "0.2"
[target.'cfg(target_arch = "wasm32")'.dependencies.wasm-bindgen-futures]
version = "0.4"
[target.'cfg(target_arch = "wasm32")'.dependencies.web-sys]
version = "0.3"
features = [
"Window",
"Document",
"Element",
"HtmlElement",
"Node",
"NodeList",
"DomTokenList",
"CssStyleDeclaration",
"Storage",
"Navigator",
"Location",
"Performance",
"console",
"Headers",
"Request",
"RequestInit",
"RequestMode",
"Response",
"WebSocket",
"BinaryType",
"MessageEvent",
"CloseEvent",
"ErrorEvent",
"Event",
"EventTarget",
"CustomEvent",
"CustomEventInit",
"MouseEvent",
"MouseEventInit",
"AbortController",
"AbortSignal",
]