-
Notifications
You must be signed in to change notification settings - Fork 147
feat(rivetkit/effect): effect support #4009
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: 01-21-feat_examples_effect
Are you sure you want to change the base?
feat(rivetkit/effect): effect support #4009
Conversation
|
🚅 Deployed to the rivet-pr-4009 environment in rivet-frontend
|
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
How to use the Graphite Merge QueueAdd the label merge-queue to this PR to add it to the merge queue. You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has enabled the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. This stack of pull requests is managed by Graphite. Learn more about stacking. |
Effect Integration ReviewThis PR adds comprehensive Effect.ts integration to RivetKit, enabling functional programming patterns with robust error handling. Overall, the implementation is well-structured and follows Effect best practices. Here are my findings: ✅ Strengths
🔍 Issues & ConcernsCritical Issues1. Missing Error Handling in The Recommendation: Handle errors explicitly or let them propagate. 2. Unsafe Type Casts (rivetkit-typescript/packages/effect/src/actor.ts:187, 213, etc.) Multiple instances of Recommendation: Define proper types for queue context or use type guards. Medium Priority Issues3. Inconsistent
Question: Is this intentional? If actions need durability, they should also use 4. Queue Type Safety (rivetkit-typescript/packages/effect/src/queue.ts) The 5. Test Coverage Gaps
Recommendation: Add tests for error propagation through Effect chains and lifecycle hook execution order. Minor Issues6. Missing JSDoc Comments Core utilities like 7. Duplicate Defined in both 📝 Code Quality ObservationsFollowing CLAUDE.md Guidelines ✅
📋 Recommendations SummaryMust Fix (Before Merge):
Should Fix (Before Merge): Nice to Have: ✅ Overall AssessmentThis is a solid foundation for Effect integration. The API design is clean and follows Effect conventions well. The main concerns are around error handling safety and type safety with the Recommendation: Request changes for critical issues, then approve after fixes. Review generated by Claude Code - Analyzed 32 files with focus on rivetkit-typescript/packages/effect/ |
cfba0e4 to
88c2883
Compare
88c2883 to
bd1b371
Compare
bd1b371 to
acb5eb3
Compare
acb5eb3 to
3bc91d9
Compare
More templates
@rivetkit/cloudflare-workers
@rivetkit/db
@rivetkit/effect
@rivetkit/framework-base
@rivetkit/next-js
@rivetkit/react
rivetkit
@rivetkit/sql-loader
@rivetkit/virtual-websocket
@rivetkit/engine-runner
@rivetkit/engine-runner-protocol
commit: |
| import { Effect } from "effect"; | ||
| import { actor } from "rivetkit"; | ||
| import { Action, Run, Log, Queue } from "@rivetkit/effect"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The imports should be sorted alphabetically to comply with Biome linter rules. Change to: import { Action, Log, Queue, Run } from '@rivetkit/effect'; import { Effect } from 'effect'; import { actor } from 'rivetkit';
Spotted by Graphite Agent (based on CI logs)
Is this helpful? React 👍 or 👎 to let us know.
| import { Data, Effect } from "effect"; | ||
| import { actor } from "rivetkit"; | ||
| import { Action, Log } from "@rivetkit/effect"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Import sorting issue. Reorder imports to follow the project's convention: third-party imports first (alphabetically), then local imports.
Spotted by Graphite Agent (based on CI logs)
Is this helpful? React 👍 or 👎 to let us know.

No description provided.