@2501-ai/cli
Version:
[](https://www.npmjs.com/package/@2501-ai/cli) [](https://www.2501.ai/research/full-humaneval-benchmark) [![Lic
316 lines (315 loc) • 13.8 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 () {
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;
};
})();
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
if (kind === "m") throw new TypeError("Private method is not writable");
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
var _Logger_spinnerStarted, _Logger_lastUpdateTime;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getTerminalWidth = getTerminalWidth;
const p = __importStar(require("@clack/prompts"));
const axios_1 = __importDefault(require("axios"));
const marked_1 = require("marked");
const terminal_kit_1 = require("terminal-kit");
const configManager_1 = require("../managers/configManager");
const telemetry_1 = require("../telemetry");
const logTracker_1 = require("../telemetry/logTracker");
const isDebug = process.env.TFZO_DEBUG === 'true';
var Colors;
(function (Colors) {
Colors["RED"] = "red";
Colors["GREEN"] = "green";
Colors["YELLOW"] = "yellow";
Colors["BLUE"] = "blue";
Colors["MAGENTA"] = "magenta";
Colors["CYAN"] = "cyan";
Colors["WHITE"] = "white";
})(Colors || (Colors = {}));
function getTerminalWidth() {
if (process.stdout.isTTY) {
return process.stdout.columns;
}
else {
return 80;
}
}
const stringify = (args) => {
const seen = new WeakSet();
const safeStringify = (obj) => {
return JSON.stringify(obj, (key, value) => {
if (key.startsWith('_')) {
return undefined;
}
if (typeof value === 'object' && value !== null) {
if (seen.has(value)) {
return '[Circular]';
}
seen.add(value);
}
return value;
}, 2);
};
return args.map((a) => {
if (a instanceof Error) {
return `${a.message}\n${a.stack}\n`;
}
return `${typeof a === 'object' ? safeStringify(a) : a}` + '\n';
});
};
class Logger {
constructor(spin = p.spinner()) {
this.spin = spin;
_Logger_spinnerStarted.set(this, false);
_Logger_lastUpdateTime.set(this, 0);
}
intro(message) {
p.intro(message);
}
log(message) {
p.log.message(message);
(0, logTracker_1.trackLog)('info', message);
}
outro(message) {
if (__classPrivateFieldGet(this, _Logger_spinnerStarted, "f")) {
this.stop();
}
p.outro(message);
}
cancel(message, stopMessage) {
this.stop(stopMessage);
p.cancel(message);
}
start(message) {
var _a, _b, _c;
if (configManager_1.ConfigManager.instance.get('disable_spinner')) {
p.log.message(message);
return;
}
const terminalWidth = getTerminalWidth();
const maxMessageLength = terminalWidth - 10;
const truncatedMessage = message
? message.substring(0, maxMessageLength)
: undefined;
if (__classPrivateFieldGet(this, _Logger_spinnerStarted, "f")) {
(_a = this.spin) === null || _a === void 0 ? void 0 : _a.message(truncatedMessage);
return;
}
if (truncatedMessage && truncatedMessage.length > maxMessageLength) {
(_b = this.spin) === null || _b === void 0 ? void 0 : _b.message(truncatedMessage.slice(0, maxMessageLength));
}
(_c = this.spin) === null || _c === void 0 ? void 0 : _c.start(truncatedMessage);
__classPrivateFieldSet(this, _Logger_spinnerStarted, true, "f");
}
message(message) {
var _a;
if (configManager_1.ConfigManager.instance.get('disable_spinner')) {
p.log.message(message);
return;
}
const now = Date.now();
if (now - __classPrivateFieldGet(this, _Logger_lastUpdateTime, "f") < 100) {
return;
}
__classPrivateFieldSet(this, _Logger_lastUpdateTime, now, "f");
const terminalWidth = getTerminalWidth();
const maxMessageLength = terminalWidth - 10;
const truncatedMessage = message.substring(0, maxMessageLength);
(_a = this.spin) === null || _a === void 0 ? void 0 : _a.message(truncatedMessage);
}
stop(message, code) {
var _a, _b;
if (configManager_1.ConfigManager.instance.get('disable_spinner')) {
p.log.message(message);
return;
}
if (!__classPrivateFieldGet(this, _Logger_spinnerStarted, "f")) {
(_a = this.spin) === null || _a === void 0 ? void 0 : _a.message(marked_1.marked.parse(message || ''));
return;
}
(_b = this.spin) === null || _b === void 0 ? void 0 : _b.stop(marked_1.marked.parse(message || '').trim(), code);
__classPrivateFieldSet(this, _Logger_spinnerStarted, false, "f");
}
prompt(message, promptType = 'boolean') {
if (promptType === 'string') {
return p.password({
message,
validate: (value) => {
if (!value)
return 'Please enter an Api Key.';
if (!value.startsWith('2501_ak_'))
return 'Please enter a valid Api Key.';
},
});
}
return p.select({
message,
options: [
{ value: true, label: 'Yes' },
{ value: false, label: 'No' },
],
initialValue: false,
});
}
handleError(e_1) {
return __awaiter(this, arguments, void 0, function* (e, defaultMsg = e.message || 'Unexpected error. Please try again !') {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
if (isDebug) {
if (!axios_1.default.isAxiosError(e)) {
Logger.error('Command error', e);
yield (0, telemetry_1.trackError)(e, {
metadata: {
defaultMsg,
},
});
return this.cancel(defaultMsg);
}
const axiosError = e;
const errorData = axiosError.toJSON();
(0, telemetry_1.trackError)(axiosError, {
metadata: {
defaultMsg,
errorData,
},
});
Logger.error('Command error - Axios error', {
code: axiosError.code,
message: axiosError.message,
name: axiosError.name,
responseData: ((_a = axiosError.response) === null || _a === void 0 ? void 0 : _a.data) || 'no error',
data: axiosError.toJSON(),
});
if (axiosError.code === 'ECONNREFUSED') {
defaultMsg = 'Server unreachable. Please try again later.';
}
return this.cancel(((_c = (_b = axiosError.response) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.error) || defaultMsg);
}
if (!axios_1.default.isAxiosError(e)) {
Logger.error('Command error', e);
(0, telemetry_1.trackError)(e, {
metadata: {
defaultMsg,
},
});
return this.cancel(defaultMsg);
}
const axiosError = e;
const errorData = axiosError.toJSON();
(0, telemetry_1.trackError)(axiosError, {
metadata: {
defaultMsg,
errorData,
},
});
if (((_d = axiosError.response) === null || _d === void 0 ? void 0 : _d.status) === 401) {
defaultMsg = 'Unauthorized. Please verify your API key.';
}
if (((_e = axiosError.response) === null || _e === void 0 ? void 0 : _e.status) === 403) {
const errorResponse = (_f = axiosError.response) === null || _f === void 0 ? void 0 : _f.data;
if ((errorResponse === null || errorResponse === void 0 ? void 0 : errorResponse.code) === 'TOKEN_LIMIT') {
defaultMsg =
'Monthly token usage limit reached. Please upgrade your plan or contact us !';
}
}
if (((_g = axiosError.response) === null || _g === void 0 ? void 0 : _g.status) === 500) {
defaultMsg =
((_j = (_h = axiosError.response) === null || _h === void 0 ? void 0 : _h.data) === null || _j === void 0 ? void 0 : _j.error) ||
'The server has returned an error. Please try again';
}
if (axiosError.code === 'ECONNREFUSED') {
defaultMsg = 'Server unreachable. Please try again later.';
}
this.cancel(((_l = (_k = axiosError.response) === null || _k === void 0 ? void 0 : _k.data) === null || _l === void 0 ? void 0 : _l.error) || defaultMsg);
});
}
static agent(data) {
p.outro(marked_1.marked.parse(data));
}
static log(...args) {
terminal_kit_1.terminal.defaultColor(...args.map((a) => (typeof a === 'object' ? JSON.stringify(a, null, 2) : a) + '\n'));
const message = args
.map((a) => (typeof a === 'object' ? JSON.stringify(a) : String(a)))
.join(' ');
(0, logTracker_1.trackLog)('info', message);
}
static error(...args) {
terminal_kit_1.terminal[Colors.RED]('\n[ERROR] ').defaultColor(...stringify(args));
const message = args
.map((a) => {
if (a instanceof Error) {
return `${a.message}\n${a.stack}`;
}
return typeof a === 'object' ? JSON.stringify(a) : String(a);
})
.join(' ');
(0, logTracker_1.trackLog)('error', message);
}
static debug(...args) {
if (isDebug) {
terminal_kit_1.terminal[Colors.MAGENTA]('[DEBUG] ').defaultColor(...stringify(args));
}
const message = args
.map((a) => (typeof a === 'object' ? JSON.stringify(a) : String(a)))
.join(' ');
(0, logTracker_1.trackLog)('info', message);
}
static warn(...args) {
terminal_kit_1.terminal[Colors.YELLOW]('[WARN] ').defaultColor(...stringify(args));
const message = args
.map((a) => (typeof a === 'object' ? JSON.stringify(a) : String(a)))
.join(' ');
(0, logTracker_1.trackLog)('warn', message);
}
}
_Logger_spinnerStarted = new WeakMap(), _Logger_lastUpdateTime = new WeakMap();
exports.default = Logger;