Effect
4.0.0-beta.21
Patch Changes
-
#1555
e691909Thanks @tim-smart! - fix Stream.withSpan options -
#1548
d5f413fThanks @effect-bot! - FixTxPubSub.publishandTxPubSub.publishAlloverloads to requireEffect.Transactionin their return environment. -
#1557
139d152Thanks @A386official! - Fix MCP resource template parameter names resolving asparam0,param1instead of actual names by checkingisParamon the original schema beforetoCodecStringTreetransformation. -
#1547
947e3d4Thanks @effect-bot! - FixSchedule.reduceto persist state updates when the combine function returns a synchronous value. -
#1545
84b2cceThanks @effect-bot! - Fix TupleWithRest post-rest validation to check each tail index sequentially. -
#1552
7f5305eThanks @tim-smart! - ConstrainHttpServerRequest.sourcetoobjectand key server-side request weak caches byrequest.sourceso middleware request wrappers share the same cache entries. -
#1556
9e6fd84Thanks @tim-smart! - rename WorkflowEngine.layer -
#1558
fdb8a4bThanks @tim-smart! - FixWorkflow.executionIdto use schemamakeUnsafeinstead of the removed.makeAPI. -
#1553
0f986efThanks @kaylynb! - Fix spans never having parent span -
#1541
9355fc0Thanks @tim-smart! - AddEffect.findFirstandEffect.findFirstFilterfor short-circuiting effectful searches over iterables.
4.0.0-beta.20
Patch Changes
-
#1533
842a624Thanks @tim-smart! - move ChildProcess apis into spawner service -
#1536
4785eefThanks @tim-smart! - add Context.Key type, used a base for Context.Service and Context.Reference -
#1531
8fac95bThanks @gcanti! - RevertConfig.withDefaultto v3 behavior, closes #1530.Make
Config.withDefaultaccept an eager value instead ofLazyArg, aligning with CLI module conventions. -
#1535
12ee8e2Thanks @tim-smart! - change default ErrorReporter severity to Info -
#1529
e542c94Thanks @tim-smart! - Add dedicated AiError metadata interfaces per reason so provider packages can safely augment metadata without conflicting module declarations. -
#1531
8fac95bThanks @gcanti! - FixConfig.withDefaulttype inference, closes #1530. -
#1528
6f4ebd1Thanks @tim-smart! - AddModel.ModelNameand provide it from AI model constructors. -
#1537
989d1ccThanks @tim-smart! - RevertEffect.partitionto Effect v3 behavior by accumulating failures from the effect error channel and never failing.
4.0.0-beta.19
4.0.0-beta.18
Minor Changes
-
#1515
01e31fdThanks @mikearnaldi! - Add transactional STM modules: TxDeferred, TxPriorityQueue, TxPubSub, TxReentrantLock, TxSubscriptionRef.Refactor transaction model: remove
Effect.atomic/Effect.atomicWith, addEffect.withTxState. All Tx operations now returnEffect<A, E, Transaction>requiring explicitEffect.transaction(...)at boundaries.Expose
TxPubSub.acquireSubscriber/releaseSubscriberfor composable transaction boundaries. FixTxSubscriptionRef.changesrace condition ensuring current value is delivered first.Remove
TxRandommodule.
Patch Changes
-
#1518
0890aabThanks @IMax153! - FixCommand.withGlobalFlagstype inference when mixingGlobalFlag.actionandGlobalFlag.setting.Settingservice identifiers are now correctly removed from command requirements in mixed global flag arrays. -
#1520
725260bThanks @IMax153! - Ensure that OpenAI JSON schemas for tool calls and structured outputs are properly transformed
4.0.0-beta.17
Patch Changes
- #1516
8f59c32Thanks @gcanti! - FixSchema.encodeKeysto encode non-remapped struct fields during encoding.
4.0.0-beta.16
Patch Changes
-
#1513
bf9096cThanks @gcanti! - AddSchemaParser.makeOptionandSchema.makeOptionfor constructing schema values asOption. -
#1508
29f81caThanks @gcanti! - Schema: addOptionFromUndefinedOrandOptionFromNullishOrschemas. -
#1498
68eb28cThanks @kaylynb! - Fix OpenApi Multipart file upload schema generation
4.0.0-beta.15
Patch Changes
-
#1500
24ae609Thanks @qadama831! - Unwrap_Successschema to enable field access. -
#1486
0e3c059Thanks @tim-smart! - FixStream.groupedWithinto stop emitting empty arrays when schedule ticks fire while upstream is idle. -
#1503
e843b0aThanks @tim-smart! - allow creating standalone http handlers from HttpApiEndpoints -
#1499
f4389a2Thanks @tim-smart! - fix atom node timeout cleanup -
#1494
5b73de0- RefineExtractServicesto omit tool handler requirements when automatic tool resolution is explicitly disabled through thedisableToolCallResolutionoption. -
#1496
595d2d6Thanks @IMax153! - Refactor unstable CLI global flags to command-scoped declarations.Breaking changes
- Remove
GlobalFlag.add,GlobalFlag.remove, andGlobalFlag.clear - Add
Command.withGlobalFlags(...)as the declaration API for command/subcommand scope - Change
GlobalFlag.settingconstructor to curried form which carries type-level identifier:- before:
GlobalFlag.setting({ flag, ... }) - after:
GlobalFlag.setting("id")({ flag })
- before:
- Change setting context identity to a stable type-level string:
effect/unstable/cli/GlobalFlag/${id}
Behavior changes
- Global flags are now scoped by command path (root-to-leaf declarations)
- Out-of-scope global flags are rejected for the selected subcommand path
- Help now renders only global flags active for the requested command path
- Setting defaults are sourced from
Flagcombinators (optional,withDefault) rather than setting constructor defaults
- Remove
4.0.0-beta.14
Patch Changes
-
#1471
c414700Thanks @IMax153! - Make CLI global settings directly yieldable and simplify built-in names.GlobalFlag.settingnow takes{ flag, defaultValue }and returns a setting that is aContext.Reference, so handlers andCommand.provide*effects canyield*global setting values directly.Built-in settings keep internal behavior in
runWith(for example,--log-levelstill configuresReferences.MinimumLogLevel) while also being readable as values.Also renamed built-in globals:
GlobalFlag.CompletionsFlag->GlobalFlag.CompletionsGlobalFlag.LogLevelFlag->GlobalFlag.LogLevel
-
#1490
a30c969Thanks @gcanti! - FixOpenApi.fromApipreserving multiple response content types for one status code, closes #1485.
4.0.0-beta.13
Patch Changes
-
#1454
368f4c3Thanks @lucas-barake! - ExposeNoSuchElementErrorin the error type of stream-basedAtom.makeoverloads. -
#1469
db8a579Thanks @tim-smart! - Update unstable schema variant helpers to use array-based arguments forFieldOnly,FieldExcept, andUnion, aligningVariantSchemaandModelwith other v4 API shapes. -
#1457
668b703Thanks @tim-smart! - Run request resolver batch fibers with request services by usingEffect.runForkWith, so resolver delay effects andrunAllexecution see the request service map. -
#1461
d40e76bThanks @mikearnaldi! - FixSchedule.fixeddouble-executing the effect due to clock jitter.The
elapsedSincePrevious > windowcheck included sleep time from the previous step, so any timer imprecision (e.g. 1001ms for a 1000ms sleep) triggered an immediate zero-delay re-execution. -
#1464
6e18cf8Thanks @gcanti! - Use theidentifierannotation as the expected message when available, closes #1458. -
#1475
86062e8Thanks @tim-smart! - Add a CI check job that runspnpm ai-docgenand fails if it produces uncommitted changes. -
#1448
c27ce75Thanks @IMax153! - Refactor CLI built-in options to use Effect services withGlobalFlagBuilt-in CLI flags (
--help,--version,--completions,--log-level) are now implemented as Effect services usingContext.Reference. This provides:- Visibility: Built-in flags now appear in help output’s “GLOBAL FLAGS” section
- Extensibility: Users can register custom global flags via
GlobalFlag.add - Override capability: Built-in flag behavior can be replaced or disabled
- Composability: Flags compose via Effect’s service system
New
GlobalFlagmodule exports:Action<A>andSetting<A>types for different flag behaviorsHelp,Version,Completions,LogLevelreferences for built-in flagsadd,remove,clearfunctions for managing global flags
Example:
const app = Command.make("myapp");Command.run(app, { version: "1.0.0" }).pipe(GlobalFlag.add(CustomFlag, customFlagValue),); -
#1468
e2d4fbfThanks @lucas-barake! - FixRpc.ExtractProvidesto use middleware service ID instead of constructor type. -
#1465
114ab42Thanks @lloydrichards! - tighten Schema on _meta fields in McpSchema; closes #1463 -
#1470
484caecThanks @tim-smart! - AddCommand.withAliasfor unstable CLI commands, including subcommand parsing by alias and help output that renders aliases asname, aliasin subcommand listings.
4.0.0-beta.12
Patch Changes
-
#1439
70a74e8Thanks @gcanti! - AddConfig.nestedcombinator to scope a config under a named prefix, closes #1437. -
#1452
b5b6e10Thanks @tim-smart! - make fiber keepAlive setInterval evaluation lazy -
#1431
f5ce5a9Thanks @tim-smart! - AddRandom.nextBooleanfor generating random boolean values. -
#1450
a29eb70Thanks @tim-smart! - use cause annotations for detecting client aborts -
#1445
c7b36e5Thanks @mattiamanzati! - FixGraph.toMermaidto escape special characters using HTML entity codes per the Mermaid specification. -
#1443
9381d6dThanks @mikearnaldi! - FixHttpClient.retryTransientautocomplete leakingScheduleinternals by splitting the{...} | Scheduleunion into separate overloads. -
#1444
88439f1Thanks @gcanti! - Schema.encodeKeys: relax input constraint from Struct to schemas with fields so Schema.Class works, closes #1412. -
#1438
e35307dThanks @mikearnaldi! - Atom.searchParam: decode initial URL values correctly when a schema is provided -
#1425
c7df4bcThanks @candrewlee14! - Fix LanguageModel stripping of resolved approval artifacts across multi-round conversations.Previously,
stripResolvedApprovalsonly ran when there were pending approvals in the current round. Stale artifacts from earlier rounds would leak to the provider, causing errors. The stripping now runs unconditionally.In streaming mode, pre-resolved tool results are also emitted as stream parts so
Chat.streamTextpersists them to history, preventing re-resolution on subsequent rounds. -
#1453
accaf3bThanks @tim-smart! - allow mcp errors to be encoded correctly -
#1440
3e1c270Thanks @lloydrichards! - extend McpSchema to work with extensions -
#1447
6cd81f7Thanks @tim-smart! - remove all non-regional service usage -
#1451
f222da3Thanks @tim-smart! - AddEffect.annotateLogsScopedto apply log annotations for the current scope and automatically restore previous annotations when the scope closes. -
#1434
61f901dThanks @tim-smart! - Fix JSON-RPC serialization to return an object for non-batched requests while preserving array responses for true batch requests.