@moltzap/protocol 2026.503.3 → 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 (253) 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 +34 -990
  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 +6 -15
  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 +9 -7
  110. package/dist/testing/arbitraries/frames.js.map +1 -1
  111. package/dist/testing/arbitraries/from-typebox.d.ts.map +1 -1
  112. package/dist/testing/arbitraries/from-typebox.js +19 -10
  113. package/dist/testing/arbitraries/from-typebox.js.map +1 -1
  114. package/dist/testing/arbitraries/index.d.ts +1 -1
  115. package/dist/testing/arbitraries/index.d.ts.map +1 -1
  116. package/dist/testing/arbitraries/index.js +1 -1
  117. package/dist/testing/arbitraries/index.js.map +1 -1
  118. package/dist/testing/arbitraries/rpc.d.ts +3 -2
  119. package/dist/testing/arbitraries/rpc.d.ts.map +1 -1
  120. package/dist/testing/arbitraries/rpc.js +13 -3
  121. package/dist/testing/arbitraries/rpc.js.map +1 -1
  122. package/dist/testing/captures.d.ts.map +1 -1
  123. package/dist/testing/captures.js +4 -3
  124. package/dist/testing/captures.js.map +1 -1
  125. package/dist/testing/codec.d.ts +13 -11
  126. package/dist/testing/codec.d.ts.map +1 -1
  127. package/dist/testing/codec.js +43 -50
  128. package/dist/testing/codec.js.map +1 -1
  129. package/dist/testing/conformance/__divergence_proofs__/executable-proof-helpers.d.ts.map +1 -1
  130. package/dist/testing/conformance/__divergence_proofs__/executable-proof-helpers.js +15 -5
  131. package/dist/testing/conformance/__divergence_proofs__/executable-proof-helpers.js.map +1 -1
  132. package/dist/testing/conformance/_helpers.d.ts +12 -7
  133. package/dist/testing/conformance/_helpers.d.ts.map +1 -1
  134. package/dist/testing/conformance/_helpers.js +30 -7
  135. package/dist/testing/conformance/_helpers.js.map +1 -1
  136. package/dist/testing/conformance/adversity.d.ts.map +1 -1
  137. package/dist/testing/conformance/adversity.js +83 -90
  138. package/dist/testing/conformance/adversity.js.map +1 -1
  139. package/dist/testing/conformance/boundary.d.ts +1 -1
  140. package/dist/testing/conformance/boundary.d.ts.map +1 -1
  141. package/dist/testing/conformance/boundary.js +55 -50
  142. package/dist/testing/conformance/boundary.js.map +1 -1
  143. package/dist/testing/conformance/client/_fixtures.d.ts +7 -5
  144. package/dist/testing/conformance/client/_fixtures.d.ts.map +1 -1
  145. package/dist/testing/conformance/client/_fixtures.js +17 -8
  146. package/dist/testing/conformance/client/_fixtures.js.map +1 -1
  147. package/dist/testing/conformance/client/adversity.d.ts.map +1 -1
  148. package/dist/testing/conformance/client/adversity.js +28 -22
  149. package/dist/testing/conformance/client/adversity.js.map +1 -1
  150. package/dist/testing/conformance/client/boundary.d.ts +2 -2
  151. package/dist/testing/conformance/client/boundary.d.ts.map +1 -1
  152. package/dist/testing/conformance/client/boundary.js +19 -16
  153. package/dist/testing/conformance/client/boundary.js.map +1 -1
  154. package/dist/testing/conformance/client/delivery.d.ts +5 -5
  155. package/dist/testing/conformance/client/delivery.d.ts.map +1 -1
  156. package/dist/testing/conformance/client/delivery.js +77 -73
  157. package/dist/testing/conformance/client/delivery.js.map +1 -1
  158. package/dist/testing/conformance/client/index.d.ts +2 -2
  159. package/dist/testing/conformance/client/index.d.ts.map +1 -1
  160. package/dist/testing/conformance/client/index.js +1 -1
  161. package/dist/testing/conformance/client/index.js.map +1 -1
  162. package/dist/testing/conformance/client/rpc-semantics.d.ts.map +1 -1
  163. package/dist/testing/conformance/client/rpc-semantics.js +31 -37
  164. package/dist/testing/conformance/client/rpc-semantics.js.map +1 -1
  165. package/dist/testing/conformance/client/runner.d.ts +38 -32
  166. package/dist/testing/conformance/client/runner.d.ts.map +1 -1
  167. package/dist/testing/conformance/client/runner.js +36 -45
  168. package/dist/testing/conformance/client/runner.js.map +1 -1
  169. package/dist/testing/conformance/client/schema-conformance.d.ts +8 -8
  170. package/dist/testing/conformance/client/schema-conformance.d.ts.map +1 -1
  171. package/dist/testing/conformance/client/schema-conformance.js +37 -35
  172. package/dist/testing/conformance/client/schema-conformance.js.map +1 -1
  173. package/dist/testing/conformance/client/suite.d.ts.map +1 -1
  174. package/dist/testing/conformance/client/suite.js +4 -3
  175. package/dist/testing/conformance/client/suite.js.map +1 -1
  176. package/dist/testing/conformance/delivery.d.ts.map +1 -1
  177. package/dist/testing/conformance/delivery.js +127 -140
  178. package/dist/testing/conformance/delivery.js.map +1 -1
  179. package/dist/testing/conformance/dispatcher-concurrency.js +12 -12
  180. package/dist/testing/conformance/dispatcher-concurrency.js.map +1 -1
  181. package/dist/testing/conformance/env.d.ts +9 -0
  182. package/dist/testing/conformance/env.d.ts.map +1 -1
  183. package/dist/testing/conformance/env.js +16 -3
  184. package/dist/testing/conformance/env.js.map +1 -1
  185. package/dist/testing/conformance/presence.d.ts.map +1 -1
  186. package/dist/testing/conformance/presence.js +35 -24
  187. package/dist/testing/conformance/presence.js.map +1 -1
  188. package/dist/testing/conformance/registry.d.ts +1 -1
  189. package/dist/testing/conformance/registry.d.ts.map +1 -1
  190. package/dist/testing/conformance/registry.js +1 -1
  191. package/dist/testing/conformance/registry.js.map +1 -1
  192. package/dist/testing/conformance/rpc-semantics.d.ts +12 -12
  193. package/dist/testing/conformance/rpc-semantics.d.ts.map +1 -1
  194. package/dist/testing/conformance/rpc-semantics.js +131 -90
  195. package/dist/testing/conformance/rpc-semantics.js.map +1 -1
  196. package/dist/testing/conformance/runner.d.ts +2 -2
  197. package/dist/testing/conformance/runner.d.ts.map +1 -1
  198. package/dist/testing/conformance/runner.js +5 -10
  199. package/dist/testing/conformance/runner.js.map +1 -1
  200. package/dist/testing/conformance/schema-conformance.d.ts +3 -40
  201. package/dist/testing/conformance/schema-conformance.d.ts.map +1 -1
  202. package/dist/testing/conformance/schema-conformance.js +75 -235
  203. package/dist/testing/conformance/schema-conformance.js.map +1 -1
  204. package/dist/testing/conformance/suite.d.ts +1 -1
  205. package/dist/testing/conformance/suite.d.ts.map +1 -1
  206. package/dist/testing/conformance/suite.js +17 -18
  207. package/dist/testing/conformance/suite.js.map +1 -1
  208. package/dist/testing/index.d.ts +1 -1
  209. package/dist/testing/index.d.ts.map +1 -1
  210. package/dist/testing/models/dispatch.d.ts +5 -5
  211. package/dist/testing/models/dispatch.d.ts.map +1 -1
  212. package/dist/testing/models/dispatch.js +50 -59
  213. package/dist/testing/models/dispatch.js.map +1 -1
  214. package/dist/testing/models/state.d.ts +5 -5
  215. package/dist/testing/models/state.d.ts.map +1 -1
  216. package/dist/testing/models/state.js +14 -1
  217. package/dist/testing/models/state.js.map +1 -1
  218. package/dist/testing/test-client.d.ts +51 -40
  219. package/dist/testing/test-client.d.ts.map +1 -1
  220. package/dist/testing/test-client.js +154 -122
  221. package/dist/testing/test-client.js.map +1 -1
  222. package/dist/testing/test-server.d.ts +5 -5
  223. package/dist/testing/test-server.d.ts.map +1 -1
  224. package/dist/testing/test-server.js +11 -15
  225. package/dist/testing/test-server.js.map +1 -1
  226. package/dist/testing/toxics/client.d.ts.map +1 -1
  227. package/dist/testing/toxics/client.js +9 -3
  228. package/dist/testing/toxics/client.js.map +1 -1
  229. package/dist/testing/toxics/profile.d.ts.map +1 -1
  230. package/dist/testing/toxics/profile.js +4 -1
  231. package/dist/testing/toxics/profile.js.map +1 -1
  232. package/dist/types.d.ts +3 -5
  233. package/dist/types.d.ts.map +1 -1
  234. package/dist/types.js.map +1 -1
  235. package/dist/validators.d.ts +366 -101
  236. package/dist/validators.d.ts.map +1 -1
  237. package/dist/validators.js +23 -30
  238. package/dist/validators.js.map +1 -1
  239. package/dist/version.d.ts +1 -1
  240. package/dist/version.js +1 -1
  241. package/package.json +2 -2
  242. package/dist/schema/events.d.ts +0 -213
  243. package/dist/schema/events.d.ts.map +0 -1
  244. package/dist/schema/events.js +0 -122
  245. package/dist/schema/events.js.map +0 -1
  246. package/dist/schema/methods/push.d.ts +0 -21
  247. package/dist/schema/methods/push.d.ts.map +0 -1
  248. package/dist/schema/methods/push.js +0 -28
  249. package/dist/schema/methods/push.js.map +0 -1
  250. package/dist/schema/surfaces.d.ts +0 -55
  251. package/dist/schema/surfaces.d.ts.map +0 -1
  252. package/dist/schema/surfaces.js +0 -55
  253. package/dist/schema/surfaces.js.map +0 -1
