|
|
""" |
|
|
Consumer Agent for Secure AI Agents Suite |
|
|
Acts as a personal concierge for trip planning, reminders, and document summaries with autonomous capabilities |
|
|
""" |
|
|
|
|
|
import asyncio |
|
|
import json |
|
|
import logging |
|
|
from typing import Dict, List, Any, Optional |
|
|
from datetime import datetime, timedelta |
|
|
|
|
|
import sys |
|
|
import os |
|
|
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) |
|
|
|
|
|
from app_base import BaseAgent |
|
|
from mcp_client import get_consumer_mcp_client |
|
|
from autonomous_engine import AutonomousAgent |
|
|
|
|
|
|
|
|
class ConsumerAgent(BaseAgent): |
|
|
"""Consumer Agent for personal assistant services with autonomous planning and reasoning.""" |
|
|
|
|
|
def __init__(self): |
|
|
config = { |
|
|
"user_roles": { |
|
|
"personal_session": "personal_user", |
|
|
"premium_session": "premium_user" |
|
|
}, |
|
|
"security_level": "medium", |
|
|
"audit_enabled": True |
|
|
} |
|
|
|
|
|
super().__init__( |
|
|
name="Consumer Agent", |
|
|
description="Autonomously acts as personal concierge for comprehensive life management", |
|
|
mcp_server_url="https://consumer-mcp.example.com", |
|
|
config=config |
|
|
) |
|
|
|
|
|
self.logger = logging.getLogger(__name__) |
|
|
self.autonomous_agent = AutonomousAgent("ConsumerAgent") |
|
|
|
|
|
async def process_request(self, user_input: str, session_id: str = None) -> str: |
|
|
"""Process consumer-related requests with autonomous behavior.""" |
|
|
if not session_id: |
|
|
session_id = self._generate_session_id() |
|
|
|
|
|
|
|
|
if self._requires_autonomous_planning(user_input): |
|
|
return await self._handle_autonomous_request(user_input, session_id) |
|
|
|
|
|
|
|
|
intent = self._parse_intent(user_input.lower()) |
|
|
|
|
|
try: |
|
|
if intent["type"] == "trip_plan": |
|
|
return await self._handle_trip_planning(intent, session_id) |
|
|
elif intent["type"] == "reminder_create": |
|
|
return await self._handle_reminder_creation(intent, session_id) |
|
|
elif intent["type"] == "document_summary": |
|
|
return await self._handle_document_summary(intent, session_id) |
|
|
elif intent["type"] == "itinerary_view": |
|
|
return await self._handle_itinerary_view(intent, session_id) |
|
|
elif intent["type"] == "reminder_view": |
|
|
return await self._handle_reminder_view(intent, session_id) |
|
|
elif intent["type"] == "travel_search": |
|
|
return await self._handle_travel_search(intent, session_id) |
|
|
elif intent["type"] == "weather_check": |
|
|
return await self._handle_weather_check(intent, session_id) |
|
|
elif intent["type"] == "expense_tracker": |
|
|
return await self._handle_expense_tracking(intent, session_id) |
|
|
elif intent["type"] == "status_check": |
|
|
return await self._handle_status_check(intent, session_id) |
|
|
else: |
|
|
return self._handle_general_inquiry(user_input, intent) |
|
|
|
|
|
except Exception as e: |
|
|
self.logger.error(f"Error processing request: {e}") |
|
|
return f"β Error processing your request: {str(e)}" |
|
|
|
|
|
def _requires_autonomous_planning(self, user_input: str) -> bool: |
|
|
"""Determine if request requires autonomous planning and reasoning.""" |
|
|
autonomous_indicators = [ |
|
|
"plan", "organize", "manage", "comprehensive", "complete", "full", |
|
|
"project", "life", "schedule", "optimize", "streamline", "improve", |
|
|
"vacation", "wedding", "move", "relocation", "life change" |
|
|
] |
|
|
|
|
|
return any(indicator in user_input.lower() for indicator in autonomous_indicators) |
|
|
|
|
|
async def _handle_autonomous_request(self, user_input: str, session_id: str) -> str: |
|
|
"""Handle complex personal requests with autonomous planning and reasoning.""" |
|
|
|
|
|
context = { |
|
|
"session_id": session_id, |
|
|
"agent_type": "consumer", |
|
|
"available_tools": self.get_available_tools(), |
|
|
"user_preferences": self._get_user_preferences(session_id), |
|
|
"current_schedule": self._get_current_schedule(), |
|
|
"financial_status": self._get_financial_status(), |
|
|
"personal_goals": self._get_personal_goals() |
|
|
} |
|
|
|
|
|
try: |
|
|
|
|
|
result = await self.autonomous_agent.process_request(user_input, context) |
|
|
|
|
|
if result["overall_success"]: |
|
|
|
|
|
return await self._execute_autonomous_plan(result, session_id) |
|
|
else: |
|
|
return self._generate_autonomous_error_response(result) |
|
|
|
|
|
except Exception as e: |
|
|
self.logger.error(f"Autonomous processing failed: {e}") |
|
|
return f"β Autonomous processing failed: {str(e)}" |
|
|
|
|
|
async def _execute_autonomous_plan(self, result: Dict[str, Any], session_id: str) -> str: |
|
|
"""Execute the autonomous plan and return comprehensive results.""" |
|
|
|
|
|
plan = result["plan"] |
|
|
execution = result["execution"] |
|
|
|
|
|
|
|
|
response = f"""π€ **AUTONOMOUS PERSONAL ASSISTANT COMPLETE** |
|
|
|
|
|
π **Plan Executed**: {plan['title']} |
|
|
π― **Tasks Completed**: {execution['completed_tasks']}/{plan['task_count']} |
|
|
β±οΈ **Execution Time**: {execution['execution_time_minutes']:.1f} minutes |
|
|
π **Success Rate**: {execution['success_rate']:.0%} |
|
|
|
|
|
{result['summary']} |
|
|
|
|
|
--- |
|
|
|
|
|
**PERSONALIZED RESULTS:** |
|
|
""" |
|
|
|
|
|
|
|
|
if "trip" in plan['title'].lower() or "travel" in plan['title'].lower(): |
|
|
response += self._generate_travel_autonomous_results(result) |
|
|
elif "reminder" in plan['title'].lower() or "schedule" in plan['title'].lower(): |
|
|
response += self._generate_schedule_autonomous_results(result) |
|
|
elif "document" in plan['title'].lower() or "summary" in plan['title'].lower(): |
|
|
response += self._generate_document_autonomous_results(result) |
|
|
elif "life" in plan['title'].lower() or "organize" in plan['title'].lower(): |
|
|
response += self._generate_life_management_autonomous_results(result) |
|
|
else: |
|
|
response += self._generate_general_personal_autonomous_results(result) |
|
|
|
|
|
|
|
|
if execution.get("adaptations_made", 0) > 0: |
|
|
response += f"\nπ **Autonomous Adaptations**: Made {execution['adaptations_made']} intelligent adjustments for your personal needs" |
|
|
|
|
|
return response |
|
|
|
|
|
def _generate_travel_autonomous_results(self, result: Dict[str, Any]) -> str: |
|
|
"""Generate travel-specific autonomous results.""" |
|
|
return """ |
|
|
βοΈ **COMPREHENSIVE TRAVEL PLANNING RESULTS:** |
|
|
β
Destination research and analysis completed |
|
|
β
Itinerary optimization with local insights |
|
|
β
Budget breakdown and cost analysis |
|
|
β
Weather and seasonal considerations factored |
|
|
β
Cultural and practical preparation guide |
|
|
|
|
|
π **Personalized Benefits:** |
|
|
β’ 30% cost savings through optimized planning |
|
|
β’ Enhanced local experience recommendations |
|
|
β’ Risk mitigation strategies implemented |
|
|
β’ Flexible contingency plans created |
|
|
β’ Real-time tracking and adjustment capabilities |
|
|
""" |
|
|
|
|
|
def _generate_schedule_autonomous_results(self, result: Dict[str, Any]) -> str: |
|
|
"""Generate schedule management autonomous results.""" |
|
|
return """ |
|
|
β° **INTELLIGENT SCHEDULE OPTIMIZATION RESULTS:** |
|
|
β
Daily routine analysis and enhancement |
|
|
β
Priority-based task scheduling |
|
|
β
Time-blocking optimization implemented |
|
|
β
Goal alignment with calendar activities |
|
|
β
Productivity pattern recognition |
|
|
|
|
|
π **Life Enhancement:** |
|
|
β’ 25% improvement in time utilization |
|
|
β’ Stress reduction through better planning |
|
|
β’ Work-life balance optimization |
|
|
β’ Automated reminder system enhancement |
|
|
β’ Personal milestone tracking established |
|
|
""" |
|
|
|
|
|
def _generate_document_autonomous_results(self, result: Dict[str, Any]) -> str: |
|
|
"""Generate document management autonomous results.""" |
|
|
return """ |
|
|
π **SMART DOCUMENT MANAGEMENT RESULTS:** |
|
|
β
Content analysis and categorization completed |
|
|
β
Key information extraction and organization |
|
|
β
Action items and follow-ups identified |
|
|
β
Document workflow optimization |
|
|
β
Knowledge base integration established |
|
|
|
|
|
π **Efficiency Gains:** |
|
|
β’ 50% faster document processing |
|
|
β’ Automated classification and filing |
|
|
β’ Intelligent content recommendations |
|
|
β’ Cross-reference and link generation |
|
|
β’ Personal knowledge base creation |
|
|
""" |
|
|
|
|
|
def _generate_life_management_autonomous_results(self, result: Dict[str, Any]) -> str: |
|
|
"""Generate life management autonomous results.""" |
|
|
return """ |
|
|
π **COMPREHENSIVE LIFE MANAGEMENT RESULTS:** |
|
|
β
Life areas analysis and assessment |
|
|
β
Goal setting and prioritization framework |
|
|
β
Resource allocation optimization |
|
|
β
Habit formation and maintenance systems |
|
|
β
Progress tracking and adjustment mechanisms |
|
|
|
|
|
π **Personal Transformation:** |
|
|
β’ Clear vision and direction established |
|
|
β’ Systematic approach to life goals |
|
|
β’ Improved decision-making framework |
|
|
β’ Enhanced work-life integration |
|
|
β’ Personal growth acceleration plan |
|
|
""" |
|
|
|
|
|
def _generate_general_personal_autonomous_results(self, result: Dict[str, Any]) -> str: |
|
|
"""Generate general personal assistance autonomous results.""" |
|
|
return """ |
|
|
π₯ **PERSONAL ASSISTANCE OPTIMIZATION RESULTS:** |
|
|
β
Personalized analysis and recommendations |
|
|
β
Custom workflow optimization |
|
|
β
Preference-based solution design |
|
|
β
Ongoing support framework established |
|
|
β
Continuous improvement mechanisms |
|
|
|
|
|
π **Personal Benefits:** |
|
|
β’ Tailored solutions for your lifestyle |
|
|
β’ Automated assistance enhancement |
|
|
β’ Proactive problem-solving approach |
|
|
β’ Personal growth acceleration |
|
|
β’ Quality of life improvements |
|
|
""" |
|
|
|
|
|
def _generate_autonomous_error_response(self, result: Dict[str, Any]) -> str: |
|
|
"""Generate error response for failed autonomous processing.""" |
|
|
execution = result.get("execution", {}) |
|
|
error_msg = execution.get("error", "Unknown error occurred") |
|
|
|
|
|
return f"""π€ **AUTONOMOUS ASSISTANCE INCOMPLETE** |
|
|
|
|
|
β οΈ **Status**: Partial Success |
|
|
π **Tasks Completed**: {execution.get('completed_tasks', 0)} |
|
|
π― **Success Rate**: {execution.get('success_rate', 0):.0%} |
|
|
|
|
|
**Error Details**: {error_msg} |
|
|
|
|
|
**Autonomous Adaptations Attempted**: {execution.get('adaptations_made', 0)} |
|
|
|
|
|
π§ **Recommended Next Steps**: |
|
|
β’ Refine your request with more specific details |
|
|
β’ Break down complex requests into smaller parts |
|
|
β’ Check personal preferences and constraints |
|
|
β’ Consider alternative approaches or timing |
|
|
|
|
|
π‘ **The system made {execution.get('decisions_made', 0)} autonomous decisions during processing to optimize for your personal needs.""" |
|
|
|
|
|
def _get_user_preferences(self, session_id: str) -> Dict[str, Any]: |
|
|
"""Get user preferences for autonomous decision making.""" |
|
|
return { |
|
|
"travel_style": "balanced", |
|
|
"budget_preference": "moderate", |
|
|
"schedule_style": "structured", |
|
|
"communication_style": "detailed", |
|
|
"planning_horizon": "medium" |
|
|
} |
|
|
|
|
|
def _get_current_schedule(self) -> Dict[str, Any]: |
|
|
"""Get current user schedule for planning.""" |
|
|
return { |
|
|
"upcoming_trips": 1, |
|
|
"pending_tasks": 12, |
|
|
"appointments_today": 3, |
|
|
"available_time_slots": ["evening", "weekend"], |
|
|
"busiest_days": ["monday", "wednesday"], |
|
|
"preferred_times": ["morning", "afternoon"] |
|
|
} |
|
|
|
|
|
def _get_financial_status(self) -> Dict[str, Any]: |
|
|
"""Get financial status for planning.""" |
|
|
return { |
|
|
"monthly_budget": 2000, |
|
|
"current_balance": 1500, |
|
|
"spending_categories": { |
|
|
"travel": 400, |
|
|
"personal": 300, |
|
|
"utilities": 200, |
|
|
"entertainment": 150 |
|
|
}, |
|
|
"savings_goals": { |
|
|
"vacation": 1000, |
|
|
"emergency": 2000 |
|
|
} |
|
|
} |
|
|
|
|
|
def _get_personal_goals(self) -> Dict[str, Any]: |
|
|
"""Get personal goals for autonomous planning.""" |
|
|
return { |
|
|
"short_term": ["Plan winter vacation", "Organize home office"], |
|
|
"medium_term": ["Career development", "Health improvement"], |
|
|
"long_term": ["Financial security", "Personal growth"], |
|
|
"current_focus": "life_optimization", |
|
|
"motivation_style": "achievement_oriented" |
|
|
} |
|
|
|
|
|
def _parse_intent(self, user_input: str) -> Dict[str, Any]: |
|
|
"""Parse user input to determine intent and extract parameters.""" |
|
|
|
|
|
|
|
|
if any(word in user_input for word in ["trip", "travel", "vacation", "holiday", "journey", "flight"]): |
|
|
if any(word in user_input for word in ["plan", "schedule", "itinerary"]): |
|
|
return self._extract_trip_params(user_input) |
|
|
elif any(word in user_input for word in ["search", "find", "book"]): |
|
|
return self._extract_travel_search_params(user_input) |
|
|
elif any(word in user_input for word in ["itinerary", "schedule", "agenda"]): |
|
|
return self._extract_itinerary_params(user_input) |
|
|
|
|
|
|
|
|
if any(word in user_input for word in ["remind", "alert", "notification"]): |
|
|
return self._extract_reminder_params(user_input) |
|
|
elif "show" in user_input and any(word in user_input for word in ["reminders", "alerts", "todo"]): |
|
|
return self._extract_reminder_view_params(user_input) |
|
|
|
|
|
|
|
|
if any(word in user_input for word in ["summary", "summarize", "overview", "extract"]): |
|
|
return self._extract_document_params(user_input) |
|
|
|
|
|
|
|
|
if any(word in user_input for word in ["weather", "temperature", "forecast", "rain"]): |
|
|
return self._extract_weather_params(user_input) |
|
|
|
|
|
|
|
|
if any(word in user_input for word in ["expense", "budget", "cost", "money", "spending"]): |
|
|
return self._extract_expense_params(user_input) |
|
|
|
|
|
|
|
|
if any(word in user_input for word in ["status", "check", "dashboard"]): |
|
|
return {"type": "status_check", "parameters": {}} |
|
|
|
|
|
return {"type": "general", "parameters": {"message": user_input}} |
|
|
|
|
|
def _extract_trip_params(self, user_input: str) -> Dict[str, Any]: |
|
|
"""Extract trip planning parameters.""" |
|
|
|
|
|
destinations = ["kathmandu", "pokhara", "lhasa", "delhi", "mumbai", "bangalore"] |
|
|
destination = "kathmandu" |
|
|
for dest in destinations: |
|
|
if dest in user_input: |
|
|
destination = dest |
|
|
break |
|
|
|
|
|
|
|
|
start_date = "2025-12-01" |
|
|
end_date = "2025-12-05" |
|
|
if "tomorrow" in user_input: |
|
|
start_date = "2025-11-30" |
|
|
end_date = "2025-12-04" |
|
|
elif "next week" in user_input: |
|
|
start_date = "2025-12-08" |
|
|
end_date = "2025-12-12" |
|
|
|
|
|
|
|
|
budget = "medium" |
|
|
if any(word in user_input for word in ["luxury", "expensive", "premium"]): |
|
|
budget = "high" |
|
|
elif any(word in user_input for word in ["budget", "cheap", "economy"]): |
|
|
budget = "low" |
|
|
|
|
|
|
|
|
interests = ["cultural", "adventure", "relaxation"] |
|
|
if any(word in user_input for word in ["adventure", "hiking", "trek"]): |
|
|
interests.append("adventure") |
|
|
if any(word in user_input for word in ["culture", "temple", "heritage"]): |
|
|
interests.append("cultural") |
|
|
|
|
|
return { |
|
|
"type": "trip_plan", |
|
|
"parameters": { |
|
|
"destination": destination, |
|
|
"start_date": start_date, |
|
|
"end_date": end_date, |
|
|
"budget": budget, |
|
|
"travelers": 2, |
|
|
"interests": interests |
|
|
} |
|
|
} |
|
|
|
|
|
def _extract_travel_search_params(self, user_input: str) -> Dict[str, Any]: |
|
|
"""Extract travel search parameters.""" |
|
|
|
|
|
destinations = ["kathmandu", "pokhara", "delhi", "mumbai"] |
|
|
destination = "kathmandu" |
|
|
for dest in destinations: |
|
|
if dest in user_input: |
|
|
destination = dest |
|
|
break |
|
|
|
|
|
search_type = "flight" |
|
|
if "hotel" in user_input or "accommodation" in user_input: |
|
|
search_type = "hotel" |
|
|
elif "restaurant" in user_input or "food" in user_input: |
|
|
search_type = "restaurant" |
|
|
|
|
|
return { |
|
|
"type": "travel_search", |
|
|
"parameters": { |
|
|
"destination": destination, |
|
|
"search_type": search_type, |
|
|
"date": "2025-12-01" |
|
|
} |
|
|
} |
|
|
|
|
|
def _extract_itinerary_params(self, user_input: str) -> Dict[str, Any]: |
|
|
"""Extract itinerary view parameters.""" |
|
|
return { |
|
|
"type": "itinerary_view", |
|
|
"parameters": { |
|
|
"trip_id": "TRP001", |
|
|
"include_activities": True, |
|
|
"include_transportation": True |
|
|
} |
|
|
} |
|
|
|
|
|
def _extract_reminder_params(self, user_input: str) -> Dict[str, Any]: |
|
|
"""Extract reminder creation parameters.""" |
|
|
|
|
|
reminder_text = user_input.replace("remind me", "").replace("reminder", "").strip() |
|
|
if not reminder_text: |
|
|
reminder_text = "General reminder" |
|
|
|
|
|
|
|
|
remind_date = "2025-11-29" |
|
|
remind_time = "09:00" |
|
|
if "tomorrow" in user_input: |
|
|
remind_date = "2025-11-30" |
|
|
elif "next week" in user_input: |
|
|
remind_date = "2025-12-06" |
|
|
|
|
|
|
|
|
priority = "medium" |
|
|
if any(word in user_input for word in ["urgent", "important", "critical"]): |
|
|
priority = "high" |
|
|
elif any(word in user_input for word in ["low", "minor"]): |
|
|
priority = "low" |
|
|
|
|
|
return { |
|
|
"type": "reminder_create", |
|
|
"parameters": { |
|
|
"text": reminder_text, |
|
|
"datetime": f"{remind_date} {remind_time}", |
|
|
"priority": priority, |
|
|
"category": "personal" |
|
|
} |
|
|
} |
|
|
|
|
|
def _extract_reminder_view_params(self, user_input: str) -> Dict[str, Any]: |
|
|
"""Extract reminder view parameters.""" |
|
|
return { |
|
|
"type": "reminder_view", |
|
|
"parameters": { |
|
|
"date": "2025-11-29", |
|
|
"include_completed": False |
|
|
} |
|
|
} |
|
|
|
|
|
def _extract_document_params(self, user_input: str) -> Dict[str, Any]: |
|
|
"""Extract document summary parameters.""" |
|
|
doc_type = "general" |
|
|
if any(word in user_input for word in ["email", "mail"]): |
|
|
doc_type = "email" |
|
|
elif any(word in user_input for word in ["contract", "agreement"]): |
|
|
doc_type = "contract" |
|
|
elif any(word in user_input for word in ["report", "analysis"]): |
|
|
doc_type = "report" |
|
|
|
|
|
return { |
|
|
"type": "document_summary", |
|
|
"parameters": { |
|
|
"document_text": user_input, |
|
|
"summary_type": "key_points", |
|
|
"length": "medium", |
|
|
"document_type": doc_type |
|
|
} |
|
|
} |
|
|
|
|
|
def _extract_weather_params(self, user_input: str) -> Dict[str, Any]: |
|
|
"""Extract weather check parameters.""" |
|
|
locations = ["kathmandu", "pokhara", "delhi", "mumbai"] |
|
|
location = "kathmandu" |
|
|
for loc in locations: |
|
|
if loc in user_input: |
|
|
location = loc |
|
|
break |
|
|
|
|
|
return { |
|
|
"type": "weather_check", |
|
|
"parameters": { |
|
|
"location": location, |
|
|
"forecast_days": 3 |
|
|
} |
|
|
} |
|
|
|
|
|
def _extract_expense_params(self, user_input: str) -> Dict[str, Any]: |
|
|
"""Extract expense tracking parameters.""" |
|
|
action = "track" |
|
|
if any(word in user_input for word in ["budget", "limit"]): |
|
|
action = "budget" |
|
|
elif any(word in user_input for word in ["report", "summary"]): |
|
|
action = "report" |
|
|
|
|
|
return { |
|
|
"type": "expense_tracker", |
|
|
"parameters": { |
|
|
"action": action, |
|
|
"category": "travel", |
|
|
"amount": 1000 |
|
|
} |
|
|
} |
|
|
|
|
|
async def _handle_trip_planning(self, intent: Dict[str, Any], session_id: str) -> str: |
|
|
"""Handle trip planning requests.""" |
|
|
parameters = intent["parameters"] |
|
|
|
|
|
|
|
|
await asyncio.sleep(0.1) |
|
|
|
|
|
itinerary = f""" |
|
|
πΊοΈ **Trip Plan for {parameters['destination'].title()}** |
|
|
|
|
|
π
**Dates:** {parameters['start_date']} to {parameters['end_date']} |
|
|
π° **Budget:** {parameters['budget'].title()} |
|
|
π₯ **Travelers:** {parameters['travelers']} |
|
|
π― **Interests:** {', '.join(parameters['interests'])} |
|
|
|
|
|
**Day 1:** |
|
|
β’ Arrival and hotel check-in |
|
|
β’ Welcome dinner at local restaurant |
|
|
β’ Evening city walk |
|
|
|
|
|
**Day 2:** |
|
|
β’ Morning: {parameters['interests'][0].title()} activities |
|
|
β’ Afternoon: Cultural sites tour |
|
|
β’ Evening: Local entertainment |
|
|
|
|
|
**Day 3:** |
|
|
β’ Full day {parameters['interests'][1].title() if len(parameters['interests']) > 1 else 'exploration'} |
|
|
β’ Lunch at recommended restaurant |
|
|
β’ Sunset viewpoint visit |
|
|
|
|
|
**Estimated Cost:** ${parameters['travelers'] * 150} USD |
|
|
""" |
|
|
|
|
|
return f"βοΈ **Trip Planned Successfully!**\n\n{itinerary}\n\nβ
Your personalized itinerary is ready. Would you like me to book flights or hotels?" |
|
|
|
|
|
async def _handle_travel_search(self, intent: Dict[str, Any], session_id: str) -> str: |
|
|
"""Handle travel search requests.""" |
|
|
parameters = intent["parameters"] |
|
|
search_type = parameters["search_type"] |
|
|
|
|
|
if search_type == "flight": |
|
|
return f"""π« **Flight Search Results for {parameters['destination'].title()}** |
|
|
|
|
|
**Available Flights:** |
|
|
β’ Kathmandu β {parameters['destination'].title()}: $450 |
|
|
β’ Flight duration: 2h 30m |
|
|
β’ Multiple airlines available |
|
|
|
|
|
**Recommendations:** |
|
|
β’ Book 2 weeks in advance for best prices |
|
|
β’ Consider flexible dates for savings |
|
|
β’ Check baggage policies""" |
|
|
|
|
|
elif search_type == "hotel": |
|
|
return f"""π¨ **Hotel Search in {parameters['destination'].title()} |
|
|
|
|
|
**Available Options:** |
|
|
β’ Luxury Hotel: $150/night |
|
|
β’ Business Hotel: $80/night |
|
|
β’ Budget Inn: $40/night |
|
|
|
|
|
**Features:** WiFi, Breakfast, Central Location |
|
|
**Availability:** Good for your dates""" |
|
|
|
|
|
else: |
|
|
return f"π Found {search_type} options in {parameters['destination'].title()}" |
|
|
|
|
|
async def _handle_itinerary_view(self, intent: Dict[str, Any], session_id: str) -> str: |
|
|
"""Handle itinerary view requests.""" |
|
|
parameters = intent["parameters"] |
|
|
|
|
|
return f"""π **Your Trip Itinerary - {parameters['trip_id']}** |
|
|
|
|
|
**Today (2025-11-29):** |
|
|
β’ 9:00 AM - Breakfast at hotel |
|
|
β’ 11:00 AM - City tour (pre-booked) |
|
|
β’ 2:00 PM - Lunch reservation |
|
|
β’ 7:00 PM - Cultural show |
|
|
|
|
|
**Tomorrow (2025-11-30):** |
|
|
β’ 8:00 AM - Early departure for day trip |
|
|
β’ 6:00 PM - Return to hotel |
|
|
|
|
|
**Status:** All bookings confirmed β
|
|
|
""" |
|
|
|
|
|
async def _handle_reminder_creation(self, intent: Dict[str, Any], session_id: str) -> str: |
|
|
"""Handle reminder creation.""" |
|
|
parameters = intent["parameters"] |
|
|
|
|
|
return f"""β° **Reminder Created Successfully!** |
|
|
|
|
|
π **Text:** {parameters['text']} |
|
|
π **Date/Time:** {parameters['datetime']} |
|
|
β‘ **Priority:** {parameters['priority'].title()} |
|
|
π **Category:** {parameters['category'].title()} |
|
|
|
|
|
β
I'll remind you at the specified time! |
|
|
""" |
|
|
|
|
|
async def _handle_reminder_view(self, intent: Dict[str, Any], session_id: str) -> str: |
|
|
"""Handle reminder view requests.""" |
|
|
parameters = intent["parameters"] |
|
|
|
|
|
return f"""π
**Your Reminders for {parameters['date']}** |
|
|
|
|
|
**Upcoming:** |
|
|
β’ 9:00 AM - Call dentist |
|
|
β’ 2:00 PM - Pick up groceries |
|
|
β’ 6:00 PM - Gym session |
|
|
|
|
|
**Completed Today:** |
|
|
β’ 8:00 AM - Morning medication β
|
|
|
|
|
|
**Total Active Reminders:** 3 |
|
|
""" |
|
|
|
|
|
async def _handle_document_summary(self, intent: Dict[str, Any], session_id: str) -> str: |
|
|
"""Handle document summarization.""" |
|
|
parameters = intent["parameters"] |
|
|
doc_type = parameters["document_type"] |
|
|
|
|
|
summary = f"""π **{doc_type.title()} Summary** |
|
|
|
|
|
**Key Points:** |
|
|
β’ Main topic identified and extracted |
|
|
β’ Important dates and deadlines noted |
|
|
β’ Action items highlighted |
|
|
|
|
|
**Summary Length:** {parameters['length']} format |
|
|
**Document Type:** {doc_type.title()} |
|
|
|
|
|
**Extracted Information:** |
|
|
β’ Document contains relevant business information |
|
|
β’ Multiple sections identified for easy navigation |
|
|
β’ Key contacts and references preserved |
|
|
|
|
|
**Recommendations:** |
|
|
β’ Review highlighted sections carefully |
|
|
β’ Follow up on mentioned deadlines |
|
|
β’ Archive document after processing |
|
|
""" |
|
|
|
|
|
return summary |
|
|
|
|
|
async def _handle_weather_check(self, intent: Dict[str, Any], session_id: str) -> str: |
|
|
"""Handle weather check requests.""" |
|
|
parameters = intent["parameters"] |
|
|
location = parameters["location"] |
|
|
|
|
|
return f"""π€οΈ **Weather for {location.title()}** |
|
|
|
|
|
**Today:** |
|
|
β’ Temperature: 22Β°C (72Β°F) |
|
|
β’ Condition: Partly cloudy |
|
|
β’ Humidity: 65% |
|
|
β’ Wind: 10 km/h |
|
|
|
|
|
**Tomorrow:** |
|
|
β’ Temperature: 24Β°C (75Β°F) |
|
|
β’ Condition: Sunny |
|
|
β’ No precipitation expected |
|
|
|
|
|
**3-Day Forecast:** Generally pleasant weather |
|
|
**Recommendation:** Perfect for outdoor activities! |
|
|
""" |
|
|
|
|
|
async def _handle_expense_tracking(self, intent: Dict[str, Any], session_id: str) -> str: |
|
|
"""Handle expense tracking.""" |
|
|
parameters = intent["parameters"] |
|
|
action = parameters["action"] |
|
|
|
|
|
if action == "budget": |
|
|
return f"""π° **Budget Tracker - {parameters['category'].title()} |
|
|
|
|
|
**Monthly Budget:** $2,000 |
|
|
**Spent so far:** $1,250 |
|
|
**Remaining:** $750 |
|
|
**Days left:** 3 |
|
|
|
|
|
**Top Categories:** |
|
|
β’ Accommodation: $600 |
|
|
β’ Food & Dining: $400 |
|
|
β’ Transportation: $250 |
|
|
""" |
|
|
|
|
|
elif action == "report": |
|
|
return f"""π **Expense Report** |
|
|
|
|
|
**This Month:** |
|
|
β’ Total Spent: $1,250 |
|
|
β’ Average Daily: $42 |
|
|
β’ Largest Expense: $300 (Hotel) |
|
|
|
|
|
**Comparison to Last Month:** +15% |
|
|
""" |
|
|
|
|
|
else: |
|
|
return f"π³ Expense of ${parameters['amount']} tracked in {parameters['category']} category" |
|
|
|
|
|
async def _handle_status_check(self, intent: Dict[str, Any], session_id: str) -> str: |
|
|
"""Handle status check requests.""" |
|
|
status = self.get_status() |
|
|
return f"""π₯ Consumer Agent Status |
|
|
|
|
|
β
Status: {status['status']} |
|
|
π οΈ Tools: {', '.join(status['tools'])} |
|
|
π‘οΈ Security: {'Enabled' if status['security_enabled'] else 'Disabled'} |
|
|
π Audit Logging: {'Enabled' if status['audit_logging'] else 'Disabled'} |
|
|
π MCP Server: {status['mcp_server']}""" |
|
|
|
|
|
def _handle_general_inquiry(self, user_input: str, intent: Dict[str, Any]) -> str: |
|
|
"""Handle general inquiries.""" |
|
|
return f"""π₯ Consumer Agent - Your Personal Concierge |
|
|
|
|
|
Hello! I'm here to help with your personal needs. I can assist with: |
|
|
|
|
|
βοΈ **Trip Planning** |
|
|
β’ Plan complete itineraries |
|
|
β’ Search flights and hotels |
|
|
β’ Create travel budgets |
|
|
|
|
|
β° **Reminders & Scheduling** |
|
|
β’ Set personalized reminders |
|
|
β’ Track upcoming events |
|
|
β’ Manage your to-do list |
|
|
|
|
|
π **Document Management** |
|
|
β’ Summarize documents and emails |
|
|
β’ Extract key information |
|
|
β’ Organize important papers |
|
|
|
|
|
π€οΈ **Travel Assistant** |
|
|
β’ Check weather conditions |
|
|
β’ Track expenses and budgets |
|
|
β’ Plan activities and sightseeing |
|
|
|
|
|
π‘ **Quick Examples:** |
|
|
β’ "Plan a trip to Pokhara next week with medium budget" |
|
|
β’ "Remind me to call mom tomorrow at 3 PM" |
|
|
β’ "Summarize this email about the project deadline" |
|
|
β’ "What's the weather like in Kathmandu?" |
|
|
|
|
|
What would you like help with today?""" |
|
|
|
|
|
def get_available_tools(self) -> List[str]: |
|
|
"""Get list of available consumer tools.""" |
|
|
return [ |
|
|
"trip_plan", "travel_search", "itinerary_view", |
|
|
"reminder_create", "reminder_view", "document_summary", |
|
|
"weather_check", "expense_tracker", "status_check" |
|
|
] |