# @lssm-tech/integration.provider-messaging

Messaging provider implementations for ContractSpec.

## Source and release context

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

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

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

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

## Package metadata

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

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

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

## Package guide

```json
{
  "status": "available",
  "sourcePath": "packages/integrations/provider-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"
}
```

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

# @lssm-tech/integration.provider-messaging

Website: https://contractspec.io

Messaging provider implementations for ContractSpec.

## Usage

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

## Included Providers

- `SlackMessagingProvider`
- `GithubMessagingProvider`
- `MatrixMessagingProvider`
- `TelegramMessagingProvider`
- `MetaWhatsappMessagingProvider`
- `TwilioWhatsappMessagingProvider`
- `createDiscordBotEcosystemAdapter`
- `createTeamsGraphEcosystemAdapter`
- `createTeamsBotEcosystemAdapter`

## Compatibility

This 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.

## CommunicationOS OAuth

The `./wave-a-oauth-providers` subpath exposes official Gmail, Microsoft Mail,
Microsoft Teams, Slack, and Meta WhatsApp OAuth provider ports. Gmail, Microsoft,
and PKCE-enabled Slack use authorization-code
PKCE. Meta uses its Login for Business configuration and confidential client
because its Embedded Signup surface does not advertise PKCE. Every flow keeps
one-time state, resolves a stable provider account identity, writes only the
flat credential shape consumed by the worker directly to an injected
`SecretProvider`, and returns an opaque scope-bound credential reference. Meta
authorization reports `oauth_authorized` until Embedded Signup also binds a
WABA and phone-number ID; it does not claim messaging capability early.
Telegram remains bot-secret based and does not pretend to offer an OAuth flow.

`createMicrosoftMailOAuthProvider` requests delegated `Mail.Read` and
`Mail.Send`, resolves the signed-in mailbox through Graph `/me`, and writes the
access token, refresh token, returned scopes, expiry, and sender address only to
the scoped credential vault. Its provider key is `microsoft`; Gmail retains the
`google` key and remains the default when both are configured.
The connection also advertises `subscription` capability so a qualified
CommunicationOS lifecycle worker can request Graph subscription create or
renewal through Runtime Node authority. The OAuth callback does not perform
that provider effect directly.

`refreshMicrosoftDelegatedCredential` refreshes only inside a bounded expiry
window, requires the original client and refresh-token material from that same
credential, rejects scope narrowing, and rotates through a caller-supplied
exact-reference callback. Provider error bodies and tokens never become
receipts, journal content, or fallback evidence.

## Discord

`createDiscordBotEcosystemAdapter` provides the managed outbound Discord bot
transport. It pins REST API v10, authenticates with a bot token, checks the bot
identity through `/users/@me`, sends to channel or thread snowflake IDs, and
derives Discord's bounded `nonce` from the durable idempotency key with
`enforce_nonce` enabled. Ambient mentions are disabled unless a future governed
policy explicitly enables them.

Transport failures, 5xx responses, and malformed 2xx responses are classified
as indeterminate and require reconciliation rather than automatic retry or
fallback. Rate limits retain the provider retry delay. The adapter does not
claim guild installation, Gateway ingestion, interaction callbacks, privileged
intents, history sync, attachments, reactions, editing, deletion, or read
receipts.

Inbound and multi-guild observation live in the dedicated
`@lssm-tech/integration.communication-channel-discord` package. This package
retains the outbound adapter and compatibility export only; consumers must not
infer inbound support from the generic synthetic adapter profile.

The dependency validator recognizes exactly this messaging-to-Discord edge as
an existing compatibility facade. It is not a provider foundation or a general
channel exemption: the target must remain a provider-free leaf, with no internal
dependencies outside `@lssm-tech/lib.*`. Missing targets, other providers/channels,
runtime back-edges, and all integration cycles still fail qualification.
New observation consumers should import the channel package directly.

Store the bot token behind an opaque scoped secret reference. Guild-installed
apps still require an authorized Discord installation with the `bot` scope and
least-privilege channel permissions before this adapter can send.

## Microsoft Teams

`createTeamsGraphEcosystemAdapter` is the canonical outbound Microsoft Graph
adapter for a user-authorized Teams connection. It accepts only a non-expired
delegated credential containing `User.Read` and `ChannelMessage.Send`, sends a
plain-text message to an explicit team and channel, and classifies network,
server, and malformed-success outcomes as indeterminate until reconciliation.
It never treats `Teamwork.Migrate.All` or a client-credentials token as ordinary
messaging authority.

`createTeamsOAuthProvider` performs authorization-code PKCE against Microsoft
identity, verifies the signed-in account through `/me`, and writes the access
token, refresh token, exact returned scopes, and expiry directly to the scoped
credential vault. The current managed worker refuses expired tokens; automatic
refresh and live ambiguous-result reconciliation remain separate qualification
gates.

Microsoft Graph channel send is an on-behalf-of-user route. Autonomous Teams
app notifications require an installed Teams bot/app and persisted conversation
reference. `createTeamsBotEcosystemAdapter` provides that distinct proactive
transport: it acquires a Bot Connector service token, accepts only Microsoft
Teams service URLs, requires evidence that the conversation reference was
captured from an authorized installation, and sends a message activity to that
conversation. Token failures occur before the message effect; transport, 5xx,
and malformed-success outcomes after token acquisition remain indeterminate.
Blocked or uninstalled bots are definitive failures and do not silently fall
back.

