mono/packages/kbot/ref/utils/shell/shellProvider.ts
2026-04-01 01:05:48 +02:00

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>>
}