From 31aa32b83bb234ef7f2bdad6a898d06ea1d0552e Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Sun, 15 Feb 2026 11:24:14 -0800 Subject: [PATCH] Extract keybindings contracts into dedicated module - add `packages/contracts/src/keybindings.ts` with keybinding schemas and types - import keybindings config schema from `server.ts` - re-export keybindings contracts from `packages/contracts/src/index.ts` --- packages/contracts/src/index.ts | 1 + packages/contracts/src/keybindings.ts | 22 ++++++++++++++++++++++ packages/contracts/src/server.ts | 21 +-------------------- 3 files changed, 24 insertions(+), 20 deletions(-) create mode 100644 packages/contracts/src/keybindings.ts diff --git a/packages/contracts/src/index.ts b/packages/contracts/src/index.ts index f8f6d534028e48f720ac71c2b24abb4d43c57025..5e705e418f4a6cb350162409f0308cc90d62ce4f 100644 --- a/packages/contracts/src/index.ts +++ b/packages/contracts/src/index.ts @@ -5,6 +5,7 @@ export * from "./terminal"; export * from "./provider"; export * from "./model"; export * from "./ws"; +export * from "./keybindings"; export * from "./server"; export * from "./project"; export * from "./git"; diff --git a/packages/contracts/src/keybindings.ts b/packages/contracts/src/keybindings.ts new file mode 100644 index 0000000000000000000000000000000000000000..5e711da986ccebac9513901cd858ce2bf207281f --- /dev/null +++ b/packages/contracts/src/keybindings.ts @@ -0,0 +1,22 @@ +import { z } from "zod"; + +export const keybindingCommandSchema = z.enum([ + "terminal.toggle", + "terminal.split", + "terminal.new", +]); + +const keybindingValueSchema = z.string().trim().min(1).max(64); +const keybindingWhenSchema = z.string().trim().min(1).max(256); + +export const keybindingRuleSchema = z.object({ + key: keybindingValueSchema, + command: keybindingCommandSchema, + when: keybindingWhenSchema.optional(), +}); + +export const keybindingsConfigSchema = z.array(keybindingRuleSchema).max(256); + +export type KeybindingCommand = z.infer; +export type KeybindingRule = z.infer; +export type KeybindingsConfig = z.infer; diff --git a/packages/contracts/src/server.ts b/packages/contracts/src/server.ts index d6c51dd28e699209afc67adbe13dd1966996299a..d3ed929fbafaa1dad1924862fb304c769dd1d4ec 100644 --- a/packages/contracts/src/server.ts +++ b/packages/contracts/src/server.ts @@ -1,28 +1,9 @@ import { z } from "zod"; - -export const keybindingCommandSchema = z.enum([ - "terminal.toggle", - "terminal.split", - "terminal.new", -]); - -const keybindingValueSchema = z.string().trim().min(1).max(64); -const keybindingWhenSchema = z.string().trim().min(1).max(256); - -export const keybindingRuleSchema = z.object({ - key: keybindingValueSchema, - command: keybindingCommandSchema, - when: keybindingWhenSchema.optional(), -}); - -export const keybindingsConfigSchema = z.array(keybindingRuleSchema).max(256); +import { keybindingsConfigSchema } from "./keybindings"; export const serverConfigSchema = z.object({ cwd: z.string().min(1), keybindings: keybindingsConfigSchema.default([]), }); -export type KeybindingCommand = z.infer; -export type KeybindingRule = z.infer; -export type KeybindingsConfig = z.infer; export type ServerConfig = z.infer; -- 2.54.0