Bridge adapting the real CalendarProvider (e.g. GoogleCalendarProvider from integration.provider-calendar) to the organization-planning module's CalendarExecutionAdapterPort. Port → provider; no new Google SDK code.
Source snapshot bcc79fcc · Declared package version 2.0.5. This page combines the checked-in package guide and manifest; commands and runtime behavior were not executed in this review.
Bridge that binds the organization-planning module's
CalendarExecutionAdapterPort (kind: 'calendar_execution') to a real
CalendarProvider — without reimplementing any provider SDK. This is the port→provider seam: the module declares the typed port; this package adapts it to a concrete provider (e.g. the GoogleCalendarProvider Détenu par
@lssm-tech/integration.provider-calendar).
Why it exists
OPA proposes bookings and agendas as fail-closed drafts. To actually execute a confirmed booking (write a calendar event), the runtime needs a bound
calendar_execution adapter. This bridge provides one over an existing provider, keeping Google and Microsoft Graph SDK/transport code out of the runtime and the module.
Usage
ts
import { createOpaCalendarExecutionBridge } from '@lssm-tech/integration.opa-calendar-bridge';
import { GoogleCalendarProvider } from '@lssm-tech/integration.provider-calendar/impls/google-calendar';
// Any CalendarProvider works (Google, a fake, a future provider).
const calendar = createOpaCalendarExecutionBridge(
new GoogleCalendarProvider({ auth })
);
// Or the convenience factory (./google):
import { createGoogleOpaCalendarExecutionBridge } from '@lssm-tech/integration.opa-calendar-bridge/google';
const calendar = createGoogleOpaCalendarExecutionBridge({ auth });
// Outlook/Exchange via a host-authenticated Microsoft Graph client:
import { createMicrosoftGraphOpaCalendarExecutionBridge } from '@lssm-tech/integration.opa-calendar-bridge/microsoft-graph';
const outlookCalendar = createMicrosoftGraphOpaCalendarExecutionBridge({ client });
// Bind into the OPA runtime so booking.confirm can write on the authorized path:
buildOpaOps({ rbac, calendar });
Fail-closed posture
The bridge only forwards a method call when invoked. The OPA runtime invokes
createEventexclusively on the authorized + approval-satisfied confirm path (isOpaExecutionAllowed); every other path performs no external write.
Exports
Subpath
Export
.
generic bridge plus Google and Microsoft convenience factories
./bridge
provider-agnostic bridge (no Google SDK)
./google
Google convenience factory
./google-protected-booking
resolveGoogleProtectedBooking and googleBookingResolverQuery: protected OPA booking intent → GoogleBookingEventInput (decrypt via the host protector, attendee validation, Meet only for a live google_meet conference; a booking without its own summary is titled from the OPA catalog key calendar.booking.defaultSummary in the optional locale, en by default)
./google-oauth-state
PostgresGoogleOAuthStateStore, the durable one-use GoogleOAuthStatePort adapter over opa_outbox
./microsoft-graph
Microsoft Outlook/Graph convenience factory
createGoogleBookingProviderBridge is the booking-specific seam for the G015 known-ID saga port. A host-provided resolver supplies protected booking effect details; the bridge forwards only provider-neutral create/get/cancel outcomes. For an original create, the provider retains its deterministic tenant/booking ID derivation. For a reschedule, the resolver must authorize the exact persisted replacement ID and active replacement interval; the bridge forwards that known ID unchanged for create and ambiguity recovery. Google SDK calls remain in
integration.provider-calendar.
The bridge also forwards normalized conference readiness without interpreting provider payloads. A Meet booking is not terminal until the provider reports a verified ready link; pending, ambiguous, or failed conference creation remains recoverable through exact known-ID lookup.
createOpaMeetingOccurrenceFingerprint projects calendar occurrences into PII-free recorder-matching evidence. Its event digest uses the provider event id shared by Google/Outlook and recorder metadata, while participant identities are normalized, sorted, and digested. Calendar ids and participant addresses never cross the OPA binding boundary.
PostgresGoogleOAuthStateStore issues HMAC-signed OAuth state, persists only its SHA-256 digest plus the account ref and redirect URI in opa_outbox
through the runtime OpaSqlExecutor, and consumes it exactly once before expiry. It uses Web Crypto so the bridge stays free of node: imports, and rejects an empty signing key.
Declared capabilities.
Integration Opa Calendar Bridge
Bridge adapting the real CalendarProvider (e.g. GoogleCalendarProvider from integration.provider-calendar) to the organization-planning module's CalendarExecutionAdapterPort. Port → provider; no new Google SDK code.
Use it to
Adopt bridge adapting the real calendarprovider (e.g. googlecalendarprovider from integration.provider-calendar) to the organization-planning module's calendarexecutionadapterport. port → provider; no new google sdk code
Requires
TypeScript
Choose another boundary when
The @lssm-tech/integration.opa-calendar-bridge package constraints do not match the target runtime or platform.
These are package-manifest entry points. Named symbols listed above come from the capability catalogue; this is not an exhaustive TypeScript symbol reference.