@moltzap/protocol 2026.503.4 → 2026.504.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 (225) hide show
  1. package/dist/brands.d.ts +11 -0
  2. package/dist/brands.d.ts.map +1 -0
  3. package/dist/brands.js +14 -0
  4. package/dist/brands.js.map +1 -0
  5. package/dist/helpers.d.ts +29 -26
  6. package/dist/helpers.d.ts.map +1 -1
  7. package/dist/helpers.js +34 -16
  8. package/dist/helpers.js.map +1 -1
  9. package/dist/index.d.ts +6 -3
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +6 -3
  12. package/dist/index.js.map +1 -1
  13. package/dist/internal/ajv.d.ts +5 -0
  14. package/dist/internal/ajv.d.ts.map +1 -0
  15. package/dist/internal/ajv.js +22 -0
  16. package/dist/internal/ajv.js.map +1 -0
  17. package/dist/notification.d.ts +14 -0
  18. package/dist/notification.d.ts.map +1 -0
  19. package/dist/notification.js +11 -0
  20. package/dist/notification.js.map +1 -0
  21. package/dist/rpc-errors.d.ts +30 -0
  22. package/dist/rpc-errors.d.ts.map +1 -0
  23. package/dist/rpc-errors.js +23 -0
  24. package/dist/rpc-errors.js.map +1 -0
  25. package/dist/rpc-groups.d.ts +120 -0
  26. package/dist/rpc-groups.d.ts.map +1 -0
  27. package/dist/rpc-groups.js +131 -0
  28. package/dist/rpc-groups.js.map +1 -0
  29. package/dist/rpc-registry.d.ts +1238 -278
  30. package/dist/rpc-registry.d.ts.map +1 -1
  31. package/dist/rpc-registry.js +11 -22
  32. package/dist/rpc-registry.js.map +1 -1
  33. package/dist/rpc.d.ts +26 -5
  34. package/dist/rpc.d.ts.map +1 -1
  35. package/dist/rpc.js +21 -11
  36. package/dist/rpc.js.map +1 -1
  37. package/dist/schema/apps.d.ts +13 -23
  38. package/dist/schema/apps.d.ts.map +1 -1
  39. package/dist/schema/apps.js +2 -12
  40. package/dist/schema/apps.js.map +1 -1
  41. package/dist/schema/contacts.d.ts +6 -2
  42. package/dist/schema/contacts.d.ts.map +1 -1
  43. package/dist/schema/conversations.d.ts +15 -5
  44. package/dist/schema/conversations.d.ts.map +1 -1
  45. package/dist/schema/delivery.d.ts +9 -3
  46. package/dist/schema/delivery.d.ts.map +1 -1
  47. package/dist/schema/errors.d.ts +0 -4
  48. package/dist/schema/errors.d.ts.map +1 -1
  49. package/dist/schema/errors.js +0 -4
  50. package/dist/schema/errors.js.map +1 -1
  51. package/dist/schema/frames.d.ts +48 -51
  52. package/dist/schema/frames.d.ts.map +1 -1
  53. package/dist/schema/frames.js +28 -50
  54. package/dist/schema/frames.js.map +1 -1
  55. package/dist/schema/identity.d.ts +17 -9
  56. package/dist/schema/identity.d.ts.map +1 -1
  57. package/dist/schema/index.d.ts +3 -4
  58. package/dist/schema/index.d.ts.map +1 -1
  59. package/dist/schema/index.js +3 -4
  60. package/dist/schema/index.js.map +1 -1
  61. package/dist/schema/internal-frames.d.ts +10 -0
  62. package/dist/schema/internal-frames.d.ts.map +1 -0
  63. package/dist/schema/internal-frames.js +5 -0
  64. package/dist/schema/internal-frames.js.map +1 -0
  65. package/dist/schema/invites.d.ts +6 -2
  66. package/dist/schema/invites.d.ts.map +1 -1
  67. package/dist/schema/json-rpc.d.ts +27 -0
  68. package/dist/schema/json-rpc.d.ts.map +1 -0
  69. package/dist/schema/json-rpc.js +32 -0
  70. package/dist/schema/json-rpc.js.map +1 -0
  71. package/dist/schema/messages.d.ts +15 -5
  72. package/dist/schema/messages.d.ts.map +1 -1
  73. package/dist/schema/methods/apps.d.ts +138 -85
  74. package/dist/schema/methods/apps.d.ts.map +1 -1
  75. package/dist/schema/methods/apps.js +4 -45
  76. package/dist/schema/methods/apps.js.map +1 -1
  77. package/dist/schema/methods/auth.d.ts +62 -34
  78. package/dist/schema/methods/auth.d.ts.map +1 -1
  79. package/dist/schema/methods/contacts.d.ts +27 -9
  80. package/dist/schema/methods/contacts.d.ts.map +1 -1
  81. package/dist/schema/methods/conversations.d.ts +91 -18
  82. package/dist/schema/methods/conversations.d.ts.map +1 -1
  83. package/dist/schema/methods/conversations.js +2 -2
  84. package/dist/schema/methods/conversations.js.map +1 -1
  85. package/dist/schema/methods/messages.d.ts +39 -13
  86. package/dist/schema/methods/messages.d.ts.map +1 -1
  87. package/dist/schema/methods/presence.d.ts +6 -2
  88. package/dist/schema/methods/presence.d.ts.map +1 -1
  89. package/dist/schema/notifications.d.ts +791 -0
  90. package/dist/schema/notifications.d.ts.map +1 -0
  91. package/dist/schema/notifications.js +173 -0
  92. package/dist/schema/notifications.js.map +1 -0
  93. package/dist/schema/presence.d.ts +3 -1
  94. package/dist/schema/presence.d.ts.map +1 -1
  95. package/dist/schema/primitives.d.ts +21 -5
  96. package/dist/schema/primitives.d.ts.map +1 -1
  97. package/dist/schema/primitives.js +6 -0
  98. package/dist/schema/primitives.js.map +1 -1
  99. package/dist/test-fixtures/seed-data.d.ts +0 -1388
  100. package/dist/test-fixtures/seed-data.d.ts.map +1 -1
  101. package/dist/test-fixtures/seed-data.js +0 -987
  102. package/dist/test-fixtures/seed-data.js.map +1 -1
  103. package/dist/testing/agent-registration.d.ts +3 -1
  104. package/dist/testing/agent-registration.d.ts.map +1 -1
  105. package/dist/testing/agent-registration.js +2 -14
  106. package/dist/testing/agent-registration.js.map +1 -1
  107. package/dist/testing/arbitraries/frames.d.ts +2 -2
  108. package/dist/testing/arbitraries/frames.d.ts.map +1 -1
  109. package/dist/testing/arbitraries/frames.js +7 -6
  110. package/dist/testing/arbitraries/frames.js.map +1 -1
  111. package/dist/testing/arbitraries/index.d.ts +1 -1
  112. package/dist/testing/arbitraries/index.d.ts.map +1 -1
  113. package/dist/testing/arbitraries/index.js +1 -1
  114. package/dist/testing/arbitraries/index.js.map +1 -1
  115. package/dist/testing/arbitraries/rpc.d.ts +3 -2
  116. package/dist/testing/arbitraries/rpc.d.ts.map +1 -1
  117. package/dist/testing/arbitraries/rpc.js +1 -0
  118. package/dist/testing/arbitraries/rpc.js.map +1 -1
  119. package/dist/testing/codec.d.ts +13 -11
  120. package/dist/testing/codec.d.ts.map +1 -1
  121. package/dist/testing/codec.js +30 -45
  122. package/dist/testing/codec.js.map +1 -1
  123. package/dist/testing/conformance/__divergence_proofs__/executable-proof-helpers.d.ts.map +1 -1
  124. package/dist/testing/conformance/__divergence_proofs__/executable-proof-helpers.js +10 -3
  125. package/dist/testing/conformance/__divergence_proofs__/executable-proof-helpers.js.map +1 -1
  126. package/dist/testing/conformance/_helpers.d.ts +6 -6
  127. package/dist/testing/conformance/_helpers.d.ts.map +1 -1
  128. package/dist/testing/conformance/_helpers.js +6 -7
  129. package/dist/testing/conformance/_helpers.js.map +1 -1
  130. package/dist/testing/conformance/adversity.d.ts.map +1 -1
  131. package/dist/testing/conformance/adversity.js +14 -31
  132. package/dist/testing/conformance/adversity.js.map +1 -1
  133. package/dist/testing/conformance/boundary.d.ts +1 -1
  134. package/dist/testing/conformance/boundary.d.ts.map +1 -1
  135. package/dist/testing/conformance/boundary.js +13 -18
  136. package/dist/testing/conformance/boundary.js.map +1 -1
  137. package/dist/testing/conformance/client/_fixtures.d.ts +7 -5
  138. package/dist/testing/conformance/client/_fixtures.d.ts.map +1 -1
  139. package/dist/testing/conformance/client/_fixtures.js +17 -8
  140. package/dist/testing/conformance/client/_fixtures.js.map +1 -1
  141. package/dist/testing/conformance/client/adversity.d.ts.map +1 -1
  142. package/dist/testing/conformance/client/adversity.js +8 -7
  143. package/dist/testing/conformance/client/adversity.js.map +1 -1
  144. package/dist/testing/conformance/client/boundary.d.ts +2 -2
  145. package/dist/testing/conformance/client/boundary.d.ts.map +1 -1
  146. package/dist/testing/conformance/client/boundary.js +13 -12
  147. package/dist/testing/conformance/client/boundary.js.map +1 -1
  148. package/dist/testing/conformance/client/delivery.d.ts +5 -5
  149. package/dist/testing/conformance/client/delivery.d.ts.map +1 -1
  150. package/dist/testing/conformance/client/delivery.js +53 -55
  151. package/dist/testing/conformance/client/delivery.js.map +1 -1
  152. package/dist/testing/conformance/client/index.d.ts +2 -2
  153. package/dist/testing/conformance/client/index.d.ts.map +1 -1
  154. package/dist/testing/conformance/client/index.js +1 -1
  155. package/dist/testing/conformance/client/index.js.map +1 -1
  156. package/dist/testing/conformance/client/rpc-semantics.d.ts.map +1 -1
  157. package/dist/testing/conformance/client/rpc-semantics.js +13 -22
  158. package/dist/testing/conformance/client/rpc-semantics.js.map +1 -1
  159. package/dist/testing/conformance/client/runner.d.ts +25 -24
  160. package/dist/testing/conformance/client/runner.d.ts.map +1 -1
  161. package/dist/testing/conformance/client/runner.js +20 -22
  162. package/dist/testing/conformance/client/runner.js.map +1 -1
  163. package/dist/testing/conformance/client/schema-conformance.d.ts +8 -8
  164. package/dist/testing/conformance/client/schema-conformance.d.ts.map +1 -1
  165. package/dist/testing/conformance/client/schema-conformance.js +34 -34
  166. package/dist/testing/conformance/client/schema-conformance.js.map +1 -1
  167. package/dist/testing/conformance/client/suite.js +2 -2
  168. package/dist/testing/conformance/client/suite.js.map +1 -1
  169. package/dist/testing/conformance/delivery.d.ts.map +1 -1
  170. package/dist/testing/conformance/delivery.js +58 -53
  171. package/dist/testing/conformance/delivery.js.map +1 -1
  172. package/dist/testing/conformance/dispatcher-concurrency.js +12 -12
  173. package/dist/testing/conformance/dispatcher-concurrency.js.map +1 -1
  174. package/dist/testing/conformance/presence.d.ts.map +1 -1
  175. package/dist/testing/conformance/presence.js +32 -23
  176. package/dist/testing/conformance/presence.js.map +1 -1
  177. package/dist/testing/conformance/rpc-semantics.d.ts +12 -12
  178. package/dist/testing/conformance/rpc-semantics.d.ts.map +1 -1
  179. package/dist/testing/conformance/rpc-semantics.js +43 -41
  180. package/dist/testing/conformance/rpc-semantics.js.map +1 -1
  181. package/dist/testing/conformance/schema-conformance.d.ts +3 -40
  182. package/dist/testing/conformance/schema-conformance.d.ts.map +1 -1
  183. package/dist/testing/conformance/schema-conformance.js +38 -244
  184. package/dist/testing/conformance/schema-conformance.js.map +1 -1
  185. package/dist/testing/conformance/suite.d.ts.map +1 -1
  186. package/dist/testing/conformance/suite.js +5 -9
  187. package/dist/testing/conformance/suite.js.map +1 -1
  188. package/dist/testing/index.d.ts +1 -1
  189. package/dist/testing/index.d.ts.map +1 -1
  190. package/dist/testing/models/dispatch.d.ts +5 -5
  191. package/dist/testing/models/dispatch.d.ts.map +1 -1
  192. package/dist/testing/models/dispatch.js +1 -18
  193. package/dist/testing/models/dispatch.js.map +1 -1
  194. package/dist/testing/models/state.d.ts +2 -2
  195. package/dist/testing/models/state.d.ts.map +1 -1
  196. package/dist/testing/test-client.d.ts +36 -44
  197. package/dist/testing/test-client.d.ts.map +1 -1
  198. package/dist/testing/test-client.js +117 -105
  199. package/dist/testing/test-client.js.map +1 -1
  200. package/dist/testing/test-server.d.ts +5 -5
  201. package/dist/testing/test-server.d.ts.map +1 -1
  202. package/dist/testing/test-server.js +4 -4
  203. package/dist/testing/test-server.js.map +1 -1
  204. package/dist/types.d.ts +3 -5
  205. package/dist/types.d.ts.map +1 -1
  206. package/dist/types.js.map +1 -1
  207. package/dist/validators.d.ts +366 -101
  208. package/dist/validators.d.ts.map +1 -1
  209. package/dist/validators.js +23 -30
  210. package/dist/validators.js.map +1 -1
  211. package/dist/version.d.ts +1 -1
  212. package/dist/version.js +1 -1
  213. package/package.json +2 -2
  214. package/dist/schema/events.d.ts +0 -213
  215. package/dist/schema/events.d.ts.map +0 -1
  216. package/dist/schema/events.js +0 -122
  217. package/dist/schema/events.js.map +0 -1
  218. package/dist/schema/methods/push.d.ts +0 -21
  219. package/dist/schema/methods/push.d.ts.map +0 -1
  220. package/dist/schema/methods/push.js +0 -28
  221. package/dist/schema/methods/push.js.map +0 -1
  222. package/dist/schema/surfaces.d.ts +0 -55
  223. package/dist/schema/surfaces.d.ts.map +0 -1
  224. package/dist/schema/surfaces.js +0 -55
  225. package/dist/schema/surfaces.js.map +0 -1
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Descriptor-driven Effect-native RPC + notification group helpers.
3
+ *
4
+ * TypeBox + the shared AJV instance (`internal/ajv.ts`) is the single
5
+ * runtime decode authority for wire data. This module owns the
6
+ * Effect-native plumbing on top of those descriptors: group construction,
7
+ * per-frame decode, handler binding, and dispatch.
8
+ */
9
+ import { Data, Effect } from "effect";
10
+ const descriptorMap = (definitions) => {
11
+ const map = new Map();
12
+ for (const definition of definitions) {
13
+ map.set(definition.name, definition);
14
+ }
15
+ return map;
16
+ };
17
+ const descriptorSet = (definitions) => new Set(definitions);
18
+ export function defineRpcGroup(layer, definitions) {
19
+ return {
20
+ layer,
21
+ definitions,
22
+ byName: descriptorMap(definitions),
23
+ byDefinition: descriptorSet(definitions),
24
+ };
25
+ }
26
+ export function defineNotificationGroup(layer, definitions) {
27
+ return {
28
+ layer,
29
+ definitions,
30
+ byName: descriptorMap(definitions),
31
+ byDefinition: descriptorSet(definitions),
32
+ };
33
+ }
34
+ export class UnknownRpcMethodError extends Data.TaggedError("UnknownRpcMethodError") {
35
+ }
36
+ export class InvalidRpcParamsError extends Data.TaggedError("InvalidRpcParamsError") {
37
+ }
38
+ export class UnknownNotificationMethodError extends Data.TaggedError("UnknownNotificationMethodError") {
39
+ }
40
+ export class InvalidNotificationParamsError extends Data.TaggedError("InvalidNotificationParamsError") {
41
+ }
42
+ export function makeRpcBoundaryService(group) {
43
+ return {
44
+ decodeRequest: (frame) => decodeRpcRequest(group, frame),
45
+ };
46
+ }
47
+ export function makeNotificationBoundaryService(group) {
48
+ return {
49
+ decode: (frame) => decodeNotification(group, frame),
50
+ };
51
+ }
52
+ export function decodeRpcRequest(group, frame) {
53
+ const definition = group.byName.get(frame.method);
54
+ if (definition === undefined) {
55
+ return Effect.fail(new UnknownRpcMethodError({ layer: group.layer, frame }));
56
+ }
57
+ const params = frame.params ?? {};
58
+ if (!definition.validateParams(params)) {
59
+ return Effect.fail(new InvalidRpcParamsError({ layer: group.layer, frame, definition }));
60
+ }
61
+ return Effect.succeed({
62
+ id: frame.id,
63
+ definition,
64
+ params,
65
+ });
66
+ }
67
+ export function decodeNotification(group, frame) {
68
+ const definition = group.byName.get(frame.method);
69
+ if (definition === undefined) {
70
+ return Effect.fail(new UnknownNotificationMethodError({ layer: group.layer, frame }));
71
+ }
72
+ const params = frame.params ?? {};
73
+ if (!definition.validateParams(params)) {
74
+ return Effect.fail(new InvalidNotificationParamsError({
75
+ layer: group.layer,
76
+ frame,
77
+ definition,
78
+ }));
79
+ }
80
+ return Effect.succeed({
81
+ ...frame,
82
+ definition,
83
+ method: definition.name,
84
+ params,
85
+ });
86
+ }
87
+ export function isDecodedRpcRequest(definition, request) {
88
+ return request.definition === definition;
89
+ }
90
+ export function isDecodedNotification(definition, notification) {
91
+ return notification.definition === definition;
92
+ }
93
+ export function isDecodedRpcRequestInGroup(group, request) {
94
+ return group.byDefinition.has(request.definition);
95
+ }
96
+ export function isDecodedNotificationInGroup(group, notification) {
97
+ return group.byDefinition.has(notification.definition);
98
+ }
99
+ export const bindNotificationHandler = (definition, handler) => ({ definition, handler });
100
+ /**
101
+ * Bind a tuple of notification handlers to their descriptors. Returns a
102
+ * dispatcher that routes each `DecodedNotification` to its handler by
103
+ * descriptor identity (set during construction), so dispatch is O(1)
104
+ * lookup with no name-string comparison on the hot path.
105
+ *
106
+ * The internal handler map stores `unknown -> Effect<void, E, R>` because
107
+ * `Definitions[number]` is a union and each individual binding is keyed
108
+ * to one concrete `D`. Descriptor identity (set during construction) is
109
+ * the soundness proof: dispatch only sees `params` produced by the same
110
+ * descriptor's pre-compiled AJV validator, so the unknown→params cast is
111
+ * the boundary where validation already passed.
112
+ */
113
+ export function defineEffectNotificationHandlers(group, bindings) {
114
+ const dispatchHandlers = new Map();
115
+ for (const binding of bindings) {
116
+ dispatchHandlers.set(binding.definition, binding.handler);
117
+ }
118
+ return {
119
+ group,
120
+ byName: group.byName,
121
+ byDefinition: group.byDefinition,
122
+ dispatch: (notification) => {
123
+ const handler = dispatchHandlers.get(notification.definition);
124
+ if (handler === undefined) {
125
+ return Effect.die(new Error(`Missing notification handler for ${String(notification.method)}`));
126
+ }
127
+ return handler(notification.params);
128
+ },
129
+ };
130
+ }
131
+ //# sourceMappingURL=rpc-groups.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-groups.js","sourceRoot":"","sources":["../src/rpc-groups.ts"],"names":[],"mappings":"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"}