src / utils.ts
import { resolve, isAbsolute } from "path";
import { homedir } from "os";
// LÃmite estricto para ahorro máximo de tokens y VRAM
export const MAX_OUTPUT_CHARS = 1200;
export function truncateOutput(text: string, maxChars = MAX_OUTPUT_CHARS): string {
if (!text) return "";
if (text.length <= maxChars) return text;
return text.substring(0, maxChars) + "\n...[truncado para ahorrar contexto]";
}
export function getWorkspaceDir(): string {
const home = homedir();
if (process.env.NANO_FS_WORKSPACE && process.env.NANO_FS_WORKSPACE.trim()) {
return resolvePath(process.env.NANO_FS_WORKSPACE.trim(), home);
}
if (process.env.WORKSPACE_DIR && process.env.WORKSPACE_DIR.trim()) {
return resolvePath(process.env.WORKSPACE_DIR.trim(), home);
}
return resolve(home, "workspace");
}
export function resolvePath(filepath: string, baseDir = getWorkspaceDir()): string {
const home = homedir();
const normalized = (filepath || "").trim();
if (!normalized) return baseDir;
if (normalized === "~") return home;
if (normalized.startsWith("~/") || normalized.startsWith("~\\")) {
return resolve(home, normalized.slice(2));
}
if (normalized.startsWith("~")) return resolve(home, normalized.slice(1));
if (isAbsolute(normalized)) return resolve(normalized);
return resolve(baseDir, normalized);
}
src / utils.ts
import { resolve, isAbsolute } from "path";
import { homedir } from "os";
// LÃmite estricto para ahorro máximo de tokens y VRAM
export const MAX_OUTPUT_CHARS = 1200;
export function truncateOutput(text: string, maxChars = MAX_OUTPUT_CHARS): string {
if (!text) return "";
if (text.length <= maxChars) return text;
return text.substring(0, maxChars) + "\n...[truncado para ahorrar contexto]";
}
export function getWorkspaceDir(): string {
const home = homedir();
if (process.env.NANO_FS_WORKSPACE && process.env.NANO_FS_WORKSPACE.trim()) {
return resolvePath(process.env.NANO_FS_WORKSPACE.trim(), home);
}
if (process.env.WORKSPACE_DIR && process.env.WORKSPACE_DIR.trim()) {
return resolvePath(process.env.WORKSPACE_DIR.trim(), home);
}
return resolve(home, "workspace");
}
export function resolvePath(filepath: string, baseDir = getWorkspaceDir()): string {
const home = homedir();
const normalized = (filepath || "").trim();
if (!normalized) return baseDir;
if (normalized === "~") return home;
if (normalized.startsWith("~/") || normalized.startsWith("~\\")) {
return resolve(home, normalized.slice(2));
}
if (normalized.startsWith("~")) return resolve(home, normalized.slice(1));
if (isAbsolute(normalized)) return resolve(normalized);
return resolve(baseDir, normalized);
}