[package]
edition = "2021"
rust-version = "1.89"
name = "llmposter"
version = "0.4.8"
build = false
exclude = [
".github/",
".gitignore",
".pre-commit-config.yaml",
"dev/",
"docs/superpowers/",
".SKILL.md.*",
"GEMINI.md",
"AUDIT-PROMPT*.md",
"RESUME-ME.sh",
"about.toml",
"skilldo.toml",
"cliff.toml",
"codecov.yml",
"tarpaulin-report.json",
"build_rs_cov.profraw",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Drop-in mock server for OpenAI, Anthropic & Gemini APIs — library or standalone CLI. SSE streaming, tool calling, OAuth2, failure injection, streaming chaos, stateful scenarios, request capture, hot-reload, response templating. Test LLM apps without burning tokens."
homepage = "https://skilldoai.com"
readme = "README.md"
keywords = [
"llm",
"mock",
"openai",
"anthropic",
"gemini",
]
categories = [
"development-tools::testing",
"web-programming::http-server",
]
license = "AGPL-3.0-or-later"
repository = "https://github.com/SkillDoAI/llmposter"
[package.metadata.binstall]
bin-dir = "{ bin }{ binary-ext }"
pkg-fmt = "tgz"
[package.metadata.binstall.overrides.x86_64-unknown-linux-gnu]
pkg-url = "{ repo }/releases/download/v{ version }/{ name }-v{ version }-linux-amd64.tar.gz"
[package.metadata.binstall.overrides.aarch64-unknown-linux-gnu]
pkg-url = "{ repo }/releases/download/v{ version }/{ name }-v{ version }-linux-arm64.tar.gz"
[package.metadata.binstall.overrides.aarch64-apple-darwin]
pkg-url = "{ repo }/releases/download/v{ version }/{ name }-v{ version }-darwin-arm64.tar.gz"
[features]
default = [
"oauth",
"watch",
"jsonpath",
]
jsonpath = ["dep:jsonpath-rust"]
oauth = [
"dep:oauth-mock",
"dep:reqwest",
]
templating = ["dep:minijinja"]
ui = []
watch = ["dep:notify-debouncer-mini"]
[lib]
name = "llmposter"
path = "src/lib.rs"
[[bin]]
name = "llmposter"
path = "src/main.rs"
[[test]]
name = "anthropic_test"
path = "tests/anthropic_test.rs"
[[test]]
name = "auth_test"
path = "tests/auth_test.rs"
[[test]]
name = "chaos_test"
path = "tests/chaos_test.rs"
[[test]]
name = "cli_test"
path = "tests/cli_test.rs"
[[test]]
name = "completions_test"
path = "tests/completions_test.rs"
[[test]]
name = "diagnostics_test"
path = "tests/diagnostics_test.rs"
[[test]]
name = "embeddings_test"
path = "tests/embeddings_test.rs"
[[test]]
name = "gemini_test"
path = "tests/gemini_test.rs"
[[test]]
name = "hot_reload_test"
path = "tests/hot_reload_test.rs"
[[test]]
name = "match_fields_test"
path = "tests/match_fields_test.rs"
[[test]]
name = "openai_test"
path = "tests/openai_test.rs"
[[test]]
name = "refusal_test"
path = "tests/refusal_test.rs"
[[test]]
name = "request_capture_test"
path = "tests/request_capture_test.rs"
[[test]]
name = "responses_test"
path = "tests/responses_test.rs"
[[test]]
name = "scenario_test"
path = "tests/scenario_test.rs"
[[test]]
name = "spec_test"
path = "tests/spec_test.rs"
[[test]]
name = "templating_test"
path = "tests/templating_test.rs"
[dependencies.axum]
version = "0.8"
[dependencies.clap]
version = "4"
features = ["derive"]
[dependencies.jsonpath-rust]
version = "1"
optional = true
[dependencies.minijinja]
version = "2"
features = [
"builtins",
"serde",
]
optional = true
default-features = false
[dependencies.notify-debouncer-mini]
version = "0.7"
optional = true
default-features = false
[dependencies.oauth-mock]
version = "0.4"
optional = true
[dependencies.regex]
version = "1"
[dependencies.reqwest]
version = "0.13"
features = [
"json",
"form",
]
optional = true
default-features = false
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1"
[dependencies.serde_yaml_ng]
version = "0.10"
[dependencies.tokio]
version = "1"
features = ["full"]
[dependencies.tokio-stream]
version = "0.1"
features = ["sync"]
[dev-dependencies.oauth-mock]
version = "0.4"
[dev-dependencies.reqwest]
version = "0.13"
features = [
"json",
"stream",
]
[dev-dependencies.tokio-test]
version = "0.4"
[target."cfg(unix)".dev-dependencies.libc]
version = "0.2"