reactor-effect-client 0.2.0 → 0.3.0-rc.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 (218) hide show
  1. package/README.md +62 -6
  2. package/dist/FetchHttp.js +1 -1
  3. package/dist/FetchHttp.js.map +1 -1
  4. package/dist/PeerFactory.d.ts +13 -2
  5. package/dist/PeerFactory.d.ts.map +1 -1
  6. package/dist/PeerFactory.js.map +1 -1
  7. package/dist/PeerTypes.d.ts +2 -2
  8. package/dist/PeerTypes.d.ts.map +1 -1
  9. package/dist/Sequence.d.ts +18 -14
  10. package/dist/Sequence.d.ts.map +1 -1
  11. package/dist/Sequence.js +117 -122
  12. package/dist/Sequence.js.map +1 -1
  13. package/dist/SessionTypes.d.ts +168 -15
  14. package/dist/SessionTypes.d.ts.map +1 -1
  15. package/dist/SessionTypes.js +18 -1
  16. package/dist/SessionTypes.js.map +1 -1
  17. package/dist/bytes.js +3 -3
  18. package/dist/bytes.js.map +1 -1
  19. package/dist/contract.d.ts +120 -29
  20. package/dist/contract.d.ts.map +1 -1
  21. package/dist/contract.js +105 -73
  22. package/dist/contract.js.map +1 -1
  23. package/dist/coordinator/_internal/client.d.ts +111 -17
  24. package/dist/coordinator/_internal/client.d.ts.map +1 -1
  25. package/dist/coordinator/_internal/client.js +187 -74
  26. package/dist/coordinator/_internal/client.js.map +1 -1
  27. package/dist/coordinator/_internal/recording.d.ts +33 -0
  28. package/dist/coordinator/_internal/recording.d.ts.map +1 -0
  29. package/dist/coordinator/_internal/recording.js +123 -0
  30. package/dist/coordinator/_internal/recording.js.map +1 -0
  31. package/dist/coordinator/_internal/response.d.ts.map +1 -1
  32. package/dist/coordinator/_internal/response.js +5 -7
  33. package/dist/coordinator/_internal/response.js.map +1 -1
  34. package/dist/coordinator/_internal/schemas.d.ts +40 -6
  35. package/dist/coordinator/_internal/schemas.d.ts.map +1 -1
  36. package/dist/coordinator/_internal/schemas.js +94 -64
  37. package/dist/coordinator/_internal/schemas.js.map +1 -1
  38. package/dist/coordinator/index.d.ts +14 -2
  39. package/dist/coordinator/index.d.ts.map +1 -1
  40. package/dist/coordinator/index.js +14 -18
  41. package/dist/coordinator/index.js.map +1 -1
  42. package/dist/correlation.d.ts +15 -0
  43. package/dist/correlation.d.ts.map +1 -1
  44. package/dist/correlation.js +26 -8
  45. package/dist/correlation.js.map +1 -1
  46. package/dist/duration.d.ts +25 -0
  47. package/dist/duration.d.ts.map +1 -0
  48. package/dist/duration.js +47 -0
  49. package/dist/duration.js.map +1 -0
  50. package/dist/errors.d.ts +1264 -49
  51. package/dist/errors.d.ts.map +1 -1
  52. package/dist/errors.js +698 -46
  53. package/dist/errors.js.map +1 -1
  54. package/dist/h3/_internal/client.d.ts +2 -2
  55. package/dist/h3/_internal/client.d.ts.map +1 -1
  56. package/dist/h3/_internal/client.js +210 -125
  57. package/dist/h3/_internal/client.js.map +1 -1
  58. package/dist/h3/_internal/contracts.d.ts.map +1 -1
  59. package/dist/h3/_internal/contracts.js +2 -2
  60. package/dist/h3/_internal/contracts.js.map +1 -1
  61. package/dist/h3/_internal/deployment.d.ts.map +1 -1
  62. package/dist/h3/_internal/deployment.js +5 -4
  63. package/dist/h3/_internal/deployment.js.map +1 -1
  64. package/dist/h3/_internal/evidence.js +1 -1
  65. package/dist/h3/_internal/evidence.js.map +1 -1
  66. package/dist/h3/_internal/operations.d.ts +48 -0
  67. package/dist/h3/_internal/operations.d.ts.map +1 -0
  68. package/dist/h3/_internal/operations.js +230 -0
  69. package/dist/h3/_internal/operations.js.map +1 -0
  70. package/dist/h3/_internal/references.d.ts.map +1 -1
  71. package/dist/h3/_internal/references.js +3 -8
  72. package/dist/h3/_internal/references.js.map +1 -1
  73. package/dist/h3/_internal/request.js +1 -1
  74. package/dist/h3/_internal/request.js.map +1 -1
  75. package/dist/h3/_internal/retained.d.ts +22 -0
  76. package/dist/h3/_internal/retained.d.ts.map +1 -0
  77. package/dist/h3/_internal/retained.js +89 -0
  78. package/dist/h3/_internal/retained.js.map +1 -0
  79. package/dist/h3/_internal/state.d.ts +15 -1
  80. package/dist/h3/_internal/state.d.ts.map +1 -1
  81. package/dist/h3/_internal/state.js +69 -29
  82. package/dist/h3/_internal/state.js.map +1 -1
  83. package/dist/h3/index.d.ts +1 -1
  84. package/dist/h3/index.d.ts.map +1 -1
  85. package/dist/h3/messages.d.ts +118 -109
  86. package/dist/h3/messages.d.ts.map +1 -1
  87. package/dist/h3/messages.js +73 -51
  88. package/dist/h3/messages.js.map +1 -1
  89. package/dist/h3/types.d.ts +108 -13
  90. package/dist/h3/types.d.ts.map +1 -1
  91. package/dist/host.d.ts +6 -6
  92. package/dist/host.d.ts.map +1 -1
  93. package/dist/host.js +4 -5
  94. package/dist/host.js.map +1 -1
  95. package/dist/index.d.ts +11 -5
  96. package/dist/index.d.ts.map +1 -1
  97. package/dist/index.js +5 -1
  98. package/dist/index.js.map +1 -1
  99. package/dist/json.d.ts +13 -6
  100. package/dist/json.d.ts.map +1 -1
  101. package/dist/json.js +34 -14
  102. package/dist/json.js.map +1 -1
  103. package/dist/media-stream.d.ts.map +1 -1
  104. package/dist/media-stream.js +9 -11
  105. package/dist/media-stream.js.map +1 -1
  106. package/dist/observation.d.ts +9 -0
  107. package/dist/observation.d.ts.map +1 -1
  108. package/dist/observation.js +20 -18
  109. package/dist/observation.js.map +1 -1
  110. package/dist/orchestration/h3-source.d.ts +32 -4
  111. package/dist/orchestration/h3-source.d.ts.map +1 -1
  112. package/dist/orchestration/h3-source.js +47 -14
  113. package/dist/orchestration/h3-source.js.map +1 -1
  114. package/dist/orchestration/index.d.ts +9 -6
  115. package/dist/orchestration/index.d.ts.map +1 -1
  116. package/dist/orchestration/index.js +5 -3
  117. package/dist/orchestration/index.js.map +1 -1
  118. package/dist/orchestration/media-buffer.d.ts +12 -4
  119. package/dist/orchestration/media-buffer.d.ts.map +1 -1
  120. package/dist/orchestration/media-buffer.js +31 -11
  121. package/dist/orchestration/media-buffer.js.map +1 -1
  122. package/dist/orchestration/open-h3.d.ts +65 -0
  123. package/dist/orchestration/open-h3.d.ts.map +1 -0
  124. package/dist/orchestration/open-h3.js +65 -0
  125. package/dist/orchestration/open-h3.js.map +1 -0
  126. package/dist/orchestration/references.d.ts +5 -1
  127. package/dist/orchestration/references.d.ts.map +1 -1
  128. package/dist/orchestration/references.js +37 -34
  129. package/dist/orchestration/references.js.map +1 -1
  130. package/dist/orchestration/renewal-state.js +1 -1
  131. package/dist/orchestration/renewal-state.js.map +1 -1
  132. package/dist/orchestration/renewal.d.ts +64 -64
  133. package/dist/orchestration/renewal.d.ts.map +1 -1
  134. package/dist/orchestration/renewal.js +149 -88
  135. package/dist/orchestration/renewal.js.map +1 -1
  136. package/dist/orchestration/request.d.ts +11 -12
  137. package/dist/orchestration/request.d.ts.map +1 -1
  138. package/dist/orchestration/request.js +63 -66
  139. package/dist/orchestration/request.js.map +1 -1
  140. package/dist/orchestration/routing.d.ts.map +1 -1
  141. package/dist/orchestration/routing.js +17 -14
  142. package/dist/orchestration/routing.js.map +1 -1
  143. package/dist/orchestration/source-slot.d.ts +15 -5
  144. package/dist/orchestration/source-slot.d.ts.map +1 -1
  145. package/dist/orchestration/source-slot.js +40 -21
  146. package/dist/orchestration/source-slot.js.map +1 -1
  147. package/dist/orchestration/types.d.ts +594 -39
  148. package/dist/orchestration/types.d.ts.map +1 -1
  149. package/dist/orchestration/types.js +20 -0
  150. package/dist/orchestration/types.js.map +1 -1
  151. package/dist/protobuf.js +2 -2
  152. package/dist/protobuf.js.map +1 -1
  153. package/dist/session/_internal/acquire.d.ts +4 -6
  154. package/dist/session/_internal/acquire.d.ts.map +1 -1
  155. package/dist/session/_internal/acquire.js +40 -50
  156. package/dist/session/_internal/acquire.js.map +1 -1
  157. package/dist/session/_internal/cleanup.d.ts +2 -1
  158. package/dist/session/_internal/cleanup.d.ts.map +1 -1
  159. package/dist/session/_internal/cleanup.js +23 -15
  160. package/dist/session/_internal/cleanup.js.map +1 -1
  161. package/dist/session/_internal/lifecycle.d.ts +5 -0
  162. package/dist/session/_internal/lifecycle.d.ts.map +1 -1
  163. package/dist/session/_internal/lifecycle.js +16 -6
  164. package/dist/session/_internal/lifecycle.js.map +1 -1
  165. package/dist/session/_internal/remote.d.ts.map +1 -1
  166. package/dist/session/_internal/remote.js +16 -7
  167. package/dist/session/_internal/remote.js.map +1 -1
  168. package/dist/session/_internal/uploads.d.ts +4 -1
  169. package/dist/session/_internal/uploads.d.ts.map +1 -1
  170. package/dist/session/_internal/uploads.js +25 -27
  171. package/dist/session/_internal/uploads.js.map +1 -1
  172. package/dist/session/commands.d.ts +1 -21
  173. package/dist/session/commands.d.ts.map +1 -1
  174. package/dist/session/commands.js +1 -12
  175. package/dist/session/commands.js.map +1 -1
  176. package/dist/session/files.d.ts +10 -2
  177. package/dist/session/files.d.ts.map +1 -1
  178. package/dist/session/files.js +11 -16
  179. package/dist/session/files.js.map +1 -1
  180. package/dist/session/index.d.ts +6 -6
  181. package/dist/session/index.d.ts.map +1 -1
  182. package/dist/session/index.js.map +1 -1
  183. package/dist/session/media.d.ts +53 -6
  184. package/dist/session/media.d.ts.map +1 -1
  185. package/dist/session/recorder.d.ts +24 -0
  186. package/dist/session/recorder.d.ts.map +1 -0
  187. package/dist/session/recorder.js +19 -0
  188. package/dist/session/recorder.js.map +1 -0
  189. package/dist/session.d.ts +5 -4
  190. package/dist/session.d.ts.map +1 -1
  191. package/dist/session.js +208 -109
  192. package/dist/session.js.map +1 -1
  193. package/dist/simulation/_internal/source.d.ts.map +1 -1
  194. package/dist/simulation/_internal/source.js +57 -48
  195. package/dist/simulation/_internal/source.js.map +1 -1
  196. package/dist/simulation/index.d.ts +4 -5
  197. package/dist/simulation/index.d.ts.map +1 -1
  198. package/dist/simulation/index.js +3 -4
  199. package/dist/simulation/index.js.map +1 -1
  200. package/dist/simulation/types.d.ts +16 -2
  201. package/dist/simulation/types.d.ts.map +1 -1
  202. package/dist/stats.d.ts.map +1 -1
  203. package/dist/stats.js +4 -5
  204. package/dist/stats.js.map +1 -1
  205. package/package.json +5 -4
  206. package/notices/owned-webrtc/Effect-MIT.txt +0 -21
  207. package/notices/owned-webrtc/IETF.txt +0 -43
  208. package/notices/owned-webrtc/LICENSE +0 -21
  209. package/notices/owned-webrtc/UPSTREAM.md +0 -20
  210. package/notices/owned-webrtc/VP8-ADAPTATION.md +0 -32
  211. package/notices/owned-webrtc/VP8-AUTHORS.txt +0 -42
  212. package/notices/owned-webrtc/VP8-LICENSE.txt +0 -25
  213. package/notices/owned-webrtc/VP8-PATENTS.txt +0 -21
  214. package/notices/owned-webrtc/Werift-MIT.txt +0 -21
  215. package/notices/owned-webrtc/libvpx-v1.12.0-LICENSE.txt +0 -28
  216. package/notices/owned-webrtc/libvpx-v1.12.0-PATENTS.txt +0 -22
  217. package/notices/owned-webrtc/rfc3711.txt +0 -3139
  218. package/notices/owned-webrtc/str0m-MIT.txt +0 -7
