UNPKG

@convo-lang/convo-lang-cli

Version:
100 lines 3.45 kB
import { CancelToken, getObjKeyCount, parseCliArgsT, safeParseNumberOrUndefined } from "@iyio/common"; import { spawnAsync, stopReadingStdIn } from "@iyio/node-common"; import { createConvoCliAsync } from "../lib/ConvoCli"; import { convertConvoInterfacesAsync } from "../lib/convo-interface-converter"; import { createNextAppAsync } from "../lib/create-next-app"; const args = 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 => 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 CancelToken(); let done = false; let shutdownIv; process.on('SIGINT', () => { 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 (!getObjKeyCount(args)) { args.repl = true; } if (args.syncTsConfig?.length) { toolPromises.push(convertConvoInterfacesAsync(args, cancel)); } if (args.createNextApp) { toolPromises.push(createNextAppAsync(args, cancel)); } if (args.spawn) { toolPromises.push(spawnAsync({ cmd: args.spawn, cwd: args.spawnDir, cancel, })); } await Promise.all(toolPromises); if (!toolPromises.length) { const cli = await 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(); } } stopReadingStdIn(); clearTimeout(shutdownIv); done = true; }; main(); //# sourceMappingURL=convo.js.map