Scheduled task handlers for automated system maintenance.
- Purpose: Cleans up stale viewing sessions that haven't received heartbeat
updates
- Schedule: Every minute
- Threshold: Sessions older than 60 seconds without heartbeat updates
- Function: Marks stale sessions as not viewing and syncs to Notion
How Viewing Sessions Work:
The viewing system tracks user sessions through periodic heartbeat updates:
- Active Tracking: While users view pages, the frontend sends heartbeat
updates every 10 seconds
- Session Detection: Sessions are considered active when they have recent
heartbeat updates
- Stale Session Cleanup: This cron identifies sessions without heartbeats
for 60+ seconds and marks them as inactive
Processing Flow:
- Lists all viewing blobs with prefix
glimpse--viewing--
- Checks each blob's
lastUpdate
timestamp
- Identifies sessions where:
sessionStart
is not null (marked as actively viewing)
lastUpdate
is older than 60 seconds (no recent heartbeat)
- Updates blob: sets
sessionStart
to null, updates lastUpdate
- Syncs to Notion: Sets "Session start" property to null
- Logs cleanup statistics and any errors
- Purpose: Cleans up orphaned agent blobs
- Schedule: Every minute
- Function: Deletes agent blobs where the agent ID doesn't match the demo's
"Glimpse agents" relation in Notion
- Read-Only Notion: Only reads Notion data, never modifies it
- Blob Cleanup: Removes mismatched/orphaned blobs to keep storage
synchronized with Notion
Cron schedules are managed through the Val Town web interface. Click on each
cron file to modify its schedule as needed.