[package]
edition = "2021"
rust-version = "1.80.0"
name = "pmat"
version = "2.214.0"
authors = ["Pragmatic AI Labs"]
build = "build.rs"
exclude = [
"target/",
"*.log",
"*.profraw",
".pmat-cache",
"proptest-regressions",
".pmat/",
".pmat-tickets/",
"node_modules/",
"*.pyc",
"__pycache__/",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "PMAT - Zero-config AI context generation and code quality toolkit (CLI, MCP, HTTP)"
homepage = "https://paiml.com"
readme = "README.md"
keywords = [
"mcp",
"code-analysis",
"refactoring",
"quality",
"ai",
]
categories = [
"command-line-utilities",
"development-tools",
"development-tools::testing",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/paiml/paiml-mcp-agent-toolkit"
[package.metadata.docs.rs]
features = ["default"]
rustdoc-args = [
"--cfg",
"docsrs",
]
rustc-args = [
"--cfg",
"docsrs",
]
[features]
advanced-analysis = [
"analytics-simd",
"mutation-testing",
"tdg-explain",
"demo",
]
all-languages = [
"rust-ast",
"typescript-ast",
"python-ast",
"c-ast",
"cpp-ast",
"ruchy-ast",
"go-ast",
"wasm-ast",
"deep-wasm",
"shell-ast",
"php-ast",
"swift-ast",
]
analytics-gpu = [
"analytics-simd",
"trueno-db/gpu",
"wgpu",
"pollster",
"bytemuck",
]
analytics-simd = [
"trueno",
"trueno-db",
"trueno-db/simd",
"arrow",
]
broken-tests = []
c-ast = [
"tree-sitter",
"tree-sitter-c",
"fixedbitset",
]
cli-integration = []
core-languages = [
"rust-ast",
"typescript-ast",
"javascript-ast",
]
cpp-ast = [
"c-ast",
"tree-sitter-cpp",
"cpp_demangle",
"gimli",
"goblin",
]
csharp-ast = []
dap = ["rmp-serde"]
deep-wasm = [
"gimli",
"wasm-ast",
"sourcemap",
]
default = [
"core-languages",
"viz",
]
demo = []
e2e-tests = []
extended-languages = [
"python-ast",
"go-ast",
"c-ast",
"cpp-ast",
"shell-ast",
"php-ast",
"swift-ast",
]
full = [
"all-languages",
"polyglot-ast",
"advanced-analysis",
]
git-lib = ["git2"]
github-api = ["octocrab"]
go-ast = [
"tree-sitter",
"tree-sitter-go",
]
gpu = [
"trueno",
"trueno/gpu",
]
integration-tests = []
internal_tests = []
java-ast = []
javascript-ast = [
"typescript-ast",
"polyglot-javascript",
]
kotlin-ast = [
"tree-sitter",
"tree-sitter-kotlin-ng",
"polyglot-kotlin",
]
most-languages = [
"rust-ast",
"typescript-ast",
"python-ast",
"c-ast",
"cpp-ast",
"go-ast",
"shell-ast",
]
mutation-testing = [
"rust-ast",
"python-ast",
"typescript-ast",
"cpp-ast",
"go-ast",
]
org-intelligence = ["organizational-intelligence-plugin"]
perf-tests = []
php-ast = []
polyglot-ast = []
polyglot-csharp = []
polyglot-java = []
polyglot-javascript = ["polyglot-ast"]
polyglot-kotlin = ["polyglot-ast"]
polyglot-ruby = []
polyglot-scala = []
polyglot-typescript = ["polyglot-ast"]
prometheus-metrics = [
"prometheus",
"warp",
]
python-ast = [
"rust-ast",
"tree-sitter",
"tree-sitter-python",
]
raft-consensus = ["async-raft"]
ruby-ast = []
ruchy-ast = [
"ruchy",
"logos",
]
rust-ast = [
"quote",
"proc-macro2",
"tree-sitter",
"tree-sitter-rust",
]
rust-only = ["rust-ast"]
scala-ast = []
shell-ast = []
simd = ["trueno"]
skip-slow-tests = []
sovereign-compression = ["trueno-zram-core"]
swift-ast = []
tdg-explain = ["rust-ast"]
tui = [
"presentar-core",
"crossterm",
]
typescript-ast = [
"rust-ast",
"swc_ecma_parser",
"swc_common",
"swc_ecma_ast",
"swc_ecma_visit",
"tree-sitter",
"tree-sitter-typescript",
"tree-sitter-javascript",
"polyglot-typescript",
]
viz = ["trueno-viz"]
wasm-ast = []
[lib]
name = "pmat"
path = "src/lib.rs"
[[bin]]
name = "pmat"
path = "src/bin/pmat.rs"
[[bin]]
name = "pmat-agent"
path = "src/bin/pmat-agent.rs"
[[example]]
name = "analyze_complexity"
path = "examples/analyze_complexity.rs"
[[example]]
name = "analyze_dead_code"
path = "examples/analyze_dead_code.rs"
[[example]]
name = "analyze_github_repo"
path = "examples/analyze_github_repo.rs"
[[example]]
name = "analyze_satd"
path = "examples/analyze_satd.rs"
[[example]]
name = "bug_004_dead_code_c_project"
path = "examples/bug_004_dead_code_c_project.rs"
[[example]]
name = "bug_011_language_detection"
path = "examples/bug_011_language_detection.rs"
[[example]]
name = "bug_012_multi_language_cli"
path = "examples/bug_012_multi_language_cli.rs"
[[example]]
name = "cargo_mutants_backend_demo"
path = "examples/cargo_mutants_backend_demo.rs"
required-features = ["mutation-testing"]
[[example]]
name = "cargo_mutants_detect"
path = "examples/cargo_mutants_detect.rs"
required-features = ["mutation-testing"]
[[example]]
name = "check_code_quality"
path = "examples/check_code_quality.rs"
[[example]]
name = "check_github_repo"
path = "examples/check_github_repo.rs"
[[example]]
name = "ci_integration"
path = "examples/ci_integration.rs"
[[example]]
name = "claude_integration_example"
path = "examples/claude_integration_example.rs"
[[example]]
name = "compare_repos"
path = "examples/compare_repos.rs"
[[example]]
name = "complexity_demo"
path = "examples/complexity_demo.rs"
[[example]]
name = "complexity_isolation"
path = "examples/complexity_isolation.rs"
[[example]]
name = "complexity_validation"
path = "examples/complexity_validation.rs"
[[example]]
name = "comply_demo"
path = "examples/comply_demo.rs"
[[example]]
name = "context_analysis_demo"
path = "examples/context_analysis_demo.rs"
[[example]]
name = "cpp_mutation_workflow"
path = "examples/cpp_mutation_workflow.rs"
required-features = ["mutation-testing"]
[[example]]
name = "cuda_tdg_demo"
path = "examples/cuda_tdg_demo.rs"
[[example]]
name = "debug_complexity"
path = "examples/debug_complexity.rs"
[[example]]
name = "deep_context_complexity"
path = "examples/deep_context_complexity.rs"
[[example]]
name = "dogfood_types"
path = "examples/dogfood_types.rs"
required-features = ["mutation-testing"]
[[example]]
name = "exit_codes"
path = "examples/exit_codes.rs"
[[example]]
name = "feature_052_filtering"
path = "examples/feature_052_filtering.rs"
[[example]]
name = "five_whys_demo"
path = "examples/five_whys_demo.rs"
[[example]]
name = "go_mutation_workflow"
path = "examples/go_mutation_workflow.rs"
required-features = ["mutation-testing"]
[[example]]
name = "hooks_cache_demo"
path = "examples/hooks_cache_demo.rs"
[[example]]
name = "issue_053_batch2_context_churn"
path = "examples/issue_053_batch2_context_churn.rs"
[[example]]
name = "issue_053_batch3_quality_gates"
path = "examples/issue_053_batch3_quality_gates.rs"
[[example]]
name = "issue_053_batch4_quality_tracking"
path = "examples/issue_053_batch4_quality_tracking.rs"
[[example]]
name = "issue_053_batch5_advanced_analysis"
path = "examples/issue_053_batch5_advanced_analysis.rs"
[[example]]
name = "issue_053_mcp_tools"
path = "examples/issue_053_mcp_tools.rs"
[[example]]
name = "lint_hotspot_demo"
path = "examples/lint_hotspot_demo.rs"
[[example]]
name = "lint_hotspot_enforce_flag"
path = "examples/lint_hotspot_enforce_flag.rs"
[[example]]
name = "mcp_server_pmcp"
path = "examples/mcp_server_pmcp.rs"
[[example]]
name = "one_function_only"
path = "examples/one_function_only.rs"
[[example]]
name = "organizational_intelligence_integration"
path = "examples/organizational_intelligence_integration.rs"
[[example]]
name = "parse_cargo_mutants_json"
path = "examples/parse_cargo_mutants_json.rs"
required-features = ["mutation-testing"]
[[example]]
name = "perfection_score_demo"
path = "examples/perfection_score_demo.rs"
[[example]]
name = "pmcp_analyze_workflow"
path = "examples/pmcp_analyze_workflow.rs"
[[example]]
name = "pmcp_refactor_session"
path = "examples/pmcp_refactor_session.rs"
[[example]]
name = "popper_score_demo"
path = "examples/popper_score_demo.rs"
[[example]]
name = "project_diag_demo"
path = "examples/project_diag_demo.rs"
[[example]]
name = "python_mutation_workflow"
path = "examples/python_mutation_workflow.rs"
required-features = ["mutation-testing"]
[[example]]
name = "quality_gate"
path = "examples/quality_gate.rs"
[[example]]
name = "quality_gate_custom"
path = "examples/quality_gate_custom.rs"
[[example]]
name = "quality_gate_github"
path = "examples/quality_gate_github.rs"
[[example]]
name = "quality_gate_perf"
path = "examples/quality_gate_perf.rs"
[[example]]
name = "quality_gate_shows_checks"
path = "examples/quality_gate_shows_checks.rs"
[[example]]
name = "quality_gate_thresholds"
path = "examples/quality_gate_thresholds.rs"
[[example]]
name = "quality_gate_violations"
path = "examples/quality_gate_violations.rs"
[[example]]
name = "quality_proxy_demo"
path = "examples/quality_proxy_demo.rs"
[[example]]
name = "recording_capture_demo"
path = "examples/recording_capture_demo.rs"
[[example]]
name = "red_team_demo"
path = "examples/red_team_demo.rs"
[[example]]
name = "rich_reporter_demo"
path = "examples/rich_reporter_demo.rs"
[[example]]
name = "rust_mutation_workflow"
path = "examples/rust_mutation_workflow.rs"
required-features = ["mutation-testing"]
[[example]]
name = "satd_lint_analysis"
path = "examples/satd_lint_analysis.rs"
[[example]]
name = "scaffold_agent_basics"
path = "examples/scaffold_agent_basics.rs"
[[example]]
name = "scaffold_agent_course_project"
path = "examples/scaffold_agent_course_project.rs"
[[example]]
name = "scaffold_agent_hybrid"
path = "examples/scaffold_agent_hybrid.rs"
[[example]]
name = "scaffold_agent_interactive"
path = "examples/scaffold_agent_interactive.rs"
[[example]]
name = "semantic_search_demo"
path = "examples/semantic_search_demo.rs"
[[example]]
name = "similarity_demo"
path = "examples/similarity_demo.rs"
[[example]]
name = "single_function_test"
path = "examples/single_function_test.rs"
[[example]]
name = "single_if_test"
path = "examples/single_if_test.rs"
[[example]]
name = "tdg_system_demo"
path = "examples/tdg_system_demo.rs"
[[example]]
name = "test_pmcp_server"
path = "examples/test_pmcp_server.rs"
[[example]]
name = "typescript_mutation_workflow"
path = "examples/typescript_mutation_workflow.rs"
required-features = ["mutation-testing"]
[[example]]
name = "typescript_mutation_workflow_parallel"
path = "examples/typescript_mutation_workflow_parallel.rs"
required-features = ["mutation-testing"]
[[example]]
name = "unified_help_demo"
path = "examples/unified_help_demo.rs"
[[example]]
name = "unified_mcp_demo"
path = "examples/unified_mcp_demo.rs"
[[example]]
name = "uniform_contracts_demo"
path = "examples/uniform_contracts_demo.rs"
[[example]]
name = "verify_fixtures"
path = "examples/verify_fixtures.rs"
required-features = ["mutation-testing"]
[[example]]
name = "verus_verification_demo"
path = "examples/verus_verification_demo.rs"
[[example]]
name = "viz_demo"
path = "examples/viz_demo.rs"
required-features = ["viz"]
[[example]]
name = "work_commands_demo"
path = "examples/work_commands_demo.rs"
[[test]]
name = "all"
path = "tests/all.rs"
[[test]]
name = "unit_core"
path = "tests/unit/core.rs"
required-features = []
[[test]]
name = "services_integration"
path = "tests/integration/services.rs"
required-features = ["integration-tests"]
[[test]]
name = "protocol_adapters"
path = "tests/integration/protocols.rs"
required-features = ["integration-tests"]
[[test]]
name = "e2e_system"
path = "tests/e2e/system.rs"
required-features = ["e2e-tests"]
[[test]]
name = "performance_regression"
path = "tests/performance/regression.rs"
required-features = ["perf-tests"]
[[bench]]
name = "claude_integration_bench"
path = "benches/claude_integration_bench.rs"
harness = false
[[bench]]
name = "context_graph_bench"
path = "benches/context_graph_bench.rs"
[[bench]]
name = "critical_path"
path = "benches/critical_path.rs"
harness = false
[[bench]]
name = "dead_code_ops"
path = "benches/dead_code_ops.rs"
harness = false
[[bench]]
name = "performance"
path = "benches/performance.rs"
harness = false
[[bench]]
name = "similarity_ops"
path = "benches/similarity_ops.rs"
harness = false
[[bench]]
name = "storage_backend_bench"
path = "benches/storage_backend_bench.rs"
harness = false
[[bench]]
name = "tdg_ops"
path = "benches/tdg_ops.rs"
harness = false
[[bench]]
name = "topk_selection"
path = "benches/topk_selection.rs"
harness = false
[dependencies.actix]
version = "0.13"
[dependencies.actix-rt]
version = "2.10"
[dependencies.anyhow]
version = "1.0"
[dependencies.aprender]
version = "0.24.1"
[dependencies.arrow]
version = "53"
optional = true
[dependencies.async-raft]
version = "0.6"
optional = true
[dependencies.async-trait]
version = "0.1"
[dependencies.axum]
version = "0.8"
features = [
"json",
"tokio",
"http1",
"query",
]
default-features = false
[dependencies.bincode]
version = "1.3"
[dependencies.blake3]
version = "1.8"
features = ["serde"]
[dependencies.bytemuck]
version = "1.14"
optional = true
[dependencies.bytes]
version = "1.10"
[dependencies.chrono]
version = "=0.4.38"
features = ["serde"]
[dependencies.clap]
version = "4.5"
features = [
"std",
"derive",
"help",
"env",
]
default-features = false
[dependencies.cpp_demangle]
version = "0.4"
optional = true
[dependencies.crc32fast]
version = "1.5.0"
[dependencies.crossbeam]
version = "0.8"
[dependencies.crossbeam-channel]
version = "0.5"
[dependencies.crossterm]
version = "0.28"
optional = true
[dependencies.csv]
version = "1.3"
[dependencies.dashmap]
version = "6.1"
[dependencies.dirs]
version = "6.0"
[dependencies.fixedbitset]
version = "0.5"
optional = true
[dependencies.flate2]
version = "1.1"
[dependencies.fs2]
version = "0.4.3"
[dependencies.futures]
version = "0.3"
[dependencies.gimli]
version = "0.32"
optional = true
[dependencies.git2]
version = "0.20"
features = ["https"]
optional = true
default-features = false
[dependencies.glob]
version = "0.3"
[dependencies.globset]
version = "0.4"
[dependencies.goblin]
version = "0.10"
optional = true
[dependencies.handlebars]
version = "6.3"
features = ["string_helpers"]
default-features = false
[dependencies.hex]
version = "0.4"
[dependencies.http]
version = "1.3"
[dependencies.http-body-util]
version = "0.1"
[dependencies.hyper]
version = "1.6"
features = [
"http1",
"server",
]
default-features = false
[dependencies.hyper-util]
version = "0.1"
features = [
"tokio",
"server",
"client",
]
default-features = false
[dependencies.ignore]
version = "0.4"
[dependencies.lazy_static]
version = "1.5"
[dependencies.libc]
version = "0.2"
[dependencies.logos]
version = "0.14"
optional = true
[dependencies.lru]
version = "0.16"
features = ["hashbrown"]
[dependencies.lz4_flex]
version = "0.11"
[dependencies.notify]
version = "8.0"
[dependencies.num_cpus]
version = "1.17"
[dependencies.octocrab]
version = "0.48"
optional = true
[dependencies.once_cell]
version = "1.21"
[dependencies.organizational-intelligence-plugin]
version = "0.3.1"
optional = true
[dependencies.parking_lot]
version = "0.12"
[dependencies.pest]
version = "2.8.2"
[dependencies.pest_derive]
version = "2.8.2"
features = ["default"]
[dependencies.pmcp]
version = "1.9.4"
features = [
"websocket",
"http",
"sse",
"validation",
]
[dependencies.pollster]
version = "0.3"
optional = true
[dependencies.presentar-core]
version = "0.3"
optional = true
[dependencies.prettyplease]
version = "0.2.37"
[dependencies.proc-macro2]
version = "1.0"
optional = true
[dependencies.prometheus]
version = "0.14"
optional = true
[dependencies.proptest]
version = "1.6"
[dependencies.pulldown-cmark]
version = "0.13"
[dependencies.quote]
version = "1.0"
optional = true
[dependencies.rand]
version = "0.9"
[dependencies.rayon]
version = "1.10"
[dependencies.regex]
version = "1.11"
features = ["perf"]
[dependencies.reqwest]
version = "0.12"
features = [
"json",
"rustls-tls",
]
default-features = false
[dependencies.rmp-serde]
version = "1.3"
optional = true
[dependencies.roaring]
version = "0.10"
[dependencies.ruchy]
version = "4.1"
optional = true
[dependencies.rusqlite]
version = "0.32"
features = ["bundled"]
[dependencies.rustc-hash]
version = "2.1"
[dependencies.semver]
version = "1.0"
features = ["serde"]
[dependencies.serde]
version = "1.0"
features = [
"derive",
"std",
]
default-features = false
[dependencies.serde_json]
version = "1.0"
features = ["std"]
default-features = false
[dependencies.serde_yaml]
version = "0.9"
[dependencies.sha2]
version = "0.10"
[dependencies.shell-words]
version = "1.1.0"
[dependencies.sourcemap]
version = "9.0"
optional = true
[dependencies.swc_common]
version = "14.0"
optional = true
[dependencies.swc_ecma_ast]
version = "15.0"
optional = true
[dependencies.swc_ecma_parser]
version = "24.0"
optional = true
[dependencies.swc_ecma_visit]
version = "15.0"
optional = true
[dependencies.syn]
version = "2.0"
features = [
"full",
"parsing",
"visit",
"extra-traits",
]
[dependencies.sys-info]
version = "0.9.1"
[dependencies.sysinfo]
version = "0.37"
[dependencies.tempfile]
version = "3.8"
[dependencies.thiserror]
version = "2.0"
[dependencies.tokio]
version = "1.48"
features = [
"rt-multi-thread",
"macros",
"net",
"io-util",
"fs",
"sync",
"time",
]
[dependencies.toml]
version = "0.8.23"
[dependencies.tower]
version = "0.5"
features = [
"util",
"timeout",
]
default-features = false
[dependencies.tower-http]
version = "0.6"
features = [
"trace",
"compression-gzip",
"timeout",
"cors",
]
default-features = false
[dependencies.tracing]
version = "0.1"
features = ["std"]
default-features = false
[dependencies.tracing-subscriber]
version = "0.3"
features = [
"env-filter",
"fmt",
"std",
]
default-features = false
[dependencies.tree-sitter]
version = "0.23"
optional = true
[dependencies.tree-sitter-c]
version = "0.23"
optional = true
[dependencies.tree-sitter-cpp]
version = "0.23"
optional = true
[dependencies.tree-sitter-go]
version = "0.23"
optional = true
[dependencies.tree-sitter-javascript]
version = "0.23"
optional = true
[dependencies.tree-sitter-kotlin-ng]
version = "1.1"
optional = true
[dependencies.tree-sitter-python]
version = "0.23"
optional = true
[dependencies.tree-sitter-rust]
version = "0.23"
optional = true
[dependencies.tree-sitter-typescript]
version = "0.23"
optional = true
[dependencies.trueno]
version = "0.14.0"
optional = true
[dependencies.trueno-db]
version = "0.3.11"
optional = true
default-features = false
[dependencies.trueno-graph]
version = "0.1.11"
[dependencies.trueno-rag]
version = "0.1.10"
[dependencies.trueno-viz]
version = "0.1.20"
features = [
"terminal",
"graph",
]
optional = true
[dependencies.trueno-zram-core]
version = "0.3"
optional = true
[dependencies.url]
version = "2.5"
[dependencies.uuid]
version = "1.17"
features = [
"v4",
"serde",
]
[dependencies.walkdir]
version = "2.5"
[dependencies.warp]
version = "0.3"
optional = true
[dependencies.wasmparser]
version = "0.239.0"
[dependencies.wgpu]
version = "24.0"
features = ["wgsl"]
optional = true
[dependencies.which]
version = "6.0"
[dependencies.xxhash-rust]
version = "0.8"
features = ["xxh64"]
[dev-dependencies.assert_cmd]
version = "2.0"
[dev-dependencies.criterion]
version = "0.6"
features = ["html_reports"]
[dev-dependencies.env_logger]
version = "0.11.8"
[dev-dependencies.futures-test]
version = "0.3"
[dev-dependencies.predicates]
version = "3.1"
[dev-dependencies.pretty_assertions]
version = "1.4"
[dev-dependencies.proptest]
version = "1.6"
[dev-dependencies.quickcheck]
version = "1.0"
[dev-dependencies.quickcheck_macros]
version = "1.0"
[dev-dependencies.reqwest]
version = "0.12"
features = [
"json",
"rustls-tls",
]
default-features = false
[dev-dependencies.serial_test]
version = "3.2"
[dev-dependencies.tempfile]
version = "3.20"
[dev-dependencies.tokio-test]
version = "0.4"
[dev-dependencies.tokio-util]
version = "0.7.18"
[build-dependencies.flate2]
version = "1.1"
[build-dependencies.hex]
version = "0.4"
[build-dependencies.serde]
version = "1.0"
features = ["derive"]
[build-dependencies.serde_json]
version = "1.0"
[build-dependencies.sha2]
version = "0.10"
[build-dependencies.ureq]
version = "3.0"
[lints.clippy]
checked_conversions = "warn"
expect_used = "allow"
unwrap_used = "warn"
[lints.clippy.complexity]
level = "warn"
priority = -1
[lints.clippy.correctness]
level = "deny"
priority = -1
[lints.clippy.pedantic]
level = "allow"
priority = -1
[lints.clippy.perf]
level = "warn"
priority = -1
[lints.clippy.style]
level = "warn"
priority = -1
[lints.clippy.suspicious]
level = "warn"
priority = -1
[lints.rust]
missing_docs = "allow"
unreachable_pub = "warn"
unsafe_op_in_unsafe_fn = "warn"
[profile.dist]
lto = "thin"
inherits = "release"
[profile.release]
opt-level = 3
lto = "thin"
codegen-units = 16
panic = "abort"
overflow-checks = false
strip = "symbols"
[profile.test]
opt-level = 0
lto = false
codegen-units = 256
incremental = true
[profile.test.package."*"]
opt-level = 0