effect 4.0.7 → 4.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (863) hide show
  1. package/README.md +31 -1
  2. package/THIRD_PARTY_NOTICES.md +62 -0
  3. package/dist/BigDecimal.d.ts +139 -7
  4. package/dist/BigDecimal.d.ts.map +1 -1
  5. package/dist/BigDecimal.js +86 -14
  6. package/dist/BigDecimal.js.map +1 -1
  7. package/dist/Channel.d.ts +12 -6
  8. package/dist/Channel.d.ts.map +1 -1
  9. package/dist/Channel.js +9 -3
  10. package/dist/Channel.js.map +1 -1
  11. package/dist/Config.d.ts +7 -1
  12. package/dist/Config.d.ts.map +1 -1
  13. package/dist/Config.js.map +1 -1
  14. package/dist/Context.d.ts +18 -1
  15. package/dist/Context.d.ts.map +1 -1
  16. package/dist/Context.js +27 -8
  17. package/dist/Context.js.map +1 -1
  18. package/dist/Cron.d.ts +81 -11
  19. package/dist/Cron.d.ts.map +1 -1
  20. package/dist/Cron.js +101 -26
  21. package/dist/Cron.js.map +1 -1
  22. package/dist/Duration.d.ts +78 -0
  23. package/dist/Duration.d.ts.map +1 -1
  24. package/dist/Duration.js +123 -0
  25. package/dist/Duration.js.map +1 -1
  26. package/dist/Effect.d.ts +164 -7
  27. package/dist/Effect.d.ts.map +1 -1
  28. package/dist/Effect.js +11 -1
  29. package/dist/Effect.js.map +1 -1
  30. package/dist/Equal.d.ts +2 -2
  31. package/dist/Equal.d.ts.map +1 -1
  32. package/dist/Equal.js +3 -3
  33. package/dist/Equal.js.map +1 -1
  34. package/dist/FileSystem.d.ts +59 -4
  35. package/dist/FileSystem.d.ts.map +1 -1
  36. package/dist/FileSystem.js +9 -2
  37. package/dist/FileSystem.js.map +1 -1
  38. package/dist/Glob.d.ts +165 -0
  39. package/dist/Glob.d.ts.map +1 -0
  40. package/dist/Glob.js +127 -0
  41. package/dist/Glob.js.map +1 -0
  42. package/dist/Hash.d.ts +3 -2
  43. package/dist/Hash.d.ts.map +1 -1
  44. package/dist/Hash.js +5 -4
  45. package/dist/Hash.js.map +1 -1
  46. package/dist/Iterable.d.ts.map +1 -1
  47. package/dist/Iterable.js +11 -8
  48. package/dist/Iterable.js.map +1 -1
  49. package/dist/Match.d.ts +86 -0
  50. package/dist/Match.d.ts.map +1 -1
  51. package/dist/Match.js +72 -0
  52. package/dist/Match.js.map +1 -1
  53. package/dist/Path.d.ts.map +1 -1
  54. package/dist/Path.js +5 -1
  55. package/dist/Path.js.map +1 -1
  56. package/dist/Pool.d.ts +51 -0
  57. package/dist/Pool.d.ts.map +1 -1
  58. package/dist/Pool.js +61 -10
  59. package/dist/Pool.js.map +1 -1
  60. package/dist/Random.d.ts.map +1 -1
  61. package/dist/Random.js +3 -3
  62. package/dist/Random.js.map +1 -1
  63. package/dist/RcMap.d.ts.map +1 -1
  64. package/dist/RcMap.js +8 -2
  65. package/dist/RcMap.js.map +1 -1
  66. package/dist/Schedule.d.ts +18 -1
  67. package/dist/Schedule.d.ts.map +1 -1
  68. package/dist/Schedule.js +7 -2
  69. package/dist/Schedule.js.map +1 -1
  70. package/dist/Schema.d.ts +668 -42
  71. package/dist/Schema.d.ts.map +1 -1
  72. package/dist/Schema.js +652 -1
  73. package/dist/Schema.js.map +1 -1
  74. package/dist/SchemaGetter.d.ts +6 -1
  75. package/dist/SchemaGetter.d.ts.map +1 -1
  76. package/dist/SchemaGetter.js +22 -11
  77. package/dist/SchemaGetter.js.map +1 -1
  78. package/dist/SchemaRepresentation.d.ts +18 -2
  79. package/dist/SchemaRepresentation.d.ts.map +1 -1
  80. package/dist/SchemaRepresentation.js +20 -2
  81. package/dist/SchemaRepresentation.js.map +1 -1
  82. package/dist/SchemaTransformation.d.ts +10 -5
  83. package/dist/SchemaTransformation.d.ts.map +1 -1
  84. package/dist/SchemaTransformation.js +8 -5
  85. package/dist/SchemaTransformation.js.map +1 -1
  86. package/dist/ScopedCache.d.ts.map +1 -1
  87. package/dist/ScopedCache.js +5 -7
  88. package/dist/ScopedCache.js.map +1 -1
  89. package/dist/Semaphore.d.ts +130 -0
  90. package/dist/Semaphore.d.ts.map +1 -1
  91. package/dist/Semaphore.js +40 -0
  92. package/dist/Semaphore.js.map +1 -1
  93. package/dist/Stream.d.ts +13 -4
  94. package/dist/Stream.d.ts.map +1 -1
  95. package/dist/Stream.js +9 -0
  96. package/dist/Stream.js.map +1 -1
  97. package/dist/Terminal.d.ts +18 -1
  98. package/dist/Terminal.d.ts.map +1 -1
  99. package/dist/Terminal.js +1 -1
  100. package/dist/Terminal.js.map +1 -1
  101. package/dist/ai/AiError.d.ts +43 -116
  102. package/dist/ai/AiError.d.ts.map +1 -1
  103. package/dist/ai/AiError.js +53 -72
  104. package/dist/ai/AiError.js.map +1 -1
  105. package/dist/ai/Decision.d.ts +196 -15
  106. package/dist/ai/Decision.d.ts.map +1 -1
  107. package/dist/ai/Decision.js +130 -0
  108. package/dist/ai/Decision.js.map +1 -1
  109. package/dist/ai/DecisionModel.d.ts +54 -13
  110. package/dist/ai/DecisionModel.d.ts.map +1 -1
  111. package/dist/ai/DecisionModel.js +123 -12
  112. package/dist/ai/DecisionModel.js.map +1 -1
  113. package/dist/ai/McpClient.d.ts +171 -19
  114. package/dist/ai/McpClient.d.ts.map +1 -1
  115. package/dist/ai/McpClient.js +277 -66
  116. package/dist/ai/McpClient.js.map +1 -1
  117. package/dist/ai/McpSchema.d.ts +108 -0
  118. package/dist/ai/McpSchema.d.ts.map +1 -1
  119. package/dist/ai/McpSchema.js +99 -0
  120. package/dist/ai/McpSchema.js.map +1 -1
  121. package/dist/ai/McpServer.d.ts +744 -29
  122. package/dist/ai/McpServer.d.ts.map +1 -1
  123. package/dist/ai/McpServer.js +763 -136
  124. package/dist/ai/McpServer.js.map +1 -1
  125. package/dist/ai/McpTest.d.ts +130 -0
  126. package/dist/ai/McpTest.d.ts.map +1 -0
  127. package/dist/ai/McpTest.js +237 -0
  128. package/dist/ai/McpTest.js.map +1 -0
  129. package/dist/ai/Prompt.d.ts.map +1 -1
  130. package/dist/ai/Prompt.js +20 -11
  131. package/dist/ai/Prompt.js.map +1 -1
  132. package/dist/ai/Response.d.ts +1 -25
  133. package/dist/ai/Response.d.ts.map +1 -1
  134. package/dist/ai/Response.js +1 -10
  135. package/dist/ai/Response.js.map +1 -1
  136. package/dist/ai/Tool.d.ts +19 -1
  137. package/dist/ai/Tool.d.ts.map +1 -1
  138. package/dist/ai/Tool.js +5 -7
  139. package/dist/ai/Tool.js.map +1 -1
  140. package/dist/ai/index.d.ts +5 -0
  141. package/dist/ai/index.d.ts.map +1 -1
  142. package/dist/ai/index.js +5 -0
  143. package/dist/ai/index.js.map +1 -1
  144. package/dist/ai/internal/mcpCore.js +89 -15
  145. package/dist/ai/internal/mcpCore.js.map +1 -1
  146. package/dist/ai/internal/mcpProtocol/v2024_11_05.js +7 -6
  147. package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
  148. package/dist/ai/internal/mcpProtocol/v2025_03_26.js +7 -6
  149. package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
  150. package/dist/ai/internal/mcpProtocol/v2025_06_18.js +7 -6
  151. package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
  152. package/dist/ai/internal/mcpProtocol/v2025_11_25.js +7 -6
  153. package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
  154. package/dist/ai/internal/mcpProtocol/v2026_07_28.js +60 -17
  155. package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
  156. package/dist/ai/internal/mcpProtocol.js +25 -0
  157. package/dist/ai/internal/mcpProtocol.js.map +1 -1
  158. package/dist/ai/internal/mcpRuntime.js +8 -6
  159. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  160. package/dist/ai/internal/mcpSkills.d.ts +2 -0
  161. package/dist/ai/internal/mcpSkills.d.ts.map +1 -0
  162. package/dist/ai/internal/mcpSkills.js +428 -0
  163. package/dist/ai/internal/mcpSkills.js.map +1 -0
  164. package/dist/ai/internal/mcpStatefulRuntime.js +6 -1
  165. package/dist/ai/internal/mcpStatefulRuntime.js.map +1 -1
  166. package/dist/cli/Argument.d.ts +6 -0
  167. package/dist/cli/Argument.d.ts.map +1 -1
  168. package/dist/cli/Argument.js +2 -0
  169. package/dist/cli/Argument.js.map +1 -1
  170. package/dist/cli/CliOutput.d.ts +65 -1
  171. package/dist/cli/CliOutput.d.ts.map +1 -1
  172. package/dist/cli/CliOutput.js +94 -37
  173. package/dist/cli/CliOutput.js.map +1 -1
  174. package/dist/cli/Command.d.ts +23 -0
  175. package/dist/cli/Command.d.ts.map +1 -1
  176. package/dist/cli/Command.js +8 -0
  177. package/dist/cli/Command.js.map +1 -1
  178. package/dist/cli/Flag.d.ts +107 -0
  179. package/dist/cli/Flag.d.ts.map +1 -1
  180. package/dist/cli/Flag.js +37 -0
  181. package/dist/cli/Flag.js.map +1 -1
  182. package/dist/cli/HelpDoc.d.ts +15 -1
  183. package/dist/cli/HelpDoc.d.ts.map +1 -1
  184. package/dist/cli/Param.d.ts +6 -0
  185. package/dist/cli/Param.d.ts.map +1 -1
  186. package/dist/cli/Param.js +2 -0
  187. package/dist/cli/Param.js.map +1 -1
  188. package/dist/cli/Primitive.d.ts +14 -0
  189. package/dist/cli/Primitive.d.ts.map +1 -1
  190. package/dist/cli/Primitive.js +15 -1
  191. package/dist/cli/Primitive.js.map +1 -1
  192. package/dist/cli/Prompt.d.ts +1 -0
  193. package/dist/cli/Prompt.d.ts.map +1 -1
  194. package/dist/cli/Prompt.js +1 -0
  195. package/dist/cli/Prompt.js.map +1 -1
  196. package/dist/cli/internal/help.d.ts.map +1 -1
  197. package/dist/cli/internal/help.js +17 -10
  198. package/dist/cli/internal/help.js.map +1 -1
  199. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  200. package/dist/cluster/ClusterWorkflowEngine.js +15 -5
  201. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  202. package/dist/cluster/Reply.d.ts +1 -1
  203. package/dist/cluster/Reply.d.ts.map +1 -1
  204. package/dist/cluster/Reply.js.map +1 -1
  205. package/dist/cluster/Sharding.d.ts.map +1 -1
  206. package/dist/cluster/Sharding.js +93 -28
  207. package/dist/cluster/Sharding.js.map +1 -1
  208. package/dist/cluster/ShardingConfig.d.ts +72 -6
  209. package/dist/cluster/ShardingConfig.d.ts.map +1 -1
  210. package/dist/cluster/ShardingConfig.js +4 -0
  211. package/dist/cluster/ShardingConfig.js.map +1 -1
  212. package/dist/cluster/SingleRunner.d.ts +3 -3
  213. package/dist/cluster/SingleRunner.d.ts.map +1 -1
  214. package/dist/cluster/SingleRunner.js +1 -1
  215. package/dist/cluster/SqlMessageStorage.d.ts +37 -6
  216. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  217. package/dist/cluster/SqlMessageStorage.js +34 -7
  218. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  219. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  220. package/dist/cluster/SqlRunnerStorage.js +23 -8
  221. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  222. package/dist/cluster/internal/entityManager.js +15 -7
  223. package/dist/cluster/internal/entityManager.js.map +1 -1
  224. package/dist/crypto/Aead.d.ts +323 -0
  225. package/dist/crypto/Aead.d.ts.map +1 -0
  226. package/dist/crypto/Aead.js +331 -0
  227. package/dist/crypto/Aead.js.map +1 -0
  228. package/dist/crypto/Cipher.d.ts +236 -0
  229. package/dist/crypto/Cipher.d.ts.map +1 -0
  230. package/dist/crypto/Cipher.js +233 -0
  231. package/dist/crypto/Cipher.js.map +1 -0
  232. package/dist/crypto/CryptoError.d.ts +212 -0
  233. package/dist/crypto/CryptoError.d.ts.map +1 -0
  234. package/dist/crypto/CryptoError.js +202 -0
  235. package/dist/crypto/CryptoError.js.map +1 -0
  236. package/dist/crypto/Digest.d.ts +143 -0
  237. package/dist/crypto/Digest.d.ts.map +1 -0
  238. package/dist/crypto/Digest.js +146 -0
  239. package/dist/crypto/Digest.js.map +1 -0
  240. package/dist/crypto/Kdf.d.ts +220 -0
  241. package/dist/crypto/Kdf.d.ts.map +1 -0
  242. package/dist/crypto/Kdf.js +212 -0
  243. package/dist/crypto/Kdf.js.map +1 -0
  244. package/dist/crypto/KeyAgreement.d.ts +324 -0
  245. package/dist/crypto/KeyAgreement.d.ts.map +1 -0
  246. package/dist/crypto/KeyAgreement.js +303 -0
  247. package/dist/crypto/KeyAgreement.js.map +1 -0
  248. package/dist/crypto/KeyFormat.d.ts +341 -0
  249. package/dist/crypto/KeyFormat.d.ts.map +1 -0
  250. package/dist/crypto/KeyFormat.js +556 -0
  251. package/dist/crypto/KeyFormat.js.map +1 -0
  252. package/dist/crypto/KeyWrap.d.ts +390 -0
  253. package/dist/crypto/KeyWrap.d.ts.map +1 -0
  254. package/dist/crypto/KeyWrap.js +381 -0
  255. package/dist/crypto/KeyWrap.js.map +1 -0
  256. package/dist/crypto/Mac.d.ts +278 -0
  257. package/dist/crypto/Mac.d.ts.map +1 -0
  258. package/dist/crypto/Mac.js +288 -0
  259. package/dist/crypto/Mac.js.map +1 -0
  260. package/dist/crypto/SecureRandom.d.ts +340 -0
  261. package/dist/crypto/SecureRandom.d.ts.map +1 -0
  262. package/dist/crypto/SecureRandom.js +257 -0
  263. package/dist/crypto/SecureRandom.js.map +1 -0
  264. package/dist/crypto/Signature.d.ts +449 -0
  265. package/dist/crypto/Signature.d.ts.map +1 -0
  266. package/dist/crypto/Signature.js +484 -0
  267. package/dist/crypto/Signature.js.map +1 -0
  268. package/dist/crypto/WebCrypto.d.ts +80 -0
  269. package/dist/crypto/WebCrypto.d.ts.map +1 -0
  270. package/dist/crypto/WebCrypto.js +63 -0
  271. package/dist/crypto/WebCrypto.js.map +1 -0
  272. package/dist/crypto/index.d.ts +65 -0
  273. package/dist/crypto/index.d.ts.map +1 -0
  274. package/dist/crypto/index.js +66 -0
  275. package/dist/crypto/index.js.map +1 -0
  276. package/dist/crypto/internal/asymmetric.d.ts +2 -0
  277. package/dist/crypto/internal/asymmetric.d.ts.map +1 -0
  278. package/dist/crypto/internal/asymmetric.js +210 -0
  279. package/dist/crypto/internal/asymmetric.js.map +1 -0
  280. package/dist/crypto/internal/chacha.d.ts +46 -0
  281. package/dist/crypto/internal/chacha.d.ts.map +1 -0
  282. package/dist/crypto/internal/chacha.js +885 -0
  283. package/dist/crypto/internal/chacha.js.map +1 -0
  284. package/dist/crypto/internal/der.d.ts +6 -0
  285. package/dist/crypto/internal/der.d.ts.map +1 -0
  286. package/dist/crypto/internal/der.js +86 -0
  287. package/dist/crypto/internal/der.js.map +1 -0
  288. package/dist/crypto/internal/digest.d.ts +2 -0
  289. package/dist/crypto/internal/digest.d.ts.map +1 -0
  290. package/dist/crypto/internal/digest.js +15 -0
  291. package/dist/crypto/internal/digest.js.map +1 -0
  292. package/dist/crypto/internal/key.d.ts +2 -0
  293. package/dist/crypto/internal/key.d.ts.map +1 -0
  294. package/dist/crypto/internal/key.js +171 -0
  295. package/dist/crypto/internal/key.js.map +1 -0
  296. package/dist/crypto/internal/md5.d.ts +39 -0
  297. package/dist/crypto/internal/md5.d.ts.map +1 -0
  298. package/dist/crypto/internal/md5.js +179 -0
  299. package/dist/crypto/internal/md5.js.map +1 -0
  300. package/dist/crypto/internal/webCrypto.d.ts +2 -0
  301. package/dist/crypto/internal/webCrypto.d.ts.map +1 -0
  302. package/dist/crypto/internal/webCrypto.js +111 -0
  303. package/dist/crypto/internal/webCrypto.js.map +1 -0
  304. package/dist/encoding/Base64Url.d.ts.map +1 -1
  305. package/dist/encoding/Base64Url.js +29 -5
  306. package/dist/encoding/Base64Url.js.map +1 -1
  307. package/dist/encoding/Csv.d.ts +608 -0
  308. package/dist/encoding/Csv.d.ts.map +1 -0
  309. package/dist/encoding/Csv.js +718 -0
  310. package/dist/encoding/Csv.js.map +1 -0
  311. package/dist/encoding/Hex.d.ts +3 -2
  312. package/dist/encoding/Hex.d.ts.map +1 -1
  313. package/dist/encoding/Hex.js +3 -2
  314. package/dist/encoding/Hex.js.map +1 -1
  315. package/dist/encoding/Ndjson.d.ts +5 -4
  316. package/dist/encoding/Ndjson.d.ts.map +1 -1
  317. package/dist/encoding/Ndjson.js +6 -5
  318. package/dist/encoding/Ndjson.js.map +1 -1
  319. package/dist/encoding/SchemaBinary.d.ts.map +1 -1
  320. package/dist/encoding/SchemaBinary.js +42 -4
  321. package/dist/encoding/SchemaBinary.js.map +1 -1
  322. package/dist/encoding/Sse.d.ts +3 -1
  323. package/dist/encoding/Sse.d.ts.map +1 -1
  324. package/dist/encoding/Sse.js +5 -3
  325. package/dist/encoding/Sse.js.map +1 -1
  326. package/dist/encoding/Toml.d.ts +17 -3
  327. package/dist/encoding/Toml.d.ts.map +1 -1
  328. package/dist/encoding/Toml.js +104 -16
  329. package/dist/encoding/Toml.js.map +1 -1
  330. package/dist/encoding/Yaml.d.ts +8 -1
  331. package/dist/encoding/Yaml.d.ts.map +1 -1
  332. package/dist/encoding/Yaml.js +54 -18
  333. package/dist/encoding/Yaml.js.map +1 -1
  334. package/dist/encoding/index.d.ts +5 -0
  335. package/dist/encoding/index.d.ts.map +1 -1
  336. package/dist/encoding/index.js +5 -0
  337. package/dist/encoding/index.js.map +1 -1
  338. package/dist/eventlog/EventJournal.d.ts.map +1 -1
  339. package/dist/eventlog/EventJournal.js +6 -3
  340. package/dist/eventlog/EventJournal.js.map +1 -1
  341. package/dist/eventlog/EventLog.d.ts +126 -4
  342. package/dist/eventlog/EventLog.d.ts.map +1 -1
  343. package/dist/eventlog/EventLog.js +207 -12
  344. package/dist/eventlog/EventLog.js.map +1 -1
  345. package/dist/eventlog/EventLogEncryption.d.ts +41 -4
  346. package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
  347. package/dist/eventlog/EventLogEncryption.js +83 -64
  348. package/dist/eventlog/EventLogEncryption.js.map +1 -1
  349. package/dist/eventlog/EventLogMessage.d.ts +279 -0
  350. package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
  351. package/dist/eventlog/EventLogMessage.js +217 -1
  352. package/dist/eventlog/EventLogMessage.js.map +1 -1
  353. package/dist/eventlog/EventLogRemote.d.ts +200 -28
  354. package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
  355. package/dist/eventlog/EventLogRemote.js +186 -16
  356. package/dist/eventlog/EventLogRemote.js.map +1 -1
  357. package/dist/eventlog/EventLogServer.d.ts +10 -1
  358. package/dist/eventlog/EventLogServer.d.ts.map +1 -1
  359. package/dist/eventlog/EventLogServer.js +45 -22
  360. package/dist/eventlog/EventLogServer.js.map +1 -1
  361. package/dist/eventlog/EventLogServerEncrypted.d.ts +336 -5
  362. package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  363. package/dist/eventlog/EventLogServerEncrypted.js +769 -14
  364. package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
  365. package/dist/eventlog/EventLogServerUnencrypted.d.ts +17 -0
  366. package/dist/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
  367. package/dist/eventlog/EventLogServerUnencrypted.js +14 -2
  368. package/dist/eventlog/EventLogServerUnencrypted.js.map +1 -1
  369. package/dist/eventlog/EventLogSessionAuth.d.ts +26 -3
  370. package/dist/eventlog/EventLogSessionAuth.d.ts.map +1 -1
  371. package/dist/eventlog/EventLogSessionAuth.js +63 -64
  372. package/dist/eventlog/EventLogSessionAuth.js.map +1 -1
  373. package/dist/eventlog/EventRow.d.ts +4 -0
  374. package/dist/eventlog/EventRow.d.ts.map +1 -1
  375. package/dist/eventlog/EventRow.js +12 -2
  376. package/dist/eventlog/EventRow.js.map +1 -1
  377. package/dist/eventlog/SqlEventJournal.js +2 -2
  378. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  379. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +21 -5
  380. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
  381. package/dist/eventlog/SqlEventLogServerEncrypted.js +1048 -113
  382. package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  383. package/dist/eventlog/SqlEventLogServerUnencrypted.js +2 -2
  384. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  385. package/dist/eventlog/internal/batches.d.ts +12 -0
  386. package/dist/eventlog/internal/batches.d.ts.map +1 -0
  387. package/dist/eventlog/internal/batches.js +26 -0
  388. package/dist/eventlog/internal/batches.js.map +1 -0
  389. package/dist/eventlog/internal/compaction.d.ts +38 -0
  390. package/dist/eventlog/internal/compaction.d.ts.map +1 -0
  391. package/dist/eventlog/internal/compaction.js +33 -0
  392. package/dist/eventlog/internal/compaction.js.map +1 -0
  393. package/dist/eventlog/internal/identityRootSecretDerivation.js +66 -67
  394. package/dist/eventlog/internal/identityRootSecretDerivation.js.map +1 -1
  395. package/dist/eventlog/internal/remoteCompaction.d.ts +31 -0
  396. package/dist/eventlog/internal/remoteCompaction.d.ts.map +1 -0
  397. package/dist/eventlog/internal/remoteCompaction.js +76 -0
  398. package/dist/eventlog/internal/remoteCompaction.js.map +1 -0
  399. package/dist/graphql/GraphQLClient.d.ts +3 -1
  400. package/dist/graphql/GraphQLClient.d.ts.map +1 -1
  401. package/dist/graphql/GraphQLClient.js.map +1 -1
  402. package/dist/graphql/GraphQLClientError.d.ts +14 -9
  403. package/dist/graphql/GraphQLClientError.d.ts.map +1 -1
  404. package/dist/graphql/GraphQLClientError.js +14 -21
  405. package/dist/graphql/GraphQLClientError.js.map +1 -1
  406. package/dist/graphql/GraphQLProtocol.d.ts +12 -3
  407. package/dist/graphql/GraphQLProtocol.d.ts.map +1 -1
  408. package/dist/graphql/GraphQLProtocol.js +4 -1
  409. package/dist/graphql/GraphQLProtocol.js.map +1 -1
  410. package/dist/http/Cookies.d.ts +172 -0
  411. package/dist/http/Cookies.d.ts.map +1 -1
  412. package/dist/http/Cookies.js +143 -1
  413. package/dist/http/Cookies.js.map +1 -1
  414. package/dist/http/FetchHttpClient.d.ts +26 -2
  415. package/dist/http/FetchHttpClient.d.ts.map +1 -1
  416. package/dist/http/FetchHttpClient.js +78 -15
  417. package/dist/http/FetchHttpClient.js.map +1 -1
  418. package/dist/http/HttpClient.d.ts +268 -15
  419. package/dist/http/HttpClient.d.ts.map +1 -1
  420. package/dist/http/HttpClient.js +140 -7
  421. package/dist/http/HttpClient.js.map +1 -1
  422. package/dist/http/HttpClientRequest.d.ts +9 -5
  423. package/dist/http/HttpClientRequest.d.ts.map +1 -1
  424. package/dist/http/HttpClientRequest.js +2 -3
  425. package/dist/http/HttpClientRequest.js.map +1 -1
  426. package/dist/http/HttpClientResponse.d.ts.map +1 -1
  427. package/dist/http/HttpClientResponse.js +3 -2
  428. package/dist/http/HttpClientResponse.js.map +1 -1
  429. package/dist/http/HttpMethod.d.ts +7 -1
  430. package/dist/http/HttpMethod.d.ts.map +1 -1
  431. package/dist/http/HttpMethod.js +3 -8
  432. package/dist/http/HttpMethod.js.map +1 -1
  433. package/dist/http/HttpServerRequest.d.ts +5 -2
  434. package/dist/http/HttpServerRequest.d.ts.map +1 -1
  435. package/dist/http/HttpServerRequest.js +44 -39
  436. package/dist/http/HttpServerRequest.js.map +1 -1
  437. package/dist/http/HttpServerResponse.d.ts.map +1 -1
  438. package/dist/http/HttpServerResponse.js +3 -2
  439. package/dist/http/HttpServerResponse.js.map +1 -1
  440. package/dist/http/HttpTraceContext.d.ts +2 -1
  441. package/dist/http/HttpTraceContext.d.ts.map +1 -1
  442. package/dist/http/HttpTraceContext.js +7 -5
  443. package/dist/http/HttpTraceContext.js.map +1 -1
  444. package/dist/http/ProblemDetails.d.ts +96 -0
  445. package/dist/http/ProblemDetails.d.ts.map +1 -0
  446. package/dist/http/ProblemDetails.js +98 -0
  447. package/dist/http/ProblemDetails.js.map +1 -0
  448. package/dist/http/index.d.ts +5 -0
  449. package/dist/http/index.d.ts.map +1 -1
  450. package/dist/http/index.js +5 -0
  451. package/dist/http/index.js.map +1 -1
  452. package/dist/http/internal/decompression.js +3 -2
  453. package/dist/http/internal/decompression.js.map +1 -1
  454. package/dist/http/internal/mimeTypes.d.ts +4 -1
  455. package/dist/http/internal/mimeTypes.d.ts.map +1 -1
  456. package/dist/http/internal/mimeTypes.js +4 -1
  457. package/dist/http/internal/mimeTypes.js.map +1 -1
  458. package/dist/http/internal/urlParams.js +8 -0
  459. package/dist/http/internal/urlParams.js.map +1 -1
  460. package/dist/http-api/HttpApiBuilder.js +19 -5
  461. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  462. package/dist/http-api/HttpApiClient.d.ts +63 -0
  463. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  464. package/dist/http-api/HttpApiClient.js +51 -0
  465. package/dist/http-api/HttpApiClient.js.map +1 -1
  466. package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
  467. package/dist/http-api/HttpApiEndpoint.js +14 -5
  468. package/dist/http-api/HttpApiEndpoint.js.map +1 -1
  469. package/dist/http-api/HttpApiError.d.ts +185 -13
  470. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  471. package/dist/http-api/HttpApiError.js +128 -0
  472. package/dist/http-api/HttpApiError.js.map +1 -1
  473. package/dist/http-api/HttpApiMiddleware.d.ts +64 -17
  474. package/dist/http-api/HttpApiMiddleware.d.ts.map +1 -1
  475. package/dist/http-api/HttpApiMiddleware.js +85 -1
  476. package/dist/http-api/HttpApiMiddleware.js.map +1 -1
  477. package/dist/http-api/HttpApiSchema.d.ts +76 -14
  478. package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
  479. package/dist/http-api/HttpApiSchema.js +54 -1
  480. package/dist/http-api/HttpApiSchema.js.map +1 -1
  481. package/dist/index.d.ts +5 -5
  482. package/dist/index.d.ts.map +1 -1
  483. package/dist/index.js +5 -5
  484. package/dist/index.js.map +1 -1
  485. package/dist/internal/dateTime.js +49 -24
  486. package/dist/internal/dateTime.js.map +1 -1
  487. package/dist/internal/effect.js +35 -14
  488. package/dist/internal/effect.js.map +1 -1
  489. package/dist/internal/glob.d.ts +2 -0
  490. package/dist/internal/glob.d.ts.map +1 -0
  491. package/dist/internal/glob.js +808 -0
  492. package/dist/internal/glob.js.map +1 -0
  493. package/dist/internal/graphql.js +21 -7
  494. package/dist/internal/graphql.js.map +1 -1
  495. package/dist/internal/graphqlHeaders.d.ts +7 -0
  496. package/dist/internal/graphqlHeaders.d.ts.map +1 -1
  497. package/dist/internal/graphqlHeaders.js +11 -0
  498. package/dist/internal/graphqlHeaders.js.map +1 -1
  499. package/dist/internal/matcher.js +10 -0
  500. package/dist/internal/matcher.js.map +1 -1
  501. package/dist/internal/persistence.js +9 -0
  502. package/dist/internal/persistence.js.map +1 -1
  503. package/dist/internal/rcRef.js +4 -1
  504. package/dist/internal/rcRef.js.map +1 -1
  505. package/dist/internal/request.js +29 -42
  506. package/dist/internal/request.js.map +1 -1
  507. package/dist/internal/schema/fromJsonSchemaDocument.js +7 -8
  508. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  509. package/dist/internal/schema/toCodeDocument.js +6 -3
  510. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  511. package/dist/internal/trie.js +42 -13
  512. package/dist/internal/trie.js.map +1 -1
  513. package/dist/internal/ulid.js +41 -0
  514. package/dist/internal/ulid.js.map +1 -1
  515. package/dist/internal/uuid.js +52 -8
  516. package/dist/internal/uuid.js.map +1 -1
  517. package/dist/internal/version.js +1 -1
  518. package/dist/jose/JoseError.d.ts +285 -0
  519. package/dist/jose/JoseError.d.ts.map +1 -0
  520. package/dist/jose/JoseError.js +269 -0
  521. package/dist/jose/JoseError.js.map +1 -0
  522. package/dist/jose/Jwe.d.ts +128 -0
  523. package/dist/jose/Jwe.d.ts.map +1 -0
  524. package/dist/jose/Jwe.js +134 -0
  525. package/dist/jose/Jwe.js.map +1 -0
  526. package/dist/jose/Jwk.d.ts +597 -0
  527. package/dist/jose/Jwk.d.ts.map +1 -0
  528. package/dist/jose/Jwk.js +503 -0
  529. package/dist/jose/Jwk.js.map +1 -0
  530. package/dist/jose/Jwks.d.ts +236 -0
  531. package/dist/jose/Jwks.d.ts.map +1 -0
  532. package/dist/jose/Jwks.js +306 -0
  533. package/dist/jose/Jwks.js.map +1 -0
  534. package/dist/jose/Jws.d.ts +177 -0
  535. package/dist/jose/Jws.d.ts.map +1 -0
  536. package/dist/jose/Jws.js +183 -0
  537. package/dist/jose/Jws.js.map +1 -0
  538. package/dist/jose/Jwt.d.ts +270 -0
  539. package/dist/jose/Jwt.d.ts.map +1 -0
  540. package/dist/jose/Jwt.js +293 -0
  541. package/dist/jose/Jwt.js.map +1 -0
  542. package/dist/jose/index.d.ts +51 -0
  543. package/dist/jose/index.d.ts.map +1 -0
  544. package/dist/jose/index.js +52 -0
  545. package/dist/jose/index.js.map +1 -0
  546. package/dist/jose/internal/compact.d.ts +2 -0
  547. package/dist/jose/internal/compact.d.ts.map +1 -0
  548. package/dist/jose/internal/compact.js +179 -0
  549. package/dist/jose/internal/compact.js.map +1 -0
  550. package/dist/net/Host.d.ts.map +1 -1
  551. package/dist/net/Host.js +5 -10
  552. package/dist/net/Host.js.map +1 -1
  553. package/dist/observability/Otlp.d.ts +15 -4
  554. package/dist/observability/Otlp.d.ts.map +1 -1
  555. package/dist/observability/Otlp.js +10 -0
  556. package/dist/observability/Otlp.js.map +1 -1
  557. package/dist/observability/OtlpResource.d.ts +7 -0
  558. package/dist/observability/OtlpResource.d.ts.map +1 -1
  559. package/dist/observability/OtlpResource.js +11 -1
  560. package/dist/observability/OtlpResource.js.map +1 -1
  561. package/dist/observability/OtlpSerialization.d.ts +1 -1
  562. package/dist/observability/OtlpSerialization.d.ts.map +1 -1
  563. package/dist/observability/OtlpSerialization.js +10 -4
  564. package/dist/observability/OtlpSerialization.js.map +1 -1
  565. package/dist/observability/internal/otlpProtobuf.js +3 -3
  566. package/dist/observability/internal/otlpProtobuf.js.map +1 -1
  567. package/dist/observability/internal/protobuf.js +6 -0
  568. package/dist/observability/internal/protobuf.js.map +1 -1
  569. package/dist/persistence/CircuitBreaker.d.ts +98 -38
  570. package/dist/persistence/CircuitBreaker.d.ts.map +1 -1
  571. package/dist/persistence/CircuitBreaker.js +67 -29
  572. package/dist/persistence/CircuitBreaker.js.map +1 -1
  573. package/dist/persistence/KeyValueStore.d.ts +47 -2
  574. package/dist/persistence/KeyValueStore.d.ts.map +1 -1
  575. package/dist/persistence/KeyValueStore.js +129 -18
  576. package/dist/persistence/KeyValueStore.js.map +1 -1
  577. package/dist/persistence/PersistedQueue.d.ts +9 -0
  578. package/dist/persistence/PersistedQueue.d.ts.map +1 -1
  579. package/dist/persistence/PersistedQueue.js +94 -52
  580. package/dist/persistence/PersistedQueue.js.map +1 -1
  581. package/dist/persistence/Persistence.d.ts +10 -4
  582. package/dist/persistence/Persistence.d.ts.map +1 -1
  583. package/dist/persistence/Persistence.js +18 -11
  584. package/dist/persistence/Persistence.js.map +1 -1
  585. package/dist/persistence/RateLimiter.d.ts +8 -0
  586. package/dist/persistence/RateLimiter.d.ts.map +1 -1
  587. package/dist/persistence/RateLimiter.js +63 -12
  588. package/dist/persistence/RateLimiter.js.map +1 -1
  589. package/dist/persistence/index.d.ts +1 -1
  590. package/dist/persistence/index.js +1 -1
  591. package/dist/process/ChildProcess.d.ts +207 -67
  592. package/dist/process/ChildProcess.d.ts.map +1 -1
  593. package/dist/process/ChildProcess.js +56 -158
  594. package/dist/process/ChildProcess.js.map +1 -1
  595. package/dist/process/ChildProcessSpawner.d.ts +5 -0
  596. package/dist/process/ChildProcessSpawner.d.ts.map +1 -1
  597. package/dist/process/ChildProcessSpawner.js.map +1 -1
  598. package/dist/process/CommandLine.d.ts +294 -0
  599. package/dist/process/CommandLine.d.ts.map +1 -0
  600. package/dist/process/CommandLine.js +481 -0
  601. package/dist/process/CommandLine.js.map +1 -0
  602. package/dist/process/index.d.ts +5 -0
  603. package/dist/process/index.d.ts.map +1 -1
  604. package/dist/process/index.js +5 -0
  605. package/dist/process/index.js.map +1 -1
  606. package/dist/reactivity/Atom.d.ts +2 -1
  607. package/dist/reactivity/Atom.d.ts.map +1 -1
  608. package/dist/reactivity/Atom.js +3 -4
  609. package/dist/reactivity/Atom.js.map +1 -1
  610. package/dist/reactivity/AtomRegistry.js +17 -7
  611. package/dist/reactivity/AtomRegistry.js.map +1 -1
  612. package/dist/rpc/Rpc.d.ts +1 -1
  613. package/dist/rpc/Rpc.d.ts.map +1 -1
  614. package/dist/rpc/Rpc.js.map +1 -1
  615. package/dist/rpc/RpcClient.d.ts +28 -1
  616. package/dist/rpc/RpcClient.d.ts.map +1 -1
  617. package/dist/rpc/RpcClient.js +78 -27
  618. package/dist/rpc/RpcClient.js.map +1 -1
  619. package/dist/rpc/RpcMessage.d.ts +13 -3
  620. package/dist/rpc/RpcMessage.d.ts.map +1 -1
  621. package/dist/rpc/RpcMessage.js +1 -0
  622. package/dist/rpc/RpcMessage.js.map +1 -1
  623. package/dist/rpc/RpcSerialization.d.ts.map +1 -1
  624. package/dist/rpc/RpcSerialization.js +6 -0
  625. package/dist/rpc/RpcSerialization.js.map +1 -1
  626. package/dist/rpc/RpcServer.d.ts +31 -0
  627. package/dist/rpc/RpcServer.d.ts.map +1 -1
  628. package/dist/rpc/RpcServer.js +139 -66
  629. package/dist/rpc/RpcServer.js.map +1 -1
  630. package/dist/schema/Model.d.ts +14 -0
  631. package/dist/schema/Model.d.ts.map +1 -1
  632. package/dist/schema/Model.js +18 -3
  633. package/dist/schema/Model.js.map +1 -1
  634. package/dist/sql/Migrator.d.ts +9 -20
  635. package/dist/sql/Migrator.d.ts.map +1 -1
  636. package/dist/sql/Migrator.js +20 -53
  637. package/dist/sql/Migrator.js.map +1 -1
  638. package/dist/sql/MigratorFileSystem.d.ts +21 -0
  639. package/dist/sql/MigratorFileSystem.d.ts.map +1 -0
  640. package/dist/sql/MigratorFileSystem.js +57 -0
  641. package/dist/sql/MigratorFileSystem.js.map +1 -0
  642. package/dist/sql/SqlClient.d.ts +38 -3
  643. package/dist/sql/SqlClient.d.ts.map +1 -1
  644. package/dist/sql/SqlClient.js +9 -12
  645. package/dist/sql/SqlClient.js.map +1 -1
  646. package/dist/sql/Statement.d.ts +61 -9
  647. package/dist/sql/Statement.d.ts.map +1 -1
  648. package/dist/sql/Statement.js +24 -33
  649. package/dist/sql/Statement.js.map +1 -1
  650. package/dist/sql/index.js +1 -1
  651. package/dist/testing/index.d.ts +0 -5
  652. package/dist/testing/index.d.ts.map +1 -1
  653. package/dist/testing/index.js +0 -5
  654. package/dist/testing/index.js.map +1 -1
  655. package/dist/workflow/Workflow.d.ts +4 -0
  656. package/dist/workflow/Workflow.d.ts.map +1 -1
  657. package/dist/workflow/Workflow.js.map +1 -1
  658. package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
  659. package/dist/workflow/WorkflowEngine.js +5 -0
  660. package/dist/workflow/WorkflowEngine.js.map +1 -1
  661. package/dist/workflow/internal/crypto.js +9 -8
  662. package/dist/workflow/internal/crypto.js.map +1 -1
  663. package/package.json +7 -1
  664. package/src/BigDecimal.ts +173 -16
  665. package/src/Channel.ts +17 -11
  666. package/src/Config.ts +7 -1
  667. package/src/Context.ts +34 -10
  668. package/src/Cron.ts +178 -29
  669. package/src/Duration.ts +140 -0
  670. package/src/Effect.ts +914 -85
  671. package/src/Equal.ts +3 -3
  672. package/src/FileSystem.ts +65 -4
  673. package/src/Glob.ts +205 -0
  674. package/src/Hash.ts +5 -4
  675. package/src/Iterable.ts +8 -5
  676. package/src/Match.ts +127 -0
  677. package/src/Path.ts +6 -1
  678. package/src/Pool.ts +75 -16
  679. package/src/Random.ts +3 -3
  680. package/src/RcMap.ts +5 -1
  681. package/src/Schedule.ts +26 -3
  682. package/src/Schema.ts +1191 -63
  683. package/src/SchemaGetter.ts +27 -11
  684. package/src/SchemaRepresentation.ts +23 -2
  685. package/src/SchemaTransformation.ts +10 -5
  686. package/src/ScopedCache.ts +5 -9
  687. package/src/Semaphore.ts +141 -0
  688. package/src/Stream.ts +15 -6
  689. package/src/Terminal.ts +19 -1
  690. package/src/ai/AiError.ts +56 -80
  691. package/src/ai/Decision.ts +257 -6
  692. package/src/ai/DecisionModel.ts +171 -28
  693. package/src/ai/McpClient.ts +488 -91
  694. package/src/ai/McpSchema.ts +119 -0
  695. package/src/ai/McpServer.ts +1525 -319
  696. package/src/ai/McpTest.ts +380 -0
  697. package/src/ai/Prompt.ts +16 -11
  698. package/src/ai/Response.ts +2 -22
  699. package/src/ai/Tool.ts +32 -18
  700. package/src/ai/index.ts +6 -0
  701. package/src/ai/internal/mcpCore.ts +243 -56
  702. package/src/ai/internal/mcpProtocol/v2024_11_05.ts +7 -8
  703. package/src/ai/internal/mcpProtocol/v2025_03_26.ts +7 -8
  704. package/src/ai/internal/mcpProtocol/v2025_06_18.ts +7 -8
  705. package/src/ai/internal/mcpProtocol/v2025_11_25.ts +7 -8
  706. package/src/ai/internal/mcpProtocol/v2026_07_28.ts +56 -17
  707. package/src/ai/internal/mcpProtocol.ts +44 -0
  708. package/src/ai/internal/mcpRuntime.ts +15 -8
  709. package/src/ai/internal/mcpSkills.ts +480 -0
  710. package/src/ai/internal/mcpStatefulRuntime.ts +14 -2
  711. package/src/cli/Argument.ts +6 -0
  712. package/src/cli/CliOutput.ts +117 -49
  713. package/src/cli/Command.ts +23 -0
  714. package/src/cli/Flag.ts +107 -0
  715. package/src/cli/HelpDoc.ts +18 -1
  716. package/src/cli/Param.ts +6 -0
  717. package/src/cli/Primitive.ts +16 -1
  718. package/src/cli/Prompt.ts +1 -0
  719. package/src/cli/internal/help.ts +21 -9
  720. package/src/cluster/ClusterWorkflowEngine.ts +22 -8
  721. package/src/cluster/Reply.ts +1 -1
  722. package/src/cluster/Sharding.ts +96 -26
  723. package/src/cluster/ShardingConfig.ts +41 -3
  724. package/src/cluster/SingleRunner.ts +3 -3
  725. package/src/cluster/SqlMessageStorage.ts +49 -17
  726. package/src/cluster/SqlRunnerStorage.ts +37 -27
  727. package/src/cluster/internal/entityManager.ts +24 -10
  728. package/src/crypto/Aead.ts +517 -0
  729. package/src/crypto/Cipher.ts +326 -0
  730. package/src/crypto/CryptoError.ts +242 -0
  731. package/src/crypto/Digest.ts +167 -0
  732. package/src/crypto/Kdf.ts +315 -0
  733. package/src/crypto/KeyAgreement.ts +489 -0
  734. package/src/crypto/KeyFormat.ts +741 -0
  735. package/src/crypto/KeyWrap.ts +639 -0
  736. package/src/crypto/Mac.ts +386 -0
  737. package/src/crypto/SecureRandom.ts +459 -0
  738. package/src/crypto/Signature.ts +673 -0
  739. package/src/crypto/WebCrypto.ts +84 -0
  740. package/src/crypto/index.ts +78 -0
  741. package/src/crypto/internal/asymmetric.ts +330 -0
  742. package/src/crypto/internal/chacha.ts +1088 -0
  743. package/src/crypto/internal/der.ts +110 -0
  744. package/src/crypto/internal/digest.ts +16 -0
  745. package/src/crypto/internal/key.ts +242 -0
  746. package/src/crypto/internal/md5.ts +170 -0
  747. package/src/crypto/internal/webCrypto.ts +150 -0
  748. package/src/encoding/Base64Url.ts +32 -5
  749. package/src/encoding/Csv.ts +1298 -0
  750. package/src/encoding/Hex.ts +3 -2
  751. package/src/encoding/Ndjson.ts +6 -5
  752. package/src/encoding/SchemaBinary.ts +40 -4
  753. package/src/encoding/Sse.ts +5 -3
  754. package/src/encoding/Toml.ts +85 -20
  755. package/src/encoding/Yaml.ts +61 -18
  756. package/src/encoding/index.ts +6 -0
  757. package/src/eventlog/EventJournal.ts +4 -3
  758. package/src/eventlog/EventLog.ts +347 -15
  759. package/src/eventlog/EventLogEncryption.ts +118 -110
  760. package/src/eventlog/EventLogMessage.ts +273 -1
  761. package/src/eventlog/EventLogRemote.ts +367 -23
  762. package/src/eventlog/EventLogServer.ts +54 -20
  763. package/src/eventlog/EventLogServerEncrypted.ts +1135 -67
  764. package/src/eventlog/EventLogServerUnencrypted.ts +19 -2
  765. package/src/eventlog/EventLogSessionAuth.ts +82 -70
  766. package/src/eventlog/EventRow.ts +12 -3
  767. package/src/eventlog/SqlEventJournal.ts +2 -2
  768. package/src/eventlog/SqlEventLogServerEncrypted.ts +1244 -136
  769. package/src/eventlog/SqlEventLogServerUnencrypted.ts +2 -2
  770. package/src/eventlog/internal/batches.ts +30 -0
  771. package/src/eventlog/internal/compaction.ts +64 -0
  772. package/src/eventlog/internal/identityRootSecretDerivation.ts +93 -123
  773. package/src/eventlog/internal/remoteCompaction.ts +92 -0
  774. package/src/graphql/GraphQLClient.ts +3 -1
  775. package/src/graphql/GraphQLClientError.ts +15 -22
  776. package/src/graphql/GraphQLProtocol.ts +12 -3
  777. package/src/http/Cookies.ts +281 -1
  778. package/src/http/FetchHttpClient.ts +88 -16
  779. package/src/http/HttpClient.ts +299 -33
  780. package/src/http/HttpClientRequest.ts +12 -9
  781. package/src/http/HttpClientResponse.ts +3 -2
  782. package/src/http/HttpMethod.ts +10 -2
  783. package/src/http/HttpServerRequest.ts +76 -53
  784. package/src/http/HttpServerResponse.ts +3 -2
  785. package/src/http/HttpTraceContext.ts +7 -4
  786. package/src/http/ProblemDetails.ts +149 -0
  787. package/src/http/index.ts +6 -0
  788. package/src/http/internal/decompression.ts +4 -4
  789. package/src/http/internal/mimeTypes.ts +4 -1
  790. package/src/http/internal/urlParams.ts +8 -0
  791. package/src/http-api/HttpApiBuilder.ts +24 -12
  792. package/src/http-api/HttpApiClient.ts +67 -1
  793. package/src/http-api/HttpApiEndpoint.ts +14 -5
  794. package/src/http-api/HttpApiError.ts +250 -0
  795. package/src/http-api/HttpApiMiddleware.ts +95 -1
  796. package/src/http-api/HttpApiSchema.ts +106 -15
  797. package/src/index.ts +6 -6
  798. package/src/internal/dateTime.ts +54 -24
  799. package/src/internal/effect.ts +40 -18
  800. package/src/internal/glob.ts +952 -0
  801. package/src/internal/graphql.ts +27 -9
  802. package/src/internal/graphqlHeaders.ts +13 -0
  803. package/src/internal/matcher.ts +17 -0
  804. package/src/internal/persistence.ts +11 -0
  805. package/src/internal/rcRef.ts +4 -1
  806. package/src/internal/request.ts +51 -58
  807. package/src/internal/schema/fromJsonSchemaDocument.ts +11 -10
  808. package/src/internal/schema/toCodeDocument.ts +7 -3
  809. package/src/internal/trie.ts +43 -14
  810. package/src/internal/ulid.ts +44 -0
  811. package/src/internal/uuid.ts +57 -16
  812. package/src/internal/version.ts +1 -1
  813. package/src/jose/JoseError.ts +329 -0
  814. package/src/jose/Jwe.ts +196 -0
  815. package/src/jose/Jwk.ts +777 -0
  816. package/src/jose/Jwks.ts +418 -0
  817. package/src/jose/Jws.ts +312 -0
  818. package/src/jose/Jwt.ts +493 -0
  819. package/src/jose/index.ts +58 -0
  820. package/src/jose/internal/compact.ts +195 -0
  821. package/src/net/Host.ts +5 -10
  822. package/src/observability/Otlp.ts +21 -4
  823. package/src/observability/OtlpResource.ts +9 -1
  824. package/src/observability/OtlpSerialization.ts +13 -5
  825. package/src/observability/internal/otlpProtobuf.ts +6 -6
  826. package/src/observability/internal/protobuf.ts +10 -0
  827. package/src/persistence/CircuitBreaker.ts +113 -48
  828. package/src/persistence/KeyValueStore.ts +219 -22
  829. package/src/persistence/PersistedQueue.ts +128 -59
  830. package/src/persistence/Persistence.ts +20 -13
  831. package/src/persistence/RateLimiter.ts +84 -15
  832. package/src/persistence/index.ts +1 -1
  833. package/src/process/ChildProcess.ts +255 -260
  834. package/src/process/ChildProcessSpawner.ts +5 -0
  835. package/src/process/CommandLine.ts +630 -0
  836. package/src/process/index.ts +6 -0
  837. package/src/reactivity/Atom.ts +5 -5
  838. package/src/reactivity/AtomRegistry.ts +20 -9
  839. package/src/rpc/Rpc.ts +3 -1
  840. package/src/rpc/RpcClient.ts +94 -38
  841. package/src/rpc/RpcMessage.ts +13 -3
  842. package/src/rpc/RpcSerialization.ts +3 -0
  843. package/src/rpc/RpcServer.ts +176 -78
  844. package/src/schema/Model.ts +26 -3
  845. package/src/sql/Migrator.ts +38 -80
  846. package/src/sql/MigratorFileSystem.ts +71 -0
  847. package/src/sql/SqlClient.ts +45 -24
  848. package/src/sql/Statement.ts +60 -29
  849. package/src/sql/index.ts +1 -1
  850. package/src/testing/index.ts +0 -6
  851. package/src/workflow/Workflow.ts +4 -0
  852. package/src/workflow/WorkflowEngine.ts +5 -0
  853. package/src/workflow/internal/crypto.ts +15 -11
  854. package/dist/Crypto.d.ts +0 -244
  855. package/dist/Crypto.d.ts.map +0 -1
  856. package/dist/Crypto.js +0 -139
  857. package/dist/Crypto.js.map +0 -1
  858. package/dist/testing/TestCrypto.d.ts +0 -73
  859. package/dist/testing/TestCrypto.d.ts.map +0 -1
  860. package/dist/testing/TestCrypto.js +0 -87
  861. package/dist/testing/TestCrypto.js.map +0 -1
  862. package/src/Crypto.ts +0 -347
  863. package/src/testing/TestCrypto.ts +0 -94
