effect 4.0.5 → 4.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (985) hide show
  1. package/ai-docs/package.json +1 -1
  2. package/ai-docs/src/06_schedule/10_schedules.ts +5 -4
  3. package/ai-docs/tsconfig.json +3 -1
  4. package/dist/Array.d.ts +117 -52
  5. package/dist/Array.d.ts.map +1 -1
  6. package/dist/Array.js +41 -20
  7. package/dist/Array.js.map +1 -1
  8. package/dist/Bytes.d.ts +79 -0
  9. package/dist/Bytes.d.ts.map +1 -0
  10. package/dist/Bytes.js +109 -0
  11. package/dist/Bytes.js.map +1 -0
  12. package/dist/Channel.d.ts +181 -13
  13. package/dist/Channel.d.ts.map +1 -1
  14. package/dist/Channel.js +125 -30
  15. package/dist/Channel.js.map +1 -1
  16. package/dist/ChannelSchema.d.ts.map +1 -1
  17. package/dist/ChannelSchema.js.map +1 -1
  18. package/dist/Chunk.d.ts +39 -21
  19. package/dist/Chunk.d.ts.map +1 -1
  20. package/dist/Chunk.js +26 -17
  21. package/dist/Chunk.js.map +1 -1
  22. package/dist/Config.d.ts.map +1 -1
  23. package/dist/Config.js +8 -3
  24. package/dist/Config.js.map +1 -1
  25. package/dist/ConfigProvider.d.ts.map +1 -1
  26. package/dist/ConfigProvider.js +2 -1
  27. package/dist/ConfigProvider.js.map +1 -1
  28. package/dist/Cron.d.ts +2 -2
  29. package/dist/Cron.d.ts.map +1 -1
  30. package/dist/Cron.js +6 -3
  31. package/dist/Cron.js.map +1 -1
  32. package/dist/Duration.d.ts.map +1 -1
  33. package/dist/Duration.js +56 -16
  34. package/dist/Duration.js.map +1 -1
  35. package/dist/Effect.d.ts +487 -163
  36. package/dist/Effect.d.ts.map +1 -1
  37. package/dist/Effect.js +203 -37
  38. package/dist/Effect.js.map +1 -1
  39. package/dist/Equivalence.d.ts +2 -1
  40. package/dist/Equivalence.d.ts.map +1 -1
  41. package/dist/Equivalence.js +12 -8
  42. package/dist/Equivalence.js.map +1 -1
  43. package/dist/Exit.d.ts +24 -9
  44. package/dist/Exit.d.ts.map +1 -1
  45. package/dist/Exit.js +8 -3
  46. package/dist/Exit.js.map +1 -1
  47. package/dist/FiberHandle.d.ts +2 -0
  48. package/dist/FiberHandle.d.ts.map +1 -1
  49. package/dist/FiberHandle.js +9 -4
  50. package/dist/FiberHandle.js.map +1 -1
  51. package/dist/FiberMap.d.ts +2 -0
  52. package/dist/FiberMap.d.ts.map +1 -1
  53. package/dist/FiberMap.js +5 -2
  54. package/dist/FiberMap.js.map +1 -1
  55. package/dist/FileSystem.d.ts +5 -0
  56. package/dist/FileSystem.d.ts.map +1 -1
  57. package/dist/FileSystem.js +3 -0
  58. package/dist/FileSystem.js.map +1 -1
  59. package/dist/Graph.d.ts.map +1 -1
  60. package/dist/Graph.js.map +1 -1
  61. package/dist/HashSet.d.ts.map +1 -1
  62. package/dist/HashSet.js.map +1 -1
  63. package/dist/Iterable.d.ts.map +1 -1
  64. package/dist/Iterable.js +18 -17
  65. package/dist/Iterable.js.map +1 -1
  66. package/dist/JsonSchema.d.ts +9 -3
  67. package/dist/JsonSchema.d.ts.map +1 -1
  68. package/dist/JsonSchema.js +19 -3
  69. package/dist/JsonSchema.js.map +1 -1
  70. package/dist/Layer.d.ts.map +1 -1
  71. package/dist/Layer.js +2 -2
  72. package/dist/Layer.js.map +1 -1
  73. package/dist/ManagedRuntime.d.ts +19 -1
  74. package/dist/ManagedRuntime.d.ts.map +1 -1
  75. package/dist/ManagedRuntime.js +62 -6
  76. package/dist/ManagedRuntime.js.map +1 -1
  77. package/dist/Metric.d.ts +132 -0
  78. package/dist/Metric.d.ts.map +1 -1
  79. package/dist/Metric.js +197 -25
  80. package/dist/Metric.js.map +1 -1
  81. package/dist/MutableHashMap.d.ts.map +1 -1
  82. package/dist/MutableHashMap.js.map +1 -1
  83. package/dist/Number.js +2 -2
  84. package/dist/Number.js.map +1 -1
  85. package/dist/Optic.d.ts.map +1 -1
  86. package/dist/Optic.js.map +1 -1
  87. package/dist/Path.d.ts.map +1 -1
  88. package/dist/Path.js +8 -1
  89. package/dist/Path.js.map +1 -1
  90. package/dist/PubSub.d.ts.map +1 -1
  91. package/dist/PubSub.js +12 -7
  92. package/dist/PubSub.js.map +1 -1
  93. package/dist/Queue.d.ts +4 -1
  94. package/dist/Queue.d.ts.map +1 -1
  95. package/dist/Queue.js +4 -1
  96. package/dist/Queue.js.map +1 -1
  97. package/dist/Random.d.ts.map +1 -1
  98. package/dist/Random.js +1 -1
  99. package/dist/Random.js.map +1 -1
  100. package/dist/RcMap.d.ts +12 -7
  101. package/dist/RcMap.d.ts.map +1 -1
  102. package/dist/RcMap.js +9 -6
  103. package/dist/RcMap.js.map +1 -1
  104. package/dist/Record.d.ts +51 -0
  105. package/dist/Record.d.ts.map +1 -1
  106. package/dist/Record.js +17 -0
  107. package/dist/Record.js.map +1 -1
  108. package/dist/Ref.d.ts.map +1 -1
  109. package/dist/Ref.js.map +1 -1
  110. package/dist/References.d.ts +5 -4
  111. package/dist/References.d.ts.map +1 -1
  112. package/dist/References.js +5 -4
  113. package/dist/References.js.map +1 -1
  114. package/dist/RequestResolver.d.ts +31 -1
  115. package/dist/RequestResolver.d.ts.map +1 -1
  116. package/dist/RequestResolver.js +39 -4
  117. package/dist/RequestResolver.js.map +1 -1
  118. package/dist/Resource.js +1 -1
  119. package/dist/Resource.js.map +1 -1
  120. package/dist/Runtime.d.ts +3 -3
  121. package/dist/Runtime.d.ts.map +1 -1
  122. package/dist/Runtime.js +18 -15
  123. package/dist/Runtime.js.map +1 -1
  124. package/dist/Schedule.d.ts.map +1 -1
  125. package/dist/Schedule.js.map +1 -1
  126. package/dist/Schema.d.ts +384 -332
  127. package/dist/Schema.d.ts.map +1 -1
  128. package/dist/Schema.js +333 -19
  129. package/dist/Schema.js.map +1 -1
  130. package/dist/SchemaAST.d.ts +5 -5
  131. package/dist/SchemaAST.d.ts.map +1 -1
  132. package/dist/SchemaAST.js +24 -8
  133. package/dist/SchemaAST.js.map +1 -1
  134. package/dist/SchemaGetter.d.ts +8 -3
  135. package/dist/SchemaGetter.d.ts.map +1 -1
  136. package/dist/SchemaGetter.js +15 -5
  137. package/dist/SchemaGetter.js.map +1 -1
  138. package/dist/SchemaIssue.d.ts +4 -4
  139. package/dist/SchemaIssue.d.ts.map +1 -1
  140. package/dist/SchemaIssue.js +29 -51
  141. package/dist/SchemaIssue.js.map +1 -1
  142. package/dist/SchemaRepresentation.d.ts +56 -1
  143. package/dist/SchemaRepresentation.d.ts.map +1 -1
  144. package/dist/SchemaRepresentation.js +18 -0
  145. package/dist/SchemaRepresentation.js.map +1 -1
  146. package/dist/SchemaTransformation.d.ts +1 -1
  147. package/dist/SchemaTransformation.js +1 -1
  148. package/dist/Scope.d.ts +12 -2
  149. package/dist/Scope.d.ts.map +1 -1
  150. package/dist/Scope.js +5 -0
  151. package/dist/Scope.js.map +1 -1
  152. package/dist/ScopedCache.d.ts +10 -7
  153. package/dist/ScopedCache.d.ts.map +1 -1
  154. package/dist/ScopedCache.js +9 -5
  155. package/dist/ScopedCache.js.map +1 -1
  156. package/dist/SemVer.d.ts +1196 -0
  157. package/dist/SemVer.d.ts.map +1 -0
  158. package/dist/SemVer.js +756 -0
  159. package/dist/SemVer.js.map +1 -0
  160. package/dist/SemVerRange.d.ts +559 -0
  161. package/dist/SemVerRange.d.ts.map +1 -0
  162. package/dist/SemVerRange.js +551 -0
  163. package/dist/SemVerRange.js.map +1 -0
  164. package/dist/Sink.d.ts.map +1 -1
  165. package/dist/Sink.js +6 -2
  166. package/dist/Sink.js.map +1 -1
  167. package/dist/Stream.d.ts +235 -8
  168. package/dist/Stream.d.ts.map +1 -1
  169. package/dist/Stream.js +145 -60
  170. package/dist/Stream.js.map +1 -1
  171. package/dist/String.d.ts +4 -2
  172. package/dist/String.d.ts.map +1 -1
  173. package/dist/String.js +8 -6
  174. package/dist/String.js.map +1 -1
  175. package/dist/TextDiff.d.ts +399 -0
  176. package/dist/TextDiff.d.ts.map +1 -0
  177. package/dist/TextDiff.js +634 -0
  178. package/dist/TextDiff.js.map +1 -0
  179. package/dist/TxHashMap.d.ts.map +1 -1
  180. package/dist/TxHashMap.js.map +1 -1
  181. package/dist/TxHashSet.d.ts.map +1 -1
  182. package/dist/TxHashSet.js.map +1 -1
  183. package/dist/ai/AiError.d.ts +68 -4
  184. package/dist/ai/AiError.d.ts.map +1 -1
  185. package/dist/ai/AiError.js +50 -2
  186. package/dist/ai/AiError.js.map +1 -1
  187. package/dist/ai/Chat.d.ts +1 -2
  188. package/dist/ai/Chat.d.ts.map +1 -1
  189. package/dist/ai/Chat.js +6 -3
  190. package/dist/ai/Chat.js.map +1 -1
  191. package/dist/ai/Decision.d.ts +46 -1
  192. package/dist/ai/Decision.d.ts.map +1 -1
  193. package/dist/ai/Decision.js.map +1 -1
  194. package/dist/ai/DecisionModel.d.ts +129 -11
  195. package/dist/ai/DecisionModel.d.ts.map +1 -1
  196. package/dist/ai/DecisionModel.js +182 -94
  197. package/dist/ai/DecisionModel.js.map +1 -1
  198. package/dist/ai/EmbeddingModel.d.ts +10 -0
  199. package/dist/ai/EmbeddingModel.d.ts.map +1 -1
  200. package/dist/ai/EmbeddingModel.js +21 -7
  201. package/dist/ai/EmbeddingModel.js.map +1 -1
  202. package/dist/ai/McpClient.d.ts +289 -0
  203. package/dist/ai/McpClient.d.ts.map +1 -0
  204. package/dist/ai/McpClient.js +819 -0
  205. package/dist/ai/McpClient.js.map +1 -0
  206. package/dist/ai/McpClientError.d.ts +254 -0
  207. package/dist/ai/McpClientError.d.ts.map +1 -0
  208. package/dist/ai/McpClientError.js +260 -0
  209. package/dist/ai/McpClientError.js.map +1 -0
  210. package/dist/ai/McpProtocol.d.ts +2 -2
  211. package/dist/ai/McpProtocol.d.ts.map +1 -1
  212. package/dist/ai/McpSchema.d.ts +368 -235
  213. package/dist/ai/McpSchema.d.ts.map +1 -1
  214. package/dist/ai/McpSchema.js +94 -24
  215. package/dist/ai/McpSchema.js.map +1 -1
  216. package/dist/ai/McpServer.d.ts.map +1 -1
  217. package/dist/ai/McpServer.js +25 -22
  218. package/dist/ai/McpServer.js.map +1 -1
  219. package/dist/ai/Prompt.d.ts +22 -20
  220. package/dist/ai/Prompt.d.ts.map +1 -1
  221. package/dist/ai/Prompt.js +23 -1
  222. package/dist/ai/Prompt.js.map +1 -1
  223. package/dist/ai/Response.d.ts +147 -3
  224. package/dist/ai/Response.d.ts.map +1 -1
  225. package/dist/ai/Response.js +35 -37
  226. package/dist/ai/Response.js.map +1 -1
  227. package/dist/ai/Tool.d.ts +12 -4
  228. package/dist/ai/Tool.d.ts.map +1 -1
  229. package/dist/ai/Tool.js.map +1 -1
  230. package/dist/ai/Toolkit.d.ts +48 -1
  231. package/dist/ai/Toolkit.d.ts.map +1 -1
  232. package/dist/ai/Toolkit.js +65 -12
  233. package/dist/ai/Toolkit.js.map +1 -1
  234. package/dist/ai/index.d.ts +10 -0
  235. package/dist/ai/index.d.ts.map +1 -1
  236. package/dist/ai/index.js +10 -0
  237. package/dist/ai/index.js.map +1 -1
  238. package/dist/ai/internal/mcpCore.js.map +1 -1
  239. package/dist/ai/internal/mcpProtocol/v2024_11_05.js +1 -1
  240. package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
  241. package/dist/ai/internal/mcpProtocol/v2025_03_26.js +1 -1
  242. package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
  243. package/dist/ai/internal/mcpProtocol/v2025_06_18.js +2 -2
  244. package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
  245. package/dist/ai/internal/mcpProtocol/v2025_11_25.js +2 -2
  246. package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
  247. package/dist/ai/internal/mcpProtocol/v2026_07_28.js +4 -7
  248. package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
  249. package/dist/ai/internal/mcpProtocol.js +16 -2
  250. package/dist/ai/internal/mcpProtocol.js.map +1 -1
  251. package/dist/ai/internal/mcpRuntime.js +3 -4
  252. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  253. package/dist/ai/internal/mcpSchema/v2024_11_05.js +19 -13
  254. package/dist/ai/internal/mcpSchema/v2024_11_05.js.map +1 -1
  255. package/dist/ai/internal/mcpSchema/v2025_03_26.js +3 -2
  256. package/dist/ai/internal/mcpSchema/v2025_03_26.js.map +1 -1
  257. package/dist/ai/internal/mcpSchema/v2025_06_18.js +7 -7
  258. package/dist/ai/internal/mcpSchema/v2025_06_18.js.map +1 -1
  259. package/dist/ai/internal/mcpSchema/v2025_11_25.js +8 -8
  260. package/dist/ai/internal/mcpSchema/v2025_11_25.js.map +1 -1
  261. package/dist/ai/internal/mcpSchema/v2026_07_28.js +43 -42
  262. package/dist/ai/internal/mcpSchema/v2026_07_28.js.map +1 -1
  263. package/dist/cli/CliError.d.ts +42 -2
  264. package/dist/cli/CliError.d.ts.map +1 -1
  265. package/dist/cli/CliError.js +44 -5
  266. package/dist/cli/CliError.js.map +1 -1
  267. package/dist/cli/Command.d.ts +286 -2
  268. package/dist/cli/Command.d.ts.map +1 -1
  269. package/dist/cli/Command.js +107 -6
  270. package/dist/cli/Command.js.map +1 -1
  271. package/dist/cli/Completions.d.ts +5 -0
  272. package/dist/cli/Completions.d.ts.map +1 -1
  273. package/dist/cli/Completions.js.map +1 -1
  274. package/dist/cli/Flag.d.ts +115 -0
  275. package/dist/cli/Flag.d.ts.map +1 -1
  276. package/dist/cli/Flag.js +56 -0
  277. package/dist/cli/Flag.js.map +1 -1
  278. package/dist/cli/GlobalFlag.d.ts.map +1 -1
  279. package/dist/cli/GlobalFlag.js +3 -3
  280. package/dist/cli/GlobalFlag.js.map +1 -1
  281. package/dist/cli/Param.d.ts +107 -0
  282. package/dist/cli/Param.d.ts.map +1 -1
  283. package/dist/cli/Param.js +56 -0
  284. package/dist/cli/Param.js.map +1 -1
  285. package/dist/cli/TerminalCapabilities.d.ts +84 -0
  286. package/dist/cli/TerminalCapabilities.d.ts.map +1 -0
  287. package/dist/cli/TerminalCapabilities.js +122 -0
  288. package/dist/cli/TerminalCapabilities.js.map +1 -0
  289. package/dist/cli/index.d.ts +5 -0
  290. package/dist/cli/index.d.ts.map +1 -1
  291. package/dist/cli/index.js +5 -0
  292. package/dist/cli/index.js.map +1 -1
  293. package/dist/cli/internal/command.d.ts +2 -1
  294. package/dist/cli/internal/command.d.ts.map +1 -1
  295. package/dist/cli/internal/command.js +5 -2
  296. package/dist/cli/internal/command.js.map +1 -1
  297. package/dist/cli/internal/completions/bash.js +4 -3
  298. package/dist/cli/internal/completions/bash.js.map +1 -1
  299. package/dist/cli/internal/completions/descriptor.js +9 -1
  300. package/dist/cli/internal/completions/descriptor.js.map +1 -1
  301. package/dist/cli/internal/completions/fish.js +10 -8
  302. package/dist/cli/internal/completions/fish.js.map +1 -1
  303. package/dist/cli/internal/completions/powershell.js +18 -9
  304. package/dist/cli/internal/completions/powershell.js.map +1 -1
  305. package/dist/cli/internal/completions/zsh.js +8 -5
  306. package/dist/cli/internal/completions/zsh.js.map +1 -1
  307. package/dist/cli/internal/formatter.d.ts +2 -0
  308. package/dist/cli/internal/formatter.d.ts.map +1 -0
  309. package/dist/cli/internal/formatter.js +15 -0
  310. package/dist/cli/internal/formatter.js.map +1 -0
  311. package/dist/cli/internal/lexer.js +24 -10
  312. package/dist/cli/internal/lexer.js.map +1 -1
  313. package/dist/cli/internal/parser.js +24 -12
  314. package/dist/cli/internal/parser.js.map +1 -1
  315. package/dist/cluster/ClusterCron.d.ts +29 -1
  316. package/dist/cluster/ClusterCron.d.ts.map +1 -1
  317. package/dist/cluster/ClusterCron.js +64 -32
  318. package/dist/cluster/ClusterCron.js.map +1 -1
  319. package/dist/cluster/ClusterMetrics.d.ts +143 -7
  320. package/dist/cluster/ClusterMetrics.d.ts.map +1 -1
  321. package/dist/cluster/ClusterMetrics.js +151 -7
  322. package/dist/cluster/ClusterMetrics.js.map +1 -1
  323. package/dist/cluster/ClusterWorkflowEngine.d.ts +1 -1
  324. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  325. package/dist/cluster/ClusterWorkflowEngine.js +37 -11
  326. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  327. package/dist/cluster/Entity.d.ts +2 -0
  328. package/dist/cluster/Entity.d.ts.map +1 -1
  329. package/dist/cluster/Entity.js.map +1 -1
  330. package/dist/cluster/MessageStorage.d.ts +21 -0
  331. package/dist/cluster/MessageStorage.d.ts.map +1 -1
  332. package/dist/cluster/MessageStorage.js.map +1 -1
  333. package/dist/cluster/Runners.d.ts.map +1 -1
  334. package/dist/cluster/Runners.js +54 -15
  335. package/dist/cluster/Runners.js.map +1 -1
  336. package/dist/cluster/Sharding.d.ts +1 -0
  337. package/dist/cluster/Sharding.d.ts.map +1 -1
  338. package/dist/cluster/Sharding.js +95 -32
  339. package/dist/cluster/Sharding.js.map +1 -1
  340. package/dist/cluster/ShardingConfig.d.ts +20 -0
  341. package/dist/cluster/ShardingConfig.d.ts.map +1 -1
  342. package/dist/cluster/ShardingConfig.js +4 -0
  343. package/dist/cluster/ShardingConfig.js.map +1 -1
  344. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  345. package/dist/cluster/SqlMessageStorage.js +40 -50
  346. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  347. package/dist/cluster/SqlRunnerStorage.d.ts +2 -2
  348. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  349. package/dist/cluster/SqlRunnerStorage.js +10 -4
  350. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  351. package/dist/cluster/internal/entityManager.js +65 -8
  352. package/dist/cluster/internal/entityManager.js.map +1 -1
  353. package/dist/devtools/DevTools.d.ts +3 -2
  354. package/dist/devtools/DevTools.d.ts.map +1 -1
  355. package/dist/devtools/DevTools.js +3 -2
  356. package/dist/devtools/DevTools.js.map +1 -1
  357. package/dist/devtools/DevToolsClient.d.ts +11 -0
  358. package/dist/devtools/DevToolsClient.d.ts.map +1 -1
  359. package/dist/devtools/DevToolsClient.js +31 -4
  360. package/dist/devtools/DevToolsClient.js.map +1 -1
  361. package/dist/encoding/Base64Url.d.ts +29 -0
  362. package/dist/encoding/Base64Url.d.ts.map +1 -1
  363. package/dist/encoding/Base64Url.js +29 -0
  364. package/dist/encoding/Base64Url.js.map +1 -1
  365. package/dist/encoding/Ini.d.ts.map +1 -1
  366. package/dist/encoding/Ini.js +3 -0
  367. package/dist/encoding/Ini.js.map +1 -1
  368. package/dist/encoding/JsonArray.d.ts +270 -0
  369. package/dist/encoding/JsonArray.d.ts.map +1 -0
  370. package/dist/encoding/JsonArray.js +691 -0
  371. package/dist/encoding/JsonArray.js.map +1 -0
  372. package/dist/encoding/Ndjson.d.ts +43 -4
  373. package/dist/encoding/Ndjson.d.ts.map +1 -1
  374. package/dist/encoding/Ndjson.js +169 -18
  375. package/dist/encoding/Ndjson.js.map +1 -1
  376. package/dist/encoding/SchemaBinary.d.ts +9 -1
  377. package/dist/encoding/SchemaBinary.d.ts.map +1 -1
  378. package/dist/encoding/SchemaBinary.js +12 -19
  379. package/dist/encoding/SchemaBinary.js.map +1 -1
  380. package/dist/encoding/Tar.d.ts +309 -0
  381. package/dist/encoding/Tar.d.ts.map +1 -0
  382. package/dist/encoding/Tar.js +1182 -0
  383. package/dist/encoding/Tar.js.map +1 -0
  384. package/dist/encoding/Toml.js +3 -3
  385. package/dist/encoding/Toml.js.map +1 -1
  386. package/dist/encoding/Xml.d.ts +464 -0
  387. package/dist/encoding/Xml.d.ts.map +1 -0
  388. package/dist/encoding/Xml.js +1619 -0
  389. package/dist/encoding/Xml.js.map +1 -0
  390. package/dist/encoding/Yaml.d.ts +6 -2
  391. package/dist/encoding/Yaml.d.ts.map +1 -1
  392. package/dist/encoding/Yaml.js +97 -34
  393. package/dist/encoding/Yaml.js.map +1 -1
  394. package/dist/encoding/Zip.d.ts +413 -0
  395. package/dist/encoding/Zip.d.ts.map +1 -0
  396. package/dist/encoding/Zip.js +1255 -0
  397. package/dist/encoding/Zip.js.map +1 -0
  398. package/dist/encoding/index.d.ts +20 -0
  399. package/dist/encoding/index.d.ts.map +1 -1
  400. package/dist/encoding/index.js +20 -0
  401. package/dist/encoding/index.js.map +1 -1
  402. package/dist/eventlog/EventJournal.d.ts +90 -5
  403. package/dist/eventlog/EventJournal.d.ts.map +1 -1
  404. package/dist/eventlog/EventJournal.js +488 -228
  405. package/dist/eventlog/EventJournal.js.map +1 -1
  406. package/dist/eventlog/EventLog.d.ts +180 -12
  407. package/dist/eventlog/EventLog.d.ts.map +1 -1
  408. package/dist/eventlog/EventLog.js +394 -146
  409. package/dist/eventlog/EventLog.js.map +1 -1
  410. package/dist/eventlog/EventLogEncryption.d.ts +36 -30
  411. package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
  412. package/dist/eventlog/EventLogEncryption.js +97 -38
  413. package/dist/eventlog/EventLogEncryption.js.map +1 -1
  414. package/dist/eventlog/EventLogMessage.d.ts +74 -34
  415. package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
  416. package/dist/eventlog/EventLogMessage.js +45 -11
  417. package/dist/eventlog/EventLogMessage.js.map +1 -1
  418. package/dist/eventlog/EventLogRemote.d.ts +45 -8
  419. package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
  420. package/dist/eventlog/EventLogRemote.js +51 -14
  421. package/dist/eventlog/EventLogRemote.js.map +1 -1
  422. package/dist/eventlog/EventLogServer.d.ts +46 -3
  423. package/dist/eventlog/EventLogServer.d.ts.map +1 -1
  424. package/dist/eventlog/EventLogServer.js +119 -19
  425. package/dist/eventlog/EventLogServer.js.map +1 -1
  426. package/dist/eventlog/EventLogServerEncrypted.d.ts +23 -33
  427. package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  428. package/dist/eventlog/EventLogServerEncrypted.js +97 -70
  429. package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
  430. package/dist/eventlog/EventLogServerUnencrypted.d.ts +39 -5
  431. package/dist/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
  432. package/dist/eventlog/EventLogServerUnencrypted.js +151 -69
  433. package/dist/eventlog/EventLogServerUnencrypted.js.map +1 -1
  434. package/dist/eventlog/EventRow.d.ts +288 -0
  435. package/dist/eventlog/EventRow.d.ts.map +1 -0
  436. package/dist/eventlog/EventRow.js +435 -0
  437. package/dist/eventlog/EventRow.js.map +1 -0
  438. package/dist/eventlog/SqlEventJournal.d.ts +18 -18
  439. package/dist/eventlog/SqlEventJournal.d.ts.map +1 -1
  440. package/dist/eventlog/SqlEventJournal.js +387 -159
  441. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  442. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +10 -18
  443. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
  444. package/dist/eventlog/SqlEventLogServerEncrypted.js +179 -69
  445. package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  446. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts +23 -3
  447. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
  448. package/dist/eventlog/SqlEventLogServerUnencrypted.js +102 -51
  449. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  450. package/dist/eventlog/index.d.ts +5 -0
  451. package/dist/eventlog/index.d.ts.map +1 -1
  452. package/dist/eventlog/index.js +5 -0
  453. package/dist/eventlog/index.js.map +1 -1
  454. package/dist/eventlog/internal/conflicts.d.ts +47 -0
  455. package/dist/eventlog/internal/conflicts.d.ts.map +1 -0
  456. package/dist/eventlog/internal/conflicts.js +92 -0
  457. package/dist/eventlog/internal/conflicts.js.map +1 -0
  458. package/dist/graphql/GraphQLClientError.d.ts +2 -2
  459. package/dist/graphql/GraphQLClientError.d.ts.map +1 -1
  460. package/dist/graphql/GraphQLClientError.js +4 -18
  461. package/dist/graphql/GraphQLClientError.js.map +1 -1
  462. package/dist/graphql/GraphQLProtocol.d.ts +12 -9
  463. package/dist/graphql/GraphQLProtocol.d.ts.map +1 -1
  464. package/dist/graphql/GraphQLProtocol.js +4 -3
  465. package/dist/graphql/GraphQLProtocol.js.map +1 -1
  466. package/dist/graphql/GraphQLResolver.d.ts +2 -0
  467. package/dist/graphql/GraphQLResolver.d.ts.map +1 -1
  468. package/dist/graphql/GraphQLResolver.js +74 -32
  469. package/dist/graphql/GraphQLResolver.js.map +1 -1
  470. package/dist/http/FetchHttpClient.d.ts +8 -1
  471. package/dist/http/FetchHttpClient.d.ts.map +1 -1
  472. package/dist/http/FetchHttpClient.js +51 -4
  473. package/dist/http/FetchHttpClient.js.map +1 -1
  474. package/dist/http/FindMyWay/internal/router.js +10 -0
  475. package/dist/http/FindMyWay/internal/router.js.map +1 -1
  476. package/dist/http/Headers.d.ts +227 -0
  477. package/dist/http/Headers.d.ts.map +1 -1
  478. package/dist/http/Headers.js +261 -0
  479. package/dist/http/Headers.js.map +1 -1
  480. package/dist/http/HttpClient.d.ts +93 -0
  481. package/dist/http/HttpClient.d.ts.map +1 -1
  482. package/dist/http/HttpClient.js +55 -16
  483. package/dist/http/HttpClient.js.map +1 -1
  484. package/dist/http/HttpClientRequest.d.ts +127 -3
  485. package/dist/http/HttpClientRequest.d.ts.map +1 -1
  486. package/dist/http/HttpClientRequest.js +44 -2
  487. package/dist/http/HttpClientRequest.js.map +1 -1
  488. package/dist/http/HttpClientResponse.d.ts +53 -0
  489. package/dist/http/HttpClientResponse.d.ts.map +1 -1
  490. package/dist/http/HttpClientResponse.js +47 -0
  491. package/dist/http/HttpClientResponse.js.map +1 -1
  492. package/dist/http/HttpEffect.d.ts +6 -2
  493. package/dist/http/HttpEffect.d.ts.map +1 -1
  494. package/dist/http/HttpEffect.js +21 -17
  495. package/dist/http/HttpEffect.js.map +1 -1
  496. package/dist/http/HttpIncomingMessage.d.ts +2 -1
  497. package/dist/http/HttpIncomingMessage.d.ts.map +1 -1
  498. package/dist/http/HttpIncomingMessage.js +3 -23
  499. package/dist/http/HttpIncomingMessage.js.map +1 -1
  500. package/dist/http/HttpMiddleware.d.ts +119 -2
  501. package/dist/http/HttpMiddleware.d.ts.map +1 -1
  502. package/dist/http/HttpMiddleware.js +159 -13
  503. package/dist/http/HttpMiddleware.js.map +1 -1
  504. package/dist/http/HttpRouter.d.ts.map +1 -1
  505. package/dist/http/HttpRouter.js +7 -2
  506. package/dist/http/HttpRouter.js.map +1 -1
  507. package/dist/http/HttpServerError.d.ts +5 -2
  508. package/dist/http/HttpServerError.d.ts.map +1 -1
  509. package/dist/http/HttpServerError.js +5 -3
  510. package/dist/http/HttpServerError.js.map +1 -1
  511. package/dist/http/HttpServerRequest.d.ts +25 -5
  512. package/dist/http/HttpServerRequest.d.ts.map +1 -1
  513. package/dist/http/HttpServerRequest.js +36 -10
  514. package/dist/http/HttpServerRequest.js.map +1 -1
  515. package/dist/http/HttpServerResponse.d.ts +17 -8
  516. package/dist/http/HttpServerResponse.d.ts.map +1 -1
  517. package/dist/http/HttpServerResponse.js +37 -21
  518. package/dist/http/HttpServerResponse.js.map +1 -1
  519. package/dist/http/HttpStaticServer.d.ts +0 -12
  520. package/dist/http/HttpStaticServer.d.ts.map +1 -1
  521. package/dist/http/HttpStaticServer.js +21 -7
  522. package/dist/http/HttpStaticServer.js.map +1 -1
  523. package/dist/http/MultipartParser/internal/contentType.d.ts +15 -1
  524. package/dist/http/MultipartParser/internal/contentType.d.ts.map +1 -1
  525. package/dist/http/MultipartParser/internal/contentType.js +87 -5
  526. package/dist/http/MultipartParser/internal/contentType.js.map +1 -1
  527. package/dist/http/MultipartParser/internal/headers.d.ts.map +1 -1
  528. package/dist/http/MultipartParser/internal/headers.js +4 -12
  529. package/dist/http/MultipartParser/internal/headers.js.map +1 -1
  530. package/dist/http/MultipartParser/internal/multipart.d.ts.map +1 -1
  531. package/dist/http/MultipartParser/internal/multipart.js +6 -27
  532. package/dist/http/MultipartParser/internal/multipart.js.map +1 -1
  533. package/dist/http/Url.d.ts.map +1 -1
  534. package/dist/http/Url.js +6 -1
  535. package/dist/http/Url.js.map +1 -1
  536. package/dist/http/internal/decompression.js +17 -11
  537. package/dist/http/internal/decompression.js.map +1 -1
  538. package/dist/http/internal/lazyStream.d.ts +2 -0
  539. package/dist/http/internal/lazyStream.d.ts.map +1 -0
  540. package/dist/http/internal/lazyStream.js +18 -0
  541. package/dist/http/internal/lazyStream.js.map +1 -0
  542. package/dist/http/internal/requestState.d.ts +2 -0
  543. package/dist/http/internal/requestState.d.ts.map +1 -0
  544. package/dist/http/internal/requestState.js +28 -0
  545. package/dist/http/internal/requestState.js.map +1 -0
  546. package/dist/http/internal/webResponse.d.ts +2 -0
  547. package/dist/http/internal/webResponse.d.ts.map +1 -0
  548. package/dist/http/internal/webResponse.js +12 -0
  549. package/dist/http/internal/webResponse.js.map +1 -0
  550. package/dist/http-api/HttpApi.js +1 -1
  551. package/dist/http-api/HttpApi.js.map +1 -1
  552. package/dist/http-api/HttpApiBuilder.d.ts.map +1 -1
  553. package/dist/http-api/HttpApiBuilder.js +121 -18
  554. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  555. package/dist/http-api/HttpApiClient.d.ts +29 -4
  556. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  557. package/dist/http-api/HttpApiClient.js +83 -23
  558. package/dist/http-api/HttpApiClient.js.map +1 -1
  559. package/dist/http-api/HttpApiEndpoint.d.ts +55 -29
  560. package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
  561. package/dist/http-api/HttpApiEndpoint.js +49 -5
  562. package/dist/http-api/HttpApiEndpoint.js.map +1 -1
  563. package/dist/http-api/HttpApiError.d.ts +58 -0
  564. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  565. package/dist/http-api/HttpApiError.js +38 -12
  566. package/dist/http-api/HttpApiError.js.map +1 -1
  567. package/dist/http-api/HttpApiScalar.d.ts +2 -1
  568. package/dist/http-api/HttpApiScalar.d.ts.map +1 -1
  569. package/dist/http-api/HttpApiScalar.js +6 -3
  570. package/dist/http-api/HttpApiScalar.js.map +1 -1
  571. package/dist/http-api/HttpApiSchema.d.ts +191 -9
  572. package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
  573. package/dist/http-api/HttpApiSchema.js +137 -4
  574. package/dist/http-api/HttpApiSchema.js.map +1 -1
  575. package/dist/http-api/HttpApiSwagger.d.ts +5 -0
  576. package/dist/http-api/HttpApiSwagger.d.ts.map +1 -1
  577. package/dist/http-api/HttpApiSwagger.js +14 -4
  578. package/dist/http-api/HttpApiSwagger.js.map +1 -1
  579. package/dist/http-api/HttpApiTest.d.ts +13 -2
  580. package/dist/http-api/HttpApiTest.d.ts.map +1 -1
  581. package/dist/http-api/HttpApiTest.js +30 -9
  582. package/dist/http-api/HttpApiTest.js.map +1 -1
  583. package/dist/http-api/OpenApi.d.ts +17 -3
  584. package/dist/http-api/OpenApi.d.ts.map +1 -1
  585. package/dist/http-api/OpenApi.js +57 -32
  586. package/dist/http-api/OpenApi.js.map +1 -1
  587. package/dist/http-api/internal/path.js +35 -10
  588. package/dist/http-api/internal/path.js.map +1 -1
  589. package/dist/index.d.ts +20 -0
  590. package/dist/index.d.ts.map +1 -1
  591. package/dist/index.js +20 -0
  592. package/dist/index.js.map +1 -1
  593. package/dist/internal/core.js +1 -1
  594. package/dist/internal/core.js.map +1 -1
  595. package/dist/internal/dateTime.js +19 -7
  596. package/dist/internal/dateTime.js.map +1 -1
  597. package/dist/internal/effect.js +85 -74
  598. package/dist/internal/effect.js.map +1 -1
  599. package/dist/internal/hashMap.js +2 -2
  600. package/dist/internal/hashMap.js.map +1 -1
  601. package/dist/internal/hydration.d.ts +2 -0
  602. package/dist/internal/hydration.d.ts.map +1 -0
  603. package/dist/internal/hydration.js +15 -0
  604. package/dist/internal/hydration.js.map +1 -0
  605. package/dist/internal/inflate.d.ts +2 -0
  606. package/dist/internal/inflate.d.ts.map +1 -0
  607. package/dist/internal/inflate.js +680 -0
  608. package/dist/internal/inflate.js.map +1 -0
  609. package/dist/internal/record.js +6 -0
  610. package/dist/internal/record.js.map +1 -1
  611. package/dist/internal/request.js +20 -7
  612. package/dist/internal/request.js.map +1 -1
  613. package/dist/internal/schedule.js +17 -22
  614. package/dist/internal/schedule.js.map +1 -1
  615. package/dist/internal/schema/fromJsonSchemaDocument.js +136 -126
  616. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  617. package/dist/internal/schema/interpreter.js +51 -36
  618. package/dist/internal/schema/interpreter.js.map +1 -1
  619. package/dist/internal/schema/standardSchema.js +34 -33
  620. package/dist/internal/schema/standardSchema.js.map +1 -1
  621. package/dist/internal/schema/toCodeDocument.js +7 -2
  622. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  623. package/dist/internal/schema/toCodec.js +86 -1
  624. package/dist/internal/schema/toCodec.js.map +1 -1
  625. package/dist/internal/schema/toFormatter.js +5 -5
  626. package/dist/internal/schema/toFormatter.js.map +1 -1
  627. package/dist/internal/schema/toJsonSchemaDocument.js +60 -38
  628. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
  629. package/dist/internal/trie.js +1 -3
  630. package/dist/internal/trie.js.map +1 -1
  631. package/dist/internal/uuid.js +7 -3
  632. package/dist/internal/uuid.js.map +1 -1
  633. package/dist/internal/version.js +1 -1
  634. package/dist/net/NetAddress.d.ts.map +1 -1
  635. package/dist/net/NetAddress.js +2 -8
  636. package/dist/net/NetAddress.js.map +1 -1
  637. package/dist/observability/OtlpExporter.d.ts.map +1 -1
  638. package/dist/observability/OtlpExporter.js +5 -12
  639. package/dist/observability/OtlpExporter.js.map +1 -1
  640. package/dist/observability/OtlpMetrics.d.ts.map +1 -1
  641. package/dist/observability/OtlpMetrics.js +5 -3
  642. package/dist/observability/OtlpMetrics.js.map +1 -1
  643. package/dist/observability/OtlpResource.d.ts +3 -1
  644. package/dist/observability/OtlpResource.d.ts.map +1 -1
  645. package/dist/observability/OtlpResource.js +11 -4
  646. package/dist/observability/OtlpResource.js.map +1 -1
  647. package/dist/observability/OtlpSerialization.d.ts +5 -0
  648. package/dist/observability/OtlpSerialization.d.ts.map +1 -1
  649. package/dist/observability/OtlpSerialization.js +14 -3
  650. package/dist/observability/OtlpSerialization.js.map +1 -1
  651. package/dist/observability/internal/protobuf.d.ts +0 -9
  652. package/dist/observability/internal/protobuf.d.ts.map +1 -1
  653. package/dist/observability/internal/protobuf.js +2 -10
  654. package/dist/observability/internal/protobuf.js.map +1 -1
  655. package/dist/persistence/PersistedCache.d.ts.map +1 -1
  656. package/dist/persistence/PersistedCache.js +1 -1
  657. package/dist/persistence/PersistedCache.js.map +1 -1
  658. package/dist/persistence/PersistedQueue.d.ts +6 -2
  659. package/dist/persistence/PersistedQueue.d.ts.map +1 -1
  660. package/dist/persistence/PersistedQueue.js +162 -84
  661. package/dist/persistence/PersistedQueue.js.map +1 -1
  662. package/dist/persistence/Persistence.d.ts +28 -0
  663. package/dist/persistence/Persistence.d.ts.map +1 -1
  664. package/dist/persistence/Persistence.js +36 -8
  665. package/dist/persistence/Persistence.js.map +1 -1
  666. package/dist/persistence/RateLimiter.d.ts.map +1 -1
  667. package/dist/persistence/RateLimiter.js +8 -12
  668. package/dist/persistence/RateLimiter.js.map +1 -1
  669. package/dist/persistence/UserDirectories.d.ts +129 -0
  670. package/dist/persistence/UserDirectories.d.ts.map +1 -0
  671. package/dist/persistence/UserDirectories.js +178 -0
  672. package/dist/persistence/UserDirectories.js.map +1 -0
  673. package/dist/persistence/index.d.ts +5 -0
  674. package/dist/persistence/index.d.ts.map +1 -1
  675. package/dist/persistence/index.js +5 -0
  676. package/dist/persistence/index.js.map +1 -1
  677. package/dist/process/ChildProcess.d.ts +2 -1
  678. package/dist/process/ChildProcess.d.ts.map +1 -1
  679. package/dist/process/ChildProcess.js.map +1 -1
  680. package/dist/reactivity/AsyncResult.d.ts.map +1 -1
  681. package/dist/reactivity/AsyncResult.js +1 -1
  682. package/dist/reactivity/AsyncResult.js.map +1 -1
  683. package/dist/reactivity/Atom.d.ts +69 -30
  684. package/dist/reactivity/Atom.d.ts.map +1 -1
  685. package/dist/reactivity/Atom.js +40 -15
  686. package/dist/reactivity/Atom.js.map +1 -1
  687. package/dist/reactivity/AtomHttpApi.d.ts +5 -5
  688. package/dist/reactivity/AtomHttpApi.d.ts.map +1 -1
  689. package/dist/reactivity/AtomHttpApi.js +1 -1
  690. package/dist/reactivity/AtomHttpApi.js.map +1 -1
  691. package/dist/reactivity/AtomRegistry.d.ts +2 -2
  692. package/dist/reactivity/AtomRegistry.d.ts.map +1 -1
  693. package/dist/reactivity/AtomRegistry.js +44 -9
  694. package/dist/reactivity/AtomRegistry.js.map +1 -1
  695. package/dist/reactivity/AtomRpc.d.ts +3 -3
  696. package/dist/reactivity/AtomRpc.d.ts.map +1 -1
  697. package/dist/reactivity/AtomRpc.js +1 -1
  698. package/dist/reactivity/AtomRpc.js.map +1 -1
  699. package/dist/reactivity/Hydration.d.ts.map +1 -1
  700. package/dist/reactivity/Hydration.js +46 -12
  701. package/dist/reactivity/Hydration.js.map +1 -1
  702. package/dist/reactivity/Reactivity.d.ts +71 -7
  703. package/dist/reactivity/Reactivity.d.ts.map +1 -1
  704. package/dist/reactivity/Reactivity.js +21 -12
  705. package/dist/reactivity/Reactivity.js.map +1 -1
  706. package/dist/rpc/Rpc.d.ts +18 -0
  707. package/dist/rpc/Rpc.d.ts.map +1 -1
  708. package/dist/rpc/Rpc.js +20 -0
  709. package/dist/rpc/Rpc.js.map +1 -1
  710. package/dist/rpc/RpcClient.d.ts +26 -2
  711. package/dist/rpc/RpcClient.d.ts.map +1 -1
  712. package/dist/rpc/RpcClient.js +196 -60
  713. package/dist/rpc/RpcClient.js.map +1 -1
  714. package/dist/rpc/RpcSerialization.d.ts +15 -0
  715. package/dist/rpc/RpcSerialization.d.ts.map +1 -1
  716. package/dist/rpc/RpcSerialization.js +21 -5
  717. package/dist/rpc/RpcSerialization.js.map +1 -1
  718. package/dist/rpc/RpcServer.d.ts.map +1 -1
  719. package/dist/rpc/RpcServer.js +9 -18
  720. package/dist/rpc/RpcServer.js.map +1 -1
  721. package/dist/schema/Model.d.ts +1 -1
  722. package/dist/schema/VariantSchema.d.ts +22 -3
  723. package/dist/schema/VariantSchema.d.ts.map +1 -1
  724. package/dist/schema/VariantSchema.js +32 -18
  725. package/dist/schema/VariantSchema.js.map +1 -1
  726. package/dist/socket/Socket.d.ts +23 -1
  727. package/dist/socket/Socket.d.ts.map +1 -1
  728. package/dist/socket/Socket.js +36 -3
  729. package/dist/socket/Socket.js.map +1 -1
  730. package/dist/sql/Migrator.d.ts.map +1 -1
  731. package/dist/sql/Migrator.js +15 -3
  732. package/dist/sql/Migrator.js.map +1 -1
  733. package/dist/sql/SqlClient.d.ts +143 -5
  734. package/dist/sql/SqlClient.d.ts.map +1 -1
  735. package/dist/sql/SqlClient.js +148 -27
  736. package/dist/sql/SqlClient.js.map +1 -1
  737. package/dist/sql/SqlResolver.d.ts +9 -0
  738. package/dist/sql/SqlResolver.d.ts.map +1 -1
  739. package/dist/sql/SqlResolver.js +9 -0
  740. package/dist/sql/SqlResolver.js.map +1 -1
  741. package/dist/sql/Statement.d.ts +3 -1
  742. package/dist/sql/Statement.d.ts.map +1 -1
  743. package/dist/sql/Statement.js +24 -5
  744. package/dist/sql/Statement.js.map +1 -1
  745. package/dist/testing/TestClock.d.ts.map +1 -1
  746. package/dist/testing/TestClock.js +4 -2
  747. package/dist/testing/TestClock.js.map +1 -1
  748. package/dist/testing/TestSchema.d.ts +7 -1
  749. package/dist/testing/TestSchema.d.ts.map +1 -1
  750. package/dist/testing/TestSchema.js +9 -3
  751. package/dist/testing/TestSchema.js.map +1 -1
  752. package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
  753. package/dist/workflow/WorkflowEngine.js +18 -4
  754. package/dist/workflow/WorkflowEngine.js.map +1 -1
  755. package/package.json +13 -3
  756. package/src/Array.ts +128 -55
  757. package/src/Bytes.ts +111 -0
  758. package/src/Channel.ts +263 -436
  759. package/src/ChannelSchema.ts +1 -49
  760. package/src/Chunk.ts +55 -61
  761. package/src/Config.ts +12 -86
  762. package/src/ConfigProvider.ts +2 -1
  763. package/src/Cron.ts +6 -3
  764. package/src/Duration.ts +66 -16
  765. package/src/Effect.ts +502 -167
  766. package/src/Equivalence.ts +7 -4
  767. package/src/Exit.ts +24 -9
  768. package/src/FiberHandle.ts +10 -9
  769. package/src/FiberMap.ts +13 -66
  770. package/src/FileSystem.ts +10 -0
  771. package/src/Graph.ts +171 -1263
  772. package/src/HashSet.ts +0 -60
  773. package/src/Iterable.ts +15 -14
  774. package/src/JsonSchema.ts +28 -3
  775. package/src/Layer.ts +2 -2
  776. package/src/ManagedRuntime.ts +72 -6
  777. package/src/Metric.ts +249 -507
  778. package/src/MutableHashMap.ts +4 -473
  779. package/src/Number.ts +2 -2
  780. package/src/Optic.ts +17 -332
  781. package/src/Path.ts +9 -1
  782. package/src/PubSub.ts +12 -7
  783. package/src/Queue.ts +5 -37
  784. package/src/Random.ts +1 -1
  785. package/src/RcMap.ts +14 -8
  786. package/src/Record.ts +51 -0
  787. package/src/Ref.ts +7 -104
  788. package/src/References.ts +5 -4
  789. package/src/RequestResolver.ts +46 -87
  790. package/src/Resource.ts +1 -1
  791. package/src/Runtime.ts +19 -18
  792. package/src/Schedule.ts +2 -94
  793. package/src/Schema.ts +591 -356
  794. package/src/SchemaAST.ts +20 -9
  795. package/src/SchemaGetter.ts +22 -5
  796. package/src/SchemaIssue.ts +44 -53
  797. package/src/SchemaRepresentation.ts +64 -1
  798. package/src/SchemaTransformation.ts +1 -1
  799. package/src/Scope.ts +12 -2
  800. package/src/ScopedCache.ts +17 -142
  801. package/src/SemVer.ts +1528 -0
  802. package/src/SemVerRange.ts +883 -0
  803. package/src/Sink.ts +6 -2
  804. package/src/Stream.ts +334 -1011
  805. package/src/String.ts +8 -8
  806. package/src/TextDiff.ts +766 -0
  807. package/src/TxHashMap.ts +1 -103
  808. package/src/TxHashSet.ts +48 -753
  809. package/src/ai/AiError.ts +66 -4
  810. package/src/ai/Chat.ts +10 -5
  811. package/src/ai/Decision.ts +49 -1
  812. package/src/ai/DecisionModel.ts +264 -108
  813. package/src/ai/EmbeddingModel.ts +25 -13
  814. package/src/ai/McpClient.ts +1211 -0
  815. package/src/ai/McpClientError.ts +329 -0
  816. package/src/ai/McpProtocol.ts +2 -2
  817. package/src/ai/McpSchema.ts +153 -35
  818. package/src/ai/McpServer.ts +217 -220
  819. package/src/ai/Prompt.ts +49 -35
  820. package/src/ai/Response.ts +195 -65
  821. package/src/ai/Tool.ts +12 -4
  822. package/src/ai/Toolkit.ts +78 -10
  823. package/src/ai/index.ts +12 -0
  824. package/src/ai/internal/mcpCore.ts +13 -14
  825. package/src/ai/internal/mcpProtocol/v2024_11_05.ts +1 -1
  826. package/src/ai/internal/mcpProtocol/v2025_03_26.ts +1 -1
  827. package/src/ai/internal/mcpProtocol/v2025_06_18.ts +3 -3
  828. package/src/ai/internal/mcpProtocol/v2025_11_25.ts +3 -3
  829. package/src/ai/internal/mcpProtocol/v2026_07_28.ts +12 -14
  830. package/src/ai/internal/mcpProtocol.ts +22 -2
  831. package/src/ai/internal/mcpRuntime.ts +3 -4
  832. package/src/ai/internal/mcpSchema/v2024_11_05.ts +20 -13
  833. package/src/ai/internal/mcpSchema/v2025_03_26.ts +4 -2
  834. package/src/ai/internal/mcpSchema/v2025_06_18.ts +7 -7
  835. package/src/ai/internal/mcpSchema/v2025_11_25.ts +8 -8
  836. package/src/ai/internal/mcpSchema/v2026_07_28.ts +44 -42
  837. package/src/cli/CliError.ts +49 -4
  838. package/src/cli/Command.ts +316 -9
  839. package/src/cli/Completions.ts +5 -0
  840. package/src/cli/Flag.ts +117 -0
  841. package/src/cli/GlobalFlag.ts +3 -3
  842. package/src/cli/Param.ts +122 -0
  843. package/src/cli/TerminalCapabilities.ts +156 -0
  844. package/src/cli/index.ts +6 -0
  845. package/src/cli/internal/command.ts +8 -3
  846. package/src/cli/internal/completions/bash.ts +4 -3
  847. package/src/cli/internal/completions/descriptor.ts +11 -1
  848. package/src/cli/internal/completions/fish.ts +10 -8
  849. package/src/cli/internal/completions/powershell.ts +23 -14
  850. package/src/cli/internal/completions/zsh.ts +8 -5
  851. package/src/cli/internal/formatter.ts +18 -0
  852. package/src/cli/internal/lexer.ts +12 -5
  853. package/src/cli/internal/parser.ts +31 -11
  854. package/src/cluster/ClusterCron.ts +94 -35
  855. package/src/cluster/ClusterMetrics.ts +149 -7
  856. package/src/cluster/ClusterWorkflowEngine.ts +84 -41
  857. package/src/cluster/Entity.ts +4 -0
  858. package/src/cluster/MessageStorage.ts +7 -0
  859. package/src/cluster/Runners.ts +76 -25
  860. package/src/cluster/Sharding.ts +118 -38
  861. package/src/cluster/ShardingConfig.ts +15 -0
  862. package/src/cluster/SqlMessageStorage.ts +58 -55
  863. package/src/cluster/SqlRunnerStorage.ts +10 -4
  864. package/src/cluster/internal/entityManager.ts +80 -10
  865. package/src/devtools/DevTools.ts +3 -2
  866. package/src/devtools/DevToolsClient.ts +27 -10
  867. package/src/encoding/Base64Url.ts +31 -0
  868. package/src/encoding/Ini.ts +3 -0
  869. package/src/encoding/JsonArray.ts +849 -0
  870. package/src/encoding/Ndjson.ts +211 -20
  871. package/src/encoding/SchemaBinary.ts +14 -48
  872. package/src/encoding/Tar.ts +1417 -0
  873. package/src/encoding/Toml.ts +3 -3
  874. package/src/encoding/Xml.ts +2037 -0
  875. package/src/encoding/Yaml.ts +108 -36
  876. package/src/encoding/Zip.ts +1558 -0
  877. package/src/encoding/index.ts +24 -0
  878. package/src/eventlog/EventJournal.ts +611 -227
  879. package/src/eventlog/EventLog.ts +496 -196
  880. package/src/eventlog/EventLogEncryption.ts +128 -43
  881. package/src/eventlog/EventLogMessage.ts +62 -11
  882. package/src/eventlog/EventLogRemote.ts +77 -21
  883. package/src/eventlog/EventLogServer.ts +162 -20
  884. package/src/eventlog/EventLogServerEncrypted.ts +121 -80
  885. package/src/eventlog/EventLogServerUnencrypted.ts +180 -77
  886. package/src/eventlog/EventRow.ts +706 -0
  887. package/src/eventlog/SqlEventJournal.ts +453 -173
  888. package/src/eventlog/SqlEventLogServerEncrypted.ts +212 -83
  889. package/src/eventlog/SqlEventLogServerUnencrypted.ts +141 -62
  890. package/src/eventlog/index.ts +6 -0
  891. package/src/eventlog/internal/conflicts.ts +123 -0
  892. package/src/graphql/GraphQLClientError.ts +5 -12
  893. package/src/graphql/GraphQLProtocol.ts +12 -9
  894. package/src/graphql/GraphQLResolver.ts +90 -239
  895. package/src/http/FetchHttpClient.ts +56 -6
  896. package/src/http/FindMyWay/internal/router.ts +11 -0
  897. package/src/http/Headers.ts +337 -154
  898. package/src/http/HttpClient.ts +126 -135
  899. package/src/http/HttpClientRequest.ts +142 -4
  900. package/src/http/HttpClientResponse.ts +71 -0
  901. package/src/http/HttpEffect.ts +25 -33
  902. package/src/http/HttpIncomingMessage.ts +3 -23
  903. package/src/http/HttpMiddleware.ts +180 -23
  904. package/src/http/HttpRouter.ts +8 -2
  905. package/src/http/HttpServerError.ts +6 -3
  906. package/src/http/HttpServerRequest.ts +71 -12
  907. package/src/http/HttpServerResponse.ts +49 -23
  908. package/src/http/HttpStaticServer.ts +25 -9
  909. package/src/http/MultipartParser/internal/contentType.ts +107 -6
  910. package/src/http/MultipartParser/internal/headers.ts +4 -16
  911. package/src/http/MultipartParser/internal/multipart.ts +10 -32
  912. package/src/http/Url.ts +6 -1
  913. package/src/http/internal/decompression.ts +26 -17
  914. package/src/http/internal/lazyStream.ts +25 -0
  915. package/src/http/internal/requestState.ts +33 -0
  916. package/src/http/internal/webResponse.ts +20 -0
  917. package/src/http-api/HttpApi.ts +1 -1
  918. package/src/http-api/HttpApiBuilder.ts +151 -23
  919. package/src/http-api/HttpApiClient.ts +158 -30
  920. package/src/http-api/HttpApiEndpoint.ts +144 -33
  921. package/src/http-api/HttpApiError.ts +55 -0
  922. package/src/http-api/HttpApiScalar.ts +4 -3
  923. package/src/http-api/HttpApiSchema.ts +275 -13
  924. package/src/http-api/HttpApiSwagger.ts +11 -4
  925. package/src/http-api/HttpApiTest.ts +33 -9
  926. package/src/http-api/OpenApi.ts +84 -42
  927. package/src/http-api/internal/path.ts +40 -12
  928. package/src/index.ts +24 -0
  929. package/src/internal/core.ts +1 -1
  930. package/src/internal/dateTime.ts +20 -7
  931. package/src/internal/effect.ts +120 -84
  932. package/src/internal/hashMap.ts +2 -2
  933. package/src/internal/hydration.ts +15 -0
  934. package/src/internal/inflate.ts +710 -0
  935. package/src/internal/record.ts +6 -0
  936. package/src/internal/request.ts +21 -6
  937. package/src/internal/schedule.ts +20 -39
  938. package/src/internal/schema/fromJsonSchemaDocument.ts +262 -193
  939. package/src/internal/schema/interpreter.ts +58 -45
  940. package/src/internal/schema/standardSchema.ts +32 -30
  941. package/src/internal/schema/toCodeDocument.ts +8 -3
  942. package/src/internal/schema/toCodec.ts +116 -1
  943. package/src/internal/schema/toFormatter.ts +6 -6
  944. package/src/internal/schema/toJsonSchemaDocument.ts +69 -39
  945. package/src/internal/trie.ts +1 -3
  946. package/src/internal/uuid.ts +15 -10
  947. package/src/internal/version.ts +1 -1
  948. package/src/net/NetAddress.ts +2 -9
  949. package/src/observability/OtlpExporter.ts +5 -12
  950. package/src/observability/OtlpMetrics.ts +5 -3
  951. package/src/observability/OtlpResource.ts +16 -6
  952. package/src/observability/OtlpSerialization.ts +17 -3
  953. package/src/observability/internal/protobuf.ts +2 -10
  954. package/src/persistence/PersistedCache.ts +3 -1
  955. package/src/persistence/PersistedQueue.ts +223 -153
  956. package/src/persistence/Persistence.ts +64 -30
  957. package/src/persistence/RateLimiter.ts +18 -21
  958. package/src/persistence/UserDirectories.ts +273 -0
  959. package/src/persistence/index.ts +6 -0
  960. package/src/process/ChildProcess.ts +2 -1
  961. package/src/reactivity/AsyncResult.ts +4 -38
  962. package/src/reactivity/Atom.ts +134 -166
  963. package/src/reactivity/AtomHttpApi.ts +10 -16
  964. package/src/reactivity/AtomRegistry.ts +50 -29
  965. package/src/reactivity/AtomRpc.ts +6 -22
  966. package/src/reactivity/Hydration.ts +53 -12
  967. package/src/reactivity/Reactivity.ts +97 -39
  968. package/src/rpc/Rpc.ts +21 -0
  969. package/src/rpc/RpcClient.ts +279 -103
  970. package/src/rpc/RpcSerialization.ts +21 -5
  971. package/src/rpc/RpcServer.ts +11 -20
  972. package/src/schema/VariantSchema.ts +86 -22
  973. package/src/socket/Socket.ts +45 -20
  974. package/src/sql/Migrator.ts +19 -9
  975. package/src/sql/SqlClient.ts +266 -29
  976. package/src/sql/SqlResolver.ts +9 -0
  977. package/src/sql/Statement.ts +35 -8
  978. package/src/testing/TestClock.ts +4 -1
  979. package/src/testing/TestSchema.ts +9 -3
  980. package/src/workflow/WorkflowEngine.ts +34 -10
  981. package/dist/http/internal/preResponseHandler.d.ts +0 -2
  982. package/dist/http/internal/preResponseHandler.d.ts.map +0 -1
  983. package/dist/http/internal/preResponseHandler.js +0 -14
  984. package/dist/http/internal/preResponseHandler.js.map +0 -1
  985. package/src/http/internal/preResponseHandler.ts +0 -19
