import type { EnvironmentId, TerminalAttachInput } from "@t3tools/contracts"; export interface ThreadTerminalSubscriptionIdentity { readonly environmentId: EnvironmentId; readonly threadId: TerminalAttachInput["threadId"]; readonly terminalId: TerminalAttachInput["terminalId"]; readonly cwd: string; readonly worktreePath: string | null;} export interface TerminalGridSize { readonly cols: number; readonly rows: number;} export function threadTerminalSubscriptionKey( identity: ThreadTerminalSubscriptionIdentity,): string { return JSON.stringify([ identity.environmentId, identity.threadId, identity.terminalId, identity.cwd, identity.worktreePath, ]);} export function buildThreadTerminalAttachInput( identity: ThreadTerminalSubscriptionIdentity, gridSize: TerminalGridSize,): TerminalAttachInput { return { threadId: identity.threadId, terminalId: identity.terminalId, cwd: identity.cwd, worktreePath: identity.worktreePath, cols: gridSize.cols, rows: gridSize.rows, };}
import type { EnvironmentId, TerminalAttachInput } from "@t3tools/contracts";
export interface ThreadTerminalSubscriptionIdentity {
readonly environmentId: EnvironmentId;
readonly threadId: TerminalAttachInput["threadId"];
readonly terminalId: TerminalAttachInput["terminalId"];
readonly cwd: string;
readonly worktreePath: string | null;
}
export interface TerminalGridSize {
readonly cols: number;
readonly rows: number;
}
export function threadTerminalSubscriptionKey(
identity: ThreadTerminalSubscriptionIdentity,
): string {
return JSON.stringify([
identity.environmentId,
identity.threadId,
identity.terminalId,
identity.cwd,
identity.worktreePath,
]);
}
export function buildThreadTerminalAttachInput(
identity: ThreadTerminalSubscriptionIdentity,
gridSize: TerminalGridSize,
): TerminalAttachInput {
return {
threadId: identity.threadId,
terminalId: identity.terminalId,
cwd: identity.cwd,
worktreePath: identity.worktreePath,
cols: gridSize.cols,
rows: gridSize.rows,
};
}