diff --git a/packages/contracts/src/terminal.test.ts b/packages/contracts/src/terminal.test.ts index 3feae674924..514320f6d4d 100644 --- a/packages/contracts/src/terminal.test.ts +++ b/packages/contracts/src/terminal.test.ts @@ -38,13 +38,24 @@ describe("TerminalOpenInput", () => { ).toBe(true); }); + it("accepts ultrawide terminal dimensions from xterm fit", () => { + expect( + decodes(TerminalOpenInput, { + threadId: "thread-1", + cwd: "/tmp/project", + cols: 423, + rows: 40, + }), + ).toBe(true); + }); + it("rejects invalid bounds", () => { expect( decodes(TerminalOpenInput, { threadId: "thread-1", cwd: "/tmp/project", cols: 10, - rows: 2, + rows: 0, }), ).toBe(false); }); diff --git a/packages/contracts/src/terminal.ts b/packages/contracts/src/terminal.ts index 21bd74a0999..c4d9972d8c3 100644 --- a/packages/contracts/src/terminal.ts +++ b/packages/contracts/src/terminal.ts @@ -4,11 +4,11 @@ import { TrimmedNonEmptyString } from "./baseSchemas.ts"; export const DEFAULT_TERMINAL_ID = "default"; const TrimmedNonEmptyStringSchema = TrimmedNonEmptyString; -const TerminalColsSchema = Schema.Int.check(Schema.isGreaterThanOrEqualTo(20)).check( - Schema.isLessThanOrEqualTo(400), +const TerminalColsSchema = Schema.Int.check(Schema.isGreaterThanOrEqualTo(1)).check( + Schema.isLessThanOrEqualTo(1000), ); -const TerminalRowsSchema = Schema.Int.check(Schema.isGreaterThanOrEqualTo(5)).check( - Schema.isLessThanOrEqualTo(200), +const TerminalRowsSchema = Schema.Int.check(Schema.isGreaterThanOrEqualTo(1)).check( + Schema.isLessThanOrEqualTo(500), ); const TerminalIdSchema = TrimmedNonEmptyStringSchema.check(Schema.isMaxLength(128)); const TerminalEnvKeySchema = Schema.String.check(