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

ℹ️ Note

This PR body was truncated due to platform limits.

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

Compare Source

Patch Changes

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

Compare Source

Patch Changes
  • #​8870 26c1089 Thanks @​Makisuo! - Update AI tracing to use current OpenTelemetry GenAI conventions:

    • Replace gen_ai.system with gen_ai.provider.name. The system option, BaseAttributes and WellKnownSystem are removed in favor of provider: { name }, ProviderAttributes and WellKnownProviderName.
    • Remove gen_ai.token.type, which is not a span attribute in the current conventions, along with the token option, TokenAttributes and the AllAttributes types.
    • LanguageModel spans are client spans and record gen_ai.output.type (text or json) for every provider. The OpenAI responseFormat telemetry option and WellKnownResponseFormat are removed.
    • Move OpenAI service-tier and system-fingerprint attributes from gen_ai.openai.* to openai.*.
    • Rename concurrency, toolChoice and objectName span attributes to effect.ai.concurrency, effect.ai.tool_choice and effect.ai.object_name. Tool choices record the resolved value, defaulting to "auto"; object choices are JSON-encoded.
    • Include cached tokens in Anthropic gen_ai.usage.input_tokens and report cache reads and writes as gen_ai.usage.cache_read.input_tokens and gen_ai.usage.cache_write.input_tokens. The duplicate Anthropic cacheCreationInputTokens and cacheReadInputTokens response options are removed.
  • #​8849 6c59de7 Thanks @​gcanti! - Fix Arbitrary property checks, schema generation, and shrinking swallowing defects or interruption when they accompany typed failures. Propagate the defect and interruption reasons with their annotations, removing typed failures from mixed causes to preserve the existing error types.

  • #​8760 467d3ac Thanks @​fubhy! - Include runtime layer errors in the result type of AtomRuntime.subscriptionRef.

  • #​8820 375c1b0 Thanks @​jarrednorrisdev! - Preserve the URL hash and omit empty query strings when writing Atom.searchParam.

  • #​8771 45a70ce Thanks @​jarrednorrisdev! - Prevent Atom.windowFocusSignal and Atom.refreshOnWindowFocus from throwing when window is undefined.

  • #​8837 fb757e3 Thanks @​tim-smart! - Fix a Cache.get interruption race that could leave an abandoned lookup running and its key stuck in the cache.

  • #​8778 716e358 Thanks @​fubhy! - Fix a stack overflow when many consecutive failure handlers throw synchronously. The thrown defect is now captured as the fiber's exit and pending finalizers still run.

  • #​8838 af114e6 Thanks @​tim-smart! - Derive Channel.decodeText options from the TextDecoder constructor so declarations work with Node-only types without requiring the DOM library.

  • #​8758 d0b3862 Thanks @​fubhy! - Fix Channel.mapInput data-last overload to preserve channel requirements and add the mapping function's requirements.

  • #​8757 7064da9 Thanks @​fubhy! - Fix Channel.runIntoPubSub to include the channel's error type in the returned Effect.

  • #​8810 eee0eeb Thanks @​fubhy! - Fix compiled Struct parsers sharing mutable output when the same suspended Effect is executed more than once.

  • #​8808 b9d6581 Thanks @​fubhy! - Preserve provider defects and interruption reasons during Config parsing, and prevent Config.orElse from recovering mixed causes.

  • #​8877 7a721ce Thanks @​jayhemnani9910! - Preserve separators inside Config.Record values, including base64 padding in OTLP headers.

  • #​8832 a0cb4c2 Thanks @​tim-smart! - Add image input to DecisionModel.decide. Providers opt in with supportsImages: true and receive images through ProviderOptions.images. Models without image support reject nonempty image input with InvalidUserInputError.

  • #​8765 3cb395e Thanks @​fubhy! - Fix ExecutionPlan to preserve errors and service requirements from layers, predicates, and schedules across fallback steps. Provide captured services to schedules when using captureRequirements.

  • #​8770 540ecd1 Thanks @​fubhy! - Tag every module and directly importable export with an explicit @stability. @stability stable follows strict semver, and @stability unstable may receive breaking changes in minor releases.

  • #​8814 aefe05a Thanks @​fubhy! - Fix Map and Set schema equivalences incorrectly treating proper subsets as equal.

  • #​8804 c381fbc Thanks @​fubhy! - Fix stack overflow when many equal requests share a pending RequestResolver.withCache entry.

  • #​8805 c6f2179 Thanks @​fubhy! - Allow interruption while waiting for permits or locks in TxSemaphore and TxReentrantLock helpers, while preserving automatic release after acquisition.

  • #​8586 0aeb7fd Thanks @​Marve10s! - Allow spans without an Effect parent to inherit active OpenTelemetry spans created outside Effect.

  • #​8799 2fbecc8 Thanks @​fubhy! - Preserve finalizer defects in Effect.repeat and Effect.schedule. Prevent Effect.retry from retrying failures containing defects or interruptions.

  • #​8753 7095539 Thanks @​jayhemnani9910! - Fix Toml.parse to trim an immediate opening CRLF in basic and literal multiline strings, matching its existing LF handling.

  • #​8752 46b75b1 Thanks @​jayhemnani9910! - Fix Yaml.parse block scalar chomping to preserve trailing line breaks with keep (|+, >+) and avoid adding line breaks to empty or unterminated scalars.

  • #​8815 99b6b45 Thanks @​fubhy! - Fix Array concatenation reducers sharing mutable empty results across calls and reducer instances.

  • #​8811 e4cb9f1 Thanks @​fubhy! - Fix Standard Schema and Standard JSON Schema adapters to use the child schema rather than an inherited parent adapter.

  • #​8792 2e03688 Thanks @​fubhy! - Fix Stream.peel dropping the sink's unconsumed elements from a partially consumed chunk.

  • #​8809 b817ebe Thanks @​fubhy! - Fix suspended Schema union parsers reusing successes and issues when the same decode or encode effect is run again.

  • #​8742 4153144 Thanks @​wouter173! - Fix the data-last overload of AsyncResult.flatMap to correctly infer a changed success type.

  • #​8830 2b3c63c Thanks @​devangpratap! - Fix HttpClient retaining unread responses on runtimes without FinalizationRegistry, such as Hermes.

  • #​8772 bd00773 Thanks @​juliusmarminge! - Read HttpClientResponse.cookies on platforms whose Headers has no getSetCookie, such as React Native, instead of throwing.

  • #​8873 146e86a Thanks @​tim-smart! - Align HTTP tracing span names, response error status, server addresses and ports with OpenTelemetry conventions. Make header capture opt-in and export homogeneous primitive arrays as array attributes in @effect/opentelemetry.

  • #​8759 44defad Thanks @​fubhy! - Fix HttpServer service serve to infer required services from the middleware-transformed app.

  • #​8821 22d6f4d Thanks @​Makisuo! - Mark HttpMiddleware.tracer server spans as failed for 5xx responses, including rendered errors, without changing the application exit or existing span failure causes.

  • #​8852 7d8d497 Thanks @​effect-bot! - Report the 101 status of a successful WebSocket upgrade to server middleware such as HttpMiddleware.logger and HttpMiddleware.tracer, instead of the handler's discarded response status.

  • #​8767 98a5ed7 Thanks @​fubhy! - Fix HttpApiClient and AtomHttpApi result types for union response modes while preserving decoded-only results when the mode is omitted.

  • #​8858 d350f8e Thanks @​jayhemnani9910! - Fix HttpApi rejecting single-value array fields in form-urlencoded and GET payloads.

  • #​8834 bd96be0 Thanks @​tim-smart! - Return 500 and report HTTP API response encoding failures to ErrorReporter, while keeping request decoding failures at 400 and unreported. Preserve response failures as HttpApiSchemaError values for schema-error middleware.

  • #​8875 f6af4b6 Thanks @​tim-smart! - expose more of the atom registry apis

  • #​8836 7234786 Thanks @​tim-smart! - Cache the Kubernetes service-account token for one minute so K8sHttpClient picks up rotated credentials without reading the token file on every request.

  • #​8773 1f74b62 Thanks @​juliusmarminge! - Add opt-in allowSessionTermination to McpServer.layerHttp. DELETE ends the session and interrupts its active requests; later requests with that session id return 404.

    Fix an RPC cancellation race by registering request fibers before their handlers run.

  • #​8775 42763ce Thanks @​RhysSullivan! - McpServer.layerHttp uses the negotiated protocol version when a session request omits MCP-Protocol-Version. Unsupported or mismatched protocol versions, missing required MCP-Session-Id headers, and initialize requests with a session header now return JSON-RPC error bodies.

  • #​8842 5630677 Thanks @​brandon-julio-t! - Fix MCP toolkit registration to require tool handler and schema services.

  • #​8864 a0e1b87 Thanks @​Makisuo! - Leave interrupt-only spans Unset with an effect.fiber.interrupted: true attribute instead of Ok with an "Interrupted" description and the span.label / status.interrupted attributes. Successful spans keep Ok; failures keep Error and their exception events.

    Cause.prettyErrors no longer captures an internal stack frame for non-object failures such as Effect.fail("boom"); the stack is now the message plus the span frame, when available. This affects the exception.stacktrace exported by both tracers and the output of Cause.pretty.

  • #​8868 f5716ad Thanks @​Makisuo! - Align OTLP and @effect/opentelemetry logs, traces, and resources with OpenTelemetry conventions.

  • #​8869 26931d0 Thanks @​Makisuo! - OtlpMetrics exports each summary as one OTLP Summary metric named <id> instead of <id>_quantiles, <id>_count and <id>_sum Sum metrics. Summaries are always cumulative. Common unit names such as milliseconds are mapped to UCUM, and bigint values beyond 2^53 keep their precision.

  • #​8756 972c80f Thanks @​creatifcoding! - Fix PostgreSQL SqlEventJournal writes by storing entry and remote IDs as BYTEA, and decode BIGINT timestamps returned as strings or bigints.

    Existing tables with UUID columns are not migrated automatically. Recreate both journal tables only after confirming they are empty, or externally migrate id, remote_id, and entry_id to BYTEA while preserving existing data.

  • #​8762 efebfa9 Thanks @​fubhy! - Include completion-handler services in the requirements of McpServer.registerPrompt and McpServer.prompt, including optional handlers.

  • #​8819 a3b4cf3 Thanks @​mikearnaldi! - Prevent message loss when Queue.take, takeAll, takeN, takeBetween, poll, and clear are interrupted at a scheduler yield.

  • #​8816 3ed997b Thanks @​fubhy! - Fix Channel.merge hanging or succeeding when a side finalizer fails, preserving both usage and finalizer failures.

  • #​8798 7b396bd Thanks @​fubhy! - Fix Channel.mergeAll and concurrent Channel.flatMap dropping inner scope finalizer defects, preserving both usage and release failures.

  • #​8800 c07c144 Thanks @​fubhy! - Fix Cron.next returning past occurrences or exhausting its search limit when starting in a repeated DST interval.

  • #​8777 8903b68 Thanks @​fubhy! - Fix child fibers reusing completed transaction journals so later transactions commit their writes.

  • #​8784 a84aa4e Thanks @​fubhy! - Fix FiberHandle losing ownership of fibers started by a synchronous replacement finalizer.

  • #​8782 88917eb Thanks @​fubhy! - Fix Formatter.formatJson redaction of getter-returned values with toJSON without invoking getters twice.

  • #​8776 50a5686 Thanks @​fubhy! - Fix Effect.effectify so throwing error mappers become defects instead of escaping asynchronous callbacks and leaving fibers suspended.

  • #​8789 c419a0e Thanks @​fubhy! - Fix stack overflows when PartitionedSemaphore hands permits through long queues of synchronous tasks.

  • #​8791 d85a309 Thanks @​fubhy! - Fix Queue.clear swallowing failures combined with Cause.Done.

  • #​8785 7e7ede6 Thanks @​fubhy! - Fix Queue consumers defecting and messages being buffered after reentrant shutdown while resuming blocked producers.

  • #​8779 1803500 Thanks @​fubhy! - Mask interruption before invoking scope finalizer callbacks so singleton cleanup completes when its callback interrupts the closing fiber.

  • #​8795 495740d Thanks @​fubhy! - Fix Stream.zipLatest, zipLatestWith, and zipLatestAll hanging when an input completes without emitting.

  • #​8780 985860d Thanks @​fubhy! - Preserve failures raised while a transaction is retrying instead of rerunning the transaction.

  • #​8833 e36abbb Thanks @​tim-smart! - Return HTTP 200 with an empty body for empty RPC POST requests using framed serialization.

  • #​8867 c6086ee Thanks @​Makisuo! - RPC client and server spans now set span kind client / server and record the OpenTelemetry rpc.system.name (effect_rpc) and rpc.method attributes. User spanAttributes still override them.

    Default span names are now the RPC method, for example Echo.Ping instead of RpcClient.Echo.Ping. Update dashboards, alerts or samplers that match the old names, or pass spanPrefix: "RpcClient" / spanPrefix: "RpcServer" to keep them. Spans with an explicit spanPrefix keep their existing names.

  • #​8835 0ac6ac8 Thanks @​tim-smart! - Fix RPC request defects breaking subsequent SchemaBinary calls after an unknown request tag or payload decoding failure.

  • #​8825 90a1bae Thanks @​tim-smart! - Add configurable pingInterval and pingTimeout to RPC socket clients, counting any decoded server frame as liveness. Forward retryPolicy through layerProtocolSocket. The default ping interval and timeout remain 5 seconds.

  • #​8748 b1d200c Thanks @​gcanti! - Expose the selected tag property key through tag on schemas returned by Schema.toTaggedUnion and Schema.TaggedUnion, closes #​8681.

  • #​8764 1ba8521 Thanks @​fubhy! - Fix the data-last Sink.catchCause overload to return the handler's error type instead of the original error type.

  • #​8878 1b35732 Thanks @​jayhemnani9910! - Fix Stream.slidingSize dropping elements from the final partial window when windows overlap.

  • #​8855 763b445 Thanks @​tim-smart! - Fix SQL unencrypted event-log notifications to publish in sequence order after commit, without missing startup rows or publishing rolled-back writes.

  • #​8866 00f1cc7 Thanks @​Makisuo! - Align SQL tracing with OpenTelemetry database conventions:

    • Name statement spans by db.namespace, server.address[:server.port] or db.system.name, falling back to sql.execute. The rules are exported as Statement.spanName and Statement.spanTarget.
    • Record Effect execution methods in effect.sql.method instead of db.operation.name.
    • Use internal transaction spans with effect.sql.transaction.commit|savepoint|rollback events.
    • Name D1 batches of two or more statements BATCH, or BATCH {target} when a target is set, with db.operation.name set to BATCH and db.operation.batch.size.
  • #​8857 d4f4bc8 Thanks @​jayhemnani9910! - Fix Stream.groupBy, Stream.groupByKey, Stream.partition, and Stream.partitionEffect hanging when a substream consumer stops early by shu

❗ Important

✂ PR body was truncated to here.


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.2
npm error node_modules/effect
npm error   effect@"^4.0.0" from the root project
npm error   peer effect@"^4.0.2" from @effect/platform-node@4.0.2
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-11T00_38_48_676Z-eresolve-report.txt
npm error A complete log of this run can be found in: /runner/cache/others/npm/_logs/2026-10-11T00_38_48_676Z-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