UNPKG

vibetunnel

Version:

Terminal sharing server with web interface - supports macOS, Linux, and headless environments

81 lines 6.67 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.abbreviatePath = abbreviatePath; exports.generateSessionName = generateSessionName; const os = __importStar(require("os")); const path = __importStar(require("path")); /** * Abbreviate a file path to make it more readable * Examples: * /Users/john/Projects/myproject -> ~/Projects/myproject * /Users/john/Development/vibetunnel/web -> ~/Dev/vibetunnel/web * /very/long/path/to/some/directory -> …/some/directory */ function abbreviatePath(fullPath) { if (!fullPath) return ''; const homedir = os.homedir(); let abbreviated = fullPath; // Replace home directory with ~ if (fullPath.startsWith(homedir)) { abbreviated = `~${fullPath.slice(homedir.length)}`; } // Common abbreviations abbreviated = abbreviated .replace('/Development/', '/Dev/') .replace('/Documents/', '/Docs/') .replace('/Applications/', '/Apps/'); // If still long, show only last 2 path components const parts = abbreviated.split('/').filter((p) => p); if (parts.length > 3) { return `…/${parts.slice(-2).join('/')}`; } return abbreviated; } /** * Generate a human-readable session name * Format: commandName (abbreviatedPath) * Examples: * claude (~/Dev/vibetunnel/web) * bash (~/Projects/myapp) * python3 (~) */ function generateSessionName(command, workingDir) { const commandName = path.basename(command[0]); const abbrevCwd = abbreviatePath(workingDir); return abbrevCwd ? `${commandName} (${abbrevCwd})` : commandName; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1uYW1pbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmVyL3V0aWxzL3Nlc3Npb24tbmFtaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVUEsd0NBd0JDO0FBVUQsa0RBSUM7QUFoREQsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUU3Qjs7Ozs7O0dBTUc7QUFDSCxTQUFnQixjQUFjLENBQUMsUUFBZ0I7SUFDN0MsSUFBSSxDQUFDLFFBQVE7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUV6QixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0IsSUFBSSxXQUFXLEdBQUcsUUFBUSxDQUFDO0lBRTNCLGdDQUFnQztJQUNoQyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNqQyxXQUFXLEdBQUcsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRCx1QkFBdUI7SUFDdkIsV0FBVyxHQUFHLFdBQVc7U0FDdEIsT0FBTyxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUM7U0FDakMsT0FBTyxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUM7U0FDaEMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRXZDLGtEQUFrRDtJQUNsRCxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sS0FBSyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQUMsT0FBaUIsRUFBRSxVQUFrQjtJQUN2RSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM3QyxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXLEtBQUssU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztBQUNuRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgb3MgZnJvbSAnb3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuLyoqXG4gKiBBYmJyZXZpYXRlIGEgZmlsZSBwYXRoIHRvIG1ha2UgaXQgbW9yZSByZWFkYWJsZVxuICogRXhhbXBsZXM6XG4gKiAgIC9Vc2Vycy9qb2huL1Byb2plY3RzL215cHJvamVjdCAtPiB+L1Byb2plY3RzL215cHJvamVjdFxuICogICAvVXNlcnMvam9obi9EZXZlbG9wbWVudC92aWJldHVubmVsL3dlYiAtPiB+L0Rldi92aWJldHVubmVsL3dlYlxuICogICAvdmVyeS9sb25nL3BhdGgvdG8vc29tZS9kaXJlY3RvcnkgLT4g4oCmL3NvbWUvZGlyZWN0b3J5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhYmJyZXZpYXRlUGF0aChmdWxsUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFmdWxsUGF0aCkgcmV0dXJuICcnO1xuXG4gIGNvbnN0IGhvbWVkaXIgPSBvcy5ob21lZGlyKCk7XG4gIGxldCBhYmJyZXZpYXRlZCA9IGZ1bGxQYXRoO1xuXG4gIC8vIFJlcGxhY2UgaG9tZSBkaXJlY3Rvcnkgd2l0aCB+XG4gIGlmIChmdWxsUGF0aC5zdGFydHNXaXRoKGhvbWVkaXIpKSB7XG4gICAgYWJicmV2aWF0ZWQgPSBgfiR7ZnVsbFBhdGguc2xpY2UoaG9tZWRpci5sZW5ndGgpfWA7XG4gIH1cblxuICAvLyBDb21tb24gYWJicmV2aWF0aW9uc1xuICBhYmJyZXZpYXRlZCA9IGFiYnJldmlhdGVkXG4gICAgLnJlcGxhY2UoJy9EZXZlbG9wbWVudC8nLCAnL0Rldi8nKVxuICAgIC5yZXBsYWNlKCcvRG9jdW1lbnRzLycsICcvRG9jcy8nKVxuICAgIC5yZXBsYWNlKCcvQXBwbGljYXRpb25zLycsICcvQXBwcy8nKTtcblxuICAvLyBJZiBzdGlsbCBsb25nLCBzaG93IG9ubHkgbGFzdCAyIHBhdGggY29tcG9uZW50c1xuICBjb25zdCBwYXJ0cyA9IGFiYnJldmlhdGVkLnNwbGl0KCcvJykuZmlsdGVyKChwKSA9PiBwKTtcbiAgaWYgKHBhcnRzLmxlbmd0aCA+IDMpIHtcbiAgICByZXR1cm4gYOKApi8ke3BhcnRzLnNsaWNlKC0yKS5qb2luKCcvJyl9YDtcbiAgfVxuXG4gIHJldHVybiBhYmJyZXZpYXRlZDtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIGh1bWFuLXJlYWRhYmxlIHNlc3Npb24gbmFtZVxuICogRm9ybWF0OiBjb21tYW5kTmFtZSAoYWJicmV2aWF0ZWRQYXRoKVxuICogRXhhbXBsZXM6XG4gKiAgIGNsYXVkZSAofi9EZXYvdmliZXR1bm5lbC93ZWIpXG4gKiAgIGJhc2ggKH4vUHJvamVjdHMvbXlhcHApXG4gKiAgIHB5dGhvbjMgKH4pXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVNlc3Npb25OYW1lKGNvbW1hbmQ6IHN0cmluZ1tdLCB3b3JraW5nRGlyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBjb21tYW5kTmFtZSA9IHBhdGguYmFzZW5hbWUoY29tbWFuZFswXSk7XG4gIGNvbnN0IGFiYnJldkN3ZCA9IGFiYnJldmlhdGVQYXRoKHdvcmtpbmdEaXIpO1xuICByZXR1cm4gYWJicmV2Q3dkID8gYCR7Y29tbWFuZE5hbWV9ICgke2FiYnJldkN3ZH0pYCA6IGNvbW1hbmROYW1lO1xufVxuIl19