@moltzap/protocol 2026.408.0 → 2026.425.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (287) hide show
  1. package/dist/index.d.ts +2 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +2 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/rpc-registry.d.ts +446 -0
  6. package/dist/rpc-registry.d.ts.map +1 -0
  7. package/dist/rpc-registry.js +67 -0
  8. package/dist/rpc-registry.js.map +1 -0
  9. package/dist/rpc.d.ts +42 -0
  10. package/dist/rpc.d.ts.map +1 -0
  11. package/dist/rpc.js +29 -0
  12. package/dist/rpc.js.map +1 -0
  13. package/dist/schema/apps.d.ts +86 -0
  14. package/dist/schema/apps.d.ts.map +1 -0
  15. package/dist/schema/apps.js +77 -0
  16. package/dist/schema/apps.js.map +1 -0
  17. package/dist/schema/contacts.d.ts +8 -18
  18. package/dist/schema/contacts.d.ts.map +1 -1
  19. package/dist/schema/contacts.js +9 -13
  20. package/dist/schema/contacts.js.map +1 -1
  21. package/dist/schema/conversations.d.ts +15 -8
  22. package/dist/schema/conversations.d.ts.map +1 -1
  23. package/dist/schema/conversations.js +18 -7
  24. package/dist/schema/conversations.js.map +1 -1
  25. package/dist/schema/delivery.d.ts +1 -4
  26. package/dist/schema/delivery.d.ts.map +1 -1
  27. package/dist/schema/delivery.js +2 -3
  28. package/dist/schema/delivery.js.map +1 -1
  29. package/dist/schema/errors.d.ts +13 -0
  30. package/dist/schema/errors.d.ts.map +1 -1
  31. package/dist/schema/errors.js +14 -0
  32. package/dist/schema/errors.js.map +1 -1
  33. package/dist/schema/events.d.ts +112 -93
  34. package/dist/schema/events.d.ts.map +1 -1
  35. package/dist/schema/events.js +84 -25
  36. package/dist/schema/events.js.map +1 -1
  37. package/dist/schema/identity.d.ts +19 -17
  38. package/dist/schema/identity.d.ts.map +1 -1
  39. package/dist/schema/identity.js +7 -14
  40. package/dist/schema/identity.js.map +1 -1
  41. package/dist/schema/index.d.ts +4 -2
  42. package/dist/schema/index.d.ts.map +1 -1
  43. package/dist/schema/index.js +4 -2
  44. package/dist/schema/index.js.map +1 -1
  45. package/dist/schema/messages.d.ts +3 -7
  46. package/dist/schema/messages.d.ts.map +1 -1
  47. package/dist/schema/messages.js +4 -6
  48. package/dist/schema/messages.js.map +1 -1
  49. package/dist/schema/methods/apps.d.ts +123 -0
  50. package/dist/schema/methods/apps.d.ts.map +1 -0
  51. package/dist/schema/methods/apps.js +93 -0
  52. package/dist/schema/methods/apps.js.map +1 -0
  53. package/dist/schema/methods/auth.d.ts +102 -90
  54. package/dist/schema/methods/auth.d.ts.map +1 -1
  55. package/dist/schema/methods/auth.js +86 -74
  56. package/dist/schema/methods/auth.js.map +1 -1
  57. package/dist/schema/methods/contacts.d.ts +39 -74
  58. package/dist/schema/methods/contacts.d.ts.map +1 -1
  59. package/dist/schema/methods/contacts.js +35 -29
  60. package/dist/schema/methods/contacts.js.map +1 -1
  61. package/dist/schema/methods/conversations.d.ts +48 -52
  62. package/dist/schema/methods/conversations.d.ts.map +1 -1
  63. package/dist/schema/methods/conversations.js +89 -38
  64. package/dist/schema/methods/conversations.js.map +1 -1
  65. package/dist/schema/methods/invites.d.ts +1 -3
  66. package/dist/schema/methods/invites.d.ts.map +1 -1
  67. package/dist/schema/methods/invites.js +8 -1
  68. package/dist/schema/methods/invites.js.map +1 -1
  69. package/dist/schema/methods/messages.d.ts +12 -44
  70. package/dist/schema/methods/messages.d.ts.map +1 -1
  71. package/dist/schema/methods/messages.js +22 -28
  72. package/dist/schema/methods/messages.js.map +1 -1
  73. package/dist/schema/methods/presence.d.ts +7 -22
  74. package/dist/schema/methods/presence.d.ts.map +1 -1
  75. package/dist/schema/methods/presence.js +12 -6
  76. package/dist/schema/methods/presence.js.map +1 -1
  77. package/dist/schema/methods/push.d.ts +8 -6
  78. package/dist/schema/methods/push.d.ts.map +1 -1
  79. package/dist/schema/methods/push.js +20 -7
  80. package/dist/schema/methods/push.js.map +1 -1
  81. package/dist/schema/methods/system.d.ts +4 -0
  82. package/dist/schema/methods/system.d.ts.map +1 -0
  83. package/dist/schema/methods/system.js +11 -0
  84. package/dist/schema/methods/system.js.map +1 -0
  85. package/dist/schema/presence.d.ts +1 -12
  86. package/dist/schema/presence.d.ts.map +1 -1
  87. package/dist/schema/presence.js +2 -7
  88. package/dist/schema/presence.js.map +1 -1
  89. package/dist/schema/surfaces.d.ts +31 -25
  90. package/dist/schema/surfaces.d.ts.map +1 -1
  91. package/dist/schema/surfaces.js +40 -21
  92. package/dist/schema/surfaces.js.map +1 -1
  93. package/dist/testing/agent-registration.d.ts +49 -0
  94. package/dist/testing/agent-registration.d.ts.map +1 -0
  95. package/dist/testing/agent-registration.js +77 -0
  96. package/dist/testing/agent-registration.js.map +1 -0
  97. package/dist/testing/arbitraries/frames.d.ts +24 -0
  98. package/dist/testing/arbitraries/frames.d.ts.map +1 -0
  99. package/dist/testing/arbitraries/frames.js +36 -0
  100. package/dist/testing/arbitraries/frames.js.map +1 -0
  101. package/dist/testing/arbitraries/from-typebox.d.ts +37 -0
  102. package/dist/testing/arbitraries/from-typebox.d.ts.map +1 -0
  103. package/dist/testing/arbitraries/from-typebox.js +131 -0
  104. package/dist/testing/arbitraries/from-typebox.js.map +1 -0
  105. package/dist/testing/arbitraries/index.d.ts +4 -0
  106. package/dist/testing/arbitraries/index.d.ts.map +1 -0
  107. package/dist/testing/arbitraries/index.js +4 -0
  108. package/dist/testing/arbitraries/index.js.map +1 -0
  109. package/dist/testing/arbitraries/rpc.d.ts +66 -0
  110. package/dist/testing/arbitraries/rpc.d.ts.map +1 -0
  111. package/dist/testing/arbitraries/rpc.js +98 -0
  112. package/dist/testing/arbitraries/rpc.js.map +1 -0
  113. package/dist/testing/canonicalize.d.ts +38 -0
  114. package/dist/testing/canonicalize.d.ts.map +1 -0
  115. package/dist/testing/canonicalize.js +55 -0
  116. package/dist/testing/canonicalize.js.map +1 -0
  117. package/dist/testing/captures.d.ts +61 -0
  118. package/dist/testing/captures.d.ts.map +1 -0
  119. package/dist/testing/captures.js +99 -0
  120. package/dist/testing/captures.js.map +1 -0
  121. package/dist/testing/codec.d.ts +44 -0
  122. package/dist/testing/codec.d.ts.map +1 -0
  123. package/dist/testing/codec.js +170 -0
  124. package/dist/testing/codec.js.map +1 -0
  125. package/dist/testing/conformance/__divergence_proofs__/executable-proof-helpers.d.ts +6 -0
  126. package/dist/testing/conformance/__divergence_proofs__/executable-proof-helpers.d.ts.map +1 -0
  127. package/dist/testing/conformance/__divergence_proofs__/executable-proof-helpers.js +33 -0
  128. package/dist/testing/conformance/__divergence_proofs__/executable-proof-helpers.js.map +1 -0
  129. package/dist/testing/conformance/adversity.d.ts +36 -0
  130. package/dist/testing/conformance/adversity.d.ts.map +1 -0
  131. package/dist/testing/conformance/adversity.js +360 -0
  132. package/dist/testing/conformance/adversity.js.map +1 -0
  133. package/dist/testing/conformance/boundary.d.ts +56 -0
  134. package/dist/testing/conformance/boundary.d.ts.map +1 -0
  135. package/dist/testing/conformance/boundary.js +129 -0
  136. package/dist/testing/conformance/boundary.js.map +1 -0
  137. package/dist/testing/conformance/client/_fixtures.d.ts +71 -0
  138. package/dist/testing/conformance/client/_fixtures.d.ts.map +1 -0
  139. package/dist/testing/conformance/client/_fixtures.js +102 -0
  140. package/dist/testing/conformance/client/_fixtures.js.map +1 -0
  141. package/dist/testing/conformance/client/adversity.d.ts +39 -0
  142. package/dist/testing/conformance/client/adversity.d.ts.map +1 -0
  143. package/dist/testing/conformance/client/adversity.js +162 -0
  144. package/dist/testing/conformance/client/adversity.js.map +1 -0
  145. package/dist/testing/conformance/client/boundary.d.ts +12 -0
  146. package/dist/testing/conformance/client/boundary.d.ts.map +1 -0
  147. package/dist/testing/conformance/client/boundary.js +68 -0
  148. package/dist/testing/conformance/client/boundary.js.map +1 -0
  149. package/dist/testing/conformance/client/delivery.d.ts +38 -0
  150. package/dist/testing/conformance/client/delivery.d.ts.map +1 -0
  151. package/dist/testing/conformance/client/delivery.js +202 -0
  152. package/dist/testing/conformance/client/delivery.js.map +1 -0
  153. package/dist/testing/conformance/client/index.d.ts +16 -0
  154. package/dist/testing/conformance/client/index.d.ts.map +1 -0
  155. package/dist/testing/conformance/client/index.js +16 -0
  156. package/dist/testing/conformance/client/index.js.map +1 -0
  157. package/dist/testing/conformance/client/rpc-semantics.d.ts +26 -0
  158. package/dist/testing/conformance/client/rpc-semantics.d.ts.map +1 -0
  159. package/dist/testing/conformance/client/rpc-semantics.js +145 -0
  160. package/dist/testing/conformance/client/rpc-semantics.js.map +1 -0
  161. package/dist/testing/conformance/client/runner.d.ts +258 -0
  162. package/dist/testing/conformance/client/runner.d.ts.map +1 -0
  163. package/dist/testing/conformance/client/runner.js +228 -0
  164. package/dist/testing/conformance/client/runner.js.map +1 -0
  165. package/dist/testing/conformance/client/schema-conformance.d.ts +25 -0
  166. package/dist/testing/conformance/client/schema-conformance.d.ts.map +1 -0
  167. package/dist/testing/conformance/client/schema-conformance.js +123 -0
  168. package/dist/testing/conformance/client/schema-conformance.js.map +1 -0
  169. package/dist/testing/conformance/client/suite.d.ts +90 -0
  170. package/dist/testing/conformance/client/suite.d.ts.map +1 -0
  171. package/dist/testing/conformance/client/suite.js +209 -0
  172. package/dist/testing/conformance/client/suite.js.map +1 -0
  173. package/dist/testing/conformance/coverage-policy.d.ts +8 -0
  174. package/dist/testing/conformance/coverage-policy.d.ts.map +1 -0
  175. package/dist/testing/conformance/coverage-policy.js +10 -0
  176. package/dist/testing/conformance/coverage-policy.js.map +1 -0
  177. package/dist/testing/conformance/delivery.d.ts +40 -0
  178. package/dist/testing/conformance/delivery.d.ts.map +1 -0
  179. package/dist/testing/conformance/delivery.js +231 -0
  180. package/dist/testing/conformance/delivery.js.map +1 -0
  181. package/dist/testing/conformance/env.d.ts +3 -0
  182. package/dist/testing/conformance/env.d.ts.map +1 -0
  183. package/dist/testing/conformance/env.js +14 -0
  184. package/dist/testing/conformance/env.js.map +1 -0
  185. package/dist/testing/conformance/index.d.ts +10 -0
  186. package/dist/testing/conformance/index.d.ts.map +1 -0
  187. package/dist/testing/conformance/index.js +10 -0
  188. package/dist/testing/conformance/index.js.map +1 -0
  189. package/dist/testing/conformance/registry.d.ts +93 -0
  190. package/dist/testing/conformance/registry.d.ts.map +1 -0
  191. package/dist/testing/conformance/registry.js +62 -0
  192. package/dist/testing/conformance/registry.js.map +1 -0
  193. package/dist/testing/conformance/rpc-semantics.d.ts +67 -0
  194. package/dist/testing/conformance/rpc-semantics.d.ts.map +1 -0
  195. package/dist/testing/conformance/rpc-semantics.js +394 -0
  196. package/dist/testing/conformance/rpc-semantics.js.map +1 -0
  197. package/dist/testing/conformance/runner.d.ts +78 -0
  198. package/dist/testing/conformance/runner.d.ts.map +1 -0
  199. package/dist/testing/conformance/runner.js +65 -0
  200. package/dist/testing/conformance/runner.js.map +1 -0
  201. package/dist/testing/conformance/schema-conformance.d.ts +30 -0
  202. package/dist/testing/conformance/schema-conformance.d.ts.map +1 -0
  203. package/dist/testing/conformance/schema-conformance.js +229 -0
  204. package/dist/testing/conformance/schema-conformance.js.map +1 -0
  205. package/dist/testing/conformance/suite.d.ts +92 -0
  206. package/dist/testing/conformance/suite.d.ts.map +1 -0
  207. package/dist/testing/conformance/suite.js +233 -0
  208. package/dist/testing/conformance/suite.js.map +1 -0
  209. package/dist/testing/errors.d.ts +78 -0
  210. package/dist/testing/errors.d.ts.map +1 -0
  211. package/dist/testing/errors.js +34 -0
  212. package/dist/testing/errors.js.map +1 -0
  213. package/dist/testing/index.d.ts +25 -0
  214. package/dist/testing/index.d.ts.map +1 -0
  215. package/dist/testing/index.js +37 -0
  216. package/dist/testing/index.js.map +1 -0
  217. package/dist/testing/models/dispatch.d.ts +61 -0
  218. package/dist/testing/models/dispatch.d.ts.map +1 -0
  219. package/dist/testing/models/dispatch.js +197 -0
  220. package/dist/testing/models/dispatch.js.map +1 -0
  221. package/dist/testing/models/index.d.ts +3 -0
  222. package/dist/testing/models/index.d.ts.map +1 -0
  223. package/dist/testing/models/index.js +3 -0
  224. package/dist/testing/models/index.js.map +1 -0
  225. package/dist/testing/models/state.d.ts +37 -0
  226. package/dist/testing/models/state.d.ts.map +1 -0
  227. package/dist/testing/models/state.js +14 -0
  228. package/dist/testing/models/state.js.map +1 -0
  229. package/dist/testing/test-client.d.ts +70 -0
  230. package/dist/testing/test-client.d.ts.map +1 -0
  231. package/dist/testing/test-client.js +266 -0
  232. package/dist/testing/test-client.js.map +1 -0
  233. package/dist/testing/test-server.d.ts +62 -0
  234. package/dist/testing/test-server.d.ts.map +1 -0
  235. package/dist/testing/test-server.js +134 -0
  236. package/dist/testing/test-server.js.map +1 -0
  237. package/dist/testing/toxics/client.d.ts +52 -0
  238. package/dist/testing/toxics/client.d.ts.map +1 -0
  239. package/dist/testing/toxics/client.js +120 -0
  240. package/dist/testing/toxics/client.js.map +1 -0
  241. package/dist/testing/toxics/defaults.d.ts +43 -0
  242. package/dist/testing/toxics/defaults.d.ts.map +1 -0
  243. package/dist/testing/toxics/defaults.js +9 -0
  244. package/dist/testing/toxics/defaults.js.map +1 -0
  245. package/dist/testing/toxics/index.d.ts +4 -0
  246. package/dist/testing/toxics/index.d.ts.map +1 -0
  247. package/dist/testing/toxics/index.js +4 -0
  248. package/dist/testing/toxics/index.js.map +1 -0
  249. package/dist/testing/toxics/profile.d.ts +69 -0
  250. package/dist/testing/toxics/profile.d.ts.map +1 -0
  251. package/dist/testing/toxics/profile.js +57 -0
  252. package/dist/testing/toxics/profile.js.map +1 -0
  253. package/dist/types.d.ts +7 -11
  254. package/dist/types.d.ts.map +1 -1
  255. package/dist/types.js +3 -0
  256. package/dist/types.js.map +1 -1
  257. package/dist/validators.d.ts +49 -177
  258. package/dist/validators.d.ts.map +1 -1
  259. package/dist/validators.js +77 -48
  260. package/dist/validators.js.map +1 -1
  261. package/dist/version.d.ts +1 -1
  262. package/dist/version.js +1 -1
  263. package/package.json +12 -34
  264. package/dist/optional/contact-events.d.ts +0 -3
  265. package/dist/optional/contact-events.d.ts.map +0 -1
  266. package/dist/optional/contact-events.js +0 -5
  267. package/dist/optional/contact-events.js.map +0 -1
  268. package/dist/optional/contact-methods.d.ts +0 -5
  269. package/dist/optional/contact-methods.d.ts.map +0 -1
  270. package/dist/optional/contact-methods.js +0 -5
  271. package/dist/optional/contact-methods.js.map +0 -1
  272. package/dist/phone-hash.d.ts +0 -10
  273. package/dist/phone-hash.d.ts.map +0 -1
  274. package/dist/phone-hash.js +0 -17
  275. package/dist/phone-hash.js.map +0 -1
  276. package/dist/schema/methods/phone-contacts.d.ts +0 -30
  277. package/dist/schema/methods/phone-contacts.d.ts.map +0 -1
  278. package/dist/schema/methods/phone-contacts.js +0 -10
  279. package/dist/schema/methods/phone-contacts.js.map +0 -1
  280. package/dist/test-client.d.ts +0 -34
  281. package/dist/test-client.d.ts.map +0 -1
  282. package/dist/test-client.js +0 -176
  283. package/dist/test-client.js.map +0 -1
  284. package/dist/test-fixtures/phone-hashes.d.ts +0 -18
  285. package/dist/test-fixtures/phone-hashes.d.ts.map +0 -1
  286. package/dist/test-fixtures/phone-hashes.js +0 -24
  287. package/dist/test-fixtures/phone-hashes.js.map +0 -1
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Toxiproxy control-plane client.
3
+ *
4
+ * Per design doc §5 "Dependency choices", we talk to Toxiproxy's HTTP
5
+ * control API directly (no `toxiproxy-node-client` dep). The API surface
6
+ * we need is small — create proxy, add toxic, remove toxic, delete proxy —
7
+ * and a thin Effect wrapper keeps us from taking a 4-year-stale MIT
8
+ * package.
9
+ *
10
+ * Satisfies Goal 5 + AC8. Consumed by the Tier D runner.
11
+ */
12
+ import { Effect, Scope } from "effect";
13
+ import { ToxicControlError } from "../errors.js";
14
+ function httpJson(op, url, init) {
15
+ return Effect.tryPromise({
16
+ // #ignore-sloppy-code-next-line[async-keyword]: fetch is a Promise-returning Web API; Effect.tryPromise captures the rejection path
17
+ try: async () => {
18
+ const headers = new Headers({ "Content-Type": "application/json" });
19
+ if (init?.headers !== undefined) {
20
+ new Headers(init.headers).forEach((v, k) => headers.set(k, v));
21
+ }
22
+ const res = await fetch(url, { ...init, headers });
23
+ const body = await res.text();
24
+ if (res.status < 200 || res.status >= 300) {
25
+ throw new ToxicControlError({ op, status: res.status, body });
26
+ }
27
+ return body.length === 0 ? null : JSON.parse(body);
28
+ },
29
+ catch: (err) => {
30
+ if (err instanceof ToxicControlError)
31
+ return err;
32
+ return new ToxicControlError({
33
+ op,
34
+ status: 0,
35
+ body: err instanceof Error ? err.message : String(err),
36
+ });
37
+ },
38
+ });
39
+ }
40
+ function profileToAttributes(profile) {
41
+ switch (profile._tag) {
42
+ case "latency":
43
+ return {
44
+ type: "latency",
45
+ attributes: { latency: profile.latencyMs, jitter: profile.jitterMs },
46
+ };
47
+ case "bandwidth":
48
+ return {
49
+ type: "bandwidth",
50
+ attributes: { rate: profile.rateKbps },
51
+ };
52
+ case "slicer":
53
+ return {
54
+ type: "slicer",
55
+ attributes: {
56
+ average_size: profile.averageSize,
57
+ size_variation: 0,
58
+ delay: profile.delayUs,
59
+ },
60
+ };
61
+ case "reset_peer":
62
+ return {
63
+ type: "reset_peer",
64
+ attributes: { timeout: profile.timeoutMs },
65
+ };
66
+ case "timeout":
67
+ return {
68
+ type: "timeout",
69
+ attributes: { timeout: profile.timeoutMs },
70
+ };
71
+ case "slow_close":
72
+ return {
73
+ type: "slow_close",
74
+ attributes: { delay: profile.delayMs },
75
+ };
76
+ default: {
77
+ const _exhaustive = profile;
78
+ throw new Error(`profileToAttributes: unexpected toxic ${String(_exhaustive)}`);
79
+ }
80
+ }
81
+ }
82
+ export function makeToxiproxyClient(config) {
83
+ const base = config.apiUrl.replace(/\/$/, "");
84
+ const ping = httpJson("create-proxy", `${base}/version`, { method: "GET" }).pipe(Effect.asVoid);
85
+ const proxy = (opts) => Effect.acquireRelease(httpJson("create-proxy", `${base}/proxies`, {
86
+ method: "POST",
87
+ body: JSON.stringify({
88
+ name: opts.name,
89
+ upstream: opts.upstream,
90
+ listen: "127.0.0.1:0",
91
+ enabled: true,
92
+ }),
93
+ }).pipe(Effect.map((body) => {
94
+ const raw = body;
95
+ const listen = raw.listen.startsWith("ws://")
96
+ ? raw.listen
97
+ : `ws://${raw.listen}`;
98
+ const proxyHandle = {
99
+ upstream: raw.upstream,
100
+ listenUrl: listen,
101
+ withToxic: (profile) => Effect.acquireRelease(Effect.suspend(() => {
102
+ const { type, attributes } = profileToAttributes(profile);
103
+ const toxicName = `${profile._tag}-${Math.floor(Math.random() * 1e9)}`;
104
+ return httpJson("add-toxic", `${base}/proxies/${encodeURIComponent(opts.name)}/toxics`, {
105
+ method: "POST",
106
+ body: JSON.stringify({
107
+ name: toxicName,
108
+ type,
109
+ stream: "downstream",
110
+ toxicity: 1.0,
111
+ attributes,
112
+ }),
113
+ }).pipe(Effect.map(() => ({ name: toxicName, profile })));
114
+ }), (handle) => httpJson("remove-toxic", `${base}/proxies/${encodeURIComponent(opts.name)}/toxics/${encodeURIComponent(handle.name)}`, { method: "DELETE" }).pipe(Effect.orElseSucceed(() => null), Effect.asVoid)),
115
+ };
116
+ return proxyHandle;
117
+ })), () => httpJson("delete-proxy", `${base}/proxies/${encodeURIComponent(opts.name)}`, { method: "DELETE" }).pipe(Effect.orElseSucceed(() => null), Effect.asVoid));
118
+ return Effect.succeed({ proxy, ping });
119
+ }
120
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/testing/toxics/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAoDjD,SAAS,QAAQ,CACf,EAAkE,EAClE,GAAW,EACX,IAAkB;IAElB,OAAO,MAAM,CAAC,UAAU,CAAC;QACvB,oIAAoI;QACpI,GAAG,EAAE,KAAK,IAAI,EAAE;YACd,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YACpE,IAAI,IAAI,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;gBAChC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACjE,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YACnD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;gBAC1C,MAAM,IAAI,iBAAiB,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAChE,CAAC;YACD,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrD,CAAC;QACD,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;YACb,IAAI,GAAG,YAAY,iBAAiB;gBAAE,OAAO,GAAG,CAAC;YACjD,OAAO,IAAI,iBAAiB,CAAC;gBAC3B,EAAE;gBACF,MAAM,EAAE,CAAC;gBACT,IAAI,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACvD,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAqB;IAIhD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,SAAS;YACZ,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,UAAU,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE;aACrE,CAAC;QACJ,KAAK,WAAW;YACd,OAAO;gBACL,IAAI,EAAE,WAAW;gBACjB,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE;aACvC,CAAC;QACJ,KAAK,QAAQ;YACX,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,YAAY,EAAE,OAAO,CAAC,WAAW;oBACjC,cAAc,EAAE,CAAC;oBACjB,KAAK,EAAE,OAAO,CAAC,OAAO;iBACvB;aACF,CAAC;QACJ,KAAK,YAAY;YACf,OAAO;gBACL,IAAI,EAAE,YAAY;gBAClB,UAAU,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE;aAC3C,CAAC;QACJ,KAAK,SAAS;YACZ,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,UAAU,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE;aAC3C,CAAC;QACJ,KAAK,YAAY;YACf,OAAO;gBACL,IAAI,EAAE,YAAY;gBAClB,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE;aACvC,CAAC;QACJ,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,OAAO,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,yCAAyC,MAAM,CAAC,WAAW,CAAC,EAAE,CAC/D,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAuB;IAEvB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAE9C,MAAM,IAAI,GAA2C,QAAQ,CAC3D,cAAc,EACd,GAAG,IAAI,UAAU,EACjB,EAAE,MAAM,EAAE,KAAK,EAAE,CAClB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAEtB,MAAM,KAAK,GAA6B,CAAC,IAAI,EAAE,EAAE,CAC/C,MAAM,CAAC,cAAc,CACnB,QAAQ,CAAC,cAAc,EAAE,GAAG,IAAI,UAAU,EAAE;QAC1C,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE,IAAI;SACd,CAAC;KACH,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAClB,MAAM,GAAG,GAAG,IAAgB,CAAC;QAC7B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;YAC3C,CAAC,CAAC,GAAG,CAAC,MAAM;YACZ,CAAC,CAAC,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,WAAW,GAAU;YACzB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,SAAS,EAAE,MAAM;YACjB,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CACrB,MAAM,CAAC,cAAc,CACnB,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;gBAClB,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBAC1D,MAAM,SAAS,GAAG,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;gBACvE,OAAO,QAAQ,CACb,WAAW,EACX,GAAG,IAAI,YAAY,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EACzD;oBACE,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,IAAI,EAAE,SAAS;wBACf,IAAI;wBACJ,MAAM,EAAE,YAAY;wBACpB,QAAQ,EAAE,GAAG;wBACb,UAAU;qBACX,CAAC;iBACH,CACF,CAAC,IAAI,CACJ,MAAM,CAAC,GAAG,CACR,GAAgB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAClD,CACF,CAAC;YACJ,CAAC,CAAC,EACF,CAAC,MAAM,EAAE,EAAE,CACT,QAAQ,CACN,cAAc,EACd,GAAG,IAAI,YAAY,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAC5F,EAAE,MAAM,EAAE,QAAQ,EAAE,CACrB,CAAC,IAAI,CACJ,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAChC,MAAM,CAAC,MAAM,CACd,CACJ;SACJ,CAAC;QACF,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC,CACH,EACD,GAAG,EAAE,CACH,QAAQ,CACN,cAAc,EACd,GAAG,IAAI,YAAY,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAClD,EAAE,MAAM,EAAE,QAAQ,EAAE,CACrB,CAAC,IAAI,CACJ,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAChC,MAAM,CAAC,MAAM,CACd,CACJ,CAAC;IAEJ,OAAO,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Per-toxic default parameters. These are the tuple every Tier D run
3
+ * attaches unless a property overrides them.
4
+ *
5
+ * Rationale (see design doc §9 "Per-toxic default profiles"):
6
+ *
7
+ * latency — 100ms base + 50ms jitter: large enough to reorder
8
+ * concurrent sends on a localhost loopback, small enough
9
+ * that a 30s suite runs in CI time.
10
+ * bandwidth — 64 KB/s: well below single-message throughput so
11
+ * backpressure regimes (§5 D2) diverge observably.
12
+ * slicer — 32-byte slices, 500µs delay: forces frame boundaries to
13
+ * split inside a JSON payload.
14
+ * reset_peer — 2000ms: long enough that a typical RPC commits before
15
+ * the reset, short enough for the reconnect (D4) loop.
16
+ * timeout — 5000ms: matches the default `defaultTimeoutMs` of
17
+ * TestClient so the caller-surfaced error is the
18
+ * documented timeout.
19
+ * slow_close — 250ms: bounded below CI scheduler jitter; asserts the
20
+ * reaper does not leak.
21
+ */
22
+ import type { ToxicProfile } from "./profile.js";
23
+ export declare const defaultToxicProfile: {
24
+ readonly latency: ToxicProfile & {
25
+ readonly _tag: "latency";
26
+ };
27
+ readonly bandwidth: ToxicProfile & {
28
+ readonly _tag: "bandwidth";
29
+ };
30
+ readonly slicer: ToxicProfile & {
31
+ readonly _tag: "slicer";
32
+ };
33
+ readonly reset_peer: ToxicProfile & {
34
+ readonly _tag: "reset_peer";
35
+ };
36
+ readonly timeout: ToxicProfile & {
37
+ readonly _tag: "timeout";
38
+ };
39
+ readonly slow_close: ToxicProfile & {
40
+ readonly _tag: "slow_close";
41
+ };
42
+ };
43
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/testing/toxics/defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,eAAO,MAAM,mBAAmB,EAAE;IAChC,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;IAC9D,QAAQ,CAAC,SAAS,EAAE,YAAY,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC;IAClE,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,CAAC;IAC5D,QAAQ,CAAC,UAAU,EAAE,YAAY,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;KAAE,CAAC;IACpE,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;IAC9D,QAAQ,CAAC,UAAU,EAAE,YAAY,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;KAAE,CAAC;CAQrE,CAAC"}
@@ -0,0 +1,9 @@
1
+ export const defaultToxicProfile = {
2
+ latency: { _tag: "latency", latencyMs: 100, jitterMs: 50 },
3
+ bandwidth: { _tag: "bandwidth", rateKbps: 64 },
4
+ slicer: { _tag: "slicer", averageSize: 32, delayUs: 500 },
5
+ reset_peer: { _tag: "reset_peer", timeoutMs: 2000 },
6
+ timeout: { _tag: "timeout", timeoutMs: 5000 },
7
+ slow_close: { _tag: "slow_close", delayMs: 250 },
8
+ };
9
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../src/testing/toxics/defaults.ts"],"names":[],"mappings":"AAuBA,MAAM,CAAC,MAAM,mBAAmB,GAO5B;IACF,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC1D,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC9C,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;IACzD,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE;IACnD,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;IAC7C,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE;CACjD,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { type ToxicProfile, type ToxicTag, allToxicTags, type DeliveryInvariantName, deliveryInvariantFor, } from "./profile.js";
2
+ export { defaultToxicProfile } from "./defaults.js";
3
+ export { type ToxiproxyClient, type ToxiproxyConfig, type Proxy, type ToxicHandle, makeToxiproxyClient, } from "./client.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/toxics/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,YAAY,EACZ,KAAK,qBAAqB,EAC1B,oBAAoB,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,KAAK,EACV,KAAK,WAAW,EAChB,mBAAmB,GACpB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { allToxicTags, deliveryInvariantFor, } from "./profile.js";
2
+ export { defaultToxicProfile } from "./defaults.js";
3
+ export { makeToxiproxyClient, } from "./client.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/testing/toxics/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EAEZ,oBAAoB,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAKL,mBAAmB,GACpB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Toxic profile DSL.
3
+ *
4
+ * Per D2 and Invariant I4, adversity is a parameter selected at suite
5
+ * invocation, not hardcoded case-by-case. A `ToxicProfile` is a named
6
+ * preset (one of the six toxics) plus its parameters; the Tier D runner
7
+ * picks the matching Tier C invariant and re-runs it with the toxic
8
+ * attached.
9
+ *
10
+ * Exhaustiveness: the `_tag` union covers every toxic named in §5 Tier D
11
+ * (D1–D6) so the implementer cannot forget a branch in the client dispatch.
12
+ */
13
+ export type ToxicProfile = {
14
+ readonly _tag: "latency";
15
+ /** Added latency in milliseconds, per-packet. */
16
+ readonly latencyMs: number;
17
+ /** Random jitter in ms, uniform [0, jitterMs). */
18
+ readonly jitterMs: number;
19
+ } | {
20
+ readonly _tag: "bandwidth";
21
+ /** Throttled rate in kilobytes/sec. */
22
+ readonly rateKbps: number;
23
+ } | {
24
+ readonly _tag: "slicer";
25
+ /** Bytes per slice. Small values force partial-frame handling. */
26
+ readonly averageSize: number;
27
+ /** Delay between slices in microseconds. */
28
+ readonly delayUs: number;
29
+ } | {
30
+ readonly _tag: "reset_peer";
31
+ /** Timeout in ms before the toxic forcibly resets the connection. */
32
+ readonly timeoutMs: number;
33
+ } | {
34
+ readonly _tag: "timeout";
35
+ /** Stops forwarding after `timeoutMs`, simulating a black-hole hop. */
36
+ readonly timeoutMs: number;
37
+ } | {
38
+ readonly _tag: "slow_close";
39
+ /** Delay close-frame delivery by `delayMs`. */
40
+ readonly delayMs: number;
41
+ };
42
+ /** All six toxic tags, enumerated for coverage assertions in Tier D. */
43
+ export declare const allToxicTags: readonly ["latency", "bandwidth", "slicer", "reset_peer", "timeout", "slow_close"];
44
+ export type ToxicTag = (typeof allToxicTags)[number];
45
+ /**
46
+ * Every delivery-layer property one toxic is expected to re-exercise.
47
+ * Keyed by the property's semantic name (matches the register-function
48
+ * names in `conformance/delivery.ts`).
49
+ */
50
+ export type DeliveryInvariantName = "fan-out-cardinality" | "store-and-replay" | "payload-opacity" | "task-boundary-isolation";
51
+ /**
52
+ * Selector: pick the delivery invariant a given toxic re-exercises.
53
+ * Adversity module uses this to pair a toxic with the single delivery
54
+ * property it must preserve under adversity.
55
+ *
56
+ * Historical grouping: spec #181 §5 labels these "Tier C"; the code
57
+ * surface uses semantic names.
58
+ *
59
+ * | Toxic | Exercises |
60
+ * |--------------|--------------------------------|
61
+ * | latency | fan-out-cardinality under reorder |
62
+ * | bandwidth | fan-out-cardinality under throttle |
63
+ * | slicer | payload-opacity under partial-frame |
64
+ * | reset_peer | store-and-replay after reconnect |
65
+ * | timeout | fan-out-cardinality + eventual consistency |
66
+ * | slow_close | task-boundary-isolation survives slow close |
67
+ */
68
+ export declare function deliveryInvariantFor(toxic: ToxicTag): DeliveryInvariantName;
69
+ //# sourceMappingURL=profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../../src/testing/toxics/profile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,YAAY,GACpB;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,iDAAiD;IACjD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,uCAAuC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,kEAAkE;IAClE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,4CAA4C;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,qEAAqE;IACrE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,uEAAuE;IACvE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,+CAA+C;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEN,wEAAwE;AACxE,eAAO,MAAM,YAAY,oFAOf,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAC7B,qBAAqB,GACrB,kBAAkB,GAClB,iBAAiB,GACjB,yBAAyB,CAAC;AAE9B;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,QAAQ,GAAG,qBAAqB,CAmB3E"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Toxic profile DSL.
3
+ *
4
+ * Per D2 and Invariant I4, adversity is a parameter selected at suite
5
+ * invocation, not hardcoded case-by-case. A `ToxicProfile` is a named
6
+ * preset (one of the six toxics) plus its parameters; the Tier D runner
7
+ * picks the matching Tier C invariant and re-runs it with the toxic
8
+ * attached.
9
+ *
10
+ * Exhaustiveness: the `_tag` union covers every toxic named in §5 Tier D
11
+ * (D1–D6) so the implementer cannot forget a branch in the client dispatch.
12
+ */
13
+ /** All six toxic tags, enumerated for coverage assertions in Tier D. */
14
+ export const allToxicTags = [
15
+ "latency",
16
+ "bandwidth",
17
+ "slicer",
18
+ "reset_peer",
19
+ "timeout",
20
+ "slow_close",
21
+ ];
22
+ /**
23
+ * Selector: pick the delivery invariant a given toxic re-exercises.
24
+ * Adversity module uses this to pair a toxic with the single delivery
25
+ * property it must preserve under adversity.
26
+ *
27
+ * Historical grouping: spec #181 §5 labels these "Tier C"; the code
28
+ * surface uses semantic names.
29
+ *
30
+ * | Toxic | Exercises |
31
+ * |--------------|--------------------------------|
32
+ * | latency | fan-out-cardinality under reorder |
33
+ * | bandwidth | fan-out-cardinality under throttle |
34
+ * | slicer | payload-opacity under partial-frame |
35
+ * | reset_peer | store-and-replay after reconnect |
36
+ * | timeout | fan-out-cardinality + eventual consistency |
37
+ * | slow_close | task-boundary-isolation survives slow close |
38
+ */
39
+ export function deliveryInvariantFor(toxic) {
40
+ switch (toxic) {
41
+ case "latency":
42
+ case "bandwidth":
43
+ case "timeout":
44
+ return "fan-out-cardinality";
45
+ case "reset_peer":
46
+ return "store-and-replay";
47
+ case "slicer":
48
+ return "payload-opacity";
49
+ case "slow_close":
50
+ return "task-boundary-isolation";
51
+ default: {
52
+ const _exhaustive = toxic;
53
+ throw new Error(`deliveryInvariantFor: unexpected toxic ${String(_exhaustive)}`);
54
+ }
55
+ }
56
+ }
57
+ //# sourceMappingURL=profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../src/testing/toxics/profile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAsCH,wEAAwE;AACxE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,SAAS;IACT,WAAW;IACX,QAAQ;IACR,YAAY;IACZ,SAAS;IACT,YAAY;CACJ,CAAC;AAeX;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAe;IAClD,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,WAAW,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,qBAAqB,CAAC;QAC/B,KAAK,YAAY;YACf,OAAO,kBAAkB,CAAC;QAC5B,KAAK,QAAQ;YACX,OAAO,iBAAiB,CAAC;QAC3B,KAAK,YAAY;YACf,OAAO,yBAAyB,CAAC;QACnC,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,KAAK,CAAC;YACjC,MAAM,IAAI,KAAK,CACb,0CAA0C,MAAM,CAAC,WAAW,CAAC,EAAE,CAChE,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
package/dist/types.d.ts CHANGED
@@ -1,19 +1,15 @@
1
- export type { ParticipantRef, User, Agent, AgentCard, } from "./schema/identity.js";
1
+ export type { Agent, AgentCard } from "./schema/identity.js";
2
2
  export type { Contact } from "./schema/contacts.js";
