@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{z as m}from"zod";import{z as f}from"zod";var F="1.0.0",H="1.0.0",ue={id:"communication-os.agent-omnichannel.v1",title:"CommunicationOS agent omnichannel contracts",body:"Provider-neutral agent profiles and lifecycle links bind applications, runs, tasks, help requests, background results, routes, preferences, policies, and evidence through opaque references. They grant no provider access or effect authority.",kind:"reference",route:"/docs/communication-os/agent-omnichannel-v1",visibility:"public"},s=f.string().trim().min(1),T=f.string().datetime({offset:!0}),g=f.string().regex(/^sha256:[a-f0-9]{64}$/),A=f.object({ref:s,digest:g}).strict(),h=A.extend({revision:f.number().int().positive()}).strict(),C=f.object({tenantRef:s,workspaceRef:s.optional(),spaceRef:s.optional(),subjectRef:s}).strict(),pe=f.object({schemaVersion:f.literal(F),profileRef:s,revision:f.number().int().positive(),agentRef:s,applicationRef:s,scope:C,routeBindings:f.array(h),connectionRefs:f.array(s),preferenceSet:h,policyRefs:f.array(s).min(1),evidenceRefs:f.array(s).min(1),createdAt:T,updatedAt:T,profileDigest:g}).strict().superRefine((e,n)=>{for(let o of["connectionRefs","policyRefs","evidenceRefs"])if(new Set(e[o]).size!==e[o].length)n.addIssue({code:f.ZodIssueCode.custom,path:[o],message:`${o} must be unique`});let t=e.routeBindings.map((o)=>o.ref);if(new Set(t).size!==t.length)n.addIssue({code:f.ZodIssueCode.custom,path:["routeBindings"],message:"route bindings must be unique"})}),D=f.object({schemaVersion:f.literal(H),linkRef:s,profile:h,agentRef:s,applicationRef:s,scope:C,runRef:s.optional(),taskRef:s.optional(),helpRequestRef:s.optional(),approvalRequestRef:s.optional(),backgroundResultRef:s.optional(),canonicalConversation:A.optional(),session:h.optional(),correlationRef:s,evidenceRefs:f.array(s).min(1)}).strict().superRefine((e,n)=>{if(new Set(e.evidenceRefs).size!==e.evidenceRefs.length)n.addIssue({code:f.ZodIssueCode.custom,path:["evidenceRefs"],message:"evidenceRefs must be unique"});if(!e.runRef&&!e.taskRef&&!e.helpRequestRef&&!e.approvalRequestRef&&!e.backgroundResultRef)n.addIssue({code:f.ZodIssueCode.custom,path:["runRef"],message:"at least one run, task, help request, approval request, or background result ref is required"})});function R(e,n){return e.tenantRef===n.tenantRef&&e.workspaceRef===n.workspaceRef&&e.spaceRef===n.spaceRef&&e.subjectRef===n.subjectRef}function O(e){let n=[];for(let t of["agentRef","applicationRef"])if(e.profile[t]!==e.lifecycleLink[t])n.push(`Lifecycle ${t} does not match the agent profile`);if(e.lifecycleLink.profile.ref!==e.profile.profileRef||e.lifecycleLink.profile.revision!==e.profile.revision||e.lifecycleLink.profile.digest!==e.profile.profileDigest)n.push("Lifecycle profile binding does not match the agent profile");if(!R(e.profile.scope,e.lifecycleLink.scope))n.push("Lifecycle scope does not match the agent profile");return n}function le(e){let{intent:n,progress:t}=e,o=[];if(t.deliveryRef!==n.deliveryRef||t.intent.ref!==n.deliveryRef||t.intent.digest!==n.deliveryDigest)o.push("Progress delivery does not match the intent");if(!R(t.scope,n.scope))o.push("Progress scope does not match the intent");if(t.recipientRef!==n.recipientRefs[0])o.push("Progress recipient does not match the intent");let c=n.requestedRoutes.find((i)=>i.ref===t.route.ref);if(!c||c.revision!==t.route.revision||c.digest!==t.route.digest)o.push("Progress route was not requested by the intent");if(Date.parse(t.occurredAt)<Date.parse(n.createdAt)||Date.parse(t.occurredAt)>Date.parse(n.expiresAt))o.push("Progress occurred outside the intent validity window");return o}import{z as d}from"zod";var G="1.0.0",Y=["email","calendar","sms","slack","teams","discord","telegram","whatsapp","matrix","in_app","push","webhook","web_chat","internal_chat"],Q=d.string().trim().min(1),ye=d.enum(Y),x=d.enum(["communication","calendar_event"]),P=d.string().trim().min(1),he=d.object({schemaVersion:d.literal(G),routeRef:P,revision:d.number().int().positive(),scope:C,channel:Q,destinationRef:P,connectionRef:P.optional(),semantic:x,deliveryMode:d.enum(["direct","durable_in_app"]),capabilityRefs:d.array(P),evidenceRefs:d.array(P).min(1),routeDigest:g}).strict().superRefine((e,n)=>{if(e.channel==="calendar"!==(e.semantic==="calendar_event"))n.addIssue({code:d.ZodIssueCode.custom,path:["semantic"],message:"calendar routes require calendar_event semantics and calendar_event routes require the calendar channel"});for(let t of["capabilityRefs","evidenceRefs"])if(new Set(e[t]).size!==e[t].length)n.addIssue({code:d.ZodIssueCode.custom,path:[t],message:`${t} must be unique`})});import{z as r}from"zod";var p=r.string().min(1),_=r.string().datetime({offset:!0}),ve="1.0.0",Ie="communication.sequence-intent.v1|sequence,action-packet,recipient,content-proof,channel,side-effect,schedule,expiry,approval,policy|approval-bound,provider-neutral",Ve="sha256:7ef776396727b0e7ee015935d8f7d5f4605a08b815f6493aa737411490edc633",W="1.0.0",Pe="communicationSequenceApprovalTarget",Ae="communicationSequenceApprovalFingerprint",J="communication-sequence-approval:",b=r.object({contentRef:p,sha256:r.string().regex(/^[a-f0-9]{64}$/)}),X=r.object({body:r.string(),subject:r.string().optional(),htmlBody:r.string().optional(),replyToExternalMessageId:r.string().optional()}),k=r.object({notBefore:_,maxAttempts:r.number().int().positive(),retryDelayMs:r.number().int().nonnegative()}),w=r.object({policyRefs:r.array(p).min(1),consentRef:p,killSwitchRef:p}),ee=r.object({schemaVersion:r.literal(W),sequenceRef:p,sequenceVersion:p,tenantRef:p,recipientRefs:r.array(p).min(1),contentProof:b,channel:p,sideEffect:r.literal("send_reply"),schedulePolicyVersion:p,schedulePolicy:k,policyVersion:p,policy:w,expiresAt:_}).superRefine((e,n)=>{if(new Set(e.recipientRefs).size!==e.recipientRefs.length)n.addIssue({code:r.ZodIssueCode.custom,message:"recipientRefs must be unique",path:["recipientRefs"]});if(Date.parse(e.expiresAt)<=Date.parse(e.schedulePolicy.notBefore))n.addIssue({code:r.ZodIssueCode.custom,message:"expiresAt must be later than schedulePolicy.notBefore",path:["expiresAt"]})});function N(e){if(Array.isArray(e))return`[${e.map(N).join(",")}]`;if(e&&typeof e==="object")return`{${Object.entries(e).sort(([n],[t])=>n.localeCompare(t)).map(([n,t])=>`${JSON.stringify(n)}:${N(t)}`).join(",")}}`;return JSON.stringify(e)}async function L(e){let n=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(N(e)));return Array.from(new Uint8Array(n),(t)=>t.toString(16).padStart(2,"0")).join("")}async function be(e){let n=X.parse(e);return L({body:n.body,htmlBody:n.htmlBody??null,replyToExternalMessageId:n.replyToExternalMessageId??null,subject:n.subject??null})}async function Ee(e){let n=ee.parse(e);return`sha256:${await L(n)}`}function xe(e){return`${J}${e}`}var Ne=r.object({sequenceRef:p,actionPacketRef:p,recipientRef:p,contentProof:b,channel:p,sideEffect:r.literal("send_reply"),schedulePolicy:k,expiresAt:_,approvalRequestId:p,approvalFingerprint:p,policy:w}).superRefine((e,n)=>{if(Date.parse(e.expiresAt)<=Date.parse(e.schedulePolicy.notBefore))n.addIssue({code:r.ZodIssueCode.custom,message:"expiresAt must be later than schedulePolicy.notBefore",path:["expiresAt"]})});import{z as u}from"zod";var ne="1.0.0",te="communication:preference-target:platform-default",De=[["event","automation"],["feature","application"],["product"],["space","person"],["platform_default"]],Oe=u.enum(["event","automation","feature","application","product","space","person","platform_default"]),V=u.string().trim().min(1);function S(e){return u.object({kind:u.literal(e),ref:V}).strict()}var B=u.discriminatedUnion("kind",[S("event"),S("automation"),S("feature"),S("application"),S("product"),S("space"),S("person"),u.object({kind:u.literal("platform_default"),ref:u.literal(te)}).strict()]),oe=u.object({preferenceSetRef:V,revision:u.number().int().positive(),digest:g,target:B}).strict(),ke=u.object({schemaVersion:u.literal(ne),resolutionRef:V,scope:C,subjectRef:V,evaluatedPreferenceSets:u.array(oe).min(1),winningPreferenceSetRef:V,winningTarget:B,authority:u.literal("preference_only"),effectAuthority:u.literal("none"),resolvedAt:u.string().datetime({offset:!0}),evidenceRefs:u.array(V).min(1),resolutionDigest:g}).strict().superRefine((e,n)=>{let t=e.evaluatedPreferenceSets.map((c)=>c.preferenceSetRef);if(new Set(t).size!==t.length)I(n,"evaluatedPreferenceSets","evaluated sets must be unique");if(new Set(e.evidenceRefs).size!==e.evidenceRefs.length)I(n,"evidenceRefs","evidenceRefs must be unique");for(let c=1;c<e.evaluatedPreferenceSets.length;c+=1){let i=e.evaluatedPreferenceSets[c-1],v=e.evaluatedPreferenceSets[c];if(i&&v&&M(i.target.kind)>M(v.target.kind)){I(n,"evaluatedPreferenceSets","evaluated sets must follow the preference resolution hierarchy");break}}let o=e.evaluatedPreferenceSets.find((c)=>c.preferenceSetRef===e.winningPreferenceSetRef);if(!o)I(n,"winningPreferenceSetRef","winning preference set must have been evaluated");else if(o.preferenceSetRef!==e.evaluatedPreferenceSets[0]?.preferenceSetRef)I(n,"winningPreferenceSetRef","winning preference set must be the most specific evaluated set");else if(o.target.kind!==e.winningTarget.kind||o.target.ref!==e.winningTarget.ref)I(n,"winningTarget","winning target must match the winning preference set")});function M(e){switch(e){case"event":case"automation":return 0;case"feature":case"application":return 1;case"product":return 2;case"space":case"person":return 3;case"platform_default":return 4}}function I(e,n,t){e.addIssue({code:u.ZodIssueCode.custom,path:[n],message:t})}function z(e){let{preferenceResolution:n,preferenceSet:t}=e,o=[];if(n.subjectRef!==t.scope.subjectRef||n.winningPreferenceSetRef!==t.preferenceSetRef)o.push("Preference resolution does not match its subject and set");if(!R(n.scope,t.scope))o.push("Preference resolution scope does not match its preference set");let c=n.evaluatedPreferenceSets.find((i)=>i.preferenceSetRef===t.preferenceSetRef);if(!c||c.revision!==t.revision||c.digest!==t.preferenceSetDigest)o.push("Preference resolution binding is stale");if(n.winningTarget.kind!==t.target.kind||n.winningTarget.ref!==t.target.ref)o.push("Preference resolution target does not match its preference set");return o}function ie(e){let{intent:n,profile:t,preferenceSet:o,preferenceResolution:c}=e,i=[];if(!R(n.scope,t.scope))i.push("Intent scope does not match the agent profile");if(!R(n.scope,o.scope))i.push("Intent scope does not match the preference set");if(n.lifecycleLink){if(i.push(...O({profile:t,lifecycleLink:n.lifecycleLink})),!R(n.scope,n.lifecycleLink.scope))i.push("Intent scope does not match the lifecycle link")}if(n.profile.ref!==t.profileRef||n.profile.revision!==t.revision||n.profile.digest!==t.profileDigest)i.push("Intent profile binding is stale");if(n.preferenceSet.ref!==o.preferenceSetRef||n.preferenceSet.revision!==o.revision||n.preferenceSet.digest!==o.preferenceSetDigest)i.push("Intent preference set does not match its preferences");let v=c.evaluatedPreferenceSets.find((a)=>a.preferenceSetRef===t.preferenceSet.ref);if(!v||v.revision!==t.preferenceSet.revision||v.digest!==t.preferenceSet.digest)i.push("Agent profile preference set was not evaluated");if(i.push(...z({preferenceResolution:c,preferenceSet:o})),n.preferenceResolution.ref!==c.resolutionRef||n.preferenceResolution.digest!==c.resolutionDigest)i.push("Intent preference resolution binding is stale");if(c.subjectRef!==n.scope.subjectRef)i.push("Preference resolution does not bind the intent subject");if(n.classificationRefs.applicationRef&&n.classificationRefs.applicationRef!==t.applicationRef)i.push("Intent application classification does not match the profile");if(n.policyRefs.some((a)=>!t.policyRefs.includes(a)))i.push("Intent policy is not bound to the agent profile");let U=new Map(e.routes.map((a)=>[a.routeRef,a])),K=new Map(o.routePreferences.map((a)=>[a.routeRef,a]));for(let a of n.requestedRoutes){let y=U.get(a.ref),E=t.routeBindings.find((Z)=>Z.ref===a.ref),q=K.get(a.ref);if(!y||!E){i.push(`Requested route ${a.ref} is not bound to the profile`);continue}if(a.revision!==y.revision||a.digest!==y.routeDigest||E.revision!==y.revision||E.digest!==y.routeDigest)i.push(`Requested route ${a.ref} binding is stale`);if(!R(n.scope,y.scope))i.push(`Requested route ${a.ref} scope does not match`);if(y.semantic!==n.semantic)i.push(`Requested route ${a.ref} has incompatible semantics`);if(!q||q.channel!==y.channel)i.push(`Requested route ${a.ref} is not configured by preferences`)}if(!o.globalEnabled&&n.noticeClass!=="mandatory_notice")i.push("Intent preference set is globally disabled");return i}var re="1.0.0",l=m.string().trim().min(1),j=m.string().datetime({offset:!0}),ce=b.extend({contentRef:l}).strict(),se=m.object({eventRef:l.optional(),automationRef:l.optional(),featureRef:l.optional(),applicationRef:l.optional(),productRef:l.optional()}).strict().superRefine((e,n)=>{if(!Object.values(e).some(Boolean))n.addIssue({code:m.ZodIssueCode.custom,message:"at least one delivery classification ref is required"})}),ae=m.object({kind:m.enum(["agent","notification","automation","system"]),sourceRef:l}).strict(),fe=m.enum(["user_selected","mandatory_notice"]),$e=m.object({schemaVersion:m.literal(re),deliveryRef:l,deliveryDigest:g,scope:C,source:ae,noticeClass:fe.optional(),profile:h,semantic:x,classificationRefs:se,lifecycleLink:D.optional(),recipientRefs:m.array(l).length(1),contentProof:ce,requestedRoutes:m.array(h).min(1),preferenceSet:h,preferenceResolution:A,consentRefs:m.array(l),policyRefs:m.array(l).min(1),approvalRequestRef:l.optional(),idempotencyKey:l,effectAuthority:m.literal("none"),createdAt:j,expiresAt:j,evidenceRefs:m.array(l).min(1)}).strict().superRefine((e,n)=>{if(e.source.kind==="agent"&&!e.lifecycleLink)n.addIssue({code:m.ZodIssueCode.custom,path:["lifecycleLink"],message:"agent delivery requires an agent lifecycle link"});for(let o of["recipientRefs","consentRefs","policyRefs","evidenceRefs"])if(new Set(e[o]).size!==e[o].length)n.addIssue({code:m.ZodIssueCode.custom,path:[o],message:`${o} must be unique`});let t=e.requestedRoutes.map((o)=>o.ref);if(new Set(t).size!==t.length)n.addIssue({code:m.ZodIssueCode.custom,path:["requestedRoutes"],message:"requested routes must be unique"});if(e.recipientRefs[0]!==e.scope.subjectRef)n.addIssue({code:m.ZodIssueCode.custom,path:["recipientRefs"],message:"V1 delivery requires exactly the scoped recipient"});if(Date.parse(e.expiresAt)<=Date.parse(e.createdAt))n.addIssue({code:m.ZodIssueCode.custom,path:["expiresAt"],message:"expiresAt must be later than createdAt"})});export{re as COMMUNICATION_DELIVERY_INTENT_SCHEMA_VERSION,se as CommunicationDeliveryClassificationRefsV1Schema,ce as CommunicationDeliveryContentProofV1Schema,$e as CommunicationDeliveryIntentV1Schema,fe as CommunicationDeliveryNoticeClassV1Schema,ae as CommunicationDeliverySourceV1Schema,ie as validateCommunicationDeliveryIntentBindingV1};
@@ -0,0 +1 @@
1
+ import{z as c}from"zod";import{z as o}from"zod";var g="1.0.0",v="1.0.0",V={id:"communication-os.agent-omnichannel.v1",title:"CommunicationOS agent omnichannel contracts",body:"Provider-neutral agent profiles and lifecycle links bind applications, runs, tasks, help requests, background results, routes, preferences, policies, and evidence through opaque references. They grant no provider access or effect authority.",kind:"reference",route:"/docs/communication-os/agent-omnichannel-v1",visibility:"public"},t=o.string().trim().min(1),l=o.string().datetime({offset:!0}),d=o.string().regex(/^sha256:[a-f0-9]{64}$/),p=o.object({ref:t,digest:d}).strict(),f=p.extend({revision:o.number().int().positive()}).strict(),m=o.object({tenantRef:t,workspaceRef:t.optional(),spaceRef:t.optional(),subjectRef:t}).strict(),A=o.object({schemaVersion:o.literal(g),profileRef:t,revision:o.number().int().positive(),agentRef:t,applicationRef:t,scope:m,routeBindings:o.array(f),connectionRefs:o.array(t),preferenceSet:f,policyRefs:o.array(t).min(1),evidenceRefs:o.array(t).min(1),createdAt:l,updatedAt:l,profileDigest:d}).strict().superRefine((e,i)=>{for(let r of["connectionRefs","policyRefs","evidenceRefs"])if(new Set(e[r]).size!==e[r].length)i.addIssue({code:o.ZodIssueCode.custom,path:[r],message:`${r} must be unique`});let n=e.routeBindings.map((r)=>r.ref);if(new Set(n).size!==n.length)i.addIssue({code:o.ZodIssueCode.custom,path:["routeBindings"],message:"route bindings must be unique"})}),b=o.object({schemaVersion:o.literal(v),linkRef:t,profile:f,agentRef:t,applicationRef:t,scope:m,runRef:t.optional(),taskRef:t.optional(),helpRequestRef:t.optional(),approvalRequestRef:t.optional(),backgroundResultRef:t.optional(),canonicalConversation:p.optional(),session:f.optional(),correlationRef:t,evidenceRefs:o.array(t).min(1)}).strict().superRefine((e,i)=>{if(new Set(e.evidenceRefs).size!==e.evidenceRefs.length)i.addIssue({code:o.ZodIssueCode.custom,path:["evidenceRefs"],message:"evidenceRefs must be unique"});if(!e.runRef&&!e.taskRef&&!e.helpRequestRef&&!e.approvalRequestRef&&!e.backgroundResultRef)i.addIssue({code:o.ZodIssueCode.custom,path:["runRef"],message:"at least one run, task, help request, approval request, or background result ref is required"})});function R(e,i){return e.tenantRef===i.tenantRef&&e.workspaceRef===i.workspaceRef&&e.spaceRef===i.spaceRef&&e.subjectRef===i.subjectRef}function I(e){let i=[];for(let n of["agentRef","applicationRef"])if(e.profile[n]!==e.lifecycleLink[n])i.push(`Lifecycle ${n} does not match the agent profile`);if(e.lifecycleLink.profile.ref!==e.profile.profileRef||e.lifecycleLink.profile.revision!==e.profile.revision||e.lifecycleLink.profile.digest!==e.profile.profileDigest)i.push("Lifecycle profile binding does not match the agent profile");if(!R(e.profile.scope,e.lifecycleLink.scope))i.push("Lifecycle scope does not match the agent profile");return i}function D(e){let{intent:i,progress:n}=e,r=[];if(n.deliveryRef!==i.deliveryRef||n.intent.ref!==i.deliveryRef||n.intent.digest!==i.deliveryDigest)r.push("Progress delivery does not match the intent");if(!R(n.scope,i.scope))r.push("Progress scope does not match the intent");if(n.recipientRef!==i.recipientRefs[0])r.push("Progress recipient does not match the intent");let u=i.requestedRoutes.find((y)=>y.ref===n.route.ref);if(!u||u.revision!==n.route.revision||u.digest!==n.route.digest)r.push("Progress route was not requested by the intent");if(Date.parse(n.occurredAt)<Date.parse(i.createdAt)||Date.parse(n.occurredAt)>Date.parse(i.expiresAt))r.push("Progress occurred outside the intent validity window");return r}var h="1.0.0",C=c.enum(["queued","dispatched","provider_accepted","delivered","read","failed","ambiguous","cancelled","policy_blocked"]),s=c.string().trim().min(1),q=c.object({schemaVersion:c.literal(h),progressRef:s,progressDigest:d,deliveryRef:s,intent:p,scope:m,recipientRef:s,attemptRef:s,route:f,status:C,providerReceiptRef:s.optional(),deliveryReceiptRef:s.optional(),readReceiptRef:s.optional(),reconciliation:p.optional(),failureCode:c.string().trim().min(1).optional(),effectAuthority:c.literal("none"),occurredAt:c.string().datetime({offset:!0}),evidenceRefs:c.array(s).min(1)}).strict().superRefine((e,i)=>{if(new Set(e.evidenceRefs).size!==e.evidenceRefs.length)a(i,"evidenceRefs","evidenceRefs must be unique");if(e.status==="provider_accepted"){if(!e.providerReceiptRef)a(i,"providerReceiptRef","provider acceptance requires a receipt");if(e.deliveryReceiptRef||e.readReceiptRef)a(i,"deliveryReceiptRef","provider acceptance is not delivery or read confirmation")}if(e.status==="delivered"&&!e.deliveryReceiptRef)a(i,"deliveryReceiptRef","delivery requires a delivery receipt");if(e.deliveryReceiptRef&&e.status!=="delivered"&&e.status!=="read")a(i,"deliveryReceiptRef","delivery receipt is valid only for delivered or read progress");if(e.readReceiptRef&&e.status!=="read")a(i,"readReceiptRef","read receipt is valid only for read progress");if(e.status==="read"&&(!e.deliveryReceiptRef||!e.readReceiptRef))a(i,"readReceiptRef","read requires delivery and read receipts");if(e.status==="ambiguous"&&!e.reconciliation)a(i,"reconciliation","ambiguous progress requires a reconciliation ref")});function a(e,i,n){e.addIssue({code:c.ZodIssueCode.custom,path:[i],message:n})}export{h as COMMUNICATION_DELIVERY_PROGRESS_SCHEMA_VERSION,C as CommunicationDeliveryProgressStatusSchema,q as CommunicationDeliveryProgressV1Schema};
@@ -0,0 +1 @@
1
+ import{defineQuery as t,docId as y}from"@lssm/lib.contracts-spec";import{defineSchemaModel as n,ScalarTypeEnum as e}from"@lssm/lib.schema";import{z as i}from"zod";var m={id:"communication-os.discord-community-intelligence.v1",title:"Multi-guild Discord community intelligence",body:"Additive contracts for policy-scoped Discord guild monitoring, protected provider events, governed identity correlation, evidence-backed community insights, coaching scorecards, and Kaizen digests. Raw staff content never enters cross-guild projections.",kind:"reference",route:"/docs/communication-os/discord-community-intelligence-v1",visibility:"public"},d=i.enum(["staff","managed-community"]),g=i.enum(["pending","active","degraded","revoked"]),C=i.object({id:i.string().min(1),tenantId:i.string().min(1),workspaceId:i.string().min(1),spaceId:i.string().min(1),network:i.literal("discord"),guildId:i.string().min(1),name:i.string().min(1),specialtyKeys:i.array(i.string().min(1)),trustZone:d,status:g,policyRef:i.string().min(1),retentionPolicyRef:i.string().min(1),createdAt:i.string().datetime(),updatedAt:i.string().datetime()}).strict(),I=i.object({id:i.string().min(1),sourceId:i.string().min(1),guildId:i.string().min(1),applicationId:i.string().min(1),botUserId:i.string().min(1),credentialRef:i.string().min(1),declaredIntents:i.array(i.string().min(1)),verifiedPermissions:i.array(i.string().min(1)),allowedChannelIds:i.array(i.string().min(1)),excludedChannelIds:i.array(i.string().min(1)),backfillDays:i.number().int().min(0).max(90),health:i.enum(["pending","healthy","degraded","offline","revoked"]),installationEvidenceRefs:i.array(i.string().min(1)).min(1),lastVerifiedAt:i.string().datetime().optional()}).strict(),V=i.object({id:i.string().min(1),tenantId:i.string().min(1),provider:i.literal("discord"),providerUserId:i.string().min(1),canonicalPrincipalRef:i.string().min(1).optional(),guildMemberships:i.array(i.object({guildId:i.string().min(1),roleIds:i.array(i.string().min(1)),state:i.enum(["active","left","banned"]),observedAt:i.string().datetime()}).strict()),mergeEvidence:i.array(i.object({providerUserId:i.string().min(1),decision:i.literal("approved"),decidedByPrincipalRef:i.string().min(1),evidenceRef:i.string().min(1),decidedAt:i.string().datetime()}).strict())}).strict(),b=i.object({id:i.string().min(1),schemaVersion:i.literal("2.0.0"),sourceId:i.string().min(1),trustZone:d,guildId:i.string().min(1),channelId:i.string().min(1).optional(),threadId:i.string().min(1).optional(),actorProviderUserId:i.string().min(1).optional(),eventKind:i.string().min(1),gatewaySessionId:i.string().min(1).optional(),gatewaySequence:i.number().int().nonnegative().optional(),providerEventId:i.string().min(1),occurredAt:i.string().datetime(),protectedContent:i.object({ciphertextRef:i.string().min(1),digest:i.string().min(1),redactionStatus:i.enum(["pending","applied","not_required"])}).strict().optional(),metadata:i.record(i.string(),i.string()),evidenceRefs:i.array(i.string().min(1)).min(1)}).strict(),s=i.object({sourceIds:i.array(i.string().min(1)).min(1),windowStart:i.string().datetime(),windowEnd:i.string().datetime(),confidence:i.number().min(0).max(1),evidenceRefs:i.array(i.string().min(1)).min(1)}).strict(),x=s.extend({id:i.string().min(1),kind:i.enum(["recurring_question","pain_point","friction_trend","emerging_topic","response_gap","moderation_pattern"]),title:i.string().min(1),summary:i.string().min(1),specialtyKeys:i.array(i.string().min(1)),metricValue:i.number().optional()}).strict(),D=s.extend({id:i.string().min(1),staffPrincipalRef:i.string().min(1),visibility:i.literal("authorized_manager"),metrics:i.record(i.string(),i.number()),coachingObservations:i.array(i.string().min(1))}).strict(),z=s.extend({id:i.string().min(1),status:i.enum(["draft","published"]),insightRefs:i.array(i.string().min(1)),changes:i.array(i.string().min(1)),suggestedExperiments:i.array(i.string().min(1)),generatedAt:i.string().datetime()}).strict();var f=[y(m.id)],r=(u,l,p)=>({key:u,version:"1.0.0",stability:"experimental",owners:["platform.communication-os"],tags:["communication","discord",...p],description:l,goal:"Provide governed, evidence-backed multi-guild community intelligence",context:"Tenant, workspace, actor, and trust-zone authority are derived by the server",docId:f}),o=n({name:"DiscordCommunityWindowQueryV1",fields:{sourceRefs:{type:e.String_unsecure(),isArray:!0,isOptional:!0},windowStart:{type:e.DateTime(),isOptional:!0},windowEnd:{type:e.DateTime(),isOptional:!0},limit:{type:e.Int_unsecure(),isOptional:!0}}}),a=n({name:"CommunityIntelligenceProjectionV1",fields:{id:{type:e.String_unsecure(),isOptional:!1},sourceId:{type:e.String_unsecure(),isOptional:!0},trustZone:{type:e.String_unsecure(),isOptional:!1},kind:{type:e.String_unsecure(),isOptional:!1},subjectRef:{type:e.String_unsecure(),isOptional:!0},windowStart:{type:e.DateTime(),isOptional:!1},windowEnd:{type:e.DateTime(),isOptional:!1},confidence:{type:e.Float_unsecure(),isOptional:!1},evidenceRefs:{type:e.String_unsecure(),isArray:!0,isOptional:!1},payload:{type:e.JSONObject(),isOptional:!1},policyVersion:{type:e.String_unsecure(),isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),c=n({name:"DiscordCommunityEvidenceProjectionListV1",fields:{items:{type:a,isArray:!0,isOptional:!1}}}),v=n({name:"CommunityStaffScorecardQueryV1",fields:{...o.config.fields,staffPrincipalRef:{type:e.String_unsecure(),isOptional:!1}}}),S=n({name:"CommunityKaizenDigestDetailQueryV1",fields:{digestRef:{type:e.String_unsecure(),isOptional:!1}}}),_=t({meta:r("communication.discord-community.coverage","Read evidenced capture completeness for selected guild sources",["coverage","query"]),io:{input:o,output:c},policy:{auth:"user"}}),P=t({meta:r("communication.community-insight.list","List policy-approved guild or portfolio insights",["insight","query"]),io:{input:o,output:c},policy:{auth:"user"}}),j=t({meta:r("communication.community-staff-scorecard.get","Read an evidence-backed individual coaching scorecard",["staff","scorecard"]),io:{input:v,output:a},policy:{auth:"admin"}}),E=t({meta:r("communication.community-kaizen-digest.list","List evidence-backed Kaizen digests",["kaizen","digest"]),io:{input:o,output:c},policy:{auth:"user"}}),A=t({meta:r("communication.community-kaizen-digest.get","Read one evidence-backed Kaizen digest",["kaizen","digest","detail"]),io:{input:S,output:a},policy:{auth:"user"}});export{a as CommunityIntelligenceProjectionV1Model,A as GetCommunityKaizenDigestV1Query,j as GetCommunityStaffScorecardV1Query,_ as GetDiscordGuildCoverageV1Query,P as ListCommunityInsightsV1Query,E as ListCommunityKaizenDigestsV1Query};
@@ -0,0 +1 @@
1
+ import{defineEvent as n,docId as u}from"@lssm/lib.contracts-spec";import{defineSchemaModel as p,ScalarTypeEnum as t}from"@lssm/lib.schema";import{z as i}from"zod";var c={id:"communication-os.discord-community-intelligence.v1",title:"Multi-guild Discord community intelligence",body:"Additive contracts for policy-scoped Discord guild monitoring, protected provider events, governed identity correlation, evidence-backed community insights, coaching scorecards, and Kaizen digests. Raw staff content never enters cross-guild projections.",kind:"reference",route:"/docs/communication-os/discord-community-intelligence-v1",visibility:"public"},d=i.enum(["staff","managed-community"]),g=i.enum(["pending","active","degraded","revoked"]),v=i.object({id:i.string().min(1),tenantId:i.string().min(1),workspaceId:i.string().min(1),spaceId:i.string().min(1),network:i.literal("discord"),guildId:i.string().min(1),name:i.string().min(1),specialtyKeys:i.array(i.string().min(1)),trustZone:d,status:g,policyRef:i.string().min(1),retentionPolicyRef:i.string().min(1),createdAt:i.string().datetime(),updatedAt:i.string().datetime()}).strict(),h=i.object({id:i.string().min(1),sourceId:i.string().min(1),guildId:i.string().min(1),applicationId:i.string().min(1),botUserId:i.string().min(1),credentialRef:i.string().min(1),declaredIntents:i.array(i.string().min(1)),verifiedPermissions:i.array(i.string().min(1)),allowedChannelIds:i.array(i.string().min(1)),excludedChannelIds:i.array(i.string().min(1)),backfillDays:i.number().int().min(0).max(90),health:i.enum(["pending","healthy","degraded","offline","revoked"]),installationEvidenceRefs:i.array(i.string().min(1)).min(1),lastVerifiedAt:i.string().datetime().optional()}).strict(),C=i.object({id:i.string().min(1),tenantId:i.string().min(1),provider:i.literal("discord"),providerUserId:i.string().min(1),canonicalPrincipalRef:i.string().min(1).optional(),guildMemberships:i.array(i.object({guildId:i.string().min(1),roleIds:i.array(i.string().min(1)),state:i.enum(["active","left","banned"]),observedAt:i.string().datetime()}).strict()),mergeEvidence:i.array(i.object({providerUserId:i.string().min(1),decision:i.literal("approved"),decidedByPrincipalRef:i.string().min(1),evidenceRef:i.string().min(1),decidedAt:i.string().datetime()}).strict())}).strict(),I=i.object({id:i.string().min(1),schemaVersion:i.literal("2.0.0"),sourceId:i.string().min(1),trustZone:d,guildId:i.string().min(1),channelId:i.string().min(1).optional(),threadId:i.string().min(1).optional(),actorProviderUserId:i.string().min(1).optional(),eventKind:i.string().min(1),gatewaySessionId:i.string().min(1).optional(),gatewaySequence:i.number().int().nonnegative().optional(),providerEventId:i.string().min(1),occurredAt:i.string().datetime(),protectedContent:i.object({ciphertextRef:i.string().min(1),digest:i.string().min(1),redactionStatus:i.enum(["pending","applied","not_required"])}).strict().optional(),metadata:i.record(i.string(),i.string()),evidenceRefs:i.array(i.string().min(1)).min(1)}).strict(),m=i.object({sourceIds:i.array(i.string().min(1)).min(1),windowStart:i.string().datetime(),windowEnd:i.string().datetime(),confidence:i.number().min(0).max(1),evidenceRefs:i.array(i.string().min(1)).min(1)}).strict(),S=m.extend({id:i.string().min(1),kind:i.enum(["recurring_question","pain_point","friction_trend","emerging_topic","response_gap","moderation_pattern"]),title:i.string().min(1),summary:i.string().min(1),specialtyKeys:i.array(i.string().min(1)),metricValue:i.number().optional()}).strict(),b=m.extend({id:i.string().min(1),staffPrincipalRef:i.string().min(1),visibility:i.literal("authorized_manager"),metrics:i.record(i.string(),i.number()),coachingObservations:i.array(i.string().min(1))}).strict(),x=m.extend({id:i.string().min(1),status:i.enum(["draft","published"]),insightRefs:i.array(i.string().min(1)),changes:i.array(i.string().min(1)),suggestedExperiments:i.array(i.string().min(1)),generatedAt:i.string().datetime()}).strict();var l=[u(c.id)],o=(r,a,s)=>({key:r,version:"1.0.0",stability:"experimental",owners:["platform.communication-os"],tags:["communication","discord",...s],description:a,docId:l}),y=(r,a,s)=>({key:r,version:"2.0.0",stability:"experimental",owners:["platform.communication-os"],tags:["communication","discord",...s],description:a,docId:l}),e=p({name:"CommunicationDiscordCommunityEventV1Payload",fields:{sourceRef:{type:t.String_unsecure(),isOptional:!1},guildId:{type:t.String_unsecure(),isOptional:!1},trustZone:{type:t.String_unsecure(),isOptional:!1},entityRef:{type:t.String_unsecure(),isOptional:!1},evidenceRefs:{type:t.String_unsecure(),isArray:!0,isOptional:!1},occurredAt:{type:t.DateTime(),isOptional:!1}}}),P=n({meta:o("communication.discord-installation.authorized","A read-only Discord guild installation was authorized and evidenced",["installation","authorized"]),payload:e}),k=n({meta:o("communication.discord-installation.health-changed","Permissions, intents, connectivity, or capture coverage changed",["installation","health"]),payload:e}),w=n({meta:y("communication.provider-event.ingested","A protected non-message provider event entered the typed journal",["provider-event","ingestion"]),payload:e}),R=n({meta:o("communication.community-insight.published","A policy-approved, evidence-backed community insight was published",["insight","published"]),payload:e}),A=n({meta:o("communication.community-kaizen-digest.published","An evidence-backed Kaizen digest was published",["kaizen","digest","published"]),payload:e});export{R as CommunicationCommunityInsightPublishedV1Event,A as CommunicationCommunityKaizenDigestPublishedV1Event,e as CommunicationDiscordCommunityEventV1PayloadModel,P as CommunicationDiscordInstallationAuthorizedV1Event,k as CommunicationDiscordInstallationHealthChangedV1Event,w as CommunicationDiscordProviderEventIngestedV2Event};
@@ -0,0 +1 @@
1
+ import{z as i}from"zod";var o={id:"communication-os.discord-community-intelligence.v1",title:"Multi-guild Discord community intelligence",body:"Additive contracts for policy-scoped Discord guild monitoring, protected provider events, governed identity correlation, evidence-backed community insights, coaching scorecards, and Kaizen digests. Raw staff content never enters cross-guild projections.",kind:"reference",route:"/docs/communication-os/discord-community-intelligence-v1",visibility:"public"},n=i.enum(["staff","managed-community"]),e=i.enum(["pending","active","degraded","revoked"]),m=i.object({id:i.string().min(1),tenantId:i.string().min(1),workspaceId:i.string().min(1),spaceId:i.string().min(1),network:i.literal("discord"),guildId:i.string().min(1),name:i.string().min(1),specialtyKeys:i.array(i.string().min(1)),trustZone:n,status:e,policyRef:i.string().min(1),retentionPolicyRef:i.string().min(1),createdAt:i.string().datetime(),updatedAt:i.string().datetime()}).strict(),s=i.object({id:i.string().min(1),sourceId:i.string().min(1),guildId:i.string().min(1),applicationId:i.string().min(1),botUserId:i.string().min(1),credentialRef:i.string().min(1),declaredIntents:i.array(i.string().min(1)),verifiedPermissions:i.array(i.string().min(1)),allowedChannelIds:i.array(i.string().min(1)),excludedChannelIds:i.array(i.string().min(1)),backfillDays:i.number().int().min(0).max(90),health:i.enum(["pending","healthy","degraded","offline","revoked"]),installationEvidenceRefs:i.array(i.string().min(1)).min(1),lastVerifiedAt:i.string().datetime().optional()}).strict(),a=i.object({id:i.string().min(1),tenantId:i.string().min(1),provider:i.literal("discord"),providerUserId:i.string().min(1),canonicalPrincipalRef:i.string().min(1).optional(),guildMemberships:i.array(i.object({guildId:i.string().min(1),roleIds:i.array(i.string().min(1)),state:i.enum(["active","left","banned"]),observedAt:i.string().datetime()}).strict()),mergeEvidence:i.array(i.object({providerUserId:i.string().min(1),decision:i.literal("approved"),decidedByPrincipalRef:i.string().min(1),evidenceRef:i.string().min(1),decidedAt:i.string().datetime()}).strict())}).strict(),c=i.object({id:i.string().min(1),schemaVersion:i.literal("2.0.0"),sourceId:i.string().min(1),trustZone:n,guildId:i.string().min(1),channelId:i.string().min(1).optional(),threadId:i.string().min(1).optional(),actorProviderUserId:i.string().min(1).optional(),eventKind:i.string().min(1),gatewaySessionId:i.string().min(1).optional(),gatewaySequence:i.number().int().nonnegative().optional(),providerEventId:i.string().min(1),occurredAt:i.string().datetime(),protectedContent:i.object({ciphertextRef:i.string().min(1),digest:i.string().min(1),redactionStatus:i.enum(["pending","applied","not_required"])}).strict().optional(),metadata:i.record(i.string(),i.string()),evidenceRefs:i.array(i.string().min(1)).min(1)}).strict(),t=i.object({sourceIds:i.array(i.string().min(1)).min(1),windowStart:i.string().datetime(),windowEnd:i.string().datetime(),confidence:i.number().min(0).max(1),evidenceRefs:i.array(i.string().min(1)).min(1)}).strict(),d=t.extend({id:i.string().min(1),kind:i.enum(["recurring_question","pain_point","friction_trend","emerging_topic","response_gap","moderation_pattern"]),title:i.string().min(1),summary:i.string().min(1),specialtyKeys:i.array(i.string().min(1)),metricValue:i.number().optional()}).strict(),g=t.extend({id:i.string().min(1),staffPrincipalRef:i.string().min(1),visibility:i.literal("authorized_manager"),metrics:i.record(i.string(),i.number()),coachingObservations:i.array(i.string().min(1))}).strict(),l=t.extend({id:i.string().min(1),status:i.enum(["draft","published"]),insightRefs:i.array(i.string().min(1)),changes:i.array(i.string().min(1)),suggestedExperiments:i.array(i.string().min(1)),generatedAt:i.string().datetime()}).strict();export{e as CommunicationCommunitySourceStatusSchema,m as CommunicationCommunitySourceV1Schema,n as CommunicationCommunityTrustZoneSchema,c as CommunicationNormalizedProviderEventV2Schema,a as CommunicationProviderIdentityV1Schema,d as CommunityInsightV1Schema,l as CommunityKaizenDigestV1Schema,g as CommunityStaffScorecardV1Schema,o as DiscordCommunityIntelligenceDocBlock,s as DiscordGuildInstallationV1Schema};
@@ -0,0 +1 @@
1
+ import{defineCommand as h,defineQuery as v,docId as A}from"@lssm/lib.contracts-spec";import{defineEnum as R,defineSchemaModel as n,ScalarTypeEnum as i}from"@lssm/lib.schema";import{z as e}from"zod";var d={id:"communication-os.discord-community-intelligence.v1",title:"Multi-guild Discord community intelligence",body:"Additive contracts for policy-scoped Discord guild monitoring, protected provider events, governed identity correlation, evidence-backed community insights, coaching scorecards, and Kaizen digests. Raw staff content never enters cross-guild projections.",kind:"reference",route:"/docs/communication-os/discord-community-intelligence-v1",visibility:"public"},S=e.enum(["staff","managed-community"]),C=e.enum(["pending","active","degraded","revoked"]),M=e.object({id:e.string().min(1),tenantId:e.string().min(1),workspaceId:e.string().min(1),spaceId:e.string().min(1),network:e.literal("discord"),guildId:e.string().min(1),name:e.string().min(1),specialtyKeys:e.array(e.string().min(1)),trustZone:S,status:C,policyRef:e.string().min(1),retentionPolicyRef:e.string().min(1),createdAt:e.string().datetime(),updatedAt:e.string().datetime()}).strict(),K=e.object({id:e.string().min(1),sourceId:e.string().min(1),guildId:e.string().min(1),applicationId:e.string().min(1),botUserId:e.string().min(1),credentialRef:e.string().min(1),declaredIntents:e.array(e.string().min(1)),verifiedPermissions:e.array(e.string().min(1)),allowedChannelIds:e.array(e.string().min(1)),excludedChannelIds:e.array(e.string().min(1)),backfillDays:e.number().int().min(0).max(90),health:e.enum(["pending","healthy","degraded","offline","revoked"]),installationEvidenceRefs:e.array(e.string().min(1)).min(1),lastVerifiedAt:e.string().datetime().optional()}).strict(),j=e.object({id:e.string().min(1),tenantId:e.string().min(1),provider:e.literal("discord"),providerUserId:e.string().min(1),canonicalPrincipalRef:e.string().min(1).optional(),guildMemberships:e.array(e.object({guildId:e.string().min(1),roleIds:e.array(e.string().min(1)),state:e.enum(["active","left","banned"]),observedAt:e.string().datetime()}).strict()),mergeEvidence:e.array(e.object({providerUserId:e.string().min(1),decision:e.literal("approved"),decidedByPrincipalRef:e.string().min(1),evidenceRef:e.string().min(1),decidedAt:e.string().datetime()}).strict())}).strict(),N=e.object({id:e.string().min(1),schemaVersion:e.literal("2.0.0"),sourceId:e.string().min(1),trustZone:S,guildId:e.string().min(1),channelId:e.string().min(1).optional(),threadId:e.string().min(1).optional(),actorProviderUserId:e.string().min(1).optional(),eventKind:e.string().min(1),gatewaySessionId:e.string().min(1).optional(),gatewaySequence:e.number().int().nonnegative().optional(),providerEventId:e.string().min(1),occurredAt:e.string().datetime(),protectedContent:e.object({ciphertextRef:e.string().min(1),digest:e.string().min(1),redactionStatus:e.enum(["pending","applied","not_required"])}).strict().optional(),metadata:e.record(e.string(),e.string()),evidenceRefs:e.array(e.string().min(1)).min(1)}).strict(),g=e.object({sourceIds:e.array(e.string().min(1)).min(1),windowStart:e.string().datetime(),windowEnd:e.string().datetime(),confidence:e.number().min(0).max(1),evidenceRefs:e.array(e.string().min(1)).min(1)}).strict(),Q=g.extend({id:e.string().min(1),kind:e.enum(["recurring_question","pain_point","friction_trend","emerging_topic","response_gap","moderation_pattern"]),title:e.string().min(1),summary:e.string().min(1),specialtyKeys:e.array(e.string().min(1)),metricValue:e.number().optional()}).strict(),U=g.extend({id:e.string().min(1),staffPrincipalRef:e.string().min(1),visibility:e.literal("authorized_manager"),metrics:e.record(e.string(),e.number()),coachingObservations:e.array(e.string().min(1))}).strict(),Z=g.extend({id:e.string().min(1),status:e.enum(["draft","published"]),insightRefs:e.array(e.string().min(1)),changes:e.array(e.string().min(1)),suggestedExperiments:e.array(e.string().min(1)),generatedAt:e.string().datetime()}).strict();import{defineQuery as o,docId as _}from"@lssm/lib.contracts-spec";import{defineSchemaModel as r,ScalarTypeEnum as t}from"@lssm/lib.schema";var V=[_(d.id)],s=(m,p,y)=>({key:m,version:"1.0.0",stability:"experimental",owners:["platform.communication-os"],tags:["communication","discord",...y],description:p,goal:"Provide governed, evidence-backed multi-guild community intelligence",context:"Tenant, workspace, actor, and trust-zone authority are derived by the server",docId:V}),u=r({name:"DiscordCommunityWindowQueryV1",fields:{sourceRefs:{type:t.String_unsecure(),isArray:!0,isOptional:!0},windowStart:{type:t.DateTime(),isOptional:!0},windowEnd:{type:t.DateTime(),isOptional:!0},limit:{type:t.Int_unsecure(),isOptional:!0}}}),f=r({name:"CommunityIntelligenceProjectionV1",fields:{id:{type:t.String_unsecure(),isOptional:!1},sourceId:{type:t.String_unsecure(),isOptional:!0},trustZone:{type:t.String_unsecure(),isOptional:!1},kind:{type:t.String_unsecure(),isOptional:!1},subjectRef:{type:t.String_unsecure(),isOptional:!0},windowStart:{type:t.DateTime(),isOptional:!1},windowEnd:{type:t.DateTime(),isOptional:!1},confidence:{type:t.Float_unsecure(),isOptional:!1},evidenceRefs:{type:t.String_unsecure(),isArray:!0,isOptional:!1},payload:{type:t.JSONObject(),isOptional:!1},policyVersion:{type:t.String_unsecure(),isOptional:!1},createdAt:{type:t.DateTime(),isOptional:!1}}}),I=r({name:"DiscordCommunityEvidenceProjectionListV1",fields:{items:{type:f,isArray:!0,isOptional:!1}}}),x=r({name:"CommunityStaffScorecardQueryV1",fields:{...u.config.fields,staffPrincipalRef:{type:t.String_unsecure(),isOptional:!1}}}),b=r({name:"CommunityKaizenDigestDetailQueryV1",fields:{digestRef:{type:t.String_unsecure(),isOptional:!1}}}),H=o({meta:s("communication.discord-community.coverage","Read evidenced capture completeness for selected guild sources",["coverage","query"]),io:{input:u,output:I},policy:{auth:"user"}}),J=o({meta:s("communication.community-insight.list","List policy-approved guild or portfolio insights",["insight","query"]),io:{input:u,output:I},policy:{auth:"user"}}),Y=o({meta:s("communication.community-staff-scorecard.get","Read an evidence-backed individual coaching scorecard",["staff","scorecard"]),io:{input:x,output:f},policy:{auth:"admin"}}),X=o({meta:s("communication.community-kaizen-digest.list","List evidence-backed Kaizen digests",["kaizen","digest"]),io:{input:u,output:I},policy:{auth:"user"}}),ee=o({meta:s("communication.community-kaizen-digest.get","Read one evidence-backed Kaizen digest",["kaizen","digest","detail"]),io:{input:b,output:f},policy:{auth:"user"}});var k=["platform.communication-os"],z=[A(d.id)],a=(m,p,y)=>({key:m,version:"1.0.0",stability:"experimental",owners:[...k],tags:["communication","discord",...y],description:p,goal:"Provide governed, evidence-backed multi-guild community intelligence",context:"Tenant, workspace, actor, and trust-zone authority are derived by the server",docId:z}),O=R("DiscordCommunityTrustZone",["staff","managed-community"]),c=n({name:"DiscordGuildInstallationProjectionV1",fields:{id:{type:i.String_unsecure(),isOptional:!1},sourceId:{type:i.String_unsecure(),isOptional:!1},guildId:{type:i.String_unsecure(),isOptional:!1},applicationId:{type:i.String_unsecure(),isOptional:!1},botUserId:{type:i.String_unsecure(),isOptional:!1},specialtyKeys:{type:i.String_unsecure(),isArray:!0,isOptional:!1},trustZone:{type:O,isOptional:!1},health:{type:i.String_unsecure(),isOptional:!1},verifiedPermissions:{type:i.String_unsecure(),isArray:!0,isOptional:!1},declaredIntents:{type:i.String_unsecure(),isArray:!0,isOptional:!1},allowedChannelIds:{type:i.String_unsecure(),isArray:!0,isOptional:!1},excludedChannelIds:{type:i.String_unsecure(),isArray:!0,isOptional:!1},backfillDays:{type:i.Int_unsecure(),isOptional:!1},policyRef:{type:i.String_unsecure(),isOptional:!1},retentionPolicyRef:{type:i.String_unsecure(),isOptional:!1},installationEvidenceRefs:{type:i.String_unsecure(),isArray:!0,isOptional:!1},lastVerifiedAt:{type:i.DateTime(),isOptional:!0},updatedAt:{type:i.DateTime(),isOptional:!1}}}),l={INSTALLATION_NOT_FOUND:{description:"The scoped Discord installation does not exist",http:404,when:"The installation reference is absent from the authenticated workspace"},IDEMPOTENCY_CONFLICT:{description:"The idempotency key was reused for different intent",http:409,when:"An existing mutation evidence record has another operation or request digest"},INSTALLATION_VERIFICATION_FAILED:{description:"Discord authority could not be verified",http:422,when:"The credential, intents, permissions, or guild binding is invalid"}},w=n({name:"AuthorizeDiscordGuildInstallationV1Input",fields:{guildId:{type:i.String_unsecure(),isOptional:!1},credentialRef:{type:i.String_unsecure(),isOptional:!1},trustZone:{type:O,isOptional:!1},specialtyKeys:{type:i.String_unsecure(),isArray:!0,isOptional:!1},allowedChannelIds:{type:i.String_unsecure(),isArray:!0,isOptional:!1},excludedChannelIds:{type:i.String_unsecure(),isArray:!0,isOptional:!1},backfillDays:{type:i.Int_unsecure(),isOptional:!1},policyRef:{type:i.String_unsecure(),isOptional:!1},retentionPolicyRef:{type:i.String_unsecure(),isOptional:!1},idempotencyKey:{type:i.String_unsecure(),isOptional:!1}}}),re=h({meta:a("communication.discord-installation.authorize","Authorize one read-only Discord guild installation",["installation","authorize"]),io:{input:w,output:c,errors:l},policy:{auth:"admin"}}),D=n({name:"DiscordGuildInstallationTargetV1",fields:{installationId:{type:i.String_unsecure(),isOptional:!1}}}),T=n({name:"ListDiscordGuildInstallationsV1Input",fields:{}}),P=n({name:"ListDiscordGuildInstallationsV1Output",fields:{installations:{type:c,isArray:!0,isOptional:!1}}}),se=v({meta:a("communication.discord-installation.list","List authorized Discord guild installations",["installation","list"]),io:{input:T,output:P,errors:l},policy:{auth:"user"}}),ae=v({meta:a("communication.discord-installation.health","Read permission, intent, sequence-gap, and reconciliation health",["installation","health"]),io:{input:D,output:c,errors:l},policy:{auth:"admin"}}),E=n({name:"UpdateDiscordCommunityPolicyV1Input",fields:{installationId:{type:i.String_unsecure(),isOptional:!1},policyRef:{type:i.String_unsecure(),isOptional:!1},retentionPolicyRef:{type:i.String_unsecure(),isOptional:!1},specialtyKeys:{type:i.String_unsecure(),isArray:!0,isOptional:!1},allowedChannelIds:{type:i.String_unsecure(),isArray:!0,isOptional:!1},excludedChannelIds:{type:i.String_unsecure(),isArray:!0,isOptional:!1},backfillDays:{type:i.Int_unsecure(),isOptional:!1},idempotencyKey:{type:i.String_unsecure(),isOptional:!1}}}),ce=h({meta:a("communication.discord-community.policy-update","Update monitored channels, specialty, and policy references",["policy","update"]),io:{input:E,output:c,errors:l},policy:{auth:"admin"}}),G=n({name:"RevokeDiscordGuildInstallationV1Input",fields:{...D.config.fields,idempotencyKey:{type:i.String_unsecure(),isOptional:!1}}}),le=h({meta:a("communication.discord-installation.revoke","Revoke ingestion authority for one Discord guild installation",["installation","revoke"]),io:{input:G,output:c,errors:l},policy:{auth:"admin"}});export{re as AuthorizeDiscordGuildInstallationV1Command,w as AuthorizeDiscordGuildInstallationV1InputModel,f as CommunityIntelligenceProjectionV1Model,c as DiscordGuildInstallationProjectionV1Model,ee as GetCommunityKaizenDigestV1Query,Y as GetCommunityStaffScorecardV1Query,H as GetDiscordGuildCoverageV1Query,ae as GetDiscordGuildInstallationHealthV1Query,J as ListCommunityInsightsV1Query,X as ListCommunityKaizenDigestsV1Query,se as ListDiscordGuildInstallationsV1Query,le as RevokeDiscordGuildInstallationV1Command,ce as UpdateDiscordCommunityPolicyV1Command,E as UpdateDiscordCommunityPolicyV1InputModel};
@@ -0,0 +1 @@
1
+ import{defineCommand as g,defineQuery as O,docId as s}from"@lssm/lib.contracts-spec";import{defineSchemaModel as o,ScalarTypeEnum as t}from"@lssm/lib.schema";import{defineEnum as i,defineSchemaModel as n,ScalarTypeEnum as e}from"@lssm/lib.schema";var l=i("CommunicationSpaceKind",["personal","organization"]),u=i("CommunicationPrincipalKind",["human","agent","system"]),m=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"]),y=i("CommunicationMembershipState",["active","revoked"]),A=i("CommunicationReceiptKind",["delivered","read"]),f=i("CommunicationConnectionHealth",["connecting","healthy","degraded","offline","revoked"]),b={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"},x=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}}}),D=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:l,isOptional:!1},encryptionMode:{type:d,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),T=n({name:"CommunicationPrincipalV2",description:"Auditable human, agent, or system identity",fields:{id:{type:e.String_unsecure(),isOptional:!1},kind:{type:u,isOptional:!1},displayName:{type:e.String_unsecure(),isOptional:!1},ownerPrincipalId:{type:e.String_unsecure(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}}),v=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}}}),w=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: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}}}),k=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: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}}}),a=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}}}),M=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:a,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=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 r={id:"communication-os.ecosystem-attachments.v1",title:"CommunicationOS scoped message attachments",body:"Uploads and downloads small message attachments through authenticated, room-authorized operations. Bytes are stored behind opaque identifiers; public message projections expose only name, MIME type, size, digest, and creation time. Runtime limits, digest verification, tenant isolation, and message-reference validation fail closed.",kind:"reference",route:"/docs/communication-os/ecosystem-attachments-v1",visibility:"public"},c={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}},h=o({name:"UploadCommunicationAttachmentV1Input",fields:{...c,name:{type:t.String_unsecure(),isOptional:!1},mimeType:{type:t.String_unsecure(),isOptional:!1},sizeBytes:{type:t.Int_unsecure(),isOptional:!1},sha256:{type:t.String_unsecure(),isOptional:!1},contentBase64:{type:t.String_unsecure(),isOptional:!1}}}),S=o({name:"DownloadCommunicationAttachmentV1Input",fields:{...c,attachmentId:{type:t.String_unsecure(),isOptional:!1}}}),_=o({name:"DownloadCommunicationAttachmentV1Output",fields:{attachment:{type:a,isOptional:!1},contentBase64:{type:t.String_unsecure(),isOptional:!1}}}),p={VALIDATION_FAILED:{description:"Attachment metadata, digest, encoding, or size is invalid.",http:422,when:"The request is malformed, exceeds the runtime limit, or its digest differs from the decoded bytes."},AUTHORITY_DENIED:{description:"The principal cannot access attachments in this room.",http:403,when:"Active room membership or attachment capability is absent."},ATTACHMENT_NOT_FOUND:{description:"No attachment exists in the selected authorized scope.",http:404,when:"The opaque identifier is absent or belongs to another scope."}},N=g({meta:{key:"communication.attachment.upload",version:"1.0.0",stability:"experimental",owners:["platform.communication-os"],tags:["communication","message","attachment","upload"],description:"Upload one small, digest-verified message attachment",goal:"Let authorized participants attach files without exposing storage locations",context:"Scope and principal authority are derived by protected adapters; bytes are limited and stored behind an opaque identifier",docId:[s(r.id)]},io:{input:h,output:a,errors:p},policy:{auth:"user"}}),P=O({meta:{key:"communication.attachment.download",version:"1.0.0",stability:"experimental",owners:["platform.communication-os"],tags:["communication","message","attachment","download"],description:"Download one attachment from an authorized room scope",goal:"Return bytes only after current room authority is revalidated",context:"Opaque identifiers never widen the server-derived tenant, workspace, space, or room scope",docId:[s(r.id)]},io:{input:S,output:_,errors:p},policy:{auth:"user"}});export{r as CommunicationAttachmentDocBlock,P as DownloadCommunicationAttachmentV1Query,N as UploadCommunicationAttachmentV1Command};
@@ -0,0 +1 @@
1
+ import{defineCommand as a,docId as f}from"@lssm/lib.contracts-spec";import{defineSchemaModel as i,ScalarTypeEnum as t}from"@lssm/lib.schema";import{defineEnum as o,defineSchemaModel as n,ScalarTypeEnum as e}from"@lssm/lib.schema";var m=o("CommunicationSpaceKind",["personal","organization"]),d=o("CommunicationPrincipalKind",["human","agent","system"]),u=o("CommunicationConnectionPlacement",["device","managed_cloud","self_hosted"]),p=o("CommunicationConnectionNetwork",["email","sms","slack","teams","telegram","whatsapp","discord","matrix"]),y=o("CommunicationEncryptionMode",["client_encrypted","governed_server_indexable"]),h=o("CommunicationMembershipState",["active","revoked"]),E=o("CommunicationReceiptKind",["delivered","read"]),g=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"},V=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}}}),D=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:m,isOptional:!1},encryptionMode:{type:y,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),P=n({name:"CommunicationPrincipalV2",description:"Auditable human, agent, or system identity",fields:{id:{type:e.String_unsecure(),isOptional:!1},kind:{type:d,isOptional:!1},displayName:{type:e.String_unsecure(),isOptional:!1},ownerPrincipalId:{type:e.String_unsecure(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}}),M=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}}}),R=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: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}}}),z=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:u,isOptional:!1},externalAccountRef:{type:e.String_unsecure(),isOptional:!1},credentialRef:{type:e.String_unsecure(),isOptional:!1},health:{type:g,isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),O=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}}}),H=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:O,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}}}),N=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 s=["platform.communication-os"],r=[f(l.id)],c={tenantId:{type:t.String_unsecure(),isOptional:!1},workspaceId:{type:t.String_unsecure(),isOptional:!1},spaceId:{type:t.String_unsecure(),isOptional:!1}},S=i({name:"ExchangeCommunicationHostSessionV2Input",description:"Server-to-server exchange of a verified host assertion for a scoped CommunicationOS token",fields:{issuer:{type:t.String_unsecure(),isOptional:!1},assertion:{type:t.String_unsecure(),isOptional:!1},...c}}),C=i({name:"ExchangeCommunicationHostSessionV2Output",fields:{accessToken:{type:t.String_unsecure(),isOptional:!1},principalId:{type:t.String_unsecure(),isOptional:!1},expiresAt:{type:t.DateTime(),isOptional:!1},...c}}),j=a({meta:{key:"communication.auth.host-session.exchange",version:"2.0.0",stability:"experimental",owners:[...s],tags:["communication","auth","host-exchange","isolation"],description:"Exchange a CompanyOS, Pactena, or approved host session for a short-lived scoped token",goal:"Embed CommunicationOS without sharing host cookies or bypassing its own authorization",context:"The server verifies issuer and assertion, maps issuer plus subject to one canonical principal, and evaluates membership independently; email matching never links identities",docId:r},io:{input:S,output:C},policy:{auth:"admin"}}),_=i({name:"ExchangeCommunicationDirectSessionV2Input",description:"Exchange the current first-party AuthOS cookie or native bearer session for its server-derived personal CommunicationOS scope",fields:{}}),v=i({name:"ExchangeCommunicationDirectSessionV2Output",fields:{accessToken:{type:t.String_unsecure(),isOptional:!1},principalId:{type:t.String_unsecure(),isOptional:!1},expiresAt:{type:t.DateTime(),isOptional:!1},...c}}),q=a({meta:{key:"communication.auth.direct-session.exchange",version:"2.0.0",stability:"experimental",owners:[...s],tags:["communication","auth","standalone","isolation"],description:"Exchange a first-party AuthOS session for a short-lived scoped CommunicationOS token",goal:"Let standalone clients authenticate without sharing host sessions",context:"The server accepts the first-party web cookie or a device-vault-backed AuthOS bearer session, then derives both canonical principal and personal scope from the AuthOS issuer and immutable user id; email and client-provided scope are never identity authority",docId:r},io:{input:_,output:v},policy:{auth:"user"}}),x=i({name:"CreateCommunicationRealtimeTicketV2Input",description:"Authorized space scope for one short-lived realtime ticket",fields:c}),k=i({name:"CreateCommunicationRealtimeTicketV2Output",fields:{ticket:{type:t.String_unsecure(),isOptional:!1},expiresAt:{type:t.DateTime(),isOptional:!1}}}),G=a({meta:{key:"communication.auth.realtime-ticket.create",version:"2.0.0",stability:"experimental",owners:[...s],tags:["communication","auth","realtime","ticket"],description:"Mint a single-purpose, short-lived ticket for the realtime gateway",goal:"Authenticate WebSocket upgrades without exposing bearer tokens in URLs",context:"The ticket is audience-bound, space-scoped, expiring, and must be consumed or rejected by the realtime gateway",docId:r},io:{input:x,output:k},policy:{auth:"user"}}),A=i({name:"StartCommunicationProviderOAuthV2Input",description:"Authenticated request for a scope-bound, short-lived provider OAuth authorization flow",fields:{...c,network:{type:p,isOptional:!1},providerKey:{type:t.String_unsecure(),isOptional:!0},placement:{type:u,isOptional:!1},returnPath:{type:t.String_unsecure(),isOptional:!0}}}),b=i({name:"StartCommunicationProviderOAuthV2Output",description:"Opaque provider authorization URL with no raw credential or PKCE verifier exposure",fields:{authorizationUrl:{type:t.String_unsecure(),isOptional:!1},expiresAt:{type:t.DateTime(),isOptional:!1}}}),W=a({meta:{key:"communication.oauth.start",version:"3.0.0",stability:"experimental",owners:[...s],tags:["communication","provider","oauth","pkce","connection"],description:"Start a provider OAuth flow bound to the authenticated principal and exact CommunicationOS scope",goal:"Connect managed provider accounts without exposing credentials or permitting cross-space callback replay",context:"The server creates one-time state and provider-supported PKCE material, stores it with a short expiry, derives an allowlisted host return origin from the authenticated issuer, and accepts only relative return paths; raw verifier and provider tokens never enter browser projections",docId:r},io:{input:A,output:b,errors:{OAUTH_NETWORK_UNSUPPORTED:{description:"The requested network has no configured OAuth provider",http:422,when:"The network uses another connection method or is not enabled"},OAUTH_NOT_AUTHORIZED:{description:"The actor cannot manage connections in this scope",http:403,when:"Membership, policy, or RoleMorph boundaries deny connection administration"},OAUTH_STATE_UNAVAILABLE:{description:"OAuth state could not be stored durably",http:503,when:"The one-time state store is unavailable"}}},policy:{auth:"user"}}),I=i({name:"CompleteCommunicationProviderOAuthV2Input",description:"Provider callback carrying opaque one-time state and either an authorization code or provider error",fields:{network:{type:p,isOptional:!1},state:{type:t.String_unsecure(),isOptional:!1},code:{type:t.String_unsecure(),isOptional:!0},providerError:{type:t.String_unsecure(),isOptional:!0}}}),T=i({name:"CompleteCommunicationProviderOAuthV2Output",description:"Connected provider projection after one-time state consumption and credential-vault storage",fields:{connectionId:{type:t.String_unsecure(),isOptional:!1},network:{type:p,isOptional:!1},returnPath:{type:t.String_unsecure(),isOptional:!1},returnOrigin:{type:t.String_unsecure(),isOptional:!1}}}),F=a({meta:{key:"communication.oauth.complete",version:"3.0.0",stability:"experimental",owners:[...s],tags:["communication","provider","oauth","callback","replay"],description:"Consume a provider OAuth callback once, vault credentials, and create the scoped connection",goal:"Finish provider onboarding without trusting callback scope or persisting browser-visible tokens",context:"Tenant, workspace, space, principal, placement, provider proof material, allowlisted host return origin, and relative return path are recovered only from atomically consumed state; reused, expired, mismatched, or provider-denied callbacks fail closed",docId:r},io:{input:I,output:T,errors:{OAUTH_STATE_INVALID:{description:"OAuth state is missing, expired, mismatched, or already consumed",http:401,when:"The callback cannot atomically recover its exact scoped authorization intent"},OAUTH_PROVIDER_DENIED:{description:"The provider denied or failed the authorization request",http:422,when:"The callback contains an OAuth error or no authorization code"},OAUTH_EXCHANGE_FAILED:{description:"The authorization code could not be exchanged safely",http:502,when:"Provider token exchange, identity discovery, or credential vault storage fails"}}},policy:{auth:"anonymous"}});export{F as CompleteCommunicationProviderOAuthV2Command,I as CompleteCommunicationProviderOAuthV2Input,T as CompleteCommunicationProviderOAuthV2Output,G as CreateCommunicationRealtimeTicketV2Command,x as CreateCommunicationRealtimeTicketV2Input,k as CreateCommunicationRealtimeTicketV2Output,q as ExchangeCommunicationDirectSessionV2Command,_ as ExchangeCommunicationDirectSessionV2Input,v as ExchangeCommunicationDirectSessionV2Output,j as ExchangeCommunicationHostSessionV2Command,S as ExchangeCommunicationHostSessionV2Input,C as ExchangeCommunicationHostSessionV2Output,W as StartCommunicationProviderOAuthV2Command,A as StartCommunicationProviderOAuthV2Input,b as StartCommunicationProviderOAuthV2Output};
@@ -0,0 +1 @@
1
+ import{defineCommand as f,defineQuery as O,docId as S}from"@lssm/lib.contracts-spec";import{defineEnum as _,defineSchemaModel as a,ScalarTypeEnum as n}from"@lssm/lib.schema";import{defineEnum as i,defineSchemaModel as t,ScalarTypeEnum as e}from"@lssm/lib.schema";var p=i("CommunicationSpaceKind",["personal","organization"]),l=i("CommunicationPrincipalKind",["human","agent","system"]),u=i("CommunicationConnectionPlacement",["device","managed_cloud","self_hosted"]),x=i("CommunicationConnectionNetwork",["email","sms","slack","teams","telegram","whatsapp","discord","matrix"]),m=i("CommunicationEncryptionMode",["client_encrypted","governed_server_indexable"]),d=i("CommunicationMembershipState",["active","revoked"]),v=i("CommunicationReceiptKind",["delivered","read"]),y=i("CommunicationConnectionHealth",["connecting","healthy","degraded","offline","revoked"]),s={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=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}}}),A=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:p,isOptional:!1},encryptionMode:{type:m,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),D=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}}}),M=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}}}),V=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:d,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=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}}}),g=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}}}),w=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: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}}}),E=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"],c=[S(s.id)],C=_("CommunicationBindingDirection",["inbound","outbound","bidirectional"]),o=a({name:"CommunicationRoomChannelBindingV2",description:"Scoped mapping between one canonical room and one external provider conversation",fields:{id:{type:n.String_unsecure(),isOptional:!1},tenantId:{type:n.String_unsecure(),isOptional:!1},workspaceId:{type:n.String_unsecure(),isOptional:!1},spaceId:{type:n.String_unsecure(),isOptional:!1},roomId:{type:n.String_unsecure(),isOptional:!1},connectionId:{type:n.String_unsecure(),isOptional:!1},externalConversationId:{type:n.String_unsecure(),isOptional:!1},externalThreadId:{type:n.String_unsecure(),isOptional:!0},direction:{type:C,isOptional:!1},active:{type:n.Boolean(),isOptional:!1},createdAt:{type:n.DateTime(),isOptional:!1},updatedAt:{type:n.DateTime(),isOptional:!1}}}),K=f({meta:{key:"communication.room-channel-binding.set",version:"2.0.0",stability:"experimental",owners:[...r],tags:["communication","room","connection","binding"],description:"Create, update, or revoke the provider conversation bound to a canonical room",goal:"Route synchronization and delivery without treating provider accounts as rooms",context:"The room, connection, and binding must share exactly one tenant, workspace, and space scope",docId:c},io:{input:o,output:o},policy:{auth:"admin"}}),h=a({name:"ListCommunicationRoomChannelBindingsV2Input",fields:{tenantId:{type:n.String_unsecure(),isOptional:!1},workspaceId:{type:n.String_unsecure(),isOptional:!1},spaceId:{type:n.String_unsecure(),isOptional:!1},roomId:{type:n.String_unsecure(),isOptional:!0},connectionId:{type:n.String_unsecure(),isOptional:!0},activeOnly:{type:n.Boolean(),isOptional:!0}}}),I=a({name:"ListCommunicationRoomChannelBindingsV2Output",fields:{bindings:{type:o,isArray:!0,isOptional:!1}}}),L=O({meta:{key:"communication.room-channel-binding.list",version:"2.0.0",stability:"experimental",owners:[...r],tags:["communication","room","connection","binding","query"],description:"List authorized room-to-provider conversation bindings",goal:"Make routing, audit, and recovery projections explicit and replayable",context:"Inactive bindings remain visible to audit readers",docId:c},io:{input:h,output:I},policy:{auth:"user"}});export{C as CommunicationBindingDirectionEnum,o as CommunicationRoomChannelBindingV2Model,L as ListCommunicationRoomChannelBindingsV2Query,K as SetCommunicationRoomChannelBindingV2Command};
@@ -0,0 +1 @@
1
+ import{defineEvent as p,docId as A}from"@lssm/lib.contracts-spec";import{defineEvent as n,docId as I}from"@lssm/lib.contracts-spec";import{defineSchemaModel as r,ScalarTypeEnum as t}from"@lssm/lib.schema";import{defineEnum as o,defineSchemaModel as a,ScalarTypeEnum as e}from"@lssm/lib.schema";var f=o("CommunicationSpaceKind",["personal","organization"]),O=o("CommunicationPrincipalKind",["human","agent","system"]),S=o("CommunicationConnectionPlacement",["device","managed_cloud","self_hosted"]),w=o("CommunicationConnectionNetwork",["email","sms","slack","teams","telegram","whatsapp","discord","matrix"]),_=o("CommunicationEncryptionMode",["client_encrypted","governed_server_indexable"]),C=o("CommunicationMembershipState",["active","revoked"]),D=o("CommunicationReceiptKind",["delivered","read"]),h=o("CommunicationConnectionHealth",["connecting","healthy","degraded","offline","revoked"]),c={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"},M=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}}}),T=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:f,isOptional:!1},encryptionMode:{type:_,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),R=a({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}}}),P=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}}}),B=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: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}}}),K=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:S,isOptional:!1},externalAccountRef:{type:e.String_unsecure(),isOptional:!1},credentialRef:{type:e.String_unsecure(),isOptional:!1},health:{type:h,isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),v=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}}}),N=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:v,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}}}),q=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 E=["platform.communication-os"],b=[I(c.id)];function i(u,m,d){return{key:u,version:"2.0.0",description:m,stability:"experimental",owners:[...E],tags:["communication","ecosystem-messaging",...d],docId:b}}var y=r({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}}}),F=n({meta:i("communication.space.created","Emitted when an isolated messaging space is created",["space","created"]),payload:y}),J=n({meta:i("communication.room.created","Emitted when a room or direct-message projection is created",["room","created"]),payload:y}),x=r({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}}}),W=n({meta:i("communication.membership.changed","Emitted when a human, agent, or system membership changes",["membership","authority"]),payload:x}),L=n({meta:i("communication.authority.changed","Emitted when a principal authority grant is added, changed, expired, or revoked",["agent","authority","revocation"]),payload:y}),g=r({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}}}),Q=n({meta:i("communication.message.sent","Emitted after provider acceptance or canonical local delivery of a v2 message",["message","sent"]),payload:g}),U=n({meta:i("communication.message.edited","Emitted when a new message revision is accepted",["message","edited"]),payload:g}),X=n({meta:i("communication.message.deleted","Emitted when message content is deleted or provider retention is documented",["message","deleted","erasure"]),payload:g}),s=r({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}}}),Y=n({meta:i("communication.connection.health.changed","Emitted when a local or server connection health state changes",["connection","health"]),payload:s}),Z=n({meta:i("communication.connection.sync.advanced","Emitted after a connection cursor advances durably",["connection","sync","cursor"]),payload:s}),ee=n({meta:i("communication.connection.sync.invalidated","Emitted after an authenticated provider callback durably requests synchronization",["connection","sync","invalidation"]),payload:s}),V=r({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}}}),te=n({meta:i("communication.realtime-state.changed","Emitted for reaction, receipt, presence, typing, and inbox-state projection updates",["realtime","receipt","presence","reaction"]),payload:V});var l=(u,m,d)=>({key:u,version:"2.0.0",description:m,stability:"experimental",owners:["platform.communication-os"],tags:["communication","connection","subscription",d],docId:[A(c.id)]}),se=p({meta:l("communication.connection.subscription.requested","Emitted before Runtime Node receives an idempotent subscription create or renewal request","requested"),payload:s}),re=p({meta:l("communication.connection.subscription.active","Emitted after a Runtime Node receipt proves a provider subscription is active","active"),payload:s}),ce=p({meta:l("communication.connection.subscription.failed","Emitted after a definitive Runtime Node subscription failure","failed"),payload:s}),pe=p({meta:l("communication.connection.subscription.indeterminate","Emitted when subscription effect custody is indeterminate and must reconcile before retry","indeterminate"),payload:s});export{re as CommunicationConnectionSubscriptionActiveV2Event,ce as CommunicationConnectionSubscriptionFailedV2Event,pe as CommunicationConnectionSubscriptionIndeterminateV2Event,se as CommunicationConnectionSubscriptionRequestedV2Event};
@@ -0,0 +1 @@
1
+ import{defineCommand as v,defineQuery as A,docId as D}from"@lssm/lib.contracts-spec";import{defineEnum as E,defineSchemaModel as s,ScalarTypeEnum as a}from"@lssm/lib.schema";import{defineCommand as f,defineQuery as V,docId as T}from"@lssm/lib.contracts-spec";import{defineEnum as g,defineSchemaModel as c,ScalarTypeEnum as t}from"@lssm/lib.schema";import{defineEnum as i,defineSchemaModel as n,ScalarTypeEnum as e}from"@lssm/lib.schema";var C=i("CommunicationSpaceKind",["personal","organization"]),h=i("CommunicationPrincipalKind",["human","agent","system"]),_=i("CommunicationConnectionPlacement",["device","managed_cloud","self_hosted"]),P=i("CommunicationConnectionNetwork",["email","sms","slack","teams","telegram","whatsapp","discord","matrix"]),I=i("CommunicationEncryptionMode",["client_encrypted","governed_server_indexable"]),w=i("CommunicationMembershipState",["active","revoked"]),j=i("CommunicationReceiptKind",["delivered","read"]),x=i("CommunicationConnectionHealth",["connecting","healthy","degraded","offline","revoked"]),q={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=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}}}),z=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:C,isOptional:!1},encryptionMode:{type:I,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),F=n({name:"CommunicationPrincipalV2",description:"Auditable human, agent, or system identity",fields:{id:{type:e.String_unsecure(),isOptional:!1},kind:{type:h,isOptional:!1},displayName:{type:e.String_unsecure(),isOptional:!1},ownerPrincipalId:{type:e.String_unsecure(),isOptional:!0},createdAt:{type:e.DateTime(),isOptional:!1}}}),Q=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}}}),J=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:w,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}}}),H=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:x,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}}}),U=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}}}),X=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 p=["platform.communication-os"],u={id:"communication-os.governed-work.v1",title:"CommunicationOS governed work contracts",body:"Persisted, scope-isolated reviews for identity, drafts, actions, handoffs, escalations, triage, summaries, agents, consent, retention, and policy. Managed decisions require current manager authority and every transition appends evidence.",kind:"reference",route:"/docs/communication-os/governed-work-v1",visibility:"public"},l=[T(u.id)],r=g("CommunicationGovernedWorkKind",["identity_review","draft","action","handoff","escalation","triage","summary","agent","consent","retention","policy"]),O=g("CommunicationGovernedWorkStatus",["pending","approved","rejected","blocked","resolved","revoked"]),o=c({name:"CommunicationGovernedWorkV1",fields:{id:{type:t.String_unsecure(),isOptional:!1},kind:{type:r,isOptional:!1},status:{type:O,isOptional:!1},title:{type:t.String_unsecure(),isOptional:!1},threadId:{type:t.String_unsecure(),isOptional:!0},details:{type:t.JSONObject(),isOptional:!1},revision:{type:t.Int_unsecure(),isOptional:!1},createdBy:{type:t.String_unsecure(),isOptional:!1},createdAt:{type:t.DateTime(),isOptional:!1},updatedBy:{type:t.String_unsecure(),isOptional:!1},updatedAt:{type:t.DateTime(),isOptional:!1}}}),ne=V({meta:{key:"communication.governed_work.list",version:"1.0.0",stability:"experimental",owners:[...p],tags:["communication","governance","work","query"],description:"List governed work in one authorized messaging space",goal:"Drive review queues from replayable state rather than fixtures",context:"The server derives scope and filters optional kinds",docId:l},io:{input:y,output:c({name:"ListCommunicationGovernedWorkV1Output",fields:{items:{type:o,isArray:!0,isOptional:!1}}})},policy:{auth:"user"}}),ie=f({meta:{key:"communication.governed_work.create",version:"1.0.0",stability:"experimental",owners:[...p],tags:["communication","governance","work","create"],description:"Create one idempotent governed work item",goal:"Start an accountable review from a real user or runtime action",context:"Client-supplied tenant or principal authority is rejected",docId:l},io:{input:o,output:o},policy:{auth:"user"}}),oe=f({meta:{key:"communication.governed_work.transition",version:"1.0.0",stability:"experimental",owners:[...p],tags:["communication","governance","work","transition"],description:"Apply one policy-valid governed work transition",goal:"Record approval, denial, resolution, blocking, or revocation evidence",context:"Managed kinds require current manager authority and terminal transitions fail closed",docId:l},io:{input:c({name:"TransitionCommunicationGovernedWorkV1Input",fields:{workId:{type:t.String_unsecure(),isOptional:!1},status:{type:O,isOptional:!1},reason:{type:t.String_unsecure(),isOptional:!0}}}),output:o},policy:{auth:"user"}});var G=["platform.communication-os"],M=[D(u.id)],m={VALIDATION_FAILED:{description:"The governed-work intent is invalid.",http:422,when:"Required intent is blank, malformed, or exceeds a declared limit."},FORBIDDEN:{description:"The principal cannot manage this governed-work kind.",http:403,when:"The server-derived role lacks the required management authority."},NOT_FOUND:{description:"The governed-work item does not exist in this scope.",http:404,when:"No item is visible in the authenticated journal partition."},CONFLICT:{description:"The requested lifecycle transition is not permitted.",http:409,when:"The current persisted status cannot transition to the requested status."},SERVICE_UNAVAILABLE:{description:"The governed-work journal is unavailable.",http:503,when:"The durable runtime cannot safely answer the operation."}},W=E("CommunicationGovernedWorkDecisionStatusV2",["approved","rejected","blocked","resolved","revoked"]),R=s({name:"ListCommunicationGovernedWorkV2Input",fields:{kind:{type:r,isOptional:!0}}}),N=s({name:"CreateCommunicationGovernedWorkV2Input",fields:{kind:{type:r,isOptional:!1},title:{type:a.String_unsecure(),isOptional:!1},threadId:{type:a.String_unsecure(),isOptional:!0},details:{type:a.JSONObject(),isOptional:!0},idempotencyKey:{type:a.String_unsecure(),isOptional:!1}}}),B=s({name:"TransitionCommunicationGovernedWorkV2Input",fields:{workId:{type:a.String_unsecure(),isOptional:!1},status:{type:W,isOptional:!1},reason:{type:a.String_unsecure(),isOptional:!0},idempotencyKey:{type:a.String_unsecure(),isOptional:!1}}}),L=s({name:"ListCommunicationGovernedWorkV2Output",fields:{items:{type:o,isArray:!0,isOptional:!1}}}),pe=A({meta:d("communication.governed_work.list","List governed work from the authenticated journal partition"),io:{input:R,output:L,errors:m},policy:{auth:"user"}}),ue=v({meta:d("communication.governed_work.create","Create governed work from replay-safe client intent"),io:{input:N,output:o,errors:m},policy:{auth:"user"}}),le=v({meta:d("communication.governed_work.transition","Apply one authorized governed-work lifecycle transition"),io:{input:B,output:o,errors:m},policy:{auth:"user"}});function d(S,k){return{key:S,version:"2.0.0",stability:"experimental",owners:[...G],tags:["communication","governance","authority","server-scope"],description:k,goal:"Keep scope, principal, lifecycle state, revision, and evidence server-owned",context:"The authenticated server context is the only tenant and principal authority.",docId:M}}export{W as CommunicationGovernedWorkDecisionStatusV2Enum,ue as CreateCommunicationGovernedWorkV2Command,N as CreateCommunicationGovernedWorkV2Input,R as ListCommunicationGovernedWorkV2Input,pe as ListCommunicationGovernedWorkV2Query,le as TransitionCommunicationGovernedWorkV2Command,B as TransitionCommunicationGovernedWorkV2Input};
@@ -0,0 +1 @@
1
+ import{defineCommand as p,defineQuery as _,docId as C}from"@lssm/lib.contracts-spec";import{defineEnum as l,defineSchemaModel as a,ScalarTypeEnum as t}from"@lssm/lib.schema";import{defineEnum as i,defineSchemaModel as n,ScalarTypeEnum as e}from"@lssm/lib.schema";var m=i("CommunicationSpaceKind",["personal","organization"]),d=i("CommunicationPrincipalKind",["human","agent","system"]),y=i("CommunicationConnectionPlacement",["device","managed_cloud","self_hosted"]),I=i("CommunicationConnectionNetwork",["email","sms","slack","teams","telegram","whatsapp","discord","matrix"]),f=i("CommunicationEncryptionMode",["client_encrypted","governed_server_indexable"]),g=i("CommunicationMembershipState",["active","revoked"]),x=i("CommunicationReceiptKind",["delivered","read"]),O=i("CommunicationConnectionHealth",["connecting","healthy","degraded","offline","revoked"]),b={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"},c=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}}}),w=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:m,isOptional:!1},encryptionMode:{type:f,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1}}}),A=n({name:"CommunicationPrincipalV2",description:"Auditable human, agent, or system identity",fields:{id:{type:e.String_unsecure(),isOptional:!1},kind:{type:d,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}}}),V=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:g,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:y,isOptional:!1},externalAccountRef:{type:e.String_unsecure(),isOptional:!1},credentialRef:{type:e.String_unsecure(),isOptional:!1},health:{type:O,isOptional:!1},capabilities:{type:e.String_unsecure(),isArray:!0,isOptional:!1},createdAt:{type:e.DateTime(),isOptional:!1},updatedAt:{type:e.DateTime(),isOptional:!1}}}),S=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:S,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}}}),E=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 s=["platform.communication-os"],v={id:"communication-os.governed-work.v1",title:"CommunicationOS governed work contracts",body:"Persisted, scope-isolated reviews for identity, drafts, actions, handoffs, escalations, triage, summaries, agents, consent, retention, and policy. Managed decisions require current manager authority and every transition appends evidence.",kind:"reference",route:"/docs/communication-os/governed-work-v1",visibility:"public"},r=[C(v.id)],k=l("CommunicationGovernedWorkKind",["identity_review","draft","action","handoff","escalation","triage","summary","agent","consent","retention","policy"]),u=l("CommunicationGovernedWorkStatus",["pending","approved","rejected","blocked","resolved","revoked"]),o=a({name:"CommunicationGovernedWorkV1",fields:{id:{type:t.String_unsecure(),isOptional:!1},kind:{type:k,isOptional:!1},status:{type:u,isOptional:!1},title:{type:t.String_unsecure(),isOptional:!1},threadId:{type:t.String_unsecure(),isOptional:!0},details:{type:t.JSONObject(),isOptional:!1},revision:{type:t.Int_unsecure(),isOptional:!1},createdBy:{type:t.String_unsecure(),isOptional:!1},createdAt:{type:t.DateTime(),isOptional:!1},updatedBy:{type:t.String_unsecure(),isOptional:!1},updatedAt:{type:t.DateTime(),isOptional:!1}}}),P=_({meta:{key:"communication.governed_work.list",version:"1.0.0",stability:"experimental",owners:[...s],tags:["communication","governance","work","query"],description:"List governed work in one authorized messaging space",goal:"Drive review queues from replayable state rather than fixtures",context:"The server derives scope and filters optional kinds",docId:r},io:{input:c,output:a({name:"ListCommunicationGovernedWorkV1Output",fields:{items:{type:o,isArray:!0,isOptional:!1}}})},policy:{auth:"user"}}),K=p({meta:{key:"communication.governed_work.create",version:"1.0.0",stability:"experimental",owners:[...s],tags:["communication","governance","work","create"],description:"Create one idempotent governed work item",goal:"Start an accountable review from a real user or runtime action",context:"Client-supplied tenant or principal authority is rejected",docId:r},io:{input:o,output:o},policy:{auth:"user"}}),z=p({meta:{key:"communication.governed_work.transition",version:"1.0.0",stability:"experimental",owners:[...s],tags:["communication","governance","work","transition"],description:"Apply one policy-valid governed work transition",goal:"Record approval, denial, resolution, blocking, or revocation evidence",context:"Managed kinds require current manager authority and terminal transitions fail closed",docId:r},io:{input:a({name:"TransitionCommunicationGovernedWorkV1Input",fields:{workId:{type:t.String_unsecure(),isOptional:!1},status:{type:u,isOptional:!1},reason:{type:t.String_unsecure(),isOptional:!0}}}),output:o},policy:{auth:"user"}});export{v as CommunicationGovernedWorkDocBlock,k as CommunicationGovernedWorkKindEnum,u as CommunicationGovernedWorkStatusEnum,o as CommunicationGovernedWorkV1Model,K as CreateCommunicationGovernedWorkV1Command,P as ListCommunicationGovernedWorkV1Query,z as TransitionCommunicationGovernedWorkV1Command};
@@ -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};