effect 4.0.0 → 4.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1001) hide show
  1. package/ai-docs/package.json +2 -2
  2. package/ai-docs/tsconfig.json +2 -1
  3. package/dist/Array.d.ts +339 -0
  4. package/dist/Array.d.ts.map +1 -1
  5. package/dist/Array.js +143 -3
  6. package/dist/Array.js.map +1 -1
  7. package/dist/BigDecimal.d.ts +88 -0
  8. package/dist/BigDecimal.d.ts.map +1 -1
  9. package/dist/BigDecimal.js +44 -0
  10. package/dist/BigDecimal.js.map +1 -1
  11. package/dist/BigInt.d.ts +68 -0
  12. package/dist/BigInt.d.ts.map +1 -1
  13. package/dist/BigInt.js +36 -0
  14. package/dist/BigInt.js.map +1 -1
  15. package/dist/Boolean.d.ts +34 -0
  16. package/dist/Boolean.d.ts.map +1 -1
  17. package/dist/Boolean.js +18 -0
  18. package/dist/Boolean.js.map +1 -1
  19. package/dist/Brand.d.ts +9 -0
  20. package/dist/Brand.d.ts.map +1 -1
  21. package/dist/Brand.js +6 -0
  22. package/dist/Brand.js.map +1 -1
  23. package/dist/ByteSize.d.ts +86 -0
  24. package/dist/ByteSize.d.ts.map +1 -1
  25. package/dist/ByteSize.js +51 -0
  26. package/dist/ByteSize.js.map +1 -1
  27. package/dist/Cache.d.ts +38 -1
  28. package/dist/Cache.d.ts.map +1 -1
  29. package/dist/Cache.js +47 -23
  30. package/dist/Cache.js.map +1 -1
  31. package/dist/Cause.d.ts +82 -0
  32. package/dist/Cause.d.ts.map +1 -1
  33. package/dist/Cause.js +61 -1
  34. package/dist/Cause.js.map +1 -1
  35. package/dist/Channel.d.ts +327 -4
  36. package/dist/Channel.d.ts.map +1 -1
  37. package/dist/Channel.js +168 -8
  38. package/dist/Channel.js.map +1 -1
  39. package/dist/ChannelSchema.d.ts +11 -0
  40. package/dist/ChannelSchema.d.ts.map +1 -1
  41. package/dist/ChannelSchema.js +6 -0
  42. package/dist/ChannelSchema.js.map +1 -1
  43. package/dist/Chunk.d.ts +192 -0
  44. package/dist/Chunk.d.ts.map +1 -1
  45. package/dist/Chunk.js +78 -0
  46. package/dist/Chunk.js.map +1 -1
  47. package/dist/Clock.d.ts +7 -0
  48. package/dist/Clock.d.ts.map +1 -1
  49. package/dist/Clock.js +5 -0
  50. package/dist/Clock.js.map +1 -1
  51. package/dist/Combiner.d.ts +10 -0
  52. package/dist/Combiner.d.ts.map +1 -1
  53. package/dist/Combiner.js +8 -0
  54. package/dist/Combiner.js.map +1 -1
  55. package/dist/Config.d.ts +52 -12
  56. package/dist/Config.d.ts.map +1 -1
  57. package/dist/Config.js +55 -5
  58. package/dist/Config.js.map +1 -1
  59. package/dist/ConfigProvider.d.ts +28 -0
  60. package/dist/ConfigProvider.d.ts.map +1 -1
  61. package/dist/ConfigProvider.js +19 -0
  62. package/dist/ConfigProvider.js.map +1 -1
  63. package/dist/Console.d.ts +22 -0
  64. package/dist/Console.d.ts.map +1 -1
  65. package/dist/Console.js +20 -0
  66. package/dist/Console.js.map +1 -1
  67. package/dist/Context.d.ts +50 -0
  68. package/dist/Context.d.ts.map +1 -1
  69. package/dist/Context.js +21 -0
  70. package/dist/Context.js.map +1 -1
  71. package/dist/Cron.d.ts +16 -0
  72. package/dist/Cron.d.ts.map +1 -1
  73. package/dist/Cron.js +26 -1
  74. package/dist/Cron.js.map +1 -1
  75. package/dist/Crypto.d.ts +5 -0
  76. package/dist/Crypto.d.ts.map +1 -1
  77. package/dist/Crypto.js +3 -0
  78. package/dist/Crypto.js.map +1 -1
  79. package/dist/Data.d.ts +13 -0
  80. package/dist/Data.d.ts.map +1 -1
  81. package/dist/Data.js +5 -0
  82. package/dist/Data.js.map +1 -1
  83. package/dist/DateTime.d.ts +171 -0
  84. package/dist/DateTime.d.ts.map +1 -1
  85. package/dist/DateTime.js +89 -0
  86. package/dist/DateTime.js.map +1 -1
  87. package/dist/Deferred.d.ts +51 -0
  88. package/dist/Deferred.d.ts.map +1 -1
  89. package/dist/Deferred.js +22 -0
  90. package/dist/Deferred.js.map +1 -1
  91. package/dist/Differ.d.ts +2 -0
  92. package/dist/Differ.d.ts.map +1 -1
  93. package/dist/Differ.js +1 -0
  94. package/dist/Duration.d.ts +90 -0
  95. package/dist/Duration.d.ts.map +1 -1
  96. package/dist/Duration.js +53 -0
  97. package/dist/Duration.js.map +1 -1
  98. package/dist/Effect.d.ts +677 -22
  99. package/dist/Effect.d.ts.map +1 -1
  100. package/dist/Effect.js +251 -10
  101. package/dist/Effect.js.map +1 -1
  102. package/dist/Effectable.d.ts +4 -0
  103. package/dist/Effectable.d.ts.map +1 -1
  104. package/dist/Effectable.js +3 -0
  105. package/dist/Effectable.js.map +1 -1
  106. package/dist/Equal.d.ts +8 -0
  107. package/dist/Equal.d.ts.map +1 -1
  108. package/dist/Equal.js +9 -1
  109. package/dist/Equal.js.map +1 -1
  110. package/dist/Equivalence.d.ts +21 -0
  111. package/dist/Equivalence.d.ts.map +1 -1
  112. package/dist/Equivalence.js +16 -0
  113. package/dist/Equivalence.js.map +1 -1
  114. package/dist/ErrorReporter.d.ts +36 -0
  115. package/dist/ErrorReporter.d.ts.map +1 -1
  116. package/dist/ErrorReporter.js +11 -0
  117. package/dist/ErrorReporter.js.map +1 -1
  118. package/dist/ExecutionPlan.d.ts +49 -8
  119. package/dist/ExecutionPlan.d.ts.map +1 -1
  120. package/dist/ExecutionPlan.js +7 -0
  121. package/dist/ExecutionPlan.js.map +1 -1
  122. package/dist/Exit.d.ts +40 -0
  123. package/dist/Exit.d.ts.map +1 -1
  124. package/dist/Exit.js +27 -0
  125. package/dist/Exit.js.map +1 -1
  126. package/dist/Fiber.d.ts +20 -0
  127. package/dist/Fiber.d.ts.map +1 -1
  128. package/dist/Fiber.js +11 -0
  129. package/dist/Fiber.js.map +1 -1
  130. package/dist/FiberHandle.d.ts +21 -0
  131. package/dist/FiberHandle.d.ts.map +1 -1
  132. package/dist/FiberHandle.js +21 -4
  133. package/dist/FiberHandle.js.map +1 -1
  134. package/dist/FiberMap.d.ts +35 -0
  135. package/dist/FiberMap.d.ts.map +1 -1
  136. package/dist/FiberMap.js +19 -0
  137. package/dist/FiberMap.js.map +1 -1
  138. package/dist/FiberSet.d.ts +20 -0
  139. package/dist/FiberSet.d.ts.map +1 -1
  140. package/dist/FiberSet.js +14 -0
  141. package/dist/FiberSet.js.map +1 -1
  142. package/dist/FileSystem.d.ts +15 -0
  143. package/dist/FileSystem.d.ts.map +1 -1
  144. package/dist/FileSystem.js +8 -0
  145. package/dist/FileSystem.js.map +1 -1
  146. package/dist/Filter.d.ts +55 -0
  147. package/dist/Filter.d.ts.map +1 -1
  148. package/dist/Filter.js +28 -0
  149. package/dist/Filter.js.map +1 -1
  150. package/dist/Formatter.d.ts +3 -0
  151. package/dist/Formatter.d.ts.map +1 -1
  152. package/dist/Formatter.js +39 -1
  153. package/dist/Formatter.js.map +1 -1
  154. package/dist/Function.d.ts +30 -0
  155. package/dist/Function.d.ts.map +1 -1
  156. package/dist/Function.js +20 -0
  157. package/dist/Function.js.map +1 -1
  158. package/dist/Graph.d.ts +247 -12
  159. package/dist/Graph.d.ts.map +1 -1
  160. package/dist/Graph.js +149 -28
  161. package/dist/Graph.js.map +1 -1
  162. package/dist/HKT.d.ts +5 -0
  163. package/dist/HKT.d.ts.map +1 -1
  164. package/dist/Hash.d.ts +14 -0
  165. package/dist/Hash.d.ts.map +1 -1
  166. package/dist/Hash.js +12 -0
  167. package/dist/Hash.js.map +1 -1
  168. package/dist/HashMap.d.ts +91 -0
  169. package/dist/HashMap.d.ts.map +1 -1
  170. package/dist/HashMap.js +39 -0
  171. package/dist/HashMap.js.map +1 -1
  172. package/dist/HashRing.d.ts +17 -0
  173. package/dist/HashRing.d.ts.map +1 -1
  174. package/dist/HashRing.js +22 -5
  175. package/dist/HashRing.js.map +1 -1
  176. package/dist/HashSet.d.ts +49 -0
  177. package/dist/HashSet.d.ts.map +1 -1
  178. package/dist/HashSet.js +19 -0
  179. package/dist/HashSet.js.map +1 -1
  180. package/dist/Inspectable.d.ts +7 -0
  181. package/dist/Inspectable.d.ts.map +1 -1
  182. package/dist/Inspectable.js +6 -0
  183. package/dist/Inspectable.js.map +1 -1
  184. package/dist/Iterable.d.ts +127 -0
  185. package/dist/Iterable.d.ts.map +1 -1
  186. package/dist/Iterable.js +51 -0
  187. package/dist/Iterable.js.map +1 -1
  188. package/dist/JsonPatch.d.ts +4 -0
  189. package/dist/JsonPatch.d.ts.map +1 -1
  190. package/dist/JsonPatch.js +3 -0
  191. package/dist/JsonPatch.js.map +1 -1
  192. package/dist/JsonPointer.d.ts +5 -0
  193. package/dist/JsonPointer.d.ts.map +1 -1
  194. package/dist/JsonPointer.js +5 -0
  195. package/dist/JsonPointer.js.map +1 -1
  196. package/dist/JsonSchema.d.ts +16 -0
  197. package/dist/JsonSchema.d.ts.map +1 -1
  198. package/dist/JsonSchema.js +11 -0
  199. package/dist/JsonSchema.js.map +1 -1
  200. package/dist/Latch.d.ts +14 -0
  201. package/dist/Latch.d.ts.map +1 -1
  202. package/dist/Latch.js +10 -0
  203. package/dist/Latch.js.map +1 -1
  204. package/dist/Layer.d.ts +100 -0
  205. package/dist/Layer.d.ts.map +1 -1
  206. package/dist/Layer.js +45 -1
  207. package/dist/Layer.js.map +1 -1
  208. package/dist/LayerMap.d.ts +7 -0
  209. package/dist/LayerMap.d.ts.map +1 -1
  210. package/dist/LayerMap.js +4 -0
  211. package/dist/LayerMap.js.map +1 -1
  212. package/dist/LayerRef.d.ts +5 -0
  213. package/dist/LayerRef.d.ts.map +1 -1
  214. package/dist/LayerRef.js +3 -0
  215. package/dist/LayerRef.js.map +1 -1
  216. package/dist/LogLevel.d.ts +20 -0
  217. package/dist/LogLevel.d.ts.map +1 -1
  218. package/dist/LogLevel.js +9 -0
  219. package/dist/LogLevel.js.map +1 -1
  220. package/dist/Logger.d.ts +25 -0
  221. package/dist/Logger.d.ts.map +1 -1
  222. package/dist/Logger.js +30 -4
  223. package/dist/Logger.js.map +1 -1
  224. package/dist/ManagedRuntime.d.ts +5 -0
  225. package/dist/ManagedRuntime.d.ts.map +1 -1
  226. package/dist/ManagedRuntime.js +9 -1
  227. package/dist/ManagedRuntime.js.map +1 -1
  228. package/dist/Match.d.ts +51 -0
  229. package/dist/Match.d.ts.map +1 -1
  230. package/dist/Match.js +39 -0
  231. package/dist/Match.js.map +1 -1
  232. package/dist/Metric.d.ts +59 -0
  233. package/dist/Metric.d.ts.map +1 -1
  234. package/dist/Metric.js +31 -0
  235. package/dist/Metric.js.map +1 -1
  236. package/dist/MutableHashMap.d.ts +32 -0
  237. package/dist/MutableHashMap.d.ts.map +1 -1
  238. package/dist/MutableHashMap.js +16 -0
  239. package/dist/MutableHashMap.js.map +1 -1
  240. package/dist/MutableHashSet.d.ts +16 -0
  241. package/dist/MutableHashSet.d.ts.map +1 -1
  242. package/dist/MutableHashSet.js +10 -0
  243. package/dist/MutableHashSet.js.map +1 -1
  244. package/dist/MutableList.d.ts +20 -0
  245. package/dist/MutableList.d.ts.map +1 -1
  246. package/dist/MutableList.js +18 -0
  247. package/dist/MutableList.js.map +1 -1
  248. package/dist/MutableRef.d.ts +31 -0
  249. package/dist/MutableRef.d.ts.map +1 -1
  250. package/dist/MutableRef.js +17 -0
  251. package/dist/MutableRef.js.map +1 -1
  252. package/dist/Newtype.d.ts +9 -0
  253. package/dist/Newtype.d.ts.map +1 -1
  254. package/dist/Newtype.js +6 -0
  255. package/dist/Newtype.js.map +1 -1
  256. package/dist/NonEmptyIterable.d.ts +4 -0
  257. package/dist/NonEmptyIterable.d.ts.map +1 -1
  258. package/dist/NonEmptyIterable.js +2 -0
  259. package/dist/NonEmptyIterable.js.map +1 -1
  260. package/dist/Number.d.ts +61 -0
  261. package/dist/Number.d.ts.map +1 -1
  262. package/dist/Number.js +31 -0
  263. package/dist/Number.js.map +1 -1
  264. package/dist/Optic.d.ts +41 -0
  265. package/dist/Optic.d.ts.map +1 -1
  266. package/dist/Optic.js +20 -0
  267. package/dist/Optic.js.map +1 -1
  268. package/dist/Option.d.ts +134 -0
  269. package/dist/Option.d.ts.map +1 -1
  270. package/dist/Option.js +61 -0
  271. package/dist/Option.js.map +1 -1
  272. package/dist/Order.d.ts +29 -0
  273. package/dist/Order.d.ts.map +1 -1
  274. package/dist/Order.js +24 -0
  275. package/dist/Order.js.map +1 -1
  276. package/dist/Ordering.d.ts +7 -0
  277. package/dist/Ordering.d.ts.map +1 -1
  278. package/dist/Ordering.js +3 -0
  279. package/dist/Ordering.js.map +1 -1
  280. package/dist/PartitionedSemaphore.d.ts +24 -0
  281. package/dist/PartitionedSemaphore.d.ts.map +1 -1
  282. package/dist/PartitionedSemaphore.js +47 -21
  283. package/dist/PartitionedSemaphore.js.map +1 -1
  284. package/dist/Path.d.ts +6 -0
  285. package/dist/Path.d.ts.map +1 -1
  286. package/dist/Path.js +4 -0
  287. package/dist/Path.js.map +1 -1
  288. package/dist/Pipeable.d.ts +7 -0
  289. package/dist/Pipeable.d.ts.map +1 -1
  290. package/dist/Pipeable.js +5 -0
  291. package/dist/Pipeable.js.map +1 -1
  292. package/dist/PlatformError.d.ts +8 -0
  293. package/dist/PlatformError.d.ts.map +1 -1
  294. package/dist/PlatformError.js +7 -0
  295. package/dist/PlatformError.js.map +1 -1
  296. package/dist/Pool.d.ts +28 -5
  297. package/dist/Pool.d.ts.map +1 -1
  298. package/dist/Pool.js +42 -42
  299. package/dist/Pool.js.map +1 -1
  300. package/dist/Predicate.d.ts +84 -0
  301. package/dist/Predicate.d.ts.map +1 -1
  302. package/dist/Predicate.js +48 -0
  303. package/dist/Predicate.js.map +1 -1
  304. package/dist/PrimaryKey.d.ts +5 -0
  305. package/dist/PrimaryKey.d.ts.map +1 -1
  306. package/dist/PrimaryKey.js +4 -0
  307. package/dist/PrimaryKey.js.map +1 -1
  308. package/dist/PubSub.d.ts +67 -5
  309. package/dist/PubSub.d.ts.map +1 -1
  310. package/dist/PubSub.js +60 -8
  311. package/dist/PubSub.js.map +1 -1
  312. package/dist/Pull.d.ts +20 -0
  313. package/dist/Pull.d.ts.map +1 -1
  314. package/dist/Pull.js +10 -0
  315. package/dist/Pull.js.map +1 -1
  316. package/dist/Queue.d.ts +60 -0
  317. package/dist/Queue.d.ts.map +1 -1
  318. package/dist/Queue.js +58 -8
  319. package/dist/Queue.js.map +1 -1
  320. package/dist/Random.d.ts +13 -0
  321. package/dist/Random.d.ts.map +1 -1
  322. package/dist/Random.js +9 -0
  323. package/dist/Random.js.map +1 -1
  324. package/dist/RcMap.d.ts +23 -0
  325. package/dist/RcMap.d.ts.map +1 -1
  326. package/dist/RcMap.js +24 -1
  327. package/dist/RcMap.js.map +1 -1
  328. package/dist/RcRef.d.ts +6 -0
  329. package/dist/RcRef.d.ts.map +1 -1
  330. package/dist/RcRef.js +3 -0
  331. package/dist/RcRef.js.map +1 -1
  332. package/dist/Record.d.ts +100 -0
  333. package/dist/Record.d.ts.map +1 -1
  334. package/dist/Record.js +43 -0
  335. package/dist/Record.js.map +1 -1
  336. package/dist/Redactable.d.ts +6 -0
  337. package/dist/Redactable.d.ts.map +1 -1
  338. package/dist/Redactable.js +4 -0
  339. package/dist/Redactable.js.map +1 -1
  340. package/dist/Redacted.d.ts +8 -0
  341. package/dist/Redacted.d.ts.map +1 -1
  342. package/dist/Redacted.js +6 -0
  343. package/dist/Redacted.js.map +1 -1
  344. package/dist/Reducer.d.ts +4 -0
  345. package/dist/Reducer.d.ts.map +1 -1
  346. package/dist/Reducer.js +3 -0
  347. package/dist/Reducer.js.map +1 -1
  348. package/dist/Ref.d.ts +20 -0
  349. package/dist/Ref.d.ts.map +1 -1
  350. package/dist/Ref.js +16 -0
  351. package/dist/Ref.js.map +1 -1
  352. package/dist/References.d.ts +21 -0
  353. package/dist/References.d.ts.map +1 -1
  354. package/dist/References.js +19 -0
  355. package/dist/References.js.map +1 -1
  356. package/dist/RegExp.d.ts +3 -0
  357. package/dist/RegExp.d.ts.map +1 -1
  358. package/dist/RegExp.js +4 -0
  359. package/dist/RegExp.js.map +1 -1
  360. package/dist/Request.d.ts +32 -0
  361. package/dist/Request.d.ts.map +1 -1
  362. package/dist/Request.js +12 -0
  363. package/dist/Request.js.map +1 -1
  364. package/dist/RequestResolver.d.ts +42 -0
  365. package/dist/RequestResolver.d.ts.map +1 -1
  366. package/dist/RequestResolver.js +27 -6
  367. package/dist/RequestResolver.js.map +1 -1
  368. package/dist/Resource.d.ts +6 -0
  369. package/dist/Resource.d.ts.map +1 -1
  370. package/dist/Resource.js +6 -0
  371. package/dist/Resource.js.map +1 -1
  372. package/dist/Result.d.ts +91 -0
  373. package/dist/Result.d.ts.map +1 -1
  374. package/dist/Result.js +41 -0
  375. package/dist/Result.js.map +1 -1
  376. package/dist/Runtime.d.ts +9 -0
  377. package/dist/Runtime.d.ts.map +1 -1
  378. package/dist/Runtime.js +7 -0
  379. package/dist/Runtime.js.map +1 -1
  380. package/dist/Schedule.d.ts +57 -0
  381. package/dist/Schedule.d.ts.map +1 -1
  382. package/dist/Schedule.js +32 -0
  383. package/dist/Schedule.js.map +1 -1
  384. package/dist/Scheduler.d.ts +7 -0
  385. package/dist/Scheduler.d.ts.map +1 -1
  386. package/dist/Scheduler.js +5 -0
  387. package/dist/Scheduler.js.map +1 -1
  388. package/dist/Schema.d.ts +496 -1
  389. package/dist/Schema.d.ts.map +1 -1
  390. package/dist/Schema.js +280 -1
  391. package/dist/Schema.js.map +1 -1
  392. package/dist/SchemaAST.d.ts +107 -0
  393. package/dist/SchemaAST.d.ts.map +1 -1
  394. package/dist/SchemaAST.js +81 -1
  395. package/dist/SchemaAST.js.map +1 -1
  396. package/dist/SchemaGetter.d.ts +69 -2
  397. package/dist/SchemaGetter.d.ts.map +1 -1
  398. package/dist/SchemaGetter.js +63 -4
  399. package/dist/SchemaGetter.js.map +1 -1
  400. package/dist/SchemaIssue.d.ts +33 -0
  401. package/dist/SchemaIssue.d.ts.map +1 -1
  402. package/dist/SchemaIssue.js +18 -0
  403. package/dist/SchemaIssue.js.map +1 -1
  404. package/dist/SchemaParser.d.ts +25 -0
  405. package/dist/SchemaParser.d.ts.map +1 -1
  406. package/dist/SchemaParser.js +26 -0
  407. package/dist/SchemaParser.js.map +1 -1
  408. package/dist/SchemaRepresentation.d.ts +147 -0
  409. package/dist/SchemaRepresentation.d.ts.map +1 -1
  410. package/dist/SchemaRepresentation.js +99 -0
  411. package/dist/SchemaRepresentation.js.map +1 -1
  412. package/dist/SchemaTransformation.d.ts +53 -0
  413. package/dist/SchemaTransformation.d.ts.map +1 -1
  414. package/dist/SchemaTransformation.js +46 -0
  415. package/dist/SchemaTransformation.js.map +1 -1
  416. package/dist/Scope.d.ts +19 -0
  417. package/dist/Scope.d.ts.map +1 -1
  418. package/dist/Scope.js +12 -0
  419. package/dist/Scope.js.map +1 -1
  420. package/dist/ScopedCache.d.ts +34 -0
  421. package/dist/ScopedCache.d.ts.map +1 -1
  422. package/dist/ScopedCache.js +50 -19
  423. package/dist/ScopedCache.js.map +1 -1
  424. package/dist/ScopedRef.d.ts +9 -0
  425. package/dist/ScopedRef.d.ts.map +1 -1
  426. package/dist/ScopedRef.js +6 -0
  427. package/dist/ScopedRef.js.map +1 -1
  428. package/dist/Semaphore.d.ts +26 -0
  429. package/dist/Semaphore.d.ts.map +1 -1
  430. package/dist/Semaphore.js +10 -0
  431. package/dist/Semaphore.js.map +1 -1
  432. package/dist/Sink.d.ts +125 -1
  433. package/dist/Sink.d.ts.map +1 -1
  434. package/dist/Sink.js +75 -1
  435. package/dist/Sink.js.map +1 -1
  436. package/dist/StandardSchema.d.ts +1 -0
  437. package/dist/StandardSchema.d.ts.map +1 -1
  438. package/dist/StandardSchema.js +1 -0
  439. package/dist/Stdio.d.ts +7 -0
  440. package/dist/Stdio.d.ts.map +1 -1
  441. package/dist/Stdio.js +5 -0
  442. package/dist/Stdio.js.map +1 -1
  443. package/dist/Stream.d.ts +603 -6
  444. package/dist/Stream.d.ts.map +1 -1
  445. package/dist/Stream.js +316 -57
  446. package/dist/Stream.js.map +1 -1
  447. package/dist/String.d.ts +87 -0
  448. package/dist/String.d.ts.map +1 -1
  449. package/dist/String.js +61 -0
  450. package/dist/String.js.map +1 -1
  451. package/dist/Struct.d.ts +46 -0
  452. package/dist/Struct.d.ts.map +1 -1
  453. package/dist/Struct.js +19 -0
  454. package/dist/Struct.js.map +1 -1
  455. package/dist/SubscriptionRef.d.ts +65 -0
  456. package/dist/SubscriptionRef.d.ts.map +1 -1
  457. package/dist/SubscriptionRef.js +25 -0
  458. package/dist/SubscriptionRef.js.map +1 -1
  459. package/dist/Symbol.d.ts +2 -0
  460. package/dist/Symbol.d.ts.map +1 -1
  461. package/dist/Symbol.js +2 -0
  462. package/dist/Symbol.js.map +1 -1
  463. package/dist/SynchronizedRef.d.ts +63 -0
  464. package/dist/SynchronizedRef.d.ts.map +1 -1
  465. package/dist/SynchronizedRef.js +24 -0
  466. package/dist/SynchronizedRef.js.map +1 -1
  467. package/dist/Take.d.ts +3 -0
  468. package/dist/Take.d.ts.map +1 -1
  469. package/dist/Take.js +1 -0
  470. package/dist/Take.js.map +1 -1
  471. package/dist/Terminal.d.ts +8 -0
  472. package/dist/Terminal.d.ts.map +1 -1
  473. package/dist/Terminal.js +4 -0
  474. package/dist/Terminal.js.map +1 -1
  475. package/dist/Tracer.d.ts +23 -0
  476. package/dist/Tracer.d.ts.map +1 -1
  477. package/dist/Tracer.js +12 -0
  478. package/dist/Tracer.js.map +1 -1
  479. package/dist/Trie.d.ts +68 -0
  480. package/dist/Trie.d.ts.map +1 -1
  481. package/dist/Trie.js +28 -0
  482. package/dist/Trie.js.map +1 -1
  483. package/dist/Tuple.d.ts +38 -0
  484. package/dist/Tuple.d.ts.map +1 -1
  485. package/dist/Tuple.js +18 -0
  486. package/dist/Tuple.js.map +1 -1
  487. package/dist/TxChunk.d.ts +52 -0
  488. package/dist/TxChunk.d.ts.map +1 -1
  489. package/dist/TxChunk.js +23 -0
  490. package/dist/TxChunk.js.map +1 -1
  491. package/dist/TxDeferred.d.ts +15 -0
  492. package/dist/TxDeferred.d.ts.map +1 -1
  493. package/dist/TxDeferred.js +8 -0
  494. package/dist/TxDeferred.js.map +1 -1
  495. package/dist/TxHashMap.d.ts +83 -0
  496. package/dist/TxHashMap.d.ts.map +1 -1
  497. package/dist/TxHashMap.js +52 -7
  498. package/dist/TxHashMap.js.map +1 -1
  499. package/dist/TxHashSet.d.ts +51 -0
  500. package/dist/TxHashSet.d.ts.map +1 -1
  501. package/dist/TxHashSet.js +29 -4
  502. package/dist/TxHashSet.js.map +1 -1
  503. package/dist/TxPriorityQueue.d.ts +30 -0
  504. package/dist/TxPriorityQueue.d.ts.map +1 -1
  505. package/dist/TxPriorityQueue.js +22 -1
  506. package/dist/TxPriorityQueue.js.map +1 -1
  507. package/dist/TxPubSub.d.ts +25 -0
  508. package/dist/TxPubSub.d.ts.map +1 -1
  509. package/dist/TxPubSub.js +19 -0
  510. package/dist/TxPubSub.js.map +1 -1
  511. package/dist/TxQueue.d.ts +51 -0
  512. package/dist/TxQueue.d.ts.map +1 -1
  513. package/dist/TxQueue.js +30 -0
  514. package/dist/TxQueue.js.map +1 -1
  515. package/dist/TxReentrantLock.d.ts +24 -0
  516. package/dist/TxReentrantLock.d.ts.map +1 -1
  517. package/dist/TxReentrantLock.js +32 -18
  518. package/dist/TxReentrantLock.js.map +1 -1
  519. package/dist/TxRef.d.ts +14 -0
  520. package/dist/TxRef.d.ts.map +1 -1
  521. package/dist/TxRef.js +7 -0
  522. package/dist/TxRef.js.map +1 -1
  523. package/dist/TxSemaphore.d.ts +25 -0
  524. package/dist/TxSemaphore.d.ts.map +1 -1
  525. package/dist/TxSemaphore.js +29 -13
  526. package/dist/TxSemaphore.js.map +1 -1
  527. package/dist/TxSubscriptionRef.d.ts +25 -0
  528. package/dist/TxSubscriptionRef.d.ts.map +1 -1
  529. package/dist/TxSubscriptionRef.js +12 -0
  530. package/dist/TxSubscriptionRef.js.map +1 -1
  531. package/dist/Types.d.ts +36 -0
  532. package/dist/Types.d.ts.map +1 -1
  533. package/dist/Types.js +1 -0
  534. package/dist/UndefinedOr.d.ts +15 -0
  535. package/dist/UndefinedOr.d.ts.map +1 -1
  536. package/dist/UndefinedOr.js +9 -0
  537. package/dist/UndefinedOr.js.map +1 -1
  538. package/dist/Unify.d.ts +15 -0
  539. package/dist/Unify.d.ts.map +1 -1
  540. package/dist/Unify.js +2 -0
  541. package/dist/Unify.js.map +1 -1
  542. package/dist/Utils.d.ts +4 -0
  543. package/dist/Utils.d.ts.map +1 -1
  544. package/dist/Utils.js +1 -0
  545. package/dist/Utils.js.map +1 -1
  546. package/dist/Version.d.ts +26 -0
  547. package/dist/Version.d.ts.map +1 -0
  548. package/dist/Version.js +36 -0
  549. package/dist/Version.js.map +1 -0
  550. package/dist/ai/Chat.js +1 -1
  551. package/dist/ai/Chat.js.map +1 -1
  552. package/dist/ai/DecisionModel.d.ts +22 -0
  553. package/dist/ai/DecisionModel.d.ts.map +1 -1
  554. package/dist/ai/DecisionModel.js +22 -4
  555. package/dist/ai/DecisionModel.js.map +1 -1
  556. package/dist/ai/LanguageModel.d.ts +8 -0
  557. package/dist/ai/LanguageModel.d.ts.map +1 -1
  558. package/dist/ai/LanguageModel.js +27 -15
  559. package/dist/ai/LanguageModel.js.map +1 -1
  560. package/dist/ai/McpSchema.d.ts +508 -508
  561. package/dist/ai/McpSchema.d.ts.map +1 -1
  562. package/dist/ai/McpSchema.js +1 -1
  563. package/dist/ai/McpSchema.js.map +1 -1
  564. package/dist/ai/McpServer.d.ts +32 -11
  565. package/dist/ai/McpServer.d.ts.map +1 -1
  566. package/dist/ai/McpServer.js +224 -172
  567. package/dist/ai/McpServer.js.map +1 -1
  568. package/dist/ai/Response.d.ts.map +1 -1
  569. package/dist/ai/Response.js +22 -12
  570. package/dist/ai/Response.js.map +1 -1
  571. package/dist/ai/Telemetry.d.ts +49 -41
  572. package/dist/ai/Telemetry.d.ts.map +1 -1
  573. package/dist/ai/Telemetry.js +6 -8
  574. package/dist/ai/Telemetry.js.map +1 -1
  575. package/dist/ai/internal/mcpProtocol/v2024_11_05.js +1 -0
  576. package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
  577. package/dist/ai/internal/mcpProtocol/v2025_03_26.js +1 -0
  578. package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
  579. package/dist/ai/internal/mcpProtocol/v2025_06_18.js +1 -0
  580. package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
  581. package/dist/ai/internal/mcpProtocol/v2025_11_25.js +1 -0
  582. package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
  583. package/dist/ai/internal/mcpRuntime.js +79 -46
  584. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  585. package/dist/ai/internal/mcpSchema/v2024_11_05.js +3 -1
  586. package/dist/ai/internal/mcpSchema/v2024_11_05.js.map +1 -1
  587. package/dist/ai/internal/mcpStatefulRuntime.js +1 -0
  588. package/dist/ai/internal/mcpStatefulRuntime.js.map +1 -1
  589. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  590. package/dist/cluster/ClusterWorkflowEngine.js +11 -2
  591. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  592. package/dist/cluster/K8sHttpClient.d.ts.map +1 -1
  593. package/dist/cluster/K8sHttpClient.js +5 -2
  594. package/dist/cluster/K8sHttpClient.js.map +1 -1
  595. package/dist/cluster/Sharding.d.ts.map +1 -1
  596. package/dist/cluster/Sharding.js +14 -7
  597. package/dist/cluster/Sharding.js.map +1 -1
  598. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  599. package/dist/cluster/SqlMessageStorage.js +21 -12
  600. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  601. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  602. package/dist/cluster/SqlRunnerStorage.js +30 -44
  603. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  604. package/dist/cluster/internal/entityManager.js +63 -62
  605. package/dist/cluster/internal/entityManager.js.map +1 -1
  606. package/dist/cluster/internal/interruptors.js +8 -0
  607. package/dist/cluster/internal/interruptors.js.map +1 -1
  608. package/dist/cluster/internal/resourceMap.js +39 -14
  609. package/dist/cluster/internal/resourceMap.js.map +1 -1
  610. package/dist/cluster/internal/resourceRef.js +168 -87
  611. package/dist/cluster/internal/resourceRef.js.map +1 -1
  612. package/dist/encoding/Base64.d.ts +4 -0
  613. package/dist/encoding/Base64.d.ts.map +1 -1
  614. package/dist/encoding/Base64.js +4 -0
  615. package/dist/encoding/Base64.js.map +1 -1
  616. package/dist/encoding/Base64Url.d.ts +4 -0
  617. package/dist/encoding/Base64Url.d.ts.map +1 -1
  618. package/dist/encoding/Base64Url.js +4 -0
  619. package/dist/encoding/Base64Url.js.map +1 -1
  620. package/dist/encoding/EncodingError.d.ts +4 -0
  621. package/dist/encoding/EncodingError.d.ts.map +1 -1
  622. package/dist/encoding/EncodingError.js +4 -0
  623. package/dist/encoding/EncodingError.js.map +1 -1
  624. package/dist/encoding/Hex.d.ts +5 -0
  625. package/dist/encoding/Hex.d.ts.map +1 -1
  626. package/dist/encoding/Hex.js +5 -0
  627. package/dist/encoding/Hex.js.map +1 -1
  628. package/dist/encoding/Toml.js +2 -2
  629. package/dist/encoding/Toml.js.map +1 -1
  630. package/dist/encoding/Yaml.d.ts.map +1 -1
  631. package/dist/encoding/Yaml.js +6 -4
  632. package/dist/encoding/Yaml.js.map +1 -1
  633. package/dist/encoding/index.d.ts +4 -0
  634. package/dist/encoding/index.d.ts.map +1 -1
  635. package/dist/encoding/index.js +4 -0
  636. package/dist/encoding/index.js.map +1 -1
  637. package/dist/eventlog/SqlEventJournal.js +8 -4
  638. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  639. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts +27 -10
  640. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
  641. package/dist/eventlog/SqlEventLogServerUnencrypted.js +49 -7
  642. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  643. package/dist/http/Headers.d.ts +3 -1
  644. package/dist/http/Headers.d.ts.map +1 -1
  645. package/dist/http/Headers.js +4 -2
  646. package/dist/http/Headers.js.map +1 -1
  647. package/dist/http/HttpClient.d.ts +9 -0
  648. package/dist/http/HttpClient.d.ts.map +1 -1
  649. package/dist/http/HttpClient.js +40 -21
  650. package/dist/http/HttpClient.js.map +1 -1
  651. package/dist/http/HttpClientResponse.js +3 -1
  652. package/dist/http/HttpClientResponse.js.map +1 -1
  653. package/dist/http/HttpEffect.d.ts +3 -0
  654. package/dist/http/HttpEffect.d.ts.map +1 -1
  655. package/dist/http/HttpEffect.js +5 -2
  656. package/dist/http/HttpEffect.js.map +1 -1
  657. package/dist/http/HttpMiddleware.d.ts +17 -0
  658. package/dist/http/HttpMiddleware.d.ts.map +1 -1
  659. package/dist/http/HttpMiddleware.js +58 -40
  660. package/dist/http/HttpMiddleware.js.map +1 -1
  661. package/dist/http/HttpServer.d.ts +1 -1
  662. package/dist/http/HttpServer.d.ts.map +1 -1
  663. package/dist/http/HttpStaticServer.d.ts.map +1 -1
  664. package/dist/http/HttpStaticServer.js +14 -0
  665. package/dist/http/HttpStaticServer.js.map +1 -1
  666. package/dist/http/HttpTraceContext.d.ts +1 -1
  667. package/dist/http/HttpTraceContext.d.ts.map +1 -1
  668. package/dist/http/HttpTraceContext.js +4 -4
  669. package/dist/http/HttpTraceContext.js.map +1 -1
  670. package/dist/http/internal/tracing.d.ts +2 -0
  671. package/dist/http/internal/tracing.d.ts.map +1 -0
  672. package/dist/http/internal/tracing.js +37 -0
  673. package/dist/http/internal/tracing.js.map +1 -0
  674. package/dist/http-api/HttpApiBuilder.js +2 -1
  675. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  676. package/dist/http-api/HttpApiClient.d.ts +12 -3
  677. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  678. package/dist/http-api/HttpApiClient.js.map +1 -1
  679. package/dist/http-api/HttpApiError.d.ts +4 -2
  680. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  681. package/dist/http-api/HttpApiError.js +7 -3
  682. package/dist/http-api/HttpApiError.js.map +1 -1
  683. package/dist/http-api/HttpApiSecurity.d.ts +8 -8
  684. package/dist/http-api/HttpApiSecurity.js +8 -8
  685. package/dist/index.d.ts +155 -0
  686. package/dist/index.d.ts.map +1 -1
  687. package/dist/index.js +155 -0
  688. package/dist/index.js.map +1 -1
  689. package/dist/internal/arbitrary/array.js +3 -3
  690. package/dist/internal/arbitrary/array.js.map +1 -1
  691. package/dist/internal/arbitrary/model.js +26 -11
  692. package/dist/internal/arbitrary/model.js.map +1 -1
  693. package/dist/internal/arbitrary/runner.js +8 -8
  694. package/dist/internal/arbitrary/runner.js.map +1 -1
  695. package/dist/internal/arbitrary/schema.js +4 -5
  696. package/dist/internal/arbitrary/schema.js.map +1 -1
  697. package/dist/internal/core.js +43 -2
  698. package/dist/internal/core.js.map +1 -1
  699. package/dist/internal/dateTime.js +1 -1
  700. package/dist/internal/dateTime.js.map +1 -1
  701. package/dist/internal/effect.js +104 -120
  702. package/dist/internal/effect.js.map +1 -1
  703. package/dist/internal/rcRef.js +59 -23
  704. package/dist/internal/rcRef.js.map +1 -1
  705. package/dist/internal/schedule.js +7 -5
  706. package/dist/internal/schedule.js.map +1 -1
  707. package/dist/internal/schema/fromJsonSchemaDocument.js +11 -8
  708. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  709. package/dist/internal/schema/standardSchema.js +2 -2
  710. package/dist/internal/schema/standardSchema.js.map +1 -1
  711. package/dist/internal/version.d.ts +2 -0
  712. package/dist/internal/version.d.ts.map +1 -0
  713. package/dist/internal/version.js +3 -0
  714. package/dist/internal/version.js.map +1 -0
  715. package/dist/observability/OtlpExporter.d.ts.map +1 -1
  716. package/dist/observability/OtlpExporter.js +5 -6
  717. package/dist/observability/OtlpExporter.js.map +1 -1
  718. package/dist/observability/OtlpLogger.d.ts.map +1 -1
  719. package/dist/observability/OtlpLogger.js +23 -27
  720. package/dist/observability/OtlpLogger.js.map +1 -1
  721. package/dist/observability/OtlpMetrics.d.ts +5 -3
  722. package/dist/observability/OtlpMetrics.d.ts.map +1 -1
  723. package/dist/observability/OtlpMetrics.js +21 -94
  724. package/dist/observability/OtlpMetrics.js.map +1 -1
  725. package/dist/observability/OtlpResource.d.ts +4 -3
  726. package/dist/observability/OtlpResource.d.ts.map +1 -1
  727. package/dist/observability/OtlpResource.js +20 -23
  728. package/dist/observability/OtlpResource.js.map +1 -1
  729. package/dist/observability/OtlpTracer.d.ts +1 -0
  730. package/dist/observability/OtlpTracer.d.ts.map +1 -1
  731. package/dist/observability/OtlpTracer.js +32 -36
  732. package/dist/observability/OtlpTracer.js.map +1 -1
  733. package/dist/observability/internal/otlpProtobuf.js +32 -1
  734. package/dist/observability/internal/otlpProtobuf.js.map +1 -1
  735. package/dist/reactivity/AsyncResult.d.ts +1 -1
  736. package/dist/reactivity/Atom.d.ts +5 -5
  737. package/dist/reactivity/Atom.d.ts.map +1 -1
  738. package/dist/reactivity/Atom.js +9 -5
  739. package/dist/reactivity/Atom.js.map +1 -1
  740. package/dist/reactivity/AtomHttpApi.d.ts +2 -2
  741. package/dist/reactivity/AtomHttpApi.d.ts.map +1 -1
  742. package/dist/reactivity/AtomRegistry.d.ts +8 -0
  743. package/dist/reactivity/AtomRegistry.d.ts.map +1 -1
  744. package/dist/reactivity/AtomRegistry.js.map +1 -1
  745. package/dist/rpc/RpcClient.d.ts +21 -3
  746. package/dist/rpc/RpcClient.d.ts.map +1 -1
  747. package/dist/rpc/RpcClient.js +58 -34
  748. package/dist/rpc/RpcClient.js.map +1 -1
  749. package/dist/rpc/RpcServer.d.ts.map +1 -1
  750. package/dist/rpc/RpcServer.js +20 -23
  751. package/dist/rpc/RpcServer.js.map +1 -1
  752. package/dist/rpc/Utils.d.ts +2 -3
  753. package/dist/rpc/Utils.d.ts.map +1 -1
  754. package/dist/rpc/Utils.js +3 -4
  755. package/dist/rpc/Utils.js.map +1 -1
  756. package/dist/rpc/internal/tracing.d.ts +2 -0
  757. package/dist/rpc/internal/tracing.d.ts.map +1 -0
  758. package/dist/rpc/internal/tracing.js +18 -0
  759. package/dist/rpc/internal/tracing.js.map +1 -0
  760. package/dist/schema/SchemaCompiler/runtime.js +9 -1
  761. package/dist/schema/SchemaCompiler/runtime.js.map +1 -1
  762. package/dist/sql/SqlClient.js +4 -4
  763. package/dist/sql/SqlClient.js.map +1 -1
  764. package/dist/sql/Statement.d.ts +21 -1
  765. package/dist/sql/Statement.d.ts.map +1 -1
  766. package/dist/sql/Statement.js +55 -7
  767. package/dist/sql/Statement.js.map +1 -1
  768. package/dist/testing/TestClock.d.ts +8 -0
  769. package/dist/testing/TestClock.d.ts.map +1 -1
  770. package/dist/testing/TestClock.js +7 -0
  771. package/dist/testing/TestClock.js.map +1 -1
  772. package/dist/testing/TestConsole.d.ts +7 -0
  773. package/dist/testing/TestConsole.d.ts.map +1 -1
  774. package/dist/testing/TestConsole.js +6 -0
  775. package/dist/testing/TestConsole.js.map +1 -1
  776. package/dist/testing/index.d.ts +3 -0
  777. package/dist/testing/index.d.ts.map +1 -1
  778. package/dist/testing/index.js +3 -0
  779. package/dist/testing/index.js.map +1 -1
  780. package/dist/workflow/WorkflowEngine.d.ts +2 -0
  781. package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
  782. package/dist/workflow/WorkflowEngine.js +1 -0
  783. package/dist/workflow/WorkflowEngine.js.map +1 -1
  784. package/package.json +3 -3
  785. package/src/Array.ts +351 -3
  786. package/src/BigDecimal.ts +88 -0
  787. package/src/BigInt.ts +68 -0
  788. package/src/Boolean.ts +34 -0
  789. package/src/Brand.ts +10 -0
  790. package/src/ByteSize.ts +87 -0
  791. package/src/Cache.ts +72 -24
  792. package/src/Cause.ts +83 -1
  793. package/src/Channel.ts +368 -18
  794. package/src/ChannelSchema.ts +13 -0
  795. package/src/Chunk.ts +193 -0
  796. package/src/Clock.ts +7 -0
  797. package/src/Combiner.ts +10 -0
  798. package/src/Config.ts +82 -8
  799. package/src/ConfigProvider.ts +28 -0
  800. package/src/Console.ts +26 -0
  801. package/src/Context.ts +50 -0
  802. package/src/Cron.ts +32 -1
  803. package/src/Crypto.ts +5 -0
  804. package/src/Data.ts +13 -0
  805. package/src/DateTime.ts +171 -0
  806. package/src/Deferred.ts +51 -0
  807. package/src/Differ.ts +2 -0
  808. package/src/Duration.ts +90 -0
  809. package/src/Effect.ts +692 -27
  810. package/src/Effectable.ts +4 -0
  811. package/src/Equal.ts +12 -1
  812. package/src/Equivalence.ts +22 -0
  813. package/src/ErrorReporter.ts +36 -0
  814. package/src/ExecutionPlan.ts +58 -14
  815. package/src/Exit.ts +40 -0
  816. package/src/Fiber.ts +20 -0
  817. package/src/FiberHandle.ts +29 -4
  818. package/src/FiberMap.ts +38 -0
  819. package/src/FiberSet.ts +21 -0
  820. package/src/FileSystem.ts +16 -0
  821. package/src/Filter.ts +55 -0
  822. package/src/Formatter.ts +42 -1
  823. package/src/Function.ts +30 -0
  824. package/src/Graph.ts +317 -36
  825. package/src/HKT.ts +5 -0
  826. package/src/Hash.ts +15 -0
  827. package/src/HashMap.ts +91 -0
  828. package/src/HashRing.ts +32 -5
  829. package/src/HashSet.ts +53 -0
  830. package/src/Inspectable.ts +8 -0
  831. package/src/Iterable.ts +127 -0
  832. package/src/JsonPatch.ts +5 -0
  833. package/src/JsonPointer.ts +5 -0
  834. package/src/JsonSchema.ts +17 -0
  835. package/src/Latch.ts +14 -0
  836. package/src/Layer.ts +101 -1
  837. package/src/LayerMap.ts +7 -0
  838. package/src/LayerRef.ts +5 -0
  839. package/src/LogLevel.ts +20 -0
  840. package/src/Logger.ts +41 -5
  841. package/src/ManagedRuntime.ts +12 -1
  842. package/src/Match.ts +52 -0
  843. package/src/Metric.ts +69 -0
  844. package/src/MutableHashMap.ts +44 -0
  845. package/src/MutableHashSet.ts +17 -0
  846. package/src/MutableList.ts +21 -0
  847. package/src/MutableRef.ts +32 -0
  848. package/src/Newtype.ts +9 -0
  849. package/src/NonEmptyIterable.ts +4 -0
  850. package/src/Number.ts +61 -0
  851. package/src/Optic.ts +57 -0
  852. package/src/Option.ts +134 -0
  853. package/src/Order.ts +30 -0
  854. package/src/Ordering.ts +7 -0
  855. package/src/PartitionedSemaphore.ts +61 -22
  856. package/src/Path.ts +6 -0
  857. package/src/Pipeable.ts +7 -0
  858. package/src/PlatformError.ts +8 -0
  859. package/src/Pool.ts +48 -37
  860. package/src/Predicate.ts +85 -0
  861. package/src/PrimaryKey.ts +5 -0
  862. package/src/PubSub.ts +90 -9
  863. package/src/Pull.ts +20 -0
  864. package/src/Queue.ts +80 -10
  865. package/src/Random.ts +13 -0
  866. package/src/RcMap.ts +49 -2
  867. package/src/RcRef.ts +6 -0
  868. package/src/Record.ts +100 -0
  869. package/src/Redactable.ts +6 -0
  870. package/src/Redacted.ts +8 -0
  871. package/src/Reducer.ts +4 -0
  872. package/src/Ref.ts +42 -0
  873. package/src/References.ts +21 -0
  874. package/src/RegExp.ts +4 -0
  875. package/src/Request.ts +32 -0
  876. package/src/RequestResolver.ts +59 -10
  877. package/src/Resource.ts +7 -0
  878. package/src/Result.ts +93 -0
  879. package/src/Runtime.ts +10 -0
  880. package/src/Schedule.ts +61 -0
  881. package/src/Scheduler.ts +7 -0
  882. package/src/Schema.ts +499 -4
  883. package/src/SchemaAST.ts +115 -1
  884. package/src/SchemaGetter.ts +80 -4
  885. package/src/SchemaIssue.ts +34 -0
  886. package/src/SchemaParser.ts +26 -0
  887. package/src/SchemaRepresentation.ts +148 -0
  888. package/src/SchemaTransformation.ts +53 -0
  889. package/src/Scope.ts +19 -0
  890. package/src/ScopedCache.ts +82 -19
  891. package/src/ScopedRef.ts +9 -0
  892. package/src/Semaphore.ts +26 -0
  893. package/src/Sink.ts +126 -2
  894. package/src/StandardSchema.ts +1 -0
  895. package/src/Stdio.ts +7 -0
  896. package/src/Stream.ts +780 -103
  897. package/src/String.ts +87 -0
  898. package/src/Struct.ts +46 -0
  899. package/src/SubscriptionRef.ts +65 -0
  900. package/src/Symbol.ts +2 -0
  901. package/src/SynchronizedRef.ts +63 -0
  902. package/src/Take.ts +3 -0
  903. package/src/Terminal.ts +8 -0
  904. package/src/Tracer.ts +23 -0
  905. package/src/Trie.ts +68 -0
  906. package/src/Tuple.ts +38 -0
  907. package/src/TxChunk.ts +52 -0
  908. package/src/TxDeferred.ts +15 -0
  909. package/src/TxHashMap.ts +97 -6
  910. package/src/TxHashSet.ts +83 -3
  911. package/src/TxPriorityQueue.ts +34 -2
  912. package/src/TxPubSub.ts +26 -0
  913. package/src/TxQueue.ts +51 -0
  914. package/src/TxReentrantLock.ts +53 -36
  915. package/src/TxRef.ts +14 -0
  916. package/src/TxSemaphore.ts +47 -31
  917. package/src/TxSubscriptionRef.ts +25 -0
  918. package/src/Types.ts +36 -0
  919. package/src/UndefinedOr.ts +15 -0
  920. package/src/Unify.ts +15 -0
  921. package/src/Utils.ts +4 -0
  922. package/src/Version.ts +38 -0
  923. package/src/ai/Chat.ts +1 -1
  924. package/src/ai/DecisionModel.ts +42 -1
  925. package/src/ai/LanguageModel.ts +43 -21
  926. package/src/ai/McpSchema.ts +3 -3
  927. package/src/ai/McpServer.ts +119 -39
  928. package/src/ai/Response.ts +27 -12
  929. package/src/ai/Telemetry.ts +62 -58
  930. package/src/ai/internal/mcpProtocol/v2024_11_05.ts +1 -0
  931. package/src/ai/internal/mcpProtocol/v2025_03_26.ts +1 -0
  932. package/src/ai/internal/mcpProtocol/v2025_06_18.ts +1 -0
  933. package/src/ai/internal/mcpProtocol/v2025_11_25.ts +1 -0
  934. package/src/ai/internal/mcpRuntime.ts +84 -43
  935. package/src/ai/internal/mcpSchema/v2024_11_05.ts +4 -2
  936. package/src/ai/internal/mcpStatefulRuntime.ts +2 -0
  937. package/src/cluster/ClusterWorkflowEngine.ts +18 -4
  938. package/src/cluster/K8sHttpClient.ts +12 -2
  939. package/src/cluster/Sharding.ts +24 -24
  940. package/src/cluster/SqlMessageStorage.ts +26 -13
  941. package/src/cluster/SqlRunnerStorage.ts +85 -113
  942. package/src/cluster/internal/entityManager.ts +68 -80
  943. package/src/cluster/internal/interruptors.ts +13 -0
  944. package/src/cluster/internal/resourceMap.ts +55 -17
  945. package/src/cluster/internal/resourceRef.ts +189 -96
  946. package/src/encoding/Base64.ts +4 -0
  947. package/src/encoding/Base64Url.ts +4 -0
  948. package/src/encoding/EncodingError.ts +5 -0
  949. package/src/encoding/Hex.ts +5 -0
  950. package/src/encoding/Toml.ts +2 -2
  951. package/src/encoding/Yaml.ts +8 -4
  952. package/src/encoding/index.ts +4 -0
  953. package/src/eventlog/SqlEventJournal.ts +18 -4
  954. package/src/eventlog/SqlEventLogServerUnencrypted.ts +282 -235
  955. package/src/http/Headers.ts +8 -2
  956. package/src/http/HttpClient.ts +44 -27
  957. package/src/http/HttpClientResponse.ts +3 -1
  958. package/src/http/HttpEffect.ts +11 -2
  959. package/src/http/HttpMiddleware.ts +67 -46
  960. package/src/http/HttpServer.ts +1 -1
  961. package/src/http/HttpStaticServer.ts +16 -0
  962. package/src/http/HttpTraceContext.ts +8 -4
  963. package/src/http/internal/tracing.ts +52 -0
  964. package/src/http-api/HttpApiBuilder.ts +5 -1
  965. package/src/http-api/HttpApiClient.ts +13 -4
  966. package/src/http-api/HttpApiError.ts +8 -3
  967. package/src/http-api/HttpApiSecurity.ts +8 -8
  968. package/src/index.ts +156 -0
  969. package/src/internal/arbitrary/array.ts +3 -3
  970. package/src/internal/arbitrary/model.ts +37 -14
  971. package/src/internal/arbitrary/runner.ts +7 -7
  972. package/src/internal/arbitrary/schema.ts +4 -3
  973. package/src/internal/core.ts +56 -2
  974. package/src/internal/dateTime.ts +3 -1
  975. package/src/internal/effect.ts +156 -156
  976. package/src/internal/rcRef.ts +83 -33
  977. package/src/internal/schedule.ts +23 -17
  978. package/src/internal/schema/fromJsonSchemaDocument.ts +5 -3
  979. package/src/internal/schema/standardSchema.ts +2 -2
  980. package/src/internal/version.ts +2 -0
  981. package/src/observability/OtlpExporter.ts +9 -6
  982. package/src/observability/OtlpLogger.ts +20 -21
  983. package/src/observability/OtlpMetrics.ts +34 -93
  984. package/src/observability/OtlpResource.ts +18 -27
  985. package/src/observability/OtlpTracer.ts +34 -40
  986. package/src/observability/internal/otlpProtobuf.ts +60 -0
  987. package/src/reactivity/AsyncResult.ts +1 -1
  988. package/src/reactivity/Atom.ts +10 -6
  989. package/src/reactivity/AtomHttpApi.ts +2 -4
  990. package/src/reactivity/AtomRegistry.ts +7 -0
  991. package/src/rpc/RpcClient.ts +74 -46
  992. package/src/rpc/RpcServer.ts +28 -25
  993. package/src/rpc/Utils.ts +4 -10
  994. package/src/rpc/internal/tracing.ts +22 -0
  995. package/src/schema/SchemaCompiler/runtime.ts +4 -1
  996. package/src/sql/SqlClient.ts +4 -4
  997. package/src/sql/Statement.ts +59 -7
  998. package/src/testing/TestClock.ts +9 -0
  999. package/src/testing/TestConsole.ts +8 -0
  1000. package/src/testing/index.ts +3 -0
  1001. package/src/workflow/WorkflowEngine.ts +4 -0
