{"id":"@lssm-tech/integration.communication-os-runtime","slug":"integration.communication-os-runtime","name":"@lssm-tech/integration.communication-os-runtime","version":"2.0.5","path":"packages/integrations/communication-os-runtime","manifestPath":"packages/integrations/communication-os-runtime/package.json","manifestBlobSha":"a7278ae09858a4af435c5da5c9273c5e8fb4f891","layer":"integrations","physicalArea":null,"primaryArea":"communication-and-notifications","classification":{"privateDeclared":null,"catalogFamily":"runtime","catalogKind":"integration","catalogStatus":"active","adoptionMode":"adoptable","stability":"experimental"},"description":"Governed approve→send→event+audit orchestrator that closes the CommunicationOS hexagon: an approved approval (never the agent) is the only path that resolves a ChannelAdapter, and reconciliation does not redispatch a provider-accepted send while audit/event completion remains retryable.","descriptionOrigin":"package.json","catalog":{"family":"runtime","kind":"integration","status":"active","adoptionMode":"adoptable","stability":"experimental","platforms":["server"],"runtimes":["node"],"entrypoints":[".","./agent-platform","./agent-host","./agent-host-admission","./agent-host.fixture","./approval-send-orchestrator","./audit-descriptor","./delivery-routing","./inbound-normalization","./inbound-normalization.fixture","./install","./install/bring-up","./install/env","./install/read-port","./runtime","./runtime-types","./runtime.fixture","./runtime.fixture-types","./send-reconciliation","./sequence-approval","./sequence-dispatch-governance","./sequence-scheduler","./types","./verticals/artisan","./verticals/artisan.fixture-types","./verticals/automated-sales","./verticals/automated-sales.fixture-types"],"documentation":[{"title":"Integration Communication Os Runtime documentation","url":"https://www.npmjs.com/package/%40lssm-tech%2Fintegration.communication-os-runtime","kind":"readme"}],"examples":[],"replacements":[],"capabilities":[{"id":"package.lssm.tech.integration.communication.os.runtime","title":"Integration Communication Os Runtime","description":"Governed approve→send→event+audit orchestrator that closes the CommunicationOS hexagon: an approved approval (never the agent) is the only path that resolves a ChannelAdapter, and reconciliation does not redispatch a provider-accepted send while audit/event completion remains retryable.","status":"active","useCases":["Adopt governed approve→send→event+audit orchestrator that closes the communicationos hexagon: an approved approval (never the agent) is the only path that resolves a channeladapter, and reconciliation does not redispatch a provider-accepted send while audit/event completion remains retryable"],"aliases":["integration","communication","runtime"],"pythonEquivalents":[],"canonicalImports":[{"from":"@lssm-tech/integration.communication-os-runtime","symbols":[]},{"from":"@lssm-tech/integration.communication-os-runtime/agent-host","symbols":[]},{"from":"@lssm-tech/integration.communication-os-runtime/agent-host-admission","symbols":[]},{"from":"@lssm-tech/integration.communication-os-runtime/agent-host.fixture","symbols":[]},{"from":"@lssm-tech/integration.communication-os-runtime/approval-send-orchestrator","symbols":[]},{"from":"@lssm-tech/integration.communication-os-runtime/audit-descriptor","symbols":[]},{"from":"@lssm-tech/integration.communication-os-runtime/delivery-routing","symbols":[]},{"from":"@lssm-tech/integration.communication-os-runtime/inbound-normalization","symbols":[]},{"from":"@lssm-tech/integration.communication-os-runtime/inbound-normalization.fixture","symbols":[]},{"from":"@lssm-tech/integration.communication-os-runtime/install","symbols":[]},{"from":"@lssm-tech/integration.communication-os-runtime/install/bring-up","symbols":[]},{"from":"@lssm-tech/integration.communication-os-runtime/install/env","symbols":[]},{"from":"@lssm-tech/integration.communication-os-runtime/install/read-port","symbols":[]},{"from":"@lssm-tech/integration.communication-os-runtime/runtime","symbols":[]},{"from":"@lssm-tech/integration.communication-os-runtime/runtime-types","symbols":[]},{"from":"@lssm-tech/integration.communication-os-runtime/runtime.fixture","symbols":[]}],"constraints":{"platforms":["server"],"runtimes":["node"],"avoidWhen":["The @lssm-tech/integration.communication-os-runtime package constraints do not match the target runtime or platform."],"requires":["TypeScript"]},"alternatives":[],"relationships":[],"resolutionPriority":50}]},"canonicalImports":[{"capabilityId":"package.lssm.tech.integration.communication.os.runtime","from":"@lssm-tech/integration.communication-os-runtime","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.runtime","from":"@lssm-tech/integration.communication-os-runtime/agent-host","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.runtime","from":"@lssm-tech/integration.communication-os-runtime/agent-host-admission","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.runtime","from":"@lssm-tech/integration.communication-os-runtime/agent-host.fixture","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.runtime","from":"@lssm-tech/integration.communication-os-runtime/approval-send-orchestrator","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.runtime","from":"@lssm-tech/integration.communication-os-runtime/audit-descriptor","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.runtime","from":"@lssm-tech/integration.communication-os-runtime/delivery-routing","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.runtime","from":"@lssm-tech/integration.communication-os-runtime/inbound-normalization","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.runtime","from":"@lssm-tech/integration.communication-os-runtime/inbound-normalization.fixture","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.runtime","from":"@lssm-tech/integration.communication-os-runtime/install","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.runtime","from":"@lssm-tech/integration.communication-os-runtime/install/bring-up","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.runtime","from":"@lssm-tech/integration.communication-os-runtime/install/env","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.runtime","from":"@lssm-tech/integration.communication-os-runtime/install/read-port","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.runtime","from":"@lssm-tech/integration.communication-os-runtime/runtime","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.runtime","from":"@lssm-tech/integration.communication-os-runtime/runtime-types","symbols":[]},{"capabilityId":"package.lssm.tech.integration.communication.os.runtime","from":"@lssm-tech/integration.communication-os-runtime/runtime.fixture","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","test:pack":"bun run build && bun scripts/verify-agent-host-pack.ts","typecheck":"tsgo --noEmit"},"scriptStatus":"complete pinned manifest","dependencies":{"@lssm-tech/integration.communication-channel-core":"workspace:^","@lssm-tech/integration.communication-os-agent":"workspace:^","@lssm-tech/integration.communication-os-persistence":"workspace:^","@lssm-tech/integration.provider-database":"workspace:^","@lssm-tech/lib.agent-protocol-spec":"workspace:^","@lssm-tech/lib.ai-agent":"workspace:^","@lssm-tech/lib.builder-runtime":"workspace:^","@lssm-tech/lib.companyos-spec":"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:^","@lssm-tech/lib.lssm-os-runtime":"workspace:^","@lssm-tech/lib.orchestration-spec":"workspace:^","@lssm-tech/lib.utils-typescript":"workspace:^"},"devDependencies":{"@lssm-tech/integration.communication-channel-email":"workspace:*","@lssm-tech/integration.communication-channel-sms":"workspace:*","@lssm-tech/integration.communication-channel-telegram":"workspace:*","@lssm-tech/integration.provider-email":"workspace:*","@lssm-tech/integration.provider-sms":"workspace:*","@lssm-tech/lib.contracts-runtime-server-mcp":"workspace:*","@lssm-tech/tool.bun":"workspace:*","@lssm-tech/tool.typescript":"workspace:*","@modelcontextprotocol/sdk":"catalog:ai","@types/bun":"catalog:types","ai":"catalog:ai","typescript":"catalog:"},"peerDependencies":{},"optionalDependencies":{},"peerDependenciesMeta":{},"bundledDependencies":null,"dependencyStatus":"complete pinned manifest","exports":{".":"./src/index.ts","./agent-host":"./src/agent-host.ts","./agent-host-admission":"./src/agent-host-admission.ts","./agent-host-authority-admission":"./src/agent-host-authority-admission.ts","./agent-host.fixture":"./src/agent-host.fixture.ts","./agent-platform":"./src/agent-platform.ts","./approval-send-orchestrator":"./src/approval-send-orchestrator.ts","./audit-descriptor":"./src/audit-descriptor.ts","./automation-follow-up":"./src/automation-follow-up.ts","./delivery-routing":"./src/delivery-routing.ts","./inbound-normalization":"./src/inbound-normalization.ts","./inbound-normalization.fixture":"./src/inbound-normalization.fixture.ts","./install":"./src/install/index.ts","./install/bring-up":"./src/install/bring-up.ts","./install/env":"./src/install/env.ts","./install/read-port":"./src/install/read-port.ts","./runtime":"./src/runtime.ts","./runtime-types":"./src/runtime-types.ts","./runtime.fixture":"./src/runtime.fixture.ts","./runtime.fixture-types":"./src/runtime.fixture-types.ts","./send-reconciliation":"./src/send-reconciliation.ts","./sequence-approval":"./src/sequence-approval.ts","./sequence-dispatch-governance":"./src/sequence-dispatch-governance.ts","./sequence-scheduler":"./src/sequence-scheduler.ts","./types":"./src/types.ts","./verticals/artisan":"./src/verticals/artisan.ts","./verticals/artisan.fixture-types":"./src/verticals/artisan.fixture-types.ts","./verticals/automated-sales":"./src/verticals/automated-sales.ts","./verticals/automated-sales.fixture-types":"./src/verticals/automated-sales.fixture-types.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-host":{"types":"./dist/agent-host.d.ts","browser":"./dist/browser/agent-host.js","bun":"./dist/agent-host.js","node":"./dist/node/agent-host.js","default":"./dist/agent-host.js"},"./agent-host-admission":{"types":"./dist/agent-host-admission.d.ts","browser":"./dist/browser/agent-host-admission.js","bun":"./dist/agent-host-admission.js","node":"./dist/node/agent-host-admission.js","default":"./dist/agent-host-admission.js"},"./agent-host-authority-admission":{"types":"./dist/agent-host-authority-admission.d.ts","browser":"./dist/browser/agent-host-authority-admission.js","bun":"./dist/agent-host-authority-admission.js","node":"./dist/node/agent-host-authority-admission.js","default":"./dist/agent-host-authority-admission.js"},"./agent-host.fixture":{"types":"./dist/agent-host.fixture.d.ts","browser":"./dist/browser/agent-host.fixture.js","bun":"./dist/agent-host.fixture.js","node":"./dist/node/agent-host.fixture.js","default":"./dist/agent-host.fixture.js"},"./agent-platform":{"types":"./dist/agent-platform.d.ts","browser":"./dist/browser/agent-platform.js","bun":"./dist/agent-platform.js","node":"./dist/node/agent-platform.js","default":"./dist/agent-platform.js"},"./approval-send-orchestrator":{"types":"./dist/approval-send-orchestrator.d.ts","browser":"./dist/browser/approval-send-orchestrator.js","bun":"./dist/approval-send-orchestrator.js","node":"./dist/node/approval-send-orchestrator.js","default":"./dist/approval-send-orchestrator.js"},"./audit-descriptor":{"types":"./dist/audit-descriptor.d.ts","browser":"./dist/browser/audit-descriptor.js","bun":"./dist/audit-descriptor.js","node":"./dist/node/audit-descriptor.js","default":"./dist/audit-descriptor.js"},"./automation-follow-up":{"types":"./dist/automation-follow-up.d.ts","browser":"./dist/browser/automation-follow-up.js","bun":"./dist/automation-follow-up.js","node":"./dist/node/automation-follow-up.js","default":"./dist/automation-follow-up.js"},"./delivery-routing":{"types":"./dist/delivery-routing.d.ts","browser":"./dist/browser/delivery-routing.js","bun":"./dist/delivery-routing.js","node":"./dist/node/delivery-routing.js","default":"./dist/delivery-routing.js"},"./inbound-normalization":{"types":"./dist/inbound-normalization.d.ts","browser":"./dist/browser/inbound-normalization.js","bun":"./dist/inbound-normalization.js","node":"./dist/node/inbound-normalization.js","default":"./dist/inbound-normalization.js"},"./inbound-normalization.fixture":{"types":"./dist/inbound-normalization.fixture.d.ts","browser":"./dist/browser/inbound-normalization.fixture.js","bun":"./dist/inbound-normalization.fixture.js","node":"./dist/node/inbound-normalization.fixture.js","default":"./dist/inbound-normalization.fixture.js"},"./install":{"types":"./dist/install/index.d.ts","browser":"./dist/browser/install/index.js","bun":"./dist/install/index.js","node":"./dist/node/install/index.js","default":"./dist/install/index.js"},"./install/bring-up":{"types":"./dist/install/bring-up.d.ts","browser":"./dist/browser/install/bring-up.js","bun":"./dist/install/bring-up.js","node":"./dist/node/install/bring-up.js","default":"./dist/install/bring-up.js"},"./install/env":{"types":"./dist/install/env.d.ts","browser":"./dist/browser/install/env.js","bun":"./dist/install/env.js","node":"./dist/node/install/env.js","default":"./dist/install/env.js"},"./install/read-port":{"types":"./dist/install/read-port.d.ts","browser":"./dist/browser/install/read-port.js","bun":"./dist/install/read-port.js","node":"./dist/node/install/read-port.js","default":"./dist/install/read-port.js"},"./runtime":{"types":"./dist/runtime.d.ts","browser":"./dist/browser/runtime.js","bun":"./dist/runtime.js","node":"./dist/node/runtime.js","default":"./dist/runtime.js"},"./runtime-types":{"types":"./dist/runtime-types.d.ts","browser":"./dist/browser/runtime-types.js","bun":"./dist/runtime-types.js","node":"./dist/node/runtime-types.js","default":"./dist/runtime-types.js"},"./runtime.fixture":{"types":"./dist/runtime.fixture.d.ts","browser":"./dist/browser/runtime.fixture.js","bun":"./dist/runtime.fixture.js","node":"./dist/node/runtime.fixture.js","default":"./dist/runtime.fixture.js"},"./runtime.fixture-types":{"types":"./dist/runtime.fixture-types.d.ts","browser":"./dist/browser/runtime.fixture-types.js","bun":"./dist/runtime.fixture-types.js","node":"./dist/node/runtime.fixture-types.js","default":"./dist/runtime.fixture-types.js"},"./send-reconciliation":{"types":"./dist/send-reconciliation.d.ts","browser":"./dist/browser/send-reconciliation.js","bun":"./dist/send-reconciliation.js","node":"./dist/node/send-reconciliation.js","default":"./dist/send-reconciliation.js"},"./sequence-approval":{"types":"./dist/sequence-approval.d.ts","browser":"./dist/browser/sequence-approval.js","bun":"./dist/sequence-approval.js","node":"./dist/node/sequence-approval.js","default":"./dist/sequence-approval.js"},"./sequence-dispatch-governance":{"types":"./dist/sequence-dispatch-governance.d.ts","browser":"./dist/browser/sequence-dispatch-governance.js","bun":"./dist/sequence-dispatch-governance.js","node":"./dist/node/sequence-dispatch-governance.js","default":"./dist/sequence-dispatch-governance.js"},"./sequence-scheduler":{"types":"./dist/sequence-scheduler.d.ts","browser":"./dist/browser/sequence-scheduler.js","bun":"./dist/sequence-scheduler.js","node":"./dist/node/sequence-scheduler.js","default":"./dist/sequence-scheduler.js"},"./types":{"types":"./dist/types.d.ts","browser":"./dist/browser/types.js","bun":"./dist/types.js","node":"./dist/node/types.js","default":"./dist/types.js"},"./verticals/artisan":{"types":"./dist/verticals/artisan.d.ts","browser":"./dist/browser/verticals/artisan.js","bun":"./dist/verticals/artisan.js","node":"./dist/node/verticals/artisan.js","default":"./dist/verticals/artisan.js"},"./verticals/artisan.fixture-types":{"types":"./dist/verticals/artisan.fixture-types.d.ts","browser":"./dist/browser/verticals/artisan.fixture-types.js","bun":"./dist/verticals/artisan.fixture-types.js","node":"./dist/node/verticals/artisan.fixture-types.js","default":"./dist/verticals/artisan.fixture-types.js"},"./verticals/automated-sales":{"types":"./dist/verticals/automated-sales.d.ts","browser":"./dist/browser/verticals/automated-sales.js","bun":"./dist/verticals/automated-sales.js","node":"./dist/node/verticals/automated-sales.js","default":"./dist/verticals/automated-sales.js"},"./verticals/automated-sales.fixture-types":{"types":"./dist/verticals/automated-sales.fixture-types.d.ts","browser":"./dist/browser/verticals/automated-sales.fixture-types.js","bun":"./dist/verticals/automated-sales.fixture-types.js","node":"./dist/node/verticals/automated-sales.fixture-types.js","default":"./dist/verticals/automated-sales.fixture-types.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-runtime","target":"./src/index.ts","targets":[{"conditions":[],"target":"./src/index.ts","sourcePath":"packages/integrations/communication-os-runtime/src/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/index.ts","sourceStatus":"verified source file"}]},{"subpath":"./agent-host","importPath":"@lssm-tech/integration.communication-os-runtime/agent-host","target":"./src/agent-host.ts","targets":[{"conditions":[],"target":"./src/agent-host.ts","sourcePath":"packages/integrations/communication-os-runtime/src/agent-host.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/agent-host.ts","sourceStatus":"verified source file"}]},{"subpath":"./agent-host-admission","importPath":"@lssm-tech/integration.communication-os-runtime/agent-host-admission","target":"./src/agent-host-admission.ts","targets":[{"conditions":[],"target":"./src/agent-host-admission.ts","sourcePath":"packages/integrations/communication-os-runtime/src/agent-host-admission.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/agent-host-admission.ts","sourceStatus":"verified source file"}]},{"subpath":"./agent-host-authority-admission","importPath":"@lssm-tech/integration.communication-os-runtime/agent-host-authority-admission","target":"./src/agent-host-authority-admission.ts","targets":[{"conditions":[],"target":"./src/agent-host-authority-admission.ts","sourcePath":"packages/integrations/communication-os-runtime/src/agent-host-authority-admission.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/agent-host-authority-admission.ts","sourceStatus":"verified source file"}]},{"subpath":"./agent-host.fixture","importPath":"@lssm-tech/integration.communication-os-runtime/agent-host.fixture","target":"./src/agent-host.fixture.ts","targets":[{"conditions":[],"target":"./src/agent-host.fixture.ts","sourcePath":"packages/integrations/communication-os-runtime/src/agent-host.fixture.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/agent-host.fixture.ts","sourceStatus":"verified source file"}]},{"subpath":"./agent-platform","importPath":"@lssm-tech/integration.communication-os-runtime/agent-platform","target":"./src/agent-platform.ts","targets":[{"conditions":[],"target":"./src/agent-platform.ts","sourcePath":"packages/integrations/communication-os-runtime/src/agent-platform.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/agent-platform.ts","sourceStatus":"verified source file"}]},{"subpath":"./approval-send-orchestrator","importPath":"@lssm-tech/integration.communication-os-runtime/approval-send-orchestrator","target":"./src/approval-send-orchestrator.ts","targets":[{"conditions":[],"target":"./src/approval-send-orchestrator.ts","sourcePath":"packages/integrations/communication-os-runtime/src/approval-send-orchestrator.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/approval-send-orchestrator.ts","sourceStatus":"verified source file"}]},{"subpath":"./audit-descriptor","importPath":"@lssm-tech/integration.communication-os-runtime/audit-descriptor","target":"./src/audit-descriptor.ts","targets":[{"conditions":[],"target":"./src/audit-descriptor.ts","sourcePath":"packages/integrations/communication-os-runtime/src/audit-descriptor.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/audit-descriptor.ts","sourceStatus":"verified source file"}]},{"subpath":"./automation-follow-up","importPath":"@lssm-tech/integration.communication-os-runtime/automation-follow-up","target":"./src/automation-follow-up.ts","targets":[{"conditions":[],"target":"./src/automation-follow-up.ts","sourcePath":"packages/integrations/communication-os-runtime/src/automation-follow-up.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/automation-follow-up.ts","sourceStatus":"verified source file"}]},{"subpath":"./delivery-routing","importPath":"@lssm-tech/integration.communication-os-runtime/delivery-routing","target":"./src/delivery-routing.ts","targets":[{"conditions":[],"target":"./src/delivery-routing.ts","sourcePath":"packages/integrations/communication-os-runtime/src/delivery-routing.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/delivery-routing.ts","sourceStatus":"verified source file"}]},{"subpath":"./inbound-normalization","importPath":"@lssm-tech/integration.communication-os-runtime/inbound-normalization","target":"./src/inbound-normalization.ts","targets":[{"conditions":[],"target":"./src/inbound-normalization.ts","sourcePath":"packages/integrations/communication-os-runtime/src/inbound-normalization.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/inbound-normalization.ts","sourceStatus":"verified source file"}]},{"subpath":"./inbound-normalization.fixture","importPath":"@lssm-tech/integration.communication-os-runtime/inbound-normalization.fixture","target":"./src/inbound-normalization.fixture.ts","targets":[{"conditions":[],"target":"./src/inbound-normalization.fixture.ts","sourcePath":"packages/integrations/communication-os-runtime/src/inbound-normalization.fixture.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/inbound-normalization.fixture.ts","sourceStatus":"verified source file"}]},{"subpath":"./install","importPath":"@lssm-tech/integration.communication-os-runtime/install","target":"./src/install/index.ts","targets":[{"conditions":[],"target":"./src/install/index.ts","sourcePath":"packages/integrations/communication-os-runtime/src/install/index.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/install/index.ts","sourceStatus":"verified source file"}]},{"subpath":"./install/bring-up","importPath":"@lssm-tech/integration.communication-os-runtime/install/bring-up","target":"./src/install/bring-up.ts","targets":[{"conditions":[],"target":"./src/install/bring-up.ts","sourcePath":"packages/integrations/communication-os-runtime/src/install/bring-up.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/install/bring-up.ts","sourceStatus":"verified source file"}]},{"subpath":"./install/env","importPath":"@lssm-tech/integration.communication-os-runtime/install/env","target":"./src/install/env.ts","targets":[{"conditions":[],"target":"./src/install/env.ts","sourcePath":"packages/integrations/communication-os-runtime/src/install/env.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/install/env.ts","sourceStatus":"verified source file"}]},{"subpath":"./install/read-port","importPath":"@lssm-tech/integration.communication-os-runtime/install/read-port","target":"./src/install/read-port.ts","targets":[{"conditions":[],"target":"./src/install/read-port.ts","sourcePath":"packages/integrations/communication-os-runtime/src/install/read-port.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/install/read-port.ts","sourceStatus":"verified source file"}]},{"subpath":"./runtime","importPath":"@lssm-tech/integration.communication-os-runtime/runtime","target":"./src/runtime.ts","targets":[{"conditions":[],"target":"./src/runtime.ts","sourcePath":"packages/integrations/communication-os-runtime/src/runtime.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/runtime.ts","sourceStatus":"verified source file"}]},{"subpath":"./runtime-types","importPath":"@lssm-tech/integration.communication-os-runtime/runtime-types","target":"./src/runtime-types.ts","targets":[{"conditions":[],"target":"./src/runtime-types.ts","sourcePath":"packages/integrations/communication-os-runtime/src/runtime-types.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/runtime-types.ts","sourceStatus":"verified source file"}]},{"subpath":"./runtime.fixture","importPath":"@lssm-tech/integration.communication-os-runtime/runtime.fixture","target":"./src/runtime.fixture.ts","targets":[{"conditions":[],"target":"./src/runtime.fixture.ts","sourcePath":"packages/integrations/communication-os-runtime/src/runtime.fixture.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/runtime.fixture.ts","sourceStatus":"verified source file"}]},{"subpath":"./runtime.fixture-types","importPath":"@lssm-tech/integration.communication-os-runtime/runtime.fixture-types","target":"./src/runtime.fixture-types.ts","targets":[{"conditions":[],"target":"./src/runtime.fixture-types.ts","sourcePath":"packages/integrations/communication-os-runtime/src/runtime.fixture-types.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/runtime.fixture-types.ts","sourceStatus":"verified source file"}]},{"subpath":"./send-reconciliation","importPath":"@lssm-tech/integration.communication-os-runtime/send-reconciliation","target":"./src/send-reconciliation.ts","targets":[{"conditions":[],"target":"./src/send-reconciliation.ts","sourcePath":"packages/integrations/communication-os-runtime/src/send-reconciliation.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/send-reconciliation.ts","sourceStatus":"verified source file"}]},{"subpath":"./sequence-approval","importPath":"@lssm-tech/integration.communication-os-runtime/sequence-approval","target":"./src/sequence-approval.ts","targets":[{"conditions":[],"target":"./src/sequence-approval.ts","sourcePath":"packages/integrations/communication-os-runtime/src/sequence-approval.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/sequence-approval.ts","sourceStatus":"verified source file"}]},{"subpath":"./sequence-dispatch-governance","importPath":"@lssm-tech/integration.communication-os-runtime/sequence-dispatch-governance","target":"./src/sequence-dispatch-governance.ts","targets":[{"conditions":[],"target":"./src/sequence-dispatch-governance.ts","sourcePath":"packages/integrations/communication-os-runtime/src/sequence-dispatch-governance.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/sequence-dispatch-governance.ts","sourceStatus":"verified source file"}]},{"subpath":"./sequence-scheduler","importPath":"@lssm-tech/integration.communication-os-runtime/sequence-scheduler","target":"./src/sequence-scheduler.ts","targets":[{"conditions":[],"target":"./src/sequence-scheduler.ts","sourcePath":"packages/integrations/communication-os-runtime/src/sequence-scheduler.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/sequence-scheduler.ts","sourceStatus":"verified source file"}]},{"subpath":"./types","importPath":"@lssm-tech/integration.communication-os-runtime/types","target":"./src/types.ts","targets":[{"conditions":[],"target":"./src/types.ts","sourcePath":"packages/integrations/communication-os-runtime/src/types.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/types.ts","sourceStatus":"verified source file"}]},{"subpath":"./verticals/artisan","importPath":"@lssm-tech/integration.communication-os-runtime/verticals/artisan","target":"./src/verticals/artisan.ts","targets":[{"conditions":[],"target":"./src/verticals/artisan.ts","sourcePath":"packages/integrations/communication-os-runtime/src/verticals/artisan.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/verticals/artisan.ts","sourceStatus":"verified source file"}]},{"subpath":"./verticals/artisan.fixture-types","importPath":"@lssm-tech/integration.communication-os-runtime/verticals/artisan.fixture-types","target":"./src/verticals/artisan.fixture-types.ts","targets":[{"conditions":[],"target":"./src/verticals/artisan.fixture-types.ts","sourcePath":"packages/integrations/communication-os-runtime/src/verticals/artisan.fixture-types.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/verticals/artisan.fixture-types.ts","sourceStatus":"verified source file"}]},{"subpath":"./verticals/automated-sales","importPath":"@lssm-tech/integration.communication-os-runtime/verticals/automated-sales","target":"./src/verticals/automated-sales.ts","targets":[{"conditions":[],"target":"./src/verticals/automated-sales.ts","sourcePath":"packages/integrations/communication-os-runtime/src/verticals/automated-sales.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/verticals/automated-sales.ts","sourceStatus":"verified source file"}]},{"subpath":"./verticals/automated-sales.fixture-types","importPath":"@lssm-tech/integration.communication-os-runtime/verticals/automated-sales.fixture-types","target":"./src/verticals/automated-sales.fixture-types.ts","targets":[{"conditions":[],"target":"./src/verticals/automated-sales.fixture-types.ts","sourcePath":"packages/integrations/communication-os-runtime/src/verticals/automated-sales.fixture-types.ts","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/src/verticals/automated-sales.fixture-types.ts","sourceStatus":"verified source file"}]}],"entryCount":29,"namedSymbolCoverage":"catalog declarations only; exhaustive TypeScript symbols not extracted","installationStatus":"not verified"},"docsLinks":[{"title":"Integration Communication Os Runtime documentation","url":"https://www.npmjs.com/package/%40lssm-tech%2Fintegration.communication-os-runtime","kind":"readme","pinnedUrl":null,"sourceStatus":"declared link; destination not verified"}],"sourceUrls":{"package":"https://github.com/lssm-tech/contractspec/tree/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime","manifest":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/package.json","readme":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/README.md","guide":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/integration.communication-os-runtime.txt"},"readme":{"status":"available","body":"# @lssm-tech/integration.communication-os-runtime\n\nThe **single composition point** that closes the CommunicationOS hexagon. One\n`createCommunicationOsRuntime({...})` call wires all five CommunicationOS ports —\npersistence, channels, model/agent, auth, observability — plus the\n`ChannelAdapterRegistry` into one cohesive runtime handle (plan P2-S1, AC2.1).\n\nThis package also owns the governed **approve → send → event + audit**\norchestrator (`executeApprovedSend`, P1-S4): only a human-approved approval\n(never the agent) can resolve a `ChannelAdapter` and dispatch an outbound send.\nThe injected `ApprovedSendReconciliationStore` atomically claims the approval\nbefore dispatch, retains the provider acceptance receipt as\n`sent_pending_ack`, and resumes audit/event completion without sending again.\nA claim with no durable receipt becomes `ambiguous` and stays fail-closed until\nan operator supplies the correctly bound receipt through\n`reconcileApprovedSendReceipt`. This prevents another provider send after a\npost-send completion failure without assuming undocumented provider\nidempotency. The\ndefault store is process-local for compatibility and is shared by direct calls\nthat use the same approval store; production hosts must inject a durable\nimplementation to preserve the boundary across restarts.\n\n`createCommunicationAgentPlatformRuntimeV1` is the canonical conversation\ncomposition seam. It binds conversations, admits already-authenticated inbound\nreceipts, publishes background lifecycle state, and accepts help, approval,\nsteer, queue, pause, cancel, and branch controls. CommunicationOS never executes\nthe agent control itself: an injected Agent Host/Connect authority does so once,\nand the durable result is replayed on every authorized surface.\n\n`claimSequenceAttempt` adds a pure scheduling state machine for approval-bound\nsequence intents. Every claim and retry rechecks exact target/content/channel/\nside-effect/fingerprint bindings plus consent, policy, kill switch, due time,\nexpiry, and attempt limits. The compatibility-only\n`prepareSequenceApprovedSend` previews claimability but never returns an\neffect-capable orchestration input; it performs no provider, outbox,\npersistence, or event call.\n`prepareVerifiedSequenceApprovedSend` is the effect-authorizing preparation\npath: immediately before preparation it reloads the approved request, verifies\nthe versioned approval-target fingerprint and tenant, checks the ActionPacket\nevidence reference, and hashes the outbound body. An approval for sequence A\ntherefore cannot prepare sequence B.\nAt dispatch, `executeApprovedSend` fails closed on partial sequence markers,\nenforces the approved `notBefore`/expiry window, and requires an injected\nserver-owned `SequenceDispatchGovernancePort` to re-resolve consent, policy,\nand kill-switch state before adapter lookup.\n\n## Agent Host and Runtime Node\n\nThe `./agent-host` export is the CommunicationOS-owned bridge into LSSM OS. It\nimplements `ProviderLifecyclePortV1`, but it does not grant send authority:\nbefore every effect it loads the exact digest-bound approved delivery command,\nre-resolves the complete `ApprovedSendContext`, and invokes this package's\nexisting `approveAndSend` runtime. Provider receipt replay prevents duplicate\ndelivery. A timeout or uncertain completion first enters confirmed durable\nindeterminate custody; `observe()` then uses CommunicationOS reconciliation\nfor the exact approval/command and never blindly redispatches the channel effect.\n\n`./agent-host-admission` builds the matching Durable Queue V2 envelope for the\nexisting SQL co-atomic operation/outbox admission. It derives the outbox ref\nfrom exact scope, operation, order, command, and approved-context digests rather\nthan accepting a caller-chosen authority ref. Agent Host only claims that\nenvelope and calls Runtime Node; it never calls a channel adapter directly.\n`createCommunicationOsAuthorizedAdmissionPortV1` is the production producer\nseam: an injected authority issues the accepted operation and signed order, the\nruntime verifies their exact command/context/idempotency/profile bindings, and\nan injected queue committer admits the operation plus Queue V2 envelope. The\nport owns no signing key and rejects denial, substitution, or non-durable queue\noutcomes before a product may report a queued delivery.\n\n`createCommunicationOsAuthorityIssuerV1` is the server-side `issue()`\nimplementation of that seam. It takes nothing from the request on trust: an\noperator `CommunicationOsAuthorityDeploymentV1` (strictly parsed by\n`parseCommunicationOsAuthorityDeploymentV1`) names the Runtime Node, provider\nbinding, capability, queue topology and capability profile; an injected\n`CommunicationOsApprovalBindingPortV1` proves, server-side, a current human\napproval of exactly the requested scope, thread, draft, channel, content\ndigest and idempotency key; and a trusted clock bounds the order to the\ndeployment TTL (30 to 900 s). The issued standard Runtime V3 order derives its\nids from scope and idempotency key, commits its authorization digest to the\napproval evidence, names that evidence in `signatureRef`, and is checked\nagainst the queue admission it must produce. Malformed requests, foreign\nenvironments, missing or unavailable approval, malformed evidence and an\nuntrusted clock are typed denials; nothing is persisted. It is not a Connect\nsignature: a host that needs Connect-signed orders injects a Connect-backed\nissuer behind the same interface.\n`parseCommunicationOsAuthorityDeploymentV1` also rejects a profile that could\nnot admit an approved send (placement, encryption, ordering), so a bad\nconfiguration fails before the first delivery.\n`createCommunicationOsDeferredAdmissionPortV1` is the admission port for hosts\nwhose durable record of an approved send is their own CommunicationOS\ntransaction rather than a queue write. It admits only an envelope with no\n`communicationOsQueueAdmissionIssuesV1` (scoped profile digest, scope,\nordering, encryption, placement, operation binding), records nothing, and\ntypes its result `queueRecord: 'deferred_to_caller'`: the caller persists the\noperation, order, runtime outbox and envelope refs atomically with the effect,\nin the outbox row of an outbound message (`appendCommunicationEventWithOutbox`)\nor in the message event of an in-app post.\nThe order and envelope expire `ttlSeconds` (30 to 900 s) after issue. A\ndispatcher that reaches the outbox record later must not send on the expired\norder: it re-admits the send (a fresh issue for the same idempotency key keeps\nthe same operation and order ids) or reports a retryable failure, because the\nproducing host already counts the send as queued. Size `ttlSeconds` above the\nworker's pickup latency.\nA CommunicationOS room is addressed as `communicationOsRoomThreadRefV1(roomId)`\n(`communication-room:<base64url(roomId)>`, reversed by\n`parseCommunicationOsRoomThreadRefV1`), because room ids may contain more than\nthe one colon a runtime ref allows. An Agent Host approved-send resolver that\ncompares `context.threadId` with `command.threadRef` must accept this form;\nthe calendar briefing path still sends the raw room id.\nThe current in-app walking skeleton is credential-free T1 evidence, not a live\nchannel claim.\n\nThe same `./agent-host` surface now provides the additive outbox delivery\ncapability. `CommunicationOsOutboxAgentHostProviderV1` accepts only a leased\noutbox record whose tenant, workspace, resource reference, idempotency key,\nimmutable payload, and exact lease identity match the Runtime Node execution.\nThe lease must still be live under the injected trusted clock. Only then can\nthe injected channel dispatcher run. Its provider receipt is hashed into the\nRuntime Node receipt, while the raw provider receipt reference is not persisted\nthere. Agent Host composes this provider through `ExactProviderRouterV1`; a\nnearby adapter or capability can never be selected as fallback. Unknown\nprovider outcomes remain Runtime Node indeterminate custody and are not retried\nthrough this bridge.\n\nAn adapter ambiguity that carries sanitized provider diagnostic refs becomes an\nattested `indeterminate` provider receipt with no external delivery ref. Agent\nHost custody retains those diagnostics alongside its recovery ref. Diagnostic\ncorrelations remain evidence for reconciliation or operator help; they never\nprove acceptance, delivery, or definitive failure.\n\nFor held outcomes, Runtime Node may invoke `observe` with a separate exact work\norder. The injected reconciliation port must return provider evidence bound to\nthe original send work order; Agent Host verifies its digest, source time, and\nresult before the persistence port transitions custody to delivered or\ndefinitive failure. The observation also requires an unexpired, digest-bound\nauthority artifact from an authenticated provider callback or authorized\noperator, tied to the exact scope, work order, and observation. Conversation\ntext and diagnostic correlations alone cannot resolve custody. Observation\nnever calls the channel dispatcher.\n\n## Why a factory + registry\n\n- **Adopt in <1 file.** A vertical wires CommunicationOS through a single\n  `createCommunicationOsRuntime` call (≤40 LOC) with **no edits** to any\n  channel / persistence / agent package — it composes their published public\n  APIs only.\n- **The registry lives HERE.** Per the architecture (Option C), per-channel\n  packages stay provider-specific; the `ChannelAdapterRegistry` composition\n  point is owned by this factory, not by any single channel package.\n\n## The five composed ports\n\n| Port | Source package | Wired as |\n| --- | --- | --- |\n| Persistence | `@lssm-tech/integration.communication-os-persistence` | injected `persistence` + `reads` (node-only engine built behind the server-only `.../database` subpath by the caller) |\n| Channels | `@lssm-tech/integration.communication-channel-core` | `createChannelAdapterRegistry(channels)` |\n| Model / agent | `@lssm-tech/integration.communication-os-agent` | `createCommunicationOsAgent` (Mistral/Claude via SovereigntyProfile + narrowed registry — no send tool) |\n| Auth | identity-rbac actor seam | `auth.resolveActorContext()` threaded per-call into the read `HandlerCtx` |\n| Observability | `@lssm-tech/integration.communication-os-persistence` | optional `CommunicationOsObservability` binding |\n\n## Runtime handle\n\n`createCommunicationOsRuntime(config)` returns a `CommunicationOsRuntime`:\n\n- `ingest({ channelType, rawPayload })` — normalize a raw inbound payload.\n\n## Fixture-safe inbound normalization\n\n`normalizeFixtureInboundEnvelope` bridges an already-normalized channel fixture\ninto a tenant-bound CommunicationSpec ingestion record. The bridge reuses the\nF002 CompanyOS tenant-governance envelope for scope, consent, evidence/replay,\nand idempotency metadata. It performs no provider calls, webhook handling,\ncredential lookup, or outbound sending.\n- `draftViaAgent({ sessionId, agentId, toolCallId, threadId, reason })` —\n  produce a fail-closed pending approval; returns the approval id (the agent\n  holds no send authority and cannot self-approve).\n- `searchInbox(input)` / `getThread(input)` / `listMessages(input)` — actor-scoped reads.\n- `approveAndSend({ approvalRequestId, context })` — fail-closed; reconciliation\n  does not repeat a provider-accepted send while audit/event completion remains\n  retryable.\n- `eraseSubject({ channelType, ... })` — best-effort GDPR erasure (three-state outcome).\n- `channelRegistry` / `agent` / `approvalWorkflow` — composed surfaces.\n\n`admitAgentAutomationFollowUpV1` is the background-result bridge. It accepts\nonly exact claim, receipt, finalized automation state, follow-up, canonical\nconversation, and delivery-intent artifacts. It verifies every digest, scope,\nconversation, lifecycle, automation, and delivery-window binding before calling\nan injected durable intent-admission port. Reconciliation-required state,\nindeterminate outcomes, stale conversations, substituted intents, and mismatched\nadmission receipts fail closed. The bridge does not select a provider, send a\nmessage, or weaken preference, consent, eligibility, fallback, or Runtime Node\nauthority.\n\n## Wiring example (≤40 LOC, AC2.1)\n\nThe canonical wiring lives in `src/runtime.fixture.ts` between the\n`WIRING-START` / `WIRING-END` markers and is measured by `src/runtime.test.ts`:\n\n```ts\nreturn createCommunicationOsRuntime({\n  persistence: deps.persistence,\n  reads: deps.reads,\n  channels: [\n    createTelegramChannelAdapter({ botToken: deps.telegramBotToken, fetchImpl: deps.fetchImpl }),\n    createEmailChannelAdapter({ outbound: deps.emailOutbound, fromAddress: { email: deps.fromEmail } }),\n  ],\n  model: {\n    sovereignty: { llmProviderId: 'mistral' },\n    providers: { mistral: { apiKey: deps.mistralApiKey } },\n    createModel: deps.createModel,\n  },\n  inbox: { log: deps.eventLog },\n  auth: { resolveActorContext: deps.resolveActor },\n  observability: deps.observability,\n  events: deps.events,\n});\n```\n\n## Self-host / on-prem bring-up (P2-S3, AC2.2)\n\n`@lssm-tech/integration.communication-os-runtime/install` is the **server-only**\none-command bring-up for a self-hosted CommunicationOS. `bringUpCommunicationOs`\nruns DB migrations, reads env + sovereignty config, composes the runtime via the\nfactory, and (optionally) builds the governed MCP gateway.\n\n### One command\n\n```ts\n// server-only — pulls the node-only persistence ./database subpath\nimport { bringUpCommunicationOs } from '@lssm-tech/integration.communication-os-runtime/install';\nimport { buildCommunicationOsMcpServer } from '@lssm-tech/app.communicationos-mcp/server';\n\nconst { runtime, mcpServer, close } = await bringUpCommunicationOs({\n  buildMcpServer: buildCommunicationOsMcpServer, // governed allowlist owner\n});\n```\n\nWith no `DATABASE_URL` this stands up an in-process **PgLite** engine (zero\nexternal services). Set `DATABASE_URL` to bind managed Postgres instead. The\ngoverned `communication_os` schema + actor-aware RLS are applied idempotently on\nevery boot, so the call is safe to repeat.\n\n### Environment contract\n\nNo secrets are baked into code — every value is read from the env. All keys are\noptional; a bare environment resolves to a runnable EU self-host on PgLite.\n\n| Env var                          | Default             | Purpose                                              |\n| -------------------------------- | ------------------- | ---------------------------------------------------- |\n| `DATABASE_URL`                   | _(absent → PgLite)_ | Managed Postgres connection string                   |\n| `COMMOS_PGLITE_DATA_DIR`         | _(ephemeral)_       | PgLite on-disk data dir (self-host data survives)    |\n| `COMMOS_APPLY_RLS`               | `true`              | Apply the actor-aware tenant RLS DDL                 |\n| `COMMOS_RESIDENCY_REGION`        | `eu`                | Data residency region (`eu`, `eu_fr`, `self_managed`)|\n| `COMMOS_HOSTING_MODE`            | `self_host`         | Hosting posture (`self_host`, `on_prem`, `saas`)     |\n| `COMMOS_LLM_PROVIDER`            | `mistral`           | Sovereign / local LLM provider id                    |\n| `COMMOS_LLM_BASE_URL`            | _(provider default)_| OpenAI-compatible base URL for a local LLM           |\n| `COMMOS_DATA_RESIDENCY_ENFORCED` | `true`              | Assert residency enforcement                         |\n| `COMMOS_RETENTION_DAYS`          | `365`               | Documented retention window for governed data        |\n| `COMMOS_MCP_NAME` / `_VERSION`   | `communicationos-mcp` / `1.0.0` | MCP gateway identity                     |\n| `MISTRAL_API_KEY`                | _(none)_            | BYOK key for the Mistral binding                     |\n\n### SovereigntyProfile knobs\n\nThe defaults target a **sovereign EU self-host**: EU residency, a sovereign LLM\n(`mistral`, or a `local` endpoint via `COMMOS_LLM_BASE_URL`), RLS on, and a\ndocumented 365-day retention window — mirroring the `SovereigntyProfileModel`\ncontract (`communication-spec/contracts/sovereignty.ts`). Switch to a local\nsovereign model with `COMMOS_LLM_PROVIDER=local` + `COMMOS_LLM_BASE_URL`; the\nslice runs unchanged (no code edit — only config).\n\n## Server-only boundary\n\nThe factory itself is **pure composition** — it imports NO node-only code. The\nnode-only persistence engine (`createDatabaseRuntime` / Postgres) is built by the\ncaller behind the server-only `@lssm-tech/integration.communication-os-persistence/database`\nsubpath and **injected** as `config.persistence`. The package root barrel\ntherefore stays browser-safe (pre-mortem #1). Never re-export the node-only\nengine through this package.\n\n## Exports\n\n- `.` — `createCommunicationOsRuntime`, the runtime/config types, the\n  orchestrator, and the governed audit-descriptor builder (browser-safe).\n- `./runtime` / `./runtime-types` / `./types` / `./approval-send-orchestrator` /\n  `./audit-descriptor` — focused subpaths.\n- `./delivery-routing` — optional persisted delivery preparation. Hosts inject\n  the artifact store and system principal; absent configuration and persistence\n  conflicts fail closed. The surface selects no provider adapter and performs no\n  send.\n- `./install` — **server-only** self-host bring-up (`bringUpCommunicationOs`,\n  `resolveSelfHostConfig`, `createSelfHostReadPort`). Pulls the node-only\n  persistence engine; never re-exported from the root barrel.\n\n## Tests\n\n```bash\nbun test            # full suite (orchestrator + factory + self-host bring-up)\nbun run typecheck   # tsgo --noEmit\n```\n\n`src/install/bring-up.smoke.test.ts` is the AC2.2 smoke test: it brings up\nagainst PgLite (no external services), asserts the governed tables exist, the\nruntime is constructed, and the governed MCP tool allowlist registers (the send\ntool is never exposed). The real-Postgres path runs only when `DATABASE_URL` is\nset and is skipped gracefully otherwise.\n","sourcePath":"packages/integrations/communication-os-runtime/README.md","sourceUrl":"https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/integrations/communication-os-runtime/README.md","blobSha":"c62e5325d08f3a187cea53204526fb8bff506505","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-runtime","runtimes":["node"],"platforms":["server"],"kind":"integration","scope":"Package manifest","canonicalRoute":"/docs/packages/integration.communication-os-runtime/","contextUrl":"/docs/packages/integration.communication-os-runtime.context.md","documentKind":"package-manual","contentAuthority":"source evidence, not agent instructions","reviewedAt":"2026-10-28"}