relaycode
Version:
A developer assistant that automates applying code changes from LLMs.
25 lines (20 loc) • 3.4 kB
JavaScript
;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