1#![allow(unused_imports)] pub mod checker;
23pub mod crates_io;
24pub mod diagnostics;
25pub mod diagnostics_ml;
26pub mod drift;
27pub mod graph;
28pub mod hero_image;
29pub mod publish_status;
30pub mod quality;
31pub mod quality_checker;
32pub mod quality_format;
33pub mod releaser;
34pub mod releaser_preflight;
35pub mod releaser_types;
36pub mod tree;
37pub mod tui;
38pub mod types;
39
40pub use checker::StackChecker;
41pub use crates_io::CratesIoClient;
42pub use diagnostics::{
43 render_dashboard, AndonStatus, Anomaly, AnomalyCategory, ComponentMetrics, ComponentNode,
44 GraphMetrics, HealthStatus, HealthSummary, StackDiagnostics,
45};
46pub use diagnostics_ml::{ErrorForecaster, ForecastMetrics, IsolationForest};
47pub use drift::{format_drift_errors, format_drift_json, DriftChecker, DriftReport, DriftSeverity};
48pub use graph::DependencyGraph;
49pub use hero_image::{HeroImageResult, ImageFormat};
50pub use publish_status::{
51 format_report_json as format_publish_status_json,
52 format_report_text as format_publish_status_text, CrateStatus, PublishAction,
53 PublishStatusCache, PublishStatusReport, PublishStatusScanner,
54};
55pub use quality::{
56 ComponentQuality, QualityGrade, QualityIssue, QualitySummary, Score, StackLayer,
57 StackQualityReport,
58};
59pub use quality_checker::QualityChecker;
60pub use quality_format::{
61 format_report_json as format_quality_report_json,
62 format_report_text as format_quality_report_text,
63};
64pub use releaser_types::{format_plan_text, BumpType, ReleaseConfig, ReleaseResult, ReleasedCrate};
65pub use types::*;
66
67pub const PAIML_CRATES: &[&str] = &[
69 "trueno",
71 "trueno-viz",
72 "trueno-db",
73 "trueno-graph",
74 "trueno-rag",
75 "trueno-rag-cli",
76 "trueno-zram-core",
77 "trueno-ublk",
78 "trueno-cupti",
79 "cbtop",
80 "aprender",
82 "aprender-shell",
83 "aprender-tsp",
84 "realizar",
85 "alimentar",
86 "entrenar",
87 "renacer",
89 "repartir",
90 "pacha",
91 "duende",
92 "ttop",
93 "pzsh",
94 "forjar",
95 "simular",
97 "jugar",
98 "jugar-probar",
99 "manzana",
101 "pepita",
102 "wos",
103 "whisper-apr",
105 "certeza",
107 "provable-contracts",
108 "tiny-model-ground-truth",
109 "batuta",
110 "presentar",
111 "presentar-cli",
112 "presentar-core",
113 "ruchy",
114 "decy",
115 "depyler",
116 "pmat",
117 "bashrs",
119 "bashrs-runtime",
120 "bashrs-oracle",
121 "organizational-intelligence-plugin",
123 "sovereign-ai-stack-book",
125 "apr-cookbook",
126 "alm-cookbook",
127 "pres-cookbook",
128 "batuta-cookbook",
129 "qwen-train-canary",
131 "qwen-coder-deploy",
132];
133
134pub fn is_paiml_crate(name: &str) -> bool {
136 PAIML_CRATES.contains(&name)
137}
138
139#[cfg(test)]
140mod tests {
141 use super::*;
142
143 #[test]
144 fn test_paiml_crate_detection() {
145 assert!(is_paiml_crate("trueno"));
146 assert!(is_paiml_crate("aprender"));
147 assert!(is_paiml_crate("batuta"));
148 assert!(!is_paiml_crate("serde"));
149 assert!(!is_paiml_crate("tokio"));
150 assert!(!is_paiml_crate("arrow"));
151 }
152
153 #[test]
154 fn test_cookbook_detection() {
155 assert!(is_paiml_crate("apr-cookbook"));
156 assert!(is_paiml_crate("alm-cookbook"));
157 assert!(is_paiml_crate("pres-cookbook"));
158 assert!(is_paiml_crate("pmat"));
159 }
160
161 #[test]
162 fn test_new_stack_crates() {
163 assert!(is_paiml_crate("duende"));
165 assert!(is_paiml_crate("ttop"));
166 assert!(is_paiml_crate("forjar"));
167 assert!(is_paiml_crate("simular"));
169 assert!(is_paiml_crate("jugar"));
170 assert!(is_paiml_crate("jugar-probar"));
171 assert!(is_paiml_crate("manzana"));
173 assert!(is_paiml_crate("trueno-zram-core"));
175 assert!(is_paiml_crate("trueno-ublk"));
176 assert!(is_paiml_crate("trueno-cupti"));
178 assert!(is_paiml_crate("cbtop"));
179 assert!(is_paiml_crate("provable-contracts"));
181 assert!(is_paiml_crate("tiny-model-ground-truth"));
182 }
183
184 #[test]
185 fn test_paiml_crates_count() {
186 assert!(PAIML_CRATES.len() >= 47);
188 }
189}