reactor-effect-client 0.7.0 → 0.8.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 (514) hide show
  1. package/NOTICE +7 -2
  2. package/README.md +103 -141
  3. package/dist/Coordinator.d.ts +382 -0
  4. package/dist/Coordinator.d.ts.map +1 -0
  5. package/dist/Coordinator.js +732 -0
  6. package/dist/Coordinator.js.map +1 -0
  7. package/dist/H3.d.ts +159 -0
  8. package/dist/H3.d.ts.map +1 -0
  9. package/dist/H3.js +21 -0
  10. package/dist/H3.js.map +1 -0
  11. package/dist/H3Source.d.ts +93 -0
  12. package/dist/H3Source.d.ts.map +1 -0
  13. package/dist/H3Source.js +401 -0
  14. package/dist/H3Source.js.map +1 -0
  15. package/dist/LocalSource.d.ts +68 -0
  16. package/dist/LocalSource.d.ts.map +1 -0
  17. package/dist/LocalSource.js +354 -0
  18. package/dist/LocalSource.js.map +1 -0
  19. package/dist/Media.d.ts +106 -0
  20. package/dist/Media.d.ts.map +1 -0
  21. package/dist/Media.js +16 -0
  22. package/dist/Media.js.map +1 -0
  23. package/dist/Peer.d.ts +134 -0
  24. package/dist/Peer.d.ts.map +1 -0
  25. package/dist/Peer.js +57 -0
  26. package/dist/Peer.js.map +1 -0
  27. package/dist/Playout.d.ts +724 -0
  28. package/dist/Playout.d.ts.map +1 -0
  29. package/dist/Playout.js +28 -0
  30. package/dist/Playout.js.map +1 -0
  31. package/dist/Reactor.d.ts +135 -0
  32. package/dist/Reactor.d.ts.map +1 -0
  33. package/dist/Reactor.js +158 -0
  34. package/dist/Reactor.js.map +1 -0
  35. package/dist/ReactorError.d.ts +331 -0
  36. package/dist/ReactorError.d.ts.map +1 -0
  37. package/dist/ReactorError.js +316 -0
  38. package/dist/ReactorError.js.map +1 -0
  39. package/dist/ReactorTest.d.ts +383 -0
  40. package/dist/ReactorTest.d.ts.map +1 -0
  41. package/dist/ReactorTest.js +317 -0
  42. package/dist/ReactorTest.js.map +1 -0
  43. package/dist/Session.d.ts +314 -0
  44. package/dist/Session.d.ts.map +1 -0
  45. package/dist/Session.js +51 -0
  46. package/dist/Session.js.map +1 -0
  47. package/dist/index.d.ts +12 -22
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +12 -11
  50. package/dist/index.js.map +1 -1
  51. package/dist/internal/correlator.d.ts +46 -0
  52. package/dist/internal/correlator.d.ts.map +1 -0
  53. package/dist/internal/correlator.js +150 -0
  54. package/dist/internal/correlator.js.map +1 -0
  55. package/dist/internal/deadline.d.ts +24 -0
  56. package/dist/internal/deadline.d.ts.map +1 -0
  57. package/dist/internal/deadline.js +44 -0
  58. package/dist/internal/deadline.js.map +1 -0
  59. package/dist/{h3/_internal/contracts.d.ts → internal/h3/commands.d.ts} +39 -33
  60. package/dist/internal/h3/commands.d.ts.map +1 -0
  61. package/dist/internal/h3/commands.js +128 -0
  62. package/dist/internal/h3/commands.js.map +1 -0
  63. package/dist/{h3 → internal/h3}/messages.d.ts +16 -11
  64. package/dist/internal/h3/messages.d.ts.map +1 -0
  65. package/dist/{h3 → internal/h3}/messages.js +19 -31
  66. package/dist/internal/h3/messages.js.map +1 -0
  67. package/dist/internal/h3/operations.d.ts +145 -0
  68. package/dist/internal/h3/operations.d.ts.map +1 -0
  69. package/dist/internal/h3/operations.js +284 -0
  70. package/dist/internal/h3/operations.js.map +1 -0
  71. package/dist/{h3 → internal/h3}/profile.d.ts +63 -65
  72. package/dist/internal/h3/profile.d.ts.map +1 -0
  73. package/dist/{h3 → internal/h3}/profile.js +39 -39
  74. package/dist/internal/h3/profile.js.map +1 -0
  75. package/dist/internal/h3/provider.d.ts +14 -0
  76. package/dist/internal/h3/provider.d.ts.map +1 -0
  77. package/dist/internal/h3/provider.js +672 -0
  78. package/dist/internal/h3/provider.js.map +1 -0
  79. package/dist/internal/h3/references.d.ts +68 -0
  80. package/dist/internal/h3/references.d.ts.map +1 -0
  81. package/dist/internal/h3/references.js +339 -0
  82. package/dist/internal/h3/references.js.map +1 -0
  83. package/dist/internal/h3/request.d.ts +56 -0
  84. package/dist/internal/h3/request.d.ts.map +1 -0
  85. package/dist/internal/h3/request.js +70 -0
  86. package/dist/internal/h3/request.js.map +1 -0
  87. package/dist/internal/h3/state.d.ts +120 -0
  88. package/dist/internal/h3/state.d.ts.map +1 -0
  89. package/dist/internal/h3/state.js +270 -0
  90. package/dist/internal/h3/state.js.map +1 -0
  91. package/dist/{Submission.d.ts → internal/h3/submission.d.ts} +1 -3
  92. package/dist/internal/h3/submission.d.ts.map +1 -0
  93. package/dist/{Submission.js → internal/h3/submission.js} +1 -9
  94. package/dist/internal/h3/submission.js.map +1 -0
  95. package/dist/internal/hub.d.ts +32 -0
  96. package/dist/internal/hub.d.ts.map +1 -0
  97. package/dist/internal/hub.js +92 -0
  98. package/dist/internal/hub.js.map +1 -0
  99. package/dist/internal/playout/errors.d.ts +51 -0
  100. package/dist/internal/playout/errors.d.ts.map +1 -0
  101. package/dist/internal/playout/errors.js +40 -0
  102. package/dist/internal/playout/errors.js.map +1 -0
  103. package/dist/internal/playout/policy.d.ts +559 -0
  104. package/dist/internal/playout/policy.d.ts.map +1 -0
  105. package/dist/internal/playout/policy.js +2338 -0
  106. package/dist/internal/playout/policy.js.map +1 -0
  107. package/dist/internal/playout/runtime.d.ts +28 -0
  108. package/dist/internal/playout/runtime.d.ts.map +1 -0
  109. package/dist/internal/playout/runtime.js +766 -0
  110. package/dist/internal/playout/runtime.js.map +1 -0
  111. package/dist/internal/playout/tag.d.ts +14 -0
  112. package/dist/internal/playout/tag.d.ts.map +1 -0
  113. package/dist/internal/playout/tag.js +43 -0
  114. package/dist/internal/playout/tag.js.map +1 -0
  115. package/dist/internal/proto/reactor_wire/v1/common_pb.d.ts +55 -0
  116. package/dist/internal/proto/reactor_wire/v1/common_pb.d.ts.map +1 -0
  117. package/dist/internal/proto/reactor_wire/v1/common_pb.js +42 -0
  118. package/dist/internal/proto/reactor_wire/v1/common_pb.js.map +1 -0
  119. package/dist/internal/proto/reactor_wire/v1/control_pb.d.ts +160 -0
  120. package/dist/internal/proto/reactor_wire/v1/control_pb.d.ts.map +1 -0
  121. package/dist/internal/proto/reactor_wire/v1/control_pb.js +21 -0
  122. package/dist/internal/proto/reactor_wire/v1/control_pb.js.map +1 -0
  123. package/dist/internal/proto/reactor_wire/v1/data_pb.d.ts +89 -0
  124. package/dist/internal/proto/reactor_wire/v1/data_pb.d.ts.map +1 -0
  125. package/dist/internal/proto/reactor_wire/v1/data_pb.js +20 -0
  126. package/dist/internal/proto/reactor_wire/v1/data_pb.js.map +1 -0
  127. package/dist/internal/proto/reactor_wire/v1/model_pb.d.ts +85 -0
  128. package/dist/internal/proto/reactor_wire/v1/model_pb.d.ts.map +1 -0
  129. package/dist/internal/proto/reactor_wire/v1/model_pb.js +24 -0
  130. package/dist/internal/proto/reactor_wire/v1/model_pb.js.map +1 -0
  131. package/dist/internal/proto/reactor_wire/v1/platform_pb.d.ts +190 -0
  132. package/dist/internal/proto/reactor_wire/v1/platform_pb.d.ts.map +1 -0
  133. package/dist/internal/proto/reactor_wire/v1/platform_pb.js +54 -0
  134. package/dist/internal/proto/reactor_wire/v1/platform_pb.js.map +1 -0
  135. package/dist/internal/proto/reactor_wire/v1/track_pb.d.ts +88 -0
  136. package/dist/internal/proto/reactor_wire/v1/track_pb.d.ts.map +1 -0
  137. package/dist/internal/proto/reactor_wire/v1/track_pb.js +33 -0
  138. package/dist/internal/proto/reactor_wire/v1/track_pb.js.map +1 -0
  139. package/dist/internal/queue.d.ts +4 -0
  140. package/dist/internal/queue.d.ts.map +1 -0
  141. package/dist/{_internal → internal}/queue.js +0 -9
  142. package/dist/internal/queue.js.map +1 -0
  143. package/dist/internal/reactorTest/coordinator.d.ts +5 -0
  144. package/dist/internal/reactorTest/coordinator.d.ts.map +1 -0
  145. package/dist/internal/reactorTest/coordinator.js +178 -0
  146. package/dist/internal/reactorTest/coordinator.js.map +1 -0
  147. package/dist/internal/reactorTest/faults.d.ts +172 -0
  148. package/dist/internal/reactorTest/faults.d.ts.map +1 -0
  149. package/dist/internal/reactorTest/faults.js +23 -0
  150. package/dist/internal/reactorTest/faults.js.map +1 -0
  151. package/dist/internal/reactorTest/h3.d.ts +431 -0
  152. package/dist/internal/reactorTest/h3.d.ts.map +1 -0
  153. package/dist/internal/reactorTest/h3.js +625 -0
  154. package/dist/internal/reactorTest/h3.js.map +1 -0
  155. package/dist/internal/reactorTest/media.d.ts +22 -0
  156. package/dist/internal/reactorTest/media.d.ts.map +1 -0
  157. package/dist/internal/reactorTest/media.js +34 -0
  158. package/dist/internal/reactorTest/media.js.map +1 -0
  159. package/dist/internal/reactorTest/peer.d.ts +318 -0
  160. package/dist/internal/reactorTest/peer.d.ts.map +1 -0
  161. package/dist/internal/reactorTest/peer.js +206 -0
  162. package/dist/internal/reactorTest/peer.js.map +1 -0
  163. package/dist/internal/reactorTest/playout.d.ts +34 -0
  164. package/dist/internal/reactorTest/playout.d.ts.map +1 -0
  165. package/dist/internal/reactorTest/playout.js +340 -0
  166. package/dist/internal/reactorTest/playout.js.map +1 -0
  167. package/dist/internal/reactorTest/references.d.ts +25 -0
  168. package/dist/internal/reactorTest/references.d.ts.map +1 -0
  169. package/dist/{testing/Png.js → internal/reactorTest/references.js} +50 -12
  170. package/dist/internal/reactorTest/references.js.map +1 -0
  171. package/dist/internal/reactorTest/sessions.d.ts +364 -0
  172. package/dist/internal/reactorTest/sessions.d.ts.map +1 -0
  173. package/dist/internal/reactorTest/sessions.js +592 -0
  174. package/dist/internal/reactorTest/sessions.js.map +1 -0
  175. package/dist/internal/reactorTest/timing.d.ts +13 -0
  176. package/dist/internal/reactorTest/timing.d.ts.map +1 -0
  177. package/dist/internal/reactorTest/timing.js +20 -0
  178. package/dist/internal/reactorTest/timing.js.map +1 -0
  179. package/dist/internal/recording.d.ts +52 -0
  180. package/dist/internal/recording.d.ts.map +1 -0
  181. package/dist/internal/recording.js +141 -0
  182. package/dist/internal/recording.js.map +1 -0
  183. package/dist/internal/session/connect.d.ts +34 -0
  184. package/dist/internal/session/connect.d.ts.map +1 -0
  185. package/dist/internal/session/connect.js +502 -0
  186. package/dist/internal/session/connect.js.map +1 -0
  187. package/dist/internal/session/generation.d.ts +35 -0
  188. package/dist/internal/session/generation.d.ts.map +1 -0
  189. package/dist/internal/session/generation.js +185 -0
  190. package/dist/internal/session/generation.js.map +1 -0
  191. package/dist/internal/session/ice.d.ts +23 -0
  192. package/dist/internal/session/ice.d.ts.map +1 -0
  193. package/dist/internal/session/ice.js +57 -0
  194. package/dist/internal/session/ice.js.map +1 -0
  195. package/dist/internal/session/inbound.d.ts +50 -0
  196. package/dist/internal/session/inbound.d.ts.map +1 -0
  197. package/dist/internal/session/inbound.js +202 -0
  198. package/dist/internal/session/inbound.js.map +1 -0
  199. package/dist/internal/session/model.d.ts +163 -0
  200. package/dist/internal/session/model.d.ts.map +1 -0
  201. package/dist/internal/session/model.js +78 -0
  202. package/dist/internal/session/model.js.map +1 -0
  203. package/dist/internal/session/requests.d.ts +71 -0
  204. package/dist/internal/session/requests.d.ts.map +1 -0
  205. package/dist/internal/session/requests.js +240 -0
  206. package/dist/internal/session/requests.js.map +1 -0
  207. package/dist/internal/session/tracks.d.ts +21 -0
  208. package/dist/internal/session/tracks.d.ts.map +1 -0
  209. package/dist/internal/session/tracks.js +166 -0
  210. package/dist/internal/session/tracks.js.map +1 -0
  211. package/dist/internal/session/upload.d.ts +21 -0
  212. package/dist/internal/session/upload.d.ts.map +1 -0
  213. package/dist/internal/session/upload.js +68 -0
  214. package/dist/internal/session/upload.js.map +1 -0
  215. package/dist/internal/session.d.ts +66 -0
  216. package/dist/internal/session.d.ts.map +1 -0
  217. package/dist/internal/session.js +280 -0
  218. package/dist/internal/session.js.map +1 -0
  219. package/dist/{stats.d.ts → internal/stats.d.ts} +30 -16
  220. package/dist/internal/stats.d.ts.map +1 -0
  221. package/dist/internal/stats.js +201 -0
  222. package/dist/internal/stats.js.map +1 -0
  223. package/dist/internal/token.d.ts +22 -0
  224. package/dist/internal/token.d.ts.map +1 -0
  225. package/dist/internal/token.js +65 -0
  226. package/dist/internal/token.js.map +1 -0
  227. package/dist/internal/wire.d.ts +37 -0
  228. package/dist/internal/wire.d.ts.map +1 -0
  229. package/dist/internal/wire.js +49 -0
  230. package/dist/internal/wire.js.map +1 -0
  231. package/notices/bufbuild-protobuf-LICENSE +201 -0
  232. package/package.json +17 -38
  233. package/dist/FetchHttp.d.ts +0 -9
  234. package/dist/FetchHttp.d.ts.map +0 -1
  235. package/dist/FetchHttp.js +0 -63
  236. package/dist/FetchHttp.js.map +0 -1
  237. package/dist/PeerFactory.d.ts +0 -26
  238. package/dist/PeerFactory.d.ts.map +0 -1
  239. package/dist/PeerFactory.js +0 -4
  240. package/dist/PeerFactory.js.map +0 -1
  241. package/dist/PeerTypes.d.ts +0 -64
  242. package/dist/PeerTypes.d.ts.map +0 -1
  243. package/dist/PeerTypes.js +0 -2
  244. package/dist/PeerTypes.js.map +0 -1
  245. package/dist/Sequence.d.ts +0 -85
  246. package/dist/Sequence.d.ts.map +0 -1
  247. package/dist/Sequence.js +0 -210
  248. package/dist/Sequence.js.map +0 -1
  249. package/dist/SessionTypes.d.ts +0 -312
  250. package/dist/SessionTypes.d.ts.map +0 -1
  251. package/dist/SessionTypes.js +0 -19
  252. package/dist/SessionTypes.js.map +0 -1
  253. package/dist/Submission.d.ts.map +0 -1
  254. package/dist/Submission.js.map +0 -1
  255. package/dist/_internal/queue.d.ts +0 -6
  256. package/dist/_internal/queue.d.ts.map +0 -1
  257. package/dist/_internal/queue.js.map +0 -1
  258. package/dist/bytes.d.ts +0 -6
  259. package/dist/bytes.d.ts.map +0 -1
  260. package/dist/bytes.js +0 -32
  261. package/dist/bytes.js.map +0 -1
  262. package/dist/contract.d.ts +0 -149
  263. package/dist/contract.d.ts.map +0 -1
  264. package/dist/contract.js +0 -119
  265. package/dist/contract.js.map +0 -1
  266. package/dist/coordinator/_internal/client.d.ts +0 -215
  267. package/dist/coordinator/_internal/client.d.ts.map +0 -1
  268. package/dist/coordinator/_internal/client.js +0 -563
  269. package/dist/coordinator/_internal/client.js.map +0 -1
  270. package/dist/coordinator/_internal/recording.d.ts +0 -31
  271. package/dist/coordinator/_internal/recording.d.ts.map +0 -1
  272. package/dist/coordinator/_internal/recording.js +0 -123
  273. package/dist/coordinator/_internal/recording.js.map +0 -1
  274. package/dist/coordinator/_internal/response.d.ts +0 -15
  275. package/dist/coordinator/_internal/response.d.ts.map +0 -1
  276. package/dist/coordinator/_internal/response.js +0 -55
  277. package/dist/coordinator/_internal/response.js.map +0 -1
  278. package/dist/coordinator/_internal/schemas.d.ts +0 -73
  279. package/dist/coordinator/_internal/schemas.d.ts.map +0 -1
  280. package/dist/coordinator/_internal/schemas.js +0 -200
  281. package/dist/coordinator/_internal/schemas.js.map +0 -1
  282. package/dist/coordinator/index.d.ts +0 -40
  283. package/dist/coordinator/index.d.ts.map +0 -1
  284. package/dist/coordinator/index.js +0 -21
  285. package/dist/coordinator/index.js.map +0 -1
  286. package/dist/correlation.d.ts +0 -47
  287. package/dist/correlation.d.ts.map +0 -1
  288. package/dist/correlation.js +0 -131
  289. package/dist/correlation.js.map +0 -1
  290. package/dist/duration.d.ts +0 -27
  291. package/dist/duration.d.ts.map +0 -1
  292. package/dist/duration.js +0 -47
  293. package/dist/duration.js.map +0 -1
  294. package/dist/errors.d.ts +0 -1303
  295. package/dist/errors.d.ts.map +0 -1
  296. package/dist/errors.js +0 -745
  297. package/dist/errors.js.map +0 -1
  298. package/dist/h3/_internal/client.d.ts +0 -9
  299. package/dist/h3/_internal/client.d.ts.map +0 -1
  300. package/dist/h3/_internal/client.js +0 -652
  301. package/dist/h3/_internal/client.js.map +0 -1
  302. package/dist/h3/_internal/contracts.d.ts.map +0 -1
  303. package/dist/h3/_internal/contracts.js +0 -123
  304. package/dist/h3/_internal/contracts.js.map +0 -1
  305. package/dist/h3/_internal/deployment.d.ts +0 -8
  306. package/dist/h3/_internal/deployment.d.ts.map +0 -1
  307. package/dist/h3/_internal/deployment.js +0 -149
  308. package/dist/h3/_internal/deployment.js.map +0 -1
  309. package/dist/h3/_internal/evidence.d.ts +0 -17
  310. package/dist/h3/_internal/evidence.d.ts.map +0 -1
  311. package/dist/h3/_internal/evidence.js +0 -48
  312. package/dist/h3/_internal/evidence.js.map +0 -1
  313. package/dist/h3/_internal/operations.d.ts +0 -58
  314. package/dist/h3/_internal/operations.d.ts.map +0 -1
  315. package/dist/h3/_internal/operations.js +0 -268
  316. package/dist/h3/_internal/operations.js.map +0 -1
  317. package/dist/h3/_internal/references.d.ts +0 -24
  318. package/dist/h3/_internal/references.d.ts.map +0 -1
  319. package/dist/h3/_internal/references.js +0 -309
  320. package/dist/h3/_internal/references.js.map +0 -1
  321. package/dist/h3/_internal/request.d.ts +0 -21
  322. package/dist/h3/_internal/request.d.ts.map +0 -1
  323. package/dist/h3/_internal/request.js +0 -97
  324. package/dist/h3/_internal/request.js.map +0 -1
  325. package/dist/h3/_internal/retained.d.ts +0 -22
  326. package/dist/h3/_internal/retained.d.ts.map +0 -1
  327. package/dist/h3/_internal/retained.js +0 -89
  328. package/dist/h3/_internal/retained.js.map +0 -1
  329. package/dist/h3/_internal/state.d.ts +0 -44
  330. package/dist/h3/_internal/state.d.ts.map +0 -1
  331. package/dist/h3/_internal/state.js +0 -283
  332. package/dist/h3/_internal/state.js.map +0 -1
  333. package/dist/h3/index.d.ts +0 -10
  334. package/dist/h3/index.d.ts.map +0 -1
  335. package/dist/h3/index.js +0 -7
  336. package/dist/h3/index.js.map +0 -1
  337. package/dist/h3/messages.d.ts.map +0 -1
  338. package/dist/h3/messages.js.map +0 -1
  339. package/dist/h3/profile.d.ts.map +0 -1
  340. package/dist/h3/profile.js.map +0 -1
  341. package/dist/h3/types.d.ts +0 -291
  342. package/dist/h3/types.d.ts.map +0 -1
  343. package/dist/h3/types.js +0 -2
  344. package/dist/h3/types.js.map +0 -1
  345. package/dist/host.d.ts +0 -26
  346. package/dist/host.d.ts.map +0 -1
  347. package/dist/host.js +0 -20
  348. package/dist/host.js.map +0 -1
  349. package/dist/json.d.ts +0 -25
  350. package/dist/json.d.ts.map +0 -1
  351. package/dist/json.js +0 -143
  352. package/dist/json.js.map +0 -1
  353. package/dist/media-stream.d.ts +0 -10
  354. package/dist/media-stream.d.ts.map +0 -1
  355. package/dist/media-stream.js +0 -18
  356. package/dist/media-stream.js.map +0 -1
  357. package/dist/observation.d.ts +0 -38
  358. package/dist/observation.d.ts.map +0 -1
  359. package/dist/observation.js +0 -113
  360. package/dist/observation.js.map +0 -1
  361. package/dist/orchestration/elapsed.d.ts +0 -9
  362. package/dist/orchestration/elapsed.d.ts.map +0 -1
  363. package/dist/orchestration/elapsed.js +0 -8
  364. package/dist/orchestration/elapsed.js.map +0 -1
  365. package/dist/orchestration/h3-source.d.ts +0 -58
  366. package/dist/orchestration/h3-source.d.ts.map +0 -1
  367. package/dist/orchestration/h3-source.js +0 -362
  368. package/dist/orchestration/h3-source.js.map +0 -1
  369. package/dist/orchestration/index.d.ts +0 -17
  370. package/dist/orchestration/index.d.ts.map +0 -1
  371. package/dist/orchestration/index.js +0 -12
  372. package/dist/orchestration/index.js.map +0 -1
  373. package/dist/orchestration/media-buffer.d.ts +0 -32
  374. package/dist/orchestration/media-buffer.d.ts.map +0 -1
  375. package/dist/orchestration/media-buffer.js +0 -94
  376. package/dist/orchestration/media-buffer.js.map +0 -1
  377. package/dist/orchestration/open-h3.d.ts +0 -101
  378. package/dist/orchestration/open-h3.d.ts.map +0 -1
  379. package/dist/orchestration/open-h3.js +0 -127
  380. package/dist/orchestration/open-h3.js.map +0 -1
  381. package/dist/orchestration/queries.d.ts +0 -10
  382. package/dist/orchestration/queries.d.ts.map +0 -1
  383. package/dist/orchestration/queries.js +0 -43
  384. package/dist/orchestration/queries.js.map +0 -1
  385. package/dist/orchestration/references.d.ts +0 -18
  386. package/dist/orchestration/references.d.ts.map +0 -1
  387. package/dist/orchestration/references.js +0 -79
  388. package/dist/orchestration/references.js.map +0 -1
  389. package/dist/orchestration/renewal-state.d.ts +0 -84
  390. package/dist/orchestration/renewal-state.d.ts.map +0 -1
  391. package/dist/orchestration/renewal-state.js +0 -95
  392. package/dist/orchestration/renewal-state.js.map +0 -1
  393. package/dist/orchestration/renewal.d.ts +0 -103
  394. package/dist/orchestration/renewal.d.ts.map +0 -1
  395. package/dist/orchestration/renewal.js +0 -1088
  396. package/dist/orchestration/renewal.js.map +0 -1
  397. package/dist/orchestration/request.d.ts +0 -65
  398. package/dist/orchestration/request.d.ts.map +0 -1
  399. package/dist/orchestration/request.js +0 -134
  400. package/dist/orchestration/request.js.map +0 -1
  401. package/dist/orchestration/retention.d.ts +0 -100
  402. package/dist/orchestration/retention.d.ts.map +0 -1
  403. package/dist/orchestration/retention.js +0 -134
  404. package/dist/orchestration/retention.js.map +0 -1
  405. package/dist/orchestration/routing.d.ts +0 -21
  406. package/dist/orchestration/routing.d.ts.map +0 -1
  407. package/dist/orchestration/routing.js +0 -93
  408. package/dist/orchestration/routing.js.map +0 -1
  409. package/dist/orchestration/scheduler-key.d.ts +0 -14
  410. package/dist/orchestration/scheduler-key.d.ts.map +0 -1
  411. package/dist/orchestration/scheduler-key.js +0 -62
  412. package/dist/orchestration/scheduler-key.js.map +0 -1
  413. package/dist/orchestration/scheduler-policy.d.ts +0 -222
  414. package/dist/orchestration/scheduler-policy.d.ts.map +0 -1
  415. package/dist/orchestration/scheduler-policy.js +0 -582
  416. package/dist/orchestration/scheduler-policy.js.map +0 -1
  417. package/dist/orchestration/scheduler.d.ts +0 -383
  418. package/dist/orchestration/scheduler.d.ts.map +0 -1
  419. package/dist/orchestration/scheduler.js +0 -2597
  420. package/dist/orchestration/scheduler.js.map +0 -1
  421. package/dist/orchestration/source-slot.d.ts +0 -124
  422. package/dist/orchestration/source-slot.d.ts.map +0 -1
  423. package/dist/orchestration/source-slot.js +0 -348
  424. package/dist/orchestration/source-slot.js.map +0 -1
  425. package/dist/orchestration/types.d.ts +0 -1462
  426. package/dist/orchestration/types.d.ts.map +0 -1
  427. package/dist/orchestration/types.js +0 -135
  428. package/dist/orchestration/types.js.map +0 -1
  429. package/dist/protobuf.d.ts +0 -63
  430. package/dist/protobuf.d.ts.map +0 -1
  431. package/dist/protobuf.js +0 -252
  432. package/dist/protobuf.js.map +0 -1
  433. package/dist/session/_internal/acquire.d.ts +0 -21
  434. package/dist/session/_internal/acquire.d.ts.map +0 -1
  435. package/dist/session/_internal/acquire.js +0 -168
  436. package/dist/session/_internal/acquire.js.map +0 -1
  437. package/dist/session/_internal/cleanup.d.ts +0 -19
  438. package/dist/session/_internal/cleanup.d.ts.map +0 -1
  439. package/dist/session/_internal/cleanup.js +0 -102
  440. package/dist/session/_internal/cleanup.js.map +0 -1
  441. package/dist/session/_internal/lifecycle.d.ts +0 -67
  442. package/dist/session/_internal/lifecycle.d.ts.map +0 -1
  443. package/dist/session/_internal/lifecycle.js +0 -142
  444. package/dist/session/_internal/lifecycle.js.map +0 -1
  445. package/dist/session/_internal/remote.d.ts +0 -28
  446. package/dist/session/_internal/remote.d.ts.map +0 -1
  447. package/dist/session/_internal/remote.js +0 -71
  448. package/dist/session/_internal/remote.js.map +0 -1
  449. package/dist/session/_internal/uploads.d.ts +0 -7
  450. package/dist/session/_internal/uploads.d.ts.map +0 -1
  451. package/dist/session/_internal/uploads.js +0 -31
  452. package/dist/session/_internal/uploads.js.map +0 -1
  453. package/dist/session/commands.d.ts +0 -2
  454. package/dist/session/commands.d.ts.map +0 -1
  455. package/dist/session/commands.js +0 -2
  456. package/dist/session/commands.js.map +0 -1
  457. package/dist/session/files.d.ts +0 -21
  458. package/dist/session/files.d.ts.map +0 -1
  459. package/dist/session/files.js +0 -49
  460. package/dist/session/files.js.map +0 -1
  461. package/dist/session/index.d.ts +0 -84
  462. package/dist/session/index.d.ts.map +0 -1
  463. package/dist/session/index.js +0 -16
  464. package/dist/session/index.js.map +0 -1
  465. package/dist/session/media.d.ts +0 -114
  466. package/dist/session/media.d.ts.map +0 -1
  467. package/dist/session/media.js +0 -2
  468. package/dist/session/media.js.map +0 -1
  469. package/dist/session/recorder.d.ts +0 -24
  470. package/dist/session/recorder.d.ts.map +0 -1
  471. package/dist/session/recorder.js +0 -19
  472. package/dist/session/recorder.js.map +0 -1
  473. package/dist/session.d.ts +0 -105
  474. package/dist/session.d.ts.map +0 -1
  475. package/dist/session.js +0 -976
  476. package/dist/session.js.map +0 -1
  477. package/dist/simulation/_internal/source.d.ts +0 -12
  478. package/dist/simulation/_internal/source.d.ts.map +0 -1
  479. package/dist/simulation/_internal/source.js +0 -513
  480. package/dist/simulation/_internal/source.js.map +0 -1
  481. package/dist/simulation/index.d.ts +0 -13
  482. package/dist/simulation/index.d.ts.map +0 -1
  483. package/dist/simulation/index.js +0 -12
  484. package/dist/simulation/index.js.map +0 -1
  485. package/dist/simulation/types.d.ts +0 -39
  486. package/dist/simulation/types.d.ts.map +0 -1
  487. package/dist/simulation/types.js +0 -2
  488. package/dist/simulation/types.js.map +0 -1
  489. package/dist/stats.d.ts.map +0 -1
  490. package/dist/stats.js +0 -205
  491. package/dist/stats.js.map +0 -1
  492. package/dist/testing/Faults.d.ts +0 -4
  493. package/dist/testing/Faults.d.ts.map +0 -1
  494. package/dist/testing/Faults.js +0 -7
  495. package/dist/testing/Faults.js.map +0 -1
  496. package/dist/testing/Png.d.ts +0 -3
  497. package/dist/testing/Png.d.ts.map +0 -1
  498. package/dist/testing/Png.js.map +0 -1
  499. package/dist/testing/Wav.d.ts +0 -14
  500. package/dist/testing/Wav.d.ts.map +0 -1
  501. package/dist/testing/Wav.js +0 -37
  502. package/dist/testing/Wav.js.map +0 -1
  503. package/dist/testing/index.d.ts +0 -5
  504. package/dist/testing/index.d.ts.map +0 -1
  505. package/dist/testing/index.js +0 -4
  506. package/dist/testing/index.js.map +0 -1
  507. package/dist/wire.d.ts +0 -7
  508. package/dist/wire.d.ts.map +0 -1
  509. package/dist/wire.generated.d.ts +0 -305
  510. package/dist/wire.generated.d.ts.map +0 -1
  511. package/dist/wire.generated.js +0 -1257
  512. package/dist/wire.generated.js.map +0 -1
  513. package/dist/wire.js +0 -5
  514. package/dist/wire.js.map +0 -1
