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
@@ -5,6 +5,7 @@
5
5
  */
6
6
 
7
7
  import * as Arr from "../../Array.ts"
8
+ import * as Cause from "../../Cause.ts"
8
9
  import * as Data from "../../Data.ts"
9
10
  import * as Effect from "../../Effect.ts"
10
11
  import type * as McpProtocol from "../McpProtocol.ts"
@@ -149,6 +150,20 @@ export class UnsupportedByProtocol extends Data.TaggedError("UnsupportedByProtoc
149
150
  readonly feature: string
150
151
  }> {}
151
152
 
153
+ /**
154
+ * A request rejected outside the handler, for example by MCP middleware.
155
+ * Adapters send it as a JSON-RPC error with its code, message and data, never
156
+ * as a tool result. `error` keeps the original failure for in-process callers.
157
+ *
158
+ * @internal
159
+ */
160
+ export class RequestRejected extends Data.TaggedError("RequestRejected")<{
161
+ readonly code: number
162
+ readonly message: string
163
+ readonly data?: unknown
164
+ readonly error: McpSchema.McpErrorBase
165
+ }> {}
166
+
152
167
  /**
153
168
  * @internal
154
169
  */
@@ -157,6 +172,7 @@ export type ToolError =
157
172
  | InvalidToolInput
158
173
  | InvalidToolContinuation
159
174
  | ToolExecutionError
175
+ | RequestRejected
160
176
 
161
177
  /**
162
178
  * @internal
@@ -166,12 +182,13 @@ export interface ToolRegistration {
166
182
  // `tool.title ?? tool.annotations?.title` at the public boundary.
167
183
  readonly descriptor: McpSchema.Tool
168
184
  readonly isVisible: (profile: NegotiatedProtocolProfile<string>) => boolean
185
+ readonly visible?: Visible | undefined
169
186
  readonly handle: (
170
187
  call: typeof McpSchema.CallTool.payloadSchema.Type,
171
188
  invocation: McpInvocation
172
189
  ) => Effect.Effect<
173
190
  OperationOutcome<McpSchema.CallToolResult>,
174
- InvalidToolInput | InvalidToolContinuation | ToolExecutionError,
191
+ ToolNotFound | InvalidToolInput | InvalidToolContinuation | ToolExecutionError | RequestRejected,
175
192
  never
176
193
  >
177
194
  }
@@ -184,8 +201,13 @@ export interface Tools {
184
201
  registration: ToolRegistration
185
202
  ) => Effect.Effect<void>
186
203
  readonly list: (
204
+ invocation: McpInvocation
205
+ ) => Effect.Effect<ReadonlyArray<McpSchema.Tool>, RequestRejected>
206
+ // Skips request-level visibility checks.
207
+ readonly find: (
208
+ name: string,
187
209
  profile: NegotiatedProtocolProfile<string>
188
- ) => Effect.Effect<ReadonlyArray<McpSchema.Tool>>
210
+ ) => McpSchema.Tool | undefined
189
211
  readonly call: (
190
212
  call: typeof McpSchema.CallTool.payloadSchema.Type,
191
213
  invocation: McpInvocation
@@ -198,9 +220,10 @@ export interface Tools {
198
220
  export interface ResourceRegistration {
199
221
  readonly descriptor: McpSchema.Resource
200
222
  readonly isVisible: (profile: NegotiatedProtocolProfile<string>) => boolean
223
+ readonly visible?: Visible | undefined
201
224
  readonly read: (
202
225
  invocation: McpInvocation
203
- ) => Effect.Effect<McpSchema.ReadResourceResult, McpSchema.InternalError>
226
+ ) => Effect.Effect<McpSchema.ReadResourceResult, ResourceNotFound | McpSchema.InternalError | RequestRejected>
204
227
  }
205
228
 
206
229
  /**
@@ -209,35 +232,125 @@ export interface ResourceRegistration {
209
232
  export interface ResourceTemplateRegistration {
210
233
  readonly descriptor: McpSchema.ResourceTemplate
211
234
  readonly isVisible: (profile: NegotiatedProtocolProfile<string>) => boolean
235
+ readonly visible?: Visible | undefined
212
236
  readonly match: (uri: string) => ReadonlyArray<string> | undefined
213
237
  readonly read: (
214
238
  uri: string,
215
239
  params: ReadonlyArray<string>,
216
240
  invocation: McpInvocation
217
- ) => Effect.Effect<McpSchema.ReadResourceResult, McpSchema.InvalidParams | McpSchema.InternalError>
241
+ ) => Effect.Effect<
242
+ McpSchema.ReadResourceResult,
243
+ ResourceNotFound | McpSchema.InvalidParams | McpSchema.InternalError | RequestRejected
244
+ >
218
245
  }
219
246
 
220
247
  /**
221
248
  * @internal
222
249
  */
