@convo-lang/convo-lang-cli
Version:
The language of AI
102 lines • 3.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const common_1 = require("@iyio/common");
const node_common_1 = require("@iyio/node-common");
const ConvoCli_1 = require("../lib/ConvoCli");
const convo_interface_converter_1 = require("../lib/convo-interface-converter");
const create_next_app_1 = require("../lib/create-next-app");
const args = (0, common_1.parseCliArgsT)({
args: process.argv,
startIndex: 2,
defaultKey: 'source',
restKey: 'spawn',
converter: {
source: args => args[0],
inline: args => args[0],
config: args => args[0],
inlineConfig: args => args[0],
sourcePath: args => args[0],
out: args => args[0],
parse: args => args.length ? true : false,
convert: args => args.length ? true : false,
parseFormat: args => (0, common_1.safeParseNumberOrUndefined)(args[0]),
bufferOutput: args => args.length ? true : false,
cmdMode: args => args.length ? true : false,
repl: args => args.length ? true : false,
stdin: args => args.length ? true : false,
allowExec: args => args[0],
prepend: args => args[0],
exeCwd: args => args[0],
syncTsConfig: args => args,
syncWatch: args => args.length ? true : false,
syncOut: args => args[0],
spawn: args => args.join(' '),
spawnDir: args => args[0],
printState: args => args.length ? true : false,
printFlat: args => args.length ? true : false,
printMessages: args => args.length ? true : false,
prefixOutput: args => args.length ? true : false,
createAppDir: args => args[0],
createNextApp: args => args.length ? true : false,
createAppWorkingDir: args => args[0],
listModels: args => args.length ? true : false,
}
}).parsed;
const main = async () => {
const cancel = new common_1.CancelToken();
let done = false;
let shutdownIv;
process.on('SIGINT', () => {
(0, node_common_1.stopReadingStdIn)();
console.log("Stopping Convo-Lang");
cancel.cancelNow();
shutdownIv = setTimeout(() => {
if (!done) {
console.warn('Killing server. Shutdown took too long');
process.exit();
}
}, 3000);
});
let toolPromises = [];
if (!(0, common_1.getObjKeyCount)(args)) {
args.repl = true;
}
if (args.syncTsConfig?.length) {
toolPromises.push((0, convo_interface_converter_1.convertConvoInterfacesAsync)(args, cancel));
}
if (args.createNextApp) {
toolPromises.push((0, create_next_app_1.createNextAppAsync)(args, cancel));
}
if (args.spawn) {
toolPromises.push((0, node_common_1.spawnAsync)({
cmd: args.spawn,
cwd: args.spawnDir,
cancel,
}));
}
await Promise.all(toolPromises);
if (!toolPromises.length) {
const cli = await (0, ConvoCli_1.createConvoCliAsync)(args);
try {
if (args.listModels) {
const models = await cli.convo.getAllModelsAsync();
console.log(JSON.stringify(models, null, 4));
}
else {
await cli.executeAsync(cancel);
}
}
catch (ex) {
console.error('convo execution failed', ex);
process.exit(1);
}
finally {
cli.dispose();
}
}
(0, node_common_1.stopReadingStdIn)();
clearTimeout(shutdownIv);
done = true;
};
main();
//# sourceMappingURL=convo.js.map