Skip to content

refactor(provider): effectify ProviderAuthService#17227

Merged
kitlangton merged 16 commits intodevfrom
effect-auth-provider-flow
Mar 13, 2026
Merged

refactor(provider): effectify ProviderAuthService#17227
kitlangton merged 16 commits intodevfrom
effect-auth-provider-flow

Conversation

@kitlangton
Copy link
Contributor

@kitlangton kitlangton commented Mar 12, 2026

Summary

  • extract a real ProviderAuthService so provider auth state, OAuth callback handling, and credential persistence live in an Effect-native core
  • keep ProviderAuth as the existing zod-facing promise facade while routing it through the new service
  • add a focused provider auth test that verifies the API auth path still persists credentials correctly

Move auth file I/O and key normalization into an Effect service so auth can migrate like account while the existing Auth facade stays stable for callers. Document the broader Effect rollout and instance-state migration strategy to guide follow-on extractions.
Model auth entries with Effect Schema inside AuthService and use Schema decoding when reading persisted auth data. Keep the Auth facade on Zod at the boundary so existing validators and callers stay stable during the migration.
Use Effect Record.filterMap to keep the existing permissive auth-file semantics while making the decode path easier to read. Add service method docs that explain key normalization and why old trailing-slash variants are removed during writes.
Remove the draft migration plan from the auth foundation branch and keep it excluded locally instead of shipping it in the PR.
Drop the temporary auth service method comments now that the key normalization behavior has been reviewed.
Point ProviderAuth persistence at AuthService instead of going back through the legacy Auth facade. Add a focused test that exercises the provider auth API path and confirms credentials still persist correctly.
Move ProviderAuth state and persistence logic into a real Effect service so the provider auth module follows the same facade-over-service migration pattern as account and auth. Keep the existing zod-facing ProviderAuth API as a thin promise bridge over the new service.
@kitlangton kitlangton marked this pull request as ready for review March 12, 2026 20:12
@kitlangton kitlangton changed the title refactor(provider): use AuthService in auth flows refactor(provider): effectify ProviderAuthService Mar 12, 2026
Add a real effect-style scoped state data type built on ScopedCache and cover its caching, invalidation, concurrency, and scope-finalization semantics with focused tests. Move ProviderAuthService onto the new abstraction so the service no longer depends on Instance.state directly.
Replace the generic ScopedState (keyed by caller-provided root) with
InstanceState that hardcodes Instance.directory and integrates with
the instance dispose/reload lifecycle via a global task registry.

- Parallelize State + InstanceState disposal in reload/dispose
- Use Effect's Record.map and Struct.pick in auth-service
- Flatten nested Effect.gen in OAuth callback flow
- Add docstrings to ProviderAuthService interface
- Add State and InstanceState tests
- Convert InstanceState to namespace export pattern
- Change pending OAuth state from Record to Map for type-safe lookups
An error occurred while trying to automatically change base from effect-auth-foundation to dev March 13, 2026 00:43
@kitlangton kitlangton force-pushed the effect-auth-foundation branch from 540bf57 to 1739817 Compare March 13, 2026 01:11
@kitlangton kitlangton force-pushed the effect-auth-provider-flow branch from 6afabcf to 2c1984e Compare March 13, 2026 01:11
@kitlangton kitlangton changed the base branch from effect-auth-foundation to dev March 13, 2026 01:13
@kitlangton kitlangton enabled auto-merge (squash) March 13, 2026 01:55
@kitlangton kitlangton merged commit dd68b85 into dev Mar 13, 2026
8 checks passed
@kitlangton kitlangton deleted the effect-auth-provider-flow branch March 13, 2026 02:08
shellmind112 pushed a commit to shellmind112/opencode that referenced this pull request Mar 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant