.ics
files and syncing them using the Google Calendar API.
Overview
This module enables end-to-end calendar integration:- Converts memory traces (JSON) to
.ics
files - Authenticates Google Calendar access
- Syncs events from
.ics
to the user’s Google Calendar
Setup Instructions
1. Create Google Cloud Project
Google Cloud Console: https://console.cloud.google.com/- Select or create a project
- Navigate to APIs & Services → Library
- Enable Google Calendar API
2. Enable Calendar API
Follow the official quickstart guide:https://developers.google.com/calendar/api/quickstart/python
3. Create OAuth 2.0 Credentials
- Go to APIs & Services → Credentials
- Click + CREATE CREDENTIALS → OAuth client ID
-
If prompted to configure the consent screen:
- Choose “External”, click “Create”
- Fill in App name, support email, contact info
- Click “Save and Continue” through remaining steps
-
On OAuth creation page:
- Application type: Desktop App
- Name:
Calendar Sync Local
- Click “Create”
4. Download and Store Credentials
- After creation, download the JSON file
-
Save as:
calendar/credentials.json
-
Add to
.gitignore
:calendar/credentials.json
calendar/token.json
Run the Sync Script
From the project root:- Auth flow opens in browser
- On success,
token.json
is generated - Future runs reuse the token unless revoked
Python Module Overview
authenticate_google()
Handles the full OAuth authentication lifecycle:- Loads existing token from
calendar/token.json
if available - Falls back to browser-based auth via
InstalledAppFlow
- On success, stores updated credentials for reuse
convert_json_folder_to_ics(input_dir, output_dir)
- Parses each
.json
memory file ininput_dir
- Validates traces via
validate_memory_trace(trace)
- Generates
.ics
format VEVENT strings - Outputs
.ics
calendar files tooutput_dir
parse_ics_and_sync(ics_path, service)
-
Parses
.ics
file usingics.Calendar
- Builds Google Calendar payloads
-
Sends each event to Google Calendar using:
service.events().insert(calendarId="primary", body=payload).execute()
- Prints status and error messages
Security & Best Practices
- Never commit
credentials.json
ortoken.json
to version control - Rotate or revoke OAuth tokens as needed
- Log sync actions for debugging and traceability