UNPKG

relaycode

Version:

A developer assistant that automates applying code changes from LLMs.

3 lines 2.84 kB
'use strict';var config=require('../core/config'),state=require('../core/state'),transaction=require('../core/transaction'),logger=require('../utils/logger');require('relaycode-core');var uuid=require('uuid'),prompt=require('../utils/prompt'),formatters=require('../utils/formatters'),o=require('chalk');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var o__default=/*#__PURE__*/_interopDefault(o);const M=async(v,p={},a=process.cwd(),l)=>{const y=prompt.createConfirmationHandler(p,l),d=await config.loadConfigOrExit(a);let i;const s=v??"1",h=/^-?\d+$/.test(s);if(h){const t=Math.abs(parseInt(s,10));if(isNaN(t)||t<=0){logger.logger.error(`Invalid index. Please provide a positive number (e.g., ${o__default.default.cyan('"1"')} for the latest).`);return}i=t===1?"the latest transaction":`the ${o__default.default.cyan(t)}-th latest transaction`;}else i=`transaction with UUID '${o__default.default.cyan(s)}'`;logger.logger.info(`Looking for ${i}...`);const n=await state.findStateFileByIdentifier(a,s,{skipReverts:!p.includeReverts});if(!n){if(logger.logger.error(`Could not find ${i}.`),h){const t=await state.readAllStateFiles(a,{skipReverts:false}),f=await state.readAllStateFiles(a,{skipReverts:true}),u=(t?.length??0)-(f?.length??0);logger.logger.info(`Found ${o__default.default.cyan(t?.length??0)} total transactions.`),u>0&&(logger.logger.info(`${o__default.default.cyan(u)} of them are revert transactions, which are skipped by default.`),logger.logger.info(`Use the ${o__default.default.cyan("--include-reverts")} flag to include them in the search.`));}return}if(logger.logger.log(o__default.default.bold("Transaction to be reverted:")),formatters.formatTransactionDetails(n).forEach(t=>logger.logger.log(t)),!await y(` Are you sure you want to revert this transaction? (y/N)`)){logger.logger.info("Revert operation cancelled.");return}const c=[],r=new Set(Object.keys(n.snapshot));for(const t of n.operations)t.type==="rename"?(r.delete(t.from),r.add(t.to)):t.type==="write"&&!r.has(t.path)?r.add(t.path):t.type==="delete"&&r.delete(t.path);for(const t of r)(!n.snapshot.hasOwnProperty(t)||n.snapshot[t]===null)&&c.push({type:"delete",path:t});for(const[t,f]of Object.entries(n.snapshot))f!==null&&c.push({type:"write",path:t,content:f,patchStrategy:"replace"});if(c.length===0){logger.logger.warn("No operations to revert for this transaction.");return}const m=uuid.v4(),R=[`Reverting transaction ${n.uuid}.`,`Reasoning from original transaction: ${n.reasoning.join(" ")}`],w={control:{projectId:d.projectId,uuid:m},operations:c,reasoning:R};logger.logger.info(`Creating new transaction ${o__default.default.gray(m)} to perform the revert.`),await transaction.processPatch(d,w,{cwd:a,prompter:l,yes:p.yes});};exports.revertCommand=M;//# sourceMappingURL=revert.cjs.map //# sourceMappingURL=revert.cjs.map