You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .github/copilot-instructions.md
+12-8Lines changed: 12 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
## Project Overview
4
4
5
-
**Yume** (夢 - "dream" in Japanese) is an AI-powered personal assistant that integrates Matrix chat, Home Assistant, calendar events, public transport, and shopping list management. It features advanced memory management, intelligent scheduling, location-based triggers, and an AI agent architecture powered by langchain4j.
5
+
**Yume** (夢 - "dream" in Japanese) is an AI-powered personal assistant that integrates Matrix chat, Home Assistant, calendar events, public transport, sports activities (Strava), health data (Garmin Connect), and shopping list management. It features advanced memory management, intelligent scheduling, location-based triggers, e-ink display support, and an AI agent architecture powered by langchain4j.
Copy file name to clipboardExpand all lines: README.md
+91-1Lines changed: 91 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,10 +15,13 @@
15
15
- 📍 **Geofence Events**: Location-based triggers with distance context from proximity sensors
16
16
- 🚌 **Public Transport Departures**: Real-time transit information via EFA (Elektronisches Fahrplanauskun ftssystem) API with dynamic station lookup and line/direction filtering
17
17
- 🛒 **KitchenOwl Integration**: Manage shopping lists and recipes with intelligent duplicate handling
18
+
- 🏃 **Strava Integration**: Automatic cycling activity logging and analysis with webhook support
19
+
- 💪 **Garmin Health Metrics**: Daily health insights including training load, sleep quality, and fitness status via Garmin Connect
20
+
- 📱 **E-Ink Display Support**: Summarized daily briefings rendered for e-paper displays with optimal readability
18
21
- 🧠 **Advanced Memory System**: Persistent storage with preferences, observations, and reminders
19
22
- 📅 **AI-Powered Day Planner**: Automatic daily planning based on calendar and memories with high-confidence updates
20
23
- ⏰ **Intelligent AI Scheduler**: Context-aware scheduling with deferred execution and adaptive re-evaluation
21
-
- 📊 **Vue.js Dashboard**: Real-time monitoring of memories, schedules, plans, and interactions
24
+
- 📊 **Vue.js Dashboard**: Real-time monitoring of memories, schedules, plans, and interactions with Strava connection management
22
25
- 🔐 **OpenID Connect Authentication**: Secure access to web interface
23
26
24
27
## Architecture
@@ -34,6 +37,9 @@ Yume is built with a modular architecture consisting of several key components:
34
37
-**Home Assistant Service** (`service/provider/`): Integration with Home Assistant API
35
38
-**Calendar & Weather Services** (`service/calendar/`, `service/weather/`): External service integrations
36
39
-**Conversation Service** (`service/conversation/`): Message history and conversation management
40
+
-**Strava Integration Service** (`service/strava/`): OAuth 2.0 authentication and webhook handling for Strava cycling activities
41
+
-**Garmin Connect Service** (`service/garminconnect/`): Health metrics fetcher via Model Context Protocol (MCP)
42
+
-**E-Ink Display Service** (`service/eink/`): Generates optimized content for e-paper displays
37
43
38
44
### AI Agents (langchain4j-powered)
39
45
@@ -45,6 +51,8 @@ Yume is built with a modular architecture consisting of several key components:
45
51
-**SchedulerAgent** (`agent/SchedulerAgent.kt`): Intelligent scheduling with deferred execution, automatic re-evaluation, and dual-approach timing optimization (deterministic + AI-powered). Receives execution summaries from scheduled/geofence events for improved future scheduling decisions.
46
52
-**EfaAgent** (`agent/EfaAgent.kt`): Specialized agent for querying public transport departures. Parses natural language queries to extract station names, line numbers, and destination directions.
47
53
-**KitchenOwlAgent** (`agent/KitchenOwlAgent.kt`): Manages shopping lists and recipes with autonomous decision-making. Intelligently handles duplicate items by checking the list before adding.
54
+
-**SportsActivityAgent** (`agent/SportsActivityAgent.kt`): Analyzes cycling activities from Strava, tracks performance metrics, and provides personalized fitness insights. Triggered by Strava webhooks and scheduled events.
55
+
-**EInkDisplayAgent** (`agent/EInkDisplayAgent.kt`): Generates concise, visually optimized summaries for e-ink display devices with support for Tailwind CSS styling and responsive layouts.
48
56
49
57
Event-triggered agent methods (`handleScheduledEvent`, `handleGeofenceEvent`) re-evaluate current context before acting, ensuring actions remain relevant and avoiding unnecessary messages.
50
58
@@ -65,6 +73,7 @@ langchain4j-powered tools for AI agents:
65
73
-**Home Assistant Tools**: Smart home control and sensor data
66
74
-**EFA Tools**: Public transport departure queries with optional line and direction filtering
67
75
-**KitchenOwl Tools**: Shopping list management and recipe access with batch operations
76
+
-**Strava Activity Tools**: Fetch recent cycling activities and performance metrics
68
77
69
78
### Data Management
70
79
@@ -226,6 +235,87 @@ rest_command:
226
235
227
236
The API validates that `eventType` is either "enter" or "leave" and returns a response indicating success or failure along with any AI-generated message.
228
237
238
+
#### Strava Integration
239
+
240
+
Yume can automatically fetch and analyze your Strava cycling activities through webhook integration:
241
+
242
+
**Setup:**
243
+
244
+
1. Configure Strava OAuth credentials in `application.properties`:
0 commit comments