/*
 * Copyright 2026, Jaime Terrats.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import { execFileSync } from 'node:child_process';
import { existsSync, readdirSync } from 'node:fs';
import { join } from 'node:path';
import os from 'node:os';
import { readWorkspaceConfig } from '../services/workspace-config.js';
const CANVAS_SEARCH_DIRS = ['docs/canvases', 'canvases', 'src/canvases'];
export function resolveProjectDir(cwd) {
    try {
        return execFileSync('git', ['rev-parse', '--show-toplevel'], { cwd, encoding: 'utf8' }).trim();
    }
    catch {
        return cwd;
    }
}
export function resolveCacheDir(projectDir) {
    const slug = projectDir.replace(/^\//, '').replace(/\//g, '-');
    return join(os.homedir(), '.cursor', 'projects', slug, 'canvases');
}
export function findSourceCanvases(projectDir) {
    for (const dir of CANVAS_SEARCH_DIRS) {
        const full = join(projectDir, dir);
        if (!existsSync(full))
            continue;
        const files = readdirSync(full)
            .filter((f) => f.endsWith('.canvas.tsx'))
            .map((f) => join(full, f));
        if (files.length > 0)
            return files;
    }
    return [];
}
export function isCanvasToolActive(cwd) {
    const config = readWorkspaceConfig(cwd);
    return config?.tools.includes('cursor') ?? false;
}
//# sourceMappingURL=canvas-helpers.js.map