quvyta-code 0.1.22

Runs coding agent harnesses inside Podman or Docker containers, from the terminal (beta)
Documentation
[workspace]
resolver = "3"

[workspace.lints.rust]
unsafe_code = "forbid"
missing_docs = "deny"

[workspace.lints.rustdoc]
broken_intra_doc_links = "deny"

[workspace.lints.clippy]
all = { level = "deny", priority = -1 }
cast_lossless = "deny"
needless_pass_by_value = "deny"
redundant_closure_for_method_calls = "deny"
semicolon_if_nothing_returned = "deny"
uninlined_format_args = "deny"

[package]
name = "quvyta-code"
description = "Runs coding agent harnesses inside Podman or Docker containers, from the terminal (beta)"
repository = "https://github.com/quvyta/code"
readme = "README.md"
keywords = ["tui", "terminal", "agent", "podman", "docker"]
categories = ["command-line-utilities", "development-tools"]
version = "0.1.22"
edition = "2024"
rust-version = "1.95"
license = "MIT"
# Only what the program is built from goes into the package; the rest of the repository is for
# working on it.
include = ["/src/**", "/assets/**", "/Cargo.toml", "/Cargo.lock", "/README.md", "/CHANGELOG.md", "/LICENSE"]
# Both commands are declared below; nothing is discovered by name.
autobins = false

[lints]
workspace = true

# The package is quvyta-code; the code says `qcode::`, the way the framework says `qframe::`.
[lib]
name = "qcode"
path = "src/lib.rs"

# The short command is what people type.
[[bin]]
name = "qcode"
path = "src/bin/qcode.rs"

# The long command always works, so a clash over the short name never strands anyone.
[[bin]]
name = "quvyta-code"
path = "src/bin/quvyta-code.rs"

[dependencies]
# The terminal tabs and the sign-in flow run a harness in a pseudo-terminal; `updates` is the
# ecosystem's notice that a newer version is out.
quvyta-framework = { version = "0.1.32", features = ["pty", "updates"] }
# The bridge between tabs reads JSON from containers, which is untrusted input, and merges the
# harnesses' JSON settings, which the person also edits; `preserve_order` keeps their keys where
# they wrote them.
serde_json = { version = "1.0.150", features = ["preserve_order"] }
# Codex keeps its settings in TOML. The framework already builds this crate; reading is all the
# bridge needs of it, so nothing but the parser is turned on.
toml = { version = "1.1.6", default-features = false, features = ["std", "parse", "preserve_order"] }
ureq = "3.4.2"

[target.'cfg(unix)'.dependencies]
# Ending an engine command that stopped answering: the signal is sent directly, never through a
# `kill` program a machine may not have. The framework already brings this exact version in, so
# naming it here adds no crate.
rustix = { version = "1.1.4", default-features = false, features = ["std", "process"] }