things3-cli 2.1.0

CLI tool for Things 3 with integrated MCP server
Documentation
[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"]  # MCP server needs export functionality
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]
# Core
# Note: When publishing, cargo will automatically convert path dependencies to version 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" }

# CLI
clap.workspace = true

# MCP (using custom implementation for now)
# mcp.workspace = true

# Async
tokio.workspace = true

# Serialization
serde.workspace = true
serde_json.workspace = true

# Error handling
anyhow.workspace = true
thiserror.workspace = true

# Async traits
async-trait = "0.1"

# Logging (always included for debugging)
tracing.workspace = true
tracing-subscriber.workspace = true
tracing-appender.workspace = true

# Observability/Metrics (optional)
metrics = { workspace = true, optional = true }
metrics-exporter-prometheus = { workspace = true, optional = true }
metrics-exporter-tcp = { workspace = true, optional = true }
# OpenTelemetry dependencies temporarily disabled
# opentelemetry.workspace = true
# opentelemetry_sdk.workspace = true
# opentelemetry-jaeger.workspace = true
# opentelemetry-otlp.workspace = true
# opentelemetry-semantic-conventions.workspace = true

# Health checks
axum.workspace = true
tower.workspace = true
tower-http.workspace = true

# Legacy logging (for backward compatibility)
env_logger = "0.10"
log = "0.4"

# UUID
uuid = { version = "1.0", features = ["v4", "serde"] }

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

# Caching and Performance
moka.workspace = true
dashmap.workspace = true
parking_lot.workspace = true
once_cell.workspace = true

# Export formats (optional)
csv = { workspace = true, optional = true }
quick-xml = { workspace = true, optional = true }

# Performance monitoring
sysinfo.workspace = true

# Security and Authentication
jsonwebtoken = "9.2"
base64 = "0.21"
sha2 = "0.10"
hmac = "0.12"
ring = "0.17"
url = "2.4"

# Rate limiting
governor = "0.6"
nonzero_ext = "0.3"

# Testing and utilities
tempfile = "3.8"
sqlx = { version = "0.8", features = ["runtime-tokio-rustls", "sqlite", "chrono", "uuid", "json"], default-features = false }
futures = "0.3"

# Real-time updates and progress tracking
tokio-tungstenite = "0.21"
tungstenite = "0.21"
futures-util = "0.3"
indicatif = "0.17"
crossbeam-channel = "0.5"

# Testing
[dev-dependencies]
jsonschema = { version = "0.18", default-features = false, features = ["draft202012"] }