script({ title: "Invoke LLM code update", files: "src/muz/spacer/spacer_qe_project.cpp" }) async function invokeLLMUpdate(code) { const answer = await runPrompt( (_) => { _.def("CODE", code); _.$` You are a highly experienced compiler engineer with over 20 years of expertise, specializing in C and C++ programming. Your deep knowledge of best coding practices and software engineering principles enables you to produce robust, efficient, and maintainable code in any scenario. Please modify the original code in to ensure that it enforces the following: - do not use pointer arithmetic. - do not introduce uses of std::vector. - do not remove comments from the code. - do not replace for loops over unsigned by for loops over 'auto'. - keep comments in the same place. Please. - only make replacements that are compatible with the ones listed next: - add white space between operators: For example: i=0 by i = 0 For example a+b by a + b - remove brackets around single statements: For example: { break; } by break; for example replace: else { result = 0; } by else result = 0; for example replace: if (a) { result = 0; } by if (a) result = 0; - start else statements on a new line. - replaces uses of for loops using begin(), end() iterator patterns by C++21 style for loops For example replace for (auto it = x.begin(), end = x.end(); it != end; ++it) by for (auto e : x) or for (auto const& e : x) For example, replace for (unsigned i = 0; i < a->get_num_args(); ++i) { expr* arg = a->get_arg(i); ... } by for (auto arg : *a) { ... } ` }, { system: [], systemSafety: false } ) console.log(answer.text); return answer.text; } const inputFile = env.files[0]; const file = await workspace.readText(inputFile); const answer = await invokeLLMUpdate(file.content); // Extract the code from the answer by removing ```cpp and ```: let code = answer.replace(/```cpp/g, "").replace(/```/g, ""); const outputFile = inputFile.filename + ".patch"; await workspace.writeText(outputFile, code);