@moltzap/protocol 2026.505.0 → 2026.505.2
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/app/methods/apps.d.ts +30 -103
- package/dist/app/methods/apps.d.ts.map +1 -1
- package/dist/app/methods/apps.js +9 -72
- package/dist/app/methods/apps.js.map +1 -1
- package/dist/network/actor-model.d.ts +9 -1
- package/dist/network/actor-model.d.ts.map +1 -1
- package/dist/network/actor-model.js +24 -2
- package/dist/network/actor-model.js.map +1 -1
- package/dist/network/index.d.ts +1 -0
- package/dist/network/index.d.ts.map +1 -1
- package/dist/network/index.js +3 -1
- package/dist/network/index.js.map +1 -1
- package/dist/network/methods/endpoints.d.ts +16 -0
- package/dist/network/methods/endpoints.d.ts.map +1 -0
- package/dist/network/methods/endpoints.js +17 -0
- package/dist/network/methods/endpoints.js.map +1 -0
- package/dist/rpc-groups.d.ts +20 -7
- package/dist/rpc-groups.d.ts.map +1 -1
- package/dist/rpc-groups.js +28 -8
- package/dist/rpc-groups.js.map +1 -1
- package/dist/rpc-registry.d.ts +886 -135
- package/dist/rpc-registry.d.ts.map +1 -1
- package/dist/rpc-registry.js +17 -9
- package/dist/rpc-registry.js.map +1 -1
- package/dist/schema/apps.d.ts +0 -26
- package/dist/schema/apps.d.ts.map +1 -1
- package/dist/schema/apps.js +1 -19
- package/dist/schema/apps.js.map +1 -1
- package/dist/schema/index.d.ts +4 -2
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +4 -2
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/notifications.d.ts +118 -106
- package/dist/schema/notifications.d.ts.map +1 -1
- package/dist/schema/notifications.js +54 -38
- package/dist/schema/notifications.js.map +1 -1
- package/dist/schema/primitives.d.ts +4 -0
- package/dist/schema/primitives.d.ts.map +1 -1
- package/dist/schema/primitives.js +2 -0
- package/dist/schema/primitives.js.map +1 -1
- package/dist/schema/tasks.d.ts +33 -0
- package/dist/schema/tasks.d.ts.map +1 -0
- package/dist/schema/tasks.js +27 -0
- package/dist/schema/tasks.js.map +1 -0
- package/dist/task/index.d.ts +1 -0
- package/dist/task/index.d.ts.map +1 -1
- package/dist/task/index.js +2 -1
- package/dist/task/index.js.map +1 -1
- package/dist/task/methods/tasks.d.ts +320 -0
- package/dist/task/methods/tasks.d.ts.map +1 -0
- package/dist/task/methods/tasks.js +116 -0
- package/dist/task/methods/tasks.js.map +1 -0
- package/dist/testing/conformance/boundary.d.ts.map +1 -1
- package/dist/testing/conformance/boundary.js +21 -74
- package/dist/testing/conformance/boundary.js.map +1 -1
- package/dist/testing/conformance/client/adversity.d.ts.map +1 -1
- package/dist/testing/conformance/client/adversity.js +5 -2
- package/dist/testing/conformance/client/adversity.js.map +1 -1
- package/dist/testing/conformance/client/boundary.d.ts.map +1 -1
- package/dist/testing/conformance/client/boundary.js +5 -2
- package/dist/testing/conformance/client/boundary.js.map +1 -1
- package/dist/testing/conformance/client/delivery.d.ts.map +1 -1
- package/dist/testing/conformance/client/delivery.js +7 -2
- package/dist/testing/conformance/client/delivery.js.map +1 -1
- package/dist/testing/conformance/delivery.d.ts +9 -14
- package/dist/testing/conformance/delivery.d.ts.map +1 -1
- package/dist/testing/conformance/delivery.js +32 -198
- package/dist/testing/conformance/delivery.js.map +1 -1
- package/dist/testing/conformance/dispatcher-concurrency.js +5 -5
- package/dist/testing/conformance/dispatcher-concurrency.js.map +1 -1
- package/dist/testing/conformance/suite.js +18 -29
- package/dist/testing/conformance/suite.js.map +1 -1
- package/dist/testing/models/dispatch.d.ts.map +1 -1
- package/dist/testing/models/dispatch.js +12 -9
- package/dist/testing/models/dispatch.js.map +1 -1
- package/dist/types.d.ts +2 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/validators.d.ts +20 -34
- package/dist/validators.d.ts.map +1 -1
- package/dist/validators.js +6 -11
- package/dist/validators.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/dist/schema/delivery.d.ts +0 -22
- package/dist/schema/delivery.d.ts.map +0 -1
- package/dist/schema/delivery.js +0 -13
- package/dist/schema/delivery.js.map +0 -1
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* server-side adversity module's degradation contract.
|
|
27
27
|
*/
|
|
28
28
|
import { Clock, Effect } from "effect";
|
|
29
|
-
import {
|
|
29
|
+
import { MessageReceivedNotificationDefinition } from "../../../schema/notifications.js";
|
|
30
30
|
import { brandNotificationFrame } from "../../../schema/internal-frames.js";
|
|
31
31
|
import { PropertyUnavailable, registerProperty } from "../registry.js";
|
|
32
32
|
import { acquireFixture, collectTagged, invariant, subscribeAll, } from "./_fixtures.js";
|
|
@@ -53,9 +53,12 @@ export function registerLatencyResilienceClient(ctx) {
|
|
|
53
53
|
}
|
|
54
54
|
const fx = yield* acquireFixture(ctx, CATEGORY, PROPERTY_LATENCY_RESILIENCE_CLIENT);
|
|
55
55
|
yield* subscribeAll(fx.handle);
|
|
56
|
+
// Vehicle: known notification method; params intentionally non-
|
|
57
|
+
// conformant. Decoder stays payload-opaque (#200 §5 C3) so the
|
|
58
|
+
// adversity probe is independent of params shape.
|
|
56
59
|
const base = brandNotificationFrame({
|
|
57
60
|
jsonrpc: "2.0",
|
|
58
|
-
method:
|
|
61
|
+
method: MessageReceivedNotificationDefinition.name,
|
|
59
62
|
params: {},
|
|
60
63
|
});
|
|
61
64
|
const N = 3;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adversity.js","sourceRoot":"","sources":["../../../../src/testing/conformance/client/adversity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"adversity.js","sourceRoot":"","sources":["../../../../src/testing/conformance/client/adversity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boundary.d.ts","sourceRoot":"","sources":["../../../../src/testing/conformance/client/boundary.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAc/D;;;;;;;;GAQG;AACH,wBAAgB,kCAAkC,CAChD,GAAG,EAAE,2BAA2B,GAC/B,IAAI,
|
|
1
|
+
{"version":3,"file":"boundary.d.ts","sourceRoot":"","sources":["../../../../src/testing/conformance/client/boundary.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAc/D;;;;;;;;GAQG;AACH,wBAAgB,kCAAkC,CAChD,GAAG,EAAE,2BAA2B,GAC/B,IAAI,CAsEN"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { Effect } from "effect";
|
|
11
11
|
import * as fc from "fast-check";
|
|
12
|
-
import {
|
|
12
|
+
import { MessageReceivedNotificationDefinition } from "../../../schema/notifications.js";
|
|
13
13
|
import { brandNotificationFrame } from "../../../schema/internal-frames.js";
|
|
14
14
|
import { arbitraryNotificationFrame } from "../../arbitraries/frames.js";
|
|
15
15
|
import { registerProperty } from "../registry.js";
|
|
@@ -50,11 +50,14 @@ export function registerSchemaExhaustiveFuzzClient(ctx) {
|
|
|
50
50
|
}
|
|
51
51
|
// (2) Liveness probe.
|
|
52
52
|
const tag = yield* fx.window.freshEmissionTag;
|
|
53
|
+
// Vehicle: known notification method; params intentionally non-
|
|
54
|
+
// conformant. Decoder stays payload-opaque (#200 §5 C3); the
|
|
55
|
+
// liveness probe is independent of params shape.
|
|
53
56
|
yield* fx.window.emitTaggedNotification({
|
|
54
57
|
connection: fx.connection,
|
|
55
58
|
base: brandNotificationFrame({
|
|
56
59
|
jsonrpc: "2.0",
|
|
57
|
-
method:
|
|
60
|
+
method: MessageReceivedNotificationDefinition.name,
|
|
58
61
|
params: {},
|
|
59
62
|
}),
|
|
60
63
|
emissionTag: tag,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boundary.js","sourceRoot":"","sources":["../../../../src/testing/conformance/client/boundary.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"boundary.js","sourceRoot":"","sources":["../../../../src/testing/conformance/client/boundary.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../../../src/testing/conformance/client/delivery.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAoB/D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,2BAA2B,GAC/B,IAAI,CAuEN;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,2BAA2B,GAC/B,IAAI,
|
|
1
|
+
{"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../../../src/testing/conformance/client/delivery.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAoB/D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,2BAA2B,GAC/B,IAAI,CAuEN;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,2BAA2B,GAC/B,IAAI,CA4DN;AAED;;;;;;;GAOG;AACH,wBAAgB,mCAAmC,CACjD,GAAG,EAAE,2BAA2B,GAC/B,IAAI,CA+GN;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,2BAA2B,GAC/B,IAAI,CAoEN"}
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
import { Effect } from "effect";
|
|
22
22
|
import * as fc from "fast-check";
|
|
23
23
|
import { notificationFrame } from "../../../helpers.js";
|
|
24
|
-
import { ConversationArchivedNotificationDefinition, ConversationUnarchivedNotificationDefinition,
|
|
24
|
+
import { ConversationArchivedNotificationDefinition, ConversationUnarchivedNotificationDefinition, MessageReceivedNotificationDefinition, } from "../../../schema/notifications.js";
|
|
25
25
|
import { agentId, conversationId as toConversationId, } from "../../../schema/primitives.js";
|
|
26
26
|
import { brandNotificationFrame } from "../../../schema/internal-frames.js";
|
|
27
27
|
import { arbitraryNotificationFrame } from "../../arbitraries/frames.js";
|
|
@@ -103,9 +103,14 @@ export function registerPayloadOpacityClient(ctx) {
|
|
|
103
103
|
const fx = yield* acquireFixture(ctx, CATEGORY, PROPERTY_PAYLOAD_OPACITY_CLIENT);
|
|
104
104
|
yield* subscribeAll(fx.handle);
|
|
105
105
|
const token = `opq-${ctx.seed.toString(PAYLOAD_TOKEN_RADIX)}-${Date.now().toString(PAYLOAD_TOKEN_RADIX)}`;
|
|
106
|
+
// Vehicle: pick a known notification method so the wire decoder
|
|
107
|
+
// routes by name; the params field is intentionally non-conformant
|
|
108
|
+
// (a bare opaqueToken) — the property asserts the decoder stays
|
|
109
|
+
// payload-opaque (#200 §5 C3) and surfaces the byte-identical raw
|
|
110
|
+
// frame to subscribers.
|
|
106
111
|
const base = brandNotificationFrame({
|
|
107
112
|
jsonrpc: "2.0",
|
|
108
|
-
method:
|
|
113
|
+
method: MessageReceivedNotificationDefinition.name,
|
|
109
114
|
params: {
|
|
110
115
|
opaqueToken: token,
|
|
111
116
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery.js","sourceRoot":"","sources":["../../../../src/testing/conformance/client/delivery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,0CAA0C,EAC1C,4CAA4C,EAC5C,
|
|
1
|
+
{"version":3,"file":"delivery.js","sourceRoot":"","sources":["../../../../src/testing/conformance/client/delivery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,0CAA0C,EAC1C,4CAA4C,EAC5C,qCAAqC,GACtC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,OAAO,EACP,cAAc,IAAI,gBAAgB,GACnC,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAEzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EACL,cAAc,EACd,aAAa,EACb,SAAS,EACT,wBAAwB,EACxB,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,MAAM,QAAQ,GAAG,UAAmB,CAAC;AACrC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACjC,MAAM,mCAAmC,GAAG,4BAA4B,CAAC;AACzE,MAAM,+BAA+B,GAAG,wBAAwB,CAAC;AACjE,MAAM,uCAAuC,GAC3C,gCAAgC,CAAC;AACnC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAC/B,MAAM,4BAA4B,GAAG,CAAC,CAAC;AACvC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAEtC;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,+BAA+B,CAC7C,GAAgC;IAEhC,gBAAgB,CACd,GAAG,EACH,QAAQ,EACR,mCAAmC,EACnC,qFAAqF,EACrF,MAAM,CAAC,MAAM,CACX,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,cAAc,CAC9B,GAAG,EACH,QAAQ,EACR,mCAAmC,CACpC,CAAC;QACF,KAAK,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,0BAA0B,EAAE,EAAE;YACnD,OAAO,EAAE,CAAC;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;SACf,CAAC,CAAC,CAAC,CAAC,CAAC;QACN,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,SAAS,CACP,QAAQ,EACR,mCAAmC,EACnC,eAAe,CAChB,CACF,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC;QACZ,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC;QACnD,MAAM,UAAU,GAAG,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAsB,sBAAsB,CAAC;gBAC3D,GAAG,IAAI;gBACP,MAAM,EAAE,EAAE,GAAG,UAAU,EAAE,aAAa,EAAE,CAAC,EAAE;aAC5C,CAAC,CAAC;YACH,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC;gBACtC,UAAU,EAAE,EAAE,CAAC,UAAU;gBACzB,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,QAAQ;aACtB,CAAC,CAAC;QACL,CAAC;QACD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,aAAa,CACnC,EAAE,CAAC,MAAM,EACT,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,EACrB,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAC9C,CAAC;QACF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,SAAS,CACP,QAAQ,EACR,mCAAmC,EACnC,YAAY,CAAC,sBAAsB,QAAQ,CAAC,MAAM,EAAE,CACrD,CACF,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC5D,0CAA0C;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrB,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,SAAS,CACP,QAAQ,EACR,mCAAmC,EACnC,0BAA0B,CAAC,SAAS,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CACzD,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CACH,CACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,4BAA4B,CAC1C,GAAgC;IAEhC,gBAAgB,CACd,GAAG,EACH,QAAQ,EACR,+BAA+B,EAC/B,yEAAyE,EACzE,MAAM,CAAC,MAAM,CACX,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,cAAc,CAC9B,GAAG,EACH,QAAQ,EACR,+BAA+B,CAChC,CAAC;QACF,KAAK,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC1G,gEAAgE;QAChE,mEAAmE;QACnE,gEAAgE;QAChE,kEAAkE;QAClE,wBAAwB;QACxB,MAAM,IAAI,GAAG,sBAAsB,CAAC;YAClC,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,qCAAqC,CAAC,IAAI;YAClD,MAAM,EAAE;gBACN,WAAW,EAAE,KAAK;aACnB;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC;QAC9C,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC;YACtC,UAAU,EAAE,EAAE,CAAC,UAAU;YACzB,IAAI;YACJ,WAAW,EAAE,GAAG;SACjB,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE;YACjE,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,kBAAkB;SAC7B,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,SAAS,CACP,QAAQ,EACR,+BAA+B,EAC/B,SAAS,KAAK,uCAAuC,CACtD,CACF,CAAC;QACJ,CAAC;QACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;QAC9B,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC3D,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,SAAS,CACP,QAAQ,EACR,+BAA+B,EAC/B,SAAS,KAAK,kDAAkD,CACjE,CACF,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CACH,CACF,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mCAAmC,CACjD,GAAgC;IAEhC,gBAAgB,CACd,GAAG,EACH,QAAQ,EACR,uCAAuC,EACvC,sEAAsE,EACtE,MAAM,CAAC,MAAM,CACX,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,cAAc,CAC9B,GAAG,EACH,QAAQ,EACR,uCAAuC,CACxC,CAAC;QACF,KAAK,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC/B,MAAM,gBAAgB,GAAG,EAAE,CAAC,MAAM,CAAC,0BAA0B,EAAE,EAAE;YAC/D,OAAO,EAAE,CAAC;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;SACf,CAAC,CAAC,CAAC,CAAC,CAAC;QACN,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,SAAS,CACP,QAAQ,EACR,uCAAuC,EACvC,eAAe,CAChB,CACF,CAAC;QACJ,CAAC;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC;QACpD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC;QACpD,MAAM,KAAK,GAAG,UAAU,GAAG,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,UAAU,GAAG,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,wBAAwB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACrE,sBAAsB;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,4BAA4B,EAAE,CAAC,EAAE,EAAE,CAAC;YACtD,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC;gBACtC,UAAU,EAAE,EAAE,CAAC,UAAU;gBACzB,IAAI,EAAE;oBACJ,GAAG,gBAAgB;oBACnB,MAAM,EAAE,EAAE,GAAG,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE;iBACjD;gBACD,WAAW,EAAE,SAAS;aACvB,CAAC,CAAC;QACL,CAAC;QACD,+DAA+D;QAC/D,4CAA4C;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,4BAA4B,EAAE,CAAC,EAAE,EAAE,CAAC;YACtD,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC;gBACtC,UAAU,EAAE,EAAE,CAAC,UAAU;gBACzB,IAAI,EAAE;oBACJ,GAAG,gBAAgB;oBACnB,MAAM,EAAE,EAAE,GAAG,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE;iBACjD;gBACD,WAAW,EAAE,SAAS;aACvB,CAAC,CAAC;QACL,CAAC;QACD,yDAAyD;QACzD,KAAK,CAAC,CAAC,aAAa,CAClB,EAAE,CAAC,MAAM,EACT,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,EACzC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAC9C,CAAC;QACF,qEAAqE;QACrE,wDAAwD;QACxD,iEAAiE;QACjE,0DAA0D;QAC1D,6DAA6D;QAC7D,gEAAgE;QAChE,8DAA8D;QAC9D,kEAAkE;QAClE,+DAA+D;QAC/D,uEAAuE;QACvE,qDAAqD;QACrD,8DAA8D;QAC9D,uDAAuD;QACvD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,aAAa,CAClC,EAAE,CAAC,MAAM,EACT,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,EACtB,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAC7B,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC;YACtC,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;gBAClB,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,SAAS,CACP,QAAQ,EACR,uCAAuC,EACvC,gDAAgD,MAAM,CAAC,GAAG,CAAC,EAAE,CAC9D,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,aAAa,CAClC,EAAE,CAAC,MAAM,EACT,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,EACtB,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAC7B,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC;YACtC,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;gBAClB,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,SAAS,CACP,QAAQ,EACR,uCAAuC,EACvC,gDAAgD,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAC7E,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CACH,CACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAC5C,GAAgC;IAEhC,MAAM,IAAI,GAAG,0BAA0B,CAAC;IACxC,gBAAgB,CACd,GAAG,EACH,QAAQ,EACR,IAAI,EACJ,+EAA+E,EAC/E,MAAM,CAAC,MAAM,CACX,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtD,KAAK,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAE/B,MAAM,cAAc,GAAG,gBAAgB,CACrC,sCAAsC,CACvC,CAAC;QACF,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC;QAC9C,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC;YACtC,UAAU,EAAE,EAAE,CAAC,UAAU;YACzB,IAAI,EAAE,iBAAiB,CAAC,0CAA0C,EAAE;gBAClE,cAAc;gBACd,UAAU,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;gBACrC,EAAE;aACH,CAAC;YACF,WAAW,EAAE,GAAG;SACjB,CAAC,CAAC;QACH,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC;YACtC,UAAU,EAAE,EAAE,CAAC,UAAU;YACzB,IAAI,EAAE,iBAAiB,CACrB,4CAA4C,EAC5C;gBACE,cAAc;gBACd,EAAE;aACH,CACF;YACD,WAAW,EAAE,GAAG;SACjB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE;YACjE,QAAQ,EAAE,2BAA2B;YACrC,QAAQ,EAAE,kBAAkB;SAC7B,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,KAAK,2BAA2B,EAAE,CAAC;YACpD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,SAAS,CACP,QAAQ,EACR,IAAI,EACJ,YAAY,2BAA2B,gCAAgC,QAAQ,CAAC,MAAM,EAAE,CACzF,CACF,CAAC;QACJ,CAAC;QACD,IACE,QAAQ,CAAC,CAAC,CAAC,EAAE,gBAAgB;YAC3B,0CAA0C,CAAC,IAAI;YACjD,QAAQ,CAAC,CAAC,CAAC,EAAE,gBAAgB;gBAC3B,4CAA4C,CAAC,IAAI,EACnD,CAAC;YACD,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,SAAS,CACP,QAAQ,EACR,IAAI,EACJ,6BAA6B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACjF,CACF,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CACH,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -58,16 +58,6 @@ export declare function registerPayloadOpacity(ctx: ConformanceRunContext): void
|
|
|
58
58
|
* property reports `PropertyUnavailable` and B.9 carries the load.
|
|
59
59
|
*/
|
|
60
60
|
export declare function registerHookGatedDelivery(ctx: ConformanceRunContext): void;
|
|
61
|
-
/**
|
|
62
|
-
* Multi-app FIFO short-circuit — register two apps on the same hook,
|
|
63
|
-
* first denies, assert second handler is NOT invoked. Architect plan
|
|
64
|
-
* §3.4: `Effect.forEach(registeredApps, ...)` iterates in registration
|
|
65
|
-
* order; first-deny short-circuits the loop.
|
|
66
|
-
*
|
|
67
|
-
* Same fixture constraint as `hook-gated-delivery`: requires app session
|
|
68
|
-
* machinery. Reports `PropertyUnavailable` when prerequisites are
|
|
69
|
-
* absent.
|
|
70
|
-
*/
|
|
71
61
|
export declare function registerMultiAppFifoShortCircuit(ctx: ConformanceRunContext): void;
|
|
72
62
|
/** Task-boundary isolation — conversation A's events don't leak into B. */
|
|
73
63
|
export declare function registerTaskBoundaryIsolation(ctx: ConformanceRunContext): void;
|
|
@@ -83,11 +73,16 @@ export declare function registerTaskBoundaryIsolation(ctx: ConformanceRunContext
|
|
|
83
73
|
*/
|
|
84
74
|
export declare function registerConversationLifecycle(ctx: ConformanceRunContext): void;
|
|
85
75
|
/**
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
76
|
+
* Task close lifecycle — close is observable as both conversation
|
|
77
|
+
* archival and task/closed, and the archived task conversation rejects
|
|
78
|
+
* later traffic.
|
|
79
|
+
*
|
|
80
|
+
* Phase 7 cutover dropped the apps/createSession bootstrap that wired
|
|
81
|
+
* manifest conversations to a session. The replacement TM-topology
|
|
82
|
+
* bootstrap lands in Phase 9 (#318); until then this property reports
|
|
83
|
+
* PropertyDeferred.
|
|
89
84
|
*/
|
|
90
|
-
export declare function
|
|
85
|
+
export declare function registerTaskCloseLifecycle(ctx: ConformanceRunContext): void;
|
|
91
86
|
/**
|
|
92
87
|
* Archive lifecycle — archival is observable and enforced:
|
|
93
88
|
* - conversations/archive broadcasts conversations/archived
|
|
@@ -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":"AAsCA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAsXzD;;;;;;;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;AAQH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,qBAAqB,GAAG,IAAI,CAmB1E;AAED,wBAAgB,gCAAgC,CAC9C,GAAG,EAAE,qBAAqB,GACzB,IAAI,CAmBN;AAED,2EAA2E;AAC3E,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,qBAAqB,GACzB,IAAI,CAqDN;AAED;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,qBAAqB,GACzB,IAAI,CAiHN;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,qBAAqB,GAAG,IAAI,CAmB3E;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,qBAAqB,GAAG,IAAI,CAuEzE"}
|
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
* Principle 3: every property body is `Effect<void, PropertyFailure>`.
|
|
10
10
|
*/
|
|
11
11
|
import * as fc from "fast-check";
|
|
12
|
-
import { Effect, Either
|
|
12
|
+
import { Effect, Either } from "effect";
|
|
13
13
|
import { ErrorCodes } from "../../schema/errors.js";
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
14
|
+
import { ConversationArchivedNotificationDefinition, ConversationCreatedNotificationDefinition, ConversationUnarchivedNotificationDefinition, ConversationUpdatedNotificationDefinition, MessageReceivedNotificationDefinition, } from "../../schema/notifications.js";
|
|
15
|
+
import { TasksCreate, TasksClose } from "../../task/methods/tasks.js";
|
|
16
16
|
import { ConversationsArchive, ConversationsCreate, ConversationsUnarchive, ConversationsUpdate, } from "../../task/methods/conversations.js";
|
|
17
17
|
import { MessagesSend } from "../../task/methods/messages.js";
|
|
18
18
|
import { AgentId, ConversationId, conversationId as makeConversationId, } from "../../schema/primitives.js";
|
|
@@ -20,16 +20,15 @@ import { RpcResponseError } from "../errors.js";
|
|
|
20
20
|
import { isNotificationFrame } from "../codec.js";
|
|
21
21
|
import { makeTestClient } from "../test-client.js";
|
|
22
22
|
import { registerTestAgent } from "../agent-registration.js";
|
|
23
|
-
import { PropertyDeferred, PropertyInvariantViolation,
|
|
24
|
-
import { leftOrNull, requireRight
|
|
23
|
+
import { PropertyDeferred, PropertyInvariantViolation, assertProperty, registerProperty, } from "./registry.js";
|
|
24
|
+
import { leftOrNull, requireRight } from "./_helpers.js";
|
|
25
25
|
const CATEGORY = "delivery";
|
|
26
26
|
const DEFAULT_TIMEOUT_MS = 5000;
|
|
27
27
|
const DEFAULT_CAPTURE_CAPACITY = 256;
|
|
28
28
|
const DEFAULT_PROPERTY_NUM_RUNS = 3;
|
|
29
|
-
const DATE_ID_RADIX = 36;
|
|
30
29
|
const MAX_N = 4;
|
|
31
30
|
const CONVERSATION_LIFECYCLE_PROPERTY = "conversation-lifecycle";
|
|
32
|
-
const
|
|
31
|
+
const TASK_CLOSE_LIFECYCLE_PROPERTY = "task-close-lifecycle";
|
|
33
32
|
const ARCHIVE_LIFECYCLE_PROPERTY = "archive-lifecycle";
|
|
34
33
|
const STORE_AND_REPLAY_PROPERTY = "store-and-replay";
|
|
35
34
|
const TASK_BOUNDARY_ISOLATION_PROPERTY = "task-boundary-isolation";
|
|
@@ -97,17 +96,6 @@ function waitForMessageReceivedNotification(observer, conversationId, propertyNa
|
|
|
97
96
|
}
|
|
98
97
|
});
|
|
99
98
|
}
|
|
100
|
-
function waitForAppSessionClosedNotification(observer, sessionId, closedBy, propertyName) {
|
|
101
|
-
return Effect.gen(function* () {
|
|
102
|
-
const event = yield* observer.client
|
|
103
|
-
.waitForNotification(AppSessionClosedNotificationDefinition, DEFAULT_TIMEOUT_MS)
|
|
104
|
-
.pipe(Effect.mapError((e) => violation(propertyName, `session closed event missing: ${e.message}`)));
|
|
105
|
-
const data = event.params;
|
|
106
|
-
if (data?.sessionId !== sessionId || data.closedBy !== closedBy) {
|
|
107
|
-
return yield* Effect.fail(violation(propertyName, `bad session closed event payload: ${JSON.stringify(event.params)}`));
|
|
108
|
-
}
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
99
|
function waitForArchivedEvent(observer, conversationId, byAgentId, propertyName) {
|
|
112
100
|
return Effect.gen(function* () {
|
|
113
101
|
const event = yield* observer.client
|
|
@@ -348,186 +336,32 @@ export function registerPayloadOpacity(ctx) {
|
|
|
348
336
|
* fixture's agents are owner-less (default `startCoreTestServer`), the
|
|
349
337
|
* property reports `PropertyUnavailable` and B.9 carries the load.
|
|
350
338
|
*/
|
|
339
|
+
// Phase 7 cutover removed `apps/create`'s session bootstrap. Both the
|
|
340
|
+
// hook-gated-delivery and multi-app-fifo-short-circuit properties
|
|
341
|
+
// short-circuit to PropertyDeferred — the assertions need TM-topology
|
|
342
|
+
// hook routing that lands in Phase 9 (#318). The suite's
|
|
343
|
+
// `allowedServerCoverageGaps` matches `reasonIncludes: TasksCreate.name`,
|
|
344
|
+
// so naming the gating dependency keeps coverage honest.
|
|
351
345
|
export function registerHookGatedDelivery(ctx) {
|
|
352
346
|
registerProperty(ctx, CATEGORY, "hook-gated-delivery", "deny drops; patch mutates recipient view; attached conv enters hooks", Effect.scoped(Effect.gen(function* () {
|
|
353
|
-
|
|
354
|
-
yield* requireRight(fixture, (error) => error);
|
|
355
|
-
// Codex review (#327, finding 4): the protocol fixture cannot
|
|
356
|
-
// drive the deny/patch/attach scenarios end-to-end (no DB seam
|
|
357
|
-
// to inspect the recipient view; `apps/attachConversation` is a
|
|
358
|
-
// client-originated RPC but the assertion needs a server-internal observation
|
|
359
|
-
// the conformance contract does not expose). When a future
|
|
360
|
-
// fixture extension makes apps/create reachable, surface a
|
|
361
|
-
// typed Deferred so the suite reports honest coverage instead
|
|
362
|
-
// of a vacuous pass.
|
|
347
|
+
void ctx;
|
|
363
348
|
return yield* Effect.fail(new PropertyDeferred({
|
|
364
349
|
category: CATEGORY,
|
|
365
350
|
name: "hook-gated-delivery",
|
|
366
|
-
followUp:
|
|
351
|
+
followUp: `deny/patch/attach assertions need TM-topology hook routing; reactivate alongside Phase 9 (${TasksCreate.name} bootstrap)`,
|
|
367
352
|
}));
|
|
368
353
|
})));
|
|
369
354
|
}
|
|
370
|
-
/**
|
|
371
|
-
* Multi-app FIFO short-circuit — register two apps on the same hook,
|
|
372
|
-
* first denies, assert second handler is NOT invoked. Architect plan
|
|
373
|
-
* §3.4: `Effect.forEach(registeredApps, ...)` iterates in registration
|
|
374
|
-
* order; first-deny short-circuits the loop.
|
|
375
|
-
*
|
|
376
|
-
* Same fixture constraint as `hook-gated-delivery`: requires app session
|
|
377
|
-
* machinery. Reports `PropertyUnavailable` when prerequisites are
|
|
378
|
-
* absent.
|
|
379
|
-
*/
|
|
380
355
|
export function registerMultiAppFifoShortCircuit(ctx) {
|
|
381
356
|
registerProperty(ctx, CATEGORY, "multi-app-fifo-short-circuit", "two apps; first denies; second hook is NOT invoked", Effect.scoped(Effect.gen(function* () {
|
|
382
|
-
|
|
383
|
-
yield* requireRight(fixture, (error) => error);
|
|
384
|
-
// Codex review (#327, finding 5): once apps/create succeeds, the
|
|
385
|
-
// FIFO short-circuit assertion requires registering a SECOND
|
|
386
|
-
// app on the same hook and observing the second handler is NOT
|
|
387
|
-
// invoked — the protocol fixture exposes a single-app session.
|
|
388
|
-
// B.9 covers via the dual-app wire fixture; surface a typed
|
|
389
|
-
// Deferred here.
|
|
357
|
+
void ctx;
|
|
390
358
|
return yield* Effect.fail(new PropertyDeferred({
|
|
391
359
|
category: CATEGORY,
|
|
392
360
|
name: "multi-app-fifo-short-circuit",
|
|
393
|
-
followUp:
|
|
361
|
+
followUp: `dual-app first-deny short-circuit needs TM-topology dispatch; reactivate alongside Phase 9 (${TasksCreate.name} bootstrap)`,
|
|
394
362
|
}));
|
|
395
363
|
})));
|
|
396
364
|
}
|
|
397
|
-
function acquireAppSessionFixture(ctx, namePrefix, propertyName) {
|
|
398
|
-
const unavailable = (reason) => new PropertyUnavailable({ category: CATEGORY, name: propertyName, reason });
|
|
399
|
-
return Effect.gen(function* () {
|
|
400
|
-
const appAgent = yield* registerTestAgent({
|
|
401
|
-
baseUrl: ctx.realServer.baseUrl,
|
|
402
|
-
name: `${namePrefix}-app`,
|
|
403
|
-
}).pipe(Effect.mapError((e) => unavailable(`app agent register: ${e.body}`)));
|
|
404
|
-
const appClient = yield* makeTestClient({
|
|
405
|
-
serverUrl: ctx.realServer.wsUrl,
|
|
406
|
-
agentKey: appAgent.apiKey,
|
|
407
|
-
agentId: appAgent.agentId,
|
|
408
|
-
defaultTimeoutMs: DEFAULT_TIMEOUT_MS,
|
|
409
|
-
captureCapacity: DEFAULT_CAPTURE_CAPACITY,
|
|
410
|
-
}).pipe(Effect.mapError((e) => unavailable(`app client acquire: ${String(e)}`)));
|
|
411
|
-
const appId = `${namePrefix}-${Date.now().toString(DATE_ID_RADIX)}`;
|
|
412
|
-
const registerOutcome = yield* sendUntypedRpc(appClient, AppsRegister, {
|
|
413
|
-
manifest: {
|
|
414
|
-
appId,
|
|
415
|
-
name: `Hook-gated app ${appId}`,
|
|
416
|
-
conversations: [
|
|
417
|
-
{ key: "main", name: "Main", participantFilter: "all" },
|
|
418
|
-
],
|
|
419
|
-
hooks: {
|
|
420
|
-
before_message_delivery: { timeout_ms: 5000 },
|
|
421
|
-
},
|
|
422
|
-
},
|
|
423
|
-
}).pipe(Effect.either);
|
|
424
|
-
yield* requireRight(registerOutcome, (error) => unavailable(`apps/register failed: ${error._tag}`));
|
|
425
|
-
const senderAgent = yield* registerTestAgent({
|
|
426
|
-
baseUrl: ctx.realServer.baseUrl,
|
|
427
|
-
name: `${namePrefix}-sender`,
|
|
428
|
-
}).pipe(Effect.mapError((e) => unavailable(`sender register: ${e.body}`)));
|
|
429
|
-
const senderClient = yield* makeTestClient({
|
|
430
|
-
serverUrl: ctx.realServer.wsUrl,
|
|
431
|
-
agentKey: senderAgent.apiKey,
|
|
432
|
-
agentId: senderAgent.agentId,
|
|
433
|
-
defaultTimeoutMs: DEFAULT_TIMEOUT_MS,
|
|
434
|
-
captureCapacity: DEFAULT_CAPTURE_CAPACITY,
|
|
435
|
-
}).pipe(Effect.mapError((e) => unavailable(`sender client acquire: ${String(e)}`)));
|
|
436
|
-
const createOutcome = yield* senderClient
|
|
437
|
-
.sendRpc(AppsCreate, { appId, invitedAgentIds: [] })
|
|
438
|
-
.pipe(Effect.either);
|
|
439
|
-
const createResult = yield* requireRight(createOutcome, (error) => unavailable(
|
|
440
|
-
// Most common cause: owner_user_id is null on the sender (see
|
|
441
|
-
// app-host.ts:629). The default `startCoreTestServer` does not
|
|
442
|
-
// configure `devModeUserId`; B.9 fills the gap via DB seeding.
|
|
443
|
-
`apps/create failed (likely sender owner_user_id null; B.9 covers via DB seeding): ${error._tag}`));
|
|
444
|
-
const session = createResult.session;
|
|
445
|
-
const sessionId = session?.id;
|
|
446
|
-
if (typeof sessionId !== "string" || sessionId.length === 0) {
|
|
447
|
-
return yield* Effect.fail(unavailable(`apps/create returned no session.id`));
|
|
448
|
-
}
|
|
449
|
-
const dispatchHits = yield* Ref.make(0);
|
|
450
|
-
return {
|
|
451
|
-
app: { agent: appAgent, client: appClient, appId },
|
|
452
|
-
sender: { agent: senderAgent, client: senderClient },
|
|
453
|
-
sessionId,
|
|
454
|
-
dispatchHits,
|
|
455
|
-
};
|
|
456
|
-
});
|
|
457
|
-
}
|
|
458
|
-
function acquireAppSessionCloseFixture(ctx) {
|
|
459
|
-
const propertyName = APP_SESSION_CLOSE_LIFECYCLE_PROPERTY;
|
|
460
|
-
const unavailable = (reason) => new PropertyUnavailable({ category: CATEGORY, name: propertyName, reason });
|
|
461
|
-
return Effect.gen(function* () {
|
|
462
|
-
const appAgent = yield* registerTestAgent({
|
|
463
|
-
baseUrl: ctx.realServer.baseUrl,
|
|
464
|
-
name: "clapp",
|
|
465
|
-
uniqueSuffix: false,
|
|
466
|
-
}).pipe(Effect.mapError((e) => unavailable(`app agent register: ${e.body}`)));
|
|
467
|
-
const appClient = yield* makeTestClient({
|
|
468
|
-
serverUrl: ctx.realServer.wsUrl,
|
|
469
|
-
agentKey: appAgent.apiKey,
|
|
470
|
-
agentId: appAgent.agentId,
|
|
471
|
-
defaultTimeoutMs: DEFAULT_TIMEOUT_MS,
|
|
472
|
-
captureCapacity: DEFAULT_CAPTURE_CAPACITY,
|
|
473
|
-
}).pipe(Effect.mapError((e) => unavailable(`app client acquire: ${String(e)}`)));
|
|
474
|
-
const appId = `close-life-${Date.now().toString(DATE_ID_RADIX)}`;
|
|
475
|
-
const registerOutcome = yield* sendUntypedRpc(appClient, AppsRegister, {
|
|
476
|
-
manifest: {
|
|
477
|
-
appId,
|
|
478
|
-
name: `Close lifecycle app ${appId}`,
|
|
479
|
-
conversations: [
|
|
480
|
-
{ key: "main", name: "Main", participantFilter: "all" },
|
|
481
|
-
],
|
|
482
|
-
},
|
|
483
|
-
}).pipe(Effect.either);
|
|
484
|
-
yield* requireRight(registerOutcome, (error) => unavailable(`apps/register failed: ${error._tag}`));
|
|
485
|
-
const initiatorAgent = yield* registerTestAgent({
|
|
486
|
-
baseUrl: ctx.realServer.baseUrl,
|
|
487
|
-
name: "clinit",
|
|
488
|
-
uniqueSuffix: false,
|
|
489
|
-
}).pipe(Effect.mapError((e) => unavailable(`initiator register: ${e.body}`)));
|
|
490
|
-
const initiatorClient = yield* makeTestClient({
|
|
491
|
-
serverUrl: ctx.realServer.wsUrl,
|
|
492
|
-
agentKey: initiatorAgent.apiKey,
|
|
493
|
-
agentId: initiatorAgent.agentId,
|
|
494
|
-
defaultTimeoutMs: DEFAULT_TIMEOUT_MS,
|
|
495
|
-
captureCapacity: DEFAULT_CAPTURE_CAPACITY,
|
|
496
|
-
}).pipe(Effect.mapError((e) => unavailable(`initiator client acquire: ${String(e)}`)));
|
|
497
|
-
const inviteeAgent = yield* registerTestAgent({
|
|
498
|
-
baseUrl: ctx.realServer.baseUrl,
|
|
499
|
-
name: "clinv",
|
|
500
|
-
uniqueSuffix: false,
|
|
501
|
-
}).pipe(Effect.mapError((e) => unavailable(`invitee register: ${e.body}`)));
|
|
502
|
-
const inviteeClient = yield* makeTestClient({
|
|
503
|
-
serverUrl: ctx.realServer.wsUrl,
|
|
504
|
-
agentKey: inviteeAgent.apiKey,
|
|
505
|
-
agentId: inviteeAgent.agentId,
|
|
506
|
-
defaultTimeoutMs: DEFAULT_TIMEOUT_MS,
|
|
507
|
-
captureCapacity: DEFAULT_CAPTURE_CAPACITY,
|
|
508
|
-
}).pipe(Effect.mapError((e) => unavailable(`invitee client acquire: ${String(e)}`)));
|
|
509
|
-
const createOutcome = yield* initiatorClient
|
|
510
|
-
.sendRpc(AppsCreate, {
|
|
511
|
-
appId,
|
|
512
|
-
invitedAgentIds: [inviteeAgent.agentId],
|
|
513
|
-
})
|
|
514
|
-
.pipe(Effect.either);
|
|
515
|
-
const createResult = yield* requireRight(createOutcome, (error) => unavailable(`apps/create failed (likely agents lack owner_user_id): ${error._tag}`));
|
|
516
|
-
const session = createResult.session;
|
|
517
|
-
const sessionId = session?.id;
|
|
518
|
-
const mainConversationId = session?.conversations?.["main"];
|
|
519
|
-
if (typeof sessionId !== "string" ||
|
|
520
|
-
typeof mainConversationId !== "string") {
|
|
521
|
-
return yield* Effect.fail(violation(propertyName, `apps/create response missing session id or main conversation: ${JSON.stringify(createResult)}`));
|
|
522
|
-
}
|
|
523
|
-
return {
|
|
524
|
-
initiator: { agent: initiatorAgent, client: initiatorClient },
|
|
525
|
-
invitee: { agent: inviteeAgent, client: inviteeClient },
|
|
526
|
-
sessionId,
|
|
527
|
-
conversationId: makeConversationId(mainConversationId),
|
|
528
|
-
};
|
|
529
|
-
});
|
|
530
|
-
}
|
|
531
365
|
/** Task-boundary isolation — conversation A's events don't leak into B. */
|
|
532
366
|
export function registerTaskBoundaryIsolation(ctx) {
|
|
533
367
|
registerProperty(ctx, CATEGORY, TASK_BOUNDARY_ISOLATION_PROPERTY, "participants in conversation B observe zero leaks from conversation A", Effect.scoped(Effect.gen(function* () {
|
|
@@ -596,23 +430,23 @@ export function registerConversationLifecycle(ctx) {
|
|
|
596
430
|
})));
|
|
597
431
|
}
|
|
598
432
|
/**
|
|
599
|
-
*
|
|
600
|
-
*
|
|
601
|
-
*
|
|
433
|
+
* Task close lifecycle — close is observable as both conversation
|
|
434
|
+
* archival and task/closed, and the archived task conversation rejects
|
|
435
|
+
* later traffic.
|
|
436
|
+
*
|
|
437
|
+
* Phase 7 cutover dropped the apps/createSession bootstrap that wired
|
|
438
|
+
* manifest conversations to a session. The replacement TM-topology
|
|
439
|
+
* bootstrap lands in Phase 9 (#318); until then this property reports
|
|
440
|
+
* PropertyDeferred.
|
|
602
441
|
*/
|
|
603
|
-
export function
|
|
604
|
-
registerProperty(ctx, CATEGORY,
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
return yield* Effect.fail(violation(APP_SESSION_CLOSE_LIFECYCLE_PROPERTY, `apps/closeSession returned unexpected result: ${JSON.stringify(closeResult)}`));
|
|
612
|
-
}
|
|
613
|
-
yield* waitForArchivedEvent(fixture.invitee, fixture.conversationId, fixture.initiator.agent.agentId, APP_SESSION_CLOSE_LIFECYCLE_PROPERTY);
|
|
614
|
-
yield* waitForAppSessionClosedNotification(fixture.invitee, fixture.sessionId, fixture.initiator.agent.agentId, APP_SESSION_CLOSE_LIFECYCLE_PROPERTY);
|
|
615
|
-
yield* assertConversationRejectsMessages(fixture.initiator, fixture.conversationId, APP_SESSION_CLOSE_LIFECYCLE_PROPERTY);
|
|
442
|
+
export function registerTaskCloseLifecycle(ctx) {
|
|
443
|
+
registerProperty(ctx, CATEGORY, TASK_CLOSE_LIFECYCLE_PROPERTY, "tasks/close archives task conversations and broadcasts task/closed", Effect.scoped(Effect.gen(function* () {
|
|
444
|
+
void ctx;
|
|
445
|
+
return yield* Effect.fail(new PropertyDeferred({
|
|
446
|
+
category: CATEGORY,
|
|
447
|
+
name: TASK_CLOSE_LIFECYCLE_PROPERTY,
|
|
448
|
+
followUp: `Phase 9 TM topology (#318) wires task/closed emission + manifest conversation bootstrap (${TasksClose.name})`,
|
|
449
|
+
}));
|
|
616
450
|
})));
|
|
617
451
|
}
|
|
618
452
|
/**
|