Browse Source

refactor(core): derive provider schema .zod via effect-zod walker (#23753)

Kit Langton 4 tháng trước cách đây
mục cha
commit
2da6d860e0

+ 1 - 1
packages/opencode/specs/effect/schema.md

@@ -162,7 +162,7 @@ schema module with a clear domain.
 - [ ] `src/control-plane/schema.ts`
 - [ ] `src/permission/schema.ts`
 - [ ] `src/project/schema.ts`
-- [ ] `src/provider/schema.ts`
+- [x] `src/provider/schema.ts`
 - [ ] `src/pty/schema.ts`
 - [ ] `src/question/schema.ts`
 - [ ] `src/session/schema.ts`

+ 4 - 4
packages/opencode/src/provider/schema.ts

@@ -1,6 +1,6 @@
 import { Schema } from "effect"
-import z from "zod"
 
+import { zod } from "@/util/effect-zod"
 import { withStatics } from "@/util/schema"
 
 const providerIdSchema = Schema.String.pipe(Schema.brand("ProviderID"))
@@ -9,7 +9,7 @@ export type ProviderID = typeof providerIdSchema.Type
 
 export const ProviderID = providerIdSchema.pipe(
   withStatics((schema: typeof providerIdSchema) => ({
-    zod: z.string().pipe(z.custom<ProviderID>()),
+    zod: zod(schema),
     // Well-known providers
     opencode: schema.make("opencode"),
     anthropic: schema.make("anthropic"),
@@ -30,7 +30,7 @@ const modelIdSchema = Schema.String.pipe(Schema.brand("ModelID"))
 export type ModelID = typeof modelIdSchema.Type
 
 export const ModelID = modelIdSchema.pipe(
-  withStatics((_schema: typeof modelIdSchema) => ({
-    zod: z.string().pipe(z.custom<ModelID>()),
+  withStatics((schema: typeof modelIdSchema) => ({
+    zod: zod(schema),
   })),
 )