Rename Auto Tasks to Tasks, fix SVG with proper PROMPT.md guidelines

This commit is contained in:
Rodrigo Rodriguez (Pragmatismo) 2025-12-12 23:34:30 -03:00
parent d1dec9fe29
commit 89eef18cf6
9 changed files with 921 additions and 352 deletions

View file

@ -31,7 +31,7 @@ http://localhost:8080/console → Terminal mode
|-----|---------|
| Chat | AI assistant conversations |
| Drive | File management |
| Auto Tasks | LLM-powered intelligent execution |
| Tasks | LLM-powered intelligent execution |
| Mail | Email client |
| Calendar | Scheduling |
| Meet | Video calls |

View file

@ -12,7 +12,7 @@ Click any app icon in the top-right menu (⋮⋮⋮) to open it.
|-----|--------------|
| 💬 **Chat** | Talk to your AI assistant |
| 📁 **Drive** | Store and organize your files |
| ⚡ **Auto Tasks** | LLM-powered intelligent task execution |
| ⚡ **Tasks** | LLM-powered intelligent task execution |
| ✉ **Mail** | Send and receive emails |
| 📅 **Calendar** | Schedule meetings and events |
| 🎥 **Meet** | Video calls with your team |
@ -38,7 +38,7 @@ Click any app icon in the top-right menu (⋮⋮⋮) to open it.
|-------|-------|
| `Alt + 1` | Chat |
| `Alt + 2` | Drive |
| `Alt + 3` | Auto Tasks |
| `Alt + 3` | Tasks |
| `Alt + 4` | Mail |
| `Alt + 5` | Calendar |
| `Alt + 6` | Meet |
@ -59,7 +59,7 @@ Learn more about each app:
- [Chat](./chat.md) - Talk to your AI assistant
- [Drive](./drive.md) - Manage your files
- [Auto Tasks](./tasks.md) - LLM-powered intelligent execution
- [Tasks](./tasks.md) - LLM-powered intelligent execution
- [Mail](./mail.md) - Handle your email
- [Calendar](./calendar.md) - Manage your schedule
- [Meet](./meet.md) - Join video calls

View file

@ -22,7 +22,7 @@ The Suite includes integrated applications:
|-----|---------|
| 💬 Chat | AI assistant conversations |
| 📁 Drive | File management |
| ⚡ Auto Tasks | LLM-powered intelligent execution |
| ⚡ Tasks | LLM-powered intelligent execution |
| ✉ Mail | Email client |
| 📅 Calendar | Scheduling |
| 🎥 Meet | Video calls |

View file

@ -1,18 +1,21 @@
# Auto Tasks
# Tasks
> **LLM-Powered Intelligent Task Execution**
> **The machine does the work**
---
<img src="../../assets/chapter-04/autotask-interface.svg" alt="Auto Tasks Interface" style="max-width: 100%; height: auto;">
<img src="../../assets/chapter-04/autotask-interface.svg" alt="Tasks Interface" style="max-width: 100%; height: auto;">
## What is Auto Tasks?
## What is Tasks?
Auto Tasks is a revolutionary approach to task automation. Instead of manually creating to-do items, you describe what you want to accomplish in natural language, and the LLM compiles your intent into an executable plan with automatic step-by-step execution.
Tasks is where the machine does the work for you. Instead of manually tracking to-do items, you describe what you want to accomplish in natural language, and the system compiles your intent into an executable plan with automatic step-by-step execution.
**The old way:** Create a task → Do it yourself → Mark complete
**The Auto Tasks way:** Describe your goal → LLM plans it → System executes it → You approve critical steps
| Old Way | Tasks Way |
|---------|-----------|
| Create a task | Describe your goal |
| Do it yourself | Machine plans it |
| Mark complete | Machine executes it |
| Repeat | You approve critical steps |
---
@ -20,33 +23,35 @@ Auto Tasks is a revolutionary approach to task automation. Instead of manually c
| Step | What Happens |
|------|--------------|
| **1. Describe Intent** | Write what you want in plain English |
| **2. Compile & Plan** | LLM analyzes intent, generates execution plan |
| **3. Review Plan** | See steps, estimates, risks before execution |
| **1. Describe** | Write what you want in plain English |
| **2. Compile** | LLM analyzes intent, generates execution plan |
| **3. Review** | See steps, estimates, risks before execution |
| **4. Execute** | System runs the plan, pausing for approvals |
| **5. Monitor** | Watch progress, make decisions when needed |
---
## Creating an Auto Task
## Creating a Task
### 1. Write Your Intent
### Write Your Intent
In the intent box, describe what you want to accomplish:
**Good examples:**
- "Make a financial CRM for Deloitte with client management and reporting"
- "Create a website that collects leads and sends them to Salesforce"
- "Build an automated email campaign for our product launch"
- "Analyze Q4 sales data and generate a PDF report with charts"
| Good Examples |
|---------------|
| "Make a financial CRM for Deloitte with client management and reporting" |
| "Create a website that collects leads and sends them to Salesforce" |
| "Build an automated email campaign for our product launch" |
| "Analyze Q4 sales data and generate a PDF report with charts" |
**Tips for better results:**
- Be specific about the outcome you want
- Mention the client or project name
- Include key features or requirements
- Specify integrations if needed
### 2. Choose Execution Mode
### Choose Execution Mode
| Mode | Best For | How It Works |
|------|----------|--------------|
@ -55,7 +60,7 @@ In the intent box, describe what you want to accomplish:
| **Fully Automatic** | Trusted workflows | Runs everything without stopping |
| **Dry Run** | Testing | Simulates execution without making changes |
### 3. Set Priority
### Set Priority
| Priority | Meaning |
|----------|---------|
@ -65,9 +70,10 @@ In the intent box, describe what you want to accomplish:
| **Low** | Run when resources available |
| **Background** | Run during idle time |
### 4. Click "Compile & Plan"
### Click Compile & Plan
The LLM will:
1. Extract entities (action, target, domain, client)
2. Generate an execution plan with ordered steps
3. Assess risks and estimate resources
@ -77,44 +83,43 @@ The LLM will:
## Understanding the Execution Plan
After compilation, you'll see a detailed plan:
After compilation, you see a detailed plan:
### Plan Header
- **Plan Name** - Auto-generated title for your task
- **Description** - Summary of what will be accomplished
- **Confidence** - How confident the LLM is in the plan (aim for 80%+)
- **Risk Level** - Overall risk assessment (None/Low/Medium/High/Critical)
- **Estimated Duration** - How long execution should take
- **Estimated Cost** - API and compute costs
| Field | Description |
|-------|-------------|
| **Plan Name** | Auto-generated title for your task |
| **Description** | Summary of what will be accomplished |
| **Confidence** | How confident the LLM is in the plan (aim for 80%+) |
| **Risk Level** | Overall risk assessment (None/Low/Medium/High/Critical) |
| **Estimated Duration** | How long execution should take |
| **Estimated Cost** | API and compute costs |
### Execution Steps
Each step shows:
- **Step Number & Priority** - Order and importance
- **Step Name** - What this step does
- **Keywords** - BASIC keywords that will be used
- **Risk Level** - Risk for this specific step
### Resource Estimates
- **Compute** - Processing hours needed
- **Storage** - Disk space required
- **API Calls** - External API requests
- **LLM Tokens** - Token consumption estimate
| Field | Description |
|-------|-------------|
| **Step Number** | Order of execution |
| **Priority** | CRITICAL, HIGH, MEDIUM, LOW |
| **Step Name** | What this step does |
| **Keywords** | BASIC keywords that will be used |
| **Risk Level** | Risk for this specific step |
### Plan Actions
| Button | Action |
|--------|--------|
| **🗑️ Discard** | Delete the plan, start over |
| **✏️ Edit Plan** | Modify steps before execution |
| **🔮 Simulate** | Preview impact without executing |
| **🚀 Execute** | Start running the plan |
| **Discard** | Delete the plan, start over |
| **Edit Plan** | Modify steps before execution |
| **Simulate** | Preview impact without executing |
| **Execute** | Start running the plan |
---
## Monitoring Active Tasks
## Monitoring Tasks
### Task States
@ -133,14 +138,17 @@ Each step shows:
### Filter Tabs
- **All** - Every task regardless of status
- **Running** - Currently executing tasks
- **Need Approval** - Tasks waiting for your approval
- **Decisions** - Tasks needing your input
| Tab | Shows |
|-----|-------|
| **All** | Every task regardless of status |
| **Running** | Currently executing tasks |
| **Need Approval** | Tasks waiting for your approval |
| **Decisions** | Tasks needing your input |
### Progress Tracking
Each task shows:
- Current step number and name
- Progress bar with percentage
- Time elapsed and estimated remaining
@ -152,6 +160,7 @@ Each task shows:
### When Approvals Are Required
High-impact actions require your approval:
- Sending emails to many recipients
- Modifying production databases
- Making external API calls with side effects
@ -160,20 +169,27 @@ High-impact actions require your approval:
### Approval Dialog
When approval is needed, you'll see:
- **Action description** - What will happen
- **Impact summary** - What could be affected
- **Risk level** - How risky this step is
- **Simulation result** - Preview of the outcome
When approval is needed, you see:
| Field | Description |
|-------|-------------|
| **Action description** | What will happen |
| **Impact summary** | What could be affected |
| **Risk level** | How risky this step is |
| **Simulation result** | Preview of the outcome |
**Options:**
- ✅ **Approve** - Continue execution
- ⏸️ **Defer** - Decide later
- ❌ **Reject** - Skip this step or stop execution
| Action | Result |
|--------|--------|
| **Approve** | Continue execution |
| **Defer** | Decide later |
| **Reject** | Skip this step or stop execution |
### Making Decisions
Sometimes the system needs your input:
- Choosing between alternative approaches
- Selecting from multiple options
- Providing missing information
@ -186,47 +202,36 @@ Each option shows pros, cons, and impact estimates.
| Action | When Available | What It Does |
|--------|----------------|--------------|
| **👁️ Details** | Always | View full task information |
| **🔮 Simulate** | Before execution | Preview impact |
| **⏸️ Pause** | While running | Temporarily stop execution |
| **▶️ Resume** | When paused | Continue execution |
| **❌ Cancel** | Anytime | Stop and discard task |
---
## Execution Log
Expand any task to see its execution log:
- Timestamp for each action
- Step transitions
- Approval/decision records
- Error messages if any
- Output from each step
| **Details** | Always | View full task information |
| **Simulate** | Before execution | Preview impact |
| **Pause** | While running | Temporarily stop execution |
| **Resume** | When paused | Continue execution |
| **Cancel** | Anytime | Stop and discard task |
---
## Creating Tasks from Chat
You can also create Auto Tasks by talking to your bot:
You can also create tasks by talking to your bot:
**You:** "I need to build a customer portal for Acme Corp"
**Bot:** "I'll create an Auto Task for that. Here's the plan:
**Bot:** "I'll create a task for that. Here's the plan:
- 5 steps, estimated 3 hours
- Includes: database setup, authentication, dashboard, API integration
- Risk: Low
-
Should I execute this plan?"
**You:** "Yes, go ahead"
**Bot:** "🚀 Auto Task started. I'll notify you when approvals are needed."
**Bot:** "Task started. I'll notify you when approvals are needed."
---
## Generated BASIC Code
Every Auto Task generates a BASIC program behind the scenes. You can view and copy this code:
Every task generates a BASIC program behind the scenes. You can view and copy this code:
```bas
' AUTO-GENERATED BASIC PROGRAM
@ -246,6 +251,7 @@ SAVE_TABLE
```
This code can be:
- Copied for manual execution
- Modified and saved as a template
- Reused for similar projects
@ -256,22 +262,20 @@ This code can be:
### Writing Good Intents
✅ **Do:**
- "Create a sales dashboard for Q4 data with charts showing revenue by region"
- "Build an email drip campaign: welcome email, 3-day follow-up, 7-day offer"
- "Analyze customer feedback CSV and generate sentiment report"
❌ **Don't:**
- "Make something" (too vague)
- "Do the thing we discussed" (no context)
- "Fix it" (what needs fixing?)
| Do | Don't |
|----|-------|
| "Create a sales dashboard for Q4 data with charts showing revenue by region" | "Make something" |
| "Build an email drip campaign: welcome email, 3-day follow-up, 7-day offer" | "Do the thing we discussed" |
| "Analyze customer feedback CSV and generate sentiment report" | "Fix it" |
### Choosing Execution Mode
- **New to Auto Tasks?** Start with Supervised mode
- **Routine tasks?** Use Semi-Automatic
- **Trusted, tested workflows?** Fully Automatic is fine
- **Experimenting?** Always use Dry Run first
| Situation | Recommended Mode |
|-----------|------------------|
| New to Tasks | Supervised |
| Routine tasks | Semi-Automatic |
| Trusted, tested workflows | Fully Automatic |
| Experimenting | Dry Run |
### Managing Risk
@ -290,7 +294,7 @@ This code can be:
- Avoid ambiguous language
- Include necessary context (client name, data sources)
### Task Stuck on "Running"
### Task Stuck on Running
- Check if an approval is pending
- Look for decision requests
@ -302,30 +306,25 @@ This code can be:
- Use Dry Run to test first
- Check the BASIC code for issues
### High Risk Warning
- Consider using Supervised mode
- Review each step carefully
- Use Simulate before Execute
---
## Settings
Configure Auto Tasks behavior in Settings:
Configure Tasks behavior in Settings:
- **Default execution mode** - Your preferred mode
- **Approval thresholds** - When to require approval
- **Cost limits** - Maximum spend per task
- **Notification preferences** - How to alert you
- **Auto-cleanup** - Remove completed tasks after X days
| Setting | Description |
|---------|-------------|
| **Default execution mode** | Your preferred mode |
| **Approval thresholds** | When to require approval |
| **Cost limits** | Maximum spend per task |
| **Notification preferences** | How to alert you |
| **Auto-cleanup** | Remove completed tasks after X days |
---
## See Also
- [Autonomous Task AI](../../07-gbapp/autonomous-tasks.md) - How the machine does the work
- [CREATE SITE Keyword](../../06-gbdialog/keyword-create-site.md) - App generation details
- [Calendar](./calendar.md) - Scheduled Auto Tasks appear here
- [Chat](./chat.md) - Create tasks through conversation
- [Analytics](./analytics.md) - Task execution metrics
- [Autonomous Task AI](../../07-gbapp/autonomous-tasks.md) - Architecture details
- [CREATE SITE](../../06-gbdialog/keyword-create-site.md) - App generation
- [Calendar](./calendar.md) - Scheduled tasks
- [Chat](./chat.md) - Create tasks through conversation

View file

@ -40,7 +40,7 @@ Click the **nine-dot grid** (⋮⋮⋮) in the top right to see all applications
|------|-----|--------------|
| 💬 | **Chat** | Talk with your AI assistant |
| 📁 | **Drive** | Store and manage your files |
| ⚡ | **Auto Tasks** | LLM-powered intelligent task execution |
| ⚡ | **Tasks** | LLM-powered intelligent task execution |
| ✉ | **Mail** | Send and receive emails |
| 📅 | **Calendar** | Schedule meetings and events |
| 🎥 | **Meet** | Video calls and meetings |
@ -179,17 +179,17 @@ Drive is your file storage - like Google Drive or OneDrive. Store documents, ima
---
## Part IV: Auto Tasks - LLM-Powered Execution
## Part IV: Tasks - LLM-Powered Execution
### What Auto Tasks Does
### What Tasks Does
Auto Tasks revolutionizes how you work. Instead of manually tracking to-do items, you describe what you want to accomplish in natural language, and the LLM compiles your intent into an executable plan with automatic step-by-step execution.
Tasks revolutionizes how you work. Instead of manually tracking to-do items, you describe what you want to accomplish in natural language, and the LLM compiles your intent into an executable plan with automatic step-by-step execution.
### The Auto Tasks Interface
### The Tasks Interface
<img src="../assets/chapter-04/autotask-interface.svg" alt="Auto Tasks Interface" style="max-width: 100%; height: auto;">
<img src="../assets/chapter-04/autotask-interface.svg" alt="Tasks Interface" style="max-width: 100%; height: auto;">
### Creating an Auto Task
### Creating an Task
1. **Describe your intent** in the text area (e.g., "Build a CRM for Deloitte with client management")
2. **Choose execution mode:**
@ -240,17 +240,17 @@ High-impact actions pause for your approval:
Click **✅ Review & Approve** to see details and continue.
### Creating Auto Tasks from Chat
### Creating Tasks from Chat
In Chat, just say:
```
You: I need to build a customer portal for Acme Corp
Bot: I'll create an Auto Task for that. Here's the plan:
Bot: I'll create an Task for that. Here's the plan:
- 5 steps, estimated 3 hours
- Risk: Low
Should I execute this plan?
You: Yes, go ahead
Bot: 🚀 Auto Task started!
Bot: 🚀 Task started!
```
---

View file

@ -64,7 +64,7 @@
- [Suite - Full Desktop](./04-gbui/apps/suite.md)
- [Chat - AI Assistant](./04-gbui/apps/chat.md)
- [Drive - File Management](./04-gbui/apps/drive.md)
- [Auto Tasks - LLM Execution](./04-gbui/apps/tasks.md)
- [Tasks](./04-gbui/apps/tasks.md)
- [Mail - Email Client](./04-gbui/apps/mail.md)
- [Calendar - Scheduling](./04-gbui/apps/calendar.md)
- [Meet - Video Calls](./04-gbui/apps/meet.md)

View file

