jay-code
Version:
Streamlined AI CLI orchestration engine with mathematical rigor and enterprise-grade reliability
48 lines (41 loc) • 1.4 kB
text/typescript
import { dirname, join, resolve } from 'path';
import { fileURLToPath } from 'url';
import { existsSync, readFileSync } from 'fs';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
export function getClaudeFlowRoot(): string {
// Try multiple strategies to find the root
const strategies = [
// Strategy 1: From current file location
resolve(__dirname, '../..'),
// Strategy 2: From process.cwd()
process.cwd(),
// Strategy 3: From npm global location
resolve(process.execPath, '../../lib/node_modules/jay-code'),
// Strategy 4: From environment variable
process.env.JAY_CODE_ROOT || '',
];
for (const path of strategies) {
if (path && existsSync(join(path, 'package.json'))) {
try {
const pkgPath = join(path, 'package.json');
const pkgContent = readFileSync(pkgPath, 'utf-8');
const pkg = JSON.parse(pkgContent);
if (pkg.name === 'jay-code') {
return path;
}
} catch {
// Ignore errors and try next strategy
}
}
}
// Fallback to current working directory
return process.cwd();
}
export function getClaudeFlowBin(): string {
return join(getClaudeFlowRoot(), 'bin', 'jay-code');
}
export function resolveProjectPath(relativePath: string): string {
const root = getClaudeFlowRoot();
return resolve(root, relativePath);
}