@@ -0,0 +1,380 @@
1
+ /**
2
+ * In-memory test client for `McpServer` registrations.
3
+ *
4
+ * `McpTest.makeClient` runs the MCP server over an in-memory
5
+ * `RpcServer.Protocol`, performs the handshake for the selected protocol
6
+ * version, and returns a typed client. Requests travel through the same
7
+ * JSON-RPC encoding, routing, middleware, and response encoding as the stdio
8
+ * and HTTP transports, so tests reach protocol encoding, list methods,
9
+ * sessions, and notifications without opening a transport.
10
+ *
11
+ * @stability unstable
12
+ * @since 4.0.0
13
+ */
14
+ import type * as Arr from "../Array.ts"
15
+ import * as Cause from "../Cause.ts"
16
+ import * as Context from "../Context.ts"
17
+ import * as Effect from "../Effect.ts"
18
+ import { identity } from "../Function.ts"
19
+ import * as Layer from "../Layer.ts"
20
+ import * as Predicate from "../Predicate.ts"
21
+ import * as Queue from "../Queue.ts"
22
+ import * as RpcClient from "../rpc/RpcClient.ts"
23
+ import type * as RpcClientError from "../rpc/RpcClientError.ts"
24
+ import * as RpcMessage from "../rpc/RpcMessage.ts"
25
+ import * as RpcSerialization from "../rpc/RpcSerialization.ts"
26
+ import * as RpcServer from "../rpc/RpcServer.ts"
27
+ import * as Schema from "../Schema.ts"
28
+ import type * as Scope from "../Scope.ts"
29
+ import type * as McpProtocol from "./McpProtocol.ts"
30
+ import * as McpSchema from "./McpSchema.ts"
31
+ import * as McpServer from "./McpServer.ts"
32
+
33
+ /**
34
+ * A typed in-memory MCP client connected to a running `McpServer`.
35
+ *
36
+ * **Details**
37
+ *
38
+ * Each request method mirrors one entry of `McpSchema.ClientRequestRpcs`,
39
+ * except `initialize`, which `makeClient` sends during the handshake. Requests
40
+ * are encoded with the client schemas and decoded with the server's selected
41
+ * protocol adapter, so results and errors match what a wire client observes.
42
+ *
43
+ * Server-to-client notifications are queued on `notifications` in their wire
44
+ * encoding, in delivery order. Server-to-client requests (elicitation, sampling, roots) are
45
+ * rejected with a method-not-found error.
46
+ *
47
+ * @stability unstable
48
+ * @category models
49
+ * @since 4.0.0
50
+ */
51
+ export interface Client {
52
+ /**
53
+ * The protocol version negotiated during the handshake.
54
+ */
55
+ readonly protocolVersion: McpProtocol.ProtocolVersion
56
+ /**
57
+ * The `McpServer` service the client is connected to, for registering
58
+ * capabilities or emitting notifications from a test.
59
+ */
60
+ readonly server: McpServer.McpServer["Service"]
61
+ /**
62
+ * Notifications the server sent to this client, in delivery order.
63
+ */
64
+ readonly notifications: Queue.Dequeue<McpSchema.ServerNotificationEncoded>
65
+ readonly ping: Effect.Effect<void, McpSchema.McpError>
66
+ readonly listTools: (
67
+ request?: typeof McpSchema.ListTools.payloadSchema.Type
68
+ ) => Effect.Effect<McpSchema.ListToolsResult, McpSchema.McpError>
69
+ readonly callTool: (
70
+ request: typeof McpSchema.CallTool.payloadSchema.Type
71
+ ) => Effect.Effect<McpSchema.CallToolResult, McpSchema.McpError>
72
+ readonly listResources: (
73
+ request?: typeof McpSchema.ListResources.payloadSchema.Type
74
+ ) => Effect.Effect<McpSchema.ListResourcesResult, McpSchema.McpError>
75
+ readonly listResourceTemplates: (
76
+ request?: typeof McpSchema.ListResourceTemplates.payloadSchema.Type
77
+ ) => Effect.Effect<McpSchema.ListResourceTemplatesResult, McpSchema.McpError>
78
+ readonly readResource: (
79
+ request: typeof McpSchema.ReadResource.payloadSchema.Type
80
+ ) => Effect.Effect<McpSchema.ReadResourceResult, McpSchema.McpError>
81
+ readonly subscribe: (
82
+ request: typeof McpSchema.Subscribe.payloadSchema.Type
83
+ ) => Effect.Effect<void, McpSchema.McpError>
84
+ readonly unsubscribe: (
85
+ request: typeof McpSchema.Unsubscribe.payloadSchema.Type
86
+ ) => Effect.Effect<void, McpSchema.McpError>
87
+ readonly listPrompts: (
88
+ request?: typeof McpSchema.ListPrompts.payloadSchema.Type
89
+ ) => Effect.Effect<McpSchema.ListPromptsResult, McpSchema.McpError>
90
+ readonly getPrompt: (
91
+ request: typeof McpSchema.GetPrompt.payloadSchema.Type
92
+ ) => Effect.Effect<McpSchema.GetPromptResult, McpSchema.McpError>
93
+ readonly complete: (
94
+ request: typeof McpSchema.Complete.payloadSchema.Type
95
+ ) => Effect.Effect<McpSchema.CompleteResult, McpSchema.McpError>
96
+ readonly setLevel: (
97
+ request: typeof McpSchema.SetLevel.payloadSchema.Type
98
+ ) => Effect.Effect<void, McpSchema.McpError>
99
+ }
100
+
101
+ /**
102
+ * Creates an in-memory MCP client for a registration layer.
103
+ *
104
+ * **Details**
105
+ *
106
+ * The server is built from `McpServer.layer` with the supplied `protocols`
107
+ * and `registrations`, over an in-memory `RpcServer.Protocol`. The client
108
+ * speaks `options.protocolVersion`, by default the first adapter's version:
109
+ * stateful versions `initialize` and send `notifications/initialized` before
110
+ * `makeClient` returns; the stateless version attaches request metadata to
111
+ * every request instead.
112
+ *
113
+ * Because requests reach handlers through the server runner, the transport
114
+ * built-ins are discharged the same way as on stdio: `McpRequestContext` on
115
+ * every request, and `McpServerClient` only when every adapter in `protocols`
116
+ * is stateful (see `McpServer.ProvidedServices`). Any other `McpRequest`
117
+ * marker in `registrations` stays in the requirements and must be met by MCP
118
+ * middleware; providing the service directly does not discharge it.
119
+ *
120
+ * The client and server live in the surrounding `Scope`.
121
+ *
122
+ * **Example** (Reading a resource in a test)
123
+ *
124
+ * ```ts import.meta.vitest
125
+ * import { Effect } from "effect"
126
+ * import { McpProtocol, McpServer, McpTest } from "effect/ai"
127
+ *
128
+ * const registrations = McpServer.resource({
129
+ * uri: "test://greeting",
130
+ * name: "greeting",
131
+ * content: Effect.succeed("hello")
132
+ * })
133
+ *
134
+ * const program = Effect.gen(function*() {
135
+ * const client = yield* McpTest.makeClient(registrations, {
136
+ * protocols: [McpProtocol.v2025_11_25]
137
+ * })
138
+ * const result = yield* client.readResource({ uri: "test://greeting" })
139
+ * return result.contents.map((content) => content.uri)
140
+ * }).pipe(Effect.scoped)
141
+ *
142
+ * const actual = await Effect.runPromise(program)
143
+ * actual // => ["test://greeting"]
144
+ * ```
145
+ *
146
+ * @see {@link Client} for the request methods and notifications
147
+ * @see {@link McpServer.middleware} for discharging request-level dependencies
148
+ *
149
+ * @stability unstable
150
+ * @category constructors
151
+ * @since 4.0.0
152
+ */
153
+ export const makeClient: <
154
+ const Protocols extends Arr.NonEmptyReadonlyArray<McpProtocol.ProtocolAdapter>,
155
+ RA = never,
156
+ RE = never,
157
+ RR = never
158
+ >(
159
+ registrations: Layer.Layer<RA, RE, RR>,
160
+ options: {
161
+ readonly protocols: Protocols
162
+ readonly protocolVersion?: Protocols[number]["protocolVersion"] | undefined
163
+ readonly name?: string | undefined
164
+ readonly version?: string | undefined
165
+ readonly instructions?: string | undefined
166
+ readonly extensions?: NonNullable<McpSchema.ServerCapabilities["extensions"]> | undefined
167
+ readonly clientInfo?: McpSchema.Implementation | undefined
168
+ readonly clientCapabilities?: McpSchema.ClientCapabilities | undefined
169
+ }
170
+ ) => Effect.Effect<
171
+ Client,
172
+ Cause.IllegalArgumentError | RE,
173
+ | Scope.Scope
174
+ | Exclude<McpServer.McpRequest.Without<RR>, McpServer.McpServer>
175
+ | McpServer.McpRequest.From<
176
+ "Requires",
177
+ Exclude<McpServer.McpRequest.Only<"Requires", RR>, McpServer.ProvidedServices<Protocols>>
178
+ >
179
+ > = Effect.fnUntraced(function*(
180
+ registrations: Layer.Layer<any, any, any>,
181
+ options: {
182
+ readonly protocols: Arr.NonEmptyReadonlyArray<McpProtocol.ProtocolAdapter>
183
+ readonly protocolVersion?: string | undefined
184
+ readonly name?: string | undefined
185
+ readonly version?: string | undefined
186
+ readonly instructions?: string | undefined
187
+ readonly extensions?: NonNullable<McpSchema.ServerCapabilities["extensions"]> | undefined
188
+ readonly clientInfo?: McpSchema.Implementation | undefined
189
+ readonly clientCapabilities?: McpSchema.ClientCapabilities | undefined
190
+ }
191
+ ) {
192
+ const selected = options.protocolVersion === undefined
193
+ ? options.protocols[0]
194
+ : options.protocols.find((protocol) => protocol.protocolVersion === options.protocolVersion)
195
+ if (selected === undefined) {
196
+ return yield* new Cause.IllegalArgumentError(
197
+ `MCP protocol ${options.protocolVersion} is not in the configured protocols`
198
+ )
199
+ }
200
+ const clientInfo = options.clientInfo ?? defaultClientInfo
201
+ const clientCapabilities = options.clientCapabilities ?? new McpSchema.ClientCapabilities({})
202
+
203
+ // Each direction carries one serialized JSON-RPC message per element, so
204
+ // requests and responses round-trip through the same JSON-RPC encoding as
205
+ // the stdio and HTTP transports.
206
+ const toServer = yield* Queue.unbounded<string>()
207
+ const toClient = yield* Queue.unbounded<string>()
208
+ const notifications = yield* Queue.unbounded<McpSchema.ServerNotificationEncoded>()
209
+ const serverProtocol = RpcServer.Protocol.make(Effect.fnUntraced(function*(writeRequest) {
210
+ const parser = serialization.makeUnsafe()
211
+ yield* Queue.take(toServer).pipe(
212
+ Effect.flatMap((frame) =>
213
+ Effect.forEach(
214
+ parser.decode(frame) as ReadonlyArray<RpcMessage.FromClientEncoded>,
215
+ (message) => writeRequest(0, message),
216
+ { discard: true }
217
+ )
218
+ ),
219
+ Effect.forever,
220
+ Effect.forkScoped
221
+ )
222
+ return {
223
+ disconnects: yield* Queue.make<number>(),
224
+ send(_clientId, response) {
225
+ const encoded = parser.encode(response)
226
+ return typeof encoded === "string" ? Effect.asVoid(Queue.offer(toClient, encoded)) : Effect.void
227
+ },
228
+ end: () => Effect.void,
229
+ clientIds: Effect.succeed(new Set([0])),
230
+ initialMessage: Effect.succeedNone,
231
+ supportsAck: false,
232
+ supportsTransferables: false,
233
+ supportsSpanPropagation: false,
234
+ supportsNotifications: true,
235
+ codecFor: serialization.codecFor
236
+ }
237
+ }))
238
+ const context = yield* Layer.build(
239
+ McpServer.layer({
240
+ name: options.name ?? "McpTest",
241
+ version: options.version ?? "1.0.0",
242
+ instructions: options.instructions,
243
+ extensions: options.extensions,
244
+ protocols: options.protocols,
245
+ registrations
246
+ }).pipe(Layer.provide(Layer.effect(RpcServer.Protocol, serverProtocol)))
247
+ )
248
+ const server = Context.get(context as Context.Context<McpServer.McpServer>, McpServer.McpServer)
249
+
250
+ const write = (message: object) => Effect.asVoid(Queue.offer(toServer, JSON.stringify(message)))
251
+
252
+ // Stateless revisions carry the client profile on every request instead of
253
+ // negotiating it with `initialize`.
254
+ const requestMetadata = selected.runtime._tag === "Stateless"
255
+ ? {
256
+ "io.modelcontextprotocol/protocolVersion": selected.protocolVersion,
257
+ "io.modelcontextprotocol/clientCapabilities": encodeClientCapabilities(clientCapabilities),
258
+ "io.modelcontextprotocol/clientInfo": encodeImplementation(clientInfo)
259
+ }
260
+ : undefined
261
+ const params = (payload: unknown) => {
262
+ if (requestMetadata === undefined) {
263
+ return payload === undefined || payload === null ? {} : { params: payload }
264
+ }
265
+ const fields = Predicate.isReadonlyObject(payload) ? payload : {}
266
+ return {
267
+ params: {
268
+ ...fields,
269
+ _meta: { ...requestMetadata, ...(Predicate.isReadonlyObject(fields._meta) ? fields._meta : {}) }
270
+ }
271
+ }
272
+ }
273
+
274
+ const protocol = yield* RpcClient.Protocol.make(Effect.fnUntraced(function*(writeResponse) {
275
+ const parser = serialization.makeUnsafe()
276
+ let clientId = 0
277
+ const route = (message: RpcMessage.FromServerEncoded | RpcMessage.FromClientEncoded): Effect.Effect<void> => {
278
+ if (message._tag !== "Request") {
279
+ return writeResponse(clientId, message as RpcMessage.FromServerEncoded)
280
+ }
281
+ if (message.isNotification === true) {
282
+ return Effect.asVoid(Queue.offer(notifications, {
283
+ _tag: "Notification",
284
+ method: message.tag,
285
+ payload: message.payload ?? undefined
286
+ } as McpSchema.ServerNotificationEncoded))
287
+ }
288
+ // Server-to-client requests are not supported, so reject them instead
289
+ // of leaving the handler waiting for a reply.
290
+ return write({
291
+ jsonrpc: "2.0",
292
+ id: message.id,
293
+ error: { code: McpSchema.METHOD_NOT_FOUND_ERROR_CODE, message: `Method not found: ${message.tag}` }
294
+ })
295
+ }
296
+ yield* Queue.take(toClient).pipe(
297
+ Effect.flatMap((frame) =>
298
+ Effect.forEach(
299
+ parser.decode(frame) as ReadonlyArray<RpcMessage.FromServerEncoded | RpcMessage.FromClientEncoded>,
300
+ route,
301
+ { discard: true }
302
+ )
303
+ ),
304
+ Effect.forever,
305
+ Effect.forkScoped
306
+ )
307
+ return {
308
+ send(id, request) {
309
+ clientId = id
310
+ switch (request._tag) {
311
+ case "Request":
312
+ return write({ jsonrpc: "2.0", id: request.id, method: request.tag, ...params(request.payload) })
313
+ case "Interrupt":
314
+ return write({
315
+ jsonrpc: "2.0",
316
+ method: "notifications/cancelled",
317
+ ...params({ requestId: request.requestId })
318
+ })
319
+ default:
320
+ // Effect RPC control messages are not part of the MCP protocol.
321
+ return Effect.void
322
+ }
323
+ },
324
+ supportsAck: false,
325
+ supportsTransferables: false,
326
+ codecFor: serialization.codecFor
327
+ }
328
+ }))
329
+ let nextRequestId = 1
330
+ const rpc = yield* RpcClient.make(McpSchema.ClientRequestRpcs, {
331
+ spanPrefix: "McpTest",
332
+ generateRequestId: () => RpcMessage.RequestId(nextRequestId++)
333
+ }).pipe(Effect.provideService(RpcClient.Protocol, protocol))
334
+
335
+ let protocolVersion = selected.protocolVersion
336
+ if (selected.runtime._tag === "Stateful") {
337
+ const result = yield* rpc.initialize({
338
+ protocolVersion: selected.protocolVersion,
339
+ capabilities: clientCapabilities,
340
+ clientInfo
341
+ }).pipe(Effect.orDie)
342
+ protocolVersion = result.protocolVersion as McpProtocol.ProtocolVersion
343
+ yield* write({ jsonrpc: "2.0", method: "notifications/initialized" })
344
+ }
345
+
346
+ return identity<Client>({
347
+ protocolVersion,
348
+ server,
349
+ notifications,
350
+ ping: Effect.asVoid(orDieClientError(rpc.ping(undefined))),
351
+ listTools: (request) => orDieClientError(rpc["tools/list"](request)),
352
+ callTool: (request) => orDieClientError(rpc["tools/call"](request)),
353
+ listResources: (request) => orDieClientError(rpc["resources/list"](request)),
354
+ listResourceTemplates: (request) => orDieClientError(rpc["resources/templates/list"](request)),
355
+ readResource: (request) => orDieClientError(rpc["resources/read"](request)),
356
+ subscribe: (request) => Effect.asVoid(orDieClientError(rpc["resources/subscribe"](request))),
357
+ unsubscribe: (request) => Effect.asVoid(orDieClientError(rpc["resources/unsubscribe"](request))),
358
+ listPrompts: (request) => orDieClientError(rpc["prompts/list"](request)),
359
+ getPrompt: (request) => orDieClientError(rpc["prompts/get"](request)),
360
+ complete: (request) => orDieClientError(rpc["completion/complete"](request)),
361
+ setLevel: (request) => Effect.asVoid(orDieClientError(rpc["logging/setLevel"](request)))
362
+ })
363
+ }) as any
364
+
365
+ const serialization = RpcSerialization.jsonRpc()
366
+
367
+ const defaultClientInfo: McpSchema.Implementation = { name: "McpTest", version: "1.0.0" }
368
+
369
+ const encodeClientCapabilities = Schema.encodeSync(Schema.toCodecJson(McpSchema.ClientCapabilities))
370
+ const encodeImplementation = Schema.encodeSync(Schema.toCodecJson(McpSchema.Implementation))
371
+
372
+ // The in-memory transport never fails to send, so a client error is a defect.
373
+ const orDieClientError = <A, E>(
374
+ effect: Effect.Effect<A, E | RpcClientError.RpcClientError>
375
+ ): Effect.Effect<A, Exclude<E, RpcClientError.RpcClientError>> =>
376
+ Effect.catchIf(
377
+ effect,
378
+ (error): error is RpcClientError.RpcClientError => Predicate.isTagged(error, "RpcClientError"),
379
+ Effect.die
380
+ ) as any
package/src/ai/Prompt.ts CHANGED
@@ -486,6 +486,16 @@ export interface FilePartEncoded extends BasePartEncoded<"file", FilePartOptions
486
486
  */
