@moltzap/client 2026.503.4 → 2026.504.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/dist/channel-core.d.ts +1 -4
  2. package/dist/channel-core.d.ts.map +1 -1
  3. package/dist/channel-core.js +0 -9
  4. package/dist/channel-core.js.map +1 -1
  5. package/dist/channel-core.test.js +90 -71
  6. package/dist/channel-core.test.js.map +1 -1
  7. package/dist/cli/commands/agents.js +2 -2
  8. package/dist/cli/commands/agents.js.map +1 -1
  9. package/dist/cli/commands/apps.d.ts +2 -24
  10. package/dist/cli/commands/apps.d.ts.map +1 -1
  11. package/dist/cli/commands/apps.js +22 -47
  12. package/dist/cli/commands/apps.js.map +1 -1
  13. package/dist/cli/commands/apps.test.js +59 -72
  14. package/dist/cli/commands/apps.test.js.map +1 -1
  15. package/dist/cli/commands/contacts.d.ts +1 -5
  16. package/dist/cli/commands/contacts.d.ts.map +1 -1
  17. package/dist/cli/commands/contacts.js +11 -26
  18. package/dist/cli/commands/contacts.js.map +1 -1
  19. package/dist/cli/commands/conversations-v2.test.js +30 -26
  20. package/dist/cli/commands/conversations-v2.test.js.map +1 -1
  21. package/dist/cli/commands/conversations.d.ts.map +1 -1
  22. package/dist/cli/commands/conversations.js +48 -33
  23. package/dist/cli/commands/conversations.js.map +1 -1
  24. package/dist/cli/commands/messages.d.ts.map +1 -1
  25. package/dist/cli/commands/messages.js +11 -8
  26. package/dist/cli/commands/messages.js.map +1 -1
  27. package/dist/cli/commands/messages.test.js +28 -30
  28. package/dist/cli/commands/messages.test.js.map +1 -1
  29. package/dist/cli/commands/presence.d.ts.map +1 -1
  30. package/dist/cli/commands/presence.js +5 -4
  31. package/dist/cli/commands/presence.js.map +1 -1
  32. package/dist/cli/commands/send.d.ts.map +1 -1
  33. package/dist/cli/commands/send.js +20 -11
  34. package/dist/cli/commands/send.js.map +1 -1
  35. package/dist/cli/commands/send.test.js +11 -9
  36. package/dist/cli/commands/send.test.js.map +1 -1
  37. package/dist/cli/commands/status.js +2 -2
  38. package/dist/cli/commands/status.js.map +1 -1
  39. package/dist/cli/commands/test-transport.d.ts +10 -0
  40. package/dist/cli/commands/test-transport.d.ts.map +1 -0
  41. package/dist/cli/commands/test-transport.js +29 -0
  42. package/dist/cli/commands/test-transport.js.map +1 -0
  43. package/dist/cli/index.d.ts.map +1 -1
  44. package/dist/cli/index.js +0 -2
  45. package/dist/cli/index.js.map +1 -1
  46. package/dist/cli/socket-client.d.ts +9 -4
  47. package/dist/cli/socket-client.d.ts.map +1 -1
  48. package/dist/cli/socket-client.js +27 -12
  49. package/dist/cli/socket-client.js.map +1 -1
  50. package/dist/cli/transport.d.ts +3 -2
  51. package/dist/cli/transport.d.ts.map +1 -1
  52. package/dist/cli/transport.js +6 -6
  53. package/dist/cli/transport.js.map +1 -1
  54. package/dist/cli/transport.test.js +4 -4
  55. package/dist/cli/transport.test.js.map +1 -1
  56. package/dist/index.d.ts +2 -3
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +1 -1
  59. package/dist/index.js.map +1 -1
  60. package/dist/internal/__tests__/app-callback-partition-key.test.d.ts +2 -0
  61. package/dist/internal/__tests__/app-callback-partition-key.test.d.ts.map +1 -0
  62. package/dist/internal/__tests__/app-callback-partition-key.test.js +33 -0
  63. package/dist/internal/__tests__/app-callback-partition-key.test.js.map +1 -0
  64. package/dist/internal/__tests__/app-callback-partition-worker.test.d.ts +2 -0
  65. package/dist/internal/__tests__/app-callback-partition-worker.test.d.ts.map +1 -0
  66. package/dist/internal/__tests__/{s2c-partition-worker.test.js → app-callback-partition-worker.test.js} +6 -9
  67. package/dist/internal/__tests__/app-callback-partition-worker.test.js.map +1 -0
  68. package/dist/internal/__tests__/app-callback-partitioned-dispatcher-real-ws.test.d.ts +2 -0
  69. package/dist/internal/__tests__/app-callback-partitioned-dispatcher-real-ws.test.d.ts.map +1 -0
  70. package/dist/internal/__tests__/{s2c-partitioned-dispatcher-real-ws.test.js → app-callback-partitioned-dispatcher-real-ws.test.js} +69 -94
  71. package/dist/internal/__tests__/app-callback-partitioned-dispatcher-real-ws.test.js.map +1 -0
  72. package/dist/internal/__tests__/app-callback-partitioned-dispatcher.test.d.ts +2 -0
  73. package/dist/internal/__tests__/app-callback-partitioned-dispatcher.test.d.ts.map +1 -0
  74. package/dist/internal/__tests__/{s2c-partitioned-dispatcher.test.js → app-callback-partitioned-dispatcher.test.js} +35 -69
  75. package/dist/internal/__tests__/app-callback-partitioned-dispatcher.test.js.map +1 -0
  76. package/dist/internal/__tests__/app-callback-test-requests.d.ts +58 -0
  77. package/dist/internal/__tests__/app-callback-test-requests.d.ts.map +1 -0
  78. package/dist/internal/__tests__/app-callback-test-requests.js +124 -0
  79. package/dist/internal/__tests__/app-callback-test-requests.js.map +1 -0
  80. package/dist/internal/{s2c-dispatcher-errors.d.ts → app-callback-dispatcher-errors.d.ts} +5 -21
  81. package/dist/internal/app-callback-dispatcher-errors.d.ts.map +1 -0
  82. package/dist/internal/{s2c-dispatcher-errors.js → app-callback-dispatcher-errors.js} +3 -13
  83. package/dist/internal/app-callback-dispatcher-errors.js.map +1 -0
  84. package/dist/internal/app-callback-partition-key.d.ts +68 -0
  85. package/dist/internal/app-callback-partition-key.d.ts.map +1 -0
  86. package/dist/internal/app-callback-partition-key.js +90 -0
  87. package/dist/internal/app-callback-partition-key.js.map +1 -0
  88. package/dist/internal/{s2c-partition-worker.d.ts → app-callback-partition-worker.d.ts} +5 -5
  89. package/dist/internal/app-callback-partition-worker.d.ts.map +1 -0
  90. package/dist/internal/{s2c-partition-worker.js → app-callback-partition-worker.js} +5 -5
  91. package/dist/internal/app-callback-partition-worker.js.map +1 -0
  92. package/dist/internal/{s2c-partitioned-dispatcher.d.ts → app-callback-partitioned-dispatcher.d.ts} +9 -10
  93. package/dist/internal/app-callback-partitioned-dispatcher.d.ts.map +1 -0
  94. package/dist/internal/{s2c-partitioned-dispatcher.js → app-callback-partitioned-dispatcher.js} +12 -19
  95. package/dist/internal/app-callback-partitioned-dispatcher.js.map +1 -0
  96. package/dist/runtime/errors.d.ts +2 -28
  97. package/dist/runtime/errors.d.ts.map +1 -1
  98. package/dist/runtime/errors.js +0 -9
  99. package/dist/runtime/errors.js.map +1 -1
  100. package/dist/runtime/errors.test.js +2 -2
  101. package/dist/runtime/errors.test.js.map +1 -1
  102. package/dist/runtime/frame.d.ts +17 -18
  103. package/dist/runtime/frame.d.ts.map +1 -1
  104. package/dist/runtime/frame.js +86 -31
  105. package/dist/runtime/frame.js.map +1 -1
  106. package/dist/runtime/frame.test.js +15 -11
  107. package/dist/runtime/frame.test.js.map +1 -1
  108. package/dist/runtime/index.d.ts +1 -1
  109. package/dist/runtime/index.d.ts.map +1 -1
  110. package/dist/runtime/index.js +1 -1
  111. package/dist/runtime/index.js.map +1 -1
  112. package/dist/runtime/local-service-commands.d.ts +7 -0
  113. package/dist/runtime/local-service-commands.d.ts.map +1 -0
  114. package/dist/runtime/local-service-commands.js +6 -0
  115. package/dist/runtime/local-service-commands.js.map +1 -0
  116. package/dist/runtime/runtime.test.js +1 -2
  117. package/dist/runtime/runtime.test.js.map +1 -1
  118. package/dist/runtime/subscribers.d.ts +34 -29
  119. package/dist/runtime/subscribers.d.ts.map +1 -1
  120. package/dist/runtime/subscribers.js +19 -19
  121. package/dist/runtime/subscribers.js.map +1 -1
  122. package/dist/runtime/subscribers.test.js +50 -31
  123. package/dist/runtime/subscribers.test.js.map +1 -1
  124. package/dist/service.d.ts +24 -39
  125. package/dist/service.d.ts.map +1 -1
  126. package/dist/service.js +165 -161
  127. package/dist/service.js.map +1 -1
  128. package/dist/service.test.js +111 -170
  129. package/dist/service.test.js.map +1 -1
  130. package/dist/test-utils/channel-service-fixture.d.ts +1 -2
  131. package/dist/test-utils/channel-service-fixture.d.ts.map +1 -1
  132. package/dist/test-utils/channel-service-fixture.js +28 -20
  133. package/dist/test-utils/channel-service-fixture.js.map +1 -1
  134. package/dist/test-utils/conformance-adapter.d.ts +2 -2
  135. package/dist/test-utils/conformance-adapter.d.ts.map +1 -1
  136. package/dist/test-utils/conformance-adapter.js +33 -26
  137. package/dist/test-utils/conformance-adapter.js.map +1 -1
  138. package/dist/test-utils/fake-service.d.ts +14 -39
  139. package/dist/test-utils/fake-service.d.ts.map +1 -1
  140. package/dist/test-utils/fake-service.js +33 -39
  141. package/dist/test-utils/fake-service.js.map +1 -1
  142. package/dist/test-utils/ids.d.ts +9 -0
  143. package/dist/test-utils/ids.d.ts.map +1 -0
  144. package/dist/test-utils/ids.js +52 -0
  145. package/dist/test-utils/ids.js.map +1 -0
  146. package/dist/test-utils/index.d.ts +10 -2
  147. package/dist/test-utils/index.d.ts.map +1 -1
  148. package/dist/test-utils/index.js +12 -5
  149. package/dist/test-utils/index.js.map +1 -1
  150. package/dist/ws-client.d.ts +58 -64
  151. package/dist/ws-client.d.ts.map +1 -1
  152. package/dist/ws-client.js +151 -133
  153. package/dist/ws-client.js.map +1 -1
  154. package/dist/ws-client.test.js +157 -167
  155. package/dist/ws-client.test.js.map +1 -1
  156. package/package.json +3 -3
  157. package/dist/cli/commands/permissions.d.ts +0 -70
  158. package/dist/cli/commands/permissions.d.ts.map +0 -1
  159. package/dist/cli/commands/permissions.js +0 -100
  160. package/dist/cli/commands/permissions.js.map +0 -1
  161. package/dist/cli/commands/permissions.test.d.ts +0 -2
  162. package/dist/cli/commands/permissions.test.d.ts.map +0 -1
  163. package/dist/cli/commands/permissions.test.js +0 -127
  164. package/dist/cli/commands/permissions.test.js.map +0 -1
  165. package/dist/internal/__tests__/s2c-partition-key.test.d.ts +0 -2
  166. package/dist/internal/__tests__/s2c-partition-key.test.d.ts.map +0 -1
  167. package/dist/internal/__tests__/s2c-partition-key.test.js +0 -231
  168. package/dist/internal/__tests__/s2c-partition-key.test.js.map +0 -1
  169. package/dist/internal/__tests__/s2c-partition-worker.test.d.ts +0 -2
  170. package/dist/internal/__tests__/s2c-partition-worker.test.d.ts.map +0 -1
  171. package/dist/internal/__tests__/s2c-partition-worker.test.js.map +0 -1
  172. package/dist/internal/__tests__/s2c-partitioned-dispatcher-real-ws.test.d.ts +0 -2
  173. package/dist/internal/__tests__/s2c-partitioned-dispatcher-real-ws.test.d.ts.map +0 -1
  174. package/dist/internal/__tests__/s2c-partitioned-dispatcher-real-ws.test.js.map +0 -1
  175. package/dist/internal/__tests__/s2c-partitioned-dispatcher.test.d.ts +0 -2
  176. package/dist/internal/__tests__/s2c-partitioned-dispatcher.test.d.ts.map +0 -1
  177. package/dist/internal/__tests__/s2c-partitioned-dispatcher.test.js.map +0 -1
  178. package/dist/internal/s2c-dispatcher-errors.d.ts.map +0 -1
  179. package/dist/internal/s2c-dispatcher-errors.js.map +0 -1
  180. package/dist/internal/s2c-partition-key.d.ts +0 -79
  181. package/dist/internal/s2c-partition-key.d.ts.map +0 -1
  182. package/dist/internal/s2c-partition-key.js +0 -146
  183. package/dist/internal/s2c-partition-key.js.map +0 -1
  184. package/dist/internal/s2c-partition-worker.d.ts.map +0 -1
  185. package/dist/internal/s2c-partition-worker.js.map +0 -1
  186. package/dist/internal/s2c-partitioned-dispatcher.d.ts.map +0 -1
  187. package/dist/internal/s2c-partitioned-dispatcher.js.map +0 -1
