effect 4.0.4 → 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 (1079) 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/src/52_graphql/10_basics.ts +19 -13
  4. package/ai-docs/src/52_graphql/30_batching.ts +6 -4
  5. package/ai-docs/src/52_graphql/40_aliased-batching.ts +6 -4
  6. package/ai-docs/tsconfig.json +3 -1
  7. package/dist/Array.d.ts +207 -58
  8. package/dist/Array.d.ts.map +1 -1
  9. package/dist/Array.js +45 -22
  10. package/dist/Array.js.map +1 -1
  11. package/dist/Bytes.d.ts +79 -0
  12. package/dist/Bytes.d.ts.map +1 -0
  13. package/dist/Bytes.js +109 -0
  14. package/dist/Bytes.js.map +1 -0
  15. package/dist/Channel.d.ts +187 -14
  16. package/dist/Channel.d.ts.map +1 -1
  17. package/dist/Channel.js +142 -33
  18. package/dist/Channel.js.map +1 -1
  19. package/dist/ChannelSchema.d.ts.map +1 -1
  20. package/dist/ChannelSchema.js.map +1 -1
  21. package/dist/Chunk.d.ts +39 -21
  22. package/dist/Chunk.d.ts.map +1 -1
  23. package/dist/Chunk.js +26 -17
  24. package/dist/Chunk.js.map +1 -1
  25. package/dist/Config.d.ts.map +1 -1
  26. package/dist/Config.js +8 -3
  27. package/dist/Config.js.map +1 -1
  28. package/dist/ConfigProvider.d.ts.map +1 -1
  29. package/dist/ConfigProvider.js +34 -32
  30. package/dist/ConfigProvider.js.map +1 -1
  31. package/dist/Cron.d.ts +2 -2
  32. package/dist/Cron.d.ts.map +1 -1
  33. package/dist/Cron.js +6 -3
  34. package/dist/Cron.js.map +1 -1
  35. package/dist/Duration.d.ts.map +1 -1
  36. package/dist/Duration.js +58 -21
  37. package/dist/Duration.js.map +1 -1
  38. package/dist/Effect.d.ts +548 -182
  39. package/dist/Effect.d.ts.map +1 -1
  40. package/dist/Effect.js +261 -76
  41. package/dist/Effect.js.map +1 -1
  42. package/dist/Equivalence.d.ts +2 -1
  43. package/dist/Equivalence.d.ts.map +1 -1
  44. package/dist/Equivalence.js +12 -8
  45. package/dist/Equivalence.js.map +1 -1
  46. package/dist/Exit.d.ts +24 -9
  47. package/dist/Exit.d.ts.map +1 -1
  48. package/dist/Exit.js +8 -3
  49. package/dist/Exit.js.map +1 -1
  50. package/dist/FiberHandle.d.ts +2 -0
  51. package/dist/FiberHandle.d.ts.map +1 -1
  52. package/dist/FiberHandle.js +9 -4
  53. package/dist/FiberHandle.js.map +1 -1
  54. package/dist/FiberMap.d.ts +2 -0
  55. package/dist/FiberMap.d.ts.map +1 -1
  56. package/dist/FiberMap.js +5 -2
  57. package/dist/FiberMap.js.map +1 -1
  58. package/dist/FileSystem.d.ts +28 -9
  59. package/dist/FileSystem.d.ts.map +1 -1
  60. package/dist/FileSystem.js +3 -0
  61. package/dist/FileSystem.js.map +1 -1
  62. package/dist/Graph.d.ts.map +1 -1
  63. package/dist/Graph.js.map +1 -1
  64. package/dist/HashSet.d.ts.map +1 -1
  65. package/dist/HashSet.js.map +1 -1
  66. package/dist/Iterable.d.ts.map +1 -1
  67. package/dist/Iterable.js +18 -17
  68. package/dist/Iterable.js.map +1 -1
  69. package/dist/JsonSchema.d.ts +9 -3
  70. package/dist/JsonSchema.d.ts.map +1 -1
  71. package/dist/JsonSchema.js +19 -3
  72. package/dist/JsonSchema.js.map +1 -1
  73. package/dist/Layer.d.ts.map +1 -1
  74. package/dist/Layer.js +2 -2
  75. package/dist/Layer.js.map +1 -1
  76. package/dist/ManagedRuntime.d.ts +19 -1
  77. package/dist/ManagedRuntime.d.ts.map +1 -1
  78. package/dist/ManagedRuntime.js +62 -6
  79. package/dist/ManagedRuntime.js.map +1 -1
  80. package/dist/Match.d.ts +20 -6
  81. package/dist/Match.d.ts.map +1 -1
  82. package/dist/Match.js +2 -2
  83. package/dist/Match.js.map +1 -1
  84. package/dist/Metric.d.ts +132 -0
  85. package/dist/Metric.d.ts.map +1 -1
  86. package/dist/Metric.js +197 -25
  87. package/dist/Metric.js.map +1 -1
  88. package/dist/MutableHashMap.d.ts.map +1 -1
  89. package/dist/MutableHashMap.js.map +1 -1
  90. package/dist/Number.js +2 -2
  91. package/dist/Number.js.map +1 -1
  92. package/dist/Optic.d.ts.map +1 -1
  93. package/dist/Optic.js.map +1 -1
  94. package/dist/Path.d.ts +37 -5
  95. package/dist/Path.d.ts.map +1 -1
  96. package/dist/Path.js +44 -6
  97. package/dist/Path.js.map +1 -1
  98. package/dist/PubSub.d.ts.map +1 -1
  99. package/dist/PubSub.js +12 -7
  100. package/dist/PubSub.js.map +1 -1
  101. package/dist/Queue.d.ts +4 -1
  102. package/dist/Queue.d.ts.map +1 -1
  103. package/dist/Queue.js +4 -1
  104. package/dist/Queue.js.map +1 -1
  105. package/dist/Random.d.ts.map +1 -1
  106. package/dist/Random.js +1 -1
  107. package/dist/Random.js.map +1 -1
  108. package/dist/RcMap.d.ts +12 -7
  109. package/dist/RcMap.d.ts.map +1 -1
  110. package/dist/RcMap.js +9 -6
  111. package/dist/RcMap.js.map +1 -1
  112. package/dist/Record.d.ts +51 -0
  113. package/dist/Record.d.ts.map +1 -1
  114. package/dist/Record.js +17 -0
  115. package/dist/Record.js.map +1 -1
  116. package/dist/Ref.d.ts.map +1 -1
  117. package/dist/Ref.js.map +1 -1
  118. package/dist/References.d.ts +5 -4
  119. package/dist/References.d.ts.map +1 -1
  120. package/dist/References.js +5 -4
  121. package/dist/References.js.map +1 -1
  122. package/dist/RequestResolver.d.ts +31 -1
  123. package/dist/RequestResolver.d.ts.map +1 -1
  124. package/dist/RequestResolver.js +39 -4
  125. package/dist/RequestResolver.js.map +1 -1
  126. package/dist/Resource.js +1 -1
  127. package/dist/Resource.js.map +1 -1
  128. package/dist/Runtime.d.ts +3 -3
  129. package/dist/Runtime.d.ts.map +1 -1
  130. package/dist/Runtime.js +18 -15
  131. package/dist/Runtime.js.map +1 -1
  132. package/dist/Schedule.d.ts.map +1 -1
  133. package/dist/Schedule.js.map +1 -1
  134. package/dist/Schema.d.ts +383 -326
  135. package/dist/Schema.d.ts.map +1 -1
  136. package/dist/Schema.js +338 -17
  137. package/dist/Schema.js.map +1 -1
  138. package/dist/SchemaAST.d.ts +5 -5
  139. package/dist/SchemaAST.d.ts.map +1 -1
  140. package/dist/SchemaAST.js +24 -8
  141. package/dist/SchemaAST.js.map +1 -1
  142. package/dist/SchemaGetter.d.ts +8 -3
  143. package/dist/SchemaGetter.d.ts.map +1 -1
  144. package/dist/SchemaGetter.js +15 -5
  145. package/dist/SchemaGetter.js.map +1 -1
  146. package/dist/SchemaIssue.d.ts +4 -4
  147. package/dist/SchemaIssue.d.ts.map +1 -1
  148. package/dist/SchemaIssue.js +29 -51
  149. package/dist/SchemaIssue.js.map +1 -1
  150. package/dist/SchemaRepresentation.d.ts +56 -1
  151. package/dist/SchemaRepresentation.d.ts.map +1 -1
  152. package/dist/SchemaRepresentation.js +18 -0
  153. package/dist/SchemaRepresentation.js.map +1 -1
  154. package/dist/SchemaTransformation.d.ts +1 -1
  155. package/dist/SchemaTransformation.js +1 -1
  156. package/dist/Scope.d.ts +12 -2
  157. package/dist/Scope.d.ts.map +1 -1
  158. package/dist/Scope.js +5 -0
  159. package/dist/Scope.js.map +1 -1
  160. package/dist/ScopedCache.d.ts +10 -7
  161. package/dist/ScopedCache.d.ts.map +1 -1
  162. package/dist/ScopedCache.js +9 -5
  163. package/dist/ScopedCache.js.map +1 -1
  164. package/dist/SemVer.d.ts +1196 -0
  165. package/dist/SemVer.d.ts.map +1 -0
  166. package/dist/SemVer.js +756 -0
  167. package/dist/SemVer.js.map +1 -0
  168. package/dist/SemVerRange.d.ts +559 -0
  169. package/dist/SemVerRange.d.ts.map +1 -0
  170. package/dist/SemVerRange.js +551 -0
  171. package/dist/SemVerRange.js.map +1 -0
  172. package/dist/Sink.d.ts.map +1 -1
  173. package/dist/Sink.js +6 -2
  174. package/dist/Sink.js.map +1 -1
  175. package/dist/Stream.d.ts +235 -8
  176. package/dist/Stream.d.ts.map +1 -1
  177. package/dist/Stream.js +145 -60
  178. package/dist/Stream.js.map +1 -1
  179. package/dist/String.d.ts +16 -2
  180. package/dist/String.d.ts.map +1 -1
  181. package/dist/String.js +25 -10
  182. package/dist/String.js.map +1 -1
  183. package/dist/TextDiff.d.ts +399 -0
  184. package/dist/TextDiff.d.ts.map +1 -0
  185. package/dist/TextDiff.js +634 -0
  186. package/dist/TextDiff.js.map +1 -0
  187. package/dist/TxHashMap.d.ts.map +1 -1
  188. package/dist/TxHashMap.js.map +1 -1
  189. package/dist/TxHashSet.d.ts.map +1 -1
  190. package/dist/TxHashSet.js.map +1 -1
  191. package/dist/TxRef.d.ts.map +1 -1
  192. package/dist/TxRef.js +3 -2
  193. package/dist/TxRef.js.map +1 -1
  194. package/dist/ai/AiError.d.ts +78 -14
  195. package/dist/ai/AiError.d.ts.map +1 -1
  196. package/dist/ai/AiError.js +51 -3
  197. package/dist/ai/AiError.js.map +1 -1
  198. package/dist/ai/Chat.d.ts +1 -2
  199. package/dist/ai/Chat.d.ts.map +1 -1
  200. package/dist/ai/Chat.js +6 -3
  201. package/dist/ai/Chat.js.map +1 -1
  202. package/dist/ai/Decision.d.ts +116 -20
  203. package/dist/ai/Decision.d.ts.map +1 -1
  204. package/dist/ai/Decision.js +37 -3
  205. package/dist/ai/Decision.js.map +1 -1
  206. package/dist/ai/DecisionModel.d.ts +129 -11
  207. package/dist/ai/DecisionModel.d.ts.map +1 -1
  208. package/dist/ai/DecisionModel.js +183 -95
  209. package/dist/ai/DecisionModel.js.map +1 -1
  210. package/dist/ai/EmbeddingModel.d.ts +10 -0
  211. package/dist/ai/EmbeddingModel.d.ts.map +1 -1
  212. package/dist/ai/EmbeddingModel.js +21 -7
  213. package/dist/ai/EmbeddingModel.js.map +1 -1
  214. package/dist/ai/LanguageModel.d.ts.map +1 -1
  215. package/dist/ai/LanguageModel.js +47 -35
  216. package/dist/ai/LanguageModel.js.map +1 -1
  217. package/dist/ai/McpClient.d.ts +289 -0
  218. package/dist/ai/McpClient.d.ts.map +1 -0
  219. package/dist/ai/McpClient.js +819 -0
  220. package/dist/ai/McpClient.js.map +1 -0
  221. package/dist/ai/McpClientError.d.ts +254 -0
  222. package/dist/ai/McpClientError.d.ts.map +1 -0
  223. package/dist/ai/McpClientError.js +260 -0
  224. package/dist/ai/McpClientError.js.map +1 -0
  225. package/dist/ai/McpProtocol.d.ts +2 -2
  226. package/dist/ai/McpProtocol.d.ts.map +1 -1
  227. package/dist/ai/McpSchema.d.ts +368 -235
  228. package/dist/ai/McpSchema.d.ts.map +1 -1
  229. package/dist/ai/McpSchema.js +94 -24
  230. package/dist/ai/McpSchema.js.map +1 -1
  231. package/dist/ai/McpServer.d.ts +6 -52
  232. package/dist/ai/McpServer.d.ts.map +1 -1
  233. package/dist/ai/McpServer.js +27 -50
  234. package/dist/ai/McpServer.js.map +1 -1
  235. package/dist/ai/Prompt.d.ts +22 -20
  236. package/dist/ai/Prompt.d.ts.map +1 -1
  237. package/dist/ai/Prompt.js +23 -1
  238. package/dist/ai/Prompt.js.map +1 -1
  239. package/dist/ai/Response.d.ts +148 -4
  240. package/dist/ai/Response.d.ts.map +1 -1
  241. package/dist/ai/Response.js +35 -37
  242. package/dist/ai/Response.js.map +1 -1
  243. package/dist/ai/Tool.d.ts +12 -4
  244. package/dist/ai/Tool.d.ts.map +1 -1
  245. package/dist/ai/Tool.js.map +1 -1
  246. package/dist/ai/Toolkit.d.ts +48 -1
  247. package/dist/ai/Toolkit.d.ts.map +1 -1
  248. package/dist/ai/Toolkit.js +65 -12
  249. package/dist/ai/Toolkit.js.map +1 -1
  250. package/dist/ai/index.d.ts +10 -0
  251. package/dist/ai/index.d.ts.map +1 -1
  252. package/dist/ai/index.js +10 -0
  253. package/dist/ai/index.js.map +1 -1
  254. package/dist/ai/internal/mcpCore.js.map +1 -1
  255. package/dist/ai/internal/mcpProtocol/v2024_11_05.js +1 -1
  256. package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
  257. package/dist/ai/internal/mcpProtocol/v2025_03_26.js +1 -1
  258. package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
  259. package/dist/ai/internal/mcpProtocol/v2025_06_18.js +2 -2
  260. package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
  261. package/dist/ai/internal/mcpProtocol/v2025_11_25.js +2 -2
  262. package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
  263. package/dist/ai/internal/mcpProtocol/v2026_07_28.js +4 -7
  264. package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
  265. package/dist/ai/internal/mcpProtocol.js +16 -2
  266. package/dist/ai/internal/mcpProtocol.js.map +1 -1
  267. package/dist/ai/internal/mcpRuntime.js +3 -4
  268. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  269. package/dist/ai/internal/mcpSchema/v2024_11_05.js +19 -13
  270. package/dist/ai/internal/mcpSchema/v2024_11_05.js.map +1 -1
  271. package/dist/ai/internal/mcpSchema/v2025_03_26.js +3 -2
  272. package/dist/ai/internal/mcpSchema/v2025_03_26.js.map +1 -1
  273. package/dist/ai/internal/mcpSchema/v2025_06_18.js +7 -7
  274. package/dist/ai/internal/mcpSchema/v2025_06_18.js.map +1 -1
  275. package/dist/ai/internal/mcpSchema/v2025_11_25.js +8 -8
  276. package/dist/ai/internal/mcpSchema/v2025_11_25.js.map +1 -1
  277. package/dist/ai/internal/mcpSchema/v2026_07_28.js +43 -42
  278. package/dist/ai/internal/mcpSchema/v2026_07_28.js.map +1 -1
  279. package/dist/cli/CliError.d.ts +42 -2
  280. package/dist/cli/CliError.d.ts.map +1 -1
  281. package/dist/cli/CliError.js +44 -5
  282. package/dist/cli/CliError.js.map +1 -1
  283. package/dist/cli/Command.d.ts +286 -2
  284. package/dist/cli/Command.d.ts.map +1 -1
  285. package/dist/cli/Command.js +107 -6
  286. package/dist/cli/Command.js.map +1 -1
  287. package/dist/cli/Completions.d.ts +10 -0
  288. package/dist/cli/Completions.d.ts.map +1 -1
  289. package/dist/cli/Completions.js.map +1 -1
  290. package/dist/cli/Flag.d.ts +215 -0
  291. package/dist/cli/Flag.d.ts.map +1 -1
  292. package/dist/cli/Flag.js +89 -0
  293. package/dist/cli/Flag.js.map +1 -1
  294. package/dist/cli/GlobalFlag.d.ts.map +1 -1
  295. package/dist/cli/GlobalFlag.js +3 -3
  296. package/dist/cli/GlobalFlag.js.map +1 -1
  297. package/dist/cli/Param.d.ts +194 -0
  298. package/dist/cli/Param.d.ts.map +1 -1
  299. package/dist/cli/Param.js +86 -0
  300. package/dist/cli/Param.js.map +1 -1
  301. package/dist/cli/TerminalCapabilities.d.ts +84 -0
  302. package/dist/cli/TerminalCapabilities.d.ts.map +1 -0
  303. package/dist/cli/TerminalCapabilities.js +122 -0
  304. package/dist/cli/TerminalCapabilities.js.map +1 -0
  305. package/dist/cli/index.d.ts +5 -0
  306. package/dist/cli/index.d.ts.map +1 -1
  307. package/dist/cli/index.js +5 -0
  308. package/dist/cli/index.js.map +1 -1
  309. package/dist/cli/internal/command.d.ts +2 -1
  310. package/dist/cli/internal/command.d.ts.map +1 -1
  311. package/dist/cli/internal/command.js +7 -3
  312. package/dist/cli/internal/command.js.map +1 -1
  313. package/dist/cli/internal/completions/bash.js +7 -5
  314. package/dist/cli/internal/completions/bash.js.map +1 -1
  315. package/dist/cli/internal/completions/descriptor.js +16 -1
  316. package/dist/cli/internal/completions/descriptor.js.map +1 -1
  317. package/dist/cli/internal/completions/fish.js +12 -10
  318. package/dist/cli/internal/completions/fish.js.map +1 -1
  319. package/dist/cli/internal/completions/powershell.js +20 -10
  320. package/dist/cli/internal/completions/powershell.js.map +1 -1
  321. package/dist/cli/internal/completions/zsh.js +15 -8
  322. package/dist/cli/internal/completions/zsh.js.map +1 -1
  323. package/dist/cli/internal/formatter.d.ts +2 -0
  324. package/dist/cli/internal/formatter.d.ts.map +1 -0
  325. package/dist/cli/internal/formatter.js +15 -0
  326. package/dist/cli/internal/formatter.js.map +1 -0
  327. package/dist/cli/internal/lexer.js +24 -10
  328. package/dist/cli/internal/lexer.js.map +1 -1
  329. package/dist/cli/internal/parser.js +35 -15
  330. package/dist/cli/internal/parser.js.map +1 -1
  331. package/dist/cli/internal/wizard.d.ts.map +1 -1
  332. package/dist/cli/internal/wizard.js +2 -1
  333. package/dist/cli/internal/wizard.js.map +1 -1
  334. package/dist/cluster/ClusterCron.d.ts +29 -1
  335. package/dist/cluster/ClusterCron.d.ts.map +1 -1
  336. package/dist/cluster/ClusterCron.js +64 -32
  337. package/dist/cluster/ClusterCron.js.map +1 -1
  338. package/dist/cluster/ClusterMetrics.d.ts +143 -7
  339. package/dist/cluster/ClusterMetrics.d.ts.map +1 -1
  340. package/dist/cluster/ClusterMetrics.js +151 -7
  341. package/dist/cluster/ClusterMetrics.js.map +1 -1
  342. package/dist/cluster/ClusterWorkflowEngine.d.ts +2 -1
  343. package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
  344. package/dist/cluster/ClusterWorkflowEngine.js +98 -18
  345. package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
  346. package/dist/cluster/Entity.d.ts +2 -0
  347. package/dist/cluster/Entity.d.ts.map +1 -1
  348. package/dist/cluster/Entity.js.map +1 -1
  349. package/dist/cluster/MessageStorage.d.ts +21 -0
  350. package/dist/cluster/MessageStorage.d.ts.map +1 -1
  351. package/dist/cluster/MessageStorage.js +20 -12
  352. package/dist/cluster/MessageStorage.js.map +1 -1
  353. package/dist/cluster/Runners.d.ts.map +1 -1
  354. package/dist/cluster/Runners.js +96 -37
  355. package/dist/cluster/Runners.js.map +1 -1
  356. package/dist/cluster/Sharding.d.ts +1 -0
  357. package/dist/cluster/Sharding.d.ts.map +1 -1
  358. package/dist/cluster/Sharding.js +95 -32
  359. package/dist/cluster/Sharding.js.map +1 -1
  360. package/dist/cluster/ShardingConfig.d.ts +20 -0
  361. package/dist/cluster/ShardingConfig.d.ts.map +1 -1
  362. package/dist/cluster/ShardingConfig.js +4 -0
  363. package/dist/cluster/ShardingConfig.js.map +1 -1
  364. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  365. package/dist/cluster/SqlMessageStorage.js +40 -50
  366. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  367. package/dist/cluster/SqlRunnerStorage.d.ts +2 -2
  368. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  369. package/dist/cluster/SqlRunnerStorage.js +10 -4
  370. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  371. package/dist/cluster/internal/entityManager.js +66 -9
  372. package/dist/cluster/internal/entityManager.js.map +1 -1
  373. package/dist/devtools/DevTools.d.ts +3 -2
  374. package/dist/devtools/DevTools.d.ts.map +1 -1
  375. package/dist/devtools/DevTools.js +3 -2
  376. package/dist/devtools/DevTools.js.map +1 -1
  377. package/dist/devtools/DevToolsClient.d.ts +11 -0
  378. package/dist/devtools/DevToolsClient.d.ts.map +1 -1
  379. package/dist/devtools/DevToolsClient.js +31 -4
  380. package/dist/devtools/DevToolsClient.js.map +1 -1
  381. package/dist/encoding/Base64Url.d.ts +29 -0
  382. package/dist/encoding/Base64Url.d.ts.map +1 -1
  383. package/dist/encoding/Base64Url.js +29 -0
  384. package/dist/encoding/Base64Url.js.map +1 -1
  385. package/dist/encoding/Ini.d.ts.map +1 -1
  386. package/dist/encoding/Ini.js +3 -0
  387. package/dist/encoding/Ini.js.map +1 -1
  388. package/dist/encoding/JsonArray.d.ts +270 -0
  389. package/dist/encoding/JsonArray.d.ts.map +1 -0
  390. package/dist/encoding/JsonArray.js +691 -0
  391. package/dist/encoding/JsonArray.js.map +1 -0
  392. package/dist/encoding/Ndjson.d.ts +43 -4
  393. package/dist/encoding/Ndjson.d.ts.map +1 -1
  394. package/dist/encoding/Ndjson.js +169 -18
  395. package/dist/encoding/Ndjson.js.map +1 -1
  396. package/dist/encoding/SchemaBinary.d.ts +9 -1
  397. package/dist/encoding/SchemaBinary.d.ts.map +1 -1
  398. package/dist/encoding/SchemaBinary.js +12 -19
  399. package/dist/encoding/SchemaBinary.js.map +1 -1
  400. package/dist/encoding/Sse.js +1 -1
  401. package/dist/encoding/Sse.js.map +1 -1
  402. package/dist/encoding/Tar.d.ts +309 -0
  403. package/dist/encoding/Tar.d.ts.map +1 -0
  404. package/dist/encoding/Tar.js +1182 -0
  405. package/dist/encoding/Tar.js.map +1 -0
  406. package/dist/encoding/Toml.js +3 -3
  407. package/dist/encoding/Toml.js.map +1 -1
  408. package/dist/encoding/Xml.d.ts +464 -0
  409. package/dist/encoding/Xml.d.ts.map +1 -0
  410. package/dist/encoding/Xml.js +1619 -0
  411. package/dist/encoding/Xml.js.map +1 -0
  412. package/dist/encoding/Yaml.d.ts +6 -2
  413. package/dist/encoding/Yaml.d.ts.map +1 -1
  414. package/dist/encoding/Yaml.js +97 -34
  415. package/dist/encoding/Yaml.js.map +1 -1
  416. package/dist/encoding/Zip.d.ts +413 -0
  417. package/dist/encoding/Zip.d.ts.map +1 -0
  418. package/dist/encoding/Zip.js +1255 -0
  419. package/dist/encoding/Zip.js.map +1 -0
  420. package/dist/encoding/index.d.ts +20 -0
  421. package/dist/encoding/index.d.ts.map +1 -1
  422. package/dist/encoding/index.js +20 -0
  423. package/dist/encoding/index.js.map +1 -1
  424. package/dist/eventlog/EventJournal.d.ts +90 -5
  425. package/dist/eventlog/EventJournal.d.ts.map +1 -1
  426. package/dist/eventlog/EventJournal.js +488 -228
  427. package/dist/eventlog/EventJournal.js.map +1 -1
  428. package/dist/eventlog/EventLog.d.ts +180 -12
  429. package/dist/eventlog/EventLog.d.ts.map +1 -1
  430. package/dist/eventlog/EventLog.js +394 -146
  431. package/dist/eventlog/EventLog.js.map +1 -1
  432. package/dist/eventlog/EventLogEncryption.d.ts +36 -30
  433. package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
  434. package/dist/eventlog/EventLogEncryption.js +97 -38
  435. package/dist/eventlog/EventLogEncryption.js.map +1 -1
  436. package/dist/eventlog/EventLogMessage.d.ts +74 -34
  437. package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
  438. package/dist/eventlog/EventLogMessage.js +45 -11
  439. package/dist/eventlog/EventLogMessage.js.map +1 -1
  440. package/dist/eventlog/EventLogRemote.d.ts +45 -8
  441. package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
  442. package/dist/eventlog/EventLogRemote.js +51 -14
  443. package/dist/eventlog/EventLogRemote.js.map +1 -1
  444. package/dist/eventlog/EventLogServer.d.ts +46 -3
  445. package/dist/eventlog/EventLogServer.d.ts.map +1 -1
  446. package/dist/eventlog/EventLogServer.js +119 -19
  447. package/dist/eventlog/EventLogServer.js.map +1 -1
  448. package/dist/eventlog/EventLogServerEncrypted.d.ts +23 -33
  449. package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  450. package/dist/eventlog/EventLogServerEncrypted.js +97 -70
  451. package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
  452. package/dist/eventlog/EventLogServerUnencrypted.d.ts +39 -5
  453. package/dist/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
  454. package/dist/eventlog/EventLogServerUnencrypted.js +151 -69
  455. package/dist/eventlog/EventLogServerUnencrypted.js.map +1 -1
  456. package/dist/eventlog/EventRow.d.ts +288 -0
  457. package/dist/eventlog/EventRow.d.ts.map +1 -0
  458. package/dist/eventlog/EventRow.js +435 -0
  459. package/dist/eventlog/EventRow.js.map +1 -0
  460. package/dist/eventlog/SqlEventJournal.d.ts +18 -18
  461. package/dist/eventlog/SqlEventJournal.d.ts.map +1 -1
  462. package/dist/eventlog/SqlEventJournal.js +387 -159
  463. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  464. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +10 -18
  465. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
  466. package/dist/eventlog/SqlEventLogServerEncrypted.js +179 -69
  467. package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  468. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts +23 -3
  469. package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
  470. package/dist/eventlog/SqlEventLogServerUnencrypted.js +102 -51
  471. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  472. package/dist/eventlog/index.d.ts +5 -0
  473. package/dist/eventlog/index.d.ts.map +1 -1
  474. package/dist/eventlog/index.js +5 -0
  475. package/dist/eventlog/index.js.map +1 -1
  476. package/dist/eventlog/internal/conflicts.d.ts +47 -0
  477. package/dist/eventlog/internal/conflicts.d.ts.map +1 -0
  478. package/dist/eventlog/internal/conflicts.js +92 -0
  479. package/dist/eventlog/internal/conflicts.js.map +1 -0
  480. package/dist/graphql/GraphQLClient.d.ts.map +1 -1
  481. package/dist/graphql/GraphQLClient.js +12 -5
  482. package/dist/graphql/GraphQLClient.js.map +1 -1
  483. package/dist/graphql/GraphQLClientError.d.ts +2 -2
  484. package/dist/graphql/GraphQLClientError.d.ts.map +1 -1
  485. package/dist/graphql/GraphQLClientError.js +4 -18
  486. package/dist/graphql/GraphQLClientError.js.map +1 -1
  487. package/dist/graphql/GraphQLProtocol.d.ts +252 -11
  488. package/dist/graphql/GraphQLProtocol.d.ts.map +1 -1
  489. package/dist/graphql/GraphQLProtocol.js +99 -8
  490. package/dist/graphql/GraphQLProtocol.js.map +1 -1
  491. package/dist/graphql/GraphQLResolver.d.ts +3 -1
  492. package/dist/graphql/GraphQLResolver.d.ts.map +1 -1
  493. package/dist/graphql/GraphQLResolver.js +91 -19
  494. package/dist/graphql/GraphQLResolver.js.map +1 -1
  495. package/dist/http/FetchHttpClient.d.ts +13 -3
  496. package/dist/http/FetchHttpClient.d.ts.map +1 -1
  497. package/dist/http/FetchHttpClient.js +56 -6
  498. package/dist/http/FetchHttpClient.js.map +1 -1
  499. package/dist/http/FindMyWay/internal/router.js +12 -1
  500. package/dist/http/FindMyWay/internal/router.js.map +1 -1
  501. package/dist/http/Headers.d.ts +230 -3
  502. package/dist/http/Headers.d.ts.map +1 -1
  503. package/dist/http/Headers.js +267 -5
  504. package/dist/http/Headers.js.map +1 -1
  505. package/dist/http/HttpClient.d.ts +105 -0
  506. package/dist/http/HttpClient.d.ts.map +1 -1
  507. package/dist/http/HttpClient.js +69 -17
  508. package/dist/http/HttpClient.js.map +1 -1
  509. package/dist/http/HttpClientError.d.ts.map +1 -1
  510. package/dist/http/HttpClientError.js +8 -6
  511. package/dist/http/HttpClientError.js.map +1 -1
  512. package/dist/http/HttpClientRequest.d.ts +274 -7
  513. package/dist/http/HttpClientRequest.d.ts.map +1 -1
  514. package/dist/http/HttpClientRequest.js +91 -3
  515. package/dist/http/HttpClientRequest.js.map +1 -1
  516. package/dist/http/HttpClientResponse.d.ts +53 -0
  517. package/dist/http/HttpClientResponse.d.ts.map +1 -1
  518. package/dist/http/HttpClientResponse.js +47 -0
  519. package/dist/http/HttpClientResponse.js.map +1 -1
  520. package/dist/http/HttpEffect.d.ts +6 -2
  521. package/dist/http/HttpEffect.d.ts.map +1 -1
  522. package/dist/http/HttpEffect.js +21 -17
  523. package/dist/http/HttpEffect.js.map +1 -1
  524. package/dist/http/HttpIncomingMessage.d.ts +2 -1
  525. package/dist/http/HttpIncomingMessage.d.ts.map +1 -1
  526. package/dist/http/HttpIncomingMessage.js +3 -23
  527. package/dist/http/HttpIncomingMessage.js.map +1 -1
  528. package/dist/http/HttpMiddleware.d.ts +179 -2
  529. package/dist/http/HttpMiddleware.d.ts.map +1 -1
  530. package/dist/http/HttpMiddleware.js +226 -18
  531. package/dist/http/HttpMiddleware.js.map +1 -1
  532. package/dist/http/HttpRouter.d.ts.map +1 -1
  533. package/dist/http/HttpRouter.js +58 -14
  534. package/dist/http/HttpRouter.js.map +1 -1
  535. package/dist/http/HttpServerError.d.ts +5 -2
  536. package/dist/http/HttpServerError.d.ts.map +1 -1
  537. package/dist/http/HttpServerError.js +11 -7
  538. package/dist/http/HttpServerError.js.map +1 -1
  539. package/dist/http/HttpServerRequest.d.ts +25 -5
  540. package/dist/http/HttpServerRequest.d.ts.map +1 -1
  541. package/dist/http/HttpServerRequest.js +38 -12
  542. package/dist/http/HttpServerRequest.js.map +1 -1
  543. package/dist/http/HttpServerResponse.d.ts +17 -8
  544. package/dist/http/HttpServerResponse.d.ts.map +1 -1
  545. package/dist/http/HttpServerResponse.js +37 -21
  546. package/dist/http/HttpServerResponse.js.map +1 -1
  547. package/dist/http/HttpStaticServer.d.ts +0 -12
  548. package/dist/http/HttpStaticServer.d.ts.map +1 -1
  549. package/dist/http/HttpStaticServer.js +25 -17
  550. package/dist/http/HttpStaticServer.js.map +1 -1
  551. package/dist/http/HttpTraceContext.js +1 -1
  552. package/dist/http/HttpTraceContext.js.map +1 -1
  553. package/dist/http/MultipartParser/internal/contentType.d.ts +15 -1
  554. package/dist/http/MultipartParser/internal/contentType.d.ts.map +1 -1
  555. package/dist/http/MultipartParser/internal/contentType.js +87 -5
  556. package/dist/http/MultipartParser/internal/contentType.js.map +1 -1
  557. package/dist/http/MultipartParser/internal/headers.d.ts.map +1 -1
  558. package/dist/http/MultipartParser/internal/headers.js +4 -12
  559. package/dist/http/MultipartParser/internal/headers.js.map +1 -1
  560. package/dist/http/MultipartParser/internal/multipart.d.ts.map +1 -1
  561. package/dist/http/MultipartParser/internal/multipart.js +6 -27
  562. package/dist/http/MultipartParser/internal/multipart.js.map +1 -1
  563. package/dist/http/Url.d.ts.map +1 -1
  564. package/dist/http/Url.js +8 -2
  565. package/dist/http/Url.js.map +1 -1
  566. package/dist/http/UrlParams.d.ts +112 -8
  567. package/dist/http/UrlParams.d.ts.map +1 -1
  568. package/dist/http/UrlParams.js +141 -14
  569. package/dist/http/UrlParams.js.map +1 -1
  570. package/dist/http/internal/compression.d.ts +1 -1
  571. package/dist/http/internal/compression.d.ts.map +1 -1
  572. package/dist/http/internal/compression.js +2 -10
  573. package/dist/http/internal/compression.js.map +1 -1
  574. package/dist/http/internal/compressionBody.d.ts +2 -0
  575. package/dist/http/internal/compressionBody.d.ts.map +1 -0
  576. package/dist/http/internal/compressionBody.js +36 -0
  577. package/dist/http/internal/compressionBody.js.map +1 -0
  578. package/dist/http/internal/decompression.d.ts +2 -0
  579. package/dist/http/internal/decompression.d.ts.map +1 -0
  580. package/dist/http/internal/decompression.js +168 -0
  581. package/dist/http/internal/decompression.js.map +1 -0
  582. package/dist/http/internal/lazyStream.d.ts +2 -0
  583. package/dist/http/internal/lazyStream.d.ts.map +1 -0
  584. package/dist/http/internal/lazyStream.js +18 -0
  585. package/dist/http/internal/lazyStream.js.map +1 -0
  586. package/dist/http/internal/requestState.d.ts +2 -0
  587. package/dist/http/internal/requestState.d.ts.map +1 -0
  588. package/dist/http/internal/requestState.js +28 -0
  589. package/dist/http/internal/requestState.js.map +1 -0
  590. package/dist/http/internal/tracing.js +14 -4
  591. package/dist/http/internal/tracing.js.map +1 -1
  592. package/dist/http/internal/urlParams.d.ts +2 -0
  593. package/dist/http/internal/urlParams.d.ts.map +1 -0
  594. package/dist/http/internal/urlParams.js +4 -0
  595. package/dist/http/internal/urlParams.js.map +1 -0
  596. package/dist/http/internal/webResponse.d.ts +2 -0
  597. package/dist/http/internal/webResponse.d.ts.map +1 -0
  598. package/dist/http/internal/webResponse.js +12 -0
  599. package/dist/http/internal/webResponse.js.map +1 -0
  600. package/dist/http-api/HttpApi.js +1 -1
  601. package/dist/http-api/HttpApi.js.map +1 -1
  602. package/dist/http-api/HttpApiBuilder.d.ts.map +1 -1
  603. package/dist/http-api/HttpApiBuilder.js +121 -18
  604. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  605. package/dist/http-api/HttpApiClient.d.ts +29 -4
  606. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  607. package/dist/http-api/HttpApiClient.js +85 -24
  608. package/dist/http-api/HttpApiClient.js.map +1 -1
  609. package/dist/http-api/HttpApiEndpoint.d.ts +55 -29
  610. package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
  611. package/dist/http-api/HttpApiEndpoint.js +49 -5
  612. package/dist/http-api/HttpApiEndpoint.js.map +1 -1
  613. package/dist/http-api/HttpApiError.d.ts +58 -0
  614. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  615. package/dist/http-api/HttpApiError.js +38 -12
  616. package/dist/http-api/HttpApiError.js.map +1 -1
  617. package/dist/http-api/HttpApiScalar.d.ts +2 -1
  618. package/dist/http-api/HttpApiScalar.d.ts.map +1 -1
  619. package/dist/http-api/HttpApiScalar.js +6 -3
  620. package/dist/http-api/HttpApiScalar.js.map +1 -1
  621. package/dist/http-api/HttpApiSchema.d.ts +191 -9
  622. package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
  623. package/dist/http-api/HttpApiSchema.js +137 -4
  624. package/dist/http-api/HttpApiSchema.js.map +1 -1
  625. package/dist/http-api/HttpApiSwagger.d.ts +5 -0
  626. package/dist/http-api/HttpApiSwagger.d.ts.map +1 -1
  627. package/dist/http-api/HttpApiSwagger.js +14 -4
  628. package/dist/http-api/HttpApiSwagger.js.map +1 -1
  629. package/dist/http-api/HttpApiTest.d.ts +13 -2
  630. package/dist/http-api/HttpApiTest.d.ts.map +1 -1
  631. package/dist/http-api/HttpApiTest.js +30 -9
  632. package/dist/http-api/HttpApiTest.js.map +1 -1
  633. package/dist/http-api/OpenApi.d.ts +17 -3
  634. package/dist/http-api/OpenApi.d.ts.map +1 -1
  635. package/dist/http-api/OpenApi.js +57 -32
  636. package/dist/http-api/OpenApi.js.map +1 -1
  637. package/dist/http-api/internal/path.js +35 -10
  638. package/dist/http-api/internal/path.js.map +1 -1
  639. package/dist/index.d.ts +20 -0
  640. package/dist/index.d.ts.map +1 -1
  641. package/dist/index.js +20 -0
  642. package/dist/index.js.map +1 -1
  643. package/dist/internal/core.js +18 -2
  644. package/dist/internal/core.js.map +1 -1
  645. package/dist/internal/dateTime.js +19 -7
  646. package/dist/internal/dateTime.js.map +1 -1
  647. package/dist/internal/effect.js +89 -76
  648. package/dist/internal/effect.js.map +1 -1
  649. package/dist/internal/graphql.js +12 -2
  650. package/dist/internal/graphql.js.map +1 -1
  651. package/dist/internal/hashMap.js +2 -2
  652. package/dist/internal/hashMap.js.map +1 -1
  653. package/dist/internal/hydration.d.ts +2 -0
  654. package/dist/internal/hydration.d.ts.map +1 -0
  655. package/dist/internal/hydration.js +15 -0
  656. package/dist/internal/hydration.js.map +1 -0
  657. package/dist/internal/inflate.d.ts +2 -0
  658. package/dist/internal/inflate.d.ts.map +1 -0
  659. package/dist/internal/inflate.js +680 -0
  660. package/dist/internal/inflate.js.map +1 -0
  661. package/dist/internal/record.js +6 -0
  662. package/dist/internal/record.js.map +1 -1
  663. package/dist/internal/request.js +20 -7
  664. package/dist/internal/request.js.map +1 -1
  665. package/dist/internal/schedule.js +17 -22
  666. package/dist/internal/schedule.js.map +1 -1
  667. package/dist/internal/schema/fromJsonSchemaDocument.js +136 -126
  668. package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
  669. package/dist/internal/schema/interpreter.js +51 -36
  670. package/dist/internal/schema/interpreter.js.map +1 -1
  671. package/dist/internal/schema/standardSchema.js +34 -33
  672. package/dist/internal/schema/standardSchema.js.map +1 -1
  673. package/dist/internal/schema/toCodeDocument.js +7 -2
  674. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  675. package/dist/internal/schema/toCodec.js +86 -1
  676. package/dist/internal/schema/toCodec.js.map +1 -1
  677. package/dist/internal/schema/toFormatter.js +5 -5
  678. package/dist/internal/schema/toFormatter.js.map +1 -1
  679. package/dist/internal/schema/toJsonSchemaDocument.js +60 -38
  680. package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
  681. package/dist/internal/trie.js +1 -3
  682. package/dist/internal/trie.js.map +1 -1
  683. package/dist/internal/uuid.js +7 -3
  684. package/dist/internal/uuid.js.map +1 -1
  685. package/dist/internal/version.js +1 -1
  686. package/dist/net/NetAddress.d.ts.map +1 -1
  687. package/dist/net/NetAddress.js +2 -8
  688. package/dist/net/NetAddress.js.map +1 -1
  689. package/dist/observability/Otlp.d.ts +15 -0
  690. package/dist/observability/Otlp.d.ts.map +1 -1
  691. package/dist/observability/Otlp.js +3 -0
  692. package/dist/observability/Otlp.js.map +1 -1
  693. package/dist/observability/OtlpExporter.d.ts +8 -0
  694. package/dist/observability/OtlpExporter.d.ts.map +1 -1
  695. package/dist/observability/OtlpExporter.js +15 -13
  696. package/dist/observability/OtlpExporter.js.map +1 -1
  697. package/dist/observability/OtlpLogger.d.ts +17 -0
  698. package/dist/observability/OtlpLogger.d.ts.map +1 -1
  699. package/dist/observability/OtlpLogger.js +14 -1
  700. package/dist/observability/OtlpLogger.js.map +1 -1
  701. package/dist/observability/OtlpMetrics.d.ts +17 -0
  702. package/dist/observability/OtlpMetrics.d.ts.map +1 -1
  703. package/dist/observability/OtlpMetrics.js +18 -3
  704. package/dist/observability/OtlpMetrics.js.map +1 -1
  705. package/dist/observability/OtlpResource.d.ts +3 -1
  706. package/dist/observability/OtlpResource.d.ts.map +1 -1
  707. package/dist/observability/OtlpResource.js +11 -4
  708. package/dist/observability/OtlpResource.js.map +1 -1
  709. package/dist/observability/OtlpSerialization.d.ts +5 -0
  710. package/dist/observability/OtlpSerialization.d.ts.map +1 -1
  711. package/dist/observability/OtlpSerialization.js +14 -3
  712. package/dist/observability/OtlpSerialization.js.map +1 -1
  713. package/dist/observability/OtlpTracer.d.ts +17 -0
  714. package/dist/observability/OtlpTracer.d.ts.map +1 -1
  715. package/dist/observability/OtlpTracer.js +15 -2
  716. package/dist/observability/OtlpTracer.js.map +1 -1
  717. package/dist/observability/internal/protobuf.d.ts +0 -9
  718. package/dist/observability/internal/protobuf.d.ts.map +1 -1
  719. package/dist/observability/internal/protobuf.js +2 -10
  720. package/dist/observability/internal/protobuf.js.map +1 -1
  721. package/dist/persistence/PersistedCache.d.ts.map +1 -1
  722. package/dist/persistence/PersistedCache.js +1 -1
  723. package/dist/persistence/PersistedCache.js.map +1 -1
  724. package/dist/persistence/PersistedQueue.d.ts +6 -2
  725. package/dist/persistence/PersistedQueue.d.ts.map +1 -1
  726. package/dist/persistence/PersistedQueue.js +162 -84
  727. package/dist/persistence/PersistedQueue.js.map +1 -1
  728. package/dist/persistence/Persistence.d.ts +28 -0
  729. package/dist/persistence/Persistence.d.ts.map +1 -1
  730. package/dist/persistence/Persistence.js +36 -8
  731. package/dist/persistence/Persistence.js.map +1 -1
  732. package/dist/persistence/RateLimiter.d.ts.map +1 -1
  733. package/dist/persistence/RateLimiter.js +8 -12
  734. package/dist/persistence/RateLimiter.js.map +1 -1
  735. package/dist/persistence/UserDirectories.d.ts +129 -0
  736. package/dist/persistence/UserDirectories.d.ts.map +1 -0
  737. package/dist/persistence/UserDirectories.js +178 -0
  738. package/dist/persistence/UserDirectories.js.map +1 -0
  739. package/dist/persistence/index.d.ts +5 -0
  740. package/dist/persistence/index.d.ts.map +1 -1
  741. package/dist/persistence/index.js +5 -0
  742. package/dist/persistence/index.js.map +1 -1
  743. package/dist/process/ChildProcess.d.ts +2 -1
  744. package/dist/process/ChildProcess.d.ts.map +1 -1
  745. package/dist/process/ChildProcess.js.map +1 -1
  746. package/dist/reactivity/AsyncResult.d.ts +6 -0
  747. package/dist/reactivity/AsyncResult.d.ts.map +1 -1
  748. package/dist/reactivity/AsyncResult.js +28 -1
  749. package/dist/reactivity/AsyncResult.js.map +1 -1
  750. package/dist/reactivity/Atom.d.ts +69 -30
  751. package/dist/reactivity/Atom.d.ts.map +1 -1
  752. package/dist/reactivity/Atom.js +40 -15
  753. package/dist/reactivity/Atom.js.map +1 -1
  754. package/dist/reactivity/AtomHttpApi.d.ts +5 -5
  755. package/dist/reactivity/AtomHttpApi.d.ts.map +1 -1
  756. package/dist/reactivity/AtomHttpApi.js +1 -1
  757. package/dist/reactivity/AtomHttpApi.js.map +1 -1
  758. package/dist/reactivity/AtomRegistry.d.ts +2 -2
  759. package/dist/reactivity/AtomRegistry.d.ts.map +1 -1
  760. package/dist/reactivity/AtomRegistry.js +47 -10
  761. package/dist/reactivity/AtomRegistry.js.map +1 -1
  762. package/dist/reactivity/AtomRpc.d.ts +3 -3
  763. package/dist/reactivity/AtomRpc.d.ts.map +1 -1
  764. package/dist/reactivity/AtomRpc.js +1 -1
  765. package/dist/reactivity/AtomRpc.js.map +1 -1
  766. package/dist/reactivity/Hydration.d.ts.map +1 -1
  767. package/dist/reactivity/Hydration.js +46 -12
  768. package/dist/reactivity/Hydration.js.map +1 -1
  769. package/dist/reactivity/Reactivity.d.ts +71 -7
  770. package/dist/reactivity/Reactivity.d.ts.map +1 -1
  771. package/dist/reactivity/Reactivity.js +21 -12
  772. package/dist/reactivity/Reactivity.js.map +1 -1
  773. package/dist/rpc/Rpc.d.ts +18 -0
  774. package/dist/rpc/Rpc.d.ts.map +1 -1
  775. package/dist/rpc/Rpc.js +20 -0
  776. package/dist/rpc/Rpc.js.map +1 -1
  777. package/dist/rpc/RpcClient.d.ts +26 -2
  778. package/dist/rpc/RpcClient.d.ts.map +1 -1
  779. package/dist/rpc/RpcClient.js +202 -61
  780. package/dist/rpc/RpcClient.js.map +1 -1
  781. package/dist/rpc/RpcSerialization.d.ts +15 -0
  782. package/dist/rpc/RpcSerialization.d.ts.map +1 -1
  783. package/dist/rpc/RpcSerialization.js +21 -5
  784. package/dist/rpc/RpcSerialization.js.map +1 -1
  785. package/dist/rpc/RpcServer.d.ts.map +1 -1
  786. package/dist/rpc/RpcServer.js +9 -18
  787. package/dist/rpc/RpcServer.js.map +1 -1
  788. package/dist/schema/Model.d.ts +1 -1
  789. package/dist/schema/VariantSchema.d.ts +22 -3
  790. package/dist/schema/VariantSchema.d.ts.map +1 -1
  791. package/dist/schema/VariantSchema.js +32 -18
  792. package/dist/schema/VariantSchema.js.map +1 -1
  793. package/dist/socket/Socket.d.ts +23 -1
  794. package/dist/socket/Socket.d.ts.map +1 -1
  795. package/dist/socket/Socket.js +36 -3
  796. package/dist/socket/Socket.js.map +1 -1
  797. package/dist/sql/Migrator.d.ts.map +1 -1
  798. package/dist/sql/Migrator.js +15 -3
  799. package/dist/sql/Migrator.js.map +1 -1
  800. package/dist/sql/SqlClient.d.ts +151 -12
  801. package/dist/sql/SqlClient.d.ts.map +1 -1
  802. package/dist/sql/SqlClient.js +156 -34
  803. package/dist/sql/SqlClient.js.map +1 -1
  804. package/dist/sql/SqlResolver.d.ts +9 -0
  805. package/dist/sql/SqlResolver.d.ts.map +1 -1
  806. package/dist/sql/SqlResolver.js +9 -0
  807. package/dist/sql/SqlResolver.js.map +1 -1
  808. package/dist/sql/Statement.d.ts +3 -1
  809. package/dist/sql/Statement.d.ts.map +1 -1
  810. package/dist/sql/Statement.js +24 -5
  811. package/dist/sql/Statement.js.map +1 -1
  812. package/dist/testing/TestClock.d.ts +16 -3
  813. package/dist/testing/TestClock.d.ts.map +1 -1
  814. package/dist/testing/TestClock.js +115 -23
  815. package/dist/testing/TestClock.js.map +1 -1
  816. package/dist/testing/TestSchema.d.ts +7 -1
  817. package/dist/testing/TestSchema.d.ts.map +1 -1
  818. package/dist/testing/TestSchema.js +9 -3
  819. package/dist/testing/TestSchema.js.map +1 -1
  820. package/dist/workflow/Activity.js +1 -0
  821. package/dist/workflow/Activity.js.map +1 -1
  822. package/dist/workflow/Workflow.d.ts +22 -0
  823. package/dist/workflow/Workflow.d.ts.map +1 -1
  824. package/dist/workflow/Workflow.js +15 -3
  825. package/dist/workflow/Workflow.js.map +1 -1
  826. package/dist/workflow/WorkflowEngine.d.ts +20 -1
  827. package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
  828. package/dist/workflow/WorkflowEngine.js +52 -24
  829. package/dist/workflow/WorkflowEngine.js.map +1 -1
  830. package/package.json +13 -3
  831. package/src/Array.ts +223 -61
  832. package/src/Bytes.ts +111 -0
  833. package/src/Channel.ts +287 -439
  834. package/src/ChannelSchema.ts +1 -49
  835. package/src/Chunk.ts +55 -61
  836. package/src/Config.ts +12 -86
  837. package/src/ConfigProvider.ts +41 -44
  838. package/src/Cron.ts +6 -3
  839. package/src/Duration.ts +70 -21
  840. package/src/Effect.ts +642 -220
  841. package/src/Equivalence.ts +7 -4
  842. package/src/Exit.ts +24 -9
  843. package/src/FiberHandle.ts +10 -9
  844. package/src/FiberMap.ts +13 -66
  845. package/src/FileSystem.ts +33 -9
  846. package/src/Graph.ts +171 -1263
  847. package/src/HashSet.ts +0 -60
  848. package/src/Iterable.ts +15 -14
  849. package/src/JsonSchema.ts +28 -3
  850. package/src/Layer.ts +2 -2
  851. package/src/ManagedRuntime.ts +72 -6
  852. package/src/Match.ts +65 -12
  853. package/src/Metric.ts +249 -507
  854. package/src/MutableHashMap.ts +4 -473
  855. package/src/Number.ts +2 -2
  856. package/src/Optic.ts +17 -332
  857. package/src/Path.ts +61 -8
  858. package/src/PubSub.ts +12 -7
  859. package/src/Queue.ts +5 -37
  860. package/src/Random.ts +1 -1
  861. package/src/RcMap.ts +14 -8
  862. package/src/Record.ts +51 -0
  863. package/src/Ref.ts +7 -104
  864. package/src/References.ts +5 -4
  865. package/src/RequestResolver.ts +46 -87
  866. package/src/Resource.ts +1 -1
  867. package/src/Runtime.ts +19 -18
  868. package/src/Schedule.ts +2 -94
  869. package/src/Schema.ts +596 -348
  870. package/src/SchemaAST.ts +20 -9
  871. package/src/SchemaGetter.ts +22 -5
  872. package/src/SchemaIssue.ts +44 -53
  873. package/src/SchemaRepresentation.ts +64 -1
  874. package/src/SchemaTransformation.ts +1 -1
  875. package/src/Scope.ts +12 -2
  876. package/src/ScopedCache.ts +17 -142
  877. package/src/SemVer.ts +1528 -0
  878. package/src/SemVerRange.ts +883 -0
  879. package/src/Sink.ts +6 -2
  880. package/src/Stream.ts +334 -1011
  881. package/src/String.ts +25 -12
  882. package/src/TextDiff.ts +766 -0
  883. package/src/TxHashMap.ts +1 -103
  884. package/src/TxHashSet.ts +48 -753
  885. package/src/TxRef.ts +4 -2
  886. package/src/ai/AiError.ts +69 -5
  887. package/src/ai/Chat.ts +10 -5
  888. package/src/ai/Decision.ts +119 -22
  889. package/src/ai/DecisionModel.ts +265 -109
  890. package/src/ai/EmbeddingModel.ts +25 -13
  891. package/src/ai/LanguageModel.ts +57 -51
  892. package/src/ai/McpClient.ts +1211 -0
  893. package/src/ai/McpClientError.ts +329 -0
  894. package/src/ai/McpProtocol.ts +2 -2
  895. package/src/ai/McpSchema.ts +153 -35
  896. package/src/ai/McpServer.ts +232 -275
  897. package/src/ai/Prompt.ts +49 -35
  898. package/src/ai/Response.ts +195 -65
  899. package/src/ai/Tool.ts +12 -4
  900. package/src/ai/Toolkit.ts +78 -10
  901. package/src/ai/index.ts +12 -0
  902. package/src/ai/internal/mcpCore.ts +13 -14
  903. package/src/ai/internal/mcpProtocol/v2024_11_05.ts +1 -1
  904. package/src/ai/internal/mcpProtocol/v2025_03_26.ts +1 -1
  905. package/src/ai/internal/mcpProtocol/v2025_06_18.ts +3 -3
  906. package/src/ai/internal/mcpProtocol/v2025_11_25.ts +3 -3
  907. package/src/ai/internal/mcpProtocol/v2026_07_28.ts +12 -14
  908. package/src/ai/internal/mcpProtocol.ts +22 -2
  909. package/src/ai/internal/mcpRuntime.ts +3 -4
  910. package/src/ai/internal/mcpSchema/v2024_11_05.ts +20 -13
  911. package/src/ai/internal/mcpSchema/v2025_03_26.ts +4 -2
  912. package/src/ai/internal/mcpSchema/v2025_06_18.ts +7 -7
  913. package/src/ai/internal/mcpSchema/v2025_11_25.ts +8 -8
  914. package/src/ai/internal/mcpSchema/v2026_07_28.ts +44 -42
  915. package/src/cli/CliError.ts +49 -4
  916. package/src/cli/Command.ts +316 -9
  917. package/src/cli/Completions.ts +10 -0
  918. package/src/cli/Flag.ts +218 -0
  919. package/src/cli/GlobalFlag.ts +3 -3
  920. package/src/cli/Param.ts +218 -0
  921. package/src/cli/TerminalCapabilities.ts +156 -0
  922. package/src/cli/index.ts +6 -0
  923. package/src/cli/internal/command.ts +10 -4
  924. package/src/cli/internal/completions/bash.ts +7 -5
  925. package/src/cli/internal/completions/descriptor.ts +20 -1
  926. package/src/cli/internal/completions/fish.ts +12 -10
  927. package/src/cli/internal/completions/powershell.ts +25 -13
  928. package/src/cli/internal/completions/zsh.ts +15 -8
  929. package/src/cli/internal/formatter.ts +18 -0
  930. package/src/cli/internal/lexer.ts +12 -5
  931. package/src/cli/internal/parser.ts +43 -14
  932. package/src/cli/internal/wizard.ts +2 -1
  933. package/src/cluster/ClusterCron.ts +94 -35
  934. package/src/cluster/ClusterMetrics.ts +149 -7
  935. package/src/cluster/ClusterWorkflowEngine.ts +164 -53
  936. package/src/cluster/Entity.ts +4 -0
  937. package/src/cluster/MessageStorage.ts +21 -3
  938. package/src/cluster/Runners.ts +145 -72
  939. package/src/cluster/Sharding.ts +118 -38
  940. package/src/cluster/ShardingConfig.ts +15 -0
  941. package/src/cluster/SqlMessageStorage.ts +58 -55
  942. package/src/cluster/SqlRunnerStorage.ts +10 -4
  943. package/src/cluster/internal/entityManager.ts +81 -11
  944. package/src/devtools/DevTools.ts +3 -2
  945. package/src/devtools/DevToolsClient.ts +27 -10
  946. package/src/encoding/Base64Url.ts +31 -0
  947. package/src/encoding/Ini.ts +3 -0
  948. package/src/encoding/JsonArray.ts +849 -0
  949. package/src/encoding/Ndjson.ts +211 -20
  950. package/src/encoding/SchemaBinary.ts +14 -48
  951. package/src/encoding/Sse.ts +1 -1
  952. package/src/encoding/Tar.ts +1417 -0
  953. package/src/encoding/Toml.ts +3 -3
  954. package/src/encoding/Xml.ts +2037 -0
  955. package/src/encoding/Yaml.ts +108 -36
  956. package/src/encoding/Zip.ts +1558 -0
  957. package/src/encoding/index.ts +24 -0
  958. package/src/eventlog/EventJournal.ts +611 -227
  959. package/src/eventlog/EventLog.ts +496 -196
  960. package/src/eventlog/EventLogEncryption.ts +128 -43
  961. package/src/eventlog/EventLogMessage.ts +62 -11
  962. package/src/eventlog/EventLogRemote.ts +77 -21
  963. package/src/eventlog/EventLogServer.ts +162 -20
  964. package/src/eventlog/EventLogServerEncrypted.ts +121 -80
  965. package/src/eventlog/EventLogServerUnencrypted.ts +180 -77
  966. package/src/eventlog/EventRow.ts +706 -0
  967. package/src/eventlog/SqlEventJournal.ts +453 -173
  968. package/src/eventlog/SqlEventLogServerEncrypted.ts +212 -83
  969. package/src/eventlog/SqlEventLogServerUnencrypted.ts +141 -62
  970. package/src/eventlog/index.ts +6 -0
  971. package/src/eventlog/internal/conflicts.ts +123 -0
  972. package/src/graphql/GraphQLClient.ts +17 -5
  973. package/src/graphql/GraphQLClientError.ts +5 -12
  974. package/src/graphql/GraphQLProtocol.ts +277 -20
  975. package/src/graphql/GraphQLResolver.ts +109 -230
  976. package/src/http/FetchHttpClient.ts +61 -8
  977. package/src/http/FindMyWay/internal/router.ts +13 -1
  978. package/src/http/Headers.ts +343 -163
  979. package/src/http/HttpClient.ts +144 -136
  980. package/src/http/HttpClientError.ts +10 -6
  981. package/src/http/HttpClientRequest.ts +315 -11
  982. package/src/http/HttpClientResponse.ts +71 -0
  983. package/src/http/HttpEffect.ts +25 -33
  984. package/src/http/HttpIncomingMessage.ts +3 -23
  985. package/src/http/HttpMiddleware.ts +265 -28
  986. package/src/http/HttpRouter.ts +67 -14
  987. package/src/http/HttpServerError.ts +14 -7
  988. package/src/http/HttpServerRequest.ts +73 -14
  989. package/src/http/HttpServerResponse.ts +49 -23
  990. package/src/http/HttpStaticServer.ts +29 -19
  991. package/src/http/HttpTraceContext.ts +1 -1
  992. package/src/http/MultipartParser/internal/contentType.ts +107 -6
  993. package/src/http/MultipartParser/internal/headers.ts +4 -16
  994. package/src/http/MultipartParser/internal/multipart.ts +10 -32
  995. package/src/http/Url.ts +8 -2
  996. package/src/http/UrlParams.ts +225 -26
  997. package/src/http/internal/compression.ts +3 -17
  998. package/src/http/internal/compressionBody.ts +56 -0
  999. package/src/http/internal/decompression.ts +235 -0
  1000. package/src/http/internal/lazyStream.ts +25 -0
  1001. package/src/http/internal/requestState.ts +33 -0
  1002. package/src/http/internal/tracing.ts +21 -4
  1003. package/src/http/internal/urlParams.ts +5 -0
  1004. package/src/http/internal/webResponse.ts +20 -0
  1005. package/src/http-api/HttpApi.ts +1 -1
  1006. package/src/http-api/HttpApiBuilder.ts +151 -23
  1007. package/src/http-api/HttpApiClient.ts +160 -31
  1008. package/src/http-api/HttpApiEndpoint.ts +144 -33
  1009. package/src/http-api/HttpApiError.ts +55 -0
  1010. package/src/http-api/HttpApiScalar.ts +4 -3
  1011. package/src/http-api/HttpApiSchema.ts +275 -13
  1012. package/src/http-api/HttpApiSwagger.ts +11 -4
  1013. package/src/http-api/HttpApiTest.ts +33 -9
  1014. package/src/http-api/OpenApi.ts +84 -42
  1015. package/src/http-api/internal/path.ts +40 -12
  1016. package/src/index.ts +24 -0
  1017. package/src/internal/core.ts +22 -2
  1018. package/src/internal/dateTime.ts +20 -7
  1019. package/src/internal/effect.ts +125 -88
  1020. package/src/internal/graphql.ts +30 -7
  1021. package/src/internal/hashMap.ts +2 -2
  1022. package/src/internal/hydration.ts +15 -0
  1023. package/src/internal/inflate.ts +710 -0
  1024. package/src/internal/record.ts +6 -0
  1025. package/src/internal/request.ts +21 -6
  1026. package/src/internal/schedule.ts +20 -39
  1027. package/src/internal/schema/fromJsonSchemaDocument.ts +262 -193
  1028. package/src/internal/schema/interpreter.ts +58 -45
  1029. package/src/internal/schema/standardSchema.ts +32 -30
  1030. package/src/internal/schema/toCodeDocument.ts +8 -3
  1031. package/src/internal/schema/toCodec.ts +116 -1
  1032. package/src/internal/schema/toFormatter.ts +6 -6
  1033. package/src/internal/schema/toJsonSchemaDocument.ts +69 -39
  1034. package/src/internal/trie.ts +1 -3
  1035. package/src/internal/uuid.ts +15 -10
  1036. package/src/internal/version.ts +1 -1
  1037. package/src/net/NetAddress.ts +2 -9
  1038. package/src/observability/Otlp.ts +18 -0
  1039. package/src/observability/OtlpExporter.ts +19 -15
  1040. package/src/observability/OtlpLogger.ts +31 -2
  1041. package/src/observability/OtlpMetrics.ts +35 -4
  1042. package/src/observability/OtlpResource.ts +16 -6
  1043. package/src/observability/OtlpSerialization.ts +17 -3
  1044. package/src/observability/OtlpTracer.ts +32 -3
  1045. package/src/observability/internal/protobuf.ts +2 -10
  1046. package/src/persistence/PersistedCache.ts +3 -1
  1047. package/src/persistence/PersistedQueue.ts +223 -153
  1048. package/src/persistence/Persistence.ts +64 -30
  1049. package/src/persistence/RateLimiter.ts +18 -21
  1050. package/src/persistence/UserDirectories.ts +273 -0
  1051. package/src/persistence/index.ts +6 -0
  1052. package/src/process/ChildProcess.ts +2 -1
  1053. package/src/reactivity/AsyncResult.ts +35 -38
  1054. package/src/reactivity/Atom.ts +134 -166
  1055. package/src/reactivity/AtomHttpApi.ts +10 -16
  1056. package/src/reactivity/AtomRegistry.ts +53 -30
  1057. package/src/reactivity/AtomRpc.ts +6 -22
  1058. package/src/reactivity/Hydration.ts +53 -12
  1059. package/src/reactivity/Reactivity.ts +97 -39
  1060. package/src/rpc/Rpc.ts +21 -0
  1061. package/src/rpc/RpcClient.ts +285 -104
  1062. package/src/rpc/RpcSerialization.ts +21 -5
  1063. package/src/rpc/RpcServer.ts +11 -20
  1064. package/src/schema/VariantSchema.ts +86 -22
  1065. package/src/socket/Socket.ts +45 -20
  1066. package/src/sql/Migrator.ts +19 -9
  1067. package/src/sql/SqlClient.ts +275 -36
  1068. package/src/sql/SqlResolver.ts +9 -0
  1069. package/src/sql/Statement.ts +35 -8
  1070. package/src/testing/TestClock.ts +147 -29
  1071. package/src/testing/TestSchema.ts +9 -3
  1072. package/src/workflow/Activity.ts +1 -0
  1073. package/src/workflow/Workflow.ts +31 -5
  1074. package/src/workflow/WorkflowEngine.ts +93 -31
  1075. package/dist/http/internal/preResponseHandler.d.ts +0 -2
  1076. package/dist/http/internal/preResponseHandler.d.ts.map +0 -1
  1077. package/dist/http/internal/preResponseHandler.js +0 -14
  1078. package/dist/http/internal/preResponseHandler.js.map +0 -1
  1079. package/src/http/internal/preResponseHandler.ts +0 -19