@@ -0,0 +1,123 @@
1
+ import * as Effect from "effect/Effect";
2
+ import { terminal } from "../../contract.js";
3
+ import { duration } from "../../duration.js";
4
+ import { ReactorError, parsed, positiveLimit } from "../../errors.js";
5
+ import { retryAfterMs } from "./response.js";
6
+ const pure = (body) => parsed(body);
7
+ export const parsePlaylist = (text, baseUrl, maxSegments = 1024) => {
8
+ positiveLimit(maxSegments, "clip segments", 16_384);
9
+ if (text.trimStart().split(/\r?\n/, 1)[0]?.trim() !== "#EXTM3U")
10
+ throw ReactorError.fromCode("Protocol", "not an HLS playlist");
11
+ let init;
12
+ const media = [];
13
+ for (const line of text
14
+ .split(/\r?\n/)
15
+ .map((s) => s.trim())
16
+ .filter(Boolean)) {
17
+ if (/^#EXT-X-(STREAM-INF|I-FRAME-STREAM-INF|BYTERANGE|DISCONTINUITY|PART|PRELOAD-HINT|SKIP|GAP|SESSION-KEY|DEFINE)(:|$)/.test(line))
18
+ throw ReactorError.fromCode("UnsupportedCapability", "master, byte-range, discontinuous, encrypted, gap, variable, or low-latency playlists require an HLS player, not byte concatenation");
19
+ if (line.startsWith("#EXT-X-KEY:") && !/(?:^|,)METHOD=NONE(?:,|$)/.test(line.slice(11)))
20
+ throw ReactorError.fromCode("UnsupportedCapability", "encrypted clips are not assembled by this client");
21
+ if (line.startsWith("#EXT-X-MAP:")) {
22
+ if (line.includes("BYTERANGE="))
23
+ throw ReactorError.fromCode("UnsupportedCapability", "byte-range init segments unsupported");
24
+ const match = /(?:^|,)URI="([^"]+)"/.exec(line.slice(11)), uri = match?.[1];
25
+ if (uri === undefined || (init !== undefined && init !== uri))
26
+ throw ReactorError.fromCode("Protocol", "missing or changing HLS init URI");
27
+ init = uri;
28
+ }
29
+ else if (!line.startsWith("#")) {
30
+ if (media.length >= maxSegments)
31
+ throw ReactorError.fromCode("Overflow", "clip segment count bound exceeded");
32
+ media.push(line);
33
+ }
34
+ }
35
+ if (media.length === 0)
36
+ throw ReactorError.fromCode("Protocol", "empty clip playlist");
37
+ // The URL constructor rejects a malformed playlist URI with a TypeError.
38
+ const parseUrl = (uri) => {
39
+ try {
40
+ return new URL(uri, baseUrl);
41
+ }
42
+ catch (cause) {
43
+ throw ReactorError.fromCode("Protocol", "invalid clip URL", { detail: cause });
44
+ }
45
+ };
46
+ const resolve = (uri) => {
47
+ const url = parseUrl(uri);
48
+ if (!(url.protocol === "http:" || url.protocol === "https:") || url.username || url.password)
49
+ throw ReactorError.fromCode("Protocol", "clip URL must use http(s) with no embedded credentials");
50
+ return url.href;
51
+ };
52
+ if (init === undefined &&
53
+ media.some((uri) => /\.(?:m4s|mp4|m4a|m4v)$/i.test(parseUrl(uri).pathname)))
54
+ throw ReactorError.fromCode("Protocol", "fragmented MP4 playlist lacks EXT-X-MAP init segment");
55
+ const segments = init === undefined ? [] : [{ kind: "init", url: resolve(init) }];
56
+ for (const uri of media)
57
+ segments.push({ kind: "media", url: resolve(uri) });
58
+ return Object.freeze(segments.map((s) => Object.freeze(s)));
59
+ };
60
+ /** Bounded transport of a prepared recording. Does not decode, play, or assert further generation.
61
+ * This API intentionally uses a caller wall deadline, not an unbounded wait based on a prediction. */
62
+ export const downloadClip = (http, clip, options = {}) => Effect.suspend(() => {
63
+ const action = Effect.gen(function* () {
64
+ const bounds = yield* pure(() => ({
65
+ timeout: duration(options.downloadTimeout ?? "60 seconds", "clip download timeout", {
66
+ maximum: "10 minutes",
67
+ }),
68
+ manifest: positiveLimit(options.maxManifestBytes ?? 262_144, "manifest bytes", 2_097_152),
69
+ segment: positiveLimit(options.maxSegmentBytes ?? 16_777_216, "segment bytes", 64 * 1024 * 1024),
70
+ total: positiveLimit(options.maxTotalBytes ?? 64 * 1024 * 1024, "clip bytes", 64 * 1024 * 1024),
71
+ count: positiveLimit(options.maxSegments ?? 1024, "clip segments", 16_384),
72
+ }));
73
+ const fetchAndAssemble = Effect.gen(function* () {
74
+ let segments;
75
+ while (true) {
76
+ const response = yield* http.request({
77
+ operation: "clip playlist",
78
+ url: clip.playlist_url,
79
+ auth: "same-origin",
80
+ maxBytes: bounds.manifest,
81
+ });
82
+ if (response.status !== 202) {
83
+ segments = yield* pure(() => parsePlaylist(new TextDecoder("utf-8", { fatal: true }).decode(response.bytes), clip.playlist_url, bounds.count));
84
+ break;
85
+ }
86
+ // A local peer disconnection does not prove stopped inference. Query the remote descriptor.
87
+ const descriptor = yield* http.read(clip.session_id);
88
+ if (terminal(descriptor.state))
89
+ return yield* ReactorError.fromCode("TerminalSession", "session terminated before playlist became available");
90
+ yield* Effect.sleep(Math.max(200, Math.min(retryAfterMs(response.headers) ?? 2000, 2000)));
91
+ }
92
+ let size = 0;
93
+ const chunks = [];
94
+ for (const segment of segments) {
95
+ const response = yield* http.request({
96
+ operation: "clip segment",
97
+ url: segment.url,
98
+ auth: "same-origin",
99
+ maxBytes: Math.min(bounds.segment, bounds.total - size || 1),
100
+ });
101
+ if (response.status === 202)
102
+ return yield* ReactorError.fromCode("Protocol", "playlist referenced a segment that is not ready");
103
+ size += response.bytes.length;
104
+ if (size > bounds.total)
105
+ return yield* ReactorError.fromCode("Overflow", "assembled clip byte bound exceeded");
106
+ chunks.push(response.bytes);
107
+ }
108
+ const bytes = new Uint8Array(size);
109
+ let at = 0;
110
+ for (const chunk of chunks) {
111
+ bytes.set(chunk, at);
112
+ at += chunk.length;
113
+ }
114
+ return { bytes, segments };
115
+ });
116
+ return yield* fetchAndAssemble.pipe(Effect.timeoutOrElse({
117
+ duration: bounds.timeout,
118
+ orElse: () => Effect.fail(ReactorError.fromCode("Timeout", "clip download deadline; remote generation outcome unchanged")),
119
+ }));
120
+ });
121
+ return action;
122
+ });
123
+ //# sourceMappingURL=recording.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recording.js","sourceRoot":"","sources":["../../../src/coordinator/_internal/recording.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../../src/coordinator/_internal/response.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,eAAe,MAAM,sCAAsC,CAAC;AACxE,OAAO,KAAK,KAAK,kBAAkB,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CACzC;AAED,uFAAuF;AACvF,eAAO,MAAM,QAAQ,aACT,kBAAkB,CAAC,kBAAkB,aACpC,MAAM,YACP,MAAM,aACL,MAAM,kGAsCf,CAAC;AAEL,iFAAiF;AACjF,eAAO,MAAM,eAAe,UAAW,SAAS,cAAc,MAAM,KAAG,OAoBtE,CAAC;AAEF,eAAO,MAAM,YAAY,YAAa,OAAO,KAAG,MAAM,GAAG,SAOxD,CAAC"}
1
+ {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../../src/coordinator/_internal/response.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,eAAe,MAAM,sCAAsC,CAAC;AACxE,OAAO,KAAK,KAAK,kBAAkB,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CACzC;AAED,uFAAuF;AACvF,eAAO,MAAM,QAAQ,aACT,kBAAkB,CAAC,kBAAkB,aACpC,MAAM,YACP,MAAM,aACL,MAAM,kGAoCf,CAAC;AAEL,iFAAiF;AACjF,eAAO,MAAM,eAAe,UAAW,SAAS,cAAc,MAAM,KAAG,OAoBtE,CAAC;AAEF,eAAO,MAAM,YAAY,YAAa,OAAO,KAAG,MAAM,GAAG,SAOxD,CAAC"}
@@ -11,15 +11,13 @@ export const readBody = (response, operation, maxBytes, maxChunks) => Effect.gen
11
11
  size += chunk.byteLength;
12
12
  count++;
13
13
  if (size > maxBytes || count > maxChunks)
14
- return yield* Effect.fail(new ReactorError("Overflow", `${operation} response exceeds its ${maxBytes} byte/${maxChunks} chunk bound`, { operation, status: response.status, outcome: "replied" }));
14
+ return yield* ReactorError.fromCode("Overflow", `${operation} response exceeds its ${maxBytes} byte/${maxChunks} chunk bound`, { operation, outcome: "replied", detail: { status: response.status } });
15
15
  // A supplied HTTP implementation may reuse its transport buffer.
16
16
  if (chunk.byteLength !== 0)
17
17
  chunks.push(new Uint8Array(chunk));
18
- })), Effect.catch((error) => count === 0 &&
18
+ })), Effect.catchIf((error) => count === 0 &&
19
19
  HttpClientError.isHttpClientError(error) &&
20
- error.reason._tag === "EmptyBodyError"
21
- ? Effect.void
22
- : Effect.fail(error)));
20
+ error.reason._tag === "EmptyBodyError", () => Effect.void));
23
21
  const bytes = new Uint8Array(size);
24
22
  let offset = 0;
25
23
  for (const chunk of chunks) {
@@ -35,10 +33,10 @@ export const decodeJsonReply = (reply, operation) => {
35
33
  return result;
36
34
  }
37
35
  catch (cause) {
38
- throw new ReactorError("Protocol", operation === undefined
36
+ // The SyntaxError quotes the body, so it stays in the inspection-only detail.
37
+ throw ReactorError.fromCode("Protocol", operation === undefined
39
38
  ? "invalid UTF-8/JSON HTTP response"
40
39
  : `Reactor ${operation} request or response failed`, {
41
- status: reply.status,
42
40
  ...(operation === undefined ? {} : { operation }),
43
41
  outcome: "replied",
44
42
  detail: cause,
@@ -1 +1 @@
1
- {"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/coordinator/_internal/response.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/coordinator/_internal/response.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,45 @@
1
- import { Effect, Redacted, Schema } from "effect";
1
+ import { Duration, Effect, Redacted, Schema } from "effect";
2
2
  import { ReactorError } from "../../errors.js";
3
- /** Preserve the integer ratio; callers decide whether the returned price fits their budget. */
3
+ /**
4
+ * The rate of `model`, given by its connect slug (or its bare name), in
5
+ * credits per second: exactly as stated for a per-second rate, and a
6
+ * per-minute rate divided by 60. Callers decide whether the price fits their
7
+ * budget, and how the time they are billed rounds: Reactor's documentation
8
+ * bills by the session-minute.
9
+ */
4
10
  export declare const modelRate: (value: unknown, model: string) => Effect.Effect<{
5
11
  creditsPerDollar: number;
6
12
  creditsPerSecond: number;
7
13
  }, ReactorError, never>;
8
14
  export interface TokenOptions {
15
+ readonly apiKey: Redacted.Redacted<string>;
16
+ readonly modelName: string;
17
+ /**
18
+ * The longest session the token may start, a whole number of seconds up to
19
+ * one day. A bare number is milliseconds.
20
+ */
21
+ readonly maxSessionDuration: Duration.Input;
22
+ /**
23
+ * How long the token stays valid, a whole number of seconds more than 30
24
+ * seconds past `maxSessionDuration`, so cleanup still holds a valid token. A
25
+ * bare number is milliseconds.
26
+ */
27
+ readonly expiresAfter: Duration.Input;
28
+ /**
29
+ * @deprecated Removed in 0.3.0: use `maxSessionDuration` (a bare number is
30
+ * milliseconds, so `maxSessionDurationSeconds: 60` becomes
31
+ * `maxSessionDuration: "60 seconds"`).
32
+ */
33
+ readonly maxSessionDurationSeconds?: never;
34
+ /**
35
+ * @deprecated Removed in 0.3.0: use `expiresAfter` (a bare number is
36
+ * milliseconds, so `expiresAfterSeconds: 300` becomes
37
+ * `expiresAfter: "300 seconds"`).
38
+ */
39
+ readonly expiresAfterSeconds?: never;
40
+ }
41
+ /** Token options after validation, in the wire's whole seconds. */
42
+ export interface TokenRequest {
9
43
  readonly apiKey: Redacted.Redacted<string>;
10
44
  readonly modelName: string;
11
45
  readonly maxSessionDurationSeconds: number;
@@ -19,18 +53,18 @@ export interface TokenGrant {
19
53
  readonly maxSessionSeconds: number;
20
54
  };
21
55
  }
22
- export declare const validateTokenOptions: (input: TokenOptions) => Effect.Effect<TokenOptions, ReactorError>;
56
+ export declare const validateTokenOptions: (input: TokenOptions) => Effect.Effect<TokenRequest, ReactorError>;
23
57
  export declare const decodeToken: (raw: unknown) => Effect.Effect<{
24
58
  readonly jwt: string;
25
59
  readonly expires_at: number;
26
60
  }, ReactorError, never>;
27
61
  /** Validate the issuer's returned authority; token expiry alone never caps a remote session. */
28
- export declare const grantedLimits: (jwt: string, options: TokenOptions) => Effect.Effect<{
62
+ export declare const grantedLimits: (jwt: string, options: TokenRequest) => Effect.Effect<{
29
63
  maxSessions: 1;
30
64
  maxSessionSeconds: number;
31
65
  }, ReactorError, never>;
32
66
  export declare const Inspection: Schema.Struct<{
33
- readonly observedAt: Schema.Number;
67
+ readonly observedAt: Schema.Finite;
34
68
  readonly state: Schema.String;
35
69
  readonly hasCapabilities: Schema.Boolean;
36
70
  readonly selectedTransport: Schema.NullOr<Schema.Struct<{
@@ -40,7 +74,7 @@ export declare const Inspection: Schema.Struct<{
40
74
  readonly cluster: Schema.NullOr<Schema.String>;
41
75
  readonly zone: Schema.NullOr<Schema.String>;
42
76
  readonly serverVersion: Schema.NullOr<Schema.String>;
43
- readonly additional: Schema.$Record<Schema.String, Schema.Union<readonly [Schema.String, Schema.Number, Schema.Boolean, Schema.Null]>>;
77
+ readonly additional: Schema.$Record<Schema.String, Schema.Union<readonly [Schema.String, Schema.Finite, Schema.Boolean, Schema.Null]>>;
44
78
  }>;
45
79
  export type Inspection = typeof Inspection.Type;
46
80
  export declare const decodeInspection: (raw: unknown, sessionId: string) => Effect.Effect<Inspection, ReactorError>;
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/coordinator/_internal/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,EAAiB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AA8B9D,+FAA+F;AAC/F,eAAO,MAAM,SAAS,UAAW,OAAO,SAAS,MAAM;;;uBAwBnD,CAAC;AAEL,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AACD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;KAAE,CAAC;CACnF;AACD,eAAO,MAAM,oBAAoB,UACxB,YAAY,KAClB,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,CA2BvC,CAAC;AAsBL,eAAO,MAAM,WAAW,QAAS,OAAO;;;uBAKrC,CAAC;AAEJ,gGAAgG;AAChG,eAAO,MAAM,aAAa,QAAS,MAAM,WAAW,YAAY;;;uBAoB7D,CAAC;AAMJ,eAAO,MAAM,UAAU;;;;;;;;;;;;EAYrB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAC;AAqChD,eAAO,MAAM,gBAAgB,QACtB,OAAO,aACD,MAAM,KAChB,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAqBrC,CAAC;AAQL,eAAO,MAAM,iBAAiB,QAAS,OAAO,aAAa,MAAM;;;uBAU9D,CAAC"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/coordinator/_internal/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE3E,OAAO,EAAsB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAoDnE;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,UAAW,OAAO,SAAS,MAAM;;;uBAiBpD,CAAC;AAEJ,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,kBAAkB,EAAE,QAAQ,CAAC,KAAK,CAAC;IAC5C;;;;OAIG;IACH,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,yBAAyB,CAAC,EAAE,KAAK,CAAC;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,KAAK,CAAC;CACtC;AACD,mEAAmE;AACnE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AACD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;KAAE,CAAC;CACnF;AAED,eAAO,MAAM,oBAAoB,UACxB,YAAY,KAClB,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,CAwC9B,CAAC;AAsBd,eAAO,MAAM,WAAW,QAAS,OAAO;;;uBAKrC,CAAC;AAEJ,gGAAgG;AAChG,eAAO,MAAM,aAAa,QAAS,MAAM,WAAW,YAAY;;;uBAqB7D,CAAC;AAMJ,eAAO,MAAM,UAAU;;;;;;;;;;;;EAYrB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAC;AAqChD,eAAO,MAAM,gBAAgB,QACtB,OAAO,aACD,MAAM,KAChB,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAmBrC,CAAC;AAQL,eAAO,MAAM,iBAAiB,QAAS,OAAO,aAAa,MAAM;;;uBAS9D,CAAC"}
@@ -1,70 +1,102 @@
1
- import { Clock, Effect, Redacted, Schema } from "effect";
2
- import { positiveLimit, ReactorError } from "../../errors.js";
3
- const failure = (operation, message, cause) => new ReactorError("Protocol", message, {
1
+ import { Clock, Duration, Effect, Redacted, Result, Schema } from "effect";
2
+ import { duration } from "../../duration.js";
3
+ import { parse, parsedInput, ReactorError } from "../../errors.js";
4
+ const failure = (operation, message, cause) => ReactorError.fromCode("Protocol", message, {
4
5
  operation,
5
6
  outcome: "replied",
6
7
  ...(cause === undefined ? {} : { detail: cause }),
7
8
  });
8
- const PositiveInteger = Schema.Number.check(Schema.isFinite(), Schema.isInt(), Schema.isGreaterThan(0));
9
+ const PositiveInteger = Schema.Int.check(Schema.isGreaterThan(0));
10
+ /**
11
+ * Only the settings are read strictly. The catalog is shared by every model,
12
+ * so an entry in a shape this client does not price never stops it pricing
13
+ * the model it was asked for; an absent catalog is empty, as Reactor's
14
+ * pricing documentation says. Credits are sold per US dollar, so a stated
15
+ * currency must be that one.
16
+ */
9
17
  const Pricing = Schema.Struct({
10
18
  settings: Schema.Struct({
11
- currency_code: Schema.Literal("USD"),
19
+ currency_code: Schema.optional(Schema.Literal("USD")),
12
20
  credits_per_dollar: PositiveInteger,
13
21
  }),
14
- models: Schema.Array(Schema.Struct({
15
- name: Schema.String,
16
- rate: Schema.Struct({
17
- amount_per_sec: Schema.Number,
18
- unit: Schema.String,
19
- denomination: Schema.String,
20
- }),
21
- })),
22
- });
23
- /** Preserve the integer ratio; callers decide whether the returned price fits their budget. */
24
- export const modelRate = (value, model) => Effect.try({
25
- try: () => {
26
- const decoded = Schema.decodeUnknownSync(Pricing)(value);
27
- const matches = decoded.models.filter((entry) => entry.name === model);
28
- const rate = matches[0]?.rate;
29
- if (matches.length !== 1 ||
30
- rate?.unit !== "credits" ||
31
- rate.denomination !== "second" ||
32
- !Number.isSafeInteger(rate.amount_per_sec) ||
33
- rate.amount_per_sec <= 0 ||
34
- !Number.isSafeInteger(decoded.settings.credits_per_dollar))
35
- throw failure("pricing", "Reactor pricing has an unknown model, currency or rate unit");
36
- return {
37
- creditsPerDollar: decoded.settings.credits_per_dollar,
38
- creditsPerSecond: rate.amount_per_sec,
39
- };
40
- },
41
- catch: (cause) => cause instanceof ReactorError
42
- ? cause
43
- : failure("pricing", "Reactor pricing has an unknown model, currency or rate unit", cause),
44
- });
45
- export const validateTokenOptions = (input) => Effect.try({
46
- try: () => {
47
- const options = {
48
- apiKey: input.apiKey,
49
- modelName: input.modelName,
50
- maxSessionDurationSeconds: input.maxSessionDurationSeconds,
51
- expiresAfterSeconds: input.expiresAfterSeconds,
52
- };
53
- if (!Redacted.isRedacted(options.apiKey) ||
54
- Redacted.value(options.apiKey).length === 0 ||
55
- typeof options.modelName !== "string" ||
56
- options.modelName.length === 0 ||
57
- options.expiresAfterSeconds <= options.maxSessionDurationSeconds + 30)
58
- throw new Error("Invalid bounded grant input");
59
- positiveLimit(options.maxSessionDurationSeconds, "session duration", 86_400);
60
- positiveLimit(options.expiresAfterSeconds, "token expiry", Number.MAX_SAFE_INTEGER);
61
- return Object.freeze(options);
62
- },
63
- catch: () => new ReactorError("InvalidInput", "A bounded session needs a model, redacted key, positive duration, and token expiry allowing cleanup", { operation: "token", outcome: "not-submitted" }),
22
+ models: Schema.optional(Schema.Array(Schema.Unknown)),
64
23
  });
24
+ const isEntry = Schema.is(Schema.Struct({ name: Schema.String, rate: Schema.Unknown }));
25
+ const unknownRate = (cause) => failure("pricing", "Reactor pricing has an unknown model, currency or rate unit", cause);
26
+ /**
27
+ * The rates this client prices: whole credits per second, as the live pricing
28
+ * document states them, or per minute, as its documentation does.
29
+ */
30
+ const CreditsRate = Schema.Union([
31
+ Schema.Struct({
32
+ amount_per_sec: PositiveInteger,
33
+ unit: Schema.Literal("credits"),
34
+ denomination: Schema.Literal("second"),
35
+ }),
36
+ Schema.Struct({
37
+ amount_per_min: PositiveInteger,
38
+ unit: Schema.Literal("credits"),
39
+ denomination: Schema.Literal("minute"),
40
+ }),
41
+ ]);
42
+ /**
43
+ * Pricing lists a model by its bare name, `h3-reference-to-video-turbo-realtime`,
44
+ * where sessions and tokens take its connect slug,
45
+ * `reactor/h3-reference-to-video-turbo-realtime`: the name after the owner.
46
+ */
47
+ const pricedAs = (model) => model.slice(model.lastIndexOf("/") + 1);
48
+ /**
49
+ * The rate of `model`, given by its connect slug (or its bare name), in
50
+ * credits per second: exactly as stated for a per-second rate, and a
51
+ * per-minute rate divided by 60. Callers decide whether the price fits their
52
+ * budget, and how the time they are billed rounds: Reactor's documentation
53
+ * bills by the session-minute.
54
+ */
55
+ export const modelRate = (value, model) => Schema.decodeUnknownEffect(Pricing)(value).pipe(Effect.flatMap((decoded) => {
56
+ const matches = (decoded.models ?? [])
57
+ .filter(isEntry)
58
+ .filter((entry) => entry.name === model || entry.name === pricedAs(model));
59
+ return Schema.decodeUnknownEffect(CreditsRate)(matches.length === 1 ? matches[0].rate : undefined).pipe(Effect.map((rate) => ({
60
+ creditsPerDollar: decoded.settings.credits_per_dollar,
61
+ creditsPerSecond: "amount_per_sec" in rate ? rate.amount_per_sec : rate.amount_per_min / 60,
62
+ })));
63
+ }), Effect.mapError(unknownRate));
64
+ const wholeSeconds = (value) => Math.round(Duration.toSeconds(value));
65
+ export const validateTokenOptions = (input) => parsedInput(() => {
66
+ const reject = () => {
67
+ throw ReactorError.fromCode("InvalidInput", "A bounded session needs a model, redacted key, positive duration, and token expiry allowing cleanup", { operation: "token", outcome: "not-submitted" });
68
+ };
69
+ if (input === null || typeof input !== "object")
70
+ return reject();
71
+ const bounded = parse(() => ({
72
+ maxSessionDurationSeconds: wholeSeconds(duration(input.maxSessionDuration, "session duration", {
73
+ maximum: "1 day",
74
+ wholeSeconds: true,
75
+ })),
76
+ // Whole milliseconds stay exact up to this bound, so the seconds do too.
77
+ expiresAfterSeconds: wholeSeconds(duration(input.expiresAfter, "token expiry", {
78
+ maximum: Duration.millis(Number.MAX_SAFE_INTEGER),
79
+ wholeSeconds: true,
80
+ })),
81
+ }));
82
+ if (Result.isFailure(bounded))
83
+ return reject();
84
+ const options = {
85
+ apiKey: input.apiKey,
86
+ modelName: input.modelName,
87
+ ...bounded.success,
88
+ };
89
+ if (!Redacted.isRedacted(options.apiKey) ||
90
+ Redacted.value(options.apiKey).length === 0 ||
91
+ typeof options.modelName !== "string" ||
92
+ options.modelName.length === 0 ||
93
+ options.expiresAfterSeconds <= options.maxSessionDurationSeconds + 30)
94
+ return reject();
95
+ return Object.freeze(options);
96
+ }, "token");
65
97
  const Token = Schema.Struct({
66
98
  jwt: Schema.NonEmptyString,
67
- expires_at: Schema.Number.check(Schema.isFinite()),
99
+ expires_at: Schema.Finite,
68
100
  });
69
101
  const TokenClaims = Schema.StringFromBase64Url.pipe(Schema.decodeTo(Schema.fromJsonString(Schema.Struct({ authorization_details: Schema.Unknown }))));
70
102
  const SessionAuthorization = Schema.Tuple([
@@ -90,22 +122,22 @@ export const grantedLimits = (jwt, options) => Effect.gen(function* () {
90
122
  const seconds = authorization.constraints.max_session_duration_seconds;
91
123
  if (authorization.resources.models.match[0] !== options.modelName ||
92
124
  seconds > options.maxSessionDurationSeconds)
93
- return yield* Effect.fail(failure("token", "Reactor returned a token outside the requested session grant"));
125
+ return yield* failure("token", "Reactor returned a token outside the requested session grant");
94
126
  return { maxSessions: authorization.constraints.max_sessions, maxSessionSeconds: seconds };
95
- }).pipe(Effect.mapError(() => failure("token", "Reactor returned an invalid or unbounded session grant")));
127
+ }).pipe(Effect.mapError((cause) => failure("token", "Reactor returned an invalid or unbounded session grant", cause)));
96
128
  const Transport = Schema.Struct({
97
129
  protocol: Schema.NonEmptyString,
98
130
  version: Schema.NonEmptyString,
99
131
  });
100
132
  export const Inspection = Schema.Struct({
101
- observedAt: Schema.Number,
133
+ observedAt: Schema.Finite,
102
134
  state: Schema.String,
103
135
  hasCapabilities: Schema.Boolean,
104
136
  selectedTransport: Schema.NullOr(Transport),
105
137
  cluster: Schema.NullOr(Schema.String),
106
138
  zone: Schema.NullOr(Schema.String),
107
139
  serverVersion: Schema.NullOr(Schema.String),
108
- additional: Schema.Record(Schema.String, Schema.Union([Schema.String, Schema.Number, Schema.Boolean, Schema.Null])),
140
+ additional: Schema.Record(Schema.String, Schema.Union([Schema.String, Schema.Finite, Schema.Boolean, Schema.Null])),
109
141
  });
110
142
  const OptionalText = Schema.optionalKey(Schema.NullOr(Schema.String));
111
143
  const modeledFields = new Set([
@@ -146,7 +178,7 @@ const SessionDescription = Schema.Struct({
146
178
  export const decodeInspection = (raw, sessionId) => Effect.gen(function* () {
147
179
  const value = yield* Schema.decodeUnknownEffect(SessionDescription)(raw).pipe(Effect.mapError((cause) => failure("inspect", "Reactor returned an invalid session description", cause)));
148
180
  if (value.session_id !== sessionId)
149
- return yield* Effect.fail(failure("inspect", "Reactor returned a different session identity"));
181
+ return yield* failure("inspect", "Reactor returned a different session identity");
150
182
  return {
151
183
  observedAt: yield* Clock.currentTimeMillis,
152
184
  state: value.state,
@@ -164,7 +196,5 @@ const TerminalState = Schema.Struct({
164
196
  session_id: Schema.optionalKey(Schema.NonEmptyString),
165
197
  state: Schema.NonEmptyString,
166
198
  });
167
- export const decodeTermination = (raw, sessionId) => Schema.decodeUnknownEffect(TerminalState)(raw).pipe(Effect.mapError((cause) => failure("terminate", "Reactor returned an invalid termination description", cause)), Effect.flatMap((value) => value.session_id !== undefined && value.session_id !== sessionId
168
- ? Effect.fail(failure("terminate", "Reactor returned a different session identity"))
169
- : Effect.succeed(value)));
199
+ export const decodeTermination = (raw, sessionId) => Schema.decodeUnknownEffect(TerminalState)(raw).pipe(Effect.mapError((cause) => failure("terminate", "Reactor returned an invalid termination description", cause)), Effect.filterOrFail((value) => value.session_id === undefined || value.session_id === sessionId, () => failure("terminate", "Reactor returned a different session identity")));
170
200
  //# sourceMappingURL=schemas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/coordinator/_internal/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE9D,MAAM,OAAO,GAAG,CAAC,SAAiB,EAAE,OAAe,EAAE,KAAe,EAAE,EAAE,CACtE,IAAI,YAAY,CAAC,UAAU,EAAE,OAAO,EAAE;IACpC,SAAS;IACT,OAAO,EAAE,SAAS;IAClB,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;CAClD,CAAC,CAAC;AACL,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CACzC,MAAM,CAAC,QAAQ,EAAE,EACjB,MAAM,CAAC,KAAK,EAAE,EACd,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CACxB,CAAC;AACF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;QACpC,kBAAkB,EAAE,eAAe;KACpC,CAAC;IACF,MAAM,EAAE,MAAM,CAAC,KAAK,CAClB,MAAM,CAAC,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC,MAAM;QACnB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;YAClB,cAAc,EAAE,MAAM,CAAC,MAAM;YAC7B,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,YAAY,EAAE,MAAM,CAAC,MAAM;SAC5B,CAAC;KACH,CAAC,CACH;CACF,CAAC,CAAC;AAEH,+FAA+F;AAC/F,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAc,EAAE,KAAa,EAAE,EAAE,CACzD,MAAM,CAAC,GAAG,CAAC;IACT,GAAG,EAAE,GAAG,EAAE;QACR,MAAM,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;QAC9B,IACE,OAAO,CAAC,MAAM,KAAK,CAAC;YACpB,IAAI,EAAE,IAAI,KAAK,SAAS;YACxB,IAAI,CAAC,YAAY,KAAK,QAAQ;YAC9B,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC;YAC1C,IAAI,CAAC,cAAc,IAAI,CAAC;YACxB,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAE1D,MAAM,OAAO,CAAC,SAAS,EAAE,6DAA6D,CAAC,CAAC;QAC1F,OAAO;YACL,gBAAgB,EAAE,OAAO,CAAC,QAAQ,CAAC,kBAAkB;YACrD,gBAAgB,EAAE,IAAI,CAAC,cAAc;SACtC,CAAC;IACJ,CAAC;IACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,KAAK,YAAY,YAAY;QAC3B,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,6DAA6D,EAAE,KAAK,CAAC;CAC/F,CAAC,CAAC;AAaL,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,KAAmB,EACwB,EAAE,CAC7C,MAAM,CAAC,GAAG,CAAC;IACT,GAAG,EAAE,GAAG,EAAE;QACR,MAAM,OAAO,GAAiB;YAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,yBAAyB,EAAE,KAAK,CAAC,yBAAyB;YAC1D,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;SAC/C,CAAC;QACF,IACE,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;YACpC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;YAC3C,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ;YACrC,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YAC9B,OAAO,CAAC,mBAAmB,IAAI,OAAO,CAAC,yBAAyB,GAAG,EAAE;YAErE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,aAAa,CAAC,OAAO,CAAC,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;QAC7E,aAAa,CAAC,OAAO,CAAC,mBAAmB,EAAE,cAAc,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACpF,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IACD,KAAK,EAAE,GAAG,EAAE,CACV,IAAI,YAAY,CACd,cAAc,EACd,qGAAqG,EACrG,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,CACjD;CACJ,CAAC,CAAC;AAEL,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC,cAAc;IAC1B,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;CACnD,CAAC,CAAC;AACH,MAAM,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAC,IAAI,CACjD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,qBAAqB,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CACjG,CAAC;AACF,MAAM,oBAAoB,GAAG,MAAM,CAAC,KAAK,CAAC;IACxC,MAAM,CAAC,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;QAC/B,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;SACxE,CAAC;QACF,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;YACzB,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YAC/B,4BAA4B,EAAE,eAAe;SAC9C,CAAC;KACH,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAY,EAAE,EAAE,CAC1C,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CACzC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,OAAO,CAAC,OAAO,EAAE,4CAA4C,EAAE,KAAK,CAAC,CACtE,CACF,CAAC;AAEJ,gGAAgG;AAChG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,OAAqB,EAAE,EAAE,CAClE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,OAAO,GAAG,oDAAoD,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC;IACvE,MAAM,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,oBAAoB,EAAE;QAC9E,gBAAgB,EAAE,OAAO;KAC1B,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,CAAC,4BAA4B,CAAC;IACvE,IACE,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,SAAS;QAC7D,OAAO,GAAG,OAAO,CAAC,yBAAyB;QAE3C,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,OAAO,CAAC,OAAO,EAAE,8DAA8D,CAAC,CACjF,CAAC;IACJ,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,WAAW,CAAC,YAAY,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC;AAC7F,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CACnB,OAAO,CAAC,OAAO,EAAE,wDAAwD,CAAC,CAC3E,CACF,CAAC;AAEJ,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC,cAAc;IAC/B,OAAO,EAAE,MAAM,CAAC,cAAc;CAC/B,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC,MAAM;IACzB,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,eAAe,EAAE,MAAM,CAAC,OAAO;IAC/B,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;IAC3C,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IAClC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3C,UAAU,EAAE,MAAM,CAAC,MAAM,CACvB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAC1E;CACF,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AACtE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,YAAY;IACZ,OAAO;IACP,cAAc;IACd,oBAAoB;IACpB,SAAS;IACT,MAAM;IACN,aAAa;CACd,CAAC,CAAC;AACH,MAAM,cAAc,GAAG,oDAAoD,CAAC;AAE5E,MAAM,eAAe,GAAG,CAAC,GAAY,EAAoD,EAAE;IACzF,MAAM,KAAK,GAAiD,EAAE,CAAC;IAC/D,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAC7E,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC5D,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,SAAS;QACjE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;YAC3E,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;aACtB,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC,CAAC;AAEF,4EAA4E;AAC5E,+EAA+E;AAC/E,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC,cAAc;IACjC,KAAK,EAAE,MAAM,CAAC,cAAc;IAC5B,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAClE,kBAAkB,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAChE,OAAO,EAAE,YAAY;IACrB,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;CACjG,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,GAAY,EACZ,SAAiB,EACwB,EAAE,CAC3C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAC3E,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,OAAO,CAAC,SAAS,EAAE,iDAAiD,EAAE,KAAK,CAAC,CAC7E,CACF,CAAC;IACF,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;QAChC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,OAAO,CAAC,SAAS,EAAE,+CAA+C,CAAC,CACpE,CAAC;IACJ,OAAO;QACL,UAAU,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,iBAAiB;QAC1C,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,eAAe,EAAE,KAAK,CAAC,YAAY,IAAI,IAAI;QAC3C,iBAAiB,EAAE,KAAK,CAAC,kBAAkB,IAAI,IAAI;QACnD,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;QAC9B,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;QACxB,aAAa,EAAE,KAAK,CAAC,WAAW,EAAE,cAAc,IAAI,IAAI;QACxD,UAAU,EAAE,eAAe,CAAC,GAAG,CAAC;KACjC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEL,6EAA6E;AAC7E,6EAA6E;AAC7E,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC;IACrD,KAAK,EAAE,MAAM,CAAC,cAAc;CAC7B,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAY,EAAE,SAAiB,EAAE,EAAE,CACnE,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CACjD,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,OAAO,CAAC,WAAW,EAAE,qDAAqD,EAAE,KAAK,CAAC,CACnF,EACD,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACvB,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;IAC9D,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,+CAA+C,CAAC,CAAC;IACpF,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAC1B,CACF,CAAC"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/coordinator/_internal/schemas.ts"],"names":[],"mappings":"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"}
@@ -5,9 +5,14 @@ import { ReactorError } from "../errors.js";
5
5
  import type { Json } from "../json.js";
6
6
  import type { HttpOptions, Termination } from "./_internal/client.js";
7
7
  import type { Inspection, TokenGrant, TokenOptions } from "./_internal/schemas.js";
8
+ import type { DownloadedClip, DownloadOptions } from "./_internal/recording.js";
9
+ import type { ClipReady } from "../wire.generated.js";
8
10
  export { Inspection, modelRate } from "./_internal/schemas.js";
9
11
  export type { TokenGrant, TokenOptions } from "./_internal/schemas.js";
10
- export type { Termination, Poll } from "./_internal/client.js";
12
+ export { Termination } from "./_internal/client.js";
13
+ export type { Poll } from "./_internal/client.js";
14
+ export { parsePlaylist } from "./_internal/recording.js";
15
+ export type { DownloadedClip, DownloadOptions, Segment } from "./_internal/recording.js";
11
16
  export type { Capabilities, Descriptor, Track, Mapping, IceCandidate, IceServer, } from "../contract.js";
12
17
  export interface Configuration extends Omit<HttpOptions, "apiUrl" | "credential"> {
13
18
  readonly apiUrl?: string;
@@ -17,11 +22,18 @@ export interface Configuration extends Omit<HttpOptions, "apiUrl" | "credential"
17
22
  /** Coordinator operations share configuration and the supplied Effect HTTP client. */
18
23
  export interface Client {
19
24
  readonly apiUrl: string;
20
- readonly pricing: () => Effect.Effect<Json, ReactorError>;
25
+ readonly pricing: Effect.Effect<Json, ReactorError>;
21
26
  readonly mintToken: (options: TokenOptions) => Effect.Effect<TokenGrant, ReactorError>;
22
27
  readonly inspect: (sessionId: string) => Effect.Effect<Inspection, ReactorError>;
23
28
  /** Uncertainty is retained in the report; supervisors choose their own failure policy. */
24
29
  readonly terminate: (sessionId: string) => Effect.Effect<Termination>;
30
+ /**
31
+ * Bounded transport of a prepared recording (`clip_ready`): polls its HLS
32
+ * playlist, then fetches and concatenates its segments within a caller wall
33
+ * deadline. It does not decode or play the clip, and a deadline does not
34
+ * change the remote generation outcome.
35
+ */
36
+ readonly downloadClip: (clip: ClipReady, options?: DownloadOptions) => Effect.Effect<DownloadedClip, ReactorError>;
25
37
  }
26
38
  /** No network request or remote allocation occurs while constructing a coordinator client. */
27
39
  export declare const make: (configuration?: Configuration) => Effect.Effect<Client, ReactorError, Http.HttpClient>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/coordinator/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,IAAI,MAAM,iCAAiC,CAAC;AACxD,OAAO,EAAW,YAAY,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEnF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC/D,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACvE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC/D,YAAY,EACV,YAAY,EACZ,UAAU,EACV,KAAK,EACL,OAAO,EACP,YAAY,EACZ,SAAS,GACV,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,YAAY,CAAC;IAC/E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,2FAA2F;IAC3F,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC;CAC9E;AAED,sFAAsF;AACtF,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC1D,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACvF,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACjF,0FAA0F;IAC1F,QAAQ,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;CACvE;AAED,8FAA8F;AAC9F,eAAO,MAAM,IAAI,mBACA,aAAa,KAC3B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,UAAU,CAgCnD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/coordinator/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,IAAI,MAAM,iCAAiC,CAAC;AACxD,OAAO,EAAU,YAAY,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC/D,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,YAAY,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACzF,YAAY,EACV,YAAY,EACZ,UAAU,EACV,KAAK,EACL,OAAO,EACP,YAAY,EACZ,SAAS,GACV,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,YAAY,CAAC;IAC/E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,2FAA2F;IAC3F,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC;CAC9E;AAED,sFAAsF;AACtF,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACpD,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACvF,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACjF,0FAA0F;IAC1F,QAAQ,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACtE;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,EAAE,CACrB,IAAI,EAAE,SAAS,EACf,OAAO,CAAC,EAAE,eAAe,KACtB,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;CAClD;AAED,8FAA8F;AAC9F,eAAO,MAAM,IAAI,mBACA,aAAa,KAC3B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,UAAU,CA4BnD,CAAC"}
@@ -1,25 +1,21 @@
1
1
  import * as Effect from "effect/Effect";
2
2
  import * as Redacted from "effect/Redacted";
3
3
  import * as Http from "effect/unstable/http/HttpClient";
4
- import { errorOf, ReactorError } from "../errors.js";
4
+ import { parsed, ReactorError } from "../errors.js";
5
5
  import { CoordinatorClient } from "./_internal/client.js";
6
6
  export { Inspection, modelRate } from "./_internal/schemas.js";
7
+ export { Termination } from "./_internal/client.js";
8
+ export { parsePlaylist } from "./_internal/recording.js";
7
9
  /** No network request or remote allocation occurs while constructing a coordinator client. */
8
- export const make = (configuration = {}) => Effect.flatMap(Http.HttpClient, (http) => Effect.try({
9
- try: () => new CoordinatorClient({
10
- ...configuration,
11
- apiUrl: configuration.apiUrl ?? "https://api.reactor.inc",
12
- credential: configuration.credential === undefined
13
- ? Effect.succeed(undefined)
14
- : configuration.credential.pipe(Effect.flatMap((credential) => Effect.try({
15
- try: () => {
16
- if (!Redacted.isRedacted(credential))
17
- throw new ReactorError("InvalidInput", "Coordinator credential must be Redacted", { outcome: "not-submitted" });
18
- return Redacted.value(credential);
19
- },
20
- catch: errorOf,
21
- }))),
22
- }, http),
23
- catch: errorOf,
24
- }));
10
+ export const make = (configuration = {}) => Effect.flatMap(Http.HttpClient, (http) => parsed(() => new CoordinatorClient({
11
+ ...configuration,
12
+ apiUrl: configuration.apiUrl ?? "https://api.reactor.inc",
13
+ credential: configuration.credential === undefined
14
+ ? Effect.undefined
15
+ : configuration.credential.pipe(Effect.flatMap((credential) => parsed(() => {
16
+ if (!Redacted.isRedacted(credential))
17
+ throw ReactorError.fromCode("InvalidInput", "Coordinator credential must be Redacted", { outcome: "not-submitted" });
18
+ return Redacted.value(credential);
19
+ }))),
20
+ }, http)));
25
21
  //# sourceMappingURL=index.js.map