@lssm/lib.communication-spec 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. package/README.md +201 -0
  2. package/dist/browser/capabilities/comms-ai.capabilities.js +1 -0
  3. package/dist/browser/capabilities/communication-os.capability-ids.js +1 -0
  4. package/dist/browser/capabilities/ecosystem-messaging.capabilities.js +1 -0
  5. package/dist/browser/capabilities/index.js +1 -0
  6. package/dist/browser/commands/comms-ai.commands.js +1 -0
  7. package/dist/browser/commands/index.js +1 -0
  8. package/dist/browser/contracts/agent-communication.js +1 -0
  9. package/dist/browser/contracts/agent-lifecycle-projection.js +1 -0
  10. package/dist/browser/contracts/agent-surface-control.js +1 -0
  11. package/dist/browser/contracts/ai-assistance.operations.js +1 -0
  12. package/dist/browser/contracts/artifact-digest.js +1 -0
  13. package/dist/browser/contracts/canonical-agent-conversation.js +1 -0
  14. package/dist/browser/contracts/channel-preferences.js +1 -0
  15. package/dist/browser/contracts/channel-routing.js +1 -0
  16. package/dist/browser/contracts/collaboration.operations.js +1 -0
  17. package/dist/browser/contracts/customer-live-chat-grant.operations.js +1 -0
  18. package/dist/browser/contracts/delivery-eligibility.js +1 -0
  19. package/dist/browser/contracts/delivery-fallback-eligibility-validation.js +1 -0
  20. package/dist/browser/contracts/delivery-fallback-validation.js +1 -0
  21. package/dist/browser/contracts/delivery-fallback.js +1 -0
  22. package/dist/browser/contracts/delivery-intent-validation.js +1 -0
  23. package/dist/browser/contracts/delivery-intent.js +1 -0
  24. package/dist/browser/contracts/delivery-progress.js +1 -0
  25. package/dist/browser/contracts/discord-community-intelligence.operations.js +1 -0
  26. package/dist/browser/contracts/discord-community.events.js +1 -0
  27. package/dist/browser/contracts/discord-community.models.js +1 -0
  28. package/dist/browser/contracts/discord-community.operations.js +1 -0
  29. package/dist/browser/contracts/ecosystem-attachment.operations.js +1 -0
  30. package/dist/browser/contracts/ecosystem-auth.operations.js +1 -0
  31. package/dist/browser/contracts/ecosystem-binding.operations.js +1 -0
  32. package/dist/browser/contracts/ecosystem-connection-subscription.events.js +1 -0
  33. package/dist/browser/contracts/ecosystem-governed-work-v2.operations.js +1 -0
  34. package/dist/browser/contracts/ecosystem-governed-work.operations.js +1 -0
  35. package/dist/browser/contracts/ecosystem-identity-v3.operations.js +1 -0
  36. package/dist/browser/contracts/ecosystem-identity.operations.js +1 -0
  37. package/dist/browser/contracts/ecosystem-message.operations.js +1 -0
  38. package/dist/browser/contracts/ecosystem-messaging.dtos.js +0 -0
  39. package/dist/browser/contracts/ecosystem-messaging.events.js +1 -0
  40. package/dist/browser/contracts/ecosystem-messaging.models.js +1 -0
  41. package/dist/browser/contracts/ecosystem-navigation-v3.operations.js +1 -0
  42. package/dist/browser/contracts/ecosystem-webhook.operations.js +1 -0
  43. package/dist/browser/contracts/ecosystem-workspace.operations.js +1 -0
  44. package/dist/browser/contracts/enums.js +1 -0
  45. package/dist/browser/contracts/erasure.operations.js +1 -0
  46. package/dist/browser/contracts/events.js +1 -0
  47. package/dist/browser/contracts/index.js +1 -0
  48. package/dist/browser/contracts/ingestion.js +1 -0
  49. package/dist/browser/contracts/ingress-admission-policy.js +1 -0
  50. package/dist/browser/contracts/ingress-admission.js +1 -0
  51. package/dist/browser/contracts/models.js +1 -0
  52. package/dist/browser/contracts/operations.js +1 -0
  53. package/dist/browser/contracts/persistence.js +1 -0
  54. package/dist/browser/contracts/preference-resolution.js +1 -0
  55. package/dist/browser/contracts/query.operations.js +1 -0
  56. package/dist/browser/contracts/sequence-intent.js +1 -0
  57. package/dist/browser/contracts/sovereignty.js +1 -0
  58. package/dist/browser/contracts/support-internal-note.operations.js +1 -0
  59. package/dist/browser/contracts/thread-link-kind.js +1 -0
  60. package/dist/browser/contracts/thread-message.operations.js +1 -0
  61. package/dist/browser/events/index.js +1 -0
  62. package/dist/browser/fixtures/agent-omnichannel-primitives.js +1 -0
  63. package/dist/browser/fixtures/agent-omnichannel.js +1 -0
  64. package/dist/browser/fixtures/gtm-learning-loop-neutral.parts.js +1 -0
  65. package/dist/browser/fixtures/index.js +1 -0
  66. package/dist/browser/fixtures/normalized-ingestion.js +1 -0
  67. package/dist/browser/index.js +1 -0
  68. package/dist/browser/queries/index.js +1 -0
  69. package/dist/browser/types/domain-command.js +0 -0
  70. package/dist/browser/types/index.js +1 -0
  71. package/dist/browser/validation/domain-command.js +1 -0
  72. package/dist/browser/validation/index.js +1 -0
  73. package/dist/capabilities/comms-ai.capabilities.d.ts +72 -0
  74. package/dist/capabilities/comms-ai.capabilities.js +2 -0
  75. package/dist/capabilities/communication-os-capability-boundary.test.d.ts +1 -0
  76. package/dist/capabilities/communication-os.capability-ids.d.ts +39 -0
  77. package/dist/capabilities/communication-os.capability-ids.js +2 -0
  78. package/dist/capabilities/communication-os.capability-ids.test.d.ts +1 -0
  79. package/dist/capabilities/ecosystem-messaging.capabilities.d.ts +9 -0
  80. package/dist/capabilities/ecosystem-messaging.capabilities.js +2 -0
  81. package/dist/capabilities/index.d.ts +4 -0
  82. package/dist/capabilities/index.js +2 -0
  83. package/dist/commands/comms-ai.commands.d.ts +272 -0
  84. package/dist/commands/comms-ai.commands.js +2 -0
  85. package/dist/commands/index.d.ts +10 -0
  86. package/dist/commands/index.js +2 -0
  87. package/dist/contracts/agent-communication.d.ts +108 -0
  88. package/dist/contracts/agent-communication.js +2 -0
  89. package/dist/contracts/agent-communication.test.d.ts +1 -0
  90. package/dist/contracts/agent-lifecycle-projection.d.ts +98 -0
  91. package/dist/contracts/agent-lifecycle-projection.js +2 -0
  92. package/dist/contracts/agent-lifecycle-projection.test.d.ts +1 -0
  93. package/dist/contracts/agent-surface-control.d.ts +210 -0
  94. package/dist/contracts/agent-surface-control.js +2 -0
  95. package/dist/contracts/agent-surface-control.test.d.ts +1 -0
  96. package/dist/contracts/ai-assistance.operations.d.ts +187 -0
  97. package/dist/contracts/ai-assistance.operations.js +2 -0
  98. package/dist/contracts/artifact-digest.d.ts +3 -0
  99. package/dist/contracts/artifact-digest.js +2 -0
  100. package/dist/contracts/canonical-agent-conversation.d.ts +46 -0
  101. package/dist/contracts/canonical-agent-conversation.js +2 -0
  102. package/dist/contracts/canonical-agent-conversation.test.d.ts +1 -0
  103. package/dist/contracts/channel-preferences.d.ts +115 -0
  104. package/dist/contracts/channel-preferences.js +2 -0
  105. package/dist/contracts/channel-routing.d.ts +58 -0
  106. package/dist/contracts/channel-routing.js +2 -0
  107. package/dist/contracts/channel-routing.test.d.ts +1 -0
  108. package/dist/contracts/collaboration.operations.d.ts +315 -0
  109. package/dist/contracts/collaboration.operations.js +2 -0
  110. package/dist/contracts/customer-live-chat-grant.operations.d.ts +132 -0
  111. package/dist/contracts/customer-live-chat-grant.operations.js +2 -0
  112. package/dist/contracts/delivery-contracts.test.d.ts +1 -0
  113. package/dist/contracts/delivery-eligibility.d.ts +126 -0
  114. package/dist/contracts/delivery-eligibility.js +2 -0
  115. package/dist/contracts/delivery-eligibility.test.d.ts +1 -0
  116. package/dist/contracts/delivery-fallback-eligibility-validation.d.ts +6 -0
  117. package/dist/contracts/delivery-fallback-eligibility-validation.js +2 -0
  118. package/dist/contracts/delivery-fallback-validation.d.ts +24 -0
  119. package/dist/contracts/delivery-fallback-validation.js +2 -0
  120. package/dist/contracts/delivery-fallback.d.ts +117 -0
  121. package/dist/contracts/delivery-fallback.js +2 -0
  122. package/dist/contracts/delivery-intent-validation.d.ts +13 -0
  123. package/dist/contracts/delivery-intent-validation.js +2 -0
  124. package/dist/contracts/delivery-intent.d.ts +137 -0
  125. package/dist/contracts/delivery-intent.js +2 -0
  126. package/dist/contracts/delivery-progress.d.ts +61 -0
  127. package/dist/contracts/delivery-progress.js +2 -0
  128. package/dist/contracts/discord-community-intelligence.operations.d.ts +405 -0
  129. package/dist/contracts/discord-community-intelligence.operations.js +2 -0
  130. package/dist/contracts/discord-community.events.d.ts +162 -0
  131. package/dist/contracts/discord-community.events.js +2 -0
  132. package/dist/contracts/discord-community.models.d.ts +167 -0
  133. package/dist/contracts/discord-community.models.js +2 -0
  134. package/dist/contracts/discord-community.operations.d.ts +663 -0
  135. package/dist/contracts/discord-community.operations.js +2 -0
  136. package/dist/contracts/discord-community.test.d.ts +1 -0
  137. package/dist/contracts/ecosystem-attachment.operations.d.ts +129 -0
  138. package/dist/contracts/ecosystem-attachment.operations.js +2 -0
  139. package/dist/contracts/ecosystem-auth.operations.d.ts +345 -0
  140. package/dist/contracts/ecosystem-auth.operations.js +2 -0
  141. package/dist/contracts/ecosystem-binding.operations.d.ts +231 -0
  142. package/dist/contracts/ecosystem-binding.operations.js +2 -0
  143. package/dist/contracts/ecosystem-connection-subscription.events.d.ts +332 -0
  144. package/dist/contracts/ecosystem-connection-subscription.events.js +2 -0
  145. package/dist/contracts/ecosystem-governed-work-v2.operations.d.ts +234 -0
  146. package/dist/contracts/ecosystem-governed-work-v2.operations.js +2 -0
  147. package/dist/contracts/ecosystem-governed-work.operations.d.ts +265 -0
  148. package/dist/contracts/ecosystem-governed-work.operations.js +2 -0
  149. package/dist/contracts/ecosystem-governed-work.operations.test.d.ts +1 -0
  150. package/dist/contracts/ecosystem-identity-v3.operations.d.ts +65 -0
  151. package/dist/contracts/ecosystem-identity-v3.operations.js +2 -0
  152. package/dist/contracts/ecosystem-identity.operations.d.ts +174 -0
  153. package/dist/contracts/ecosystem-identity.operations.js +2 -0
  154. package/dist/contracts/ecosystem-identity.operations.test.d.ts +1 -0
  155. package/dist/contracts/ecosystem-message.operations.d.ts +1092 -0
  156. package/dist/contracts/ecosystem-message.operations.js +2 -0
  157. package/dist/contracts/ecosystem-messaging.dtos.d.ts +68 -0
  158. package/dist/contracts/ecosystem-messaging.dtos.js +1 -0
  159. package/dist/contracts/ecosystem-messaging.dtos.test.d.ts +1 -0
  160. package/dist/contracts/ecosystem-messaging.events.d.ts +608 -0
  161. package/dist/contracts/ecosystem-messaging.events.js +2 -0
  162. package/dist/contracts/ecosystem-messaging.models.d.ts +386 -0
  163. package/dist/contracts/ecosystem-messaging.models.js +2 -0
  164. package/dist/contracts/ecosystem-messaging.test.d.ts +1 -0
  165. package/dist/contracts/ecosystem-navigation-v3.operations.d.ts +149 -0
  166. package/dist/contracts/ecosystem-navigation-v3.operations.js +2 -0
  167. package/dist/contracts/ecosystem-webhook.operations.d.ts +187 -0
  168. package/dist/contracts/ecosystem-webhook.operations.js +2 -0
  169. package/dist/contracts/ecosystem-workspace.operations.d.ts +590 -0
  170. package/dist/contracts/ecosystem-workspace.operations.js +2 -0
  171. package/dist/contracts/enums.d.ts +9 -0
  172. package/dist/contracts/enums.js +2 -0
  173. package/dist/contracts/erasure.operations.d.ts +114 -0
  174. package/dist/contracts/erasure.operations.js +2 -0
  175. package/dist/contracts/erasure.test.d.ts +1 -0
  176. package/dist/contracts/events.d.ts +174 -0
  177. package/dist/contracts/events.js +2 -0
  178. package/dist/contracts/index.d.ts +43 -0
  179. package/dist/contracts/index.js +2 -0
  180. package/dist/contracts/ingestion.d.ts +169 -0
  181. package/dist/contracts/ingestion.js +2 -0
  182. package/dist/contracts/ingress-admission-policy.d.ts +14 -0
  183. package/dist/contracts/ingress-admission-policy.js +2 -0
  184. package/dist/contracts/ingress-admission.d.ts +184 -0
  185. package/dist/contracts/ingress-admission.js +2 -0
  186. package/dist/contracts/ingress-admission.test.d.ts +1 -0
  187. package/dist/contracts/models.d.ts +851 -0
  188. package/dist/contracts/models.js +2 -0
  189. package/dist/contracts/operations.d.ts +5 -0
  190. package/dist/contracts/operations.js +2 -0
  191. package/dist/contracts/persistence.d.ts +353 -0
  192. package/dist/contracts/persistence.js +2 -0
  193. package/dist/contracts/persistence.test.d.ts +1 -0
  194. package/dist/contracts/preference-resolution.d.ts +154 -0
  195. package/dist/contracts/preference-resolution.js +2 -0
  196. package/dist/contracts/preference-resolution.test.d.ts +1 -0
  197. package/dist/contracts/query.operations.d.ts +600 -0
  198. package/dist/contracts/query.operations.js +2 -0
  199. package/dist/contracts/sequence-intent.d.ts +103 -0
  200. package/dist/contracts/sequence-intent.js +2 -0
  201. package/dist/contracts/sequence-intent.test.d.ts +1 -0
  202. package/dist/contracts/sovereignty.d.ts +164 -0
  203. package/dist/contracts/sovereignty.js +2 -0
  204. package/dist/contracts/support-internal-note.operations.d.ts +309 -0
  205. package/dist/contracts/support-internal-note.operations.js +2 -0
  206. package/dist/contracts/support-internal-note.operations.test.d.ts +1 -0
  207. package/dist/contracts/thread-link-kind.d.ts +20 -0
  208. package/dist/contracts/thread-link-kind.js +2 -0
  209. package/dist/contracts/thread-message.operations.d.ts +485 -0
  210. package/dist/contracts/thread-message.operations.js +2 -0
  211. package/dist/events/index.d.ts +4 -0
  212. package/dist/events/index.js +2 -0
  213. package/dist/fixtures/agent-omnichannel-primitives.d.ts +240 -0
  214. package/dist/fixtures/agent-omnichannel-primitives.js +2 -0
  215. package/dist/fixtures/agent-omnichannel.d.ts +682 -0
  216. package/dist/fixtures/agent-omnichannel.js +2 -0
  217. package/dist/fixtures/agent-omnichannel.test.d.ts +1 -0
  218. package/dist/fixtures/gtm-learning-loop-neutral.parts.d.ts +20 -0
  219. package/dist/fixtures/gtm-learning-loop-neutral.parts.js +2 -0
  220. package/dist/fixtures/index.d.ts +3 -0
  221. package/dist/fixtures/index.js +2 -0
  222. package/dist/fixtures/normalized-ingestion.d.ts +102 -0
  223. package/dist/fixtures/normalized-ingestion.js +2 -0
  224. package/dist/fixtures/normalized-ingestion.test.d.ts +1 -0
  225. package/dist/index.d.ts +7 -0
  226. package/dist/index.js +2 -0
  227. package/dist/node/capabilities/comms-ai.capabilities.js +1 -0
  228. package/dist/node/capabilities/communication-os.capability-ids.js +1 -0
  229. package/dist/node/capabilities/ecosystem-messaging.capabilities.js +1 -0
  230. package/dist/node/capabilities/index.js +1 -0
  231. package/dist/node/commands/comms-ai.commands.js +1 -0
  232. package/dist/node/commands/index.js +1 -0
  233. package/dist/node/contracts/agent-communication.js +1 -0
  234. package/dist/node/contracts/agent-lifecycle-projection.js +1 -0
  235. package/dist/node/contracts/agent-surface-control.js +1 -0
  236. package/dist/node/contracts/ai-assistance.operations.js +1 -0
  237. package/dist/node/contracts/artifact-digest.js +1 -0
  238. package/dist/node/contracts/canonical-agent-conversation.js +1 -0
  239. package/dist/node/contracts/channel-preferences.js +1 -0
  240. package/dist/node/contracts/channel-routing.js +1 -0
  241. package/dist/node/contracts/collaboration.operations.js +1 -0
  242. package/dist/node/contracts/customer-live-chat-grant.operations.js +1 -0
  243. package/dist/node/contracts/delivery-eligibility.js +1 -0
  244. package/dist/node/contracts/delivery-fallback-eligibility-validation.js +1 -0
  245. package/dist/node/contracts/delivery-fallback-validation.js +1 -0
  246. package/dist/node/contracts/delivery-fallback.js +1 -0
  247. package/dist/node/contracts/delivery-intent-validation.js +1 -0
  248. package/dist/node/contracts/delivery-intent.js +1 -0
  249. package/dist/node/contracts/delivery-progress.js +1 -0
  250. package/dist/node/contracts/discord-community-intelligence.operations.js +1 -0
  251. package/dist/node/contracts/discord-community.events.js +1 -0
  252. package/dist/node/contracts/discord-community.models.js +1 -0
  253. package/dist/node/contracts/discord-community.operations.js +1 -0
  254. package/dist/node/contracts/ecosystem-attachment.operations.js +1 -0
  255. package/dist/node/contracts/ecosystem-auth.operations.js +1 -0
  256. package/dist/node/contracts/ecosystem-binding.operations.js +1 -0
  257. package/dist/node/contracts/ecosystem-connection-subscription.events.js +1 -0
  258. package/dist/node/contracts/ecosystem-governed-work-v2.operations.js +1 -0
  259. package/dist/node/contracts/ecosystem-governed-work.operations.js +1 -0
  260. package/dist/node/contracts/ecosystem-identity-v3.operations.js +1 -0
  261. package/dist/node/contracts/ecosystem-identity.operations.js +1 -0
  262. package/dist/node/contracts/ecosystem-message.operations.js +1 -0
  263. package/dist/node/contracts/ecosystem-messaging.dtos.js +0 -0
  264. package/dist/node/contracts/ecosystem-messaging.events.js +1 -0
  265. package/dist/node/contracts/ecosystem-messaging.models.js +1 -0
  266. package/dist/node/contracts/ecosystem-navigation-v3.operations.js +1 -0
  267. package/dist/node/contracts/ecosystem-webhook.operations.js +1 -0
  268. package/dist/node/contracts/ecosystem-workspace.operations.js +1 -0
  269. package/dist/node/contracts/enums.js +1 -0
  270. package/dist/node/contracts/erasure.operations.js +1 -0
  271. package/dist/node/contracts/events.js +1 -0
  272. package/dist/node/contracts/index.js +1 -0
  273. package/dist/node/contracts/ingestion.js +1 -0
  274. package/dist/node/contracts/ingress-admission-policy.js +1 -0
  275. package/dist/node/contracts/ingress-admission.js +1 -0
  276. package/dist/node/contracts/models.js +1 -0
  277. package/dist/node/contracts/operations.js +1 -0
  278. package/dist/node/contracts/persistence.js +1 -0
  279. package/dist/node/contracts/preference-resolution.js +1 -0
  280. package/dist/node/contracts/query.operations.js +1 -0
  281. package/dist/node/contracts/sequence-intent.js +1 -0
  282. package/dist/node/contracts/sovereignty.js +1 -0
  283. package/dist/node/contracts/support-internal-note.operations.js +1 -0
  284. package/dist/node/contracts/thread-link-kind.js +1 -0
  285. package/dist/node/contracts/thread-message.operations.js +1 -0
  286. package/dist/node/events/index.js +1 -0
  287. package/dist/node/fixtures/agent-omnichannel-primitives.js +1 -0
  288. package/dist/node/fixtures/agent-omnichannel.js +1 -0
  289. package/dist/node/fixtures/gtm-learning-loop-neutral.parts.js +1 -0
  290. package/dist/node/fixtures/index.js +1 -0
  291. package/dist/node/fixtures/normalized-ingestion.js +1 -0
  292. package/dist/node/index.js +1 -0
  293. package/dist/node/queries/index.js +1 -0
  294. package/dist/node/types/domain-command.js +0 -0
  295. package/dist/node/types/index.js +1 -0
  296. package/dist/node/validation/domain-command.js +1 -0
  297. package/dist/node/validation/index.js +1 -0
  298. package/dist/package-exports.test.d.ts +1 -0
  299. package/dist/queries/index.d.ts +4 -0
  300. package/dist/queries/index.js +2 -0
  301. package/dist/types/domain-command.d.ts +54 -0
  302. package/dist/types/domain-command.js +1 -0
  303. package/dist/types/index.d.ts +3 -0
  304. package/dist/types/index.js +2 -0
  305. package/dist/validation/domain-command.d.ts +3 -0
  306. package/dist/validation/domain-command.js +2 -0
  307. package/dist/validation/index.d.ts +53 -0
  308. package/dist/validation/index.js +2 -0
  309. package/package.json +1227 -0
