Files
vip-coordinator/COPILOT_TOOLS_SUMMARY.md
kyle 5ded039793 feat: add GPS tracking with Traccar integration
- Add GPS module with Traccar client service for device management
- Add driver enrollment flow with QR code generation
- Add real-time location tracking on driver profiles
- Add GPS settings configuration in admin tools
- Add Auth0 OpenID Connect setup script for Traccar
- Add deployment configs for production server
- Update nginx configs for SSL on GPS port 5055
- Add timezone setting support
- Various UI improvements and bug fixes

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 18:13:17 +01:00

12 KiB

AI Copilot - New Tools Implementation Summary

Date: 2026-02-01 Status: Complete

Overview

Successfully implemented 11 new tools for the AI Copilot service, enhancing its capabilities for VIP transportation logistics management. All tools follow established patterns, support name-based lookups, and integrate seamlessly with existing Signal and Driver services.


HIGH PRIORITY TOOLS (5)

1. find_available_drivers_for_timerange

Purpose: Find drivers who have no conflicting events during a specific time range

Inputs:

  • startTime (required): Start time of the time range (ISO format)
  • endTime (required): End time of the time range (ISO format)
  • preferredDepartment (optional): Filter by department (OFFICE_OF_DEVELOPMENT, ADMIN)

Returns:

  • List of available drivers with their info (ID, name, phone, department, shift times)
  • Message indicating how many drivers are available

Use Cases:

  • Finding replacement drivers for assignments
  • Planning new events with available resources
  • Quick availability checks during scheduling

2. get_daily_driver_manifest

Purpose: Get a driver's complete schedule for a specific day with all event details

Inputs:

  • driverName OR driverId: Driver identifier (name supports partial match)
  • date (optional): Date in YYYY-MM-DD format (defaults to today)

Returns:

  • Driver information (name, phone, department, shift times)
  • Chronological list of events with:
    • VIP names (resolved from IDs)
    • Locations (pickup/dropoff or general location)
    • Vehicle details (name, license plate, type, capacity)
    • Notes
    • Gap analysis: Time between events in minutes and formatted (e.g., "1h 30m")

Use Cases:

  • Daily briefings for drivers
  • Identifying scheduling efficiency
  • Planning logistics around gaps in schedule

3. send_driver_notification_via_signal

Purpose: Send a message to a driver via Signal messaging

Inputs:

  • driverName OR driverId: Driver identifier
  • message (required): The message content to send
  • relatedEventId (optional): Event ID if message relates to specific event

Returns:

  • Success status
  • Message ID and timestamp
  • Driver info

Integration:

  • Uses MessagesService from SignalModule
  • Stores message in database for history
  • Validates driver has phone number configured

Use Cases:

  • Schedule change notifications
  • Urgent updates
  • General communication with drivers

4. bulk_send_driver_schedules

Purpose: Send daily schedules to multiple or all drivers via Signal

Inputs:

  • date (required): Date in YYYY-MM-DD format for which to send schedules
  • driverNames (optional): Array of driver names (if empty, sends to all with events)

Returns:

  • Summary of sent/failed messages
  • Per-driver results with success/error details

Integration:

  • Uses ScheduleExportService from DriversModule
  • Automatically generates PDF and ICS files
  • Sends via Signal with attachments

Use Cases:

  • Daily schedule distribution
  • Morning briefings
  • Automated schedule delivery

5. find_unassigned_events

Purpose: Find events missing driver and/or vehicle assignments

Inputs:

  • startDate (required): Start date to search (ISO format or YYYY-MM-DD)
  • endDate (required): End date to search (ISO format or YYYY-MM-DD)
  • missingDriver (optional, default true): Find events missing driver
  • missingVehicle (optional, default true): Find events missing vehicle

Returns:

  • Total count of unassigned events
  • Separate counts for missing drivers and missing vehicles
  • Event details with VIP names, times, locations

Use Cases:

  • Scheduling gap identification
  • Daily readiness checks
  • Pre-event validation

MEDIUM PRIORITY TOOLS (6)

