From f80343b875124cc96807b47055ecb2e28c6d3ebf Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sat, 21 Mar 2026 09:11:15 -0400 Subject: [PATCH] fix annotation --- packages/opencode/src/auth/index.ts | 2 +- packages/opencode/src/util/effect-zod.ts | 6 ++++++ packages/sdk/js/src/v2/gen/sdk.gen.ts | 8 +++----- packages/sdk/js/src/v2/gen/types.gen.ts | 4 +++- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/packages/opencode/src/auth/index.ts b/packages/opencode/src/auth/index.ts index c50040f1d..2238d57f5 100644 --- a/packages/opencode/src/auth/index.ts +++ b/packages/opencode/src/auth/index.ts @@ -32,7 +32,7 @@ export namespace Auth { token: Schema.String, }) {} - const _Info = Schema.Union([Oauth, Api, WellKnown]) + const _Info = Schema.Union([Oauth, Api, WellKnown]).annotate({ discriminator: "type", identifier: "Auth" }) export const Info = Object.assign(_Info, { zod: zod(_Info) }) export type Info = Schema.Schema.Type diff --git a/packages/opencode/src/util/effect-zod.ts b/packages/opencode/src/util/effect-zod.ts index c1407594c..97cbbd2fc 100644 --- a/packages/opencode/src/util/effect-zod.ts +++ b/packages/opencode/src/util/effect-zod.ts @@ -60,6 +60,12 @@ function union(ast: SchemaAST.Union): z.ZodTypeAny { const items = ast.types.map(walk) if (items.length === 1) return items[0] if (items.length < 2) return fail(ast) + + const discriminator = (ast as any).annotations?.discriminator + if (discriminator) { + return z.discriminatedUnion(discriminator, items as [z.ZodObject, z.ZodObject, ...z.ZodObject[]]) + } + return z.union(items as [z.ZodTypeAny, z.ZodTypeAny, ...Array]) } diff --git a/packages/sdk/js/src/v2/gen/sdk.gen.ts b/packages/sdk/js/src/v2/gen/sdk.gen.ts index df46c66f2..b6821322e 100644 --- a/packages/sdk/js/src/v2/gen/sdk.gen.ts +++ b/packages/sdk/js/src/v2/gen/sdk.gen.ts @@ -4,11 +4,11 @@ import { client } from "./client.gen.js" import { buildClientParams, type Client, type Options as Options2, type TDataShape } from "./client/index.js" import type { AgentPartInput, - ApiAuth, AppAgentsResponses, AppLogErrors, AppLogResponses, AppSkillsResponses, + Auth as Auth3, AuthRemoveErrors, AuthRemoveResponses, AuthSetErrors, @@ -63,7 +63,6 @@ import type { McpLocalConfig, McpRemoteConfig, McpStatusResponses, - OAuth, OutputFormat, Part as Part2, PartDeleteErrors, @@ -174,7 +173,6 @@ import type { TuiShowToastResponses, TuiSubmitPromptResponses, VcsGetResponses, - WellKnownAuth, WorktreeCreateErrors, WorktreeCreateInput, WorktreeCreateResponses, @@ -339,7 +337,7 @@ export class Auth extends HeyApiClient { public set( parameters: { providerID: string - body?: OAuth | ApiAuth | WellKnownAuth + auth?: Auth3 }, options?: Options, ) { @@ -349,7 +347,7 @@ export class Auth extends HeyApiClient { { args: [ { in: "path", key: "providerID" }, - { key: "body", map: "body" }, + { key: "auth", map: "body" }, ], }, ], diff --git a/packages/sdk/js/src/v2/gen/types.gen.ts b/packages/sdk/js/src/v2/gen/types.gen.ts index 593869326..f7aab687e 100644 --- a/packages/sdk/js/src/v2/gen/types.gen.ts +++ b/packages/sdk/js/src/v2/gen/types.gen.ts @@ -1534,6 +1534,8 @@ export type WellKnownAuth = { token: string } +export type Auth = OAuth | ApiAuth | WellKnownAuth + export type NotFoundError = { name: "NotFoundError" data: { @@ -2056,7 +2058,7 @@ export type AuthRemoveResponses = { export type AuthRemoveResponse = AuthRemoveResponses[keyof AuthRemoveResponses] export type AuthSetData = { - body?: OAuth | ApiAuth | WellKnownAuth + body?: Auth path: { providerID: string }