@@ -0,0 +1 @@
1
+ import{defineQuery as V,docId as Y}from"@lssm/lib.contracts-spec";import{defineSchemaModel as A}from"@lssm/lib.schema";import{defineCommand as N,defineQuery as _,docId as j}from"@lssm/lib.contracts-spec";import{defineEnum as B,defineSchemaModel as o,ScalarTypeEnum as t}from"@lssm/lib.schema";import{defineEnum as n,defineSchemaModel as i,ScalarTypeEnum as e}from"@lssm/lib.schema";var D=n("CommunicationSpaceKind",["personal","organization"]),k=n("CommunicationPrincipalKind",["human","agent","system"]),T=n("CommunicationConnectionPlacement",["device","managed_cloud","self_hosted"]),ne=n("CommunicationConnectionNetwork",["email","sms","slack","teams","telegram","whatsapp","discord","matrix"]),E=n("CommunicationEncryptionMode",["client_encrypted","governed_server_indexable"]),R=n("CommunicationMembershipState",["active","revoked"]),oe=n("CommunicationReceiptKind",["delivered","read"]),M=n("CommunicationConnectionHealth",["connecting","healthy","degraded","offline","revoked"]),h={id:"communication-os.ecosystem-messaging.v2",title:"CommunicationOS ecosystem messaging contracts",body:"Versioned, workspace-scoped contracts for personal and organization spaces, rooms, human and agent membership, hybrid channel connections, synchronized messages, and revocable outbound authority. CommunicationSpec remains canonical; provider protocols are adapters. V1 thread and draft-only operations remain unchanged.",kind:"reference",route:"/docs/communication-os/ecosystem-messaging-v2",visibility:"public"},p=i({name:"CommunicationScopeV2",description:"Strict tenant, workspace, and space boundary for messaging state",fields:{tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1}}}),C=i({name:"CommunicationSpaceV2",description:"Personal or organization messaging boundary under one account",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},kind:{type:D,isOptional:!1},encryptionMode:{type:E,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),ae=i({name:"CommunicationPrincipalV2",description:"Auditable human, agent, or system identity",fields:{id:{type:e.String_unsecure(),isOptional:!1},kind:{type:k,isOptional:!1},displayName:{type:e.String_unsecure(),isOptional:!1},ownerPrincipalId:{type:e.String_unsecure(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}}),u=i({name:"CommunicationRoomV2",description:"Room or direct-message projection inside one space",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!0},roomKind:{type:e.String_unsecure(),isOptional:!1},connectionIds:{type:e.String_unsecure(),isArray:!0,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),se=i({name:"CommunicationRoomMembershipV2",description:"Revocable principal membership and room-scoped capabilities",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},roomId:{type:e.String_unsecure(),isOptional:!1},principalId:{type:e.String_unsecure(),isOptional:!1},role:{type:e.String_unsecure(),isOptional:!1},state:{type:R,isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},expiresAt:{type:e.DateTime(),isOptional:!0},revokedAt:{type:e.DateTime(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}}),re=i({name:"CommunicationChannelConnectionV2",description:"Credential-reference-only local, managed, or self-hosted channel connection",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},network:{type:e.String_unsecure(),isOptional:!1},placement:{type:T,isOptional:!1},externalAccountRef:{type:e.String_unsecure(),isOptional:!1},credentialRef:{type:e.String_unsecure(),isOptional:!1},health:{type:M,isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),L=i({name:"CommunicationAttachmentV2",description:"Public-safe metadata for an opaque, scope-bound message attachment",fields:{id:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},mimeType:{type:e.String_unsecure(),isOptional:!1},sizeBytes:{type:e.Int_unsecure(),isOptional:!1},sha256:{type:e.String_unsecure(),isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),ce=i({name:"CommunicationMessageV2",description:"Canonical room message with explicit author and encryption posture",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},roomId:{type:e.String_unsecure(),isOptional:!1},authorPrincipalId:{type:e.String_unsecure(),isOptional:!1},connectionId:{type:e.String_unsecure(),isOptional:!0},externalMessageId:{type:e.String_unsecure(),isOptional:!0},body:{type:e.String_unsecure(),isOptional:!0},encryptedEnvelope:{type:e.JSONObject(),isOptional:!0},attachments:{type:L,isArray:!0,isOptional:!0},replyToMessageId:{type:e.String_unsecure(),isOptional:!0},revision:{type:e.Int_unsecure(),isOptional:!1},deletedAt:{type:e.DateTime(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),pe=i({name:"CommunicationAuthorityGrantV2",description:"Explicit, revocable messaging authority granted to one principal",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},roomId:{type:e.String_unsecure(),isOptional:!0},connectionId:{type:e.String_unsecure(),isOptional:!0},principalId:{type:e.String_unsecure(),isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},grantedBy:{type:e.String_unsecure(),isOptional:!1},expiresAt:{type:e.DateTime(),isOptional:!0},revokedAt:{type:e.DateTime(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}});var m=["platform.communication-os"],l={id:"communication-os.identity-resolution.v1",title:"CommunicationOS identity resolution contracts",body:"Scope-isolated account and contact projections plus a human-reviewed identity merge or rejection lifecycle. Provider credentials and raw identity evidence never enter public outputs.",kind:"reference",route:"/docs/communication-os/identity-resolution-v1",visibility:"public"},d=[j(l.id)],S=B("CommunicationIdentityReviewStatus",["pending","merged","rejected"]),y=o({name:"CommunicationAccountV2",description:"Public-safe provider account projection in one authorized space",fields:{id:{type:t.String_unsecure(),isOptional:!1},network:{type:t.String_unsecure(),isOptional:!1},externalAccountRef:{type:t.String_unsecure(),isOptional:!1},placement:{type:t.String_unsecure(),isOptional:!1},health:{type:t.String_unsecure(),isOptional:!1},createdAt:{type:t.DateTime(),isOptional:!1},updatedAt:{type:t.DateTime(),isOptional:!1}}}),f=o({name:"CommunicationContactV2",description:"Participant projection derived from persisted scoped messages",fields:{principalId:{type:t.String_unsecure(),isOptional:!1},displayName:{type:t.String_unsecure(),isOptional:!0},roomIds:{type:t.String_unsecure(),isArray:!0,isOptional:!1},messageCount:{type:t.Int_unsecure(),isOptional:!1},lastSeenAt:{type:t.DateTime(),isOptional:!1}}}),P=o({name:"ListCommunicationAccountsV2Output",fields:{accounts:{type:y,isArray:!0,isOptional:!1}}}),K=o({name:"ListCommunicationContactsV2Output",fields:{contacts:{type:f,isArray:!0,isOptional:!1}}}),ye=_({meta:{key:"communication.account.list",version:"2.0.0",stability:"experimental",owners:[...m],tags:["communication","account","identity"],description:"List public-safe provider accounts in one authorized space",goal:"Expose account readiness without leaking credential references",context:"Authority is derived by the server from the authenticated scope",docId:d},io:{input:p,output:P},policy:{auth:"user"}}),fe=_({meta:{key:"communication.contact.list",version:"2.0.0",stability:"experimental",owners:[...m],tags:["communication","contact","identity"],description:"List persisted participant projections in one authorized space",goal:"Provide a real scoped contact index without provider identity leakage",context:"Contacts are replayable projections, never transient UI inference",docId:d},io:{input:p,output:K},policy:{auth:"user"}}),ge=N({meta:{key:"communication.identity.decide",version:"1.0.0",stability:"experimental",owners:[...m],tags:["communication","identity","review","governance"],description:"Merge or reject one pending identity review",goal:"Require an auditable human decision before cross-channel identity linkage",context:"Only authorized managers may decide and each review is single-transition",docId:d},io:{input:o({name:"DecideCommunicationIdentityV1Input",fields:{reviewId:{type:t.String_unsecure(),isOptional:!1},decision:{type:S,isOptional:!1},reason:{type:t.String_unsecure(),isOptional:!0}}}),output:o({name:"DecideCommunicationIdentityV1Output",fields:{reviewId:{type:t.String_unsecure(),isOptional:!1},status:{type:S,isOptional:!1},revision:{type:t.Int_unsecure(),isOptional:!1}}})},policy:{auth:"admin"}});import{defineCommand as z,defineQuery as v,docId as Q}from"@lssm/lib.contracts-spec";import{defineEnum as q,defineSchemaModel as s,ScalarTypeEnum as I}from"@lssm/lib.schema";var F=["platform.communication-os"],G=[Q(h.id)],g={VALIDATION_FAILED:{description:"The room intent or replay key is invalid.",http:422,when:"The request is malformed, blank, or exceeds a declared limit."},FORBIDDEN:{description:"The authenticated principal cannot access this scope.",http:403,when:"The server-derived membership or room authority is absent."},SERVICE_UNAVAILABLE:{description:"The scoped messaging projection is unavailable.",http:503,when:"The durable journal cannot safely answer the operation."}},U=q("CommunicationRoomKindV3",["direct","group"]),a=s({name:"CommunicationNavigationV3Input",fields:{}}),W=s({name:"CreateCommunicationRoomV3Input",fields:{name:{type:I.String_unsecure(),isOptional:!1},roomKind:{type:U,isOptional:!1},idempotencyKey:{type:I.String_unsecure(),isOptional:!1}}}),H=s({name:"ListCommunicationSpacesV3Output",fields:{spaces:{type:C,isArray:!0,isOptional:!1}}}),J=s({name:"ListCommunicationRoomsV3Output",fields:{rooms:{type:u,isArray:!0,isOptional:!1}}}),_e=v({meta:O("communication.space.list","List server-authorized messaging spaces","Drive space switching without accepting browser scope authority"),io:{input:a,output:H,errors:g},policy:{auth:"user"}}),Ie=v({meta:O("communication.room.list","List rooms in the server-selected messaging space","Drive room navigation from one authenticated journal partition"),io:{input:a,output:J,errors:g},policy:{auth:"user"}}),ve=z({meta:O("communication.room.create","Create a room from replay-safe client intent","Keep scope, principal, identifiers, and timestamps server-owned"),io:{input:W,output:u,errors:g},policy:{auth:"user"}});function O(r,c,w){return{key:r,version:"3.0.0",stability:"experimental",owners:[...F],tags:["communication","navigation","authority","server-scope"],description:c,goal:w,context:"The runtime derives tenant, workspace, space, and principal from the authenticated server context.",docId:G}}var X=["platform.communication-os"],Z=[Y(l.id)],x={FORBIDDEN:{description:"The authenticated principal cannot inspect this scope.",http:403,when:"The server-derived workspace or space membership is absent."},SERVICE_UNAVAILABLE:{description:"The scoped identity projection is unavailable.",http:503,when:"The durable projection cannot safely answer the operation."}},ee=A({name:"ListCommunicationAccountsV3Output",fields:{accounts:{type:y,isArray:!0,isOptional:!1}}}),te=A({name:"ListCommunicationContactsV3Output",fields:{contacts:{type:f,isArray:!0,isOptional:!1}}}),De=V({meta:b("communication.account.list","List public-safe provider accounts in the authenticated space"),io:{input:a,output:ee,errors:x},policy:{auth:"user"}}),ke=V({meta:b("communication.contact.list","List persisted contacts in the authenticated space"),io:{input:a,output:te,errors:x},policy:{auth:"user"}});function b(r,c){return{key:r,version:"3.0.0",stability:"experimental",owners:[...X],tags:["communication","identity","authority","server-scope"],description:c,goal:"Remove client-supplied tenant and space authority from identity reads",context:"The runtime derives tenant, workspace, space, and principal from the authenticated server context.",docId:Z}}export{De as ListCommunicationAccountsV3Query,ke as ListCommunicationContactsV3Query};
@@ -0,0 +1 @@
1
+ import{defineCommand as O,defineQuery as p,docId as S}from"@lssm/lib.contracts-spec";import{defineEnum as _,defineSchemaModel as o,ScalarTypeEnum as t}from"@lssm/lib.schema";import{defineEnum as n,defineSchemaModel as i,ScalarTypeEnum as e}from"@lssm/lib.schema";var u=n("CommunicationSpaceKind",["personal","organization"]),l=n("CommunicationPrincipalKind",["human","agent","system"]),m=n("CommunicationConnectionPlacement",["device","managed_cloud","self_hosted"]),A=n("CommunicationConnectionNetwork",["email","sms","slack","teams","telegram","whatsapp","discord","matrix"]),d=n("CommunicationEncryptionMode",["client_encrypted","governed_server_indexable"]),y=n("CommunicationMembershipState",["active","revoked"]),k=n("CommunicationReceiptKind",["delivered","read"]),f=n("CommunicationConnectionHealth",["connecting","healthy","degraded","offline","revoked"]),V={id:"communication-os.ecosystem-messaging.v2",title:"CommunicationOS ecosystem messaging contracts",body:"Versioned, workspace-scoped contracts for personal and organization spaces, rooms, human and agent membership, hybrid channel connections, synchronized messages, and revocable outbound authority. CommunicationSpec remains canonical; provider protocols are adapters. V1 thread and draft-only operations remain unchanged.",kind:"reference",route:"/docs/communication-os/ecosystem-messaging-v2",visibility:"public"},a=i({name:"CommunicationScopeV2",description:"Strict tenant, workspace, and space boundary for messaging state",fields:{tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1}}}),D=i({name:"CommunicationSpaceV2",description:"Personal or organization messaging boundary under one account",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},kind:{type:u,isOptional:!1},encryptionMode:{type:d,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),w=i({name:"CommunicationPrincipalV2",description:"Auditable human, agent, or system identity",fields:{id:{type:e.String_unsecure(),isOptional:!1},kind:{type:l,isOptional:!1},displayName:{type:e.String_unsecure(),isOptional:!1},ownerPrincipalId:{type:e.String_unsecure(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}}),M=i({name:"CommunicationRoomV2",description:"Room or direct-message projection inside one space",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!0},roomKind:{type:e.String_unsecure(),isOptional:!1},connectionIds:{type:e.String_unsecure(),isArray:!0,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),T=i({name:"CommunicationRoomMembershipV2",description:"Revocable principal membership and room-scoped capabilities",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},roomId:{type:e.String_unsecure(),isOptional:!1},principalId:{type:e.String_unsecure(),isOptional:!1},role:{type:e.String_unsecure(),isOptional:!1},state:{type:y,isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},expiresAt:{type:e.DateTime(),isOptional:!0},revokedAt:{type:e.DateTime(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}}),E=i({name:"CommunicationChannelConnectionV2",description:"Credential-reference-only local, managed, or self-hosted channel connection",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},network:{type:e.String_unsecure(),isOptional:!1},placement:{type:m,isOptional:!1},externalAccountRef:{type:e.String_unsecure(),isOptional:!1},credentialRef:{type:e.String_unsecure(),isOptional:!1},health:{type:f,isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),g=i({name:"CommunicationAttachmentV2",description:"Public-safe metadata for an opaque, scope-bound message attachment",fields:{id:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},mimeType:{type:e.String_unsecure(),isOptional:!1},sizeBytes:{type:e.Int_unsecure(),isOptional:!1},sha256:{type:e.String_unsecure(),isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),R=i({name:"CommunicationMessageV2",description:"Canonical room message with explicit author and encryption posture",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},roomId:{type:e.String_unsecure(),isOptional:!1},authorPrincipalId:{type:e.String_unsecure(),isOptional:!1},connectionId:{type:e.String_unsecure(),isOptional:!0},externalMessageId:{type:e.String_unsecure(),isOptional:!0},body:{type:e.String_unsecure(),isOptional:!0},encryptedEnvelope:{type:e.JSONObject(),isOptional:!0},attachments:{type:g,isArray:!0,isOptional:!0},replyToMessageId:{type:e.String_unsecure(),isOptional:!0},revision:{type:e.Int_unsecure(),isOptional:!1},deletedAt:{type:e.DateTime(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),P=i({name:"CommunicationAuthorityGrantV2",description:"Explicit, revocable messaging authority granted to one principal",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},roomId:{type:e.String_unsecure(),isOptional:!0},connectionId:{type:e.String_unsecure(),isOptional:!0},principalId:{type:e.String_unsecure(),isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},grantedBy:{type:e.String_unsecure(),isOptional:!1},expiresAt:{type:e.DateTime(),isOptional:!0},revokedAt:{type:e.DateTime(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}});var s=["platform.communication-os"],C={id:"communication-os.identity-resolution.v1",title:"CommunicationOS identity resolution contracts",body:"Scope-isolated account and contact projections plus a human-reviewed identity merge or rejection lifecycle. Provider credentials and raw identity evidence never enter public outputs.",kind:"reference",route:"/docs/communication-os/identity-resolution-v1",visibility:"public"},r=[S(C.id)],c=_("CommunicationIdentityReviewStatus",["pending","merged","rejected"]),h=o({name:"CommunicationAccountV2",description:"Public-safe provider account projection in one authorized space",fields:{id:{type:t.String_unsecure(),isOptional:!1},network:{type:t.String_unsecure(),isOptional:!1},externalAccountRef:{type:t.String_unsecure(),isOptional:!1},placement:{type:t.String_unsecure(),isOptional:!1},health:{type:t.String_unsecure(),isOptional:!1},createdAt:{type:t.DateTime(),isOptional:!1},updatedAt:{type:t.DateTime(),isOptional:!1}}}),I=o({name:"CommunicationContactV2",description:"Participant projection derived from persisted scoped messages",fields:{principalId:{type:t.String_unsecure(),isOptional:!1},displayName:{type:t.String_unsecure(),isOptional:!0},roomIds:{type:t.String_unsecure(),isArray:!0,isOptional:!1},messageCount:{type:t.Int_unsecure(),isOptional:!1},lastSeenAt:{type:t.DateTime(),isOptional:!1}}}),v=o({name:"ListCommunicationAccountsV2Output",fields:{accounts:{type:h,isArray:!0,isOptional:!1}}}),x=o({name:"ListCommunicationContactsV2Output",fields:{contacts:{type:I,isArray:!0,isOptional:!1}}}),K=p({meta:{key:"communication.account.list",version:"2.0.0",stability:"experimental",owners:[...s],tags:["communication","account","identity"],description:"List public-safe provider accounts in one authorized space",goal:"Expose account readiness without leaking credential references",context:"Authority is derived by the server from the authenticated scope",docId:r},io:{input:a,output:v},policy:{auth:"user"}}),N=p({meta:{key:"communication.contact.list",version:"2.0.0",stability:"experimental",owners:[...s],tags:["communication","contact","identity"],description:"List persisted participant projections in one authorized space",goal:"Provide a real scoped contact index without provider identity leakage",context:"Contacts are replayable projections, never transient UI inference",docId:r},io:{input:a,output:x},policy:{auth:"user"}}),Q=O({meta:{key:"communication.identity.decide",version:"1.0.0",stability:"experimental",owners:[...s],tags:["communication","identity","review","governance"],description:"Merge or reject one pending identity review",goal:"Require an auditable human decision before cross-channel identity linkage",context:"Only authorized managers may decide and each review is single-transition",docId:r},io:{input:o({name:"DecideCommunicationIdentityV1Input",fields:{reviewId:{type:t.String_unsecure(),isOptional:!1},decision:{type:c,isOptional:!1},reason:{type:t.String_unsecure(),isOptional:!0}}}),output:o({name:"DecideCommunicationIdentityV1Output",fields:{reviewId:{type:t.String_unsecure(),isOptional:!1},status:{type:c,isOptional:!1},revision:{type:t.Int_unsecure(),isOptional:!1}}})},policy:{auth:"admin"}});export{h as CommunicationAccountV2Model,I as CommunicationContactV2Model,C as CommunicationIdentityDocBlock,c as CommunicationIdentityReviewStatusEnum,Q as DecideCommunicationIdentityV1Command,K as ListCommunicationAccountsV2Query,N as ListCommunicationContactsV2Query};
@@ -0,0 +1 @@
1
+ import{defineCommand as c,defineQuery as y,docId as b}from"@lssm/lib.contracts-spec";import{defineSchemaModel as s,ScalarTypeEnum as t}from"@lssm/lib.schema";import{defineEnum as o,defineSchemaModel as n,ScalarTypeEnum as e}from"@lssm/lib.schema";var h=o("CommunicationSpaceKind",["personal","organization"]),S=o("CommunicationPrincipalKind",["human","agent","system"]),_=o("CommunicationConnectionPlacement",["device","managed_cloud","self_hosted"]),V=o("CommunicationConnectionNetwork",["email","sms","slack","teams","telegram","whatsapp","discord","matrix"]),I=o("CommunicationEncryptionMode",["client_encrypted","governed_server_indexable"]),C=o("CommunicationMembershipState",["active","revoked"]),p=o("CommunicationReceiptKind",["delivered","read"]),v=o("CommunicationConnectionHealth",["connecting","healthy","degraded","offline","revoked"]),u={id:"communication-os.ecosystem-messaging.v2",title:"CommunicationOS ecosystem messaging contracts",body:"Versioned, workspace-scoped contracts for personal and organization spaces, rooms, human and agent membership, hybrid channel connections, synchronized messages, and revocable outbound authority. CommunicationSpec remains canonical; provider protocols are adapters. V1 thread and draft-only operations remain unchanged.",kind:"reference",route:"/docs/communication-os/ecosystem-messaging-v2",visibility:"public"},T=n({name:"CommunicationScopeV2",description:"Strict tenant, workspace, and space boundary for messaging state",fields:{tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1}}}),E=n({name:"CommunicationSpaceV2",description:"Personal or organization messaging boundary under one account",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},kind:{type:h,isOptional:!1},encryptionMode:{type:I,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),R=n({name:"CommunicationPrincipalV2",description:"Auditable human, agent, or system identity",fields:{id:{type:e.String_unsecure(),isOptional:!1},kind:{type:S,isOptional:!1},displayName:{type:e.String_unsecure(),isOptional:!1},ownerPrincipalId:{type:e.String_unsecure(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}}),D=n({name:"CommunicationRoomV2",description:"Room or direct-message projection inside one space",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!0},roomKind:{type:e.String_unsecure(),isOptional:!1},connectionIds:{type:e.String_unsecure(),isArray:!0,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),N=n({name:"CommunicationRoomMembershipV2",description:"Revocable principal membership and room-scoped capabilities",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},roomId:{type:e.String_unsecure(),isOptional:!1},principalId:{type:e.String_unsecure(),isOptional:!1},role:{type:e.String_unsecure(),isOptional:!1},state:{type:C,isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},expiresAt:{type:e.DateTime(),isOptional:!0},revokedAt:{type:e.DateTime(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}}),P=n({name:"CommunicationChannelConnectionV2",description:"Credential-reference-only local, managed, or self-hosted channel connection",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},network:{type:e.String_unsecure(),isOptional:!1},placement:{type:_,isOptional:!1},externalAccountRef:{type:e.String_unsecure(),isOptional:!1},credentialRef:{type:e.String_unsecure(),isOptional:!1},health:{type:v,isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),x=n({name:"CommunicationAttachmentV2",description:"Public-safe metadata for an opaque, scope-bound message attachment",fields:{id:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},mimeType:{type:e.String_unsecure(),isOptional:!1},sizeBytes:{type:e.Int_unsecure(),isOptional:!1},sha256:{type:e.String_unsecure(),isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),r=n({name:"CommunicationMessageV2",description:"Canonical room message with explicit author and encryption posture",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},roomId:{type:e.String_unsecure(),isOptional:!1},authorPrincipalId:{type:e.String_unsecure(),isOptional:!1},connectionId:{type:e.String_unsecure(),isOptional:!0},externalMessageId:{type:e.String_unsecure(),isOptional:!0},body:{type:e.String_unsecure(),isOptional:!0},encryptedEnvelope:{type:e.JSONObject(),isOptional:!0},attachments:{type:x,isArray:!0,isOptional:!0},replyToMessageId:{type:e.String_unsecure(),isOptional:!0},revision:{type:e.Int_unsecure(),isOptional:!1},deletedAt:{type:e.DateTime(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),z=n({name:"CommunicationAuthorityGrantV2",description:"Explicit, revocable messaging authority granted to one principal",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},roomId:{type:e.String_unsecure(),isOptional:!0},connectionId:{type:e.String_unsecure(),isOptional:!0},principalId:{type:e.String_unsecure(),isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},grantedBy:{type:e.String_unsecure(),isOptional:!1},expiresAt:{type:e.DateTime(),isOptional:!0},revokedAt:{type:e.DateTime(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}});var i=["platform.communication-os"],a=[b(u.id)],g={VALIDATION_FAILED:{description:"Message content, replay key, or attachment references are invalid.",http:422,when:"The request is malformed, empty, duplicated, or exceeds a declared limit."},FORBIDDEN:{description:"The authenticated principal cannot access or mutate the selected room.",http:403,when:"Workspace, space, room membership, connection binding, or send authority is absent."},SERVICE_UNAVAILABLE:{description:"The scoped messaging runtime or search projection is unavailable.",http:503,when:"A required durable runtime dependency cannot safely answer the operation."}},U=c({meta:{key:"communication.message.send",version:"2.1.0",stability:"experimental",owners:[...i],tags:["communication","message","send","authority"],description:"Send a canonical room message as an explicitly attributed principal",goal:"Give authorized humans and agents the same audited messaging path",context:"The runtime must re-evaluate membership, authority, consent, encryption posture, and connection policy immediately before dispatch",docId:a},io:{input:r,output:r},policy:{auth:"user"}}),k=s({name:"SendCommunicationMessageV3Input",fields:{workspaceId:{type:t.String_unsecure(),isOptional:!1},spaceId:{type:t.String_unsecure(),isOptional:!1},roomId:{type:t.String_unsecure(),isOptional:!1},connectionId:{type:t.String_unsecure(),isOptional:!0},idempotencyKey:{type:t.String_unsecure(),isOptional:!1},body:{type:t.String_unsecure(),isOptional:!0},encryptedEnvelope:{type:t.JSONObject(),isOptional:!0},attachmentIds:{type:t.String_unsecure(),isArray:!0,isOptional:!0},replyToMessageId:{type:t.String_unsecure(),isOptional:!0}}}),L=c({meta:{key:"communication.message.send",version:"3.0.0",stability:"experimental",owners:[...i],tags:["communication","message","send","authority","idempotency"],description:"Send a canonical room message from a JSON-safe, replay-safe client intent",goal:"Keep tenant, author, revision, identifiers, and timestamps server-owned",context:"The runtime derives tenant and author from the authenticated context, verifies workspace/space/room membership and attachment ownership, then applies the idempotency key before dispatch",docId:a},io:{input:k,output:r,errors:g},policy:{auth:"user"}}),f=s({name:"MutateCommunicationMessageV2Input",fields:{tenantId:{type:t.String_unsecure(),isOptional:!1},workspaceId:{type:t.String_unsecure(),isOptional:!1},spaceId:{type:t.String_unsecure(),isOptional:!1},roomId:{type:t.String_unsecure(),isOptional:!1},messageId:{type:t.String_unsecure(),isOptional:!1},actorPrincipalId:{type:t.String_unsecure(),isOptional:!1},body:{type:t.String_unsecure(),isOptional:!0},encryptedEnvelope:{type:t.JSONObject(),isOptional:!0},expectedRevision:{type:t.Int_unsecure(),isOptional:!1}}}),G=c({meta:{key:"communication.message.edit",version:"2.0.0",stability:"experimental",owners:[...i],tags:["communication","message","edit"],description:"Edit a message with optimistic revision protection",goal:"Preserve provider edits in the canonical event journal without rewriting history",context:"Unsupported provider edits must return an explicit capability error rather than silently diverge",docId:a},io:{input:f,output:r},policy:{auth:"user"}}),Q=c({meta:{key:"communication.message.delete",version:"2.0.0",stability:"experimental",owners:[...i],tags:["communication","message","delete"],description:"Append an auditable message deletion or provider-retention marker",goal:"Represent local and provider deletion honestly across heterogeneous networks",context:"The event journal retains non-content evidence even when message content is erased",docId:a},io:{input:f,output:r},policy:{auth:"user"}}),l=s({name:"CommunicationReactionV2Input",fields:{tenantId:{type:t.String_unsecure(),isOptional:!1},workspaceId:{type:t.String_unsecure(),isOptional:!1},spaceId:{type:t.String_unsecure(),isOptional:!1},roomId:{type:t.String_unsecure(),isOptional:!1},messageId:{type:t.String_unsecure(),isOptional:!1},principalId:{type:t.String_unsecure(),isOptional:!1},reaction:{type:t.String_unsecure(),isOptional:!1},active:{type:t.Boolean(),isOptional:!1}}}),J=c({meta:{key:"communication.reaction.set",version:"2.0.0",stability:"experimental",owners:[...i],tags:["communication","message","reaction"],description:"Add or remove a reaction on a canonical message",goal:"Normalize lightweight acknowledgement across supported networks",context:"Adapters report unsupported reactions explicitly",docId:a},io:{input:l,output:l},policy:{auth:"user"}}),m=s({name:"CommunicationReceiptV2Input",fields:{tenantId:{type:t.String_unsecure(),isOptional:!1},workspaceId:{type:t.String_unsecure(),isOptional:!1},spaceId:{type:t.String_unsecure(),isOptional:!1},roomId:{type:t.String_unsecure(),isOptional:!1},messageId:{type:t.String_unsecure(),isOptional:!1},principalId:{type:t.String_unsecure(),isOptional:!1},kind:{type:p,isOptional:!1},occurredAt:{type:t.DateTime(),isOptional:!1}}}),F=c({meta:{key:"communication.receipt.record",version:"2.0.0",stability:"experimental",owners:[...i],tags:["communication","message","receipt"],description:"Record a delivered or read receipt",goal:"Keep unread and delivery projections consistent across clients",context:"Privacy policy may suppress outbound read receipts per space or connection",docId:a},io:{input:m,output:m},policy:{auth:"user"}}),d=s({name:"CommunicationInboxStateV2Input",fields:{tenantId:{type:t.String_unsecure(),isOptional:!1},workspaceId:{type:t.String_unsecure(),isOptional:!1},spaceId:{type:t.String_unsecure(),isOptional:!1},roomId:{type:t.String_unsecure(),isOptional:!1},principalId:{type:t.String_unsecure(),isOptional:!1},pinned:{type:t.Boolean(),isOptional:!1},archived:{type:t.Boolean(),isOptional:!1},snoozedUntil:{type:t.DateTime(),isOptional:!0},reminderAt:{type:t.DateTime(),isOptional:!0}}}),H=c({meta:{key:"communication.inbox-state.set",version:"2.0.0",stability:"experimental",owners:[...i],tags:["communication","inbox","pin","archive","snooze","reminder"],description:"Set one principal's pin, archive, snooze, and reminder state",goal:"Synchronize inbox organization without leaking message content",context:"Personal inbox state is principal-private even inside organization workspaces",docId:a},io:{input:d,output:d},policy:{auth:"user"}}),M=s({name:"SearchCommunicationMessagesV2Input",fields:{tenantId:{type:t.String_unsecure(),isOptional:!1},workspaceId:{type:t.String_unsecure(),isOptional:!1},spaceId:{type:t.String_unsecure(),isOptional:!1},query:{type:t.String_unsecure(),isOptional:!1},roomIds:{type:t.String_unsecure(),isArray:!0,isOptional:!0},limit:{type:t.Int_unsecure(),isOptional:!0}}}),O=s({name:"SearchCommunicationMessagesV2Output",fields:{messages:{type:r,isArray:!0,isOptional:!1},nextCursor:{type:t.String_unsecure(),isOptional:!0}}}),Y=y({meta:{key:"communication.message.search",version:"2.0.0",stability:"experimental",owners:[...i],tags:["communication","message","search"],description:"Search messages within exactly one authorized space",goal:"Provide cross-network search without cross-space index leakage",context:"Client-encrypted spaces search a local decrypted projection; server-indexable spaces use governed indexes",docId:a},io:{input:M,output:O},policy:{auth:"user"}}),A=s({name:"SearchCommunicationMessagesV3Input",fields:{workspaceId:{type:t.String_unsecure(),isOptional:!1},spaceId:{type:t.String_unsecure(),isOptional:!1},query:{type:t.String_unsecure(),isOptional:!1},roomIds:{type:t.String_unsecure(),isArray:!0,isOptional:!0},limit:{type:t.Int_unsecure(),isOptional:!0}}}),W=y({meta:{key:"communication.message.search",version:"3.0.0",stability:"experimental",owners:[...i],tags:["communication","message","search","authority"],description:"Search messages inside the authenticated tenant and an authorized selected space",goal:"Remove client-supplied tenant authority from canonical search transport",context:"The runtime derives tenant from the authenticated context and verifies workspace, space, and optional room filters before querying any index",docId:a},io:{input:A,output:O,errors:g},policy:{auth:"user"}}),X={key:"communication.message.replay-authority",version:"1.0.0",invariants:["Recheck current room membership and connection authority before returning a prior send result.","A request key cannot substitute principal, room, connection, text, subject, HTML, metadata, encryption envelope, reply target or attachment IDs.","Queued acceptance is not provider delivery.","Requested attachments require a complete resolved manifest; missing attachment support must not silently send an incomplete message."]},Z={key:"communication.message.queue-custody",version:"1.0.0",invariants:["An external send requires a durable journal-and-outbox adapter before it can be accepted.","Queued acceptance requires an exact persisted delivery record for the accepted message, connection and scope.","Outbox-key conflicts cannot silently drop provider delivery or report false success.","Message delivery uses delivery:<send idempotency key>; alternate delivery keys cannot duplicate a prior accepted message.","Message identity allocated by an atomic journal replay remains the delivery target; retries do not refer to discarded candidate IDs."]},ee={key:"communication.delivery.context-reproof",version:"1.0.0",invariants:["Resolve the current delivery context before adapter access and again after provider health checks immediately before send.","Changed recipient, connection, credential binding, content, reply, attachment or routing metadata invalidates the pending send.","Missing or changed context yields a definitive rejection without invoking provider.send.","Journal delivery resolution requires current active sender membership and applicable agent grants; revoked or deleted messages cannot resolve for sending.","Context reproof supplements canonical Runtime Node authority and does not replace its approval or effect fence."]};export{ee as COMMUNICATION_DELIVERY_REPROOF_CONTRACT,Z as COMMUNICATION_MESSAGE_QUEUE_CUSTODY_CONTRACT,X as COMMUNICATION_MESSAGE_REPLAY_CONTRACT,Q as DeleteCommunicationMessageV2Command,G as EditCommunicationMessageV2Command,F as RecordCommunicationReceiptV2Command,Y as SearchCommunicationMessagesV2Query,W as SearchCommunicationMessagesV3Query,U as SendCommunicationMessageV2Command,L as SendCommunicationMessageV3Command,k as SendCommunicationMessageV3Input,H as SetCommunicationInboxStateV2Command,J as SetCommunicationReactionV2Command};
@@ -0,0 +1 @@
1
+ import{defineEvent as n,docId as C}from"@lssm/lib.contracts-spec";import{defineSchemaModel as s,ScalarTypeEnum as t}from"@lssm/lib.schema";import{defineEnum as o,defineSchemaModel as a,ScalarTypeEnum as e}from"@lssm/lib.schema";var y=o("CommunicationSpaceKind",["personal","organization"]),g=o("CommunicationPrincipalKind",["human","agent","system"]),f=o("CommunicationConnectionPlacement",["device","managed_cloud","self_hosted"]),A=o("CommunicationConnectionNetwork",["email","sms","slack","teams","telegram","whatsapp","discord","matrix"]),O=o("CommunicationEncryptionMode",["client_encrypted","governed_server_indexable"]),S=o("CommunicationMembershipState",["active","revoked"]),V=o("CommunicationReceiptKind",["delivered","read"]),_=o("CommunicationConnectionHealth",["connecting","healthy","degraded","offline","revoked"]),l={id:"communication-os.ecosystem-messaging.v2",title:"CommunicationOS ecosystem messaging contracts",body:"Versioned, workspace-scoped contracts for personal and organization spaces, rooms, human and agent membership, hybrid channel connections, synchronized messages, and revocable outbound authority. CommunicationSpec remains canonical; provider protocols are adapters. V1 thread and draft-only operations remain unchanged.",kind:"reference",route:"/docs/communication-os/ecosystem-messaging-v2",visibility:"public"},k=a({name:"CommunicationScopeV2",description:"Strict tenant, workspace, and space boundary for messaging state",fields:{tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1}}}),D=a({name:"CommunicationSpaceV2",description:"Personal or organization messaging boundary under one account",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},kind:{type:y,isOptional:!1},encryptionMode:{type:O,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),M=a({name:"CommunicationPrincipalV2",description:"Auditable human, agent, or system identity",fields:{id:{type:e.String_unsecure(),isOptional:!1},kind:{type:g,isOptional:!1},displayName:{type:e.String_unsecure(),isOptional:!1},ownerPrincipalId:{type:e.String_unsecure(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}}),w=a({name:"CommunicationRoomV2",description:"Room or direct-message projection inside one space",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!0},roomKind:{type:e.String_unsecure(),isOptional:!1},connectionIds:{type:e.String_unsecure(),isArray:!0,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),T=a({name:"CommunicationRoomMembershipV2",description:"Revocable principal membership and room-scoped capabilities",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},roomId:{type:e.String_unsecure(),isOptional:!1},principalId:{type:e.String_unsecure(),isOptional:!1},role:{type:e.String_unsecure(),isOptional:!1},state:{type:S,isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},expiresAt:{type:e.DateTime(),isOptional:!0},revokedAt:{type:e.DateTime(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}}),P=a({name:"CommunicationChannelConnectionV2",description:"Credential-reference-only local, managed, or self-hosted channel connection",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},network:{type:e.String_unsecure(),isOptional:!1},placement:{type:f,isOptional:!1},externalAccountRef:{type:e.String_unsecure(),isOptional:!1},credentialRef:{type:e.String_unsecure(),isOptional:!1},health:{type:_,isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),h=a({name:"CommunicationAttachmentV2",description:"Public-safe metadata for an opaque, scope-bound message attachment",fields:{id:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},mimeType:{type:e.String_unsecure(),isOptional:!1},sizeBytes:{type:e.Int_unsecure(),isOptional:!1},sha256:{type:e.String_unsecure(),isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),R=a({name:"CommunicationMessageV2",description:"Canonical room message with explicit author and encryption posture",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},roomId:{type:e.String_unsecure(),isOptional:!1},authorPrincipalId:{type:e.String_unsecure(),isOptional:!1},connectionId:{type:e.String_unsecure(),isOptional:!0},externalMessageId:{type:e.String_unsecure(),isOptional:!0},body:{type:e.String_unsecure(),isOptional:!0},encryptedEnvelope:{type:e.JSONObject(),isOptional:!0},attachments:{type:h,isArray:!0,isOptional:!0},replyToMessageId:{type:e.String_unsecure(),isOptional:!0},revision:{type:e.Int_unsecure(),isOptional:!1},deletedAt:{type:e.DateTime(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),B=a({name:"CommunicationAuthorityGrantV2",description:"Explicit, revocable messaging authority granted to one principal",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},roomId:{type:e.String_unsecure(),isOptional:!0},connectionId:{type:e.String_unsecure(),isOptional:!0},principalId:{type:e.String_unsecure(),isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},grantedBy:{type:e.String_unsecure(),isOptional:!1},expiresAt:{type:e.DateTime(),isOptional:!0},revokedAt:{type:e.DateTime(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}});var I=["platform.communication-os"],v=[C(l.id)];function i(u,m,d){return{key:u,version:"2.0.0",description:m,stability:"experimental",owners:[...I],tags:["communication","ecosystem-messaging",...d],docId:v}}var r=s({name:"CommunicationScopedEntityV2Payload",fields:{tenantId:{type:t.String_unsecure(),isOptional:!1},workspaceId:{type:t.String_unsecure(),isOptional:!1},spaceId:{type:t.String_unsecure(),isOptional:!1},entityId:{type:t.String_unsecure(),isOptional:!1},actorPrincipalId:{type:t.String_unsecure(),isOptional:!1},occurredAt:{type:t.DateTime(),isOptional:!1}}}),H=n({meta:i("communication.space.created","Emitted when an isolated messaging space is created",["space","created"]),payload:r}),q=n({meta:i("communication.room.created","Emitted when a room or direct-message projection is created",["room","created"]),payload:r}),E=s({name:"CommunicationMembershipChangedV2Payload",fields:{tenantId:{type:t.String_unsecure(),isOptional:!1},workspaceId:{type:t.String_unsecure(),isOptional:!1},spaceId:{type:t.String_unsecure(),isOptional:!1},roomId:{type:t.String_unsecure(),isOptional:!1},membershipId:{type:t.String_unsecure(),isOptional:!1},principalId:{type:t.String_unsecure(),isOptional:!1},state:{type:t.String_unsecure(),isOptional:!1},changedBy:{type:t.String_unsecure(),isOptional:!1},occurredAt:{type:t.DateTime(),isOptional:!1}}}),G=n({meta:i("communication.membership.changed","Emitted when a human, agent, or system membership changes",["membership","authority"]),payload:E}),J=n({meta:i("communication.authority.changed","Emitted when a principal authority grant is added, changed, expired, or revoked",["agent","authority","revocation"]),payload:r}),c=s({name:"CommunicationMessageEventV2Payload",fields:{tenantId:{type:t.String_unsecure(),isOptional:!1},workspaceId:{type:t.String_unsecure(),isOptional:!1},spaceId:{type:t.String_unsecure(),isOptional:!1},roomId:{type:t.String_unsecure(),isOptional:!1},messageId:{type:t.String_unsecure(),isOptional:!1},authorPrincipalId:{type:t.String_unsecure(),isOptional:!1},connectionId:{type:t.String_unsecure(),isOptional:!0},providerReceiptRef:{type:t.String_unsecure(),isOptional:!0},revision:{type:t.Int_unsecure(),isOptional:!1},occurredAt:{type:t.DateTime(),isOptional:!1}}}),W=n({meta:i("communication.message.sent","Emitted after provider acceptance or canonical local delivery of a v2 message",["message","sent"]),payload:c}),F=n({meta:i("communication.message.edited","Emitted when a new message revision is accepted",["message","edited"]),payload:c}),L=n({meta:i("communication.message.deleted","Emitted when message content is deleted or provider retention is documented",["message","deleted","erasure"]),payload:c}),p=s({name:"CommunicationConnectionEventV2Payload",fields:{tenantId:{type:t.String_unsecure(),isOptional:!1},workspaceId:{type:t.String_unsecure(),isOptional:!1},spaceId:{type:t.String_unsecure(),isOptional:!1},connectionId:{type:t.String_unsecure(),isOptional:!1},network:{type:t.String_unsecure(),isOptional:!1},placement:{type:t.String_unsecure(),isOptional:!1},health:{type:t.String_unsecure(),isOptional:!1},cursor:{type:t.String_unsecure(),isOptional:!0},invalidationRef:{type:t.String_unsecure(),isOptional:!0},subscriptionRef:{type:t.String_unsecure(),isOptional:!0},targetExpiresAt:{type:t.DateTime(),isOptional:!0},expiresAt:{type:t.DateTime(),isOptional:!0},workOrderDigest:{type:t.String_unsecure(),isOptional:!0},idempotencyKey:{type:t.String_unsecure(),isOptional:!0},providerReceiptRef:{type:t.String_unsecure(),isOptional:!0},evidenceRefs:{type:t.String_unsecure(),isArray:!0,isOptional:!0},failureCode:{type:t.String_unsecure(),isOptional:!0},retryable:{type:t.Boolean(),isOptional:!0},retryAt:{type:t.DateTime(),isOptional:!0},occurredAt:{type:t.DateTime(),isOptional:!1}}}),Q=n({meta:i("communication.connection.health.changed","Emitted when a local or server connection health state changes",["connection","health"]),payload:p}),U=n({meta:i("communication.connection.sync.advanced","Emitted after a connection cursor advances durably",["connection","sync","cursor"]),payload:p}),X=n({meta:i("communication.connection.sync.invalidated","Emitted after an authenticated provider callback durably requests synchronization",["connection","sync","invalidation"]),payload:p}),x=s({name:"CommunicationRealtimeStateV2Payload",fields:{tenantId:{type:t.String_unsecure(),isOptional:!1},workspaceId:{type:t.String_unsecure(),isOptional:!1},spaceId:{type:t.String_unsecure(),isOptional:!1},roomId:{type:t.String_unsecure(),isOptional:!1},principalId:{type:t.String_unsecure(),isOptional:!1},stateKind:{type:t.String_unsecure(),isOptional:!1},messageId:{type:t.String_unsecure(),isOptional:!0},occurredAt:{type:t.DateTime(),isOptional:!1}}}),Y=n({meta:i("communication.realtime-state.changed","Emitted for reaction, receipt, presence, typing, and inbox-state projection updates",["realtime","receipt","presence","reaction"]),payload:x});export{J as CommunicationAuthorityChangedV2Event,p as CommunicationConnectionEventV2Payload,Q as CommunicationConnectionHealthChangedV2Event,U as CommunicationConnectionSyncAdvancedV2Event,X as CommunicationConnectionSyncInvalidatedV2Event,G as CommunicationMembershipChangedV2Event,L as CommunicationMessageDeletedV2Event,F as CommunicationMessageEditedV2Event,W as CommunicationMessageSentV2Event,Y as CommunicationRealtimeStateChangedV2Event,q as CommunicationRoomCreatedV2Event,H as CommunicationSpaceCreatedV2Event};
@@ -0,0 +1 @@
1
+ import{defineEnum as n,defineSchemaModel as t,ScalarTypeEnum as e}from"@lssm/lib.schema";var i=n("CommunicationSpaceKind",["personal","organization"]),a=n("CommunicationPrincipalKind",["human","agent","system"]),o=n("CommunicationConnectionPlacement",["device","managed_cloud","self_hosted"]),u=n("CommunicationConnectionNetwork",["email","sms","slack","teams","telegram","whatsapp","discord","matrix"]),s=n("CommunicationEncryptionMode",["client_encrypted","governed_server_indexable"]),r=n("CommunicationMembershipState",["active","revoked"]),m=n("CommunicationReceiptKind",["delivered","read"]),p=n("CommunicationConnectionHealth",["connecting","healthy","degraded","offline","revoked"]),d={id:"communication-os.ecosystem-messaging.v2",title:"CommunicationOS ecosystem messaging contracts",body:"Versioned, workspace-scoped contracts for personal and organization spaces, rooms, human and agent membership, hybrid channel connections, synchronized messages, and revocable outbound authority. CommunicationSpec remains canonical; provider protocols are adapters. V1 thread and draft-only operations remain unchanged.",kind:"reference",route:"/docs/communication-os/ecosystem-messaging-v2",visibility:"public"},y=t({name:"CommunicationScopeV2",description:"Strict tenant, workspace, and space boundary for messaging state",fields:{tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1}}}),f=t({name:"CommunicationSpaceV2",description:"Personal or organization messaging boundary under one account",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},kind:{type:i,isOptional:!1},encryptionMode:{type:s,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),g=t({name:"CommunicationPrincipalV2",description:"Auditable human, agent, or system identity",fields:{id:{type:e.String_unsecure(),isOptional:!1},kind:{type:a,isOptional:!1},displayName:{type:e.String_unsecure(),isOptional:!1},ownerPrincipalId:{type:e.String_unsecure(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}}),O=t({name:"CommunicationRoomV2",description:"Room or direct-message projection inside one space",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!0},roomKind:{type:e.String_unsecure(),isOptional:!1},connectionIds:{type:e.String_unsecure(),isArray:!0,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),S=t({name:"CommunicationRoomMembershipV2",description:"Revocable principal membership and room-scoped capabilities",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},roomId:{type:e.String_unsecure(),isOptional:!1},principalId:{type:e.String_unsecure(),isOptional:!1},role:{type:e.String_unsecure(),isOptional:!1},state:{type:r,isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},expiresAt:{type:e.DateTime(),isOptional:!0},revokedAt:{type:e.DateTime(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}}),_=t({name:"CommunicationChannelConnectionV2",description:"Credential-reference-only local, managed, or self-hosted channel connection",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},network:{type:e.String_unsecure(),isOptional:!1},placement:{type:o,isOptional:!1},externalAccountRef:{type:e.String_unsecure(),isOptional:!1},credentialRef:{type:e.String_unsecure(),isOptional:!1},health:{type:p,isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),c=t({name:"CommunicationAttachmentV2",description:"Public-safe metadata for an opaque, scope-bound message attachment",fields:{id:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},mimeType:{type:e.String_unsecure(),isOptional:!1},sizeBytes:{type:e.Int_unsecure(),isOptional:!1},sha256:{type:e.String_unsecure(),isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),C=t({name:"CommunicationMessageV2",description:"Canonical room message with explicit author and encryption posture",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},roomId:{type:e.String_unsecure(),isOptional:!1},authorPrincipalId:{type:e.String_unsecure(),isOptional:!1},connectionId:{type:e.String_unsecure(),isOptional:!0},externalMessageId:{type:e.String_unsecure(),isOptional:!0},body:{type:e.String_unsecure(),isOptional:!0},encryptedEnvelope:{type:e.JSONObject(),isOptional:!0},attachments:{type:c,isArray:!0,isOptional:!0},replyToMessageId:{type:e.String_unsecure(),isOptional:!0},revision:{type:e.Int_unsecure(),isOptional:!1},deletedAt:{type:e.DateTime(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),h=t({name:"CommunicationAuthorityGrantV2",description:"Explicit, revocable messaging authority granted to one principal",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},roomId:{type:e.String_unsecure(),isOptional:!0},connectionId:{type:e.String_unsecure(),isOptional:!0},principalId:{type:e.String_unsecure(),isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},grantedBy:{type:e.String_unsecure(),isOptional:!1},expiresAt:{type:e.DateTime(),isOptional:!0},revokedAt:{type:e.DateTime(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}});export{c as CommunicationAttachmentV2Model,h as CommunicationAuthorityGrantV2Model,_ as CommunicationChannelConnectionV2Model,p as CommunicationConnectionHealthEnum,u as CommunicationConnectionNetworkEnum,o as CommunicationConnectionPlacementEnum,s as CommunicationEncryptionModeEnum,r as CommunicationMembershipStateEnum,C as CommunicationMessageV2Model,a as CommunicationPrincipalKindEnum,g as CommunicationPrincipalV2Model,m as CommunicationReceiptKindEnum,S as CommunicationRoomMembershipV2Model,O as CommunicationRoomV2Model,y as CommunicationScopeV2Model,i as CommunicationSpaceKindEnum,f as CommunicationSpaceV2Model,d as EcosystemMessagingDocBlock};
@@ -0,0 +1 @@
1
+ import{defineCommand as I,defineQuery as u,docId as V}from"@lssm/lib.contracts-spec";import{defineEnum as A,defineSchemaModel as i,ScalarTypeEnum as p}from"@lssm/lib.schema";import{defineEnum as n,defineSchemaModel as t,ScalarTypeEnum as e}from"@lssm/lib.schema";var f=n("CommunicationSpaceKind",["personal","organization"]),g=n("CommunicationPrincipalKind",["human","agent","system"]),O=n("CommunicationConnectionPlacement",["device","managed_cloud","self_hosted"]),E=n("CommunicationConnectionNetwork",["email","sms","slack","teams","telegram","whatsapp","discord","matrix"]),S=n("CommunicationEncryptionMode",["client_encrypted","governed_server_indexable"]),h=n("CommunicationMembershipState",["active","revoked"]),w=n("CommunicationReceiptKind",["delivered","read"]),_=n("CommunicationConnectionHealth",["connecting","healthy","degraded","offline","revoked"]),r={id:"communication-os.ecosystem-messaging.v2",title:"CommunicationOS ecosystem messaging contracts",body:"Versioned, workspace-scoped contracts for personal and organization spaces, rooms, human and agent membership, hybrid channel connections, synchronized messages, and revocable outbound authority. CommunicationSpec remains canonical; provider protocols are adapters. V1 thread and draft-only operations remain unchanged.",kind:"reference",route:"/docs/communication-os/ecosystem-messaging-v2",visibility:"public"},R=t({name:"CommunicationScopeV2",description:"Strict tenant, workspace, and space boundary for messaging state",fields:{tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1}}}),c=t({name:"CommunicationSpaceV2",description:"Personal or organization messaging boundary under one account",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},kind:{type:f,isOptional:!1},encryptionMode:{type:S,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),K=t({name:"CommunicationPrincipalV2",description:"Auditable human, agent, or system identity",fields:{id:{type:e.String_unsecure(),isOptional:!1},kind:{type:g,isOptional:!1},displayName:{type:e.String_unsecure(),isOptional:!1},ownerPrincipalId:{type:e.String_unsecure(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}}),o=t({name:"CommunicationRoomV2",description:"Room or direct-message projection inside one space",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!0},roomKind:{type:e.String_unsecure(),isOptional:!1},connectionIds:{type:e.String_unsecure(),isArray:!0,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),L=t({name:"CommunicationRoomMembershipV2",description:"Revocable principal membership and room-scoped capabilities",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},roomId:{type:e.String_unsecure(),isOptional:!1},principalId:{type:e.String_unsecure(),isOptional:!1},role:{type:e.String_unsecure(),isOptional:!1},state:{type:h,isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},expiresAt:{type:e.DateTime(),isOptional:!0},revokedAt:{type:e.DateTime(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}}),N=t({name:"CommunicationChannelConnectionV2",description:"Credential-reference-only local, managed, or self-hosted channel connection",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},network:{type:e.String_unsecure(),isOptional:!1},placement:{type:O,isOptional:!1},externalAccountRef:{type:e.String_unsecure(),isOptional:!1},credentialRef:{type:e.String_unsecure(),isOptional:!1},health:{type:_,isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),C=t({name:"CommunicationAttachmentV2",description:"Public-safe metadata for an opaque, scope-bound message attachment",fields:{id:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},mimeType:{type:e.String_unsecure(),isOptional:!1},sizeBytes:{type:e.Int_unsecure(),isOptional:!1},sha256:{type:e.String_unsecure(),isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),P=t({name:"CommunicationMessageV2",description:"Canonical room message with explicit author and encryption posture",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},roomId:{type:e.String_unsecure(),isOptional:!1},authorPrincipalId:{type:e.String_unsecure(),isOptional:!1},connectionId:{type:e.String_unsecure(),isOptional:!0},externalMessageId:{type:e.String_unsecure(),isOptional:!0},body:{type:e.String_unsecure(),isOptional:!0},encryptedEnvelope:{type:e.JSONObject(),isOptional:!0},attachments:{type:C,isArray:!0,isOptional:!0},replyToMessageId:{type:e.String_unsecure(),isOptional:!0},revision:{type:e.Int_unsecure(),isOptional:!1},deletedAt:{type:e.DateTime(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),B=t({name:"CommunicationAuthorityGrantV2",description:"Explicit, revocable messaging authority granted to one principal",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},roomId:{type:e.String_unsecure(),isOptional:!0},connectionId:{type:e.String_unsecure(),isOptional:!0},principalId:{type:e.String_unsecure(),isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},grantedBy:{type:e.String_unsecure(),isOptional:!1},expiresAt:{type:e.DateTime(),isOptional:!0},revokedAt:{type:e.DateTime(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}});var v=["platform.communication-os"],x=[V(r.id)],a={VALIDATION_FAILED:{description:"The room intent or replay key is invalid.",http:422,when:"The request is malformed, blank, or exceeds a declared limit."},FORBIDDEN:{description:"The authenticated principal cannot access this scope.",http:403,when:"The server-derived membership or room authority is absent."},SERVICE_UNAVAILABLE:{description:"The scoped messaging projection is unavailable.",http:503,when:"The durable journal cannot safely answer the operation."}},b=A("CommunicationRoomKindV3",["direct","group"]),l=i({name:"CommunicationNavigationV3Input",fields:{}}),D=i({name:"CreateCommunicationRoomV3Input",fields:{name:{type:p.String_unsecure(),isOptional:!1},roomKind:{type:b,isOptional:!1},idempotencyKey:{type:p.String_unsecure(),isOptional:!1}}}),T=i({name:"ListCommunicationSpacesV3Output",fields:{spaces:{type:c,isArray:!0,isOptional:!1}}}),k=i({name:"ListCommunicationRoomsV3Output",fields:{rooms:{type:o,isArray:!0,isOptional:!1}}}),q=u({meta:s("communication.space.list","List server-authorized messaging spaces","Drive space switching without accepting browser scope authority"),io:{input:l,output:T,errors:a},policy:{auth:"user"}}),F=u({meta:s("communication.room.list","List rooms in the server-selected messaging space","Drive room navigation from one authenticated journal partition"),io:{input:l,output:k,errors:a},policy:{auth:"user"}}),H=I({meta:s("communication.room.create","Create a room from replay-safe client intent","Keep scope, principal, identifiers, and timestamps server-owned"),io:{input:D,output:o,errors:a},policy:{auth:"user"}});function s(m,d,y){return{key:m,version:"3.0.0",stability:"experimental",owners:[...v],tags:["communication","navigation","authority","server-scope"],description:d,goal:y,context:"The runtime derives tenant, workspace, space, and principal from the authenticated server context.",docId:x}}export{l as CommunicationNavigationV3Input,b as CommunicationRoomKindV3Enum,H as CreateCommunicationRoomV3Command,D as CreateCommunicationRoomV3Input,F as ListCommunicationRoomsV3Query,q as ListCommunicationSpacesV3Query};
@@ -0,0 +1 @@
1
+ import{defineCommand as s,docId as g}from"@lssm/lib.contracts-spec";import{defineEnum as O,defineSchemaModel as o,ScalarTypeEnum as n}from"@lssm/lib.schema";import{defineEnum as i,defineSchemaModel as t,ScalarTypeEnum as e}from"@lssm/lib.schema";var c=i("CommunicationSpaceKind",["personal","organization"]),l=i("CommunicationPrincipalKind",["human","agent","system"]),u=i("CommunicationConnectionPlacement",["device","managed_cloud","self_hosted"]),I=i("CommunicationConnectionNetwork",["email","sms","slack","teams","telegram","whatsapp","discord","matrix"]),d=i("CommunicationEncryptionMode",["client_encrypted","governed_server_indexable"]),m=i("CommunicationMembershipState",["active","revoked"]),k=i("CommunicationReceiptKind",["delivered","read"]),y=i("CommunicationConnectionHealth",["connecting","healthy","degraded","offline","revoked"]),a={id:"communication-os.ecosystem-messaging.v2",title:"CommunicationOS ecosystem messaging contracts",body:"Versioned, workspace-scoped contracts for personal and organization spaces, rooms, human and agent membership, hybrid channel connections, synchronized messages, and revocable outbound authority. CommunicationSpec remains canonical; provider protocols are adapters. V1 thread and draft-only operations remain unchanged.",kind:"reference",route:"/docs/communication-os/ecosystem-messaging-v2",visibility:"public"},b=t({name:"CommunicationScopeV2",description:"Strict tenant, workspace, and space boundary for messaging state",fields:{tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1}}}),T=t({name:"CommunicationSpaceV2",description:"Personal or organization messaging boundary under one account",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},kind:{type:c,isOptional:!1},encryptionMode:{type:d,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),A=t({name:"CommunicationPrincipalV2",description:"Auditable human, agent, or system identity",fields:{id:{type:e.String_unsecure(),isOptional:!1},kind:{type:l,isOptional:!1},displayName:{type:e.String_unsecure(),isOptional:!1},ownerPrincipalId:{type:e.String_unsecure(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}}),w=t({name:"CommunicationRoomV2",description:"Room or direct-message projection inside one space",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!0},roomKind:{type:e.String_unsecure(),isOptional:!1},connectionIds:{type:e.String_unsecure(),isArray:!0,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),E=t({name:"CommunicationRoomMembershipV2",description:"Revocable principal membership and room-scoped capabilities",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},roomId:{type:e.String_unsecure(),isOptional:!1},principalId:{type:e.String_unsecure(),isOptional:!1},role:{type:e.String_unsecure(),isOptional:!1},state:{type:m,isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},expiresAt:{type:e.DateTime(),isOptional:!0},revokedAt:{type:e.DateTime(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}}),x=t({name:"CommunicationChannelConnectionV2",description:"Credential-reference-only local, managed, or self-hosted channel connection",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},network:{type:e.String_unsecure(),isOptional:!1},placement:{type:u,isOptional:!1},externalAccountRef:{type:e.String_unsecure(),isOptional:!1},credentialRef:{type:e.String_unsecure(),isOptional:!1},health:{type:y,isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),f=t({name:"CommunicationAttachmentV2",description:"Public-safe metadata for an opaque, scope-bound message attachment",fields:{id:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},mimeType:{type:e.String_unsecure(),isOptional:!1},sizeBytes:{type:e.Int_unsecure(),isOptional:!1},sha256:{type:e.String_unsecure(),isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),D=t({name:"CommunicationMessageV2",description:"Canonical room message with explicit author and encryption posture",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},roomId:{type:e.String_unsecure(),isOptional:!1},authorPrincipalId:{type:e.String_unsecure(),isOptional:!1},connectionId:{type:e.String_unsecure(),isOptional:!0},externalMessageId:{type:e.String_unsecure(),isOptional:!0},body:{type:e.String_unsecure(),isOptional:!0},encryptedEnvelope:{type:e.JSONObject(),isOptional:!0},attachments:{type:f,isArray:!0,isOptional:!0},replyToMessageId:{type:e.String_unsecure(),isOptional:!0},revision:{type:e.Int_unsecure(),isOptional:!1},deletedAt:{type:e.DateTime(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),V=t({name:"CommunicationAuthorityGrantV2",description:"Explicit, revocable messaging authority granted to one principal",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},roomId:{type:e.String_unsecure(),isOptional:!0},connectionId:{type:e.String_unsecure(),isOptional:!0},principalId:{type:e.String_unsecure(),isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},grantedBy:{type:e.String_unsecure(),isOptional:!1},expiresAt:{type:e.DateTime(),isOptional:!0},revokedAt:{type:e.DateTime(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}});var r=["platform.communication-os"],p=[g(a.id)],h=O("CommunicationProviderWebhookOutcome",["accepted","duplicate","ignored"]),_=o({name:"CommunicationProviderWebhookIngressV2Input",description:"Authenticated provider delivery metadata after raw-body verification and before canonical journal ingestion",fields:{tenantId:{type:n.String_unsecure(),isOptional:!1},workspaceId:{type:n.String_unsecure(),isOptional:!1},spaceId:{type:n.String_unsecure(),isOptional:!1},connectionId:{type:n.String_unsecure(),isOptional:!1},network:{type:n.String_unsecure(),isOptional:!1},providerDeliveryId:{type:n.String_unsecure(),isOptional:!0},payloadSha256:{type:n.String_unsecure(),isOptional:!1},authenticationEvidenceRef:{type:n.String_unsecure(),isOptional:!1},receivedAt:{type:n.DateTime(),isOptional:!1}}}),S=o({name:"CommunicationProviderWebhookIngressV2Output",description:"Replay-safe result of projecting authenticated provider events into the canonical communication journal",fields:{outcome:{type:h,isOptional:!1},acceptedEventCount:{type:n.Int_unsecure(),isOptional:!1},journalEventIds:{type:n.String_unsecure(),isArray:!0,isOptional:!1},replayRef:{type:n.String_unsecure(),isOptional:!1}}}),W=s({meta:{key:"communication.provider-webhook.ingest",version:"2.0.0",stability:"experimental",owners:[...r],tags:["communication","provider","webhook","ingest","replay"],description:"Ingest an authenticated provider webhook into the scoped append-only communication journal",goal:"Centralize provider callbacks without trusting raw payloads or permitting duplicate canonical effects",context:"Raw bytes and signature material remain adapter-private; this operation starts only after endpoint, network, and provider authentication succeed",docId:p},io:{input:_,output:S,errors:{WEBHOOK_AUTHENTICATION_FAILED:{description:"Provider authenticity could not be established",http:401,when:"The endpoint token, provider signature, timestamp, or secret token is absent or invalid"},WEBHOOK_CONNECTION_NOT_FOUND:{description:"The signed endpoint does not resolve to an active connection",http:404,when:"The scoped connection was removed, revoked, or never existed"},WEBHOOK_NETWORK_MISMATCH:{description:"The callback network differs from the connection network",http:409,when:"A valid endpoint token is replayed against another provider route"},WEBHOOK_PAYLOAD_INVALID:{description:"The authenticated payload cannot be normalized safely",http:422,when:"The provider payload is malformed or exceeds configured limits"},WEBHOOK_ADAPTER_UNAVAILABLE:{description:"The scoped provider adapter cannot be resolved",http:503,when:"Credential resolution or the configured provider adapter is unavailable"}}},policy:{auth:"admin"}}),v=o({name:"CommunicationProviderWebhookEndpointV2",description:"One-time callback token projection for a scoped provider connection",fields:{connectionId:{type:n.String_unsecure(),isOptional:!1},network:{type:n.String_unsecure(),isOptional:!1},callbackUrl:{type:n.String_unsecure(),isOptional:!1},endpointToken:{type:n.String_unsecure(),isOptional:!1},tokenFingerprint:{type:n.String_unsecure(),isOptional:!1},issuedAt:{type:n.DateTime(),isOptional:!1}}}),B=s({meta:{key:"communication.provider-webhook-endpoint.issue",version:"2.0.0",stability:"experimental",owners:[...r],tags:["communication","provider","webhook","connection","secret"],description:"Issue a signed opaque callback endpoint for an authorized provider connection",goal:"Resolve webhook scope server-side without trusting tenant identifiers supplied by providers",context:"The endpoint token is returned once and must be treated as secret callback configuration; logs and analytics retain only its fingerprint",docId:p},io:{input:o({name:"IssueCommunicationProviderWebhookEndpointV2Input",fields:{tenantId:{type:n.String_unsecure(),isOptional:!1},workspaceId:{type:n.String_unsecure(),isOptional:!1},spaceId:{type:n.String_unsecure(),isOptional:!1},connectionId:{type:n.String_unsecure(),isOptional:!1},network:{type:n.String_unsecure(),isOptional:!1}}}),output:v,errors:{WEBHOOK_CONNECTION_NOT_FOUND:{description:"The scoped connection does not exist or is revoked",http:404,when:"Current membership cannot resolve an active connection in the requested scope"},WEBHOOK_ENDPOINT_NOT_AUTHORIZED:{description:"The actor cannot manage provider callbacks",http:403,when:"Current policy or RoleMorph action boundaries deny connection administration"}}},policy:{auth:"admin"}});export{v as CommunicationProviderWebhookEndpointV2Model,_ as CommunicationProviderWebhookIngressV2Input,S as CommunicationProviderWebhookIngressV2Output,h as CommunicationProviderWebhookOutcomeEnum,W as IngestCommunicationProviderWebhookV2Command,B as IssueCommunicationProviderWebhookEndpointV2Command};
@@ -0,0 +1 @@
1
+ import{defineCommand as s,defineQuery as g,docId as x}from"@lssm/lib.contracts-spec";import{defineSchemaModel as p,ScalarTypeEnum as t}from"@lssm/lib.schema";import{defineEnum as i,defineSchemaModel as n,ScalarTypeEnum as e}from"@lssm/lib.schema";var f=i("CommunicationSpaceKind",["personal","organization"]),O=i("CommunicationPrincipalKind",["human","agent","system"]),h=i("CommunicationConnectionPlacement",["device","managed_cloud","self_hosted"]),M=i("CommunicationConnectionNetwork",["email","sms","slack","teams","telegram","whatsapp","discord","matrix"]),S=i("CommunicationEncryptionMode",["client_encrypted","governed_server_indexable"]),C=i("CommunicationMembershipState",["active","revoked"]),A=i("CommunicationReceiptKind",["delivered","read"]),_=i("CommunicationConnectionHealth",["connecting","healthy","degraded","offline","revoked"]),y={id:"communication-os.ecosystem-messaging.v2",title:"CommunicationOS ecosystem messaging contracts",body:"Versioned, workspace-scoped contracts for personal and organization spaces, rooms, human and agent membership, hybrid channel connections, synchronized messages, and revocable outbound authority. CommunicationSpec remains canonical; provider protocols are adapters. V1 thread and draft-only operations remain unchanged.",kind:"reference",route:"/docs/communication-os/ecosystem-messaging-v2",visibility:"public"},u=n({name:"CommunicationScopeV2",description:"Strict tenant, workspace, and space boundary for messaging state",fields:{tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1}}}),r=n({name:"CommunicationSpaceV2",description:"Personal or organization messaging boundary under one account",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},kind:{type:f,isOptional:!1},encryptionMode:{type:S,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),D=n({name:"CommunicationPrincipalV2",description:"Auditable human, agent, or system identity",fields:{id:{type:e.String_unsecure(),isOptional:!1},kind:{type:O,isOptional:!1},displayName:{type:e.String_unsecure(),isOptional:!1},ownerPrincipalId:{type:e.String_unsecure(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}}),c=n({name:"CommunicationRoomV2",description:"Room or direct-message projection inside one space",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!0},roomKind:{type:e.String_unsecure(),isOptional:!1},connectionIds:{type:e.String_unsecure(),isArray:!0,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),l=n({name:"CommunicationRoomMembershipV2",description:"Revocable principal membership and room-scoped capabilities",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},roomId:{type:e.String_unsecure(),isOptional:!1},principalId:{type:e.String_unsecure(),isOptional:!1},role:{type:e.String_unsecure(),isOptional:!1},state:{type:C,isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},expiresAt:{type:e.DateTime(),isOptional:!0},revokedAt:{type:e.DateTime(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}}),m=n({name:"CommunicationChannelConnectionV2",description:"Credential-reference-only local, managed, or self-hosted channel connection",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},network:{type:e.String_unsecure(),isOptional:!1},placement:{type:h,isOptional:!1},externalAccountRef:{type:e.String_unsecure(),isOptional:!1},credentialRef:{type:e.String_unsecure(),isOptional:!1},health:{type:_,isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),b=n({name:"CommunicationAttachmentV2",description:"Public-safe metadata for an opaque, scope-bound message attachment",fields:{id:{type:e.String_unsecure(),isOptional:!1},name:{type:e.String_unsecure(),isOptional:!1},mimeType:{type:e.String_unsecure(),isOptional:!1},sizeBytes:{type:e.Int_unsecure(),isOptional:!1},sha256:{type:e.String_unsecure(),isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),T=n({name:"CommunicationMessageV2",description:"Canonical room message with explicit author and encryption posture",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},roomId:{type:e.String_unsecure(),isOptional:!1},authorPrincipalId:{type:e.String_unsecure(),isOptional:!1},connectionId:{type:e.String_unsecure(),isOptional:!0},externalMessageId:{type:e.String_unsecure(),isOptional:!0},body:{type:e.String_unsecure(),isOptional:!0},encryptedEnvelope:{type:e.JSONObject(),isOptional:!0},attachments:{type:b,isArray:!0,isOptional:!0},replyToMessageId:{type:e.String_unsecure(),isOptional:!0},revision:{type:e.Int_unsecure(),isOptional:!1},deletedAt:{type:e.DateTime(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),d=n({name:"CommunicationAuthorityGrantV2",description:"Explicit, revocable messaging authority granted to one principal",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},workspaceId:{type:e.String_unsecure(),isOptional:!1},spaceId:{type:e.String_unsecure(),isOptional:!1},roomId:{type:e.String_unsecure(),isOptional:!0},connectionId:{type:e.String_unsecure(),isOptional:!0},principalId:{type:e.String_unsecure(),isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},grantedBy:{type:e.String_unsecure(),isOptional:!1},expiresAt:{type:e.DateTime(),isOptional:!0},revokedAt:{type:e.DateTime(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}});var o=["platform.communication-os"],a=[x(y.id)],B=s({meta:{key:"communication.space.create",version:"2.0.0",stability:"experimental",owners:[...o],tags:["communication","space","workspace"],description:"Create an isolated personal or organization messaging space",goal:"Keep messages, identities, agents, search, and policy inside one explicit boundary",context:"The caller must already have access to the containing tenant and workspace",docId:a},io:{input:r,output:r},policy:{auth:"user"}}),K=s({meta:{key:"communication.room.create",version:"2.0.0",stability:"experimental",owners:[...o],tags:["communication","room","membership"],description:"Create a room or direct-message projection inside one space",goal:"Give humans and agents one canonical collaboration container",context:"Connection-backed rooms retain provider identifiers only through connection references",docId:a},io:{input:c,output:c},policy:{auth:"user"}}),I=p({name:"ListCommunicationSpacesV2Output",fields:{spaces:{type:r,isArray:!0,isOptional:!1}}}),L=g({meta:{key:"communication.space.list",version:"2.0.0",stability:"experimental",owners:[...o],tags:["communication","space","workspace","query"],description:"List messaging spaces visible inside an authorized scope",goal:"Make space switching explicit without crossing an isolation boundary",context:"The authorization layer resolves accessible scopes; this query never widens the supplied scope",docId:a},io:{input:u,output:I},policy:{auth:"user"}}),v=p({name:"ListCommunicationRoomsV2Output",fields:{rooms:{type:c,isArray:!0,isOptional:!1}}}),j=g({meta:{key:"communication.room.list",version:"2.0.0",stability:"experimental",owners:[...o],tags:["communication","room","workspace","query"],description:"List canonical rooms inside one authorized messaging space",goal:"Drive inbox and room navigation from a replayable projection",context:"Rooms are projected only from the append-only journal partition selected by the supplied scope",docId:a},io:{input:u,output:v},policy:{auth:"user"}}),G=s({meta:{key:"communication.membership.set",version:"2.0.0",stability:"experimental",owners:[...o],tags:["communication","membership","agent","authority"],description:"Add, update, or revoke a human, agent, or system room membership",goal:"Make every participant and its capabilities explicit and auditable",context:"Revocation takes effect before the next effect-bearing operation",docId:a},io:{input:l,output:l},policy:{auth:"admin"}}),q=s({meta:{key:"communication.authority.set",version:"2.0.0",stability:"experimental",owners:[...o],tags:["communication","agent","authority","revocation"],description:"Grant or revoke scoped messaging authority for one principal",goal:"Permit human-equivalent agents without implicit or unbounded send access",context:"The runtime re-evaluates active membership, grant scope, expiry, and channel policy immediately before dispatch",docId:a},io:{input:d,output:d},policy:{auth:"admin"}}),N=s({meta:{key:"communication.connection.connect",version:"2.0.0",stability:"experimental",owners:[...o],tags:["communication","connection","hybrid","credentials"],description:"Register a device, managed-cloud, or self-hosted channel connection",goal:"Use one provider-neutral connection contract across all clients and workers",context:"Only a secret-manager reference may be persisted; raw provider credentials are forbidden",docId:a},io:{input:m,output:m},policy:{auth:"user"}}),k=p({name:"SyncCommunicationConnectionV2Input",fields:{tenantId:{type:t.String_unsecure(),isOptional:!1},workspaceId:{type:t.String_unsecure(),isOptional:!1},spaceId:{type:t.String_unsecure(),isOptional:!1},connectionId:{type:t.String_unsecure(),isOptional:!1},cursor:{type:t.String_unsecure(),isOptional:!0},limit:{type:t.Int_unsecure(),isOptional:!0}}}),V=p({name:"SyncCommunicationConnectionV2Output",fields:{connectionId:{type:t.String_unsecure(),isOptional:!1},nextCursor:{type:t.String_unsecure(),isOptional:!0},acceptedEventIds:{type:t.String_unsecure(),isArray:!0,isOptional:!1},hasMore:{type:t.Boolean(),isOptional:!1}}}),Q=s({meta:{key:"communication.connection.sync",version:"2.0.0",stability:"experimental",owners:[...o],tags:["communication","connection","sync","cursor"],description:"Advance an authenticated channel connection from a cursor",goal:"Provide deterministic, resumable synchronization across device and server workers",context:"Duplicate provider events must be suppressed by their connection-scoped idempotency key",docId:a},io:{input:k,output:V},policy:{auth:"user"}});export{N as ConnectCommunicationChannelV2Command,K as CreateCommunicationRoomV2Command,B as CreateCommunicationSpaceV2Command,j as ListCommunicationRoomsV2Query,L as ListCommunicationSpacesV2Query,q as SetCommunicationAuthorityGrantV2Command,G as SetCommunicationMembershipV2Command,Q as SyncCommunicationConnectionV2Command};
@@ -0,0 +1 @@
1
+ import{defineEnum as e}from"@lssm/lib.schema";var a=e("ChannelType",["email","sms","whatsapp","telegram","matrix","web_chat","voice","internal_chat","custom_adapter","future_bridge","unknown"]),n=e("ThreadStatus",["open","waiting_on_human","waiting_on_external_party","action_required","resolved","archived"]),o=e("MessageStatus",["received","normalized","classified","linked","triaged","replied","archived"]),r=e("ReplyStatus",["drafted","requires_review","approved","sent","failed","blocked_by_policy"]),d=e("HandoffStatus",["created","assigned","acknowledged","completed","reopened"]),i=e("SuggestionStatus",["generated","shown","accepted","edited","rejected","applied","expired"]),s=e("IntentCategory",["support","sales","bug_report","feature_request","billing","onboarding","coordination","general","spam","escalation"]),c=e("ActionSafetyMode",["read_only","draft_only","requires_review","policy_executable","blocked"]),u=e("FeedbackOutcome",["accepted","edited","rejected","unsafe","incomplete"]);export{c as ActionSafetyModeEnum,a as ChannelTypeEnum,u as FeedbackOutcomeEnum,d as HandoffStatusEnum,s as IntentCategoryEnum,o as MessageStatusEnum,r as ReplyStatusEnum,i as SuggestionStatusEnum,n as ThreadStatusEnum};
@@ -0,0 +1 @@
1
+ import{defineCommand as m,defineQuery as f}from"@lssm/lib.contracts-spec/operations";import{defineSchemaModel as i,ScalarTypeEnum as t}from"@lssm/lib.schema";import{defineEnum as n,defineSchemaModel as o,ScalarTypeEnum as e}from"@lssm/lib.schema";var l=n("ResidencyRegion",["eu","eu_fr","eu_de","us","uk","apac","self_managed"]),d=n("HostingMode",["saas","self_host","on_prem"]),a=n("DataClass",["message_body","participant_identity","channel_account","attachment","ai_derived","audit_evidence"]),s=n("ConsentBasis",["consent","contract","legal_obligation","legitimate_interest"]),r=n("ConsentStatus",["granted","withdrawn","expired","not_recorded"]),p=o({name:"RetentionWindow",description:"Documented retention window for a single governed data class.",fields:{dataClass:{type:a,isOptional:!1},retentionDays:{type:e.Int_unsecure(),isOptional:!1},basis:{type:s,isOptional:!1},description:{type:e.String_unsecure(),isOptional:!0}}}),g=o({name:"SovereigntyProfile",description:"Residency, retention, sovereign LLM provider and hosting posture for a tenant.",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},residencyRegion:{type:l,isOptional:!1,defaultValue:"eu"},hostingMode:{type:d,isOptional:!1,defaultValue:"saas"},llmProviderId:{type:e.String_unsecure(),isOptional:!1},retentionWindows:{type:p,isArray:!0,isOptional:!1},dataResidencyEnforced:{type:e.Boolean(),isOptional:!1,defaultValue:!0},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),h=o({name:"SubjectConsent",description:"Recorded RGPD consent decision for a single data subject.",fields:{id:{type:e.String_unsecure(),isOptional:!1},tenantId:{type:e.String_unsecure(),isOptional:!1},subjectId:{type:e.String_unsecure(),isOptional:!1},basis:{type:s,isOptional:!1},status:{type:r,isOptional:!1,defaultValue:"not_recorded"},grantedAt:{type:e.DateTime(),isOptional:!0},withdrawnAt:{type:e.DateTime(),isOptional:!0},expiresAt:{type:e.DateTime(),isOptional:!0},evidenceRef:{type:e.String_unsecure(),isOptional:!0}}}),u=n("ErasureOutcome",["erased_local","erased_local_and_channel","erased_local_provider_retained_documented"]);var c=["platform.communication-os"],E=m({meta:{key:"communication.subject.erase",version:"1.0.0",stability:"experimental",owners:[...c],tags:["communication","gdpr","rgpd","erasure","sovereignty"],description:"Erase a data subject across local persistence and channel providers",goal:"Honor a GDPR/RGPD right-to-erasure request with an auditable, three-state outcome that documents irrecoverable provider retention rather than failing closed",context:"Governed by ContractSpec Connect; handler emits a local delete descriptor plus ChannelAdapter.eraseSubject; provider-unrecallable channels (email/SMTP) resolve to a documented retention window from the Sovereignty Profile"},io:{input:i({name:"EraseSubjectInput",description:"Right-to-erasure request for a single data subject.",fields:{tenantId:{type:t.String_unsecure(),isOptional:!1},subjectId:{type:t.String_unsecure(),isOptional:!1},requestedBy:{type:t.String_unsecure(),isOptional:!1},reason:{type:t.String_unsecure(),isOptional:!0},dataClasses:{type:a,isArray:!0,isOptional:!0}}}),output:i({name:"EraseSubjectOutput",description:"Three-state erasure outcome with optional documented provider retention.",fields:{subjectId:{type:t.String_unsecure(),isOptional:!1},outcome:{type:u,isOptional:!1},localDeleted:{type:t.Boolean(),isOptional:!1},channelErased:{type:t.Boolean(),isOptional:!1},providerRetainedDataClass:{type:a,isOptional:!0},providerRetentionDays:{type:t.Int_unsecure(),isOptional:!0},retentionWindowRef:{type:t.String_unsecure(),isOptional:!0},auditEventRef:{type:t.String_unsecure(),isOptional:!1},erasedAt:{type:t.DateTime(),isOptional:!1}}}),errors:{SUBJECT_NOT_FOUND:{description:"No data subject exists for the provided subjectId",http:404,when:"subjectId does not resolve to any local persistence record"},SOVEREIGNTY_PROFILE_MISSING:{description:"No Sovereignty Profile is configured for the tenant; retention window cannot be documented",http:422,when:"A provider cannot recall data but no documented retention window exists to reference"},CHANNEL_ADAPTER_UNAVAILABLE:{description:"The channel adapter required to attempt provider erasure could not be reached",http:503,when:"ChannelAdapter.eraseSubject cannot be invoked; erasure fails closed rather than reporting an unverified outcome"},ERASURE_NOT_AUTHORIZED:{description:"The requesting actor is not authorized to erase this subject",http:403,when:"Policy gate denies the erasure request for the actor/tenant"}}},policy:{auth:"admin"}}),v=f({meta:{key:"communication.subject.consent.check",version:"1.0.0",stability:"experimental",owners:[...c],tags:["communication","gdpr","rgpd","consent"],description:"Check the recorded RGPD consent state for a data subject",goal:"Let runtime gate processing on a subject lawful basis before side effects",context:"Read-only; returns the recorded consent status and lawful basis, never mutates consent"},io:{input:i({name:"CheckSubjectConsentInput",fields:{tenantId:{type:t.String_unsecure(),isOptional:!1},subjectId:{type:t.String_unsecure(),isOptional:!1}}}),output:i({name:"CheckSubjectConsentOutput",fields:{subjectId:{type:t.String_unsecure(),isOptional:!1},status:{type:r,isOptional:!1},basis:{type:s,isOptional:!0},mayProcess:{type:t.Boolean(),isOptional:!1}}})},policy:{auth:"admin"}});export{v as CheckSubjectConsentQuery,E as EraseSubjectCommand};
@@ -0,0 +1 @@
1
+ import{defineEvent as t}from"@lssm/lib.contracts-spec/events";import{defineSchemaModel as a,ScalarTypeEnum as e}from"@lssm/lib.schema";import{defineEnum as i}from"@lssm/lib.schema";var o=i("ChannelType",["email","sms","whatsapp","telegram","matrix","web_chat","voice","internal_chat","custom_adapter","future_bridge","unknown"]),s=i("ThreadStatus",["open","waiting_on_human","waiting_on_external_party","action_required","resolved","archived"]),r=i("MessageStatus",["received","normalized","classified","linked","triaged","replied","archived"]),d=i("ReplyStatus",["drafted","requires_review","approved","sent","failed","blocked_by_policy"]),y=i("HandoffStatus",["created","assigned","acknowledged","completed","reopened"]),f=i("SuggestionStatus",["generated","shown","accepted","edited","rejected","applied","expired"]),g=i("IntentCategory",["support","sales","bug_report","feature_request","billing","onboarding","coordination","general","spam","escalation"]),h=i("ActionSafetyMode",["read_only","draft_only","requires_review","policy_executable","blocked"]),S=i("FeedbackOutcome",["accepted","edited","rejected","unsafe","incomplete"]);var u=["platform.communication-os"],n=(l,p,c)=>({key:l,version:"1.0.0",description:p,stability:"experimental",owners:[...u],tags:["communication","event",...c]}),w=t({meta:n("communication.message.received","Emitted when a new message is accepted from a channel",["message","received"]),payload:a({name:"MessageReceivedPayload",fields:{messageId:{type:e.String_unsecure(),isOptional:!1},threadId:{type:e.String_unsecure(),isOptional:!1},channelType:{type:o,isOptional:!1}}})}),x=t({meta:n("communication.message.normalized","Emitted when a raw channel payload is normalized into a CommunicationMessage",["message","normalized"]),payload:a({name:"MessageNormalizedPayload",fields:{messageId:{type:e.String_unsecure(),isOptional:!1},threadId:{type:e.String_unsecure(),isOptional:!1},status:{type:r,isOptional:!1}}})}),k=t({meta:n("communication.intent.classified","Emitted when a message or thread intent is classified",["intent","classified"]),payload:a({name:"IntentClassifiedPayload",fields:{threadId:{type:e.String_unsecure(),isOptional:!1},messageId:{type:e.String_unsecure(),isOptional:!0},category:{type:e.String_unsecure(),isOptional:!1},confidence:{type:e.Float_unsecure(),isOptional:!1}}})}),I=t({meta:n("communication.thread.linked","Emitted when a thread is linked to a business object",["thread","linked"]),payload:a({name:"ThreadLinkedPayload",fields:{threadId:{type:e.String_unsecure(),isOptional:!1},objectType:{type:e.String_unsecure(),isOptional:!1},objectId:{type:e.String_unsecure(),isOptional:!1}}})}),b=t({meta:n("communication.thread.status.changed","Emitted when a thread status changes",["thread","status"]),payload:a({name:"ThreadStatusChangedPayload",fields:{threadId:{type:e.String_unsecure(),isOptional:!1},previousStatus:{type:s,isOptional:!1},newStatus:{type:s,isOptional:!1},changedBy:{type:e.String_unsecure(),isOptional:!0}}})}),P=t({meta:n("communication.reply.drafted","Emitted when a reply draft is created",["reply","drafted"]),payload:a({name:"ReplyDraftedPayload",fields:{draftId:{type:e.String_unsecure(),isOptional:!1},threadId:{type:e.String_unsecure(),isOptional:!1},status:{type:d,isOptional:!1}}})}),R=t({meta:n("communication.reply.blocked_by_policy","Emitted when a reply draft is blocked before send",["reply","blocked"]),payload:a({name:"ReplyBlockedByPolicyPayload",fields:{draftId:{type:e.String_unsecure(),isOptional:!1},threadId:{type:e.String_unsecure(),isOptional:!1},policyRef:{type:e.String_unsecure(),isOptional:!1},reason:{type:e.String_unsecure(),isOptional:!1}}})}),T=t({meta:n("communication.reply.sent","Emitted when a reply is sent",["reply","sent"]),payload:a({name:"ReplySentPayload",fields:{draftId:{type:e.String_unsecure(),isOptional:!1},threadId:{type:e.String_unsecure(),isOptional:!1},sentAt:{type:e.DateTime(),isOptional:!1}}})}),C=t({meta:n("communication.handoff.created","Emitted when a handoff packet is created",["handoff","created"]),payload:a({name:"HandoffCreatedPayload",fields:{handoffId:{type:e.String_unsecure(),isOptional:!1},threadId:{type:e.String_unsecure(),isOptional:!1},fromOwner:{type:e.String_unsecure(),isOptional:!1},toOwner:{type:e.String_unsecure(),isOptional:!1}}})}),M=t({meta:n("communication.escalation.requested","Emitted when a thread is escalated for human attention",["escalation","requested"]),payload:a({name:"EscalationRequestedPayload",fields:{threadId:{type:e.String_unsecure(),isOptional:!1},reason:{type:e.String_unsecure(),isOptional:!1},targetOwner:{type:e.String_unsecure(),isOptional:!0}}})}),q=t({meta:n("communication.participant.linked","Emitted when a participant identity link is proposed or confirmed",["participant","identity"]),payload:a({name:"ParticipantLinkedPayload",fields:{participantId:{type:e.String_unsecure(),isOptional:!1},linkedParticipantId:{type:e.String_unsecure(),isOptional:!1},linkType:{type:e.String_unsecure(),isOptional:!1},confidence:{type:e.Float_unsecure(),isOptional:!0}}})});export{M as EscalationRequestedEvent,C as HandoffCreatedEvent,k as IntentClassifiedEvent,x as MessageNormalizedEvent,w as MessageReceivedEvent,q as ParticipantLinkedEvent,R as ReplyBlockedByPolicyEvent,P as ReplyDraftedEvent,T as ReplySentEvent,I as ThreadLinkedEvent,b as ThreadStatusChangedEvent};