487
487
  export interface FilePartOptions extends ProviderOptions {}
488
488
 
489
+ const TaggedURL = Schema.TaggedStruct("URL", { href: Schema.URLFromString })
490
+
491
+ const urlFromTaggedURL = SchemaTransformation.transform<URL, typeof TaggedURL.Type>({
492
+ decode: ({ href }) => href,
493
+ encode: (href) => (({
494
+ _tag: "URL",
495
+ href
496
+ }) as const)
497
+ })
498
+
489
499
  /**
490
500
  * Schema for validation and encoding of file parts.
491
501
  *
@@ -535,18 +545,13 @@ export const FilePart: Schema.Struct<{
535
545
  }) as const)
536
546
  })
537
547
  )),
538
- Schema.TaggedStruct("URL", { href: Schema.URLFromString }).pipe(Schema.decodeTo(
539
- Schema.URL,
540
- SchemaTransformation.transform({
541
- decode: ({ href }) => href,
542
- encode: (href) => (({
543
- _tag: "URL",
544
- href
545
- }) as const)
546
- })
547
- )),
548
+ TaggedURL.pipe(Schema.decodeTo(Schema.URL, urlFromTaggedURL)),
548
549
  Schema.Uint8Array,
549
- Schema.URL
550
+ // Under the JSON and binary codecs a raw `URL` would serialize as a plain
551
+ // string, indistinguishable from the `Schema.String` member. Serialize it
552
+ // through the same `TaggedURL` instance instead, so the codecs see a
553
+ // single `{ _tag: "URL" }` member rather than two
554
+ Schema.URL.annotate({ toCodecJson: () => Schema.link<URL>()(TaggedURL, urlFromTaggedURL) })
550
555
  ])
551
556
  }).annotate({ identifier: "FilePart" })
552
557
 
@@ -2376,15 +2376,6 @@ export const UrlSourcePart: Schema.Struct<{
2376
2376
  // HTTP Details
2377
2377
  // =============================================================================
2378
2378
 
2379
- /**
2380
- * Alias of {@link AiError.HttpRequestDetails}.
2381
- *
2382
- * @stability unstable
2383
- * @category schemas
2384
- * @since 4.0.0
2385
- */
2386
- export const HttpRequestDetails = AiError.HttpRequestDetails
2387
-
2388
2379
  /**
2389
2380
  * Alias of {@link AiError.HttpResponseDetails}.
2390
2381
  *
@@ -2412,8 +2403,7 @@ export const HttpResponseDetails = AiError.HttpResponseDetails
2412
2403
  * {
2413
2404
  * id: "resp_123",
2414
2405
  * modelId: "gpt-4",
2415
- * timestamp: DateTime.makeUnsafe("2024-01-01T00:00:00Z"),
2416
- * request: undefined
2406
+ * timestamp: DateTime.makeUnsafe("2024-01-01T00:00:00Z")
2417
2407
  * }
2418
2408
  * )
2419
2409
  * const result = [metadataPart.id, metadataPart.modelId] // => ["resp_123", "gpt-4"]
@@ -2436,10 +2426,6 @@ export interface ResponseMetadataPart extends BasePart<"response-metadata", Resp
2436
2426
  * Optional timestamp when the response was generated.
2437
2427
  */