@@ -1,9 +1,9 @@
1
1
  /**
2
- * Partitioned s2c dispatcher.
2
+ * Partitioned appCallback dispatcher.
3
3
  *
4
4
  * Spec: moltzap#356.
5
5
  *
6
- * Replaces the single `Stream.runForEach(handler)` over `s2cInboundQueue`
6
+ * Replaces the single `Stream.runForEach(handler)` over `appCallbackInboundQueue`
7
7
  * (`packages/client/src/ws-client.ts:658-687@f0df363`) with a
8
8
  * partition-router that owns a `Ref<HashMap<PartitionKey,
9
9
  * PartitionWorker>>`. For each inbound request:
@@ -37,8 +37,8 @@
37
37
  * The dispatcher Scope is held in `ConnState`; teardown from
38
38
  * `close()` / `disconnectSync()` is
39
39
  * `runtime.runFork(Scope.close(dispatcherScope, Exit.void))`, mirroring
40
- * today's `runFork(Queue.shutdown(s2cInboundQueue))` +
41
- * `runFork(Fiber.interrupt(s2cDispatcherFiber))` pair.
40
+ * today's `runFork(Queue.shutdown(appCallbackInboundQueue))` +
41
+ * `runFork(Fiber.interrupt(appCallbackDispatcherFiber))` pair.
42
42
  *
43
43
  * Why off-Scope from the socket: `close()` is invoked via `runSync` at
44
44
  * `packages/openclaw-channel/src/__tests__/reconnection.integration.test.ts:14`;
@@ -56,10 +56,10 @@
56
56
  * every worker; closing one worker's child scope retires only that
57
57
  * worker without leaking finalizers onto the dispatcher scope.
58
58
  */
