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,480 @@
1
+ /**
2
+ * The Skills extension (SEP-2640): its wire vocabulary, the catalog behind a
3
+ * static skill, and the handlers shared by the sessionful adapters.
4
+ *
5
+ * @internal
6
+ */
7
+ import * as Cause from "../../Cause.ts"
8
+ import * as Digest from "../../crypto/Digest.ts"
9
+ import * as Effect from "../../Effect.ts"
10
+ import * as Yaml from "../../encoding/Yaml.ts"
11
+ import * as Mime from "../../http/Mime.ts"
12
+ import * as Option from "../../Option.ts"
13
+ import * as Predicate from "../../Predicate.ts"
14
+ import * as Rpc from "../../rpc/Rpc.ts"
15
+ import * as RpcGroup from "../../rpc/RpcGroup.ts"
16
+ import * as Schema from "../../Schema.ts"
17
+ import * as PublicMcpSchema from "../McpSchema.ts"
18
+ import type * as McpCore from "./mcpCore.ts"
19
+ import * as McpProtocol from "./mcpProtocol.ts"
20
+ import * as Legacy from "./mcpSchema/v2024_11_05.ts"
21
+ import * as Stateless from "./mcpSchema/v2026_07_28.ts"
22
+
23
+ /**
24
+ * @internal
25
+ */
26
+ export const EXTENSION_ID = "io.modelcontextprotocol/skills"
27
+
28
+ const DIRECTORY_MIME_TYPE = "inode/directory"
29
+
30
+ // The extension's per-skill limits, which every conforming host accepts.
31
+ const MAX_FILES_PER_SKILL = 512
32
+ const MAX_BYTES_PER_SKILL = 16 * 1024 * 1024
33
+
34
+ /**
35
+ * Adds the extension declaration while any skill is registered. Declaring it
36
+ * commits the server to `skills/list`, `skills/get` and, through
37
+ * `directoryRead`, `resources/directory/read`.
38
+ *
39
+ * @internal
40
+ */
41
+ export const declareExtension = <A>(
42
+ extensions: Readonly<Record<string, A>> | undefined,
43
+ servesSkills: boolean
44
+ ): Readonly<Record<string, A | { readonly directoryRead: true }>> | undefined =>
45
+ servesSkills ? { ...extensions, [EXTENSION_ID]: { directoryRead: true } } : extensions
46
+
47
+ // =============================================================================
48
+ // Wire schemas
49
+ // =============================================================================
50
+
51
+ const Skill = Schema.Struct({
52
+ uri: Schema.String,
53
+ frontmatter: Legacy.UnknownObject,
54
+ resources: Schema.Union([
55
+ Schema.Array(Schema.Struct(PublicMcpSchema.SkillResource.fields)),
56
+ Schema.Literal("dynamic")
57
+ ])
58
+ })
59
+
60
+ // Listed entries are checked one at a time, so that a client can leave out an
61
+ // invalid entry instead of rejecting the whole page.
62
+ const ListedSkills = Schema.Array(Schema.Unknown)
63
+
64
+ /**
65
+ * @internal
66
+ */
67
+ export class LegacyListSkills extends Rpc.make("skills/list", {
68
+ success: Schema.Struct({ ...Legacy.PaginatedResult.fields, skills: ListedSkills }),
69
+ error: Legacy.McpError,
70
+ payload: Schema.UndefinedOr(Legacy.PaginatedRequest)
71
+ }) {}
72
+
73
+ /**
74
+ * @internal
75
+ */
76
+ export class LegacyGetSkill extends Rpc.make("skills/get", {
77
+ success: Schema.Struct({ ...Legacy.ResultMeta.fields, skill: Skill }),
78
+ error: Legacy.McpError,
79
+ payload: { ...Legacy.RequestMeta.fields, uri: Schema.String }
80
+ }) {}
81
+
82
+ /**
83
+ * @internal
84
+ */
85
+ export class LegacyReadResourceDirectory extends Rpc.make("resources/directory/read", {
86
+ success: Schema.Struct({ ...Legacy.PaginatedResult.fields, resources: Schema.Array(Legacy.Resource) }),
87
+ error: Legacy.McpError,
88
+ payload: { ...Legacy.PaginatedRequest.fields, uri: Schema.String }
89
+ }) {}
90
+
91
+ /**
92
+ * The extension's methods on revisions before 2026-07-28, which have no
93
+ * result caching attributes.
94
+ *
95
+ * @internal
96
+ */
97
+ export class LegacyRpcs extends RpcGroup.make(LegacyListSkills, LegacyGetSkill, LegacyReadResourceDirectory) {}
98
+
99
+ /**
100
+ * @internal
101
+ */
102
+ export const ListSkillsResult = Schema.StructWithRest(
103
+ Schema.Struct({ ...Stateless.PaginatedResult, ...Stateless.CacheableResult, skills: ListedSkills }),
104
+ [Stateless.UnknownObject]
105
+ )
106
+
107
+ /**
108
+ * @internal
109
+ */
110
+ export class ListSkills extends Rpc.make("skills/list", {
111
+ success: ListSkillsResult,
112
+ error: Stateless.McpError,
113
+ payload: Stateless.PaginatedRequestParams
114
+ }) {}
115
+
116
+ /**
117
+ * @internal
118
+ */
119
+ export const GetSkillResult = Schema.StructWithRest(
120
+ Schema.Struct({ ...Stateless.CacheableResult, skill: Skill }),
121
+ [Stateless.UnknownObject]
122
+ )
123
+
124
+ /**
125
+ * @internal
126
+ */
127
+ export class GetSkill extends Rpc.make("skills/get", {
128
+ success: GetSkillResult,
129
+ error: Stateless.McpError,
130
+ payload: { ...Stateless.RequestParams.fields, uri: Schema.String }
131
+ }) {}
132
+
133
+ /**
134
+ * @internal
135
+ */
136
+ export const ReadResourceDirectoryResult = Schema.StructWithRest(
137
+ Schema.Struct({
138
+ ...Stateless.PaginatedResult,
139
+ ...Stateless.CacheableResult,
140
+ resources: Schema.Array(Stateless.Resource)
141
+ }),
142
+ [Stateless.UnknownObject]
143
+ )
144
+
145
+ /**
146
+ * @internal
147
+ */
148
+ export class ReadResourceDirectory extends Rpc.make("resources/directory/read", {
149
+ success: ReadResourceDirectoryResult,
150
+ error: Stateless.McpError,
151
+ payload: { ...Stateless.PaginatedRequestParams, uri: Schema.String }
152
+ }) {}
153
+
154
+ /**
155
+ * The extension's methods on revision 2026-07-28.
156
+ *
157
+ * @internal
158
+ */
159
+ export class StatelessRpcs extends RpcGroup.make(ListSkills, GetSkill, ReadResourceDirectory) {}
160
+
161
+ // =============================================================================
162
+ // Handlers
163
+ // =============================================================================
164
+
165
+ const methodNotFound = (method: string) =>
166
+ new McpProtocol.ProtocolError({
167
+ code: PublicMcpSchema.METHOD_NOT_FOUND_ERROR_CODE,
168
+ message: `Method not found: ${method}`
169
+ })
170
+
171
+ // Every skill fits on one page, so the server never issues a cursor.
172
+ const unknownCursor = new McpProtocol.ProtocolError({
173
+ code: PublicMcpSchema.INVALID_PARAMS_ERROR_CODE,
174
+ message: "Unknown cursor"
175
+ })
176
+
177
+ /**
178
+ * Fails with `Method not found` while no skill is registered, as a server
179
+ * that does not declare the extension.
180
+ *
181
+ * @internal
182
+ */
183
+ export const requireSkills = (core: McpCore.McpCore, method: string) =>
184
+ Effect.flatMap(
185
+ core.registrationPresence,
186
+ (presence) => presence.skills ? Effect.void : Effect.fail(methodNotFound(method))
187
+ )
188
+
189
+ /**
190
+ * @internal
191
+ */
192
+ export const rejectCursor = (cursor: string | undefined) =>
193
+ cursor === undefined ? Effect.void : Effect.fail(unknownCursor)
194
+
195
+ /**
196
+ * Handlers for {@link LegacyRpcs}, for the sessionful adapters.
197
+ *
198
+ * @internal
199
+ */
200
+ export const legacyHandlers = (core: McpCore.McpCore) => ({
201
+ "skills/list": Effect.fnUntraced(function*(request: typeof LegacyListSkills.payloadSchema.Type) {
202
+ yield* requireSkills(core, "skills/list")
203
+ yield* rejectCursor(request?.cursor)
204
+ const skills = yield* McpProtocol.listForClient(core.skills.list)
205
+ return { skills }
206
+ }),
207
+ "skills/get": Effect.fnUntraced(function*(request: typeof LegacyGetSkill.payloadSchema.Type) {
208
+ yield* requireSkills(core, "skills/get")
209
+ const client = yield* PublicMcpSchema.McpServerClient
210
+ const skill = yield* core.skills.get(request.uri, McpProtocol.invocationFromClient(client)).pipe(
211
+ Effect.mapError(McpProtocol.ProtocolError.fromFeature)
212
+ )
213
+ return { skill }
214
+ }),
215
+ "resources/directory/read": Effect.fnUntraced(function*(
216
+ request: typeof LegacyReadResourceDirectory.payloadSchema.Type
217
+ ) {
218
+ yield* requireSkills(core, "resources/directory/read")
219
+ yield* rejectCursor(request.cursor)
220
+ const client = yield* PublicMcpSchema.McpServerClient
221
+ const resources = yield* core.skills.readDirectory(request.uri, McpProtocol.invocationFromClient(client)).pipe(
222
+ Effect.mapError(McpProtocol.ProtocolError.fromFeature)
223
+ )
224
+ return { resources }
225
+ })
226
+ })
227
+
228
+ // =============================================================================
229
+ // Static skills
230
+ // =============================================================================
231
+
232
+ /**
233
+ * A file of a static skill as handed in, `SKILL.md` included, with its path
234
+ * relative to the skill root.
235
+ *
236
+ * @internal
237
+ */
238
+ export interface SourceFile {
239
+ readonly path: string
240
+ readonly content: Uint8Array
241
+ readonly mimeType?: string | undefined
242
+ }
243
+
244
+ /**
245
+ * A file of a static skill as served through `resources/read`.
246
+ *
247
+ * @internal
248
+ */
249
+ export interface ServedFile {
250
+ // Listed by `resources/list` and as a child on `resources/directory/read`.
251
+ readonly resource: McpCore.DirectoryChild
252
+ readonly content: Uint8Array
253
+ // Set when the file is textual and valid UTF-8; otherwise it is served as a blob.
254
+ readonly text: string | undefined
255
+ }
256
+
257
+ /**
258
+ * @internal
259
+ */
260
+ export interface StaticSkill {
261
+ readonly entry: McpCore.Skill
262
+ readonly files: ReadonlyArray<ServedFile>
263
+ // Directory URI to its direct children.
264
+ readonly directories: ReadonlyMap<string, ReadonlyArray<McpCore.DirectoryChild>>
265
+ }
266
+
267
+ const TEXTUAL_APPLICATION_TYPES: ReadonlySet<string> = new Set([
268
+ "application/json",
269
+ "application/yaml",
270
+ "image/svg+xml"
271
+ ])
272
+
273
+ /**
274
+ * @internal
275
+ */
276
+ export const mimeTypeFor = (path: string): string => {
277
+ // The standard table maps `.ts` to MPEG transport streams, but a skill's
278
+ // `.ts` files are TypeScript scripts.
279
+ if (/\.ts$/i.test(path)) return "text/x-typescript"
280
+ return Option.getOrElse(Mime.getType(path), () => "application/octet-stream")
281
+ }
282
+
283
+ // `ignoreBOM` keeps a leading BOM in the decoded text, so re-encoding the text
284
+ // reproduces exactly the bytes the manifest digest covers.
285
+ const utf8 = new TextDecoder("utf-8", { fatal: true, ignoreBOM: true })
286
+
287
+ const decodeText = (mimeType: string, content: Uint8Array): string | undefined => {
288
+ if (!mimeType.startsWith("text/") && !TEXTUAL_APPLICATION_TYPES.has(mimeType)) {
289
+ return undefined
290
+ }
291
+ try {
292
+ return utf8.decode(content)
293
+ } catch {
294
+ return undefined
295
+ }
296
+ }
297
+
298
+ const isSafeRelativePath = (path: string): boolean =>
299
+ path !== "" &&
300
+ !path.includes("\\") &&
301
+ path.split("/").every((segment) => segment !== "" && segment !== "." && segment !== "..")
302
+
303
+ // The Agent Skills `name` rule: lowercase letters, digits and single hyphens,
304
+ // neither leading nor trailing, at most 64 characters.
305
+ const isSkillName = (name: string): boolean => name.length <= 64 && /^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(name)
306
+
307
+ const FRONTMATTER = /^\uFEFF?---\r?\n([\s\S]*?)\r?\n---[ \t]*(?:\r?\n|$)/
308
+
309
+ /**
310
+ * The YAML frontmatter of a `SKILL.md`, or `undefined` when the file does not
311
+ * begin with a frontmatter block holding a YAML mapping.
312
+ *
313
+ * @internal
314
+ */
315
+ export const parseFrontmatter = (markdown: string): Record<string, unknown> | undefined => {
316
+ const block = FRONTMATTER.exec(markdown)?.[1]
317
+ if (block === undefined) return undefined
318
+ try {
319
+ const parsed = Yaml.parse(block)
320
+ // The frontmatter is listed as JSON, so keep only what JSON carries:
321
+ // `.inf` and `.nan` become `null`.
322
+ return Predicate.isObject(parsed) ? JSON.parse(JSON.stringify(parsed)) : undefined
323
+ } catch {
324
+ return undefined
325
+ }
326
+ }
327
+
328
+ // The directory holding a skill's `SKILL.md`, given the `SKILL.md` URI.
329
+ const skillRoot = (uri: string): string => uri.slice(0, -"/SKILL.md".length)
330
+
331
+ /**
332
+ * Whether `uri` addresses a file inside the skill whose `SKILL.md` is at
333
+ * `skillUri`.
334
+ *
335
+ * @internal
336
+ */
337
+ export const isSkillFile = (skillUri: string, uri: string): boolean => {
338
+ const root = skillRoot(skillUri)
339
+ return uri.startsWith(`${root}/`) && isSafeRelativePath(uri.slice(root.length + 1))
340
+ }
341
+
342
+ /**
343
+ * Why a skill entry received from a server breaks the extension's rules, or
344
+ * `undefined` when it is valid. Hosts must not load an invalid entry. The
345
+ * digest and size formats are checked by {@link PublicMcpSchema.SkillResource}.
346
+ *
347
+ * @internal
348
+ */
349
+ export const entryProblem = (entry: McpCore.Skill): string | undefined => {
350
+ const schemeEnd = entry.uri.indexOf("://")
351
+ if (schemeEnd <= 0 || !entry.uri.endsWith("/SKILL.md")) return "the URI does not address a SKILL.md"
352
+ const root = skillRoot(entry.uri)
353
+ const skillPath = root.slice(schemeEnd + 3)
354
+ if (!isSafeRelativePath(skillPath)) return "the skill path has an empty, '.' or '..' segment"
355
+ const name = skillPath.split("/").at(-1)!
356
+ if (entry.frontmatter.name !== name || !isSkillName(name)) {
357
+ return `the frontmatter name must equal "${name}" and follow the Agent Skills naming rules`
358
+ }
359
+ const description = entry.frontmatter.description
360
+ if (typeof description !== "string" || description === "" || description.length > 1024) {
361
+ return "the frontmatter description must be a string of 1 to 1024 characters"
362
+ }
363
+ if (entry.resources === "dynamic") return undefined
364
+ const uris = new Set<string>()
365
+ for (const resource of entry.resources) {
366
+ if (!isSkillFile(entry.uri, resource.uri)) return `${resource.uri} is not a file of the skill`
367
+ if (uris.has(resource.uri)) return `${resource.uri} is listed twice`
368
+ uris.add(resource.uri)
369
+ }
370
+ return uris.has(entry.uri) ? undefined : "the manifest does not list SKILL.md"
371
+ }
372
+
373
+ /**
374
+ * Whether `child` is a direct child of the directory at `directory`.
375
+ *
376
+ * @internal
377
+ */
378
+ export const isDirectChild = (directory: string, child: string): boolean => {
379
+ if (!child.startsWith(`${directory}/`)) return false
380
+ const name = child.slice(directory.length + 1)
381
+ return name !== "" && name !== "." && name !== ".." && !name.includes("/")
382
+ }
383
+
384
+ const decodeFrontmatter = Schema.decodeUnknownEffect(PublicMcpSchema.SkillFrontmatter)
385
+
386
+ /**
387
+ * Validates a static skill against the extension's server requirements and
388
+ * precomputes what the protocol serves: the manifest, with digests over the
389
+ * exact bytes served, each file's resource metadata, and the directory tree
390
+ * from the namespace root down.
391
+ *
392
+ * @internal
393
+ */
394
+ export const makeStaticSkill = (options: {
395
+ readonly uri: string
396
+ readonly files: ReadonlyArray<SourceFile>
397
+ }): Effect.Effect<StaticSkill, Cause.IllegalArgumentError, Digest.Digest> =>
398
+ Effect.gen(function*() {
399
+ const { uri } = options
400
+ const fail = (reason: string) => Effect.fail(new Cause.IllegalArgumentError(`Skill ${uri}: ${reason}`))
401
+
402
+ const schemeEnd = uri.indexOf("://")
403
+ if (schemeEnd <= 0 || !uri.endsWith("/SKILL.md")) {
404
+ return yield* fail("the URI must have the form <scheme>://<skill-path>/SKILL.md")
405
+ }
406
+ const scheme = uri.slice(0, schemeEnd + 3)
407
+ const skillPath = uri.slice(scheme.length, -"/SKILL.md".length)
408
+ if (!isSafeRelativePath(skillPath)) {
409
+ return yield* fail("the skill path must have no empty, '.' or '..' segment")
410
+ }
411
+ const name = skillPath.split("/").at(-1)!
412
+ if (options.files.length > MAX_FILES_PER_SKILL) {
413
+ return yield* fail(`it has ${options.files.length} files; the limit is ${MAX_FILES_PER_SKILL}`)
414
+ }
415
+ const totalBytes = options.files.reduce((sum, file) => sum + file.content.byteLength, 0)
416
+ if (totalBytes > MAX_BYTES_PER_SKILL) {
417
+ return yield* fail(`it has ${totalBytes} bytes; the limit is ${MAX_BYTES_PER_SKILL}`)
418
+ }
419
+ const paths = new Set<string>()
420
+ for (const file of options.files) {
421
+ if (!isSafeRelativePath(file.path)) return yield* fail(`the file path "${file.path}" escapes the skill`)
422
+ if (paths.has(file.path)) return yield* fail(`the file "${file.path}" is given twice`)
423
+ paths.add(file.path)
424
+ }
425
+ const skillMd = options.files.find((file) => file.path === "SKILL.md")
426
+ if (skillMd === undefined) return yield* fail("SKILL.md is missing")
427
+
428
+ // The listed frontmatter is parsed from the served SKILL.md, so the two
429
+ // cannot differ.
430
+ const frontmatter = parseFrontmatter(decodeText("text/markdown", skillMd.content) ?? "")
431
+ if (frontmatter === undefined) return yield* fail("SKILL.md must begin with YAML frontmatter holding a mapping")
432
+ if (frontmatter.name !== name) {
433
+ return yield* fail(`the frontmatter name ${JSON.stringify(frontmatter.name)} must equal "${name}"`)
434
+ }
435
+ // A skill served over MCP must conform to the Agent Skills specification.
436
+ const { description } = yield* decodeFrontmatter(frontmatter).pipe(
437
+ Effect.catch((error) => fail(`the frontmatter is not valid Agent Skills frontmatter: ${error.message}`))
438
+ )
439
+
440
+ const digest = yield* Digest.Digest
441
+ const sorted = [...options.files].sort((a, b) => a.path < b.path ? -1 : a.path > b.path ? 1 : 0)
442
+ const resources: Array<McpCore.SkillResource> = []
443
+ const files: Array<ServedFile> = []
444
+ const children = new Map<string, Map<string, McpCore.DirectoryChild>>()
445
+ for (const file of sorted) {
446
+ const fileUri = `${scheme}${skillPath}/${file.path}`
447
+ const fileDigest = `sha256:${yield* digest.digestHex(Digest.sha256, file.content)}`
448
+ const mimeType = file.mimeType ?? mimeTypeFor(file.path)
449
+ const size = file.content.byteLength
450
+ const resource: McpCore.DirectoryChild = file.path === "SKILL.md"
451
+ ? { uri: fileUri, name, description, mimeType, size }
452
+ : { uri: fileUri, name: file.path.split("/").at(-1)!, mimeType, size }
453
+ files.push({ resource, content: file.content, text: decodeText(mimeType, file.content) })
454
+ resources.push({ uri: fileUri, digest: fileDigest, size })
455
+
456
+ // Every directory from the namespace root down is readable, including
457
+ // the prefix directories above the skill root.
458
+ const segments = `${skillPath}/${file.path}`.split("/")
459
+ for (let depth = 1; depth < segments.length; depth++) {
460
+ const directory = `${scheme}${segments.slice(0, depth).join("/")}`
461
+ const child: McpCore.DirectoryChild = depth === segments.length - 1 ? resource : {
462
+ uri: `${scheme}${segments.slice(0, depth + 1).join("/")}`,
463
+ name: segments[depth]!,
464
+ mimeType: DIRECTORY_MIME_TYPE
465
+ }
466
+ let siblings = children.get(directory)
467
+ if (siblings === undefined) {
468
+ siblings = new Map()
469
+ children.set(directory, siblings)
470
+ }
471
+ siblings.set(child.uri, child)
472
+ }
473
+ }
474
+
475
+ const directories = new Map<string, ReadonlyArray<McpCore.DirectoryChild>>()
476
+ for (const [directory, siblings] of children) {
477
+ directories.set(directory, Array.from(siblings.values()))
478
+ }
479
+ return { entry: { uri, frontmatter, resources }, files, directories }
480
+ })
@@ -28,6 +28,7 @@ export interface Binding {
28
28
 
29
29
  interface Session extends Binding {
30
30
  readonly resourceSubscriptions: Set<string> | undefined
31
+ readonly listChangeRevision: number
31
32
  logLevel: SessionLogLevel
32
33
  }
33
34
 
@@ -37,6 +38,11 @@ interface Session extends Binding {
37
38
  export interface Registration extends Binding {
38
39
  readonly supportsResourceSubscriptions: boolean
39
40
  readonly logLevel: LogLevel.LogLevel
41
+ /**
42
+ * The server's list-change revision when the session initialized. Changes
43
+ * up to this revision are already reflected in what the client lists next.
44
+ */
45
+ readonly listChangeRevision: number
40
46
  }
41
47
 
42
48
  /**
@@ -67,7 +73,8 @@ export interface StatefulRuntime {
67
73
  clientId: number,
68
74
  headers: Headers.Headers,
69
75
  notification: McpCore.ServerNotification,
70
- fallbackLogLevel: LogLevel.LogLevel
76
+ fallbackLogLevel: LogLevel.LogLevel,
77
+ listChangeRevision: number | undefined
71
78
  ) => boolean
72
79
  readonly effectLogLevel: (
73
80
  clientId: number,
@@ -84,6 +91,7 @@ const makeSession = (registration: Registration): Session => ({
84
91
  negotiatedProfile: registration.negotiatedProfile,
85
92
  protocol: registration.protocol,
86
93
  resourceSubscriptions: registration.supportsResourceSubscriptions ? new Set() : undefined,
94
+ listChangeRevision: registration.listChangeRevision,
87
95
  logLevel: { _tag: "Effect", level: registration.logLevel }
88
96
  })
89
97
 
@@ -157,8 +165,12 @@ export const make = (): StatefulRuntime => {
157
165
  return Effect.sync(() => subscriptions.delete(uri)).pipe(Effect.asVoid)
158
166
  },
159
167
  effectLogLevel,
160
- canDeliver: (clientId, headers, notification, fallbackLogLevel) => {
168
+ canDeliver: (clientId, headers, notification, fallbackLogLevel, listChangeRevision) => {
161
169
  const session = resolveSession(clientId, headers)
170
+ if (listChangeRevision !== undefined) {
171
+ // A client without a session on this channel has not initialized.
172
+ return session !== undefined && listChangeRevision > session.listChangeRevision
173
+ }
162
174
  if (notification._tag === "LoggingMessage") {
163
175
  const minimum = session?.logLevel
164
176
  return minimum?._tag === "Mcp"
@@ -748,6 +748,7 @@ export const map: {
748
748
  * Layer.succeed(Terminal.Terminal, Terminal.make({
749
749
  * columns: Effect.succeed(80),
750
750
  * rows: Effect.succeed(24),
751
+ * size: Effect.die("unused"),
751
752
  * readInput: Effect.die("unused"),
752
753
  * readLine: Effect.die("unused"),
753
754
  * display: () => Effect.void
@@ -799,6 +800,7 @@ export const mapEffect: {
799
800
  * Layer.succeed(Terminal.Terminal, Terminal.make({
800
801
  * columns: Effect.succeed(80),
801
802
  * rows: Effect.succeed(24),
803
+ * size: Effect.die("unused"),
802
804
  * readInput: Effect.die("unused"),
803
805
  * readLine: Effect.die("unused"),
804
806
  * display: () => Effect.void
@@ -850,6 +852,7 @@ export const mapEffect: {
850
852
  * Layer.succeed(Terminal.Terminal, Terminal.make({
851
853
  * columns: Effect.succeed(80),
852
854
  * rows: Effect.succeed(24),
855
+ * size: Effect.die("unused"),
853
856
  * readInput: Effect.die("unused"),
854
857
  * readLine: Effect.die("unused"),
855
858
  * display: () => Effect.void
@@ -909,6 +912,7 @@ export const mapEffect: {
909
912
  * Layer.succeed(Terminal.Terminal, Terminal.make({
910
913
  * columns: Effect.succeed(80),
911
914
  * rows: Effect.succeed(24),
915
+ * size: Effect.die("unused"),
912
916
  * readInput: Effect.die("unused"),
913
917
  * readLine: Effect.die("unused"),
914
918
  * display: () => Effect.void
@@ -955,6 +959,7 @@ export const mapTryCatch: {
955
959
  * Layer.succeed(Terminal.Terminal, Terminal.make({
956
960
  * columns: Effect.succeed(80),
957
961
  * rows: Effect.succeed(24),
962
+ * size: Effect.die("unused"),
958
963
  * readInput: Effect.die("unused"),
959
964
  * readLine: Effect.die("unused"),
960
965
  * display: () => Effect.void
@@ -1001,6 +1006,7 @@ export const mapTryCatch: {
1001
1006
  * Layer.succeed(Terminal.Terminal, Terminal.make({
1002
1007
  * columns: Effect.succeed(80),
1003
1008
  * rows: Effect.succeed(24),
1009
+ * size: Effect.die("unused"),
1004
1010
  * readInput: Effect.die("unused"),
1005
1011
  * readLine: Effect.die("unused"),
1006
1012
  * display: () => Effect.void