@@ -818,7 +818,7 @@ export interface AtomRuntime<R, ER = never> extends Atom<AsyncResult.AsyncResult
818
818
  | ((
819
819
  get: AtomContext
820
820
  ) => Effect.Effect<SubscriptionRef.SubscriptionRef<A>, E, Scope.Scope | R | AtomRegistry | Reactivity.Reactivity>)
821
- ) => Writable<AsyncResult.AsyncResult<A, E>, A>
821
+ ) => Writable<AsyncResult.AsyncResult<A, E | ER>, A>
822
822
  }
823
823
 
824
824
  /**
@@ -2774,18 +2774,21 @@ export const batch: (f: () => void) => void = Registry.batch
2774
2774
  // -----------------------------------------------------------------------------
2775
2775
 
2776
2776
  /**
2777
- * Creates a browser-only signal atom that increments when the document becomes visible.
2777
+ * Creates a signal atom that increments when the document becomes visible.
2778
2778
  *
2779
2779
  * **Details**
2780
2780
  *
2781
2781
  * It listens for `visibilitychange` events on `window` and removes the listener
2782
- * when the atom is disposed.
2782
+ * when the atom is disposed. Without `window`, it stays at `0` and adds no listener.
2783
2783
  *
2784
2784
  * @stability unstable
2785
2785
  * @category constants
2786
2786
  * @since 4.0.0
2787
2787
  */
