effect 4.1.0 → 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 (354) hide show
  1. package/README.md +30 -0
  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 +83 -14
  6. package/dist/BigDecimal.js.map +1 -1
  7. package/dist/Equal.d.ts +2 -2
  8. package/dist/Equal.d.ts.map +1 -1
  9. package/dist/Equal.js +3 -3
  10. package/dist/Equal.js.map +1 -1
  11. package/dist/Hash.d.ts +3 -2
  12. package/dist/Hash.d.ts.map +1 -1
  13. package/dist/Hash.js +5 -4
  14. package/dist/Hash.js.map +1 -1
  15. package/dist/Iterable.d.ts.map +1 -1
  16. package/dist/Iterable.js +11 -8
  17. package/dist/Iterable.js.map +1 -1
  18. package/dist/Path.d.ts.map +1 -1
  19. package/dist/Path.js +5 -1
  20. package/dist/Path.js.map +1 -1
  21. package/dist/Pool.d.ts.map +1 -1
  22. package/dist/Pool.js +2 -1
  23. package/dist/Pool.js.map +1 -1
  24. package/dist/Schema.d.ts +2 -1
  25. package/dist/Schema.d.ts.map +1 -1
  26. package/dist/Schema.js +2 -1
  27. package/dist/Schema.js.map +1 -1
  28. package/dist/SchemaRepresentation.d.ts +4 -2
  29. package/dist/SchemaRepresentation.d.ts.map +1 -1
  30. package/dist/SchemaRepresentation.js +4 -2
  31. package/dist/SchemaRepresentation.js.map +1 -1
  32. package/dist/SchemaTransformation.d.ts +2 -2
  33. package/dist/SchemaTransformation.js +2 -2
  34. package/dist/ai/McpClient.d.ts +171 -19
  35. package/dist/ai/McpClient.d.ts.map +1 -1
  36. package/dist/ai/McpClient.js +277 -66
  37. package/dist/ai/McpClient.js.map +1 -1
  38. package/dist/ai/McpSchema.d.ts +108 -0
  39. package/dist/ai/McpSchema.d.ts.map +1 -1
  40. package/dist/ai/McpSchema.js +99 -0
  41. package/dist/ai/McpSchema.js.map +1 -1
  42. package/dist/ai/McpServer.d.ts +120 -6
  43. package/dist/ai/McpServer.d.ts.map +1 -1
  44. package/dist/ai/McpServer.js +215 -34
  45. package/dist/ai/McpServer.js.map +1 -1
  46. package/dist/ai/Prompt.d.ts.map +1 -1
  47. package/dist/ai/Prompt.js +20 -11
  48. package/dist/ai/Prompt.js.map +1 -1
  49. package/dist/ai/Tool.d.ts.map +1 -1
  50. package/dist/ai/Tool.js +5 -7
  51. package/dist/ai/Tool.js.map +1 -1
  52. package/dist/ai/internal/mcpCore.js +72 -3
  53. package/dist/ai/internal/mcpCore.js.map +1 -1
  54. package/dist/ai/internal/mcpProtocol/v2024_11_05.js +3 -1
  55. package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
  56. package/dist/ai/internal/mcpProtocol/v2025_03_26.js +3 -1
  57. package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
  58. package/dist/ai/internal/mcpProtocol/v2025_06_18.js +3 -1
  59. package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
  60. package/dist/ai/internal/mcpProtocol/v2025_11_25.js +3 -1
  61. package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
  62. package/dist/ai/internal/mcpProtocol/v2026_07_28.js +42 -7
  63. package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
  64. package/dist/ai/internal/mcpProtocol.js +12 -0
  65. package/dist/ai/internal/mcpProtocol.js.map +1 -1
  66. package/dist/ai/internal/mcpRuntime.js +3 -3
  67. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  68. package/dist/ai/internal/mcpSkills.d.ts +2 -0
  69. package/dist/ai/internal/mcpSkills.d.ts.map +1 -0
  70. package/dist/ai/internal/mcpSkills.js +428 -0
  71. package/dist/ai/internal/mcpSkills.js.map +1 -0
  72. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  73. package/dist/cluster/ClusterWorkflowEngine.js +15 -5
  74. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  75. package/dist/cluster/Reply.d.ts +1 -1
  76. package/dist/cluster/Reply.d.ts.map +1 -1
  77. package/dist/cluster/Reply.js.map +1 -1
  78. package/dist/cluster/Sharding.d.ts.map +1 -1
  79. package/dist/cluster/Sharding.js +4 -1
  80. package/dist/cluster/Sharding.js.map +1 -1
  81. package/dist/cluster/internal/entityManager.js +15 -7
  82. package/dist/cluster/internal/entityManager.js.map +1 -1
  83. package/dist/crypto/Aead.d.ts +2 -1
  84. package/dist/crypto/Aead.d.ts.map +1 -1
  85. package/dist/crypto/Aead.js +2 -2
  86. package/dist/crypto/Aead.js.map +1 -1
  87. package/dist/crypto/Cipher.d.ts +2 -1
  88. package/dist/crypto/Cipher.d.ts.map +1 -1
  89. package/dist/crypto/Cipher.js +2 -2
  90. package/dist/crypto/Cipher.js.map +1 -1
  91. package/dist/crypto/KeyAgreement.d.ts +3 -2
  92. package/dist/crypto/KeyAgreement.d.ts.map +1 -1
  93. package/dist/crypto/KeyAgreement.js +2 -2
  94. package/dist/crypto/KeyAgreement.js.map +1 -1
  95. package/dist/crypto/KeyFormat.d.ts +33 -1
  96. package/dist/crypto/KeyFormat.d.ts.map +1 -1
  97. package/dist/crypto/KeyFormat.js.map +1 -1
  98. package/dist/crypto/KeyWrap.d.ts +4 -3
  99. package/dist/crypto/KeyWrap.d.ts.map +1 -1
  100. package/dist/crypto/KeyWrap.js +2 -2
  101. package/dist/crypto/KeyWrap.js.map +1 -1
  102. package/dist/crypto/Mac.d.ts +2 -1
  103. package/dist/crypto/Mac.d.ts.map +1 -1
  104. package/dist/crypto/Mac.js +2 -2
  105. package/dist/crypto/Mac.js.map +1 -1
  106. package/dist/crypto/Signature.d.ts +3 -2
  107. package/dist/crypto/Signature.d.ts.map +1 -1
  108. package/dist/crypto/Signature.js +2 -2
  109. package/dist/crypto/Signature.js.map +1 -1
  110. package/dist/crypto/WebCrypto.d.ts +19 -0
  111. package/dist/crypto/WebCrypto.d.ts.map +1 -1
  112. package/dist/crypto/WebCrypto.js.map +1 -1
  113. package/dist/crypto/internal/asymmetric.js.map +1 -1
  114. package/dist/crypto/internal/key.js +3 -2
  115. package/dist/crypto/internal/key.js.map +1 -1
  116. package/dist/encoding/Base64Url.d.ts.map +1 -1
  117. package/dist/encoding/Base64Url.js +26 -3
  118. package/dist/encoding/Base64Url.js.map +1 -1
  119. package/dist/encoding/Ndjson.d.ts +5 -4
  120. package/dist/encoding/Ndjson.d.ts.map +1 -1
  121. package/dist/encoding/Ndjson.js +6 -5
  122. package/dist/encoding/Ndjson.js.map +1 -1
  123. package/dist/encoding/Sse.d.ts +3 -1
  124. package/dist/encoding/Sse.d.ts.map +1 -1
  125. package/dist/encoding/Sse.js +5 -3
  126. package/dist/encoding/Sse.js.map +1 -1
  127. package/dist/eventlog/EventLog.d.ts +7 -0
  128. package/dist/eventlog/EventLog.d.ts.map +1 -1
  129. package/dist/eventlog/EventLog.js +7 -0
  130. package/dist/eventlog/EventLog.js.map +1 -1
  131. package/dist/eventlog/EventLogServer.d.ts +7 -1
  132. package/dist/eventlog/EventLogServer.d.ts.map +1 -1
  133. package/dist/eventlog/EventLogServer.js +27 -12
  134. package/dist/eventlog/EventLogServer.js.map +1 -1
  135. package/dist/eventlog/EventLogServerEncrypted.d.ts +10 -0
  136. package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  137. package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
  138. package/dist/eventlog/EventLogServerUnencrypted.d.ts +17 -0
  139. package/dist/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
  140. package/dist/eventlog/EventLogServerUnencrypted.js +14 -2
  141. package/dist/eventlog/EventLogServerUnencrypted.js.map +1 -1
  142. package/dist/eventlog/EventLogSessionAuth.d.ts +21 -0
  143. package/dist/eventlog/EventLogSessionAuth.d.ts.map +1 -1
  144. package/dist/eventlog/EventLogSessionAuth.js +22 -0
  145. package/dist/eventlog/EventLogSessionAuth.js.map +1 -1
  146. package/dist/graphql/GraphQLClient.d.ts +3 -1
  147. package/dist/graphql/GraphQLClient.d.ts.map +1 -1
  148. package/dist/graphql/GraphQLClient.js.map +1 -1
  149. package/dist/graphql/GraphQLClientError.d.ts +14 -9
  150. package/dist/graphql/GraphQLClientError.d.ts.map +1 -1
  151. package/dist/graphql/GraphQLClientError.js +14 -21
  152. package/dist/graphql/GraphQLClientError.js.map +1 -1
  153. package/dist/graphql/GraphQLProtocol.d.ts +12 -3
  154. package/dist/graphql/GraphQLProtocol.d.ts.map +1 -1
  155. package/dist/graphql/GraphQLProtocol.js +4 -1
  156. package/dist/graphql/GraphQLProtocol.js.map +1 -1
  157. package/dist/http/HttpClient.d.ts +189 -7
  158. package/dist/http/HttpClient.d.ts.map +1 -1
  159. package/dist/http/HttpClient.js +75 -2
  160. package/dist/http/HttpClient.js.map +1 -1
  161. package/dist/http/HttpServerRequest.d.ts.map +1 -1
  162. package/dist/http/HttpServerRequest.js +38 -22
  163. package/dist/http/HttpServerRequest.js.map +1 -1
  164. package/dist/http/internal/mimeTypes.d.ts +4 -1
  165. package/dist/http/internal/mimeTypes.d.ts.map +1 -1
  166. package/dist/http/internal/mimeTypes.js +4 -1
  167. package/dist/http/internal/mimeTypes.js.map +1 -1
  168. package/dist/http-api/HttpApiSchema.js +1 -1
  169. package/dist/http-api/HttpApiSchema.js.map +1 -1
  170. package/dist/internal/dateTime.js +49 -24
  171. package/dist/internal/dateTime.js.map +1 -1
  172. package/dist/internal/effect.js +10 -0
  173. package/dist/internal/effect.js.map +1 -1
  174. package/dist/internal/glob.js +234 -56
  175. package/dist/internal/glob.js.map +1 -1
  176. package/dist/internal/graphql.js +21 -7
  177. package/dist/internal/graphql.js.map +1 -1
  178. package/dist/internal/graphqlHeaders.d.ts +7 -0
  179. package/dist/internal/graphqlHeaders.d.ts.map +1 -1
  180. package/dist/internal/graphqlHeaders.js +11 -0
  181. package/dist/internal/graphqlHeaders.js.map +1 -1
  182. package/dist/internal/request.js +29 -42
  183. package/dist/internal/request.js.map +1 -1
  184. package/dist/internal/schema/fromJsonSchemaDocument.js +7 -8
  185. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  186. package/dist/internal/version.js +1 -1
  187. package/dist/jose/JoseError.d.ts +285 -0
  188. package/dist/jose/JoseError.d.ts.map +1 -0
  189. package/dist/jose/JoseError.js +269 -0
  190. package/dist/jose/JoseError.js.map +1 -0
  191. package/dist/jose/Jwe.d.ts +128 -0
  192. package/dist/jose/Jwe.d.ts.map +1 -0
  193. package/dist/jose/Jwe.js +134 -0
  194. package/dist/jose/Jwe.js.map +1 -0
  195. package/dist/jose/Jwk.d.ts +597 -0
  196. package/dist/jose/Jwk.d.ts.map +1 -0
  197. package/dist/jose/Jwk.js +503 -0
  198. package/dist/jose/Jwk.js.map +1 -0
  199. package/dist/jose/Jwks.d.ts +236 -0
  200. package/dist/jose/Jwks.d.ts.map +1 -0
  201. package/dist/jose/Jwks.js +306 -0
  202. package/dist/jose/Jwks.js.map +1 -0
  203. package/dist/jose/Jws.d.ts +177 -0
  204. package/dist/jose/Jws.d.ts.map +1 -0
  205. package/dist/jose/Jws.js +183 -0
  206. package/dist/jose/Jws.js.map +1 -0
  207. package/dist/jose/Jwt.d.ts +270 -0
  208. package/dist/jose/Jwt.d.ts.map +1 -0
  209. package/dist/jose/Jwt.js +293 -0
  210. package/dist/jose/Jwt.js.map +1 -0
  211. package/dist/jose/index.d.ts +51 -0
  212. package/dist/jose/index.d.ts.map +1 -0
  213. package/dist/jose/index.js +52 -0
  214. package/dist/jose/index.js.map +1 -0
  215. package/dist/jose/internal/compact.d.ts +2 -0
  216. package/dist/jose/internal/compact.d.ts.map +1 -0
  217. package/dist/jose/internal/compact.js +179 -0
  218. package/dist/jose/internal/compact.js.map +1 -0
  219. package/dist/net/Host.d.ts.map +1 -1
  220. package/dist/net/Host.js +5 -10
  221. package/dist/net/Host.js.map +1 -1
  222. package/dist/observability/OtlpSerialization.d.ts +1 -1
  223. package/dist/observability/OtlpSerialization.d.ts.map +1 -1
  224. package/dist/observability/OtlpSerialization.js +10 -4
  225. package/dist/observability/OtlpSerialization.js.map +1 -1
  226. package/dist/observability/internal/otlpProtobuf.js +3 -3
  227. package/dist/observability/internal/otlpProtobuf.js.map +1 -1
  228. package/dist/observability/internal/protobuf.js +6 -0
  229. package/dist/observability/internal/protobuf.js.map +1 -1
  230. package/dist/persistence/CircuitBreaker.d.ts +98 -38
  231. package/dist/persistence/CircuitBreaker.d.ts.map +1 -1
  232. package/dist/persistence/CircuitBreaker.js +67 -29
  233. package/dist/persistence/CircuitBreaker.js.map +1 -1
  234. package/dist/persistence/RateLimiter.d.ts +8 -0
  235. package/dist/persistence/RateLimiter.d.ts.map +1 -1
  236. package/dist/persistence/RateLimiter.js +63 -12
  237. package/dist/persistence/RateLimiter.js.map +1 -1
  238. package/dist/persistence/index.d.ts +1 -1
  239. package/dist/persistence/index.js +1 -1
  240. package/dist/reactivity/AtomRegistry.js +17 -7
  241. package/dist/reactivity/AtomRegistry.js.map +1 -1
  242. package/dist/rpc/Rpc.d.ts +1 -1
  243. package/dist/rpc/Rpc.d.ts.map +1 -1
  244. package/dist/rpc/Rpc.js.map +1 -1
  245. package/dist/rpc/RpcClient.d.ts +14 -2
  246. package/dist/rpc/RpcClient.d.ts.map +1 -1
  247. package/dist/rpc/RpcClient.js +38 -21
  248. package/dist/rpc/RpcClient.js.map +1 -1
  249. package/dist/rpc/RpcMessage.d.ts +3 -2
  250. package/dist/rpc/RpcMessage.d.ts.map +1 -1
  251. package/dist/rpc/RpcMessage.js.map +1 -1
  252. package/dist/sql/Migrator.d.ts +9 -1
  253. package/dist/sql/Migrator.d.ts.map +1 -1
  254. package/dist/sql/Migrator.js +18 -6
  255. package/dist/sql/Migrator.js.map +1 -1
  256. package/dist/sql/SqlClient.d.ts +38 -3
  257. package/dist/sql/SqlClient.d.ts.map +1 -1
  258. package/dist/sql/SqlClient.js +4 -3
  259. package/dist/sql/SqlClient.js.map +1 -1
  260. package/dist/sql/Statement.d.ts +41 -3
  261. package/dist/sql/Statement.d.ts.map +1 -1
  262. package/dist/sql/Statement.js +24 -20
  263. package/dist/sql/Statement.js.map +1 -1
  264. package/dist/workflow/Workflow.d.ts +4 -0
  265. package/dist/workflow/Workflow.d.ts.map +1 -1
  266. package/dist/workflow/Workflow.js.map +1 -1
  267. package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
  268. package/dist/workflow/WorkflowEngine.js +5 -0
  269. package/dist/workflow/WorkflowEngine.js.map +1 -1
  270. package/package.json +5 -1
  271. package/src/BigDecimal.ts +170 -16
  272. package/src/Equal.ts +3 -3
  273. package/src/Hash.ts +5 -4
  274. package/src/Iterable.ts +8 -5
  275. package/src/Path.ts +6 -1
  276. package/src/Pool.ts +2 -1
  277. package/src/Schema.ts +3 -2
  278. package/src/SchemaRepresentation.ts +4 -2
  279. package/src/SchemaTransformation.ts +2 -2
  280. package/src/ai/McpClient.ts +488 -91
  281. package/src/ai/McpSchema.ts +119 -0
  282. package/src/ai/McpServer.ts +261 -38
  283. package/src/ai/Prompt.ts +16 -11
  284. package/src/ai/Tool.ts +5 -10
  285. package/src/ai/internal/mcpCore.ts +165 -12
  286. package/src/ai/internal/mcpProtocol/v2024_11_05.ts +3 -1
  287. package/src/ai/internal/mcpProtocol/v2025_03_26.ts +3 -1
  288. package/src/ai/internal/mcpProtocol/v2025_06_18.ts +3 -1
  289. package/src/ai/internal/mcpProtocol/v2025_11_25.ts +3 -1
  290. package/src/ai/internal/mcpProtocol/v2026_07_28.ts +41 -7
  291. package/src/ai/internal/mcpProtocol.ts +15 -0
  292. package/src/ai/internal/mcpRuntime.ts +6 -3
  293. package/src/ai/internal/mcpSkills.ts +480 -0
  294. package/src/cluster/ClusterWorkflowEngine.ts +22 -8
  295. package/src/cluster/Reply.ts +1 -1
  296. package/src/cluster/Sharding.ts +4 -1
  297. package/src/cluster/internal/entityManager.ts +24 -10
  298. package/src/crypto/Aead.ts +3 -3
  299. package/src/crypto/Cipher.ts +3 -3
  300. package/src/crypto/KeyAgreement.ts +4 -4
  301. package/src/crypto/KeyFormat.ts +30 -1
  302. package/src/crypto/KeyWrap.ts +6 -6
  303. package/src/crypto/Mac.ts +3 -3
  304. package/src/crypto/Signature.ts +4 -4
  305. package/src/crypto/WebCrypto.ts +20 -0
  306. package/src/crypto/internal/asymmetric.ts +2 -1
  307. package/src/crypto/internal/key.ts +12 -5
  308. package/src/encoding/Base64Url.ts +27 -3
  309. package/src/encoding/Ndjson.ts +6 -5
  310. package/src/encoding/Sse.ts +5 -3
  311. package/src/eventlog/EventLog.ts +7 -0
  312. package/src/eventlog/EventLogServer.ts +31 -12
  313. package/src/eventlog/EventLogServerEncrypted.ts +5 -0
  314. package/src/eventlog/EventLogServerUnencrypted.ts +19 -2
  315. package/src/eventlog/EventLogSessionAuth.ts +26 -0
  316. package/src/graphql/GraphQLClient.ts +3 -1
  317. package/src/graphql/GraphQLClientError.ts +15 -22
  318. package/src/graphql/GraphQLProtocol.ts +12 -3
  319. package/src/http/HttpClient.ts +210 -11
  320. package/src/http/HttpServerRequest.ts +61 -23
  321. package/src/http/internal/mimeTypes.ts +4 -1
  322. package/src/http-api/HttpApiSchema.ts +1 -1
  323. package/src/internal/dateTime.ts +54 -24
  324. package/src/internal/effect.ts +6 -0
  325. package/src/internal/glob.ts +279 -63
  326. package/src/internal/graphql.ts +27 -9
  327. package/src/internal/graphqlHeaders.ts +13 -0
  328. package/src/internal/request.ts +51 -58
  329. package/src/internal/schema/fromJsonSchemaDocument.ts +11 -10
  330. package/src/internal/version.ts +1 -1
  331. package/src/jose/JoseError.ts +329 -0
  332. package/src/jose/Jwe.ts +196 -0
  333. package/src/jose/Jwk.ts +777 -0
  334. package/src/jose/Jwks.ts +418 -0
  335. package/src/jose/Jws.ts +312 -0
  336. package/src/jose/Jwt.ts +493 -0
  337. package/src/jose/index.ts +58 -0
  338. package/src/jose/internal/compact.ts +195 -0
  339. package/src/net/Host.ts +5 -10
  340. package/src/observability/OtlpSerialization.ts +13 -5
  341. package/src/observability/internal/otlpProtobuf.ts +6 -6
  342. package/src/observability/internal/protobuf.ts +10 -0
  343. package/src/persistence/CircuitBreaker.ts +113 -48
  344. package/src/persistence/RateLimiter.ts +84 -15
  345. package/src/persistence/index.ts +1 -1
  346. package/src/reactivity/AtomRegistry.ts +19 -8
  347. package/src/rpc/Rpc.ts +3 -1
  348. package/src/rpc/RpcClient.ts +44 -24
  349. package/src/rpc/RpcMessage.ts +3 -2
  350. package/src/sql/Migrator.ts +35 -18
  351. package/src/sql/SqlClient.ts +43 -8
  352. package/src/sql/Statement.ts +52 -22
  353. package/src/workflow/Workflow.ts +4 -0
  354. package/src/workflow/WorkflowEngine.ts +5 -0
