{"id":"@lssm-tech/integration.communication-os-agent","slug":"integration.communication-os-agent","name":"@lssm-tech/integration.communication-os-agent","version":"2.0.5","path":"packages/integrations/communication-os-agent","manifestPath":"packages/integrations/communication-os-agent/package.json","manifestBlobSha":"481842ce6b5250c8cde3f217621bd6ee44b9e6e8","layer":"integrations","physicalArea":null,"primaryArea":"communication-and-notifications","classification":{"privateDeclared":null,"catalogFamily":"integrations","catalogKind":"integration","catalogStatus":"active","adoptionMode":"adoptable","stability":"experimental"},"description":"Governed agent binding that drafts CommunicationOS replies via the ai-agent runtime, using the fail-closed command-inbox as the approval seam and a SovereigntyProfile-driven sovereign LLM (Mistral EU default, Claude alternative) — with no outbound send authority.","descriptionOrigin":"package.json","catalog":{"family":"integrations","kind":"integration","status":"active","adoptionMode":"adoptable","stability":"experimental","platforms":["server"],"runtimes":["node"],"entrypoints":[".","./agent","./agentic","./agentic/approval-policy","./agentic/mcp-skill-registry","./agentic/memory-binding","./agentic/parallel-subagents","./agentic/scheduler","./agentic/thread-search","./inbox-approval-store","./narrowed-registry","./sovereign-model","./thread-assist","./thread-assist-gateway","./thread-triage"],"documentation":[{"title":"Integration Communication Os Agent documentation","url":"https://www.npmjs.com/package/%40lssm-tech%2Fintegration.communication-os-agent","kind":"readme"}],"examples":[],"replacements":[],"capabilities":[{"id":"package.lssm.tech.integration.communication.os.agent","title":"Integration Communication Os Agent","description":"Governed agent binding that drafts CommunicationOS replies via the ai-agent runtime, using the fail-closed command-inbox as the approval seam and a SovereigntyProfile-driven sovereign LLM (Mistral EU default, Claude alternative) — with no outbound send authority.","status":"active","useCases":["Adopt governed agent binding that drafts communicationos replies via the ai-agent runtime, using the fail-closed command-inbox as the approval seam and a sovereigntyprofile-driven sovereign llm (mistral eu default, claude alternative) — with no outbound send authority"],"aliases":["integration","communication","agent"],"pythonEquivalents":[],"canonicalImports":[{"from":"@lssm-tech/integration.communication-os-agent","symbols":[]},{"from":"@lssm-tech/integration.communication-os-agent/agent","symbols":[]},{"from":"@lssm-tech/integration.communication-os-agent/agentic","symbols":[]},{"from":"@lssm-tech/integration.communication-os-agent/agentic/approval-policy","symbols":[]},{"from":"@lssm-tech/integration.communication-os-agent/agentic/mcp-skill-registry","symbols":[]},{"from":"@lssm-tech/integration.communication-os-agent/agentic/memory-binding","symbols":[]},{"from":"@lssm-tech/integration.communication-os-agent/agentic/parallel-subagents","symbols":[]},{"from":"@lssm-tech/integration.communication-os-agent/agentic/scheduler","symbols":[]},{"from":"@lssm-tech/integration.communication-os-agent/agentic/thread-search","symbols":[]},{"from":"@lssm-tech/integration.communication-os-agent/inbox-approval-store","symbols":[]},{"from":"@lssm-tech/integration.communication-os-agent/narrowed-registry","symbols":[]},{"from":"@lssm-tech/integration.communication-os-agent/sovereign-model","symbols":[]},{"from":"@lssm-tech/integration.communication-os-agent/thread-assist","symbols":[]},{"from":"@lssm-tech/integration.communication-os-agent/thread-assist-gateway","symbols":[]},{"from":"@lssm-tech/integration.communication-os-agent/thread-triage","symbols":[]}],"constraints":{"platforms":["server"],"runtimes":["node"],"avoidWhen":["The @lssm-tech/integration.communication-os-agent package constraints do not match the target runtime or platform."],"requires":["TypeScript"]},"alternatives":[],"relationships":[],"resolutionPriority":50}]},"canonicalImports":[{"capabilityId":"package.lssm.tech.integration.communication.os.agent","from":"@lssm-tech/integration.communication-os-agent","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.agent","from":"@lssm-tech/integration.communication-os-agent/agent","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.agent","from":"@lssm-tech/integration.communication-os-agent/agentic","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.agent","from":"@lssm-tech/integration.communication-os-agent/agentic/approval-policy","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.agent","from":"@lssm-tech/integration.communication-os-agent/agentic/mcp-skill-registry","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.agent","from":"@lssm-tech/integration.communication-os-agent/agentic/memory-binding","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.agent","from":"@lssm-tech/integration.communication-os-agent/agentic/parallel-subagents","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.agent","from":"@lssm-tech/integration.communication-os-agent/agentic/scheduler","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.agent","from":"@lssm-tech/integration.communication-os-agent/agentic/thread-search","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.agent","from":"@lssm-tech/integration.communication-os-agent/inbox-approval-store","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.agent","from":"@lssm-tech/integration.communication-os-agent/narrowed-registry","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.agent","from":"@lssm-tech/integration.communication-os-agent/sovereign-model","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.agent","from":"@lssm-tech/integration.communication-os-agent/thread-assist","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.agent","from":"@lssm-tech/integration.communication-os-agent/thread-assist-gateway","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.agent","from":"@lssm-tech/integration.communication-os-agent/thread-triage","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-os-persistence":"workspace:^","@lssm-tech/lib.ai-agent":"workspace:^","@lssm-tech/lib.ai-providers":"workspace:^","@lssm-tech/lib.communication-runtime":"workspace:^","@lssm-tech/lib.communication-spec":"workspace:^","@lssm-tech/lib.contracts-runtime-core":"workspace:^","@lssm-tech/lib.contracts-spec-core":"workspace:^","ai":"catalog:ai"},"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","./agent":"./src/agent.ts","./agentic":"./src/agentic/index.ts","./agentic/approval-policy":"./src/agentic/approval-policy.ts","./agentic/mcp-skill-registry":"./src/agentic/mcp-skill-registry.ts","./agentic/memory-binding":"./src/agentic/memory-binding.ts","./agentic/parallel-subagents":"./src/agentic/parallel-subagents.ts","./agentic/scheduler":"./src/agentic/scheduler.ts","./agentic/thread-search":"./src/agentic/thread-search.ts","./inbox-approval-store":"./src/inbox-approval-store.ts","./narrowed-registry":"./src/narrowed-registry.ts","./sovereign-model":"./src/sovereign-model.ts","./thread-assist":"./src/thread-assist.ts","./thread-assist-gateway":"./src/thread-assist-gateway.ts","./thread-triage":"./src/thread-triage.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"},"./agent":{"types":"./dist/agent.d.ts","browser":"./dist/browser/agent.js","bun":"./dist/agent.js","node":"./dist/node/agent.js","default":"./dist/agent.js"},"./agentic":{"types":"./dist/agentic/index.d.ts","browser":"./dist/browser/agentic/index.js","bun":"./dist/agentic/index.js","node":"./dist/node/agentic/index.js","default":"./dist/agentic/index.js"},"./agentic/approval-policy":{"types":"./dist/agentic/approval-policy.d.ts","browser":"./dist/browser/agentic/approval-policy.js","bun":"./dist/agentic/approval-policy.js","node":"./dist/node/agentic/approval-policy.js","default":"./dist/agentic/approval-policy.js"},"./agentic/mcp-skill-registry":{"types":"./dist/agentic/mcp-skill-registry.d.ts","browser":"./dist/browser/agentic/mcp-skill-registry.js","bun":"./dist/agentic/mcp-skill-registry.js","node":"./dist/node/agentic/mcp-skill-registry.js","default":"./dist/agentic/mcp-skill-registry.js"},"./agentic/memory-binding":{"types":"./dist/agentic/memory-binding.d.ts","browser":"./dist/browser/agentic/memory-binding.js","bun":"./dist/agentic/memory-binding.js","node":"./dist/node/agentic/memory-binding.js","default":"./dist/agentic/memory-binding.js"},"./agentic/parallel-subagents":{"types":"./dist/agentic/parallel-subagents.d.ts","browser":"./dist/browser/agentic/parallel-subagents.js","bun":"./dist/agentic/parallel-subagents.js","node":"./dist/node/agentic/parallel-subagents.js","default":"./dist/agentic/parallel-subagents.js"},"./agentic/scheduler":{"types":"./dist/agentic/scheduler.d.ts","browser":"./dist/browser/agentic/scheduler.js","bun":"./dist/agentic/scheduler.js","node":"./dist/node/agentic/scheduler.js","default":"./dist/agentic/scheduler.js"},"./agentic/thread-search":{"types":"./dist/agentic/thread-search.d.ts","browser":"./dist/browser/agentic/thread-search.js","bun":"./dist/agentic/thread-search.js","node":"./dist/node/agentic/thread-search.js","default":"./dist/agentic/thread-search.js"},"./inbox-approval-store":{"types":"./dist/inbox-approval-store.d.ts","browser":"./dist/browser/inbox-approval-store.js","bun":"./dist/inbox-approval-store.js","node":"./dist/node/inbox-approval-store.js","default":"./dist/inbox-approval-store.js"},"./narrowed-registry":{"types":"./dist/narrowed-registry.d.ts","browser":"./dist/browser/narrowed-registry.js","bun":"./dist/narrowed-registry.js","node":"./dist/node/narrowed-registry.js","default":"./dist/narrowed-registry.js"},"./sovereign-model":{"types":"./dist/sovereign-model.d.ts","browser":"./dist/browser/sovereign-model.js","bun":"./dist/sovereign-model.js","node":"./dist/node/sovereign-model.js","default":"./dist/sovereign-model.js"},"./thread-assist":{"types":"./dist/thread-assist.d.ts","browser":"./dist/browser/thread-assist.js","bun":"./dist/thread-assist.js","node":"./dist/node/thread-assist.js","default":"./dist/thread-assist.js"},"./thread-assist-gateway":{"types":"./dist/thread-assist-gateway.d.ts","browser":"./dist/browser/thread-assist-gateway.js","bun":"./dist/thread-assist-gateway.js","node":"./dist/node/thread-assist-gateway.js","default":"./dist/thread-assist-gateway.js"},"./thread-triage":{"types":"./dist/thread-triage.d.ts","browser":"./dist/browser/thread-triage.js","bun":"./dist/thread-triage.js","node":"./dist/node/thread-triage.js","default":"./dist/thread-triage.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.communication-os-agent","target":"./src/index.ts","targets":[{"conditions":[],"target":"./src/index.ts","sourcePath":"packages/integrations/communication-os-agent/src/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-agent/src/index.ts","sourceStatus":"verified source file"}]},{"subpath":"./agent","importPath":"@lssm-tech/integration.communication-os-agent/agent","target":"./src/agent.ts","targets":[{"conditions":[],"target":"./src/agent.ts","sourcePath":"packages/integrations/communication-os-agent/src/agent.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-agent/src/agent.ts","sourceStatus":"verified source file"}]},{"subpath":"./agentic","importPath":"@lssm-tech/integration.communication-os-agent/agentic","target":"./src/agentic/index.ts","targets":[{"conditions":[],"target":"./src/agentic/index.ts","sourcePath":"packages/integrations/communication-os-agent/src/agentic/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-agent/src/agentic/index.ts","sourceStatus":"verified source file"}]},{"subpath":"./agentic/approval-policy","importPath":"@lssm-tech/integration.communication-os-agent/agentic/approval-policy","target":"./src/agentic/approval-policy.ts","targets":[{"conditions":[],"target":"./src/agentic/approval-policy.ts","sourcePath":"packages/integrations/communication-os-agent/src/agentic/approval-policy.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-agent/src/agentic/approval-policy.ts","sourceStatus":"verified source file"}]},{"subpath":"./agentic/mcp-skill-registry","importPath":"@lssm-tech/integration.communication-os-agent/agentic/mcp-skill-registry","target":"./src/agentic/mcp-skill-registry.ts","targets":[{"conditions":[],"target":"./src/agentic/mcp-skill-registry.ts","sourcePath":"packages/integrations/communication-os-agent/src/agentic/mcp-skill-registry.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-agent/src/agentic/mcp-skill-registry.ts","sourceStatus":"verified source file"}]},{"subpath":"./agentic/memory-binding","importPath":"@lssm-tech/integration.communication-os-agent/agentic/memory-binding","target":"./src/agentic/memory-binding.ts","targets":[{"conditions":[],"target":"./src/agentic/memory-binding.ts","sourcePath":"packages/integrations/communication-os-agent/src/agentic/memory-binding.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-agent/src/agentic/memory-binding.ts","sourceStatus":"verified source file"}]},{"subpath":"./agentic/parallel-subagents","importPath":"@lssm-tech/integration.communication-os-agent/agentic/parallel-subagents","target":"./src/agentic/parallel-subagents.ts","targets":[{"conditions":[],"target":"./src/agentic/parallel-subagents.ts","sourcePath":"packages/integrations/communication-os-agent/src/agentic/parallel-subagents.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-agent/src/agentic/parallel-subagents.ts","sourceStatus":"verified source file"}]},{"subpath":"./agentic/scheduler","importPath":"@lssm-tech/integration.communication-os-agent/agentic/scheduler","target":"./src/agentic/scheduler.ts","targets":[{"conditions":[],"target":"./src/agentic/scheduler.ts","sourcePath":"packages/integrations/communication-os-agent/src/agentic/scheduler.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-agent/src/agentic/scheduler.ts","sourceStatus":"verified source file"}]},{"subpath":"./agentic/thread-search","importPath":"@lssm-tech/integration.communication-os-agent/agentic/thread-search","target":"./src/agentic/thread-search.ts","targets":[{"conditions":[],"target":"./src/agentic/thread-search.ts","sourcePath":"packages/integrations/communication-os-agent/src/agentic/thread-search.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-agent/src/agentic/thread-search.ts","sourceStatus":"verified source file"}]},{"subpath":"./inbox-approval-store","importPath":"@lssm-tech/integration.communication-os-agent/inbox-approval-store","target":"./src/inbox-approval-store.ts","targets":[{"conditions":[],"target":"./src/inbox-approval-store.ts","sourcePath":"packages/integrations/communication-os-agent/src/inbox-approval-store.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-agent/src/inbox-approval-store.ts","sourceStatus":"verified source file"}]},{"subpath":"./narrowed-registry","importPath":"@lssm-tech/integration.communication-os-agent/narrowed-registry","target":"./src/narrowed-registry.ts","targets":[{"conditions":[],"target":"./src/narrowed-registry.ts","sourcePath":"packages/integrations/communication-os-agent/src/narrowed-registry.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-agent/src/narrowed-registry.ts","sourceStatus":"verified source file"}]},{"subpath":"./sovereign-model","importPath":"@lssm-tech/integration.communication-os-agent/sovereign-model","target":"./src/sovereign-model.ts","targets":[{"conditions":[],"target":"./src/sovereign-model.ts","sourcePath":"packages/integrations/communication-os-agent/src/sovereign-model.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-agent/src/sovereign-model.ts","sourceStatus":"verified source file"}]},{"subpath":"./thread-assist","importPath":"@lssm-tech/integration.communication-os-agent/thread-assist","target":"./src/thread-assist.ts","targets":[{"conditions":[],"target":"./src/thread-assist.ts","sourcePath":"packages/integrations/communication-os-agent/src/thread-assist.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-agent/src/thread-assist.ts","sourceStatus":"verified source file"}]},{"subpath":"./thread-assist-gateway","importPath":"@lssm-tech/integration.communication-os-agent/thread-assist-gateway","target":"./src/thread-assist-gateway.ts","targets":[{"conditions":[],"target":"./src/thread-assist-gateway.ts","sourcePath":"packages/integrations/communication-os-agent/src/thread-assist-gateway.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-agent/src/thread-assist-gateway.ts","sourceStatus":"verified source file"}]},{"subpath":"./thread-triage","importPath":"@lssm-tech/integration.communication-os-agent/thread-triage","target":"./src/thread-triage.ts","targets":[{"conditions":[],"target":"./src/thread-triage.ts","sourcePath":"packages/integrations/communication-os-agent/src/thread-triage.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-agent/src/thread-triage.ts","sourceStatus":"verified source file"}]}],"entryCount":15,"namedSymbolCoverage":"catalog declarations only; exhaustive TypeScript symbols not extracted","installationStatus":"not verified"},"docsLinks":[{"title":"Integration Communication Os Agent documentation","url":"https://www.npmjs.com/package/%40lssm-tech%2Fintegration.communication-os-agent","kind":"readme","pinnedUrl":null,"sourceStatus":"declared link; destination not verified"}],"sourceUrls":{"package":"https://github.com/lssm-tech/contractspec/tree/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-agent","manifest":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-agent/package.json","readme":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-agent/README.md","guide":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/integration.communication-os-agent.txt"},"readme":{"status":"available","body":"# @lssm-tech/integration.communication-os-agent\n\nGoverned agent binding for CommunicationOS (plan P1-S2 + P1-S3, AC1.2, AC1.4).\n\nIt wires the `@lssm-tech/lib.ai-agent` runtime so it drafts replies and\nextracts decisions/risks/actions/summaries/intent for CommunicationOS — using\nthe fail-closed governed command-inbox as the approval seam and a\n`SovereigntyProfile`-driven sovereign LLM (Mistral EU by default, Claude as a\nconfig-only alternative) — **without ever giving the agent outbound send\nauthority**.\n\n## Why this is an integration package\n\nThis package binds three reusable libs (`ai-agent`, `ai-providers`,\n`communication-runtime`) plus the `communication-spec` contracts to a concrete\nruntime target (the governed agent). It introduces no new domain contracts and\ndepends only downward (libs + spec), matching `package-architecture.md` for the\n`integrations/` layer. It is the glue between the generic agent runtime and the\nCommunicationOS governance surface; it does not belong in a lib (it composes\nseveral libs) nor in a bundle/app (it is reusable across verticals).\n\n## Safety invariants (non-negotiable)\n\n1. **Allowlist, not denylist (pre-mortem #3, R3).**\n   `createCommunicationAgentOperationRegistry()` builds the agent's\n   `operationRegistry` from an explicit allowlist:\n   `reply.draft`, `summary.generate`, `intent.classify`, `action.extract`,\n   `decision.extract`, `risk.extract`. The outbound `communication.reply.send`\n   operation is structurally absent — it is never registered, so the agent can\n   never resolve it into a tool. A future send-like operation cannot leak in by\n   omission.\n2. **Inbox-backed approval seam (architect MUST-FIX 1).**\n   `CommunicationInboxApprovalStore implements ApprovalStore`. Every approval\n   request is projected through `createCommunicationCommandInboxItem`, producing\n   a fail-closed inbox item (`canExecute: false`). The agent can only *create*\n   pending records; it cannot transition them to approved and holds no send\n   tool. The store is wrapped as `new ApprovalWorkflow(store)` and passed as\n   `approvalWorkflow` — the inbox object is never passed directly.\n3. **Send is a separate port the agent cannot call.** Outbound delivery is\n   reachable only by an inbox approval transition driven by a human or an\n   explicitly authorized policy — never by the agent.\n\n## Sovereign model binding (P1-S3, AC1.4)\n\n`resolveSovereignDefaultModel` / `createSovereignModelSelector` resolve the\n`LanguageModel` from the tenant `SovereigntyProfile.llmProviderId`:\nMistral (sovereign EU) by default, Claude (`anthropic`) as the alternative,\nswitchable by config only. On-prem/self-host hosting routes through a\n`provider-local-model` OpenAI-compatible `baseUrl`.\n\n## Thread assist over the Vercel AI Gateway\n\n`./thread-assist-gateway` exports `createGatewayThreadAssistModels()`. It\nreturns a read/draft-only thread assist port for any entry of\n`COMMUNICATION_OS_AI_MODEL_CATALOG`\n(`@lssm-tech/lib.communication-spec/contracts/ai-model-catalog`), built on the\nshared `createVercelGatewayModel` adapter.\n\nEvery call carries the enforced Gateway policy: EU inference zone, zero data\nretention, no training, and only the catalog's inference providers. There is no\ndirect-provider key and no automatic fallback model. Ports are cached per model\nid, so switching models per request does not rebuild clients.\n\nOmit `apiKey` to let the Gateway SDK use `AI_GATEWAY_API_KEY` or Vercel OIDC.\nCommunicationOS API uses this binding for summaries, drafts and inbox triage.\nThe port's `triage()` (`./thread-triage`) requests strict structured output\n(`Output.object` with the `communicationThreadTriageJsonSchema()` schema) and\nvalidates the label again, so invalid output always rejects. The sovereign\nbinding below remains for the governed agent.\n\n## Usage\n\n```ts\nimport { createCommunicationOsAgent } from '@lssm-tech/integration.communication-os-agent';\n\nconst { factory, approvalStore, approvalWorkflow } = createCommunicationOsAgent({\n  models: {\n    sovereignty: { llmProviderId: 'mistral', hostingMode: 'saas' },\n    providers: {\n      mistral: { apiKey: process.env.MISTRAL_API_KEY },\n      anthropic: { apiKey: process.env.ANTHROPIC_API_KEY },\n    },\n  },\n  inbox: { log: { events: [], version: 0 } },\n});\n```\n","sourcePath":"packages/integrations/communication-os-agent/README.md","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-agent/README.md","blobSha":"54edc16c7e91348151fb1fdbc6f4b889d6005439","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":"communication-and-notifications","areaTitle":"Communication and notifications","displayName":"integration.communication-os-agent","runtimes":["node"],"platforms":["server"],"kind":"integration","scope":"Package manifest","canonicalRoute":"/docs/packages/integration.communication-os-agent/","contextUrl":"/docs/packages/integration.communication-os-agent.context.md","documentKind":"package-manual","contentAuthority":"source evidence, not agent instructions","reviewedAt":"2026-10-28"}