@@ -0,0 +1,11 @@
1
+ import { Type, type TNumber, type TString } from "@sinclair/typebox";
2
+ import type { Brand } from "effect";
3
+ export type BrandedString<BrandName extends string> = string & Brand.Brand<BrandName>;
4
+ export type BrandedNumber<BrandName extends string> = number & Brand.Brand<BrandName>;
5
+ export declare function brandedString<const BrandName extends string>(brand: BrandName, options?: Parameters<typeof Type.String>[0]): TString & {
6
+ static: BrandedString<BrandName>;
7
+ };
8
+ export declare function brandedNumber<const BrandName extends string>(brand: BrandName, options?: Parameters<typeof Type.Number>[0]): TNumber & {
9
+ static: BrandedNumber<BrandName>;
10
+ };
11
+ //# sourceMappingURL=brands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brands.d.ts","sourceRoot":"","sources":["../src/brands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEpC,MAAM,MAAM,aAAa,CAAC,SAAS,SAAS,MAAM,IAAI,MAAM,GAC1D,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACzB,MAAM,MAAM,aAAa,CAAC,SAAS,SAAS,MAAM,IAAI,MAAM,GAC1D,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAEzB,wBAAgB,aAAa,CAAC,KAAK,CAAC,SAAS,SAAS,MAAM,EAC1D,KAAK,EAAE,SAAS,EAChB,OAAO,GAAE,UAAU,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAM,GAKzC,OAAO,GAAG;IAAE,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;CAAE,CACrD;AAED,wBAAgB,aAAa,CAAC,KAAK,CAAC,SAAS,SAAS,MAAM,EAC1D,KAAK,EAAE,SAAS,EAChB,OAAO,GAAE,UAAU,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAM,GAKzC,OAAO,GAAG;IAAE,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;CAAE,CACrD"}
package/dist/brands.js ADDED
@@ -0,0 +1,14 @@
1
+ import { Type } from "@sinclair/typebox";
2
+ export function brandedString(brand, options = {}) {
3
+ return Type.String({
4
+ ...options,
5
+ description: options.description ?? `Branded ${brand}`,
6
+ });
7
+ }
8
+ export function brandedNumber(brand, options = {}) {
9
+ return Type.Number({
10
+ ...options,
11
+ description: options.description ?? `Branded ${brand}`,
12
+ });
13
+ }
14
+ //# sourceMappingURL=brands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brands.js","sourceRoot":"","sources":["../src/brands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAA8B,MAAM,mBAAmB,CAAC;AAQrE,MAAM,UAAU,aAAa,CAC3B,KAAgB,EAChB,UAA6C,EAAE;IAE/C,OAAO,IAAI,CAAC,MAAM,CAAC;QACjB,GAAG,OAAO;QACV,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,WAAW,KAAK,EAAE;KACvD,CAAmD,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,KAAgB,EAChB,UAA6C,EAAE;IAE/C,OAAO,IAAI,CAAC,MAAM,CAAC;QACjB,GAAG,OAAO;QACV,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,WAAW,KAAK,EAAE;KACvD,CAAmD,CAAC;AACvD,CAAC"}
package/dist/helpers.d.ts CHANGED
@@ -1,4 +1,10 @@
1
- import { type TString } from "@sinclair/typebox";
1
+ import { type TString, type TSchema } from "@sinclair/typebox";
2
+ import { type JsonRpcId } from "./schema/json-rpc.js";
3
+ import type { NotificationFrame, RequestFrame, ResponseFrame } from "./schema/frames.js";
4
+ import type { JsonRpcStringId } from "./schema/json-rpc.js";
5
+ import type { NotificationDefinition, NotificationParamsOf } from "./notification.js";
6
+ import type { ParamsOf, RpcDefinition } from "./rpc.js";
7
+ export { brandedNumber, brandedString, type BrandedNumber, type BrandedString, } from "./brands.js";
2
8
  /**
3
9
  * Creates a string enum schema without producing anyOf (which some validators reject).
4
10
  * Uses Type.String + enum constraint (Kind="String") so TypeBox's Value.Decode
@@ -13,33 +19,37 @@ export declare function stringEnum<T extends string[]>(values: [...T]): TString
13
19
  * Branded UUID string type for TypeBox schemas.
14
20
  * Usage: brandedId("UserId") produces a string schema with format: "uuid"
15
21
  */
16
- export declare function brandedId(brand: string): TString;
22
+ export declare function brandedId<const BrandName extends string>(brand: BrandName): TString & {
23
+ static: import("./brands.js").BrandedString<BrandName>;
24
+ };
17
25
  /**
18
26
  * ISO 8601 datetime string schema.
19
27
  */
20
28
  export declare const DateTimeString: TString;
21
29
  /**
22
- * Construct a typed EventFrame. Eliminates manual `{ jsonrpc: "2.0", type: "event" }` boilerplate.
30
+ * Construct a typed JSON-RPC notification from a notification descriptor.
31
+ * Production code should pass descriptors, not raw method names.
23
32
  */
24
- export declare function eventFrame(event: string, data?: Record<string, unknown>): {
25
- jsonrpc: "2.0";
26
- type: "event";
27
- event: string;
28
- data?: Record<string, unknown>;
33
+ export declare function notificationFrame<D extends NotificationDefinition<string, TSchema>>(definition: D, params: NotificationParamsOf<D>): NotificationFrame & {
34
+ readonly method: D["name"];
35
+ readonly params: NotificationParamsOf<D>;
29
36
  };
30
37
  /**
31
- * Construct a typed ResponseFrame literal. Centralizes the
32
- * `{ jsonrpc, type: "response", direction, id, result | error }` shape
33
- * so c2s and s2c response sites do not drift on field order, escaping,
34
- * or `direction` typing. Mirrors `eventFrame()` for the symmetric
35
- * surface.
38
+ * Construct a JSON-RPC Request object. This is the single public helper for
39
+ * request frame construction; callers should pass a descriptor-backed method,
40
+ * not hand-write frame object literals.
41
+ */
42
+ export declare function requestFrame<D extends RpcDefinition<string, TSchema, TSchema>>(id: JsonRpcStringId, definition: D, params: ParamsOf<D>): RequestFrame & {
43
+ readonly method: D["name"];
44
+ readonly params: ParamsOf<D>;
45
+ };
46
+ /**
47
+ * Construct a typed JSON-RPC Response object. Pass `{ result }` for success
48
+ * or `{ error }` for failure; exactly one body branch is present.
36
49
  *
37
- * Pass `{ result }` for success, `{ error }` for failure; the schema
38
- * permits both fields to be `Type.Optional` but exactly one of them is
39
- * present in any well-formed reply, so the discriminated body argument
40
- * keeps the type system aligned with the wire contract.
50
+ * Parse errors whose id is unknown should be written directly with `id: null`;
51
+ * normal replies use the string id minted by the matching request.
41
52
  */
42
- export type ResponseFrameDirection = "c2s" | "s2c";
43
53
  export type ResponseFrameError = {
44
54
  code: number;
45
55
  message: string;
@@ -50,12 +60,5 @@ export type ResponseFrameBody = {
50
60
  } | {
51
61
  error: ResponseFrameError;
52
62
  };
53
- export declare function responseFrame(direction: ResponseFrameDirection, id: string, body: ResponseFrameBody): {
54
- jsonrpc: "2.0";
55
- type: "response";
56
- direction: ResponseFrameDirection;
57
- id: string;
58
- result?: unknown;
59
- error?: ResponseFrameError;
60
- };
63
+ export declare function responseFrame(id: JsonRpcId, body: ResponseFrameBody): ResponseFrame;
61
64
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAC;AA6CvE;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GACnB,OAAO,GAAG;IAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;CAAE,CACxE;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,WAEtC;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,SAAuC,CAAC;AAEnE;;GAEG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B;IACD,OAAO,EAAE,KAAK,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,CAOA;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,sBAAsB,GAAG,KAAK,GAAG,KAAK,CAAC;AACnD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AACF,MAAM,MAAM,iBAAiB,GACzB;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GACnB;IAAE,KAAK,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAElC,wBAAgB,aAAa,CAC3B,SAAS,EAAE,sBAAsB,EACjC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,iBAAiB,GACtB;IACD,OAAO,EAAE,KAAK,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,sBAAsB,CAAC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,kBAAkB,CAAC;CAC5B,CAQA"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,OAAO,EACZ,KAAK,OAAO,EACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EACV,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAMxD,OAAO,EACL,aAAa,EACb,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AA8CrB;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GACnB,OAAO,GAAG;IAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;CAAE,CACxE;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,CAAC,SAAS,SAAS,MAAM,EAAE,KAAK,EAAE,SAAS;;EAKzE;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,SAAuC,CAAC;AAEnE;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,SAAS,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,EAEjD,UAAU,EAAE,CAAC,EACb,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC9B,iBAAiB,GAAG;IACrB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;CAC1C,CAMA;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAC5E,EAAE,EAAE,eAAe,EACnB,UAAU,EAAE,CAAC,EACb,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,GAClB,YAAY,GAAG;IAChB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;CAC9B,CAOA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AACF,MAAM,MAAM,iBAAiB,GACzB;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GACnB;IAAE,KAAK,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAElC,wBAAgB,aAAa,CAC3B,EAAE,EAAE,SAAS,EACb,IAAI,EAAE,iBAAiB,GACtB,aAAa,CAMf"}
package/dist/helpers.js CHANGED
@@ -1,4 +1,8 @@
1
- import { FormatRegistry, Type } from "@sinclair/typebox";
1
+ import { FormatRegistry, Type, } from "@sinclair/typebox";
2
+ import { JSON_RPC_VERSION } from "./schema/json-rpc.js";
3
+ import { brandNotificationFrame, brandRequestFrame, brandResponseFrame, } from "./schema/internal-frames.js";
4
+ export { brandedNumber, brandedString, } from "./brands.js";
5
+ import { brandedString } from "./brands.js";
2
6
  /**
3
7
  * Register the string formats this protocol uses with TypeBox's
4
8
  * `FormatRegistry` as a side effect at module load. Without this,
@@ -48,30 +52,44 @@ export function stringEnum(values) {
48
52
  * Usage: brandedId("UserId") produces a string schema with format: "uuid"
49
53
  */
50
54
  export function brandedId(brand) {
51
- return Type.String({ format: "uuid", description: `Branded ${brand}` });
55
+ return brandedString(brand, {
56
+ format: "uuid",
57
+ description: `Branded ${brand}`,
58
+ });
52
59
  }
53
60
  /**
54
61
  * ISO 8601 datetime string schema.
55
62
  */
56
63
  export const DateTimeString = Type.String({ format: "date-time" });
57
64
  /**
58
- * Construct a typed EventFrame. Eliminates manual `{ jsonrpc: "2.0", type: "event" }` boilerplate.
65
+ * Construct a typed JSON-RPC notification from a notification descriptor.
66
+ * Production code should pass descriptors, not raw method names.
67
+ */
68
+ export function notificationFrame(definition, params) {
69
+ return brandNotificationFrame({
70
+ jsonrpc: JSON_RPC_VERSION,
71
+ method: definition.name,
72
+ params,
73
+ });
74
+ }
75
+ /**
76
+ * Construct a JSON-RPC Request object. This is the single public helper for
77
+ * request frame construction; callers should pass a descriptor-backed method,
78
+ * not hand-write frame object literals.
59
79
  */
60
- export function eventFrame(event, data) {
61
- return {
62
- jsonrpc: "2.0",
63
- type: "event",
64
- event,
65
- ...(data !== undefined ? { data } : {}),
66
- };
80
+ export function requestFrame(id, definition, params) {
81
+ return brandRequestFrame({
82
+ jsonrpc: JSON_RPC_VERSION,
83
+ id,
84
+ method: definition.name,
85
+ params,
86
+ });
67
87
  }
68
- export function responseFrame(direction, id, body) {
69
- return {
70
- jsonrpc: "2.0",
71
- type: "response",
72
- direction,
88
+ export function responseFrame(id, body) {
89
+ return brandResponseFrame({
90
+ jsonrpc: JSON_RPC_VERSION,
73
91
  id,
74
92
  ...body,
75
- };
93
+ });
76
94
  }
77
95
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAgB,MAAM,mBAAmB,CAAC;AAEvE;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,GACX,iEAAiE,CAAC;AACpE,wEAAwE;AACxE,oEAAoE;AACpE,4BAA4B;AAC5B,MAAM,YAAY,GAChB,qEAAqE,CAAC;AACxE,wEAAwE;AACxE,wEAAwE;AACxE,MAAM,MAAM,GAAG,+BAA+B,CAAC;AAE/C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IAChC,cAAc,CAAC,GAAG,CAChB,MAAM,EACN,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAC5D,CAAC;AACJ,CAAC;AACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;IACrC,cAAc,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;QACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACzE,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC;AACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;IAC/B,cAAc,CAAC,GAAG,CAChB,KAAK,EACL,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAC3D,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAqB,MAAc;IAC3D,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAoC,CAAC;AAC1E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,KAAK,EAAE,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;AAEnE;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,KAAa,EACb,IAA8B;IAO9B,OAAO;QACL,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,OAAO;QACb,KAAK;QACL,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,CAAC;AACJ,CAAC;AAwBD,MAAM,UAAU,aAAa,CAC3B,SAAiC,EACjC,EAAU,EACV,IAAuB;IASvB,OAAO;QACL,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,UAAU;QAChB,SAAS;QACT,EAAE;QACF,GAAG,IAAI;KACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,11 +1,14 @@
1
1
  export { PROTOCOL_VERSION } from "./version.js";
2
2
  export { validators } from "./validators.js";
3
3
  export { ErrorCodes } from "./schema/errors.js";
4
- export { EventNames } from "./schema/events.js";
4
+ export * from "./brands.js";
5
5
  export * from "./schema/index.js";
6
6
  export * from "./types.js";
7
7
  export * from "./rpc.js";
8
+ export * from "./rpc-errors.js";
9
+ export * from "./notification.js";
10
+ export * from "./rpc-groups.js";
8
11
  export * from "./rpc-registry.js";
9
- export { stringEnum, brandedId, DateTimeString, eventFrame, responseFrame, } from "./helpers.js";
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";
12
+ export { stringEnum, brandedId, brandedString, brandedNumber, DateTimeString, notificationFrame, requestFrame, responseFrame, } from "./helpers.js";
13
+ export { SEED_USERS, SEED_AGENTS, SEED_CONVERSATIONS, SEED_CONTACTS, SEED_MESSAGES, SEED_CONTROL_MESSAGES, } from "./test-fixtures/seed-data.js";
11
14
  //# 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,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,OAAO,EACL,UAAU,EACV,SAAS,EACT,cAAc,EACd,UAAU,EACV,aAAa,GACd,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"}
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,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EACL,UAAU,EACV,SAAS,EACT,aAAa,EACb,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,qBAAqB,GACtB,MAAM,8BAA8B,CAAC"}
package/dist/index.js CHANGED
@@ -1,11 +1,14 @@
1
1
  export { PROTOCOL_VERSION } from "./version.js";
2
2
  export { validators } from "./validators.js";
3
3
  export { ErrorCodes } from "./schema/errors.js";
4
- export { EventNames } from "./schema/events.js";
4
+ export * from "./brands.js";
5
5
  export * from "./schema/index.js";
6
6
  export * from "./types.js";
7
7
  export * from "./rpc.js";
8
+ export * from "./rpc-errors.js";
9
+ export * from "./notification.js";
10
+ export * from "./rpc-groups.js";
8
11
  export * from "./rpc-registry.js";
9
- export { stringEnum, brandedId, DateTimeString, eventFrame, responseFrame, } from "./helpers.js";
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";
12
+ export { stringEnum, brandedId, brandedString, brandedNumber, DateTimeString, notificationFrame, requestFrame, responseFrame, } from "./helpers.js";
13
+ export { SEED_USERS, SEED_AGENTS, SEED_CONVERSATIONS, SEED_CONTACTS, SEED_MESSAGES, SEED_CONTROL_MESSAGES, } from "./test-fixtures/seed-data.js";
11
14
  //# 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,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,OAAO,EACL,UAAU,EACV,SAAS,EACT,cAAc,EACd,UAAU,EACV,aAAa,GACd,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"}
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,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EACL,UAAU,EACV,SAAS,EACT,aAAa,EACb,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,qBAAqB,GACtB,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { TSchema, Static } from "@sinclair/typebox";
2
+ export declare const ajv: {
3
+ readonly compile: <T extends TSchema>(schema: T) => (data: unknown) => data is Static<T>;
4
+ };
5
+ //# sourceMappingURL=ajv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ajv.d.ts","sourceRoot":"","sources":["../../src/internal/ajv.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAgBzD,eAAO,MAAM,GAAG,EAAE;IAChB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,OAAO,EAClC,MAAM,EAAE,CAAC,KACN,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;CAQ1C,CAAC"}
@@ -0,0 +1,22 @@
1
+ import Ajv from "ajv";
2
+ import addFormats from "ajv-formats";
3
+ /**
4
+ * Single shared AJV instance for the protocol package. Both `defineRpc()`
5
+ * and `defineNotification()` register their TypeBox schemas against this
6
+ * instance at module load, so every wire boundary uses the same compiled
7
+ * validator pool with identical options.
8
+ *
9
+ * The instance itself is not exported. AJV's `_compileMetaSchema` mutates
10
+ * its own `opts` on first compile, so `Object.freeze` on the instance
11
+ * would break compilation. Instead, the factory exposes only `compile`,
12
+ * which is the single operation any descriptor needs. Options are sealed
13
+ * inside the closure and unreachable from callers.
14
+ */
15
+ const ajvInstance = addFormats(new Ajv({ strict: true, allErrors: true }));
16
+ export const ajv = Object.freeze({
17
+ compile: (schema) => {
18
+ const validate = ajvInstance.compile(schema);
19
+ return (data) => validate(data);
20
+ },
21
+ });
22
+ //# sourceMappingURL=ajv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ajv.js","sourceRoot":"","sources":["../../src/internal/ajv.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,UAAU,MAAM,aAAa,CAAC;AAGrC;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAE3E,MAAM,CAAC,MAAM,GAAG,GAIZ,MAAM,CAAC,MAAM,CAAC;IAChB,OAAO,EAAE,CACP,MAAS,EAC+B,EAAE;QAC1C,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAY,MAAM,CAAC,CAAC;QACxD,OAAO,CAAC,IAAa,EAAqB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { type Static, type TSchema } from "@sinclair/typebox";
2
+ import type { JsonRpcMethod } from "./schema/json-rpc.js";
3
+ export interface NotificationDefinition<Name extends string, P extends TSchema> {
4
+ readonly name: JsonRpcMethod<Name>;
5
+ readonly paramsSchema: P;
6
+ readonly validateParams: (data: unknown) => data is Static<P>;
7
+ readonly Params: Static<P>;
8
+ }
9
+ export declare function defineNotification<Name extends string, P extends TSchema>(def: {
10
+ readonly name: JsonRpcMethod<Name>;
11
+ readonly params: P;
12
+ }): NotificationDefinition<Name, P>;
13
+ export type NotificationParamsOf<D> = D extends NotificationDefinition<string, infer P> ? Static<P> : never;
14
+ //# sourceMappingURL=notification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../src/notification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,sBAAsB,CACrC,IAAI,SAAS,MAAM,EACnB,CAAC,SAAS,OAAO;IAEjB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAC5B;AAED,wBAAgB,kBAAkB,CAChC,IAAI,SAAS,MAAM,EACnB,CAAC,SAAS,OAAO,EACjB,GAAG,EAAE;IACL,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;CACpB,GAAG,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC,CAOlC;AAED,MAAM,MAAM,oBAAoB,CAAC,CAAC,IAChC,CAAC,SAAS,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC"}
@@ -0,0 +1,11 @@
1
+ import {} from "@sinclair/typebox";
2
+ import { ajv } from "./internal/ajv.js";
3
+ export function defineNotification(def) {
4
+ return {
5
+ name: def.name,
6
+ paramsSchema: def.params,
7
+ validateParams: ajv.compile(def.params),
8
+ Params: null,
9
+ };
10
+ }
11
+ //# sourceMappingURL=notification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification.js","sourceRoot":"","sources":["../src/notification.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAaxC,MAAM,UAAU,kBAAkB,CAGhC,GAGD;IACC,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,YAAY,EAAE,GAAG,CAAC,MAAM;QACxB,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;QACvC,MAAM,EAAE,IAAK;KACd,CAAC;AACJ,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { JsonRpcMethod } from "./schema/json-rpc.js";
2
+ declare const NotConnectedError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
3
+ readonly _tag: "NotConnectedError";
4
+ } & Readonly<A>;
5
+ /** The socket is not in the OPEN state when an RPC was attempted. */
6
+ export declare class NotConnectedError extends NotConnectedError_base<{
7
+ readonly message: string;
8
+ }> {
9
+ }
10
+ declare const RpcTimeoutError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
11
+ readonly _tag: "RpcTimeoutError";
12
+ } & Readonly<A>;
13
+ /** The RPC exceeded the per-call timeout without a response frame. */
14
+ export declare class RpcTimeoutError extends RpcTimeoutError_base<{
15
+ readonly method: JsonRpcMethod;
16
+ readonly timeoutMs: number;
17
+ }> {
18
+ }
19
+ declare const RpcServerError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
20
+ readonly _tag: "RpcServerError";
21
+ } & Readonly<A>;
22
+ /** The peer returned an `error` response frame. */
23
+ export declare class RpcServerError extends RpcServerError_base<{
24
+ readonly code: number;
25
+ readonly message: string;
26
+ readonly data?: unknown;
27
+ }> {
28
+ }
29
+ export {};
30
+ //# sourceMappingURL=rpc-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-errors.d.ts","sourceRoot":"","sources":["../src/rpc-errors.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;;;;AAE1D,qEAAqE;AACrE,qBAAa,iBAAkB,SAAQ,uBAAsC;IAC3E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,sEAAsE;AACtE,qBAAa,eAAgB,SAAQ,qBAAoC;IACvE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;CAAG;;;;AAEL,mDAAmD;AACnD,qBAAa,cAAe,SAAQ,oBAAmC;IACrE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;CAAG"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Wire-derived RPC error tags surfaced to callers of an RPC.
3
+ *
4
+ * These tags describe failures at the JSON-RPC transport boundary:
5
+ * - `NotConnectedError` — the socket is not OPEN (or closed mid-call).
6
+ * - `RpcTimeoutError` — no response frame arrived inside the per-call deadline.
7
+ * - `RpcServerError` — the peer returned an `error` response frame.
8
+ *
9
+ * They live in `@moltzap/protocol` because the failure mode is wire-level,
10
+ * not transport-implementation-specific. Both client and server consumers
11
+ * pattern-match on the same `_tag` strings.
12
+ */
13
+ import { Data } from "effect";
14
+ /** The socket is not in the OPEN state when an RPC was attempted. */
15
+ export class NotConnectedError extends Data.TaggedError("NotConnectedError") {
16
+ }
17
+ /** The RPC exceeded the per-call timeout without a response frame. */
18
+ export class RpcTimeoutError extends Data.TaggedError("RpcTimeoutError") {
19
+ }
20
+ /** The peer returned an `error` response frame. */
21
+ export class RpcServerError extends Data.TaggedError("RpcServerError") {
22
+ }
23
+ //# sourceMappingURL=rpc-errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-errors.js","sourceRoot":"","sources":["../src/rpc-errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B,qEAAqE;AACrE,MAAM,OAAO,iBAAkB,SAAQ,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAEzE;CAAG;AAEL,sEAAsE;AACtE,MAAM,OAAO,eAAgB,SAAQ,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAGrE;CAAG;AAEL,mDAAmD;AACnD,MAAM,OAAO,cAAe,SAAQ,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAInE;CAAG"}
@@ -0,0 +1,120 @@
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 { Effect } from "effect";
10
+ import type { NotificationFrame, RequestFrame } from "./schema/frames.js";
11
+ import type { JsonRpcMethod, JsonRpcStringId } from "./schema/json-rpc.js";
12
+ import type { NotificationDefinition, NotificationParamsOf } from "./notification.js";
13
+ import type { ParamsOf, RpcDefinition, TSchema } from "./rpc.js";
14
+ type AnyRpcDefinition = RpcDefinition<string, TSchema, TSchema>;
15
+ type AnyNotificationDefinition = NotificationDefinition<string, TSchema>;
16
+ export interface RpcDescriptorGroup<LayerName extends string, Definitions extends readonly AnyRpcDefinition[]> {
17
+ readonly layer: LayerName;
18
+ readonly definitions: Definitions;
19
+ readonly byName: ReadonlyMap<JsonRpcMethod, Definitions[number]>;
20
+ readonly byDefinition: ReadonlySet<Definitions[number]>;
21
+ }
22
+ export interface NotificationDescriptorGroup<LayerName extends string, Definitions extends readonly AnyNotificationDefinition[]> {
23
+ readonly layer: LayerName;
24
+ readonly definitions: Definitions;
25
+ readonly byName: ReadonlyMap<JsonRpcMethod, Definitions[number]>;
26
+ readonly byDefinition: ReadonlySet<Definitions[number]>;
27
+ }
28
+ export declare function defineRpcGroup<const LayerName extends string, const Definitions extends readonly AnyRpcDefinition[]>(layer: LayerName, definitions: Definitions): RpcDescriptorGroup<LayerName, Definitions>;
29
+ export declare function defineNotificationGroup<const LayerName extends string, const Definitions extends readonly AnyNotificationDefinition[]>(layer: LayerName, definitions: Definitions): NotificationDescriptorGroup<LayerName, Definitions>;
30
+ export type DecodedRpcRequest<D extends AnyRpcDefinition> = D extends AnyRpcDefinition ? {
31
+ readonly id: JsonRpcStringId;
32
+ readonly definition: D;
33
+ readonly params: ParamsOf<D>;
34
+ } : never;
35
+ export type DecodedNotification<D extends AnyNotificationDefinition> = D extends AnyNotificationDefinition ? NotificationFrame & {
36
+ readonly definition: D;
37
+ readonly method: D["name"];
38
+ readonly params: NotificationParamsOf<D>;
39
+ } : never;
40
+ declare const UnknownRpcMethodError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
41
+ readonly _tag: "UnknownRpcMethodError";
42
+ } & Readonly<A>;
43
+ export declare class UnknownRpcMethodError extends UnknownRpcMethodError_base<{
44
+ readonly layer: string;
45
+ readonly frame: RequestFrame;
46
+ }> {
47
+ }
48
+ declare const InvalidRpcParamsError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
49
+ readonly _tag: "InvalidRpcParamsError";
50
+ } & Readonly<A>;
51
+ export declare class InvalidRpcParamsError extends InvalidRpcParamsError_base<{
52
+ readonly layer: string;
53
+ readonly frame: RequestFrame;
54
+ readonly definition: AnyRpcDefinition;
55
+ }> {
56
+ }
57
+ export type RpcRequestDecodeError = UnknownRpcMethodError | InvalidRpcParamsError;
58
+ declare const UnknownNotificationMethodError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
59
+ readonly _tag: "UnknownNotificationMethodError";
60
+ } & Readonly<A>;
61
+ export declare class UnknownNotificationMethodError extends UnknownNotificationMethodError_base<{
62
+ readonly layer: string;
63
+ readonly frame: NotificationFrame;
64
+ }> {
65
+ }
66
+ declare const InvalidNotificationParamsError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
67
+ readonly _tag: "InvalidNotificationParamsError";
68
+ } & Readonly<A>;
69
+ export declare class InvalidNotificationParamsError extends InvalidNotificationParamsError_base<{
70
+ readonly layer: string;
71
+ readonly frame: NotificationFrame;
72
+ readonly definition: AnyNotificationDefinition;
73
+ }> {
74
+ }
75
+ export type NotificationDecodeError = UnknownNotificationMethodError | InvalidNotificationParamsError;
76
+ export interface RpcBoundaryService<Definitions extends readonly AnyRpcDefinition[]> {
77
+ readonly decodeRequest: (frame: RequestFrame) => Effect.Effect<DecodedRpcRequest<Definitions[number]>, RpcRequestDecodeError>;
78
+ }
79
+ export interface NotificationBoundaryService<Definitions extends readonly AnyNotificationDefinition[]> {
80
+ readonly decode: (frame: NotificationFrame) => Effect.Effect<DecodedNotification<Definitions[number]>, NotificationDecodeError>;
81
+ }
82
+ export declare function makeRpcBoundaryService<const Definitions extends readonly AnyRpcDefinition[]>(group: RpcDescriptorGroup<string, Definitions>): RpcBoundaryService<Definitions>;
83
+ export declare function makeNotificationBoundaryService<const Definitions extends readonly AnyNotificationDefinition[]>(group: NotificationDescriptorGroup<string, Definitions>): NotificationBoundaryService<Definitions>;
84
+ export declare function decodeRpcRequest<const Definitions extends readonly AnyRpcDefinition[]>(group: RpcDescriptorGroup<string, Definitions>, frame: RequestFrame): Effect.Effect<DecodedRpcRequest<Definitions[number]>, RpcRequestDecodeError>;
85
+ export declare function decodeNotification<const Definitions extends readonly AnyNotificationDefinition[]>(group: NotificationDescriptorGroup<string, Definitions>, frame: NotificationFrame): Effect.Effect<DecodedNotification<Definitions[number]>, NotificationDecodeError>;
86
+ export declare function isDecodedRpcRequest<D extends AnyRpcDefinition>(definition: D, request: DecodedRpcRequest<AnyRpcDefinition>): request is DecodedRpcRequest<D>;
87
+ export declare function isDecodedNotification<D extends AnyNotificationDefinition>(definition: D, notification: DecodedNotification<AnyNotificationDefinition>): notification is DecodedNotification<D>;
88
+ export declare function isDecodedRpcRequestInGroup<const Definitions extends readonly AnyRpcDefinition[]>(group: RpcDescriptorGroup<string, Definitions>, request: DecodedRpcRequest<AnyRpcDefinition>): request is DecodedRpcRequest<Definitions[number]>;
89
+ export declare function isDecodedNotificationInGroup<const Definitions extends readonly AnyNotificationDefinition[]>(group: NotificationDescriptorGroup<string, Definitions>, notification: DecodedNotification<AnyNotificationDefinition>): notification is DecodedNotification<Definitions[number]>;
90
+ export interface NotificationHandlerBinding<D extends AnyNotificationDefinition, E, R> {
91
+ readonly definition: D;
92
+ readonly handler: (params: NotificationParamsOf<D>) => Effect.Effect<void, E, R>;
93
+ }
94
+ export declare const bindNotificationHandler: <D extends AnyNotificationDefinition, E, R>(definition: D, handler: (params: NotificationParamsOf<D>) => Effect.Effect<void, E, R>) => NotificationHandlerBinding<D, E, R>;
95
+ type NotificationHandlerTuple<Definitions extends readonly AnyNotificationDefinition[], E> = {
96
+ readonly [Index in keyof Definitions]: Definitions[Index] extends AnyNotificationDefinition ? NotificationHandlerBinding<Definitions[Index], E, unknown> : never;
97
+ };
98
+ type NotificationBindingRequirements<Bindings extends readonly unknown[]> = Bindings[number] extends NotificationHandlerBinding<AnyNotificationDefinition, unknown, infer R> ? R : never;
99
+ export interface EffectNotificationHandlerLayer<Definitions extends readonly AnyNotificationDefinition[], E, R> {
100
+ readonly group: NotificationDescriptorGroup<string, Definitions>;
101
+ readonly byName: ReadonlyMap<JsonRpcMethod, Definitions[number]>;
102
+ readonly byDefinition: ReadonlySet<Definitions[number]>;
103
+ readonly dispatch: (notification: DecodedNotification<Definitions[number]>) => Effect.Effect<void, E, R>;
104
+ }
105
+ /**
106
+ * Bind a tuple of notification handlers to their descriptors. Returns a
107
+ * dispatcher that routes each `DecodedNotification` to its handler by
108
+ * descriptor identity (set during construction), so dispatch is O(1)
109
+ * lookup with no name-string comparison on the hot path.
110
+ *
111
+ * The internal handler map stores `unknown -> Effect<void, E, R>` because
112
+ * `Definitions[number]` is a union and each individual binding is keyed
113
+ * to one concrete `D`. Descriptor identity (set during construction) is
114
+ * the soundness proof: dispatch only sees `params` produced by the same
115
+ * descriptor's pre-compiled AJV validator, so the unknown→params cast is
116
+ * the boundary where validation already passed.
117
+ */
118
+ export declare function defineEffectNotificationHandlers<const Definitions extends readonly AnyNotificationDefinition[], E, const Bindings extends NotificationHandlerTuple<Definitions, E>>(group: NotificationDescriptorGroup<string, Definitions>, bindings: Bindings): EffectNotificationHandlerLayer<Definitions, E, NotificationBindingRequirements<Bindings>>;
119
+ export {};
120
+ //# sourceMappingURL=rpc-groups.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc-groups.d.ts","sourceRoot":"","sources":["../src/rpc-groups.ts"],"names":[],"mappings":"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"}