/
Alex_Ural
/
opencode
Обзор
Документация
Войти
/
Alex_Ural
/
opencode
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
packages/schema/src/prompt.ts
57 строк
2 KB
Kit Langton
refactor(schema): tighten public contracts (#33771)
25 июн 2026, 20:10
Не верифицирован
25 июн 2026, 20:10
9e9d405
Код
Авторство
О чём код?
import { Schema } from "effect" import { optional } from "./schema" import { statics } from "./schema" export interface Source extends Schema.Schema.Type<typeof Source> {} export const Source = Schema.Struct({ start: Schema.Finite, end: Schema.Finite, text: Schema.String, }).annotate({ identifier: "Prompt.Source" }) export interface FileAttachment extends Schema.Schema.Type<typeof FileAttachment> {} export const FileAttachment = Schema.Struct({ uri: Schema.String, mime: Schema.String, name: Schema.String.pipe(optional), description: Schema.String.pipe(optional), source: Source.pipe(optional), }) .annotate({ identifier: "Prompt.FileAttachment" }) .pipe( statics((schema) => ({ create: (input: FileAttachment) => schema.make({ uri: input.uri, mime: input.mime, name: input.name, description: input.description, source: input.source, }), })), ) export interface AgentAttachment extends Schema.Schema.Type<typeof AgentAttachment> {} export const AgentAttachment = Schema.Struct({ name: Schema.String, source: Source.pipe(optional), }).annotate({ identifier: "Prompt.AgentAttachment" }) export interface Prompt extends Schema.Schema.Type<typeof Prompt> {} export const Prompt = Schema.Struct({ text: Schema.String, files: Schema.Array(FileAttachment).pipe(optional), agents: Schema.Array(AgentAttachment).pipe(optional), }) .annotate({ identifier: "Prompt" }) .pipe( statics((schema) => ({ equivalence: Schema.toEquivalence(schema), fromUserMessage: (input: Pick<Prompt, "text" | "files" | "agents">) => schema.make({ text: input.text, ...(input.files === undefined ? {} : { files: input.files }), ...(input.agents === undefined ? {} : { agents: input.agents }), }), })), )