Repository navigation
build(deps): update effect monorepo to v4 - #262
renovate[bot] wants to merge 1 commit into
Conversation
|
There was a problem hiding this comment.
Effect v4へのメジャー更新ですが、package.jsonの2パッケージだけを上げており、このままマージするとビルドとテストが壊れます。
@effect/cliと@effect/platformはv3系のままで、peer依存(effect: ^3.22.2)がv4と衝突しますpackage-lock.jsonが更新されておらず、npm ciやNixビルドで不整合になります- v4ではAPIが大きく変わっていて(
NodeContext→NodeServices、Either→Result、CLI/platformの本体統合など)、src/testの移行が必要です
コードを移行するか、このPRを保留してRenovateでv4を抑止するかのどちらかを推奨します。
Review metadata
- Reviewed commit: 5eac6cce8a690e54440063fd9491166aecfbce45
- PR: #262
- kyosei: 3.6.0
- kyosei-action: 2.4.1
- Claude Code: 2.1.283
- Model: claude-opus-5-5
- Execution: GitHub Actions (run)
| "@effect/platform-node": "^4.0.0", | ||
| "effect": "^4.0.0", |
There was a problem hiding this comment.
Caution
📦 Dependency 🧹 Code Quality 🧪 Test 🔒 Security
effectと@effect/platform-nodeだけを^4.0.0に上げているため、このままではビルドが壊れます。
- peer依存の衝突: 27-28行目の
@effect/cli@^0.77.0と@effect/platform@^0.97.0は据え置きです。これらはpeerDependenciesでeffect: ^3.22.2を要求しています。そのためnpm installはERESOLVEで失敗するか、v3とv4が混在した依存ツリーになります。 - lockfile未更新:
package-lock.jsonはeffect3.22.2、@effect/platform-node0.108.2のままです。npm ciやNixビルドで不整合になります。v4パッケージのresolved/integrityも未レビューのままになります。 - API非互換: v4では
NodeContextがNodeServicesに、EitherがResultに置き換わりました。@effect/cli/@effect/platformの機能もeffect本体に統合されています。このためsrc/hooks/*.ts、src/delete-merged-branch.ts、src/git-lfs.ts、vite.config.ts、test/*.test.tsの書き換えが必要です。
対応方法は2通りです。
- 移行する場合:
@effect/cli/@effect/platformを外してimportとAPIをv4向けに書き換えます。lockfileを再生成し、npm ls effectで単一メジャーに揃ったことを確認してからvitest runを通してください。@effect/language-serviceがv4に対応しているかも確認が必要です。 - 今は移行しない場合: このPRはクローズし、Renovateでeffect系のv4を抑止してください。
| @@ -26,8 +26,8 @@ | |||
| "@commitlint/types": "^21.0.0", | |||
| "@effect/cli": "^0.77.0", | |||
There was a problem hiding this comment.
Warning
🧪 Test
@effect/cliでCommand/Argsを組み立ててNodeRuntime.runMainで動かすhookエントリポイント(src/hooks/commit-msg.ts, post-checkout.ts, post-commit.ts, post-merge.ts, pre-push.ts)にはテストがありません。そのため、今回のようなメジャー更新で引数パースやLayer構築が壊れてもCIで検出できません。移行時に、各エントリポイントのスモークテスト(テストLayerでhandlerを実行する、またはビルド成果物を子プロセスで起動して終了コードを確認する等)を追加することを推奨します。
This PR contains the following updates:
^0.108.0→^4.0.0^3.22.0→^4.0.0Release Notes
Effect-TS/effect (@effect/platform-node)
v4.0.1Compare Source
Patch Changes
#8678
f79b231Thanks @tim-smart! - Fix duplex socket readers throwing when a pull is interrupted or its scope closes during a read. Preserve consumed bytes in order across pull interruption and normal EOF, while discarding them when the reader scope closes.#8705
43416c4Thanks @tim-smart! - Create Node HTTP file response streams lazily and destroy them when body consumption ends, avoiding unused open streams when conditional or range handling discards a response.#8738
0f64715Thanks @tim-smart! - Fail refused WebSocket upgrades withSocketErrorinstead of hanging the request fiber, and skip HTTP response writes on destroyed sockets.Updated dependencies [
ed2cc2f,58a2ee8,bc44526,073bb47,2ec021e,cad1118,1672d9c,a81e4e6,f5c2a91,f79b231,498e72b,cabf123,a5b1d4e,878cb33,5e6f756,18dfb98,04706ef,f157482,f1aedb0,b5a2d4c,1c18c68,43416c4,d6ac8f9,1d9fb8c,20dcd50,42e5750,888e326,0b52bb4,e823e69,962647b,43fdcdc,1f89b8e,e1a521a]:v4.0.0Compare Source
Patch Changes
#8598
988c467Thanks @tim-smart! - Close server WebSockets with 1000 on success, 1001 on interruption, or 1011 on failure, while preserving explicit close codes. HTTP request scopes retain the handler's failure exit through response handling and middleware.#8633
2c552f2Thanks @IMax153! - Effect 4.0 is the first stable release of Effect v4. It replaces the 4.0.0 beta and release-candidate series, whose per-release notes remain below under the4.0.0-beta.*and4.0.0-rc.*headings. To upgrade from Effect 3, follow the migration guide.Packaging and versioning
effectand every@effect/*package.@effect/platform,@effect/rpc,@effect/cluster,@effect/cli,@effect/ai,@effect/sql,@effect/workflow,@effect/experimentaland similar packages are merged intoeffect. Separate packages remain only for platforms (@effect/platform-*), SQL drivers (@effect/sql-*), AI providers (@effect/ai-*), framework bindings (@effect/atom-*), OpenTelemetry, Vitest and tooling.effect/http,effect/http-api,effect/rpc,effect/cluster,effect/workflow,effect/ai,effect/cli,effect/sqlandeffect/schemaimport fromeffect/<area>. APIs tagged@stability unstablemay have breaking changes in minor releases. APIs without a stability tag follow semver.@stability unstable, because that dependency's releases can change them. This coversNodeRedis,DenoRedis,BunRedis,@effect/platform-node/Undiciand the undici dispatcher APIs, thewsoptions and re-exports in the platform packages, driver-specific options and clients in@effect/sql-clickhouse,@effect/sql-d1,@effect/sql-libsql,@effect/sql-mssql,@effect/sql-mysql2,@effect/sql-pgliteand@effect/sql-sqlite-do, the provider clients, models and generated schemas in the@effect/ai-*packages,@effect/opentelemetry, and thevitestre-export in@effect/vitest.effecthas no runtime dependencies.@effect/platform-deno,@effect/sql-pglite,@effect/ai-openai-compat,@effect/ai-typesafe,@effect/atom-react,@effect/atom-solid,@effect/atom-vue,@effect/openapi-generatorand@effect/doctest.@effect/docgennow lives in this repository.Core
Context.Service,FiberRefis replaced byContext.Reference,Causehas a flat structure, and many combinators were renamed. See the migration guide for the full list.Effect.tx, withTxRef,TxQueue,TxHashMap,TxPubSub,TxSemaphoreand relatedTx*data types.Clockseparates wall-clock time from monotonic time.Semaphore,Latch,LayerRef,ErrorReporter,ByteSize,NewtypeandCrypto.Arbitraryis now a native property-based testing module and no longer depends on fast-check.Schema
makeconstructors on every schema, and effectful decoding with services.SchemaRepresentationpowers JSON Schema (Draft-04, Draft-07, 2020-12 and OpenAPI 3.0/3.1) import and export, TypeScript code generation, and AI structured output.SchemaBinaryprovides a compact binary codec and is the default wire format for cluster transports.Platform, HTTP and RPC
HttpApisupports typed response headers, streaming and SSE responses, the HTTPQUERYmethod,HttpApiTestfor in-memory testing, and much faster type checking for large APIs.Sockethas a pull-based reader with backpressure and STARTTLS support. Network addresses are modeled byeffect/net.@effect/platform-denoadds full Deno support. The Node, Bun, Deno and browser packages all provide the platformCryptoservice, and the browser package adds IndexedDB support.Cluster and Workflow
DurableQueueand an in-memoryWorkflowEngineare available.ShardingConfiglimits. Shutdown, entity movement and persisted replies are more reliable.SQL
@effect/sql-pguses a built-in PostgreSQL client with pipelining, prepared statements and binary codecs, and no longer depends onpg.@effect/sql-sqlite-nodeuses Node's built-innode:sqliteand requires Node 22.16 or newer.SqlErrorexposes structured reasons such asUniqueViolation.AI
effect/aiaddsEmbeddingModel, theDecisionModelclassification and rating API, dynamic tools and tool approvals.CLI, Atom, observability and testing
effect/cliadds global flags, command aliases and examples, an interactive wizard mode, and shell completions for Bash, Zsh and Fish.effect/reactivityand the@effect/atom-*bindings add SSR hydration, stale-while-revalidate atoms and serializable RPC and HttpApi queries.@effect/opentelemetryaligns logs and spans with the OpenTelemetry specification.@effect/vitestruns property tests with the nativeArbitrarymodule and supports Vitest fixtures.Requirements
@effect/vitestand@effect/doctestrequire Vitest 5.@effect/atom-reactrequires React 19.@effect/platform-denorequires Deno 2.8.3 or newer.Updated dependencies [
cbfc7b4,5a81a6f,68b6394,5250ca6,5f9c9d1,3278821,83429b4,0af6d0c,927e01e,10d8524,35ac25a,29e0aa7,8783536,df77fff,ef7d77f,035e369,f72790c,aa19472,988c467,735b77b,e5f7d12,2c552f2]:Effect-TS/effect (effect)
v4.0.1Compare Source
Patch Changes
#8603
ed2cc2fThanks @danieljvdm! - Preserve all Anthropic system instructions and support configurable mid-conversation system messages. Add optionalLanguageModel.supportsSystemMessagesInHistoryto query support with scoped overrides.#8680
58a2ee8Thanks @danieljvdm! - Cache per-tool response schemas and parameter-mode copies to reduce schema construction inLanguageModel.generateTextandLanguageModel.streamText. The schema cache also applies to direct calls toResponse.Part,Response.StreamPartandResponse.AllParts.#8719
bc44526Thanks @tim-smart! - Treat interruption as abandonment inEffect.cached,Effect.cachedWithTTL,Effect.cachedInvalidateWithTTL,Cache,ScopedCache,RcRef,RcMapand the clusterResourceMap. Concurrent callers share one computation that is interrupted only after every caller has been interrupted, interrupted results are never cached, and a call made while an abandoned computation is still finalizing starts a fresh one.#8734
073bb47Thanks @pawelblaszczyk5! - AdjustEffect.cachedInvalidateWithTTLtypes to accept callbacks that select a TTL from the computation'sExit, including piped calls.#8659
2ec021eThanks @samueleguino97! - Prevent entity registration when shard ownership is lost during construction. Pending requests retry on the new owner.#8662
cad1118Thanks @tim-smart! - Avoid replaying suspended cluster workflows for unawaited deferred checkpoints while preserving interrupt wakes.#8637
1672d9cThanks @tim-smart! - Fix cluster defect recovery to replay unfinished requests without duplicating requests awaiting their first dispatch. Stop replay and interrupt waiting requests on shutdown, and prevent superseded rebuilds from publishing stale handlers or SQL lock connections.#8741
a81e4e6Thanks @tim-smart! - Prevent PostgreSQL deadlocks between cluster message claims and shard or address resets by locking reset rows in message order.#8707
f5c2a91Thanks @tim-smart! - Fix zoned DateTime conversion on runtimes that omit Intl fractional seconds, preserving milliseconds for pre-epoch timestamps.#8629
498e72bThanks @tim-smart! - Preserve a fiber'sAsyncLocalStoragecontext when another fiber wakes or interrupts it. RunEffect.tryPromiseerror handlers in the resumed fiber's context.#8675
cabf123Thanks @IMax153! - FixHashRing.getShardsreturning different shard assignments for the same nodes and weights after different add/remove histories. Sum weights in node-key order and break hash ties by node key. Assignments may change for fractional weights or hash ties.#8706
a5b1d4eThanks @tim-smart! - Prevent HttpApiSchemaError from being reported as a server failure for invalid requests.#8737
878cb33Thanks @tim-smart! - Log client-abort-only HTTP request causes as "Sent HTTP response" rather than an interrupt error, while preserving response status annotations and logging other causes.#8685
5e6f756Thanks @tim-smart! - Fix HttpTraceContext decoding of B3 debug and legacy sampling values, and reject all-zero W3C trace and parent IDs.#8652
18dfb98Thanks @mikearnaldi! - Preserve pending interruptions when an uninterruptible effect fails. Drop typed failures when interruption skips recovery handlers, but keep defects.#8657
04706efThanks @schickling-assistant! - Fix JSON Schema pattern importing for valid expressions whose RegExp source is canonicalized, including slashes, empty patterns, and literal line terminators.#8723
f157482Thanks @serhii-indyrct! - Fix encoding optional MCP fields whose schemas decode to classes, such asImplementation.icons.#8644
b5a2d4cThanks @sbking! - Prevent shard lock refreshes from releasing shards acquired while the refresh is in flight.#8660
1c18c68Thanks @tim-smart! - Prevent singleton shard reassignment from durably cancelling outstanding RPC requests.#8705
43416c4Thanks @tim-smart! - Honor If-Range in HttpStaticServer, returning the full file when the entity-tag is stale or weak instead of serving a partial response. Reject date validators because filesystem metadata cannot establish their strength.#8704
d6ac8f9Thanks @tim-smart! - FixStream.scanto emit its initial state for empty streams.#8698
1d9fb8cThanks @bishil06! - Fix accumulated rate drift inStream.throttlewith the"shape"strategy by retaining token debt after early wake-ups. Use monotonic time so wall clock changes do not affect throttling.#8664
20dcd50Thanks @lloydrichards! - Preserve server and client extension capabilities in stateful MCP protocols.#8653
42e5750Thanks @lloydrichards! - Keep idle MCP HTTP subscriptions open on Cloudflare Workers with SSE keepalives.#8679
888e326Thanks @tim-smart! - FixPoolusage TTL to expire only idle, unreserved excess items, oldest idle first. Measure idle time from the last release to avoid retiring recently used items.#8648
0b52bb4Thanks @dv-waynehaffenden! - FixRpcClientstream interruption leaving chunk delivery blocked on a full buffer and stalling the shared protocol receive loop.#8627
e823e69Thanks @tim-smart! - Keep streaming RPC chunk decode failures local to the affected request and interrupt it on the server, without disconnecting unrelated requests.#8658
962647bThanks @tim-smart! - FixRpcClientprotocol errors incorrectly failing requests started synchronously by error handlers. Only requests pending when the error broadcast begins now receive that error; new requests remain pending for their own responses.#8714
43fdcdcThanks @jaideeppyne! - Fix RPC stdio shutdown to drain responses after stdin EOF.#8618
1f89b8eThanks @serhii-indyrct! - SetScopedCacheentry expiry before waking lookup waiters, so a zero-TTL result cannot be reused.#8718
e1a521aThanks @juliusmarminge! - Pause schedules whileStream.aggregateWithin,Stream.groupedWithinandStream.aggregateare idle. When a schedule ends, emit the current aggregation and drain sink leftovers without further upstream pulls.v4.0.0Compare Source
Patch Changes
#8580
cbfc7b4Thanks @gcanti! - RestrictSchema.brandto a single concrete identifier and requireSchema.fromBrandto use the constructor's sole brand key. ApplybrandorfromBrandrepeatedly when composing distinct brands. For enum brand keys, pass the enum member instead of its string value.#8601
5a81a6fThanks @RizgarOzan! - Prevent a staleAtom.familyfinalizer from evicting a newer cached atom.#8576
68b6394Thanks @tim-smart! - Prevent stale concurrent workflow resumes from clearing a newer completed reply. Custom message storage implementations must honor the optional expected reply ID onclearRepliesto provide this safety guarantee.#8589
5250ca6Thanks @marek-hanzal! - Fix lost synchronous successes and failures in concurrentAtom.fncalls.#8625
5f9c9d1Thanks @tim-smart! - FixMutableHashMapretaining previously used equal object keys after they are replaced or removed, including whenCacheandScopedCacherefresh entries on hits.#8619
3278821Thanks @tim-smart! - KeepQueue.takeNsuspended when only part of its requested batch is available. Previously a single offer woke the batch taker in a synchronous retry loop that starved the host.Queue.State.takersnow holdsQueue.Takerentries: callentry.resume(...)instead of calling the entry as a function.#8607
83429b4Thanks @mannyc2! - Interrupt losers inEffect.race,Effect.raceFirst,Effect.raceAllandEffect.raceAllFirstwhen the race settles or is interrupted while other effects are still starting.#8626
0af6d0cThanks @tim-smart! - TheRpcMessage.ExitEncodedinterruptfiberIdtype now admits thenullemitted by JSON encoding. Consumers reading encoded interrupts should handlenullalongsideundefined.#8614
927e01eThanks @gcanti! - FixSchemaRepresentation.toCodeDocumentto preserve the grouping of branded union types in generated TypeScript code.#8617
10d8524Thanks @gcanti! - FixSchema.toTypeandSchema.toEncodedlosing parent checks when projecting checked children without transformations. Suspended children remain opaque, and structural checks continue to be preserved.#8583
35ac25aThanks @KhraksMamtsov! -Array,Chunk,Effect, andRecordpartition, theirseparatehelpers, andOption.partitionMapnow return successes before failures, matchingStream.partition. Swap the tuple when moving from the previous[failures, successes]order.#8585
29e0aa7Thanks @roninjin10! - Preserve sibling and callback cleanup failures alongside interruption in concurrentEffect.forEach/Effect.all, including sharedLayer.build.#8593
8783536Thanks @tim-smart! - Fail in-flight RPC calls when a socket misses a pong, even with transient connection retries enabled. Missed pongs no longer invokeonTransientError; connection-open failures still do.#8579
df77fffThanks @jasonkuhrt! - Fix union-of-tag inference for flat RPC clients andAtomRpc.queryandAtomRpc.mutation. Payloads and results now reflect the selected RPCs instead of resolving tonever.#8628
ef7d77fThanks @gcanti! - MakeSchema.brandtype-only: brand identifiers are no longer stored in AST annotations or preserved bySchemaRepresentation. ReapplySchema.brandafter rebuilding a representation when a branded TypeScript type is required; checks added bySchema.fromBrandremain preserved. Preserve the order of equal-priority union members that share an AST when deriving JSON and string-tree codecs.#8597
035e369Thanks @Ceereals! - Speed up JIT and AOT Schema decoding of transformations whose source has checks, such as a pattern-checked string decoded to a number. Fix compiled TemplateLiteral validation to enforce oneOf parts and preserve interpreter diagnostics when templates appear in transformation chains.#8630
f72790cThanks @gcanti! - Fix duplicate references in decoded and encoded schema representations when reusing schemas through optional or mutable keys.#8555
aa19472Thanks @front-depiction! - Resolve a Schema union's candidate parsers once per union instead of on every decode, so union decoding and encoding allocate less and run faster.#8598
988c467Thanks @tim-smart! - Close server WebSockets with 1000 on success, 1001 on interruption, or 1011 on failure, while preserving explicit close codes. HTTP request scopes retain the handler's failure exit through response handling and middleware.#8632
735b77bThanks @gcanti! - AddsucceedEffect,failEffect, andverifyRoundTripEffecttoTestSchemaso assertions can use the calling Effect's services, test clock, and interruption, and mark the module and its public APIs as unstable. Preserve defects and interruption when they occur alongside schema validation failures. RenameverifyLosslessTransformationtoverifyRoundTrip; existing callers must update to the new name.#8575
e5f7d12Thanks @tim-smart! - Retry failed workflow run resets instead of acknowledging deferred completion before the run resumes.#8633
2c552f2Thanks @IMax153! - Effect 4.0 is the first stable release of Effect v4. It replaces the 4.0.0 beta and release-candidate series, whose per-release notes remain below under the4.0.0-beta.*and4.0.0-rc.*headings. To upgrade from Effect 3, follow the migration guide.Packaging and versioning
effectand every@effect/*package.@effect/platform,@effect/rpc,@effect/cluster,@effect/cli,@effect/ai,@effect/sql,@effect/workflow,@effect/experimentaland similar packages are merged intoeffect. Separate packages remain only for platforms (@effect/platform-*), SQL drivers (@effect/sql-*), AI providers (@effect/ai-*), framework bindings (@effect/atom-*), OpenTelemetry, Vitest and tooling.effect/http,effect/http-api,effect/rpc,effect/cluster,effect/workflow,effect/ai,effect/cli,effect/sqlandeffect/schemaimport fromeffect/<area>. APIs tagged@stability unstablemay have breaking changes in minor releases. APIs without a stability tag follow semver.@stability unstable, because that dependency's releases can change them. This coversNodeRedis,DenoRedis,BunRedis,@effect/platform-node/Undiciand the undici dispatcher APIs, thewsoptions and re-exports in the platform packages, driver-specific options and clients in@effect/sql-clickhouse,@effect/sql-d1,@effect/sql-libsql,@effect/sql-mssql,@effect/sql-mysql2,@effect/sql-pgliteand@effect/sql-sqlite-do, the provider clients, models and generated schemas in the@effect/ai-*packages,@effect/opentelemetry, and thevitestre-export in@effect/vitest.effecthas no runtime dependencies.@effect/platform-deno,@effect/sql-pglite,@effect/ai-openai-compat,@effect/ai-typesafe,@effect/atom-react,@effect/atom-solid,@effect/atom-vue,@effect/openapi-generatorand@effect/doctest.@effect/docgennow lives in this repository.Core
Context.Service,FiberRefis replaced byContext.Reference,Causehas a flat structure, and many combinators were renamed. See the migration guide for the full list.Effect.tx, withTxRef,TxQueue,TxHashMap,TxPubSub,TxSemaphoreand relatedTx*data types.Clockseparates wall-clock time from monotonic time.Semaphore,Latch,LayerRef,ErrorReporter,ByteSize,NewtypeandCrypto.Arbitraryis now a native property-based testing module and no longer depends on fast-check.Schema
makeconstructors on every schema, and effectful decoding with services.SchemaRepresentationpowers JSON Schema (Draft-04, Draft-07, 2020-12 and OpenAPI 3.0/3.1) import and export, TypeScript code generation, and AI structured output.SchemaBinaryprovides a compact binary codec and is the default wire format for cluster transports.Platform, HTTP and RPC
HttpApisupports typed response headers, streaming and SSE responses, the HTTPQUERYmethod,HttpApiTestfor in-memory testing, and much faster type checking for large APIs.Sockethas a pull-based reader with backpressure and STARTTLS support. Network addresses are modeled byeffect/net.@effect/platform-denoadds full Deno support. The Node, Bun, Deno and browser packages all provide the platformCryptoservice, and the browser package adds IndexedDB support.Cluster and Workflow
DurableQueueand an in-memoryWorkflowEngineare available.ShardingConfiglimits. Shutdown, entity movement and persisted replies are more reliable.SQL
@effect/sql-pguses a built-in PostgreSQL client with pipelining, prepared statements and binary codecs, and no longer depends onpg.@effect/sql-sqlite-nodeuses Node's built-innode:sqliteand requires Node 22.16 or newer.SqlErrorexposes structured reasons such asUniqueViolation.AI
effect/aiaddsEmbeddingModel, theDecisionModelclassification and rating API, dynamic tools and tool approvals.CLI, Atom, observability and testing
effect/cliadds global flags, command aliases and examples, an interactive wizard mode, and shell completions for Bash, Zsh and Fish.effect/reactivityand the@effect/atom-*bindings add SSR hydration, stale-while-revalidate atoms and serializable RPC and HttpApi queries.@effect/opentelemetryaligns logs and spans with the OpenTelemetry specification.@effect/vitestruns property tests with the nativeArbitrarymodule and supports Vitest fixtures.Requirements
@effect/vitestand@effect/doctestrequire Vitest 5.@effect/atom-reactrequires React 19.@effect/platform-denorequires Deno 2.8.3 or newer.Configuration
📅 Schedule: (in timezone Asia/Tokyo)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR was generated by Mend Renovate. View the repository job log.