[package]
name = "things3-cli"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
documentation = "https://docs.rs/things3-cli"
description = "CLI tool for Things 3 with integrated MCP server"
readme = "../../README.md"
keywords = ["things3", "cli", "mcp", "productivity-tool", "task-manager"]
categories = ["command-line-utilities", "development-tools"]
[[bin]]
name = "things3"
path = "src/main.rs"
[[bin]]
name = "test-mcp-real-data"
path = "src/bin/test_mcp_real_data.rs"
required-features = ["mcp-server"]
[[test]]
name = "mcp_tests"
path = "tests/mcp_tests/mod.rs"
required-features = ["mcp-server"]
[[test]]
name = "mcp_bulk_operations_tests"
path = "tests/mcp_bulk_operations_tests.rs"
required-features = ["mcp-server"]
[[test]]
name = "mcp_date_handling_tests"
path = "tests/mcp_date_handling_tests.rs"
required-features = ["mcp-server"]
[[test]]
name = "mcp_integration_workflows"
path = "tests/mcp_integration_workflows.rs"
required-features = ["mcp-server"]
[[test]]
name = "mcp_io_tests"
path = "tests/mcp_io_tests.rs"
required-features = ["mcp-server"]
[[test]]
name = "mcp_lifecycle_tests"
path = "tests/mcp_lifecycle_tests.rs"
required-features = ["mcp-server"]
[[test]]
name = "mcp_load_tests"
path = "tests/mcp_load_tests.rs"
required-features = ["mcp-server"]
[[test]]
name = "mcp_logbook_tests"
path = "tests/mcp_logbook_tests.rs"
required-features = ["mcp-server"]
[[test]]
name = "mcp_project_area_tests"
path = "tests/mcp_project_area_tests.rs"
required-features = ["mcp-server"]
[[test]]
name = "mcp_protocol_edge_cases"
path = "tests/mcp_protocol_edge_cases.rs"
required-features = ["mcp-server"]
[[test]]
name = "mcp_tag_tests"
path = "tests/mcp_tag_tests.rs"
required-features = ["mcp-server"]
[[test]]
name = "mcp_testing_framework_tests"
path = "tests/mcp_testing_framework_tests.rs"
required-features = ["mcp-server"]
[[test]]
name = "mcp_write_operations_tests"
path = "tests/mcp_write_operations_tests.rs"
required-features = ["mcp-server"]
[[test]]
name = "middleware_integration_tests"
path = "tests/middleware_integration_tests.rs"
required-features = ["mcp-server"]
[[test]]
name = "middleware_tests"
path = "tests/middleware_tests.rs"
required-features = ["mcp-server"]
[[test]]
name = "error_message_format_tests"
path = "tests/error_message_format_tests.rs"
required-features = ["mcp-server"]
[[test]]
name = "integration_tests"
path = "tests/integration_tests.rs"
required-features = ["mcp-server"]
[[test]]
name = "cli_error_handling"
path = "tests/cli_error_handling.rs"
required-features = ["mcp-server"]
[lints]
workspace = true
[features]
default = ["mcp-server", "export-csv", "export-opml", "observability"]
mcp-server = ["export-csv", "export-opml"]
export-csv = ["things3-core/export-csv"]
export-opml = ["things3-core/export-opml"]
observability = ["things3-core/observability", "dep:metrics", "dep:metrics-exporter-prometheus", "dep:metrics-exporter-tcp"]
full = ["mcp-server", "export-csv", "export-opml", "observability"]
[dependencies]
things3-core = { path = "../../libs/things3-core", version = "2.0.0", features = ["test-utils"], default-features = false }
things3-common = { path = "../../libs/things3-common", version = "2.0.0" }
clap.workspace = true
tokio.workspace = true
serde.workspace = true
serde_json.workspace = true
anyhow.workspace = true
thiserror.workspace = true
async-trait = "0.1"
tracing.workspace = true
tracing-subscriber.workspace = true
tracing-appender.workspace = true
metrics = { workspace = true, optional = true }
metrics-exporter-prometheus = { workspace = true, optional = true }
metrics-exporter-tcp = { workspace = true, optional = true }
axum.workspace = true
tower.workspace = true
tower-http.workspace = true
env_logger = "0.10"
log = "0.4"
uuid = { version = "1.0", features = ["v4", "serde"] }
chrono = { version = "0.4", features = ["serde"] }
moka.workspace = true
dashmap.workspace = true
parking_lot.workspace = true
once_cell.workspace = true
csv = { workspace = true, optional = true }
quick-xml = { workspace = true, optional = true }
sysinfo.workspace = true
jsonwebtoken = "9.2"
base64 = "0.21"
sha2 = "0.10"
hmac = "0.12"
ring = "0.17"
url = "2.4"
governor = "0.6"
nonzero_ext = "0.3"
tempfile = "3.8"
sqlx = { version = "0.8", features = ["runtime-tokio-rustls", "sqlite", "chrono", "uuid", "json"], default-features = false }
futures = "0.3"
tokio-tungstenite = "0.21"
tungstenite = "0.21"
futures-util = "0.3"
indicatif = "0.17"
crossbeam-channel = "0.5"
[dev-dependencies]
jsonschema = { version = "0.18", default-features = false, features = ["draft202012"] }