chore: license AGPL-3.0, zero clippy warnings, CHANGELOG through v1.6.0

License:
- Replace MIT/Apache-2.0 with AGPL-3.0-only across all crates and npm packages
- Replace LICENSE file with official GNU AGPL-3.0 text
- Remove LICENSE-MIT and LICENSE-APACHE

Code quality:
- Fix all 44 clippy warnings (zero remaining)
- Collapsible if statements, redundant closures, manual Option::map
- Remove duplicate #[allow(dead_code)] attributes in deprecated tool modules
- Add Default impl for CognitiveEngine
- Replace manual sort_by with sort_by_key

Documentation:
- Update CHANGELOG with v1.2.0, v1.3.0, v1.5.0, v1.6.0 entries
- Update README with v1.6.0 highlights and accurate stats (52K lines, 1100+ tests)
- Add fastembed-rs/ to .gitignore
- Add fastembed-rs to workspace exclude

1115 tests passing, zero warnings, RUSTFLAGS="-Dwarnings" clean.
This commit is contained in:
Sam Valladares 2026-02-19 03:00:39 -06:00
parent 495a88331f
commit ce520bb246
40 changed files with 953 additions and 424 deletions

View file

@ -127,12 +127,12 @@ async fn execute_remember_pattern(
// Build content with structured format
let mut content = format!("# Code Pattern: {}\n\n{}", name, description);
if let Some(ref files) = args.files {
if !files.is_empty() {
content.push_str("\n\n## Files:\n");
for f in files {
content.push_str(&format!("- {}\n", f));
}
if let Some(ref files) = args.files
&& !files.is_empty()
{
content.push_str("\n\n## Files:\n");
for f in files {
content.push_str(&format!("- {}\n", f));
}
}
@ -211,21 +211,21 @@ async fn execute_remember_decision(
decision
);
if let Some(ref alternatives) = args.alternatives {
if !alternatives.is_empty() {
content.push_str("\n\n## Alternatives Considered:\n");
for alt in alternatives {
content.push_str(&format!("- {}\n", alt));
}
if let Some(ref alternatives) = args.alternatives
&& !alternatives.is_empty()
{
content.push_str("\n\n## Alternatives Considered:\n");
for alt in alternatives {
content.push_str(&format!("- {}\n", alt));
}
}
if let Some(ref files) = args.files {
if !files.is_empty() {
content.push_str("\n\n## Affected Files:\n");
for f in files {
content.push_str(&format!("- {}\n", f));
}
if let Some(ref files) = args.files
&& !files.is_empty()
{
content.push_str("\n\n## Affected Files:\n");
for f in files {
content.push_str(&format!("- {}\n", f));
}
}
@ -336,23 +336,23 @@ async fn execute_get_context(
// COGNITIVE: Cross-project knowledge discovery
// ====================================================================
let mut universal_patterns = Vec::new();
if let Some(codebase_name) = &args.codebase {
if let Ok(cog) = cognitive.try_lock() {
let context = vestige_core::advanced::cross_project::ProjectContext {
path: None,
name: Some(codebase_name.clone()),
languages: Vec::new(),
frameworks: Vec::new(),
file_types: std::collections::HashSet::new(),
dependencies: Vec::new(),
structure: Vec::new(),
};
let applicable = cog.cross_project.detect_applicable(&context);
for knowledge in applicable {
universal_patterns.push(serde_json::json!({
"pattern": format!("{:?}", knowledge),
}));
}
if let Some(codebase_name) = &args.codebase
&& let Ok(cog) = cognitive.try_lock()
{
let context = vestige_core::advanced::cross_project::ProjectContext {
path: None,
name: Some(codebase_name.clone()),
languages: Vec::new(),
frameworks: Vec::new(),
file_types: std::collections::HashSet::new(),
dependencies: Vec::new(),
structure: Vec::new(),
};
let applicable = cog.cross_project.detect_applicable(&context);
for knowledge in applicable {
universal_patterns.push(serde_json::json!({
"pattern": format!("{:?}", knowledge),
}));
}
}