Marco

Contacts Integration

Google People API sync, paginated list, connect-state gating.

Contacts Integration (v2026-08-22T175604Z-b502e8bc6d) 2026-08-22 | Google People API sync, paginated list, connect-state gating. 1 - Contacts API Sync - Syncs contacts from Google People API contacts_sync POST /api/contacts/sync googleapiclient.discovery.build service.people().connections().list contacts:_sync_state Hank contacts:_sync_state contacts:people:* Google People API people/me connections().list nextSyncToken nextPageToken sync request API response 2 - Contacts List - Retrieves and filters contacts contacts_list GET /api/contacts/list st.list("contacts:people:*") search filtering pagination Hank contacts:people:* list request 3 - Contacts Page - Displays contacts in UI ContactsPage fetchPage useEffect loadMore ContactsPage.tsx Contacts API GET /api/contacts/status GET /api/contacts/list status request 1. Trigger sync 2. Fetch contacts 3. Filter and paginate 4. Display contacts 5. Load more contacts 6. Update UI Sync request payload { "full": false } Contact data example { "name": "John Doe", "email": "john.doe@example.com", "company": "Example Corp" } The ContactsPage component handles UI interactions and data fetching. The contacts_sync function interacts with the Google People API to sync contacts. Legend actor = initiates work · process = code path · store = state on disk · bus = durable queue · dashed = separate process cyan = request flow · pink = state read/write · dashed green = pull / return path · red = refusal As of 2026-08-22 22:15 UTC, from commit d94c202

Provenance

This drawing is generated, not drawn. It is rebuilt from the source files below, so when they change the picture changes — a diagram here cannot quietly describe a system that no longer works this way.

Owner
Marco
Slug
contacts-integration
Rendered
2026-08-22T175604Z
From commit
b502e8bc6d
Updated
22 Aug 2026, 22:15 UTC
Sources at
d94c202
Watches
2 paths
  • daemon/src/marco/contacts.py
  • daemon/mona/src/pages/ContactsPage.tsx