@moltzap/protocol 2026.503.4 → 2026.504.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/brands.d.ts +11 -0
- package/dist/brands.d.ts.map +1 -0
- package/dist/brands.js +14 -0
- package/dist/brands.js.map +1 -0
- package/dist/helpers.d.ts +29 -26
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +34 -16
- package/dist/helpers.js.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/internal/ajv.d.ts +5 -0
- package/dist/internal/ajv.d.ts.map +1 -0
- package/dist/internal/ajv.js +22 -0
- package/dist/internal/ajv.js.map +1 -0
- package/dist/notification.d.ts +14 -0
- package/dist/notification.d.ts.map +1 -0
- package/dist/notification.js +11 -0
- package/dist/notification.js.map +1 -0
- package/dist/rpc-errors.d.ts +30 -0
- package/dist/rpc-errors.d.ts.map +1 -0
- package/dist/rpc-errors.js +23 -0
- package/dist/rpc-errors.js.map +1 -0
- package/dist/rpc-groups.d.ts +120 -0
- package/dist/rpc-groups.d.ts.map +1 -0
- package/dist/rpc-groups.js +131 -0
- package/dist/rpc-groups.js.map +1 -0
- package/dist/rpc-registry.d.ts +1143 -203
- package/dist/rpc-registry.d.ts.map +1 -1
- package/dist/rpc-registry.js +11 -23
- package/dist/rpc-registry.js.map +1 -1
- package/dist/rpc.d.ts +26 -5
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +21 -11
- package/dist/rpc.js.map +1 -1
- package/dist/schema/apps.d.ts +13 -26
- package/dist/schema/apps.d.ts.map +1 -1
- package/dist/schema/apps.js +2 -13
- package/dist/schema/apps.js.map +1 -1
- package/dist/schema/contacts.d.ts +6 -2
- package/dist/schema/contacts.d.ts.map +1 -1
- package/dist/schema/conversations.d.ts +15 -5
- package/dist/schema/conversations.d.ts.map +1 -1
- package/dist/schema/delivery.d.ts +9 -3
- package/dist/schema/delivery.d.ts.map +1 -1
- package/dist/schema/errors.d.ts +0 -4
- package/dist/schema/errors.d.ts.map +1 -1
- package/dist/schema/errors.js +0 -4
- package/dist/schema/errors.js.map +1 -1
- package/dist/schema/frames.d.ts +48 -51
- package/dist/schema/frames.d.ts.map +1 -1
- package/dist/schema/frames.js +28 -50
- package/dist/schema/frames.js.map +1 -1
- package/dist/schema/identity.d.ts +17 -9
- package/dist/schema/identity.d.ts.map +1 -1
- package/dist/schema/index.d.ts +3 -4
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +3 -4
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/internal-frames.d.ts +10 -0
- package/dist/schema/internal-frames.d.ts.map +1 -0
- package/dist/schema/internal-frames.js +5 -0
- package/dist/schema/internal-frames.js.map +1 -0
- package/dist/schema/invites.d.ts +6 -2
- package/dist/schema/invites.d.ts.map +1 -1
- package/dist/schema/json-rpc.d.ts +27 -0
- package/dist/schema/json-rpc.d.ts.map +1 -0
- package/dist/schema/json-rpc.js +32 -0
- package/dist/schema/json-rpc.js.map +1 -0
- package/dist/schema/messages.d.ts +15 -5
- package/dist/schema/messages.d.ts.map +1 -1
- package/dist/schema/methods/apps.d.ts +131 -105
- package/dist/schema/methods/apps.d.ts.map +1 -1
- package/dist/schema/methods/apps.js +4 -57
- package/dist/schema/methods/apps.js.map +1 -1
- package/dist/schema/methods/auth.d.ts +62 -34
- package/dist/schema/methods/auth.d.ts.map +1 -1
- package/dist/schema/methods/contacts.d.ts +27 -9
- package/dist/schema/methods/contacts.d.ts.map +1 -1
- package/dist/schema/methods/conversations.d.ts +91 -18
- package/dist/schema/methods/conversations.d.ts.map +1 -1
- package/dist/schema/methods/conversations.js +2 -2
- package/dist/schema/methods/conversations.js.map +1 -1
- package/dist/schema/methods/messages.d.ts +39 -13
- package/dist/schema/methods/messages.d.ts.map +1 -1
- package/dist/schema/methods/presence.d.ts +6 -2
- package/dist/schema/methods/presence.d.ts.map +1 -1
- package/dist/schema/notifications.d.ts +752 -0
- package/dist/schema/notifications.d.ts.map +1 -0
- package/dist/schema/notifications.js +155 -0
- package/dist/schema/notifications.js.map +1 -0
- package/dist/schema/presence.d.ts +3 -1
- package/dist/schema/presence.d.ts.map +1 -1
- package/dist/schema/primitives.d.ts +21 -5
- package/dist/schema/primitives.d.ts.map +1 -1
- package/dist/schema/primitives.js +6 -0
- package/dist/schema/primitives.js.map +1 -1
- package/dist/test-fixtures/seed-data.d.ts +0 -1388
- package/dist/test-fixtures/seed-data.d.ts.map +1 -1
- package/dist/test-fixtures/seed-data.js +0 -987
- package/dist/test-fixtures/seed-data.js.map +1 -1
- package/dist/testing/agent-registration.d.ts +3 -1
- package/dist/testing/agent-registration.d.ts.map +1 -1
- package/dist/testing/agent-registration.js +2 -14
- package/dist/testing/agent-registration.js.map +1 -1
- package/dist/testing/arbitraries/frames.d.ts +2 -2
- package/dist/testing/arbitraries/frames.d.ts.map +1 -1
- package/dist/testing/arbitraries/frames.js +7 -6
- package/dist/testing/arbitraries/frames.js.map +1 -1
- package/dist/testing/arbitraries/index.d.ts +1 -1
- package/dist/testing/arbitraries/index.d.ts.map +1 -1
- package/dist/testing/arbitraries/index.js +1 -1
- package/dist/testing/arbitraries/index.js.map +1 -1
- package/dist/testing/arbitraries/rpc.d.ts +3 -2
- package/dist/testing/arbitraries/rpc.d.ts.map +1 -1
- package/dist/testing/arbitraries/rpc.js +1 -0
- package/dist/testing/arbitraries/rpc.js.map +1 -1
- package/dist/testing/codec.d.ts +13 -11
- package/dist/testing/codec.d.ts.map +1 -1
- package/dist/testing/codec.js +30 -45
- package/dist/testing/codec.js.map +1 -1
- package/dist/testing/conformance/__divergence_proofs__/executable-proof-helpers.d.ts.map +1 -1
- package/dist/testing/conformance/__divergence_proofs__/executable-proof-helpers.js +10 -3
- package/dist/testing/conformance/__divergence_proofs__/executable-proof-helpers.js.map +1 -1
- package/dist/testing/conformance/_helpers.d.ts +6 -6
- package/dist/testing/conformance/_helpers.d.ts.map +1 -1
- package/dist/testing/conformance/_helpers.js +6 -7
- package/dist/testing/conformance/_helpers.js.map +1 -1
- package/dist/testing/conformance/adversity.d.ts.map +1 -1
- package/dist/testing/conformance/adversity.js +14 -31
- package/dist/testing/conformance/adversity.js.map +1 -1
- package/dist/testing/conformance/boundary.d.ts +1 -1
- package/dist/testing/conformance/boundary.d.ts.map +1 -1
- package/dist/testing/conformance/boundary.js +13 -18
- package/dist/testing/conformance/boundary.js.map +1 -1
- package/dist/testing/conformance/client/_fixtures.d.ts +7 -5
- package/dist/testing/conformance/client/_fixtures.d.ts.map +1 -1
- package/dist/testing/conformance/client/_fixtures.js +17 -8
- package/dist/testing/conformance/client/_fixtures.js.map +1 -1
- package/dist/testing/conformance/client/adversity.d.ts.map +1 -1
- package/dist/testing/conformance/client/adversity.js +8 -7
- package/dist/testing/conformance/client/adversity.js.map +1 -1
- package/dist/testing/conformance/client/boundary.d.ts +2 -2
- package/dist/testing/conformance/client/boundary.d.ts.map +1 -1
- package/dist/testing/conformance/client/boundary.js +13 -12
- package/dist/testing/conformance/client/boundary.js.map +1 -1
- package/dist/testing/conformance/client/delivery.d.ts +5 -5
- package/dist/testing/conformance/client/delivery.d.ts.map +1 -1
- package/dist/testing/conformance/client/delivery.js +53 -55
- package/dist/testing/conformance/client/delivery.js.map +1 -1
- package/dist/testing/conformance/client/index.d.ts +2 -2
- package/dist/testing/conformance/client/index.d.ts.map +1 -1
- package/dist/testing/conformance/client/index.js +1 -1
- package/dist/testing/conformance/client/index.js.map +1 -1
- package/dist/testing/conformance/client/rpc-semantics.d.ts.map +1 -1
- package/dist/testing/conformance/client/rpc-semantics.js +13 -22
- package/dist/testing/conformance/client/rpc-semantics.js.map +1 -1
- package/dist/testing/conformance/client/runner.d.ts +25 -24
- package/dist/testing/conformance/client/runner.d.ts.map +1 -1
- package/dist/testing/conformance/client/runner.js +20 -22
- package/dist/testing/conformance/client/runner.js.map +1 -1
- package/dist/testing/conformance/client/schema-conformance.d.ts +8 -8
- package/dist/testing/conformance/client/schema-conformance.d.ts.map +1 -1
- package/dist/testing/conformance/client/schema-conformance.js +34 -34
- package/dist/testing/conformance/client/schema-conformance.js.map +1 -1
- package/dist/testing/conformance/client/suite.js +2 -2
- package/dist/testing/conformance/client/suite.js.map +1 -1
- package/dist/testing/conformance/delivery.d.ts.map +1 -1
- package/dist/testing/conformance/delivery.js +58 -54
- package/dist/testing/conformance/delivery.js.map +1 -1
- package/dist/testing/conformance/dispatcher-concurrency.js +12 -12
- package/dist/testing/conformance/dispatcher-concurrency.js.map +1 -1
- package/dist/testing/conformance/presence.d.ts.map +1 -1
- package/dist/testing/conformance/presence.js +32 -23
- package/dist/testing/conformance/presence.js.map +1 -1
- package/dist/testing/conformance/rpc-semantics.d.ts +12 -12
- package/dist/testing/conformance/rpc-semantics.d.ts.map +1 -1
- package/dist/testing/conformance/rpc-semantics.js +43 -41
- package/dist/testing/conformance/rpc-semantics.js.map +1 -1
- package/dist/testing/conformance/schema-conformance.d.ts +3 -40
- package/dist/testing/conformance/schema-conformance.d.ts.map +1 -1
- package/dist/testing/conformance/schema-conformance.js +38 -244
- package/dist/testing/conformance/schema-conformance.js.map +1 -1
- package/dist/testing/conformance/suite.d.ts.map +1 -1
- package/dist/testing/conformance/suite.js +5 -9
- package/dist/testing/conformance/suite.js.map +1 -1
- package/dist/testing/index.d.ts +1 -1
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/models/dispatch.d.ts +5 -5
- package/dist/testing/models/dispatch.d.ts.map +1 -1
- package/dist/testing/models/dispatch.js +1 -18
- package/dist/testing/models/dispatch.js.map +1 -1
- package/dist/testing/models/state.d.ts +2 -2
- package/dist/testing/models/state.d.ts.map +1 -1
- package/dist/testing/test-client.d.ts +36 -44
- package/dist/testing/test-client.d.ts.map +1 -1
- package/dist/testing/test-client.js +117 -105
- package/dist/testing/test-client.js.map +1 -1
- package/dist/testing/test-server.d.ts +5 -5
- package/dist/testing/test-server.d.ts.map +1 -1
- package/dist/testing/test-server.js +4 -4
- package/dist/testing/test-server.js.map +1 -1
- package/dist/types.d.ts +3 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/validators.d.ts +357 -101
- package/dist/validators.d.ts.map +1 -1
- package/dist/validators.js +22 -30
- package/dist/validators.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
- package/dist/schema/events.d.ts +0 -213
- package/dist/schema/events.d.ts.map +0 -1
- package/dist/schema/events.js +0 -122
- package/dist/schema/events.js.map +0 -1
- package/dist/schema/methods/push.d.ts +0 -21
- package/dist/schema/methods/push.d.ts.map +0 -1
- package/dist/schema/methods/push.js +0 -28
- package/dist/schema/methods/push.js.map +0 -1
- package/dist/schema/surfaces.d.ts +0 -55
- package/dist/schema/surfaces.d.ts.map +0 -1
- package/dist/schema/surfaces.js +0 -55
- package/dist/schema/surfaces.js.map +0 -1
package/dist/brands.d.ts
ADDED
|
@@ -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:
|
|
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
|
|
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
|
|
25
|
-
|
|
26
|
-
|
|
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
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
|
|
35
|
-
|
|
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
|
-
*
|
|
38
|
-
*
|
|
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(
|
|
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
|
package/dist/helpers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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
|
|
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
|
|
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
|
|
61
|
-
return {
|
|
62
|
-
jsonrpc:
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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(
|
|
69
|
-
return {
|
|
70
|
-
jsonrpc:
|
|
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
|
package/dist/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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
|
|
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,
|
|
10
|
-
export { SEED_USERS, SEED_AGENTS, SEED_CONVERSATIONS, SEED_CONTACTS, SEED_MESSAGES, SEED_CONTROL_MESSAGES,
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
|
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,
|
|
10
|
-
export { SEED_USERS, SEED_AGENTS, SEED_CONVERSATIONS, SEED_CONTACTS, SEED_MESSAGES, SEED_CONTROL_MESSAGES,
|
|
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,
|
|
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 @@
|
|
|
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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"}
|