@@ -1,18 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import * as Stream from "effect/Stream";
3
- const cancelBound = "1 second";
4
- /** Catch acquisition failures in the typed channel and own both cancel AND releaseLock.
5
- * In pinned Effect, fromReadableStream's default finalizer cancels without releasing;
6
- * releaseLockOnEnd instead releases without cancellation. Media needs both operations. */
7
- export const fromOwnedReadableStream = (options) => Stream.unwrap(Effect.gen(function* () {
8
- const reader = yield* Effect.acquireRelease(Effect.try({ try: () => options.evaluate().getReader(), catch: options.onError }),
9
- // A host whose cancel never settles must not hold the finalizer, which
10
- // can sit ahead of paid-session termination: wait at most a second,
11
- // then release the lock whatever the cancel did. A rejected cancel is
12
- // fine; the underlying media finalizer still runs on stream error.
13
- (reader) => Effect.tryPromise(() => reader.cancel()).pipe(Effect.timeout(cancelBound), Effect.ignore, Effect.ensuring(Effect.sync(() => {
14
- reader.releaseLock();
15
- }))));
16
- return Stream.unfold(undefined, () => Effect.tryPromise({ try: () => reader.read(), catch: options.onError }).pipe(Effect.map((next) => (next.done ? undefined : [next.value, undefined]))));
17
- }));
18
- //# sourceMappingURL=media-stream.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"media-stream.js","sourceRoot":"","sources":["../src/media-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,MAAM,WAAW,GAAG,UAAU,CAAC;AAC/B;;0FAE0F;AAC1F,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAI,OAG1C,EAAkC,EAAE,CACnC,MAAM,CAAC,MAAM,CACX,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CACzC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;IACjF,uEAAuE;IACvE,oEAAoE;IACpE,sEAAsE;IACtE,mEAAmE;IACnE,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAC3C,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAC3B,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,QAAQ,CACb,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;QACf,MAAM,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC,CAAC,CACH,CACF,CACJ,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,CACnC,MAAM,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAC1E,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAW,CAAC,CAAC,CACnF,CACF,CAAC;AACJ,CAAC,CAAC,CACH,CAAC"}
@@ -1,38 +0,0 @@
1
- import * as Cause from "effect/Cause";
2
- import * as Effect from "effect/Effect";
3
- import type * as Scope from "effect/Scope";
4
- import * as Stream from "effect/Stream";
5
- import { ReactorError } from "./errors.js";
6
- export interface ObservationOptions {
7
- readonly capacity?: number;
8
- readonly maxBytes?: number;
9
- }
10
- /** Slow observation never blocks protocol correlation or silently drops lifecycle events. */
11
- export declare class Observations<A> {
12
- private readonly maxSubscribers;
13
- private readonly subscribers;
14
- private closed;
15
- private failure;
16
- overflowCount: bigint;
17
- constructor(maxSubscribers?: number);
18
- get size(): number;
19
- /** Acquire before reading a snapshot, then ignore queued revisions covered by that snapshot. */
20
- subscribe(options?: ObservationOptions): Effect.Effect<Stream.Stream<A, ReactorError>, ReactorError, Scope.Scope>;
21
- /**
22
- * A state and every value emitted after it, with no gap: the subscription is
23
- * acquired before `state` is read, so a value emitted in between is queued
24
- * rather than lost (and may repeat what the state already reflects).
25
- */
26
- observeWith<S, E>(state: Effect.Effect<S, E>, options?: ObservationOptions): Effect.Effect<{
27
- readonly initial: S;
28
- readonly events: Stream.Stream<A, ReactorError>;
29
- }, ReactorError | E, Scope.Scope>;
30
- stream(options?: ObservationOptions): Stream.Stream<A, ReactorError>;
31
- emit(value: A, bytes?: number): void;
32
- end(): void;
33
- /** Source failure belongs to each reader, including a later subscription. */
34
- fail(error: ReactorError): void;
35
- /** Owned worker defects must reach observers without becoming recoverable errors. */
36
- failCause(cause: Cause.Cause<ReactorError>): void;
37
- }
38
- //# sourceMappingURL=observation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"observation.d.ts","sourceRoot":"","sources":["../src/observation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAyB,YAAY,EAAE,MAAM,aAAa,CAAC;AAYlE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,6FAA6F;AAC7F,qBAAa,YAAY,CAAC,CAAC;IAMb,OAAO,CAAC,QAAQ,CAAC,cAAc;IAL3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4B;IACxD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAwC;IACvD,aAAa,SAAM;IAEnB,YAA6B,cAAc,SAAK,EAE/C;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,gGAAgG;IAChG,SAAS,CACP,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,CAgE1E;IAED;;;;OAIG;IACH,WAAW,CAAC,CAAC,EAAE,CAAC,EACd,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,OAAO,CAAC,EAAE,kBAAkB,GAC3B,MAAM,CAAC,MAAM,CACd;QAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;KAAE,EACxE,YAAY,GAAG,CAAC,EAChB,KAAK,CAAC,KAAK,CACZ,CAIA;IAED,MAAM,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,CAEnE;IAED,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,SAAM,GAAG,IAAI,CAoBhC;IAED,GAAG,IAAI,IAAI,CAKV;IAED,6EAA6E;IAC7E,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAE9B;IAED,qFAAqF;IACrF,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI,CAMhD;CACF"}
@@ -1,113 +0,0 @@
1
- import * as Cause from "effect/Cause";
2
- import * as Effect from "effect/Effect";
3
- import * as Queue from "effect/Queue";
4
- import * as Stream from "effect/Stream";
5
- import { take as takeQueue } from "./_internal/queue.js";
6
- import { parsed, positiveLimit, ReactorError } from "./errors.js";
7
- /** Slow observation never blocks protocol correlation or silently drops lifecycle events. */
8
- export class Observations {
9
- maxSubscribers;
10
- subscribers = new Set();
11
- closed = false;
12
- failure;
13
- overflowCount = 0n;
14
- constructor(maxSubscribers = 64) {
15
- this.maxSubscribers = maxSubscribers;
16
- positiveLimit(maxSubscribers, "observer count", 4096);
17
- }
18
- get size() {
19
- return this.subscribers.size;
20
- }
21
- /** Acquire before reading a snapshot, then ignore queued revisions covered by that snapshot. */
22
- subscribe(options = {}) {
23
- const observations = this;
24
- return Effect.gen(function* () {
25
- const bounds = yield* parsed(() => ({
26
- capacity: positiveLimit(options.capacity ?? 64, "observation capacity", 4096),
27
- maxBytes: positiveLimit(options.maxBytes ?? 1_048_576, "observation bytes", 64 * 1024 * 1024),
28
- }));
29
- const subscriber = yield* Effect.acquireRelease(Effect.gen(function* () {
30
- if (observations.subscribers.size >= observations.maxSubscribers) {
31
- return yield* ReactorError.fromCode("Overflow", "observer count bound reached", {
32
- outcome: "not-submitted",
33
- });
34
- }
35
- const queue = yield* Queue.dropping(bounds.capacity);
36
- const subscriber = { queue, maxBytes: bounds.maxBytes, bufferedBytes: 0 };
37
- if (observations.failure !== undefined)
38
- Queue.failCauseUnsafe(queue, observations.failure);
39
- else if (observations.closed)
40
- Queue.endUnsafe(queue);
41
- else
42
- observations.subscribers.add(subscriber);
43
- return subscriber;
44
- }), (subscriber) => Effect.gen(function* () {
45
- observations.subscribers.delete(subscriber);
46
- subscriber.bufferedBytes = 0;
47
- yield* Queue.shutdown(subscriber.queue);
48
- }));
49
- let reading = false;
50
- return Stream.unwrap(Effect.gen(function* () {
51
- yield* Effect.acquireRelease(parsed(() => {
52
- if (reading)
53
- throw ReactorError.fromCode("AlreadyReading", "this observation already has an active reader");
54
- reading = true;
55
- }), () => Effect.sync(() => {
56
- reading = false;
57
- }));
58
- return Stream.fromEffectRepeat(Effect.uninterruptibleMask((restore) => restore(takeQueue(subscriber.queue)).pipe(Effect.map((entry) => {
59
- subscriber.bufferedBytes -= entry.bytes;
60
- return entry.value;
61
- }))));
62
- }));
63
- });
64
- }
65
- /**
66
- * A state and every value emitted after it, with no gap: the subscription is
67
- * acquired before `state` is read, so a value emitted in between is queued
68
- * rather than lost (and may repeat what the state already reflects).
69
- */
70
- observeWith(state, options) {
71
- return Effect.flatMap(this.subscribe(options), (events) => Effect.map(state, (initial) => ({ initial, events })));
72
- }
73
- stream(options) {
74
- return Stream.unwrap(this.subscribe(options));
75
- }
76
- emit(value, bytes = 256) {
77
- if (this.closed)
78
- return;
79
- for (const subscriber of this.subscribers) {
80
- if (bytes > subscriber.maxBytes - subscriber.bufferedBytes ||
81
- !Queue.offerUnsafe(subscriber.queue, { value, bytes })) {
82
- this.overflowCount++;
83
- Queue.failCauseUnsafe(subscriber.queue, Cause.fail(ReactorError.fromCode("Overflow", "observation bound exceeded; acquire a new observation and snapshot")));
84
- this.subscribers.delete(subscriber);
85
- }
86
- else
87
- subscriber.bufferedBytes += bytes;
88
- }
89
- }
90
- end() {
91
- if (this.closed)
92
- return;
93
- this.closed = true;
94
- for (const subscriber of this.subscribers)
95
- Queue.endUnsafe(subscriber.queue);
96
- this.subscribers.clear();
97
- }
98
- /** Source failure belongs to each reader, including a later subscription. */
99
- fail(error) {
100
- this.failCause(Cause.fail(error));
101
- }
102
- /** Owned worker defects must reach observers without becoming recoverable errors. */
103
- failCause(cause) {
104
- if (this.closed)
105
- return;
106
- this.failure = cause;
107
- this.closed = true;
108
- for (const subscriber of this.subscribers)
109
- Queue.failCauseUnsafe(subscriber.queue, cause);
110
- this.subscribers.clear();
111
- }
112
- }
113
- //# sourceMappingURL=observation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"observation.js","sourceRoot":"","sources":["../src/observation.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import type * as Clock from "effect/Clock";
2
- /**
3
- * The clock's monotonic time in whole milliseconds. Elapsed time, such as a
4
- * source's age or a build's length, is measured on it, so a correction of the
5
- * host's wall clock moves no deadline and bends no measurement. Its origin is
6
- * arbitrary: a reading is only ever compared with another reading.
7
- */
8
- export declare const monotonicMillis: (clock: Clock.Clock) => number;
9
- //# sourceMappingURL=elapsed.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"elapsed.d.ts","sourceRoot":"","sources":["../../src/orchestration/elapsed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAE3C;;;;;GAKG;AACH,eAAO,MAAM,eAAe,UAAW,KAAK,CAAC,KAAK,KAAG,MACE,CAAC"}
@@ -1,8 +0,0 @@
1
- /**
2
- * The clock's monotonic time in whole milliseconds. Elapsed time, such as a
3
- * source's age or a build's length, is measured on it, so a correction of the
4
- * host's wall clock moves no deadline and bends no measurement. Its origin is
5
- * arbitrary: a reading is only ever compared with another reading.
6
- */
7
- export const monotonicMillis = (clock) => Number(clock.monotonicTimeNanosUnsafe() / 1000000n);
8
- //# sourceMappingURL=elapsed.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"elapsed.js","sourceRoot":"","sources":["../../src/orchestration/elapsed.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAkB,EAAU,EAAE,CAC5D,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,QAAU,CAAC,CAAC"}
@@ -1,58 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import type * as FileSystem from "effect/FileSystem";
3
- import type * as Path from "effect/Path";
4
- import * as Scope from "effect/Scope";
5
- import type * as Crypto from "effect/Crypto";
6
- import type * as Http from "effect/unstable/http/HttpClient";
7
- import { CommandFailure, ReactorError } from "../errors.js";
8
- import type { Options as ProviderOptions, Provider } from "../h3/types.js";
9
- import type { Session } from "../session/index.js";
10
- import type { MediaGeneration } from "../session/media.js";
11
- import { PolicyFailure } from "./request.js";
12
- import type { Canvas } from "./request.js";
13
- import type { LoadLimits } from "./references.js";
14
- import type { ClipRecord, LocalClipRecord, Source } from "./types.js";
15
- export interface H3SourceOptions {
16
- readonly media: Effect.Effect<MediaGeneration, ReactorError>;
17
- /** Explicit broadcast policy; absent settings leave the provider unchanged. */
18
- readonly canvas?: Canvas;
19
- readonly holdLastFrame?: boolean;
20
- readonly resetOnClose?: boolean;
21
- readonly references?: Partial<LoadLimits>;
22
- readonly maxAnnotations?: number;
23
- }
24
- /** Broadcast policy and limits for a session-bound H3 source. */
25
- export interface SessionSourceOptions extends Omit<H3SourceOptions, "media"> {
26
- /** Acquisition and observation options for the session's H3 provider view. */
27
- readonly provider?: ProviderOptions | undefined;
28
- }
29
- /** A physical source whose H3 provider view is exposed for the operations the source does not project. */
30
- export interface H3Source extends Source {
31
- readonly provider: Provider;
32
- }
33
- /**
34
- * The session-bound constructor over a media accessor. The accessor is a
35
- * parameter only so tests can bind the media of a fake session; the public
36
- * constructor binds the session's own decoded-media generation.
37
- */
38
- export declare const bindSession: (media: (session: Session) => Effect.Effect<MediaGeneration, ReactorError>) => (session: Session, options?: SessionSourceOptions) => Effect.Effect<H3Source, ReactorError | PolicyFailure | CommandFailure, Scope.Scope | Crypto.Crypto | FileSystem.FileSystem | Path.Path | Http.HttpClient>;
39
- /**
40
- * A physical H3 source for one connected session, with its provider view and
41
- * its decoded media both derived from that session, so a source can never pair
42
- * one session's commands with another session's media. It needs a host with
43
- * decoded media (the native host); on a host without it, or before the session
44
- * is connected, it fails before any provider observation or policy command.
45
- * Closing the source closes the session.
46
- */
47
- export declare const fromH3Session: (session: Session, options?: SessionSourceOptions) => Effect.Effect<H3Source, ReactorError | PolicyFailure | CommandFailure, Scope.Scope | Crypto.Crypto | FileSystem.FileSystem | Path.Path | Http.HttpClient>;
48
- /**
49
- * Bind explicit broadcast policy and host reference loading to an H3 view.
50
- * Acquisition, provider facts, dispatch evidence, and media remain with their
51
- * existing owners; this source only annotates and projects them. Internal:
52
- * the public constructor is `fromH3Session`, which derives both views from
53
- * one session.
54
- */
55
- export declare const fromH3: (session: Session, provider: Provider, options: H3SourceOptions) => Effect.Effect<Source, ReactorError | PolicyFailure | CommandFailure, Scope.Scope | FileSystem.FileSystem | Path.Path | Http.HttpClient>;
56
- /** A consumer can narrow its optional annotation without assuming ownership. */
57
- export declare const isLocalClip: (value: ClipRecord) => value is LocalClipRecord;
58
- //# sourceMappingURL=h3-source.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"h3-source.d.ts","sourceRoot":"","sources":["../../src/orchestration/h3-source.ts"],"names":[],"mappings":"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"}
@@ -1,362 +0,0 @@
1
- import * as Clock from "effect/Clock";
2
- import * as Effect from "effect/Effect";
3
- import * as Exit from "effect/Exit";
4
- import * as Option from "effect/Option";
5
- import * as Result from "effect/Result";
6
- import * as Scope from "effect/Scope";
7
- import * as Semaphore from "effect/Semaphore";
8
- import * as Stream from "effect/Stream";
9
- import { CommandFailure, ReactorError } from "../errors.js";
10
- import { make as makeProvider } from "../h3/_internal/client.js";
11
- import { audioReferenceLimits, h3ReferenceTurboRealtime } from "../h3/profile.js";
12
- import { Observations } from "../observation.js";
13
- import { mediaGeneration } from "../session/_internal/acquire.js";
14
- import * as Submission from "../Submission.js";
15
- import { PolicyFailure, captureRequest, preworkFailure } from "./request.js";
16
- import { monotonicMillis } from "./elapsed.js";
17
- import { emptyState, isIdle } from "./queries.js";
18
- import { loadReferenceBytes } from "./references.js";
19
- import { metadataForH3 } from "./scheduler-key.js";
20
- const record = (clip, annotations, sessionId) => {
21
- const annotation = annotations.get(clip.clip_id);
22
- return Object.freeze({
23
- clipId: clip.clip_id,
24
- sessionId,
25
- durationSeconds: clip.seconds,
26
- provider: clip,
27
- ...(annotation === undefined
28
- ? {}
29
- : { request: annotation.request, seq: annotation.seq, enqueuedAt: annotation.enqueuedAt }),
30
- });
31
- };
32
- /** This projection owns no provider queue or playback state. */
33
- const project = (snapshot, annotations, times, sessionId) => {
34
- const facts = snapshot._tag === "Ready" ? snapshot : snapshot.lastFacts;
35
- const known = new Map(snapshot.clips.map((entry) => [entry.clip.clip_id, entry.clip]));
36
- const playingId = facts?.state.playing_clip_id ?? null;
37
- const playingClip = playingId === null ? undefined : known.get(playingId);
38
- const playingTime = playingId === null ? undefined : times.get(playingId)?.startedAt;
39
- const playingMono = playingId === null ? undefined : times.get(playingId)?.startedAtMonotonicMillis;
40
- const aspect = facts?.state.aspect;
41
- const canvas = aspect === "16:9" || aspect === "1:1" || aspect === "9:16" || aspect === "4:3"
42
- ? Option.some(aspect)
43
- : Option.none();
44
- const continuable = snapshot.clips
45
- .filter((entry) => entry.clip.ready && entry.lifecycle !== "clip_failed")
46
- .sort((left, right) => left.source.sequence < right.source.sequence
47
- ? -1
48
- : left.source.sequence > right.source.sequence
49
- ? 1
50
- : 0)
51
- .slice(-h3ReferenceTurboRealtime.continuationWindow)
52
- .map((entry) => entry.clip.clip_id);
53
- return Object.freeze({
54
- ...emptyState(),
55
- availability: snapshot._tag,
56
- sessions: [{ sessionId, availability: snapshot._tag }],
57
- preferredSessionId: Option.some(sessionId),
58
- queued: Object.freeze((facts?.queue.generation ?? []).map((clip) => record(clip, annotations, sessionId))),
59
- generationOrder: Object.freeze((facts?.queue.generation ?? []).map((clip) => clip.clip_id)),
60
- // H3 does not report a build start. Queue-head estimates remain estimates in
61
- // an application's horizon calculation, never observed Building records.
62
- building: Option.none(),
63
- ready: Object.freeze((facts?.queue.playout ?? []).map((clip) => record(clip, annotations, sessionId))),
64
- playing: playingId === null
65
- ? Option.none()
66
- : Option.some({
67
- clipId: playingId,
68
- record: playingClip === undefined
69
- ? Option.none()
70
- : Option.some(record(playingClip, annotations, sessionId)),
71
- startedAt: playingTime === undefined ? Option.none() : Option.some(playingTime),
72
- ...(playingMono === undefined ? {} : { startedAtMonotonicMillis: playingMono }),
73
- }),
74
- continuable: Object.freeze(continuable),
75
- failed: Object.freeze(snapshot.clips
76
- .filter((entry) => entry.lifecycle === "clip_failed")
77
- .map((entry) => entry.clip.clip_id)),
78
- started: (facts?.state.clips_played ?? 0) > 0 || facts?.state.playing === true,
79
- canvas,
80
- capacities: facts === null
81
- ? emptyState().capacities
82
- : {
83
- generation: facts.state.generation_capacity,
84
- playout: facts.state.playout_capacity,
85
- },
86
- });
87
- };
88
- /**
89
- * The session-bound constructor over a media accessor. The accessor is a
90
- * parameter only so tests can bind the media of a fake session; the public
91
- * constructor binds the session's own decoded-media generation.
92
- */
93
- export const bindSession = (media) => (session, options = {}) => Effect.gen(function* () {
94
- // The host capability and the ready connection are checked before any
95
- // provider observation or policy command.
96
- yield* media(session);
97
- const child = yield* Scope.fork(yield* Effect.scope);
98
- const { provider: providerOptions, ...policy } = options;
99
- return yield* Effect.gen(function* () {
100
- const provider = yield* makeProvider(session, providerOptions);
101
- const source = yield* fromH3(session, provider, { ...policy, media: media(session) });
102
- return Object.freeze({ ...source, provider });
103
- }).pipe(Scope.provide(child), Effect.onExit((exit) => (Exit.isFailure(exit) ? Scope.close(child, exit) : Effect.void)));
104
- });
105
- /**
106
- * A physical H3 source for one connected session, with its provider view and
107
- * its decoded media both derived from that session, so a source can never pair
108
- * one session's commands with another session's media. It needs a host with
109
- * decoded media (the native host); on a host without it, or before the session
110
- * is connected, it fails before any provider observation or policy command.
111
- * Closing the source closes the session.
112
- */
113
- export const fromH3Session = bindSession(mediaGeneration);
114
- /**
115
- * Bind explicit broadcast policy and host reference loading to an H3 view.
116
- * Acquisition, provider facts, dispatch evidence, and media remain with their
117
- * existing owners; this source only annotates and projects them. Internal:
118
- * the public constructor is `fromH3Session`, which derives both views from
119
- * one session.
120
- */
121
- export const fromH3 = (session, provider, options) => Effect.gen(function* () {
122
- if (session.id !== provider.sessionId)
123
- return yield* ReactorError.fromCode("InvalidInput", "H3 provider and session identities differ");
124
- const environment = yield* Effect.context();
125
- const clock = yield* Clock.Clock;
126
- const annotations = new Map();
127
- const times = new Map();
128
- const observations = new Observations();
129
- const limit = options.maxAnnotations ?? 2048;
130
- if (!Number.isSafeInteger(limit) || limit < 1 || limit > 16384)
131
- return yield* ReactorError.fromCode("InvalidInput", "Invalid annotation bound");
132
- let reservations = 0;
133
- let sequence = 0;
134
- let closed = false;
135
- let report;
136
- let starvationArmed = false;
137
- const closeGate = yield* Semaphore.make(1);
138
- const state = provider.current.pipe(Effect.map((snapshot) => project(snapshot, annotations, times, session.id)));
139
- const emit = (event) => observations.emit(event, 256);
140
- const receive = (event) => Effect.gen(function* () {
141
- if (closed)
142
- return;
143
- if (event._tag === "Diagnostic") {
144
- observations.fail(event.error);
145
- return;
146
- }
147
- if (event._tag !== "Message" ||
148
- event.disposition !== "applied" ||
149
- event.message.type === "unknown")
150
- return;
151
- const message = event.message;
152
- const at = clock.currentTimeMillisUnsafe();
153
- if ("clip" in message.data) {
154
- const clip = message.data.clip;
155
- const clipId = clip.clip_id;
156
- const previous = times.get(clipId) ?? {};
157
- if (!times.has(clipId) && times.size >= limit * 2) {
158
- observations.fail(ReactorError.fromCode("Overflow", "Orchestration timing observation bound exceeded"));
159
- return;
160
- }
161
- switch (message.type) {
162
- case "clip_queued":
163
- emit({ _tag: "Queued", clipId, durationSeconds: clip.seconds });
164
- break;
165
- case "clip_generated": {
166
- times.set(clipId, { ...previous, generatedAt: previous.generatedAt ?? at });
167
- const annotation = annotations.get(clipId);
168
- emit({
169
- _tag: "Ready",
170
- clipId,
171
- durationSeconds: clip.seconds,
172
- timing: annotation === undefined
173
- ? { _tag: "Unknown" }
174
- : {
175
- _tag: "Bounded",
176
- admissionToReadyMs: Math.max(0, monotonicMillis(clock) - annotation.admittedAt),
177
- },
178
- });
179
- break;
180
- }
181
- case "clip_started":
182
- const startedAtMonotonicMillis = previous.startedAtMonotonicMillis ?? monotonicMillis(clock);
183
- times.set(clipId, {
184
- ...previous,
185
- startedAt: previous.startedAt ?? at,
186
- startedAtMonotonicMillis,
187
- });
188
- starvationArmed = false;
189
- emit({
190
- _tag: "Started",
191
- clipId,
192
- durationSeconds: clip.seconds,
193
- at,
194
- atMonotonicMillis: startedAtMonotonicMillis,
195
- });
196
- break;
197
- case "clip_finished":
198
- case "clip_stopped":
199
- starvationArmed = message.type === "clip_finished";
200
- emit({
201
- _tag: "Ended",
202
- clipId,
203
- termination: message.type === "clip_finished" ? "finished" : "stopped",
204
- at,
205
- atMonotonicMillis: monotonicMillis(clock),
206
- });
207
- break;
208
- case "clip_failed":
209
- emit({ _tag: "Failed", clipId, reason: message.data.reason });
210
- break;
211
- default:
212
- break;
213
- }
214
- }
215
- if (starvationArmed &&
216
- (message.type === "state_update" || message.type === "queue_update")) {
217
- const snapshot = yield* provider.current;
218
- if (snapshot._tag === "Ready" &&
219
- snapshot.state.autoplay &&
220
- !snapshot.state.playing &&
221
- snapshot.queue.playout.length === 0) {
222
- starvationArmed = false;
223
- emit({ _tag: "Starved", at });
224
- }
225
- }
226
- });
227
- const observation = yield* provider.observe();
228
- yield* observation.events.pipe(Stream.runForEach(receive), Effect.catch((error) => Effect.sync(() => observations.fail(error))), Effect.forkScoped);
229
- const requireReady = (operation) => Effect.gen(function* () {
230
- if (closed)
231
- return yield* PolicyFailure.refuse("SessionClosed", "Source is closed", operation);
232
- let snapshot = yield* provider.current;
233
- if (snapshot._tag === "Synchronizing") {
234
- yield* provider.refresh;
235
- snapshot = yield* provider.current;
236
- }
237
- if (snapshot._tag !== "Ready")
238
- return yield* PolicyFailure.refuse("SessionRecovering", "Provider state is unavailable", operation);
239
- return snapshot;
240
- });
241
- const prepareRouted = (plan, hooks = {}) => Effect.gen(function* () {
242
- const request = yield* captureRequest(plan.request);
243
- let annotation;
244
- const input = Effect.gen(function* () {
245
- yield* requireReady("enqueue");
246
- const load = (uri, maxBytes) => loadReferenceBytes(uri, {
247
- maxBytes: options.references?.maxBytes ?? maxBytes,
248
- loadTimeout: options.references?.loadTimeout ?? "5 seconds",
249
- }).pipe(Effect.provideContext(environment), Effect.map((bytes) => ({ _tag: "Bytes", bytes })));
250
- const references = yield* Effect.forEach(request.references, ({ uri }) => load(uri, h3ReferenceTurboRealtime.references.maxBytes));
251
- const audio = yield* Effect.forEach(request.audio ?? [], ({ uri }) => load(uri, audioReferenceLimits.maxBytes));
252
- return {
253
- prompt: request.prompt,
254
- references,
255
- ...(audio.length === 0 ? {} : { audio }),
256
- seconds: request.durationSeconds,
257
- metadata: metadataForH3(request),
258
- ...(request.seed === undefined ? {} : { seed: request.seed }),
259
- ...(request.continueFrom === undefined ? {} : { continueFrom: request.continueFrom }),
260
- ...(plan.position === undefined ? {} : { position: plan.position }),
261
- };
262
- });
263
- const prepared = yield* provider
264
- .prepareFrom(input, {
265
- commit: (id) => Effect.gen(function* () {
266
- if (annotations.size + reservations >= limit)
267
- return yield* PolicyFailure.refuse("AnnotationCapacity", "Local submission annotations are full");
268
- if (sequence >= Number.MAX_SAFE_INTEGER)
269
- return yield* PolicyFailure.refuse("IdentityExhausted", "Local submission sequence is exhausted");
270
- reservations++;
271
- yield* (hooks.commit?.(id) ?? Effect.void).pipe(Effect.onExit((exit) => Exit.isFailure(exit)
272
- ? Effect.sync(() => {
273
- reservations--;
274
- })
275
- : Effect.void));
276
- annotation = Object.freeze({
277
- request,
278
- seq: ++sequence,
279
- enqueuedAt: clock.currentTimeMillisUnsafe(),
280
- admittedAt: monotonicMillis(clock),
281
- });
282
- }),
283
- result: (id, result) => Effect.gen(function* () {
284
- if (annotation === undefined)
285
- return yield* Effect.die(new Error("H3 result has no committed application annotation"));
286
- reservations--;
287
- if (Result.isSuccess(result))
288
- annotations.set(result.success.clip.clip_id, annotation);
289
- if (hooks.result !== undefined)
290
- yield* hooks.result(id, Result.isSuccess(result)
291
- ? Result.succeed(result.success.clip.clip_id)
292
- : Result.fail(result.failure));
293
- }),
294
- })
295
- .pipe(Effect.mapError((cause) => preworkFailure("enqueue", cause)));
296
- return Submission.map(prepared, (acceptance) => acceptance.clip.clip_id);
297
- });
298
- const close = closeGate.withPermit(Effect.uninterruptible(Effect.gen(function* () {
299
- if (report !== undefined)
300
- return report;
301
- const policy = [];
302
- if (session.ownership === "owned" && options.resetOnClose === true) {
303
- const result = yield* Effect.result(provider.reset.pipe(Effect.asVoid));
304
- policy.push(Object.freeze({ operation: "reset", result }));
305
- }
306
- closed = true;
307
- const lease = yield* session.close;
308
- observations.end();
309
- report = Object.freeze({ lease, policy: Object.freeze(policy) });
310
- return report;
311
- })));
312
- yield* Effect.addFinalizer(() => close);
313
- if (options.canvas !== undefined) {
314
- if (!isIdle(yield* state))
315
- return yield* PolicyFailure.refuse("Busy", "Canvas can only change while the provider is idle", "set_canvas");
316
- yield* provider.setCanvas(options.canvas);
317
- yield* provider.refresh;
318
- }
319
- if (options.holdLastFrame !== undefined) {
320
- yield* provider.setFlushOnClipEnd(!options.holdLastFrame);
321
- yield* provider.refresh;
322
- }
323
- const media = options.media.pipe(Effect.map((generation) => ({
324
- generation: generation.generation,
325
- video: generation.video(h3ReferenceTurboRealtime.tracks.video),
326
- audio: generation.audio(h3ReferenceTurboRealtime.tracks.audio),
327
- pressure: generation.snapshot,
328
- videoFramesPerSecond: h3ReferenceTurboRealtime.fps,
329
- })));
330
- return {
331
- id: session.id,
332
- state,
333
- events: observations.stream(),
334
- observe: (options) => observations.observeWith(state, options),
335
- prepareRouted,
336
- media,
337
- reconnect: session.reconnect.pipe(Effect.andThen(provider.refresh)),
338
- refresh: provider.refresh,
339
- setAutoplay: (enabled) => provider.setAutoplay(enabled).pipe(Effect.asVoid),
340
- stop: provider.stop.pipe(Effect.asVoid),
341
- remove: (id) => Effect.gen(function* () {
342
- const snapshot = yield* requireReady("pop");
343
- const queued = snapshot.queue.generation.some((clip) => clip.clip_id === id);
344
- const ready = snapshot.queue.playout.some((clip) => clip.clip_id === id);
345
- if (!queued && !ready)
346
- return yield* PolicyFailure.refuse("NotFound", "Clip is not present in a provider queue", "pop");
347
- yield* provider.pop(id);
348
- return ready ? "ready" : "generation";
349
- }),
350
- move: (id, position) => provider.move(id, position).pipe(Effect.asVoid),
351
- setCanvas: (canvas) => Effect.gen(function* () {
352
- yield* requireReady("set_canvas");
353
- if (!isIdle(yield* state))
354
- return yield* PolicyFailure.refuse("Busy", "Canvas can only change while the provider is idle", "set_canvas");
355
- yield* provider.setCanvas(canvas);
356
- }),
357
- close,
358
- };
359
- });
360
- /** A consumer can narrow its optional annotation without assuming ownership. */
361
- export const isLocalClip = (value) => value.request !== undefined && value.seq !== undefined && value.enqueuedAt !== undefined;
362
- //# sourceMappingURL=h3-source.js.map