claude-flow-multilang
Version:
Revolutionary multilingual AI orchestration framework with cultural awareness and DDD architecture
48 lines (41 loc) • 1.41 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/claude-flow'),
// Strategy 4: From environment variable
process.env.CLAUDE_FLOW_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 === 'claude-flow') {
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', 'claude-flow');
}
export function resolveProjectPath(relativePath: string): string {
const root = getClaudeFlowRoot();
return resolve(root, relativePath);
}