6. check_vip_conflicts

Purpose: Check if a VIP has overlapping events in a time range

Inputs:

  • vipName OR vipId: VIP identifier
  • startTime (required): Start time to check (ISO format)
  • endTime (required): End time to check (ISO format)
  • excludeEventId (optional): Event ID to exclude (useful for updates)

Returns:

  • Conflict status (hasConflicts boolean)
  • Count of conflicts
  • List of conflicting events with times and assignments

Use Cases:

  • Preventing VIP double-booking
  • Validating new event proposals
  • Schedule conflict resolution

7. get_weekly_lookahead

Purpose: Get week-by-week summary of upcoming events

Inputs:

  • startDate (optional, defaults to today): YYYY-MM-DD format
  • weeksAhead (optional, default 1): Number of weeks to look ahead

Returns:

  • Per-day breakdown showing:
    • Day of week
    • Event count
    • Unassigned event count
    • Arriving VIPs (from flights and self-driving)
  • Overall summary statistics

Use Cases:

  • Weekly planning sessions
  • Capacity forecasting
  • Resource allocation planning

8. identify_scheduling_gaps

Purpose: Comprehensive audit of upcoming schedule for problems

Inputs:

  • lookaheadDays (optional, default 7): Number of days to audit

Returns:

  • Unassigned events: Events missing driver/vehicle
  • Driver conflicts: Overlapping driver assignments
  • VIP conflicts: Overlapping VIP schedules
  • Detailed conflict information for resolution

Use Cases:

  • Pre-week readiness check
  • Schedule quality assurance
  • Proactive problem identification

9. suggest_vehicle_for_event

Purpose: Recommend vehicles based on capacity and availability

Inputs:

  • eventId (required): The event ID to find vehicle suggestions for

Returns:

  • Ranked list of vehicles with:
    • Availability status (no conflicts during event time)
    • Capacity match (seats >= VIP count)
    • Score-based ranking
  • Separate list of recommended vehicles (available + sufficient capacity)

Scoring System:

  • Available during event time: +10 points
  • Has sufficient capacity: +5 points
  • Status is AVAILABLE (vs RESERVED): +3 points

Use Cases:

  • Vehicle assignment assistance
  • Capacity optimization
  • Last-minute vehicle changes

10. get_vehicle_schedule

Purpose: Get a vehicle's schedule for a date range

Inputs:

  • vehicleName OR vehicleId: Vehicle identifier
  • startDate (required): ISO format or YYYY-MM-DD
  • endDate (required): ISO format or YYYY-MM-DD

Returns:

  • Vehicle details (name, type, license plate, capacity, status)
  • List of scheduled events with:
    • VIP names
    • Driver names
    • Times and locations
    • Event status

Use Cases:

  • Vehicle utilization tracking
  • Maintenance scheduling
  • Availability verification

11. get_driver_workload_summary

Purpose: Get workload statistics for all drivers

Inputs:

  • startDate (required): ISO format or YYYY-MM-DD
  • endDate (required): ISO format or YYYY-MM-DD

Returns:

  • Per-driver metrics:
    • Event count
    • Total hours worked
    • Average hours per event
    • Days worked vs total days in range
    • Utilization percentage
  • Overall summary statistics

Use Cases:

  • Workload balancing
  • Driver utilization analysis
  • Capacity planning
  • Performance reviews

Technical Implementation Details

Module Updates

CopilotModule (backend/src/copilot/copilot.module.ts):

  • Added imports: SignalModule, DriversModule
  • Enables dependency injection of required services

CopilotService (backend/src/copilot/copilot.service.ts):

  • Added service injections:
    • MessagesService (from SignalModule)
    • ScheduleExportService (from DriversModule)
  • Added 11 new tool definitions to the tools array
  • Added 11 new case statements in executeTool() switch
  • Implemented 11 new private methods

