refactor(schema): normalize module patterns (#33770)

This commit is contained in:
Kit Langton 2026-06-25 17:42:22 +02:00 committed by GitHub
commit 7854f5b9f7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
50 changed files with 204 additions and 202 deletions

View file

@ -6,9 +6,8 @@ import { Deferred, Effect, Layer, Context } from "effect"
import os from "os"
import { PermissionV1 } from "@opencode-ai/core/v1/permission"
import { EventV2Bridge } from "@/event-v2-bridge"
import { PermissionV1Event } from "@opencode-ai/schema/permission-v1"
export const Event = PermissionV1Event
export const Event = PermissionV1.Event
export interface Interface {
readonly ask: (input: PermissionV1.AskInput) => Effect.Effect<void, PermissionV1.Error>

View file

@ -3,7 +3,7 @@ import type { AuthOAuthResult, Hooks } from "@opencode-ai/plugin"
import { serviceUse } from "@opencode-ai/core/effect/service-use"
import { Auth } from "@/auth"
import { InstanceState } from "@/effect/instance-state"
import { optionalOmitUndefined } from "@opencode-ai/core/schema"
import { optional } from "@opencode-ai/core/schema"
import { Plugin } from "../plugin"
import { ProviderV2 } from "@opencode-ai/core/provider"
import { Array as Arr, Effect, Layer, Record, Result, Context, Schema } from "effect"
@ -18,14 +18,14 @@ const TextPrompt = Schema.Struct({
type: Schema.Literal("text"),
key: Schema.String,
message: Schema.String,
placeholder: optionalOmitUndefined(Schema.String),
when: optionalOmitUndefined(When),
placeholder: optional(Schema.String),
when: optional(When),
})
const SelectOption = Schema.Struct({
label: Schema.String,
value: Schema.String,
hint: optionalOmitUndefined(Schema.String),
hint: optional(Schema.String),
})
const SelectPrompt = Schema.Struct({
@ -33,7 +33,7 @@ const SelectPrompt = Schema.Struct({
key: Schema.String,
message: Schema.String,
options: Schema.Array(SelectOption),
when: optionalOmitUndefined(When),
when: optional(When),
})
const Prompt = Schema.Union([TextPrompt, SelectPrompt])
@ -41,7 +41,7 @@ const Prompt = Schema.Union([TextPrompt, SelectPrompt])
export class Method extends Schema.Class<Method>("ProviderAuthMethod")({
type: Schema.Literals(["oauth", "api"]),
label: Schema.String,
prompts: optionalOmitUndefined(Schema.Array(Prompt)),
prompts: optional(Schema.Array(Prompt)),
}) {}
export const Methods = Schema.Record(Schema.String, Schema.Array(Method))

View file

@ -24,7 +24,7 @@ import { InstanceState } from "@/effect/instance-state"
import { EffectPromise } from "@/effect/promise"
import { FSUtil } from "@opencode-ai/core/fs-util"
import { isRecord } from "@/util/record"
import { optionalOmitUndefined } from "@opencode-ai/core/schema"
import { optional } from "@opencode-ai/core/schema"
import { ProviderTransform } from "./transform"
import { ProviderV2 } from "@opencode-ai/core/provider"
import { ModelV2 } from "@opencode-ai/core/model"
@ -999,8 +999,8 @@ const ProviderCost = Schema.Struct({
input: Schema.Finite,
output: Schema.Finite,
cache: ProviderCacheCost,
tiers: optionalOmitUndefined(Schema.Array(ProviderCostTier)),
experimentalOver200K: optionalOmitUndefined(
tiers: optional(Schema.Array(ProviderCostTier)),
experimentalOver200K: optional(
Schema.Struct({
input: Schema.Finite,
output: Schema.Finite,
@ -1011,7 +1011,7 @@ const ProviderCost = Schema.Struct({
const ProviderLimit = Schema.Struct({
context: Schema.Finite,
input: optionalOmitUndefined(Schema.Finite),
input: optional(Schema.Finite),
output: Schema.Finite,
})
@ -1020,7 +1020,7 @@ export const Model = Schema.Struct({
providerID: ProviderV2.ID,
api: ProviderApiInfo,
name: Schema.String,
family: optionalOmitUndefined(Schema.String),
family: optional(Schema.String),
capabilities: ProviderCapabilities,
cost: ProviderCost,
limit: ProviderLimit,
@ -1028,7 +1028,7 @@ export const Model = Schema.Struct({
options: Schema.Record(Schema.String, Schema.Any),
headers: Schema.Record(Schema.String, Schema.String),
release_date: Schema.String,
variants: optionalOmitUndefined(Schema.Record(Schema.String, Schema.Record(Schema.String, Schema.Any))),
variants: optional(Schema.Record(Schema.String, Schema.Record(Schema.String, Schema.Any))),
}).annotate({ identifier: "Model" })
export type Model = Types.DeepMutable<Schema.Schema.Type<typeof Model>>
@ -1037,7 +1037,7 @@ export const Info = Schema.Struct({
name: Schema.String,
source: Schema.Literals(["env", "config", "custom", "api"]),
env: Schema.Array(Schema.String),
key: optionalOmitUndefined(Schema.String),
key: optional(Schema.String),
options: Schema.Record(Schema.String, Schema.Any),
models: Schema.Record(Schema.String, Model),
}).annotate({ identifier: "Provider" })

View file

@ -2,14 +2,14 @@ import { Schema } from "effect"
import { Identifier } from "@/id/id"
import { SessionV2 } from "@opencode-ai/core/session"
import { withStatics } from "@opencode-ai/core/schema"
import { statics } from "@opencode-ai/core/schema"
export const SessionID = SessionV2.ID
export type SessionID = Schema.Schema.Type<typeof SessionID>
export const MessageID = Schema.String.check(Schema.isStartsWith("msg")).pipe(
Schema.brand("MessageID"),
withStatics((s) => ({
statics((s) => ({
ascending: (id?: string) => s.make(Identifier.ascending("message", id)),
})),
)
@ -18,7 +18,7 @@ export type MessageID = Schema.Schema.Type<typeof MessageID>
export const PartID = Schema.String.check(Schema.isStartsWith("prt")).pipe(
Schema.brand("PartID"),
withStatics((s) => ({
statics((s) => ({
ascending: (id?: string) => s.make(Identifier.ascending("part", id)),
})),
)

View file

@ -39,11 +39,11 @@ import { SessionID, MessageID, PartID } from "./schema"
import type { Provider } from "@/provider/provider"
import { Global } from "@opencode-ai/core/global"
import { Effect, Layer, Option, Context, Schema, Types } from "effect"
import { NonNegativeInt, optionalOmitUndefined } from "@opencode-ai/core/schema"
import { NonNegativeInt, optional } from "@opencode-ai/core/schema"
import { RuntimeFlags } from "@/effect/runtime-flags"
import { ProviderV2 } from "@opencode-ai/core/provider"
import { ModelV2 } from "@opencode-ai/core/model"
import { SessionMessageID } from "@opencode-ai/schema/session-message-id"
import { SessionMessage } from "@opencode-ai/schema/session-message"
const runtime = makeRuntime(Database.Service, Database.defaultLayer)
@ -146,7 +146,7 @@ export function toRow(info: Info) {
tokens_cache_write: (info.tokens ?? EmptyTokens).cache.write,
revert: info.revert
? {
messageID: SessionMessageID.ID.make(info.revert.messageID),
messageID: SessionMessage.ID.make(info.revert.messageID),
partID: info.revert.partID,
snapshot: info.revert.snapshot,
diff: info.revert.diff,
@ -178,7 +178,7 @@ const Summary = Schema.Struct({
additions: Schema.Finite,
deletions: Schema.Finite,
files: Schema.Finite,
diffs: optionalOmitUndefined(Schema.Array(Snapshot.FileDiff)),
diffs: optional(Schema.Array(Snapshot.FileDiff)),
})
const Tokens = Schema.Struct({
@ -204,21 +204,21 @@ export const ArchivedTimestamp = Schema.Finite
const Time = Schema.Struct({
created: NonNegativeInt,
updated: NonNegativeInt,
compacting: optionalOmitUndefined(NonNegativeInt),
archived: optionalOmitUndefined(ArchivedTimestamp),
compacting: optional(NonNegativeInt),
archived: optional(ArchivedTimestamp),
})
const Revert = Schema.Struct({
messageID: MessageID,
partID: optionalOmitUndefined(PartID),
snapshot: optionalOmitUndefined(Schema.String),
diff: optionalOmitUndefined(Schema.String),
partID: optional(PartID),
snapshot: optional(Schema.String),
diff: optional(Schema.String),
})
const Model = Schema.Struct({
id: ModelV2.ID,
providerID: ProviderV2.ID,
variant: optionalOmitUndefined(Schema.String),
variant: optional(Schema.String),
})
export const Metadata = Schema.Record(Schema.String, Schema.Any)
@ -227,28 +227,28 @@ export const Info = Schema.Struct({
id: SessionID,
slug: Schema.String,
projectID: ProjectV2.ID,
workspaceID: optionalOmitUndefined(WorkspaceV2.ID),
workspaceID: optional(WorkspaceV2.ID),
directory: Schema.String,
path: optionalOmitUndefined(Schema.String),
parentID: optionalOmitUndefined(SessionID),
summary: optionalOmitUndefined(Summary),
cost: optionalOmitUndefined(Schema.Finite),
tokens: optionalOmitUndefined(Tokens),
share: optionalOmitUndefined(Share),
path: optional(Schema.String),
parentID: optional(SessionID),
summary: optional(Summary),
cost: optional(Schema.Finite),
tokens: optional(Tokens),
share: optional(Share),
title: Schema.String,
agent: optionalOmitUndefined(Schema.String),
model: optionalOmitUndefined(Model),
agent: optional(Schema.String),
model: optional(Model),
version: Schema.String,
metadata: optionalOmitUndefined(Metadata),
metadata: optional(Metadata),
time: Time,
permission: optionalOmitUndefined(PermissionV1.Ruleset),
revert: optionalOmitUndefined(Revert),
permission: optional(PermissionV1.Ruleset),
revert: optional(Revert),
}).annotate({ identifier: "Session" })
export type Info = Types.DeepMutable<Schema.Schema.Type<typeof Info>>
export const ProjectInfo = Schema.Struct({
id: ProjectV2.ID,
name: optionalOmitUndefined(Schema.String),
name: optional(Schema.String),
worktree: Schema.String,
}).annotate({ identifier: "ProjectSummary" })
export type ProjectInfo = Types.DeepMutable<Schema.Schema.Type<typeof ProjectInfo>>

View file

@ -1,11 +1,11 @@
import { Schema } from "effect"
import { Identifier } from "@/id/id"
import { withStatics } from "@opencode-ai/core/schema"
import { statics } from "@opencode-ai/core/schema"
export const EventID = Schema.String.check(Schema.isStartsWith("evt")).pipe(
Schema.brand("EventID"),
withStatics((s) => ({
statics((s) => ({
ascending: (id?: string) => s.make(Identifier.ascending("event", id)),
})),
)

View file

@ -1,14 +1,14 @@
import { Schema } from "effect"
import { Identifier } from "@/id/id"
import { withStatics } from "@opencode-ai/core/schema"
import { statics } from "@opencode-ai/core/schema"
const toolIdSchema = Schema.String.check(Schema.isStartsWith("tool")).pipe(Schema.brand("ToolID"))
export type ToolID = typeof toolIdSchema.Type
export const ToolID = toolIdSchema.pipe(
withStatics((schema: typeof toolIdSchema) => ({
statics((schema: typeof toolIdSchema) => ({
ascending: (id?: string) => schema.make(Identifier.ascending("tool", id)),
})),
)