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.
243 lines
7.1 KiB
Markdown
243 lines
7.1 KiB
Markdown
# 🎨 Vapora Logo System
|
|
|
|
<img src="vapora.svg" alt="Vapora Logo" width="400">
|
|
|
|
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:**
|
|
```xml
|
|
<defs>
|
|
<style>
|
|
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@800&display=swap');
|
|
</style>
|
|
</defs>
|
|
```
|
|
|
|
**In HTML files:**
|
|
```html
|
|
<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](./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
|
|
```html
|
|
<!-- 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
|
|
1. Use `vapora_mono.svg` for B&W printing
|
|
2. Use CMYK color values for print preparation
|
|
3. Ensure minimum 50px height for small prints
|
|
4. 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)**
|
|
```html
|
|
<!-- 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**
|
|
```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)**
|
|
```xml
|
|
<!-- 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
|
|
|
|
- [x] Horizontal logo (animated)
|
|
- [x] Horizontal logo (static)
|
|
- [x] Vertical logo (animated)
|
|
- [x] Vertical logo (static)
|
|
- [x] Light background variant
|
|
- [x] Monochromatic variant
|
|
- [x] Favicon variants
|
|
- [x] Color specifications (HTML, RGB, CMYK)
|
|
- [x] Typography guidelines
|
|
- [x] 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
|
|
1. Navigate to the `imgs` folder
|
|
2. Open **[vapora_logo.html](./vapora_logo.html)** in your browser
|
|
3. Click on any logo to view it in full-screen
|
|
|
|
**Direct URL**: `./vapora_logo.html`
|
|
|
|
---
|
|
|
|
**Last Updated**: November 2025
|
|
**Brand**: Vapora - Evaporate complexity
|