60 lines
1.9 KiB
JavaScript
60 lines
1.9 KiB
JavaScript
import path from 'node:path';
|
|
import process from 'node:process';
|
|
|
|
const ENV_PREFIX = 'OPENCLAW_REPORTING_GOVERNANCE_';
|
|
|
|
const packageRoot = path.resolve(import.meta.dirname, '..', '..');
|
|
const repoRoot = path.resolve(packageRoot, '..', '..');
|
|
|
|
const SCRIPT_NAMES = {
|
|
watchdog: 'long_task_watchdog.mjs',
|
|
dispatcher: 'operator_notify_dispatcher.mjs',
|
|
bridgeSupervisor: 'operator_notify_bridge_supervisor.mjs',
|
|
senderBinding: 'operator_notify_sender_binding.mjs',
|
|
orchestrator: 'watchdog_auto_notify_orchestrator.mjs',
|
|
};
|
|
|
|
const SCRIPT_ENV_KEYS = {
|
|
watchdog: `${ENV_PREFIX}WATCHDOG_SCRIPT`,
|
|
dispatcher: `${ENV_PREFIX}DISPATCHER_SCRIPT`,
|
|
bridgeSupervisor: `${ENV_PREFIX}BRIDGE_SUPERVISOR_SCRIPT`,
|
|
senderBinding: `${ENV_PREFIX}SENDER_BINDING_SCRIPT`,
|
|
orchestrator: `${ENV_PREFIX}ORCHESTRATOR_SCRIPT`,
|
|
};
|
|
|
|
function normalizeString(value) {
|
|
return typeof value === 'string' && value.trim() ? value.trim() : null;
|
|
}
|
|
|
|
export function resolveRepoPath(...segments) {
|
|
return path.join(repoRoot, ...segments);
|
|
}
|
|
|
|
export function createRuntimeBinding(overrides = {}) {
|
|
const scripts = {};
|
|
|
|
for (const [key, fileName] of Object.entries(SCRIPT_NAMES)) {
|
|
const envValue = normalizeString(process.env[SCRIPT_ENV_KEYS[key]]);
|
|
const overrideValue = normalizeString(overrides?.scripts?.[key]);
|
|
scripts[key] = path.resolve(overrideValue ?? envValue ?? resolveRepoPath('scripts', fileName));
|
|
}
|
|
|
|
return {
|
|
packageRoot,
|
|
repoRoot,
|
|
cwd: path.resolve(normalizeString(overrides.cwd) ?? repoRoot),
|
|
scripts,
|
|
};
|
|
}
|
|
|
|
export function resolveScriptPath(name, options = {}) {
|
|
const runtimeBinding = options.runtimeBinding ?? createRuntimeBinding(options);
|
|
const scriptPath = runtimeBinding?.scripts?.[name];
|
|
if (!scriptPath) {
|
|
throw new Error(`unknown runtime binding script: ${name}`);
|
|
}
|
|
return path.resolve(scriptPath);
|
|
}
|
|
|
|
export { packageRoot, repoRoot, SCRIPT_ENV_KEYS, SCRIPT_NAMES };
|