2788
2788
  export const windowFocusSignal: Atom<number> = readable((get) => {
2789
+ if (typeof window === "undefined") {
2790
+ return 0
2791
+ }
2789
2792
  let count = 0
2790
2793
  function update() {
2791
2794
  if (document.visibilityState === "visible") {
@@ -2825,8 +2828,8 @@ export const makeRefreshOnSignal = <_>(signal: Atom<_>) => <A extends Atom<any>>
2825
2828
  *
2826
2829
  * **Details**
2827
2830
  *
2828
- * This helper is browser-only because `windowFocusSignal` depends on `window` and
2829
- * `document.visibilityState`.
2831
+ * Without `window`, this helper does not trigger refreshes. Source atom updates
2832
+ * are still forwarded.
2830
2833
  *
2831
2834
  * @stability unstable
2832
2835
  * @category combinators
@@ -2991,7 +2994,8 @@ function updateSearchParams() {
2991
2994
  }
2992
2995
  }
2993
2996
  searchParamState.updates.clear()
2994
- const newUrl = `${window.location.pathname}?${searchParams.toString()}`
2997
+ const search = searchParams.toString()
2998
+ const newUrl = `${window.location.pathname}${search.length > 0 ? `?${search}` : ""}${window.location.hash}`
2995
2999
  window.history.pushState({}, "", newUrl)
2996
3000
  searchParamState.updating = false
2997
3001
  }
@@ -57,7 +57,7 @@ export interface AtomHttpApiClient<Self, Id extends string, Groups extends HttpA
57
57
  HttpApiGroup.Endpoints<Group>,
58
58
  EndpointIdentifier
59
59
  >,
60
- const ResponseMode extends HttpApiEndpoint.ClientResponseMode = HttpApiEndpoint.ClientResponseMode
60
+ const ResponseMode extends HttpApiEndpoint.ClientResponseMode = "decoded-only"
61
61
  >(
62
62
  group: GroupIdentifier,
63
63
  endpoint: EndpointIdentifier,
@@ -353,9 +353,7 @@ type ResponseByMode<
353
353
  Endpoint extends HttpApiEndpoint.Constraint,
354
354
  ResponseMode extends HttpApiEndpoint.ClientResponseMode
355
355
  > = HttpApiClient.Client.Response<
356
- Effect.Success<
357
- ReturnType<HttpApiClient.Client.Method<Extract<Endpoint, HttpApiEndpoint.ConstraintRequest>, never, never>>
358
- >,
356
+ HttpApiClient.SuccessType<Extract<Endpoint, HttpApiEndpoint.ConstraintRequest>["~Success"]>,
359
357
  ResponseMode
360
358
  >
361
359
 
@@ -71,11 +71,13 @@ export interface AtomRegistry {
71
71
  readonly scheduler: Scheduler
72
72
  readonly schedulerAsync: Scheduler
73
73
  readonly getNodes: () => ReadonlyMap<Atom.Atom<any> | string, Node<any>>
74
+ readonly ensureNode: <A>(atom: Atom.Atom<A>) => Node<A>
74
75
  readonly get: <A>(atom: Atom.Atom<A>) => A
75
76
  readonly mount: <A>(atom: Atom.Atom<A>) => () => void
76
77
  readonly refresh: <A>(atom: Atom.Atom<A>) => void
77
78
  readonly set: <R, W>(atom: Atom.Writable<R, W>, value: W) => void
78
79
  readonly setSerializable: (key: string, encoded: unknown) => void
80
+ readonly preloadedSerializable: Map<string, unknown>
79
81
  readonly modify: <R, W, A>(atom: Atom.Writable<R, W>, f: (_: R) => [returnValue: A, nextValue: W]) => A
80
82
  readonly update: <R, W>(atom: Atom.Writable<R, W>, f: (_: R) => W) => void
81
83
  readonly subscribe: <A>(atom: Atom.Atom<A>, f: (_: A) => void, options?: {
@@ -83,6 +85,7 @@ export interface AtomRegistry {
83
85
  }) => () => void
84
86
  readonly reset: () => void
85
87
  readonly dispose: () => void
88
+ scheduleNodeRemoval(node: Node<any>): void
86
89
  onNodeAdded?: ((node: Node<any>) => void) | undefined
87
90
  onNodeRemoved?: ((node: Node<any>) => void) | undefined
88
91
  }
@@ -102,10 +105,14 @@ export interface AtomRegistry {
102
105
  export interface Node<A> {
103
106
  readonly atom: Atom.Atom<A>
104
107
  readonly value: () => A
108
+ readonly valueOption: () => Option.Option<A>
109
+ readonly canBeRemoved: boolean
105
110
  parents: Set<Node<any>>
106
111
  children: Set<Node<any>>
107
112
  listeners: Set<() => void>
108
113
  currentState(): "uninitialized" | "stale" | "valid" | "removed"
114
+ setInitialValue(value: A): void
115
+ subscribe(listener: () => void): () => void
109
116
  }
110
117
 
111
118
  /**
@@ -13,8 +13,9 @@
13
13
  */
14
14
  import type { NonEmptyReadonlyArray } from "../Array.ts"
15
15
  import * as Cause from "../Cause.ts"
16
+ import * as Clock from "../Clock.ts"
16
17
  import * as Context from "../Context.ts"
17
- import type * as Duration from "../Duration.ts"
18
+ import * as Duration from "../Duration.ts"
18
19
  import * as Effect from "../Effect.ts"
19
20
  import * as Exit from "../Exit.ts"
20
21
  import * as Fiber from "../Fiber.ts"
@@ -42,6 +43,7 @@ import type { Span } from "../Tracer.ts"
42
43
  import * as Transferable from "../workers/Transferable.ts"
43
44
  import * as Worker from "../workers/Worker.ts"
44
45
  import type { WorkerError } from "../workers/WorkerError.ts"
46
+ import * as RpcTracing from "./internal/tracing.ts"
45
47
  import * as Rpc from "./Rpc.ts"
46
48
  import { RpcClientDefect, RpcClientError } from "./RpcClientError.ts"
47
49
  import type * as RpcGroup from "./RpcGroup.ts"
@@ -267,7 +269,7 @@ export const makeNoSerialization: <Rpcs extends Rpc.Any, E, const Flatten extend
267
269
  readonly flatten?: Flatten | undefined
268
270
  }
269
271
  ) {
270
- const spanPrefix = options?.spanPrefix ?? "RpcClient"
272
+ const spanPrefix = options.spanPrefix
271
273
  const supportsAck = options?.supportsAck ?? true
272
274
  const disableTracing = options?.disableTracing ?? false
273
275
  const generateRequestId = options?.generateRequestId ?? (() => requestIdCounter++ as RequestId)
@@ -335,8 +337,8 @@ export const makeNoSerialization: <Rpcs extends Rpc.Any, E, const Flatten extend
335
337
  opts?.discard ?? false
336
338
  )
337
339
  return disableTracing ? onRequest(undefined) : Effect.useSpan(
338
- `${spanPrefix}.${rpc._tag}`,
339
- { attributes: options.spanAttributes },
340
+ RpcTracing.spanName(spanPrefix, rpc._tag),
341
+ { kind: "client", attributes: RpcTracing.spanAttributes(rpc._tag, options.spanAttributes) },
340
342
  onRequest
341
343
  )
342
344
  }
@@ -447,16 +449,19 @@ export const makeNoSerialization: <Rpcs extends Rpc.Any, E, const Flatten extend
447
449
  return yield* Effect.interrupt
448
450
  }
449
451
 
450
- const span = disableTracing ? undefined : yield* Effect.makeSpanScoped(`${spanPrefix}.${rpc._tag}`, {
451
- attributes: options.spanAttributes
452
- })
452
+ const span = disableTracing ? undefined : yield* Effect.makeSpanScoped(
453
+ RpcTracing.spanName(spanPrefix, rpc._tag),
454
+ { kind: "client", attributes: RpcTracing.spanAttributes(rpc._tag, options.spanAttributes) }
455
+ )
453
456
  const fiber = Fiber.getCurrent()!
454
457
  const id = generateRequestId()
455
458
 
456
459
  const scope = Context.getUnsafe(fiber.context, Scope.Scope)
460
+ const queue = yield* Queue.bounded<any, any>(streamBufferSize)
457
461
  yield* Scope.addFinalizerExit(
458
462
  scope,
459
463
  (exit) => {
464
+ Queue.shutdownUnsafe(queue)
460
465
  if (!entries.has(id)) return Effect.void
461
466
  entries.delete(id)
462
467
  return sendInterrupt(
@@ -469,7 +474,6 @@ export const makeNoSerialization: <Rpcs extends Rpc.Any, E, const Flatten extend
469
474
  }
470
475
  )
471
476
 
472
- const queue = yield* Queue.bounded<any, any>(streamBufferSize)
473
477
  entries.set(id, {
474
478
  _tag: "Queue",
475
479
  rpc,
@@ -671,6 +675,12 @@ export const make: <Rpcs extends Rpc.Any, const Flatten extends boolean = false>
671
675
  }
672
676
  const entries = new Map<RequestId, ClientEntry>()
673
677
 
678
+ const interruptRequest = (requestId: RequestId): Effect.Effect<void, RpcClientError> => {
679
+ if (!entries.has(requestId)) return Effect.void
680
+ entries.delete(requestId)
681
+ return send(clientId, { _tag: "Interrupt", requestId }) as Effect.Effect<void, RpcClientError>
682
+ }
683
+
674
684
  const { client, write } = yield* makeNoSerialization(group, {
675
685
  ...options,
676
686
  supportsAck,
@@ -711,13 +721,7 @@ export const make: <Rpcs extends Rpc.Any, const Flatten extends boolean = false>
711
721
  }) as Effect.Effect<void, RpcClientError>
712
722
  }
713
723
  case "Interrupt": {
714
- const entry = entries.get(message.requestId)
715
- if (!entry) return Effect.void
716
- entries.delete(message.requestId)
717
- return send(clientId, {
718
- _tag: "Interrupt",
719
- requestId: message.requestId
720
- }) as Effect.Effect<void, RpcClientError>
724
+ return interruptRequest(message.requestId)
721
725
  }
722
726
  case "Eof": {
723
727
  return Effect.void
@@ -732,19 +736,22 @@ export const make: <Rpcs extends Rpc.Any, const Flatten extends boolean = false>
732
736
  const requestId = RequestId(message.requestId)
733
737
  const entry = entries.get(requestId)
734
738
  if (!entry || Option.isNone(entry.schemas.decodeChunk)) return Effect.void
735
- return entry.schemas.decodeChunk.value(message.values).pipe(
736
- Effect.provideContext(entry.context),
737
- Effect.orDie,
738
- Effect.flatMap((chunk) =>
739
- write({ _tag: "Chunk", clientId: 0, requestId: RequestId(message.requestId), values: chunk })
740
- ),
741
- Effect.onError((cause) =>
742
- write({
743
- _tag: "Exit",
744
- clientId: 0,
745
- requestId: RequestId(message.requestId),
746
- exit: Exit.failCause(cause)
747
- })
739
+ const decodeChunk = entry.schemas.decodeChunk.value
740
+ return Effect.uninterruptibleMask((restore) =>
741
+ restore(
742
+ decodeChunk(message.values).pipe(
743
+ Effect.provideContext(entry.context),
744
+ Effect.orDie,
745
+ Effect.flatMap((chunk) => write({ _tag: "Chunk", clientId: 0, requestId, values: chunk }))
746
+ )
747
+ ).pipe(
748
+ Effect.onError((cause) =>
749
+ write({ _tag: "Exit", clientId: 0, requestId, exit: Exit.failCause(cause) }).pipe(
750
+ Effect.andThen(Cause.hasInterrupts(cause) ? Effect.void : Effect.ignore(interruptRequest(requestId)))
751
+ )
752
+ ),
753
+ // a decode failure only ends its own request; interruption still propagates
754
+ Effect.catchCauseIf((cause) => !Cause.hasInterrupts(cause), () => Effect.void)
748
755
  )
749
756
  ) as Effect.Effect<void>
750
757
  }
@@ -768,7 +775,7 @@ export const make: <Rpcs extends Rpc.Any, const Flatten extends boolean = false>
768
775
  case "ClientProtocolError": {
769
776
  const exit = Exit.fail(message.error)
770
777
  return Effect.forEach(
771
- entries.keys(),
778
+ Array.from(entries.keys()),
772
779
  (requestId) => write({ _tag: "Exit", clientId: 0, requestId, exit: exit as any })
773
780
  )
774
781
  }
@@ -1042,16 +1049,24 @@ export const layerProtocolHttp = (options: {
1042
1049
  * `RpcSerialization`, connection hooks, ping timeouts, and the configured retry
1043
1050
  * policy.
1044
1051
  *
1052
+ * **Details**
1053
+ *
1054
+ * `pingInterval` defaults to 5 seconds. `pingTimeout` defaults to the interval
1055
+ * and measures time since the last decoded server frame, not the last pong.
1056
+ * The timeout is checked on each ping tick; any decoded frame counts as liveness.
1057
+ *
1045
1058
  * @stability unstable
1046
1059
  * @category protocols
1047
1060
  * @since 4.0.0
1048
1061
  */
1049
1062
  export const makeProtocolSocket = (options?: {
1063
+ readonly pingInterval?: Duration.Input | undefined
1064
+ readonly pingTimeout?: Duration.Input | undefined
1050
1065
  readonly retryTransientErrors?: boolean | undefined
1051
1066
  readonly retryPolicy?: Schedule.Schedule<any, Socket.SocketError> | undefined
1052
1067
  /**
1053
1068
  * Runs for each retried `SocketOpenError` when `retryTransientErrors` is enabled.
1054
- * A missed pong fails in-flight calls and is not reported through this hook.
1069
+ * A ping timeout fails in-flight calls and is not reported through this hook.
1055
1070
  * The returned `Effect<void>` cannot fail with a typed error or require
1056
1071
  * services; defects are logged and ignored so retries can continue.
1057
1072
  */
@@ -1074,7 +1089,7 @@ export const makeProtocolSocket = (options?: {
1074
1089
  // `parser` is replaced on every connect, and a stateful serialization
1075
1090
  // encodes against the connection it is writing to, so the ping is encoded
1076
1091
  // when it is sent rather than once up front.
1077
- const pinger = yield* makePinger(Effect.suspend(() => writer.write(parser.encode(constPing)!)))
1092
+ const pinger = yield* makePinger(Effect.suspend(() => writer.write(parser.encode(constPing)!)), options)
1078
1093
  let currentError: RpcClientError | undefined
1079
1094
 
1080
1095
  const broadcast = (response: FromServerEncoded) =>
@@ -1091,15 +1106,13 @@ export const makeProtocolSocket = (options?: {
1091
1106
  try {
1092
1107
  const responses = parser.decode(data) as Array<FromServerEncoded>
1093
1108
  if (responses.length === 0) return Effect.void
1109
+ pinger.onFrame()
1094
1110
  let i = 0
1095
1111
  return Effect.whileLoop({
1096
1112
  while: () => i < responses.length,
1097
1113
  body: () => {
1098
1114
  const response = responses[i++]
1099
- if (response._tag === "Pong") {
1100
- pinger.onPong()
1101
- return Effect.void
1102
- }
1115
+ if (response._tag === "Pong") return Effect.void
1103
1116
  if (Object.hasOwn(response, "requestId")) {
1104
1117
  const requestId = (response as FromServerEncoded & { readonly requestId: string | number }).requestId
1105
1118
  const clientId = requestClientMap.get(requestId)
@@ -1214,43 +1227,58 @@ const defaultRetryPolicy = Schedule.min([
1214
1227
  Schedule.spaced(5000)
1215
1228
  ])
1216
1229
 
1217
- const makePinger = Effect.fnUntraced(function*<A, E, R>(writePing: Effect.Effect<A, E, R>) {
1218
- let recievedPong = true
1230
+ const makePinger = Effect.fnUntraced(function*<A, E, R>(writePing: Effect.Effect<A, E, R>, options?: {
1231
+ readonly pingInterval?: Duration.Input | undefined
1232
+ readonly pingTimeout?: Duration.Input | undefined
1233
+ }) {
1234
+ const clock = yield* Clock.Clock
1235
+ const interval = options?.pingInterval ?? "5 seconds"
1236
+ const timeoutMillis = Duration.toMillis(options?.pingTimeout ?? interval)
1237
+ let lastSeen = clock.currentTimeMillisUnsafe()
1219
1238
  const latch = Latch.makeUnsafe()
1239
+ const onFrame = () => {
1240
+ lastSeen = clock.currentTimeMillisUnsafe()
1241
+ }
1220
1242
  const reset = () => {
1221
- recievedPong = true
1243
+ onFrame()
1222
1244
  latch.closeUnsafe()
1223
1245
  }
1224
- const onPong = () => {
1225
- recievedPong = true
1226
- }
1227
1246
  yield* Effect.suspend((): Effect.Effect<void, E, R> => {
1228
- if (!recievedPong) return latch.open
1229
- recievedPong = false
1247
+ if (clock.currentTimeMillisUnsafe() - lastSeen > timeoutMillis) return latch.open
1230
1248
  return writePing
1231
1249
  }).pipe(
1232
- Effect.delay("5 seconds"),
1250
+ Effect.delay(interval),
1233
1251
  Effect.ignore,
1234
1252
  Effect.forever,
1235
1253
  Effect.interruptible,
1236
1254
  Effect.forkScoped
1237
1255
  )
1238
- return { timeout: latch.await, reset, onPong } as const
1256
+ return { timeout: latch.await, reset, onFrame } as const
1239
1257
  })
1240
1258
 
1241
1259
  /**
1242
1260
  * Provides a client `Protocol` backed by the current `Socket` and
1243
1261
  * `RpcSerialization` services.
1244
1262
  *
1263
+ * **Details**
1264
+ *
1265
+ * `pingInterval` defaults to 5 seconds. `pingTimeout` defaults to the interval
1266
+ * and measures time since the last decoded server frame, not the last pong.
1267
+ * The timeout is checked on each ping tick; any decoded frame counts as liveness.
1268
+ * `retryPolicy` configures retries after socket errors.
1269
+ *
1245
1270
  * @stability unstable
1246
1271
  * @category layers
1247
1272
  * @since 4.0.0
1248
1273
  */
1249
1274
  export const layerProtocolSocket = (options?: {
1275
+ readonly pingInterval?: Duration.Input | undefined
1276
+ readonly pingTimeout?: Duration.Input | undefined
1250
1277
  readonly retryTransientErrors?: boolean | undefined
1278
+ readonly retryPolicy?: Schedule.Schedule<any, Socket.SocketError> | undefined
1251
1279
  /**
1252
1280
  * Runs for each retried `SocketOpenError` when `retryTransientErrors` is enabled.
1253
- * A missed pong fails in-flight calls and is not reported through this hook.
1281
+ * A ping timeout fails in-flight calls and is not reported through this hook.
1254
1282
  * The returned `Effect<void>` cannot fail with a typed error or require
1255
1283
  * services; defects are logged and ignored so retries can continue.
1256
1284
  */
@@ -44,6 +44,7 @@ import type * as Types from "../Types.ts"
44
44
  import * as Transferable from "../workers/Transferable.ts"
45
45
  import type { WorkerError } from "../workers/WorkerError.ts"
46
46
  import * as WorkerRunner from "../workers/WorkerRunner.ts"
47
+ import * as RpcTracing from "./internal/tracing.ts"
47
48
  import * as Rpc from "./Rpc.ts"
48
49
  import type * as RpcGroup from "./RpcGroup.ts"
49
50
  import type {
@@ -117,7 +118,7 @@ export const makeNoSerialization: <Rpcs extends Rpc.Any>(
117
118
  const enableTracing = options.disableTracing !== true
118
119
  const enableSpanPropagation = options.disableSpanPropagation !== true
119
120
  const supportsAck = options.disableClientAcks !== true
120
- const spanPrefix = options.spanPrefix ?? "RpcServer"
121
+ const spanPrefix = options.spanPrefix
121
122
  const concurrency = options.concurrency ?? "unbounded"
122
123
  const disableFatalDefects = options.disableFatalDefects ?? false
123
124
  const services = yield* Effect.context<Rpc.ToHandler<Rpcs> | Scope.Scope>()
@@ -331,9 +332,10 @@ export const makeNoSerialization: <Rpcs extends Rpc.Any>(
331
332
  requestFiber.context,
332
333
  Tracer.ParentSpan
333
334
  )
334
- effect = Effect.withSpan(effect, `${spanPrefix}.${request.tag}`, {
335
+ effect = Effect.withSpan(effect, RpcTracing.spanName(spanPrefix, request.tag), {
335
336
  captureStackTrace: false,
336
- attributes: options.spanAttributes,
337
+ kind: "server",
338
+ attributes: RpcTracing.spanAttributes(request.tag, options.spanAttributes),
337
339
  parent: enableSpanPropagation && request.spanId
338
340
  ? Tracer.externalSpan({
339
341
  traceId: request.traceId!,
@@ -359,11 +361,14 @@ export const makeNoSerialization: <Rpcs extends Rpc.Any>(
359
361
  )
360
362
  const fiber = trackFiber(
361
363
  runFork(
362
- effect,
364
+ // Register before the handler runs to catch synchronous cancellation.
365
+ Effect.withFiber((fiber) => {
366
+ client.fibers.set(request.id, fiber)
367
+ return effect
368
+ }),
363
369
  isUninterruptible ? { uninterruptible: true } : undefined
364
370
  )
365
371
  )
366
- client.fibers.set(request.id, fiber)
367
372
  fiber.addObserver(function onExit(exit: Exit.Exit<any, any>): void {
368
373
  if (deferred) {
369
374
  const fiber = trackFiber(runFork(Effect.onExit(Deferred.await(deferred), (exit) =>
@@ -564,6 +569,10 @@ export const make: <Rpcs extends Rpc.Any>(
564
569
  supportsTransferables
565
570
  } = yield* Protocol
566
571
  const encodeDefectUnsafe = Schema.encodeSync(codecFor(Schema.Defect()))
572
+ // Unknown tags have no RPC schema, so use a defect-only exit schema.
573
+ const encodeUnknownRequestExit: Schemas["encodeExit"] = Schema.encodeUnknownEffect(
574
+ codecFor(Schema.Exit(Schema.Never, Schema.Never, Schema.Defect()))
575
+ ) as any
567
576
  const services = yield* Effect.context<Rpc.ToHandler<Rpcs> | Rpc.Middleware<Rpcs>>()
568
577
  const scope = yield* Scope.make()
569
578
 
@@ -629,7 +638,6 @@ export const make: <Rpcs extends Rpc.Any>(
629
638
  u: NonEmptyReadonlyArray<unknown>
630
639
  ) => Effect.Effect<NonEmptyReadonlyArray<unknown>, Schema.SchemaError>
631
640
  readonly encodeExit: (u: unknown) => Effect.Effect<ResponseExitEncoded["exit"], Schema.SchemaError>
632
- readonly encodeDefect: (u: unknown) => Effect.Effect<unknown, Schema.SchemaError>
633
641
  readonly context: Context.Context<never>
634
642
  readonly collector?: Transferable.Collector["Service"] | undefined
635
643
  }
@@ -648,7 +656,6 @@ export const make: <Rpcs extends Rpc.Any>(
648
656
  )
649
657
  ) as any,
650
658
  encodeExit: Schema.encodeUnknownEffect(codecFor(Rpc.exitSchema(rpc as any))) as any,
651
- encodeDefect: Schema.encodeUnknownEffect(codecFor(rpc.defectSchema)) as any,
652
659
  context: entry.context
653
660
  }
654
661
  schemasCache.set(rpc, schemas)
@@ -694,7 +701,7 @@ export const make: <Rpcs extends Rpc.Any>(
694
701
  client.schemas.delete(requestId)
695
702
  const defect = Cause.squash(Cause.map(cause, (e) => SchemaIssue.defaultFormatter(e.issue)))
696
703
  return Effect.andThen(
697
- sendRequestDefect(client, requestId, schemas.encodeDefect, defect),
704
+ sendRequestDefect(client, requestId, schemas.encodeExit, defect),
698
705
  server.write(client.id, { _tag: "Interrupt", requestId, interruptors: [] })
699
706
  )
700
707
  })
@@ -703,22 +710,14 @@ export const make: <Rpcs extends Rpc.Any>(
703
710
  const sendRequestDefect = (
704
711
  client: Client,
705
712
  requestId: RequestId,
706
- encodeDefect: (u: unknown) => Effect.Effect<unknown, Schema.SchemaError>,
713
+ encodeExit: Schemas["encodeExit"],
707
714
  defect: unknown
708
715
  ) =>
709
716
  Effect.catchCause(
710
- Effect.flatMap(encodeDefect(defect), (encodedDefect) =>
711
- send(client.id, {
712
- _tag: "Exit",
713
- requestId,
714
- exit: {
715
- _tag: "Failure",
716
- cause: [{
717
- _tag: "Die",
718
- defect: encodedDefect
719
- }]
720
- }
721
- })),
717
+ Effect.flatMap(
718
+ encodeExit(Exit.die(defect)),
719
+ (exit) => send(client.id, responseEnvelope(requestId, "Exit", exit))
720
+ ),
722
721
  (cause) => sendDefect(client, Cause.squash(cause))
723
722
  )
724
723
 
@@ -784,7 +783,7 @@ export const make: <Rpcs extends Rpc.Any>(
784
783
  }
785
784
  const rpc = group.requests.get(tag)
786
785
  if (!rpc) {
787
- return sendRequestDefect(client, requestId, (defect) => Effect.succeed(defect), `Unknown request tag: ${tag}`)
786
+ return sendRequestDefect(client, requestId, encodeUnknownRequestExit, `Unknown request tag: ${tag}`)
788
787
  }
789
788
  const schemas = getSchemas(rpc as any)
790
789
  const decoded = schemas.decode(request.payload)
@@ -798,7 +797,7 @@ export const make: <Rpcs extends Rpc.Any>(
798
797
  Effect.provideContext(decoded, schemas.context),
799
798
  {
800
799
  onFailure: (error) =>
801
- sendRequestDefect(client, requestId, schemas.encodeDefect, SchemaIssue.defaultFormatter(error.issue)),
800
+ sendRequestDefect(client, requestId, schemas.encodeExit, SchemaIssue.defaultFormatter(error.issue)),
802
801
  onSuccess: (payload) => writeDecodedRequest(client, requestId, schemas, request, payload)
803
802
  }
804
803
  )
@@ -1181,7 +1180,10 @@ export const makeProtocolWithHttpEffect: (
1181
1180
  })
1182
1181
  }
1183
1182
 
1184
- const initialChunk = yield* Queue.takeAll(queue) as any as Effect.Effect<NonEmptyReadonlyArray<Uint8Array>>
1183
+ const initialChunk = yield* Pull.catchDone(
1184
+ Queue.takeAll(queue as Queue.Dequeue<Uint8Array, Cause.Done>),
1185
+ () => Effect.succeed([])
1186
+ )
1185
1187
  if (queue.state._tag === "Done") {
1186
1188
  return HttpServerResponse.uint8Array(mergeUint8Arrays(initialChunk), {
1187
1189
  contentType: serialization.contentType
@@ -1392,13 +1394,14 @@ export const makeProtocolStdio = Effect.gen(function*() {
1392
1394
  Effect.sandbox,
1393
1395
  Effect.tapError(Effect.logError),
1394
1396
  Effect.retry(Schedule.spaced(500)),
1395
- Effect.ensuring(Effect.forkDetach(Fiber.interrupt(fiber), { startImmediately: true })),
1397
+ Effect.andThen(() => writeRequest(0, constEof)),
1396
1398
  Effect.forkScoped
1397
1399
  )
1398
1400
 
1399
1401
  yield* Stream.fromQueue(queue).pipe(
1400
1402
  Stream.run(stdio.stdout()),
1401
1403
  Effect.retry(Schedule.spaced(500)),
1404
+ Effect.ensuring(Effect.forkDetach(Fiber.interrupt(fiber), { startImmediately: true })),
1402
1405
  Effect.forkScoped
1403
1406
  )
1404
1407
 
package/src/rpc/Utils.ts CHANGED
@@ -1,10 +1,5 @@
1
1
  /**
2
- * Helps RPC protocol services buffer messages until their receive loop starts.
3
- *
4
- * Client and server protocol constructors use these helpers to expose a stable
5
- * service before the active receiver is installed. Writes made before `run`
6
- * starts are buffered with their current `Context`, then replayed once the
7
- * receiver is ready.
2
+ * Buffers RPC protocol messages until their receive loop starts.
8
3
  *
9
4
  * @stability unstable
10
5
  * @since 4.0.0
@@ -16,9 +11,8 @@ import type { Protocol } from "./RpcClient.ts"
16
11
  import type { FromServerEncoded } from "./RpcMessage.ts"
17
12
 
18
13
  /**
19
- * Builds a service with a `run` method that buffers writes until `run` installs
20
- * a writer, replays buffered writes with their original contexts, and restores
21
- * the previous writer when the run ends.
14
+ * Buffers writes until `run` replays them with their original contexts and
15
+ * installs the writer. Restores the previous writer when `run` ends.
22
16
  *
23
17
  * @stability unstable
24
18
  * @category services
@@ -43,12 +37,12 @@ export const withRun = <
43
37
  run(f) {
44
38
  return semaphore.withPermits(1)(Effect.gen(function*() {
45
39
  const prev = write
46
- write = f
47
40
 
48
41
  for (const [args, context] of buffer) {
49
42
  yield* Effect.provideContext(Effect.suspend(() => f(...args)), context)
50
43
  }
51
44
  buffer = []
45
+ write = f
52
46
 
53
47
  return yield* Effect.onExit(Effect.never, () => {
54
48
  write = prev
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Names the span after the RPC method, or `${spanPrefix}.${tag}` when a prefix
3
+ * is configured.
4
+ *
5
+ * @internal
6
+ */
7
+ export const spanName = (spanPrefix: string | undefined, tag: string): string =>
8
+ spanPrefix === undefined ? tag : `${spanPrefix}.${tag}`
9
+
10
+ /**
11
+ * Default RPC span attributes, overridden by user `spanAttributes`.
12
+ *
13
+ * @internal
14
+ */
15
+ export const spanAttributes = (
16
+ tag: string,
17
+ attributes: Record<string, unknown> | undefined
18
+ ): Record<string, unknown> => ({
19
+ "rpc.system.name": "effect_rpc",
20
+ "rpc.method": tag,
21
+ ...attributes
22
+ })
@@ -65,12 +65,15 @@ const makeObjectBase = (
65
65
  const runFallback: SchemaIssueParser = (input, options) =>
66
66
  (fallback ??= ast.getParser(compile, compileField))(input, options)
67
67
  const resume = (
68
- state: ObjectParserState,
68
+ snapshot: ObjectParserState,
69
69
  index: number,
70
70
  pending: Effect.Effect<unknown, SchemaIssue.Issue, any>
71
71
  ): Effect.Effect<unknown, SchemaIssue.Issue, any> => {
72
72
  const property = properties![index]
73
73
  return Effect.flatMap(Effect.exit(pending), (exit) => {
74
+ // Each execution gets its own output; `issues` is still undefined here
75
+ // because `errors: "all"` is routed to the fallback before suspending.
76
+ const state: ObjectParserState = { ...snapshot, out: { ...snapshot.out } }
74
77
  const terminal = SchemaAST.stepProperty(state, property, exit)
75
78
  if (terminal) return terminal
76
79
  const done = () => InternalParser.succeed(state.out)
@@ -394,7 +394,7 @@ export const makeWithTransaction = <I, S>(options: {
394
394
  Effect.uninterruptibleMask((restore) =>
395
395
  Effect.useSpan(
396
396
  "sql.transaction",
397
- { kind: "client" },
397
+ { kind: "internal" },
398
398
  (span) =>
399
399
  Effect.withFiber<A, E | SqlError, R>((fiber) => {
400
400
  for (const [key, value] of options.spanAttributes) {
@@ -427,18 +427,18 @@ export const makeWithTransaction = <I, S>(options: {
427
427
  let effect: Effect.Effect<void>
428
428
  if (Exit.isSuccess(exit)) {
429
429
  if (id === 0) {
430
- span.event("db.transaction.commit", clock.currentTimeNanosUnsafe())
430
+ span.event("effect.sql.transaction.commit", clock.currentTimeNanosUnsafe())
431
431
  const onCommitFailure = options.onCommitFailure
432
432
  effect = Effect.orDie(options.commit(conn))
433
433
  if (onCommitFailure) {
434
434
  effect = Effect.onError(effect, () => Effect.orDie(onCommitFailure(conn)))
435
435
  }
436
436
  } else {
437
- span.event("db.transaction.savepoint", clock.currentTimeNanosUnsafe())
437
+ span.event("effect.sql.transaction.savepoint", clock.currentTimeNanosUnsafe())
438
438
  effect = Effect.void
439
439
  }
440
440
  } else {
441
- span.event("db.transaction.rollback", clock.currentTimeNanosUnsafe())
441
+ span.event("effect.sql.transaction.rollback", clock.currentTimeNanosUnsafe())
442
442
  effect = Effect.orDie(
443
443
  id > 0
444
444
  ? options.rollbackSavepoint(conn, id)