@@ -3,10 +3,11 @@
3
3
  *
4
4
  * CLI errors describe problems such as unknown or duplicate flags, missing
5
5
  * flags or arguments, unexpected positional arguments, invalid values, unknown
6
- * subcommands, user handler failures, and requests to show command help. This
7
- * module includes the `CliError` union, the `isCliError` guard, schema-backed
8
- * error classes with display messages, and the `NonShowHelpErrors` union used
9
- * when parse or validation errors should be shown with help output.
6
+ * subcommands, rejected input combinations, user handler failures, and
7
+ * requests to show command help. This module includes the `CliError` union,
8
+ * the `isCliError` guard, schema-backed error classes with display messages,
9
+ * and the `NonShowHelpErrors` union used when parse or validation errors
10
+ * should be shown with help output.
10
11
  *
11
12
  * @stability unstable
12
13
  * @since 4.0.0
@@ -83,6 +84,7 @@ export type CliError =
83
84
  | UnexpectedArgument
84
85
  | InvalidValue
85
86
  | UnknownSubcommand
87
+ | ValidationError
86
88
  | ShowHelp
87
89
  | UserError
88
90
 
@@ -500,6 +502,47 @@ export class UnknownSubcommand extends Schema.TaggedError<UnknownSubcommand>(
500
502
  }