3
3
  export type { Conversation, ConversationParticipant, ConversationSummary, } from "./schema/conversations.js";
4
4
  export type { TextPart, ImagePart, FilePart, Part, Message, } from "./schema/messages.js";
5
5
  export type { Invite } from "./schema/invites.js";
6
- export type { PresenceEntry, TypingIndicator } from "./schema/presence.js";
6
+ export type { PresenceEntry } from "./schema/presence.js";
7
7
  export type { DeliveryEntry } from "./schema/delivery.js";
8
8
  export type { RequestFrame, ResponseFrame, EventFrame, } from "./schema/frames.js";
9
9
  export type { RpcError, ErrorCode } from "./schema/errors.js";
10
- export type { ConnectParams, SelectAgentParams, RegisterParams, RegisterResult, InviteAgentParams, HelloOk, OwnedAgent, AgentsLookupParams, AgentsLookupResult, AgentsLookupByNameParams, AgentsLookupByNameResult, AgentsListParams, AgentsListResult, UsersLookupParams, UsersLookupResult, UsersUpdateProfileParams, UsersUpdateProfileResult, } from "./schema/methods/auth.js";
11
- export type { MessagesSendParams, MessagesSendResult, MessagesListParams, MessagesListResult, MessagesReadParams, MessagesReactParams, MessagesDeleteParams, } from "./schema/methods/messages.js";
12
- export type { ContactsListParams, ContactsListResult, ContactsAddParams, ContactsAddResult, ContactsAcceptParams, ContactsAcceptResult, ContactIdParams, ContactsDiscoverParams, ContactsDiscoverResult, } from "./schema/methods/contacts.js";
13
- export type { ContactsSyncParams, ContactsSyncResult, } from "./schema/methods/phone-contacts.js";
14
- export type { ConversationsCreateParams, ConversationsCreateResult, ConversationsListParams, ConversationsListResult, ConversationsGetParams, ConversationsGetResult, ConversationsUpdateParams, ConversationsMuteParams, ConversationsAddParticipantParams, ConversationsRemoveParticipantParams, ConversationsLeaveParams, ConversationsUnmuteParams, } from "./schema/methods/conversations.js";
15
- export type { InvitesCreateAgentParams } from "./schema/methods/invites.js";
16
- export type { PresenceUpdateParams, PresenceSubscribeParams, PresenceSubscribeResult, TypingSendParams, } from "./schema/methods/presence.js";
17
- export type { PushRegisterParams, PushUnregisterParams, PushPreferences, } from "./schema/methods/push.js";
18
- export type { SurfaceUpdateParams, SurfaceGetParams, SurfaceActionParams, SurfaceClearParams, Surface, } from "./schema/surfaces.js";
10
+ export type { HelloOk, OwnedAgent } from "./schema/methods/auth.js";
11
+ export type { PushPreferences } from "./schema/methods/push.js";
12
+ export type { Surface } from "./schema/surfaces.js";
13
+ export type { AppPermission, AppManifest, AppManifestConversation, AppSession, AppParticipantStatus, } from "./schema/apps.js";
14
+ export type { MessageReceivedEvent, MessageDeliveredEvent, ConversationCreatedEvent, ConversationUpdatedEvent, ContactRequestEvent, ContactAcceptedEvent, PresenceChangedEvent, SurfaceUpdatedEvent, SurfaceClearedEvent, AppSkillChallengeEvent, PermissionsRequiredEvent, AppParticipantAdmittedEvent, AppParticipantRejectedEvent, AppSessionReadyEvent, AppSessionFailedEvent, AppSessionClosedEvent, AppHookTimeoutEvent, } from "./schema/events.js";
19
15
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,IAAI,EACJ,KAAK,EACL,SAAS,GACV,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,YAAY,EACV,YAAY,EACZ,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,OAAO,GACR,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC3E,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EACV,YAAY,EACZ,aAAa,EACb,UAAU,GACX,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG9D,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,OAAO,EACP,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,wBAAwB,EACxB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AAGtC,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AAGtC,YAAY,EACV,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,oCAAoC,CAAC;AAG5C,YAAY,EACV,yBAAyB,EACzB,yBAAyB,EACzB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,uBAAuB,EACvB,iCAAiC,EACjC,oCAAoC,EACpC,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,mCAAmC,CAAC;AAG3C,YAAY,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAG5E,YAAY,EACV,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,8BAA8B,CAAC;AAGtC,YAAY,EACV,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,OAAO,GACR,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC7D,YAAY,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,YAAY,EACV,YAAY,EACZ,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,OAAO,GACR,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EACV,YAAY,EACZ,aAAa,EACb,UAAU,GACX,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG9D,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGpE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGhE,YAAY,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGpD,YAAY,EACV,aAAa,EACb,WAAW,EACX,uBAAuB,EACvB,UAAU,EACV,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACxB,2BAA2B,EAC3B,2BAA2B,EAC3B,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC"}
package/dist/types.js CHANGED
@@ -1,2 +1,5 @@
1
1
  export {};
