Implement intelligent agent learning from Knowledge Graph execution history with per-task-type expertise tracking, recency bias, and learning curves. ## Phase 5.3 Implementation ### Learning Infrastructure (✅ Complete) - LearningProfileService with per-task-type expertise metrics - TaskTypeExpertise model tracking success_rate, confidence, learning curves - Recency bias weighting: recent 7 days weighted 3x higher (exponential decay) - Confidence scoring prevents overfitting: min(1.0, executions / 20) - Learning curves computed from daily execution windows ### Agent Scoring Service (✅ Complete) - Unified AgentScore combining SwarmCoordinator + learning profiles - Scoring formula: 0.3*base + 0.5*expertise + 0.2*confidence - Rank agents by combined score for intelligent assignment - Support for recency-biased scoring (recent_success_rate) - Methods: rank_agents, select_best, rank_agents_with_recency ### KG Integration (✅ Complete) - KGPersistence::get_executions_for_task_type() - query by agent + task type - KGPersistence::get_agent_executions() - all executions for agent - Coordinator::load_learning_profile_from_kg() - core KG→Learning integration - Coordinator::load_all_learning_profiles() - batch load for multiple agents - Convert PersistedExecution → ExecutionData for learning calculations ### Agent Assignment Integration (✅ Complete) - AgentCoordinator uses learning profiles for task assignment - extract_task_type() infers task type from title/description - assign_task() scores candidates using AgentScoringService - Fallback to load-based selection if no learning data available - Learning profiles stored in coordinator.learning_profiles RwLock ### Profile Adapter Enhancements (✅ Complete) - create_learning_profile() - initialize empty profiles - add_task_type_expertise() - set task-type expertise - update_profile_with_learning() - update swarm profiles from learning ## Files Modified ### vapora-knowledge-graph/src/persistence.rs (+30 lines) - get_executions_for_task_type(agent_id, task_type, limit) - get_agent_executions(agent_id, limit) ### vapora-agents/src/coordinator.rs (+100 lines) - load_learning_profile_from_kg() - core KG integration method - load_all_learning_profiles() - batch loading for agents - assign_task() already uses learning-based scoring via AgentScoringService ### Existing Complete Implementation - vapora-knowledge-graph/src/learning.rs - calculation functions - vapora-agents/src/learning_profile.rs - data structures and expertise - vapora-agents/src/scoring.rs - unified scoring service - vapora-agents/src/profile_adapter.rs - adapter methods ## Tests Passing - learning_profile: 7 tests ✅ - scoring: 5 tests ✅ - profile_adapter: 6 tests ✅ - coordinator: learning-specific tests ✅ ## Data Flow 1. Task arrives → AgentCoordinator::assign_task() 2. Extract task_type from description 3. Query KG for task-type executions (load_learning_profile_from_kg) 4. Calculate expertise with recency bias 5. Score candidates (SwarmCoordinator + learning) 6. Assign to top-scored agent 7. Execution result → KG → Update learning profiles ## Key Design Decisions ✅ Recency bias: 7-day half-life with 3x weight for recent performance ✅ Confidence scoring: min(1.0, total_executions / 20) prevents overfitting ✅ Hierarchical scoring: 30% base load, 50% expertise, 20% confidence ✅ KG query limit: 100 recent executions per task-type for performance ✅ Async loading: load_learning_profile_from_kg supports concurrent loads ## Next: Phase 5.4 - Cost Optimization Ready to implement budget enforcement and cost-aware provider selection.
7.1 KiB
🎨 Vapora Logo System
Complete branding system for Vapora with horizontal and vertical logo variations, comprehensive color specifications, and typography guidelines.
📂 Logo Files
Horizontal Logos
- vapora.svg - Main animated version with gradient colors and black background
- vapora_white.svg - Static version optimized for light backgrounds
- vapora_mono.svg - Monochromatic grayscale version for printing
- vapora_static.svg - Static version without animations (for PDFs, documents)
- vapora_favicon.svg - 64x64px compact favicon version
Vertical Logos
- vapora_v.svg - Main animated vertical version (image on top, text below)
- vapora_v_white.svg - Static vertical version for light backgrounds
- vapora_v_mono.svg - Monochromatic grayscale vertical version
- vapora_v_static.svg - Static vertical version without animations
- vapora_v_favicon.svg - 64x64px compact vertical favicon
🎯 Usage Guidelines
When to Use Each Variant
Horizontal Layout
- Websites and web applications (animated or static)
- Headers and hero sections
- Social media profiles
- Email signatures (static version)
Vertical Layout
- Profile pictures and avatars
- Vertical banners
- App icons
- Card layouts with constrained width
Color Variants
- Animated (Color): Digital products, interactive platforms, dynamic content
- White Background: Light-themed websites, printed materials on colored backgrounds
- Monochromatic: Professional documents, B&W printing, accessibility
- Static: PDFs, printed materials, documentation
- Favicon: Browser tabs, favicons, small UI elements
🎨 Brand Colors
Primary Color Palette
| Color | HTML | RGB | CMYK |
|---|---|---|---|
| Cyan | #22d3ee | rgb(34, 211, 238) | 86%, 11%, 0%, 7% |
| Purple | #a855f7 | rgb(168, 85, 247) | 32%, 66%, 0%, 3% |
| Pink | #ec4899 | rgb(236, 72, 153) | 0%, 70%, 35%, 8% |
| Black | #000000 | rgb(0, 0, 0) | 0%, 0%, 0%, 100% |
| White | #ffffff | rgb(255, 255, 255) | 0%, 0%, 0%, 0% |
Gradient: Cyan → Purple → Pink (horizontal transition)
📝 Typography
Main Logo Text
- Font Family: JetBrains Mono / Fira Code
- Style: Monospace
- Weight: 800 (Bold)
- Letter Spacing: 2-3px
- Text: VAPORA
Tagline
- Font Family: Inter
- Style: Sans-serif
- Size: 8px
- Letter Spacing: 0.1em
- Text: "Evaporate complexity"
Font Loading (Google Fonts)
To ensure JetBrains Mono is always available, all SVG files use Google Fonts CDN:
In SVG files:
<defs>
<style>
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@800&display=swap');
</style>
</defs>
In HTML files:
<head>
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@800&display=swap" rel="stylesheet">
</head>
This guarantees the font loads properly even if users don't have JetBrains Mono installed locally. The display=swap parameter ensures text displays immediately with fallback fonts while the custom font loads.
📊 Technical Specifications
SVG Properties
- Scalable Vector Graphics format
- Responsive: Scales to any size without quality loss
- ViewBox: Proportional scaling using viewBox attributes
- preserveAspectRatio: xMidYMid meet (maintains aspect ratio)
Animation Details
- Animated versions: Stroke animations, particle movements, pulsing effects
- Static versions: Same design without motion
- Performance: Lightweight SVG files optimized for web
🌐 Interactive Preview
For a comprehensive, interactive preview of all logo variants with:
- Color palette with one-click copy functionality
- Typography specifications
- Detailed size examples
- Responsive grid layout
Visit: vapora_logo.html
💾 File Sizes & Formats
All logos are available as SVG files (scalable vector graphics):
- Small: 5-15 KB per file
- Format: SVG + inline styles
- Browser Support: All modern browsers (Chrome, Firefox, Safari, Edge)
🎭 Color Modes
Light Mode (vapora_white.svg family)
- White background (#ffffff)
- All gradient colors maintained
- Best for: Light-themed interfaces
Dark Mode (vapora.svg family)
- Black background (#000000)
- Full color gradients with glow effects
- Best for: Dark-themed interfaces
Print & Professional (vapora_mono.svg family)
- Black background with grayscale colors
- Best for: Printing, official documents
- CMYK values provided for print production
🚀 Implementation Tips
Web Usage
<!-- Horizontal animated -->
<img src="./vapora.svg" alt="Vapora Logo">
<!-- Vertical for avatars -->
<img src="./vapora_v.svg" alt="Vapora Logo Vertical">
<!-- Static for static content -->
<img src="./vapora_static.svg" alt="Vapora Logo">
Responsive Sizing
- Mobile: Use favicon or small scale (64-128px)
- Tablet: Medium scale (200-400px)
- Desktop: Full scale (400px+)
- All SVG files scale infinitely without quality loss
Print Production
- Use
vapora_mono.svgfor B&W printing - Use CMYK color values for print preparation
- Ensure minimum 50px height for small prints
- Use static versions (no animations) for PDFs
Font Implementation in Your Project
To integrate Vapora logos in your project and ensure fonts work correctly:
Option 1: Link in HTML (Recommended)
<!-- In your HTML head -->
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@800&display=swap" rel="stylesheet">
<!-- SVGs will automatically use the loaded font -->
<img src="./vapora.svg" alt="Vapora">
Option 2: Import in CSS
/* In your main CSS file */
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@800&display=swap');
Option 3: Direct in SVG (Already included)
<!-- SVG files already include this -->
<style>
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@800&display=swap');
</style>
Font Parameters:
family=JetBrains+Mono- Font name (URL-encoded)wght@800- Weight (800 = Bold)display=swap- Shows fallback text immediately, swaps when font loads
📋 Brand Assets Checklist
- Horizontal logo (animated)
- Horizontal logo (static)
- Vertical logo (animated)
- Vertical logo (static)
- Light background variant
- Monochromatic variant
- Favicon variants
- Color specifications (HTML, RGB, CMYK)
- Typography guidelines
- Interactive preview page
📍 File Location
This README and all brand assets are located in:
vapora/
└── assets/
├── README.md (this file)
├── vapora_logo.html (interactive preview)
├── vapora.svg (and other logo files)
└── ...
📞 Support
For questions about logo usage or brand guidelines, refer to the interactive preview page:
Open the Logo Preview
- Navigate to the
imgsfolder - Open vapora_logo.html in your browser
- Click on any logo to view it in full-screen
Direct URL: ./vapora_logo.html
Last Updated: November 2025 Brand: Vapora - Evaporate complexity