501
503
  }
502
504
 
505
+ /**
506
+ * Error for parsed input that fails a rule of your own, such as two flags
507
+ * that cannot be used together.
508
+ *
509
+ * **Details**
510
+ *
511
+ * Fail with it from `Command.validate`, `Flag.mapEffect` or
512
+ * `Argument.mapEffect`. The runner shows it with the command help, like any
513
+ * other parse error. Handlers report their own failures with `UserError`.
514
+ *
515
+ * **Example** (Rejecting a flag combination)
516
+ *
517
+ * ```ts import.meta.vitest
518
+ * import { CliError } from "effect/cli"
519
+ *
520
+ * const error = new CliError.ValidationError({
521
+ * message: "--use-api and --use-docker are mutually exclusive"
522
+ * })
523
+ *
524
+ * error._tag // => "ValidationError"
525
+ * error.message // => "--use-api and --use-docker are mutually exclusive"
526
+ * ```
527
+ *
528
+ * @stability unstable
529
+ * @category errors
530
+ * @since 4.1.0
531
+ */
532
+ export class ValidationError extends Schema.TaggedError<ValidationError>(
533
+ `${TypeId}/ValidationError`
534
+ )("ValidationError", {
535
+ message: Schema.String
536
+ }) {
537
+ /**
538
+ * Marks this value as a CLI validation error for runtime guards.
539
+ *
540
+ * @stability unstable
541
+ * @since 4.1.0
542
+ */
543
+ readonly [TypeId] = TypeId
544
+ }
545
+
503
546
  /**
504
547
  * Error wrapper for user handler failures in the CLI error channel.
505
548
  *
@@ -604,6 +647,7 @@ export const NonShowHelpErrors: Schema.Union<
604
647
  typeof UnexpectedArgument,
605
648
  typeof InvalidValue,
606
649
  typeof UnknownSubcommand,
650
+ typeof ValidationError,
607
651
  typeof UserError
608
652
  ]
609
653
  > = Schema.Union([
@@ -614,6 +658,7 @@ export const NonShowHelpErrors: Schema.Union<
614
658
  UnexpectedArgument,
615
659
  InvalidValue,
616
660
  UnknownSubcommand,
661
+ ValidationError,
617
662
  UserError
618
663
  ])
619
664
 
@@ -30,10 +30,10 @@ import * as Terminal from "../Terminal.ts"
30
30
  import type { Contravariant, Covariant, NoInfer, Simplify } from "../Types.ts"
31
31
  import * as CliConfig from "./CliConfig.ts"
32
32
  import * as CliError from "./CliError.ts"
33
- import * as CliOutput from "./CliOutput.ts"
34
33
  import * as GlobalFlag from "./GlobalFlag.ts"
35
34
  import { checkForDuplicateFlags, makeCommand, makeParser, toImpl, TypeId } from "./internal/command.ts"
36
35
  import { mergeConfig, parseConfig } from "./internal/config.ts"
36
+ import { resolveFormatter } from "./internal/formatter.ts"
37
37
  import { getGlobalFlagsForCommandPath, getGlobalFlagsForCommandTree, getHelpForCommandPath } from "./internal/help.ts"
38
38
  import * as Lexer from "./internal/lexer.ts"
39
39
  import * as Parser from "./internal/parser.ts"
@@ -1121,6 +1121,247 @@ export const withHandler: {
1121
1121
  ): Command<Name, A, ContextInput, E, Exclude<R, BuiltInSettingContext>> =>
1122
1122
  makeCommand({ ...toImpl(self), handle: handler } as any))
1123
1123
 
1124
+ /**
1125
+ * Validates the parsed input of a command before the handler runs.
1126
+ *
1127
+ * **Details**
1128
+ *
1129
+ * Use this for rules that involve several flags or arguments, such as
1130
+ * mutually exclusive flags. The validation receives the same input as the
1131
+ * handler, with defaults, prompts and the wizard already applied. A failure
1132
+ * is shown with the command help, like a parse error, and the handler does
1133
+ * not run. Fail with `CliError.ValidationError` to supply the message, or
1134
+ * with any other `CliError`. Validations run in the order they were added and
1135
+ * stop at the first failure. Adding a handler later with `withHandler` keeps
1136
+ * them.
1137
+ *
1138
+ * A validation sees only the input that exists where it is applied. Add it
1139
+ * after `withSharedFlags` to see the shared flags. Added after
1140
+ * `withSubcommands`, it also runs when a subcommand is selected, with the
1141
+ * parent's shared flags as input.
1142
+ *
1143
+ * **Example** (Rejecting mutually exclusive flags)
1144
+ *
1145
+ * ```ts import.meta.vitest
1146
+ * import { Effect, FileSystem, Layer, Path, Stdio, Terminal } from "effect"
1147
+ * import { CliError, Command, Flag } from "effect/cli"
1148
+ * import { ChildProcessSpawner } from "effect/process"
1149
+ * import { TestConsole } from "effect/testing"
1150
+ *
1151
+ * const CliTestLayer = Layer.mergeAll(
1152
+ * FileSystem.layerNoop({}),
1153
+ * Path.layer,
1154
+ * Stdio.layerTest({}),
1155
+ * TestConsole.layer,
1156
+ * Layer.succeed(Terminal.Terminal, Terminal.make({
1157
+ * columns: Effect.succeed(80),
1158
+ * rows: Effect.succeed(24),
1159
+ * readInput: Effect.die("unused"),
1160
+ * readLine: Effect.die("unused"),
1161
+ * display: () => Effect.void
1162
+ * })),
1163
+ * Layer.succeed(
1164
+ * ChildProcessSpawner.ChildProcessSpawner,
1165
+ * ChildProcessSpawner.make(() => Effect.die("unused"))
1166
+ * )
1167
+ * )
1168
+ *
1169
+ * const download = Command.make("download", {
1170
+ * useApi: Flag.Boolean("use-api").pipe(Flag.withDefault(false)),
1171
+ * useDocker: Flag.Boolean("use-docker").pipe(Flag.withDefault(false))
1172
+ * }, () => Effect.void).pipe(
1173
+ * Command.validate(({ useApi, useDocker }) =>
1174
+ * useApi && useDocker
1175
+ * ? Effect.fail(
1176
+ * new CliError.ValidationError({
1177
+ * message: "--use-api and --use-docker are mutually exclusive"
1178
+ * })
1179
+ * )
1180
+ * : Effect.void
1181
+ * )
1182
+ * )
1183
+ *
1184
+ * const error = await Effect.runPromise(
1185
+ * Command.runWith(download, { version: "1.0.0" })(["--use-api", "--use-docker"]).pipe(
1186
+ * Effect.flip,
1187
+ * Effect.provide(CliTestLayer)
1188
+ * )
1189
+ * )
1190
+ * error._tag // => "ShowHelp"
1191
+ * error.errors[0].message // => "--use-api and --use-docker are mutually exclusive"
1192
+ * ```
1193
+ *
1194
+ * @stability unstable
1195
+ * @category combinators
1196
+ * @since 4.1.0
1197
+ */
1198
+ export const validate: {
1199
+ /**
1200
+ * Validates the parsed input of a command before the handler runs.
1201
+ *
1202
+ * **Details**
1203
+ *
1204
+ * Use this for rules that involve several flags or arguments, such as
1205
+ * mutually exclusive flags. The validation receives the same input as the
1206
+ * handler, with defaults, prompts and the wizard already applied. A failure
1207
+ * is shown with the command help, like a parse error, and the handler does
1208
+ * not run. Fail with `CliError.ValidationError` to supply the message, or
1209
+ * with any other `CliError`. Validations run in the order they were added and
1210
+ * stop at the first failure. Adding a handler later with `withHandler` keeps
1211
+ * them.
1212
+ *
1213
+ * A validation sees only the input that exists where it is applied. Add it
1214
+ * after `withSharedFlags` to see the shared flags. Added after
1215
+ * `withSubcommands`, it also runs when a subcommand is selected, with the
1216
+ * parent's shared flags as input.
1217
+ *
1218
+ * **Example** (Rejecting mutually exclusive flags)
1219
+ *
1220
+ * ```ts import.meta.vitest
1221
+ * import { Effect, FileSystem, Layer, Path, Stdio, Terminal } from "effect"
1222
+ * import { CliError, Command, Flag } from "effect/cli"
1223
+ * import { ChildProcessSpawner } from "effect/process"
1224
+ * import { TestConsole } from "effect/testing"
1225
+ *
1226
+ * const CliTestLayer = Layer.mergeAll(
1227
+ * FileSystem.layerNoop({}),
1228
+ * Path.layer,
1229
+ * Stdio.layerTest({}),
1230
+ * TestConsole.layer,
1231
+ * Layer.succeed(Terminal.Terminal, Terminal.make({
1232
+ * columns: Effect.succeed(80),
1233
+ * rows: Effect.succeed(24),
1234
+ * readInput: Effect.die("unused"),
1235
+ * readLine: Effect.die("unused"),
1236
+ * display: () => Effect.void
1237
+ * })),
1238
+ * Layer.succeed(
1239
+ * ChildProcessSpawner.ChildProcessSpawner,
1240
+ * ChildProcessSpawner.make(() => Effect.die("unused"))
1241
+ * )
1242
+ * )
1243
+ *
1244
+ * const download = Command.make("download", {
1245
+ * useApi: Flag.Boolean("use-api").pipe(Flag.withDefault(false)),
1246
+ * useDocker: Flag.Boolean("use-docker").pipe(Flag.withDefault(false))
1247
+ * }, () => Effect.void).pipe(
1248
+ * Command.validate(({ useApi, useDocker }) =>
1249
+ * useApi && useDocker
1250
+ * ? Effect.fail(
1251
+ * new CliError.ValidationError({
1252
+ * message: "--use-api and --use-docker are mutually exclusive"
1253
+ * })
1254
+ * )
1255
+ * : Effect.void
1256
+ * )
1257
+ * )
1258
+ *
1259
+ * const error = await Effect.runPromise(
1260
+ * Command.runWith(download, { version: "1.0.0" })(["--use-api", "--use-docker"]).pipe(
1261
+ * Effect.flip,
1262
+ * Effect.provide(CliTestLayer)
1263
+ * )
1264
+ * )
1265
+ * error._tag // => "ShowHelp"
1266
+ * error.errors[0].message // => "--use-api and --use-docker are mutually exclusive"
1267
+ * ```
1268
+ *
1269
+ * @stability unstable
1270
+ * @category combinators
1271
+ * @since 4.1.0
1272
+ */
1273
+ <Input>(f: (input: Input) => Effect.Effect<void, CliError.CliError, Environment>): <Name extends string, ContextInput, E, R>(
1274
+ self: Command<Name, Input, ContextInput, E, R>
1275
+ ) => Command<Name, Input, ContextInput, E, R>
1276
+ /**
1277
+ * Validates the parsed input of a command before the handler runs.
1278
+ *
1279
+ * **Details**
1280
+ *
1281
+ * Use this for rules that involve several flags or arguments, such as
1282
+ * mutually exclusive flags. The validation receives the same input as the
1283
+ * handler, with defaults, prompts and the wizard already applied. A failure
1284
+ * is shown with the command help, like a parse error, and the handler does
1285
+ * not run. Fail with `CliError.ValidationError` to supply the message, or
1286
+ * with any other `CliError`. Validations run in the order they were added and
1287
+ * stop at the first failure. Adding a handler later with `withHandler` keeps
1288
+ * them.
1289
+ *
1290
+ * A validation sees only the input that exists where it is applied. Add it
1291
+ * after `withSharedFlags` to see the shared flags. Added after
1292
+ * `withSubcommands`, it also runs when a subcommand is selected, with the
1293
+ * parent's shared flags as input.
1294
+ *
1295
+ * **Example** (Rejecting mutually exclusive flags)
1296
+ *
1297
+ * ```ts import.meta.vitest
1298
+ * import { Effect, FileSystem, Layer, Path, Stdio, Terminal } from "effect"
1299
+ * import { CliError, Command, Flag } from "effect/cli"
1300
+ * import { ChildProcessSpawner } from "effect/process"
1301
+ * import { TestConsole } from "effect/testing"
1302
+ *
1303
+ * const CliTestLayer = Layer.mergeAll(
1304
+ * FileSystem.layerNoop({}),
1305
+ * Path.layer,
1306
+ * Stdio.layerTest({}),
1307
+ * TestConsole.layer,
1308
+ * Layer.succeed(Terminal.Terminal, Terminal.make({
1309
+ * columns: Effect.succeed(80),
1310
+ * rows: Effect.succeed(24),
1311
+ * readInput: Effect.die("unused"),
1312
+ * readLine: Effect.die("unused"),
1313
+ * display: () => Effect.void
1314
+ * })),
1315
+ * Layer.succeed(
1316
+ * ChildProcessSpawner.ChildProcessSpawner,
1317
+ * ChildProcessSpawner.make(() => Effect.die("unused"))
1318
+ * )
1319
+ * )
1320
+ *
1321
+ * const download = Command.make("download", {
1322
+ * useApi: Flag.Boolean("use-api").pipe(Flag.withDefault(false)),
1323
+ * useDocker: Flag.Boolean("use-docker").pipe(Flag.withDefault(false))
1324
+ * }, () => Effect.void).pipe(
1325
+ * Command.validate(({ useApi, useDocker }) =>
1326
+ * useApi && useDocker
1327
+ * ? Effect.fail(
1328
+ * new CliError.ValidationError({
1329
+ * message: "--use-api and --use-docker are mutually exclusive"
1330
+ * })
1331
+ * )
1332
+ * : Effect.void
1333
+ * )
1334
+ * )
1335
+ *
1336
+ * const error = await Effect.runPromise(
1337
+ * Command.runWith(download, { version: "1.0.0" })(["--use-api", "--use-docker"]).pipe(
1338
+ * Effect.flip,
1339
+ * Effect.provide(CliTestLayer)
1340
+ * )
1341
+ * )
1342
+ * error._tag // => "ShowHelp"
1343
+ * error.errors[0].message // => "--use-api and --use-docker are mutually exclusive"
1344
+ * ```
1345
+ *
1346
+ * @stability unstable
1347
+ * @category combinators
1348
+ * @since 4.1.0
1349
+ */
1350
+ <Name extends string, Input, ContextInput, E, R>(
1351
+ self: Command<Name, Input, ContextInput, E, R>,
1352
+ f: (input: Input) => Effect.Effect<void, CliError.CliError, Environment>
1353
+ ): Command<Name, Input, ContextInput, E, R>
1354
+ } = dual(2, <Name extends string, Input, ContextInput, E, R>(
1355
+ self: Command<Name, Input, ContextInput, E, R>,
1356
+ f: (input: Input) => Effect.Effect<void, CliError.CliError, Environment>
1357
+ ): Command<Name, Input, ContextInput, E, R> => {
1358
+ const impl = toImpl(self)
1359
+ return makeCommand({
1360
+ ...impl,
1361
+ parse: (raw) => Effect.tap(impl.parse(raw), f)
1362
+ }) as any
1363
+ })
1364
+
1124
1365
  interface SubcommandGroupInternal {
1125
1366
  readonly group: string | undefined
1126
1367
  readonly commands: NonEmptyReadonlyArray<Command.Any>
@@ -1475,7 +1716,7 @@ export const withSubcommands: {
1475
1716
  unlisted: impl.unlisted,
1476
1717
  annotations: impl.annotations,
1477
1718
  globalFlags: impl.globalFlags,
1478
- examples: impl.examples,
1719
+ resolveExamples: impl.resolveExamples,
1479
1720
  service: impl.service,
1480
1721
  subcommands: normalized.groups,
1481
1722
  parse,
@@ -1597,7 +1838,7 @@ export const withSharedFlags: {
1597
1838
  unlisted: impl.unlisted,
1598
1839
  annotations: impl.annotations,
1599
1840
  globalFlags: impl.globalFlags,
1600
- examples: impl.examples,
1841
+ resolveExamples: impl.resolveExamples,
1601
1842
  service: impl.service as Context.Key<CommandContext<Name>, NextContextInput>,
1602
1843
  subcommands: impl.subcommands,
1603
1844
  parse,
@@ -2163,6 +2404,10 @@ export const annotateMerge: {
2163
2404
  * Examples are exposed in structured `HelpDoc` data and rendered by the
2164
2405
  * default formatter in an `EXAMPLES` section.
2165
2406
  *
2407
+ * Pass a function to build examples from the `commandPath` shown in help, so
2408
+ * they stay correct wherever the command is mounted. The `examples` field
2409
+ * resolves the function with the command's own name as the path.
2410
+ *
2166
2411
  * **Example** (Adding usage examples)
2167
2412
  *
2168
2413
  * ```ts import.meta.vitest
@@ -2178,6 +2423,20 @@ export const annotateMerge: {
2178
2423
  * login.examples.map((example) => example.command) // => ["myapp login", "myapp login --token sbp_abc123"]
2179
2424
  * ```
2180
2425
  *
2426
+ * **Example** (Deriving examples from the command path)
2427
+ *
2428
+ * ```ts import.meta.vitest
2429
+ * import { Command } from "effect/cli"
2430
+ *
2431
+ * const deploy = Command.make("deploy").pipe(
2432
+ * Command.withExamples(({ commandPath }) => [
2433
+ * { command: `${commandPath.join(" ")} --yes`, description: "Take every default" }
2434
+ * ])
2435
+ * )
2436
+ *
2437
+ * deploy.examples.map((example) => example.command) // => ["deploy --yes"]
2438
+ * ```
2439
+ *
2181
2440
  * @stability unstable
2182
2441
  * @category combinators
2183
2442
  * @since 4.0.0
@@ -2191,6 +2450,10 @@ export const withExamples: {
2191
2450
  * Examples are exposed in structured `HelpDoc` data and rendered by the
2192
2451
  * default formatter in an `EXAMPLES` section.
2193
2452
  *
2453
+ * Pass a function to build examples from the `commandPath` shown in help, so
2454
+ * they stay correct wherever the command is mounted. The `examples` field
2455
+ * resolves the function with the command's own name as the path.
2456
+ *
2194
2457
  * **Example** (Adding usage examples)
2195
2458
  *
2196
2459
  * ```ts import.meta.vitest
@@ -2206,11 +2469,29 @@ export const withExamples: {
2206
2469
  * login.examples.map((example) => example.command) // => ["myapp login", "myapp login --token sbp_abc123"]
2207
2470
  * ```
2208
2471
  *
2472
+ * **Example** (Deriving examples from the command path)
2473
+ *
2474
+ * ```ts import.meta.vitest
2475
+ * import { Command } from "effect/cli"
2476
+ *
2477
+ * const deploy = Command.make("deploy").pipe(
2478
+ * Command.withExamples(({ commandPath }) => [
2479
+ * { command: `${commandPath.join(" ")} --yes`, description: "Take every default" }
2480
+ * ])
2481
+ * )
2482
+ *
2483
+ * deploy.examples.map((example) => example.command) // => ["deploy --yes"]
2484
+ * ```
2485
+ *
2209
2486
  * @stability unstable
2210
2487
  * @category combinators
2211
2488
  * @since 4.0.0
2212
2489
  */
2213
- (examples: ReadonlyArray<Command.Example>): <const Name extends string, Input, E, R, ContextInput>(
2490
+ (
2491
+ examples:
2492
+ | ReadonlyArray<Command.Example>
2493
+ | ((context: { readonly commandPath: ReadonlyArray<string> }) => ReadonlyArray<Command.Example>)
2494
+ ): <const Name extends string, Input, E, R, ContextInput>(
2214
2495
  self: Command<Name, Input, ContextInput, E, R>
2215
2496
  ) => Command<Name, Input, ContextInput, E, R>
2216
2497
  /**
@@ -2221,6 +2502,10 @@ export const withExamples: {
2221
2502
  * Examples are exposed in structured `HelpDoc` data and rendered by the
2222
2503
  * default formatter in an `EXAMPLES` section.
2223
2504
  *
2505
+ * Pass a function to build examples from the `commandPath` shown in help, so
2506
+ * they stay correct wherever the command is mounted. The `examples` field
2507
+ * resolves the function with the command's own name as the path.
2508
+ *
2224
2509
  * **Example** (Adding usage examples)
2225
2510
  *
2226
2511
  * ```ts import.meta.vitest
@@ -2236,18 +2521,40 @@ export const withExamples: {
2236
2521
  * login.examples.map((example) => example.command) // => ["myapp login", "myapp login --token sbp_abc123"]
2237
2522
  * ```
2238
2523
  *
2524
+ * **Example** (Deriving examples from the command path)
2525
+ *
2526
+ * ```ts import.meta.vitest
2527
+ * import { Command } from "effect/cli"
2528
+ *
2529
+ * const deploy = Command.make("deploy").pipe(
2530
+ * Command.withExamples(({ commandPath }) => [
2531
+ * { command: `${commandPath.join(" ")} --yes`, description: "Take every default" }
2532
+ * ])
2533
+ * )
2534
+ *
2535
+ * deploy.examples.map((example) => example.command) // => ["deploy --yes"]
2536
+ * ```
2537
+ *
2239
2538
  * @stability unstable
2240
2539
  * @category combinators
2241
2540
  * @since 4.0.0
2242
2541
  */
2243
2542
  <const Name extends string, Input, E, R, ContextInput>(
2244
2543
  self: Command<Name, Input, ContextInput, E, R>,
2245
- examples: ReadonlyArray<Command.Example>
2544
+ examples:
2545
+ | ReadonlyArray<Command.Example>
2546
+ | ((context: { readonly commandPath: ReadonlyArray<string> }) => ReadonlyArray<Command.Example>)
2246
2547
  ): Command<Name, Input, ContextInput, E, R>
2247
2548
  } = dual(2, <const Name extends string, Input, E, R, ContextInput>(
2248
2549
  self: Command<Name, Input, ContextInput, E, R>,
2249
- examples: ReadonlyArray<Command.Example>
2250
- ) => makeCommand({ ...toImpl(self), examples }))
2550
+ examples:
2551
+ | ReadonlyArray<Command.Example>
2552
+ | ((context: { readonly commandPath: ReadonlyArray<string> }) => ReadonlyArray<Command.Example>)
2553
+ ) =>
2554
+ makeCommand({
2555
+ ...toImpl(self),
2556
+ resolveExamples: Predicate.isFunction(examples) ? (commandPath) => examples({ commandPath }) : () => examples
2557
+ }))
2251
2558
 
2252
2559
  /* ========================================================================== */
2253
2560
  /* Providing Services */
@@ -2755,7 +3062,7 @@ const showHelp = <Name extends string, Input, E, R, ContextInput>(
2755
3062
  ): Effect.Effect<void, CliError.CliError, Environment> =>
2756
3063
  Effect.gen(function*() {
2757
3064
  const { builtIns } = yield* CliConfig.CliConfig
2758
- const formatter = yield* CliOutput.Formatter
3065
+ const formatter = yield* resolveFormatter
2759
3066
  const helpDoc = yield* getHelpForCommandPath(command, error.commandPath, builtIns)
2760
3067
  yield* Console.log(formatter.formatHelpDoc(helpDoc))
2761
3068
  if (renderErrors && error.errors.length > 0) {
@@ -2765,7 +3072,7 @@ const showHelp = <Name extends string, Input, E, R, ContextInput>(
2765
3072
 
2766
3073
  const showUserError = (error: CliError.UserError): Effect.Effect<void> =>
2767
3074
  Effect.gen(function*() {
2768
- const formatter = yield* CliOutput.Formatter
3075
+ const formatter = yield* resolveFormatter
2769
3076
  yield* Console.error(formatter.formatError(error))
2770
3077
  error[Runtime.errorReported] = false
2771
3078
  })
@@ -53,6 +53,11 @@ export interface FlagDescriptor {
53
53
  * `=` (`--name=value`), never given as the next word.
54
54
  */
55
55
  readonly optionalValue?: boolean | undefined
56
+ /**
57
+ * Long name that sets a boolean flag to `false`. Defaults to `no-<name>`;
58
+ * `false` means the flag has no negated form.
59
+ */
60
+ readonly negation?: string | false | undefined
56
61
  }
57
62
 
58
63
  /**
package/src/cli/Flag.ts CHANGED
@@ -712,6 +712,123 @@ export const withOptionalValue: {
712
712
  <A>(self: Flag<A>, value: string): Flag<A>
713
713
  } = dual(2, <A>(self: Flag<A>, value: string) => Param.withOptionalValue(self, value))
714
714
 
715
+ /**
716
+ * Renames the negated form of a boolean flag, which defaults to `--no-<name>`.
717
+ *
718
+ * **Details**
719
+ *
720
+ * The new name replaces the default, so `--no-<name>` is no longer accepted
721
+ * and shell completions offer the new name instead. Has no effect on
722
+ * non-boolean flags.
723
+ *
724
+ * **Example** (Renaming a boolean flag's negation)
725
+ *
726
+ * ```ts import.meta.vitest
727
+ * import { Flag } from "effect/cli"
728
+ *
729
+ * const validate = Flag.Boolean("validate").pipe(
730
+ * Flag.withDefault(true),
731
+ * Flag.withNegation("skip-validate")
732
+ * )
733
+ * // --validate => true
734
+ * // --skip-validate => false
735
+ * // --no-validate => unrecognized flag
736
+ * validate.kind // => "flag"
737
+ * ```
738
+ *
739
+ * @stability unstable
740
+ * @category combinators
741
+ * @since 4.1.0
742
+ */
743
+ export const withNegation: {
744
+ /**
745
+ * Renames the negated form of a boolean flag, which defaults to `--no-<name>`.
746
+ *
747
+ * **Details**
748
+ *
749
+ * The new name replaces the default, so `--no-<name>` is no longer accepted
750
+ * and shell completions offer the new name instead. Has no effect on
751
+ * non-boolean flags.
752
+ *
753
+ * **Example** (Renaming a boolean flag's negation)
754
+ *
755
+ * ```ts import.meta.vitest
756
+ * import { Flag } from "effect/cli"
757
+ *
758
+ * const validate = Flag.Boolean("validate").pipe(
759
+ * Flag.withDefault(true),
760
+ * Flag.withNegation("skip-validate")
761
+ * )
762
+ * // --validate => true
763
+ * // --skip-validate => false
764
+ * // --no-validate => unrecognized flag
765
+ * validate.kind // => "flag"
766
+ * ```
767
+ *
768
+ * @stability unstable
769
+ * @category combinators
770
+ * @since 4.1.0
771
+ */
772
+ (name: string): <A>(self: Flag<A>) => Flag<A>
773
+ /**
774
+ * Renames the negated form of a boolean flag, which defaults to `--no-<name>`.
775
+ *
776
+ * **Details**
777
+ *
778
+ * The new name replaces the default, so `--no-<name>` is no longer accepted
779
+ * and shell completions offer the new name instead. Has no effect on
780
+ * non-boolean flags.
781
+ *
782
+ * **Example** (Renaming a boolean flag's negation)
783
+ *
784
+ * ```ts import.meta.vitest
785
+ * import { Flag } from "effect/cli"
786
+ *
787
+ * const validate = Flag.Boolean("validate").pipe(
788
+ * Flag.withDefault(true),
789
+ * Flag.withNegation("skip-validate")
790
+ * )
791
+ * // --validate => true
792
+ * // --skip-validate => false
793
+ * // --no-validate => unrecognized flag
794
+ * validate.kind // => "flag"
795
+ * ```
796
+ *
797
+ * @stability unstable
798
+ * @category combinators
799
+ * @since 4.1.0
800
+ */
801
+ <A>(self: Flag<A>, name: string): Flag<A>
802
+ } = dual(2, <A>(self: Flag<A>, name: string) => Param.withNegation(self, name))
803
+
804
+ /**
805
+ * Removes the negated `--no-<name>` form of a boolean flag.
806
+ *
807
+ * **Details**
808
+ *
809
+ * The negated form is then rejected as an unrecognized flag and left out of
810
+ * shell completions. Has no effect on non-boolean flags.
811
+ *
812
+ * **Example** (Disabling a boolean flag's negation)
813
+ *
814
+ * ```ts import.meta.vitest
815
+ * import { Flag } from "effect/cli"
816
+ *
817
+ * const unsafe = Flag.Boolean("unsafe").pipe(
818
+ * Flag.withDefault(false),
819
+ * Flag.withoutNegation
820
+ * )
821
+ * // --unsafe => true
822
+ * // --no-unsafe => unrecognized flag
823
+ * unsafe.kind // => "flag"
824
+ * ```
825
+ *
826
+ * @stability unstable
827
+ * @category combinators
828
+ * @since 4.1.0
829
+ */
830
+ export const withoutNegation = <A>(self: Flag<A>): Flag<A> => Param.withoutNegation(self)
831
+
715
832
  // -------------------------------------------------------------------------------------
716
833
  // metadata
717
834
  // -------------------------------------------------------------------------------------
@@ -17,11 +17,11 @@ import * as Context from "../Context.ts"
17
17
  import * as Effect from "../Effect.ts"
18
18
  import type { LogLevel as LogLevelType } from "../LogLevel.ts"
19
19
  import * as Option from "../Option.ts"
20
- import * as CliOutput from "./CliOutput.ts"
21
20
  import type * as Command from "./Command.ts"
22
21
  import * as Completions_ from "./Completions.ts"
23
22
  import * as Flag from "./Flag.ts"
24
23
  import * as CommandDescriptor from "./internal/completions/descriptor.ts"
24
+ import { resolveFormatter } from "./internal/formatter.ts"
25
25
  import * as HelpInternal from "./internal/help.ts"
26
26
 
27
27
  /* ========================================================================== */
@@ -169,7 +169,7 @@ export const Help: Action<boolean> = Action({
169
169
  Flag.withDefault(false)
170
170
  ),
171
171
  run: Effect.fnUntraced(function*(_, { builtIns, command, commandPath }) {
172
- const formatter = yield* CliOutput.Formatter
172
+ const formatter = yield* resolveFormatter
173
173
  const helpDoc = yield* HelpInternal.getHelpForCommandPath(command, commandPath, builtIns)
174
174
  yield* Console.log(formatter.formatHelpDoc(helpDoc))
175
175
  })
@@ -193,7 +193,7 @@ export const Version: Action<boolean> = Action({
193
193
  Flag.withDefault(false)
194
194
  ),
195
195
  run: Effect.fnUntraced(function*(_, { command, version }) {
196
- const formatter = yield* CliOutput.Formatter
196
+ const formatter = yield* resolveFormatter
197
197
  yield* Console.log(formatter.formatVersion(command.name, version))
198
198
  })
199
199
  })