effect 4.0.4 → 4.0.6

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 (1079) hide show
  1. package/ai-docs/package.json +1 -1
  2. package/ai-docs/src/06_schedule/10_schedules.ts +5 -4
  3. package/ai-docs/src/52_graphql/10_basics.ts +19 -13
  4. package/ai-docs/src/52_graphql/30_batching.ts +6 -4
  5. package/ai-docs/src/52_graphql/40_aliased-batching.ts +6 -4
  6. package/ai-docs/tsconfig.json +3 -1
  7. package/dist/Array.d.ts +207 -58
  8. package/dist/Array.d.ts.map +1 -1
  9. package/dist/Array.js +45 -22
  10. package/dist/Array.js.map +1 -1
  11. package/dist/Bytes.d.ts +79 -0
  12. package/dist/Bytes.d.ts.map +1 -0
  13. package/dist/Bytes.js +109 -0
  14. package/dist/Bytes.js.map +1 -0
  15. package/dist/Channel.d.ts +187 -14
  16. package/dist/Channel.d.ts.map +1 -1
  17. package/dist/Channel.js +142 -33
  18. package/dist/Channel.js.map +1 -1
  19. package/dist/ChannelSchema.d.ts.map +1 -1
  20. package/dist/ChannelSchema.js.map +1 -1
  21. package/dist/Chunk.d.ts +39 -21
  22. package/dist/Chunk.d.ts.map +1 -1
  23. package/dist/Chunk.js +26 -17
  24. package/dist/Chunk.js.map +1 -1
  25. package/dist/Config.d.ts.map +1 -1
  26. package/dist/Config.js +8 -3
  27. package/dist/Config.js.map +1 -1
  28. package/dist/ConfigProvider.d.ts.map +1 -1
  29. package/dist/ConfigProvider.js +34 -32
  30. package/dist/ConfigProvider.js.map +1 -1
  31. package/dist/Cron.d.ts +2 -2
  32. package/dist/Cron.d.ts.map +1 -1
  33. package/dist/Cron.js +6 -3
  34. package/dist/Cron.js.map +1 -1
  35. package/dist/Duration.d.ts.map +1 -1
  36. package/dist/Duration.js +58 -21
  37. package/dist/Duration.js.map +1 -1
  38. package/dist/Effect.d.ts +548 -182
  39. package/dist/Effect.d.ts.map +1 -1
  40. package/dist/Effect.js +261 -76
  41. package/dist/Effect.js.map +1 -1
  42. package/dist/Equivalence.d.ts +2 -1
  43. package/dist/Equivalence.d.ts.map +1 -1
  44. package/dist/Equivalence.js +12 -8
  45. package/dist/Equivalence.js.map +1 -1
  46. package/dist/Exit.d.ts +24 -9
  47. package/dist/Exit.d.ts.map +1 -1
  48. package/dist/Exit.js +8 -3
  49. package/dist/Exit.js.map +1 -1
  50. package/dist/FiberHandle.d.ts +2 -0
  51. package/dist/FiberHandle.d.ts.map +1 -1
  52. package/dist/FiberHandle.js +9 -4
  53. package/dist/FiberHandle.js.map +1 -1
  54. package/dist/FiberMap.d.ts +2 -0
  55. package/dist/FiberMap.d.ts.map +1 -1
  56. package/dist/FiberMap.js +5 -2
  57. package/dist/FiberMap.js.map +1 -1
  58. package/dist/FileSystem.d.ts +28 -9
  59. package/dist/FileSystem.d.ts.map +1 -1
  60. package/dist/FileSystem.js +3 -0
  61. package/dist/FileSystem.js.map +1 -1
  62. package/dist/Graph.d.ts.map +1 -1
  63. package/dist/Graph.js.map +1 -1
  64. package/dist/HashSet.d.ts.map +1 -1
  65. package/dist/HashSet.js.map +1 -1
  66. package/dist/Iterable.d.ts.map +1 -1
  67. package/dist/Iterable.js +18 -17
  68. package/dist/Iterable.js.map +1 -1
  69. package/dist/JsonSchema.d.ts +9 -3
  70. package/dist/JsonSchema.d.ts.map +1 -1
  71. package/dist/JsonSchema.js +19 -3
  72. package/dist/JsonSchema.js.map +1 -1
  73. package/dist/Layer.d.ts.map +1 -1
  74. package/dist/Layer.js +2 -2
  75. package/dist/Layer.js.map +1 -1
  76. package/dist/ManagedRuntime.d.ts +19 -1
  77. package/dist/ManagedRuntime.d.ts.map +1 -1
  78. package/dist/ManagedRuntime.js +62 -6
  79. package/dist/ManagedRuntime.js.map +1 -1
  80. package/dist/Match.d.ts +20 -6
  81. package/dist/Match.d.ts.map +1 -1
  82. package/dist/Match.js +2 -2
  83. package/dist/Match.js.map +1 -1
  84. package/dist/Metric.d.ts +132 -0
  85. package/dist/Metric.d.ts.map +1 -1
  86. package/dist/Metric.js +197 -25
  87. package/dist/Metric.js.map +1 -1
  88. package/dist/MutableHashMap.d.ts.map +1 -1
  89. package/dist/MutableHashMap.js.map +1 -1
  90. package/dist/Number.js +2 -2
  91. package/dist/Number.js.map +1 -1
  92. package/dist/Optic.d.ts.map +1 -1
  93. package/dist/Optic.js.map +1 -1
  94. package/dist/Path.d.ts +37 -5
  95. package/dist/Path.d.ts.map +1 -1
  96. package/dist/Path.js +44 -6
  97. package/dist/Path.js.map +1 -1
  98. package/dist/PubSub.d.ts.map +1 -1
  99. package/dist/PubSub.js +12 -7
  100. package/dist/PubSub.js.map +1 -1
  101. package/dist/Queue.d.ts +4 -1
  102. package/dist/Queue.d.ts.map +1 -1
  103. package/dist/Queue.js +4 -1
  104. package/dist/Queue.js.map +1 -1
  105. package/dist/Random.d.ts.map +1 -1
  106. package/dist/Random.js +1 -1
  107. package/dist/Random.js.map +1 -1
  108. package/dist/RcMap.d.ts +12 -7
  109. package/dist/RcMap.d.ts.map +1 -1
  110. package/dist/RcMap.js +9 -6
  111. package/dist/RcMap.js.map +1 -1
  112. package/dist/Record.d.ts +51 -0
  113. package/dist/Record.d.ts.map +1 -1
  114. package/dist/Record.js +17 -0
  115. package/dist/Record.js.map +1 -1
  116. package/dist/Ref.d.ts.map +1 -1
  117. package/dist/Ref.js.map +1 -1
  118. package/dist/References.d.ts +5 -4
  119. package/dist/References.d.ts.map +1 -1
  120. package/dist/References.js +5 -4
  121. package/dist/References.js.map +1 -1
  122. package/dist/RequestResolver.d.ts +31 -1
  123. package/dist/RequestResolver.d.ts.map +1 -1
  124. package/dist/RequestResolver.js +39 -4
  125. package/dist/RequestResolver.js.map +1 -1
  126. package/dist/Resource.js +1 -1
  127. package/dist/Resource.js.map +1 -1
  128. package/dist/Runtime.d.ts +3 -3
  129. package/dist/Runtime.d.ts.map +1 -1
  130. package/dist/Runtime.js +18 -15
  131. package/dist/Runtime.js.map +1 -1
  132. package/dist/Schedule.d.ts.map +1 -1
  133. package/dist/Schedule.js.map +1 -1
  134. package/dist/Schema.d.ts +383 -326
  135. package/dist/Schema.d.ts.map +1 -1
  136. package/dist/Schema.js +338 -17
  137. package/dist/Schema.js.map +1 -1
  138. package/dist/SchemaAST.d.ts +5 -5
  139. package/dist/SchemaAST.d.ts.map +1 -1
  140. package/dist/SchemaAST.js +24 -8
  141. package/dist/SchemaAST.js.map +1 -1
  142. package/dist/SchemaGetter.d.ts +8 -3
  143. package/dist/SchemaGetter.d.ts.map +1 -1
  144. package/dist/SchemaGetter.js +15 -5
  145. package/dist/SchemaGetter.js.map +1 -1
  146. package/dist/SchemaIssue.d.ts +4 -4
  147. package/dist/SchemaIssue.d.ts.map +1 -1
  148. package/dist/SchemaIssue.js +29 -51
  149. package/dist/SchemaIssue.js.map +1 -1
  150. package/dist/SchemaRepresentation.d.ts +56 -1
  151. package/dist/SchemaRepresentation.d.ts.map +1 -1
  152. package/dist/SchemaRepresentation.js +18 -0
  153. package/dist/SchemaRepresentation.js.map +1 -1
  154. package/dist/SchemaTransformation.d.ts +1 -1
  155. package/dist/SchemaTransformation.js +1 -1
  156. package/dist/Scope.d.ts +12 -2
  157. package/dist/Scope.d.ts.map +1 -1
  158. package/dist/Scope.js +5 -0
  159. package/dist/Scope.js.map +1 -1
  160. package/dist/ScopedCache.d.ts +10 -7
  161. package/dist/ScopedCache.d.ts.map +1 -1
  162. package/dist/ScopedCache.js +9 -5
  163. package/dist/ScopedCache.js.map +1 -1
  164. package/dist/SemVer.d.ts +1196 -0
  165. package/dist/SemVer.d.ts.map +1 -0
  166. package/dist/SemVer.js +756 -0
  167. package/dist/SemVer.js.map +1 -0
  168. package/dist/SemVerRange.d.ts +559 -0
  169. package/dist/SemVerRange.d.ts.map +1 -0
  170. package/dist/SemVerRange.js +551 -0
  171. package/dist/SemVerRange.js.map +1 -0
  172. package/dist/Sink.d.ts.map +1 -1
  173. package/dist/Sink.js +6 -2
  174. package/dist/Sink.js.map +1 -1
  175. package/dist/Stream.d.ts +235 -8
  176. package/dist/Stream.d.ts.map +1 -1
  177. package/dist/Stream.js +145 -60
  178. package/dist/Stream.js.map +1 -1
  179. package/dist/String.d.ts +16 -2
  180. package/dist/String.d.ts.map +1 -1
  181. package/dist/String.js +25 -10
  182. package/dist/String.js.map +1 -1
  183. package/dist/TextDiff.d.ts +399 -0
  184. package/dist/TextDiff.d.ts.map +1 -0
  185. package/dist/TextDiff.js +634 -0
  186. package/dist/TextDiff.js.map +1 -0
  187. package/dist/TxHashMap.d.ts.map +1 -1
  188. package/dist/TxHashMap.js.map +1 -1
  189. package/dist/TxHashSet.d.ts.map +1 -1
  190. package/dist/TxHashSet.js.map +1 -1
  191. package/dist/TxRef.d.ts.map +1 -1
  192. package/dist/TxRef.js +3 -2
  193. package/dist/TxRef.js.map +1 -1
  194. package/dist/ai/AiError.d.ts +78 -14
  195. package/dist/ai/AiError.d.ts.map +1 -1
  196. package/dist/ai/AiError.js +51 -3
  197. package/dist/ai/AiError.js.map +1 -1
  198. package/dist/ai/Chat.d.ts +1 -2
  199. package/dist/ai/Chat.d.ts.map +1 -1
  200. package/dist/ai/Chat.js +6 -3
  201. package/dist/ai/Chat.js.map +1 -1
  202. package/dist/ai/Decision.d.ts +116 -20
  203. package/dist/ai/Decision.d.ts.map +1 -1
  204. package/dist/ai/Decision.js +37 -3
  205. package/dist/ai/Decision.js.map +1 -1
  206. package/dist/ai/DecisionModel.d.ts +129 -11
  207. package/dist/ai/DecisionModel.d.ts.map +1 -1
  208. package/dist/ai/DecisionModel.js +183 -95
  209. package/dist/ai/DecisionModel.js.map +1 -1
  210. package/dist/ai/EmbeddingModel.d.ts +10 -0
  211. package/dist/ai/EmbeddingModel.d.ts.map +1 -1
  212. package/dist/ai/EmbeddingModel.js +21 -7
  213. package/dist/ai/EmbeddingModel.js.map +1 -1
  214. package/dist/ai/LanguageModel.d.ts.map +1 -1
  215. package/dist/ai/LanguageModel.js +47 -35
  216. package/dist/ai/LanguageModel.js.map +1 -1
  217. package/dist/ai/McpClient.d.ts +289 -0
  218. package/dist/ai/McpClient.d.ts.map +1 -0
  219. package/dist/ai/McpClient.js +819 -0
  220. package/dist/ai/McpClient.js.map +1 -0
  221. package/dist/ai/McpClientError.d.ts +254 -0
  222. package/dist/ai/McpClientError.d.ts.map +1 -0
  223. package/dist/ai/McpClientError.js +260 -0
  224. package/dist/ai/McpClientError.js.map +1 -0
  225. package/dist/ai/McpProtocol.d.ts +2 -2
  226. package/dist/ai/McpProtocol.d.ts.map +1 -1
  227. package/dist/ai/McpSchema.d.ts +368 -235
  228. package/dist/ai/McpSchema.d.ts.map +1 -1
  229. package/dist/ai/McpSchema.js +94 -24
  230. package/dist/ai/McpSchema.js.map +1 -1
  231. package/dist/ai/McpServer.d.ts +6 -52
  232. package/dist/ai/McpServer.d.ts.map +1 -1
  233. package/dist/ai/McpServer.js +27 -50
  234. package/dist/ai/McpServer.js.map +1 -1
  235. package/dist/ai/Prompt.d.ts +22 -20
  236. package/dist/ai/Prompt.d.ts.map +1 -1
  237. package/dist/ai/Prompt.js +23 -1
  238. package/dist/ai/Prompt.js.map +1 -1
  239. package/dist/ai/Response.d.ts +148 -4
  240. package/dist/ai/Response.d.ts.map +1 -1
  241. package/dist/ai/Response.js +35 -37
  242. package/dist/ai/Response.js.map +1 -1
  243. package/dist/ai/Tool.d.ts +12 -4
  244. package/dist/ai/Tool.d.ts.map +1 -1
  245. package/dist/ai/Tool.js.map +1 -1
  246. package/dist/ai/Toolkit.d.ts +48 -1
  247. package/dist/ai/Toolkit.d.ts.map +1 -1
  248. package/dist/ai/Toolkit.js +65 -12
  249. package/dist/ai/Toolkit.js.map +1 -1
  250. package/dist/ai/index.d.ts +10 -0
  251. package/dist/ai/index.d.ts.map +1 -1
  252. package/dist/ai/index.js +10 -0
  253. package/dist/ai/index.js.map +1 -1
  254. package/dist/ai/internal/mcpCore.js.map +1 -1
  255. package/dist/ai/internal/mcpProtocol/v2024_11_05.js +1 -1
  256. package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
  257. package/dist/ai/internal/mcpProtocol/v2025_03_26.js +1 -1
  258. package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
  259. package/dist/ai/internal/mcpProtocol/v2025_06_18.js +2 -2
  260. package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
  261. package/dist/ai/internal/mcpProtocol/v2025_11_25.js +2 -2
  262. package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
  263. package/dist/ai/internal/mcpProtocol/v2026_07_28.js +4 -7
  264. package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
  265. package/dist/ai/internal/mcpProtocol.js +16 -2
  266. package/dist/ai/internal/mcpProtocol.js.map +1 -1
  267. package/dist/ai/internal/mcpRuntime.js +3 -4
  268. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  269. package/dist/ai/internal/mcpSchema/v2024_11_05.js +19 -13
  270. package/dist/ai/internal/mcpSchema/v2024_11_05.js.map +1 -1
  271. package/dist/ai/internal/mcpSchema/v2025_03_26.js +3 -2
  272. package/dist/ai/internal/mcpSchema/v2025_03_26.js.map +1 -1
  273. package/dist/ai/internal/mcpSchema/v2025_06_18.js +7 -7
  274. package/dist/ai/internal/mcpSchema/v2025_06_18.js.map +1 -1
  275. package/dist/ai/internal/mcpSchema/v2025_11_25.js +8 -8
  276. package/dist/ai/internal/mcpSchema/v2025_11_25.js.map +1 -1
  277. package/dist/ai/internal/mcpSchema/v2026_07_28.js +43 -42
  278. package/dist/ai/internal/mcpSchema/v2026_07_28.js.map +1 -1
  279. package/dist/cli/CliError.d.ts +42 -2
  280. package/dist/cli/CliError.d.ts.map +1 -1
  281. package/dist/cli/CliError.js +44 -5
  282. package/dist/cli/CliError.js.map +1 -1
  283. package/dist/cli/Command.d.ts +286 -2
  284. package/dist/cli/Command.d.ts.map +1 -1
  285. package/dist/cli/Command.js +107 -6
  286. package/dist/cli/Command.js.map +1 -1
  287. package/dist/cli/Completions.d.ts +10 -0
  288. package/dist/cli/Completions.d.ts.map +1 -1
  289. package/dist/cli/Completions.js.map +1 -1
  290. package/dist/cli/Flag.d.ts +215 -0
  291. package/dist/cli/Flag.d.ts.map +1 -1
  292. package/dist/cli/Flag.js +89 -0
  293. package/dist/cli/Flag.js.map +1 -1
  294. package/dist/cli/GlobalFlag.d.ts.map +1 -1
  295. package/dist/cli/GlobalFlag.js +3 -3
  296. package/dist/cli/GlobalFlag.js.map +1 -1
  297. package/dist/cli/Param.d.ts +194 -0
  298. package/dist/cli/Param.d.ts.map +1 -1
  299. package/dist/cli/Param.js +86 -0
  300. package/dist/cli/Param.js.map +1 -1
  301. package/dist/cli/TerminalCapabilities.d.ts +84 -0
  302. package/dist/cli/TerminalCapabilities.d.ts.map +1 -0
  303. package/dist/cli/TerminalCapabilities.js +122 -0
  304. package/dist/cli/TerminalCapabilities.js.map +1 -0
  305. package/dist/cli/index.d.ts +5 -0
  306. package/dist/cli/index.d.ts.map +1 -1
  307. package/dist/cli/index.js +5 -0
  308. package/dist/cli/index.js.map +1 -1
  309. package/dist/cli/internal/command.d.ts +2 -1
  310. package/dist/cli/internal/command.d.ts.map +1 -1
  311. package/dist/cli/internal/command.js +7 -3
  312. package/dist/cli/internal/command.js.map +1 -1
  313. package/dist/cli/internal/completions/bash.js +7 -5
  314. package/dist/cli/internal/completions/bash.js.map +1 -1
  315. package/dist/cli/internal/completions/descriptor.js +16 -1
  316. package/dist/cli/internal/completions/descriptor.js.map +1 -1
  317. package/dist/cli/internal/completions/fish.js +12 -10
  318. package/dist/cli/internal/completions/fish.js.map +1 -1
  319. package/dist/cli/internal/completions/powershell.js +20 -10
  320. package/dist/cli/internal/completions/powershell.js.map +1 -1
  321. package/dist/cli/internal/completions/zsh.js +15 -8
  322. package/dist/cli/internal/completions/zsh.js.map +1 -1
  323. package/dist/cli/internal/formatter.d.ts +2 -0
  324. package/dist/cli/internal/formatter.d.ts.map +1 -0
  325. package/dist/cli/internal/formatter.js +15 -0
  326. package/dist/cli/internal/formatter.js.map +1 -0
  327. package/dist/cli/internal/lexer.js +24 -10
  328. package/dist/cli/internal/lexer.js.map +1 -1
  329. package/dist/cli/internal/parser.js +35 -15
  330. package/dist/cli/internal/parser.js.map +1 -1
  331. package/dist/cli/internal/wizard.d.ts.map +1 -1
  332. package/dist/cli/internal/wizard.js +2 -1
  333. package/dist/cli/internal/wizard.js.map +1 -1
  334. package/dist/cluster/ClusterCron.d.ts +29 -1
  335. package/dist/cluster/ClusterCron.d.ts.map +1 -1
  336. package/dist/cluster/ClusterCron.js +64 -32
  337. package/dist/cluster/ClusterCron.js.map +1 -1
  338. package/dist/cluster/ClusterMetrics.d.ts +143 -7
  339. package/dist/cluster/ClusterMetrics.d.ts.map +1 -1
  340. package/dist/cluster/ClusterMetrics.js +151 -7
  341. package/dist/cluster/ClusterMetrics.js.map +1 -1
  342. package/dist/cluster/ClusterWorkflowEngine.d.ts +2 -1
  343. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  344. package/dist/cluster/ClusterWorkflowEngine.js +98 -18
  345. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  346. package/dist/cluster/Entity.d.ts +2 -0
  347. package/dist/cluster/Entity.d.ts.map +1 -1
  348. package/dist/cluster/Entity.js.map +1 -1
  349. package/dist/cluster/MessageStorage.d.ts +21 -0
  350. package/dist/cluster/MessageStorage.d.ts.map +1 -1
  351. package/dist/cluster/MessageStorage.js +20 -12
  352. package/dist/cluster/MessageStorage.js.map +1 -1
  353. package/dist/cluster/Runners.d.ts.map +1 -1
  354. package/dist/cluster/Runners.js +96 -37
  355. package/dist/cluster/Runners.js.map +1 -1
  356. package/dist/cluster/Sharding.d.ts +1 -0
  357. package/dist/cluster/Sharding.d.ts.map +1 -1
  358. package/dist/cluster/Sharding.js +95 -32
  359. package/dist/cluster/Sharding.js.map +1 -1
  360. package/dist/cluster/ShardingConfig.d.ts +20 -0
  361. package/dist/cluster/ShardingConfig.d.ts.map +1 -1
  362. package/dist/cluster/ShardingConfig.js +4 -0
  363. package/dist/cluster/ShardingConfig.js.map +1 -1
  364. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  365. package/dist/cluster/SqlMessageStorage.js +40 -50
  366. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  367. package/dist/cluster/SqlRunnerStorage.d.ts +2 -2
  368. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  369. package/dist/cluster/SqlRunnerStorage.js +10 -4
  370. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  371. package/dist/cluster/internal/entityManager.js +66 -9
  372. package/dist/cluster/internal/entityManager.js.map +1 -1
  373. package/dist/devtools/DevTools.d.ts +3 -2
  374. package/dist/devtools/DevTools.d.ts.map +1 -1
  375. package/dist/devtools/DevTools.js +3 -2
  376. package/dist/devtools/DevTools.js.map +1 -1
  377. package/dist/devtools/DevToolsClient.d.ts +11 -0
  378. package/dist/devtools/DevToolsClient.d.ts.map +1 -1
  379. package/dist/devtools/DevToolsClient.js +31 -4
  380. package/dist/devtools/DevToolsClient.js.map +1 -1
  381. package/dist/encoding/Base64Url.d.ts +29 -0
  382. package/dist/encoding/Base64Url.d.ts.map +1 -1
  383. package/dist/encoding/Base64Url.js +29 -0
  384. package/dist/encoding/Base64Url.js.map +1 -1
  385. package/dist/encoding/Ini.d.ts.map +1 -1
  386. package/dist/encoding/Ini.js +3 -0
  387. package/dist/encoding/Ini.js.map +1 -1
  388. package/dist/encoding/JsonArray.d.ts +270 -0
  389. package/dist/encoding/JsonArray.d.ts.map +1 -0
  390. package/dist/encoding/JsonArray.js +691 -0
  391. package/dist/encoding/JsonArray.js.map +1 -0
  392. package/dist/encoding/Ndjson.d.ts +43 -4
  393. package/dist/encoding/Ndjson.d.ts.map +1 -1
  394. package/dist/encoding/Ndjson.js +169 -18
  395. package/dist/encoding/Ndjson.js.map +1 -1
  396. package/dist/encoding/SchemaBinary.d.ts +9 -1
  397. package/dist/encoding/SchemaBinary.d.ts.map +1 -1
  398. package/dist/encoding/SchemaBinary.js +12 -19
  399. package/dist/encoding/SchemaBinary.js.map +1 -1
  400. package/dist/encoding/Sse.js +1 -1
  401. package/dist/encoding/Sse.js.map +1 -1
  402. package/dist/encoding/Tar.d.ts +309 -0
  403. package/dist/encoding/Tar.d.ts.map +1 -0
  404. package/dist/encoding/Tar.js +1182 -0
  405. package/dist/encoding/Tar.js.map +1 -0
  406. package/dist/encoding/Toml.js +3 -3
  407. package/dist/encoding/Toml.js.map +1 -1
  408. package/dist/encoding/Xml.d.ts +464 -0
  409. package/dist/encoding/Xml.d.ts.map +1 -0
  410. package/dist/encoding/Xml.js +1619 -0
  411. package/dist/encoding/Xml.js.map +1 -0
  412. package/dist/encoding/Yaml.d.ts +6 -2
  413. package/dist/encoding/Yaml.d.ts.map +1 -1
  414. package/dist/encoding/Yaml.js +97 -34
  415. package/dist/encoding/Yaml.js.map +1 -1
  416. package/dist/encoding/Zip.d.ts +413 -0
  417. package/dist/encoding/Zip.d.ts.map +1 -0
  418. package/dist/encoding/Zip.js +1255 -0
  419. package/dist/encoding/Zip.js.map +1 -0
  420. package/dist/encoding/index.d.ts +20 -0
  421. package/dist/encoding/index.d.ts.map +1 -1
  422. package/dist/encoding/index.js +20 -0
  423. package/dist/encoding/index.js.map +1 -1
  424. package/dist/eventlog/EventJournal.d.ts +90 -5
  425. package/dist/eventlog/EventJournal.d.ts.map +1 -1
  426. package/dist/eventlog/EventJournal.js +488 -228
  427. package/dist/eventlog/EventJournal.js.map +1 -1
  428. package/dist/eventlog/EventLog.d.ts +180 -12
  429. package/dist/eventlog/EventLog.d.ts.map +1 -1
  430. package/dist/eventlog/EventLog.js +394 -146
  431. package/dist/eventlog/EventLog.js.map +1 -1
  432. package/dist/eventlog/EventLogEncryption.d.ts +36 -30
  433. package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
  434. package/dist/eventlog/EventLogEncryption.js +97 -38
  435. package/dist/eventlog/EventLogEncryption.js.map +1 -1
  436. package/dist/eventlog/EventLogMessage.d.ts +74 -34
  437. package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
  438. package/dist/eventlog/EventLogMessage.js +45 -11
  439. package/dist/eventlog/EventLogMessage.js.map +1 -1
  440. package/dist/eventlog/EventLogRemote.d.ts +45 -8
  441. package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
  442. package/dist/eventlog/EventLogRemote.js +51 -14
  443. package/dist/eventlog/EventLogRemote.js.map +1 -1
  444. package/dist/eventlog/EventLogServer.d.ts +46 -3
  445. package/dist/eventlog/EventLogServer.d.ts.map +1 -1
  446. package/dist/eventlog/EventLogServer.js +119 -19
  447. package/dist/eventlog/EventLogServer.js.map +1 -1
  448. package/dist/eventlog/EventLogServerEncrypted.d.ts +23 -33
  449. package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  450. package/dist/eventlog/EventLogServerEncrypted.js +97 -70
  451. package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
  452. package/dist/eventlog/EventLogServerUnencrypted.d.ts +39 -5
  453. package/dist/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
  454. package/dist/eventlog/EventLogServerUnencrypted.js +151 -69
  455. package/dist/eventlog/EventLogServerUnencrypted.js.map +1 -1
  456. package/dist/eventlog/EventRow.d.ts +288 -0
  457. package/dist/eventlog/EventRow.d.ts.map +1 -0
  458. package/dist/eventlog/EventRow.js +435 -0
  459. package/dist/eventlog/EventRow.js.map +1 -0
  460. package/dist/eventlog/SqlEventJournal.d.ts +18 -18
  461. package/dist/eventlog/SqlEventJournal.d.ts.map +1 -1
  462. package/dist/eventlog/SqlEventJournal.js +387 -159
  463. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  464. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +10 -18
  465. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
  466. package/dist/eventlog/SqlEventLogServerEncrypted.js +179 -69
  467. package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  468. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts +23 -3
  469. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
  470. package/dist/eventlog/SqlEventLogServerUnencrypted.js +102 -51
  471. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  472. package/dist/eventlog/index.d.ts +5 -0
  473. package/dist/eventlog/index.d.ts.map +1 -1
  474. package/dist/eventlog/index.js +5 -0
  475. package/dist/eventlog/index.js.map +1 -1
  476. package/dist/eventlog/internal/conflicts.d.ts +47 -0
  477. package/dist/eventlog/internal/conflicts.d.ts.map +1 -0
  478. package/dist/eventlog/internal/conflicts.js +92 -0
  479. package/dist/eventlog/internal/conflicts.js.map +1 -0
  480. package/dist/graphql/GraphQLClient.d.ts.map +1 -1
  481. package/dist/graphql/GraphQLClient.js +12 -5
  482. package/dist/graphql/GraphQLClient.js.map +1 -1
  483. package/dist/graphql/GraphQLClientError.d.ts +2 -2
  484. package/dist/graphql/GraphQLClientError.d.ts.map +1 -1
  485. package/dist/graphql/GraphQLClientError.js +4 -18
  486. package/dist/graphql/GraphQLClientError.js.map +1 -1
  487. package/dist/graphql/GraphQLProtocol.d.ts +252 -11
  488. package/dist/graphql/GraphQLProtocol.d.ts.map +1 -1
  489. package/dist/graphql/GraphQLProtocol.js +99 -8
  490. package/dist/graphql/GraphQLProtocol.js.map +1 -1
  491. package/dist/graphql/GraphQLResolver.d.ts +3 -1
  492. package/dist/graphql/GraphQLResolver.d.ts.map +1 -1
  493. package/dist/graphql/GraphQLResolver.js +91 -19
  494. package/dist/graphql/GraphQLResolver.js.map +1 -1
  495. package/dist/http/FetchHttpClient.d.ts +13 -3
  496. package/dist/http/FetchHttpClient.d.ts.map +1 -1
  497. package/dist/http/FetchHttpClient.js +56 -6
  498. package/dist/http/FetchHttpClient.js.map +1 -1
  499. package/dist/http/FindMyWay/internal/router.js +12 -1
  500. package/dist/http/FindMyWay/internal/router.js.map +1 -1
  501. package/dist/http/Headers.d.ts +230 -3
  502. package/dist/http/Headers.d.ts.map +1 -1
  503. package/dist/http/Headers.js +267 -5
  504. package/dist/http/Headers.js.map +1 -1
  505. package/dist/http/HttpClient.d.ts +105 -0
  506. package/dist/http/HttpClient.d.ts.map +1 -1
  507. package/dist/http/HttpClient.js +69 -17
  508. package/dist/http/HttpClient.js.map +1 -1
  509. package/dist/http/HttpClientError.d.ts.map +1 -1
  510. package/dist/http/HttpClientError.js +8 -6
  511. package/dist/http/HttpClientError.js.map +1 -1
  512. package/dist/http/HttpClientRequest.d.ts +274 -7
  513. package/dist/http/HttpClientRequest.d.ts.map +1 -1
  514. package/dist/http/HttpClientRequest.js +91 -3
  515. package/dist/http/HttpClientRequest.js.map +1 -1
  516. package/dist/http/HttpClientResponse.d.ts +53 -0
  517. package/dist/http/HttpClientResponse.d.ts.map +1 -1
  518. package/dist/http/HttpClientResponse.js +47 -0
  519. package/dist/http/HttpClientResponse.js.map +1 -1
  520. package/dist/http/HttpEffect.d.ts +6 -2
  521. package/dist/http/HttpEffect.d.ts.map +1 -1
  522. package/dist/http/HttpEffect.js +21 -17
  523. package/dist/http/HttpEffect.js.map +1 -1
  524. package/dist/http/HttpIncomingMessage.d.ts +2 -1
  525. package/dist/http/HttpIncomingMessage.d.ts.map +1 -1
  526. package/dist/http/HttpIncomingMessage.js +3 -23
  527. package/dist/http/HttpIncomingMessage.js.map +1 -1
  528. package/dist/http/HttpMiddleware.d.ts +179 -2
  529. package/dist/http/HttpMiddleware.d.ts.map +1 -1
  530. package/dist/http/HttpMiddleware.js +226 -18
  531. package/dist/http/HttpMiddleware.js.map +1 -1
  532. package/dist/http/HttpRouter.d.ts.map +1 -1
  533. package/dist/http/HttpRouter.js +58 -14
  534. package/dist/http/HttpRouter.js.map +1 -1
  535. package/dist/http/HttpServerError.d.ts +5 -2
  536. package/dist/http/HttpServerError.d.ts.map +1 -1
  537. package/dist/http/HttpServerError.js +11 -7
  538. package/dist/http/HttpServerError.js.map +1 -1
  539. package/dist/http/HttpServerRequest.d.ts +25 -5
  540. package/dist/http/HttpServerRequest.d.ts.map +1 -1
  541. package/dist/http/HttpServerRequest.js +38 -12
  542. package/dist/http/HttpServerRequest.js.map +1 -1
  543. package/dist/http/HttpServerResponse.d.ts +17 -8
  544. package/dist/http/HttpServerResponse.d.ts.map +1 -1
  545. package/dist/http/HttpServerResponse.js +37 -21
  546. package/dist/http/HttpServerResponse.js.map +1 -1
  547. package/dist/http/HttpStaticServer.d.ts +0 -12
  548. package/dist/http/HttpStaticServer.d.ts.map +1 -1
  549. package/dist/http/HttpStaticServer.js +25 -17
  550. package/dist/http/HttpStaticServer.js.map +1 -1
  551. package/dist/http/HttpTraceContext.js +1 -1
  552. package/dist/http/HttpTraceContext.js.map +1 -1
  553. package/dist/http/MultipartParser/internal/contentType.d.ts +15 -1
  554. package/dist/http/MultipartParser/internal/contentType.d.ts.map +1 -1
  555. package/dist/http/MultipartParser/internal/contentType.js +87 -5
  556. package/dist/http/MultipartParser/internal/contentType.js.map +1 -1
  557. package/dist/http/MultipartParser/internal/headers.d.ts.map +1 -1
  558. package/dist/http/MultipartParser/internal/headers.js +4 -12
  559. package/dist/http/MultipartParser/internal/headers.js.map +1 -1
  560. package/dist/http/MultipartParser/internal/multipart.d.ts.map +1 -1
  561. package/dist/http/MultipartParser/internal/multipart.js +6 -27
  562. package/dist/http/MultipartParser/internal/multipart.js.map +1 -1
  563. package/dist/http/Url.d.ts.map +1 -1
  564. package/dist/http/Url.js +8 -2
  565. package/dist/http/Url.js.map +1 -1
  566. package/dist/http/UrlParams.d.ts +112 -8
  567. package/dist/http/UrlParams.d.ts.map +1 -1
  568. package/dist/http/UrlParams.js +141 -14
  569. package/dist/http/UrlParams.js.map +1 -1
  570. package/dist/http/internal/compression.d.ts +1 -1
  571. package/dist/http/internal/compression.d.ts.map +1 -1
  572. package/dist/http/internal/compression.js +2 -10
  573. package/dist/http/internal/compression.js.map +1 -1
  574. package/dist/http/internal/compressionBody.d.ts +2 -0
  575. package/dist/http/internal/compressionBody.d.ts.map +1 -0
  576. package/dist/http/internal/compressionBody.js +36 -0
  577. package/dist/http/internal/compressionBody.js.map +1 -0
  578. package/dist/http/internal/decompression.d.ts +2 -0
  579. package/dist/http/internal/decompression.d.ts.map +1 -0
  580. package/dist/http/internal/decompression.js +168 -0
  581. package/dist/http/internal/decompression.js.map +1 -0
  582. package/dist/http/internal/lazyStream.d.ts +2 -0
  583. package/dist/http/internal/lazyStream.d.ts.map +1 -0
  584. package/dist/http/internal/lazyStream.js +18 -0
  585. package/dist/http/internal/lazyStream.js.map +1 -0
  586. package/dist/http/internal/requestState.d.ts +2 -0
  587. package/dist/http/internal/requestState.d.ts.map +1 -0
  588. package/dist/http/internal/requestState.js +28 -0
  589. package/dist/http/internal/requestState.js.map +1 -0
  590. package/dist/http/internal/tracing.js +14 -4
  591. package/dist/http/internal/tracing.js.map +1 -1
  592. package/dist/http/internal/urlParams.d.ts +2 -0
  593. package/dist/http/internal/urlParams.d.ts.map +1 -0
  594. package/dist/http/internal/urlParams.js +4 -0
  595. package/dist/http/internal/urlParams.js.map +1 -0
  596. package/dist/http/internal/webResponse.d.ts +2 -0
  597. package/dist/http/internal/webResponse.d.ts.map +1 -0
  598. package/dist/http/internal/webResponse.js +12 -0
  599. package/dist/http/internal/webResponse.js.map +1 -0
  600. package/dist/http-api/HttpApi.js +1 -1
  601. package/dist/http-api/HttpApi.js.map +1 -1
  602. package/dist/http-api/HttpApiBuilder.d.ts.map +1 -1
  603. package/dist/http-api/HttpApiBuilder.js +121 -18
  604. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  605. package/dist/http-api/HttpApiClient.d.ts +29 -4
  606. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  607. package/dist/http-api/HttpApiClient.js +85 -24
  608. package/dist/http-api/HttpApiClient.js.map +1 -1
  609. package/dist/http-api/HttpApiEndpoint.d.ts +55 -29
  610. package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
  611. package/dist/http-api/HttpApiEndpoint.js +49 -5
  612. package/dist/http-api/HttpApiEndpoint.js.map +1 -1
  613. package/dist/http-api/HttpApiError.d.ts +58 -0
  614. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  615. package/dist/http-api/HttpApiError.js +38 -12
  616. package/dist/http-api/HttpApiError.js.map +1 -1
  617. package/dist/http-api/HttpApiScalar.d.ts +2 -1
  618. package/dist/http-api/HttpApiScalar.d.ts.map +1 -1
  619. package/dist/http-api/HttpApiScalar.js +6 -3
  620. package/dist/http-api/HttpApiScalar.js.map +1 -1
  621. package/dist/http-api/HttpApiSchema.d.ts +191 -9
  622. package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
  623. package/dist/http-api/HttpApiSchema.js +137 -4
  624. package/dist/http-api/HttpApiSchema.js.map +1 -1
  625. package/dist/http-api/HttpApiSwagger.d.ts +5 -0
  626. package/dist/http-api/HttpApiSwagger.d.ts.map +1 -1
  627. package/dist/http-api/HttpApiSwagger.js +14 -4
  628. package/dist/http-api/HttpApiSwagger.js.map +1 -1
  629. package/dist/http-api/HttpApiTest.d.ts +13 -2
  630. package/dist/http-api/HttpApiTest.d.ts.map +1 -1
  631. package/dist/http-api/HttpApiTest.js +30 -9
  632. package/dist/http-api/HttpApiTest.js.map +1 -1
  633. package/dist/http-api/OpenApi.d.ts +17 -3
  634. package/dist/http-api/OpenApi.d.ts.map +1 -1
  635. package/dist/http-api/OpenApi.js +57 -32
  636. package/dist/http-api/OpenApi.js.map +1 -1
  637. package/dist/http-api/internal/path.js +35 -10
  638. package/dist/http-api/internal/path.js.map +1 -1
  639. package/dist/index.d.ts +20 -0
  640. package/dist/index.d.ts.map +1 -1
  641. package/dist/index.js +20 -0
  642. package/dist/index.js.map +1 -1
  643. package/dist/internal/core.js +18 -2
  644. package/dist/internal/core.js.map +1 -1
  645. package/dist/internal/dateTime.js +19 -7
  646. package/dist/internal/dateTime.js.map +1 -1
  647. package/dist/internal/effect.js +89 -76
  648. package/dist/internal/effect.js.map +1 -1
  649. package/dist/internal/graphql.js +12 -2
  650. package/dist/internal/graphql.js.map +1 -1
  651. package/dist/internal/hashMap.js +2 -2
  652. package/dist/internal/hashMap.js.map +1 -1
  653. package/dist/internal/hydration.d.ts +2 -0
  654. package/dist/internal/hydration.d.ts.map +1 -0
  655. package/dist/internal/hydration.js +15 -0
  656. package/dist/internal/hydration.js.map +1 -0
  657. package/dist/internal/inflate.d.ts +2 -0
  658. package/dist/internal/inflate.d.ts.map +1 -0
  659. package/dist/internal/inflate.js +680 -0
  660. package/dist/internal/inflate.js.map +1 -0
  661. package/dist/internal/record.js +6 -0
  662. package/dist/internal/record.js.map +1 -1
  663. package/dist/internal/request.js +20 -7
  664. package/dist/internal/request.js.map +1 -1
  665. package/dist/internal/schedule.js +17 -22
  666. package/dist/internal/schedule.js.map +1 -1
  667. package/dist/internal/schema/fromJsonSchemaDocument.js +136 -126
  668. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  669. package/dist/internal/schema/interpreter.js +51 -36
  670. package/dist/internal/schema/interpreter.js.map +1 -1
  671. package/dist/internal/schema/standardSchema.js +34 -33
  672. package/dist/internal/schema/standardSchema.js.map +1 -1
  673. package/dist/internal/schema/toCodeDocument.js +7 -2
  674. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  675. package/dist/internal/schema/toCodec.js +86 -1
  676. package/dist/internal/schema/toCodec.js.map +1 -1
  677. package/dist/internal/schema/toFormatter.js +5 -5
  678. package/dist/internal/schema/toFormatter.js.map +1 -1
  679. package/dist/internal/schema/toJsonSchemaDocument.js +60 -38
  680. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
  681. package/dist/internal/trie.js +1 -3
  682. package/dist/internal/trie.js.map +1 -1
  683. package/dist/internal/uuid.js +7 -3
  684. package/dist/internal/uuid.js.map +1 -1
  685. package/dist/internal/version.js +1 -1
  686. package/dist/net/NetAddress.d.ts.map +1 -1
  687. package/dist/net/NetAddress.js +2 -8
  688. package/dist/net/NetAddress.js.map +1 -1
  689. package/dist/observability/Otlp.d.ts +15 -0
  690. package/dist/observability/Otlp.d.ts.map +1 -1
  691. package/dist/observability/Otlp.js +3 -0
  692. package/dist/observability/Otlp.js.map +1 -1
  693. package/dist/observability/OtlpExporter.d.ts +8 -0
  694. package/dist/observability/OtlpExporter.d.ts.map +1 -1
  695. package/dist/observability/OtlpExporter.js +15 -13
  696. package/dist/observability/OtlpExporter.js.map +1 -1
  697. package/dist/observability/OtlpLogger.d.ts +17 -0
  698. package/dist/observability/OtlpLogger.d.ts.map +1 -1
  699. package/dist/observability/OtlpLogger.js +14 -1
  700. package/dist/observability/OtlpLogger.js.map +1 -1
  701. package/dist/observability/OtlpMetrics.d.ts +17 -0
  702. package/dist/observability/OtlpMetrics.d.ts.map +1 -1
  703. package/dist/observability/OtlpMetrics.js +18 -3
  704. package/dist/observability/OtlpMetrics.js.map +1 -1
  705. package/dist/observability/OtlpResource.d.ts +3 -1
  706. package/dist/observability/OtlpResource.d.ts.map +1 -1
  707. package/dist/observability/OtlpResource.js +11 -4
  708. package/dist/observability/OtlpResource.js.map +1 -1
  709. package/dist/observability/OtlpSerialization.d.ts +5 -0
  710. package/dist/observability/OtlpSerialization.d.ts.map +1 -1
  711. package/dist/observability/OtlpSerialization.js +14 -3
  712. package/dist/observability/OtlpSerialization.js.map +1 -1
  713. package/dist/observability/OtlpTracer.d.ts +17 -0
  714. package/dist/observability/OtlpTracer.d.ts.map +1 -1
  715. package/dist/observability/OtlpTracer.js +15 -2
  716. package/dist/observability/OtlpTracer.js.map +1 -1
  717. package/dist/observability/internal/protobuf.d.ts +0 -9
  718. package/dist/observability/internal/protobuf.d.ts.map +1 -1
  719. package/dist/observability/internal/protobuf.js +2 -10
  720. package/dist/observability/internal/protobuf.js.map +1 -1
  721. package/dist/persistence/PersistedCache.d.ts.map +1 -1
  722. package/dist/persistence/PersistedCache.js +1 -1
  723. package/dist/persistence/PersistedCache.js.map +1 -1
  724. package/dist/persistence/PersistedQueue.d.ts +6 -2
  725. package/dist/persistence/PersistedQueue.d.ts.map +1 -1
  726. package/dist/persistence/PersistedQueue.js +162 -84
  727. package/dist/persistence/PersistedQueue.js.map +1 -1
  728. package/dist/persistence/Persistence.d.ts +28 -0
  729. package/dist/persistence/Persistence.d.ts.map +1 -1
  730. package/dist/persistence/Persistence.js +36 -8
  731. package/dist/persistence/Persistence.js.map +1 -1
  732. package/dist/persistence/RateLimiter.d.ts.map +1 -1
  733. package/dist/persistence/RateLimiter.js +8 -12
  734. package/dist/persistence/RateLimiter.js.map +1 -1
  735. package/dist/persistence/UserDirectories.d.ts +129 -0
  736. package/dist/persistence/UserDirectories.d.ts.map +1 -0
  737. package/dist/persistence/UserDirectories.js +178 -0
  738. package/dist/persistence/UserDirectories.js.map +1 -0
  739. package/dist/persistence/index.d.ts +5 -0
  740. package/dist/persistence/index.d.ts.map +1 -1
  741. package/dist/persistence/index.js +5 -0
  742. package/dist/persistence/index.js.map +1 -1
  743. package/dist/process/ChildProcess.d.ts +2 -1
  744. package/dist/process/ChildProcess.d.ts.map +1 -1
  745. package/dist/process/ChildProcess.js.map +1 -1
  746. package/dist/reactivity/AsyncResult.d.ts +6 -0
  747. package/dist/reactivity/AsyncResult.d.ts.map +1 -1
  748. package/dist/reactivity/AsyncResult.js +28 -1
  749. package/dist/reactivity/AsyncResult.js.map +1 -1
  750. package/dist/reactivity/Atom.d.ts +69 -30
  751. package/dist/reactivity/Atom.d.ts.map +1 -1
  752. package/dist/reactivity/Atom.js +40 -15
  753. package/dist/reactivity/Atom.js.map +1 -1
  754. package/dist/reactivity/AtomHttpApi.d.ts +5 -5
  755. package/dist/reactivity/AtomHttpApi.d.ts.map +1 -1
  756. package/dist/reactivity/AtomHttpApi.js +1 -1
  757. package/dist/reactivity/AtomHttpApi.js.map +1 -1
  758. package/dist/reactivity/AtomRegistry.d.ts +2 -2
  759. package/dist/reactivity/AtomRegistry.d.ts.map +1 -1
  760. package/dist/reactivity/AtomRegistry.js +47 -10
  761. package/dist/reactivity/AtomRegistry.js.map +1 -1
  762. package/dist/reactivity/AtomRpc.d.ts +3 -3
  763. package/dist/reactivity/AtomRpc.d.ts.map +1 -1
  764. package/dist/reactivity/AtomRpc.js +1 -1
  765. package/dist/reactivity/AtomRpc.js.map +1 -1
  766. package/dist/reactivity/Hydration.d.ts.map +1 -1
  767. package/dist/reactivity/Hydration.js +46 -12
  768. package/dist/reactivity/Hydration.js.map +1 -1
  769. package/dist/reactivity/Reactivity.d.ts +71 -7
  770. package/dist/reactivity/Reactivity.d.ts.map +1 -1
  771. package/dist/reactivity/Reactivity.js +21 -12
  772. package/dist/reactivity/Reactivity.js.map +1 -1
  773. package/dist/rpc/Rpc.d.ts +18 -0
  774. package/dist/rpc/Rpc.d.ts.map +1 -1
  775. package/dist/rpc/Rpc.js +20 -0
  776. package/dist/rpc/Rpc.js.map +1 -1
  777. package/dist/rpc/RpcClient.d.ts +26 -2
  778. package/dist/rpc/RpcClient.d.ts.map +1 -1
  779. package/dist/rpc/RpcClient.js +202 -61
  780. package/dist/rpc/RpcClient.js.map +1 -1
  781. package/dist/rpc/RpcSerialization.d.ts +15 -0
  782. package/dist/rpc/RpcSerialization.d.ts.map +1 -1
  783. package/dist/rpc/RpcSerialization.js +21 -5
  784. package/dist/rpc/RpcSerialization.js.map +1 -1
  785. package/dist/rpc/RpcServer.d.ts.map +1 -1
  786. package/dist/rpc/RpcServer.js +9 -18
  787. package/dist/rpc/RpcServer.js.map +1 -1
  788. package/dist/schema/Model.d.ts +1 -1
  789. package/dist/schema/VariantSchema.d.ts +22 -3
  790. package/dist/schema/VariantSchema.d.ts.map +1 -1
  791. package/dist/schema/VariantSchema.js +32 -18
  792. package/dist/schema/VariantSchema.js.map +1 -1
  793. package/dist/socket/Socket.d.ts +23 -1
  794. package/dist/socket/Socket.d.ts.map +1 -1
  795. package/dist/socket/Socket.js +36 -3
  796. package/dist/socket/Socket.js.map +1 -1
  797. package/dist/sql/Migrator.d.ts.map +1 -1
  798. package/dist/sql/Migrator.js +15 -3
  799. package/dist/sql/Migrator.js.map +1 -1
  800. package/dist/sql/SqlClient.d.ts +151 -12
  801. package/dist/sql/SqlClient.d.ts.map +1 -1
  802. package/dist/sql/SqlClient.js +156 -34
  803. package/dist/sql/SqlClient.js.map +1 -1
  804. package/dist/sql/SqlResolver.d.ts +9 -0
  805. package/dist/sql/SqlResolver.d.ts.map +1 -1
  806. package/dist/sql/SqlResolver.js +9 -0
  807. package/dist/sql/SqlResolver.js.map +1 -1
  808. package/dist/sql/Statement.d.ts +3 -1
  809. package/dist/sql/Statement.d.ts.map +1 -1
  810. package/dist/sql/Statement.js +24 -5
  811. package/dist/sql/Statement.js.map +1 -1
  812. package/dist/testing/TestClock.d.ts +16 -3
  813. package/dist/testing/TestClock.d.ts.map +1 -1
  814. package/dist/testing/TestClock.js +115 -23
  815. package/dist/testing/TestClock.js.map +1 -1
  816. package/dist/testing/TestSchema.d.ts +7 -1
  817. package/dist/testing/TestSchema.d.ts.map +1 -1
  818. package/dist/testing/TestSchema.js +9 -3
  819. package/dist/testing/TestSchema.js.map +1 -1
  820. package/dist/workflow/Activity.js +1 -0
  821. package/dist/workflow/Activity.js.map +1 -1
  822. package/dist/workflow/Workflow.d.ts +22 -0
  823. package/dist/workflow/Workflow.d.ts.map +1 -1
  824. package/dist/workflow/Workflow.js +15 -3
  825. package/dist/workflow/Workflow.js.map +1 -1
  826. package/dist/workflow/WorkflowEngine.d.ts +20 -1
  827. package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
  828. package/dist/workflow/WorkflowEngine.js +52 -24
  829. package/dist/workflow/WorkflowEngine.js.map +1 -1
  830. package/package.json +13 -3
  831. package/src/Array.ts +223 -61
  832. package/src/Bytes.ts +111 -0
  833. package/src/Channel.ts +287 -439
  834. package/src/ChannelSchema.ts +1 -49
  835. package/src/Chunk.ts +55 -61
  836. package/src/Config.ts +12 -86
  837. package/src/ConfigProvider.ts +41 -44
  838. package/src/Cron.ts +6 -3
  839. package/src/Duration.ts +70 -21
  840. package/src/Effect.ts +642 -220
  841. package/src/Equivalence.ts +7 -4
  842. package/src/Exit.ts +24 -9
  843. package/src/FiberHandle.ts +10 -9
  844. package/src/FiberMap.ts +13 -66
  845. package/src/FileSystem.ts +33 -9
  846. package/src/Graph.ts +171 -1263
  847. package/src/HashSet.ts +0 -60
  848. package/src/Iterable.ts +15 -14
  849. package/src/JsonSchema.ts +28 -3
  850. package/src/Layer.ts +2 -2
  851. package/src/ManagedRuntime.ts +72 -6
  852. package/src/Match.ts +65 -12
  853. package/src/Metric.ts +249 -507
  854. package/src/MutableHashMap.ts +4 -473
  855. package/src/Number.ts +2 -2
  856. package/src/Optic.ts +17 -332
  857. package/src/Path.ts +61 -8
  858. package/src/PubSub.ts +12 -7
  859. package/src/Queue.ts +5 -37
  860. package/src/Random.ts +1 -1
  861. package/src/RcMap.ts +14 -8
  862. package/src/Record.ts +51 -0
  863. package/src/Ref.ts +7 -104
  864. package/src/References.ts +5 -4
  865. package/src/RequestResolver.ts +46 -87
  866. package/src/Resource.ts +1 -1
  867. package/src/Runtime.ts +19 -18
  868. package/src/Schedule.ts +2 -94
  869. package/src/Schema.ts +596 -348
  870. package/src/SchemaAST.ts +20 -9
  871. package/src/SchemaGetter.ts +22 -5
  872. package/src/SchemaIssue.ts +44 -53
  873. package/src/SchemaRepresentation.ts +64 -1
  874. package/src/SchemaTransformation.ts +1 -1
  875. package/src/Scope.ts +12 -2
  876. package/src/ScopedCache.ts +17 -142
  877. package/src/SemVer.ts +1528 -0
  878. package/src/SemVerRange.ts +883 -0
  879. package/src/Sink.ts +6 -2
  880. package/src/Stream.ts +334 -1011
  881. package/src/String.ts +25 -12
  882. package/src/TextDiff.ts +766 -0
  883. package/src/TxHashMap.ts +1 -103
  884. package/src/TxHashSet.ts +48 -753
  885. package/src/TxRef.ts +4 -2
  886. package/src/ai/AiError.ts +69 -5
  887. package/src/ai/Chat.ts +10 -5
  888. package/src/ai/Decision.ts +119 -22
  889. package/src/ai/DecisionModel.ts +265 -109
  890. package/src/ai/EmbeddingModel.ts +25 -13
  891. package/src/ai/LanguageModel.ts +57 -51
  892. package/src/ai/McpClient.ts +1211 -0
  893. package/src/ai/McpClientError.ts +329 -0
  894. package/src/ai/McpProtocol.ts +2 -2
  895. package/src/ai/McpSchema.ts +153 -35
  896. package/src/ai/McpServer.ts +232 -275
  897. package/src/ai/Prompt.ts +49 -35
  898. package/src/ai/Response.ts +195 -65
  899. package/src/ai/Tool.ts +12 -4
  900. package/src/ai/Toolkit.ts +78 -10
  901. package/src/ai/index.ts +12 -0
  902. package/src/ai/internal/mcpCore.ts +13 -14
  903. package/src/ai/internal/mcpProtocol/v2024_11_05.ts +1 -1
  904. package/src/ai/internal/mcpProtocol/v2025_03_26.ts +1 -1
  905. package/src/ai/internal/mcpProtocol/v2025_06_18.ts +3 -3
  906. package/src/ai/internal/mcpProtocol/v2025_11_25.ts +3 -3
  907. package/src/ai/internal/mcpProtocol/v2026_07_28.ts +12 -14
  908. package/src/ai/internal/mcpProtocol.ts +22 -2
  909. package/src/ai/internal/mcpRuntime.ts +3 -4
  910. package/src/ai/internal/mcpSchema/v2024_11_05.ts +20 -13
  911. package/src/ai/internal/mcpSchema/v2025_03_26.ts +4 -2
  912. package/src/ai/internal/mcpSchema/v2025_06_18.ts +7 -7
  913. package/src/ai/internal/mcpSchema/v2025_11_25.ts +8 -8
  914. package/src/ai/internal/mcpSchema/v2026_07_28.ts +44 -42
  915. package/src/cli/CliError.ts +49 -4
  916. package/src/cli/Command.ts +316 -9
  917. package/src/cli/Completions.ts +10 -0
  918. package/src/cli/Flag.ts +218 -0
  919. package/src/cli/GlobalFlag.ts +3 -3
  920. package/src/cli/Param.ts +218 -0
  921. package/src/cli/TerminalCapabilities.ts +156 -0
  922. package/src/cli/index.ts +6 -0
  923. package/src/cli/internal/command.ts +10 -4
  924. package/src/cli/internal/completions/bash.ts +7 -5
  925. package/src/cli/internal/completions/descriptor.ts +20 -1
  926. package/src/cli/internal/completions/fish.ts +12 -10
  927. package/src/cli/internal/completions/powershell.ts +25 -13
  928. package/src/cli/internal/completions/zsh.ts +15 -8
  929. package/src/cli/internal/formatter.ts +18 -0
  930. package/src/cli/internal/lexer.ts +12 -5
  931. package/src/cli/internal/parser.ts +43 -14
  932. package/src/cli/internal/wizard.ts +2 -1
  933. package/src/cluster/ClusterCron.ts +94 -35
  934. package/src/cluster/ClusterMetrics.ts +149 -7
  935. package/src/cluster/ClusterWorkflowEngine.ts +164 -53
  936. package/src/cluster/Entity.ts +4 -0
  937. package/src/cluster/MessageStorage.ts +21 -3
  938. package/src/cluster/Runners.ts +145 -72
  939. package/src/cluster/Sharding.ts +118 -38
  940. package/src/cluster/ShardingConfig.ts +15 -0
  941. package/src/cluster/SqlMessageStorage.ts +58 -55
  942. package/src/cluster/SqlRunnerStorage.ts +10 -4
  943. package/src/cluster/internal/entityManager.ts +81 -11
  944. package/src/devtools/DevTools.ts +3 -2
  945. package/src/devtools/DevToolsClient.ts +27 -10
  946. package/src/encoding/Base64Url.ts +31 -0
  947. package/src/encoding/Ini.ts +3 -0
  948. package/src/encoding/JsonArray.ts +849 -0
  949. package/src/encoding/Ndjson.ts +211 -20
  950. package/src/encoding/SchemaBinary.ts +14 -48
  951. package/src/encoding/Sse.ts +1 -1
  952. package/src/encoding/Tar.ts +1417 -0
  953. package/src/encoding/Toml.ts +3 -3
  954. package/src/encoding/Xml.ts +2037 -0
  955. package/src/encoding/Yaml.ts +108 -36
  956. package/src/encoding/Zip.ts +1558 -0
  957. package/src/encoding/index.ts +24 -0
  958. package/src/eventlog/EventJournal.ts +611 -227
  959. package/src/eventlog/EventLog.ts +496 -196
  960. package/src/eventlog/EventLogEncryption.ts +128 -43
  961. package/src/eventlog/EventLogMessage.ts +62 -11
  962. package/src/eventlog/EventLogRemote.ts +77 -21
  963. package/src/eventlog/EventLogServer.ts +162 -20
  964. package/src/eventlog/EventLogServerEncrypted.ts +121 -80
  965. package/src/eventlog/EventLogServerUnencrypted.ts +180 -77
  966. package/src/eventlog/EventRow.ts +706 -0
  967. package/src/eventlog/SqlEventJournal.ts +453 -173
  968. package/src/eventlog/SqlEventLogServerEncrypted.ts +212 -83
  969. package/src/eventlog/SqlEventLogServerUnencrypted.ts +141 -62
  970. package/src/eventlog/index.ts +6 -0
  971. package/src/eventlog/internal/conflicts.ts +123 -0
  972. package/src/graphql/GraphQLClient.ts +17 -5
  973. package/src/graphql/GraphQLClientError.ts +5 -12
  974. package/src/graphql/GraphQLProtocol.ts +277 -20
  975. package/src/graphql/GraphQLResolver.ts +109 -230
  976. package/src/http/FetchHttpClient.ts +61 -8
  977. package/src/http/FindMyWay/internal/router.ts +13 -1
  978. package/src/http/Headers.ts +343 -163
  979. package/src/http/HttpClient.ts +144 -136
  980. package/src/http/HttpClientError.ts +10 -6
  981. package/src/http/HttpClientRequest.ts +315 -11
  982. package/src/http/HttpClientResponse.ts +71 -0
  983. package/src/http/HttpEffect.ts +25 -33
  984. package/src/http/HttpIncomingMessage.ts +3 -23
  985. package/src/http/HttpMiddleware.ts +265 -28
  986. package/src/http/HttpRouter.ts +67 -14
  987. package/src/http/HttpServerError.ts +14 -7
  988. package/src/http/HttpServerRequest.ts +73 -14
  989. package/src/http/HttpServerResponse.ts +49 -23
  990. package/src/http/HttpStaticServer.ts +29 -19
  991. package/src/http/HttpTraceContext.ts +1 -1
  992. package/src/http/MultipartParser/internal/contentType.ts +107 -6
  993. package/src/http/MultipartParser/internal/headers.ts +4 -16
  994. package/src/http/MultipartParser/internal/multipart.ts +10 -32
  995. package/src/http/Url.ts +8 -2
  996. package/src/http/UrlParams.ts +225 -26
  997. package/src/http/internal/compression.ts +3 -17
  998. package/src/http/internal/compressionBody.ts +56 -0
  999. package/src/http/internal/decompression.ts +235 -0
  1000. package/src/http/internal/lazyStream.ts +25 -0
  1001. package/src/http/internal/requestState.ts +33 -0
  1002. package/src/http/internal/tracing.ts +21 -4
  1003. package/src/http/internal/urlParams.ts +5 -0
  1004. package/src/http/internal/webResponse.ts +20 -0
  1005. package/src/http-api/HttpApi.ts +1 -1
  1006. package/src/http-api/HttpApiBuilder.ts +151 -23
  1007. package/src/http-api/HttpApiClient.ts +160 -31
  1008. package/src/http-api/HttpApiEndpoint.ts +144 -33
  1009. package/src/http-api/HttpApiError.ts +55 -0
  1010. package/src/http-api/HttpApiScalar.ts +4 -3
  1011. package/src/http-api/HttpApiSchema.ts +275 -13
  1012. package/src/http-api/HttpApiSwagger.ts +11 -4
  1013. package/src/http-api/HttpApiTest.ts +33 -9
  1014. package/src/http-api/OpenApi.ts +84 -42
  1015. package/src/http-api/internal/path.ts +40 -12
  1016. package/src/index.ts +24 -0
  1017. package/src/internal/core.ts +22 -2
  1018. package/src/internal/dateTime.ts +20 -7
  1019. package/src/internal/effect.ts +125 -88
  1020. package/src/internal/graphql.ts +30 -7
  1021. package/src/internal/hashMap.ts +2 -2
  1022. package/src/internal/hydration.ts +15 -0
  1023. package/src/internal/inflate.ts +710 -0
  1024. package/src/internal/record.ts +6 -0
  1025. package/src/internal/request.ts +21 -6
  1026. package/src/internal/schedule.ts +20 -39
  1027. package/src/internal/schema/fromJsonSchemaDocument.ts +262 -193
  1028. package/src/internal/schema/interpreter.ts +58 -45
  1029. package/src/internal/schema/standardSchema.ts +32 -30
  1030. package/src/internal/schema/toCodeDocument.ts +8 -3
  1031. package/src/internal/schema/toCodec.ts +116 -1
  1032. package/src/internal/schema/toFormatter.ts +6 -6
  1033. package/src/internal/schema/toJsonSchemaDocument.ts +69 -39
  1034. package/src/internal/trie.ts +1 -3
  1035. package/src/internal/uuid.ts +15 -10
  1036. package/src/internal/version.ts +1 -1
  1037. package/src/net/NetAddress.ts +2 -9
  1038. package/src/observability/Otlp.ts +18 -0
  1039. package/src/observability/OtlpExporter.ts +19 -15
  1040. package/src/observability/OtlpLogger.ts +31 -2
  1041. package/src/observability/OtlpMetrics.ts +35 -4
  1042. package/src/observability/OtlpResource.ts +16 -6
  1043. package/src/observability/OtlpSerialization.ts +17 -3
  1044. package/src/observability/OtlpTracer.ts +32 -3
  1045. package/src/observability/internal/protobuf.ts +2 -10
  1046. package/src/persistence/PersistedCache.ts +3 -1
  1047. package/src/persistence/PersistedQueue.ts +223 -153
  1048. package/src/persistence/Persistence.ts +64 -30
  1049. package/src/persistence/RateLimiter.ts +18 -21
  1050. package/src/persistence/UserDirectories.ts +273 -0
  1051. package/src/persistence/index.ts +6 -0
  1052. package/src/process/ChildProcess.ts +2 -1
  1053. package/src/reactivity/AsyncResult.ts +35 -38
  1054. package/src/reactivity/Atom.ts +134 -166
  1055. package/src/reactivity/AtomHttpApi.ts +10 -16
  1056. package/src/reactivity/AtomRegistry.ts +53 -30
  1057. package/src/reactivity/AtomRpc.ts +6 -22
  1058. package/src/reactivity/Hydration.ts +53 -12
  1059. package/src/reactivity/Reactivity.ts +97 -39
  1060. package/src/rpc/Rpc.ts +21 -0
  1061. package/src/rpc/RpcClient.ts +285 -104
  1062. package/src/rpc/RpcSerialization.ts +21 -5
  1063. package/src/rpc/RpcServer.ts +11 -20
  1064. package/src/schema/VariantSchema.ts +86 -22
  1065. package/src/socket/Socket.ts +45 -20
  1066. package/src/sql/Migrator.ts +19 -9
  1067. package/src/sql/SqlClient.ts +275 -36
  1068. package/src/sql/SqlResolver.ts +9 -0
  1069. package/src/sql/Statement.ts +35 -8
  1070. package/src/testing/TestClock.ts +147 -29
  1071. package/src/testing/TestSchema.ts +9 -3
  1072. package/src/workflow/Activity.ts +1 -0
  1073. package/src/workflow/Workflow.ts +31 -5
  1074. package/src/workflow/WorkflowEngine.ts +93 -31
  1075. package/dist/http/internal/preResponseHandler.d.ts +0 -2
  1076. package/dist/http/internal/preResponseHandler.d.ts.map +0 -1
  1077. package/dist/http/internal/preResponseHandler.js +0 -14
  1078. package/dist/http/internal/preResponseHandler.js.map +0 -1
  1079. package/src/http/internal/preResponseHandler.ts +0 -19
