[package]
edition = "2024"
rust-version = "1.94.0"
name = "meerkat-auth-core"
version = "0.7.21"
authors = ["Luka Crnkovic-Friis"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Shared auth primitives for Meerkat: TokenStore backends, RefreshCoordinator impls, OAuth2 helpers, generic cloud-IAM authorizers (AWS SigV4, Google ADC, Azure AD)."
homepage = "https://docs.rkat.ai"
documentation = "https://docs.rkat.ai"
readme = false
keywords = [
"agent",
"llm",
"ai",
"meerkat",
]
categories = [
"development-tools",
"api-bindings",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/lukacf/meerkat"
resolver = "2"
[package.metadata.cargo-machete]
ignored = [
"aws-config",
"aws-smithy-eventstream",
"aws-smithy-runtime-api",
"aws-smithy-types",
"aws-types",
"hex",
"sha2",
"getrandom",
"http",
"indexmap",
"schemars",
"tokio_with_wasm",
"tracing",
]
[features]
aws-sigv4 = [
"dep:aws-sigv4",
"dep:aws-credential-types",
"dep:aws-config",
"dep:aws-types",
"dep:aws-smithy-runtime-api",
"dep:aws-smithy-eventstream",
"dep:aws-smithy-types",
"dep:http",
"dep:sha2",
"dep:hex",
]
azure-ad = ["dep:urlencoding"]
default = [
"oauth",
"keyring",
"file-lock",
]
file-lock = ["dep:fs4"]
gcp-auth = [
"dep:jsonwebtoken",
"dep:urlencoding",
]
keyring = ["dep:keyring"]
oauth = [
"dep:oauth2",
"dep:jsonwebtoken",
"dep:urlencoding",
"dep:axum",
]
[lib]
name = "meerkat_auth_core"
path = "src/lib.rs"
[[test]]
name = "aws_sts_authorizer"
path = "tests/aws_sts_authorizer.rs"
[[test]]
name = "azure_ad_authorizer"
path = "tests/azure_ad_authorizer.rs"
[[test]]
name = "google_auth_authorizer"
path = "tests/google_auth_authorizer.rs"
[[test]]
name = "oauth_flow"
path = "tests/oauth_flow.rs"
[[test]]
name = "refresh_coordinator_crossproc"
path = "tests/refresh_coordinator_crossproc.rs"
[[test]]
name = "refresh_coordinator_inproc"
path = "tests/refresh_coordinator_inproc.rs"
[[test]]
name = "token_lifecycle_clear"
path = "tests/token_lifecycle_clear.rs"
[[test]]
name = "token_store_contract"
path = "tests/token_store_contract.rs"
[dependencies.async-trait]
version = "0.1"
[dependencies.base64]
version = "0.22"
[dependencies.chrono]
version = "0.4"
features = ["serde"]
[dependencies.futures]
version = "0.3"
[dependencies.getrandom]
version = "0.3"
features = ["wasm_js"]
[dependencies.indexmap]
version = "2"
[dependencies.meerkat-core]
version = "0.7.21"
[dependencies.meerkat-llm-core]
version = "0.7.21"
[dependencies.parking_lot]
version = "0.12"
[dependencies.serde]
version = "1.0"
features = [
"derive",
"rc",
]
[dependencies.serde_json]
version = "1.0"
features = ["raw_value"]
[dependencies.sha2]
version = "0.10"
[dependencies.thiserror]
version = "2.0"
[dependencies.tracing]
version = "0.1"
[dependencies.uuid]
version = "1.11"
features = [
"v4",
"v5",
"v7",
"serde",
]
[dependencies.webbrowser]
version = "1"
[dev-dependencies.axum]
version = "0.8"
features = ["json"]
[dev-dependencies.schemars]
version = "1"
features = ["derive"]
[dev-dependencies.tempfile]
version = "3.14"
[dev-dependencies.tokio]
version = "1.43"
features = [
"full",
"test-util",
"macros",
]
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.aws-config]
version = "1"
features = [
"behavior-version-latest",
"rustls",
"rt-tokio",
"credentials-process",
"sso",
]
optional = true
default-features = false
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.aws-credential-types]
version = "1"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.aws-sigv4]
version = "1"
features = ["http1"]
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.aws-smithy-eventstream]
version = "0.60"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.aws-smithy-runtime-api]
version = "1"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.aws-smithy-types]
version = "1"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.aws-types]
version = "1"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.axum]
version = "0.8"
features = ["json"]
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.dirs]
version = "5.0"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.fs4]
version = "0.13"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.hex]
version = "0.4"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.http]
version = "1"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.jsonwebtoken]
version = "9"
features = ["use_pem"]
optional = true
default-features = false
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.keyring]
version = "3"
features = [
"apple-native",
"windows-native",
"linux-native",
]
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.oauth2]
version = "5"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.reqwest]
version = "0.12"
features = [
"json",
"stream",
"rustls-tls",
]
default-features = false
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.sha2]
version = "0.10"
optional = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tokio]
version = "1.43"
features = ["full"]
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.urlencoding]
version = "2"
optional = true
[target.'cfg(target_arch = "wasm32")'.dependencies.reqwest]
version = "0.12"
features = [
"json",
"stream",
]
default-features = false
[target.'cfg(target_arch = "wasm32")'.dependencies.tokio_with_wasm]
version = "0.9"
features = [
"macros",
"sync",
"time",
"rt",
]
[lints.clippy]
allow_attributes_without_reason = "allow"
assigning_clones = "allow"
cargo_common_metadata = "allow"
case_sensitive_file_extension_comparisons = "allow"
cast_lossless = "allow"
cast_possible_truncation = "allow"
cast_possible_wrap = "allow"
cast_precision_loss = "allow"
cast_sign_loss = "allow"
dbg_macro = "deny"
default_trait_access = "allow"
doc_link_with_quotes = "allow"
doc_markdown = "allow"
expect_used = "deny"
float_cmp = "allow"
fn_params_excessive_bools = "allow"
format_push_string = "allow"
ignore_without_reason = "allow"
implicit_clone = "deny"
items_after_statements = "allow"
items_after_test_module = "allow"
large_enum_variant = "allow"
large_futures = "allow"
let_underscore_untyped = "allow"
manual_let_else = "allow"
manual_string_new = "allow"
map_unwrap_or = "allow"
match_bool = "allow"
match_same_arms = "allow"
match_wildcard_for_single_variants = "allow"
missing_const_for_fn = "allow"
missing_docs_in_private_items = "allow"
missing_errors_doc = "allow"
missing_fields_in_debug = "allow"
missing_panics_doc = "allow"
module_name_repetitions = "allow"
multiple_crate_versions = "allow"
must_use_candidate = "allow"
mutex_atomic = "deny"
mutex_integer = "deny"
needless_continue = "allow"
needless_pass_by_value = "allow"
panic = "deny"
print_stderr = "allow"
print_stdout = "allow"
question_mark = "allow"
redundant_clone = "deny"
redundant_closure_for_method_calls = "allow"
redundant_feature_names = "allow"
ref_option = "allow"
return_self_not_must_use = "allow"
similar_names = "allow"
single_match_else = "allow"
struct_excessive_bools = "allow"
struct_field_names = "allow"
todo = "deny"
too_many_lines = "allow"
trivially_copy_pass_by_ref = "allow"
type_complexity = "allow"
unimplemented = "deny"
unnecessary_wraps = "allow"
unreadable_literal = "allow"
unused_async = "allow"
unused_self = "allow"
unwrap_used = "deny"
used_underscore_binding = "allow"
wildcard_imports = "allow"
[lints.clippy.all]
level = "warn"
priority = -1
[lints.clippy.cargo]
level = "warn"
priority = -1
[lints.clippy.pedantic]
level = "warn"
priority = -1
[lints.rust]
unsafe_code = "deny"
[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = [
"cfg(meerkat_internal_agent_factory_build)",
"cfg(meerkat_internal_generated_authority_bridge)",
]