2438
2428
  readonly timestamp?: DateTime.Utc | undefined
2439
- /**
2440
- * Optional HTTP request details for the request made to the AI provider.
2441
- */
2442
- readonly request?: typeof HttpRequestDetails.Type | undefined
2443
2429
  }
2444
2430
 
2445
2431
  /**
@@ -2464,10 +2450,6 @@ export interface ResponseMetadataPartEncoded
2464
2450
  * Optional timestamp when the response was generated.
2465
2451
  */
2466
2452
  readonly timestamp?: string | undefined
2467
- /**
2468
- * Optional HTTP request details for the request made to the AI provider.
2469
- */
2470
- readonly request?: typeof HttpRequestDetails.Encoded | undefined
2471
2453
  }
2472
2454
 
2473
2455
  /**
@@ -2492,7 +2474,6 @@ export const ResponseMetadataPart: Schema.Struct<{
2492
2474
  readonly id: Schema.optional<Schema.String>
2493
2475
  readonly modelId: Schema.optional<Schema.String>
2494
2476
  readonly timestamp: Schema.optional<Schema.DateTimeUtcFromString>
2495
- readonly request: Schema.optional<typeof HttpRequestDetails>
2496
2477
  readonly "~effect/ai/Response/Part": Schema.withDecodingDefaultKey<Schema.tag<"~effect/ai/Response/Part">>
2497
2478
  readonly metadata: Schema.withDecodingDefault<
2498
2479
  Schema.$Record<Schema.String, Schema.Codec<Schema.Json>>
@@ -2502,8 +2483,7 @@ export const ResponseMetadataPart: Schema.Struct<{
2502
2483
  type: Schema.tag("response-metadata"),
2503
2484
  id: Schema.optional(Schema.String),
2504
2485
  modelId: Schema.optional(Schema.String),
2505
- timestamp: Schema.optional(Schema.DateTimeUtcFromString),
2506
- request: Schema.optional(HttpRequestDetails)
2486
+ timestamp: Schema.optional(Schema.DateTimeUtcFromString)
2507
2487
  }).annotate({ identifier: "ResponseMetadataPart" }) satisfies Schema.Codec<
2508
2488
  ResponseMetadataPart,
2509
2489
  ResponseMetadataPartEncoded
package/src/ai/Tool.ts CHANGED
@@ -918,17 +918,36 @@ export type ResultEncoded<T> = SuccessEncoded<T> | FailureResultEncoded<T>
918
918
  * @category utility types
919
919
  * @since 4.0.0
920
920
  */
