effect 4.0.7 → 4.1.0

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 (679) hide show
  1. package/README.md +1 -1
  2. package/dist/BigDecimal.d.ts.map +1 -1
  3. package/dist/BigDecimal.js +3 -0
  4. package/dist/BigDecimal.js.map +1 -1
  5. package/dist/Channel.d.ts +12 -6
  6. package/dist/Channel.d.ts.map +1 -1
  7. package/dist/Channel.js +9 -3
  8. package/dist/Channel.js.map +1 -1
  9. package/dist/Config.d.ts +7 -1
  10. package/dist/Config.d.ts.map +1 -1
  11. package/dist/Config.js.map +1 -1
  12. package/dist/Context.d.ts +18 -1
  13. package/dist/Context.d.ts.map +1 -1
  14. package/dist/Context.js +27 -8
  15. package/dist/Context.js.map +1 -1
  16. package/dist/Cron.d.ts +81 -11
  17. package/dist/Cron.d.ts.map +1 -1
  18. package/dist/Cron.js +101 -26
  19. package/dist/Cron.js.map +1 -1
  20. package/dist/Duration.d.ts +78 -0
  21. package/dist/Duration.d.ts.map +1 -1
  22. package/dist/Duration.js +123 -0
  23. package/dist/Duration.js.map +1 -1
  24. package/dist/Effect.d.ts +164 -7
  25. package/dist/Effect.d.ts.map +1 -1
  26. package/dist/Effect.js +11 -1
  27. package/dist/Effect.js.map +1 -1
  28. package/dist/FileSystem.d.ts +59 -4
  29. package/dist/FileSystem.d.ts.map +1 -1
  30. package/dist/FileSystem.js +9 -2
  31. package/dist/FileSystem.js.map +1 -1
  32. package/dist/Glob.d.ts +165 -0
  33. package/dist/Glob.d.ts.map +1 -0
  34. package/dist/Glob.js +127 -0
  35. package/dist/Glob.js.map +1 -0
  36. package/dist/Match.d.ts +86 -0
  37. package/dist/Match.d.ts.map +1 -1
  38. package/dist/Match.js +72 -0
  39. package/dist/Match.js.map +1 -1
  40. package/dist/Pool.d.ts +51 -0
  41. package/dist/Pool.d.ts.map +1 -1
  42. package/dist/Pool.js +59 -9
  43. package/dist/Pool.js.map +1 -1
  44. package/dist/Random.d.ts.map +1 -1
  45. package/dist/Random.js +3 -3
  46. package/dist/Random.js.map +1 -1
  47. package/dist/RcMap.d.ts.map +1 -1
  48. package/dist/RcMap.js +8 -2
  49. package/dist/RcMap.js.map +1 -1
  50. package/dist/Schedule.d.ts +18 -1
  51. package/dist/Schedule.d.ts.map +1 -1
  52. package/dist/Schedule.js +7 -2
  53. package/dist/Schedule.js.map +1 -1
  54. package/dist/Schema.d.ts +666 -41
  55. package/dist/Schema.d.ts.map +1 -1
  56. package/dist/Schema.js +650 -0
  57. package/dist/Schema.js.map +1 -1
  58. package/dist/SchemaGetter.d.ts +6 -1
  59. package/dist/SchemaGetter.d.ts.map +1 -1
  60. package/dist/SchemaGetter.js +22 -11
  61. package/dist/SchemaGetter.js.map +1 -1
  62. package/dist/SchemaRepresentation.d.ts +14 -0
  63. package/dist/SchemaRepresentation.d.ts.map +1 -1
  64. package/dist/SchemaRepresentation.js +16 -0
  65. package/dist/SchemaRepresentation.js.map +1 -1
  66. package/dist/SchemaTransformation.d.ts +8 -3
  67. package/dist/SchemaTransformation.d.ts.map +1 -1
  68. package/dist/SchemaTransformation.js +6 -3
  69. package/dist/SchemaTransformation.js.map +1 -1
  70. package/dist/ScopedCache.d.ts.map +1 -1
  71. package/dist/ScopedCache.js +5 -7
  72. package/dist/ScopedCache.js.map +1 -1
  73. package/dist/Semaphore.d.ts +130 -0
  74. package/dist/Semaphore.d.ts.map +1 -1
  75. package/dist/Semaphore.js +40 -0
  76. package/dist/Semaphore.js.map +1 -1
  77. package/dist/Stream.d.ts +13 -4
  78. package/dist/Stream.d.ts.map +1 -1
  79. package/dist/Stream.js +9 -0
  80. package/dist/Stream.js.map +1 -1
  81. package/dist/Terminal.d.ts +18 -1
  82. package/dist/Terminal.d.ts.map +1 -1
  83. package/dist/Terminal.js +1 -1
  84. package/dist/Terminal.js.map +1 -1
  85. package/dist/ai/AiError.d.ts +43 -116
  86. package/dist/ai/AiError.d.ts.map +1 -1
  87. package/dist/ai/AiError.js +53 -72
  88. package/dist/ai/AiError.js.map +1 -1
  89. package/dist/ai/Decision.d.ts +196 -15
  90. package/dist/ai/Decision.d.ts.map +1 -1
  91. package/dist/ai/Decision.js +130 -0
  92. package/dist/ai/Decision.js.map +1 -1
  93. package/dist/ai/DecisionModel.d.ts +54 -13
  94. package/dist/ai/DecisionModel.d.ts.map +1 -1
  95. package/dist/ai/DecisionModel.js +123 -12
  96. package/dist/ai/DecisionModel.js.map +1 -1
  97. package/dist/ai/McpServer.d.ts +630 -29
  98. package/dist/ai/McpServer.d.ts.map +1 -1
  99. package/dist/ai/McpServer.js +562 -116
  100. package/dist/ai/McpServer.js.map +1 -1
  101. package/dist/ai/McpTest.d.ts +130 -0
  102. package/dist/ai/McpTest.d.ts.map +1 -0
  103. package/dist/ai/McpTest.js +237 -0
  104. package/dist/ai/McpTest.js.map +1 -0
  105. package/dist/ai/Response.d.ts +1 -25
  106. package/dist/ai/Response.d.ts.map +1 -1
  107. package/dist/ai/Response.js +1 -10
  108. package/dist/ai/Response.js.map +1 -1
  109. package/dist/ai/Tool.d.ts +19 -1
  110. package/dist/ai/Tool.d.ts.map +1 -1
  111. package/dist/ai/Tool.js.map +1 -1
  112. package/dist/ai/index.d.ts +5 -0
  113. package/dist/ai/index.d.ts.map +1 -1
  114. package/dist/ai/index.js +5 -0
  115. package/dist/ai/index.js.map +1 -1
  116. package/dist/ai/internal/mcpCore.js +17 -12
  117. package/dist/ai/internal/mcpCore.js.map +1 -1
  118. package/dist/ai/internal/mcpProtocol/v2024_11_05.js +4 -5
  119. package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
  120. package/dist/ai/internal/mcpProtocol/v2025_03_26.js +4 -5
  121. package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
  122. package/dist/ai/internal/mcpProtocol/v2025_06_18.js +4 -5
  123. package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
  124. package/dist/ai/internal/mcpProtocol/v2025_11_25.js +4 -5
  125. package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
  126. package/dist/ai/internal/mcpProtocol/v2026_07_28.js +18 -10
  127. package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
  128. package/dist/ai/internal/mcpProtocol.js +13 -0
  129. package/dist/ai/internal/mcpProtocol.js.map +1 -1
  130. package/dist/ai/internal/mcpRuntime.js +5 -3
  131. package/dist/ai/internal/mcpRuntime.js.map +1 -1
  132. package/dist/ai/internal/mcpStatefulRuntime.js +6 -1
  133. package/dist/ai/internal/mcpStatefulRuntime.js.map +1 -1
  134. package/dist/cli/Argument.d.ts +6 -0
  135. package/dist/cli/Argument.d.ts.map +1 -1
  136. package/dist/cli/Argument.js +2 -0
  137. package/dist/cli/Argument.js.map +1 -1
  138. package/dist/cli/CliOutput.d.ts +65 -1
  139. package/dist/cli/CliOutput.d.ts.map +1 -1
  140. package/dist/cli/CliOutput.js +94 -37
  141. package/dist/cli/CliOutput.js.map +1 -1
  142. package/dist/cli/Command.d.ts +23 -0
  143. package/dist/cli/Command.d.ts.map +1 -1
  144. package/dist/cli/Command.js +8 -0
  145. package/dist/cli/Command.js.map +1 -1
  146. package/dist/cli/Flag.d.ts +107 -0
  147. package/dist/cli/Flag.d.ts.map +1 -1
  148. package/dist/cli/Flag.js +37 -0
  149. package/dist/cli/Flag.js.map +1 -1
  150. package/dist/cli/HelpDoc.d.ts +15 -1
  151. package/dist/cli/HelpDoc.d.ts.map +1 -1
  152. package/dist/cli/Param.d.ts +6 -0
  153. package/dist/cli/Param.d.ts.map +1 -1
  154. package/dist/cli/Param.js +2 -0
  155. package/dist/cli/Param.js.map +1 -1
  156. package/dist/cli/Primitive.d.ts +14 -0
  157. package/dist/cli/Primitive.d.ts.map +1 -1
  158. package/dist/cli/Primitive.js +15 -1
  159. package/dist/cli/Primitive.js.map +1 -1
  160. package/dist/cli/Prompt.d.ts +1 -0
  161. package/dist/cli/Prompt.d.ts.map +1 -1
  162. package/dist/cli/Prompt.js +1 -0
  163. package/dist/cli/Prompt.js.map +1 -1
  164. package/dist/cli/internal/help.d.ts.map +1 -1
  165. package/dist/cli/internal/help.js +17 -10
  166. package/dist/cli/internal/help.js.map +1 -1
  167. package/dist/cluster/Sharding.d.ts.map +1 -1
  168. package/dist/cluster/Sharding.js +90 -28
  169. package/dist/cluster/Sharding.js.map +1 -1
  170. package/dist/cluster/ShardingConfig.d.ts +72 -6
  171. package/dist/cluster/ShardingConfig.d.ts.map +1 -1
  172. package/dist/cluster/ShardingConfig.js +4 -0
  173. package/dist/cluster/ShardingConfig.js.map +1 -1
  174. package/dist/cluster/SingleRunner.d.ts +3 -3
  175. package/dist/cluster/SingleRunner.d.ts.map +1 -1
  176. package/dist/cluster/SingleRunner.js +1 -1
  177. package/dist/cluster/SqlMessageStorage.d.ts +37 -6
  178. package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
  179. package/dist/cluster/SqlMessageStorage.js +34 -7
  180. package/dist/cluster/SqlMessageStorage.js.map +1 -1
  181. package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
  182. package/dist/cluster/SqlRunnerStorage.js +23 -8
  183. package/dist/cluster/SqlRunnerStorage.js.map +1 -1
  184. package/dist/crypto/Aead.d.ts +322 -0
  185. package/dist/crypto/Aead.d.ts.map +1 -0
  186. package/dist/crypto/Aead.js +331 -0
  187. package/dist/crypto/Aead.js.map +1 -0
  188. package/dist/crypto/Cipher.d.ts +235 -0
  189. package/dist/crypto/Cipher.d.ts.map +1 -0
  190. package/dist/crypto/Cipher.js +233 -0
  191. package/dist/crypto/Cipher.js.map +1 -0
  192. package/dist/crypto/CryptoError.d.ts +212 -0
  193. package/dist/crypto/CryptoError.d.ts.map +1 -0
  194. package/dist/crypto/CryptoError.js +202 -0
  195. package/dist/crypto/CryptoError.js.map +1 -0
  196. package/dist/crypto/Digest.d.ts +143 -0
  197. package/dist/crypto/Digest.d.ts.map +1 -0
  198. package/dist/crypto/Digest.js +146 -0
  199. package/dist/crypto/Digest.js.map +1 -0
  200. package/dist/crypto/Kdf.d.ts +220 -0
  201. package/dist/crypto/Kdf.d.ts.map +1 -0
  202. package/dist/crypto/Kdf.js +212 -0
  203. package/dist/crypto/Kdf.js.map +1 -0
  204. package/dist/crypto/KeyAgreement.d.ts +323 -0
  205. package/dist/crypto/KeyAgreement.d.ts.map +1 -0
  206. package/dist/crypto/KeyAgreement.js +303 -0
  207. package/dist/crypto/KeyAgreement.js.map +1 -0
  208. package/dist/crypto/KeyFormat.d.ts +309 -0
  209. package/dist/crypto/KeyFormat.d.ts.map +1 -0
  210. package/dist/crypto/KeyFormat.js +556 -0
  211. package/dist/crypto/KeyFormat.js.map +1 -0
  212. package/dist/crypto/KeyWrap.d.ts +389 -0
  213. package/dist/crypto/KeyWrap.d.ts.map +1 -0
  214. package/dist/crypto/KeyWrap.js +381 -0
  215. package/dist/crypto/KeyWrap.js.map +1 -0
  216. package/dist/crypto/Mac.d.ts +277 -0
  217. package/dist/crypto/Mac.d.ts.map +1 -0
  218. package/dist/crypto/Mac.js +288 -0
  219. package/dist/crypto/Mac.js.map +1 -0
  220. package/dist/crypto/SecureRandom.d.ts +340 -0
  221. package/dist/crypto/SecureRandom.d.ts.map +1 -0
  222. package/dist/crypto/SecureRandom.js +257 -0
  223. package/dist/crypto/SecureRandom.js.map +1 -0
  224. package/dist/crypto/Signature.d.ts +448 -0
  225. package/dist/crypto/Signature.d.ts.map +1 -0
  226. package/dist/crypto/Signature.js +484 -0
  227. package/dist/crypto/Signature.js.map +1 -0
  228. package/dist/crypto/WebCrypto.d.ts +61 -0
  229. package/dist/crypto/WebCrypto.d.ts.map +1 -0
  230. package/dist/crypto/WebCrypto.js +63 -0
  231. package/dist/crypto/WebCrypto.js.map +1 -0
  232. package/dist/crypto/index.d.ts +65 -0
  233. package/dist/crypto/index.d.ts.map +1 -0
  234. package/dist/crypto/index.js +66 -0
  235. package/dist/crypto/index.js.map +1 -0
  236. package/dist/crypto/internal/asymmetric.d.ts +2 -0
  237. package/dist/crypto/internal/asymmetric.d.ts.map +1 -0
  238. package/dist/crypto/internal/asymmetric.js +210 -0
  239. package/dist/crypto/internal/asymmetric.js.map +1 -0
  240. package/dist/crypto/internal/chacha.d.ts +46 -0
  241. package/dist/crypto/internal/chacha.d.ts.map +1 -0
  242. package/dist/crypto/internal/chacha.js +885 -0
  243. package/dist/crypto/internal/chacha.js.map +1 -0
  244. package/dist/crypto/internal/der.d.ts +6 -0
  245. package/dist/crypto/internal/der.d.ts.map +1 -0
  246. package/dist/crypto/internal/der.js +86 -0
  247. package/dist/crypto/internal/der.js.map +1 -0
  248. package/dist/crypto/internal/digest.d.ts +2 -0
  249. package/dist/crypto/internal/digest.d.ts.map +1 -0
  250. package/dist/crypto/internal/digest.js +15 -0
  251. package/dist/crypto/internal/digest.js.map +1 -0
  252. package/dist/crypto/internal/key.d.ts +2 -0
  253. package/dist/crypto/internal/key.d.ts.map +1 -0
  254. package/dist/crypto/internal/key.js +170 -0
  255. package/dist/crypto/internal/key.js.map +1 -0
  256. package/dist/crypto/internal/md5.d.ts +39 -0
  257. package/dist/crypto/internal/md5.d.ts.map +1 -0
  258. package/dist/crypto/internal/md5.js +179 -0
  259. package/dist/crypto/internal/md5.js.map +1 -0
  260. package/dist/crypto/internal/webCrypto.d.ts +2 -0
  261. package/dist/crypto/internal/webCrypto.d.ts.map +1 -0
  262. package/dist/crypto/internal/webCrypto.js +111 -0
  263. package/dist/crypto/internal/webCrypto.js.map +1 -0
  264. package/dist/encoding/Base64Url.d.ts.map +1 -1
  265. package/dist/encoding/Base64Url.js +3 -2
  266. package/dist/encoding/Base64Url.js.map +1 -1
  267. package/dist/encoding/Csv.d.ts +608 -0
  268. package/dist/encoding/Csv.d.ts.map +1 -0
  269. package/dist/encoding/Csv.js +718 -0
  270. package/dist/encoding/Csv.js.map +1 -0
  271. package/dist/encoding/Hex.d.ts +3 -2
  272. package/dist/encoding/Hex.d.ts.map +1 -1
  273. package/dist/encoding/Hex.js +3 -2
  274. package/dist/encoding/Hex.js.map +1 -1
  275. package/dist/encoding/SchemaBinary.d.ts.map +1 -1
  276. package/dist/encoding/SchemaBinary.js +42 -4
  277. package/dist/encoding/SchemaBinary.js.map +1 -1
  278. package/dist/encoding/Toml.d.ts +17 -3
  279. package/dist/encoding/Toml.d.ts.map +1 -1
  280. package/dist/encoding/Toml.js +104 -16
  281. package/dist/encoding/Toml.js.map +1 -1
  282. package/dist/encoding/Yaml.d.ts +8 -1
  283. package/dist/encoding/Yaml.d.ts.map +1 -1
  284. package/dist/encoding/Yaml.js +54 -18
  285. package/dist/encoding/Yaml.js.map +1 -1
  286. package/dist/encoding/index.d.ts +5 -0
  287. package/dist/encoding/index.d.ts.map +1 -1
  288. package/dist/encoding/index.js +5 -0
  289. package/dist/encoding/index.js.map +1 -1
  290. package/dist/eventlog/EventJournal.d.ts.map +1 -1
  291. package/dist/eventlog/EventJournal.js +6 -3
  292. package/dist/eventlog/EventJournal.js.map +1 -1
  293. package/dist/eventlog/EventLog.d.ts +119 -4
  294. package/dist/eventlog/EventLog.d.ts.map +1 -1
  295. package/dist/eventlog/EventLog.js +200 -12
  296. package/dist/eventlog/EventLog.js.map +1 -1
  297. package/dist/eventlog/EventLogEncryption.d.ts +41 -4
  298. package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
  299. package/dist/eventlog/EventLogEncryption.js +83 -64
  300. package/dist/eventlog/EventLogEncryption.js.map +1 -1
  301. package/dist/eventlog/EventLogMessage.d.ts +279 -0
  302. package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
  303. package/dist/eventlog/EventLogMessage.js +217 -1
  304. package/dist/eventlog/EventLogMessage.js.map +1 -1
  305. package/dist/eventlog/EventLogRemote.d.ts +200 -28
  306. package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
  307. package/dist/eventlog/EventLogRemote.js +186 -16
  308. package/dist/eventlog/EventLogRemote.js.map +1 -1
  309. package/dist/eventlog/EventLogServer.d.ts +3 -0
  310. package/dist/eventlog/EventLogServer.d.ts.map +1 -1
  311. package/dist/eventlog/EventLogServer.js +18 -10
  312. package/dist/eventlog/EventLogServer.js.map +1 -1
  313. package/dist/eventlog/EventLogServerEncrypted.d.ts +326 -5
  314. package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
  315. package/dist/eventlog/EventLogServerEncrypted.js +769 -14
  316. package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
  317. package/dist/eventlog/EventLogSessionAuth.d.ts +5 -3
  318. package/dist/eventlog/EventLogSessionAuth.d.ts.map +1 -1
  319. package/dist/eventlog/EventLogSessionAuth.js +41 -64
  320. package/dist/eventlog/EventLogSessionAuth.js.map +1 -1
  321. package/dist/eventlog/EventRow.d.ts +4 -0
  322. package/dist/eventlog/EventRow.d.ts.map +1 -1
  323. package/dist/eventlog/EventRow.js +12 -2
  324. package/dist/eventlog/EventRow.js.map +1 -1
  325. package/dist/eventlog/SqlEventJournal.js +2 -2
  326. package/dist/eventlog/SqlEventJournal.js.map +1 -1
  327. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +21 -5
  328. package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
  329. package/dist/eventlog/SqlEventLogServerEncrypted.js +1048 -113
  330. package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
  331. package/dist/eventlog/SqlEventLogServerUnencrypted.js +2 -2
  332. package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
  333. package/dist/eventlog/internal/batches.d.ts +12 -0
  334. package/dist/eventlog/internal/batches.d.ts.map +1 -0
  335. package/dist/eventlog/internal/batches.js +26 -0
  336. package/dist/eventlog/internal/batches.js.map +1 -0
  337. package/dist/eventlog/internal/compaction.d.ts +38 -0
  338. package/dist/eventlog/internal/compaction.d.ts.map +1 -0
  339. package/dist/eventlog/internal/compaction.js +33 -0
  340. package/dist/eventlog/internal/compaction.js.map +1 -0
  341. package/dist/eventlog/internal/identityRootSecretDerivation.js +66 -67
  342. package/dist/eventlog/internal/identityRootSecretDerivation.js.map +1 -1
  343. package/dist/eventlog/internal/remoteCompaction.d.ts +31 -0
  344. package/dist/eventlog/internal/remoteCompaction.d.ts.map +1 -0
  345. package/dist/eventlog/internal/remoteCompaction.js +76 -0
  346. package/dist/eventlog/internal/remoteCompaction.js.map +1 -0
  347. package/dist/http/Cookies.d.ts +172 -0
  348. package/dist/http/Cookies.d.ts.map +1 -1
  349. package/dist/http/Cookies.js +143 -1
  350. package/dist/http/Cookies.js.map +1 -1
  351. package/dist/http/FetchHttpClient.d.ts +26 -2
  352. package/dist/http/FetchHttpClient.d.ts.map +1 -1
  353. package/dist/http/FetchHttpClient.js +78 -15
  354. package/dist/http/FetchHttpClient.js.map +1 -1
  355. package/dist/http/HttpClient.d.ts +79 -8
  356. package/dist/http/HttpClient.d.ts.map +1 -1
  357. package/dist/http/HttpClient.js +65 -5
  358. package/dist/http/HttpClient.js.map +1 -1
  359. package/dist/http/HttpClientRequest.d.ts +9 -5
  360. package/dist/http/HttpClientRequest.d.ts.map +1 -1
  361. package/dist/http/HttpClientRequest.js +2 -3
  362. package/dist/http/HttpClientRequest.js.map +1 -1
  363. package/dist/http/HttpClientResponse.d.ts.map +1 -1
  364. package/dist/http/HttpClientResponse.js +3 -2
  365. package/dist/http/HttpClientResponse.js.map +1 -1
  366. package/dist/http/HttpMethod.d.ts +7 -1
  367. package/dist/http/HttpMethod.d.ts.map +1 -1
  368. package/dist/http/HttpMethod.js +3 -8
  369. package/dist/http/HttpMethod.js.map +1 -1
  370. package/dist/http/HttpServerRequest.d.ts +5 -2
  371. package/dist/http/HttpServerRequest.d.ts.map +1 -1
  372. package/dist/http/HttpServerRequest.js +6 -17
  373. package/dist/http/HttpServerRequest.js.map +1 -1
  374. package/dist/http/HttpServerResponse.d.ts.map +1 -1
  375. package/dist/http/HttpServerResponse.js +3 -2
  376. package/dist/http/HttpServerResponse.js.map +1 -1
  377. package/dist/http/HttpTraceContext.d.ts +2 -1
  378. package/dist/http/HttpTraceContext.d.ts.map +1 -1
  379. package/dist/http/HttpTraceContext.js +7 -5
  380. package/dist/http/HttpTraceContext.js.map +1 -1
  381. package/dist/http/ProblemDetails.d.ts +96 -0
  382. package/dist/http/ProblemDetails.d.ts.map +1 -0
  383. package/dist/http/ProblemDetails.js +98 -0
  384. package/dist/http/ProblemDetails.js.map +1 -0
  385. package/dist/http/index.d.ts +5 -0
  386. package/dist/http/index.d.ts.map +1 -1
  387. package/dist/http/index.js +5 -0
  388. package/dist/http/index.js.map +1 -1
  389. package/dist/http/internal/decompression.js +3 -2
  390. package/dist/http/internal/decompression.js.map +1 -1
  391. package/dist/http/internal/urlParams.js +8 -0
  392. package/dist/http/internal/urlParams.js.map +1 -1
  393. package/dist/http-api/HttpApiBuilder.js +19 -5
  394. package/dist/http-api/HttpApiBuilder.js.map +1 -1
  395. package/dist/http-api/HttpApiClient.d.ts +63 -0
  396. package/dist/http-api/HttpApiClient.d.ts.map +1 -1
  397. package/dist/http-api/HttpApiClient.js +51 -0
  398. package/dist/http-api/HttpApiClient.js.map +1 -1
  399. package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
  400. package/dist/http-api/HttpApiEndpoint.js +14 -5
  401. package/dist/http-api/HttpApiEndpoint.js.map +1 -1
  402. package/dist/http-api/HttpApiError.d.ts +185 -13
  403. package/dist/http-api/HttpApiError.d.ts.map +1 -1
  404. package/dist/http-api/HttpApiError.js +128 -0
  405. package/dist/http-api/HttpApiError.js.map +1 -1
  406. package/dist/http-api/HttpApiMiddleware.d.ts +64 -17
  407. package/dist/http-api/HttpApiMiddleware.d.ts.map +1 -1
  408. package/dist/http-api/HttpApiMiddleware.js +85 -1
  409. package/dist/http-api/HttpApiMiddleware.js.map +1 -1
  410. package/dist/http-api/HttpApiSchema.d.ts +76 -14
  411. package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
  412. package/dist/http-api/HttpApiSchema.js +53 -0
  413. package/dist/http-api/HttpApiSchema.js.map +1 -1
  414. package/dist/index.d.ts +5 -5
  415. package/dist/index.d.ts.map +1 -1
  416. package/dist/index.js +5 -5
  417. package/dist/index.js.map +1 -1
  418. package/dist/internal/effect.js +25 -14
  419. package/dist/internal/effect.js.map +1 -1
  420. package/dist/internal/glob.d.ts +2 -0
  421. package/dist/internal/glob.d.ts.map +1 -0
  422. package/dist/internal/glob.js +630 -0
  423. package/dist/internal/glob.js.map +1 -0
  424. package/dist/internal/matcher.js +10 -0
  425. package/dist/internal/matcher.js.map +1 -1
  426. package/dist/internal/persistence.js +9 -0
  427. package/dist/internal/persistence.js.map +1 -1
  428. package/dist/internal/rcRef.js +4 -1
  429. package/dist/internal/rcRef.js.map +1 -1
  430. package/dist/internal/schema/toCodeDocument.js +6 -3
  431. package/dist/internal/schema/toCodeDocument.js.map +1 -1
  432. package/dist/internal/trie.js +42 -13
  433. package/dist/internal/trie.js.map +1 -1
  434. package/dist/internal/ulid.js +41 -0
  435. package/dist/internal/ulid.js.map +1 -1
  436. package/dist/internal/uuid.js +52 -8
  437. package/dist/internal/uuid.js.map +1 -1
  438. package/dist/internal/version.js +1 -1
  439. package/dist/observability/Otlp.d.ts +15 -4
  440. package/dist/observability/Otlp.d.ts.map +1 -1
  441. package/dist/observability/Otlp.js +10 -0
  442. package/dist/observability/Otlp.js.map +1 -1
  443. package/dist/observability/OtlpResource.d.ts +7 -0
  444. package/dist/observability/OtlpResource.d.ts.map +1 -1
  445. package/dist/observability/OtlpResource.js +11 -1
  446. package/dist/observability/OtlpResource.js.map +1 -1
  447. package/dist/persistence/KeyValueStore.d.ts +47 -2
  448. package/dist/persistence/KeyValueStore.d.ts.map +1 -1
  449. package/dist/persistence/KeyValueStore.js +129 -18
  450. package/dist/persistence/KeyValueStore.js.map +1 -1
  451. package/dist/persistence/PersistedQueue.d.ts +9 -0
  452. package/dist/persistence/PersistedQueue.d.ts.map +1 -1
  453. package/dist/persistence/PersistedQueue.js +94 -52
  454. package/dist/persistence/PersistedQueue.js.map +1 -1
  455. package/dist/persistence/Persistence.d.ts +10 -4
  456. package/dist/persistence/Persistence.d.ts.map +1 -1
  457. package/dist/persistence/Persistence.js +18 -11
  458. package/dist/persistence/Persistence.js.map +1 -1
  459. package/dist/process/ChildProcess.d.ts +207 -67
  460. package/dist/process/ChildProcess.d.ts.map +1 -1
  461. package/dist/process/ChildProcess.js +56 -158
  462. package/dist/process/ChildProcess.js.map +1 -1
  463. package/dist/process/ChildProcessSpawner.d.ts +5 -0
  464. package/dist/process/ChildProcessSpawner.d.ts.map +1 -1
  465. package/dist/process/ChildProcessSpawner.js.map +1 -1
  466. package/dist/process/CommandLine.d.ts +294 -0
  467. package/dist/process/CommandLine.d.ts.map +1 -0
  468. package/dist/process/CommandLine.js +481 -0
  469. package/dist/process/CommandLine.js.map +1 -0
  470. package/dist/process/index.d.ts +5 -0
  471. package/dist/process/index.d.ts.map +1 -1
  472. package/dist/process/index.js +5 -0
  473. package/dist/process/index.js.map +1 -1
  474. package/dist/reactivity/Atom.d.ts +2 -1
  475. package/dist/reactivity/Atom.d.ts.map +1 -1
  476. package/dist/reactivity/Atom.js +3 -4
  477. package/dist/reactivity/Atom.js.map +1 -1
  478. package/dist/reactivity/AtomRegistry.js.map +1 -1
  479. package/dist/rpc/RpcClient.d.ts +16 -1
  480. package/dist/rpc/RpcClient.d.ts.map +1 -1
  481. package/dist/rpc/RpcClient.js +50 -16
  482. package/dist/rpc/RpcClient.js.map +1 -1
  483. package/dist/rpc/RpcMessage.d.ts +10 -1
  484. package/dist/rpc/RpcMessage.d.ts.map +1 -1
  485. package/dist/rpc/RpcMessage.js +1 -0
  486. package/dist/rpc/RpcMessage.js.map +1 -1
  487. package/dist/rpc/RpcSerialization.d.ts.map +1 -1
  488. package/dist/rpc/RpcSerialization.js +6 -0
  489. package/dist/rpc/RpcSerialization.js.map +1 -1
  490. package/dist/rpc/RpcServer.d.ts +31 -0
  491. package/dist/rpc/RpcServer.d.ts.map +1 -1
  492. package/dist/rpc/RpcServer.js +139 -66
  493. package/dist/rpc/RpcServer.js.map +1 -1
  494. package/dist/schema/Model.d.ts +14 -0
  495. package/dist/schema/Model.d.ts.map +1 -1
  496. package/dist/schema/Model.js +18 -3
  497. package/dist/schema/Model.js.map +1 -1
  498. package/dist/sql/Migrator.d.ts +0 -19
  499. package/dist/sql/Migrator.d.ts.map +1 -1
  500. package/dist/sql/Migrator.js +3 -48
  501. package/dist/sql/Migrator.js.map +1 -1
  502. package/dist/sql/MigratorFileSystem.d.ts +21 -0
  503. package/dist/sql/MigratorFileSystem.d.ts.map +1 -0
  504. package/dist/sql/MigratorFileSystem.js +57 -0
  505. package/dist/sql/MigratorFileSystem.js.map +1 -0
  506. package/dist/sql/SqlClient.d.ts.map +1 -1
  507. package/dist/sql/SqlClient.js +5 -9
  508. package/dist/sql/SqlClient.js.map +1 -1
  509. package/dist/sql/Statement.d.ts +20 -6
  510. package/dist/sql/Statement.d.ts.map +1 -1
  511. package/dist/sql/Statement.js +0 -13
  512. package/dist/sql/Statement.js.map +1 -1
  513. package/dist/sql/index.js +1 -1
  514. package/dist/testing/index.d.ts +0 -5
  515. package/dist/testing/index.d.ts.map +1 -1
  516. package/dist/testing/index.js +0 -5
  517. package/dist/testing/index.js.map +1 -1
  518. package/dist/workflow/internal/crypto.js +9 -8
  519. package/dist/workflow/internal/crypto.js.map +1 -1
  520. package/package.json +3 -1
  521. package/src/BigDecimal.ts +3 -0
  522. package/src/Channel.ts +17 -11
  523. package/src/Config.ts +7 -1
  524. package/src/Context.ts +34 -10
  525. package/src/Cron.ts +178 -29
  526. package/src/Duration.ts +140 -0
  527. package/src/Effect.ts +914 -85
  528. package/src/FileSystem.ts +65 -4
  529. package/src/Glob.ts +205 -0
  530. package/src/Match.ts +127 -0
  531. package/src/Pool.ts +73 -15
  532. package/src/Random.ts +3 -3
  533. package/src/RcMap.ts +5 -1
  534. package/src/Schedule.ts +26 -3
  535. package/src/Schema.ts +1189 -62
  536. package/src/SchemaGetter.ts +27 -11
  537. package/src/SchemaRepresentation.ts +19 -0
  538. package/src/SchemaTransformation.ts +8 -3
  539. package/src/ScopedCache.ts +5 -9
  540. package/src/Semaphore.ts +141 -0
  541. package/src/Stream.ts +15 -6
  542. package/src/Terminal.ts +19 -1
  543. package/src/ai/AiError.ts +56 -80
  544. package/src/ai/Decision.ts +257 -6
  545. package/src/ai/DecisionModel.ts +171 -28
  546. package/src/ai/McpServer.ts +1269 -286
  547. package/src/ai/McpTest.ts +380 -0
  548. package/src/ai/Response.ts +2 -22
  549. package/src/ai/Tool.ts +27 -8
  550. package/src/ai/index.ts +6 -0
  551. package/src/ai/internal/mcpCore.ts +78 -44
  552. package/src/ai/internal/mcpProtocol/v2024_11_05.ts +4 -7
  553. package/src/ai/internal/mcpProtocol/v2025_03_26.ts +4 -7
  554. package/src/ai/internal/mcpProtocol/v2025_06_18.ts +4 -7
  555. package/src/ai/internal/mcpProtocol/v2025_11_25.ts +4 -7
  556. package/src/ai/internal/mcpProtocol/v2026_07_28.ts +15 -10
  557. package/src/ai/internal/mcpProtocol.ts +29 -0
  558. package/src/ai/internal/mcpRuntime.ts +9 -5
  559. package/src/ai/internal/mcpStatefulRuntime.ts +14 -2
  560. package/src/cli/Argument.ts +6 -0
  561. package/src/cli/CliOutput.ts +117 -49
  562. package/src/cli/Command.ts +23 -0
  563. package/src/cli/Flag.ts +107 -0
  564. package/src/cli/HelpDoc.ts +18 -1
  565. package/src/cli/Param.ts +6 -0
  566. package/src/cli/Primitive.ts +16 -1
  567. package/src/cli/Prompt.ts +1 -0
  568. package/src/cli/internal/help.ts +21 -9
  569. package/src/cluster/Sharding.ts +93 -26
  570. package/src/cluster/ShardingConfig.ts +41 -3
  571. package/src/cluster/SingleRunner.ts +3 -3
  572. package/src/cluster/SqlMessageStorage.ts +49 -17
  573. package/src/cluster/SqlRunnerStorage.ts +37 -27
  574. package/src/crypto/Aead.ts +517 -0
  575. package/src/crypto/Cipher.ts +326 -0
  576. package/src/crypto/CryptoError.ts +242 -0
  577. package/src/crypto/Digest.ts +167 -0
  578. package/src/crypto/Kdf.ts +315 -0
  579. package/src/crypto/KeyAgreement.ts +489 -0
  580. package/src/crypto/KeyFormat.ts +712 -0
  581. package/src/crypto/KeyWrap.ts +639 -0
  582. package/src/crypto/Mac.ts +386 -0
  583. package/src/crypto/SecureRandom.ts +459 -0
  584. package/src/crypto/Signature.ts +673 -0
  585. package/src/crypto/WebCrypto.ts +64 -0
  586. package/src/crypto/index.ts +78 -0
  587. package/src/crypto/internal/asymmetric.ts +329 -0
  588. package/src/crypto/internal/chacha.ts +1088 -0
  589. package/src/crypto/internal/der.ts +110 -0
  590. package/src/crypto/internal/digest.ts +16 -0
  591. package/src/crypto/internal/key.ts +235 -0
  592. package/src/crypto/internal/md5.ts +170 -0
  593. package/src/crypto/internal/webCrypto.ts +150 -0
  594. package/src/encoding/Base64Url.ts +5 -2
  595. package/src/encoding/Csv.ts +1298 -0
  596. package/src/encoding/Hex.ts +3 -2
  597. package/src/encoding/SchemaBinary.ts +40 -4
  598. package/src/encoding/Toml.ts +85 -20
  599. package/src/encoding/Yaml.ts +61 -18
  600. package/src/encoding/index.ts +6 -0
  601. package/src/eventlog/EventJournal.ts +4 -3
  602. package/src/eventlog/EventLog.ts +340 -15
  603. package/src/eventlog/EventLogEncryption.ts +118 -110
  604. package/src/eventlog/EventLogMessage.ts +273 -1
  605. package/src/eventlog/EventLogRemote.ts +367 -23
  606. package/src/eventlog/EventLogServer.ts +23 -8
  607. package/src/eventlog/EventLogServerEncrypted.ts +1130 -67
  608. package/src/eventlog/EventLogSessionAuth.ts +56 -70
  609. package/src/eventlog/EventRow.ts +12 -3
  610. package/src/eventlog/SqlEventJournal.ts +2 -2
  611. package/src/eventlog/SqlEventLogServerEncrypted.ts +1244 -136
  612. package/src/eventlog/SqlEventLogServerUnencrypted.ts +2 -2
  613. package/src/eventlog/internal/batches.ts +30 -0
  614. package/src/eventlog/internal/compaction.ts +64 -0
  615. package/src/eventlog/internal/identityRootSecretDerivation.ts +93 -123
  616. package/src/eventlog/internal/remoteCompaction.ts +92 -0
  617. package/src/http/Cookies.ts +281 -1
  618. package/src/http/FetchHttpClient.ts +88 -16
  619. package/src/http/HttpClient.ts +89 -22
  620. package/src/http/HttpClientRequest.ts +12 -9
  621. package/src/http/HttpClientResponse.ts +3 -2
  622. package/src/http/HttpMethod.ts +10 -2
  623. package/src/http/HttpServerRequest.ts +15 -30
  624. package/src/http/HttpServerResponse.ts +3 -2
  625. package/src/http/HttpTraceContext.ts +7 -4
  626. package/src/http/ProblemDetails.ts +149 -0
  627. package/src/http/index.ts +6 -0
  628. package/src/http/internal/decompression.ts +4 -4
  629. package/src/http/internal/urlParams.ts +8 -0
  630. package/src/http-api/HttpApiBuilder.ts +24 -12
  631. package/src/http-api/HttpApiClient.ts +67 -1
  632. package/src/http-api/HttpApiEndpoint.ts +14 -5
  633. package/src/http-api/HttpApiError.ts +250 -0
  634. package/src/http-api/HttpApiMiddleware.ts +95 -1
  635. package/src/http-api/HttpApiSchema.ts +105 -14
  636. package/src/index.ts +6 -6
  637. package/src/internal/effect.ts +34 -18
  638. package/src/internal/glob.ts +736 -0
  639. package/src/internal/matcher.ts +17 -0
  640. package/src/internal/persistence.ts +11 -0
  641. package/src/internal/rcRef.ts +4 -1
  642. package/src/internal/schema/toCodeDocument.ts +7 -3
  643. package/src/internal/trie.ts +43 -14
  644. package/src/internal/ulid.ts +44 -0
  645. package/src/internal/uuid.ts +57 -16
  646. package/src/internal/version.ts +1 -1
  647. package/src/observability/Otlp.ts +21 -4
  648. package/src/observability/OtlpResource.ts +9 -1
  649. package/src/persistence/KeyValueStore.ts +219 -22
  650. package/src/persistence/PersistedQueue.ts +128 -59
  651. package/src/persistence/Persistence.ts +20 -13
  652. package/src/process/ChildProcess.ts +255 -260
  653. package/src/process/ChildProcessSpawner.ts +5 -0
  654. package/src/process/CommandLine.ts +630 -0
  655. package/src/process/index.ts +6 -0
  656. package/src/reactivity/Atom.ts +5 -5
  657. package/src/reactivity/AtomRegistry.ts +1 -1
  658. package/src/rpc/RpcClient.ts +62 -26
  659. package/src/rpc/RpcMessage.ts +10 -1
  660. package/src/rpc/RpcSerialization.ts +3 -0
  661. package/src/rpc/RpcServer.ts +176 -78
  662. package/src/schema/Model.ts +26 -3
  663. package/src/sql/Migrator.ts +4 -63
  664. package/src/sql/MigratorFileSystem.ts +71 -0
  665. package/src/sql/SqlClient.ts +2 -16
  666. package/src/sql/Statement.ts +8 -7
  667. package/src/sql/index.ts +1 -1
  668. package/src/testing/index.ts +0 -6
  669. package/src/workflow/internal/crypto.ts +15 -11
  670. package/dist/Crypto.d.ts +0 -244
  671. package/dist/Crypto.d.ts.map +0 -1
  672. package/dist/Crypto.js +0 -139
  673. package/dist/Crypto.js.map +0 -1
  674. package/dist/testing/TestCrypto.d.ts +0 -73
  675. package/dist/testing/TestCrypto.d.ts.map +0 -1
  676. package/dist/testing/TestCrypto.js +0 -87
  677. package/dist/testing/TestCrypto.js.map +0 -1
  678. package/src/Crypto.ts +0 -347
  679. package/src/testing/TestCrypto.ts +0 -94
@@ -748,6 +748,7 @@ export const map: {
748
748
  * Layer.succeed(Terminal.Terminal, Terminal.make({
749
749
  * columns: Effect.succeed(80),
750
750
  * rows: Effect.succeed(24),
751
+ * size: Effect.die("unused"),
751
752
  * readInput: Effect.die("unused"),
752
753
  * readLine: Effect.die("unused"),
753
754
  * display: () => Effect.void
@@ -799,6 +800,7 @@ export const mapEffect: {
799
800
  * Layer.succeed(Terminal.Terminal, Terminal.make({
800
801
  * columns: Effect.succeed(80),
801
802
  * rows: Effect.succeed(24),
803
+ * size: Effect.die("unused"),
802
804
  * readInput: Effect.die("unused"),
803
805
  * readLine: Effect.die("unused"),
804
806
  * display: () => Effect.void
@@ -850,6 +852,7 @@ export const mapEffect: {
850
852
  * Layer.succeed(Terminal.Terminal, Terminal.make({
851
853
  * columns: Effect.succeed(80),
852
854
  * rows: Effect.succeed(24),
855
+ * size: Effect.die("unused"),
853
856
  * readInput: Effect.die("unused"),
854
857
  * readLine: Effect.die("unused"),
855
858
  * display: () => Effect.void
@@ -909,6 +912,7 @@ export const mapEffect: {
909
912
  * Layer.succeed(Terminal.Terminal, Terminal.make({
910
913
  * columns: Effect.succeed(80),
911
914
  * rows: Effect.succeed(24),
915
+ * size: Effect.die("unused"),
912
916
  * readInput: Effect.die("unused"),
913
917
  * readLine: Effect.die("unused"),
914
918
  * display: () => Effect.void
@@ -955,6 +959,7 @@ export const mapTryCatch: {
955
959
  * Layer.succeed(Terminal.Terminal, Terminal.make({
956
960
  * columns: Effect.succeed(80),
957
961
  * rows: Effect.succeed(24),
962
+ * size: Effect.die("unused"),
958
963
  * readInput: Effect.die("unused"),
959
964
  * readLine: Effect.die("unused"),
960
965
  * display: () => Effect.void
@@ -1001,6 +1006,7 @@ export const mapTryCatch: {
1001
1006
  * Layer.succeed(Terminal.Terminal, Terminal.make({
1002
1007
  * columns: Effect.succeed(80),
1003
1008
  * rows: Effect.succeed(24),
1009
+ * size: Effect.die("unused"),
1004
1010
  * readInput: Effect.die("unused"),
1005
1011
  * readLine: Effect.die("unused"),
1006
1012
  * display: () => Effect.void
@@ -16,7 +16,7 @@ import * as Effect from "../Effect.ts"
16
16
  import * as Layer from "../Layer.ts"
17
17
  import * as Option from "../Option.ts"
18
18
  import type * as CliError from "./CliError.ts"
19
- import type { HelpDoc } from "./HelpDoc.ts"
19
+ import type { FlagDoc, HelpDoc } from "./HelpDoc.ts"
20
20
  import * as Ansi from "./internal/ansi.ts"
21
21
  import * as TerminalCapabilities from "./TerminalCapabilities.ts"
22
22
 
@@ -453,6 +453,23 @@ const escapeControlCharacters = (text: string): string =>
453
453
  /**
454
454
  * Creates a default formatter with configurable options.
455
455
  *
456
+ * **Details**
457
+ *
458
+ * - `colors`: force ANSI colors on or off. Defaults to terminal detection.
459
+ * - `inheritedFlags`: how subcommand help renders flags inherited from
460
+ * ancestor commands. `"full"` (default) lists them under `INHERITED FLAGS`,
461
+ * `"summary"` replaces the section with a pointer to the parent command's
462
+ * help, and `"none"` omits it.
463
+ * - `globalFlags`: the same choice for `GLOBAL FLAGS`, with the summary
464
+ * pointing at the help of the nearest command that declares global flags
465
+ * (the root command for built-in flags). Commands that declare global flags
466
+ * always list them in full.
467
+ *
468
+ * **Gotchas**
469
+ *
470
+ * Per-flag filtering in a custom formatter matches names, not flag identities.
471
+ * Renaming a flag without updating the filter silently stops it from matching.
472
+ *
456
473
  * **Example** (Creating default formatters)
457
474
  *
458
475
  * ```ts import.meta.vitest
@@ -467,6 +484,9 @@ const escapeControlCharacters = (text: string): string =>
467
484
  * // Auto-detect colors based on terminal support (default behavior)
468
485
  * const autoFormatter = CliOutput.defaultFormatter()
469
486
  *
487
+ * // Point subcommand help at the declaring scope for global flags
488
+ * const compactFormatter = CliOutput.defaultFormatter({ globalFlags: "summary" })
489
+ *
470
490
  * const error = new CliError.InvalidValue({
471
491
  * option: "foo",
472
492
  * value: "bar",
@@ -477,14 +497,64 @@ const escapeControlCharacters = (text: string): string =>
477
497
  * noColorFormatter.formatError(error).includes("Invalid value") // => true
478
498
  * colorFormatter.formatVersion("my-tool", "1.2.3").includes("my-tool") // => true
479
499
  * autoFormatter.formatVersion("my-tool", "1.2.3").includes("1.2.3") // => true
500
+ * compactFormatter.formatVersion("my-tool", "1.2.3").includes("my-tool") // => true
501
+ * ```
502
+ *
503
+ * **Example** (Hiding one inherited flag)
504
+ *
505
+ * Filter only `inheritedFlags` to keep `--profile` visible on its declaring
506
+ * command while hiding it on descendants. Other inherited flags still render.
507
+ *
508
+ * ```ts import.meta.vitest
509
+ * import { Context, Effect, Option } from "effect"
510
+ * import { CliOutput } from "effect/cli"
511
+ *
512
+ * const base = CliOutput.defaultFormatter({ colors: false })
513
+ * const formatter: CliOutput.Formatter = {
514
+ * ...base,
515
+ * formatHelpDoc: (doc) =>
516
+ * base.formatHelpDoc({
517
+ * ...doc,
518
+ * inheritedFlags: doc.inheritedFlags?.filter((flag) => flag.name !== "profile")
519
+ * })
520
+ * }
521
+ *
522
+ * const program = Effect.gen(function*() {
523
+ * const output = yield* CliOutput.Formatter
524
+ * return output.formatHelpDoc({
525
+ * description: "Deploy the application",
526
+ * usage: "app deploy",
527
+ * annotations: Context.empty(),
528
+ * flags: [],
529
+ * inheritedFlags: ["profile", "region"].map((name) => ({
530
+ * name,
531
+ * aliases: [],
532
+ * type: "string",
533
+ * description: Option.none(),
534
+ * required: false
535
+ * }))
536
+ * })
537
+ * }).pipe(Effect.provide(CliOutput.layer(formatter)))
538
+ *
539
+ * const help = await Effect.runPromise(program)
540
+ * help.includes("--profile") // => false
541
+ * help.includes("--region") // => true
480
542
  * ```
481
543
  *
482
544
  * @stability unstable
483
545
  * @category constructors
484
546
  * @since 4.0.0
485
547
  */
486
- export const defaultFormatter = (options?: { colors?: boolean }): Formatter => {
548
+ export const defaultFormatter = (options?: {
549
+ readonly colors?: boolean | undefined
550
+ readonly inheritedFlags?: "full" | "summary" | "none" | undefined
551
+ readonly globalFlags?: "full" | "summary" | "none" | undefined
552
+ }): Formatter => {
487
553
  const useColor = options?.colors ?? Ansi.detectColors()
554
+ const helpOptions: HelpOptions = {
555
+ inheritedFlags: options?.inheritedFlags ?? "full",
556
+ globalFlags: options?.globalFlags ?? "full"
557
+ }
488
558
 
489
559
  // Color palette using ANSI escape codes
490
560
  const colors = useColor
@@ -512,7 +582,7 @@ export const defaultFormatter = (options?: { colors?: boolean }): Formatter => {
512
582
  const bold = useColor ? "\x1b[1m" : ""
513
583
 
514
584
  return {
515
- formatHelpDoc: (doc: HelpDoc): string => formatHelpDocImpl(doc, colors),
585
+ formatHelpDoc: (doc: HelpDoc): string => formatHelpDocImpl(doc, colors, helpOptions),
516
586
  formatCliError: (error): string => escapeControlCharacters(error.message),
517
587
  formatError: (error): string => {
518
588
  return `\n${bold}${red}ERROR${reset}\n ${escapeControlCharacters(error.message)}${reset}`
@@ -671,11 +741,18 @@ interface ColorFunctions {
671
741
  readonly magenta: (text: string) => string
672
742
  }
673
743
 
744
+ type FlagSectionMode = "full" | "summary" | "none"
745
+
746
+ interface HelpOptions {
747
+ readonly inheritedFlags: FlagSectionMode
748
+ readonly globalFlags: FlagSectionMode
749
+ }
750
+
674
751
  /**
675
752
  * Internal implementation of help formatting that accepts configurable color functions.
676
753
  * @internal
677
754
  */
678
- const formatHelpDocImpl = (doc: HelpDoc, colors: ColorFunctions): string => {
755
+ const formatHelpDocImpl = (doc: HelpDoc, colors: ColorFunctions, options: HelpOptions): string => {
679
756
  const sections: Array<string> = []
680
757
 
681
758
  // Description section
@@ -717,60 +794,51 @@ const formatHelpDocImpl = (doc: HelpDoc, colors: ColorFunctions): string => {
717
794
  sections.push("")
718
795
  }
719
796
 
720
- // Flags section
721
- if (doc.flags.length > 0) {
722
- sections.push(colors.bold("FLAGS"))
723
-
724
- const flagRows: Array<Row> = doc.flags.map((flag) => {
725
- const names: Array<string> = []
726
-
727
- // Add main name with -- prefix first
728
- names.push(colors.green(`--${flag.name}`))
729
-
730
- // Add aliases after (like -f) to match expected ordering
731
- for (const alias of flag.aliases) {
732
- names.push(colors.green(alias))
733
- }
734
-
735
- const namesPart = names.join(", ")
797
+ const renderFlags = (title: string, flags: ReadonlyArray<FlagDoc>) => {
798
+ sections.push(colors.bold(title))
799
+ sections.push(renderTable(flags.map((flag) => {
800
+ const names = [`--${flag.name}`, ...flag.aliases].map(colors.green).join(", ")
736
801
  const typePart = flag.type !== "boolean" ? ` ${colors.dim(flag.type)}` : ""
737
-
738
802
  return {
739
- left: namesPart + typePart,
803
+ left: names + typePart,
740
804
  right: Option.getOrElse(flag.description, () => "")
741
805
  }
742
- })
743
-
744
- sections.push(renderTable(flagRows))
806
+ })))
745
807
  sections.push("")
746
808
  }
747
809
 
748
- // Global Flags section
749
- if (doc.globalFlags && doc.globalFlags.length > 0) {
750
- sections.push(colors.bold("GLOBAL FLAGS"))
751
-
752
- const globalFlagRows: Array<Row> = doc.globalFlags.map((flag) => {
753
- const names: Array<string> = []
754
-
755
- // Add main name with -- prefix first
756
- names.push(colors.green(`--${flag.name}`))
757
-
758
- // Add aliases after (like -f) to match expected ordering
759
- for (const alias of flag.aliases) {
760
- names.push(colors.green(alias))
761
- }
762
-
763
- const namesPart = names.join(", ")
764
- const typePart = flag.type !== "boolean" ? ` ${colors.dim(flag.type)}` : ""
810
+ const summaries: Array<string> = []
811
+ const renderFlagSection = (
812
+ title: string,
813
+ flags: ReadonlyArray<FlagDoc> | undefined,
814
+ mode: FlagSectionMode,
815
+ summaryPath: ReadonlyArray<string> | undefined
816
+ ) => {
817
+ if (!flags || flags.length === 0 || mode === "none") return
818
+ if (mode === "summary" && summaryPath && summaryPath.length > 0) {
819
+ summaries.push(`Run '${summaryPath.join(" ")} --help' for ${title.toLowerCase()}`)
820
+ } else {
821
+ renderFlags(title, flags)
822
+ }
823
+ }
765
824
 
766
- return {
767
- left: namesPart + typePart,
768
- right: Option.getOrElse(flag.description, () => "")
769
- }
770
- })
825
+ if (doc.flags.length > 0) {
826
+ renderFlags("FLAGS", doc.flags)
827
+ }
771
828
 
772
- sections.push(renderTable(globalFlagRows))
773
- sections.push("")
829
+ const commandPath = doc.commandPath
830
+ renderFlagSection("INHERITED FLAGS", doc.inheritedFlags, options.inheritedFlags, commandPath?.slice(0, -1))
831
+ // Keep globals discoverable on their declaring command, even in "none" mode.
832
+ const globalFlagsScope = doc.globalFlagsScope ?? commandPath?.slice(0, 1)
833
+ const declaresGlobalFlags = commandPath === undefined || globalFlagsScope?.length === commandPath.length
834
+ renderFlagSection(
835
+ "GLOBAL FLAGS",
836
+ doc.globalFlags,
837
+ declaresGlobalFlags ? "full" : options.globalFlags,
838
+ globalFlagsScope
839
+ )
840
+ if (summaries.length > 0) {
841
+ sections.push(...summaries, "")
774
842
  }
775
843
 
776
844
  // Subcommands section
@@ -72,6 +72,7 @@ import * as Prompt from "./Prompt.ts"
72
72
  * Layer.succeed(Terminal.Terminal, Terminal.make({
73
73
  * columns: Effect.succeed(80),
74
74
  * rows: Effect.succeed(24),
75
+ * size: Effect.die("unused"),
75
76
  * readInput: Effect.die("unused"),
76
77
  * readLine: Effect.die("unused"),
77
78
  * display: () => Effect.void
@@ -461,6 +462,7 @@ export type Services<C> = C extends Command<
461
462
  * Layer.succeed(Terminal.Terminal, Terminal.make({
462
463
  * columns: Effect.succeed(80),
463
464
  * rows: Effect.succeed(24),
465
+ * size: Effect.die("unused"),
464
466
  * readInput: Effect.die("unused"),
465
467
  * readLine: Effect.die("unused"),
466
468
  * display: () => Effect.void
@@ -573,6 +575,7 @@ export const isCommand = (u: unknown): u is Command.Any => Predicate.hasProperty
573
575
  * Layer.succeed(Terminal.Terminal, Terminal.make({
574
576
  * columns: Effect.succeed(80),
575
577
  * rows: Effect.succeed(24),
578
+ * size: Effect.die("unused"),
576
579
  * readInput: Effect.die("unused"),
577
580
  * readLine: Effect.die("unused"),
578
581
  * display: () => Effect.void
@@ -667,6 +670,7 @@ export const make: {
667
670
  * Layer.succeed(Terminal.Terminal, Terminal.make({
668
671
  * columns: Effect.succeed(80),
669
672
  * rows: Effect.succeed(24),
673
+ * size: Effect.die("unused"),
670
674
  * readInput: Effect.die("unused"),
671
675
  * readLine: Effect.die("unused"),
672
676
  * display: () => Effect.void
@@ -762,6 +766,7 @@ export const make: {
762
766
  * Layer.succeed(Terminal.Terminal, Terminal.make({
763
767
  * columns: Effect.succeed(80),
764
768
  * rows: Effect.succeed(24),
769
+ * size: Effect.die("unused"),
765
770
  * readInput: Effect.die("unused"),
766
771
  * readLine: Effect.die("unused"),
767
772
  * display: () => Effect.void
@@ -857,6 +862,7 @@ export const make: {
857
862
  * Layer.succeed(Terminal.Terminal, Terminal.make({
858
863
  * columns: Effect.succeed(80),
859
864
  * rows: Effect.succeed(24),
865
+ * size: Effect.die("unused"),
860
866
  * readInput: Effect.die("unused"),
861
867
  * readLine: Effect.die("unused"),
862
868
  * display: () => Effect.void
@@ -961,6 +967,7 @@ export const make: {
961
967
  * Layer.succeed(Terminal.Terminal, Terminal.make({
962
968
  * columns: Effect.succeed(80),
963
969
  * rows: Effect.succeed(24),
970
+ * size: Effect.die("unused"),
964
971
  * readInput: Effect.die("unused"),
965
972
  * readLine: Effect.die("unused"),
966
973
  * display: () => Effect.void
@@ -1018,6 +1025,7 @@ export const withHandler: {
1018
1025
  * Layer.succeed(Terminal.Terminal, Terminal.make({
1019
1026
  * columns: Effect.succeed(80),
1020
1027
  * rows: Effect.succeed(24),
1028
+ * size: Effect.die("unused"),
1021
1029
  * readInput: Effect.die("unused"),
1022
1030
  * readLine: Effect.die("unused"),
1023
1031
  * display: () => Effect.void
@@ -1077,6 +1085,7 @@ export const withHandler: {
1077
1085
  * Layer.succeed(Terminal.Terminal, Terminal.make({
1078
1086
  * columns: Effect.succeed(80),
1079
1087
  * rows: Effect.succeed(24),
1088
+ * size: Effect.die("unused"),
1080
1089
  * readInput: Effect.die("unused"),
1081
1090
  * readLine: Effect.die("unused"),
1082
1091
  * display: () => Effect.void
@@ -1437,6 +1446,7 @@ const normalizeSubcommandEntries = (
1437
1446
  * Layer.succeed(Terminal.Terminal, Terminal.make({
1438
1447
  * columns: Effect.succeed(80),
1439
1448
  * rows: Effect.succeed(24),
1449
+ * size: Effect.die("unused"),
1440
1450
  * readInput: Effect.die("unused"),
1441
1451
  * readLine: Effect.die("unused"),
1442
1452
  * display: () => Effect.void
@@ -1508,6 +1518,7 @@ export const withSubcommands: {
1508
1518
  * Layer.succeed(Terminal.Terminal, Terminal.make({
1509
1519
  * columns: Effect.succeed(80),
1510
1520
  * rows: Effect.succeed(24),
1521
+ * size: Effect.die("unused"),
1511
1522
  * readInput: Effect.die("unused"),
1512
1523
  * readLine: Effect.die("unused"),
1513
1524
  * display: () => Effect.void
@@ -1587,6 +1598,7 @@ export const withSubcommands: {
1587
1598
  * Layer.succeed(Terminal.Terminal, Terminal.make({
1588
1599
  * columns: Effect.succeed(80),
1589
1600
  * rows: Effect.succeed(24),
1601
+ * size: Effect.die("unused"),
1590
1602
  * readInput: Effect.die("unused"),
1591
1603
  * readLine: Effect.die("unused"),
1592
1604
  * display: () => Effect.void
@@ -1947,6 +1959,7 @@ type ExtractSubcommandContext<T extends ReadonlyArray<Command.SubcommandEntry>>
1947
1959
  * Layer.succeed(Terminal.Terminal, Terminal.make({
1948
1960
  * columns: Effect.succeed(80),
1949
1961
  * rows: Effect.succeed(24),
1962
+ * size: Effect.die("unused"),
1950
1963
  * readInput: Effect.die("unused"),
1951
1964
  * readLine: Effect.die("unused"),
1952
1965
  * display: () => Effect.void
@@ -2000,6 +2013,7 @@ export const withDescription: {
2000
2013
  * Layer.succeed(Terminal.Terminal, Terminal.make({
2001
2014
  * columns: Effect.succeed(80),
2002
2015
  * rows: Effect.succeed(24),
2016
+ * size: Effect.die("unused"),
2003
2017
  * readInput: Effect.die("unused"),
2004
2018
  * readLine: Effect.die("unused"),
2005
2019
  * display: () => Effect.void
@@ -2055,6 +2069,7 @@ export const withDescription: {
2055
2069
  * Layer.succeed(Terminal.Terminal, Terminal.make({
2056
2070
  * columns: Effect.succeed(80),
2057
2071
  * rows: Effect.succeed(24),
2072
+ * size: Effect.die("unused"),
2058
2073
  * readInput: Effect.die("unused"),
2059
2074
  * readLine: Effect.die("unused"),
2060
2075
  * display: () => Effect.void
@@ -2588,6 +2603,7 @@ const mapHandler = <Name extends string, Input, E, R, ContextInput, E2, R2>(
2588
2603
  * Layer.succeed(Terminal.Terminal, Terminal.make({
2589
2604
  * columns: Effect.succeed(80),
2590
2605
  * rows: Effect.succeed(24),
2606
+ * size: Effect.die("unused"),
2591
2607
  * readInput: Effect.die("unused"),
2592
2608
  * readLine: Effect.die("unused"),
2593
2609
  * display: () => Effect.void
@@ -2651,6 +2667,7 @@ export const provide: {
2651
2667
  * Layer.succeed(Terminal.Terminal, Terminal.make({
2652
2668
  * columns: Effect.succeed(80),
2653
2669
  * rows: Effect.succeed(24),
2670
+ * size: Effect.die("unused"),
2654
2671
  * readInput: Effect.die("unused"),
2655
2672
  * readLine: Effect.die("unused"),
2656
2673
  * display: () => Effect.void
@@ -2721,6 +2738,7 @@ export const provide: {
2721
2738
  * Layer.succeed(Terminal.Terminal, Terminal.make({
2722
2739
  * columns: Effect.succeed(80),
2723
2740
  * rows: Effect.succeed(24),
2741
+ * size: Effect.die("unused"),
2724
2742
  * readInput: Effect.die("unused"),
2725
2743
  * readLine: Effect.die("unused"),
2726
2744
  * display: () => Effect.void
@@ -2982,6 +3000,7 @@ export const provideEffectDiscard: {
2982
3000
  * Layer.succeed(Terminal.Terminal, Terminal.make({
2983
3001
  * columns: Effect.succeed(80),
2984
3002
  * rows: Effect.succeed(24),
3003
+ * size: Effect.die("unused"),
2985
3004
  * readInput: Effect.die("unused"),
2986
3005
  * readLine: Effect.die("unused"),
2987
3006
  * display: () => Effect.void
@@ -3114,6 +3133,7 @@ const showUserError = (error: object, userMessage: string): Effect.Effect<void>
3114
3133
  * Layer.succeed(Terminal.Terminal, Terminal.make({
3115
3134
  * columns: Effect.succeed(80),
3116
3135
  * rows: Effect.succeed(24),
3136
+ * size: Effect.die("unused"),
3117
3137
  * readInput: Effect.die("unused"),
3118
3138
  * readLine: Effect.die("unused"),
3119
3139
  * display: () => Effect.void
@@ -3179,6 +3199,7 @@ export const run: {
3179
3199
  * Layer.succeed(Terminal.Terminal, Terminal.make({
3180
3200
  * columns: Effect.succeed(80),
3181
3201
  * rows: Effect.succeed(24),
3202
+ * size: Effect.die("unused"),
3182
3203
  * readInput: Effect.die("unused"),
3183
3204
  * readLine: Effect.die("unused"),
3184
3205
  * display: () => Effect.void
@@ -3251,6 +3272,7 @@ export const run: {
3251
3272
  * Layer.succeed(Terminal.Terminal, Terminal.make({
3252
3273
  * columns: Effect.succeed(80),
3253
3274
  * rows: Effect.succeed(24),
3275
+ * size: Effect.die("unused"),
3254
3276
  * readInput: Effect.die("unused"),
3255
3277
  * readLine: Effect.die("unused"),
3256
3278
  * display: () => Effect.void
@@ -3334,6 +3356,7 @@ export const run: {
3334
3356
  * Layer.succeed(Terminal.Terminal, Terminal.make({
3335
3357
  * columns: Effect.succeed(80),
3336
3358
  * rows: Effect.succeed(24),
3359
+ * size: Effect.die("unused"),
3337
3360
  * readInput: Effect.die("unused"),
3338
3361
  * readLine: Effect.die("unused"),
3339
3362
  * display: () => Effect.void
package/src/cli/Flag.ts CHANGED
@@ -290,6 +290,7 @@ export const Directory = (name: string, options?: {
290
290
  * Layer.succeed(Terminal.Terminal, Terminal.make({
291
291
  * columns: Effect.succeed(80),
292
292
  * rows: Effect.succeed(24),
293
+ * size: Effect.die("unused"),
293
294
  * readInput: Effect.die("unused"),
294
295
  * readLine: Effect.die("unused"),
295
296
  * display: () => Effect.void
@@ -981,6 +982,7 @@ export const withHidden = <A>(self: Flag<A>): Flag<A> => Param.withHidden(self)
981
982
  * Layer.succeed(Terminal.Terminal, Terminal.make({
982
983
  * columns: Effect.succeed(80),
983
984
  * rows: Effect.succeed(24),
985
+ * size: Effect.die("unused"),
984
986
  * readInput: Effect.die("unused"),
985
987
  * readLine: Effect.die("unused"),
986
988
  * display: () => Effect.void
@@ -1171,6 +1173,38 @@ export const withFallbackConfig: {
1171
1173
  * name.kind // => "flag"
1172
1174
  * ```
1173
1175
  *
1176
+ * **Example** (Showing an introduction before fallback prompts)
1177
+ *
1178
+ * The prompt can be built by an effect, which only runs when the prompt is
1179
+ * needed. Share a cached introduction between the prompt builders and
1180
+ * `Command.provideEffectDiscard`: it runs once, before the first prompt, and
1181
+ * also runs when every flag is supplied. Flags declared after the first
1182
+ * prompted flag may not have been validated yet when the introduction runs.
1183
+ *
1184
+ * ```ts import.meta.vitest
1185
+ * import { Console, Effect } from "effect"
1186
+ * import { Command, Flag, Prompt } from "effect/cli"
1187
+ *
1188
+ * const program = Effect.gen(function*() {
1189
+ * const intro = yield* Effect.cached(Console.log("Welcome to demo"))
1190
+ *
1191
+ * const ask = (name: string) =>
1192
+ * Flag.String(name).pipe(
1193
+ * Flag.withFallbackPrompt(
1194
+ * Effect.as(intro, Prompt.String({ message: `${name}?` }))
1195
+ * )
1196
+ * )
1197
+ *
1198
+ * const demo = Command.make(
1199
+ * "demo",
1200
+ * { name: ask("name"), dir: ask("dir") },
1201
+ * (input) => Console.log(input)
1202
+ * ).pipe(Command.provideEffectDiscard(intro))
1203
+ *
1204
+ * yield* Command.run(demo, { version: "1.0.0" })
1205
+ * })
1206
+ * ```
1207
+ *
1174
1208
  * @stability unstable
1175
1209
  * @category combinators
1176
1210
  * @since 4.0.0
@@ -1195,6 +1229,38 @@ export const withFallbackPrompt: {
1195
1229
  * name.kind // => "flag"
1196
1230
  * ```
1197
1231
  *
1232
+ * **Example** (Showing an introduction before fallback prompts)
1233
+ *
1234
+ * The prompt can be built by an effect, which only runs when the prompt is
1235
+ * needed. Share a cached introduction between the prompt builders and
1236
+ * `Command.provideEffectDiscard`: it runs once, before the first prompt, and
1237
+ * also runs when every flag is supplied. Flags declared after the first
1238
+ * prompted flag may not have been validated yet when the introduction runs.
1239
+ *
1240
+ * ```ts import.meta.vitest
1241
+ * import { Console, Effect } from "effect"
1242
+ * import { Command, Flag, Prompt } from "effect/cli"
1243
+ *
1244
+ * const program = Effect.gen(function*() {
1245
+ * const intro = yield* Effect.cached(Console.log("Welcome to demo"))
1246
+ *
1247
+ * const ask = (name: string) =>
1248
+ * Flag.String(name).pipe(
1249
+ * Flag.withFallbackPrompt(
1250
+ * Effect.as(intro, Prompt.String({ message: `${name}?` }))
1251
+ * )
1252
+ * )
1253
+ *
1254
+ * const demo = Command.make(
1255
+ * "demo",
1256
+ * { name: ask("name"), dir: ask("dir") },
1257
+ * (input) => Console.log(input)
1258
+ * ).pipe(Command.provideEffectDiscard(intro))
1259
+ *
1260
+ * yield* Command.run(demo, { version: "1.0.0" })
1261
+ * })
1262
+ * ```
1263
+ *
1198
1264
  * @stability unstable
1199
1265
  * @category combinators
1200
1266
  * @since 4.0.0
@@ -1219,6 +1285,38 @@ export const withFallbackPrompt: {
1219
1285
  * name.kind // => "flag"
1220
1286
  * ```
1221
1287
  *
1288
+ * **Example** (Showing an introduction before fallback prompts)
1289
+ *
1290
+ * The prompt can be built by an effect, which only runs when the prompt is
1291
+ * needed. Share a cached introduction between the prompt builders and
1292
+ * `Command.provideEffectDiscard`: it runs once, before the first prompt, and
1293
+ * also runs when every flag is supplied. Flags declared after the first
1294
+ * prompted flag may not have been validated yet when the introduction runs.
1295
+ *
1296
+ * ```ts import.meta.vitest
1297
+ * import { Console, Effect } from "effect"
1298
+ * import { Command, Flag, Prompt } from "effect/cli"
1299
+ *
1300
+ * const program = Effect.gen(function*() {
1301
+ * const intro = yield* Effect.cached(Console.log("Welcome to demo"))
1302
+ *
1303
+ * const ask = (name: string) =>
1304
+ * Flag.String(name).pipe(
1305
+ * Flag.withFallbackPrompt(
1306
+ * Effect.as(intro, Prompt.String({ message: `${name}?` }))
1307
+ * )
1308
+ * )
1309
+ *
1310
+ * const demo = Command.make(
1311
+ * "demo",
1312
+ * { name: ask("name"), dir: ask("dir") },
1313
+ * (input) => Console.log(input)
1314
+ * ).pipe(Command.provideEffectDiscard(intro))
1315
+ *
1316
+ * yield* Command.run(demo, { version: "1.0.0" })
1317
+ * })
1318
+ * ```
1319
+ *
1222
1320
  * @stability unstable
1223
1321
  * @category combinators
1224
1322
  * @since 4.0.0
@@ -1320,6 +1418,7 @@ export const map: {
1320
1418
  * Layer.succeed(Terminal.Terminal, Terminal.make({
1321
1419
  * columns: Effect.succeed(80),
1322
1420
  * rows: Effect.succeed(24),
1421
+ * size: Effect.die("unused"),
1323
1422
  * readInput: Effect.die("unused"),
1324
1423
  * readLine: Effect.die("unused"),
1325
1424
  * display: () => Effect.void
@@ -1365,6 +1464,7 @@ export const mapEffect: {
1365
1464
  * Layer.succeed(Terminal.Terminal, Terminal.make({
1366
1465
  * columns: Effect.succeed(80),
1367
1466
  * rows: Effect.succeed(24),
1467
+ * size: Effect.die("unused"),
1368
1468
  * readInput: Effect.die("unused"),
1369
1469
  * readLine: Effect.die("unused"),
1370
1470
  * display: () => Effect.void
@@ -1410,6 +1510,7 @@ export const mapEffect: {
1410
1510
  * Layer.succeed(Terminal.Terminal, Terminal.make({
1411
1511
  * columns: Effect.succeed(80),
1412
1512
  * rows: Effect.succeed(24),
1513
+ * size: Effect.die("unused"),
1413
1514
  * readInput: Effect.die("unused"),
1414
1515
  * readLine: Effect.die("unused"),
1415
1516
  * display: () => Effect.void
@@ -1463,6 +1564,7 @@ export const mapEffect: {
1463
1564
  * Layer.succeed(Terminal.Terminal, Terminal.make({
1464
1565
  * columns: Effect.succeed(80),
1465
1566
  * rows: Effect.succeed(24),
1567
+ * size: Effect.die("unused"),
1466
1568
  * readInput: Effect.die("unused"),
1467
1569
  * readLine: Effect.die("unused"),
1468
1570
  * display: () => Effect.void
@@ -1520,6 +1622,7 @@ export const mapTryCatch: {
1520
1622
  * Layer.succeed(Terminal.Terminal, Terminal.make({
1521
1623
  * columns: Effect.succeed(80),
1522
1624
  * rows: Effect.succeed(24),
1625
+ * size: Effect.die("unused"),
1523
1626
  * readInput: Effect.die("unused"),
1524
1627
  * readLine: Effect.die("unused"),
1525
1628
  * display: () => Effect.void
@@ -1577,6 +1680,7 @@ export const mapTryCatch: {
1577
1680
  * Layer.succeed(Terminal.Terminal, Terminal.make({
1578
1681
  * columns: Effect.succeed(80),
1579
1682
  * rows: Effect.succeed(24),
1683
+ * size: Effect.die("unused"),
1580
1684
  * readInput: Effect.die("unused"),
1581
1685
  * readLine: Effect.die("unused"),
1582
1686
  * display: () => Effect.void
@@ -2146,6 +2250,7 @@ export const orElse: {
2146
2250
  * Layer.succeed(Terminal.Terminal, Terminal.make({
2147
2251
  * columns: Effect.succeed(80),
2148
2252
  * rows: Effect.succeed(24),
2253
+ * size: Effect.die("unused"),
2149
2254
  * readInput: Effect.die("unused"),
2150
2255
  * readLine: Effect.die("unused"),
2151
2256
  * display: () => Effect.void
@@ -2194,6 +2299,7 @@ export const orElseResult: {
2194
2299
  * Layer.succeed(Terminal.Terminal, Terminal.make({
2195
2300
  * columns: Effect.succeed(80),
2196
2301
  * rows: Effect.succeed(24),
2302
+ * size: Effect.die("unused"),
2197
2303
  * readInput: Effect.die("unused"),
2198
2304
  * readLine: Effect.die("unused"),
2199
2305
  * display: () => Effect.void
@@ -2242,6 +2348,7 @@ export const orElseResult: {
2242
2348
  * Layer.succeed(Terminal.Terminal, Terminal.make({
2243
2349
  * columns: Effect.succeed(80),
2244
2350
  * rows: Effect.succeed(24),
2351
+ * size: Effect.die("unused"),
2245
2352
  * readInput: Effect.die("unused"),
2246
2353
  * readLine: Effect.die("unused"),
2247
2354
  * display: () => Effect.void
@@ -82,10 +82,27 @@ export interface HelpDoc {
82
82
  readonly flags: ReadonlyArray<FlagDoc>
83
83
 
84
84
  /**
85
- * Global flags available to all commands (e.g., --help, --version).
85
+ * Shared flags inherited from ancestor commands.
86
+ */
87
+ readonly inheritedFlags?: ReadonlyArray<FlagDoc>
88
+
89
+ /**
90
+ * Global flags active at this command, including built-ins (e.g., --help).
86
91
  */
87
92
  readonly globalFlags?: ReadonlyArray<FlagDoc>
88
93
 
94
+ /**
95
+ * Root-to-command path of the nearest ancestor (or this command) declaring
96
+ * global flags. Defaults to the root for built-ins.
97
+ */
98
+ readonly globalFlagsScope?: ReadonlyArray<string>
99
+
100
+ /**
101
+ * Command names from the root command to this command, e.g.
102
+ * `["myapp", "deploy"]`.
103
+ */
104
+ readonly commandPath?: ReadonlyArray<string>
105
+
89
106
  /**
90
107
  * Custom command annotations.
91
108
  */