223
250
  export interface Resources {
224
- readonly register: (registration: ResourceRegistration) => Effect.Effect<void>
251
+ // Synchronous, so a caller can check skill ownership and register in one step.
252
+ readonly register: (registration: ResourceRegistration) => void
225
253
  readonly registerTemplate: (registration: ResourceTemplateRegistration) => Effect.Effect<void>
226
254
  readonly list: (
227
- profile: NegotiatedProtocolProfile<string>
228
- ) => Effect.Effect<ReadonlyArray<McpSchema.Resource>>
255
+ invocation: McpInvocation
256
+ ) => Effect.Effect<ReadonlyArray<McpSchema.Resource>, RequestRejected>
229
257
  readonly listTemplates: (
230
- profile: NegotiatedProtocolProfile<string>
231
- ) => Effect.Effect<ReadonlyArray<McpSchema.ResourceTemplate>>
258
+ invocation: McpInvocation
259
+ ) => Effect.Effect<ReadonlyArray<McpSchema.ResourceTemplate>, RequestRejected>
232
260
  readonly read: (
233
261
  uri: string,
234
262
  invocation: McpInvocation
235
263
  ) => Effect.Effect<
236
264
  McpSchema.ReadResourceResult,
237
- ResourceNotFound | McpSchema.InvalidParams | McpSchema.InternalError
265
+ ResourceNotFound | McpSchema.InvalidParams | McpSchema.InternalError | RequestRejected
238
266
  >
239
267
  }
240
268
 
269
+ /**
270
+ * A file of a skill, with the digest and size of the bytes it is served as.
271
+ *
272
+ * @internal
273
+ */
274
+ export interface SkillResource {
275
+ readonly uri: string
276
+ readonly digest: string
277
+ readonly size: number
278
+ }
279
+
280
+ /**
281
+ * A `skills/list` and `skills/get` entry. `resources` is `"dynamic"` for a
282
+ * skill whose content cannot carry stable digests.
283
+ *
284
+ * @internal
285
+ */
286
+ export interface Skill {
287
+ readonly uri: string
288
+ readonly frontmatter: Readonly<Record<string, unknown>>
289
+ readonly resources: ReadonlyArray<SkillResource> | "dynamic"
290
+ }
291
+
292
+ /**
293
+ * A `resources/directory/read` child: a file, with the metadata
294
+ * `resources/list` gives it, or a subdirectory with the `inode/directory` MIME
295
+ * type.
296
+ *
297
+ * @internal
298
+ */
299
+ export interface DirectoryChild {
300
+ readonly uri: string
301
+ readonly name: string
302
+ readonly description?: string | undefined
303
+ readonly mimeType: string
304
+ readonly size?: number | undefined
305
+ }
306
+
307
+ /**
308
+ * @internal
309
+ */
310
+ export class SkillNotFound extends Data.TaggedError("SkillNotFound")<{
311
+ readonly uri: string
312
+ }> {}
313
+
314
+ /**
315
+ * @internal
316
+ */
317
+ export class DirectoryNotFound extends Data.TaggedError("DirectoryNotFound")<{
318
+ readonly uri: string
319
+ }> {}
320
+
321
+ /**
322
+ * @internal
323
+ */
324
+ export interface SkillRegistration {
325
+ readonly entry: Skill
326
+ readonly isVisible: (profile: NegotiatedProtocolProfile<string>) => boolean
327
+ readonly visible?: Visible | undefined
328
+ // Hides the skill's directories on `resources/directory/read`.
329
+ readonly visibleInDirectories?: Visible | undefined
330
+ readonly get: (invocation: McpInvocation) => Effect.Effect<Skill, SkillNotFound | RequestRejected>
331
+ // `undefined` when this skill has no directory at `uri`. Directories shared
332
+ // by several skills, such as a common path prefix, list the union of what
333
+ // each skill returns.
334
+ readonly directory: (uri: string) => ReadonlyArray<DirectoryChild> | undefined
335
+ }
336
+
337
+ /**
338
+ * @internal
339
+ */
340
+ export interface Skills {
341
+ // Fails when the skill's directory overlaps another skill's, or one of its
342
+ // files is already registered as a resource.
343
+ readonly register: (registration: SkillRegistration) => Effect.Effect<void, Cause.IllegalArgumentError>
344
+ // Whether `uri` is a file of a registered skill, which only that skill may serve.
345
+ readonly ownsFile: (uri: string) => boolean
346
+ readonly list: (invocation: McpInvocation) => Effect.Effect<ReadonlyArray<Skill>, RequestRejected>
347
+ readonly get: (uri: string, invocation: McpInvocation) => Effect.Effect<Skill, SkillNotFound | RequestRejected>
348
+ readonly readDirectory: (
349
+ uri: string,
350
+ invocation: McpInvocation
351
+ ) => Effect.Effect<ReadonlyArray<DirectoryChild>, DirectoryNotFound | RequestRejected>
352
+ }
353
+
241
354
  /**
242
355
  * @internal
243
356
  */