2
+ // RPC manifest-derived params/results aren't re-exported here; downstream
3
+ // consumers get types from `Static<typeof Manifest.paramsSchema>` /
4
+ // `Static<typeof Manifest.resultSchema>` at the import site.
2
5
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AA+DA,0EAA0E;AAC1E,oEAAoE;AACpE,6DAA6D"}
@@ -1,3 +1,9 @@
1
+ /**
2
+ * Named validator table. Every RPC manifest's `validateParams` is re-exported
3
+ * here under the legacy `xxxParams` key so existing call sites keep working.
4
+ * Frame validators (`requestFrame`, `responseFrame`, `eventFrame`) live here
5
+ * because they're not RPC methods.
6
+ */
1
7
  export declare const validators: {
2
8
  readonly requestFrame: import("ajv").ValidateFunction<{
3
9
  type: any;
@@ -35,183 +41,35 @@ export declare const validators: {
35
41
  } & {
36
42
  jsonrpc: any;
37
43
  }>;
38
- readonly registerParams: import("ajv").ValidateFunction<{
39
- name: any;
40
- }>;
41
- readonly inviteAgentParams: import("ajv").ValidateFunction<{
42
- [x: string]: {};
43
- }>;
44
- readonly connectParams: import("ajv").ValidateFunction<{
45
- jwt: any;
46
- minProtocol: any;
47
- maxProtocol: any;
48
- } & {
49
- jwt: any;
50
- } & {
51
- minProtocol: any;
52
- } & {
53
- maxProtocol: any;
54
- } & {
55
- minProtocol: any;
56
- maxProtocol: any;
57
- agentKey: any;
58
- } & {
59
- agentKey: any;
60
- }>;
61
- readonly selectAgentParams: import("ajv").ValidateFunction<{
62
- agentId: any;
63
- }>;
64
- readonly agentsLookupParams: import("ajv").ValidateFunction<{
65
- agentIds: any;
66
- }>;
67
- readonly agentsLookupByNameParams: import("ajv").ValidateFunction<{
68
- names: any;
69
- }>;
70
- readonly agentsListParams: import("ajv").ValidateFunction<{
71
- [x: string]: {};
72
- }>;
73
- readonly usersLookupParams: import("ajv").ValidateFunction<{
74
- userIds: any;
75
- }>;
76
- readonly usersUpdateProfileParams: import("ajv").ValidateFunction<{
77
- [x: string]: {};
78
- }>;
79
- readonly messagesSendParams: import("ajv").ValidateFunction<{
80
- parts: any;
81
- }>;
82
- readonly messagesListParams: import("ajv").ValidateFunction<{
83
- conversationId: any;
84
- }>;
85
- readonly messagesReadParams: import("ajv").ValidateFunction<{
86
- conversationId: any;
87
- seq: any;
88
- } & {
89
- conversationId: any;
90
- } & {
91
- seq: any;
92
- }>;
93
- readonly messagesReactParams: import("ajv").ValidateFunction<{
94
- messageId: any;
95
- action: any;
96
- emoji: any;
97
- } & {
98
- messageId: any;
99
- } & {
100
- action: any;
101
- } & {
102
- emoji: any;
103
- }>;
104
- readonly messagesDeleteParams: import("ajv").ValidateFunction<{
105
- messageId: any;
106
- }>;
107
- readonly contactsListParams: import("ajv").ValidateFunction<{
108
- [x: string]: {};
109
- }>;
110
- readonly contactsAddParams: import("ajv").ValidateFunction<{
111
- [x: string]: {};
112
- }>;
113
- readonly contactsAcceptParams: import("ajv").ValidateFunction<{
114
- contactId: any;
115
- }>;
116
- readonly contactIdParams: import("ajv").ValidateFunction<{
117
- contactId: any;
118
- }>;
119
- readonly contactsDiscoverParams: import("ajv").ValidateFunction<{
120
- phoneHashes: any;
121
- }>;
122
- readonly contactsSyncParams: import("ajv").ValidateFunction<{
123
- phoneHashes: any;
124
- }>;
125
- readonly conversationsCreateParams: import("ajv").ValidateFunction<{
126
- type: any;
127
- participants: any;
128
- } & {
129
- type: any;
130
- } & {
131
- participants: any;
132
- }>;
133
- readonly conversationsListParams: import("ajv").ValidateFunction<{
134
- [x: string]: {};
135
- }>;
136
- readonly conversationsGetParams: import("ajv").ValidateFunction<{
137
- conversationId: any;
138
- }>;
139
- readonly conversationsUpdateParams: import("ajv").ValidateFunction<{
140
- conversationId: any;
141
- }>;
142
- readonly conversationsMuteParams: import("ajv").ValidateFunction<{
143
- conversationId: any;
144
- }>;
145
- readonly conversationsAddParticipantParams: import("ajv").ValidateFunction<{
146
- conversationId: any;
147
- participant: any;
148
- } & {
149
- conversationId: any;
150
- } & {
151
- participant: any;
152
- }>;
153
- readonly conversationsRemoveParticipantParams: import("ajv").ValidateFunction<{
154
- conversationId: any;
155
- participant: any;
156
- } & {
157
- conversationId: any;
158
- } & {
159
- participant: any;
160
- }>;
161
- readonly conversationsLeaveParams: import("ajv").ValidateFunction<{
162
- conversationId: any;
163
- }>;
164
- readonly conversationsUnmuteParams: import("ajv").ValidateFunction<{
165
- conversationId: any;
166
- }>;
167
- readonly invitesCreateAgentParams: import("ajv").ValidateFunction<{
168
- [x: string]: {};
169
- }>;
170
- readonly presenceUpdateParams: import("ajv").ValidateFunction<{
171
- status: any;
172
- }>;
173
- readonly presenceSubscribeParams: import("ajv").ValidateFunction<{
174
- participants: any;
175
- }>;
176
- readonly typingSendParams: import("ajv").ValidateFunction<{
177
- conversationId: any;
178
- }>;
179
- readonly pushRegisterParams: import("ajv").ValidateFunction<{
180
- deviceToken: any;
181
- platform: any;
182
- } & {
183
- deviceToken: any;
184
- } & {
185
- platform: any;
186
- }>;
187
- readonly pushUnregisterParams: import("ajv").ValidateFunction<{
188
- deviceToken: any;
189
- }>;
190
- readonly surfaceUpdateParams: import("ajv").ValidateFunction<{
191
- conversationId: any;
192
- title: any;
193
- spec: any;
194
- } & {
195
- conversationId: any;
196
- } & {
197
- title: any;
198
- } & {
199
- spec: any;
200
- }>;
201
- readonly surfaceGetParams: import("ajv").ValidateFunction<{
202
- conversationId: any;
203
- }>;
204
- readonly surfaceActionParams: import("ajv").ValidateFunction<{
205
- conversationId: any;
206
- action: any;
207
- } & {
208
- conversationId: any;
209
- } & {
210
- action: any;
211
- }>;
212
- readonly surfaceClearParams: import("ajv").ValidateFunction<{
213
- conversationId: any;
214
- }>;
44
+ readonly registerParams: (data: unknown) => boolean;
45
+ readonly inviteAgentParams: (data: unknown) => boolean;
46
+ readonly connectParams: (data: unknown) => boolean;
47
+ readonly selectAgentParams: (data: unknown) => boolean;
48
+ readonly agentsLookupParams: (data: unknown) => boolean;
49
+ readonly agentsLookupByNameParams: (data: unknown) => boolean;
50
+ readonly agentsListParams: (data: unknown) => boolean;
51
+ readonly messagesSendParams: (data: unknown) => boolean;
52
+ readonly messagesListParams: (data: unknown) => boolean;
53
+ readonly contactsListParams: (data: unknown) => boolean;
54
+ readonly contactsAddParams: (data: unknown) => boolean;
55
+ readonly contactsAcceptParams: (data: unknown) => boolean;
56
+ readonly contactIdParams: (data: unknown) => boolean;
57
+ readonly conversationsCreateParams: (data: unknown) => boolean;
58
+ readonly conversationsListParams: (data: unknown) => boolean;
59
+ readonly conversationsGetParams: (data: unknown) => boolean;
60
+ readonly conversationsUpdateParams: (data: unknown) => boolean;
61
+ readonly conversationsMuteParams: (data: unknown) => boolean;
62
+ readonly conversationsAddParticipantParams: (data: unknown) => boolean;
63
+ readonly conversationsRemoveParticipantParams: (data: unknown) => boolean;
64
+ readonly conversationsLeaveParams: (data: unknown) => boolean;
65
+ readonly conversationsUnmuteParams: (data: unknown) => boolean;
66
+ readonly conversationsArchiveParams: (data: unknown) => boolean;
67
+ readonly conversationsUnarchiveParams: (data: unknown) => boolean;
68
+ readonly invitesCreateAgentParams: (data: unknown) => boolean;
69
+ readonly presenceUpdateParams: (data: unknown) => boolean;
70
+ readonly presenceSubscribeParams: (data: unknown) => boolean;
71
+ readonly pushRegisterParams: (data: unknown) => boolean;
72
+ readonly pushUnregisterParams: (data: unknown) => boolean;
215
73
  readonly pushPreferencesParams: import("ajv").ValidateFunction<{
216
74
  messages: any;
217
75
  contactsAndInvites: any;
@@ -223,6 +81,20 @@ export declare const validators: {
223
81
  } & {
224
82
  agentUpdates: any;
225
83
  }>;
84
+ readonly surfaceUpdateParams: (data: unknown) => boolean;
85
+ readonly surfaceGetParams: (data: unknown) => boolean;
86
+ readonly surfaceActionParams: (data: unknown) => boolean;
87
+ readonly surfaceClearParams: (data: unknown) => boolean;
88
+ readonly appsRegisterParams: (data: unknown) => boolean;
89
+ readonly appsCreateParams: (data: unknown) => boolean;
90
+ readonly appsAttestSkillParams: (data: unknown) => boolean;
91
+ readonly permissionsGrantParams: (data: unknown) => boolean;
92
+ readonly permissionsListParams: (data: unknown) => boolean;
93
+ readonly permissionsRevokeParams: (data: unknown) => boolean;
94
+ readonly appsCloseSessionParams: (data: unknown) => boolean;
95
+ readonly appsGetSessionParams: (data: unknown) => boolean;
96
+ readonly appsListSessionsParams: (data: unknown) => boolean;
97
+ readonly systemPingParams: (data: unknown) => boolean;
226
98
  };
227
99
  export type ValidatorName = keyof typeof validators;
228
100
  //# sourceMappingURL=validators.d.ts.map