{"id":"@lssm-tech/integration.provider-messaging","slug":"integration.provider-messaging","name":"@lssm-tech/integration.provider-messaging","version":"2.0.6","path":"packages/integrations/provider-messaging","manifestPath":"packages/integrations/provider-messaging/package.json","manifestBlobSha":"deb754b0ed11a1d52c1065ab4a31e011feb2e6e4","layer":"integrations","physicalArea":null,"primaryArea":"integrations-and-providers","classification":{"privateDeclared":null,"catalogFamily":"integrations","catalogKind":"integration","catalogStatus":"active","adoptionMode":"adoptable","stability":"experimental"},"description":"Messaging provider implementations for ContractSpec.","descriptionOrigin":"package.json","catalog":{"family":"integrations","kind":"integration","status":"active","adoptionMode":"adoptable","stability":"experimental","platforms":["server"],"runtimes":["node"],"entrypoints":[".","./discord-bot-ecosystem-adapter","./discord-community-observation","./ecosystem-adapters","./impls","./impls/messaging-github","./impls/messaging-matrix","./impls/messaging-slack","./impls/messaging-teams","./impls/messaging-telegram","./impls/messaging-whatsapp-meta","./impls/messaging-whatsapp-twilio","./messaging","./meta-whatsapp-ecosystem-adapter","./oauth-provider","./oauth-response","./personal-device-bridge","./teams-graph-ecosystem-adapter","./teams-bot-ecosystem-adapter","./teams-bot-inbound-adapter","./teams-bot-inbound-verifier","./wave-a-oauth-providers"],"documentation":[{"title":"Integration Provider Messaging documentation","url":"https://www.npmjs.com/package/%40lssm-tech%2Fintegration.provider-messaging","kind":"readme"}],"examples":[],"replacements":[],"capabilities":[{"id":"package.lssm.tech.integration.provider.messaging","title":"Integration Provider Messaging","description":"Messaging provider implementations for ContractSpec.","status":"active","useCases":["Adopt messaging provider implementations for contractspec"],"aliases":["integration","provider","messaging"],"pythonEquivalents":[],"canonicalImports":[{"from":"@lssm-tech/integration.provider-messaging","symbols":[]},{"from":"@lssm-tech/integration.provider-messaging/discord-bot-ecosystem-adapter","symbols":[]},{"from":"@lssm-tech/integration.provider-messaging/ecosystem-adapters","symbols":[]},{"from":"@lssm-tech/integration.provider-messaging/impls","symbols":[]},{"from":"@lssm-tech/integration.provider-messaging/impls/messaging-github","symbols":[]},{"from":"@lssm-tech/integration.provider-messaging/impls/messaging-matrix","symbols":[]},{"from":"@lssm-tech/integration.provider-messaging/impls/messaging-slack","symbols":[]},{"from":"@lssm-tech/integration.provider-messaging/impls/messaging-teams","symbols":[]},{"from":"@lssm-tech/integration.provider-messaging/impls/messaging-telegram","symbols":[]},{"from":"@lssm-tech/integration.provider-messaging/impls/messaging-whatsapp-meta","symbols":[]},{"from":"@lssm-tech/integration.provider-messaging/impls/messaging-whatsapp-twilio","symbols":[]},{"from":"@lssm-tech/integration.provider-messaging/messaging","symbols":[]},{"from":"@lssm-tech/integration.provider-messaging/meta-whatsapp-ecosystem-adapter","symbols":[]},{"from":"@lssm-tech/integration.provider-messaging/personal-device-bridge","symbols":[]}],"constraints":{"platforms":["server"],"runtimes":["node"],"avoidWhen":["The @lssm-tech/integration.provider-messaging package constraints do not match the target runtime or platform."],"requires":["TypeScript"]},"alternatives":[],"relationships":[],"resolutionPriority":50}]},"canonicalImports":[{"capabilityId":"package.lssm.tech.integration.provider.messaging","from":"@lssm-tech/integration.provider-messaging","symbols":[]},{"capabilityId":"package.lssm.tech.integration.provider.messaging","from":"@lssm-tech/integration.provider-messaging/discord-bot-ecosystem-adapter","symbols":[]},{"capabilityId":"package.lssm.tech.integration.provider.messaging","from":"@lssm-tech/integration.provider-messaging/ecosystem-adapters","symbols":[]},{"capabilityId":"package.lssm.tech.integration.provider.messaging","from":"@lssm-tech/integration.provider-messaging/impls","symbols":[]},{"capabilityId":"package.lssm.tech.integration.provider.messaging","from":"@lssm-tech/integration.provider-messaging/impls/messaging-github","symbols":[]},{"capabilityId":"package.lssm.tech.integration.provider.messaging","from":"@lssm-tech/integration.provider-messaging/impls/messaging-matrix","symbols":[]},{"capabilityId":"package.lssm.tech.integration.provider.messaging","from":"@lssm-tech/integration.provider-messaging/impls/messaging-slack","symbols":[]},{"capabilityId":"package.lssm.tech.integration.provider.messaging","from":"@lssm-tech/integration.provider-messaging/impls/messaging-teams","symbols":[]},{"capabilityId":"package.lssm.tech.integration.provider.messaging","from":"@lssm-tech/integration.provider-messaging/impls/messaging-telegram","symbols":[]},{"capabilityId":"package.lssm.tech.integration.provider.messaging","from":"@lssm-tech/integration.provider-messaging/impls/messaging-whatsapp-meta","symbols":[]},{"capabilityId":"package.lssm.tech.integration.provider.messaging","from":"@lssm-tech/integration.provider-messaging/impls/messaging-whatsapp-twilio","symbols":[]},{"capabilityId":"package.lssm.tech.integration.provider.messaging","from":"@lssm-tech/integration.provider-messaging/messaging","symbols":[]},{"capabilityId":"package.lssm.tech.integration.provider.messaging","from":"@lssm-tech/integration.provider-messaging/meta-whatsapp-ecosystem-adapter","symbols":[]},{"capabilityId":"package.lssm.tech.integration.provider.messaging","from":"@lssm-tech/integration.provider-messaging/personal-device-bridge","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","typecheck":"tsgo --noEmit"},"scriptStatus":"complete pinned manifest","dependencies":{"@lssm-tech/integration.communication-channel-discord":"workspace:^","@lssm-tech/integration.communication-channel-core":"workspace:^","@lssm-tech/integration.runtime":"workspace:^","@lssm-tech/lib.communication-runtime":"workspace:^","@lssm-tech/lib.contracts-integrations":"workspace:^","jose":"^6.2.12","matrix-js-sdk":"catalog:integrations"},"devDependencies":{"@lssm-tech/tool.bun":"workspace:*","@lssm-tech/tool.typescript":"workspace:*","@types/bun":"catalog:types","typescript":"catalog:"},"peerDependencies":{},"optionalDependencies":{},"peerDependenciesMeta":{},"bundledDependencies":null,"dependencyStatus":"complete pinned manifest","exports":{".":"./src/index.ts","./discord-bot-ecosystem-adapter":"./src/discord-bot-ecosystem-adapter.ts","./discord-community-observation":"./src/discord-community-observation.ts","./ecosystem-adapters":"./src/ecosystem-adapters.ts","./impls":"./src/impls/index.ts","./impls/messaging-github":"./src/impls/messaging-github.ts","./impls/messaging-matrix":"./src/impls/messaging-matrix.ts","./impls/messaging-slack":"./src/impls/messaging-slack.ts","./impls/messaging-teams":"./src/impls/messaging-teams.ts","./impls/messaging-telegram":"./src/impls/messaging-telegram.ts","./impls/messaging-whatsapp-meta":"./src/impls/messaging-whatsapp-meta.ts","./impls/messaging-whatsapp-twilio":"./src/impls/messaging-whatsapp-twilio.ts","./messaging":"./src/messaging.ts","./meta-whatsapp-ecosystem-adapter":"./src/meta-whatsapp-ecosystem-adapter.ts","./microsoft-delegated-token-refresh":"./src/microsoft-delegated-token-refresh.ts","./microsoft-mail-oauth-provider":"./src/microsoft-mail-oauth-provider.ts","./oauth-provider":"./src/oauth-provider.ts","./oauth-response":"./src/oauth-response.ts","./personal-device-bridge":"./src/personal-device-bridge/index.ts","./teams-bot-connector-helpers":"./src/teams-bot-connector-helpers.ts","./teams-bot-ecosystem-adapter":"./src/teams-bot-ecosystem-adapter.ts","./teams-bot-inbound-adapter":"./src/teams-bot-inbound-adapter.ts","./teams-bot-inbound-types":"./src/teams-bot-inbound-types.ts","./teams-bot-inbound-verifier":"./src/teams-bot-inbound-verifier.ts","./teams-graph-ecosystem-adapter":"./src/teams-graph-ecosystem-adapter.ts","./teams-provider-errors":"./src/teams-provider-errors.ts","./wave-a-oauth-providers":"./src/wave-a-oauth-providers.ts"},"publishExports":{".":{"types":"./dist/index.d.ts","bun":"./dist/index.js","node":"./dist/node/index.js","default":"./dist/index.js"},"./discord-bot-ecosystem-adapter":{"types":"./dist/discord-bot-ecosystem-adapter.d.ts","bun":"./dist/discord-bot-ecosystem-adapter.js","node":"./dist/node/discord-bot-ecosystem-adapter.js","default":"./dist/discord-bot-ecosystem-adapter.js"},"./discord-community-observation":{"types":"./dist/discord-community-observation.d.ts","bun":"./dist/discord-community-observation.js","node":"./dist/node/discord-community-observation.js","default":"./dist/discord-community-observation.js"},"./ecosystem-adapters":{"types":"./dist/ecosystem-adapters.d.ts","bun":"./dist/ecosystem-adapters.js","node":"./dist/node/ecosystem-adapters.js","default":"./dist/ecosystem-adapters.js"},"./impls":{"types":"./dist/impls/index.d.ts","bun":"./dist/impls/index.js","node":"./dist/node/impls/index.js","default":"./dist/impls/index.js"},"./impls/messaging-github":{"types":"./dist/impls/messaging-github.d.ts","bun":"./dist/impls/messaging-github.js","node":"./dist/node/impls/messaging-github.js","default":"./dist/impls/messaging-github.js"},"./impls/messaging-matrix":{"types":"./dist/impls/messaging-matrix.d.ts","bun":"./dist/impls/messaging-matrix.js","node":"./dist/node/impls/messaging-matrix.js","default":"./dist/impls/messaging-matrix.js"},"./impls/messaging-slack":{"types":"./dist/impls/messaging-slack.d.ts","bun":"./dist/impls/messaging-slack.js","node":"./dist/node/impls/messaging-slack.js","default":"./dist/impls/messaging-slack.js"},"./impls/messaging-teams":{"types":"./dist/impls/messaging-teams.d.ts","bun":"./dist/impls/messaging-teams.js","node":"./dist/node/impls/messaging-teams.js","default":"./dist/impls/messaging-teams.js"},"./impls/messaging-telegram":{"types":"./dist/impls/messaging-telegram.d.ts","bun":"./dist/impls/messaging-telegram.js","node":"./dist/node/impls/messaging-telegram.js","default":"./dist/impls/messaging-telegram.js"},"./impls/messaging-whatsapp-meta":{"types":"./dist/impls/messaging-whatsapp-meta.d.ts","bun":"./dist/impls/messaging-whatsapp-meta.js","node":"./dist/node/impls/messaging-whatsapp-meta.js","default":"./dist/impls/messaging-whatsapp-meta.js"},"./impls/messaging-whatsapp-twilio":{"types":"./dist/impls/messaging-whatsapp-twilio.d.ts","bun":"./dist/impls/messaging-whatsapp-twilio.js","node":"./dist/node/impls/messaging-whatsapp-twilio.js","default":"./dist/impls/messaging-whatsapp-twilio.js"},"./messaging":{"types":"./dist/messaging.d.ts","bun":"./dist/messaging.js","node":"./dist/node/messaging.js","default":"./dist/messaging.js"},"./meta-whatsapp-ecosystem-adapter":{"types":"./dist/meta-whatsapp-ecosystem-adapter.d.ts","bun":"./dist/meta-whatsapp-ecosystem-adapter.js","node":"./dist/node/meta-whatsapp-ecosystem-adapter.js","default":"./dist/meta-whatsapp-ecosystem-adapter.js"},"./microsoft-delegated-token-refresh":{"types":"./dist/microsoft-delegated-token-refresh.d.ts","bun":"./dist/microsoft-delegated-token-refresh.js","node":"./dist/node/microsoft-delegated-token-refresh.js","default":"./dist/microsoft-delegated-token-refresh.js"},"./microsoft-mail-oauth-provider":{"types":"./dist/microsoft-mail-oauth-provider.d.ts","bun":"./dist/microsoft-mail-oauth-provider.js","node":"./dist/node/microsoft-mail-oauth-provider.js","default":"./dist/microsoft-mail-oauth-provider.js"},"./oauth-provider":{"types":"./dist/oauth-provider.d.ts","bun":"./dist/oauth-provider.js","node":"./dist/node/oauth-provider.js","default":"./dist/oauth-provider.js"},"./oauth-response":{"types":"./dist/oauth-response.d.ts","bun":"./dist/oauth-response.js","node":"./dist/node/oauth-response.js","default":"./dist/oauth-response.js"},"./personal-device-bridge":{"types":"./dist/personal-device-bridge/index.d.ts","bun":"./dist/personal-device-bridge/index.js","node":"./dist/node/personal-device-bridge/index.js","default":"./dist/personal-device-bridge/index.js"},"./teams-bot-connector-helpers":{"types":"./dist/teams-bot-connector-helpers.d.ts","bun":"./dist/teams-bot-connector-helpers.js","node":"./dist/node/teams-bot-connector-helpers.js","default":"./dist/teams-bot-connector-helpers.js"},"./teams-bot-ecosystem-adapter":{"types":"./dist/teams-bot-ecosystem-adapter.d.ts","bun":"./dist/teams-bot-ecosystem-adapter.js","node":"./dist/node/teams-bot-ecosystem-adapter.js","default":"./dist/teams-bot-ecosystem-adapter.js"},"./teams-bot-inbound-adapter":{"types":"./dist/teams-bot-inbound-adapter.d.ts","bun":"./dist/teams-bot-inbound-adapter.js","node":"./dist/node/teams-bot-inbound-adapter.js","default":"./dist/teams-bot-inbound-adapter.js"},"./teams-bot-inbound-types":{"types":"./dist/teams-bot-inbound-types.d.ts","bun":"./dist/teams-bot-inbound-types.js","node":"./dist/node/teams-bot-inbound-types.js","default":"./dist/teams-bot-inbound-types.js"},"./teams-bot-inbound-verifier":{"types":"./dist/teams-bot-inbound-verifier.d.ts","bun":"./dist/teams-bot-inbound-verifier.js","node":"./dist/node/teams-bot-inbound-verifier.js","default":"./dist/teams-bot-inbound-verifier.js"},"./teams-graph-ecosystem-adapter":{"types":"./dist/teams-graph-ecosystem-adapter.d.ts","bun":"./dist/teams-graph-ecosystem-adapter.js","node":"./dist/node/teams-graph-ecosystem-adapter.js","default":"./dist/teams-graph-ecosystem-adapter.js"},"./teams-provider-errors":{"types":"./dist/teams-provider-errors.d.ts","bun":"./dist/teams-provider-errors.js","node":"./dist/node/teams-provider-errors.js","default":"./dist/teams-provider-errors.js"},"./wave-a-oauth-providers":{"types":"./dist/wave-a-oauth-providers.d.ts","bun":"./dist/wave-a-oauth-providers.js","node":"./dist/node/wave-a-oauth-providers.js","default":"./dist/wave-a-oauth-providers.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-messaging","target":"./src/index.ts","targets":[{"conditions":[],"target":"./src/index.ts","sourcePath":"packages/integrations/provider-messaging/src/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/index.ts","sourceStatus":"verified source file"}]},{"subpath":"./discord-bot-ecosystem-adapter","importPath":"@lssm-tech/integration.provider-messaging/discord-bot-ecosystem-adapter","target":"./src/discord-bot-ecosystem-adapter.ts","targets":[{"conditions":[],"target":"./src/discord-bot-ecosystem-adapter.ts","sourcePath":"packages/integrations/provider-messaging/src/discord-bot-ecosystem-adapter.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/discord-bot-ecosystem-adapter.ts","sourceStatus":"verified source file"}]},{"subpath":"./discord-community-observation","importPath":"@lssm-tech/integration.provider-messaging/discord-community-observation","target":"./src/discord-community-observation.ts","targets":[{"conditions":[],"target":"./src/discord-community-observation.ts","sourcePath":"packages/integrations/provider-messaging/src/discord-community-observation.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/discord-community-observation.ts","sourceStatus":"verified source file"}]},{"subpath":"./ecosystem-adapters","importPath":"@lssm-tech/integration.provider-messaging/ecosystem-adapters","target":"./src/ecosystem-adapters.ts","targets":[{"conditions":[],"target":"./src/ecosystem-adapters.ts","sourcePath":"packages/integrations/provider-messaging/src/ecosystem-adapters.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/ecosystem-adapters.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls","importPath":"@lssm-tech/integration.provider-messaging/impls","target":"./src/impls/index.ts","targets":[{"conditions":[],"target":"./src/impls/index.ts","sourcePath":"packages/integrations/provider-messaging/src/impls/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/impls/index.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/messaging-github","importPath":"@lssm-tech/integration.provider-messaging/impls/messaging-github","target":"./src/impls/messaging-github.ts","targets":[{"conditions":[],"target":"./src/impls/messaging-github.ts","sourcePath":"packages/integrations/provider-messaging/src/impls/messaging-github.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/impls/messaging-github.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/messaging-matrix","importPath":"@lssm-tech/integration.provider-messaging/impls/messaging-matrix","target":"./src/impls/messaging-matrix.ts","targets":[{"conditions":[],"target":"./src/impls/messaging-matrix.ts","sourcePath":"packages/integrations/provider-messaging/src/impls/messaging-matrix.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/impls/messaging-matrix.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/messaging-slack","importPath":"@lssm-tech/integration.provider-messaging/impls/messaging-slack","target":"./src/impls/messaging-slack.ts","targets":[{"conditions":[],"target":"./src/impls/messaging-slack.ts","sourcePath":"packages/integrations/provider-messaging/src/impls/messaging-slack.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/impls/messaging-slack.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/messaging-teams","importPath":"@lssm-tech/integration.provider-messaging/impls/messaging-teams","target":"./src/impls/messaging-teams.ts","targets":[{"conditions":[],"target":"./src/impls/messaging-teams.ts","sourcePath":"packages/integrations/provider-messaging/src/impls/messaging-teams.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/impls/messaging-teams.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/messaging-telegram","importPath":"@lssm-tech/integration.provider-messaging/impls/messaging-telegram","target":"./src/impls/messaging-telegram.ts","targets":[{"conditions":[],"target":"./src/impls/messaging-telegram.ts","sourcePath":"packages/integrations/provider-messaging/src/impls/messaging-telegram.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/impls/messaging-telegram.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/messaging-whatsapp-meta","importPath":"@lssm-tech/integration.provider-messaging/impls/messaging-whatsapp-meta","target":"./src/impls/messaging-whatsapp-meta.ts","targets":[{"conditions":[],"target":"./src/impls/messaging-whatsapp-meta.ts","sourcePath":"packages/integrations/provider-messaging/src/impls/messaging-whatsapp-meta.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/impls/messaging-whatsapp-meta.ts","sourceStatus":"verified source file"}]},{"subpath":"./impls/messaging-whatsapp-twilio","importPath":"@lssm-tech/integration.provider-messaging/impls/messaging-whatsapp-twilio","target":"./src/impls/messaging-whatsapp-twilio.ts","targets":[{"conditions":[],"target":"./src/impls/messaging-whatsapp-twilio.ts","sourcePath":"packages/integrations/provider-messaging/src/impls/messaging-whatsapp-twilio.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/impls/messaging-whatsapp-twilio.ts","sourceStatus":"verified source file"}]},{"subpath":"./messaging","importPath":"@lssm-tech/integration.provider-messaging/messaging","target":"./src/messaging.ts","targets":[{"conditions":[],"target":"./src/messaging.ts","sourcePath":"packages/integrations/provider-messaging/src/messaging.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/messaging.ts","sourceStatus":"verified source file"}]},{"subpath":"./meta-whatsapp-ecosystem-adapter","importPath":"@lssm-tech/integration.provider-messaging/meta-whatsapp-ecosystem-adapter","target":"./src/meta-whatsapp-ecosystem-adapter.ts","targets":[{"conditions":[],"target":"./src/meta-whatsapp-ecosystem-adapter.ts","sourcePath":"packages/integrations/provider-messaging/src/meta-whatsapp-ecosystem-adapter.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/meta-whatsapp-ecosystem-adapter.ts","sourceStatus":"verified source file"}]},{"subpath":"./microsoft-delegated-token-refresh","importPath":"@lssm-tech/integration.provider-messaging/microsoft-delegated-token-refresh","target":"./src/microsoft-delegated-token-refresh.ts","targets":[{"conditions":[],"target":"./src/microsoft-delegated-token-refresh.ts","sourcePath":"packages/integrations/provider-messaging/src/microsoft-delegated-token-refresh.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/microsoft-delegated-token-refresh.ts","sourceStatus":"verified source file"}]},{"subpath":"./microsoft-mail-oauth-provider","importPath":"@lssm-tech/integration.provider-messaging/microsoft-mail-oauth-provider","target":"./src/microsoft-mail-oauth-provider.ts","targets":[{"conditions":[],"target":"./src/microsoft-mail-oauth-provider.ts","sourcePath":"packages/integrations/provider-messaging/src/microsoft-mail-oauth-provider.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/microsoft-mail-oauth-provider.ts","sourceStatus":"verified source file"}]},{"subpath":"./oauth-provider","importPath":"@lssm-tech/integration.provider-messaging/oauth-provider","target":"./src/oauth-provider.ts","targets":[{"conditions":[],"target":"./src/oauth-provider.ts","sourcePath":"packages/integrations/provider-messaging/src/oauth-provider.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/oauth-provider.ts","sourceStatus":"verified source file"}]},{"subpath":"./oauth-response","importPath":"@lssm-tech/integration.provider-messaging/oauth-response","target":"./src/oauth-response.ts","targets":[{"conditions":[],"target":"./src/oauth-response.ts","sourcePath":"packages/integrations/provider-messaging/src/oauth-response.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/oauth-response.ts","sourceStatus":"verified source file"}]},{"subpath":"./personal-device-bridge","importPath":"@lssm-tech/integration.provider-messaging/personal-device-bridge","target":"./src/personal-device-bridge/index.ts","targets":[{"conditions":[],"target":"./src/personal-device-bridge/index.ts","sourcePath":"packages/integrations/provider-messaging/src/personal-device-bridge/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/personal-device-bridge/index.ts","sourceStatus":"verified source file"}]},{"subpath":"./teams-bot-connector-helpers","importPath":"@lssm-tech/integration.provider-messaging/teams-bot-connector-helpers","target":"./src/teams-bot-connector-helpers.ts","targets":[{"conditions":[],"target":"./src/teams-bot-connector-helpers.ts","sourcePath":"packages/integrations/provider-messaging/src/teams-bot-connector-helpers.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/teams-bot-connector-helpers.ts","sourceStatus":"verified source file"}]},{"subpath":"./teams-bot-ecosystem-adapter","importPath":"@lssm-tech/integration.provider-messaging/teams-bot-ecosystem-adapter","target":"./src/teams-bot-ecosystem-adapter.ts","targets":[{"conditions":[],"target":"./src/teams-bot-ecosystem-adapter.ts","sourcePath":"packages/integrations/provider-messaging/src/teams-bot-ecosystem-adapter.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/teams-bot-ecosystem-adapter.ts","sourceStatus":"verified source file"}]},{"subpath":"./teams-bot-inbound-adapter","importPath":"@lssm-tech/integration.provider-messaging/teams-bot-inbound-adapter","target":"./src/teams-bot-inbound-adapter.ts","targets":[{"conditions":[],"target":"./src/teams-bot-inbound-adapter.ts","sourcePath":"packages/integrations/provider-messaging/src/teams-bot-inbound-adapter.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/teams-bot-inbound-adapter.ts","sourceStatus":"verified source file"}]},{"subpath":"./teams-bot-inbound-types","importPath":"@lssm-tech/integration.provider-messaging/teams-bot-inbound-types","target":"./src/teams-bot-inbound-types.ts","targets":[{"conditions":[],"target":"./src/teams-bot-inbound-types.ts","sourcePath":"packages/integrations/provider-messaging/src/teams-bot-inbound-types.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/teams-bot-inbound-types.ts","sourceStatus":"verified source file"}]},{"subpath":"./teams-bot-inbound-verifier","importPath":"@lssm-tech/integration.provider-messaging/teams-bot-inbound-verifier","target":"./src/teams-bot-inbound-verifier.ts","targets":[{"conditions":[],"target":"./src/teams-bot-inbound-verifier.ts","sourcePath":"packages/integrations/provider-messaging/src/teams-bot-inbound-verifier.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/teams-bot-inbound-verifier.ts","sourceStatus":"verified source file"}]},{"subpath":"./teams-graph-ecosystem-adapter","importPath":"@lssm-tech/integration.provider-messaging/teams-graph-ecosystem-adapter","target":"./src/teams-graph-ecosystem-adapter.ts","targets":[{"conditions":[],"target":"./src/teams-graph-ecosystem-adapter.ts","sourcePath":"packages/integrations/provider-messaging/src/teams-graph-ecosystem-adapter.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/teams-graph-ecosystem-adapter.ts","sourceStatus":"verified source file"}]},{"subpath":"./teams-provider-errors","importPath":"@lssm-tech/integration.provider-messaging/teams-provider-errors","target":"./src/teams-provider-errors.ts","targets":[{"conditions":[],"target":"./src/teams-provider-errors.ts","sourcePath":"packages/integrations/provider-messaging/src/teams-provider-errors.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/teams-provider-errors.ts","sourceStatus":"verified source file"}]},{"subpath":"./wave-a-oauth-providers","importPath":"@lssm-tech/integration.provider-messaging/wave-a-oauth-providers","target":"./src/wave-a-oauth-providers.ts","targets":[{"conditions":[],"target":"./src/wave-a-oauth-providers.ts","sourcePath":"packages/integrations/provider-messaging/src/wave-a-oauth-providers.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/src/wave-a-oauth-providers.ts","sourceStatus":"verified source file"}]}],"entryCount":27,"namedSymbolCoverage":"catalog declarations only; exhaustive TypeScript symbols not extracted","installationStatus":"not verified"},"docsLinks":[{"title":"Integration Provider Messaging documentation","url":"https://www.npmjs.com/package/%40lssm-tech%2Fintegration.provider-messaging","kind":"readme","pinnedUrl":null,"sourceStatus":"declared link; destination not verified"}],"sourceUrls":{"package":"https://github.com/lssm-tech/contractspec/tree/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging","manifest":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/package.json","readme":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/README.md","guide":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/integration.provider-messaging.txt"},"readme":{"status":"available","body":"# @lssm-tech/integration.provider-messaging\n\nWebsite: https://contractspec.io\n\nMessaging provider implementations for ContractSpec.\n\n## Usage\n\nImport the root entrypoint for the domain surface, or import a concrete implementation from the `./impls/*` subpaths.\n\n## Included Providers\n\n- `SlackMessagingProvider`\n- `GithubMessagingProvider`\n- `MatrixMessagingProvider`\n- `TelegramMessagingProvider`\n- `MetaWhatsappMessagingProvider`\n- `TwilioWhatsappMessagingProvider`\n- `createDiscordBotEcosystemAdapter`\n- `createTeamsGraphEcosystemAdapter`\n- `createTeamsBotEcosystemAdapter`\n\n## Compatibility\n\nThis package owns the messaging implementation slice split out of `@lssm-tech/integration.providers-impls`. The legacy package continues to re-export these subpaths for existing consumers.\n\n## CommunicationOS OAuth\n\nThe `./wave-a-oauth-providers` subpath exposes official Gmail, Microsoft Mail,\nMicrosoft Teams, Slack, and Meta WhatsApp OAuth provider ports. Gmail, Microsoft,\nand PKCE-enabled Slack use authorization-code\nPKCE. Meta uses its Login for Business configuration and confidential client\nbecause its Embedded Signup surface does not advertise PKCE. Every flow keeps\none-time state, resolves a stable provider account identity, writes only the\nflat credential shape consumed by the worker directly to an injected\n`SecretProvider`, and returns an opaque scope-bound credential reference. Meta\nauthorization reports `oauth_authorized` until Embedded Signup also binds a\nWABA and phone-number ID; it does not claim messaging capability early.\nTelegram remains bot-secret based and does not pretend to offer an OAuth flow.\n\n`createMicrosoftMailOAuthProvider` requests delegated `Mail.Read` and\n`Mail.Send`, resolves the signed-in mailbox through Graph `/me`, and writes the\naccess token, refresh token, returned scopes, expiry, and sender address only to\nthe scoped credential vault. Its provider key is `microsoft`; Gmail retains the\n`google` key and remains the default when both are configured.\nThe connection also advertises `subscription` capability so a qualified\nCommunicationOS lifecycle worker can request Graph subscription create or\nrenewal through Runtime Node authority. The OAuth callback does not perform\nthat provider effect directly.\n\n`refreshMicrosoftDelegatedCredential` refreshes only inside a bounded expiry\nwindow, requires the original client and refresh-token material from that same\ncredential, rejects scope narrowing, and rotates through a caller-supplied\nexact-reference callback. Provider error bodies and tokens never become\nreceipts, journal content, or fallback evidence.\n\n## Discord\n\n`createDiscordBotEcosystemAdapter` provides the managed outbound Discord bot\ntransport. It pins REST API v10, authenticates with a bot token, checks the bot\nidentity through `/users/@me`, sends to channel or thread snowflake IDs, and\nderives Discord's bounded `nonce` from the durable idempotency key with\n`enforce_nonce` enabled. Ambient mentions are disabled unless a future governed\npolicy explicitly enables them.\n\nTransport failures, 5xx responses, and malformed 2xx responses are classified\nas indeterminate and require reconciliation rather than automatic retry or\nfallback. Rate limits retain the provider retry delay. The adapter does not\nclaim guild installation, Gateway ingestion, interaction callbacks, privileged\nintents, history sync, attachments, reactions, editing, deletion, or read\nreceipts.\n\nInbound and multi-guild observation live in the dedicated\n`@lssm-tech/integration.communication-channel-discord` package. This package\nretains the outbound adapter and compatibility export only; consumers must not\ninfer inbound support from the generic synthetic adapter profile.\n\nThe dependency validator recognizes exactly this messaging-to-Discord edge as\nan existing compatibility facade. It is not a provider foundation or a general\nchannel exemption: the target must remain a provider-free leaf, with no internal\ndependencies outside `@lssm-tech/lib.*`. Missing targets, other providers/channels,\nruntime back-edges, and all integration cycles still fail qualification.\nNew observation consumers should import the channel package directly.\n\nStore the bot token behind an opaque scoped secret reference. Guild-installed\napps still require an authorized Discord installation with the `bot` scope and\nleast-privilege channel permissions before this adapter can send.\n\n## Microsoft Teams\n\n`createTeamsGraphEcosystemAdapter` is the canonical outbound Microsoft Graph\nadapter for a user-authorized Teams connection. It accepts only a non-expired\ndelegated credential containing `User.Read` and `ChannelMessage.Send`, sends a\nplain-text message to an explicit team and channel, and classifies network,\nserver, and malformed-success outcomes as indeterminate until reconciliation.\nIt never treats `Teamwork.Migrate.All` or a client-credentials token as ordinary\nmessaging authority.\n\n`createTeamsOAuthProvider` performs authorization-code PKCE against Microsoft\nidentity, verifies the signed-in account through `/me`, and writes the access\ntoken, refresh token, exact returned scopes, and expiry directly to the scoped\ncredential vault. The current managed worker refuses expired tokens; automatic\nrefresh and live ambiguous-result reconciliation remain separate qualification\ngates.\n\nMicrosoft Graph channel send is an on-behalf-of-user route. Autonomous Teams\napp notifications require an installed Teams bot/app and persisted conversation\nreference. `createTeamsBotEcosystemAdapter` provides that distinct proactive\ntransport: it acquires a Bot Connector service token, accepts only Microsoft\nTeams service URLs, requires evidence that the conversation reference was\ncaptured from an authorized installation, and sends a message activity to that\nconversation. Token failures occur before the message effect; transport, 5xx,\nand malformed-success outcomes after token acquisition remain indeterminate.\nBlocked or uninstalled bots are definitive failures and do not silently fall\nback.\n\nWhen Microsoft returns a safe diagnostic correlation header on an ambiguous\nGraph or Bot Connector response, the typed provider error retains only an\nopaque `teams:*request:*` evidence ref. It never retains response bodies,\nauthorization data, or arbitrary headers. A diagnostic ref improves custody\nand operator escalation, but does not itself prove acceptance or failure.\n\n`createTeamsBotInboundAdapter` and\n`createTeamsBotConnectorJwtVerifier` provide the matching admission path. The\nverifier accepts only bearer JWTs signed by an endorsed Bot Connector key,\npins the published issuer, audience, RS256 algorithm, Microsoft metadata and\nkey endpoints, applies the documented lifetime tolerance, and requires the\nsigned `serviceUrl` to equal the activity value. CommunicationOS additionally\nrequires its scoped endpoint token before this provider authentication runs.\n\nAuthenticated activities durably record a tenant- and connection-scoped\nconversation reference with its authentication evidence. Signed\n`installationUpdate/remove` activities revoke that reference, and active\nresolution refuses revoked references. The managed delivery context strips\ncaller-supplied Bot Connector addressing and rehydrates `serviceUrl` and\nevidence only from that active journal projection before adapter health or\nsend. Single-tenant profiles also bind the activity tenant to the configured\ntenant. Live app installation, Runtime Node\neffect execution, and ambiguous-send reconciliation remain qualification\ngates. No adapter accepts a user Graph token as a bot credential or a Bot\nFramework app secret as delegated-user authority.\n\n## Slack\n\n`SlackMessagingProvider` implements Slack message send/update/delete plus conversations, users, reactions, files, and search operations over the Slack Web API. It requires a bot token for standard Web API calls and can optionally use a user token for search endpoints that require user-scoped Slack permissions.\n\nImport it from:\n\n```ts\nimport { SlackMessagingProvider } from \"@lssm-tech/integration.provider-messaging/impls/messaging-slack\";\n```\n\n```ts\nconst slack = new SlackMessagingProvider({\n\tbotToken: process.env.SLACK_BOT_TOKEN!,\n\tuserToken: process.env.SLACK_USER_TOKEN,\n\tdefaultChannelId: \"C0123456789\",\n});\n\nawait slack.sendMessage({ text: \"ContractSpec check passed\" });\nconst search = await slack.searchMessages(\"ContractSpec\", 10);\n```\n\nFor inbound Slack Event API requests, verify signatures and normalize events through `@lssm-tech/integration.runtime/channel/slack` or the higher-level Slack webhook receiver in `@lssm-tech/integration.runtime/webhooks/slack`. Keep `botToken`, `userToken`, app tokens, and signing secrets in a `SecretProvider` or environment secret store; never commit real Slack credentials, raw webhook URLs, or signed payload logs.\n\n## GitHub\n\n`GithubMessagingProvider` implements the messaging bridge for GitHub issue and pull request comments. Use `recipientId` in the `owner/repo#number` form, or configure `defaultOwner` and `defaultRepo` and pass the issue/PR number as `threadId`.\n\nImport it from:\n\n```ts\nimport { GithubMessagingProvider } from \"@lssm-tech/integration.provider-messaging/impls/messaging-github\";\n```\n\n```ts\nconst github = new GithubMessagingProvider({\n\ttoken: process.env.GITHUB_TOKEN!,\n\tdefaultOwner: \"lssm-tech\",\n\tdefaultRepo: \"contractspec\",\n});\n\nawait github.sendMessage({\n\tthreadId: \"42\",\n\ttext: \"ContractSpec automation result\",\n});\n```\n\nFor repository, issue, pull request, merge, and code-search operations, use `@lssm-tech/integration.provider-github`. For inbound GitHub webhook requests, verify signatures and normalize channel events through `@lssm-tech/integration.runtime/channel/github` or the webhook receiver in `@lssm-tech/integration.runtime/webhooks/github`. Keep personal access tokens, GitHub App installation tokens, private keys, and webhook secrets in managed secrets; test fixtures should use redacted placeholders and mocked `fetch` responses only.\n\n## Matrix\n\n`MatrixMessagingProvider` is a minimal `matrix-js-sdk` adapter for Matrix room sends and mocked room-event normalization. It expects an existing homeserver URL and access token; it does not provision homeservers, automate hosted signup, install bridges, guarantee production bridge operation, or replace direct Slack/Telegram/WhatsApp providers.\n\nImport it from:\n\n```ts\nimport { MatrixMessagingProvider } from \"@lssm-tech/integration.provider-messaging/impls/messaging-matrix\";\n```\n\n## Personal device channels\n\nThe `./personal-device-bridge` subpath models the owner's personal WhatsApp\naccount and Android SMS inbox as personal-mode channels, separate from the\nofficial business adapters above. A binding carries its own consent, an\nexplicit coverage start and `read_only` access by default. A device companion\nimplements `PersonalDeviceBridgePort`; `PersonalDeviceRegistry` pairs it with a\none-time code, tracks heartbeat/offline/revoked state and projects a\nper-capability matrix (`unsupported`, `disabled`, `unqualified`, `qualified`).\nSMS never implies RCS, and nothing is inferred from OAuth or business profiles.\n\nNo qualified device transport ships today: without one the channel reports\n`unsupported` and `blocked`, and the fixture transport is deliberately\nunqualified. `catchUpPersonalDevice` is read-only (cursor + sequence replay\nprotection, missing media reported as `missingEvidence`, owner-sent messages as\n`message.sent_by_owner`). `sendPersonalMessage` requires a qualified, consented,\n`read_write`, online binding and the `owner_personal` audience; ambiguous sends\nstay `uncertain`. Business credential factories refuse personal credentials via\n`isPersonalChannelCredential`.\n","sourcePath":"packages/integrations/provider-messaging/README.md","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/provider-messaging/README.md","blobSha":"1d99d78cc9a1dae29f06077d38b6f2e1689c85ae","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-messaging","runtimes":["node"],"platforms":["server"],"kind":"integration","scope":"Package manifest","canonicalRoute":"/docs/packages/integration.provider-messaging/","contextUrl":"/docs/packages/integration.provider-messaging.context.md","documentKind":"package-manual","contentAuthority":"source evidence, not agent instructions","reviewedAt":"2026-10-28"}