@@ -251,10 +364,14 @@ export class PromptNotFound extends Data.TaggedError("PromptNotFound")<{
251
364
  export interface PromptRegistration {
252
365
  readonly descriptor: McpSchema.Prompt
253
366
  readonly isVisible: (profile: NegotiatedProtocolProfile<string>) => boolean
367
+ readonly visible?: Visible | undefined
254
368
  readonly get: (
255
369
  args: Readonly<Record<string, string>>,
256
370
  invocation: McpInvocation
257
- ) => Effect.Effect<OperationOutcome<McpSchema.GetPromptResult>, McpSchema.InvalidParams | McpSchema.InternalError>
371
+ ) => Effect.Effect<
372
+ OperationOutcome<McpSchema.GetPromptResult>,
373
+ PromptNotFound | McpSchema.InvalidParams | McpSchema.InternalError | RequestRejected
374
+ >
258
375
  }
259
376
 
260
377
  /**
@@ -263,15 +380,15 @@ export interface PromptRegistration {
263
380
  export interface Prompts {
264
381
  readonly register: (registration: PromptRegistration) => Effect.Effect<void>
265
382
  readonly list: (
266
- profile: NegotiatedProtocolProfile<string>
267
- ) => Effect.Effect<ReadonlyArray<McpSchema.Prompt>>
383
+ invocation: McpInvocation
384
+ ) => Effect.Effect<ReadonlyArray<McpSchema.Prompt>, RequestRejected>
268
385
  readonly get: (
269
386
  name: string,
270
387
  args: Readonly<Record<string, string>>,
271
388
  invocation: McpInvocation
272
389
  ) => Effect.Effect<
273
390
  OperationOutcome<McpSchema.GetPromptResult>,
274
- PromptNotFound | McpSchema.InvalidParams | McpSchema.InternalError
391
+ PromptNotFound | McpSchema.InvalidParams | McpSchema.InternalError | RequestRejected
275
392
  >
276
393
  }
277
394
 
@@ -314,12 +431,12 @@ export interface Completions {
314
431
  complete: (
315
432
  request: CompletionRequest,
316
433
  invocation: McpInvocation
317
- ) => Effect.Effect<CompletionResult, McpSchema.InvalidParams | McpSchema.InternalError>
434
+ ) => Effect.Effect<CompletionResult, McpSchema.InvalidParams | McpSchema.InternalError | RequestRejected>
318
435
  ) => Effect.Effect<void>
319
436
  readonly complete: (
320
437
  request: CompletionRequest,
321
438
  invocation: McpInvocation
322
- ) => Effect.Effect<CompletionResult, McpSchema.InvalidParams | McpSchema.InternalError>
439
+ ) => Effect.Effect<CompletionResult, McpSchema.InvalidParams | McpSchema.InternalError | RequestRejected>
323
440
  }
324
441
 
325
442
  /**
@@ -393,13 +510,30 @@ export interface McpCore {
393
510
  readonly resources: Resources
394
511
  readonly prompts: Prompts
395
512
  readonly completions: Completions
513
+ readonly skills: Skills
396
514
  readonly registrationPresence: Effect.Effect<{
397
515
  readonly tools: boolean
398
516
  readonly resources: boolean
399
517
  readonly prompts: boolean
518
+ readonly skills: boolean
400
519
  }>
401
520
  }
402
521
 
522
+ /**
523
+ * Runs the request-level visibility checks of a registration on a list
524
+ * request, after `isVisible` passed.
525
+ *
526
+ * @internal
527
+ */
528
+ export type Visible = (invocation: McpInvocation) => Effect.Effect<boolean, RequestRejected>
529
+
530
+ // Whether one skill directory contains the other, or both are the same.
531
+ const skillsOverlap = (a: string, b: string): boolean => {
532
+ const rootA = a.slice(0, -"/SKILL.md".length)
533
+ const rootB = b.slice(0, -"/SKILL.md".length)
534
+ return rootA === rootB || rootA.startsWith(`${rootB}/`) || rootB.startsWith(`${rootA}/`)
535
+ }
536
+
403
537
  /**
404
538
  * @internal
405
539
  */
