UNPKG

relaycode

Version:

A developer assistant that automates applying code changes from LLMs.

25 lines (20 loc) 3.4 kB
'use strict';var fs=require('fs'),y=require('path'),config=require('../core/config'),logger=require('../utils/logger'),constants=require('../utils/constants'),t=require('chalk');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var y__default=/*#__PURE__*/_interopDefault(y);var t__default=/*#__PURE__*/_interopDefault(t);const h=e=>` ${t__default.default.green("\u2705 relaycode has been initialized for this project.")} Configuration file created: ${t__default.default.cyan(constants.CONFIG_FILE_NAME_JSON)} Project ID: ${t__default.default.cyan(e)} ${t__default.default.bold("Next steps:")} ${t__default.default.gray("1.")} (Optional) Open ${t__default.default.cyan(constants.CONFIG_FILE_NAME_JSON)} to customize settings. The config is organized into sections: - In ${t__default.default.yellow("'watcher'")}, you can set ${t__default.default.yellow("'preferredStrategy'")} to control AI patch generation ('auto', 'standard-diff', 'search-replace', etc.). - In ${t__default.default.yellow("'git'")}, you can enable ${t__default.default.yellow("'git.autoGitBranch'")} to create a new branch for each transaction. - In ${t__default.default.yellow("'patch'")}, you can configure the linter, pre/post commands, and approval behavior. ${t__default.default.gray("2.")} Run ${t__default.default.magenta("'relay watch'")} in your terminal. This will start the service and display the system prompt tailored to your configuration. ${t__default.default.gray("3.")} Copy the system prompt provided by ${t__default.default.magenta("'relay watch'")} and paste it into your AI assistant's "System Prompt" or "Custom Instructions". `,w=async e=>{const n=y__default.default.join(e,constants.GITIGNORE_FILE_NAME),a=` ${constants.GITIGNORE_COMMENT} /${constants.STATE_DIRECTORY_NAME}/ `;try{let o=await fs.promises.readFile(n,"utf-8");o.includes(constants.STATE_DIRECTORY_NAME)||(o+=a,await fs.promises.writeFile(n,o),logger.logger.info(`Updated ${t__default.default.cyan(constants.GITIGNORE_FILE_NAME)} to ignore ${t__default.default.cyan(constants.STATE_DIRECTORY_NAME)}/`));}catch(o){logger.isEnoentError(o)?(await fs.promises.writeFile(n,a.trim()),logger.logger.info(`Created ${t__default.default.cyan(constants.GITIGNORE_FILE_NAME)} and added ${t__default.default.cyan(constants.STATE_DIRECTORY_NAME)}/`)):logger.logger.error(`Failed to update ${t__default.default.cyan(constants.GITIGNORE_FILE_NAME)}: ${logger.getErrorMessage(o)}`);}},M=async(e=process.cwd())=>{if(logger.logger.info("Initializing relaycode in this project..."),await config.findConfig(e)){logger.logger.warn("Configuration file already exists. Initialization skipped."),logger.logger.log(` To use relaycode, please run ${t__default.default.magenta("'relay watch'")}. It will display a system prompt to copy into your LLM assistant. You can review your configuration in your existing config file. `);return}const a=await config.getProjectId(e);await config.createConfig(a,e),logger.logger.success(`Created configuration file: ${t__default.default.cyan(constants.CONFIG_FILE_NAME_JSON)}`),await fs.promises.mkdir(y__default.default.join(config.getStateDirectory(e),"transaction"),{recursive:true}),logger.logger.success(`Created state directory: ${constants.STATE_DIRECTORY_NAME}/`),await w(e),logger.logger.log(h(a));};exports.initCommand=M;//# sourceMappingURL=init.cjs.map //# sourceMappingURL=init.cjs.map