31 lines
775 B
TypeScript
31 lines
775 B
TypeScript
import path from 'path';
|
|
import { EJCLAW_ENV } from 'ejclaw-runners-shared';
|
|
|
|
export interface ResolvedIpcDirectories {
|
|
ipcDir: string;
|
|
hostIpcDir: string;
|
|
}
|
|
|
|
export function isTaskScopedIpcDir(ipcDir: string): boolean {
|
|
const normalized = path.posix.normalize(ipcDir.replaceAll('\\', '/'));
|
|
return /\/tasks\/[^/]+\/?$/.test(normalized);
|
|
}
|
|
|
|
export function resolveIpcDirectories(
|
|
env: NodeJS.ProcessEnv,
|
|
): ResolvedIpcDirectories {
|
|
const ipcDir = env[EJCLAW_ENV.ipcDir] || '/workspace/ipc';
|
|
const hostIpcDir = env[EJCLAW_ENV.hostIpcDir];
|
|
|
|
if (!hostIpcDir && isTaskScopedIpcDir(ipcDir)) {
|
|
throw new Error(
|
|
'EJCLAW_HOST_IPC_DIR is required for task-scoped IPC runtimes',
|
|
);
|
|
}
|
|
|
|
return {
|
|
ipcDir,
|
|
hostIpcDir: hostIpcDir || ipcDir,
|
|
};
|
|
}
|