921
- export type HandlerServices<T> = T extends Tool<
921
+ export type HandlerServices<T> = SchemaServices<T> | Requirements<T>
922
+
923
+ /**
924
+ * A utility type to extract the request-level dependencies a `Tool` declares
925
+ * with `dependencies` or `Tool.addDependency`.
926
+ *
927
+ * @stability unstable
928
+ * @category utility types
929
+ * @since 4.0.0
930
+ */
931
+ export type Requirements<T> = T extends Tool<
922
932
  infer _Name,
923
933
  infer _Config,
924
934
  infer _Requirements
925
- > ? // Parameters must be decoded when received from a model
926
- | _Config["parameters"]["DecodingServices"]
927
- // A tool call `result`, whether success or failure, is encoded and returned
928
- // as the `encodedResult` along with the `result`
929
- | ResultEncodingServices<T>
930
- // Per-request requirements
931
- | _Requirements
935
+ > ? _Requirements
936
+ : never
937
+
938
+ /**
939
+ * A utility type to extract the services needed to decode the parameters of a
940
+ * `Tool` call and encode its result, whether success or failure.
941
+ *
942
+ * @stability unstable
943
+ * @category utility types
944
+ * @since 4.0.0
945
+ */
946
+ export type SchemaServices<T> = T extends Tool<
947
+ infer _Name,
948
+ infer _Config,
949
+ infer _Requirements
950
+ > ? _Config["parameters"]["DecodingServices"] | ResultEncodingServices<T>
932
951
  : never
