/
Alex_Ural
/
opencode
Обзор
Документация
Войти
/
Alex_Ural
/
opencode
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
packages/schema/src/pty.ts
58 строк
2 KB
Kit Langton
refactor(schema): tighten public contracts (#33771)
25 июн 2026, 20:10
Не верифицирован
25 июн 2026, 20:10
9e9d405
Код
Авторство
О чём код?
export * as Pty from "./pty" import { Schema } from "effect" import { optional } from "./schema" import { define, inventory } from "./event" import { ascending } from "./identifier" import { NonNegativeInt, PositiveInt, statics } from "./schema" const IDSchema = Schema.String.check(Schema.isStartsWith("pty")).pipe(Schema.brand("PtyID")) export const ID = IDSchema.pipe( statics((schema: typeof IDSchema) => { const create = () => schema.make("pty_" + ascending()) return { create, ascending: (id?: string) => (id === undefined ? create() : schema.make(id)), } }), ) export type ID = typeof ID.Type export const Info = Schema.Struct({ id: ID, title: Schema.String, command: Schema.String, args: Schema.Array(Schema.String), cwd: Schema.String, status: Schema.Literals(["running", "exited"]), pid: NonNegativeInt, exitCode: optional(NonNegativeInt), }).annotate({ identifier: "Pty" }) export interface Info extends Schema.Schema.Type<typeof Info> {} const Created = define({ type: "pty.created", schema: { info: Info } }) const Updated = define({ type: "pty.updated", schema: { info: Info } }) const Exited = define({ type: "pty.exited", schema: { id: ID, exitCode: NonNegativeInt } }) const Deleted = define({ type: "pty.deleted", schema: { id: ID } }) export const Event = { Created, Updated, Exited, Deleted, Definitions: inventory(Created, Updated, Exited, Deleted) } export const CreateInput = Schema.Struct({ command: optional(Schema.String), args: optional(Schema.Array(Schema.String)), cwd: optional(Schema.String), title: optional(Schema.String), env: optional(Schema.Record(Schema.String, Schema.String)), }) export interface CreateInput extends Schema.Schema.Type<typeof CreateInput> {} export const UpdateInput = Schema.Struct({ title: optional(Schema.String), size: optional( Schema.Struct({ rows: PositiveInt, cols: PositiveInt, }), ), }) export interface UpdateInput extends Schema.Schema.Type<typeof UpdateInput> {}