@moltzap/protocol 2026.503.4 → 2026.504.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +1238 -278
- package/dist/rpc-registry.d.ts.map +1 -1
- package/dist/rpc-registry.js +11 -22
- 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 -23
- package/dist/schema/apps.d.ts.map +1 -1
- package/dist/schema/apps.js +2 -12
- 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 +138 -85
- package/dist/schema/methods/apps.d.ts.map +1 -1
- package/dist/schema/methods/apps.js +4 -45
- 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 +791 -0
- package/dist/schema/notifications.d.ts.map +1 -0
- package/dist/schema/notifications.js +173 -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 -53
- 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 +366 -101
- package/dist/validators.d.ts.map +1 -1
- package/dist/validators.js +23 -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
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* factory shape.
|
|
18
18
|
*/
|
|
19
19
|
import { Context, Effect, Ref, type Scope } from "effect";
|
|
20
|
-
import type {
|
|
20
|
+
import type { NotificationFrame, ResponseFrame } from "../../../schema/frames.js";
|
|
21
21
|
import { type TestServer, type TestServerConnection } from "../../test-server.js";
|
|
22
22
|
import { type ToxiproxyClient } from "../../toxics/client.js";
|
|
23
23
|
import { RealServerAcquireError, TransportIoError, type ToxicControlError } from "../../errors.js";
|
|
@@ -40,18 +40,18 @@ export interface RealClientHandle {
|
|
|
40
40
|
readonly agentId: string;
|
|
41
41
|
/**
|
|
42
42
|
* Fully-connected promise — resolves after the handshake completes and
|
|
43
|
-
* the client is ready to receive
|
|
43
|
+
* the client is ready to receive notifications. Property bodies await this
|
|
44
44
|
* before scripting TestServer emissions so the handshake-noise guard
|
|
45
45
|
* window is closed (see `ClientHandshakeWindow`).
|
|
46
46
|
*/
|
|
47
47
|
readonly ready: Effect.Effect<void, RealClientLifecycleError>;
|
|
48
48
|
/**
|
|
49
|
-
* Real client's public
|
|
49
|
+
* Real client's public notification-subscriber surface. Every captured notification
|
|
50
50
|
* is tagged with the property-authored `emissionId` when the property
|
|
51
|
-
* uses `ClientHandshakeWindow.
|
|
51
|
+
* uses `ClientHandshakeWindow.emitTaggedNotification`; predicates filter by
|
|
52
52
|
* that tag to exclude handshake-noise frames.
|
|
53
53
|
*/
|
|
54
|
-
readonly
|
|
54
|
+
readonly notifications: RealClientNotificationSubscriber;
|
|
55
55
|
/**
|
|
56
56
|
* Real client's documented RPC caller. B1 / B4 / D5 predicates invoke
|
|
57
57
|
* this and assert on the returned promise's resolution / rejection.
|
|
@@ -70,40 +70,41 @@ export interface RealClientHandle {
|
|
|
70
70
|
readonly close: Effect.Effect<void, RealClientLifecycleError>;
|
|
71
71
|
}
|
|
72
72
|
/**
|
|
73
|
-
* Real client's public
|
|
73
|
+
* Real client's public notification-subscriber surface. Property bodies `subscribe`
|
|
74
74
|
* once per fixture and drain via `snapshot`. Concrete shape is per-consumer
|
|
75
|
-
* (packages/client's `
|
|
75
|
+
* (packages/client's `waitForNotification` + `onNotification`, channel packages' native
|
|
76
76
|
* event pipe); the wrapper adapts it to this interface.
|
|
77
77
|
*/
|
|
78
|
-
export interface
|
|
79
|
-
readonly subscribe: (filter:
|
|
80
|
-
readonly snapshot: Effect.Effect<ReadonlyArray<
|
|
78
|
+
export interface RealClientNotificationSubscriber {
|
|
79
|
+
readonly subscribe: (filter: RealClientNotificationFilter) => Effect.Effect<RealClientSubscription, RealClientLifecycleError>;
|
|
80
|
+
readonly snapshot: Effect.Effect<ReadonlyArray<ObservedNotification>>;
|
|
81
81
|
}
|
|
82
82
|
export interface RealClientSubscription {
|
|
83
83
|
readonly id: string;
|
|
84
84
|
readonly unsubscribe: Effect.Effect<void>;
|
|
85
85
|
}
|
|
86
|
-
export interface
|
|
86
|
+
export interface RealClientNotificationFilter {
|
|
87
87
|
/**
|
|
88
88
|
* Property-authored emission tag. The real client surfaces only
|
|
89
|
-
*
|
|
89
|
+
* notifications whose payload carries this tag, excluding handshake-noise.
|
|
90
90
|
* Implementations match on the event payload's `__emissionId` field
|
|
91
|
-
* (set by `ClientHandshakeWindow.
|
|
91
|
+
* (set by `ClientHandshakeWindow.emitTaggedNotification`).
|
|
92
92
|
*/
|
|
93
93
|
readonly emissionTag?: string;
|
|
94
94
|
/** Restrict to a specific conversation / task. */
|
|
95
95
|
readonly conversationId?: string;
|
|
96
|
-
/** Restrict to a specific
|
|
97
|
-
readonly
|
|
96
|
+
/** Restrict to a specific notification-name family. */
|
|
97
|
+
readonly notificationNamePrefix?: string;
|
|
98
98
|
}
|
|
99
99
|
/**
|
|
100
|
-
* Observed
|
|
100
|
+
* Observed notification after the real client has surfaced it on its public
|
|
101
101
|
* subscriber API. `rawBytes` carries the payload byte-for-byte (C3);
|
|
102
|
-
* `decoded` is
|
|
102
|
+
* `decoded` is unknown because divergence proofs intentionally model clients
|
|
103
|
+
* that surface malformed notifications.
|
|
103
104
|
*/
|
|
104
|
-
export interface
|
|
105
|
+
export interface ObservedNotification {
|
|
105
106
|
readonly emissionTag: string | null;
|
|
106
|
-
readonly decoded:
|
|
107
|
+
readonly decoded: unknown;
|
|
107
108
|
readonly rawBytes: Uint8Array;
|
|
108
109
|
readonly observedAtMs: number;
|
|
109
110
|
}
|
|
@@ -115,7 +116,7 @@ export interface ObservedEvent {
|
|
|
115
116
|
* property can assert ID-set equality (B4, O7 idempotence).
|
|
116
117
|
*/
|
|
117
118
|
export interface RealClientRpcCaller {
|
|
118
|
-
readonly call: (method: string, params: unknown) => Effect.Effect<ResponseFrame, RealClientRpcError>;
|
|
119
|
+
readonly call: (method: string, params: unknown) => Effect.Effect<ResponseFrame | NotificationFrame, RealClientRpcError>;
|
|
119
120
|
/** Stream of outbound request IDs the real client has minted. */
|
|
120
121
|
readonly outboundIdFeed: Effect.Effect<ReadonlyArray<string>>;
|
|
121
122
|
}
|
|
@@ -157,18 +158,18 @@ export interface RealClientCloseEvent {
|
|
|
157
158
|
*
|
|
158
159
|
* Every client-side property that observes frames requests a
|
|
159
160
|
* `ClientHandshakeWindow` on its fixture and emits via
|
|
160
|
-
* `
|
|
161
|
+
* `emitTaggedNotification` / `emitTaggedResponse`. The window stamps each
|
|
161
162
|
* emission with a property-authored `emissionTag`; the
|
|
162
|
-
* `
|
|
163
|
+
* `RealClientNotificationSubscriber` filter drops untagged notifications.
|
|
163
164
|
*
|
|
164
165
|
* D6 is the only client-side property exempt (observes lifecycle
|
|
165
166
|
* signals, not frames).
|
|
166
167
|
*/
|
|
167
168
|
export interface ClientHandshakeWindow {
|
|
168
169
|
readonly freshEmissionTag: Effect.Effect<string>;
|
|
169
|
-
readonly
|
|
170
|
+
readonly emitTaggedNotification: (opts: {
|
|
170
171
|
readonly connection: TestServerConnection;
|
|
171
|
-
readonly base:
|
|
172
|
+
readonly base: NotificationFrame;
|
|
172
173
|
readonly emissionTag: string;
|
|
173
174
|
}) => Effect.Effect<string>;
|
|
174
175
|
readonly emitTaggedResponse: (opts: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../../src/testing/conformance/client/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAGL,OAAO,EAEP,MAAM,EACN,GAAG,EACH,KAAK,KAAK,EACX,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../../src/testing/conformance/client/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAGL,OAAO,EAEP,MAAM,EACN,GAAG,EACH,KAAK,KAAK,EACX,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACd,MAAM,2BAA2B,CAAC;AAKnC,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAkBxD;;;;;;;;;GASG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC;IAC9D;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,EAAE,gCAAgC,CAAC;IACzD;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAC1D;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC;CAC/D;AAED;;;;;GAKG;AACH,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,SAAS,EAAE,CAClB,MAAM,EAAE,4BAA4B,KACjC,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,wBAAwB,CAAC,CAAC;IACrE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC;CACvE;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,4BAA4B;IAC3C;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,kDAAkD;IAClD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,uDAAuD;IACvD,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CAC1C;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,CACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,KACZ,MAAM,CAAC,MAAM,CAAC,aAAa,GAAG,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;IAC1E,iEAAiE;IACjE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;CAC/D;;;;AAED;;;GAGG;AACH,qBAAa,wBAAyB,SAAQ,8BAE5C;IACA,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,CAAC;CAAG;;;;AAEL,2EAA2E;AAC3E,qBAAa,kBAAmB,SAAQ,wBAAuC;IAC7E,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,IAAI,EACT,SAAS,GACT,cAAc,GACd,oBAAoB,GACpB,cAAc,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;CAAG;AAEL,oEAAoE;AACpE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,sBAAsB,EAAE,CAAC,IAAI,EAAE;QACtC,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC;QAC1C,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;QACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,QAAQ,CAAC,kBAAkB,EAAE,CAAC,IAAI,EAAE;QAClC,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC;QAC1C,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;QAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC,MAAM,CAC5C,IAAI,EACJ,wBAAwB,CACzB,CAAC;CACH;AAED,eAAO,MAAM,qBAAqB,2DAEjC,CAAC;AAEF;;;;GAIG;AACH;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,iBAAiB,EAAE,CAC1B,IAAI,EAAE,qBAAqB,KACxB,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,wBAAwB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5E,QAAQ,CAAC,eAAe,EAAE,qBAAqB,CAAC;IAChD,QAAQ,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC;CACjE;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IAC3D,QAAQ,CAAC,UAAU,EAAE,CACnB,IAAI,EAAE,qBAAqB,KACxB,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,wBAAwB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CACzC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,2BAA2B,GAChC,MAAM,CAAC,MAAM,CACd,2BAA2B,EAC3B,iBAAiB,GAAG,sBAAsB,GAAG,wBAAwB,EACrE,KAAK,CAAC,KAAK,CACZ,CAiEA;AA+CD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,gBAAgB,GACvB,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAc1D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,oBAAoB,EAChC,OAAO,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAyCzC;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAE7E;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,UAAU,EACtB,SAAS,SAA4B,GACpC,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAavD"}
|
|
@@ -17,6 +17,10 @@
|
|
|
17
17
|
* factory shape.
|
|
18
18
|
*/
|
|
19
19
|
import { Config, ConfigProvider, Context, Data, Effect, Ref, } from "effect";
|
|
20
|
+
import { responseFrame } from "../../../helpers.js";
|
|
21
|
+
import { brandNotificationFrame } from "../../../schema/internal-frames.js";
|
|
22
|
+
import { isJsonRpcStringId } from "../../../schema/json-rpc.js";
|
|
23
|
+
import { isRequestFrame } from "../../codec.js";
|
|
20
24
|
import { makeTestServer, } from "../../test-server.js";
|
|
21
25
|
import { makeToxiproxyClient, } from "../../toxics/client.js";
|
|
22
26
|
import { RealServerAcquireError, TransportIoError, } from "../../errors.js";
|
|
@@ -85,7 +89,7 @@ export function acquireClientRunContext(opts) {
|
|
|
85
89
|
freshEmissionTag: Effect.sync(() => `tag-${Math.random()
|
|
86
90
|
.toString(RANDOM_TAG_RADIX)
|
|
87
91
|
.slice(RANDOM_TAG_SLICE_START, RANDOM_TAG_SLICE_END)}`),
|
|
88
|
-
|
|
92
|
+
emitTaggedNotification: ({ connection, base, emissionTag }) => emitTaggedNotificationDefault(connection, base, emissionTag),
|
|
89
93
|
emitTaggedResponse: ({ connection, base, emissionTag }) => emitTaggedResponseDefault(connection, base, emissionTag),
|
|
90
94
|
awaitHandshakeComplete: Effect.void,
|
|
91
95
|
};
|
|
@@ -101,32 +105,32 @@ export function acquireClientRunContext(opts) {
|
|
|
101
105
|
});
|
|
102
106
|
}
|
|
103
107
|
/**
|
|
104
|
-
* Default tagged-
|
|
108
|
+
* Default tagged-notification emission: stamp the notification payload with the
|
|
105
109
|
* caller's `emissionTag` under the reserved `__emissionTag` key, then
|
|
106
|
-
* forward to the connection's real `
|
|
110
|
+
* forward to the connection's real `emitNotification`. Returns the tag so the
|
|
107
111
|
* caller can filter subscriber observations by the same string.
|
|
108
112
|
*
|
|
109
|
-
* `
|
|
113
|
+
* `NotificationFrame.params` is `Type.Optional(Type.Unknown())`; injecting an
|
|
110
114
|
* object field is schema-valid. The real clients under test are
|
|
111
115
|
* payload-opaque (C3 predicate), so the extra field round-trips cleanly.
|
|
112
116
|
*/
|
|
113
|
-
function
|
|
114
|
-
const
|
|
115
|
-
const tagged = {
|
|
117
|
+
function emitTaggedNotificationDefault(connection, base, emissionTag) {
|
|
118
|
+
const baseParams = isStringKeyedRecord(base.params) ? base.params : {};
|
|
119
|
+
const tagged = brandNotificationFrame({
|
|
116
120
|
...base,
|
|
117
|
-
|
|
118
|
-
};
|
|
119
|
-
return connection.
|
|
121
|
+
params: { ...baseParams, __emissionTag: emissionTag },
|
|
122
|
+
});
|
|
123
|
+
return connection.emitNotification(tagged).pipe(Effect.orElseSucceed(() => undefined), Effect.as(emissionTag));
|
|
120
124
|
}
|
|
121
125
|
function isStringKeyedRecord(value) {
|
|
122
126
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
123
127
|
}
|
|
124
128
|
function emitTaggedResponseDefault(connection, base, _emissionTag) {
|
|
125
|
-
|
|
126
|
-
// Response frames don't carry a free-form `data` field; responses are
|
|
129
|
+
// Response frames don't carry a free-form `params` field; responses are
|
|
127
130
|
// correlated by `id` instead — the response's `id` IS its emission tag
|
|
128
131
|
// from the property's perspective (see B1 / B4 / D5 predicates).
|
|
129
|
-
|
|
132
|
+
const tag = isJsonRpcStringId(base.id) ? base.id : _emissionTag;
|
|
133
|
+
return connection.emitResponse(base).pipe(Effect.orElseSucceed(() => undefined), Effect.as(tag));
|
|
130
134
|
}
|
|
131
135
|
/**
|
|
132
136
|
* Build a `ClientHandshakeWindow` from a real-client handle. Returns a
|
|
@@ -139,7 +143,7 @@ export function makeClientHandshakeWindow(handle) {
|
|
|
139
143
|
const tagCounter = yield* Ref.make(0);
|
|
140
144
|
return {
|
|
141
145
|
freshEmissionTag: Ref.updateAndGet(tagCounter, (n) => n + 1).pipe(Effect.map((n) => `emit-${handle.agentId}-${n}`)),
|
|
142
|
-
|
|
146
|
+
emitTaggedNotification: ({ connection, base, emissionTag }) => emitTaggedNotificationDefault(connection, base, emissionTag),
|
|
143
147
|
emitTaggedResponse: ({ connection, base, emissionTag }) => emitTaggedResponseDefault(connection, base, emissionTag),
|
|
144
148
|
awaitHandshakeComplete: handle.ready,
|
|
145
149
|
};
|
|
@@ -165,7 +169,7 @@ export function runAutoHandshakeResponder(connection, agentId) {
|
|
|
165
169
|
for (const entry of snap) {
|
|
166
170
|
if (entry.kind === "inbound" &&
|
|
167
171
|
entry.frame !== null &&
|
|
168
|
-
entry.frame
|
|
172
|
+
isRequestFrame(entry.frame) &&
|
|
169
173
|
entry.frame.method === Connect.name) {
|
|
170
174
|
const helloOk = {
|
|
171
175
|
protocolVersion: PROTOCOL_VERSION,
|
|
@@ -185,13 +189,7 @@ export function runAutoHandshakeResponder(connection, agentId) {
|
|
|
185
189
|
},
|
|
186
190
|
};
|
|
187
191
|
yield* connection
|
|
188
|
-
.emitResponse({
|
|
189
|
-
jsonrpc: "2.0",
|
|
190
|
-
type: "response",
|
|
191
|
-
direction: "c2s",
|
|
192
|
-
id: entry.frame.id,
|
|
193
|
-
result: helloOk,
|
|
194
|
-
})
|
|
192
|
+
.emitResponse(responseFrame(entry.frame.id, { result: helloOk }))
|
|
195
193
|
.pipe(Effect.orElseSucceed(() => undefined));
|
|
196
194
|
handshakeHandled = true;
|
|
197
195
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../../src/testing/conformance/client/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EACL,MAAM,EACN,cAAc,EACd,OAAO,EACP,IAAI,EACJ,MAAM,EACN,GAAG,GAEJ,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../../src/testing/conformance/client/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import type { ClientConformanceRunContext } from "./runner.js";
|
|
2
2
|
/**
|
|
3
3
|
* A2 client-side — TestServer emits a property-sampled valid
|
|
4
|
-
* `
|
|
5
|
-
* subscriber surfaces
|
|
4
|
+
* `NotificationFrame` with a property-authored `emissionTag`; real client's
|
|
5
|
+
* subscriber surfaces a notification whose payload schema-matches within
|
|
6
6
|
* deadline.
|
|
7
7
|
*
|
|
8
|
-
* Predicate: `Value.Check(
|
|
9
|
-
* AND `
|
|
8
|
+
* Predicate: `Value.Check(NotificationFrameSchema, observed.decoded)` passes
|
|
9
|
+
* AND `params.__emissionTag === emissionTag`.
|
|
10
10
|
*
|
|
11
11
|
* Discriminates: a client that strips or reorders required schema
|
|
12
|
-
* fields when surfacing
|
|
12
|
+
* fields when surfacing notifications fails.
|
|
13
13
|
*/
|
|
14
|
-
export declare function
|
|
14
|
+
export declare function registerNotificationWellFormednessClient(ctx: ClientConformanceRunContext): void;
|
|
15
15
|
/**
|
|
16
16
|
* A4 client half — TestServer emits a bit-flipped / truncated /
|
|
17
17
|
* oversized frame; real client drops it silently. A subsequent tagged
|
|
18
|
-
* valid
|
|
18
|
+
* valid notification still surfaces (liveness proof, mirrors #187 round-5
|
|
19
19
|
* guard). A client that crashes on the malformed frame disconnects,
|
|
20
20
|
* preventing the liveness probe from surfacing within the deadline.
|
|
21
21
|
*
|
|
22
|
-
* Predicate: liveness — next tagged
|
|
22
|
+
* Predicate: liveness — next tagged notification surfaces within deadline.
|
|
23
23
|
*/
|
|
24
24
|
export declare function registerMalformedFrameHandlingClient(ctx: ClientConformanceRunContext): void;
|
|
25
25
|
//# sourceMappingURL=schema-conformance.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-conformance.d.ts","sourceRoot":"","sources":["../../../../src/testing/conformance/client/schema-conformance.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"schema-conformance.d.ts","sourceRoot":"","sources":["../../../../src/testing/conformance/client/schema-conformance.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAgB/D;;;;;;;;;;;GAWG;AACH,wBAAgB,wCAAwC,CACtD,GAAG,EAAE,2BAA2B,GAC/B,IAAI,CAiEN;AAED;;;;;;;;GAQG;AACH,wBAAgB,oCAAoC,CAClD,GAAG,EAAE,2BAA2B,GAC/B,IAAI,CA0DN"}
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
* Client-side schema-conformance properties.
|
|
3
3
|
*
|
|
4
4
|
* Covers spec-amendment #200 §5:
|
|
5
|
-
* A2 —
|
|
5
|
+
* A2 — notification-well-formedness (client-side new)
|
|
6
6
|
* A4 — malformed-frame-handling (client half of both-sides)
|
|
7
7
|
*
|
|
8
8
|
* Predicate-authoring discipline:
|
|
9
9
|
* - P1 (#195): every predicate names a client-realistic misbehaviour.
|
|
10
|
-
* Here it's "real client surfaces a malformed or dropped
|
|
10
|
+
* Here it's "real client surfaces a malformed or dropped notification."
|
|
11
11
|
* - P2 (#195): executable divergence proofs live under
|
|
12
12
|
* `__divergence_proofs__/*-executable.proofs.test.ts`.
|
|
13
13
|
* - O7 (#200): every observation filters by property-authored
|
|
14
|
-
* `emissionTag` via `ClientHandshakeWindow.
|
|
14
|
+
* `emissionTag` via `ClientHandshakeWindow.emitTaggedNotification` — auto-
|
|
15
15
|
* subscribe / hello / resume frames never satisfy a predicate.
|
|
16
16
|
* - O6 (#200): when spec names a typed error, assert exact match.
|
|
17
17
|
* A4 client half: `MalformedFrameError` is documented; the adapter
|
|
@@ -21,40 +21,40 @@
|
|
|
21
21
|
*/
|
|
22
22
|
import { Effect } from "effect";
|
|
23
23
|
import { Value } from "@sinclair/typebox/value";
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
24
|
+
import { NotificationFrameSchema } from "../../../schema/frames.js";
|
|
25
|
+
import { arbitraryNotificationFrame } from "../../arbitraries/frames.js";
|
|
26
26
|
import * as fc from "fast-check";
|
|
27
27
|
import { registerProperty } from "../registry.js";
|
|
28
28
|
import { acquireFixture, collectTagged, invariant, subscribeAll, } from "./_fixtures.js";
|
|
29
29
|
const CATEGORY = "schema-conformance";
|
|
30
|
-
const
|
|
30
|
+
const PROPERTY_NOTIFICATION_WELL_FORMEDNESS_CLIENT = "notification-well-formedness-client";
|
|
31
31
|
const PROPERTY_MALFORMED_FRAME_HANDLING_CLIENT = "malformed-frame-handling-client";
|
|
32
32
|
const PROPERTY_BUDGET_MS = 8_000;
|
|
33
33
|
/**
|
|
34
34
|
* A2 client-side — TestServer emits a property-sampled valid
|
|
35
|
-
* `
|
|
36
|
-
* subscriber surfaces
|
|
35
|
+
* `NotificationFrame` with a property-authored `emissionTag`; real client's
|
|
36
|
+
* subscriber surfaces a notification whose payload schema-matches within
|
|
37
37
|
* deadline.
|
|
38
38
|
*
|
|
39
|
-
* Predicate: `Value.Check(
|
|
40
|
-
* AND `
|
|
39
|
+
* Predicate: `Value.Check(NotificationFrameSchema, observed.decoded)` passes
|
|
40
|
+
* AND `params.__emissionTag === emissionTag`.
|
|
41
41
|
*
|
|
42
42
|
* Discriminates: a client that strips or reorders required schema
|
|
43
|
-
* fields when surfacing
|
|
43
|
+
* fields when surfacing notifications fails.
|
|
44
44
|
*/
|
|
45
|
-
export function
|
|
46
|
-
registerProperty(ctx, CATEGORY,
|
|
47
|
-
const fx = yield* acquireFixture(ctx, CATEGORY,
|
|
45
|
+
export function registerNotificationWellFormednessClient(ctx) {
|
|
46
|
+
registerProperty(ctx, CATEGORY, PROPERTY_NOTIFICATION_WELL_FORMEDNESS_CLIENT, "valid NotificationFrame emitted by TestServer surfaces schema-clean on real client", Effect.scoped(Effect.gen(function* () {
|
|
47
|
+
const fx = yield* acquireFixture(ctx, CATEGORY, PROPERTY_NOTIFICATION_WELL_FORMEDNESS_CLIENT);
|
|
48
48
|
yield* subscribeAll(fx.handle);
|
|
49
|
-
const sampled = fc.sample(
|
|
49
|
+
const sampled = fc.sample(arbitraryNotificationFrame(), {
|
|
50
50
|
numRuns: 1,
|
|
51
51
|
seed: ctx.seed,
|
|
52
52
|
})[0];
|
|
53
53
|
if (sampled === undefined) {
|
|
54
|
-
return yield* Effect.fail(invariant(CATEGORY,
|
|
54
|
+
return yield* Effect.fail(invariant(CATEGORY, PROPERTY_NOTIFICATION_WELL_FORMEDNESS_CLIENT, "failed to sample NotificationFrame"));
|
|
55
55
|
}
|
|
56
56
|
const tag = yield* fx.window.freshEmissionTag;
|
|
57
|
-
yield* fx.window.
|
|
57
|
+
yield* fx.window.emitTaggedNotification({
|
|
58
58
|
connection: fx.connection,
|
|
59
59
|
base: sampled,
|
|
60
60
|
emissionTag: tag,
|
|
@@ -64,53 +64,53 @@ export function registerEventWellFormednessClient(ctx) {
|
|
|
64
64
|
budgetMs: PROPERTY_BUDGET_MS,
|
|
65
65
|
});
|
|
66
66
|
if (observed.length === 0) {
|
|
67
|
-
return yield* Effect.fail(invariant(CATEGORY,
|
|
67
|
+
return yield* Effect.fail(invariant(CATEGORY, PROPERTY_NOTIFICATION_WELL_FORMEDNESS_CLIENT, `tagged notification ${tag} not surfaced within ${PROPERTY_BUDGET_MS}ms`));
|
|
68
68
|
}
|
|
69
|
-
// Reconstruct the expected event shape and re-check schema.
|
|
70
69
|
const reconstructed = {
|
|
71
70
|
jsonrpc: "2.0",
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
71
|
+
method: observed[0].notificationName,
|
|
72
|
+
...(observed[0].params !== undefined
|
|
73
|
+
? { params: observed[0].params }
|
|
74
|
+
: {}),
|
|
75
75
|
};
|
|
76
|
-
if (!Value.Check(
|
|
77
|
-
return yield* Effect.fail(invariant(CATEGORY,
|
|
76
|
+
if (!Value.Check(NotificationFrameSchema, reconstructed)) {
|
|
77
|
+
return yield* Effect.fail(invariant(CATEGORY, PROPERTY_NOTIFICATION_WELL_FORMEDNESS_CLIENT, "real client surfaced notification that fails NotificationFrameSchema"));
|
|
78
78
|
}
|
|
79
79
|
})));
|
|
80
80
|
}
|
|
81
81
|
/**
|
|
82
82
|
* A4 client half — TestServer emits a bit-flipped / truncated /
|
|
83
83
|
* oversized frame; real client drops it silently. A subsequent tagged
|
|
84
|
-
* valid
|
|
84
|
+
* valid notification still surfaces (liveness proof, mirrors #187 round-5
|
|
85
85
|
* guard). A client that crashes on the malformed frame disconnects,
|
|
86
86
|
* preventing the liveness probe from surfacing within the deadline.
|
|
87
87
|
*
|
|
88
|
-
* Predicate: liveness — next tagged
|
|
88
|
+
* Predicate: liveness — next tagged notification surfaces within deadline.
|
|
89
89
|
*/
|
|
90
90
|
export function registerMalformedFrameHandlingClient(ctx) {
|
|
91
91
|
registerProperty(ctx, CATEGORY, PROPERTY_MALFORMED_FRAME_HANDLING_CLIENT, "malformed TestServer emission absorbed silently; liveness intact", Effect.scoped(Effect.gen(function* () {
|
|
92
92
|
const fx = yield* acquireFixture(ctx, CATEGORY, PROPERTY_MALFORMED_FRAME_HANDLING_CLIENT);
|
|
93
93
|
yield* subscribeAll(fx.handle);
|
|
94
|
-
const
|
|
94
|
+
const baseNotification = fc.sample(arbitraryNotificationFrame(), {
|
|
95
95
|
numRuns: 1,
|
|
96
96
|
seed: ctx.seed,
|
|
97
97
|
})[0];
|
|
98
|
-
if (
|
|
99
|
-
return yield* Effect.fail(invariant(CATEGORY, PROPERTY_MALFORMED_FRAME_HANDLING_CLIENT, "failed to sample base
|
|
98
|
+
if (baseNotification === undefined) {
|
|
99
|
+
return yield* Effect.fail(invariant(CATEGORY, PROPERTY_MALFORMED_FRAME_HANDLING_CLIENT, "failed to sample base NotificationFrame"));
|
|
100
100
|
}
|
|
101
101
|
// Emit a malformed frame — the real client must absorb it.
|
|
102
102
|
yield* fx.connection
|
|
103
103
|
.emitMalformed({
|
|
104
|
-
|
|
104
|
+
baseNotification,
|
|
105
105
|
kind: "bit-flip",
|
|
106
106
|
seed: ctx.seed,
|
|
107
107
|
})
|
|
108
108
|
.pipe(Effect.orElseSucceed(() => undefined));
|
|
109
|
-
// Liveness probe: emit a valid tagged
|
|
109
|
+
// Liveness probe: emit a valid tagged notification after the malformed one.
|
|
110
110
|
const tag = yield* fx.window.freshEmissionTag;
|
|
111
|
-
yield* fx.window.
|
|
111
|
+
yield* fx.window.emitTaggedNotification({
|
|
112
112
|
connection: fx.connection,
|
|
113
|
-
base:
|
|
113
|
+
base: baseNotification,
|
|
114
114
|
emissionTag: tag,
|
|
115
115
|
});
|
|
116
116
|
const observed = yield* collectTagged(fx.handle, (t) => t === tag, {
|
|
@@ -118,7 +118,7 @@ export function registerMalformedFrameHandlingClient(ctx) {
|
|
|
118
118
|
budgetMs: PROPERTY_BUDGET_MS,
|
|
119
119
|
});
|
|
120
120
|
if (observed.length === 0) {
|
|
121
|
-
return yield* Effect.fail(invariant(CATEGORY, PROPERTY_MALFORMED_FRAME_HANDLING_CLIENT, "liveness failed: no tagged
|
|
121
|
+
return yield* Effect.fail(invariant(CATEGORY, PROPERTY_MALFORMED_FRAME_HANDLING_CLIENT, "liveness failed: no tagged notification after malformed emission"));
|
|
122
122
|
}
|
|
123
123
|
})));
|
|
124
124
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-conformance.js","sourceRoot":"","sources":["../../../../src/testing/conformance/client/schema-conformance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"schema-conformance.js","sourceRoot":"","sources":["../../../../src/testing/conformance/client/schema-conformance.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,7 +27,7 @@ import { acquireClientRunContext } from "./runner.js";
|
|
|
27
27
|
import { collectProperties, } from "../registry.js";
|
|
28
28
|
import { conformanceArtifactDirFromEnv } from "../env.js";
|
|
29
29
|
import { isAllowedCoverageGap, } from "../coverage-policy.js";
|
|
30
|
-
import {
|
|
30
|
+
import { registerNotificationWellFormednessClient, registerMalformedFrameHandlingClient, } from "./schema-conformance.js";
|
|
31
31
|
import { registerModelEquivalenceClient, registerRequestIdUniquenessClient, } from "./rpc-semantics.js";
|
|
32
32
|
import { registerArchiveLifecycleClient, registerFanOutCardinalityClient, registerPayloadOpacityClient, registerTaskBoundaryIsolationClient, } from "./delivery.js";
|
|
33
33
|
import { registerLatencyResilienceClient, registerResetPeerRecoveryClient, registerSlicerFramingClient, registerSlowCloseCleanupClient, registerTimeoutSurfaceClient, } from "./adversity.js";
|
|
@@ -41,7 +41,7 @@ const JSON_INDENT_SPACES = 2;
|
|
|
41
41
|
* single call site.
|
|
42
42
|
*/
|
|
43
43
|
export function registerAllClientProperties(ctx) {
|
|
44
|
-
|
|
44
|
+
registerNotificationWellFormednessClient(ctx);
|
|
45
45
|
registerMalformedFrameHandlingClient(ctx);
|
|
46
46
|
registerModelEquivalenceClient(ctx);
|
|
47
47
|
registerRequestIdUniquenessClient(ctx);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suite.js","sourceRoot":"","sources":["../../../../src/testing/conformance/client/suite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAc,MAAM,QAAQ,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAOtD,OAAO,EACL,iBAAiB,GAGlB,MAAM,gBAAgB,CAAC;AAMxB,OAAO,EAAE,6BAA6B,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EACL,oBAAoB,GAErB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"suite.js","sourceRoot":"","sources":["../../../../src/testing/conformance/client/suite.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../../src/testing/conformance/delivery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../../src/testing/conformance/delivery.ts"],"names":[],"mappings":"AA2CA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AA0ZzD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,qBAAqB,GAAG,IAAI,CA8D1E;AAMD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,qBAAqB,GAAG,IAAI,CA0DvE;AAED,6EAA6E;AAC7E,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,qBAAqB,GAAG,IAAI,CAgDvE;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,qBAAqB,GAAG,IAAI,CAiC1E;AAED;;;;;;;;;GASG;AACH,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,qBAAqB,GACzB,IAAI,CA+BN;AAyOD,2EAA2E;AAC3E,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,qBAAqB,GACzB,IAAI,CAqDN;AAED;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,qBAAqB,GACzB,IAAI,CAiHN;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,qBAAqB,GACzB,IAAI,CAgDN;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,qBAAqB,GAAG,IAAI,CAuEzE"}
|