933
952
 
934
953
  /**
@@ -2077,8 +2096,9 @@ export const getStrictMode = <T extends Any>(tool: T): boolean | undefined => Co
2077
2096
  //
2078
2097
  // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2079
2098
 
2080
- const suspectProtoRx = /"__proto__"\s*:/
2081
- const suspectConstructorRx = /"constructor"\s*:/
2099
+ // Text that may decode to a forbidden key. `JSON.parse` decodes Unicode
2100
+ // escapes (e.g. `"\u005f_proto__"`), so any `\u` escape also triggers the scan.
2101
+ const suspectRx = /"__proto__"\s*:|"constructor"\s*:|\\u/
2082
2102
 
2083
2103
  function _parse(text: string) {
2084
2104
  // Parse normally
@@ -2089,15 +2109,8 @@ function _parse(text: string) {
2089
2109
  return obj
2090
2110
  }
2091
2111
 
2092
- if (
2093
- suspectProtoRx.test(text) === false &&
2094
- suspectConstructorRx.test(text) === false
2095
- ) {
2096
- return obj
2097
- }
2098
-
2099
2112
  // Scan result for proto keys
2100
- return filter(obj)
2113
+ return suspectRx.test(text) ? filter(obj) : obj
2101
2114
  }
2102
2115
 
2103
2116
  function filter(obj: any) {
@@ -2114,6 +2127,7 @@ function filter(obj: any) {
2114
2127
 
2115
2128
  if (
2116
2129
  Object.hasOwn(node, "constructor") &&
2130
+ node.constructor !== null &&
2117
2131
  Object.hasOwn(node.constructor, "prototype")
2118
2132
  ) {
2119
2133
  throw new SyntaxError("Object contains forbidden prototype property")
package/src/ai/index.ts CHANGED
@@ -83,6 +83,12 @@ export * as McpSchema from "./McpSchema.ts"
83
83
  */
84
84
  export * as McpServer from "./McpServer.ts"
85
85
 
86
+ /**
87
+ * @stability unstable
88
+ * @since 4.0.0
89
+ */
90
+ export * as McpTest from "./McpTest.ts"
91
+
86
92
  /**
87
93
  * @stability unstable
88
94
  * @since 4.0.0