@@ -0,0 +1,819 @@
1
+ /**
2
+ * Connects to MCP servers with scoped Effect clients.
3
+ *
4
+ * Clients discover tools, prompts and resources using the protocol revision selected by
5
+ * their transport. `callTool` returns tool-reported errors as results; supplying a schema
6
+ * turns them into a `ToolError` reason that retains the original result. Transport and
7
+ * protocol failures fail the Effect. Interactive server requests, subscriptions, OAuth
8
+ * and retries are not included.
9
+ *
10
+ * @stability experimental
11
+ * @since 4.0.6
12
+ */
13
+ import * as ByteSize from "../ByteSize.js";
14
+ import * as Context from "../Context.js";
15
+ import * as Deferred from "../Deferred.js";
16
+ import * as Duration from "../Duration.js";
17
+ import * as Effect from "../Effect.js";
18
+ import * as Base64 from "../encoding/Base64.js";
19
+ import * as Sse from "../encoding/Sse.js";
20
+ import * as HttpClient from "../http/HttpClient.js";
21
+ import * as HttpClientRequest from "../http/HttpClientRequest.js";
22
+ import * as Layer from "../Layer.js";
23
+ import * as Option from "../Option.js";
24
+ import * as Predicate from "../Predicate.js";
25
+ import { ChildProcessSpawner } from "../process/ChildProcessSpawner.js";
26
+ import * as Queue from "../Queue.js";
27
+ import * as Schema from "../Schema.js";
28
+ import * as Stream from "../Stream.js";
29
+ import { BASE64_SENTINEL_PREFIX, BASE64_SENTINEL_SUFFIX } from "./internal/mcpProtocol.js";
30
+ import { ClosedError, ConfigurationError, HttpError, isMcpClientError, LimitError, McpClientError, ProtocolError, TimeoutError, ToolError, TransportError, UnsupportedError, ValidationError } from "./McpClientError.js";
31
+ import * as McpSchema from "./McpSchema.js";
32
+ import * as Tool from "./Tool.js";
33
+ import * as Toolkit from "./Toolkit.js";
34
+ /**
35
+ * Service tag for applications that provide one default MCP connection.
36
+ *
37
+ * @stability experimental
38
+ * @category services
39
+ * @since 4.0.6
40
+ */
41
+ export const McpClient = /*#__PURE__*/Context.Service("effect/ai/McpClient");
42
+ /**
43
+ * Returns whether a value is an MCP client.
44
+ *
45
+ * @stability experimental
46
+ * @category guards
47
+ * @since 4.0.6
48
+ */
49
+ export const isMcpClient = value => Predicate.hasProperty(value, TypeId);
50
+ // =============================================================================
51
+ // Constructors
52
+ // =============================================================================
53
+ /**
54
+ * Constructs and connects a client using the supplied MCP transport service and its protocol adapter.
55
+ *
56
+ * **Details**
57
+ *
58
+ * `name`, `version` and the optional `title`, `description`, `websiteUrl` and
59
+ * `icons` identify the client to the server. `timeout` defaults to 60 seconds
60
+ * and bounds initialization and each complete `listTools`, `listPrompts` or
61
+ * `listResources` scan. `callTool`, `getPrompt` and `readResource` have no
62
+ * deadline unless their own `timeout` option is supplied.
63
+ * Schema decoding requires the schema's services from the caller.
64
+ *
65
+ * @stability experimental
66
+ * @category constructors
67
+ * @since 4.0.6
68
+ */
69
+ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
70
+ const transport = yield* Transport;
71
+ const protocol = transport.protocol;
72
+ const version = protocol.protocolVersion;
73
+ const modern = version === "2026-07-28";
74
+ const timeout = options.timeout ?? DEFAULT_TIMEOUT;
75
+ const closed = yield* Deferred.make();
76
+ yield* Effect.addFinalizer(() => Deferred.fail(closed, fail(new ClosedError({
77
+ description: "MCP client scope closed"
78
+ }))));
79
+ let nextId = 1;
80
+ const clientInfo = encodeImplementation({
81
+ name: options.name,
82
+ title: options.title,
83
+ version: options.version,
84
+ description: options.description,
85
+ websiteUrl: options.websiteUrl,
86
+ icons: options.icons
87
+ });
88
+ // Modern requests carry the client identity in every request.
89
+ // https://modelcontextprotocol.io/specification/2026-07-28/basic/index
90
+ const meta = {
91
+ "io.modelcontextprotocol/protocolVersion": version,
92
+ "io.modelcontextprotocol/clientInfo": clientInfo,
93
+ "io.modelcontextprotocol/clientCapabilities": {}
94
+ };
95
+ const request = Effect.fnUntraced(function* (method, params, tool) {
96
+ const rpc = protocol.clientRpcs.requests.get(method);
97
+ if (rpc === undefined) {
98
+ return yield* fail(new UnsupportedError({
99
+ description: `Unsupported MCP method: ${method}`
100
+ }));
101
+ }
102
+ const codecs = protocol.payloadCodecs(rpc);
103
+ const payload = yield* codecs.decode(modern ? {
104
+ ...params,
105
+ _meta: meta
106
+ } : params).pipe(Effect.flatMap(codecs.encode), Effect.mapError(validationError));
107
+ const response = yield* transport.request({
108
+ jsonrpc: "2.0",
109
+ id: nextId++,
110
+ method,
111
+ params: payload
112
+ }, tool);
113
+ if ("error" in response) {
114
+ return yield* fail(new ProtocolError({
115
+ code: response.error.code,
116
+ data: response.error.data,
117
+ description: response.error.message
118
+ }));
119
+ }
120
+ let result = response.result;
121
+ // Older modern peers may omit the complete discriminator.
122
+ if (modern && isRecord(result) && result.resultType === undefined) result = {
123
+ ...result,
124
+ resultType: "complete"
125
+ };
126
+ if (method === "tools/list" && isRecord(result) && Array.isArray(result.tools)) {
127
+ result = {
128
+ ...result,
129
+ tools: result.tools.filter(tool => !requiresTasks(tool))
130
+ };
131
+ }
132
+ const validated = yield* decodeUnknown(rpc.successSchema, result);
133
+ if (isRecord(result) && result.resultType === "input_required") {
134
+ return yield* fail(new UnsupportedError({
135
+ description: "MCP input continuation is not supported"
136
+ }));
137
+ }
138
+ const publicRpc = publicRpcs.get(method);
139
+ return publicRpc === undefined ? validated : yield* decodeUnknown(publicRpc.successSchema, result);
140
+ });
141
+ // Initialization and discovery default to `timeout`; other operations are bounded only on request.
142
+ const withDeadline = (effect, operation, duration) => {
143
+ const open = Effect.raceFirst(effect, Deferred.await(closed));
144
+ return duration === undefined ? open : open.pipe(Effect.timeoutOrElse({
145
+ duration,
146
+ orElse: () => Effect.fail(fail(new TimeoutError({
147
+ operation
148
+ })))
149
+ }));
150
+ };
151
+ const initialize = Effect.gen(function* () {
152
+ if (!modern) {
153
+ return yield* request("initialize", {
154
+ protocolVersion: version,
155
+ capabilities: {},
156
+ clientInfo
157
+ });
158
+ }
159
+ const discover = request("server/discover", {});
160
+ // Retry once when the server rejects a version that it reports as supported.
161
+ return yield* discover.pipe(Effect.catchIf(error => {
162
+ const reason = error.reason;
163
+ if (reason._tag !== "ProtocolError" && reason._tag !== "HttpError") return false;
164
+ const rejection = Option.getOrUndefined(decodeVersionRejection(reason.data));
165
+ return reason.code === McpSchema.UNSUPPORTED_PROTOCOL_VERSION_ERROR_CODE && rejection?.requested === version && rejection.supported.includes(version);
166
+ }, () => discover));
167
+ });
168
+ const {
169
+ capabilities,
170
+ instructions,
171
+ serverInfo
172
+ } = yield* withDeadline(Effect.gen(function* () {
173
+ const result = yield* initialize;
174
+ if (modern ? !result.supportedVersions?.includes(version) : result.protocolVersion !== version) {
175
+ return yield* fail(new UnsupportedError({
176
+ description: "Server does not support the explicitly selected protocol version"
177
+ }));
178
+ }
179
+ const identity = modern ? result._meta?.["io.modelcontextprotocol/serverInfo"] : result.serverInfo;
180
+ const capabilities = yield* decodeServerCapabilities(result.capabilities);
181
+ const serverInfo = identity === undefined ? undefined : yield* decodeImplementation(identity);
182
+ if (!modern) yield* transport.notify({
183
+ jsonrpc: "2.0",
184
+ method: "notifications/initialized"
185
+ });
186
+ return {
187
+ capabilities,
188
+ instructions: result.instructions,
189
+ serverInfo
190
+ };
191
+ }).pipe(Effect.mapError(cause => Schema.isSchemaError(cause) ? fail(new ProtocolError({
192
+ description: "Invalid MCP initialization result",
193
+ cause
194
+ })) : cause)), "initialization", timeout);
195
+ // Retrieval requires the capability; discovery treats a missing one as empty.
196
+ const call = (kind, method, params, tool) => capabilities[kind] === undefined ? Effect.fail(fail(new UnsupportedError({
197
+ description: `Server does not advertise ${kind}`
198
+ }))) : request(method, params, tool);
199
+ const list = kind => Effect.fnUntraced(function* (_options) {
200
+ if (capabilities[kind] === undefined) return [];
201
+ const items = [];
202
+ const cursors = new Set();
203
+ let cursor;
204
+ for (let page = 0; page < MAX_DISCOVERY_PAGES; page++) {
205
+ const result = yield* request(`${kind}/list`, cursor === undefined ? {} : {
206
+ cursor
207
+ });
208
+ if (items.length + result[kind].length > MAX_DISCOVERY_ITEMS) {
209
+ return yield* limitError(`MCP ${kind} discovery exceeded its item limit`);
210
+ }
211
+ items.push(...result[kind]);
212
+ if (result.nextCursor === undefined) return items;
213
+ if (cursors.has(result.nextCursor)) {
214
+ return yield* limitError(`MCP ${kind} discovery repeated a cursor`);
215
+ }
216
+ cursors.add(cursor = result.nextCursor);
217
+ }
218
+ return yield* limitError(`MCP ${kind} discovery exceeded its page limit`);
219
+ }, (effect, callOptions) => withDeadline(effect, `${kind} discovery`, callOptions?.timeout ?? timeout));
220
+ const listTools = list("tools");
221
+ const callTool = Effect.fnUntraced(function* (params, _options) {
222
+ const result = yield* call("tools", "tools/call", {
223
+ name: params.tool.name,
224
+ ...(params.arguments === undefined ? {} : {
225
+ arguments: params.arguments
226
+ })
227
+ }, params.tool);
228
+ if (params.schema === undefined) return result;
229
+ if (result.isError === true) {
230
+ return yield* fail(new ToolError({
231
+ result
232
+ }));
233
+ }
234
+ return yield* Schema.decodeUnknownEffect(params.schema)(result.structuredContent).pipe(Effect.mapError(cause => fail(new ValidationError({
235
+ description: "MCP structured result validation failed",
236
+ cause
237
+ }))));
238
+ }, (effect, _params, callOptions) => withDeadline(effect, "tools/call", callOptions?.timeout));
239
+ return {
240
+ [TypeId]: TypeId,
241
+ protocolVersion: version,
242
+ serverInfo,
243
+ instructions,
244
+ listTools: callOptions => listTools(callOptions).pipe(Effect.map(tools => tools.filter(tool => transport.isCallable(tool)))),
245
+ listPrompts: list("prompts"),
246
+ listResources: list("resources"),
247
+ getPrompt: (params, callOptions) => withDeadline(call("prompts", "prompts/get", {
248
+ name: params.prompt.name,
249
+ ...(params.arguments === undefined ? {} : {
250
+ arguments: params.arguments
251
+ })
252
+ }), "prompts/get", callOptions?.timeout),
253
+ readResource: (params, callOptions) => withDeadline(call("resources", "resources/read", {
254
+ uri: params.uri
255
+ }), "resources/read", callOptions?.timeout),
256
+ callTool: callTool
257
+ };
258
+ });
259
+ // =============================================================================
260
+ // Toolkit
261
+ // =============================================================================
262
+ /**
263
+ * Discovers remote tools and binds their handlers using the standard Toolkit implementation.
264
+ *
265
+ * **Details**
266
+ *
267
+ * Pass an optional prefix such as `"reports__"` to qualify model tool names.
268
+ * Remote JSON Schemas are advertised without local schema import. Results become
269
+ * text; tool-reported and operational failures fail the Effect. Use `Tool.make`
270
+ * or `Tool.dynamic` with `Toolkit.make` for custom validation, approval or results.
271
+ * Build a new toolkit to discover changes between model turns.
272
+ *
273
+ * @stability experimental
274
+ * @category constructors
275
+ * @since 4.0.6
276
+ */
277
+ export const toolkit = /*#__PURE__*/Effect.fnUntraced(function* (client, prefix = "") {
278
+ const descriptors = yield* client.listTools();
279
+ const tools = [];
280
+ const handlers = Object.create(null);
281
+ for (const descriptor of descriptors) {
282
+ const name = `${prefix}${descriptor.name}`;
283
+ if (!/^[a-zA-Z0-9_-]{1,64}$/.test(name) || Object.hasOwn(handlers, name)) {
284
+ return yield* fail(new ConfigurationError({
285
+ description: `Invalid or duplicate MCP model tool name: ${name}`
286
+ }));
287
+ }
288
+ tools.push(Tool.dynamic(name, {
289
+ parameters: descriptor.inputSchema,
290
+ description: descriptor.description,
291
+ success: Schema.String,
292
+ failure: McpClientError
293
+ }).annotate(Tool.Strict, false));
294
+ handlers[name] = Effect.fnUntraced(function* (params) {
295
+ const args = yield* decodeToolArguments(params).pipe(Effect.mapError(cause => fail(new ValidationError({
296
+ description: "MCP tool arguments must be a JSON object",
297
+ cause
298
+ }))));
299
+ const result = yield* client.callTool({
300
+ tool: descriptor,
301
+ arguments: args
302
+ });
303
+ if (result.isError === true) {
304
+ return yield* fail(new ToolError({
305
+ result
306
+ }));
307
+ }
308
+ return yield* toText(result);
309
+ });
310
+ }
311
+ const toolkit = Toolkit.make(...tools);
312
+ return yield* toolkit.pipe(Effect.provideContext(yield* toolkit.toHandlers(handlers)));
313
+ });
314
+ // =============================================================================
315
+ // Transports
316
+ // =============================================================================
317
+ /**
318
+ * Service supplied by the built-in MCP transport constructors and layers.
319
+ *
320
+ * **Details**
321
+ *
322
+ * Transport construction owns cleanup through its Effect scope.
323
+ *
324
+ * @stability experimental
325
+ * @category services
326
+ * @since 4.0.6
327
+ */
328
+ export const Transport = /*#__PURE__*/Context.Service("effect/ai/McpClient/Transport");
329
+ /**
330
+ * Starts a scoped subprocess using newline-delimited JSON-RPC.
331
+ *
332
+ * @stability experimental
333
+ * @category constructors
334
+ * @since 4.0.6
335
+ */
336
+ export const stdio = /*#__PURE__*/Effect.fnUntraced(function* (options) {
337
+ const maxBytes = yield* messageLimit(options.maxMessageBytes);
338
+ const spawner = yield* ChildProcessSpawner;
339
+ const process = yield* spawner.spawn(options.command).pipe(Effect.mapError(cause => fail(new TransportError({
340
+ description: "Cannot spawn MCP server",
341
+ cause
342
+ }))));
343
+ const pending = new Map();
344
+ const failure = yield* Deferred.make();
345
+ let failed;
346
+ const close = error => Effect.suspend(() => {
347
+ failed ??= error;
348
+ return Deferred.fail(failure, failed);
349
+ });
350
+ const input = yield* Queue.unbounded();
351
+ const write = Effect.fnUntraced(function* (message) {
352
+ if (failed !== undefined) return yield* failed;
353
+ const json = yield* encodeMessage(message, maxBytes);
354
+ yield* Queue.offer(input, json + "\n");
355
+ });
356
+ const receive = Effect.fnUntraced(function* (message) {
357
+ if (isRequest(message)) return yield* write(replyToServer(message));
358
+ if (!isResponse(message)) return;
359
+ // Without an ID the error cannot be correlated, so no pending request can be trusted.
360
+ if (message.id === undefined || message.id === null) {
361
+ return yield* fail(new ProtocolError({
362
+ description: "Server returned an uncorrelated JSON-RPC error"
363
+ }));
364
+ }
365
+ const response = pending.get(message.id);
366
+ if (response !== undefined) yield* Deferred.succeed(response, message);
367
+ });
368
+ yield* Stream.fromQueue(input).pipe(Stream.encodeText, Stream.run(process.stdin), Effect.catch(cause => close(fail(new TransportError({
369
+ description: "MCP stdin failed",
370
+ cause
371
+ })))), Effect.forkScoped);
372
+ yield* Stream.runDrain(process.stderr).pipe(Effect.ignore, Effect.forkScoped);
373
+ const drained = yield* Deferred.make();
374
+ let buffer = "";
375
+ yield* process.stdout.pipe(Stream.decodeText(), Stream.runForEach(Effect.fnUntraced(function* (chunk) {
376
+ buffer += chunk;
377
+ let start = 0;
378
+ let index;
379
+ while ((index = buffer.indexOf("\n", start)) >= 0) {
380
+ const line = buffer.slice(start, index);
381
+ start = index + 1;
382
+ if (line.trim() !== "") yield* receive(yield* parseMessage(line, maxBytes));
383
+ }
384
+ buffer = buffer.slice(start);
385
+ if (buffer.length > maxBytes) {
386
+ return yield* limitError("MCP message exceeds maxMessageBytes");
387
+ }
388
+ })), Effect.mapError(cause => isMcpClientError(cause) ? cause : fail(new TransportError({
389
+ description: "MCP stdout failed",
390
+ cause
391
+ }))), Effect.andThen(Effect.fail(fail(new TransportError({
392
+ description: "MCP server closed stdout"
393
+ })))), Effect.catch(close), Effect.ensuring(Deferred.succeed(drained, undefined)), Effect.forkScoped);
394
+ // Output written just before exit is delivered before pending requests fail.
395
+ yield* process.exitCode.pipe(Effect.map(code => `MCP process exited (${code})`), Effect.orElseSucceed(() => "MCP process exited"), Effect.tap(() => Deferred.await(drained).pipe(Effect.timeoutOption(CLOSE_TIMEOUT))), Effect.flatMap(description => close(fail(new TransportError({
396
+ description
397
+ })))), Effect.forkScoped);
398
+ // Close stdin, then escalate to SIGTERM and SIGKILL if the server does not exit.
399
+ // https://modelcontextprotocol.io/specification/2025-11-25/basic/lifecycle#stdio
400
+ yield* Effect.addFinalizer(Effect.fnUntraced(function* () {
401
+ yield* close(fail(new ClosedError({
402
+ description: "MCP transport closed"
403
+ })));
404
+ yield* Queue.end(input);
405
+ const exited = yield* process.exitCode.pipe(Effect.timeoutOption(CLOSE_TIMEOUT), Effect.option);
406
+ if (Option.isNone(exited) || Option.isNone(exited.value)) {
407
+ yield* process.kill({
408
+ killSignal: "SIGTERM",
409
+ forceKillAfter: Duration.toMillis(CLOSE_TIMEOUT)
410
+ }).pipe(Effect.ignore);
411
+ }
412
+ }));
413
+ return {
414
+ [TransportTypeId]: TransportTypeId,
415
+ protocol: options.protocol,
416
+ isCallable: () => true,
417
+ notify: write,
418
+ request: Effect.fnUntraced(function* (message) {
419
+ const response = yield* Deferred.make();
420
+ pending.set(message.id, response);
421
+ return yield* write(message).pipe(Effect.andThen(Deferred.await(response)), Effect.raceFirst(Deferred.await(failure)), Effect.onInterrupt(() => message.method === "initialize" ? Effect.void : Deferred.isDone(response).pipe(Effect.flatMap(done => done ? Effect.void : write(cancelled(message.id)).pipe(Effect.ignore)))), Effect.ensuring(Effect.sync(() => pending.delete(message.id))));
422
+ })
423
+ };
424
+ });
425
+ /**
426
+ * Provides a connected MCP client over stdio using the child process spawner.
427
+ *
428
+ * **Details**
429
+ *
430
+ * The layer scope owns the client and subprocess. The options are those of
431
+ * {@link make} and {@link stdio}.
432
+ *
433
+ * @see {@link layerHttp}
434
+ * @stability experimental
435
+ * @category layers
436
+ * @since 4.0.6
437
+ */
438
+ export const layerStdio = options => Layer.effect(McpClient)(make(options)).pipe(Layer.provide(Layer.effect(Transport)(stdio(options))));
439
+ /**
440
+ * Creates a Streamable HTTP transport with request-owned JSON or SSE responses.
441
+ *
442
+ * @stability experimental
443
+ * @category constructors
444
+ * @since 4.0.6
445
+ */
446
+ export const http = /*#__PURE__*/Effect.fnUntraced(function* (options) {
447
+ const maxBytes = yield* messageLimit(options.maxMessageBytes);
448
+ const client = HttpClient.withScope(yield* HttpClient.HttpClient);
449
+ const modern = options.protocol.protocolVersion === "2026-07-28";
450
+ const closed = yield* Deferred.make();
451
+ let failed;
452
+ // Legacy servers may assign a session during initialization.
453
+ let session;
454
+ const baseHeaders = {
455
+ ...options.headers,
456
+ accept: "application/json, text/event-stream",
457
+ "mcp-protocol-version": options.protocol.protocolVersion
458
+ };
459
+ const headers = () => session === undefined ? baseHeaders : {
460
+ ...baseHeaders,
461
+ "mcp-session-id": session
462
+ };
463
+ const httpError = Effect.fnUntraced(function* (response) {
464
+ // Error bodies may carry a JSON-RPC error without an ID, e.g. an unsupported protocol version.
465
+ const remote = mediaType(response) === "application/json" ? yield* readBody(response, maxBytes).pipe(Effect.flatMap(text => parseMessage(text, maxBytes)), Effect.map(message => "error" in message ? message.error : undefined), Effect.orElseSucceed(() => undefined)) : undefined;
466
+ return yield* fail(new HttpError({
467
+ status: response.status,
468
+ code: remote?.code,
469
+ data: remote?.data,
470
+ description: remote?.message,
471
+ wwwAuthenticate: response.headers["www-authenticate"],
472
+ retryAfter: response.headers["retry-after"]
473
+ }));
474
+ });
475
+ // Posts one message and returns the successful response, tracking legacy sessions.
476
+ const send = Effect.fnUntraced(function* (message, tool) {
477
+ if (failed !== undefined) return yield* failed;
478
+ const body = yield* encodeMessage(message, maxBytes);
479
+ const request = HttpClientRequest.post(options.url).pipe(HttpClientRequest.setHeaders({
480
+ ...headers(),
481
+ ...(modern ? yield* routingHeaders(message, tool) : {})
482
+ }), HttpClientRequest.bodyText(body, "application/json"));
483
+ const response = yield* client.execute(request).pipe(
484
+ // Clients using `filterStatusOk` surface error responses as failures.
485
+ Effect.catch(cause => cause.response === undefined ? Effect.fail(fail(new TransportError({
486
+ description: "MCP HTTP request failed",
487
+ cause
488
+ }))) : Effect.succeed(cause.response)));
489
+ // A legacy session ends when the server no longer recognizes its ID.
490
+ if (session !== undefined && response.status === 404) {
491
+ failed ??= fail(new ClosedError({
492
+ sessionExpired: true
493
+ }));
494
+ return yield* failed;
495
+ }
496
+ if (response.status < 200 || response.status >= 300) return yield* httpError(response);
497
+ if (!modern) session = response.headers["mcp-session-id"] ?? session;
498
+ return response;
499
+ });
500
+ const exchange = effect => effect.pipe(Effect.mapError(cause => isMcpClientError(cause) ? cause : fail(new TransportError({
501
+ description: "Cannot read MCP response",
502
+ cause
503
+ }))), Effect.raceFirst(Deferred.await(closed)), Effect.scoped);
504
+ const notify = message => exchange(Effect.asVoid(send(message)));
505
+ const readResponse = Effect.fnUntraced(function* (response, request) {
506
+ const match = Effect.fnUntraced(function* (message) {
507
+ if (isRequest(message)) {
508
+ yield* notify(replyToServer(message));
509
+ return undefined;
510
+ }
511
+ if (!isResponse(message)) return undefined;
512
+ // A response on this exchange belongs to its request; an error may omit the ID.
513
+ if (message.id !== request.id && !("error" in message && message.id == null)) {
514
+ return yield* fail(new ProtocolError({
515
+ description: "HTTP MCP response id does not match its request"
516
+ }));
517
+ }
518
+ return message;
519
+ });
520
+ switch (mediaType(response)) {
521
+ case "application/json":
522
+ {
523
+ const message = yield* match(yield* parseMessage(yield* readBody(response, maxBytes), maxBytes));
524
+ if (message === undefined) break;
525
+ return message;
526
+ }
527
+ case "text/event-stream":
528
+ {
529
+ const events = [];
530
+ const parser = Sse.makeParser(event => {
531
+ // Resumption is unsupported, so retry directives and event IDs are ignored.
532
+ if (event._tag === "Event" && event.data !== "") events.push(event.data);
533
+ }, {
534
+ maxEventSize: maxBytes
535
+ });
536
+ const message = yield* response.stream.pipe(Stream.decodeText(), Stream.flatMap(chunk => {
537
+ const error = parser.feed(chunk);
538
+ const parsed = Stream.fromIterable(events.splice(0));
539
+ // Events before an oversized one can still complete the request.
540
+ return error === undefined ? parsed : parsed.pipe(Stream.concat(Stream.fail(limitError("MCP SSE event exceeds maxMessageBytes"))));
541
+ }), Stream.mapEffect(data => parseMessage(data, maxBytes).pipe(Effect.flatMap(match))), Stream.filter(Predicate.isNotUndefined), Stream.runHead);
542
+ if (Option.isNone(message)) break;
543
+ return message.value;
544
+ }
545
+ default:
546
+ {
547
+ return yield* fail(new ProtocolError({
548
+ description: "Unsupported MCP response Content-Type"
549
+ }));
550
+ }
551
+ }
552
+ return yield* fail(new TransportError({
553
+ description: "MCP response ended before the terminal response"
554
+ }));
555
+ });
556
+ yield* Effect.addFinalizer(Effect.fnUntraced(function* () {
557
+ failed ??= fail(new ClosedError({
558
+ description: "MCP HTTP transport closed"
559
+ }));
560
+ yield* Deferred.fail(closed, failed);
561
+ if (session === undefined || failed.reason._tag !== "ClosedError" || failed.reason.sessionExpired) return;
562
+ // Explicitly terminate a legacy session.
563
+ // https://modelcontextprotocol.io/specification/2025-11-25/basic/transports#session-management
564
+ yield* client.execute(HttpClientRequest.delete(options.url).pipe(HttpClientRequest.setHeaders(headers()))).pipe(Effect.scoped, Effect.timeoutOption(CLOSE_TIMEOUT), Effect.ignore);
565
+ }));
566
+ return {
567
+ [TransportTypeId]: TransportTypeId,
568
+ protocol: options.protocol,
569
+ isCallable: tool => !modern || headerParameters(tool) !== undefined,
570
+ notify,
571
+ request: (message, tool) => exchange(send(message, tool).pipe(Effect.flatMap(response => response.status === 202 || response.status === 204 ? fail(new ProtocolError({
572
+ description: "MCP request received no response"
573
+ })) : readResponse(response, message)))).pipe(
574
+ // Modern servers treat a closed response stream as cancellation.
575
+ Effect.onInterrupt(() => modern || message.method === "initialize" ? Effect.void : notify(cancelled(message.id)).pipe(Effect.timeoutOption(CLOSE_TIMEOUT), Effect.ignore)))
576
+ };
577
+ });
578
+ /**
579
+ * Provides a connected MCP client over Streamable HTTP using the HTTP client.
580
+ *
581
+ * **Details**
582
+ *
583
+ * The layer scope owns the client and connection. The options are those of
584
+ * {@link make} and {@link http}.
585
+ *
586
+ * **Example** (Providing an HTTP client connection)
587
+ *
588
+ * ```ts import.meta.vitest
589
+ * import { Layer } from "effect"
590
+ * import { McpClient, McpProtocol } from "effect/ai"
591
+ * import { FetchHttpClient } from "effect/http"
592
+ *
593
+ * const ClientLayer = McpClient.layerHttp({
594
+ * name: "report-workflow",
595
+ * version: "1.0.0",
596
+ * protocol: McpProtocol.v2026_07_28,
597
+ * url: "http://localhost:3000/mcp"
598
+ * }).pipe(Layer.provide(FetchHttpClient.layer))
599
+ * ```
600
+ *
601
+ * @see {@link layerStdio}
602
+ * @stability experimental
603
+ * @category layers
604
+ * @since 4.0.6
605
+ */
606
+ export const layerHttp = options => Layer.effect(McpClient)(make(options)).pipe(Layer.provide(Layer.effect(Transport)(http(options))));
607
+ // =============================================================================
608
+ // Internal
609
+ // =============================================================================
610
+ const TypeId = "~effect/ai/McpClient";
611
+ const TransportTypeId = "~effect/ai/McpClient/Transport";
612
+ const DEFAULT_MAX_MESSAGE_BYTES = /*#__PURE__*/ByteSize.mebibytes(16);
613
+ const DEFAULT_TIMEOUT = /*#__PURE__*/Duration.seconds(60);
614
+ const CLOSE_TIMEOUT = /*#__PURE__*/Duration.seconds(5);
615
+ const MAX_DISCOVERY_PAGES = 100;
616
+ const MAX_DISCOVERY_ITEMS = 10_000;
617
+ const HEADER_TOKEN = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;
618
+ const encoder = /*#__PURE__*/new TextEncoder();
619
+ const decoder = /*#__PURE__*/new TextDecoder();
620
+ const fail = reason => new McpClientError({
621
+ reason
622
+ });
623
+ const limitError = description => fail(new LimitError({
624
+ description
625
+ }));
626
+ const validationError = cause => fail(new ValidationError({
627
+ description: "Invalid MCP payload",
628
+ cause
629
+ }));
630
+ const isRecord = Predicate.isReadonlyObject;
631
+ const decodeMessage = /*#__PURE__*/Schema.decodeUnknownEffect(McpSchema.JsonRpcMessage, {
632
+ onExcessProperty: "error"
633
+ });
634
+ const decodeVersionRejection = /*#__PURE__*/Schema.decodeUnknownOption(/*#__PURE__*/Schema.Struct({
635
+ requested: Schema.String,
636
+ supported: /*#__PURE__*/Schema.Array(Schema.String)
637
+ }));
638
+ const decodeServerCapabilities = /*#__PURE__*/Schema.decodeUnknownEffect(McpSchema.ServerCapabilities);
639
+ const decodeImplementation = /*#__PURE__*/Schema.decodeUnknownEffect(McpSchema.Implementation);
640
+ const encodeImplementation = /*#__PURE__*/Schema.encodeSync(McpSchema.Implementation);
641
+ // The protocol payload codec validates argument values; the toolkit only checks for an object.
642
+ const decodeToolArguments = /*#__PURE__*/Schema.decodeUnknownEffect(/*#__PURE__*/Schema.Record(Schema.String, Schema.Unknown));
643
+ const decodeUnknown = (schema, value) => Schema.decodeUnknownEffect(schema)(value).pipe(Effect.mapError(validationError));
644
+ const publicRpcs = McpSchema.ClientRequestRpcs.requests;
645
+ // Tools that require task-augmented execution cannot be called without the tasks extension.
646
+ const requiresTasks = tool => isRecord(tool) && isRecord(tool.execution) && tool.execution.taskSupport === "required";
647
+ const messageLimit = (input = DEFAULT_MAX_MESSAGE_BYTES) => {
648
+ const bytes = Option.flatMap(ByteSize.fromInput(input), ByteSize.toNumber);
649
+ return Option.isSome(bytes) && bytes.value > 0 ? Effect.succeed(bytes.value) : Effect.fail(fail(new ConfigurationError({
650
+ description: "maxMessageBytes must be a positive safe integer"
651
+ })));
652
+ };
653
+ const encodeMessage = /*#__PURE__*/Effect.fnUntraced(function* (message, maxBytes) {
654
+ const json = yield* Effect.try({
655
+ try: () => JSON.stringify(message),
656
+ catch: cause => fail(new TransportError({
657
+ description: "Cannot encode MCP message",
658
+ cause
659
+ }))
660
+ });
661
+ if (encoder.encode(json).length > maxBytes) {
662
+ return yield* limitError("MCP message exceeds maxMessageBytes");
663
+ }
664
+ return json;
665
+ });
666
+ const parseMessage = /*#__PURE__*/Effect.fnUntraced(function* (text, maxBytes) {
667
+ if (encoder.encode(text).length > maxBytes) {
668
+ return yield* limitError("MCP message exceeds maxMessageBytes");
669
+ }
670
+ const json = yield* Effect.try({
671
+ try: () => JSON.parse(text),
672
+ catch: cause => fail(new ProtocolError({
673
+ description: "Invalid MCP JSON",
674
+ cause
675
+ }))
676
+ });
677
+ return yield* decodeMessage(json).pipe(Effect.mapError(cause => fail(new ProtocolError({
678
+ description: "Invalid JSON-RPC message",
679
+ cause
680
+ }))));
681
+ });
682
+ const isRequest = message => "method" in message && "id" in message;
683
+ const isResponse = message => !("method" in message);
684
+ // The client advertises no capabilities, so it answers pings and declines every other server request.
685
+ const replyToServer = request => request.method === "ping" ? {
686
+ jsonrpc: "2.0",
687
+ id: request.id,
688
+ result: {}
689
+ } : {
690
+ jsonrpc: "2.0",
691
+ id: request.id,
692
+ error: {
693
+ code: McpSchema.METHOD_NOT_FOUND_ERROR_CODE,
694
+ message: `Unsupported MCP method: ${request.method}`
695
+ }
696
+ };
697
+ const cancelled = id => ({
698
+ jsonrpc: "2.0",
699
+ method: "notifications/cancelled",
700
+ params: {
701
+ requestId: id
702
+ }
703
+ });
704
+ // =============================================================================
705
+ // Internal: Streamable HTTP
706
+ // =============================================================================
707
+ const mediaType = response => response.headers["content-type"]?.split(";", 1)[0].trim().toLowerCase();
708
+ const readBody = (response, maxBytes) => response.stream.pipe(Stream.mapError(cause => fail(new TransportError({
709
+ description: "Cannot read MCP response",
710
+ cause
711
+ }))), Stream.limitBytes(maxBytes, () => Stream.fail(limitError("MCP response exceeds maxMessageBytes"))), Stream.mkUint8Array, Effect.map(bytes => decoder.decode(bytes)));
712
+ // Values that are not plain visible ASCII are sent Base64 encoded.
713
+ // https://modelcontextprotocol.io/specification/2026-07-28/basic/transports#custom-headers-from-tool-parameters
714
+ const headerValue = value => /^[\x20-\x7e]*$/.test(value) && value.trim() === value && !(value.startsWith(BASE64_SENTINEL_PREFIX) && value.endsWith(BASE64_SENTINEL_SUFFIX)) ? value : `${BASE64_SENTINEL_PREFIX}${Base64.encode(value)}${BASE64_SENTINEL_SUFFIX}`;
715
+ // JSON Schema keywords whose values are schemas, maps of schemas or arrays of schemas.
716
+ const SCHEMA_KEYWORDS = /*#__PURE__*/new Set(["additionalProperties", "unevaluatedProperties", "propertyNames", "items", "additionalItems", "unevaluatedItems", "contains", "not", "if", "then", "else", "contentSchema"]);
717
+ const SCHEMA_MAP_KEYWORDS = /*#__PURE__*/new Set(["properties", "patternProperties", "$defs", "definitions", "dependentSchemas", "dependencies"]);
718
+ const SCHEMA_ARRAY_KEYWORDS = /*#__PURE__*/new Set(["allOf", "anyOf", "oneOf", "prefixItems", "items"]);
719
+ // Collects `x-mcp-header` annotations along chains of `properties` keys, or
720
+ // returns undefined when an annotation is invalid or found anywhere else.
721
+ // https://modelcontextprotocol.io/specification/2026-07-28/basic/transports/streamable-http#schema-extension
722
+ const headerParameters = tool => {
723
+ const parameters = [];
724
+ const names = new Set();
725
+ // `path` is undefined once the traversal leaves a properties-only chain.
726
+ const visit = (schema, path) => {
727
+ if (!isRecord(schema)) return true;
728
+ const name = schema["x-mcp-header"];
729
+ if (name !== undefined) {
730
+ if (path === undefined || path.length === 0 || typeof name !== "string" || !HEADER_TOKEN.test(name) || names.has(name.toLowerCase()) || !["string", "integer", "boolean"].includes(schema.type)) return false;
731
+ names.add(name.toLowerCase());
732
+ parameters.push({
733
+ path,
734
+ header: `mcp-param-${name.toLowerCase()}`,
735
+ type: schema.type
736
+ });
737
+ }
738
+ return Object.entries(schema).every(([keyword, value]) => {
739
+ if (SCHEMA_MAP_KEYWORDS.has(keyword) && isRecord(value)) {
740
+ return Object.entries(value).every(([key, child]) => visit(child, keyword === "properties" && path !== undefined ? [...path, key] : undefined));
741
+ }
742
+ if (Array.isArray(value)) {
743
+ return !SCHEMA_ARRAY_KEYWORDS.has(keyword) || value.every(child => visit(child, undefined));
744
+ }
745
+ return !SCHEMA_KEYWORDS.has(keyword) || visit(value, undefined);
746
+ });
747
+ };
748
+ return visit(tool.inputSchema, []) ? parameters : undefined;
749
+ };
750
+ const routingHeaders = /*#__PURE__*/Effect.fnUntraced(function* (message, tool) {
751
+ if (!("method" in message)) return {};
752
+ const headers = {
753
+ "mcp-method": message.method
754
+ };
755
+ const params = message.params ?? {};
756
+ const name = message.method === "resources/read" ? params.uri : params.name;
757
+ if (typeof name === "string" && (message.method === "tools/call" || message.method === "prompts/get" || message.method === "resources/read")) {
758
+ headers["mcp-name"] = headerValue(name);
759
+ }
760
+ if (message.method !== "tools/call") return headers;
761
+ const parameters = tool === undefined ? undefined : headerParameters(tool);
762
+ if (parameters === undefined) {
763
+ return yield* fail(new UnsupportedError({
764
+ description: "Tool has invalid x-mcp-header annotations"
765
+ }));
766
+ }
767
+ for (const {
768
+ header,
769
+ path,
770
+ type
771
+ } of parameters) {
772
+ let value = params.arguments;
773
+ for (const key of path) value = isRecord(value) && Object.hasOwn(value, key) ? value[key] : undefined;
774
+ if (value === undefined || value === null) continue;
775
+ if (type === "integer" ? !Number.isSafeInteger(value) : typeof value !== type) {
776
+ return yield* fail(new ValidationError({
777
+ description: `Invalid value for MCP header parameter ${header}`
778
+ }));
779
+ }
780
+ headers[header] = headerValue(String(value));
781
+ }
782
+ return headers;
783
+ });
784
+ // =============================================================================
785
+ // Internal: Toolkit
786
+ // =============================================================================
787
+ const toText = result => {
788
+ const unsupported = content => Effect.fail(fail(new UnsupportedError({
789
+ description: `MCP ${content} requires an application text converter`,
790
+ result
791
+ })));
792
+ const parts = [];
793
+ for (const block of result.content) {
794
+ switch (block.type) {
795
+ case "text":
796
+ {
797
+ parts.push(block.text);
798
+ break;
799
+ }
800
+ case "resource_link":
801
+ {
802
+ parts.push(`${block.title ?? block.name}: ${block.uri}${block.description === undefined ? "" : `\n${block.description}`}`);
803
+ break;
804
+ }
805
+ case "resource":
806
+ {
807
+ if (!("text" in block.resource)) return unsupported("binary resources");
808
+ parts.push(block.resource.text);
809
+ break;
810
+ }
811
+ default:
812
+ {
813
+ return unsupported(`${block.type} content`);
814
+ }
815
+ }
816
+ }
817
+ return Effect.succeed(parts.length === 0 && result.structuredContent !== undefined ? JSON.stringify(result.structuredContent) : parts.join("\n"));
818
+ };
819
+ //# sourceMappingURL=McpClient.js.map