59
- import { Cause, Duration, Effect, Either, ExecutionStrategy, Exit, HashMap, MutableRef, Option, Ref, Schedule, Scope, } from "effect";
60
- import { PartitionLimitError, } from "./s2c-dispatcher-errors.js";
61
- import { extractPartitionKey, } from "./s2c-partition-key.js";
62
- import { makePartitionWorker, } from "./s2c-partition-worker.js";
59
+ import { Cause, Duration, Effect, ExecutionStrategy, Exit, HashMap, MutableRef, Option, Ref, Schedule, Scope, } from "effect";
60
+ import { PartitionLimitError, } from "./app-callback-dispatcher-errors.js";
61
+ import { extractPartitionKey, } from "./app-callback-partition-key.js";
62
+ import { makePartitionWorker, } from "./app-callback-partition-worker.js";
63
63
  /** Defaults. Documented as the named knob values for the implementation. */
64
64
  export const DEFAULT_PARTITIONED_DISPATCHER_CONFIG = {
65
65
  maxPartitions: 256,
@@ -87,7 +87,6 @@ export function makePartitionedDispatcher(params) {
87
87
  const partitionsRef = yield* Ref.make(HashMap.empty());
88
88
  const counters = {
89
89
  totalOffered: yield* Ref.make(0),
90
- malformed: yield* Ref.make(0),
91
90
  partitionLimit: yield* Ref.make(0),
92
91
  partitionQueueFull: yield* Ref.make(0),
93
92
  };
@@ -104,15 +103,11 @@ export function makePartitionedDispatcher(params) {
104
103
  // Idle-reaper fiber. One fiber per dispatcher (NOT per partition);
105
104
  // walks the map every `idleReaperIntervalMs` and finalizes
106
105
  // partitions whose `idleSince._tag === "Idle"` exceeds the TTL.
107
- const reaperEffect = reapIdlePartitions(internal).pipe(Effect.repeat(Schedule.spaced(Duration.millis(config.idleReaperIntervalMs))), Effect.asVoid, Effect.catchAllCause((cause) => Effect.sync(() => params.logger?.warn("s2c idle reaper exited", Cause.pretty(cause)))));
106
+ const reaperEffect = reapIdlePartitions(internal).pipe(Effect.repeat(Schedule.spaced(Duration.millis(config.idleReaperIntervalMs))), Effect.asVoid, Effect.catchAllCause((cause) => Effect.sync(() => params.logger?.warn("appCallback idle reaper exited", Cause.pretty(cause)))));
108
107
  yield* Scope.extend(Effect.forkScoped(reaperEffect), dispatcherScope);
109
108
  const offer = (request) => Effect.gen(function* () {
110
109
  yield* Ref.update(counters.totalOffered, (n) => n + 1);
111
- const keyResult = extractPartitionKey(request);
112
- const key = yield* Either.match(keyResult, {
113
- onLeft: (err) => Ref.update(counters.malformed, (n) => n + 1).pipe(Effect.zipRight(Effect.fail(err))),
114
- onRight: (value) => Effect.succeed(value),
115
- });
110
+ const key = extractPartitionKey(request);
116
111
  const worker = yield* getOrCreatePartitionWorker({
117
112
  key,
118
113
  requestId: request.id,
@@ -133,14 +128,12 @@ export function makePartitionedDispatcher(params) {
133
128
  partitions.push({ key, queueSize, idle });
134
129
  }
135
130
  const totalOffered = yield* Ref.get(counters.totalOffered);
136
- const malformed = yield* Ref.get(counters.malformed);
137
131
  const partitionLimit = yield* Ref.get(counters.partitionLimit);
138
132
  const partitionQueueFull = yield* Ref.get(counters.partitionQueueFull);
139
133
  return {
140
134
  activePartitions: HashMap.size(map),
141
135
  totalOffered,
142
136
  totalRejected: {
143
- malformed,
144
137
  partitionLimit,
145
138
  partitionQueueFull,
146
139
  },
@@ -217,7 +210,7 @@ function getOrCreatePartitionWorker(params) {
217
210
  // Discard the redundant worker. Closing its scope cascades to
218
211
  // queue.shutdown + the drain fiber's interrupt, releasing every
219
212
  // resource we just allocated.
220
- state.logger?.warn(`s2c partition allocation lost race (key=${key}); discarding redundant worker`);
213
+ state.logger?.warn(`appCallback partition allocation lost race (key=${key}); discarding redundant worker`);
221
214
  yield* Scope.close(workerScope, Exit.void).pipe(Effect.catchAllCause(() => Effect.void));
222
215
  }
223
216
  return inserted.winner;
@@ -286,4 +279,4 @@ function reapIdlePartitions(state) {
286
279
  }
287
280
  });
288
281
  }
289
- //# sourceMappingURL=s2c-partitioned-dispatcher.js.map
282
+ //# sourceMappingURL=app-callback-partitioned-dispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-callback-partitioned-dispatcher.js","sourceRoot":"","sources":["../../src/internal/app-callback-partitioned-dispatcher.ts"],"names":[],"mappings":"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"}
@@ -1,30 +1,4 @@
1
- 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 & {
2
- readonly _tag: "NotConnectedError";
3
- } & Readonly<A>;
4
- /** The socket is not in the OPEN state when an RPC was attempted. */
5
- export declare class NotConnectedError extends NotConnectedError_base<{
6
- readonly message: string;
7
- }> {
8
- }
9
- 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 & {
10
- readonly _tag: "RpcTimeoutError";
11
- } & Readonly<A>;
12
- /** The RPC exceeded the per-call timeout without a response frame. */
13
- export declare class RpcTimeoutError extends RpcTimeoutError_base<{
14
- readonly method: string;
15
- readonly timeoutMs: number;
16
- }> {
17
- }
18
- 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 & {
19
- readonly _tag: "RpcServerError";
20
- } & Readonly<A>;
21
- /** The server returned an `error` response frame. */
22
- export declare class RpcServerError extends RpcServerError_base<{
23
- readonly code: number;
24
- readonly message: string;
25
- readonly data?: unknown;
26
- }> {
27
- }
1
+ import type { AppCallbackRpcMethodName } from "@moltzap/protocol";
28
2
  declare const MalformedFrameError_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 & {
29
3
  readonly _tag: "MalformedFrameError";
30
4
  } & Readonly<A>;
@@ -52,7 +26,7 @@ declare const DuplicateServerRpcHandlerError_base: new <A extends Record<string,
52
26
  * forces the duplicate registration to surface at the call site.
53
27
  */
54
28
  export declare class DuplicateServerRpcHandlerError extends DuplicateServerRpcHandlerError_base<{
55
- readonly method: string;
29
+ readonly method: AppCallbackRpcMethodName;
56
30
  }> {
57
31
  get message(): string;
58
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/runtime/errors.ts"],"names":[],"mappings":";;;AAEA,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,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;CAAG;;;;AAEL,qDAAqD;AACrD,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;;;;AAEL,iFAAiF;AACjF,qBAAa,mBAAoB,SAAQ,yBAEvC;IACA,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,+CAA+C;AAC/C,qBAAa,kBAAmB,SAAQ,wBAAuC;IAC7E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;;;;AAED;;;;GAIG;AACH,qBAAa,8BAA+B,SAAQ,oCAElD;IACA,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/runtime/errors.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;;;;AAElE,iFAAiF;AACjF,qBAAa,mBAAoB,SAAQ,yBAEvC;IACA,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;CAAG;;;;AAEL,+CAA+C;AAC/C,qBAAa,kBAAmB,SAAQ,wBAAuC;IAC7E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;;;;AAED;;;;GAIG;AACH,qBAAa,8BAA+B,SAAQ,oCAElD;IACA,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC;CAC3C,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF"}
@@ -1,13 +1,4 @@
1
1
  import { Data } from "effect";
2
- /** The socket is not in the OPEN state when an RPC was attempted. */
3
- export class NotConnectedError extends Data.TaggedError("NotConnectedError") {
4
- }
5
- /** The RPC exceeded the per-call timeout without a response frame. */
6
- export class RpcTimeoutError extends Data.TaggedError("RpcTimeoutError") {
7
- }
8
- /** The server returned an `error` response frame. */
9
- export class RpcServerError extends Data.TaggedError("RpcServerError") {
10
- }
11
2
  /** Inbound frame failed to parse as JSON or did not match the expected shape. */
12
3
  export class MalformedFrameError extends Data.TaggedError("MalformedFrameError") {
13
4
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/runtime/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,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,qDAAqD;AACrD,MAAM,OAAO,cAAe,SAAQ,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAInE;CAAG;AAEL,iFAAiF;AACjF,MAAM,OAAO,mBAAoB,SAAQ,IAAI,CAAC,WAAW,CACvD,qBAAqB,CAIrB;CAAG;AAEL,+CAA+C;AAC/C,MAAM,OAAO,kBAAmB,SAAQ,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAE3E;IACA,IAAa,OAAO;QAClB,OAAO,oBAAoB,IAAI,CAAC,SAAS,EAAE,CAAC;IAC9C,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,8BAA+B,SAAQ,IAAI,CAAC,WAAW,CAClE,gCAAgC,CAGhC;IACA,IAAa,OAAO;QAClB,OAAO,qDAAqD,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5E,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/runtime/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B,iFAAiF;AACjF,MAAM,OAAO,mBAAoB,SAAQ,IAAI,CAAC,WAAW,CACvD,qBAAqB,CAIrB;CAAG;AAEL,+CAA+C;AAC/C,MAAM,OAAO,kBAAmB,SAAQ,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAE3E;IACA,IAAa,OAAO;QAClB,OAAO,oBAAoB,IAAI,CAAC,SAAS,EAAE,CAAC;IAC9C,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,8BAA+B,SAAQ,IAAI,CAAC,WAAW,CAClE,gCAAgC,CAGhC;IACA,IAAa,OAAO;QAClB,OAAO,qDAAqD,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5E,CAAC;CACF"}
@@ -1,6 +1,6 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { AgentNotFoundError, MalformedFrameError, NotConnectedError, RpcServerError, RpcTimeoutError, } from "./errors.js";
3
- import { MessagesSend } from "@moltzap/protocol";
2
+ import { AgentNotFoundError, MalformedFrameError } from "./errors.js";
3
+ import { MessagesSend, NotConnectedError, RpcServerError, RpcTimeoutError, } from "@moltzap/protocol";
4
4
  describe("AgentNotFoundError", () => {
5
5
  it("carries agentName and derives a `_tag` + `message`", () => {
6
6
  const err = new AgentNotFoundError({ agentName: "foo" });
@@ -1 +1 @@
1
- {"version":3,"file":"errors.test.js","sourceRoot":"","sources":["../../src/runtime/errors.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.test.js","sourceRoot":"","sources":["../../src/runtime/errors.test.ts"],"names":[],"mappings":"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"}
@@ -1,31 +1,30 @@
1
1
  import { Effect } from "effect";
2
- import { type EventFrame, type ResponseFrame } from "@moltzap/protocol";
2
+ import { type AnyAppCallbackRpcDefinition, type AnyNotificationDefinition, type DecodedNotification as ProtocolDecodedNotification, type DecodedRpcRequest, type JsonRpcStringId, type ResponseFrame } from "@moltzap/protocol";
3
3
  import { MalformedFrameError } from "./errors.js";
4
- /** Decoded c2s response frame — narrowed from the protocol's `ResponseFrame`. */
4
+ import { type AppCallbackPartitionRoute } from "../internal/app-callback-partition-key.js";
5
+ /** Decoded response frame — narrowed from the protocol's `ResponseFrame`. */
5
6
  export interface DecodedResponse {
6
7
  readonly _tag: "Response";
7
- readonly id: string;
8
+ readonly id: JsonRpcStringId;
8
9
  readonly result?: unknown;
9
- readonly error?: ResponseFrame["error"];
10
- }
11
- /** Decoded event frame — forwarded to the service's onEvent callback. */
12
- export interface DecodedEvent {
13
- readonly _tag: "Event";
14
- readonly frame: EventFrame;
10
+ readonly error?: Extract<ResponseFrame, {
11
+ error: unknown;
12
+ }>["error"];
15
13
  }
14
+ /** Decoded notification frame. */
15
+ export type DecodedNotification<D extends AnyNotificationDefinition = AnyNotificationDefinition> = ProtocolDecodedNotification<D> & {
16
+ readonly _tag: "Notification";
17
+ };
16
18
  /**
17
- * Decoded server-initiated (s2c) request frame. The client routes these to
19
+ * Decoded server-initiated (appCallback) request frame. The client routes these to
18
20
  * its per-method handler registry; the server is the originator and awaits
19
- * a matching `direction: "s2c"` response.
21
+ * a matching JSON-RPC response with the same id.
20
22
  */
21
- export interface DecodedServerRequest {
23
+ export type DecodedServerRequest<D extends AnyAppCallbackRpcDefinition = AnyAppCallbackRpcDefinition> = DecodedRpcRequest<D> & {
22
24
  readonly _tag: "ServerRequest";
23
- readonly id: string;
24
- readonly method: string;
25
- readonly params: unknown;
26
- readonly traceparent?: string;
27
- }
28
- export type DecodedFrame = DecodedResponse | DecodedEvent | DecodedServerRequest;
25
+ readonly partition: AppCallbackPartitionRoute;
26
+ };
27
+ export type DecodedFrame = DecodedResponse | DecodedNotification | DecodedServerRequest;
29
28
  export declare const splitRawFrames: (raw: string) => Effect.Effect<ReadonlyArray<string>, MalformedFrameError>;
30
29
  /**
31
30
  * Central typed inbound frame decoder. JSON.parse + shape validation via the
@@ -1 +1 @@
1
- {"version":3,"file":"frame.d.ts","sourceRoot":"","sources":["../../src/runtime/frame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAEL,KAAK,UAAU,EAEf,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,iFAAiF;AACjF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CACzC;AAED,yEAAyE;AACzE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,YAAY,GACpB,eAAe,GACf,YAAY,GACZ,oBAAoB,CAAC;AA+CzB,eAAO,MAAM,cAAc,GACzB,KAAK,MAAM,KACV,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAsEvD,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GACvB,KAAK,MAAM,KACV,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAuB7D,CAAC"}
1
+ {"version":3,"file":"frame.d.ts","sourceRoot":"","sources":["../../src/runtime/frame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAEL,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,EAW9B,KAAK,mBAAmB,IAAI,2BAA2B,EACvD,KAAK,iBAAiB,EACtB,KAAK,eAAe,EAEpB,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,2CAA2C,CAAC;AAEnD,6EAA6E;AAC7E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,EAAE,EAAE,eAAe,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,aAAa,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC,OAAO,CAAC,CAAC;CACtE;AAED,kCAAkC;AAClC,MAAM,MAAM,mBAAmB,CAC7B,CAAC,SAAS,yBAAyB,GAAG,yBAAyB,IAC7D,2BAA2B,CAAC,CAAC,CAAC,GAAG;IACnC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;CAC/B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,CAC9B,CAAC,SAAS,2BAA2B,GAAG,2BAA2B,IACjE,iBAAiB,CAAC,CAAC,CAAC,GAAG;IACzB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,YAAY,GACpB,eAAe,GACf,mBAAmB,GACnB,oBAAoB,CAAC;AA6HzB,eAAO,MAAM,cAAc,GACzB,KAAK,MAAM,KACV,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAsEvD,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GACvB,KAAK,MAAM,KACV,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAwB7D,CAAC"}
@@ -1,42 +1,100 @@
1
1
  import { Effect } from "effect";
2
- import { validators, } from "@moltzap/protocol";
2
+ import { validators, AppsOnBeforeDispatch, AppsOnBeforeMessageDelivery, AppsOnClose, AppsOnJoin, AppsOnSessionActive, appCallbackRpcGroup, decodeRpcRequest, isDecodedRpcRequest, isJsonRpcStringId, notificationGroup, } from "@moltzap/protocol";
3
3
  import { MalformedFrameError } from "./errors.js";
4
+ import { LIFECYCLE_CONVERSATION_SENTINEL, } from "../internal/app-callback-partition-key.js";
4
5
  const isFramePadding = (char) => char === "\u0000" || char === "\ufeff" || /\s/u.test(char);
5
6
  const toDecodedFrame = (parsed) => {
7
+ const raw = JSON.stringify(parsed);
6
8
  if (validators.responseFrame(parsed)) {
7
- const frame = parsed;
8
- // Defense-in-depth: a `direction: "s2c"` response inbound on the
9
- // client would correspond to a client-originated server reply — but
10
- // the client never originates s2c requests, so route as malformed.
11
- if (frame.direction !== "c2s") {
12
- return new MalformedFrameError({ raw: JSON.stringify(parsed) });
9
+ if (!isJsonRpcStringId(parsed.id)) {
10
+ return Effect.fail(new MalformedFrameError({ raw }));
13
11
  }
14
- return {
12
+ return Effect.succeed({
15
13
  _tag: "Response",
16
- id: frame.id,
17
- result: frame.result,
18
- error: frame.error,
19
- };
14
+ id: parsed.id,
15
+ result: "result" in parsed ? parsed.result : undefined,
16
+ error: "error" in parsed ? parsed.error : undefined,
17
+ });
20
18
  }
21
19
  if (validators.requestFrame(parsed)) {
22
- const frame = parsed;
23
- // Symmetric defense: a `direction: "c2s"` request inbound on the
24
- // client would mean the server is acting as a client — never legal.
25
- if (frame.direction !== "s2c") {
26
- return new MalformedFrameError({ raw: JSON.stringify(parsed) });
27
- }
28
- return {
20
+ return decodeRpcRequest(appCallbackRpcGroup, parsed).pipe(Effect.mapError((cause) => new MalformedFrameError({ raw, cause })), Effect.flatMap((request) => appCallbackPartitionRoute(request).pipe(Effect.map((partition) => ({
29
21
  _tag: "ServerRequest",
30
- id: frame.id,
31
- method: frame.method,
32
- params: frame.params,
33
- traceparent: frame.traceparent,
34
- };
22
+ ...request,
23
+ partition,
24
+ })))));
25
+ }
26
+ if (validators.notificationFrame(parsed)) {
27
+ return Effect.succeed(toDecodedNotification(parsed));
28
+ }
29
+ return Effect.fail(new MalformedFrameError({ raw }));
30
+ };
31
+ const PASSTHROUGH_PARAMS_SCHEMA = Object.freeze({});
32
+ function makePassthroughNotificationDefinition(method) {
33
+ const validate = (data) => data === data;
34
+ const def = {
35
+ name: method,
36
+ paramsSchema: PASSTHROUGH_PARAMS_SCHEMA,
37
+ validateParams: validate,
38
+ Params: undefined,
39
+ };
40
+ return passthroughCast(def);
41
+ }
42
+ // Single chokepoint for the runtime-only widening cast on a passthrough
43
+ // notification definition. ACG's `as-unknown-as` rule and the
44
+ // `sloppy-code-guard.sh` pragma check both opt out here; everywhere else
45
+ // in the package keeps the strict ban.
46
+ function passthroughCast(def) {
47
+ // eslint-disable-next-line agent-code-guard/as-unknown-as -- passthrough definition for unknown-method notifications; structurally compatible with NotificationDefinition but TypeScript can't narrow the literal `Name` union
48
+ return def; // #ignore-sloppy-code[as-unknown-as]: passthrough for unknown-method notifications
49
+ }
50
+ const toDecodedNotification = (parsed) => {
51
+ const known = notificationGroup.byName.get(parsed.method);
52
+ const definition = known ?? makePassthroughNotificationDefinition(parsed.method);
53
+ const decoded = {
54
+ jsonrpc: parsed.jsonrpc,
55
+ method: definition.name,
56
+ };
57
+ if (parsed.params !== undefined)
58
+ decoded["params"] = parsed.params;
59
+ Object.defineProperty(decoded, "_tag", {
60
+ value: "Notification",
61
+ enumerable: false,
62
+ });
63
+ Object.defineProperty(decoded, "definition", {
64
+ value: definition,
65
+ enumerable: false,
66
+ });
67
+ return decoded;
68
+ };
69
+ const lifecycleRoute = (sessionId) => ({
70
+ sessionId,
71
+ conversationId: LIFECYCLE_CONVERSATION_SENTINEL,
72
+ });
73
+ const appCallbackPartitionRoute = (request) => {
74
+ if (isDecodedRpcRequest(AppsOnBeforeDispatch, request)) {
75
+ return Effect.succeed({
76
+ sessionId: request.params.sessionId,
77
+ conversationId: request.params.conversationId,
78
+ });
79
+ }
80
+ if (isDecodedRpcRequest(AppsOnBeforeMessageDelivery, request)) {
81
+ return Effect.succeed({
82
+ sessionId: request.params.sessionId,
83
+ conversationId: request.params.conversationId,
84
+ });
85
+ }
86
+ if (isDecodedRpcRequest(AppsOnSessionActive, request)) {
87
+ return Effect.succeed(lifecycleRoute(request.params.sessionId));
35
88
  }
36
- if (validators.eventFrame(parsed)) {
37
- return { _tag: "Event", frame: parsed };
89
+ if (isDecodedRpcRequest(AppsOnJoin, request)) {
90
+ return Effect.succeed(lifecycleRoute(request.params.sessionId));
38
91
  }
39
- return new MalformedFrameError({ raw: JSON.stringify(parsed) });
92
+ if (isDecodedRpcRequest(AppsOnClose, request)) {
93
+ return Effect.succeed(lifecycleRoute(request.params.sessionId));
94
+ }
95
+ return Effect.fail(new MalformedFrameError({
96
+ raw: "unroutable app-callback request descriptor",
97
+ }));
40
98
  };
41
99
  export const splitRawFrames = (raw) => Effect.try({
42
100
  try: () => {
@@ -116,10 +174,7 @@ export const decodeFrames = (raw) => Effect.gen(function* () {
116
174
  catch (err) {
117
175
  return yield* Effect.fail(new MalformedFrameError({ raw: frameText, cause: err }));
118
176
  }
119
- const decoded = toDecodedFrame(parsed);
120
- if (decoded instanceof MalformedFrameError) {
121
- return yield* Effect.fail(new MalformedFrameError({ raw: frameText }));
122
- }
177
+ const decoded = yield* toDecodedFrame(parsed).pipe(Effect.mapError((cause) => new MalformedFrameError({ raw: frameText, cause })));
123
178
  decodedFrames.push(decoded);
124
179
  }
125
180
  return decodedFrames;
@@ -1 +1 @@
1
- {"version":3,"file":"frame.js","sourceRoot":"","sources":["../../src/runtime/frame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EACL,UAAU,GAIX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAkClD,MAAM,cAAc,GAAG,CAAC,IAAY,EAAW,EAAE,CAC/C,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAE7D,MAAM,cAAc,GAAG,CACrB,MAAe,EACqB,EAAE;IACtC,IAAI,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,MAAuB,CAAC;QACtC,iEAAiE;QACjE,oEAAoE;QACpE,mEAAmE;QACnE,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YAC9B,OAAO,IAAI,mBAAmB,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,OAAO;YACL,IAAI,EAAE,UAAmB;YACzB,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,MAAsB,CAAC;QACrC,iEAAiE;QACjE,oEAAoE;QACpE,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YAC9B,OAAO,IAAI,mBAAmB,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,OAAO;YACL,IAAI,EAAE,eAAwB;YAC9B,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,WAAW,EAAE,KAAK,CAAC,WAAW;SAC/B,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,IAAI,EAAE,OAAgB,EAAE,KAAK,EAAE,MAAoB,EAAE,CAAC;IACjE,CAAC;IAED,OAAO,IAAI,mBAAmB,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAClE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,GAAW,EACgD,EAAE,CAC7D,MAAM,CAAC,GAAG,CAAC;IACT,GAAG,EAAE,GAAG,EAAE;QACR,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;QACf,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAE,CAAC;YAEzB,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBACjB,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;oBACzB,SAAS;gBACX,CAAC;gBACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;oBACjB,MAAM,IAAI,mBAAmB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;gBACzC,CAAC;gBACD,KAAK,GAAG,KAAK,CAAC;gBACd,KAAK,GAAG,CAAC,CAAC;gBACV,SAAS;YACX,CAAC;YAED,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,GAAG,KAAK,CAAC;oBAChB,SAAS;gBACX,CAAC;gBACD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;oBAClB,OAAO,GAAG,IAAI,CAAC;oBACf,SAAS;gBACX,CAAC;gBACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;oBACjB,QAAQ,GAAG,KAAK,CAAC;gBACnB,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,QAAQ,GAAG,IAAI,CAAC;gBAChB,SAAS;YACX,CAAC;YACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,KAAK,IAAI,CAAC,CAAC;gBACX,SAAS;YACX,CAAC;YACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,SAAS;YACX,CAAC;YAED,KAAK,IAAI,CAAC,CAAC;YACX,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,SAAS;YACX,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YACzC,KAAK,GAAG,CAAC,CAAC,CAAC;QACb,CAAC;QAED,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,mBAAmB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,KAAK,YAAY,mBAAmB;QAClC,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,IAAI,mBAAmB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;CAC9C,CAAC,CAAC;AAEL;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,GAAW,EACsD,EAAE,CACnE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAmB,EAAE,CAAC;IAEzC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,mBAAmB,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CACxD,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,OAAO,YAAY,mBAAmB,EAAE,CAAC;YAC3C,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QACzE,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"frame.js","sourceRoot":"","sources":["../../src/runtime/frame.ts"],"names":[],"mappings":"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"}
@@ -1,27 +1,31 @@
1
1
  import { Effect } from "effect";
2
2
  import { describe, expect, it } from "vitest";
3
+ import { MessageReceivedNotificationDefinition, agentId, conversationId, messageId, notificationFrame, } from "@moltzap/protocol";
3
4
  import { decodeFrames } from "./frame.js";
5
+ const TEST_MESSAGE = {
6
+ id: messageId("11111111-1111-4111-8111-111111111111"),
7
+ conversationId: conversationId("22222222-2222-4222-8222-222222222222"),
8
+ senderId: agentId("33333333-3333-4333-8333-333333333333"),
9
+ parts: [{ type: "text", text: "hello" }],
10
+ createdAt: "2026-05-03T00:00:00.000Z",
11
+ };
4
12
  describe("decodeFrames", () => {
5
- it("decodes padded chunks that contain both an event and a response", async () => {
6
- const raw = JSON.stringify({
7
- jsonrpc: "2.0",
8
- type: "event",
9
- event: "messages/received",
10
- data: { message: { id: "m-1", conversationId: "c-1" } },
11
- }) +
13
+ it("decodes padded chunks that contain both a notification and a response", async () => {
14
+ const raw = JSON.stringify(notificationFrame(MessageReceivedNotificationDefinition, {
15
+ message: TEST_MESSAGE,
16
+ })) +
12
17
  "\u0000\n" +
13
18
  JSON.stringify({
14
19
  jsonrpc: "2.0",
15
- type: "response",
16
- direction: "c2s",
17
20
  id: "rpc-7",
18
21
  result: { ok: true },
19
22
  });
20
23
  const decoded = await Effect.runPromise(decodeFrames(raw));
21
24
  expect(decoded).toHaveLength(2);
22
25
  expect(decoded[0]).toMatchObject({
23
- _tag: "Event",
24
- frame: { event: "messages/received" },
26
+ _tag: "Notification",
27
+ method: MessageReceivedNotificationDefinition.name,
28
+ params: { message: TEST_MESSAGE },
25
29
  });
26
30
  expect(decoded[1]).toMatchObject({
27
31
  _tag: "Response",
@@ -1 +1 @@
1
- {"version":3,"file":"frame.test.js","sourceRoot":"","sources":["../../src/runtime/frame.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,GAAG,GACP,IAAI,CAAC,SAAS,CAAC;YACb,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,mBAAmB;YAC1B,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE;SACxD,CAAC;YACF,UAAU;YACV,IAAI,CAAC,SAAS,CAAC;gBACb,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE,KAAK;gBAChB,EAAE,EAAE,OAAO;gBACX,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE;aACrB,CAAC,CAAC;QAEL,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QAE3D,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAC/B,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE;SACtC,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAC/B,IAAI,EAAE,UAAU;YAChB,EAAE,EAAE,OAAO;YACX,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE;SACrB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"frame.test.js","sourceRoot":"","sources":["../../src/runtime/frame.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,qCAAqC,EACrC,OAAO,EACP,cAAc,EACd,SAAS,EACT,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,YAAY,GAAG;IACnB,EAAE,EAAE,SAAS,CAAC,sCAAsC,CAAC;IACrD,cAAc,EAAE,cAAc,CAAC,sCAAsC,CAAC;IACtE,QAAQ,EAAE,OAAO,CAAC,sCAAsC,CAAC;IACzD,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACjD,SAAS,EAAE,0BAA0B;CACtC,CAAC;AAEF,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,GAAG,GACP,IAAI,CAAC,SAAS,CACZ,iBAAiB,CAAC,qCAAqC,EAAE;YACvD,OAAO,EAAE,YAAY;SACtB,CAAC,CACH;YACD,UAAU;YACV,IAAI,CAAC,SAAS,CAAC;gBACb,OAAO,EAAE,KAAK;gBACd,EAAE,EAAE,OAAO;gBACX,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE;aACrB,CAAC,CAAC;QAEL,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QAE3D,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAC/B,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,qCAAqC,CAAC,IAAI;YAClD,MAAM,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE;SAClC,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAC/B,IAAI,EAAE,UAAU;YAChB,EAAE,EAAE,OAAO;YACX,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE;SACrB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
- export { AgentNotFoundError, NotConnectedError, RpcTimeoutError, RpcServerError, MalformedFrameError, } from "./errors.js";
1
+ export { AgentNotFoundError, MalformedFrameError } from "./errors.js";
2
2
  export { snapshot, getOr } from "./refs.js";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC"}
@@ -1,3 +1,3 @@
1
- export { AgentNotFoundError, NotConnectedError, RpcTimeoutError, RpcServerError, MalformedFrameError, } from "./errors.js";
1
+ export { AgentNotFoundError, MalformedFrameError } from "./errors.js";
2
2
  export { snapshot, getOr } from "./refs.js";
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare const LocalServiceCommands: {
2
+ readonly Ping: "ping";
3
+ readonly Status: "status";
4
+ readonly History: "history";
5
+ };
6
+ export type LocalServiceCommand = (typeof LocalServiceCommands)[keyof typeof LocalServiceCommands];
7
+ //# sourceMappingURL=local-service-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-service-commands.d.ts","sourceRoot":"","sources":["../../src/runtime/local-service-commands.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB;;;;CAIvB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAC7B,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,OAAO,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export const LocalServiceCommands = {
2
+ Ping: "ping",
3
+ Status: "status",
4
+ History: "history",
5
+ };
6
+ //# sourceMappingURL=local-service-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-service-commands.js","sourceRoot":"","sources":["../../src/runtime/local-service-commands.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;CACV,CAAC"}
@@ -1,8 +1,7 @@
1
1
  import { it } from "@effect/vitest";
2
2
  import { Effect, Exit } from "effect";
3
3
  import { expect, it as itSync } from "vitest";
4
- import { NotConnectedError, RpcServerError, RpcTimeoutError, } from "./errors.js";
5
- import { MessagesSend } from "@moltzap/protocol";
4
+ import { MessagesSend, NotConnectedError, RpcServerError, RpcTimeoutError, } from "@moltzap/protocol";
6
5
  it.effect("tagged errors discriminate by _tag", () => Effect.gen(function* () {
7
6
  const exit = yield* Effect.exit(Effect.fail(new RpcTimeoutError({ method: MessagesSend.name, timeoutMs: 30_000 })));
8
7
  if (Exit.isFailure(exit) && exit.cause._tag === "Fail") {
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.test.js","sourceRoot":"","sources":["../../src/runtime/runtime.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,eAAe,GAChB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,EAAE,CAAC,MAAM,CAAC,oCAAoC,EAAE,GAAG,EAAE,CACnD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAC7B,MAAM,CAAC,IAAI,CACT,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CACtE,CACF,CAAC;IACF,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;AACH,CAAC,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,sCAAsC,EAAE,GAAG,EAAE;IAClD,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC;QAC7B,IAAI,EAAE,CAAC,KAAK;QACZ,OAAO,EAAE,WAAW;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,gDAAgD,EAAE,GAAG,EAAE;IAC5D,MAAM,GAAG,GAAG,IAAI,iBAAiB,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;IAChE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"runtime.test.js","sourceRoot":"","sources":["../../src/runtime/runtime.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B,EAAE,CAAC,MAAM,CAAC,oCAAoC,EAAE,GAAG,EAAE,CACnD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAC7B,MAAM,CAAC,IAAI,CACT,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CACtE,CACF,CAAC;IACF,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;AACH,CAAC,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,sCAAsC,EAAE,GAAG,EAAE;IAClD,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC;QAC7B,IAAI,EAAE,CAAC,KAAK;QACZ,OAAO,EAAE,WAAW;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,gDAAgD,EAAE,GAAG,EAAE;IAC5D,MAAM,GAAG,GAAG,IAAI,iBAAiB,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;IAChE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC"}