@2501-ai/cli
Version:
[](https://www.npmjs.com/package/@2501-ai/cli) [](https://www.2501.ai/research/full-humaneval-benchmark) [); } 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 __asyncValues = (this && this.__asyncValues) || function (o) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
var m = o[Symbol.asyncIterator], i;
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.isStreamingContext = exports.parseStreamedResponse = exports.getSubActionMessage = exports.getActionPostfix = exports.toItalic = exports.parseChunkedMessages = void 0;
const logger_1 = __importDefault(require("../utils/logger"));
const messaging_1 = require("../utils/messaging");
const chalk_1 = __importDefault(require("chalk"));
const actions_1 = require("../utils/actions");
const path_1 = __importDefault(require("path"));
function parseChunkedMessages(input) {
const parsed = [];
let currentJson = '';
let braceCount = 0;
let inString = false;
let escapeNext = false;
for (let i = 0; i < input.length; i++) {
const char = input[i];
currentJson += char;
if (char === '"' && !escapeNext) {
inString = !inString;
}
escapeNext = char === '\\' && !escapeNext;
if (inString) {
continue;
}
if (char === '{')
braceCount++;
if (char === '}') {
if (--braceCount === 0 && currentJson.trim().length > 0) {
try {
parsed.push(JSON.parse(currentJson));
currentJson = '';
}
catch (_a) {
}
}
}
}
return { parsed, remaining: currentJson };
}
exports.parseChunkedMessages = parseChunkedMessages;
function toItalic(text) {
return chalk_1.default.italic.gray(text.trim());
}
exports.toItalic = toItalic;
function getActionPostfix(action) {
const functionName = (0, actions_1.getFunctionName)(action);
const args = (0, actions_1.getFunctionArgs)(action);
switch (functionName) {
case 'read_file':
return toItalic(` (Reading file: ${path_1.default.basename(args.path)})`);
case 'write_file':
return toItalic(` (Writing to file: ${path_1.default.basename(args.path)})`);
case 'update_file':
return toItalic(` (Updating file: ${path_1.default.basename(args.path)})`);
case 'run_shell':
const formatted = args.command.startsWith('cd') && args.command.indexOf('&&') > 0
? args.command
.split('&&')
.slice(args.command.indexOf('&&') + 1)
: args.command;
return toItalic(` (Executing command: ${formatted})`);
case 'browse_url':
return toItalic(` (Browsing URL: ${args.url})`);
default:
return '';
}
}
exports.getActionPostfix = getActionPostfix;
function getSubActionMessage(message, action, success) {
let actionMsg = `${message}\n${chalk_1.default.gray('│')} `;
const functionName = (0, actions_1.getFunctionName)(action);
const args = (0, actions_1.getFunctionArgs)(action);
logger_1.default.debug('Args', args);
switch (functionName) {
case 'read_file':
actionMsg += toItalic(`└ File ${success ? 'read' : 'read failed'}: ${args.path}`);
break;
case 'write_file':
actionMsg += toItalic(`└ File ${success ? 'written' : 'write failed'}: ${args.path}`);
break;
case 'update_file':
actionMsg += toItalic(`└ File ${success ? 'updated' : 'update failed'}: ${args.path}`);
break;
case 'run_shell':
actionMsg += toItalic(`└ Command ${success ? 'executed' : 'execution failed'}: ${args.command}`);
break;
case 'browse_url':
actionMsg += toItalic(`└ URL ${success ? 'browsed' : 'browsing failed'}: ${args.url}`);
break;
default:
actionMsg = message;
}
return actionMsg.trim();
}
exports.getSubActionMessage = getSubActionMessage;
let totalTokens = 0;
function parseStreamContent(content, currentChunks = []) {
try {
return {
streamEvents: [JSON.parse(content)],
chunks: [],
};
}
catch (e) {
const { parsed, remaining } = parseChunkedMessages(content);
return {
streamEvents: parsed,
chunks: remaining ? [remaining, ...currentChunks] : currentChunks,
};
}
}
function parseStreamedResponse(agentResponse) {
var _a, agentResponse_1, agentResponse_1_1;
var _b, e_1, _c, _d;
return __awaiter(this, void 0, void 0, function* () {
const actions = [];
let message = '';
let chunks = [];
try {
for (_a = true, agentResponse_1 = __asyncValues(agentResponse); agentResponse_1_1 = yield agentResponse_1.next(), _b = agentResponse_1_1.done, !_b;) {
_d = agentResponse_1_1.value;
_a = false;
try {
const chunk = _d;
let content = '';
chunks.push(chunk.toString('utf-8'));
content = chunks.join('');
const { streamEvents, chunks: remainingChunks } = parseStreamContent(content, chunks);
chunks = remainingChunks;
streamEvents.forEach((streamEvent) => {
var _a, _b;
if (streamEvent.status !== 'chunked_message') {
logger_1.default.debug('StreamEvent', streamEvent);
}
switch (streamEvent.status) {
case 'requires_action':
message = '';
actions.push(...((_a = streamEvent.actions) !== null && _a !== void 0 ? _a : []));
break;
case 'message':
message = streamEvent.message;
break;
case 'completed':
case 'failed':
message = streamEvent.message || `Task ${streamEvent.status}`;
break;
case 'chunked_message':
if (streamEvent.message.includes(messaging_1.CHUNK_MESSAGE_CLEAR)) {
message = streamEvent.message.replace(messaging_1.CHUNK_MESSAGE_CLEAR, '');
}
else {
message += streamEvent.message;
}
break;
case 'usage':
if (process.env.SHOW_USAGE) {
totalTokens += ((_b = streamEvent.usage) === null || _b === void 0 ? void 0 : _b.total_tokens) || 0;
message = `[${totalTokens} tokens used] ${message || streamEvent.message}`;
}
break;
default:
}
});
}
finally {
_a = true;
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (!_a && !_b && (_c = agentResponse_1.return)) yield _c.call(agentResponse_1);
}
finally { if (e_1) throw e_1.error; }
}
return { actions, message };
});
}
exports.parseStreamedResponse = parseStreamedResponse;
function isStreamingContext(stream, agentResponse) {
return stream && !!agentResponse;
}
exports.isStreamingContext = isStreamingContext;