Key Implementation Patterns

  1. Name-Based Lookups: All tools support searching by name (not just ID)

    • Uses case-insensitive partial matching
    • Provides helpful error messages with available options if not found
    • Returns multiple matches if ambiguous (asks user to be more specific)
  2. VIP Name Resolution: Events store vipIds array

    • Tools fetch VIP names in bulk for efficiency
    • Creates a Map for O(1) lookup
    • Returns vipNames array alongside event data
  3. Error Handling:

    • All tools return ToolResult with success boolean
    • Includes helpful error messages
    • Lists available options when entity not found
  4. Date Handling:

    • Supports both ISO format and YYYY-MM-DD strings
    • Defaults to "today" where appropriate
    • Proper timezone handling with setHours(0,0,0,0)
  5. Conflict Detection:

    • Uses Prisma OR queries for time overlap detection
    • Checks: event starts during range, ends during range, or spans entire range
    • Excludes CANCELLED events from conflict checks

System Prompt Updates

Updated buildSystemPrompt() to include new capabilities:

  • Signal messaging integration
  • Schedule distribution
  • Availability checking
  • Vehicle suggestions
  • Schedule auditing
  • Workload analysis

Added usage guidelines for:

  • When to use each new tool
  • Message sending best practices
  • Bulk operations

Testing Recommendations

Unit Testing

  • Test name-based lookups with partial matches
  • Test date parsing and timezone handling
  • Test conflict detection logic
  • Test VIP name resolution

Integration Testing

  • Test Signal message sending (requires linked Signal account)
  • Test schedule export and delivery
  • Test driver/vehicle availability checks
  • Test workload calculations

End-to-End Testing

  1. Find available drivers for a time slot
  2. Assign driver to event
  3. Send notification via Signal
  4. Get daily manifest
  5. Send schedule PDF/ICS

Usage Examples

Finding Available Drivers

// AI Copilot can now respond to:
"Who's available tomorrow from 2pm to 5pm?"
"Find drivers in the Office of Development who are free this afternoon"

Sending Driver Notifications

// AI Copilot can now respond to:
"Send a message to John Smith about the schedule change"
"Notify all drivers about tomorrow's early start"

Bulk Schedule Distribution

// AI Copilot can now respond to:
"Send tomorrow's schedules to all drivers"
"Send Monday's schedule to John Smith and Jane Doe"

Schedule Auditing

// AI Copilot can now respond to:
"Check next week's schedule for problems"
"Find events that don't have drivers assigned"
"Are there any VIP conflicts this week?"

Workload Analysis

// AI Copilot can now respond to:
"Show me driver workload for this month"
"Who's working the most hours this week?"
"What's the utilization rate for all drivers?"

Files Modified

  1. G:\VIP_Board\vip-coordinator\backend\src\copilot\copilot.module.ts

    • Added SignalModule and DriversModule imports
  2. G:\VIP_Board\vip-coordinator\backend\src\copilot\copilot.service.ts

    • Added MessagesService and ScheduleExportService imports
    • Updated constructor with service injections
    • Added 11 new tool definitions
    • Added 11 new case statements in executeTool()
    • Implemented 11 new private methods (~800 lines of code)
    • Updated system prompt with new capabilities

Build Status

TypeScript compilation successful All imports resolved No type errors All new tools integrated with existing patterns


Next Steps (Optional Enhancements)

  1. Add more filtering options:

    • Filter drivers by shift availability
    • Filter vehicles by maintenance status
  2. Add analytics:

    • Driver performance metrics
    • Vehicle utilization trends
    • VIP visit patterns
  3. Add notifications:

    • Automatic reminders before events
    • Conflict alerts
    • Capacity warnings
  4. Add batch operations:

    • Bulk driver assignment
    • Mass rescheduling
    • Batch conflict resolution

Notes

  • All tools follow existing code patterns from the CopilotService
  • Integration with Signal requires SIGNAL_CLI_PATH and linked phone number
  • Schedule exports (PDF/ICS) use existing ScheduleExportService
  • All database queries use soft delete filtering (deletedAt: null)
  • Conflict detection excludes CANCELLED events
  • VIP names are resolved in bulk for performance

Implementation Complete

All 11 tools are now available to the AI Copilot and ready for use in the VIP Coordinator application.