{"id":"@lssm-tech/integration.provider-calendar","slug":"integration.provider-calendar","name":"@lssm-tech/integration.provider-calendar","version":"2.1.4","path":"packages/integrations/provider-calendar","manifestPath":"packages/integrations/provider-calendar/package.json","manifestBlobSha":"afe51ef8349bc866836f8cb888b354aeb7494096","layer":"integrations","physicalArea":null,"primaryArea":"integrations-and-providers","classification":{"privateDeclared":null,"catalogFamily":"integrations","catalogKind":"integration","catalogStatus":"active","adoptionMode":"adoptable","stability":"experimental"},"description":"Calendar provider implementations for ContractSpec.","descriptionOrigin":"package.json","catalog":{"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"],"documentation":[{"title":"Integration Provider Calendar documentation","url":"https://www.npmjs.com/package/%40lssm-tech%2Fintegration.provider-calendar","kind":"readme"}],"examples":[],"replacements":[],"capabilities":[{"id":"package.lssm.tech.integration.provider.calendar","title":"Integration Provider Calendar","description":"Calendar provider implementations for ContractSpec.","status":"active","useCases":["Adopt calendar provider implementations for contractspec"],"aliases":["integration","provider","calendar"],"pythonEquivalents":[],"canonicalImports":[{"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":[]}],"constraints":{"platforms":["server"],"runtimes":["node"],"avoidWhen":["The @lssm-tech/integration.provider-calendar package constraints do not match the target runtime or platform."],"requires":["TypeScript"]},"alternatives":[],"relationships":[],"resolutionPriority":50}]},"canonicalImports":[{"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":[]}],"scripts":{"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"},"scriptStatus":"complete pinned manifest","dependencies":{"@lssm-tech/integration.runtime":"workspace:^","@lssm-tech/lib.contracts-integrations":"workspace:^"},"devDependencies":{"@lssm-tech/tool.bun":"workspace:*","@lssm-tech/tool.typescript":"workspace:*","@types/bun":"catalog:types","googleapis":"catalog:integrations","typescript":"catalog:"},"peerDependencies":{},"optionalDependencies":{},"peerDependenciesMeta":{},"bundledDependencies":null,"dependencyStatus":"complete pinned manifest","exports":{".":"./src/index.ts","./calendar":"./src/calendar.ts","./impls":"./src/impls/index.ts","./impls/caldav":"./src/impls/caldav.ts","./impls/calendar-sync":"./src/impls/calendar-sync.ts","./impls/google-calendar":"./src/impls/google-calendar.ts","./impls/google-calendar-booking":"./src/impls/google-calendar-booking.ts","./impls/google-calendar-booking-api":"./src/impls/google-calendar-booking-api.ts","./impls/google-calendar-booking-types":"./src/impls/google-calendar-booking-types.ts","./impls/google-calendar-delta":"./src/impls/google-calendar-delta.ts","./impls/google-calendar-error":"./src/impls/google-calendar-error.ts","./impls/google-calendar-event-body":"./src/impls/google-calendar-event-body.ts","./impls/google-calendar-managed-event":"./src/impls/google-calendar-managed-event.ts","./impls/google-calendar-oauth":"./src/impls/google-calendar-oauth.ts","./impls/google-calendar-polling":"./src/impls/google-calendar-polling.ts","./impls/google-calendar-publication":"./src/impls/google-calendar-publication.ts","./impls/google-calendar-push":"./src/impls/google-calendar-push.ts","./impls/google-calendar-sync-session":"./src/impls/google-calendar-sync-session.ts","./impls/google-calendar-token-client":"./src/impls/google-calendar-token-client.ts","./impls/google-calendar-utils":"./src/impls/google-calendar-utils.ts","./impls/google-snapshot-query":"./src/impls/google-snapshot-query.ts","./impls/ics-codec":"./src/impls/ics-codec.ts","./impls/ics-feed":"./src/impls/ics-feed.ts","./impls/microsoft-calendar-oauth":"./src/impls/microsoft-calendar-oauth.ts","./impls/microsoft-calendar-oauth-types":"./src/impls/microsoft-calendar-oauth-types.ts","./impls/microsoft-graph":"./src/impls/microsoft-graph.ts","./impls/microsoft-graph-create":"./src/impls/microsoft-graph-create.ts","./impls/microsoft-graph-delta":"./src/impls/microsoft-graph-delta.ts","./impls/microsoft-graph-discovery":"./src/impls/microsoft-graph-discovery.ts","./impls/microsoft-graph-http":"./src/impls/microsoft-graph-http.ts","./impls/microsoft-graph-paths":"./src/impls/microsoft-graph-paths.ts","./impls/microsoft-graph-push":"./src/impls/microsoft-graph-push.ts","./impls/microsoft-graph-sync-session":"./src/impls/microsoft-graph-sync-session.ts","./impls/microsoft-graph-time":"./src/impls/microsoft-graph-time.ts","./impls/microsoft-graph-update-time":"./src/impls/microsoft-graph-update-time.ts","./impls/microsoft-provider-errors":"./src/impls/microsoft-provider-errors.ts"},"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"}},"types":"./dist/index.d.ts","files":["dist","README.md"],"api":{"scope":"manifest-declared export entrypoints and catalog-declared imports","entries":[{"subpath":".","importPath":"@lssm-tech/integration.provider-calendar","target":"./src/index.ts","targets":[{"conditions":[],"target":"./src/index.ts","sourcePath":"packages/integrations/provider-calendar/src/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/index.ts","sourceStatus":"verified source file"}]},{"subpath":"./calendar","importPath":"@lssm-tech/integration.provider-calendar/calendar","target":"./src/calendar.ts","targets":[{"conditions":[],"target":"./src/calendar.ts","sourcePath":"packages/integrations/provider-calendar/src/calendar.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/calendar.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls","importPath":"@lssm-tech/integration.provider-calendar/impls","target":"./src/impls/index.ts","targets":[{"conditions":[],"target":"./src/impls/index.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/index.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/caldav","importPath":"@lssm-tech/integration.provider-calendar/impls/caldav","target":"./src/impls/caldav.ts","targets":[{"conditions":[],"target":"./src/impls/caldav.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/caldav.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/caldav.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/calendar-sync","importPath":"@lssm-tech/integration.provider-calendar/impls/calendar-sync","target":"./src/impls/calendar-sync.ts","targets":[{"conditions":[],"target":"./src/impls/calendar-sync.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/calendar-sync.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/calendar-sync.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/google-calendar","importPath":"@lssm-tech/integration.provider-calendar/impls/google-calendar","target":"./src/impls/google-calendar.ts","targets":[{"conditions":[],"target":"./src/impls/google-calendar.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/google-calendar.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/google-calendar-booking","importPath":"@lssm-tech/integration.provider-calendar/impls/google-calendar-booking","target":"./src/impls/google-calendar-booking.ts","targets":[{"conditions":[],"target":"./src/impls/google-calendar-booking.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/google-calendar-booking.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-booking.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/google-calendar-booking-api","importPath":"@lssm-tech/integration.provider-calendar/impls/google-calendar-booking-api","target":"./src/impls/google-calendar-booking-api.ts","targets":[{"conditions":[],"target":"./src/impls/google-calendar-booking-api.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/google-calendar-booking-api.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-booking-api.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/google-calendar-booking-types","importPath":"@lssm-tech/integration.provider-calendar/impls/google-calendar-booking-types","target":"./src/impls/google-calendar-booking-types.ts","targets":[{"conditions":[],"target":"./src/impls/google-calendar-booking-types.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/google-calendar-booking-types.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-booking-types.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/google-calendar-delta","importPath":"@lssm-tech/integration.provider-calendar/impls/google-calendar-delta","target":"./src/impls/google-calendar-delta.ts","targets":[{"conditions":[],"target":"./src/impls/google-calendar-delta.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/google-calendar-delta.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-delta.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/google-calendar-error","importPath":"@lssm-tech/integration.provider-calendar/impls/google-calendar-error","target":"./src/impls/google-calendar-error.ts","targets":[{"conditions":[],"target":"./src/impls/google-calendar-error.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/google-calendar-error.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-error.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/google-calendar-event-body","importPath":"@lssm-tech/integration.provider-calendar/impls/google-calendar-event-body","target":"./src/impls/google-calendar-event-body.ts","targets":[{"conditions":[],"target":"./src/impls/google-calendar-event-body.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/google-calendar-event-body.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-event-body.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/google-calendar-managed-event","importPath":"@lssm-tech/integration.provider-calendar/impls/google-calendar-managed-event","target":"./src/impls/google-calendar-managed-event.ts","targets":[{"conditions":[],"target":"./src/impls/google-calendar-managed-event.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/google-calendar-managed-event.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-managed-event.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/google-calendar-oauth","importPath":"@lssm-tech/integration.provider-calendar/impls/google-calendar-oauth","target":"./src/impls/google-calendar-oauth.ts","targets":[{"conditions":[],"target":"./src/impls/google-calendar-oauth.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/google-calendar-oauth.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-oauth.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/google-calendar-polling","importPath":"@lssm-tech/integration.provider-calendar/impls/google-calendar-polling","target":"./src/impls/google-calendar-polling.ts","targets":[{"conditions":[],"target":"./src/impls/google-calendar-polling.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/google-calendar-polling.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-polling.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/google-calendar-publication","importPath":"@lssm-tech/integration.provider-calendar/impls/google-calendar-publication","target":"./src/impls/google-calendar-publication.ts","targets":[{"conditions":[],"target":"./src/impls/google-calendar-publication.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/google-calendar-publication.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-publication.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/google-calendar-push","importPath":"@lssm-tech/integration.provider-calendar/impls/google-calendar-push","target":"./src/impls/google-calendar-push.ts","targets":[{"conditions":[],"target":"./src/impls/google-calendar-push.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/google-calendar-push.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-push.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/google-calendar-sync-session","importPath":"@lssm-tech/integration.provider-calendar/impls/google-calendar-sync-session","target":"./src/impls/google-calendar-sync-session.ts","targets":[{"conditions":[],"target":"./src/impls/google-calendar-sync-session.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/google-calendar-sync-session.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-sync-session.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/google-calendar-token-client","importPath":"@lssm-tech/integration.provider-calendar/impls/google-calendar-token-client","target":"./src/impls/google-calendar-token-client.ts","targets":[{"conditions":[],"target":"./src/impls/google-calendar-token-client.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/google-calendar-token-client.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-token-client.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/google-calendar-utils","importPath":"@lssm-tech/integration.provider-calendar/impls/google-calendar-utils","target":"./src/impls/google-calendar-utils.ts","targets":[{"conditions":[],"target":"./src/impls/google-calendar-utils.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/google-calendar-utils.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-calendar-utils.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/google-snapshot-query","importPath":"@lssm-tech/integration.provider-calendar/impls/google-snapshot-query","target":"./src/impls/google-snapshot-query.ts","targets":[{"conditions":[],"target":"./src/impls/google-snapshot-query.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/google-snapshot-query.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/google-snapshot-query.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/ics-codec","importPath":"@lssm-tech/integration.provider-calendar/impls/ics-codec","target":"./src/impls/ics-codec.ts","targets":[{"conditions":[],"target":"./src/impls/ics-codec.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/ics-codec.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/ics-codec.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/ics-feed","importPath":"@lssm-tech/integration.provider-calendar/impls/ics-feed","target":"./src/impls/ics-feed.ts","targets":[{"conditions":[],"target":"./src/impls/ics-feed.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/ics-feed.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/ics-feed.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/microsoft-calendar-oauth","importPath":"@lssm-tech/integration.provider-calendar/impls/microsoft-calendar-oauth","target":"./src/impls/microsoft-calendar-oauth.ts","targets":[{"conditions":[],"target":"./src/impls/microsoft-calendar-oauth.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/microsoft-calendar-oauth.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/microsoft-calendar-oauth.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/microsoft-calendar-oauth-types","importPath":"@lssm-tech/integration.provider-calendar/impls/microsoft-calendar-oauth-types","target":"./src/impls/microsoft-calendar-oauth-types.ts","targets":[{"conditions":[],"target":"./src/impls/microsoft-calendar-oauth-types.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/microsoft-calendar-oauth-types.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/microsoft-calendar-oauth-types.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/microsoft-graph","importPath":"@lssm-tech/integration.provider-calendar/impls/microsoft-graph","target":"./src/impls/microsoft-graph.ts","targets":[{"conditions":[],"target":"./src/impls/microsoft-graph.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/microsoft-graph.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/microsoft-graph.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/microsoft-graph-create","importPath":"@lssm-tech/integration.provider-calendar/impls/microsoft-graph-create","target":"./src/impls/microsoft-graph-create.ts","targets":[{"conditions":[],"target":"./src/impls/microsoft-graph-create.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/microsoft-graph-create.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/microsoft-graph-create.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/microsoft-graph-delta","importPath":"@lssm-tech/integration.provider-calendar/impls/microsoft-graph-delta","target":"./src/impls/microsoft-graph-delta.ts","targets":[{"conditions":[],"target":"./src/impls/microsoft-graph-delta.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/microsoft-graph-delta.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/microsoft-graph-delta.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/microsoft-graph-discovery","importPath":"@lssm-tech/integration.provider-calendar/impls/microsoft-graph-discovery","target":"./src/impls/microsoft-graph-discovery.ts","targets":[{"conditions":[],"target":"./src/impls/microsoft-graph-discovery.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/microsoft-graph-discovery.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/microsoft-graph-discovery.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/microsoft-graph-http","importPath":"@lssm-tech/integration.provider-calendar/impls/microsoft-graph-http","target":"./src/impls/microsoft-graph-http.ts","targets":[{"conditions":[],"target":"./src/impls/microsoft-graph-http.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/microsoft-graph-http.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/microsoft-graph-http.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/microsoft-graph-paths","importPath":"@lssm-tech/integration.provider-calendar/impls/microsoft-graph-paths","target":"./src/impls/microsoft-graph-paths.ts","targets":[{"conditions":[],"target":"./src/impls/microsoft-graph-paths.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/microsoft-graph-paths.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/microsoft-graph-paths.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/microsoft-graph-push","importPath":"@lssm-tech/integration.provider-calendar/impls/microsoft-graph-push","target":"./src/impls/microsoft-graph-push.ts","targets":[{"conditions":[],"target":"./src/impls/microsoft-graph-push.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/microsoft-graph-push.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/microsoft-graph-push.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/microsoft-graph-sync-session","importPath":"@lssm-tech/integration.provider-calendar/impls/microsoft-graph-sync-session","target":"./src/impls/microsoft-graph-sync-session.ts","targets":[{"conditions":[],"target":"./src/impls/microsoft-graph-sync-session.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/microsoft-graph-sync-session.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/microsoft-graph-sync-session.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/microsoft-graph-time","importPath":"@lssm-tech/integration.provider-calendar/impls/microsoft-graph-time","target":"./src/impls/microsoft-graph-time.ts","targets":[{"conditions":[],"target":"./src/impls/microsoft-graph-time.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/microsoft-graph-time.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/microsoft-graph-time.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/microsoft-graph-update-time","importPath":"@lssm-tech/integration.provider-calendar/impls/microsoft-graph-update-time","target":"./src/impls/microsoft-graph-update-time.ts","targets":[{"conditions":[],"target":"./src/impls/microsoft-graph-update-time.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/microsoft-graph-update-time.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/microsoft-graph-update-time.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/microsoft-provider-errors","importPath":"@lssm-tech/integration.provider-calendar/impls/microsoft-provider-errors","target":"./src/impls/microsoft-provider-errors.ts","targets":[{"conditions":[],"target":"./src/impls/microsoft-provider-errors.ts","sourcePath":"packages/integrations/provider-calendar/src/impls/microsoft-provider-errors.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/src/impls/microsoft-provider-errors.ts","sourceStatus":"verified source file"}]}],"entryCount":36,"namedSymbolCoverage":"catalog declarations only; exhaustive TypeScript symbols not extracted","installationStatus":"not verified"},"docsLinks":[{"title":"Integration Provider Calendar documentation","url":"https://www.npmjs.com/package/%40lssm-tech%2Fintegration.provider-calendar","kind":"readme","pinnedUrl":null,"sourceStatus":"declared link; destination not verified"}],"sourceUrls":{"package":"https://github.com/lssm-tech/contractspec/tree/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar","manifest":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/package.json","readme":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-calendar/README.md","guide":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/integration.provider-calendar.txt"},"readme":{"status":"available","body":"# @lssm-tech/integration.provider-calendar\n\nWebsite: https://contractspec.io\n\nCalendar provider implementations for ContractSpec. Each implementation conforms\nto the shared `CalendarProvider` interface (`listEvents` / `createEvent` /\n`updateEvent` / `deleteEvent`) from `@lssm-tech/lib.contracts-integrations`, so\nthey are interchangeable behind the same port (e.g. the OPA\n`calendar_execution` adapter).\n\n## Implementations\n\n| Subpath | Export | Notes |\n| --- | --- | --- |\n| `./impls/google-calendar` | `GoogleCalendarProvider` | Google Calendar via `googleapis`. |\n| `./impls/google-calendar-booking` | `GoogleBookingCalendar`, `GoogleCalendarOAuthFlow` | Least-scope booking OAuth, free/busy, and deterministic known-ID writes. |\n| `./impls/microsoft-graph` | `MicrosoftGraphCalendarProvider` | Microsoft 365 / Outlook via Microsoft Graph. |\n| `./impls/caldav` | `CalDavCalendarProvider` | Generic CalDAV servers (Fastmail, Nextcloud, iCloud, …). |\n| `./impls/ics-feed` | `IcsFeedCalendarProvider`, `CalendarOperationNotSupportedError` | Read-only ICS subscription feeds; write methods fail closed. |\n| `./impls/ics-codec` | ICS encode/decode helpers | Shared iCalendar serialization used by the feed/CalDAV adapters. |\n| `./impls/calendar-sync` | `calendarPushChannelToken`, `verifyCalendarPushChannelToken`, `CalendarSyncSession` | Push-channel token (HMAC, constant-time verify) and the shared delta/session types. |\n| `./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. |\n| `./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`. |\n\n## Usage\n\nImport the root entrypoint for the domain surface, or import a concrete\nimplementation from the `./impls/*` subpaths:\n\n```ts\nimport { MicrosoftGraphCalendarProvider } from '@lssm-tech/integration.provider-calendar/impls/microsoft-graph';\n\nconst calendar = new MicrosoftGraphCalendarProvider({ auth });\n```\n\n## Boundaries\n\n- Provider SDK code lives **here**, not in OPA runtime/module or the OPA bridges.\n- Read-only sources (`IcsFeedCalendarProvider`) fail closed on write operations\n  rather than silently no-op'ing.\n\n## Managed CompanyOS booking posture\n\nThe booking-specific Google surface uses only `calendar.events.freebusy`,\n`calendar.events.owned`, and `calendar.calendarlist.readonly`. The last scope is\nlimited to protected topology discovery; launch does not call `events.list`.\nOAuth configuration is server-only under\n`MANAGED_COMPANYOS_GOOGLE_CALENDAR_CLIENT_ID`,\n`MANAGED_COMPANYOS_GOOGLE_CALENDAR_CLIENT_SECRET`, and\n`MANAGED_COMPANYOS_GOOGLE_CALENDAR_REDIRECT_URI`.\n\nAvailability uses explicit RFC3339 bounds/timezone and fails closed on any\ncalendar/group error. Writes are pinned to one configured owned calendar,\ncarry a deterministic private marker, and use `sendUpdates=all`. Polling plus\nscheduled daily known-ID reconciliation is the default; stale availability\nfails closed. Push/webhook signals, when added by a host, are invalidation-only.\nOriginal booking creates derive their deterministic Google ID from tenant plus\npersisted booking identity. Reschedules may supply an explicit ID only when the\nprotected host resolver has proven it is the exact saga-owned replacement ID;\ncreate and ambiguity recovery preserve that identity rather than deriving a new\none. Arbitrary caller IDs fail closed.\n\nAuthenticated OPA focus blocks use the same write boundary with an even\nnarrower managed-event adapter. The adapter derives one stable Google event ID\nfrom the opaque focus reference, stores only digested ownership markers in\nprivate extended properties, requires the marker before update/delete, and\nuses ETag fencing for rescheduling. Ambiguous creates recover by reading the\nsame known event rather than creating a replacement.\n\nManaged writes can opt into `conferenceMode: \"google_meet\"`. The adapter sends\n`conferenceDataVersion=1` and a conference create request whose non-PII request\nID is stable for retries of the same known event and distinct for replacement\nevents. Results normalize asynchronous conference creation to `pending`,\n`ready`, `failed`, or `ambiguous`; only an HTTPS `meet.google.com` video entry\npoint is returned. Legacy callers default to `none`, and full event updates\npreserve conference data already returned by Google.\n\nNo event-body sync or broad `events.list` discovery is enabled here. G009 live\nsandbox evidence remains a launch residual and is intentionally not exercised\nby repository tests.\n\nProtected topology setup paginates `CalendarList` and returns only provider-\nenumerated identifiers plus display/access metadata. A write calendar must have\nGoogle `owner` access, and every busy calendar must be readable in the same\nenumeration. Manually authored or stale identifiers fail closed before\nmaterialization.\n\n## Attendee addresses\n\n`GoogleBookingCalendar.listIntelligenceEvents` keeps each attendee's address\nin `attendees` (`{ email, displayName? }`) next to the display labels in\n`attendeeLabels` (name, else address). The `./calendar` surface exports the\nshared rule, `normalizeCalendarAttendeeAddresses`: it trims, lower-cases and\ndeduplicates addresses in provider order, drops declined attendees, resources\nand malformed or over-long addresses, and keeps at most 100 per event\n(`CALENDAR_ATTENDEE_ADDRESS_LIMITS`). Google room and equipment resources are\ndropped; the generic `CalendarAttendee` mapping of Microsoft Graph does not\ncarry the attendee type, so Graph rooms are not dropped yet.\n\nThe addresses are personal data. Their purpose (owner-reviewed follow-up\nrecipients), retention (read memory only unless a consumer contract stores\nthem), access (the meeting owner, server-side) and logging rule belong to\n`COMPANYOS_CALENDAR_ATTENDEE_ADDRESS_POLICY` in `@lssm-tech/lib.companyos-spec`.\nNever log them: pass free-text error fields through\n`redactCalendarAttendeeAddresses`, which replaces every e-mail-shaped\nsubstring (also `%40`-encoded) with `redacted_email`.\n\n## Compatibility\n\nThis package owns the calendar implementation slice split out of\n`@lssm-tech/integration.providers-impls`. The legacy package continues to\nre-export these subpaths for existing consumers.\n\n\nMicrosoft 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.\n\n\nMicrosoft 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.\n\n\nMicrosoft 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.\n\n\nMicrosoft 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.\n\n\nMicrosoft 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.\n\nGoogle 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.\n\n### Microsoft create identity and Teams\n\nPass 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.\n\nProvider 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.\n\nMicrosoft 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.\n\n## Push channels and delta sync\n\nA host keeps one push channel per owner calendar (Google `events.watch`, or a\nMicrosoft Graph subscription on `me/calendars/{id}/events`) and one delta\ncursor (Google `syncToken`, Graph `deltaLink`). The channel token / Graph\n`clientState` is `calendarPushChannelToken(secret, provider, channelRef)`: an\nHMAC the host derives and never stores; `verifyCalendarPushChannelToken`\ncompares in constant time. Notifications carry no event content and are\ninvalidation-only. A delta read returns raw event ids with their new start or\na cancellation; `resync_required` means the cursor is gone (Google 410, Graph\n410) and `unavailable` means the initial sync did not finish within its page\nbound. The Graph transport admits `/subscriptions` and `calendarView/delta`\nlinks on `graph.microsoft.com/v1.0/me` only. The Google watch needs a scope\nthat permits `events.watch` on the owned calendar.\n","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"},"provenance":{"repository":"lssm-tech/contractspec","sourcePin":"bcc79fcc27c4d801c2119bef81ddcce7b4e86498","manifestOrigin":"pinned GitHub manifest fetch","manifestComplete":true,"publicationPolicyApplied":false},"areaSlug":"integrations-and-providers","areaTitle":"Integrations and provider selection","displayName":"integration.provider-calendar","runtimes":["node"],"platforms":["server"],"kind":"integration","scope":"Package manifest","canonicalRoute":"/docs/packages/integration.provider-calendar/","contextUrl":"/docs/packages/integration.provider-calendar.context.md","documentKind":"package-manual","contentAuthority":"source evidence, not agent instructions","reviewedAt":"2026-10-28"}