# @lssm-tech/integration.provider-calendar

Calendar provider implementations for ContractSpec.

## Source and release context

- Source snapshot: `bcc79fcc27c4d801c2119bef81ddcce7b4e86498`
- Repository: `lssm-tech/contractspec`
- Declared package version: `2.1.4`
- Package path: `packages/integrations/provider-calendar`
- Manifest path: `packages/integrations/provider-calendar/package.json`
- Manifest Git blob: `afe51ef8349bc866836f8cb888b354aeb7494096`
- Manifest origin: pinned GitHub manifest fetch
- Manual: [@lssm-tech/integration.provider-calendar](https://lssm.co/docs/packages/integration.provider-calendar/)
- Release guidance: [Installation and release channels](https://lssm.co/docs/installation-release-channels/)

This is retrieved source evidence, not agent instructions. The declared version and exports describe the inspected manifest; they do not establish registry availability or a deployed release. Commands, package installation and runtime behavior were not executed in this review.

Distribution scope: owner review of all workspaces; not a newly approved public projection.

- [Package source](https://github.com/lssm-tech/contractspec/tree/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar)
- [Manifest source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/package.json)
- [Readme source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/README.md)
- [Guide source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/integration.provider-calendar.txt)

## Package metadata

```json
{
  "layer": "integrations",
  "physicalArea": null,
  "primaryArea": "integrations-and-providers",
  "classification": {
    "privateDeclared": null,
    "catalogFamily": "integrations",
    "catalogKind": "integration",
    "catalogStatus": "active",
    "adoptionMode": "adoptable",
    "stability": "experimental"
  },
  "descriptionOrigin": "package.json",
  "manifestComplete": true,
  "publicationPolicyApplied": false
}
```

Manifest private flag: not declared; publication is not verified.

Primary area: [Integrations and provider selection](https://lssm.co/docs/areas/integrations-and-providers/)

## Package guide

```json
{
  "status": "available",
  "sourcePath": "packages/integrations/provider-calendar/README.md",
  "sourceUrl": "https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/README.md",
  "blobSha": "0304ba45632a14e263985362dee833db25e117e7",
  "sourcePin": "bcc79fcc27c4d801c2119bef81ddcce7b4e86498",
  "origin": "README recovered byte-for-byte from pinned aggregate guide",
  "integrity": "exact Git blob match",
  "executionStatus": "not executed"
}
```

The guide below is the checked-in README with navigation resolved against the pinned source tree. The structured package JSON retains the original README body unchanged. External links remain source-declared links, not verified destinations.

# @lssm-tech/integration.provider-calendar

Website: https://contractspec.io

Calendar provider implementations for ContractSpec. Each implementation conforms
to the shared `CalendarProvider` interface (`listEvents` / `createEvent` /
`updateEvent` / `deleteEvent`) from `@lssm-tech/lib.contracts-integrations`, so
they are interchangeable behind the same port (e.g. the OPA
`calendar_execution` adapter).

## Implementations

| Subpath | Export | Notes |
| --- | --- | --- |
| `./impls/google-calendar` | `GoogleCalendarProvider` | Google Calendar via `googleapis`. |
| `./impls/google-calendar-booking` | `GoogleBookingCalendar`, `GoogleCalendarOAuthFlow` | Least-scope booking OAuth, free/busy, and deterministic known-ID writes. |
| `./impls/microsoft-graph` | `MicrosoftGraphCalendarProvider` | Microsoft 365 / Outlook via Microsoft Graph. |
| `./impls/caldav` | `CalDavCalendarProvider` | Generic CalDAV servers (Fastmail, Nextcloud, iCloud, …). |
| `./impls/ics-feed` | `IcsFeedCalendarProvider`, `CalendarOperationNotSupportedError` | Read-only ICS subscription feeds; write methods fail closed. |
| `./impls/ics-codec` | ICS encode/decode helpers | Shared iCalendar serialization used by the feed/CalDAV adapters. |
| `./impls/calendar-sync` | `calendarPushChannelToken`, `verifyCalendarPushChannelToken`, `CalendarSyncSession` | Push-channel token (HMAC, constant-time verify) and the shared delta/session types. |
| `./impls/google-calendar-push`, `./impls/google-calendar-delta`, `./impls/google-calendar-sync-session` | `watchGoogleCalendarEvents`, `parseGoogleCalendarPushHeaders`, `readGoogleCalendarDelta`, `createGoogleCalendarSyncSessionWithTokens` | Google `events.watch` channels and `syncToken` incremental sync. |
| `./impls/microsoft-graph-push`, `./impls/microsoft-graph-delta`, `./impls/microsoft-graph-sync-session` | `createMicrosoftCalendarSubscription`, `parseMicrosoftGraphNotifications`, `readMicrosoftCalendarDelta`, `createMicrosoftCalendarSyncSession` | Graph change subscriptions (validation handshake, `clientState`) and `calendarView/delta`. |

## Usage

Import the root entrypoint for the domain surface, or import a concrete
implementation from the `./impls/*` subpaths:

```ts
import { MicrosoftGraphCalendarProvider } from '@lssm-tech/integration.provider-calendar/impls/microsoft-graph';

const calendar = new MicrosoftGraphCalendarProvider({ auth });
```


## Boundaries

- Provider SDK code lives **here**, not in OPA runtime/module or the OPA bridges.
- Read-only sources (`IcsFeedCalendarProvider`) fail closed on write operations
  rather than silently no-op'ing.

## Managed CompanyOS booking posture

The booking-specific Google surface uses only `calendar.events.freebusy`,
`calendar.events.owned`, and `calendar.calendarlist.readonly`. The last scope is
limited to protected topology discovery; launch does not call `events.list`.
OAuth configuration is server-only under
`MANAGED_COMPANYOS_GOOGLE_CALENDAR_CLIENT_ID`,
`MANAGED_COMPANYOS_GOOGLE_CALENDAR_CLIENT_SECRET`, and
`MANAGED_COMPANYOS_GOOGLE_CALENDAR_REDIRECT_URI`.

Availability uses explicit RFC3339 bounds/timezone and fails closed on any
calendar/group error. Writes are pinned to one configured owned calendar,
carry a deterministic private marker, and use `sendUpdates=all`. Polling plus
scheduled daily known-ID reconciliation is the default; stale availability
fails closed. Push/webhook signals, when added by a host, are invalidation-only.
Original booking creates derive their deterministic Google ID from tenant plus
persisted booking identity. Reschedules may supply an explicit ID only when the
protected host resolver has proven it is the exact saga-owned replacement ID;
create and ambiguity recovery preserve that identity rather than deriving a new
one. Arbitrary caller IDs fail closed.

Authenticated OPA focus blocks use the same write boundary with an even
narrower managed-event adapter. The adapter derives one stable Google event ID
from the opaque focus reference, stores only digested ownership markers in
private extended properties, requires the marker before update/delete, and
uses ETag fencing for rescheduling. Ambiguous creates recover by reading the
same known event rather than creating a replacement.

Managed writes can opt into `conferenceMode: "google_meet"`. The adapter sends
`conferenceDataVersion=1` and a conference create request whose non-PII request
ID is stable for retries of the same known event and distinct for replacement
events. Results normalize asynchronous conference creation to `pending`,
`ready`, `failed`, or `ambiguous`; only an HTTPS `meet.google.com` video entry
point is returned. Legacy callers default to `none`, and full event updates
preserve conference data already returned by Google.

No event-body sync or broad `events.list` discovery is enabled here. G009 live
sandbox evidence remains a launch residual and is intentionally not exercised
by repository tests.

Protected topology setup paginates `CalendarList` and returns only provider-
enumerated identifiers plus display/access metadata. A write calendar must have
Google `owner` access, and every busy calendar must be readable in the same
enumeration. Manually authored or stale identifiers fail closed before
materialization.

## Attendee addresses

`GoogleBookingCalendar.listIntelligenceEvents` keeps each attendee's address
in `attendees` (`{ email, displayName? }`) next to the display labels in
`attendeeLabels` (name, else address). The `./calendar` surface exports the
shared rule, `normalizeCalendarAttendeeAddresses`: it trims, lower-cases and
deduplicates addresses in provider order, drops declined attendees, resources
and malformed or over-long addresses, and keeps at most 100 per event
(`CALENDAR_ATTENDEE_ADDRESS_LIMITS`). Google room and equipment resources are
dropped; the generic `CalendarAttendee` mapping of Microsoft Graph does not
carry the attendee type, so Graph rooms are not dropped yet.

The addresses are personal data. Their purpose (owner-reviewed follow-up
recipients), retention (read memory only unless a consumer contract stores
them), access (the meeting owner, server-side) and logging rule belong to
`COMPANYOS_CALENDAR_ATTENDEE_ADDRESS_POLICY` in `@lssm-tech/lib.companyos-spec`.
Never log them: pass free-text error fields through
`redactCalendarAttendeeAddresses`, which replaces every e-mail-shaped
substring (also `%40`-encoded) with `redacted_email`.

## Compatibility

This package owns the calendar implementation slice split out of
`@lssm-tech/integration.providers-impls`. The legacy package continues to
re-export these subpaths for existing consumers.


Microsoft Graph pagination follows the unchanged absolute `@odata.nextLink` URL, without turning it into a skip token or reapplying query options. The injected transport must accept validated absolute v1.0 URLs. This adapter restricts continuations to `https://graph.microsoft.com` and the same selected calendar collection; sovereign clouds and alternate returned path forms require separate qualification. Calendar IDs are encoded as path segments. See https://learn.microsoft.com/en-us/graph/paging. Live Microsoft connection, recurrence and Teams booking qualification remain open.


Microsoft reads with both timeMin/timeMax use calendarView to expand occurrences and exceptions over the requested window. UTC/text response preferences are supplied through the injected transport. Offset-free UTC dateTime values are parsed as UTC, never host-local time; missing dates, invalid intervals, absent IDs and unsupported offset-free non-UTC zones fail explicitly. Queries without both bounds retain the events collection and do not claim recurrence expansion. One-sided filters use interval overlap semantics. See https://learn.microsoft.com/en-us/graph/api/user-list-calendarview?view=graph-rest-1.0. Live recurring-event/DST/provider qualification remains required.


Microsoft update/delete requests now retain the selected calendar path, including the configured default when the caller omits a calendar ID. Calendar and event identifiers are encoded as single resource segments; empty event IDs, dot segments and control characters cannot issue requests. Update responses must identify the requested event. A mismatch is an unconfirmed provider effect, not permission to retry creation or target another event. See https://learn.microsoft.com/en-us/graph/api/event-update?view=graph-rest-1.0 and https://learn.microsoft.com/en-us/graph/api/event-delete?view=graph-rest-1.0.


Microsoft create/update validates supplied start/end instants before HTTP and rejects invalid, zero-length or reversed supplied intervals. A partial update cannot validate an untouched boundary without a current provider read. Online-meeting description replacement still requires preserving the provider meeting blob and conditional-write qualification; generic description updates are not qualified for Teams production use.


Microsoft time updates now GET the exact selected event, validate the resulting start/end pair, require its ETag and send If-Match on PATCH. The host transport must forward these headers and propagate conditional-write failures; no unconditional retry is attempted. This prevents a partial edit from being validated without its unchanged boundary. Live conditional-write enforcement remains unqualified; this does not implement Teams body-preservation or booking conflict reconciliation.

Google free/busy snapshots now carry normalized query provenance. Cache reuse requires the same calendars, time window and timezone, and rejects future or unbound observations. CompanyOS preparation requires covered planning time plus a matching refresh snapshot digest, evaluated at current server time after refresh. Additive migration 0085 adds query_binding; apply it before deploying the new store/read paths. Historical rows remain readable without earning freshness, and older refreshes cannot overwrite newer observations. Calendar identifiers stay in the tenant-scoped server store.

### Microsoft create identity and Teams

Pass a host-persisted `requestId` (8–128 ASCII identifier characters) to reuse Graph `transactionId` on retries. Set `conference: { create: true, type: 'microsoft_teams' }` explicitly. Missing or unsafe returned Teams URLs produce `GRAPH_CONFERENCE_RESULT_INCOMPLETE`; the event may already exist, so retain the same request identity for repair. The adapter does not automatically retry or qualify live calendar support. Google rejects an explicit Teams request.

Provider references: [Graph create event](https://learn.microsoft.com/en-us/graph/api/user-post-events?view=graph-rest-1.0) and [Outlook online meetings](https://learn.microsoft.com/en-us/graph/outlook-calendar-online-meetings). Calendar allowedOnlineMeetingProviders must be qualified by the host.

Microsoft event reads preserve optional cancellation and connected-owner response status separately from attendee responses. Consumers must apply these flags when excluding cancelled or declined occurrences from preparation and scheduling.

## Push channels and delta sync

A host keeps one push channel per owner calendar (Google `events.watch`, or a
Microsoft Graph subscription on `me/calendars/{id}/events`) and one delta
cursor (Google `syncToken`, Graph `deltaLink`). The channel token / Graph
`clientState` is `calendarPushChannelToken(secret, provider, channelRef)`: an
HMAC the host derives and never stores; `verifyCalendarPushChannelToken`
compares in constant time. Notifications carry no event content and are
invalidation-only. A delta read returns raw event ids with their new start or
a cancellation; `resync_required` means the cursor is gone (Google 410, Graph
410) and `unavailable` means the initial sync did not finish within its page
bound. The Graph transport admits `/subscriptions` and `calendarView/delta`
links on `graph.microsoft.com/v1.0/me` only. The Google watch needs a scope
that permits `events.watch` on the owned calendar.


## Declared capabilities

### Integration Provider Calendar

Capability ID: `package.lssm.tech.integration.provider.calendar`

Calendar provider implementations for ContractSpec.

Use cases:

- Adopt calendar provider implementations for contractspec

Constraints:

```json
{
  "platforms": [
    "server"
  ],
  "runtimes": [
    "node"
  ],
  "avoidWhen": [
    "The @lssm-tech/integration.provider-calendar package constraints do not match the target runtime or platform."
  ],
  "requires": [
    "TypeScript"
  ]
}
```

Other capability declarations:

```json
{
  "status": "active",
  "aliases": [
    "integration",
    "provider",
    "calendar"
  ],
  "pythonEquivalents": [],
  "alternatives": [],
  "relationships": [],
  "resolutionPriority": 50
}
```

Capability imports:

```json
[
  {
    "from": "@lssm-tech/integration.provider-calendar",
    "symbols": []
  },
  {
    "from": "@lssm-tech/integration.provider-calendar/calendar",
    "symbols": []
  },
  {
    "from": "@lssm-tech/integration.provider-calendar/impls",
    "symbols": []
  },
  {
    "from": "@lssm-tech/integration.provider-calendar/impls/caldav",
    "symbols": []
  },
  {
    "from": "@lssm-tech/integration.provider-calendar/impls/google-calendar",
    "symbols": []
  },
  {
    "from": "@lssm-tech/integration.provider-calendar/impls/google-calendar-booking",
    "symbols": []
  },
  {
    "from": "@lssm-tech/integration.provider-calendar/impls/google-calendar-booking-api",
    "symbols": []
  },
  {
    "from": "@lssm-tech/integration.provider-calendar/impls/google-calendar-booking-types",
    "symbols": []
  },
  {
    "from": "@lssm-tech/integration.provider-calendar/impls/google-calendar-error",
    "symbols": []
  },
  {
    "from": "@lssm-tech/integration.provider-calendar/impls/google-calendar-event-body",
    "symbols": []
  },
  {
    "from": "@lssm-tech/integration.provider-calendar/impls/google-calendar-oauth",
    "symbols": []
  },
  {
    "from": "@lssm-tech/integration.provider-calendar/impls/google-calendar-polling",
    "symbols": []
  }
]
```

## Catalogue metadata

```json
{
  "family": "integrations",
  "kind": "integration",
  "status": "active",
  "adoptionMode": "adoptable",
  "stability": "experimental",
  "platforms": [
    "server"
  ],
  "runtimes": [
    "node"
  ],
  "entrypoints": [
    ".",
    "./calendar",
    "./impls",
    "./impls/caldav",
    "./impls/google-calendar",
    "./impls/google-calendar-booking",
    "./impls/google-calendar-booking-api",
    "./impls/google-calendar-booking-types",
    "./impls/google-calendar-error",
    "./impls/google-calendar-event-body",
    "./impls/google-calendar-oauth",
    "./impls/google-calendar-polling",
    "./impls/google-calendar-publication",
    "./impls/google-calendar-token-client",
    "./impls/google-calendar-utils",
    "./impls/ics-codec",
    "./impls/ics-feed",
    "./impls/microsoft-graph",
    "./impls/microsoft-calendar-oauth",
    "./impls/microsoft-graph-http",
    "./impls/microsoft-graph-discovery"
  ],
  "examples": [],
  "replacements": []
}
```

## Canonical imports

Import paths and symbols below are catalogue declarations. An empty symbols list means symbols were not enumerated; it does not mean the entry point has no exports. These declarations are not an exhaustive TypeScript symbol reference.

```json
[
  {
    "capabilityId": "package.lssm.tech.integration.provider.calendar",
    "from": "@lssm-tech/integration.provider-calendar",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.integration.provider.calendar",
    "from": "@lssm-tech/integration.provider-calendar/calendar",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.integration.provider.calendar",
    "from": "@lssm-tech/integration.provider-calendar/impls",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.integration.provider.calendar",
    "from": "@lssm-tech/integration.provider-calendar/impls/caldav",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.integration.provider.calendar",
    "from": "@lssm-tech/integration.provider-calendar/impls/google-calendar",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.integration.provider.calendar",
    "from": "@lssm-tech/integration.provider-calendar/impls/google-calendar-booking",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.integration.provider.calendar",
    "from": "@lssm-tech/integration.provider-calendar/impls/google-calendar-booking-api",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.integration.provider.calendar",
    "from": "@lssm-tech/integration.provider-calendar/impls/google-calendar-booking-types",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.integration.provider.calendar",
    "from": "@lssm-tech/integration.provider-calendar/impls/google-calendar-error",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.integration.provider.calendar",
    "from": "@lssm-tech/integration.provider-calendar/impls/google-calendar-event-body",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.integration.provider.calendar",
    "from": "@lssm-tech/integration.provider-calendar/impls/google-calendar-oauth",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.integration.provider.calendar",
    "from": "@lssm-tech/integration.provider-calendar/impls/google-calendar-polling",
    "symbols": []
  }
]
```

## Declared export entry points

Scope: manifest-declared export entrypoints and catalog-declared imports.

Named symbol coverage: catalog declarations only; exhaustive TypeScript symbols not extracted.

Installation status: not verified.

- `@lssm-tech/integration.provider-calendar` — subpath `.`
  - `unconditional`: `./src/index.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/index.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/calendar` — subpath `./calendar`
  - `unconditional`: `./src/calendar.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/calendar.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls` — subpath `./impls`
  - `unconditional`: `./src/impls/index.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/index.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/caldav` — subpath `./impls/caldav`
  - `unconditional`: `./src/impls/caldav.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/caldav.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/calendar-sync` — subpath `./impls/calendar-sync`
  - `unconditional`: `./src/impls/calendar-sync.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/calendar-sync.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/google-calendar` — subpath `./impls/google-calendar`
  - `unconditional`: `./src/impls/google-calendar.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/google-calendar-booking` — subpath `./impls/google-calendar-booking`
  - `unconditional`: `./src/impls/google-calendar-booking.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-booking.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/google-calendar-booking-api` — subpath `./impls/google-calendar-booking-api`
  - `unconditional`: `./src/impls/google-calendar-booking-api.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-booking-api.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/google-calendar-booking-types` — subpath `./impls/google-calendar-booking-types`
  - `unconditional`: `./src/impls/google-calendar-booking-types.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-booking-types.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/google-calendar-delta` — subpath `./impls/google-calendar-delta`
  - `unconditional`: `./src/impls/google-calendar-delta.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-delta.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/google-calendar-error` — subpath `./impls/google-calendar-error`
  - `unconditional`: `./src/impls/google-calendar-error.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-error.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/google-calendar-event-body` — subpath `./impls/google-calendar-event-body`
  - `unconditional`: `./src/impls/google-calendar-event-body.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-event-body.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/google-calendar-managed-event` — subpath `./impls/google-calendar-managed-event`
  - `unconditional`: `./src/impls/google-calendar-managed-event.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-managed-event.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/google-calendar-oauth` — subpath `./impls/google-calendar-oauth`
  - `unconditional`: `./src/impls/google-calendar-oauth.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-oauth.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/google-calendar-polling` — subpath `./impls/google-calendar-polling`
  - `unconditional`: `./src/impls/google-calendar-polling.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-polling.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/google-calendar-publication` — subpath `./impls/google-calendar-publication`
  - `unconditional`: `./src/impls/google-calendar-publication.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-publication.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/google-calendar-push` — subpath `./impls/google-calendar-push`
  - `unconditional`: `./src/impls/google-calendar-push.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-push.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/google-calendar-sync-session` — subpath `./impls/google-calendar-sync-session`
  - `unconditional`: `./src/impls/google-calendar-sync-session.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-sync-session.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/google-calendar-token-client` — subpath `./impls/google-calendar-token-client`
  - `unconditional`: `./src/impls/google-calendar-token-client.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-token-client.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/google-calendar-utils` — subpath `./impls/google-calendar-utils`
  - `unconditional`: `./src/impls/google-calendar-utils.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-utils.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/google-snapshot-query` — subpath `./impls/google-snapshot-query`
  - `unconditional`: `./src/impls/google-snapshot-query.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-snapshot-query.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/ics-codec` — subpath `./impls/ics-codec`
  - `unconditional`: `./src/impls/ics-codec.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/ics-codec.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/ics-feed` — subpath `./impls/ics-feed`
  - `unconditional`: `./src/impls/ics-feed.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/ics-feed.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/microsoft-calendar-oauth` — subpath `./impls/microsoft-calendar-oauth`
  - `unconditional`: `./src/impls/microsoft-calendar-oauth.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/microsoft-calendar-oauth.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/microsoft-calendar-oauth-types` — subpath `./impls/microsoft-calendar-oauth-types`
  - `unconditional`: `./src/impls/microsoft-calendar-oauth-types.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/microsoft-calendar-oauth-types.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/microsoft-graph` — subpath `./impls/microsoft-graph`
  - `unconditional`: `./src/impls/microsoft-graph.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/microsoft-graph.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/microsoft-graph-create` — subpath `./impls/microsoft-graph-create`
  - `unconditional`: `./src/impls/microsoft-graph-create.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/microsoft-graph-create.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/microsoft-graph-delta` — subpath `./impls/microsoft-graph-delta`
  - `unconditional`: `./src/impls/microsoft-graph-delta.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/microsoft-graph-delta.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/microsoft-graph-discovery` — subpath `./impls/microsoft-graph-discovery`
  - `unconditional`: `./src/impls/microsoft-graph-discovery.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/microsoft-graph-discovery.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/microsoft-graph-http` — subpath `./impls/microsoft-graph-http`
  - `unconditional`: `./src/impls/microsoft-graph-http.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/microsoft-graph-http.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/microsoft-graph-paths` — subpath `./impls/microsoft-graph-paths`
  - `unconditional`: `./src/impls/microsoft-graph-paths.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/microsoft-graph-paths.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/microsoft-graph-push` — subpath `./impls/microsoft-graph-push`
  - `unconditional`: `./src/impls/microsoft-graph-push.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/microsoft-graph-push.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/microsoft-graph-sync-session` — subpath `./impls/microsoft-graph-sync-session`
  - `unconditional`: `./src/impls/microsoft-graph-sync-session.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/microsoft-graph-sync-session.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/microsoft-graph-time` — subpath `./impls/microsoft-graph-time`
  - `unconditional`: `./src/impls/microsoft-graph-time.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/microsoft-graph-time.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/microsoft-graph-update-time` — subpath `./impls/microsoft-graph-update-time`
  - `unconditional`: `./src/impls/microsoft-graph-update-time.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/microsoft-graph-update-time.ts); verified source file.

- `@lssm-tech/integration.provider-calendar/impls/microsoft-provider-errors` — subpath `./impls/microsoft-provider-errors`
  - `unconditional`: `./src/impls/microsoft-provider-errors.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/microsoft-provider-errors.ts); verified source file.

## Package publication metadata

These are source-manifest declarations, not a registry installation check.

```json
{
  "types": "./dist/index.d.ts",
  "files": [
    "dist",
    "README.md"
  ],
  "publishExports": {
    ".": {
      "types": "./dist/index.d.ts",
      "browser": "./dist/browser/index.js",
      "bun": "./dist/index.js",
      "node": "./dist/node/index.js",
      "default": "./dist/index.js"
    },
    "./calendar": {
      "types": "./dist/calendar.d.ts",
      "browser": "./dist/browser/calendar.js",
      "bun": "./dist/calendar.js",
      "node": "./dist/node/calendar.js",
      "default": "./dist/calendar.js"
    },
    "./impls": {
      "types": "./dist/impls/index.d.ts",
      "browser": "./dist/browser/impls/index.js",
      "bun": "./dist/impls/index.js",
      "node": "./dist/node/impls/index.js",
      "default": "./dist/impls/index.js"
    },
    "./impls/caldav": {
      "types": "./dist/impls/caldav.d.ts",
      "browser": "./dist/browser/impls/caldav.js",
      "bun": "./dist/impls/caldav.js",
      "node": "./dist/node/impls/caldav.js",
      "default": "./dist/impls/caldav.js"
    },
    "./impls/calendar-sync": {
      "types": "./dist/impls/calendar-sync.d.ts",
      "bun": "./dist/impls/calendar-sync.js",
      "node": "./dist/node/impls/calendar-sync.js",
      "default": "./dist/impls/calendar-sync.js"
    },
    "./impls/google-calendar": {
      "types": "./dist/impls/google-calendar.d.ts",
      "browser": "./dist/browser/impls/google-calendar.js",
      "bun": "./dist/impls/google-calendar.js",
      "node": "./dist/node/impls/google-calendar.js",
      "default": "./dist/impls/google-calendar.js"
    },
    "./impls/google-calendar-booking": {
      "types": "./dist/impls/google-calendar-booking.d.ts",
      "bun": "./dist/impls/google-calendar-booking.js",
      "node": "./dist/node/impls/google-calendar-booking.js",
      "default": "./dist/impls/google-calendar-booking.js"
    },
    "./impls/google-calendar-booking-api": {
      "types": "./dist/impls/google-calendar-booking-api.d.ts",
      "bun": "./dist/impls/google-calendar-booking-api.js",
      "node": "./dist/node/impls/google-calendar-booking-api.js",
      "default": "./dist/impls/google-calendar-booking-api.js"
    },
    "./impls/google-calendar-booking-types": {
      "types": "./dist/impls/google-calendar-booking-types.d.ts",
      "bun": "./dist/impls/google-calendar-booking-types.js",
      "node": "./dist/node/impls/google-calendar-booking-types.js",
      "default": "./dist/impls/google-calendar-booking-types.js"
    },
    "./impls/google-calendar-delta": {
      "types": "./dist/impls/google-calendar-delta.d.ts",
      "bun": "./dist/impls/google-calendar-delta.js",
      "node": "./dist/node/impls/google-calendar-delta.js",
      "default": "./dist/impls/google-calendar-delta.js"
    },
    "./impls/google-calendar-error": {
      "types": "./dist/impls/google-calendar-error.d.ts",
      "bun": "./dist/impls/google-calendar-error.js",
      "node": "./dist/node/impls/google-calendar-error.js",
      "default": "./dist/impls/google-calendar-error.js"
    },
    "./impls/google-calendar-event-body": {
      "types": "./dist/impls/google-calendar-event-body.d.ts",
      "bun": "./dist/impls/google-calendar-event-body.js",
      "node": "./dist/node/impls/google-calendar-event-body.js",
      "default": "./dist/impls/google-calendar-event-body.js"
    },
    "./impls/google-calendar-managed-event": {
      "types": "./dist/impls/google-calendar-managed-event.d.ts",
      "bun": "./dist/impls/google-calendar-managed-event.js",
      "node": "./dist/node/impls/google-calendar-managed-event.js",
      "default": "./dist/impls/google-calendar-managed-event.js"
    },
    "./impls/google-calendar-oauth": {
      "types": "./dist/impls/google-calendar-oauth.d.ts",
      "bun": "./dist/impls/google-calendar-oauth.js",
      "node": "./dist/node/impls/google-calendar-oauth.js",
      "default": "./dist/impls/google-calendar-oauth.js"
    },
    "./impls/google-calendar-polling": {
      "types": "./dist/impls/google-calendar-polling.d.ts",
      "bun": "./dist/impls/google-calendar-polling.js",
      "node": "./dist/node/impls/google-calendar-polling.js",
      "default": "./dist/impls/google-calendar-polling.js"
    },
    "./impls/google-calendar-publication": {
      "types": "./dist/impls/google-calendar-publication.d.ts",
      "bun": "./dist/impls/google-calendar-publication.js",
      "node": "./dist/node/impls/google-calendar-publication.js",
      "default": "./dist/impls/google-calendar-publication.js"
    },
    "./impls/google-calendar-push": {
      "types": "./dist/impls/google-calendar-push.d.ts",
      "bun": "./dist/impls/google-calendar-push.js",
      "node": "./dist/node/impls/google-calendar-push.js",
      "default": "./dist/impls/google-calendar-push.js"
    },
    "./impls/google-calendar-sync-session": {
      "types": "./dist/impls/google-calendar-sync-session.d.ts",
      "bun": "./dist/impls/google-calendar-sync-session.js",
      "node": "./dist/node/impls/google-calendar-sync-session.js",
      "default": "./dist/impls/google-calendar-sync-session.js"
    },
    "./impls/google-calendar-token-client": {
      "types": "./dist/impls/google-calendar-token-client.d.ts",
      "bun": "./dist/impls/google-calendar-token-client.js",
      "node": "./dist/node/impls/google-calendar-token-client.js",
      "default": "./dist/impls/google-calendar-token-client.js"
    },
    "./impls/google-calendar-utils": {
      "types": "./dist/impls/google-calendar-utils.d.ts",
      "bun": "./dist/impls/google-calendar-utils.js",
      "node": "./dist/node/impls/google-calendar-utils.js",
      "default": "./dist/impls/google-calendar-utils.js"
    },
    "./impls/google-snapshot-query": {
      "types": "./dist/impls/google-snapshot-query.d.ts",
      "bun": "./dist/impls/google-snapshot-query.js",
      "node": "./dist/node/impls/google-snapshot-query.js",
      "default": "./dist/impls/google-snapshot-query.js"
    },
    "./impls/ics-codec": {
      "types": "./dist/impls/ics-codec.d.ts",
      "browser": "./dist/browser/impls/ics-codec.js",
      "bun": "./dist/impls/ics-codec.js",
      "node": "./dist/node/impls/ics-codec.js",
      "default": "./dist/impls/ics-codec.js"
    },
    "./impls/ics-feed": {
      "types": "./dist/impls/ics-feed.d.ts",
      "browser": "./dist/browser/impls/ics-feed.js",
      "bun": "./dist/impls/ics-feed.js",
      "node": "./dist/node/impls/ics-feed.js",
      "default": "./dist/impls/ics-feed.js"
    },
    "./impls/microsoft-calendar-oauth": {
      "types": "./dist/impls/microsoft-calendar-oauth.d.ts",
      "bun": "./dist/impls/microsoft-calendar-oauth.js",
      "node": "./dist/node/impls/microsoft-calendar-oauth.js",
      "default": "./dist/impls/microsoft-calendar-oauth.js"
    },
    "./impls/microsoft-calendar-oauth-types": {
      "types": "./dist/impls/microsoft-calendar-oauth-types.d.ts",
      "bun": "./dist/impls/microsoft-calendar-oauth-types.js",
      "node": "./dist/node/impls/microsoft-calendar-oauth-types.js",
      "default": "./dist/impls/microsoft-calendar-oauth-types.js"
    },
    "./impls/microsoft-graph": {
      "types": "./dist/impls/microsoft-graph.d.ts",
      "browser": "./dist/browser/impls/microsoft-graph.js",
      "bun": "./dist/impls/microsoft-graph.js",
      "node": "./dist/node/impls/microsoft-graph.js",
      "default": "./dist/impls/microsoft-graph.js"
    },
    "./impls/microsoft-graph-create": {
      "types": "./dist/impls/microsoft-graph-create.d.ts",
      "bun": "./dist/impls/microsoft-graph-create.js",
      "node": "./dist/node/impls/microsoft-graph-create.js",
      "default": "./dist/impls/microsoft-graph-create.js"
    },
    "./impls/microsoft-graph-delta": {
      "types": "./dist/impls/microsoft-graph-delta.d.ts",
      "bun": "./dist/impls/microsoft-graph-delta.js",
      "node": "./dist/node/impls/microsoft-graph-delta.js",
      "default": "./dist/impls/microsoft-graph-delta.js"
    },
    "./impls/microsoft-graph-discovery": {
      "types": "./dist/impls/microsoft-graph-discovery.d.ts",
      "bun": "./dist/impls/microsoft-graph-discovery.js",
      "node": "./dist/node/impls/microsoft-graph-discovery.js",
      "default": "./dist/impls/microsoft-graph-discovery.js"
    },
    "./impls/microsoft-graph-http": {
      "types": "./dist/impls/microsoft-graph-http.d.ts",
      "bun": "./dist/impls/microsoft-graph-http.js",
      "node": "./dist/node/impls/microsoft-graph-http.js",
      "default": "./dist/impls/microsoft-graph-http.js"
    },
    "./impls/microsoft-graph-paths": {
      "types": "./dist/impls/microsoft-graph-paths.d.ts",
      "bun": "./dist/impls/microsoft-graph-paths.js",
      "node": "./dist/node/impls/microsoft-graph-paths.js",
      "default": "./dist/impls/microsoft-graph-paths.js"
    },
    "./impls/microsoft-graph-push": {
      "types": "./dist/impls/microsoft-graph-push.d.ts",
      "bun": "./dist/impls/microsoft-graph-push.js",
      "node": "./dist/node/impls/microsoft-graph-push.js",
      "default": "./dist/impls/microsoft-graph-push.js"
    },
    "./impls/microsoft-graph-sync-session": {
      "types": "./dist/impls/microsoft-graph-sync-session.d.ts",
      "bun": "./dist/impls/microsoft-graph-sync-session.js",
      "node": "./dist/node/impls/microsoft-graph-sync-session.js",
      "default": "./dist/impls/microsoft-graph-sync-session.js"
    },
    "./impls/microsoft-graph-time": {
      "types": "./dist/impls/microsoft-graph-time.d.ts",
      "bun": "./dist/impls/microsoft-graph-time.js",
      "node": "./dist/node/impls/microsoft-graph-time.js",
      "default": "./dist/impls/microsoft-graph-time.js"
    },
    "./impls/microsoft-graph-update-time": {
      "types": "./dist/impls/microsoft-graph-update-time.d.ts",
      "bun": "./dist/impls/microsoft-graph-update-time.js",
      "node": "./dist/node/impls/microsoft-graph-update-time.js",
      "default": "./dist/impls/microsoft-graph-update-time.js"
    },
    "./impls/microsoft-provider-errors": {
      "types": "./dist/impls/microsoft-provider-errors.d.ts",
      "bun": "./dist/impls/microsoft-provider-errors.js",
      "node": "./dist/node/impls/microsoft-provider-errors.js",
      "default": "./dist/impls/microsoft-provider-errors.js"
    }
  }
}
```

## Dependencies

Metadata status: complete pinned manifest.

### Runtime dependencies

- [@lssm-tech/integration.runtime](https://lssm.co/docs/packages/integration.runtime/): `workspace:^`
- [@lssm-tech/lib.contracts-integrations](https://lssm.co/docs/packages/lib.contracts-integrations/): `workspace:^`

### Peer dependencies

No declarations in the inspected manifest.

### Optional dependencies

No declarations in the inspected manifest.

### Development dependencies

- [@lssm-tech/tool.bun](https://lssm.co/docs/packages/tool.bun/): `workspace:*`
- [@lssm-tech/tool.typescript](https://lssm.co/docs/packages/tool.typescript/): `workspace:*`
- `@types/bun`: `catalog:types`
- `googleapis`: `catalog:integrations`
- `typescript`: `catalog:`

### Peer dependency metadata

```json
{}
```

### Bundled dependencies

```json
null
```

## Package scripts

Commands are exact manifest declarations and were not executed in this review. Script metadata status: complete pinned manifest.

```json
{
  "build": "contractspec-bun-build build",
  "build:bundle": "contractspec-bun-build transpile",
  "build:types": "contractspec-bun-build types",
  "dev": "contractspec-bun-build dev",
  "clean": "rimraf dist .turbo",
  "lint:check": "node ../../../scripts/biome.cjs check .",
  "lint:fix": "node ../../../scripts/biome.cjs check --write --unsafe --only=nursery/useSortedClasses . && node ../../../scripts/biome.cjs check --write .",
  "test": "bun test",
  "prebuild": "contractspec-bun-build prebuild && bun scripts/restore-browser-exports.ts",
  "typecheck": "tsgo --noEmit"
}
```

## Declared documentation links

- [Integration Provider Calendar documentation](https://www.npmjs.com/package/%40lssm-tech%2Fintegration.provider-calendar) — declared link; destination not verified.

```json
{
  "url": "https://www.npmjs.com/package/%40lssm-tech%2Fintegration.provider-calendar",
  "kind": "readme"
}
```

## Existing agent-guide projection

```json
{
  "path": "packages/apps/web-landing/public/llms-packages/integration.provider-calendar.txt",
  "route": "/llms/integration.provider-calendar",
  "sourceUrl": "https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/integration.provider-calendar.txt",
  "blobSha": "0304ba45632a14e263985362dee833db25e117e7",
  "sourcePin": "bcc79fcc27c4d801c2119bef81ddcce7b4e86498",
  "bodyEqualsReadme": true,
  "aggregateSourcePath": "packages/apps/web-landing/public/llms-full.txt",
  "aggregateBlobSha": "691b1d33efee24c440598b9106c81432f56aafaf"
}
```
