Skip to content
Source
Sign inSign up
Open History to see the last commit

composerContextClipboard.ts

21 lines955 Bytes

1import * as Schema from "effect/Schema";
2​
3import { EnvironmentId, MessageId, ThreadId } from "./baseSchemas.ts";
4import { COMPOSER_CONTEXT_MAX_RECORDS, ComposerContextRecord } from "./composerContext.ts";
5import { ForwardCompatibleArray } from "./baseSchemas.ts";
6​
7export const COMPOSER_CONTEXT_CLIPBOARD_MIME = "web application/x-t3-context-fragment+json";
8​
9export const ComposerContextClipboardFragment = Schema.Struct({
10 version: Schema.Literal(1),
11 source: Schema.Struct({
12 environmentId: EnvironmentId,
13 threadId: Schema.optional(ThreadId),
14 messageId: Schema.optional(MessageId),
15 }),
16 // Bound raw input before forward-compatible decoding drops unknown records.
17 records: Schema.Array(Schema.Unknown)
18 .check(Schema.isMaxLength(COMPOSER_CONTEXT_MAX_RECORDS))
19 .pipe(Schema.decodeTo(ForwardCompatibleArray(ComposerContextRecord))),
20});
21export type ComposerContextClipboardFragment = typeof ComposerContextClipboardFragment.Type;