chore(deps): upgrade Effect v4 to beta.107 - #56
Conversation
There was a problem hiding this comment.
Pull request overview
This PR upgrades the CLI’s Effect v4 dependency set to 4.0.0-beta.107, removes the obsolete .repos/vendoring workflow, and tightens runtime boundaries (interrupt handling, browser opener cleanup) while ensuring the packaged CLI ships with a patched/bundled @putdotio/sdk so the CLI + SDK share a single installed Effect runtime.
Changes:
- Pin
effect,@effect/platform-node, and@effect/vitestto4.0.0-beta.107(with matching pnpm overrides/lock updates) and remove the old Effect vendoring/prepare workflow. - Centralize top-level CLI cause handling (preserve interrupt-only causes) and harden
openExternalagainst sync spawn failures, async errors, interruption, and listener cleanup (with tests). - Strengthen the packed-install smoke to assert a single installed Effect version and exercise an authenticated SDK-backed request via a local mock API server.
Reviewed changes
Copilot reviewed 22 out of 24 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| vite.config.ts | Pack config updates to bundle only @putdotio/sdk; removes .repos from test excludes. |
| src/sea.ts | Switches top-level CLI error handling to shared handleCliCause. |
| src/bin.ts | Switches top-level CLI error handling to shared handleCliCause. |
| src/internal/main.ts | New shared cause handler that preserves interrupt-only causes for NodeRuntime.runMain. |
| src/internal/main.test.ts | Adds coverage to ensure interrupt-only causes remain failures with interrupt-only causes. |
| src/internal/runtime.ts | Makes openExternal interrupt-safe and resilient to sync/async child-process failures with cleanup. |
| src/internal/runtime.test.ts | Extends tests for async spawn errors and interruption cleanup behavior. |
| src/internal/output-service.ts | Refactors object detection for sanitization using Predicate helpers. |
| src/internal/localizers/helpers.ts | Updates localizer helper predicates using Predicate. |
| src/internal/command.ts | Preserves pagination validation failures as typed CliCommandInputError values while leaving continuation failures untouched. |
| src/internal/command.test.ts | Adds tests asserting typed pagination validation errors and preserved continuation failures. |
| scripts/smoke-packed-install.mts | Extends packed-install verification with single-Effect-runtime assertion and authenticated SDK request via local mock server. |
| scripts/prepare-effect.sh | Removes obsolete Effect vendoring preparation script. |
| scripts/prepare-effect.mts | Removes obsolete Effect vendoring preparation script. |
| pnpm-workspace.yaml | Updates Effect override/version exceptions and adds patchedDependencies for the SDK patch. |
| pnpm-lock.yaml | Updates lockfile for Effect beta.107 and the patched SDK entry. |
| patches/@putdotio__sdk@10.0.1.patch | Patch for @putdotio/sdk@10.0.1 to use Schema.TaggedError instead of obsolete constructors. |
| package.json | Pins Effect packages to beta.107, removes prepare hook, moves SDK to dev + inlined dependency for bundling. |
| docs/DISTRIBUTION.md | Documents SDK bundling and aligns commands to pnpm exec vp …. |
| CONTRIBUTING.md | Aligns contributor commands to pnpm exec vp … and documents the “single Effect runtime + patched SDK” distribution constraint. |
| AGENTS.md | Removes .repos worktree guidance and adds Effect learning guidance via node_modules/effect. |
| .worktreeinclude | Removes .repos/effect worktree include. |
| .gitignore | Removes .repos ignore entry now that vendoring is removed. |
| .claude/settings.json | Removes Claude worktree symlink configuration for .repos. |
Files not reviewed (1)
- pnpm-lock.yaml: Generated file
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
There was a problem hiding this comment.
All reported issues were addressed across 24 files
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
|
🎉 This PR is included in version 1.3.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
Summary
latestremains Effect v3.reposconfigurationChanged
effect,@effect/platform-node, and@effect/vitestto4.0.0-beta.107, with matching pnpm override and release-age exceptionsCliCommandInputErrorvalues and retain original SDK continuation failures for localizationNodeRuntime.runMaindist, and leave Effect as the single installed runtimeprepare-effectscripts, the package prepare hook,.worktreeinclude,.reposignore/worktree/test configuration, and documentnode_modules/effectas the supported guidance/source pathAGENTS.md; no agent-readiness report or inbound report link existed in this repositoryReview aids
The packaged-install smoke is the release-boundary proof: it installs the generated tarball with npm, checks the dependency tree, and calls
transfers listwith authentication against a strict local HTTP server.Risks
Schema.TaggedErrorClasscalls becomeSchema.TaggedErrordeps.onlyBundlerestricts bundling to@putdotio/sdk, while Effect and other runtime dependencies remain externalVerification
pnpm exec vp run verifypnpm exec vp installfollowed by assertion that.reposis absentpnpm exec vp run buildversion,describe(28 commands), and isolatedauth statusJSON proofsgpt-5.6-sol, high reasoning, native isolation, branch mode againstorigin/main; final result clean with zero findingsComplexity
Medium. The public command surface is unchanged; the meaningful complexity is confined to Effect error/cancellation boundaries and the npm package's SDK bundling contract.
Summary by cubic
Upgraded the CLI to Effect v4
beta.107, tightened error/interrupt handling, and hardened the URL opener. The packed-install smoke now asserts a single installedeffectand performs an authenticated SDK request; the patched@putdotio/sdkis bundled so the CLI and SDK share one runtime and the old vendoring workflow is removed.Dependencies
effect,@effect/platform-node, and@effect/vitestto4.0.0-beta.107.@putdotio/sdk@10.0.1to useSchema.TaggedError, and bundle only the SDK indist(Effect stays external); move SDK todevDependencieswithinlinedDependencies.effectin the packed-install smoke (exact version query) and exercise an authenticated local SDK request; add pnpm overrides andpatchedDependencies.prepare-effectscripts and all.reposconfig; docs now point tonode_modules/effect.Bug Fixes
CliCommandInputError; preserve original continuation failures.handleCliCause: preserve interrupt-only causes forNodeRuntime, and format ordinary failures with exit code 1.AbortSignal, and listener cleanup.Written for commit d94f792. Summary will update on new commits.