@@ -0,0 +1,428 @@
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.js";
8
+ import * as Digest from "../../crypto/Digest.js";
9
+ import * as Effect from "../../Effect.js";
10
+ import * as Yaml from "../../encoding/Yaml.js";
11
+ import * as Mime from "../../http/Mime.js";
12
+ import * as Option from "../../Option.js";
13
+ import * as Predicate from "../../Predicate.js";
14
+ import * as Rpc from "../../rpc/Rpc.js";
15
+ import * as RpcGroup from "../../rpc/RpcGroup.js";
16
+ import * as Schema from "../../Schema.js";
17
+ import * as PublicMcpSchema from "../McpSchema.js";
18
+ import * as McpProtocol from "./mcpProtocol.js";
19
+ import * as Legacy from "./mcpSchema/v2024_11_05.js";
20
+ import * as Stateless from "./mcpSchema/v2026_07_28.js";
21
+ /**
22
+ * @internal
23
+ */
24
+ export const EXTENSION_ID = "io.modelcontextprotocol/skills";
25
+ const DIRECTORY_MIME_TYPE = "inode/directory";
26
+ // The extension's per-skill limits, which every conforming host accepts.
27
+ const MAX_FILES_PER_SKILL = 512;
28
+ const MAX_BYTES_PER_SKILL = 16 * 1024 * 1024;
29
+ /**
30
+ * Adds the extension declaration while any skill is registered. Declaring it
31
+ * commits the server to `skills/list`, `skills/get` and, through
32
+ * `directoryRead`, `resources/directory/read`.
33
+ *
34
+ * @internal
35
+ */
36
+ export const declareExtension = (extensions, servesSkills) => servesSkills ? {
37
+ ...extensions,
38
+ [EXTENSION_ID]: {
39
+ directoryRead: true
40
+ }
41
+ } : extensions;
42
+ // =============================================================================
43
+ // Wire schemas
44
+ // =============================================================================
45
+ const Skill = /*#__PURE__*/Schema.Struct({
46
+ uri: Schema.String,
47
+ frontmatter: Legacy.UnknownObject,
48
+ resources: /*#__PURE__*/Schema.Union([/*#__PURE__*/Schema.Array(/*#__PURE__*/Schema.Struct(PublicMcpSchema.SkillResource.fields)), /*#__PURE__*/Schema.Literal("dynamic")])
49
+ });
50
+ // Listed entries are checked one at a time, so that a client can leave out an
51
+ // invalid entry instead of rejecting the whole page.
52
+ const ListedSkills = /*#__PURE__*/Schema.Array(Schema.Unknown);
53
+ /**
54
+ * @internal
55
+ */
56
+ export class LegacyListSkills extends /*#__PURE__*/Rpc.make("skills/list", {
57
+ success: /*#__PURE__*/Schema.Struct({
58
+ ...Legacy.PaginatedResult.fields,
59
+ skills: ListedSkills
60
+ }),
61
+ error: Legacy.McpError,
62
+ payload: /*#__PURE__*/Schema.UndefinedOr(Legacy.PaginatedRequest)
63
+ }) {}
64
+ /**
65
+ * @internal
66
+ */
67
+ export class LegacyGetSkill extends /*#__PURE__*/Rpc.make("skills/get", {
68
+ success: /*#__PURE__*/Schema.Struct({
69
+ ...Legacy.ResultMeta.fields,
70
+ skill: Skill
71
+ }),
72
+ error: Legacy.McpError,
73
+ payload: {
74
+ ...Legacy.RequestMeta.fields,
75
+ uri: Schema.String
76
+ }
77
+ }) {}
78
+ /**
79
+ * @internal
80
+ */
81
+ export class LegacyReadResourceDirectory extends /*#__PURE__*/Rpc.make("resources/directory/read", {
82
+ success: /*#__PURE__*/Schema.Struct({
83
+ ...Legacy.PaginatedResult.fields,
84
+ resources: /*#__PURE__*/Schema.Array(Legacy.Resource)
85
+ }),
86
+ error: Legacy.McpError,
87
+ payload: {
88
+ ...Legacy.PaginatedRequest.fields,
89
+ uri: Schema.String
90
+ }
91
+ }) {}
92
+ /**
93
+ * The extension's methods on revisions before 2026-07-28, which have no
94
+ * result caching attributes.
95
+ *
96
+ * @internal
97
+ */
98
+ export class LegacyRpcs extends /*#__PURE__*/RpcGroup.make(LegacyListSkills, LegacyGetSkill, LegacyReadResourceDirectory) {}
99
+ /**
100
+ * @internal
101
+ */
102
+ export const ListSkillsResult = /*#__PURE__*/Schema.StructWithRest(/*#__PURE__*/Schema.Struct({
103
+ ...Stateless.PaginatedResult,
104
+ ...Stateless.CacheableResult,
105
+ skills: ListedSkills
106
+ }), [Stateless.UnknownObject]);
107
+ /**
108
+ * @internal
109
+ */
110
+ export class ListSkills extends /*#__PURE__*/Rpc.make("skills/list", {
111
+ success: ListSkillsResult,
112
+ error: Stateless.McpError,
113
+ payload: Stateless.PaginatedRequestParams
114
+ }) {}
115
+ /**
116
+ * @internal
117
+ */
118
+ export const GetSkillResult = /*#__PURE__*/Schema.StructWithRest(/*#__PURE__*/Schema.Struct({
119
+ ...Stateless.CacheableResult,
120
+ skill: Skill
121
+ }), [Stateless.UnknownObject]);
122
+ /**
123
+ * @internal
124
+ */
125
+ export class GetSkill extends /*#__PURE__*/Rpc.make("skills/get", {
126
+ success: GetSkillResult,
127
+ error: Stateless.McpError,
128
+ payload: {
129
+ ...Stateless.RequestParams.fields,
130
+ uri: Schema.String
131
+ }
132
+ }) {}
133
+ /**
134
+ * @internal
135
+ */
136
+ export const ReadResourceDirectoryResult = /*#__PURE__*/Schema.StructWithRest(/*#__PURE__*/Schema.Struct({
137
+ ...Stateless.PaginatedResult,
138
+ ...Stateless.CacheableResult,
139
+ resources: /*#__PURE__*/Schema.Array(Stateless.Resource)
140
+ }), [Stateless.UnknownObject]);
141
+ /**
142
+ * @internal
143
+ */
144
+ export class ReadResourceDirectory extends /*#__PURE__*/Rpc.make("resources/directory/read", {
145
+ success: ReadResourceDirectoryResult,
146
+ error: Stateless.McpError,
147
+ payload: {
148
+ ...Stateless.PaginatedRequestParams,
149
+ uri: Schema.String
150
+ }
151
+ }) {}
152
+ /**
153
+ * The extension's methods on revision 2026-07-28.
154
+ *
155
+ * @internal
156
+ */
157
+ export class StatelessRpcs extends /*#__PURE__*/RpcGroup.make(ListSkills, GetSkill, ReadResourceDirectory) {}
158
+ // =============================================================================
159
+ // Handlers
160
+ // =============================================================================
161
+ const methodNotFound = method => new McpProtocol.ProtocolError({
162
+ code: PublicMcpSchema.METHOD_NOT_FOUND_ERROR_CODE,
163
+ message: `Method not found: ${method}`
164
+ });
165
+ // Every skill fits on one page, so the server never issues a cursor.
166
+ const unknownCursor = /*#__PURE__*/new McpProtocol.ProtocolError({
167
+ code: PublicMcpSchema.INVALID_PARAMS_ERROR_CODE,
168
+ message: "Unknown cursor"
169
+ });
170
+ /**
171
+ * Fails with `Method not found` while no skill is registered, as a server
172
+ * that does not declare the extension.
173
+ *
174
+ * @internal
175
+ */
176
+ export const requireSkills = (core, method) => Effect.flatMap(core.registrationPresence, presence => presence.skills ? Effect.void : Effect.fail(methodNotFound(method)));
177
+ /**
178
+ * @internal
179
+ */
180
+ export const rejectCursor = cursor => cursor === undefined ? Effect.void : Effect.fail(unknownCursor);
181
+ /**
182
+ * Handlers for {@link LegacyRpcs}, for the sessionful adapters.
183
+ *
184
+ * @internal
185
+ */
186
+ export const legacyHandlers = core => ({
187
+ "skills/list": Effect.fnUntraced(function* (request) {
188
+ yield* requireSkills(core, "skills/list");
189
+ yield* rejectCursor(request?.cursor);
190
+ const skills = yield* McpProtocol.listForClient(core.skills.list);
191
+ return {
192
+ skills
193
+ };
194
+ }),
195
+ "skills/get": Effect.fnUntraced(function* (request) {
196
+ yield* requireSkills(core, "skills/get");
197
+ const client = yield* PublicMcpSchema.McpServerClient;
198
+ const skill = yield* core.skills.get(request.uri, McpProtocol.invocationFromClient(client)).pipe(Effect.mapError(McpProtocol.ProtocolError.fromFeature));
199
+ return {
200
+ skill
201
+ };
202
+ }),
203
+ "resources/directory/read": Effect.fnUntraced(function* (request) {
204
+ yield* requireSkills(core, "resources/directory/read");
205
+ yield* rejectCursor(request.cursor);
206
+ const client = yield* PublicMcpSchema.McpServerClient;
207
+ const resources = yield* core.skills.readDirectory(request.uri, McpProtocol.invocationFromClient(client)).pipe(Effect.mapError(McpProtocol.ProtocolError.fromFeature));
208
+ return {
209
+ resources
210
+ };
211
+ })
212
+ });
213
+ const TEXTUAL_APPLICATION_TYPES = /*#__PURE__*/new Set(["application/json", "application/yaml", "image/svg+xml"]);
214
+ /**
215
+ * @internal
216
+ */
217
+ export const mimeTypeFor = path => {
218
+ // The standard table maps `.ts` to MPEG transport streams, but a skill's
219
+ // `.ts` files are TypeScript scripts.
220
+ if (/\.ts$/i.test(path)) return "text/x-typescript";
221
+ return Option.getOrElse(Mime.getType(path), () => "application/octet-stream");
222
+ };
223
+ // `ignoreBOM` keeps a leading BOM in the decoded text, so re-encoding the text
224
+ // reproduces exactly the bytes the manifest digest covers.
225
+ const utf8 = /*#__PURE__*/new TextDecoder("utf-8", {
226
+ fatal: true,
227
+ ignoreBOM: true
228
+ });
229
+ const decodeText = (mimeType, content) => {
230
+ if (!mimeType.startsWith("text/") && !TEXTUAL_APPLICATION_TYPES.has(mimeType)) {
231
+ return undefined;
232
+ }
233
+ try {
234
+ return utf8.decode(content);
235
+ } catch {
236
+ return undefined;
237
+ }
238
+ };
239
+ const isSafeRelativePath = path => path !== "" && !path.includes("\\") && path.split("/").every(segment => segment !== "" && segment !== "." && segment !== "..");
240
+ // The Agent Skills `name` rule: lowercase letters, digits and single hyphens,
241
+ // neither leading nor trailing, at most 64 characters.
242
+ const isSkillName = name => name.length <= 64 && /^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(name);
243
+ const FRONTMATTER = /^\uFEFF?---\r?\n([\s\S]*?)\r?\n---[ \t]*(?:\r?\n|$)/;
244
+ /**
245
+ * The YAML frontmatter of a `SKILL.md`, or `undefined` when the file does not
246
+ * begin with a frontmatter block holding a YAML mapping.
247
+ *
248
+ * @internal
249
+ */
250
+ export const parseFrontmatter = markdown => {
251
+ const block = FRONTMATTER.exec(markdown)?.[1];
252
+ if (block === undefined) return undefined;
253
+ try {
254
+ const parsed = Yaml.parse(block);
255
+ // The frontmatter is listed as JSON, so keep only what JSON carries:
256
+ // `.inf` and `.nan` become `null`.
257
+ return Predicate.isObject(parsed) ? JSON.parse(JSON.stringify(parsed)) : undefined;
258
+ } catch {
259
+ return undefined;
260
+ }
261
+ };
262
+ // The directory holding a skill's `SKILL.md`, given the `SKILL.md` URI.
263
+ const skillRoot = uri => uri.slice(0, -"/SKILL.md".length);
264
+ /**
265
+ * Whether `uri` addresses a file inside the skill whose `SKILL.md` is at
266
+ * `skillUri`.
267
+ *
268
+ * @internal
269
+ */
270
+ export const isSkillFile = (skillUri, uri) => {
271
+ const root = skillRoot(skillUri);
272
+ return uri.startsWith(`${root}/`) && isSafeRelativePath(uri.slice(root.length + 1));
273
+ };
274
+ /**
275
+ * Why a skill entry received from a server breaks the extension's rules, or
276
+ * `undefined` when it is valid. Hosts must not load an invalid entry. The
277
+ * digest and size formats are checked by {@link PublicMcpSchema.SkillResource}.
278
+ *
279
+ * @internal
280
+ */
281
+ export const entryProblem = entry => {
282
+ const schemeEnd = entry.uri.indexOf("://");
283
+ if (schemeEnd <= 0 || !entry.uri.endsWith("/SKILL.md")) return "the URI does not address a SKILL.md";
284
+ const root = skillRoot(entry.uri);
285
+ const skillPath = root.slice(schemeEnd + 3);
286
+ if (!isSafeRelativePath(skillPath)) return "the skill path has an empty, '.' or '..' segment";
287
+ const name = skillPath.split("/").at(-1);
288
+ if (entry.frontmatter.name !== name || !isSkillName(name)) {
289
+ return `the frontmatter name must equal "${name}" and follow the Agent Skills naming rules`;
290
+ }
291
+ const description = entry.frontmatter.description;
292
+ if (typeof description !== "string" || description === "" || description.length > 1024) {
293
+ return "the frontmatter description must be a string of 1 to 1024 characters";
294
+ }
295
+ if (entry.resources === "dynamic") return undefined;
296
+ const uris = new Set();
297
+ for (const resource of entry.resources) {
298
+ if (!isSkillFile(entry.uri, resource.uri)) return `${resource.uri} is not a file of the skill`;
299
+ if (uris.has(resource.uri)) return `${resource.uri} is listed twice`;
300
+ uris.add(resource.uri);
301
+ }
302
+ return uris.has(entry.uri) ? undefined : "the manifest does not list SKILL.md";
303
+ };
304
+ /**
305
+ * Whether `child` is a direct child of the directory at `directory`.
306
+ *
307
+ * @internal
308
+ */
309
+ export const isDirectChild = (directory, child) => {
310
+ if (!child.startsWith(`${directory}/`)) return false;
311
+ const name = child.slice(directory.length + 1);
312
+ return name !== "" && name !== "." && name !== ".." && !name.includes("/");
313
+ };
314
+ const decodeFrontmatter = /*#__PURE__*/Schema.decodeUnknownEffect(PublicMcpSchema.SkillFrontmatter);
315
+ /**
316
+ * Validates a static skill against the extension's server requirements and
317
+ * precomputes what the protocol serves: the manifest, with digests over the
318
+ * exact bytes served, each file's resource metadata, and the directory tree
319
+ * from the namespace root down.
320
+ *
321
+ * @internal
322
+ */
323
+ export const makeStaticSkill = options => Effect.gen(function* () {
324
+ const {
325
+ uri
326
+ } = options;
327
+ const fail = reason => Effect.fail(new Cause.IllegalArgumentError(`Skill ${uri}: ${reason}`));
328
+ const schemeEnd = uri.indexOf("://");
329
+ if (schemeEnd <= 0 || !uri.endsWith("/SKILL.md")) {
330
+ return yield* fail("the URI must have the form <scheme>://<skill-path>/SKILL.md");
331
+ }
332
+ const scheme = uri.slice(0, schemeEnd + 3);
333
+ const skillPath = uri.slice(scheme.length, -"/SKILL.md".length);
334
+ if (!isSafeRelativePath(skillPath)) {
335
+ return yield* fail("the skill path must have no empty, '.' or '..' segment");
336
+ }
337
+ const name = skillPath.split("/").at(-1);
338
+ if (options.files.length > MAX_FILES_PER_SKILL) {
339
+ return yield* fail(`it has ${options.files.length} files; the limit is ${MAX_FILES_PER_SKILL}`);
340
+ }
341
+ const totalBytes = options.files.reduce((sum, file) => sum + file.content.byteLength, 0);
342
+ if (totalBytes > MAX_BYTES_PER_SKILL) {
343
+ return yield* fail(`it has ${totalBytes} bytes; the limit is ${MAX_BYTES_PER_SKILL}`);
344
+ }
345
+ const paths = new Set();
346
+ for (const file of options.files) {
347
+ if (!isSafeRelativePath(file.path)) return yield* fail(`the file path "${file.path}" escapes the skill`);
348
+ if (paths.has(file.path)) return yield* fail(`the file "${file.path}" is given twice`);
349
+ paths.add(file.path);
350
+ }
351
+ const skillMd = options.files.find(file => file.path === "SKILL.md");
352
+ if (skillMd === undefined) return yield* fail("SKILL.md is missing");
353
+ // The listed frontmatter is parsed from the served SKILL.md, so the two
354
+ // cannot differ.
355
+ const frontmatter = parseFrontmatter(decodeText("text/markdown", skillMd.content) ?? "");
356
+ if (frontmatter === undefined) return yield* fail("SKILL.md must begin with YAML frontmatter holding a mapping");
357
+ if (frontmatter.name !== name) {
358
+ return yield* fail(`the frontmatter name ${JSON.stringify(frontmatter.name)} must equal "${name}"`);
359
+ }
360
+ // A skill served over MCP must conform to the Agent Skills specification.
361
+ const {
362
+ description
363
+ } = yield* decodeFrontmatter(frontmatter).pipe(Effect.catch(error => fail(`the frontmatter is not valid Agent Skills frontmatter: ${error.message}`)));
364
+ const digest = yield* Digest.Digest;
365
+ const sorted = [...options.files].sort((a, b) => a.path < b.path ? -1 : a.path > b.path ? 1 : 0);
366
+ const resources = [];
367
+ const files = [];
368
+ const children = new Map();
369
+ for (const file of sorted) {
370
+ const fileUri = `${scheme}${skillPath}/${file.path}`;
371
+ const fileDigest = `sha256:${yield* digest.digestHex(Digest.sha256, file.content)}`;
372
+ const mimeType = file.mimeType ?? mimeTypeFor(file.path);
373
+ const size = file.content.byteLength;
374
+ const resource = file.path === "SKILL.md" ? {
375
+ uri: fileUri,
376
+ name,
377
+ description,
378
+ mimeType,
379
+ size
380
+ } : {
381
+ uri: fileUri,
382
+ name: file.path.split("/").at(-1),
383
+ mimeType,
384
+ size
385
+ };
386
+ files.push({
387
+ resource,
388
+ content: file.content,
389
+ text: decodeText(mimeType, file.content)
390
+ });
391
+ resources.push({
392
+ uri: fileUri,
393
+ digest: fileDigest,
394
+ size
395
+ });
396
+ // Every directory from the namespace root down is readable, including
397
+ // the prefix directories above the skill root.
398
+ const segments = `${skillPath}/${file.path}`.split("/");
399
+ for (let depth = 1; depth < segments.length; depth++) {
400
+ const directory = `${scheme}${segments.slice(0, depth).join("/")}`;
401
+ const child = depth === segments.length - 1 ? resource : {
402
+ uri: `${scheme}${segments.slice(0, depth + 1).join("/")}`,
403
+ name: segments[depth],
404
+ mimeType: DIRECTORY_MIME_TYPE
405
+ };
406
+ let siblings = children.get(directory);
407
+ if (siblings === undefined) {
408
+ siblings = new Map();
409
+ children.set(directory, siblings);
410
+ }
411
+ siblings.set(child.uri, child);
412
+ }
413
+ }
414
+ const directories = new Map();
415
+ for (const [directory, siblings] of children) {
416
+ directories.set(directory, Array.from(siblings.values()));
417
+ }
418
+ return {
419
+ entry: {
420
+ uri,
421
+ frontmatter,
422
+ resources
423
+ },
424
+ files,
425
+ directories
426
+ };
427
+ });
428
+ //# sourceMappingURL=mcpSkills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpSkills.js","names":[],"sources":["../../../src/ai/internal/mcpSkills.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"ClusterWorkflowEngine.d.ts","sourceRoot":"","sources":["../../src/cluster/ClusterWorkflowEngine.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,IAAI,MAAM,YAAY,CAAA;AAGlC,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;AACpC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAMtC,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;AAEpC,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAA;AACnD,OAAO,KAAK,YAAY,MAAM,6BAA6B,CAAA;AAC3D,OAAO,KAAK,eAAe,MAAM,gCAAgC,CAAA;AACjE,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAA;AACnD,OAAO,KAAK,cAAc,MAAM,+BAA+B,CAAA;AAW/D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAGpD,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAGzC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;2DAi1Bf,CAAA;AA+KF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAC7B,cAAc,CAAC,cAAc,EAC7B,KAAK,EACL,QAAQ,CAAC,QAAQ,GAAG,cAAc,CAGnC,CAAA"}
1
+ {"version":3,"file":"ClusterWorkflowEngine.d.ts","sourceRoot":"","sources":["../../src/cluster/ClusterWorkflowEngine.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,IAAI,MAAM,YAAY,CAAA;AAGlC,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;AACpC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAMtC,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;AAEpC,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAA;AACnD,OAAO,KAAK,YAAY,MAAM,6BAA6B,CAAA;AAC3D,OAAO,KAAK,eAAe,MAAM,gCAAgC,CAAA;AACjE,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAA;AACnD,OAAO,KAAK,cAAc,MAAM,+BAA+B,CAAA;AAW/D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAGpD,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAGzC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;2DAs1Bf,CAAA;AAwLF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAC7B,cAAc,CAAC,cAAc,EAC7B,KAAK,EACL,QAAQ,CAAC,QAAQ,GAAG,cAAc,CAGnC,CAAA"}
@@ -396,8 +396,9 @@ export const make = /*#__PURE__*/Effect.gen(function* () {
396
396
  if (instance.abandoned) {
397
397
  instance.suspended = false;
398
398
  }
399
+ // Abandoned runs never wake the parent; another owner replays them.
400
+ const resumeParent = parent && !parent.detached && !instance.abandoned ? ensureSuccess(sendResumeParent(parent, executionId)) : Effect.void;
399
401
  if (!instance.suspended && !instance.abandoned && !(suspendOnFailure && exit._tag === "Failure")) {
400
- const resumeParent = parent && !parent.detached ? ensureSuccess(sendResumeParent(parent, executionId)) : Effect.void;
401
402
  if (exit._tag === "Success" || !Cause.hasInterruptsOnly(exit.cause)) {
402
403
  return resumeParent;
403
404
  }
@@ -419,10 +420,12 @@ export const make = /*#__PURE__*/Effect.gen(function* () {
419
420
  }
420
421
  instance.suspended = false;
421
422
  instance.interrupted = true;
422
- return Effect.andThen(Effect.ignore(clearClock({
423
+ // The interrupt completes the run, so wake the parent
424
+ // to observe it.
425
+ return Effect.ignore(clearClock({
423
426
  workflow,
424
427
  executionId
425
- })), Effect.withFiber(fiber => Effect.interruptible(Fiber.interrupt(fiber))));
428
+ })).pipe(Effect.andThen(resumeParent), Effect.andThen(Effect.withFiber(fiber => Effect.interruptible(Fiber.interrupt(fiber)))));
426
429
  }), Effect.orDie);
427
430
  }), Workflow.intoResult, Effect.onExit(exit => Exit.isSuccess(exit) && exit.value._tag === "Suspended" ? Effect.void : closeRuns(pending, instance.abandoned)), effect => deferredState.trackRun(instance, effect),
428
431
  // Request middleware and local callers may carry another entity's context.
@@ -565,7 +568,7 @@ export const make = /*#__PURE__*/Effect.gen(function* () {
565
568
  // A pending interrupt replays only to rebuild compensations, so it must
566
569
  // not run new activities. Finalizers run once `interrupted` is set.
567
570
  if (!instance.interrupted && (yield* interruptPending(instance))) {
568
- const reply = yield* Effect.orDie(requestReply({
571
+ const reply = yield* retryPersistence(requestReply({
569
572
  workflow: instance.workflow,
570
573
  entityType: `Workflow/${instance.workflow._tag}`,
571
574
  executionId: instance.executionId,
@@ -585,7 +588,7 @@ export const make = /*#__PURE__*/Effect.gen(function* () {
585
588
  context: services
586
589
  });
587
590
  }
588
- const result = yield* Effect.orDie(client.activity({
591
+ const result = yield* retryPersistence(client.activity({
589
592
  name: activity.name,
590
593
  attempt,
591
594
  withTransaction: Context.get(activity.annotations, ClusterSchema.WithTransaction)
@@ -696,6 +699,13 @@ export const make = /*#__PURE__*/Effect.gen(function* () {
696
699
  return engine;
697
700
  });
698
701
  const retryPolicy = /*#__PURE__*/Schedule.min([/*#__PURE__*/Schedule.exponential(200, 1.5), /*#__PURE__*/Schedule.spaced("1 minute")]);
702
+ // A transient storage failure must not become the workflow result. Requests
703
+ // are saved under a primary key, so a retry after a lost acknowledgement is
704
+ // deduplicated instead of running the activity again.
705
+ const retryPersistence = effect => effect.pipe(Effect.retry({
706
+ schedule: retryPolicy,
707
+ while: e => e._tag === "PersistenceError"
708
+ }), Effect.orDie);
699
709
  // A cluster abandonment means this owner can no longer complete the effect, so
700
710
  // retrying it would only wait on a retired run. Re-raise it as an annotated
701
711
  // interrupt, so the activation can unwind and its shard can be released.