@@ -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
  })
@@ -48,6 +48,16 @@ export interface FlagDescriptor {
48
48
  readonly aliases: ReadonlyArray<string>
49
49
  readonly description: string | undefined
50
50
  readonly type: FlagType
51
+ /**
52
+ * Whether the flag's value is optional. Its value can only be attached with
53
+ * `=` (`--name=value`), never given as the next word.
54
+ */
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
51
61
  }
52
62
 
53
63
  /**
package/src/cli/Flag.ts CHANGED
@@ -611,6 +611,224 @@ export const withDescription: {
611
611
  <A>(self: Flag<A>, description: string): Flag<A>
612
612
  } = dual(2, <A>(self: Flag<A>, description: string) => Param.withDescription(self, description))
613
613
 
614
+ /**
615
+ * Lets a flag be given without a value, in which case `value` is used.
616
+ *
617
+ * **Details**
618
+ *
619
+ * Follows GNU-style optional values, like `--color[=WHEN]`. An explicit value
620
+ * must be attached with `=` (`--watch=until-done` or `-w=until-done`). A bare
621
+ * `--watch` is parsed as `--watch=<value>`, so `value` is validated like any
622
+ * other input. The flag never consumes the next token, so in `--watch build`,
623
+ * `build` stays a positional argument or subcommand. The flag is still
624
+ * required unless it is made optional or given a default.
625
+ *
626
+ * **Example** (Flag with an optional value)
627
+ *
628
+ * ```ts import.meta.vitest
629
+ * import { Flag } from "effect/cli"
630
+ *
631
+ * const watch = Flag.Literals("watch", ["first-failure", "until-done"]).pipe(
632
+ * Flag.withOptionalValue("first-failure"),
633
+ * Flag.optional
634
+ * )
635
+ * // --watch => Option.some("first-failure")
636
+ * // --watch=until-done => Option.some("until-done")
637
+ * // (absent) => Option.none()
638
+ * // In help: --watch [=choice]
639
+ * watch.kind // => "flag"
640
+ * ```
641
+ *
642
+ * @stability unstable
643
+ * @category combinators
644
+ * @since 4.1.0
645
+ */
646
+ export const withOptionalValue: {
647
+ /**
648
+ * Lets a flag be given without a value, in which case `value` is used.
649
+ *
650
+ * **Details**
651
+ *
652
+ * Follows GNU-style optional values, like `--color[=WHEN]`. An explicit value
653
+ * must be attached with `=` (`--watch=until-done` or `-w=until-done`). A bare
654
+ * `--watch` is parsed as `--watch=<value>`, so `value` is validated like any
655
+ * other input. The flag never consumes the next token, so in `--watch build`,
656
+ * `build` stays a positional argument or subcommand. The flag is still
657
+ * required unless it is made optional or given a default.
658
+ *
659
+ * **Example** (Flag with an optional value)
660
+ *
661
+ * ```ts import.meta.vitest
662
+ * import { Flag } from "effect/cli"
663
+ *
664
+ * const watch = Flag.Literals("watch", ["first-failure", "until-done"]).pipe(
665
+ * Flag.withOptionalValue("first-failure"),
666
+ * Flag.optional
667
+ * )
668
+ * // --watch => Option.some("first-failure")
669
+ * // --watch=until-done => Option.some("until-done")
670
+ * // (absent) => Option.none()
671
+ * // In help: --watch [=choice]
672
+ * watch.kind // => "flag"
673
+ * ```
674
+ *
675
+ * @stability unstable
676
+ * @category combinators
677
+ * @since 4.1.0
678
+ */
679
+ (value: string): <A>(self: Flag<A>) => Flag<A>
680
+ /**
681
+ * Lets a flag be given without a value, in which case `value` is used.
682
+ *
683
+ * **Details**
684
+ *
685
+ * Follows GNU-style optional values, like `--color[=WHEN]`. An explicit value
686
+ * must be attached with `=` (`--watch=until-done` or `-w=until-done`). A bare
687
+ * `--watch` is parsed as `--watch=<value>`, so `value` is validated like any
688
+ * other input. The flag never consumes the next token, so in `--watch build`,
689
+ * `build` stays a positional argument or subcommand. The flag is still
690
+ * required unless it is made optional or given a default.
691
+ *
692
+ * **Example** (Flag with an optional value)
693
+ *
694
+ * ```ts import.meta.vitest
695
+ * import { Flag } from "effect/cli"
696
+ *
697
+ * const watch = Flag.Literals("watch", ["first-failure", "until-done"]).pipe(
698
+ * Flag.withOptionalValue("first-failure"),
699
+ * Flag.optional
700
+ * )
701
+ * // --watch => Option.some("first-failure")
702
+ * // --watch=until-done => Option.some("until-done")
703
+ * // (absent) => Option.none()
704
+ * // In help: --watch [=choice]
705
+ * watch.kind // => "flag"
706
+ * ```
707
+ *
708
+ * @stability unstable
709
+ * @category combinators
710
+ * @since 4.1.0
711
+ */
712
+ <A>(self: Flag<A>, value: string): Flag<A>
713
+ } = dual(2, <A>(self: Flag<A>, value: string) => Param.withOptionalValue(self, value))
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
+
614
832
  // -------------------------------------------------------------------------------------
615
833
  // metadata
616
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
  })