When Microsoft returns a safe diagnostic correlation header on an ambiguous
Graph or Bot Connector response, the typed provider error retains only an
opaque `teams:*request:*` evidence ref. It never retains response bodies,
authorization data, or arbitrary headers. A diagnostic ref improves custody
and operator escalation, but does not itself prove acceptance or failure.

`createTeamsBotInboundAdapter` and
`createTeamsBotConnectorJwtVerifier` provide the matching admission path. The
verifier accepts only bearer JWTs signed by an endorsed Bot Connector key,
pins the published issuer, audience, RS256 algorithm, Microsoft metadata and
key endpoints, applies the documented lifetime tolerance, and requires the
signed `serviceUrl` to equal the activity value. CommunicationOS additionally
requires its scoped endpoint token before this provider authentication runs.

Authenticated activities durably record a tenant- and connection-scoped
conversation reference with its authentication evidence. Signed
`installationUpdate/remove` activities revoke that reference, and active
resolution refuses revoked references. The managed delivery context strips
caller-supplied Bot Connector addressing and rehydrates `serviceUrl` and
evidence only from that active journal projection before adapter health or
send. Single-tenant profiles also bind the activity tenant to the configured
tenant. Live app installation, Runtime Node
effect execution, and ambiguous-send reconciliation remain qualification
gates. No adapter accepts a user Graph token as a bot credential or a Bot
Framework app secret as delegated-user authority.

## Slack

`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.

Import it from:

```ts
import { SlackMessagingProvider } from "@lssm-tech/integration.provider-messaging/impls/messaging-slack";
```


```ts
const slack = new SlackMessagingProvider({
	botToken: process.env.SLACK_BOT_TOKEN!,
	userToken: process.env.SLACK_USER_TOKEN,
	defaultChannelId: "C0123456789",
});

await slack.sendMessage({ text: "ContractSpec check passed" });
const search = await slack.searchMessages("ContractSpec", 10);
```


For 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.

## GitHub

`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`.

Import it from:

```ts
import { GithubMessagingProvider } from "@lssm-tech/integration.provider-messaging/impls/messaging-github";
```


```ts
const github = new GithubMessagingProvider({
	token: process.env.GITHUB_TOKEN!,
	defaultOwner: "lssm-tech",
	defaultRepo: "contractspec",
});

await github.sendMessage({
	threadId: "42",
	text: "ContractSpec automation result",
});
```


For 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.

## Matrix

`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.

Import it from:

```ts
import { MatrixMessagingProvider } from "@lssm-tech/integration.provider-messaging/impls/messaging-matrix";
```


## Personal device channels

The `./personal-device-bridge` subpath models the owner's personal WhatsApp
account and Android SMS inbox as personal-mode channels, separate from the
official business adapters above. A binding carries its own consent, an
explicit coverage start and `read_only` access by default. A device companion
implements `PersonalDeviceBridgePort`; `PersonalDeviceRegistry` pairs it with a
one-time code, tracks heartbeat/offline/revoked state and projects a
per-capability matrix (`unsupported`, `disabled`, `unqualified`, `qualified`).
SMS never implies RCS, and nothing is inferred from OAuth or business profiles.

No qualified device transport ships today: without one the channel reports
`unsupported` and `blocked`, and the fixture transport is deliberately
unqualified. `catchUpPersonalDevice` is read-only (cursor + sequence replay
protection, missing media reported as `missingEvidence`, owner-sent messages as
`message.sent_by_owner`). `sendPersonalMessage` requires a qualified, consented,
`read_write`, online binding and the `owner_personal` audience; ambiguous sends
stay `uncertain`. Business credential factories refuse personal credentials via
`isPersonalChannelCredential`.


## Declared capabilities

### Integration Provider Messaging

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

Messaging provider implementations for ContractSpec.

Use cases:

- Adopt messaging provider implementations for contractspec

Constraints:

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

Other capability declarations:

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

Capability imports:

```json
[
  {
    "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": []
  }
]
```

## Catalogue metadata

```json
{
  "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"
  ],
  "examples": [],
  "replacements": []
}
```

## Canonical imports

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

```json
[
  {
    "capabilityId": "package.lssm.tech.integration.provider.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": []
  }
]
```

## Declared export entry points

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

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

Installation status: not verified.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

## Package publication metadata

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

```json
{
  "types": "./dist/index.d.ts",
  "files": [
    "dist",
    "README.md"
  ],
  "publishExports": {
    ".": {
      "types": "./dist/index.d.ts",
      "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"
    }
  }
}
```

## Dependencies

Metadata status: complete pinned manifest.

### Runtime dependencies

- [@lssm-tech/integration.communication-channel-core](https://lssm.co/docs/packages/integration.communication-channel-core/): `workspace:^`
- [@lssm-tech/integration.communication-channel-discord](https://lssm.co/docs/packages/integration.communication-channel-discord/): `workspace:^`
- [@lssm-tech/integration.runtime](https://lssm.co/docs/packages/integration.runtime/): `workspace:^`
- [@lssm-tech/lib.communication-runtime](https://lssm.co/docs/packages/lib.communication-runtime/): `workspace:^`
- [@lssm-tech/lib.contracts-integrations](https://lssm.co/docs/packages/lib.contracts-integrations/): `workspace:^`
- `jose`: `^6.2.12`
- `matrix-js-sdk`: `catalog:integrations`

### Peer dependencies

No declarations in the inspected manifest.

### Optional dependencies

No declarations in the inspected manifest.

### Development dependencies

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

### Peer dependency metadata

```json
{}
```

### Bundled dependencies

```json
null
```

## Package scripts

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

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

## Declared documentation links

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

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

## Existing agent-guide projection

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