Skip to content

build(deps): update effect monorepo to v4 - #262

Open
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/major-effect-monorepo
Open

renovate[bot] wants to merge 1 commit into
masterfrom
renovate/major-effect-monorepo

Conversation

@renovate

@renovate renovate Bot commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
@effect/platform-node (source) ^0.108.0 → ^4.0.0 age confidence
effect (source) ^3.22.0 → ^4.0.0 age confidence

Release Notes

Effect-TS/effect (@​effect/platform-node)

v4.0.1

Compare Source

Patch Changes

v4.0.0

Compare Source

Patch Changes
  • #​8598 988c467 Thanks @​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 2c552f2 Thanks @​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 the 4.0.0-beta.* and 4.0.0-rc.* headings. To upgrade from Effect 3, follow the migration guide.

    Packaging and versioning

    • All Effect packages share one version number and are released together. Use the same version of effect and every @effect/* package.
    • @effect/platform, @effect/rpc, @effect/cluster, @effect/cli, @effect/ai, @effect/sql, @effect/workflow, @effect/experimental and similar packages are merged into effect. Separate packages remain only for platforms (@effect/platform-*), SQL drivers (@effect/sql-*), AI providers (@effect/ai-*), framework bindings (@effect/atom-*), OpenTelemetry, Vitest and tooling.
    • Modules such as effect/http, effect/http-api, effect/rpc, effect/cluster, effect/workflow, effect/ai, effect/cli, effect/sql and effect/schema import from effect/<area>. APIs tagged @stability unstable may have breaking changes in minor releases. APIs without a stability tag follow semver.
    • APIs that expose a third-party dependency are tagged @stability unstable, because that dependency's releases can change them. This covers NodeRedis, DenoRedis, BunRedis, @effect/platform-node/Undici and the undici dispatcher APIs, the ws options 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-pglite and @effect/sql-sqlite-do, the provider clients, models and generated schemas in the @effect/ai-* packages, @effect/opentelemetry, and the vitest re-export in @effect/vitest.
    • effect has no runtime dependencies.
    • New packages in v4: @effect/platform-deno, @effect/sql-pglite, @effect/ai-openai-compat, @effect/ai-typesafe, @effect/atom-react, @effect/atom-solid, @effect/atom-vue, @effect/openapi-generator and @effect/doctest. @effect/docgen now lives in this repository.

    Core

    • The fiber runtime was rewritten for lower memory use and faster execution, with smaller bundles and better tree-shaking.
    • Services are defined with Context.Service, FiberRef is replaced by Context.Reference, Cause has a flat structure, and many combinators were renamed. See the migration guide for the full list.
    • Software transactional memory is built into Effect.tx, with TxRef, TxQueue, TxHashMap, TxPubSub, TxSemaphore and related Tx* data types.
    • Clock separates wall-clock time from monotonic time.
    • New modules include Semaphore, Latch, LayerRef, ErrorReporter, ByteSize, Newtype and Crypto. Arbitrary is now a native property-based testing module and no longer depends on fast-check.

    Schema

    • Schema v4 is a new implementation with faster parsing, class-based schemas, make constructors on every schema, and effectful decoding with services.
    • SchemaRepresentation powers JSON Schema (Draft-04, Draft-07, 2020-12 and OpenAPI 3.0/3.1) import and export, TypeScript code generation, and AI structured output.
    • SchemaBinary provides a compact binary codec and is the default wire format for cluster transports.
    • Optional JIT and AOT schema compilers are available as experimental modules.

    Platform, HTTP and RPC

    • HttpApi supports typed response headers, streaming and SSE responses, the HTTP QUERY method, HttpApiTest for in-memory testing, and much faster type checking for large APIs.
    • The HTTP modules add static file serving, response compression, rate-limited clients and graceful server shutdown.
    • Socket has a pull-based reader with backpressure and STARTTLS support. Network addresses are modeled by effect/net.
    • RPC serialization is schema-aware and supports server-originated requests and notifications.
    • @effect/platform-deno adds full Deno support. The Node, Bun, Deno and browser packages all provide the platform Crypto service, and the browser package adds IndexedDB support.

    Cluster and Workflow

    • Workflows can be declared with class syntax, and DurableQueue and an in-memory WorkflowEngine are available.
    • Runner memory can be bounded with ShardingConfig limits. Shutdown, entity movement and persisted replies are more reliable.

    SQL

    • @effect/sql-pg uses a built-in PostgreSQL client with pipelining, prepared statements and binary codecs, and no longer depends on pg.
    • @effect/sql-sqlite-node uses Node's built-in node:sqlite and requires Node 22.16 or newer.
    • SqlError exposes structured reasons such as UniqueViolation.

    AI

    • effect/ai adds EmbeddingModel, the DecisionModel classification and rating API, dynamic tools and tool approvals.
    • The MCP server supports protocol versions 2024-11-05 through 2026-07-28, including elicitation, sampling with tools, resource subscriptions and typed tool output.
    • Provider packages cover Anthropic, OpenAI, OpenAI-compatible APIs and OpenRouter.

    CLI, Atom, observability and testing

    • effect/cli adds global flags, command aliases and examples, an interactive wizard mode, and shell completions for Bash, Zsh and Fish.
    • effect/reactivity and the @effect/atom-* bindings add SSR hydration, stale-while-revalidate atoms and serializable RPC and HttpApi queries.
    • The OTLP exporters can be configured with standard OpenTelemetry environment variables, and @effect/opentelemetry aligns logs and spans with the OpenTelemetry specification.
    • @effect/vitest runs property tests with the native Arbitrary module and supports Vitest fixtures.

    Requirements

    • TypeScript 5.9 or newer. TypeScript 7 is recommended.
    • @effect/vitest and @effect/doctest require Vitest 5.
    • @effect/atom-react requires React 19.
    • @effect/platform-deno requires 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.1

Compare Source

Patch Changes
  • #​8603 ed2cc2f Thanks @​danieljvdm! - Preserve all Anthropic system instructions and support configurable mid-conversation system messages. Add optional LanguageModel.supportsSystemMessagesInHistory to query support with scoped overrides.

  • #​8680 58a2ee8 Thanks @​danieljvdm! - Cache per-tool response schemas and parameter-mode copies to reduce schema construction in LanguageModel.generateText and LanguageModel.streamText. The schema cache also applies to direct calls to Response.Part, Response.StreamPart and Response.AllParts.

  • #​8719 bc44526 Thanks @​tim-smart! - Treat interruption as abandonment in Effect.cached, Effect.cachedWithTTL, Effect.cachedInvalidateWithTTL, Cache, ScopedCache, RcRef, RcMap and the cluster ResourceMap. 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 073bb47 Thanks @​pawelblaszczyk5! - Adjust Effect.cachedInvalidateWithTTL types to accept callbacks that select a TTL from the computation's Exit, including piped calls.

  • #​8659 2ec021e Thanks @​samueleguino97! - Prevent entity registration when shard ownership is lost during construction. Pending requests retry on the new owner.

  • #​8662 cad1118 Thanks @​tim-smart! - Avoid replaying suspended cluster workflows for unawaited deferred checkpoints while preserving interrupt wakes.

  • #​8637 1672d9c Thanks @​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 a81e4e6 Thanks @​tim-smart! - Prevent PostgreSQL deadlocks between cluster message claims and shard or address resets by locking reset rows in message order.

  • #​8707 f5c2a91 Thanks @​tim-smart! - Fix zoned DateTime conversion on runtimes that omit Intl fractional seconds, preserving milliseconds for pre-epoch timestamps.

  • #​8629 498e72b Thanks @​tim-smart! - Preserve a fiber's AsyncLocalStorage context when another fiber wakes or interrupts it. Run Effect.tryPromise error handlers in the resumed fiber's context.

  • #​8675 cabf123 Thanks @​IMax153! - Fix HashRing.getShards returning 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 a5b1d4e Thanks @​tim-smart! - Prevent HttpApiSchemaError from being reported as a server failure for invalid requests.

  • #​8737 878cb33 Thanks @​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 5e6f756 Thanks @​tim-smart! - Fix HttpTraceContext decoding of B3 debug and legacy sampling values, and reject all-zero W3C trace and parent IDs.

  • #​8652 18dfb98 Thanks @​mikearnaldi! - Preserve pending interruptions when an uninterruptible effect fails. Drop typed failures when interruption skips recovery handlers, but keep defects.

  • #​8657 04706ef Thanks @​schickling-assistant! - Fix JSON Schema pattern importing for valid expressions whose RegExp source is canonicalized, including slashes, empty patterns, and literal line terminators.

  • #​8723 f157482 Thanks @​serhii-indyrct! - Fix encoding optional MCP fields whose schemas decode to classes, such as Implementation.icons.

  • #​8644 b5a2d4c Thanks @​sbking! - Prevent shard lock refreshes from releasing shards acquired while the refresh is in flight.

  • #​8660 1c18c68 Thanks @​tim-smart! - Prevent singleton shard reassignment from durably cancelling outstanding RPC requests.

  • #​8705 43416c4 Thanks @​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 d6ac8f9 Thanks @​tim-smart! - Fix Stream.scan to emit its initial state for empty streams.

  • #​8698 1d9fb8c Thanks @​bishil06! - Fix accumulated rate drift in Stream.throttle with the "shape" strategy by retaining token debt after early wake-ups. Use monotonic time so wall clock changes do not affect throttling.

  • #​8664 20dcd50 Thanks @​lloydrichards! - Preserve server and client extension capabilities in stateful MCP protocols.

  • #​8653 42e5750 Thanks @​lloydrichards! - Keep idle MCP HTTP subscriptions open on Cloudflare Workers with SSE keepalives.

  • #​8679 888e326 Thanks @​tim-smart! - Fix Pool usage 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 0b52bb4 Thanks @​dv-waynehaffenden! - Fix RpcClient stream interruption leaving chunk delivery blocked on a full buffer and stalling the shared protocol receive loop.

  • #​8627 e823e69 Thanks @​tim-smart! - Keep streaming RPC chunk decode failures local to the affected request and interrupt it on the server, without disconnecting unrelated requests.

  • #​8658 962647b Thanks @​tim-smart! - Fix RpcClient protocol 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 43fdcdc Thanks @​jaideeppyne! - Fix RPC stdio shutdown to drain responses after stdin EOF.

  • #​8618 1f89b8e Thanks @​serhii-indyrct! - Set ScopedCache entry expiry before waking lookup waiters, so a zero-TTL result cannot be reused.

  • #​8718 e1a521a Thanks @​juliusmarminge! - Pause schedules while Stream.aggregateWithin, Stream.groupedWithin and Stream.aggregate are idle. When a schedule ends, emit the current aggregation and drain sink leftovers without further upstream pulls.

v4.0.0

Compare Source

Patch Changes
  • #​8580 cbfc7b4 Thanks @​gcanti! - Restrict Schema.brand to a single concrete identifier and require Schema.fromBrand to use the constructor's sole brand key. Apply brand or fromBrand repeatedly when composing distinct brands. For enum brand keys, pass the enum member instead of its string value.

  • #​8601 5a81a6f Thanks @​RizgarOzan! - Prevent a stale Atom.family finalizer from evicting a newer cached atom.

  • #​8576 68b6394 Thanks @​tim-smart! - Prevent stale concurrent workflow resumes from clearing a newer completed reply. Custom message storage implementations must honor the optional expected reply ID on clearReplies to provide this safety guarantee.

  • #​8589 5250ca6 Thanks @​marek-hanzal! - Fix lost synchronous successes and failures in concurrent Atom.fn calls.

  • #​8625 5f9c9d1 Thanks @​tim-smart! - Fix MutableHashMap retaining previously used equal object keys after they are replaced or removed, including when Cache and ScopedCache refresh entries on hits.

  • #​8619 3278821 Thanks @​tim-smart! - Keep Queue.takeN suspended 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.takers now holds Queue.Taker entries: call entry.resume(...) instead of calling the entry as a function.

  • #​8607 83429b4 Thanks @​mannyc2! - Interrupt losers in Effect.race, Effect.raceFirst, Effect.raceAll and Effect.raceAllFirst when the race settles or is interrupted while other effects are still starting.

  • #​8626 0af6d0c Thanks @​tim-smart! - The RpcMessage.ExitEncoded interrupt fiberId type now admits the null emitted by JSON encoding. Consumers reading encoded interrupts should handle null alongside undefined.

  • #​8614 927e01e Thanks @​gcanti! - Fix SchemaRepresentation.toCodeDocument to preserve the grouping of branded union types in generated TypeScript code.

  • #​8617 10d8524 Thanks @​gcanti! - Fix Schema.toType and Schema.toEncoded losing parent checks when projecting checked children without transformations. Suspended children remain opaque, and structural checks continue to be preserved.

  • #​8583 35ac25a Thanks @​KhraksMamtsov! - Array, Chunk, Effect, and Record partition, their separate helpers, and Option.partitionMap now return successes before failures, matching Stream.partition. Swap the tuple when moving from the previous [failures, successes] order.

  • #​8585 29e0aa7 Thanks @​roninjin10! - Preserve sibling and callback cleanup failures alongside interruption in concurrent Effect.forEach / Effect.all, including shared Layer.build.

  • #​8593 8783536 Thanks @​tim-smart! - Fail in-flight RPC calls when a socket misses a pong, even with transient connection retries enabled. Missed pongs no longer invoke onTransientError; connection-open failures still do.

  • #​8579 df77fff Thanks @​jasonkuhrt! - Fix union-of-tag inference for flat RPC clients and AtomRpc.query and AtomRpc.mutation. Payloads and results now reflect the selected RPCs instead of resolving to never.

  • #​8628 ef7d77f Thanks @​gcanti! - Make Schema.brand type-only: brand identifiers are no longer stored in AST annotations or preserved by SchemaRepresentation. Reapply Schema.brand after rebuilding a representation when a branded TypeScript type is required; checks added by Schema.fromBrand remain preserved. Preserve the order of equal-priority union members that share an AST when deriving JSON and string-tree codecs.

  • #​8597 035e369 Thanks @​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 f72790c Thanks @​gcanti! - Fix duplicate references in decoded and encoded schema representations when reusing schemas through optional or mutable keys.

  • #​8555 aa19472 Thanks @​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 988c467 Thanks @​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 735b77b Thanks @​gcanti! - Add succeedEffect, failEffect, and verifyRoundTripEffect to TestSchema so 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. Rename verifyLosslessTransformation to verifyRoundTrip; existing callers must update to the new name.

  • #​8575 e5f7d12 Thanks @​tim-smart! - Retry failed workflow run resets instead of acknowledging deferred completion before the run resumes.

  • #​8633 2c552f2 Thanks @​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 the 4.0.0-beta.* and 4.0.0-rc.* headings. To upgrade from Effect 3, follow the migration guide.

    Packaging and versioning

    • All Effect packages share one version number and are released together. Use the same version of effect and every @effect/* package.
    • @effect/platform, @effect/rpc, @effect/cluster, @effect/cli, @effect/ai, @effect/sql, @effect/workflow, @effect/experimental and similar packages are merged into effect. Separate packages remain only for platforms (@effect/platform-*), SQL drivers (@effect/sql-*), AI providers (@effect/ai-*), framework bindings (@effect/atom-*), OpenTelemetry, Vitest and tooling.
    • Modules such as effect/http, effect/http-api, effect/rpc, effect/cluster, effect/workflow, effect/ai, effect/cli, effect/sql and effect/schema import from effect/<area>. APIs tagged @stability unstable may have breaking changes in minor releases. APIs without a stability tag follow semver.
    • APIs that expose a third-party dependency are tagged @stability unstable, because that dependency's releases can change them. This covers NodeRedis, DenoRedis, BunRedis, @effect/platform-node/Undici and the undici dispatcher APIs, the ws options 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-pglite and @effect/sql-sqlite-do, the provider clients, models and generated schemas in the @effect/ai-* packages, @effect/opentelemetry, and the vitest re-export in @effect/vitest.
    • effect has no runtime dependencies.
    • New packages in v4: @effect/platform-deno, @effect/sql-pglite, @effect/ai-openai-compat, @effect/ai-typesafe, @effect/atom-react, @effect/atom-solid, @effect/atom-vue, @effect/openapi-generator and @effect/doctest. @effect/docgen now lives in this repository.

    Core

    • The fiber runtime was rewritten for lower memory use and faster execution, with smaller bundles and better tree-shaking.
    • Services are defined with Context.Service, FiberRef is replaced by Context.Reference, Cause has a flat structure, and many combinators were renamed. See the migration guide for the full list.
    • Software transactional memory is built into Effect.tx, with TxRef, TxQueue, TxHashMap, TxPubSub, TxSemaphore and related Tx* data types.
    • Clock separates wall-clock time from monotonic time.
    • New modules include Semaphore, Latch, LayerRef, ErrorReporter, ByteSize, Newtype and Crypto. Arbitrary is now a native property-based testing module and no longer depends on fast-check.

    Schema

    • Schema v4 is a new implementation with faster parsing, class-based schemas, make constructors on every schema, and effectful decoding with services.
    • SchemaRepresentation powers JSON Schema (Draft-04, Draft-07, 2020-12 and OpenAPI 3.0/3.1) import and export, TypeScript code generation, and AI structured output.
    • SchemaBinary provides a compact binary codec and is the default wire format for cluster transports.
    • Optional JIT and AOT schema compilers are available as experimental modules.

    Platform, HTTP and RPC

    • HttpApi supports typed response headers, streaming and SSE responses, the HTTP QUERY method, HttpApiTest for in-memory testing, and much faster type checking for large APIs.
    • The HTTP modules add static file serving, response compression, rate-limited clients and graceful server shutdown.
    • Socket has a pull-based reader with backpressure and STARTTLS support. Network addresses are modeled by effect/net.
    • RPC serialization is schema-aware and supports server-originated requests and notifications.
    • @effect/platform-deno adds full Deno support. The Node, Bun, Deno and browser packages all provide the platform Crypto service, and the browser package adds IndexedDB support.

    Cluster and Workflow

    • Workflows can be declared with class syntax, and DurableQueue and an in-memory WorkflowEngine are available.
    • Runner memory can be bounded with ShardingConfig limits. Shutdown, entity movement and persisted replies are more reliable.

    SQL

    • @effect/sql-pg uses a built-in PostgreSQL client with pipelining, prepared statements and binary codecs, and no longer depends on pg.
    • @effect/sql-sqlite-node uses Node's built-in node:sqlite and requires Node 22.16 or newer.
    • SqlError exposes structured reasons such as UniqueViolation.

    AI

    • effect/ai adds EmbeddingModel, the DecisionModel classification and rating API, dynamic tools and tool approvals.
    • The MCP server supports protocol versions 2024-11-05 through 2026-07-28, including elicitation, sampling with tools, resource subscriptions and typed tool output.
    • Provider packages cover Anthropic, OpenAI, OpenAI-compatible APIs and OpenRouter.

    CLI, Atom, observability and testing

    • effect/cli adds global flags, command aliases and examples, an interactive wizard mode, and shell completions for Bash, Zsh and Fish.
    • effect/reactivity and the @effect/atom-* bindings add SSR hydration, stale-while-revalidate atoms and serializable RPC and HttpApi queries.
    • The OTLP exporters can be configured with standard OpenTelemetry environment variables, and @effect/opentelemetry aligns logs and spans with the OpenTelemetry specification.
    • @effect/vitest runs property tests with the native Arbitrary module and supports Vitest fixtures.

    Requirements

    • TypeScript 5.9 or newer. TypeScript 7 is recommended.
    • @effect/vitest and @effect/doctest require Vitest 5.
    • @effect/atom-react requires React 19.
    • @effect/platform-deno requires Deno 2.8.3 or newer.

Configuration

📅 Schedule: (in timezone Asia/Tokyo)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 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.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot added the Type: Dependencies Dependency issues or Changes to dependency files label Oct 4, 2026
@renovate

renovate Bot commented Oct 4, 2026 •

Copy link
Copy Markdown
Contributor Author

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: package-lock.json
npm warn Unknown env config "store". This will error in a future major version of npm. See `npm help npmrc` for supported config options.
npm error code ERESOLVE
npm error ERESOLVE could not resolve
npm error
npm error While resolving: @effect/cli@0.77.2
npm error Found: effect@4.0.1
npm error node_modules/effect
npm error   effect@"^4.0.0" from the root project
npm error   peer effect@"^4.0.1" from @effect/platform-node@4.0.1
npm error   node_modules/@effect/platform-node
npm error     @effect/platform-node@"^4.0.0" from the root project
npm error
npm error Could not resolve dependency:
npm error peer effect@"^3.22.2" from @effect/cli@0.77.2
npm error node_modules/@effect/cli
npm error   @effect/cli@"^0.77.0" from the root project
npm error
npm error Conflicting peer dependency: effect@3.22.2
npm error node_modules/effect
npm error   peer effect@"^3.22.2" from @effect/cli@0.77.2
npm error   node_modules/@effect/cli
npm error     @effect/cli@"^0.77.0" from the root project
npm error
npm error Fix the upstream dependency conflict, or retry this command with --force or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.
npm error
npm error
npm error For a full report see:
npm error /runner/cache/others/npm/_logs/2026-10-08T10_47_46_038Z-eresolve-report.txt
npm error A complete log of this run can be found in: /runner/cache/others/npm/_logs/2026-10-08T10_47_46_038Z-debug-0.log

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment thread package.json
Comment on lines +29 to +30
"@effect/platform-node": "^4.0.0",
"effect": "^4.0.0",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

📦 Dependency 🧹 Code Quality 🧪 Test 🔒 Security

effectと@effect/platform-nodeだけを^4.0.0に上げているため、このままではビルドが壊れます。

  1. peer依存の衝突: 27-28行目の@effect/cli@^0.77.0と@effect/platform@^0.97.0は据え置きです。これらはpeerDependenciesでeffect: ^3.22.2を要求しています。そのためnpm installはERESOLVEで失敗するか、v3とv4が混在した依存ツリーになります。
  2. lockfile未更新: package-lock.jsonはeffect 3.22.2、@effect/platform-node 0.108.2のままです。npm ciやNixビルドで不整合になります。v4パッケージのresolved/integrityも未レビューのままになります。
  3. 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を抑止してください。

Comment thread package.json
@@ -26,8 +26,8 @@
"@commitlint/types": "^21.0.0",
"@effect/cli": "^0.77.0",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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を実行する、またはビルド成果物を子プロセスで起動して終了コードを確認する等)を追加することを推奨します。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Type: Dependencies Dependency issues or Changes to dependency files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants