agentic_codebase/collective/
mod.rs1pub mod delta;
7pub mod patterns;
8pub mod privacy;
9pub mod registry;
10
11pub use delta::{CollectiveDelta, DeltaPattern, MistakeCategory, MistakeReport};
12pub use patterns::{
13 ComplexityBucket, PatternCategory, PatternExtractor, PatternQuality, PatternSignature,
14 UsagePattern,
15};
16pub use privacy::{filter_shareable, is_shareable, NonShareable, Shareable, ShareableCheck};
17pub use registry::{CollectiveCache, RegistryClient, RegistryMode};
18
19#[derive(Debug)]
24pub struct CollectiveManager {
25 registry: RegistryClient,
27 extractor: PatternExtractor,
29}
30
31impl CollectiveManager {
32 pub fn offline() -> Self {
34 Self {
35 registry: RegistryClient::offline(),
36 extractor: PatternExtractor::new(),
37 }
38 }
39
40 pub fn online(endpoint: String) -> Self {
42 Self {
43 registry: RegistryClient::online(endpoint),
44 extractor: PatternExtractor::new(),
45 }
46 }
47
48 pub fn mode(&self) -> &RegistryMode {
50 self.registry.mode()
51 }
52
53 pub fn is_offline(&self) -> bool {
55 *self.registry.mode() == RegistryMode::Offline
56 }
57
58 pub fn extract_patterns(&self, graph: &crate::graph::CodeGraph) -> Vec<UsagePattern> {
60 self.extractor.extract(graph)
61 }
62
63 pub fn query_patterns(&mut self, language: &str, category: &str) -> Vec<UsagePattern> {
65 self.registry.query_patterns(language, category)
66 }
67
68 pub fn publish_delta(&mut self, delta: &CollectiveDelta) -> bool {
70 self.registry.publish_delta(delta)
71 }
72
73 pub fn registry(&self) -> &RegistryClient {
75 &self.registry
76 }
77
78 pub fn registry_mut(&mut self) -> &mut RegistryClient {
80 &mut self.registry
81 }
82}