@ -1,265 +1,159 @@
<svg width="1000" height="750" xmlns="http://www.w3.org/2000/svg">
<svg width="1000" height="700" xmlns="http://www.w3.org/2000/svg">
<style>
.bg { fill: #f5f5f5; }
.frame { fill: none; stroke: #333; stroke-width: 2; }
.header-bg { fill: #1a1a2e; }
.section-bg { fill: #ffffff; }
.main-text { fill: #1a1a1a; font-family: Arial, sans-serif; }
.white-text { fill: #ffffff; font-family: Arial, sans-serif; }
.secondary-text { fill: #666; font-family: Arial, sans-serif; }
.accent-text { fill: #00D4FF; font-family: Arial, sans-serif; }
.divider { stroke: #e0e0e0; stroke-width: 1; }
.button-primary { fill: #00D4FF; }
.button-secondary { fill: #2a2a3e; }
.input-field { fill: #f8f9fa; stroke: #ddd; stroke-width: 1; }
.card { fill: #ffffff; stroke: #e0e0e0; stroke-width: 1; }
.badge-premium { fill: #FFD700; }
.badge-running { fill: #00D4FF; }
.badge-approval { fill: #FF6B35; }
.badge-completed { fill: #4CAF50; }
.badge-pending { fill: #9E9E9E; }
.progress-bg { fill: #e0e0e0; }
.progress-fill { fill: #00D4FF; }
.risk-low { fill: #4CAF50; }
.risk-medium { fill: #FF9800; }
.risk-high { fill: #F44336; }
.stat-card { fill: #2a2a3e; }
.step-badge { fill: #e8f4fd; stroke: #00D4FF; stroke-width: 1; }
.code-bg { fill: #1e1e1e; }
.code-text { fill: #d4d4d4; font-family: 'Courier New', monospace; }
.keyword { fill: #569cd6; }
.string { fill: #ce9178; }
.comment { fill: #6a9955; }
.title-text { fill: #1E1B4B; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; }
.main-text { fill: #334155; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; }
.secondary-text { fill: #64748B; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; }
.white-text { fill: #FFFFFF; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; }
.mono-text { fill: #475569; font-family: 'SF Mono', 'Fira Code', Consolas, monospace; }
@media (prefers-color-scheme: dark) {
.bg { fill: #0d0d1a; }
.frame { stroke: #333; }
.header-bg { fill: #1a1a2e; }
.section-bg { fill: #1a1a2e; }
.main-text { fill: #ffffff; }
.secondary-text { fill: #aaa; }
.divider { stroke: #333; }
.input-field { fill: #2a2a3e; stroke: #444; }
.card { fill: #1a1a2e; stroke: #333; }
.step-badge { fill: #1a2a3e; stroke: #00D4FF; }
.title-text { fill: #F1F5F9; }
.main-text { fill: #E2E8F0; }
.secondary-text { fill: #94A3B8; }
.mono-text { fill: #CBD5E1; }
}
</style>
<defs>
<linearGradient id="primaryGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#6366F1"/>
<stop offset="100%" style="stop-color:#8B5CF6"/>
</linearGradient>
<linearGradient id="cyanGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#06B6D4"/>
<stop offset="100%" style="stop-color:#0EA5E9"/>
</linearGradient>
<linearGradient id="greenGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#10B981"/>
<stop offset="100%" style="stop-color:#34D399"/>
</linearGradient>
<linearGradient id="orangeGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#F59E0B"/>
<stop offset="100%" style="stop-color:#FBBF24"/>
</linearGradient>
<pattern id="dots" patternUnits="userSpaceOnUse" width="20" height="20">
<circle cx="2" cy="2" r="1" fill="#94A3B8"/>
</pattern>
<filter id="cardShadow" x="-10%" y="-10%" width="120%" height="120%">
<feDropShadow dx="0" dy="2" stdDeviation="4" flood-opacity="0.1"/>
</filter>
</defs>
<!-- Background -->
<rect width="1000" height="700" fill="#FAFBFC"/>
<rect width="1000" height="700" fill="url(#dots)" opacity="0.08"/>
<!-- Title -->
<text x="500" y="30" text-anchor="middle" font-size="20" font-weight="600" class="main-text">Auto Tasks - LLM-Powered Intelligent Task Execution</text>
<text x="500" y="40" text-anchor="middle" font-size="24" font-weight="700" class="title-text">Tasks — The Machine Does the Work</text>
<text x="500" y="65" text-anchor="middle" font-size="14" class="secondary-text">Describe your goal, the system executes it</text>
<!-- Main Frame -->
<rect x="20" y="50" width="960" height="680" rx="8" class="frame bg"/>
<!-- Header Section -->
<rect x="20" y="50" width="960" height="70" rx="8" class="header-bg"/>
<rect x="20" y="112" width="960" height="8" class="bg"/>
<!-- Header Title -->
<text x="50" y="85" font-size="22" font-weight="600" class="white-text">⚡ Auto Tasks</text>
<rect x="175" y="70" width="70" height="22" rx="4" class="badge-premium"/>
<text x="210" y="86" text-anchor="middle" font-size="11" font-weight="600" fill="#1a1a1a">PREMIUM</text>
<text x="50" y="105" font-size="12" class="secondary-text">Intelligent self-executing tasks powered by AI</text>
<!-- Header Stats -->
<g transform="translate(550, 60)">
<rect x="0" y="0" width="100" height="50" rx="6" class="stat-card"/>
<text x="50" y="22" text-anchor="middle" font-size="18" font-weight="600" class="accent-text">3</text>
<text x="50" y="40" text-anchor="middle" font-size="11" class="secondary-text">Running</text>
<rect x="110" y="0" width="100" height="50" rx="6" class="stat-card"/>
<text x="160" y="22" text-anchor="middle" font-size="18" font-weight="600" class="white-text">5</text>
<text x="160" y="40" text-anchor="middle" font-size="11" class="secondary-text">Pending</text>
<rect x="220" y="0" width="100" height="50" rx="6" class="stat-card"/>
<text x="270" y="22" text-anchor="middle" font-size="18" font-weight="600" class="white-text">12</text>
<text x="270" y="40" text-anchor="middle" font-size="11" class="secondary-text">Completed</text>
<rect x="330" y="0" width="100" height="50" rx="6" class="stat-card" style="stroke: #FF6B35; stroke-width: 2;"/>
<text x="380" y="22" text-anchor="middle" font-size="18" font-weight="600" style="fill: #FF6B35;">2</text>
<text x="380" y="40" text-anchor="middle" font-size="11" class="secondary-text">Need Approval</text>
</g>
<!-- Header Stats Bar -->
<rect x="50" y="90" width="900" height="60" rx="10" fill="url(#primaryGrad)" filter="url(#cardShadow)"/>
<text x="120" y="125" font-size="13" class="white-text">Running</text>
<text x="120" y="145" font-size="20" font-weight="700" class="white-text">3</text>
<text x="270" y="125" font-size="13" class="white-text">Pending</text>
<text x="270" y="145" font-size="20" font-weight="700" class="white-text">5</text>
<text x="420" y="125" font-size="13" class="white-text">Completed</text>
<text x="420" y="145" font-size="20" font-weight="700" class="white-text">12</text>
<rect x="550" y="105" width="130" height="35" rx="6" fill="#FFFFFF" opacity="0.2"/>
<text x="615" y="127" text-anchor="middle" font-size="13" font-weight="600" class="white-text">Need Approval: 2</text>
<!-- Intent Input Section -->
<g transform="translate(40, 135)">
<text x="0" y="20" font-size="14" font-weight="500" class="main-text">💡 What would you like to accomplish?</text>
<rect x="50" y="170" width="900" height="130" rx="10" fill="#FFFFFF" stroke="#E2E8F0" filter="url(#cardShadow)"/>
<text x="75" y="200" font-size="14" font-weight="600" class="main-text">What would you like to accomplish?</text>
<!-- Intent Textarea -->
<rect x="0" y="30" width="700" height="80" rx="8" class="input-field"/>
<text x="15" y="55" font-size="13" class="main-text">Make a financial CRM for Deloitte with client management</text>
<text x="15" y="75" font-size="13" class="main-text">and automated reporting dashboards</text>
<text x="15" y="98" font-size="11" class="secondary-text">Examples: • Create a website • Build an email campaign • Analyze sales data</text>
<!-- Input Field -->
<rect x="75" y="215" width="650" height="60" rx="8" fill="#F8FAFC" stroke="#E2E8F0"/>
<text x="90" y="240" font-size="13" class="main-text">Make a financial CRM for Deloitte with client management</text>
<text x="90" y="260" font-size="13" class="main-text">and automated reporting dashboards</text>
<!-- Controls Row -->
<rect x="720" y="30" width="200" height="35" rx="6" class="input-field"/>
<text x="735" y="53" font-size="12" class="main-text">Semi-Automatic</text>
<text x="730" y="78" font-size="10" class="secondary-text">Execution Mode</text>
<!-- Controls -->
<rect x="745" y="215" width="180" height="28" rx="6" fill="#F8FAFC" stroke="#E2E8F0"/>
<text x="760" y="234" font-size="12" class="main-text">Semi-Automatic</text>
<text x="910" y="234" font-size="12" class="secondary-text"></text>
<rect x="720" y="75" width="200" height="35" rx="6" class="button-primary"/>
<text x="820" y="98" text-anchor="middle" font-size="13" font-weight="500" fill="#1a1a1a">🚀 Compile & Plan</text>
</g>
<rect x="745" y="250" width="180" height="32" rx="6" fill="url(#cyanGrad)"/>
<text x="835" y="272" text-anchor="middle" font-size="13" font-weight="600" class="white-text">Compile &amp; Plan</text>
<!-- Compilation Result Section -->
<g transform="translate(40, 255)">
<rect x="0" y="0" width="920" height="200" rx="8" class="card"/>
<!-- Execution Plan Card -->
<rect x="50" y="320" width="900" height="180" rx="10" fill="#FFFFFF" stroke="#E2E8F0" filter="url(#cardShadow)"/>
<text x="75" y="350" font-size="16" font-weight="700" class="main-text">Financial CRM for Deloitte</text>
<text x="75" y="372" font-size="12" class="secondary-text">Client management and automated reporting system</text>
<!-- Plan Header -->
<text x="20" y="30" font-size="16" font-weight="600" class="main-text">Financial CRM for Deloitte</text>
<text x="20" y="50" font-size="12" class="secondary-text">Client management and automated reporting system</text>
<!-- Badges -->
<rect x="75" y="385" width="100" height="24" rx="12" fill="url(#greenGrad)"/>
<text x="125" y="402" text-anchor="middle" font-size="11" font-weight="500" class="white-text">Confidence: 94%</text>
<!-- Badges Row -->
<g transform="translate(20, 60)">
<rect x="0" y="0" width="110" height="24" rx="4" class="risk-low"/>
<text x="55" y="16" text-anchor="middle" font-size="11" class="white-text">✓ Confidence: 94%</text>
<rect x="185" y="385" width="80" height="24" rx="12" fill="url(#greenGrad)"/>
<text x="225" y="402" text-anchor="middle" font-size="11" font-weight="500" class="white-text">Risk: Low</text>
<rect x="120" y="0" width="90" height="24" rx="4" class="risk-low"/>
<text x="165" y="16" text-anchor="middle" font-size="11" class="white-text">Risk: Low</text>
<rect x="275" y="385" width="100" height="24" rx="12" fill="#F1F5F9" stroke="#E2E8F0"/>
<text x="325" y="402" text-anchor="middle" font-size="11" class="main-text">Est: 2.5 hours</text>
<rect x="220" y="0" width="120" height="24" rx="4" class="button-secondary"/>
<text x="280" y="16" text-anchor="middle" font-size="11" class="white-text">⏱️ Est: 2.5 hours</text>
<rect x="385" y="385" width="90" height="24" rx="12" fill="#F1F5F9" stroke="#E2E8F0"/>
<text x="430" y="402" text-anchor="middle" font-size="11" class="main-text">Cost: $0.45</text>
<rect x="350" y="0" width="100" height="24" rx="4" class="button-secondary"/>
<text x="400" y="16" text-anchor="middle" font-size="11" class="white-text">💰 Cost: $0.45</text>
</g>
<!-- Steps -->
<text x="75" y="435" font-size="13" font-weight="600" class="main-text">Execution Plan (6 steps)</text>
<!-- Execution Plan Steps -->
<text x="20" y="110" font-size="13" font-weight="500" class="main-text">📋 Execution Plan (6 steps)</text>
<!-- Step boxes -->
<rect x="75" y="445" width="130" height="45" rx="6" fill="#EEF2FF" stroke="#6366F1"/>
<text x="85" y="462" font-size="9" font-weight="600" fill="#6366F1">STEP 1 • CRITICAL</text>
<text x="85" y="478" font-size="11" class="main-text">Create database</text>
<g transform="translate(20, 120)">
<!-- Step 1 -->
<rect x="0" y="0" width="140" height="55" rx="6" class="step-badge"/>
<text x="10" y="18" font-size="10" font-weight="600" class="accent-text">STEP 1 • CRITICAL</text>
<text x="10" y="35" font-size="11" class="main-text">Create database</text>
<text x="10" y="48" font-size="10" class="secondary-text">NEW_TABLE, COLUMN</text>
<rect x="215" y="445" width="130" height="45" rx="6" fill="#EEF2FF" stroke="#6366F1"/>
<text x="225" y="462" font-size="9" font-weight="600" fill="#6366F1">STEP 2 • HIGH</text>
<text x="225" y="478" font-size="11" class="main-text">Setup auth</text>
<!-- Step 2 -->
<rect x="150" y="0" width="140" height="55" rx="6" class="step-badge"/>
<text x="160" y="18" font-size="10" font-weight="600" class="accent-text">STEP 2 • HIGH</text>
<text x="160" y="35" font-size="11" class="main-text">Setup auth</text>
<text x="160" y="48" font-size="10" class="secondary-text">OAUTH, JWT</text>
<rect x="355" y="445" width="130" height="45" rx="6" fill="#EEF2FF" stroke="#6366F1"/>
<text x="365" y="462" font-size="9" font-weight="600" fill="#6366F1">STEP 3 • HIGH</text>
<text x="365" y="478" font-size="11" class="main-text">Client module</text>
<!-- Step 3 -->
<rect x="300" y="0" width="140" height="55" rx="6" class="step-badge"/>
<text x="310" y="18" font-size="10" font-weight="600" class="accent-text">STEP 3 • HIGH</text>
<text x="310" y="35" font-size="11" class="main-text">Client module</text>
<text x="310" y="48" font-size="10" class="secondary-text">FORM, DIALOG</text>
<rect x="495" y="445" width="130" height="45" rx="6" fill="#FEF3C7" stroke="#F59E0B"/>
<text x="505" y="462" font-size="9" font-weight="600" fill="#D97706">STEP 4 • MEDIUM</text>
<text x="505" y="478" font-size="11" class="main-text">Financial tracking</text>
<!-- Step 4 -->
<rect x="450" y="0" width="140" height="55" rx="6" class="step-badge"/>
<text x="460" y="18" font-size="10" font-weight="600" style="fill: #FF9800;">STEP 4 • MEDIUM</text>
<text x="460" y="35" font-size="11" class="main-text">Financial tracking</text>
<text x="460" y="48" font-size="10" class="secondary-text">CHART, CALC</text>
<rect x="635" y="445" width="130" height="45" rx="6" fill="#FEF3C7" stroke="#F59E0B"/>
<text x="645" y="462" font-size="9" font-weight="600" fill="#D97706">STEP 5 • MEDIUM</text>
<text x="645" y="478" font-size="11" class="main-text">Reports dashboard</text>
<!-- Step 5 -->
<rect x="600" y="0" width="140" height="55" rx="6" class="step-badge"/>
<text x="610" y="18" font-size="10" font-weight="600" style="fill: #FF9800;">STEP 5 • MEDIUM</text>
<text x="610" y="35" font-size="11" class="main-text">Reports dashboard</text>
<text x="610" y="48" font-size="10" class="secondary-text">REPORT, PDF</text>
<!-- Step 6 -->
<rect x="750" y="0" width="140" height="55" rx="6" class="step-badge"/>
<text x="760" y="18" font-size="10" font-weight="600" style="fill: #4CAF50;">STEP 6 • LOW</text>
<text x="760" y="35" font-size="11" class="main-text">Deploy & test</text>
<text x="760" y="48" font-size="10" class="secondary-text">DEPLOY, TEST</text>
</g>
<!-- Action Buttons -->
<g transform="translate(550, 185)">
<rect x="0" y="0" width="90" height="32" rx="6" class="button-secondary"/>
<text x="45" y="21" text-anchor="middle" font-size="12" class="white-text">🗑️ Discard</text>
<rect x="100" y="0" width="100" height="32" rx="6" class="button-secondary"/>
<text x="150" y="21" text-anchor="middle" font-size="12" class="white-text">🔮 Simulate</text>
<rect x="210" y="0" width="120" height="32" rx="6" class="button-primary"/>
<text x="270" y="21" text-anchor="middle" font-size="12" font-weight="500" fill="#1a1a1a">🚀 Execute Plan</text>
</g>
</g>
<rect x="775" y="445" width="130" height="45" rx="6" fill="#DCFCE7" stroke="#10B981"/>
<text x="785" y="462" font-size="9" font-weight="600" fill="#059669">STEP 6 • LOW</text>
<text x="785" y="478" font-size="11" class="main-text">Deploy &amp; test</text>
<!-- Active Tasks Section -->
<g transform="translate(40, 470)">
<text x="0" y="20" font-size="14" font-weight="500" class="main-text">📋 Active Tasks</text>
<text x="75" y="535" font-size="16" font-weight="700" class="main-text">Active Tasks</text>
<!-- Filter Tabs -->
<g transform="translate(150, 5)">
<rect x="0" y="0" width="70" height="28" rx="4" class="button-primary"/>
<text x="35" y="19" text-anchor="middle" font-size="11" fill="#1a1a1a">All (8)</text>
<!-- Filter tabs -->
<rect x="200" y="518" width="60" height="26" rx="4" fill="url(#cyanGrad)"/>
<text x="230" y="536" text-anchor="middle" font-size="11" font-weight="500" class="white-text">All (8)</text>
<rect x="80" y="0" width="80" height="28" rx="4" class="input-field"/>
<text x="120" y="19" text-anchor="middle" font-size="11" class="main-text">Running (3)</text>
<rect x="268" y="518" width="80" height="26" rx="4" fill="#F1F5F9" stroke="#E2E8F0"/>
<text x="308" y="536" text-anchor="middle" font-size="11" class="main-text">Running (3)</text>
<rect x="170" y="0" width="100" height="28" rx="4" class="input-field"/>
<text x="220" y="19" text-anchor="middle" font-size="11" class="main-text">Approval (2)</text>
<rect x="356" y="518" width="90" height="26" rx="4" fill="#F1F5F9" stroke="#E2E8F0"/>
<text x="401" y="536" text-anchor="middle" font-size="11" class="main-text">Approval (2)</text>
<rect x="280" y="0" width="90" height="28" rx="4" class="input-field"/>
<text x="325" y="19" text-anchor="middle" font-size="11" class="main-text">Decisions (1)</text>
</g>
<!-- Task Item 1 - Running -->
<rect x="50" y="555" width="900" height="60" rx="8" fill="#FFFFFF" stroke="#E2E8F0" filter="url(#cardShadow)"/>
<rect x="70" y="570" width="70" height="22" rx="4" fill="url(#cyanGrad)"/>
<text x="105" y="586" text-anchor="middle" font-size="10" font-weight="500" class="white-text">RUNNING</text>
<text x="155" y="586" font-size="14" font-weight="500" class="main-text">E-commerce Website for TechCorp</text>
<!-- Task Item 1 - Running -->
<rect x="0" y="40" width="920" height="70" rx="8" class="card"/>
<rect x="15" y="52" width="70" height="20" rx="4" class="badge-running"/>
<text x="50" y="66" text-anchor="middle" font-size="10" fill="#1a1a1a">RUNNING</text>
<text x="100" y="66" font-size="14" font-weight="500" class="main-text">E-commerce Website for TechCorp</text>
<rect x="380" y="52" width="55" height="20" rx="4" class="risk-medium"/>
<text x="407" y="66" text-anchor="middle" font-size="10" class="white-text">HIGH</text>
<!-- Progress bar -->
<rect x="70" y="598" width="400" height="6" rx="3" fill="#E2E8F0"/>
<rect x="70" y="598" width="284" height="6" rx="3" fill="url(#cyanGrad)"/>
<text x="480" y="605" font-size="11" class="secondary-text">Step 5/7 (71%)</text>
<!-- Progress Bar -->
<rect x="15" y="78" width="400" height="8" rx="4" class="progress-bg"/>
<rect x="15" y="78" width="280" height="8" rx="4" class="progress-fill"/>
<text x="425" y="86" font-size="11" class="secondary-text">Step 5/7 (71%)</text>
<!-- Task Item 2 - Needs Approval -->
<rect x="50" y="625" width="900" height="60" rx="8" fill="#FFFFFF" stroke="#F59E0B" stroke-width="2" filter="url(#cardShadow)"/>
<rect x="70" y="640" width="110" height="22" rx="4" fill="url(#orangeGrad)"/>
<text x="125" y="656" text-anchor="middle" font-size="10" font-weight="500" class="white-text">NEEDS APPROVAL</text>
<text x="195" y="656" font-size="14" font-weight="500" class="main-text">Automated Email Campaign - Product Launch</text>
<text x="15" y="102" font-size="11" class="secondary-text">▶️ Current: Building product catalog with search functionality</text>
<rect x="70" y="665" width="650" height="16" rx="3" fill="#FEF3C7"/>
<text x="80" y="677" font-size="10" fill="#92400E">Approval required: Send 50,000 emails to customer list</text>
<!-- Task Actions -->
<g transform="translate(750, 55)">
<rect x="0" y="0" width="70" height="26" rx="4" class="button-secondary"/>
<text x="35" y="17" text-anchor="middle" font-size="10" class="white-text">⏸️ Pause</text>
<rect x="80" y="0" width="70" height="26" rx="4" class="button-secondary"/>
<text x="115" y="17" text-anchor="middle" font-size="10" class="white-text">👁️ Details</text>
</g>
<!-- Task Item 2 - Needs Approval -->
<rect x="0" y="120" width="920" height="70" rx="8" class="card" style="stroke: #FF6B35; stroke-width: 2;"/>
<rect x="15" y="132" width="110" height="20" rx="4" class="badge-approval"/>
<text x="70" y="146" text-anchor="middle" font-size="10" class="white-text">NEEDS APPROVAL</text>
<text x="140" y="146" font-size="14" font-weight="500" class="main-text">Automated Email Campaign - Product Launch</text>
<rect x="440" y="132" width="65" height="20" rx="4" class="risk-high"/>
<text x="472" y="146" text-anchor="middle" font-size="10" class="white-text">CRITICAL</text>
<rect x="15" y="158" width="750" height="24" rx="4" style="fill: #fff3e0;"/>
<text x="25" y="175" font-size="11" style="fill: #E65100;">⚠️ Approval required: Send 50,000 emails to customer list (High impact action)</text>
<g transform="translate(750, 135)">
<rect x="0" y="0" width="150" height="26" rx="4" class="button-primary"/>
<text x="75" y="17" text-anchor="middle" font-size="10" font-weight="500" fill="#1a1a1a">✅ Review & Approve</text>
</g>
<!-- Task Item 3 - Completed -->
<rect x="0" y="200" width="920" height="50" rx="8" class="card" style="opacity: 0.7;"/>
<rect x="15" y="212" width="80" height="20" rx="4" class="badge-completed"/>
<text x="55" y="226" text-anchor="middle" font-size="10" class="white-text">COMPLETED</text>
<text x="110" y="226" font-size="14" class="main-text" style="opacity: 0.7;">Sales Data Analysis Q4 Report</text>
<rect x="15" y="238" width="300" height="6" rx="3" class="badge-completed"/>
<text x="325" y="244" font-size="10" class="secondary-text">✓ All 4 steps completed • Duration: 45 min</text>
</g>
<!-- Footer Legend -->
<g transform="translate(40, 715)">
<text x="0" y="0" font-size="11" class="secondary-text">Execution Modes:</text>
<text x="100" y="0" font-size="10" class="main-text">Semi-Auto (recommended)</text>
<text x="240" y="0" font-size="10" class="main-text">• Supervised</text>
<text x="320" y="0" font-size="10" class="main-text">• Fully Auto</text>
<text x="410" y="0" font-size="10" class="main-text">• Dry Run</text>
<text x="550" y="0" font-size="11" class="secondary-text">Priority:</text>
<circle cx="600" cy="-3" r="5" class="risk-high"/>
<text x="610" y="0" font-size="10" class="secondary-text">Critical</text>
<circle cx="665" cy="-3" r="5" class="risk-medium"/>
<text x="675" y="0" font-size="10" class="secondary-text">High</text>
<circle cx="710" cy="-3" r="5" class="badge-running"/>
<text x="720" y="0" font-size="10" class="secondary-text">Medium</text>
<circle cx="770" cy="-3" r="5" class="badge-pending"/>
<text x="780" y="0" font-size="10" class="secondary-text">Low</text>
</g>
<rect x="780" y="645" width="140" height="28" rx="6" fill="url(#greenGrad)"/>
<text x="850" y="664" text-anchor="middle" font-size="11" font-weight="500" class="white-text">Review &amp; Approve</text>
</svg>

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 9.3 KiB

View file

@ -0,0 +1,461 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GB Project - Architecture Report</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
min-height: 100vh;
color: #fff;
padding: 20px;
}
.header {
text-align: center;
margin-bottom: 30px;
}
.header h1 {
font-size: 2.5rem;
background: linear-gradient(90deg, #3498db, #9b59b6, #e74c3c);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.header p {
color: #888;
margin-top: 10px;
}
.treemap-container {
max-width: 1400px;
margin: 0 auto;
background: rgba(255,255,255,0.03);
border-radius: 20px;
padding: 20px;
box-shadow: 0 10px 40px rgba(0,0,0,0.3);
}
.treemap {
display: grid;
grid-template-columns: repeat(12, 1fr);
grid-template-rows: repeat(8, 80px);
gap: 8px;
margin-bottom: 30px;
}
.component {
border-radius: 12px;
padding: 15px;
display: flex;
flex-direction: column;
justify-content: space-between;
transition: all 0.3s ease;
cursor: pointer;
position: relative;
overflow: hidden;
}
.component:hover {
transform: scale(1.02);
z-index: 10;
box-shadow: 0 10px 30px rgba(0,0,0,0.4);
}
.component::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(135deg, rgba(255,255,255,0.1) 0%, transparent 50%);
pointer-events: none;
}
.component h3 {
font-size: 1.1rem;
font-weight: 600;
display: flex;
align-items: center;
gap: 8px;
}
.component .stats {
font-size: 0.75rem;
opacity: 0.8;
}
.component .percent {
position: absolute;
bottom: 10px;
right: 15px;
font-size: 1.5rem;
font-weight: bold;
opacity: 0.3;
}
/* Component positions and sizes */
.botserver {
grid-column: 1 / 7;
grid-row: 1 / 6;
background: linear-gradient(135deg, #3498db 0%, #2980b9 100%);
}
.botbook {
grid-column: 7 / 13;
grid-row: 1 / 4;
background: linear-gradient(135deg, #27ae60 0%, #1e8449 100%);
}
.botui {
grid-column: 7 / 10;
grid-row: 4 / 6;
background: linear-gradient(135deg, #9b59b6 0%, #8e44ad 100%);
}
.botapp {
grid-column: 10 / 13;
grid-row: 4 / 6;
background: linear-gradient(135deg, #f39c12 0%, #e67e22 100%);
}
.botlib {
grid-column: 1 / 4;
grid-row: 6 / 9;
background: linear-gradient(135deg, #e74c3c 0%, #c0392b 100%);
}
.botdevice {
grid-column: 4 / 7;
grid-row: 6 / 8;
background: linear-gradient(135deg, #1abc9c 0%, #16a085 100%);
}
.botcoder {
grid-column: 4 / 7;
grid-row: 8 / 9;
background: linear-gradient(135deg, #e91e63 0%, #c2185b 100%);
}
.bottest {
grid-column: 7 / 9;
grid-row: 6 / 8;
background: linear-gradient(135deg, #00bcd4 0%, #0097a7 100%);
}
.botmodels {
grid-column: 9 / 11;
grid-row: 6 / 8;
background: linear-gradient(135deg, #ff5722 0%, #e64a19 100%);
}
.bottemplates {
grid-column: 11 / 13;
grid-row: 6 / 8;
background: linear-gradient(135deg, #795548 0%, #5d4037 100%);
}
.botplugin {
grid-column: 7 / 13;
grid-row: 8 / 9;
background: linear-gradient(135deg, #607d8b 0%, #455a64 100%);
}
/* Sub-components inside botserver */
.sub-components {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 4px;
margin-top: 10px;
flex-grow: 1;
}
.sub-component {
background: rgba(255,255,255,0.15);
border-radius: 6px;
padding: 6px;
font-size: 0.65rem;
text-align: center;
}
/* Legend */
.legend {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 15px;
margin-top: 20px;
}
.legend-item {
display: flex;
align-items: center;
gap: 10px;
padding: 10px;
background: rgba(255,255,255,0.05);
border-radius: 8px;
}
.legend-color {
width: 20px;
height: 20px;
border-radius: 4px;
}
.legend-text {
font-size: 0.85rem;
}
.legend-text small {
display: block;
color: #888;
font-size: 0.7rem;
}
/* Report section */
.report {
margin-top: 40px;
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
}
.report-card {
background: rgba(255,255,255,0.05);
border-radius: 15px;
padding: 20px;
}
.report-card h4 {
color: #3498db;
margin-bottom: 15px;
font-size: 1rem;
border-bottom: 1px solid rgba(255,255,255,0.1);
padding-bottom: 10px;
}
.report-card ul {
list-style: none;
}
.report-card li {
padding: 8px 0;
border-bottom: 1px solid rgba(255,255,255,0.05);
font-size: 0.85rem;
display: flex;
justify-content: space-between;
}
.report-card li:last-child {
border-bottom: none;
}
.status {
padding: 2px 8px;
border-radius: 10px;
font-size: 0.7rem;
}
.status.complete { background: #27ae60; }
.status.progress { background: #f39c12; }
.status.planned { background: #3498db; }
/* Footer */
.footer {
text-align: center;
margin-top: 40px;
padding-top: 20px;
border-top: 1px solid rgba(255,255,255,0.1);
color: #666;
font-size: 0.85rem;
}
</style>
</head>
<body>
<div class="header">
<h1>🤖 GB Project Architecture</h1>
<p>Component Space Allocation Visualization - Treemap Report</p>
</div>
<div class="treemap-container">
<div class="treemap">
<!-- BOTSERVER - Main backend server -->
<div class="component botserver">
<h3>📦 botserver</h3>
<div class="sub-components">
<div class="sub-component">basic/keywords</div>
<div class="sub-component">core/bot</div>
<div class="sub-component">llm/models</div>
<div class="sub-component">vector-db</div>
<div class="sub-component">security</div>
<div class="sub-component">compliance</div>
<div class="sub-component">attendance</div>
<div class="sub-component">drive</div>
<div class="sub-component">email</div>
<div class="sub-component">whatsapp</div>
<div class="sub-component">calendar</div>
<div class="sub-component">console</div>
</div>
<div class="stats">~100+ modules | Rust | Core Platform</div>
<span class="percent">45%</span>
</div>
<!-- BOTBOOK - Documentation -->
<div class="component botbook">
<h3>📚 botbook</h3>
<div class="stats">20 chapters | 150+ docs | mdBook</div>
<span class="percent">20%</span>
</div>
<!-- BOTUI - Web Interface -->
<div class="component botui">
<h3>🎨 botui</h3>
<div class="stats">HTMX | Tailwind | Admin UI</div>
<span class="percent">8%</span>
</div>
<!-- BOTAPP - Desktop Application -->
<div class="component botapp">
<h3>🖥️ botapp</h3>
<div class="stats">Tauri | Cross-platform</div>
<span class="percent">7%</span>
</div>
<!-- BOTLIB - Shared Library -->
<div class="component botlib">
<h3>📖 botlib</h3>
<div class="stats">Core types | HTTP | Models</div>
<span class="percent">5%</span>
</div>
<!-- BOTDEVICE - Embedded/IoT -->
<div class="component botdevice">
<h3>📱 botdevice</h3>
<div class="stats">Embedded | Tauri | ROM</div>
<span class="percent">4%</span>
</div>
<!-- BOTCODER - AI Coding -->
<div class="component botcoder">
<h3>🧠 botcoder</h3>
<div class="stats">AI Assistant</div>
<span class="percent">2%</span>
</div>
<!-- BOTTEST - Testing -->
<div class="component bottest">
<h3>🧪 bottest</h3>
<div class="stats">Tests | Benches</div>
<span class="percent">3%</span>
</div>
<!-- BOTMODELS - ML Models -->
<div class="component botmodels">
<h3>🤖 botmodels</h3>
<div class="stats">Python | ML</div>
<span class="percent">3%</span>
</div>
<!-- BOTTEMPLATES - Templates -->
<div class="component bottemplates">
<h3>📋 bottemplates</h3>
<div class="stats">Bots | Dialogs</div>
<span class="percent">2%</span>
</div>
<!-- BOTPLUGIN - Browser Extension -->
<div class="component botplugin">
<h3>🔌 botplugin</h3>
<div class="stats">Browser Extension | JS | Chrome/Firefox</div>
<span class="percent">1%</span>
</div>
</div>
<!-- Legend -->
<div class="legend">
<div class="legend-item">
<div class="legend-color" style="background: linear-gradient(135deg, #3498db, #2980b9);"></div>
<div class="legend-text">Backend Core<small>Server, API, Business Logic</small></div>
</div>
<div class="legend-item">
<div class="legend-color" style="background: linear-gradient(135deg, #27ae60, #1e8449);"></div>
<div class="legend-text">Documentation<small>Guides, API Docs, Tutorials</small></div>
</div>
<div class="legend-item">
<div class="legend-color" style="background: linear-gradient(135deg, #9b59b6, #8e44ad);"></div>
<div class="legend-text">User Interface<small>Web UI, Admin Panel</small></div>
</div>
<div class="legend-item">
<div class="legend-color" style="background: linear-gradient(135deg, #e74c3c, #c0392b);"></div>
<div class="legend-text">Shared Libraries<small>Common Types, Utils</small></div>
</div>
</div>
</div>
<!-- Project Report Section -->
<div class="treemap-container report">
<div class="report-card">
<h4>🎯 Core Features Status</h4>
<ul>
<li>LLM Integration <span class="status complete">Complete</span></li>
<li>Vector Database <span class="status complete">Complete</span></li>
<li>BASIC Interpreter <span class="status complete">Complete</span></li>
<li>WhatsApp Channel <span class="status complete">Complete</span></li>
<li>Email Integration <span class="status complete">Complete</span></li>
<li>MCP Client <span class="status progress">In Progress</span></li>
<li>A2A Protocol <span class="status progress">In Progress</span></li>
<li>Multi-Agent System <span class="status planned">Planned</span></li>
</ul>
</div>
<div class="report-card">
<h4>📊 Component Breakdown</h4>
<ul>
<li>botserver <span>~100 modules</span></li>
<li>botbook <span>150+ pages</span></li>
<li>botui <span>Web components</span></li>
<li>botapp <span>Desktop app</span></li>
<li>botlib <span>7 core files</span></li>
<li>botdevice <span>IoT/Embedded</span></li>
<li>bottest <span>Test suite</span></li>
<li>bottemplates <span>Bot templates</span></li>
</ul>
</div>
<div class="report-card">
<h4>🔧 Technology Stack</h4>
<ul>
<li>Language <span>Rust</span></li>
<li>Web Framework <span>Actix-Web</span></li>
<li>UI Framework <span>HTMX + Tailwind</span></li>
<li>Desktop <span>Tauri</span></li>
<li>Database <span>PostgreSQL</span></li>
<li>Vector DB <span>Custom + Hybrid</span></li>
<li>ML/AI <span>Python + Rust</span></li>
<li>Docs <span>mdBook</span></li>
</ul>
</div>
<div class="report-card">
<h4>📁 Keywords (70+)</h4>
<ul>
<li>Data Operations <span>GET, SET, SAVE</span></li>
<li>HTTP <span>POST, PUT, DELETE</span></li>
<li>Messaging <span>TALK, HEAR, SMS</span></li>
<li>Files <span>READ, WRITE, UPLOAD</span></li>
<li>KB <span>USE KB, FIND</span></li>
<li>AI <span>USE MODEL, LLM</span></li>
<li>Control <span>FOR, SWITCH, ON</span></li>
<li>Integration <span>WEBHOOK, MAIL</span></li>
</ul>
</div>
<div class="report-card">
<h4>🏗️ Architecture Zones</h4>
<ul>
<li>Core Engine <span>botserver + botlib</span></li>
<li>User Facing <span>botui + botapp</span></li>
<li>Intelligence <span>botmodels + botcoder</span></li>
<li>IoT/Edge <span>botdevice</span></li>
<li>Quality <span>bottest</span></li>
<li>Content <span>bottemplates + botbook</span></li>
<li>Extension <span>botplugin</span></li>
</ul>
</div>
<div class="report-card">
<h4>📈 Project Metrics</h4>
<ul>
<li>Total Lines <span>~868K</span></li>
<li>Primary Language <span>Rust</span></li>
<li>Secondary <span>Python, JS, TS</span></li>
<li>Doc Coverage <span>~40%</span></li>
<li>Test Coverage <span>~8.7%</span></li>
<li>Active Modules <span>11</span></li>
<li>BASIC Keywords <span>70+</span></li>
<li>REST Endpoints <span>100+</span></li>
</ul>
</div>
</div>
<!-- Footer -->
<div class="footer">
<p>🤖 General Bots Project Report | Generated December 2025</p>
<p style="margin-top: 10px; font-size: 0.75rem;">
Rust-based AI Platform | Multi-Channel Bots | LLM Integration | BASIC Scripting
</p>
</div>
</body>
</html>

View file

@ -0,0 +1,215 @@
<svg viewBox="0 0 1200 700" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="g1" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#3498db"/><stop offset="100%" stop-color="#2980b9"/></linearGradient>
<linearGradient id="g2" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#27ae60"/><stop offset="100%" stop-color="#1e8449"/></linearGradient>
<linearGradient id="g3" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#9b59b6"/><stop offset="100%" stop-color="#8e44ad"/></linearGradient>
<linearGradient id="g4" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#00bcd4"/><stop offset="100%" stop-color="#0097a7"/></linearGradient>
<linearGradient id="g5" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#f39c12"/><stop offset="100%" stop-color="#e67e22"/></linearGradient>
<linearGradient id="g6" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#e74c3c"/><stop offset="100%" stop-color="#c0392b"/></linearGradient>
<linearGradient id="g7" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#1abc9c"/><stop offset="100%" stop-color="#16a085"/></linearGradient>
<linearGradient id="g8" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#ff5722"/><stop offset="100%" stop-color="#e64a19"/></linearGradient>
<linearGradient id="g9" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#e91e63"/><stop offset="100%" stop-color="#c2185b"/></linearGradient>
<filter id="s"><feDropShadow dx="2" dy="2" stdDeviation="2" flood-opacity="0.2"/></filter>
</defs>
<rect width="1200" height="700" fill="#1a1a2e"/>
<text x="600" y="35" text-anchor="middle" font-family="Arial" font-size="22" font-weight="bold" fill="#fff">GB Project - Treemap Architecture</text>
<text x="600" y="55" text-anchor="middle" font-family="Arial" font-size="11" fill="#888">Component Space Allocation (~520K LOC)</text>
<!-- botserver 45% -->
<g filter="url(#s)">
<rect x="15" y="70" width="540" height="380" rx="8" fill="url(#g1)"/>
<text x="30" y="95" font-family="Arial" font-size="16" font-weight="bold" fill="#fff">botserver</text>
<text x="30" y="112" font-family="Arial" font-size="10" fill="rgba(255,255,255,0.7)">204,827 lines | 45% | Core Platform</text>
<rect x="30" y="125" width="150" height="90" rx="5" fill="rgba(0,0,0,0.25)"/>
<text x="40" y="148" font-family="Arial" font-size="11" font-weight="bold" fill="#fff">basic</text>
<text x="40" y="163" font-family="Arial" font-size="8" fill="rgba(255,255,255,0.6)">46,189 lines</text>
<text x="40" y="178" font-family="Arial" font-size="7" fill="rgba(255,255,255,0.5)">BASIC interpreter</text>
<text x="40" y="190" font-family="Arial" font-size="7" fill="rgba(255,255,255,0.5)">Keywords, Dialogs</text>
<rect x="190" y="125" width="100" height="90" rx="5" fill="rgba(0,0,0,0.25)"/>
<text x="200" y="148" font-family="Arial" font-size="11" font-weight="bold" fill="#fff">core</text>
<text x="200" y="163" font-family="Arial" font-size="8" fill="rgba(255,255,255,0.6)">21,662 lines</text>
<text x="200" y="178" font-family="Arial" font-size="7" fill="rgba(255,255,255,0.5)">App bootstrap</text>
<rect x="300" y="125" width="70" height="42" rx="4" fill="rgba(0,0,0,0.2)"/>
<text x="308" y="145" font-family="Arial" font-size="9" font-weight="bold" fill="#fff">attendance</text>
<text x="308" y="158" font-family="Arial" font-size="7" fill="rgba(255,255,255,0.5)">4,640</text>
<rect x="380" y="125" width="60" height="42" rx="4" fill="rgba(0,0,0,0.2)"/>
<text x="388" y="145" font-family="Arial" font-size="9" font-weight="bold" fill="#fff">email</text>
<text x="388" y="158" font-family="Arial" font-size="7" fill="rgba(255,255,255,0.5)">4,573</text>
<rect x="450" y="125" width="60" height="42" rx="4" fill="rgba(0,0,0,0.2)"/>
<text x="458" y="145" font-family="Arial" font-size="9" font-weight="bold" fill="#fff">security</text>
<text x="458" y="158" font-family="Arial" font-size="7" fill="rgba(255,255,255,0.5)">3,910</text>
<rect x="300" y="175" width="70" height="40" rx="4" fill="rgba(0,0,0,0.2)"/>
<text x="305" y="195" font-family="Arial" font-size="8" font-weight="bold" fill="#fff">compliance</text>
<text x="310" y="207" font-family="Arial" font-size="7" fill="rgba(255,255,255,0.5)">3,726</text>
<rect x="380" y="175" width="55" height="40" rx="4" fill="rgba(0,0,0,0.2)"/>
<text x="390" y="195" font-family="Arial" font-size="9" font-weight="bold" fill="#fff">llm</text>
<text x="390" y="207" font-family="Arial" font-size="7" fill="rgba(255,255,255,0.5)">3,102</text>
<rect x="445" y="175" width="65" height="40" rx="4" fill="rgba(0,0,0,0.2)"/>
<text x="455" y="195" font-family="Arial" font-size="9" font-weight="bold" fill="#fff">drive</text>
<text x="455" y="207" font-family="Arial" font-size="7" fill="rgba(255,255,255,0.5)">3,043</text>
<rect x="30" y="225" width="50" height="32" rx="3" fill="rgba(0,0,0,0.15)"/>
<text x="35" y="243" font-family="Arial" font-size="7" font-weight="bold" fill="#fff">console</text>
<text x="35" y="253" font-family="Arial" font-size="6" fill="rgba(255,255,255,0.5)">3,033</text>
<rect x="88" y="225" width="45" height="32" rx="3" fill="rgba(0,0,0,0.15)"/>
<text x="93" y="243" font-family="Arial" font-size="7" font-weight="bold" fill="#fff">tasks</text>
<text x="93" y="253" font-family="Arial" font-size="6" fill="rgba(255,255,255,0.5)">2,145</text>
<rect x="141" y="225" width="50" height="32" rx="3" fill="rgba(0,0,0,0.15)"/>
<text x="145" y="243" font-family="Arial" font-size="6" font-weight="bold" fill="#fff">vector-db</text>
<text x="148" y="253" font-family="Arial" font-size="6" fill="rgba(255,255,255,0.5)">1,950</text>
<rect x="199" y="225" width="50" height="32" rx="3" fill="rgba(0,0,0,0.15)"/>
<text x="204" y="243" font-family="Arial" font-size="7" font-weight="bold" fill="#fff">directory</text>
<text x="207" y="253" font-family="Arial" font-size="6" fill="rgba(255,255,255,0.5)">1,692</text>
<rect x="257" y="225" width="45" height="32" rx="3" fill="rgba(0,0,0,0.15)"/>
<text x="262" y="243" font-family="Arial" font-size="7" font-weight="bold" fill="#fff">paper</text>
<text x="265" y="253" font-family="Arial" font-size="6" fill="rgba(255,255,255,0.5)">1,648</text>
<rect x="310" y="225" width="42" height="32" rx="3" fill="rgba(0,0,0,0.15)"/>
<text x="315" y="243" font-family="Arial" font-size="7" font-weight="bold" fill="#fff">meet</text>
<text x="318" y="253" font-family="Arial" font-size="6" fill="rgba(255,255,255,0.5)">1,513</text>
<rect x="360" y="225" width="55" height="32" rx="3" fill="rgba(0,0,0,0.15)"/>
<text x="365" y="243" font-family="Arial" font-size="6" font-weight="bold" fill="#fff">whatsapp</text>
<text x="368" y="253" font-family="Arial" font-size="6" fill="rgba(255,255,255,0.5)">1,121</text>
<rect x="423" y="225" width="87" height="32" rx="3" fill="rgba(0,0,0,0.12)"/>
<text x="430" y="243" font-family="Arial" font-size="7" fill="rgba(255,255,255,0.6)">+12 more services</text>
<text x="500" y="430" font-family="Arial" font-size="42" font-weight="bold" fill="rgba(255,255,255,0.1)">45%</text>
</g>
<!-- botbook 20% -->
<g filter="url(#s)">
<rect x="565" y="70" width="280" height="180" rx="8" fill="url(#g2)"/>
<text x="580" y="95" font-family="Arial" font-size="14" font-weight="bold" fill="#fff">botbook</text>
<text x="580" y="110" font-family="Arial" font-size="9" fill="rgba(255,255,255,0.7)">105,697 lines | Documentation</text>
<rect x="580" y="120" width="75" height="35" rx="4" fill="rgba(0,0,0,0.2)"/>
<text x="588" y="138" font-family="Arial" font-size="8" font-weight="bold" fill="#fff">Dialogs</text>
<text x="588" y="148" font-family="Arial" font-size="6" fill="rgba(255,255,255,0.5)">90+ keywords</text>
<rect x="663" y="120" width="75" height="35" rx="4" fill="rgba(0,0,0,0.2)"/>
<text x="671" y="138" font-family="Arial" font-size="8" font-weight="bold" fill="#fff">REST API</text>
<text x="671" y="148" font-family="Arial" font-size="6" fill="rgba(255,255,255,0.5)">25+ endpoints</text>
<rect x="746" y="120" width="75" height="35" rx="4" fill="rgba(0,0,0,0.2)"/>
<text x="754" y="138" font-family="Arial" font-size="8" font-weight="bold" fill="#fff">Templates</text>
<text x="754" y="148" font-family="Arial" font-size="6" fill="rgba(255,255,255,0.5)">20+ bots</text>
<text x="795" y="235" font-family="Arial" font-size="30" font-weight="bold" fill="rgba(255,255,255,0.1)">20%</text>
</g>
<!-- botui 14% -->
<g filter="url(#s)">
<rect x="855" y="70" width="330" height="180" rx="8" fill="url(#g3)"/>
<text x="870" y="95" font-family="Arial" font-size="14" font-weight="bold" fill="#fff">botui</text>
<text x="870" y="110" font-family="Arial" font-size="9" fill="rgba(255,255,255,0.7)">74,715 lines | Web Interface</text>
<rect x="870" y="120" width="110" height="40" rx="4" fill="rgba(0,0,0,0.2)"/>
<text x="880" y="140" font-family="Arial" font-size="8" font-weight="bold" fill="#fff">HTMX Components</text>
<text x="880" y="152" font-family="Arial" font-size="6" fill="rgba(255,255,255,0.5)">Askama templates</text>
<rect x="990" y="120" width="110" height="40" rx="4" fill="rgba(0,0,0,0.2)"/>
<text x="1000" y="140" font-family="Arial" font-size="8" font-weight="bold" fill="#fff">Suite Apps</text>
<text x="1000" y="152" font-family="Arial" font-size="6" fill="rgba(255,255,255,0.5)">Chat, Drive, Mail</text>
<text x="1130" y="235" font-family="Arial" font-size="30" font-weight="bold" fill="rgba(255,255,255,0.1)">14%</text>
</g>
<!-- bottest 14% -->
<g filter="url(#s)">
<rect x="565" y="260" width="180" height="190" rx="8" fill="url(#g4)"/>
<text x="580" y="285" font-family="Arial" font-size="14" font-weight="bold" fill="#fff">bottest</text>
<text x="580" y="300" font-family="Arial" font-size="9" fill="rgba(255,255,255,0.7)">74,894 lines | Testing</text>
<rect x="580" y="310" width="70" height="35" rx="4" fill="rgba(0,0,0,0.2)"/>
<text x="588" y="328" font-family="Arial" font-size="8" font-weight="bold" fill="#fff">Mocks</text>
<text x="588" y="339" font-family="Arial" font-size="6" fill="rgba(255,255,255,0.5)">WA, LLM</text>
<rect x="658" y="310" width="70" height="35" rx="4" fill="rgba(0,0,0,0.2)"/>
<text x="666" y="328" font-family="Arial" font-size="8" font-weight="bold" fill="#fff">Services</text>
<text x="666" y="339" font-family="Arial" font-size="6" fill="rgba(255,255,255,0.5)">DB, Redis</text>
<text x="700" y="435" font-family="Arial" font-size="26" font-weight="bold" fill="rgba(255,255,255,0.1)">14%</text>
</g>
<!-- botapp 10% -->
<g filter="url(#s)">
<rect x="755" y="260" width="170" height="190" rx="8" fill="url(#g5)"/>
<text x="770" y="285" font-family="Arial" font-size="14" font-weight="bold" fill="#fff">botapp</text>
<text x="770" y="300" font-family="Arial" font-size="9" fill="rgba(255,255,255,0.7)">53,353 lines | Desktop</text>
<rect x="770" y="310" width="65" height="35" rx="4" fill="rgba(0,0,0,0.2)"/>
<text x="778" y="328" font-family="Arial" font-size="8" font-weight="bold" fill="#fff">Tauri</text>
<text x="778" y="339" font-family="Arial" font-size="6" fill="rgba(255,255,255,0.5)">Desktop</text>
<rect x="843" y="310" width="65" height="35" rx="4" fill="rgba(0,0,0,0.2)"/>
<text x="851" y="328" font-family="Arial" font-size="8" font-weight="bold" fill="#fff">JS Ext</text>
<text x="851" y="339" font-family="Arial" font-size="6" fill="rgba(255,255,255,0.5)">Plugins</text>
<text x="875" y="435" font-family="Arial" font-size="26" font-weight="bold" fill="rgba(255,255,255,0.1)">10%</text>
</g>
<!-- botlib -->
<g filter="url(#s)">
<rect x="935" y="260" width="250" height="90" rx="8" fill="url(#g6)"/>
<text x="950" y="285" font-family="Arial" font-size="12" font-weight="bold" fill="#fff">botlib</text>
<text x="950" y="300" font-family="Arial" font-size="8" fill="rgba(255,255,255,0.7)">2,733 lines | Shared Library</text>
<text x="950" y="315" font-family="Arial" font-size="7" fill="rgba(255,255,255,0.5)">Core types, HTTP, Models</text>
<text x="1145" y="335" font-family="Arial" font-size="20" font-weight="bold" fill="rgba(255,255,255,0.1)">1%</text>
</g>
<!-- botdevice -->
<g filter="url(#s)">
<rect x="15" y="460" width="180" height="105" rx="8" fill="url(#g7)"/>
<text x="30" y="485" font-family="Arial" font-size="12" font-weight="bold" fill="#fff">botdevice</text>
<text x="30" y="500" font-family="Arial" font-size="8" fill="rgba(255,255,255,0.7)">Embedded / IoT</text>
<text x="30" y="515" font-family="Arial" font-size="7" fill="rgba(255,255,255,0.5)">Tauri + ROM</text>
<text x="155" y="550" font-family="Arial" font-size="16" font-weight="bold" fill="rgba(255,255,255,0.1)">2%</text>
</g>
<!-- botmodels -->
<g filter="url(#s)">
<rect x="205" y="460" width="180" height="105" rx="8" fill="url(#g8)"/>
<text x="220" y="485" font-family="Arial" font-size="12" font-weight="bold" fill="#fff">botmodels</text>
<text x="220" y="500" font-family="Arial" font-size="8" fill="rgba(255,255,255,0.7)">2,195 lines | Python ML</text>
<text x="220" y="515" font-family="Arial" font-size="7" fill="rgba(255,255,255,0.5)">ML Models, Training</text>
<text x="345" y="550" font-family="Arial" font-size="16" font-weight="bold" fill="rgba(255,255,255,0.1)">1%</text>
</g>
<!-- botcoder -->
<g filter="url(#s)">
<rect x="395" y="460" width="160" height="105" rx="8" fill="url(#g9)"/>
<text x="410" y="485" font-family="Arial" font-size="12" font-weight="bold" fill="#fff">botcoder</text>
<text x="410" y="500" font-family="Arial" font-size="8" fill="rgba(255,255,255,0.7)">607 lines | AI Coding</text>
<text x="410" y="515" font-family="Arial" font-size="7" fill="rgba(255,255,255,0.5)">AI Assistant</text>
</g>
<!-- bottemplates -->
<g filter="url(#s)">
<rect x="565" y="460" width="185" height="105" rx="8" fill="#795548"/>
<text x="580" y="485" font-family="Arial" font-size="12" font-weight="bold" fill="#fff">bottemplates</text>
<text x="580" y="500" font-family="Arial" font-size="8" fill="rgba(255,255,255,0.7)">Bot Templates</text>
<text x="580" y="515" font-family="Arial" font-size="7" fill="rgba(255,255,255,0.5)">Dialogs, Prompts, Themes</text>
</g>
<!-- botplugin -->
<g filter="url(#s)">
<rect x="760" y="460" width="175" height="105" rx="8" fill="#607d8b"/>
<text x="775" y="485" font-family="Arial" font-size="12" font-weight="bold" fill="#fff">botplugin</text>
<text x="775" y="500" font-family="Arial" font-size="8" fill="rgba(255,255,255,0.7)">Browser Extension</text>
<text x="775" y="515" font-family="Arial" font-size="7" fill="rgba(255,255,255,0.5)">Chrome/Firefox JS</text>
</g>
<!-- Stack info -->
<g filter="url(#s)">
<rect x="945" y="360" width="240" height="205" rx="8" fill="rgba(255,255,255,0.05)" stroke="rgba(255,255,255,0.1)"/>
<text x="960" y="385" font-family="Arial" font-size="11" font-weight="bold" fill="#fff">Technology Stack</text>
<text x="960" y="405" font-family="Arial" font-size="8" fill="#888">Language: Rust</text>
<text x="960" y="420" font-family="Arial" font-size="8" fill="#888">Web: Actix-Web</text>
<text x="960" y="435" font-family="Arial" font-size="8" fill="#888">UI: HTMX + Tailwind</text>
<text x="960" y="450" font-family="Arial" font-size="8" fill="#888">Desktop: Tauri</text>
<text x="960" y="465" font-family="Arial" font-size="8" fill="#888">DB: PostgreSQL</text>
<text x="960" y="480" font-family="Arial" font-size="8" fill="#888">Vector: Custom Hybrid</text>
<text x="960" y="495" font-family="Arial" font-size="8" fill="#888">ML: Python + Rust</text>
<text x="960" y="510" font-family="Arial" font-size="8" fill="#888">Docs: mdBook</text>
<text x="960" y="535" font-family="Arial" font-size="7" fill="#666">Total: ~520,000 lines</text>
<text x="960" y="550" font-family="Arial" font-size="7" fill="#666">11 main components</text>
</g>
<!-- Legend -->
<rect x="15" y="580" width="920" height="105" rx="8" fill="rgba(255,255,255,0.03)" stroke="rgba(255,255,255,0.08)"/>
<text x="30" y="605" font-family="Arial" font-size="11" font-weight="bold" fill="#fff">Legend</text>
<rect x="30" y="620" width="14" height="14" rx="3" fill="url(#g1)"/><text x="50" y="631" font-family="Arial" font-size="8" fill="#aaa">Backend Core</text>
<rect x="130" y="620" width="14" height="14" rx="3" fill="url(#g2)"/><text x="150" y="631" font-family="Arial" font-size="8" fill="#aaa">Documentation</text>
<rect x="240" y="620" width="14" height="14" rx="3" fill="url(#g3)"/><text x="260" y="631" font-family="Arial" font-size="8" fill="#aaa">Web Interface</text>
<rect x="340" y="620" width="14" height="14" rx="3" fill="url(#g4)"/><text x="360" y="631" font-family="Arial" font-size="8" fill="#aaa">Testing</text>
<rect x="410" y="620" width="14" height="14" rx="3" fill="url(#g5)"/><text x="430" y="631" font-family="Arial" font-size="8" fill="#aaa">Desktop App</text>
<rect x="510" y="620" width="14" height="14" rx="3" fill="url(#g6)"/><text x="530" y="631" font-family="Arial" font-size="8" fill="#aaa">Shared Lib</text>
<rect x="600" y="620" width="14" height="14" rx="3" fill="url(#g7)"/><text x="620" y="631" font-family="Arial" font-size="8" fill="#aaa">Embedded</text>
<rect x="690" y="620" width="14" height="14" rx="3" fill="url(#g8)"/><text x="710" y="631" font-family="Arial" font-size="8" fill="#aaa">ML Models</text>
<rect x="780" y="620" width="14" height="14" rx="3" fill="url(#g9)"/><text x="800" y="631" font-family="Arial" font-size="8" fill="#aaa">AI Coder</text>
<text x="30" y="665" font-family="Arial" font-size="9" fill="#666">Sizes proportional to lines of code. Inner boxes show sub-modules within each component.</text>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB