@moltzap/protocol 2026.408.0 → 2026.425.0

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 (288) hide show
  1. package/dist/index.d.ts +2 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/rpc-registry.d.ts +446 -0
  6. package/dist/rpc-registry.d.ts.map +1 -0
  7. package/dist/rpc-registry.js +67 -0
  8. package/dist/rpc-registry.js.map +1 -0
  9. package/dist/rpc.d.ts +42 -0
  10. package/dist/rpc.d.ts.map +1 -0
  11. package/dist/rpc.js +29 -0
  12. package/dist/rpc.js.map +1 -0
  13. package/dist/schema/apps.d.ts +86 -0
  14. package/dist/schema/apps.d.ts.map +1 -0
  15. package/dist/schema/apps.js +77 -0
  16. package/dist/schema/apps.js.map +1 -0
  17. package/dist/schema/contacts.d.ts +8 -18
  18. package/dist/schema/contacts.d.ts.map +1 -1
  19. package/dist/schema/contacts.js +9 -13
  20. package/dist/schema/contacts.js.map +1 -1
  21. package/dist/schema/conversations.d.ts +15 -8
  22. package/dist/schema/conversations.d.ts.map +1 -1
  23. package/dist/schema/conversations.js +18 -7
  24. package/dist/schema/conversations.js.map +1 -1
  25. package/dist/schema/delivery.d.ts +1 -4
  26. package/dist/schema/delivery.d.ts.map +1 -1
  27. package/dist/schema/delivery.js +2 -3
  28. package/dist/schema/delivery.js.map +1 -1
  29. package/dist/schema/errors.d.ts +13 -0
  30. package/dist/schema/errors.d.ts.map +1 -1
  31. package/dist/schema/errors.js +14 -0
  32. package/dist/schema/errors.js.map +1 -1
  33. package/dist/schema/events.d.ts +112 -93
  34. package/dist/schema/events.d.ts.map +1 -1
  35. package/dist/schema/events.js +84 -25
  36. package/dist/schema/events.js.map +1 -1
  37. package/dist/schema/identity.d.ts +19 -17
  38. package/dist/schema/identity.d.ts.map +1 -1
  39. package/dist/schema/identity.js +7 -14
  40. package/dist/schema/identity.js.map +1 -1
  41. package/dist/schema/index.d.ts +4 -2
  42. package/dist/schema/index.d.ts.map +1 -1
  43. package/dist/schema/index.js +4 -2
  44. package/dist/schema/index.js.map +1 -1
  45. package/dist/schema/messages.d.ts +3 -7
  46. package/dist/schema/messages.d.ts.map +1 -1
  47. package/dist/schema/messages.js +4 -6
  48. package/dist/schema/messages.js.map +1 -1
  49. package/dist/schema/methods/apps.d.ts +123 -0
  50. package/dist/schema/methods/apps.d.ts.map +1 -0
  51. package/dist/schema/methods/apps.js +93 -0
  52. package/dist/schema/methods/apps.js.map +1 -0
  53. package/dist/schema/methods/auth.d.ts +102 -90
  54. package/dist/schema/methods/auth.d.ts.map +1 -1
  55. package/dist/schema/methods/auth.js +86 -74
  56. package/dist/schema/methods/auth.js.map +1 -1
  57. package/dist/schema/methods/contacts.d.ts +39 -74
  58. package/dist/schema/methods/contacts.d.ts.map +1 -1
  59. package/dist/schema/methods/contacts.js +35 -29
  60. package/dist/schema/methods/contacts.js.map +1 -1
  61. package/dist/schema/methods/conversations.d.ts +48 -52
  62. package/dist/schema/methods/conversations.d.ts.map +1 -1
  63. package/dist/schema/methods/conversations.js +89 -38
  64. package/dist/schema/methods/conversations.js.map +1 -1
  65. package/dist/schema/methods/invites.d.ts +1 -3
  66. package/dist/schema/methods/invites.d.ts.map +1 -1
  67. package/dist/schema/methods/invites.js +8 -1
  68. package/dist/schema/methods/invites.js.map +1 -1
  69. package/dist/schema/methods/messages.d.ts +12 -44
  70. package/dist/schema/methods/messages.d.ts.map +1 -1
  71. package/dist/schema/methods/messages.js +22 -28
  72. package/dist/schema/methods/messages.js.map +1 -1
  73. package/dist/schema/methods/presence.d.ts +7 -22
  74. package/dist/schema/methods/presence.d.ts.map +1 -1
  75. package/dist/schema/methods/presence.js +12 -6
  76. package/dist/schema/methods/presence.js.map +1 -1
  77. package/dist/schema/methods/push.d.ts +8 -6
  78. package/dist/schema/methods/push.d.ts.map +1 -1
  79. package/dist/schema/methods/push.js +20 -7
  80. package/dist/schema/methods/push.js.map +1 -1
  81. package/dist/schema/methods/system.d.ts +4 -0
  82. package/dist/schema/methods/system.d.ts.map +1 -0
  83. package/dist/schema/methods/system.js +11 -0
  84. package/dist/schema/methods/system.js.map +1 -0
  85. package/dist/schema/presence.d.ts +1 -12
  86. package/dist/schema/presence.d.ts.map +1 -1
  87. package/dist/schema/presence.js +2 -7
  88. package/dist/schema/presence.js.map +1 -1
  89. package/dist/schema/surfaces.d.ts +31 -25
  90. package/dist/schema/surfaces.d.ts.map +1 -1
  91. package/dist/schema/surfaces.js +40 -21
  92. package/dist/schema/surfaces.js.map +1 -1
  93. package/dist/testing/agent-registration.d.ts +49 -0
  94. package/dist/testing/agent-registration.d.ts.map +1 -0
  95. package/dist/testing/agent-registration.js +77 -0
  96. package/dist/testing/agent-registration.js.map +1 -0
  97. package/dist/testing/arbitraries/frames.d.ts +24 -0
  98. package/dist/testing/arbitraries/frames.d.ts.map +1 -0
  99. package/dist/testing/arbitraries/frames.js +36 -0
  100. package/dist/testing/arbitraries/frames.js.map +1 -0
  101. package/dist/testing/arbitraries/from-typebox.d.ts +37 -0
  102. package/dist/testing/arbitraries/from-typebox.d.ts.map +1 -0
  103. package/dist/testing/arbitraries/from-typebox.js +131 -0
  104. package/dist/testing/arbitraries/from-typebox.js.map +1 -0
  105. package/dist/testing/arbitraries/index.d.ts +4 -0
  106. package/dist/testing/arbitraries/index.d.ts.map +1 -0
  107. package/dist/testing/arbitraries/index.js +4 -0
  108. package/dist/testing/arbitraries/index.js.map +1 -0
  109. package/dist/testing/arbitraries/rpc.d.ts +66 -0
  110. package/dist/testing/arbitraries/rpc.d.ts.map +1 -0
  111. package/dist/testing/arbitraries/rpc.js +98 -0
  112. package/dist/testing/arbitraries/rpc.js.map +1 -0
  113. package/dist/testing/canonicalize.d.ts +38 -0
  114. package/dist/testing/canonicalize.d.ts.map +1 -0
  115. package/dist/testing/canonicalize.js +55 -0
  116. package/dist/testing/canonicalize.js.map +1 -0
  117. package/dist/testing/captures.d.ts +61 -0
  118. package/dist/testing/captures.d.ts.map +1 -0
  119. package/dist/testing/captures.js +99 -0
  120. package/dist/testing/captures.js.map +1 -0
  121. package/dist/testing/codec.d.ts +44 -0
  122. package/dist/testing/codec.d.ts.map +1 -0
  123. package/dist/testing/codec.js +170 -0
  124. package/dist/testing/codec.js.map +1 -0
  125. package/dist/testing/conformance/__divergence_proofs__/executable-proof-helpers.d.ts +6 -0
  126. package/dist/testing/conformance/__divergence_proofs__/executable-proof-helpers.d.ts.map +1 -0
  127. package/dist/testing/conformance/__divergence_proofs__/executable-proof-helpers.js +33 -0
  128. package/dist/testing/conformance/__divergence_proofs__/executable-proof-helpers.js.map +1 -0
  129. package/dist/testing/conformance/adversity.d.ts +36 -0
  130. package/dist/testing/conformance/adversity.d.ts.map +1 -0
  131. package/dist/testing/conformance/adversity.js +360 -0
  132. package/dist/testing/conformance/adversity.js.map +1 -0
  133. package/dist/testing/conformance/boundary.d.ts +56 -0
  134. package/dist/testing/conformance/boundary.d.ts.map +1 -0
  135. package/dist/testing/conformance/boundary.js +129 -0
  136. package/dist/testing/conformance/boundary.js.map +1 -0
  137. package/dist/testing/conformance/client/_fixtures.d.ts +71 -0
  138. package/dist/testing/conformance/client/_fixtures.d.ts.map +1 -0
  139. package/dist/testing/conformance/client/_fixtures.js +102 -0
  140. package/dist/testing/conformance/client/_fixtures.js.map +1 -0
  141. package/dist/testing/conformance/client/adversity.d.ts +39 -0
  142. package/dist/testing/conformance/client/adversity.d.ts.map +1 -0
  143. package/dist/testing/conformance/client/adversity.js +162 -0
  144. package/dist/testing/conformance/client/adversity.js.map +1 -0
  145. package/dist/testing/conformance/client/boundary.d.ts +12 -0
  146. package/dist/testing/conformance/client/boundary.d.ts.map +1 -0
  147. package/dist/testing/conformance/client/boundary.js +68 -0
  148. package/dist/testing/conformance/client/boundary.js.map +1 -0
  149. package/dist/testing/conformance/client/delivery.d.ts +38 -0
  150. package/dist/testing/conformance/client/delivery.d.ts.map +1 -0
  151. package/dist/testing/conformance/client/delivery.js +202 -0
  152. package/dist/testing/conformance/client/delivery.js.map +1 -0
  153. package/dist/testing/conformance/client/index.d.ts +16 -0
  154. package/dist/testing/conformance/client/index.d.ts.map +1 -0
  155. package/dist/testing/conformance/client/index.js +16 -0
  156. package/dist/testing/conformance/client/index.js.map +1 -0
  157. package/dist/testing/conformance/client/rpc-semantics.d.ts +26 -0
  158. package/dist/testing/conformance/client/rpc-semantics.d.ts.map +1 -0
  159. package/dist/testing/conformance/client/rpc-semantics.js +145 -0
  160. package/dist/testing/conformance/client/rpc-semantics.js.map +1 -0
  161. package/dist/testing/conformance/client/runner.d.ts +258 -0
  162. package/dist/testing/conformance/client/runner.d.ts.map +1 -0
  163. package/dist/testing/conformance/client/runner.js +228 -0
  164. package/dist/testing/conformance/client/runner.js.map +1 -0
  165. package/dist/testing/conformance/client/schema-conformance.d.ts +25 -0
  166. package/dist/testing/conformance/client/schema-conformance.d.ts.map +1 -0
  167. package/dist/testing/conformance/client/schema-conformance.js +123 -0
  168. package/dist/testing/conformance/client/schema-conformance.js.map +1 -0
  169. package/dist/testing/conformance/client/suite.d.ts +90 -0
  170. package/dist/testing/conformance/client/suite.d.ts.map +1 -0
  171. package/dist/testing/conformance/client/suite.js +209 -0
  172. package/dist/testing/conformance/client/suite.js.map +1 -0
  173. package/dist/testing/conformance/coverage-policy.d.ts +8 -0
  174. package/dist/testing/conformance/coverage-policy.d.ts.map +1 -0
  175. package/dist/testing/conformance/coverage-policy.js +10 -0
  176. package/dist/testing/conformance/coverage-policy.js.map +1 -0
  177. package/dist/testing/conformance/delivery.d.ts +40 -0
  178. package/dist/testing/conformance/delivery.d.ts.map +1 -0
  179. package/dist/testing/conformance/delivery.js +231 -0
  180. package/dist/testing/conformance/delivery.js.map +1 -0
  181. package/dist/testing/conformance/env.d.ts +3 -0
  182. package/dist/testing/conformance/env.d.ts.map +1 -0
  183. package/dist/testing/conformance/env.js +14 -0
  184. package/dist/testing/conformance/env.js.map +1 -0
  185. package/dist/testing/conformance/index.d.ts +10 -0
  186. package/dist/testing/conformance/index.d.ts.map +1 -0
  187. package/dist/testing/conformance/index.js +10 -0
  188. package/dist/testing/conformance/index.js.map +1 -0
  189. package/dist/testing/conformance/registry.d.ts +93 -0
  190. package/dist/testing/conformance/registry.d.ts.map +1 -0
  191. package/dist/testing/conformance/registry.js +62 -0
  192. package/dist/testing/conformance/registry.js.map +1 -0
  193. package/dist/testing/conformance/rpc-semantics.d.ts +67 -0
  194. package/dist/testing/conformance/rpc-semantics.d.ts.map +1 -0
  195. package/dist/testing/conformance/rpc-semantics.js +394 -0
  196. package/dist/testing/conformance/rpc-semantics.js.map +1 -0
  197. package/dist/testing/conformance/runner.d.ts +78 -0
  198. package/dist/testing/conformance/runner.d.ts.map +1 -0
  199. package/dist/testing/conformance/runner.js +65 -0
  200. package/dist/testing/conformance/runner.js.map +1 -0
  201. package/dist/testing/conformance/schema-conformance.d.ts +30 -0
  202. package/dist/testing/conformance/schema-conformance.d.ts.map +1 -0
  203. package/dist/testing/conformance/schema-conformance.js +229 -0
  204. package/dist/testing/conformance/schema-conformance.js.map +1 -0
  205. package/dist/testing/conformance/suite.d.ts +92 -0
  206. package/dist/testing/conformance/suite.d.ts.map +1 -0
  207. package/dist/testing/conformance/suite.js +233 -0
  208. package/dist/testing/conformance/suite.js.map +1 -0
  209. package/dist/testing/errors.d.ts +78 -0
  210. package/dist/testing/errors.d.ts.map +1 -0
  211. package/dist/testing/errors.js +34 -0
  212. package/dist/testing/errors.js.map +1 -0
  213. package/dist/testing/index.d.ts +25 -0
  214. package/dist/testing/index.d.ts.map +1 -0
  215. package/dist/testing/index.js +37 -0
  216. package/dist/testing/index.js.map +1 -0
  217. package/dist/testing/models/dispatch.d.ts +61 -0
  218. package/dist/testing/models/dispatch.d.ts.map +1 -0
  219. package/dist/testing/models/dispatch.js +197 -0
  220. package/dist/testing/models/dispatch.js.map +1 -0
  221. package/dist/testing/models/index.d.ts +3 -0
  222. package/dist/testing/models/index.d.ts.map +1 -0
  223. package/dist/testing/models/index.js +3 -0
  224. package/dist/testing/models/index.js.map +1 -0
  225. package/dist/testing/models/state.d.ts +37 -0
  226. package/dist/testing/models/state.d.ts.map +1 -0
  227. package/dist/testing/models/state.js +14 -0
  228. package/dist/testing/models/state.js.map +1 -0
  229. package/dist/testing/test-client.d.ts +70 -0
  230. package/dist/testing/test-client.d.ts.map +1 -0
  231. package/dist/testing/test-client.js +266 -0
  232. package/dist/testing/test-client.js.map +1 -0
  233. package/dist/testing/test-server.d.ts +62 -0
  234. package/dist/testing/test-server.d.ts.map +1 -0
  235. package/dist/testing/test-server.js +134 -0
  236. package/dist/testing/test-server.js.map +1 -0
  237. package/dist/testing/toxics/client.d.ts +52 -0
  238. package/dist/testing/toxics/client.d.ts.map +1 -0
  239. package/dist/testing/toxics/client.js +120 -0
  240. package/dist/testing/toxics/client.js.map +1 -0
  241. package/dist/testing/toxics/defaults.d.ts +43 -0
  242. package/dist/testing/toxics/defaults.d.ts.map +1 -0
  243. package/dist/testing/toxics/defaults.js +9 -0
  244. package/dist/testing/toxics/defaults.js.map +1 -0
  245. package/dist/testing/toxics/index.d.ts +4 -0
  246. package/dist/testing/toxics/index.d.ts.map +1 -0
  247. package/dist/testing/toxics/index.js +4 -0
  248. package/dist/testing/toxics/index.js.map +1 -0
  249. package/dist/testing/toxics/profile.d.ts +69 -0
  250. package/dist/testing/toxics/profile.d.ts.map +1 -0
  251. package/dist/testing/toxics/profile.js +57 -0
  252. package/dist/testing/toxics/profile.js.map +1 -0
  253. package/dist/types.d.ts +7 -11
  254. package/dist/types.d.ts.map +1 -1
  255. package/dist/types.js +3 -0
  256. package/dist/types.js.map +1 -1
  257. package/dist/validators.d.ts +49 -177
  258. package/dist/validators.d.ts.map +1 -1
  259. package/dist/validators.js +77 -48
  260. package/dist/validators.js.map +1 -1
  261. package/dist/version.d.ts +1 -1
  262. package/dist/version.js +1 -1
  263. package/package.json +18 -40
  264. package/LICENSE +0 -21
  265. package/dist/optional/contact-events.d.ts +0 -3
  266. package/dist/optional/contact-events.d.ts.map +0 -1
  267. package/dist/optional/contact-events.js +0 -5
  268. package/dist/optional/contact-events.js.map +0 -1
  269. package/dist/optional/contact-methods.d.ts +0 -5
  270. package/dist/optional/contact-methods.d.ts.map +0 -1
  271. package/dist/optional/contact-methods.js +0 -5
  272. package/dist/optional/contact-methods.js.map +0 -1
  273. package/dist/phone-hash.d.ts +0 -10
  274. package/dist/phone-hash.d.ts.map +0 -1
  275. package/dist/phone-hash.js +0 -17
  276. package/dist/phone-hash.js.map +0 -1
  277. package/dist/schema/methods/phone-contacts.d.ts +0 -30
  278. package/dist/schema/methods/phone-contacts.d.ts.map +0 -1
  279. package/dist/schema/methods/phone-contacts.js +0 -10
  280. package/dist/schema/methods/phone-contacts.js.map +0 -1
  281. package/dist/test-client.d.ts +0 -34
  282. package/dist/test-client.d.ts.map +0 -1
  283. package/dist/test-client.js +0 -176
  284. package/dist/test-client.js.map +0 -1
  285. package/dist/test-fixtures/phone-hashes.d.ts +0 -18
  286. package/dist/test-fixtures/phone-hashes.d.ts.map +0 -1
  287. package/dist/test-fixtures/phone-hashes.js +0 -24
  288. package/dist/test-fixtures/phone-hashes.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -4,7 +4,8 @@ export { ErrorCodes } from "./schema/errors.js";
4
4
  export { EventNames } from "./schema/events.js";
5
5
  export * from "./schema/index.js";
6
6
  export * from "./types.js";
7
+ export * from "./rpc.js";
8
+ export * from "./rpc-registry.js";
7
9
  export { stringEnum, brandedId, DateTimeString, eventFrame, } from "./helpers.js";
8
- export { PHONE_HASH_VECTORS } from "./test-fixtures/phone-hashes.js";
9
10
  export { SEED_USERS, SEED_AGENTS, SEED_CONVERSATIONS, SEED_CONTACTS, SEED_MESSAGES, SEED_CONTROL_MESSAGES, SEED_SURFACES, SEED_SURFACE_HISTORY, } from "./test-fixtures/seed-data.js";
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,UAAU,EACV,SAAS,EACT,cAAc,EACd,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EACL,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,oBAAoB,GACrB,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,OAAO,EACL,UAAU,EACV,SAAS,EACT,cAAc,EACd,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,oBAAoB,GACrB,MAAM,8BAA8B,CAAC"}
package/dist/index.js CHANGED
@@ -4,7 +4,8 @@ export { ErrorCodes } from "./schema/errors.js";
4
4
  export { EventNames } from "./schema/events.js";
5
5
  export * from "./schema/index.js";
6
6
  export * from "./types.js";
7
+ export * from "./rpc.js";
8
+ export * from "./rpc-registry.js";
7
9
  export { stringEnum, brandedId, DateTimeString, eventFrame, } from "./helpers.js";
8
- export { PHONE_HASH_VECTORS } from "./test-fixtures/phone-hashes.js";
9
10
  export { SEED_USERS, SEED_AGENTS, SEED_CONVERSATIONS, SEED_CONTACTS, SEED_MESSAGES, SEED_CONTROL_MESSAGES, SEED_SURFACES, SEED_SURFACE_HISTORY, } from "./test-fixtures/seed-data.js";
10
11
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,UAAU,EACV,SAAS,EACT,cAAc,EACd,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EACL,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,oBAAoB,GACrB,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,OAAO,EACL,UAAU,EACV,SAAS,EACT,cAAc,EACd,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,oBAAoB,GACrB,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,446 @@
1
+ import type { RpcDefinition } from "./rpc.js";
2
+ /**
3
+ * Every RPC manifest the protocol defines, as a literal tuple. Order doesn't
4
+ * matter — the wire name is the dispatch key. The `as const` is load-bearing:
5
+ * it preserves literal types so `RpcMap` can project every manifest by its
6
+ * `name` into a keyed type.
7
+ */
8
+ export declare const rpcMethods: readonly [RpcDefinition<"auth/connect", import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
9
+ agentKey: import("@sinclair/typebox").TString;
10
+ minProtocol: import("@sinclair/typebox").TString;
11
+ maxProtocol: import("@sinclair/typebox").TString;
12
+ }>, import("@sinclair/typebox").TObject<{
13
+ sessionToken: import("@sinclair/typebox").TString;
14
+ minProtocol: import("@sinclair/typebox").TString;
15
+ maxProtocol: import("@sinclair/typebox").TString;
16
+ }>]>, import("@sinclair/typebox").TObject<{
17
+ protocolVersion: import("@sinclair/typebox").TString;
18
+ agentId: import("@sinclair/typebox").TString;
19
+ conversations: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
20
+ id: import("@sinclair/typebox").TString;
21
+ type: import("@sinclair/typebox").TUnsafe<"dm" | "group">;
22
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
23
+ lastMessagePreview: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
24
+ lastMessageTimestamp: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
25
+ unreadCount: import("@sinclair/typebox").TInteger;
26
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
27
+ tags: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TString>>>;
28
+ }>>;
29
+ participants: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
30
+ type: import("@sinclair/typebox").TUnsafe<"agent">;
31
+ id: import("@sinclair/typebox").TString;
32
+ }>>>;
33
+ }>>;
34
+ unreadCounts: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TInteger>;
35
+ policy: import("@sinclair/typebox").TObject<{
36
+ maxMessageBytes: import("@sinclair/typebox").TInteger;
37
+ maxPartsPerMessage: import("@sinclair/typebox").TInteger;
38
+ maxTextLength: import("@sinclair/typebox").TInteger;
39
+ maxGroupParticipants: import("@sinclair/typebox").TInteger;
40
+ heartbeatIntervalMs: import("@sinclair/typebox").TInteger;
41
+ rateLimits: import("@sinclair/typebox").TObject<{
42
+ messagesPerMinute: import("@sinclair/typebox").TInteger;
43
+ requestsPerMinute: import("@sinclair/typebox").TInteger;
44
+ }>;
45
+ }>;
46
+ }>>, RpcDefinition<"auth/register", import("@sinclair/typebox").TObject<{
47
+ name: import("@sinclair/typebox").TString;
48
+ description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
49
+ inviteCode: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
50
+ }>, import("@sinclair/typebox").TObject<{
51
+ agentId: import("@sinclair/typebox").TString;
52
+ apiKey: import("@sinclair/typebox").TString;
53
+ claimUrl: import("@sinclair/typebox").TString;
54
+ claimToken: import("@sinclair/typebox").TString;
55
+ }>>, RpcDefinition<"auth/invite-agent", import("@sinclair/typebox").TObject<{
56
+ phone: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
57
+ }>, import("@sinclair/typebox").TObject<{}>>, RpcDefinition<"auth/selectAgent", import("@sinclair/typebox").TObject<{
58
+ agentId: import("@sinclair/typebox").TString;
59
+ }>, import("@sinclair/typebox").TObject<{}>>, RpcDefinition<"agents/lookup", import("@sinclair/typebox").TObject<{
60
+ agentIds: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
61
+ }>, import("@sinclair/typebox").TObject<{
62
+ agents: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
63
+ description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
64
+ id: import("@sinclair/typebox").TString;
65
+ ownerUserId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
66
+ name: import("@sinclair/typebox").TString;
67
+ displayName: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
68
+ agentType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"OpenClaw" | "NanoClaw">>;
69
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
70
+ purpose: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
71
+ description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
72
+ tags: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TString>>;
73
+ }>>;
74
+ status: import("@sinclair/typebox").TUnsafe<"pending_claim" | "active" | "suspended">;
75
+ }>>;
76
+ }>>, RpcDefinition<"agents/lookupByName", import("@sinclair/typebox").TObject<{
77
+ names: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
78
+ }>, import("@sinclair/typebox").TObject<{
79
+ agents: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
80
+ description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
81
+ id: import("@sinclair/typebox").TString;
82
+ ownerUserId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
83
+ name: import("@sinclair/typebox").TString;
84
+ displayName: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
85
+ agentType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"OpenClaw" | "NanoClaw">>;
86
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
87
+ purpose: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
88
+ description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
89
+ tags: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TString>>;
90
+ }>>;
91
+ status: import("@sinclair/typebox").TUnsafe<"pending_claim" | "active" | "suspended">;
92
+ }>>;
93
+ }>>, RpcDefinition<"agents/list", import("@sinclair/typebox").TObject<{}>, import("@sinclair/typebox").TObject<{
94
+ agents: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
95
+ description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
96
+ id: import("@sinclair/typebox").TString;
97
+ ownerUserId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
98
+ name: import("@sinclair/typebox").TString;
99
+ displayName: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
100
+ agentType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"OpenClaw" | "NanoClaw">>;
101
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
102
+ purpose: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
103
+ description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
104
+ tags: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TString>>;
105
+ }>>;
106
+ status: import("@sinclair/typebox").TUnsafe<"pending_claim" | "active" | "suspended">;
107
+ }>>;
108
+ }>>, RpcDefinition<"conversations/create", import("@sinclair/typebox").TObject<{
109
+ type: import("@sinclair/typebox").TUnsafe<"dm" | "group">;
110
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
111
+ participants: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
112
+ type: import("@sinclair/typebox").TUnsafe<"agent">;
113
+ id: import("@sinclair/typebox").TString;
114
+ }>>;
115
+ }>, import("@sinclair/typebox").TObject<{
116
+ conversation: import("@sinclair/typebox").TObject<{
117
+ id: import("@sinclair/typebox").TString;
118
+ type: import("@sinclair/typebox").TUnsafe<"dm" | "group">;
119
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
120
+ createdBy: import("@sinclair/typebox").TString;
121
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
122
+ tags: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TString>>>;
123
+ }>>;
124
+ lastMessageTimestamp: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
125
+ createdAt: import("@sinclair/typebox").TString;
126
+ updatedAt: import("@sinclair/typebox").TString;
127
+ }>;
128
+ }>>, RpcDefinition<"conversations/list", import("@sinclair/typebox").TObject<{
129
+ limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
130
+ cursor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
131
+ archived: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"exclude" | "include" | "only">>;
132
+ }>, import("@sinclair/typebox").TObject<{
133
+ conversations: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
134
+ id: import("@sinclair/typebox").TString;
135
+ type: import("@sinclair/typebox").TUnsafe<"dm" | "group">;
136
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
137
+ lastMessagePreview: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
138
+ lastMessageTimestamp: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
139
+ unreadCount: import("@sinclair/typebox").TInteger;
140
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
141
+ tags: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TString>>>;
142
+ }>>;
143
+ participants: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
144
+ type: import("@sinclair/typebox").TUnsafe<"agent">;
145
+ id: import("@sinclair/typebox").TString;
146
+ }>>>;
147
+ }>>;
148
+ cursor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
149
+ }>>, RpcDefinition<"conversations/get", import("@sinclair/typebox").TObject<{
150
+ conversationId: import("@sinclair/typebox").TString;
151
+ }>, import("@sinclair/typebox").TObject<{
152
+ conversation: import("@sinclair/typebox").TObject<{
153
+ id: import("@sinclair/typebox").TString;
154
+ type: import("@sinclair/typebox").TUnsafe<"dm" | "group">;
155
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
156
+ createdBy: import("@sinclair/typebox").TString;
157
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
158
+ tags: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TString>>>;
159
+ }>>;
160
+ lastMessageTimestamp: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
161
+ createdAt: import("@sinclair/typebox").TString;
162
+ updatedAt: import("@sinclair/typebox").TString;
163
+ }>;
164
+ participants: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
165
+ conversationId: import("@sinclair/typebox").TString;
166
+ participant: import("@sinclair/typebox").TObject<{
167
+ type: import("@sinclair/typebox").TUnsafe<"agent">;
168
+ id: import("@sinclair/typebox").TString;
169
+ }>;
170
+ role: import("@sinclair/typebox").TUnsafe<"owner" | "admin" | "member">;
171
+ joinedAt: import("@sinclair/typebox").TString;
172
+ lastReadMessageId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
173
+ mutedUntil: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
174
+ agentName: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
175
+ agentDisplayName: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
176
+ }>>;
177
+ }>>, RpcDefinition<"conversations/update", import("@sinclair/typebox").TObject<{
178
+ conversationId: import("@sinclair/typebox").TString;
179
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
180
+ }>, import("@sinclair/typebox").TObject<{}>>, RpcDefinition<"conversations/mute", import("@sinclair/typebox").TObject<{
181
+ conversationId: import("@sinclair/typebox").TString;
182
+ until: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
183
+ }>, import("@sinclair/typebox").TObject<{}>>, RpcDefinition<"conversations/unmute", import("@sinclair/typebox").TObject<{
184
+ conversationId: import("@sinclair/typebox").TString;
185
+ }>, import("@sinclair/typebox").TObject<{}>>, RpcDefinition<"conversations/addParticipant", import("@sinclair/typebox").TObject<{
186
+ conversationId: import("@sinclair/typebox").TString;
187
+ participant: import("@sinclair/typebox").TObject<{
188
+ type: import("@sinclair/typebox").TUnsafe<"agent">;
189
+ id: import("@sinclair/typebox").TString;
190
+ }>;
191
+ }>, import("@sinclair/typebox").TObject<{}>>, RpcDefinition<"conversations/removeParticipant", import("@sinclair/typebox").TObject<{
192
+ conversationId: import("@sinclair/typebox").TString;
193
+ participant: import("@sinclair/typebox").TObject<{
194
+ type: import("@sinclair/typebox").TUnsafe<"agent">;
195
+ id: import("@sinclair/typebox").TString;
196
+ }>;
197
+ }>, import("@sinclair/typebox").TObject<{}>>, RpcDefinition<"conversations/leave", import("@sinclair/typebox").TObject<{
198
+ conversationId: import("@sinclair/typebox").TString;
199
+ }>, import("@sinclair/typebox").TObject<{}>>, RpcDefinition<"conversations/archive", import("@sinclair/typebox").TObject<{
200
+ conversationId: import("@sinclair/typebox").TString;
201
+ }>, import("@sinclair/typebox").TObject<{}>>, RpcDefinition<"conversations/unarchive", import("@sinclair/typebox").TObject<{
202
+ conversationId: import("@sinclair/typebox").TString;
203
+ }>, import("@sinclair/typebox").TObject<{}>>, RpcDefinition<"messages/send", import("@sinclair/typebox").TObject<{
204
+ conversationId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
205
+ to: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
206
+ parts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
207
+ type: import("@sinclair/typebox").TLiteral<"text">;
208
+ text: import("@sinclair/typebox").TString;
209
+ }>, import("@sinclair/typebox").TObject<{
210
+ type: import("@sinclair/typebox").TLiteral<"image">;
211
+ url: import("@sinclair/typebox").TString;
212
+ altText: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
213
+ }>, import("@sinclair/typebox").TObject<{
214
+ type: import("@sinclair/typebox").TLiteral<"file">;
215
+ url: import("@sinclair/typebox").TString;
216
+ name: import("@sinclair/typebox").TString;
217
+ mimeType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
218
+ size: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
219
+ }>]>>;
220
+ replyToId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
221
+ }>, import("@sinclair/typebox").TObject<{
222
+ message: import("@sinclair/typebox").TObject<{
223
+ id: import("@sinclair/typebox").TString;
224
+ conversationId: import("@sinclair/typebox").TString;
225
+ senderId: import("@sinclair/typebox").TString;
226
+ replyToId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
227
+ parts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
228
+ type: import("@sinclair/typebox").TLiteral<"text">;
229
+ text: import("@sinclair/typebox").TString;
230
+ }>, import("@sinclair/typebox").TObject<{
231
+ type: import("@sinclair/typebox").TLiteral<"image">;
232
+ url: import("@sinclair/typebox").TString;
233
+ altText: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
234
+ }>, import("@sinclair/typebox").TObject<{
235
+ type: import("@sinclair/typebox").TLiteral<"file">;
236
+ url: import("@sinclair/typebox").TString;
237
+ name: import("@sinclair/typebox").TString;
238
+ mimeType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
239
+ size: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
240
+ }>]>>;
241
+ taggedEntities: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
242
+ patchedBy: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
243
+ createdAt: import("@sinclair/typebox").TString;
244
+ }>;
245
+ }>>, RpcDefinition<"messages/list", import("@sinclair/typebox").TObject<{
246
+ conversationId: import("@sinclair/typebox").TString;
247
+ limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
248
+ }>, import("@sinclair/typebox").TObject<{
249
+ messages: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
250
+ id: import("@sinclair/typebox").TString;
251
+ conversationId: import("@sinclair/typebox").TString;
252
+ senderId: import("@sinclair/typebox").TString;
253
+ replyToId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
254
+ parts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
255
+ type: import("@sinclair/typebox").TLiteral<"text">;
256
+ text: import("@sinclair/typebox").TString;
257
+ }>, import("@sinclair/typebox").TObject<{
258
+ type: import("@sinclair/typebox").TLiteral<"image">;
259
+ url: import("@sinclair/typebox").TString;
260
+ altText: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
261
+ }>, import("@sinclair/typebox").TObject<{
262
+ type: import("@sinclair/typebox").TLiteral<"file">;
263
+ url: import("@sinclair/typebox").TString;
264
+ name: import("@sinclair/typebox").TString;
265
+ mimeType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
266
+ size: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
267
+ }>]>>;
268
+ taggedEntities: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
269
+ patchedBy: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
270
+ createdAt: import("@sinclair/typebox").TString;
271
+ }>>;
272
+ hasMore: import("@sinclair/typebox").TBoolean;
273
+ }>>, RpcDefinition<"contacts/list", import("@sinclair/typebox").TObject<{}>, import("@sinclair/typebox").TObject<{
274
+ contacts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
275
+ id: import("@sinclair/typebox").TString;
276
+ contactUserId: import("@sinclair/typebox").TString;
277
+ source: import("@sinclair/typebox").TUnsafe<"email" | "phone" | "manual">;
278
+ relationship: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
279
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
280
+ tags: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TString>>>;
281
+ }>>;
282
+ }>>;
283
+ }>>, RpcDefinition<"contacts/add", import("@sinclair/typebox").TObject<{
284
+ contactUserId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
285
+ source: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"email" | "phone" | "manual">>;
286
+ relationship: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
287
+ }>, import("@sinclair/typebox").TObject<{
288
+ contact: import("@sinclair/typebox").TObject<{
289
+ id: import("@sinclair/typebox").TString;
290
+ contactUserId: import("@sinclair/typebox").TString;
291
+ source: import("@sinclair/typebox").TUnsafe<"email" | "phone" | "manual">;
292
+ relationship: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
293
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
294
+ tags: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TString>>>;
295
+ }>>;
296
+ }>;
297
+ }>>, RpcDefinition<"contacts/accept", import("@sinclair/typebox").TObject<{
298
+ contactId: import("@sinclair/typebox").TString;
299
+ }>, import("@sinclair/typebox").TObject<{
300
+ contact: import("@sinclair/typebox").TObject<{
301
+ id: import("@sinclair/typebox").TString;
302
+ contactUserId: import("@sinclair/typebox").TString;
303
+ source: import("@sinclair/typebox").TUnsafe<"email" | "phone" | "manual">;
304
+ relationship: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
305
+ metadata: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
306
+ tags: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TString>>>;
307
+ }>>;
308
+ }>;
309
+ }>>, RpcDefinition<"invites/createAgent", import("@sinclair/typebox").TObject<{}>, import("@sinclair/typebox").TObject<{}>>, RpcDefinition<"presence/update", import("@sinclair/typebox").TObject<{
310
+ status: import("@sinclair/typebox").TUnsafe<"online" | "offline" | "away">;
311
+ }>, import("@sinclair/typebox").TObject<{}>>, RpcDefinition<"presence/subscribe", import("@sinclair/typebox").TObject<{
312
+ agentIds: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
313
+ }>, import("@sinclair/typebox").TObject<{
314
+ statuses: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
315
+ agentId: import("@sinclair/typebox").TString;
316
+ status: import("@sinclair/typebox").TUnsafe<"online" | "offline" | "away">;
317
+ }>>;
318
+ }>>, RpcDefinition<"push/register", import("@sinclair/typebox").TObject<{
319
+ deviceToken: import("@sinclair/typebox").TString;
320
+ platform: import("@sinclair/typebox").TUnsafe<"web" | "ios" | "android">;
321
+ }>, import("@sinclair/typebox").TObject<{}>>, RpcDefinition<"push/unregister", import("@sinclair/typebox").TObject<{
322
+ deviceToken: import("@sinclair/typebox").TString;
323
+ }>, import("@sinclair/typebox").TObject<{}>>, RpcDefinition<"apps/create", import("@sinclair/typebox").TObject<{
324
+ appId: import("@sinclair/typebox").TString;
325
+ invitedAgentIds: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
326
+ }>, import("@sinclair/typebox").TObject<{
327
+ session: import("@sinclair/typebox").TObject<{
328
+ id: import("@sinclair/typebox").TString;
329
+ appId: import("@sinclair/typebox").TString;
330
+ initiatorAgentId: import("@sinclair/typebox").TString;
331
+ status: import("@sinclair/typebox").TUnsafe<"active" | "waiting" | "failed" | "closed">;
332
+ conversations: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TString>;
333
+ createdAt: import("@sinclair/typebox").TString;
334
+ closedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
335
+ }>;
336
+ }>>, RpcDefinition<"apps/attestSkill", import("@sinclair/typebox").TObject<{
337
+ challengeId: import("@sinclair/typebox").TString;
338
+ skillUrl: import("@sinclair/typebox").TString;
339
+ version: import("@sinclair/typebox").TString;
340
+ }>, import("@sinclair/typebox").TObject<{}>>, RpcDefinition<"permissions/grant", import("@sinclair/typebox").TObject<{
341
+ sessionId: import("@sinclair/typebox").TString;
342
+ agentId: import("@sinclair/typebox").TString;
343
+ resource: import("@sinclair/typebox").TString;
344
+ access: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
345
+ }>, import("@sinclair/typebox").TObject<{}>>, RpcDefinition<"permissions/list", import("@sinclair/typebox").TObject<{
346
+ appId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
347
+ }>, import("@sinclair/typebox").TObject<{
348
+ grants: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
349
+ appId: import("@sinclair/typebox").TString;
350
+ resource: import("@sinclair/typebox").TString;
351
+ access: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
352
+ grantedAt: import("@sinclair/typebox").TString;
353
+ }>>;
354
+ }>>, RpcDefinition<"permissions/revoke", import("@sinclair/typebox").TObject<{
355
+ appId: import("@sinclair/typebox").TString;
356
+ resource: import("@sinclair/typebox").TString;
357
+ }>, import("@sinclair/typebox").TObject<{}>>, RpcDefinition<"apps/closeSession", import("@sinclair/typebox").TObject<{
358
+ sessionId: import("@sinclair/typebox").TString;
359
+ }>, import("@sinclair/typebox").TObject<{
360
+ closed: import("@sinclair/typebox").TBoolean;
361
+ }>>, RpcDefinition<"apps/getSession", import("@sinclair/typebox").TObject<{
362
+ sessionId: import("@sinclair/typebox").TString;
363
+ }>, import("@sinclair/typebox").TObject<{
364
+ session: import("@sinclair/typebox").TObject<{
365
+ id: import("@sinclair/typebox").TString;
366
+ appId: import("@sinclair/typebox").TString;
367
+ initiatorAgentId: import("@sinclair/typebox").TString;
368
+ status: import("@sinclair/typebox").TUnsafe<"active" | "waiting" | "failed" | "closed">;
369
+ conversations: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TString>;
370
+ createdAt: import("@sinclair/typebox").TString;
371
+ closedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
372
+ }>;
373
+ }>>, RpcDefinition<"apps/listSessions", import("@sinclair/typebox").TObject<{
374
+ appId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
375
+ status: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"active" | "waiting" | "closed">>;
376
+ limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
377
+ }>, import("@sinclair/typebox").TObject<{
378
+ sessions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
379
+ id: import("@sinclair/typebox").TString;
380
+ appId: import("@sinclair/typebox").TString;
381
+ initiatorAgentId: import("@sinclair/typebox").TString;
382
+ status: import("@sinclair/typebox").TUnsafe<"active" | "waiting" | "failed" | "closed">;
383
+ conversations: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TString>;
384
+ createdAt: import("@sinclair/typebox").TString;
385
+ closedAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
386
+ }>>;
387
+ }>>, RpcDefinition<"surface/update", import("@sinclair/typebox").TObject<{
388
+ conversationId: import("@sinclair/typebox").TString;
389
+ title: import("@sinclair/typebox").TString;
390
+ spec: import("@sinclair/typebox").TObject<{
391
+ root: import("@sinclair/typebox").TString;
392
+ elements: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>;
393
+ state: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
394
+ }>;
395
+ }>, import("@sinclair/typebox").TObject<{}>>, RpcDefinition<"surface/get", import("@sinclair/typebox").TObject<{
396
+ conversationId: import("@sinclair/typebox").TString;
397
+ }>, import("@sinclair/typebox").TObject<{
398
+ surface: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
399
+ conversationId: import("@sinclair/typebox").TString;
400
+ title: import("@sinclair/typebox").TString;
401
+ spec: import("@sinclair/typebox").TObject<{
402
+ root: import("@sinclair/typebox").TString;
403
+ elements: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>;
404
+ state: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
405
+ }>;
406
+ updatedBy: import("@sinclair/typebox").TString;
407
+ updatedAt: import("@sinclair/typebox").TString;
408
+ version: import("@sinclair/typebox").TInteger;
409
+ }>, import("@sinclair/typebox").TNull]>;
410
+ }>>, RpcDefinition<"surface/action", import("@sinclair/typebox").TObject<{
411
+ conversationId: import("@sinclair/typebox").TString;
412
+ action: import("@sinclair/typebox").TObject<{
413
+ name: import("@sinclair/typebox").TString;
414
+ payload: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
415
+ }>;
416
+ }>, import("@sinclair/typebox").TObject<{}>>, RpcDefinition<"surface/clear", import("@sinclair/typebox").TObject<{
417
+ conversationId: import("@sinclair/typebox").TString;
418
+ }>, import("@sinclair/typebox").TObject<{}>>];
419
+ /**
420
+ * Projection of `rpcMethods` by wire name. For any method `M = RpcMap[Name]`:
421
+ * - `M.params` is the params type
422
+ * - `M.result` is the result type
423
+ * - `M.definition` is the full `RpcDefinition` (useful for introspection)
424
+ */
425
+ export type RpcMap = {
426
+ [M in (typeof rpcMethods)[number] as M["name"]]: {
427
+ params: M["Params"];
428
+ result: M["Result"];
429
+ definition: M;
430
+ };
431
+ };
432
+ /**
433
+ * A method name is any key of `RpcMap`. Contract-drift check: if you add a
434
+ * method to `rpcMethods`, this union expands automatically. If you rename
435
+ * the wire `name` field, every call site typed against `RpcMethodName`
436
+ * fails at compile time.
437
+ */
438
+ export type RpcMethodName = keyof RpcMap;
439
+ /** Helper for callers that want the manifest type for a given name. */
440
+ export type RpcDefinitionFor<Name extends RpcMethodName> = RpcMap[Name]["definition"];
441
+ /**
442
+ * The `rpcMethods` tuple typed as a general array of RpcDefinitions — useful
443
+ * for iteration helpers that don't care about preserving literal names.
444
+ */
445
+ export type AnyRpcDefinition = (typeof rpcMethods)[number] & RpcDefinition<string, any, any>;
446
+ //# sourceMappingURL=rpc-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-registry.d.ts","sourceRoot":"","sources":["../src/rpc-registry.ts"],"names":[],"mappings":"AAkDA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C;;;;;GAKG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CAkDb,CAAC;AAEX;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG;KAClB,CAAC,IAAI,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG;QAC/C,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;QACpB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;QACpB,UAAU,EAAE,CAAC,CAAC;KACf;CACF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC;AAEzC,uEAAuE;AACvE,MAAM,MAAM,gBAAgB,CAAC,IAAI,SAAS,aAAa,IACrD,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC;AAE7B;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,GACxD,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC"}
@@ -0,0 +1,67 @@
1
+ import { Connect, Register, InviteAgent, SelectAgent, AgentsLookup, AgentsLookupByName, AgentsList, } from "./schema/methods/auth.js";
2
+ import { ConversationsCreate, ConversationsList, ConversationsGet, ConversationsUpdate, ConversationsMute, ConversationsUnmute, ConversationsAddParticipant, ConversationsRemoveParticipant, ConversationsLeave, ConversationsArchive, ConversationsUnarchive, } from "./schema/methods/conversations.js";
3
+ import { MessagesSend, MessagesList } from "./schema/methods/messages.js";
4
+ import { ContactsList, ContactsAdd, ContactsAccept, } from "./schema/methods/contacts.js";
5
+ import { InvitesCreateAgent } from "./schema/methods/invites.js";
6
+ import { PresenceUpdate, PresenceSubscribe, } from "./schema/methods/presence.js";
7
+ import { PushRegister, PushUnregister } from "./schema/methods/push.js";
8
+ import { AppsCreate, AppsAttestSkill, PermissionsGrant, PermissionsList, PermissionsRevoke, AppsCloseSession, AppsGetSession, AppsListSessions, } from "./schema/methods/apps.js";
9
+ import { SurfaceUpdate, SurfaceGet, SurfaceAction, SurfaceClear, } from "./schema/surfaces.js";
10
+ /**
11
+ * Every RPC manifest the protocol defines, as a literal tuple. Order doesn't
12
+ * matter — the wire name is the dispatch key. The `as const` is load-bearing:
13
+ * it preserves literal types so `RpcMap` can project every manifest by its
14
+ * `name` into a keyed type.
15
+ */
16
+ export const rpcMethods = [
17
+ // Auth
18
+ Connect,
19
+ Register,
20
+ InviteAgent,
21
+ SelectAgent,
22
+ AgentsLookup,
23
+ AgentsLookupByName,
24
+ AgentsList,
25
+ // Conversations
26
+ ConversationsCreate,
27
+ ConversationsList,
28
+ ConversationsGet,
29
+ ConversationsUpdate,
30
+ ConversationsMute,
31
+ ConversationsUnmute,
32
+ ConversationsAddParticipant,
33
+ ConversationsRemoveParticipant,
34
+ ConversationsLeave,
35
+ ConversationsArchive,
36
+ ConversationsUnarchive,
37
+ // Messages
38
+ MessagesSend,
39
+ MessagesList,
40
+ // Contacts
41
+ ContactsList,
42
+ ContactsAdd,
43
+ ContactsAccept,
44
+ // Invites
45
+ InvitesCreateAgent,
46
+ // Presence
47
+ PresenceUpdate,
48
+ PresenceSubscribe,
49
+ // Push
50
+ PushRegister,
51
+ PushUnregister,
52
+ // Apps
53
+ AppsCreate,
54
+ AppsAttestSkill,
55
+ PermissionsGrant,
56
+ PermissionsList,
57
+ PermissionsRevoke,
58
+ AppsCloseSession,
59
+ AppsGetSession,
60
+ AppsListSessions,
61
+ // Surfaces
62
+ SurfaceUpdate,
63
+ SurfaceGet,
64
+ SurfaceAction,
65
+ SurfaceClear,
66
+ ];
67
+ //# sourceMappingURL=rpc-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-registry.js","sourceRoot":"","sources":["../src/rpc-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,QAAQ,EACR,WAAW,EACX,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,UAAU,GACX,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,2BAA2B,EAC3B,8BAA8B,EAC9B,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EACL,YAAY,EACZ,WAAW,EACX,cAAc,GACf,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EACL,cAAc,EACd,iBAAiB,GAClB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EACL,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,aAAa,EACb,UAAU,EACV,aAAa,EACb,YAAY,GACb,MAAM,sBAAsB,CAAC;AAG9B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,OAAO;IACP,OAAO;IACP,QAAQ;IACR,WAAW;IACX,WAAW;IACX,YAAY;IACZ,kBAAkB;IAClB,UAAU;IACV,gBAAgB;IAChB,mBAAmB;IACnB,iBAAiB;IACjB,gBAAgB;IAChB,mBAAmB;IACnB,iBAAiB;IACjB,mBAAmB;IACnB,2BAA2B;IAC3B,8BAA8B;IAC9B,kBAAkB;IAClB,oBAAoB;IACpB,sBAAsB;IACtB,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,WAAW;IACX,cAAc;IACd,UAAU;IACV,kBAAkB;IAClB,WAAW;IACX,cAAc;IACd,iBAAiB;IACjB,OAAO;IACP,YAAY;IACZ,cAAc;IACd,OAAO;IACP,UAAU;IACV,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,iBAAiB;IACjB,gBAAgB;IAChB,cAAc;IACd,gBAAgB;IAChB,WAAW;IACX,aAAa;IACb,UAAU;IACV,aAAa;IACb,YAAY;CACJ,CAAC"}
package/dist/rpc.d.ts ADDED
@@ -0,0 +1,42 @@
1
+ import { type TSchema, type Static } from "@sinclair/typebox";
2
+ /**
3
+ * Re-export TypeBox type helpers so downstream packages (client, server)
4
+ * can type against manifests without taking a direct typebox dependency.
5
+ */
6
+ export type { TSchema, Static } from "@sinclair/typebox";
7
+ /**
8
+ * A typed manifest for one RPC method. Couples:
9
+ * - `name` — the wire-level method string (e.g. `"agents/lookupByName"`)
10
+ * - `paramsSchema` / `resultSchema` — TypeBox schemas (runtime values)
11
+ * - `validateParams` — pre-compiled AJV validator for `params`
12
+ * - `Params` / `Result` — phantom type carriers so call sites can write
13
+ * `Static<D["paramsSchema"]>` without paying a generic-inference cost
14
+ *
15
+ * The `Name` type parameter is preserved as a literal string so
16
+ * `rpcMethods[number]["name"]` produces a union of every wire method.
17
+ */
18
+ export interface RpcDefinition<Name extends string, P extends TSchema, R extends TSchema> {
19
+ readonly name: Name;
20
+ readonly paramsSchema: P;
21
+ readonly resultSchema: R;
22
+ readonly validateParams: (data: unknown) => boolean;
23
+ /** Phantom carrier — inspect with `typeof def.Params` to get `Static<P>`. */
24
+ readonly Params: Static<P>;
25
+ /** Phantom carrier — inspect with `typeof def.Result` to get `Static<R>`. */
26
+ readonly Result: Static<R>;
27
+ }
28
+ /**
29
+ * Build an `RpcDefinition` from a TypeBox params + result schema. Compiles
30
+ * the params validator at call time. Result schema is carried along but
31
+ * not currently validated on the wire (clients trust server output).
32
+ */
33
+ export declare function defineRpc<Name extends string, P extends TSchema, R extends TSchema>(def: {
34
+ name: Name;
35
+ params: P;
36
+ result: R;
37
+ }): RpcDefinition<Name, P, R>;
38
+ /** Extract the params type from an RpcDefinition. */
39
+ export type ParamsOf<D> = D extends RpcDefinition<string, infer P, TSchema> ? Static<P> : never;
40
+ /** Extract the result type from an RpcDefinition. */
41
+ export type ResultOf<D> = D extends RpcDefinition<string, TSchema, infer R> ? Static<R> : never;
42
+ //# sourceMappingURL=rpc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI9D;;;GAGG;AACH,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AASzD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,aAAa,CAC5B,IAAI,SAAS,MAAM,EACnB,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,OAAO;IAEjB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC;IACpD,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3B,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CACvB,IAAI,SAAS,MAAM,EACnB,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,OAAO,EACjB,GAAG,EAAE;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,CAAC,CAAA;CAAE,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAatE;AAED,qDAAqD;AACrD,MAAM,MAAM,QAAQ,CAAC,CAAC,IACpB,CAAC,SAAS,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAExE,qDAAqD;AACrD,MAAM,MAAM,QAAQ,CAAC,CAAC,IACpB,CAAC,SAAS,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC"}