Open History to see the last commit
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;