auto-gpt-ts
Version:
my take of Auto-GPT in typescript
142 lines • 5.34 kB
JavaScript
;
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 (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.osName = void 0;
const node_child_process_1 = require("node:child_process");
const os = __importStar(require("node:os"));
const nameMap = new Map([
[22, ['Ventura', '13']],
[21, ['Monterey', '12']],
[20, ['Big Sur', '11']],
[19, ['Catalina', '10.15']],
[18, ['Mojave', '10.14']],
[17, ['High Sierra', '10.13']],
[16, ['Sierra', '10.12']],
[15, ['El Capitan', '10.11']],
[14, ['Yosemite', '10.10']],
[13, ['Mavericks', '10.9']],
[12, ['Mountain Lion', '10.8']],
[11, ['Lion', '10.7']],
[10, ['Snow Leopard', '10.6']],
[9, ['Leopard', '10.5']],
[8, ['Tiger', '10.4']],
[7, ['Panther', '10.3']],
[6, ['Jaguar', '10.2']],
[5, ['Puma', '10.1']],
]);
function macosRelease(release) {
release = Number((release || os.release()).split('.')[0]);
const [name, version] = nameMap.get(release) || ['Unknown', ''];
return {
name,
version,
};
}
// Reference: https://www.gaijin.at/en/lstwinver.php
// Windows 11 reference: https://docs.microsoft.com/en-us/windows/release-health/windows11-release-information
const names = new Map([
['10.0.22', '11'],
['10.0', '10'],
['6.3', '8.1'],
['6.2', '8'],
['6.1', '7'],
['6.0', 'Vista'],
['5.2', 'Server 2003'],
['5.1', 'XP'],
['5.0', '2000'],
['4.90', 'ME'],
['4.10', '98'],
['4.03', '95'],
['4.00', '95'],
]);
function windowsRelease(release) {
const version = /(\d+\.\d+)(?:\.(\d+))?/.exec(release || os.release());
if (release && !version) {
throw new Error('`release` argument doesn\'t match `n.n`');
}
let ver = version[1] || '';
const build = version[2] || '';
// Server 2008, 2012, 2016, and 2019 versions are ambiguous with desktop versions and must be detected at runtime.
// If `release` is omitted or we're on a Windows system, and the version number is an ambiguous version
// then use `wmic` to get the OS caption: https://msdn.microsoft.com/en-us/library/aa394531(v=vs.85).aspx
// If `wmic` is obsolete (later versions of Windows 10), use PowerShell instead.
// If the resulting caption contains the year 2008, 2012, 2016, 2019 or 2022, it is a server version, so return a server OS name.
if ((!release || release === os.release()) && ['6.1', '6.2', '6.3', '10.0'].includes(ver)) {
let stdout;
try {
stdout = (0, node_child_process_1.spawnSync)('wmic', ['os', 'get', 'Caption']).stdout.toString() || '';
}
catch (_a) {
stdout = (0, node_child_process_1.spawnSync)('powershell', ['(Get-CimInstance -ClassName Win32_OperatingSystem).caption']).stdout.toString() || '';
}
const year = (stdout.match(/2008|2012|2016|2019|2022/) || [])[0];
if (year) {
return `Server ${year}`;
}
}
// Windows 11
if (ver === '10.0' && build.startsWith('22')) {
ver = '10.0.22';
}
return names.get(ver);
}
function osName(platform, release) {
if (!platform && release) {
throw new Error('You can\'t specify a `release` without specifying `platform`');
}
platform = platform || os.platform();
let id;
if (platform === 'darwin') {
if (!release && os.platform() === 'darwin') {
release = os.release();
}
const prefix = release ? (Number(release.split('.')[0]) > 15 ? 'macOS' : 'OS X') : 'macOS';
try {
id = release ? macosRelease(release).name : '';
if (id === 'Unknown') {
return prefix;
}
}
catch (_a) { }
return prefix + (id ? ' ' + id : '');
}
if (platform === 'linux') {
if (!release && os.platform() === 'linux') {
release = os.release();
}
id = release ? release.replace(/^(\d+\.\d+).*/, '$1') : '';
return 'Linux' + (id ? ' ' + id : '');
}
if (platform === 'win32') {
if (!release && os.platform() === 'win32') {
release = os.release();
}
id = release ? windowsRelease(release) : '';
return 'Windows' + (id ? ' ' + id : '');
}
return platform;
}
exports.osName = osName;
//# sourceMappingURL=index.js.map