@@ -408,29 +542,42 @@ export const make: Effect.Effect<McpCore> = Effect.sync(() => {
408
542
  const resourceRegistrations: Array<ResourceRegistration> = []
409
543
  const resourceTemplateRegistrations: Array<ResourceTemplateRegistration> = []
410
544
  const promptRegistrations = new Map<string, PromptRegistration>()
545
+ const skillRegistrations = new Map<string, SkillRegistration>()
546
+ const skillFiles = new Set<string>()
411
547
  const completionRegistrations = new Map<
412
548
  string,
413
549
  (
414
550
  request: CompletionRequest,
415
551
  invocation: McpInvocation
416
- ) => Effect.Effect<CompletionResult, McpSchema.InvalidParams | McpSchema.InternalError>
552
+ ) => Effect.Effect<CompletionResult, McpSchema.InvalidParams | McpSchema.InternalError | RequestRejected>
417
553
  >()
418
554
 
555
+ const filterList = <D>(
556
+ registrations: Iterable<{
557
+ readonly descriptor: D
558
+ readonly isVisible: ToolRegistration["isVisible"]
559
+ readonly visible?: Visible | undefined
560
+ }>,
561
+ invocation: McpInvocation
562
+ ): Effect.Effect<ReadonlyArray<D>, RequestRejected> =>
563
+ Effect.map(
564
+ Effect.filter(
565
+ Arr.filter(registrations, (entry) => entry.isVisible(invocation.protocol)),
566
+ (entry) => entry.visible === undefined ? Effect.succeed(true) : entry.visible(invocation)
567
+ ),
568
+ (entries) => entries.map((entry) => entry.descriptor)
569
+ )
570
+
419
571
  const tools: Tools = {
420
572
  register: (registration) =>
421
573
  Effect.sync(() => {
422
574
  registrations.set(registration.descriptor.name, registration)
423
575
  }),
424
- list: (profile) =>
425
- Effect.sync(() => {
426
- const descriptors: Array<McpSchema.Tool> = []
427
- for (const registration of registrations.values()) {
428
- if (registration.isVisible(profile)) {
429
- descriptors.push(registration.descriptor)
430
- }
431
- }
432
- return descriptors
433
- }),
576
+ list: (invocation) => filterList(registrations.values(), invocation),
577
+ find: (name, profile) => {
578
+ const registration = registrations.get(name)
579
+ return registration !== undefined && registration.isVisible(profile) ? registration.descriptor : undefined
580
+ },
434
581
  call: (call, invocation) =>
435
582
  Effect.suspend((): Effect.Effect<OperationOutcome<McpSchema.CallToolResult>, ToolError> => {
436
583
  const registration = registrations.get(call.name)
@@ -445,15 +592,14 @@ export const make: Effect.Effect<McpCore> = Effect.sync(() => {
445
592
  }
446
593
 
447
594
  const resources: Resources = {
448
- register: (registration) =>
449
- Effect.sync(() => {
450
- const index = resourceRegistrations.findIndex((entry) => entry.descriptor.uri === registration.descriptor.uri)
451
- if (index === -1) {
452
- resourceRegistrations.push(registration)
453
- } else {
454
- resourceRegistrations[index] = registration
455
- }
456
- }),
595
+ register: (registration) => {
596
+ const index = resourceRegistrations.findIndex((entry) => entry.descriptor.uri === registration.descriptor.uri)
597
+ if (index === -1) {
598
+ resourceRegistrations.push(registration)
599
+ } else {
600
+ resourceRegistrations[index] = registration
601
+ }
602
+ },
457
603
  registerTemplate: (registration) =>
458
604
  Effect.sync(() => {
459
605
  const index = resourceTemplateRegistrations.findIndex(
@@ -465,18 +611,8 @@ export const make: Effect.Effect<McpCore> = Effect.sync(() => {
465
611
  resourceTemplateRegistrations[index] = registration
466
612
  }
467
613
  }),
468
- list: (profile) =>
469
- Effect.sync(() =>
470
- resourceRegistrations
471
- .filter((entry) => entry.isVisible(profile))
472
- .map((entry) => entry.descriptor)
473
- ),
474
- listTemplates: (profile) =>
475
- Effect.sync(() =>
476
- resourceTemplateRegistrations
477
- .filter((entry) => entry.isVisible(profile))
478
- .map((entry) => entry.descriptor)
479
- ),
614
+ list: (invocation) => filterList(resourceRegistrations, invocation),
615
+ listTemplates: (invocation) => filterList(resourceTemplateRegistrations, invocation),
480
616
  read: Effect.fnUntraced(function*(uri, invocation) {
481
617
  const resource = resourceRegistrations.find((entry) => entry.descriptor.uri === uri)
482
618
  if (resource !== undefined && resource.isVisible(invocation.protocol)) {
@@ -497,12 +633,7 @@ export const make: Effect.Effect<McpCore> = Effect.sync(() => {
497
633
  Effect.sync(() => {
498
634
  promptRegistrations.set(registration.descriptor.name, registration)
499
635
  }),
500
- list: (profile) =>
501
- Effect.sync(() =>
502
- Array.from(promptRegistrations.values())
503
- .filter((entry) => entry.isVisible(profile))
504
- .map((entry) => entry.descriptor)
505
- ),
636
+ list: (invocation) => filterList(promptRegistrations.values(), invocation),
506
637
  get: Effect.fnUntraced(function*(name, args, invocation) {
507
638
  const registration = promptRegistrations.get(name)
508
639
  if (registration === undefined || !registration.isVisible(invocation.protocol)) {
@@ -535,11 +666,67 @@ export const make: Effect.Effect<McpCore> = Effect.sync(() => {
535
666
  })
536
667
  }
537
668
 
669
+ const skills: Skills = {
670
+ register: (registration) =>
671
+ Effect.suspend(() => {
672
+ const { uri, resources } = registration.entry
673
+ const fail = (reason: string) => Effect.fail(new Cause.IllegalArgumentError(`Skill ${uri}: ${reason}`))
674
+ for (const other of skillRegistrations.keys()) {
675
+ if (skillsOverlap(uri, other)) return fail(`its directory overlaps the skill ${other}`)
676
+ }
677
+ const files = resources === "dynamic" ? [] : resources.map((resource) => resource.uri)
678
+ for (const file of files) {
679
+ if (resourceRegistrations.some((entry) => entry.descriptor.uri === file)) {
680
+ return fail(`${file} is already registered as a resource`)
681
+ }
682
+ }
683
+ skillRegistrations.set(uri, registration)
684
+ for (const file of files) skillFiles.add(file)
685
+ return Effect.void
686
+ }),
687
+ ownsFile: (uri) => skillFiles.has(uri),
688
+ list: (invocation) =>
689
+ filterList(
690
+ Array.from(skillRegistrations.values(), (registration) => ({
691
+ descriptor: registration.entry,
692
+ isVisible: registration.isVisible,
693
+ visible: registration.visible
694
+ })),
695
+ invocation
696
+ ),
697
+ get: (uri, invocation) =>
698
+ Effect.suspend(() => {
699
+ const registration = skillRegistrations.get(uri)
700
+ return registration !== undefined && registration.isVisible(invocation.protocol)
701
+ ? registration.get(invocation)
702
+ : Effect.fail(new SkillNotFound({ uri }))
703
+ }),
704
+ readDirectory: Effect.fnUntraced(function*(uri, invocation) {
705
+ const children = new Map<string, DirectoryChild>()
706
+ let found = false
707
+ for (const registration of skillRegistrations.values()) {
708
+ const own = registration.directory(uri)
709
+ if (own === undefined || !registration.isVisible(invocation.protocol)) continue
710
+ if (
711
+ registration.visibleInDirectories !== undefined &&
712
+ !(yield* registration.visibleInDirectories(invocation))
713
+ ) continue
714
+ found = true
715
+ for (const child of own) children.set(child.uri, child)
716
+ }
717
+ if (!found) {
718
+ return yield* new DirectoryNotFound({ uri })
719
+ }
720
+ return Array.from(children.values()).sort((a, b) => a.uri < b.uri ? -1 : a.uri > b.uri ? 1 : 0)
721
+ })
722
+ }
723
+
538
724
  const registrationPresence = Effect.sync(() => ({
539
725
  tools: registrations.size > 0,
540
726
  resources: resourceRegistrations.length > 0 || resourceTemplateRegistrations.length > 0,
541
- prompts: promptRegistrations.size > 0
727
+ prompts: promptRegistrations.size > 0,
728
+ skills: skillRegistrations.size > 0
542
729
  }))
543
730
 
544
- return { tools, resources, prompts, completions, registrationPresence }
731
+ return { tools, resources, prompts, completions, skills, registrationPresence }
545
732
  })
@@ -10,9 +10,10 @@ import * as McpCore from "../mcpCore.ts"
10
10
  import * as McpProtocol from "../mcpProtocol.ts"
11
11
  import * as McpRuntime from "../mcpRuntime.ts"
12
12
  import * as McpSchema from "../mcpSchema/v2024_11_05.ts"
13
+ import * as McpSkills from "../mcpSkills.ts"
13
14
 
14
15
  // Pings can arrive before initialize and do not require a client session.
15
- const ClientRequestRpcs = McpSchema.ClientRequestRpcs.omit("ping").middleware(
16
+ const ClientRequestRpcs = McpSchema.ClientRequestRpcs.omit("ping").merge(McpSkills.LegacyRpcs).middleware(
16
17
  PublicMcpSchema.McpServerClientMiddleware
17
18
  ).add(McpSchema.Ping)
18
19
 
@@ -124,6 +125,7 @@ export const protocol = McpProtocol.make({
124
125
  handlerRpcs: AdapterRpcs,
125
126
  makeHandlers: (core, lifecycle) =>
126
127
  AdapterRpcs.of({
128
+ ...McpSkills.legacyHandlers(core),
127
129
  initialize: (request, { client }) =>
128
130
  lifecycle.initialize(McpSchema.protocolVersion, profileFromInitialize(request), client.id).pipe(
129
131
  Effect.map((result) =>
@@ -154,12 +156,10 @@ export const protocol = McpProtocol.make({
154
156
  "notifications/roots/list_changed": (_, { client, headers }) =>
155
157
  lifecycle.clientNotification(McpCore.ClientNotification.RootsChanged(), client.id, headers),
156
158
  "resources/list": (_pageRequest) =>
157
- PublicMcpSchema.McpServerClient.use((request) => core.resources.list(McpProtocol.profileFromClient(request)))
159
+ McpProtocol.listForClient(core.resources.list)
158
160
  .pipe(Effect.map((resources) => McpSchema.ListResourcesResult.make({ resources }))),
159
161
  "resources/templates/list": (_pageRequest) =>
160
- PublicMcpSchema.McpServerClient.use((request) =>
161
- core.resources.listTemplates(McpProtocol.profileFromClient(request))
162
- ).pipe(
162
+ McpProtocol.listForClient(core.resources.listTemplates).pipe(
163
163
  Effect.map((resourceTemplates) => McpSchema.ListResourceTemplatesResult.make({ resourceTemplates }))
164
164
  ),
165
165
  "resources/read": Effect.fnUntraced(function*({ uri }) {
@@ -189,7 +189,7 @@ export const protocol = McpProtocol.make({
189
189
  "resources/unsubscribe": ({ uri }, { client, headers }) =>
190
190
  lifecycle.unsubscribe(uri, client.id, headers).pipe(Effect.as({})),
191
191
  "prompts/list": () =>
192
- PublicMcpSchema.McpServerClient.use((request) => core.prompts.list(McpProtocol.profileFromClient(request)))
192
+ McpProtocol.listForClient(core.prompts.list)
193
193
  .pipe(
194
194
  Effect.map((prompts) =>
195
195
  McpSchema.ListPromptsResult.make({
@@ -249,8 +249,7 @@ export const protocol = McpProtocol.make({
249
249
  })
250
250
  }),
251
251
  "tools/list": Effect.fnUntraced(function*() {
252
- const request = yield* PublicMcpSchema.McpServerClient
253
- return yield* core.tools.list(McpProtocol.profileFromClient(request)).pipe(
252
+ return yield* McpProtocol.listForClient(core.tools.list).pipe(
254
253
  Effect.map((tools) =>
255
254
  McpSchema.ListToolsResult.make({
256
255
  tools: tools.map((tool) =>
@@ -10,9 +10,10 @@ import * as McpCore from "../mcpCore.ts"
10
10
  import * as McpProtocol from "../mcpProtocol.ts"
11
11
  import * as McpRuntime from "../mcpRuntime.ts"
12
12
  import * as McpSchema from "../mcpSchema/v2025_03_26.ts"
13
+ import * as McpSkills from "../mcpSkills.ts"
13
14
 
14
15
  // Pings can arrive before initialize and do not require a client session.
15
- const ClientRequestRpcs = McpSchema.ClientRequestRpcs.omit("ping").middleware(
16
+ const ClientRequestRpcs = McpSchema.ClientRequestRpcs.omit("ping").merge(McpSkills.LegacyRpcs).middleware(
16
17
  PublicMcpSchema.McpServerClientMiddleware
17
18
  ).add(McpSchema.Ping)
18
19
 
@@ -127,6 +128,7 @@ export const protocol = McpProtocol.make({
127
128
  handlerRpcs: AdapterRpcs,
128
129
  makeHandlers: (core, lifecycle) =>
129
130
  AdapterRpcs.of({
131
+ ...McpSkills.legacyHandlers(core),
130
132
  initialize: (request, { client }) =>
131
133
  lifecycle.initialize(McpSchema.protocolVersion, profileFromInitialize(request), client.id).pipe(
132
134
  Effect.map((result) =>
@@ -166,7 +168,7 @@ export const protocol = McpProtocol.make({
166
168
  "notifications/roots/list_changed": (_, { client, headers }) =>
167
169
  lifecycle.clientNotification(McpCore.ClientNotification.RootsChanged(), client.id, headers),
168
170
  "resources/list": (_pageRequest) =>
169
- PublicMcpSchema.McpServerClient.use((request) => core.resources.list(McpProtocol.profileFromClient(request)))
171
+ McpProtocol.listForClient(core.resources.list)
170
172
  .pipe(
171
173
  Effect.map((resources) =>
172
174
  McpSchema.ListResourcesResult.make({
@@ -182,9 +184,7 @@ export const protocol = McpProtocol.make({
182
184
  )
183
185
  ),
184
186
  "resources/templates/list": (_pageRequest) =>
185
- PublicMcpSchema.McpServerClient.use((request) =>
186
- core.resources.listTemplates(McpProtocol.profileFromClient(request))
187
- ).pipe(
187
+ McpProtocol.listForClient(core.resources.listTemplates).pipe(
188
188
  Effect.map((resourceTemplates) =>
189
189
  McpSchema.ListResourceTemplatesResult.make({
190
190
  resourceTemplates: resourceTemplates.map((template) => ({
@@ -212,7 +212,7 @@ export const protocol = McpProtocol.make({
212
212
  "resources/unsubscribe": ({ uri }, { client, headers }) =>
213
213
  lifecycle.unsubscribe(uri, client.id, headers).pipe(Effect.as({})),
214
214
  "prompts/list": (_pageRequest) =>
215
- PublicMcpSchema.McpServerClient.use((request) => core.prompts.list(McpProtocol.profileFromClient(request)))
215
+ McpProtocol.listForClient(core.prompts.list)
216
216
  .pipe(
217
217
  Effect.map((prompts) =>
218
218
  McpSchema.ListPromptsResult.make({
@@ -272,8 +272,7 @@ export const protocol = McpProtocol.make({
272
272
  })
273
273
  }),
274
274
  "tools/list": Effect.fnUntraced(function*() {
275
- const request = yield* PublicMcpSchema.McpServerClient
276
- const tools = yield* core.tools.list(McpProtocol.profileFromClient(request))
275
+ const tools = yield* McpProtocol.listForClient(core.tools.list)
277
276
  return McpSchema.ListToolsResult.make({
278
277
  tools: tools.map((tool) =>
279
278
  McpSchema.Tool.make({
@@ -9,9 +9,10 @@ import * as McpCore from "../mcpCore.ts"
9
9
  import * as McpProtocol from "../mcpProtocol.ts"
10
10
  import * as McpRuntime from "../mcpRuntime.ts"
11
11
  import * as McpSchema from "../mcpSchema/v2025_06_18.ts"
12
+ import * as McpSkills from "../mcpSkills.ts"
12
13
 
13
14
  // Pings can arrive before initialize and do not require a client session.
14
- const ClientRequestRpcs = McpSchema.ClientRequestRpcs.omit("ping").middleware(
15
+ const ClientRequestRpcs = McpSchema.ClientRequestRpcs.omit("ping").merge(McpSkills.LegacyRpcs).middleware(
15
16
  PublicMcpSchema.McpServerClientMiddleware
16
17
  ).add(McpSchema.Ping)
17
18
 
@@ -143,6 +144,7 @@ export const protocol = McpProtocol.make({
143
144
  handlerRpcs: AdapterRpcs,
144
145
  makeHandlers: (core, lifecycle) =>
145
146
  AdapterRpcs.of({
147
+ ...McpSkills.legacyHandlers(core),
146
148
  initialize: (request, { client }) =>
147
149
  lifecycle.initialize(McpSchema.protocolVersion, profileFromInitialize(request), client.id).pipe(
148
150
  Effect.map((result) =>
@@ -182,14 +184,12 @@ export const protocol = McpProtocol.make({
182
184
  "notifications/roots/list_changed": (_, { client, headers }) =>
183
185
  lifecycle.clientNotification(McpCore.ClientNotification.RootsChanged(), client.id, headers),
184
186
  "resources/list": (_pageRequest) =>
185
- PublicMcpSchema.McpServerClient.use((request) => core.resources.list(McpProtocol.profileFromClient(request)))
187
+ McpProtocol.listForClient(core.resources.list)
186
188
  .pipe(
187
189
  Effect.map((resources) => McpSchema.ListResourcesResult.make({ resources }))
188
190
  ),
189
191
  "resources/templates/list": (_pageRequest) =>
190
- PublicMcpSchema.McpServerClient.use((request) =>
191
- core.resources.listTemplates(McpProtocol.profileFromClient(request))
192
- ).pipe(
192
+ McpProtocol.listForClient(core.resources.listTemplates).pipe(
193
193
  Effect.map((resourceTemplates) => McpSchema.ListResourceTemplatesResult.make({ resourceTemplates }))
194
194
  ),
195
195
  "resources/read": Effect.fnUntraced(function*({ uri }) {
@@ -207,7 +207,7 @@ export const protocol = McpProtocol.make({
207
207
  "resources/unsubscribe": ({ uri }, { client, headers }) =>
208
208
  lifecycle.unsubscribe(uri, client.id, headers).pipe(Effect.as({})),
209
209
  "prompts/list": (_pageRequest) =>
210
- PublicMcpSchema.McpServerClient.use((request) => core.prompts.list(McpProtocol.profileFromClient(request)))
210
+ McpProtocol.listForClient(core.prompts.list)
211
211
  .pipe(
212
212
  Effect.map((prompts) => McpSchema.ListPromptsResult.make({ prompts }))
213
213
  ),
@@ -262,8 +262,7 @@ export const protocol = McpProtocol.make({
262
262
  })
263
263
  }),
264
264
  "tools/list": Effect.fnUntraced(function*() {
265
- const request = yield* PublicMcpSchema.McpServerClient
266
- const tools = yield* core.tools.list(McpProtocol.profileFromClient(request))
265
+ const tools = yield* McpProtocol.listForClient(core.tools.list)
267
266
  return McpSchema.ListToolsResult.make({
268
267
  tools: tools.map((tool) =>
269
268
  McpSchema.Tool.make({