Prepare for open source release: Fix compilation errors and update dependencies#192
Prepare for open source release: Fix compilation errors and update dependencies#192133 commits merged into
Conversation
- Fix Axum route parameter syntax: change :param to {param} format for v0.8 compatibility
- Fix pulldown-cmark Tag::Link syntax for v0.13.0 compatibility in markdown parser
- Update Cargo.lock with proper dependency versions
- Server now starts successfully without routing panic
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Downgrade tauri-build from v2.2.0 to v1.5.6 to resolve configuration compatibility - Fixes "unknown field devPath" error when building desktop app - All Tauri dependencies now on stable v1.x versions - Desktop app compilation now works without configuration errors 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: AlexMikhalev <alex@metacortex.engineer>
…erformance fixes
## Complete AI Agent Orchestration System
- ✅ **AgentEvolutionSystem**: Central coordinator for agent development tracking
- ✅ **5 AI Workflow Patterns**: Prompt Chaining, Routing, Parallelization, Orchestrator-Workers, Evaluator-Optimizer
- ✅ **Evolution Tracking**: Versioned memory, tasks, and lessons with time-based snapshots
- ✅ **Integration Layer**: Seamless workflow + evolution coordination
## Security Hardening & Quality Improvements
- 🛡️ **Input Validation**: Comprehensive validation for all user-facing APIs (prompt length limits, memory size limits, provider validation)
- 🛡️ **Prompt Injection Protection**: Basic detection for common injection patterns with warning logs
- 🛡️ **Proper Error Handling**: Replaced 22+ unsafe .unwrap() calls with proper error propagation
- 🛡️ **InvalidInput Error Type**: Added new error variant for validation failures
## Performance Optimizations
- ⚡ **Safe Duration Arithmetic**: Fixed chrono-to-std duration conversion preventing panics and overflow
- ⚡ **Parallel Async Operations**: Concurrent saves using futures::try_join! for evolution snapshots
- ⚡ **Memory Leak Prevention**: Input validation prevents resource exhaustion attacks
## Critical Bug Fixes
- 🐛 **Test Failures Fixed**: All 40 unit tests now pass (MockLlmAdapter provider_name, memory consolidation logic, action type determination)
- 🐛 **Compilation Errors Resolved**: Fixed all compilation issues and added missing error types
- 🐛 **Type Safety Improvements**: Fixed duration arithmetic, string conversions, and trait implementations
## Comprehensive Documentation & Testing
- 📚 **Architecture Documentation**: Complete system overview with 15+ mermaid diagrams
- 📚 **API Reference**: Comprehensive documentation for all public interfaces
- 📚 **Testing Matrix**: End-to-end test coverage for all 5 workflow patterns
- 📚 **Workflow Patterns Guide**: Detailed implementation guide with examples
## System Architecture
```
User Request → Task Analysis → Pattern Selection → Workflow Execution → Evolution Update
↓ ↓ ↓ ↓ ↓
Complex Task → TaskAnalysis → Best Workflow → Execution Steps → Memory/Tasks/Lessons
```
## Production Ready Features
- **Async/Concurrent**: Full tokio-based implementation with proper error handling
- **Type Safety**: Comprehensive Rust type system usage with custom error types
- **Extensible**: Easy to add new patterns and LLM providers
- **Observable**: Logging, metrics, and evolution tracking
- **Defensive Programming**: OWASP Top 10 compliance and input validation
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: AlexMikhalev <alex@metacortex.engineer>
…ement ## Major Features Added ### 🤖 AI Agent Workflow System (5 Patterns) - **Prompt Chaining**: Step-by-step development workflow with pipeline visualization - **Routing**: Intelligent model selection based on task complexity analysis - **Parallelization**: Multi-perspective analysis with concurrent agent execution - **Orchestrator-Workers**: Hierarchical task decomposition for data science pipelines - **Evaluator-Optimizer**: Iterative content improvement through evaluation cycles ### ⚙️ Settings Management Infrastructure - **Auto-Discovery**: Automatically finds Terraphim servers on common ports (8000-8005) - **Dynamic Configuration**: Real-time server switching without page reload - **Profile Management**: Save/load multiple server configurations - **Keyboard Shortcut**: Ctrl+, opens settings modal across all examples - **Graceful Fallback**: Works with default settings when integration fails ### 🌐 WebSocket Integration - **Real-time Updates**: Live workflow progress via WebSocket connections - **Connection Status**: Visual connection state with auto-reconnect - **Broadcast System**: Server pushes workflow updates to all connected clients - **Session Management**: Track multiple concurrent workflow executions ### 🔧 Backend Implementation - **Workflow Router**: RESTful endpoints for all 5 workflow patterns - **Session Tracking**: Monitor workflow progress and execution traces - **WebSocket Handler**: Real-time communication with frontend clients - **Error Handling**: Comprehensive error management and status reporting ## Technical Improvements ### Frontend Architecture - **Modular Design**: Shared components across all workflow examples - **Async Initialization**: Proper async/await patterns for settings loading - **Dynamic API Client**: Runtime configuration updates with retry logic - **Responsive UI**: Mobile-first design with consistent styling ### Backend Architecture - **Axum Integration**: Modern async web framework with WebSocket support - **Workflow Sessions**: Arc<RwLock<HashMap>> for concurrent session management - **Broadcast Channels**: tokio::sync::broadcast for real-time updates - **Structured Logging**: Comprehensive error tracking and debugging ## Bug Fixes - Fixed WebSocket initialization order causing "not available" errors - Fixed Ctrl+, keyboard shortcut not working due to async initialization - Fixed port configuration from 3000 to 8000 for proper server communication - Fixed API client creation timing in settings integration ## Examples Structure ``` examples/agent-workflows/ ├── shared/ # Common components │ ├── api-client.js # Enhanced with dynamic config │ ├── settings-*.js # Complete settings management │ └── websocket-client.js # Real-time communication ├── 1-prompt-chaining/ # Interactive coding workflow ├── 2-routing/ # Smart model selection ├── 3-parallelization/ # Multi-agent analysis ├── 4-orchestrator-workers/# Data science pipeline └── 5-evaluator-optimizer/ # Content optimization ``` 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Fix missing fields in Role struct initialization (E0063) * Add missing OpenRouter fields with feature gates * Add required 'extra' field with AHashMap::new() * Update imports to include ahash::AHashMap - Add missing 'dyn' keyword for trait objects (E0782) * Fix Arc<StateManager> to Arc<dyn StateManager> * Update lifecycle and runtime modules - Fix absurd comparisons that are always true * Replace >= 0 checks on .len() results with descriptive comments * Remove clippy warnings about impossible conditions - Clean up unused imports * Remove unused serde_json::Value imports * Keep only necessary import statements All pre-commit checks now pass successfully.
Signed-off-by: AlexMikhalev <alex@metacortex.engineer>
Implement complete multi-agent system integration transforming Terraphim from mock workflows to real AI execution: **Backend Multi-Agent Integration:** • MultiAgentWorkflowExecutor bridges HTTP endpoints to TerraphimAgent system • All 5 workflow patterns (prompt-chain, routing, parallel, orchestration, optimization) use real agents • Professional LLM integration with Rig framework, token tracking, and cost monitoring • Knowledge graph intelligence through RoleGraph and AutocompleteIndex integration • Individual agent evolution with memory, tasks, and lessons tracking **Frontend Integration:** • All workflow examples updated from simulateWorkflow() to real API calls • Real-time WebSocket integration for live progress updates • Professional error handling with graceful fallback mechanisms • Role configuration and parameter passing to backend agents **Comprehensive Testing Infrastructure:** • Interactive test suite (test-all-workflows.html) for manual and automated validation • Browser automation tests with Playwright for end-to-end testing • Complete validation script with dependency management and reporting • API endpoint testing with real workflow execution **Complete Multi-Agent Architecture:** • TerraphimAgent with Role integration and Rig LLM client • 5 intelligent command processors (Generate, Answer, Analyze, Create, Review) • Context management with relevance filtering and token-aware truncation • Complete resource tracking (TokenUsageTracker, CostTracker, CommandHistory) • Agent registry with capability mapping and discovery • Production-ready persistence integration with DeviceStorage **Technical Achievements:** • 20+ comprehensive tests with 100% pass rate across all system components • Real Ollama LLM integration using gemma2:2b/gemma3:270m models • Smart context enrichment with get_enriched_context_for_query() implementation • Multi-layered context injection with graph, memory, and role data • Professional error handling and WebSocket-based progress monitoring System successfully transforms from role-based search to fully autonomous multi-agent AI platform with production-ready deployment capabilities.
- Fixed Rust version requirement to 1.87 in desktop/src-tauri - Integrated rig-core 0.14.0 which has Ollama support but avoids let-chains issues - Updated LlmAgent enum with correct completion model types for each provider - Fixed Ollama client initialization using Client::new() and Client::from_url() APIs - All test configurations use Ollama with gemma3:270m model for local testing - Fixed clippy warnings for better code quality - Multi-agent coordination example compiles and runs successfully 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
…ents are always used
Signed-off-by: AlexMikhalev <alex@metacortex.engineer>
…anagement - Add terraphim_onepassword_cli crate (v0.2.0) with SecretLoader trait - Enhance terraphim_settings with onepassword feature and load_with_onepassword() - Add 4 new Tauri commands for 1Password GUI integration - Create complete configuration template set (env, settings, server, Tauri) - Add vault setup script with bash 3.2 compatibility - Create CI/CD workflow template with 1Password service accounts - Add comprehensive documentation and validation framework - All 27 validation tests passing, full compilation success Implements three-vault architecture (Dev/Prod/Shared) with dual integration methods (process memory injection vs secure file injection). Provides zero-hardcoded-secrets solution with complete audit trail and backwards compatibility.
…lation issues - Remove terraphim_gen_agent experimental OTP GenServer-inspired framework - Fix unused import warnings in workflow modules - Resolve type mismatch errors in multi-agent handlers - Clean up dependencies in agent_registry, kg_agents, goal_alignment, and agent_application crates - Fix WebSocket workflow parameter handling for prompt chaining - Add Playwright test screenshots for agent workflow examples - Ensure main workspace compiles successfully with working agent examples
Bumps [rollup-plugin-css-only](https://github.com/thgh/rollup-plugin-css-only) from 4.5.2 to 4.5.5. - [Release notes](https://github.com/thgh/rollup-plugin-css-only/releases) - [Changelog](https://github.com/thgh/rollup-plugin-css-only/blob/v4/CHANGELOG.md) - [Commits](thgh/rollup-plugin-css-only@v4.5.2...v4.5.5) --- updated-dependencies: - dependency-name: rollup-plugin-css-only dependency-version: 4.5.5 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
- Fix trailing whitespace in 1Password CI workflow template - Clean up formatting in setup and validation scripts - Update settings template formatting - Update frontend assets after latest build
- Fix duplicate button IDs causing event handler conflicts - Add missing DOM elements for prototype rendering (output-frame, results-container) - Initialize outputFrame reference in demo object - Fix WorkflowVisualizer constructor to use proper container ID - Correct step ID references in workflow progression - Enable Generate Prototype button after successful task analysis - Ensure end-to-end workflow completion with Ollama local models
Add comprehensive weighted haystack ranking system that allows prioritizing documents from different data sources based on configurable weights. Core Changes: - Add source_haystack field to Document type to track document origin - Add weight field to Haystack config (default 1.0) for ranking priority - Implement apply_haystack_weights() in TerraphimService to multiply document ranks by their haystack weights during search Test Infrastructure: - Add weighted_haystack_ranking_test with two test cases: * Verifies high-weight local docs rank above low-weight remote docs * Confirms documents without source maintain original rank - Fix 60+ test files across workspace with missing field additions Configuration: - Update .pre-commit-config.yaml to exclude 1Password template files - Add pragma comments to template files for secret detection Impact: Enables intelligent result prioritization where trusted local sources (weight=3.0) rank higher than slower remote APIs (weight=0.5), improving search relevance and user experience for multi-haystack configurations.
Completed comprehensive testing of all 5 workflow examples to confirm they use real LLM integration with Ollama (llama3.2:3b) rather than hardcoded responses: ✅ 1-prompt-chaining: Multi-step development workflow with role-based agents ✅ 2-routing: Task complexity analysis and model selection ✅ 3-parallelization: Multi-perspective parallel analysis with unique outputs ✅ 4-orchestrator-workers: Hierarchical task decomposition and worker coordination ✅ 5-evaluator-optimizer: Iterative content generation with quality metrics Key evidence of real LLM usage: - Unique workflow IDs for each execution - Context-aware responses matching specific prompts - Dynamic quality metrics and confidence scores - Progressive workflow state transitions - Distinct perspective-based outputs with varying confidence levels All workflows successfully demonstrate proper prompt and context passing to Ollama LLM models, confirming no hardcoded response patterns. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Terraphim AI <ai@terraphim.ai>
BREAKING CHANGE: Updated all route parameters from :param to {param} syntax for Axum 0.8 compatibility
## Changes
### OpenRouter Integration (v1.1.2)
- ✅ Enable OpenRouter by default in terraphim_server (alongside Ollama)
- ✅ Update all tests to use real OpenRouter API with free models
- ✅ All 7/7 integration tests passing with real API calls
- ✅ Verified free models: llama-3.3-8b, deepseek-chat-v3.1, mistral-small-3.2
### Critical Server Fix
- 🐛 Fix Axum 0.8 route parameter syntax (20+ routes updated)
- Changed from '/conversations/:id' to '/conversations/{id}'
- Fixed all path parameters across the entire server
- Server now starts without panic
### End-to-End Testing
- ✅ Created comprehensive E2E test scripts
- ✅ Verified full workflow: search → summarize → display
- ✅ Summaries correctly appear in frontend
- ✅ Both Ollama and OpenRouter providers working
### Test Results
- openrouter_integration_test.rs: 7/7 passing
- proof_summarization_works.rs: 1/1 passing
- complete_summarization_workflow_test.rs: 3/3 passing
- E2E test: All steps passing
### Documentation
- Added comprehensive OPENROUTER_TESTING_PLAN.md
- Updated @memories.md and @scratchpad.md
- Created E2E test scripts for validation
Fixes server startup panic with Axum 0.8
Enables OpenRouter by default for better LLM provider options
Validates full summarization workflow end-to-end
- Remove haystack_jmap, haystack_atlassian, haystack_core from workspace - These crates don't exist in the repository - Fixes cargo fmt check failure in CI
Compilation fixes are now committed in firecracker-rust repo. Rsync already excludes target folder for faster transfers. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Ensures removed files (like llm.rs) are deleted on bigbox during transfer. Without this flag, old broken files remain on the remote server. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
All paths now point to /home/alex/infrastructure/terraphim-private-cloud-new/ for isolated testing before production deployment. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Downgrade wiremock from 0.6.5 to 0.6.4 - Version 0.6.5 uses unstable let expressions requiring nightly - Fixes CI compilation errors on stable Rust
There was a problem hiding this comment.
Pull Request Overview
Copilot reviewed 75 out of 682 changed files in this pull request and generated no new comments.
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
There was a problem hiding this comment.
Pull Request Overview
Copilot reviewed 75 out of 682 changed files in this pull request and generated 4 comments.
Comments suppressed due to low confidence (1)
crates/terraphim_agent_application/src/diagnostics.rs:1
- This code iterates through the history twice - once for the
is_empty()check and once for the sum. Consider usinghistory.first()check or combining the operations to avoid the extra iteration.
//! System diagnostics and health monitoring
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
|
|
||
| // Special handling for quality score requests | ||
| if (prompt.contains("Rate the quality") && prompt.contains("0.0 to 1.0")) | ||
| || (prompt.to_lowercase().contains("overall quality score") |
There was a problem hiding this comment.
The prompt.to_lowercase() call is expensive and called multiple times. Consider creating it once at the beginning of the method and reusing it.
| || (prompt.to_lowercase().contains("overall quality score") | |
| || (prompt_lower.contains("overall quality score") |
| return Err(crate::error::EvolutionError::InvalidInput( | ||
| "Memory ID cannot be empty".to_string(), | ||
| )); |
There was a problem hiding this comment.
Consider using string literals instead of .to_string() for static error messages, or define error constants to avoid repeated allocations and improve maintainability.
| content: format!( | ||
| "Completed task in {} domain: {}", | ||
| task_analysis.domain, workflow_output.result | ||
| ), |
There was a problem hiding this comment.
The workflow_output.result is being directly interpolated into content without sanitization. Consider validating or sanitizing this input to prevent potential injection of malicious content into memory items.
| // Add default configuration | ||
| let default_config = ApplicationConfig::default(); | ||
| let default_toml = toml::to_string(&default_config) | ||
| .map_err(|e| ApplicationError::ConfigurationError(e.to_string()))?; | ||
|
|
||
| config_builder = config_builder.add_source(config::File::from_str( | ||
| &default_toml, | ||
| config::FileFormat::Toml, | ||
| )); |
There was a problem hiding this comment.
Serializing the default config to TOML string just to parse it back is inefficient. Consider using the config builder's default values directly or using set_default methods instead of this round-trip conversion.
| // Add default configuration | |
| let default_config = ApplicationConfig::default(); | |
| let default_toml = toml::to_string(&default_config) | |
| .map_err(|e| ApplicationError::ConfigurationError(e.to_string()))?; | |
| config_builder = config_builder.add_source(config::File::from_str( | |
| &default_toml, | |
| config::FileFormat::Toml, | |
| )); | |
| // Add default configuration using set_default | |
| config_builder = config_builder | |
| .set_default("application.name", "terraphim-agent-system")? | |
| .set_default("application.version", "0.1.0")? | |
| .set_default("hot_reload.enabled", true)? | |
| .set_default("hot_reload.interval_seconds", 2)? | |
| .set_default("supervision.enable_monitoring", true)? | |
| .set_default("supervision.monitor_interval_seconds", 10)?; |
There was a problem hiding this comment.
Pull Request Overview
Copilot reviewed 75 out of 682 changed files in this pull request and generated 2 comments.
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| if self.short_term.len() > 100 { | ||
| self.short_term.remove(0); | ||
| } |
There was a problem hiding this comment.
Using remove(0) on a Vec is O(n) operation as it requires shifting all remaining elements. Consider using a VecDeque or implementing a circular buffer for better performance when managing bounded collections."
| } | ||
|
|
||
| // Remove duplicates | ||
| lessons.dedup_by(|a, b| a.id == b.id); |
There was a problem hiding this comment.
dedup_by only removes consecutive duplicates. For removing all duplicates, consider using a HashSet to collect unique lesson IDs first, or sort by ID before deduplication to ensure all duplicates are consecutive."
There was a problem hiding this comment.
Pull Request Overview
Copilot reviewed 75 out of 682 changed files in this pull request and generated 4 comments.
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| @@ -0,0 +1,601 @@ | |||
| //! Agent memory evolution tracking with time-based versioning | |||
There was a problem hiding this comment.
The file is missing module-level documentation explaining the core concepts and usage patterns. Consider adding examples of how the memory evolution system integrates with agents."
| //! Agent memory evolution tracking with time-based versioning | |
| //! # Memory Evolution System | |
| //! | |
| //! This module provides a time-based versioned memory evolution system for agents. | |
| //! It enables agents to track, update, and persist their memory states over time, | |
| //! supporting both short-term and long-term memory, episodic and semantic memory, | |
| //! and metadata for advanced reasoning. | |
| //! | |
| //! ## Core Concepts | |
| //! - **MemoryEvolution**: Tracks the memory state of an agent, including history. | |
| //! - **MemoryState**: Represents the current state, with short-term, long-term, working, episodic, and semantic memory. | |
| //! - **MemoryItem**: Individual memory entries, with type, content, timestamps, and associations. | |
| //! - **Versioning**: Each update to memory is timestamped and stored in history for audit and rollback. | |
| //! | |
| //! ## Usage Patterns | |
| //! 1. **Create a MemoryEvolution for an agent:** | |
| //! ``` | |
| //! use terraphim_agent_evolution::memory::{MemoryEvolution, MemoryItem, MemoryItemType}; | |
| //! let agent_id = AgentId::new("agent_123"); | |
| //! let mut mem_evo = MemoryEvolution::new(agent_id); | |
| //! ``` | |
| //! 2. **Add a memory item:** | |
| //! ``` | |
| //! let memory = MemoryItem { | |
| //! id: "mem_001".to_string(), | |
| //! item_type: MemoryItemType::Observation, | |
| //! content: "Agent observed a new object.".to_string(), | |
| //! created_at: Utc::now(), | |
| //! last_accessed: None, | |
| //! access_count: 0, | |
| //! importance: ImportanceLevel::Medium, | |
| //! tags: vec!["observation".to_string()], | |
| //! associations: HashMap::new(), | |
| //! }; | |
| //! mem_evo.add_memory(memory).await?; | |
| //! ``` | |
| //! 3. **Record a step result:** | |
| //! ``` | |
| //! mem_evo.record_step_result("step_42", "success").await?; | |
| //! ``` | |
| //! 4. **Access memory history:** | |
| //! ``` | |
| //! for (timestamp, state) in &mem_evo.history { | |
| //! println!("At {}: {:?}", timestamp, state); | |
| //! } | |
| //! ``` | |
| //! | |
| //! ## Integration with Agents | |
| //! - Each agent should have a unique `AgentId` and an associated `MemoryEvolution` instance. | |
| //! - Use the provided async methods to update and query memory as the agent acts and learns. | |
| //! - Persist memory states as needed using the `Persistable` trait. | |
| //! | |
| //! ## Error Handling | |
| //! - All mutation methods return `EvolutionResult`, which encapsulates success or `EvolutionError`. | |
| //! | |
| //! ## Example | |
| //! See above usage patterns for typical integration in agent workflows. |
| pub fn update_success_rate(&mut self, evidence: &Evidence) { | ||
| let weight = 0.2; // How much new evidence affects the rate |
There was a problem hiding this comment.
The hard-coded weight value (0.2) should be configurable or at least defined as a module-level constant to improve maintainability."
| let default_config = ApplicationConfig::default(); | ||
| let default_toml = toml::to_string(&default_config) | ||
| .map_err(|e| ApplicationError::ConfigurationError(e.to_string()))?; |
There was a problem hiding this comment.
Serializing the default configuration to TOML on every load is inefficient. Consider caching the serialized default configuration or using a static string."
| if history.len() > 100 { | ||
| history.remove(0); | ||
| } |
There was a problem hiding this comment.
The history limit (100) is a magic number. This should be configurable through the HotReloadConfig or defined as a constant."
There was a problem hiding this comment.
Pull Request Overview
Copilot reviewed 75 out of 684 changed files in this pull request and generated 2 comments.
Comments suppressed due to low confidence (1)
crates/terraphim_agent_evolution/src/integration.rs:1
- Same issue as in lessons.rs - using
remove(0)on Vec is O(n). Consider using VecDeque for efficient front removal or implementing a sliding window pattern.
//! Integration module for connecting workflows with the agent evolution system
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| if lesson.contexts.len() > 10 { | ||
| lesson.contexts.remove(0); | ||
| } |
There was a problem hiding this comment.
Using remove(0) on a Vec is inefficient as it requires shifting all remaining elements. Consider using a VecDeque or implementing a circular buffer pattern for better performance.
| if history.len() > 100 { | ||
| history.remove(0); | ||
| } |
There was a problem hiding this comment.
Same performance issue with Vec::remove(0). Consider implementing a reusable bounded history collection that uses VecDeque internally.
There was a problem hiding this comment.
Pull Request Overview
Copilot reviewed 81 out of 714 changed files in this pull request and generated 3 comments.
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
|
|
||
| /// Update success rate based on evidence | ||
| pub fn update_success_rate(&mut self, evidence: &Evidence) { | ||
| let weight = 0.2; // How much new evidence affects the rate |
There was a problem hiding this comment.
Magic number should be extracted as a configurable constant or parameter rather than hardcoded."
| let complexity = if prompt.len() > 2000 { | ||
| crate::workflows::TaskComplexity::VeryComplex | ||
| } else if prompt.len() > 1000 { | ||
| crate::workflows::TaskComplexity::Complex | ||
| } else if prompt.len() > 500 { | ||
| crate::workflows::TaskComplexity::Moderate | ||
| } else { | ||
| crate::workflows::TaskComplexity::Simple | ||
| }; |
There was a problem hiding this comment.
Task complexity thresholds are hardcoded magic numbers that should be configurable constants."
| } | ||
|
|
||
| let watch_paths = config.hot_reload.watch_paths.clone(); | ||
| drop(config); |
There was a problem hiding this comment.
[nitpick] Explicit drop is unnecessary here as the variable would go out of scope naturally. This makes the code less readable."
| drop(config); |
Summary
This PR prepares the terraphim-ai project for open source release by resolving critical compilation errors and modernizing dependencies.
🎯 Key Changes
Fixed Issues
Modernization
📊 Test Results
🔍 Known Issues Documented
✅ Ready for Review
The project now compiles successfully and core functionality is working. Remaining issues are documented in GitHub issues for follow-up.
Test Plan
🤖 Generated with Claude Code