codexctl 0.7.1

Codex Controller - Full control plane for Codex CLI
[package]
name = "codexctl"
version = "0.7.1"
edition = "2024"
authors = ["Bhanu Korthiwada"]
description = "Codex Controller - Full control plane for Codex CLI"
license = "MIT"
repository = "https://github.com/repohelper/codexctl"
readme = "README.md"
keywords = ["codex", "controller", "cli", "automation", "openai"]
categories = ["command-line-utilities", "development-tools"]
rust-version = "1.94.1"

[[bin]]
name = "codexctl"
path = "src/main.rs"

[dependencies]
# Core CLI
clap = { version = "4.6", features = ["derive", "env", "cargo", "string", "unicode", "wrap_help"] }
clap_complete = "4.6"

# Async runtime
tokio = { version = "1.51", features = ["full", "tracing"] }

# Serialization
toml = "1.1.2"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"

# Error handling
anyhow = "1.0"

# Directories and paths
directories = "6.0"
dirs = "6.0"

# Time
chrono = { version = "0.4", features = ["serde", "now"] }

# UI/UX
colored = "3.1"
indicatif = "0.18"
dialoguer = "0.12"
console = "0.16"

# File operations
walkdir = "2.5"
tempfile = "3.27"

# Compression
flate2 = "1.1"
tar = "0.4"

# Encoding
base64 = "0.22"

# Version parsing for migrations
semver = { version = "1.0", features = ["serde"] }

# Cryptography (optional)
aes-gcm = { version = "0.11.0-rc.3", optional = true }

# Random number generation (used by transaction module)
rand = "0.10.1"

# Utilities
which = "8.0"

# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt", "ansi", "json"] }

# Tables
prettytable-rs = "0.10"

# HTTP client for OpenAI API
reqwest = { version = "0.13", features = ["json", "rustls", "stream"] }

# Encryption
age = { version = "0.11" }
secrecy = "0.10"

[features]
default = ["encryption"]
encryption = ["aes-gcm"]
full = ["encryption"]

[dev-dependencies]
assert_cmd = "2.2"
predicates = "3.1"
tempfile = "3.27"
serial_test = "3.4"
criterion = { version = "0.8", features = ["async_tokio"] }
mockall = "0.14"

[profile.release]
opt-level = 3
lto = "fat"
strip = true
panic = "abort"
codegen-units = 1
overflow-checks = false

[profile.dev]
opt-level = 0
debug = true
incremental = true

[lints.rust]
unsafe_code = "forbid"
missing_docs = "warn"
unreachable_pub = "allow"
unused_crate_dependencies = "allow"

[lints.clippy]
all = { level = "warn", priority = -1 }
pedantic = { level = "allow", priority = -1 }
cargo = { level = "warn", priority = -1 }
complexity = { level = "warn", priority = -1 }
correctness = { level = "deny", priority = -1 }
perf = { level = "warn", priority = -1 }
suspicious = { level = "warn", priority = -1 }
style = { level = "allow", priority = -1 }
# Multiple versions can happen with optional features
multiple_crate_versions = { level = "allow" }
# Collapsible if statements are style preference
collapsible_if = { level = "allow" }

[lints.rustdoc]
all = "warn"