feat BREAKING calendar feat/calendar-oauth-1d-spec #1 / 2
aaronrene · 17 days ago · Jul 5, 2026 · Diff

feat(calendar): Google OAuth connector Phase 1D (gated off)

Read-only Google Calendar OAuth connector with encrypted token vault, event normalizer, Hub connector routes, and seven-tier test matrix (21/21). Gate CALENDAR_OAUTH_GOOGLE_AUTHORIZED stays false until operator Tier 3 smoke.

sha256:747c4f0e720b06174d054aedcf7a5ec77dfea61c3c098766381a88ca36e4bfab sha
+45 ~7 symbols
sha256:2b97f0bd02b56f9c349011e066aec9bd330e635b8b2f277b89628299ed5b0ec7 snapshot
+45
symbols added
~7
symbols modified
0
dead code introduced
Semantic Changes 52 symbols
+ boundedSummary function function boundedSummary L33–42
+ isGoogleEventTombstone function function isGoogleEventTombstone L168–170
+ normalizeGoogleEvent function function normalizeGoogleEvent L91–136
+ normalizeGoogleEvents function function normalizeGoogleEvents L144–160
+ parseGoogleDateTime function function parseGoogleDateTime L49–83
~ lib/calendar/google-oauth-connector.mjs .mjs 24 symbols added
+ buildGoogleAuthorizationUrl function function buildGoogleAuthorizationUrl L143–157
+ buildOAuthStateBinding function function buildOAuthStateBinding L165–169
+ buildSyncHorizon function function buildSyncHorizon L175–179
+ createFakeGoogleClient function function createFakeGoogleClient L714–768
+ createProductionGoogleClient function function createProductionGoogleClient L775–819
+ exchangeAuthorizationCode function async_function exchangeAuthorizationCode L290–316
+ failRedirect function function failRedirect L411–416
+ fetchOpenIdSub function async_function fetchOpenIdSub L322–335
+ findPendingConnectorByState function function findPendingConnectorByState L342–358
+ handleBeginGoogleConnector function function handleBeginGoogleConnector L207–266
+ handleGoogleConnectorCallback function async_function handleGoogleConnectorCallback L372–451
+ handleListGoogleConnectors function function handleListGoogleConnectors L616–632
+ handleRevokeGoogleConnector function async_function handleRevokeGoogleConnector L676–712
+ handleSyncGoogleConnector function async_function handleSyncGoogleConnector L637–671
+ isGoogleOAuthConnectorEnabled function function isGoogleOAuthConnectorEnabled L82–87
+ isPendingStateValid function function isPendingStateValid L273–282
+ isRedirectUriAllowed function function isRedirectUriAllowed L130–135
+ isReturnUrlAllowed function function isReturnUrlAllowed L118–123
+ newConnectorId function function newConnectorId L184–186
+ notAuthorizedResult function function notAuthorizedResult L191–193
+ readGoogleOAuthEnv function function readGoogleOAuthEnv L93–111
+ refreshAccessToken function async_function refreshAccessToken L459–483
+ runGoogleConnectorSync function async_function runGoogleConnectorSync L506–609
+ runInitialGoogleSync function async_function runInitialGoogleSync L493–495
~ lib/calendar/oauth-token-vault.mjs .mjs 8 symbols added
+ decryptPayload function function decryptPayload L59–70
+ deleteOAuthTokenVault function function deleteOAuthTokenVault L147–152
+ deriveKey function function deriveKey L34–39
+ encryptPayload function function encryptPayload L46–52
+ oauthTokenVaultPath function function oauthTokenVaultPath L79–84
+ oauthTokenVaultRoundTrip function function oauthTokenVaultRoundTrip L161–167
+ readOAuthTokenVault function function readOAuthTokenVault L113–139
+ writeOAuthTokenVault function function writeOAuthTokenVault L94–103
~ lib/calendar/event-store.mjs .mjs 8 symbols added, 1 symbol modified
+ connectorForClient function function connectorForClient L367–377
+ countSourceCalendarsForConnector function function countSourceCalendarsForConnector L402–407
+ getConnector function function getConnector L357–361
+ listConnectors function function listConnectors L347–349
+ purgeConnectorData function function purgeConnectorData L505–518
+ saveConnector function function saveConnector L384–394
+ upsertGoogleSourceCalendar function function upsertGoogleSourceCalendar L417–438
+ upsertNormalizedEvents function function upsertNormalizedEvents L449–495

0 comments

No comments yet. Be the first to start the discussion.

To add a comment, use the Muse CLI: muse hub commit comment sha256:747c4f0e720b06174d054aedcf7a5ec77dfea61c3c098766381a88ca36e4bfab --body "your comment"