34 lines
955 B
TypeScript
34 lines
955 B
TypeScript
export const SHELL_TYPES = ['bash', 'powershell'] as const
|
|
export type ShellType = (typeof SHELL_TYPES)[number]
|
|
export const DEFAULT_HOOK_SHELL: ShellType = 'bash'
|
|
|
|
export type ShellProvider = {
|
|
type: ShellType
|
|
shellPath: string
|
|
detached: boolean
|
|
|
|
/**
|
|
* Build the full command string including all shell-specific setup.
|
|
* For bash: source snapshot, session env, disable extglob, eval-wrap, pwd tracking.
|
|
*/
|
|
buildExecCommand(
|
|
command: string,
|
|
opts: {
|
|
id: number | string
|
|
sandboxTmpDir?: string
|
|
useSandbox: boolean
|
|
},
|
|
): Promise<{ commandString: string; cwdFilePath: string }>
|
|
|
|
/**
|
|
* Shell args for spawn (e.g., ['-c', '-l', cmd] for bash).
|
|
*/
|
|
getSpawnArgs(commandString: string): string[]
|
|
|
|
/**
|
|
* Extra env vars for this shell type.
|
|
* May perform async initialization (e.g., tmux socket setup for bash).
|
|
*/
|
|
getEnvironmentOverrides(command: string): Promise<Record<string, string>>
|
|
}
|