genaicode 0.0.35 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/bin/genaicode-dev.js +11 -0
- package/bin/genaicode.cjs +8 -1
- package/dist/ai-service/ai-studio.d.ts +5 -0
- package/dist/ai-service/ai-studio.js +135 -0
- package/dist/ai-service/ai-studio.js.map +1 -0
- package/dist/ai-service/anthropic.d.ts +5 -0
- package/dist/ai-service/anthropic.js +133 -0
- package/dist/ai-service/anthropic.js.map +1 -0
- package/dist/ai-service/chat-gpt.d.ts +5 -0
- package/dist/ai-service/chat-gpt.js +131 -0
- package/dist/ai-service/chat-gpt.js.map +1 -0
- package/dist/ai-service/common.d.ts +57 -0
- package/dist/ai-service/common.js +38 -0
- package/dist/ai-service/common.js.map +1 -0
- package/dist/ai-service/common.test.d.ts +1 -0
- package/dist/ai-service/common.test.js +85 -0
- package/dist/ai-service/common.test.js.map +1 -0
- package/dist/ai-service/dall-e.d.ts +14 -0
- package/dist/ai-service/dall-e.js +47 -0
- package/dist/ai-service/dall-e.js.map +1 -0
- package/dist/ai-service/vertex-ai-claude.d.ts +5 -0
- package/dist/ai-service/vertex-ai-claude.js +93 -0
- package/dist/ai-service/vertex-ai-claude.js.map +1 -0
- package/dist/ai-service/vertex-ai-imagen.d.ts +14 -0
- package/dist/ai-service/vertex-ai-imagen.js +74 -0
- package/dist/ai-service/vertex-ai-imagen.js.map +1 -0
- package/dist/ai-service/vertex-ai.d.ts +7 -0
- package/dist/ai-service/vertex-ai.js +147 -0
- package/dist/ai-service/vertex-ai.js.map +1 -0
- package/dist/cli/cli-options.d.ts +10 -0
- package/dist/cli/cli-options.js +124 -0
- package/dist/cli/cli-options.js.map +1 -0
- package/dist/cli/cli-options.test.d.ts +1 -0
- package/dist/cli/cli-options.test.js +34 -0
- package/dist/cli/cli-options.test.js.map +1 -0
- package/dist/cli/cli-params.d.ts +29 -0
- package/dist/cli/cli-params.js +103 -0
- package/dist/cli/cli-params.js.map +1 -0
- package/dist/cli/cli-params.test.d.ts +1 -0
- package/dist/cli/cli-params.test.js +38 -0
- package/dist/cli/cli-params.test.js.map +1 -0
- package/dist/cli/service-autodetect.d.ts +2 -0
- package/dist/cli/service-autodetect.js +17 -0
- package/dist/cli/service-autodetect.js.map +1 -0
- package/dist/cli/service-autodetect.test.d.ts +1 -0
- package/dist/cli/service-autodetect.test.js +38 -0
- package/dist/cli/service-autodetect.test.js.map +1 -0
- package/dist/cli/validate-cli-params.d.ts +18 -0
- package/dist/cli/validate-cli-params.js +128 -0
- package/dist/cli/validate-cli-params.js.map +1 -0
- package/dist/cli/validate-cli-params.test.d.ts +1 -0
- package/dist/cli/validate-cli-params.test.js +106 -0
- package/dist/cli/validate-cli-params.test.js.map +1 -0
- package/dist/files/file-utils.d.ts +2 -0
- package/dist/files/file-utils.js +7 -0
- package/dist/files/file-utils.js.map +1 -0
- package/dist/files/file-utils.test.d.ts +1 -0
- package/dist/files/file-utils.test.js +18 -0
- package/dist/files/file-utils.test.js.map +1 -0
- package/dist/files/find-files.d.ts +8 -0
- package/dist/files/find-files.js +76 -0
- package/dist/files/find-files.js.map +1 -0
- package/dist/files/read-files.d.ts +13 -0
- package/dist/files/read-files.js +61 -0
- package/dist/files/read-files.js.map +1 -0
- package/dist/files/read-files.test.d.ts +1 -0
- package/dist/files/read-files.test.js +89 -0
- package/dist/files/read-files.test.js.map +1 -0
- package/dist/files/temp-buffer.d.ts +2 -0
- package/dist/files/temp-buffer.js +12 -0
- package/dist/files/temp-buffer.js.map +1 -0
- package/dist/files/update-files.d.ts +5 -0
- package/dist/files/update-files.js +197 -0
- package/dist/files/update-files.js.map +1 -0
- package/dist/images/ensure-alpha.d.ts +1 -0
- package/dist/images/ensure-alpha.js +5 -0
- package/dist/images/ensure-alpha.js.map +1 -0
- package/dist/images/imgly-remove-background.d.ts +2 -0
- package/dist/images/imgly-remove-background.js +21 -0
- package/dist/images/imgly-remove-background.js.map +1 -0
- package/dist/images/resize-image.d.ts +19 -0
- package/dist/images/resize-image.js +22 -0
- package/dist/images/resize-image.js.map +1 -0
- package/dist/images/split-image.d.ts +18 -0
- package/dist/images/split-image.js +25 -0
- package/dist/images/split-image.js.map +1 -0
- package/dist/main/codegen.d.ts +2 -0
- package/dist/main/codegen.js +101 -0
- package/dist/main/codegen.js.map +1 -0
- package/dist/main/codegen.test.d.ts +2 -0
- package/dist/main/codegen.test.js +259 -0
- package/dist/main/codegen.test.js.map +1 -0
- package/dist/main/config-lib.d.ts +8 -0
- package/dist/main/config-lib.js +28 -0
- package/dist/main/config-lib.js.map +1 -0
- package/dist/main/config-lib.test.d.ts +1 -0
- package/dist/main/config-lib.test.js +64 -0
- package/dist/main/config-lib.test.js.map +1 -0
- package/dist/main/config.d.ts +5 -0
- package/{src → dist}/main/config.js +16 -22
- package/dist/main/config.js.map +1 -0
- package/dist/prompt/function-calling-validate.d.ts +3 -0
- package/dist/prompt/function-calling-validate.js +27 -0
- package/dist/prompt/function-calling-validate.js.map +1 -0
- package/dist/prompt/function-calling.d.ts +5 -0
- package/dist/prompt/function-calling.js +48 -0
- package/dist/prompt/function-calling.js.map +1 -0
- package/dist/prompt/function-defs/ask-question.d.ts +31 -0
- package/dist/prompt/function-defs/ask-question.js +32 -0
- package/dist/prompt/function-defs/ask-question.js.map +1 -0
- package/dist/prompt/function-defs/codegen-summary.d.ts +63 -0
- package/dist/prompt/function-defs/codegen-summary.js +80 -0
- package/dist/prompt/function-defs/codegen-summary.js.map +1 -0
- package/dist/prompt/function-defs/create-directory.d.ts +21 -0
- package/dist/prompt/function-defs/create-directory.js +22 -0
- package/dist/prompt/function-defs/create-directory.js.map +1 -0
- package/dist/prompt/function-defs/create-file.d.ts +25 -0
- package/dist/prompt/function-defs/create-file.js +26 -0
- package/dist/prompt/function-defs/create-file.js.map +1 -0
- package/dist/prompt/function-defs/delete-file.d.ts +21 -0
- package/dist/prompt/function-defs/delete-file.js +22 -0
- package/dist/prompt/function-defs/delete-file.js.map +1 -0
- package/dist/prompt/function-defs/download-file.d.ts +25 -0
- package/dist/prompt/function-defs/download-file.js +26 -0
- package/dist/prompt/function-defs/download-file.js.map +1 -0
- package/dist/prompt/function-defs/explanation.d.ts +17 -0
- package/dist/prompt/function-defs/explanation.js +18 -0
- package/dist/prompt/function-defs/explanation.js.map +1 -0
- package/dist/prompt/function-defs/generate-image.d.ts +48 -0
- package/dist/prompt/function-defs/generate-image.js +49 -0
- package/dist/prompt/function-defs/generate-image.js.map +1 -0
- package/dist/prompt/function-defs/get-image-assets.d.ts +20 -0
- package/dist/prompt/function-defs/get-image-assets.js +21 -0
- package/dist/prompt/function-defs/get-image-assets.js.map +1 -0
- package/dist/prompt/function-defs/get-source-code.d.ts +20 -0
- package/dist/prompt/function-defs/get-source-code.js +21 -0
- package/dist/prompt/function-defs/get-source-code.js.map +1 -0
- package/dist/prompt/function-defs/imgly-remove-background.d.ts +25 -0
- package/dist/prompt/function-defs/imgly-remove-background.js +26 -0
- package/dist/prompt/function-defs/imgly-remove-background.js.map +1 -0
- package/dist/prompt/function-defs/move-file.d.ts +25 -0
- package/dist/prompt/function-defs/move-file.js +26 -0
- package/dist/prompt/function-defs/move-file.js.map +1 -0
- package/dist/prompt/function-defs/patch-file.d.ts +25 -0
- package/dist/prompt/function-defs/patch-file.js +39 -0
- package/dist/prompt/function-defs/patch-file.js.map +1 -0
- package/dist/prompt/function-defs/resize-image.d.ts +36 -0
- package/dist/prompt/function-defs/resize-image.js +37 -0
- package/dist/prompt/function-defs/resize-image.js.map +1 -0
- package/dist/prompt/function-defs/split-image.d.ts +57 -0
- package/dist/prompt/function-defs/split-image.js +46 -0
- package/dist/prompt/function-defs/split-image.js.map +1 -0
- package/dist/prompt/function-defs/update-file.d.ts +25 -0
- package/dist/prompt/function-defs/update-file.js +26 -0
- package/dist/prompt/function-defs/update-file.js.map +1 -0
- package/dist/prompt/limits.d.ts +3 -0
- package/dist/prompt/limits.js +19 -0
- package/dist/prompt/limits.js.map +1 -0
- package/dist/prompt/limits.test.d.ts +1 -0
- package/dist/prompt/limits.test.js +35 -0
- package/dist/prompt/limits.test.js.map +1 -0
- package/dist/prompt/prompt-codegen.d.ts +4 -0
- package/dist/prompt/prompt-codegen.js +81 -0
- package/dist/prompt/prompt-codegen.js.map +1 -0
- package/dist/prompt/prompt-codegen.test.d.ts +1 -0
- package/dist/prompt/prompt-codegen.test.js +94 -0
- package/dist/prompt/prompt-codegen.test.js.map +1 -0
- package/dist/prompt/prompt-consts.d.ts +1 -0
- package/{src → dist}/prompt/prompt-consts.js +1 -0
- package/dist/prompt/prompt-consts.js.map +1 -0
- package/dist/prompt/prompt-service-ask-question.test.d.ts +3 -0
- package/dist/prompt/prompt-service-ask-question.test.js +146 -0
- package/dist/prompt/prompt-service-ask-question.test.js.map +1 -0
- package/dist/prompt/prompt-service.d.ts +13 -0
- package/dist/prompt/prompt-service.js +278 -0
- package/dist/prompt/prompt-service.js.map +1 -0
- package/dist/prompt/prompt-service.test.d.ts +1 -0
- package/dist/prompt/prompt-service.test.js +511 -0
- package/dist/prompt/prompt-service.test.js.map +1 -0
- package/dist/prompt/systemprompt.d.ts +2 -0
- package/dist/prompt/systemprompt.js +43 -0
- package/dist/prompt/systemprompt.js.map +1 -0
- package/dist/prompt/systemprompt.test.d.ts +2 -0
- package/dist/prompt/systemprompt.test.js +47 -0
- package/dist/prompt/systemprompt.test.js.map +1 -0
- package/package.json +15 -5
- package/bin/genaicode.js +0 -5
- package/src/ai-service/anthropic.js +0 -95
- package/src/ai-service/chat-gpt.js +0 -99
- package/src/ai-service/common.js +0 -40
- package/src/ai-service/common.test.js +0 -107
- package/src/ai-service/dall-e.js +0 -50
- package/src/ai-service/vertex-ai-claude.js +0 -99
- package/src/ai-service/vertex-ai-imagen.js +0 -78
- package/src/ai-service/vertex-ai.js +0 -156
- package/src/cli/cli-options.js +0 -120
- package/src/cli/cli-options.test.js +0 -50
- package/src/cli/cli-params.js +0 -99
- package/src/cli/cli-params.test.js +0 -43
- package/src/cli/service-autodetect.js +0 -11
- package/src/cli/service-autodetect.test.js +0 -43
- package/src/cli/validate-cli-params.js +0 -117
- package/src/cli/validate-cli-params.test.js +0 -134
- package/src/files/file-utils.js +0 -7
- package/src/files/file-utils.test.js +0 -21
- package/src/files/find-files.js +0 -86
- package/src/files/read-files.js +0 -60
- package/src/files/read-files.test.js +0 -102
- package/src/files/temp-buffer.js +0 -13
- package/src/files/update-files.js +0 -205
- package/src/images/ensure-alpha.js +0 -5
- package/src/images/imgly-remove-background.js +0 -23
- package/src/images/resize-image.js +0 -23
- package/src/images/split-image.js +0 -26
- package/src/main/codegen.js +0 -120
- package/src/main/codegen.test.js +0 -334
- package/src/main/config-lib.js +0 -33
- package/src/main/config-lib.test.js +0 -80
- package/src/prompt/function-calling-validate.js +0 -25
- package/src/prompt/function-calling.js +0 -454
- package/src/prompt/limits.js +0 -23
- package/src/prompt/limits.test.js +0 -40
- package/src/prompt/prompt-codegen.js +0 -106
- package/src/prompt/prompt-codegen.test.js +0 -116
- package/src/prompt/prompt-service.js +0 -287
- package/src/prompt/prompt-service.test.js +0 -601
- package/src/prompt/systemprompt.js +0 -32
- package/src/prompt/systemprompt.test.js +0 -63
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import assert from 'node:assert';
|
|
4
|
+
import * as diff from 'diff';
|
|
5
|
+
import { getSourceFiles } from './find-files.js';
|
|
6
|
+
import { isAncestorDirectory } from './file-utils.js';
|
|
7
|
+
import { rcConfig } from '../main/config.js';
|
|
8
|
+
import { allowDirectoryCreate, allowFileCreate, allowFileDelete, allowFileMove, anthropic, chatGpt, vertexAiClaude, } from '../cli/cli-params.js';
|
|
9
|
+
import { getTempBuffer } from './temp-buffer.js';
|
|
10
|
+
import { imglyRemoveBackground } from '../images/imgly-remove-background.js';
|
|
11
|
+
import { splitImage } from '../images/split-image.js';
|
|
12
|
+
import { resizeImageFile } from '../images/resize-image.js';
|
|
13
|
+
/**
|
|
14
|
+
* @param functionCalls Result of the code generation, a map of file paths to new content
|
|
15
|
+
*/
|
|
16
|
+
export async function updateFiles(functionCalls) {
|
|
17
|
+
for (const { name, args } of functionCalls) {
|
|
18
|
+
let { filePath, newContent, source, destination, inputFilePath, outputFilePath } = args;
|
|
19
|
+
const { patch, parts, size } = args;
|
|
20
|
+
// Check if filePath is absolute, if not use rootDir as baseline
|
|
21
|
+
if (name !== 'moveFile' && name !== 'imglyRemoveBackground' && name !== 'splitImage') {
|
|
22
|
+
assert(filePath);
|
|
23
|
+
filePath = path.isAbsolute(filePath) ? filePath : path.join(rcConfig.rootDir, filePath);
|
|
24
|
+
}
|
|
25
|
+
else if (name === 'moveFile') {
|
|
26
|
+
assert(source);
|
|
27
|
+
source = path.isAbsolute(source) ? source : path.join(rcConfig.rootDir, source);
|
|
28
|
+
assert(destination);
|
|
29
|
+
destination = path.isAbsolute(destination) ? destination : path.join(rcConfig.rootDir, destination);
|
|
30
|
+
}
|
|
31
|
+
else if (name === 'imglyRemoveBackground' || name === 'splitImage') {
|
|
32
|
+
assert(inputFilePath);
|
|
33
|
+
inputFilePath = path.isAbsolute(inputFilePath) ? inputFilePath : path.join(rcConfig.rootDir, inputFilePath);
|
|
34
|
+
if (name === 'imglyRemoveBackground') {
|
|
35
|
+
assert(outputFilePath);
|
|
36
|
+
outputFilePath = path.isAbsolute(outputFilePath) ? outputFilePath : path.join(rcConfig.rootDir, outputFilePath);
|
|
37
|
+
}
|
|
38
|
+
else if (name === 'splitImage') {
|
|
39
|
+
parts?.forEach((part) => (part.outputFilePath = part.outputFilePath
|
|
40
|
+
? path.isAbsolute(part.outputFilePath)
|
|
41
|
+
? part.outputFilePath
|
|
42
|
+
: path.join(rcConfig.rootDir, part.outputFilePath)
|
|
43
|
+
: undefined));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// ignore files which are not located inside project directory (sourceFiles)
|
|
47
|
+
if ((name !== 'moveFile' && name !== 'imglyRemoveBackground' && name !== 'splitImage' && !isProjectPath(filePath)) ||
|
|
48
|
+
(name === 'moveFile' && (!isProjectPath(source) || !isProjectPath(destination))) ||
|
|
49
|
+
(name === 'imglyRemoveBackground' && (!isProjectPath(inputFilePath) || !isProjectPath(outputFilePath))) ||
|
|
50
|
+
(name === 'splitImage' &&
|
|
51
|
+
(!isProjectPath(inputFilePath) ||
|
|
52
|
+
parts.some((part) => part.outputFilePath && !isProjectPath(part.outputFilePath))))) {
|
|
53
|
+
console.log(`Skipping file: ${filePath || source || inputFilePath}`);
|
|
54
|
+
throw new Error(`File ${filePath || source || inputFilePath} is not located inside project directory, something is wrong?`);
|
|
55
|
+
}
|
|
56
|
+
if (name === 'deleteFile') {
|
|
57
|
+
assert(filePath);
|
|
58
|
+
assert(allowFileDelete, 'File delete option was not enabled');
|
|
59
|
+
console.log(`Removing file: ${filePath}`);
|
|
60
|
+
fs.unlinkSync(filePath);
|
|
61
|
+
}
|
|
62
|
+
else if (name === 'createDirectory') {
|
|
63
|
+
assert(filePath);
|
|
64
|
+
assert(allowDirectoryCreate, 'Directory create option was not enabled');
|
|
65
|
+
console.log(`Creating directory: ${filePath}`);
|
|
66
|
+
fs.mkdirSync(filePath, { recursive: true });
|
|
67
|
+
}
|
|
68
|
+
else if (name === 'updateFile' || name === 'createFile' || name === 'patchFile') {
|
|
69
|
+
assert(filePath);
|
|
70
|
+
if (name === 'patchFile') {
|
|
71
|
+
assert(patch);
|
|
72
|
+
console.log(`Applying a patch: ${filePath} content`);
|
|
73
|
+
newContent = diff.applyPatch(fs.readFileSync(filePath, 'utf-8'), patch) || '';
|
|
74
|
+
assert(!!newContent, 'Patch was not successful');
|
|
75
|
+
}
|
|
76
|
+
assert(!!newContent, 'newContent must not be empty');
|
|
77
|
+
if (name === 'createFile') {
|
|
78
|
+
console.log(`Creating file: ${filePath}`);
|
|
79
|
+
assert(allowFileCreate, 'File create option was not enabled');
|
|
80
|
+
assert(!fs.existsSync(filePath), 'File already exists');
|
|
81
|
+
if (allowDirectoryCreate) {
|
|
82
|
+
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
console.log(`Updating file: ${filePath}`);
|
|
87
|
+
assert(fs.existsSync(filePath), 'File does not exist');
|
|
88
|
+
}
|
|
89
|
+
fs.writeFileSync(filePath, chatGpt || anthropic || vertexAiClaude
|
|
90
|
+
? newContent
|
|
91
|
+
: // Fixing a problem caused by vertex function calling. Possibly not a good fix
|
|
92
|
+
newContent.replace(/\\n/g, '\n').replace(/\\'/g, "'"), 'utf-8');
|
|
93
|
+
}
|
|
94
|
+
else if (name === 'moveFile') {
|
|
95
|
+
console.log(`Moving file from ${source} to ${destination}`);
|
|
96
|
+
assert(source);
|
|
97
|
+
assert(destination);
|
|
98
|
+
assert(fs.existsSync(source), 'Source file does not exist');
|
|
99
|
+
assert(!fs.existsSync(destination), 'Destination file already exists');
|
|
100
|
+
assert(allowFileMove, 'File move option was not enabled');
|
|
101
|
+
if (allowDirectoryCreate) {
|
|
102
|
+
fs.mkdirSync(path.dirname(destination), { recursive: true });
|
|
103
|
+
}
|
|
104
|
+
fs.renameSync(source, destination);
|
|
105
|
+
}
|
|
106
|
+
else if (name === 'downloadFile') {
|
|
107
|
+
console.log(`Downloading image: ${filePath}`);
|
|
108
|
+
assert(filePath);
|
|
109
|
+
assert(fs.existsSync(filePath) || allowFileCreate, 'File create option was not enabled and file does not exist');
|
|
110
|
+
if (allowDirectoryCreate) {
|
|
111
|
+
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
112
|
+
}
|
|
113
|
+
try {
|
|
114
|
+
const downloadUrl = args?.downloadUrl;
|
|
115
|
+
assert(downloadUrl, 'image url is not empty');
|
|
116
|
+
if (downloadUrl.startsWith('temp://')) {
|
|
117
|
+
assert(getTempBuffer(downloadUrl), 'Temp buffer not present but expected');
|
|
118
|
+
fs.writeFileSync(filePath, getTempBuffer(downloadUrl));
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
const imageResponse = await fetch(downloadUrl);
|
|
122
|
+
const arrayBuffer = await imageResponse.arrayBuffer();
|
|
123
|
+
const buffer = Buffer.from(arrayBuffer);
|
|
124
|
+
fs.writeFileSync(filePath, buffer);
|
|
125
|
+
}
|
|
126
|
+
console.log(`Image download and saved to: ${filePath}`);
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
console.error('Failed to download image:', error);
|
|
130
|
+
throw error;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
else if (name === 'imglyRemoveBackground') {
|
|
134
|
+
console.log(`Removing background from image: ${inputFilePath}`);
|
|
135
|
+
assert(inputFilePath);
|
|
136
|
+
assert(outputFilePath);
|
|
137
|
+
assert(fs.existsSync(inputFilePath), 'Input file does not exist');
|
|
138
|
+
assert(allowFileCreate || fs.existsSync(outputFilePath), 'File create option was not enabled and output file does not exist');
|
|
139
|
+
if (allowDirectoryCreate) {
|
|
140
|
+
fs.mkdirSync(path.dirname(outputFilePath), { recursive: true });
|
|
141
|
+
}
|
|
142
|
+
try {
|
|
143
|
+
await imglyRemoveBackground(inputFilePath, outputFilePath);
|
|
144
|
+
console.log(`Background removed and image saved to: ${outputFilePath}`);
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
console.error('Failed to remove background', error);
|
|
148
|
+
throw error;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
else if (name === 'splitImage') {
|
|
152
|
+
console.log(`Splitting image: ${inputFilePath}`, parts);
|
|
153
|
+
assert(inputFilePath);
|
|
154
|
+
assert(fs.existsSync(inputFilePath), 'Input file does not exist');
|
|
155
|
+
assert(Array.isArray(parts) && parts.length > 0, 'Parts array must not be empty');
|
|
156
|
+
for (const part of parts) {
|
|
157
|
+
assert(part.outputFilePath);
|
|
158
|
+
assert(allowFileCreate || fs.existsSync(part.outputFilePath), 'File create option was not enabled and output file does not exist');
|
|
159
|
+
if (allowDirectoryCreate) {
|
|
160
|
+
fs.mkdirSync(path.dirname(part.outputFilePath), { recursive: true });
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
try {
|
|
164
|
+
await splitImage(inputFilePath, parts.map((part) => ({ outputFilePath: part.outputFilePath, rect: part.rect })));
|
|
165
|
+
console.log(`Image split successfully`);
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
console.error('Failed to split image', error);
|
|
169
|
+
throw error;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
else if (name === 'resizeImage') {
|
|
173
|
+
console.log(`Resizing image: ${filePath}`, size);
|
|
174
|
+
assert(filePath);
|
|
175
|
+
assert(size);
|
|
176
|
+
assert(size.width);
|
|
177
|
+
assert(size.height);
|
|
178
|
+
assert(fs.existsSync(filePath), 'Input file does not exist');
|
|
179
|
+
try {
|
|
180
|
+
await resizeImageFile(filePath, { width: size.width, height: size.height });
|
|
181
|
+
console.log(`Image resized successfully`);
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
console.error('Failed to resize image', error);
|
|
185
|
+
throw error;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
function isProjectPath(filePath) {
|
|
191
|
+
const sourceFiles = getSourceFiles();
|
|
192
|
+
return (isAncestorDirectory(rcConfig.rootDir, filePath) ||
|
|
193
|
+
sourceFiles.includes(filePath) ||
|
|
194
|
+
!sourceFiles.some((sourceFile) => path.dirname(filePath) === path.dirname(sourceFile) ||
|
|
195
|
+
isAncestorDirectory(path.dirname(sourceFile), path.dirname(filePath))));
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=update-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-files.js","sourceRoot":"","sources":["../../src/files/update-files.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function ensureAlpha(image: string | Buffer): Promise<Buffer>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensure-alpha.js","sourceRoot":"","sources":["../../src/images/ensure-alpha.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAsB;IACtD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import { createRequire } from 'node:module';
|
|
3
|
+
import { removeBackground } from '@imgly/background-removal-node';
|
|
4
|
+
/** Converts white color to transparency on a image and saves to destination path */
|
|
5
|
+
export async function imglyRemoveBackground(inputFilePath, outputFilePath) {
|
|
6
|
+
try {
|
|
7
|
+
console.log(`Removing background for image: ${inputFilePath}`);
|
|
8
|
+
const publicPath = 'file://' + createRequire(import.meta.url).resolve('@imgly/background-removal-node');
|
|
9
|
+
const blob = await removeBackground(inputFilePath, {
|
|
10
|
+
publicPath,
|
|
11
|
+
});
|
|
12
|
+
fs.writeFileSync(outputFilePath, Buffer.from(await blob.arrayBuffer()));
|
|
13
|
+
console.log(`Background removed successfully. Saved to: ${outputFilePath}`);
|
|
14
|
+
return outputFilePath;
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
console.error('Error removing background:', error);
|
|
18
|
+
throw error;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=imgly-remove-background.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imgly-remove-background.js","sourceRoot":"","sources":["../../src/images/imgly-remove-background.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,aAAqB,EAAE,cAAsB;IACvF,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,kCAAkC,aAAa,EAAE,CAAC,CAAC;QAE/D,MAAM,UAAU,GAAG,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;QACxG,MAAM,IAAI,GAAS,MAAM,gBAAgB,CAAC,aAAa,EAAE;YACvD,UAAU;SACX,CAAC,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAExE,OAAO,CAAC,GAAG,CAAC,8CAA8C,cAAc,EAAE,CAAC,CAAC;QAC5E,OAAO,cAAc,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QACnD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
interface ImageSize {
|
|
2
|
+
width: number;
|
|
3
|
+
height: number;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Resize an image buffer to the desired size
|
|
7
|
+
* @param {Buffer} input - The input image buffer
|
|
8
|
+
* @param {ImageSize} size - The desired size of the image
|
|
9
|
+
* @returns {Promise<Buffer>} - The resized image buffer
|
|
10
|
+
*/
|
|
11
|
+
export declare function resizeImageBuffer(input: Buffer, size: ImageSize): Promise<Buffer>;
|
|
12
|
+
/**
|
|
13
|
+
* Resize an image file to the desired size and save it back to the same file
|
|
14
|
+
* @param {string} filePath - The path of the image file to resize
|
|
15
|
+
* @param {ImageSize} size - The desired size of the image
|
|
16
|
+
* @returns {Promise<void>}
|
|
17
|
+
*/
|
|
18
|
+
export declare function resizeImageFile(filePath: string, size: ImageSize): Promise<void>;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import sharp from 'sharp';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
/**
|
|
4
|
+
* Resize an image buffer to the desired size
|
|
5
|
+
* @param {Buffer} input - The input image buffer
|
|
6
|
+
* @param {ImageSize} size - The desired size of the image
|
|
7
|
+
* @returns {Promise<Buffer>} - The resized image buffer
|
|
8
|
+
*/
|
|
9
|
+
export async function resizeImageBuffer(input, size) {
|
|
10
|
+
return await sharp(input).resize(size.width, size.height).toBuffer();
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Resize an image file to the desired size and save it back to the same file
|
|
14
|
+
* @param {string} filePath - The path of the image file to resize
|
|
15
|
+
* @param {ImageSize} size - The desired size of the image
|
|
16
|
+
* @returns {Promise<void>}
|
|
17
|
+
*/
|
|
18
|
+
export async function resizeImageFile(filePath, size) {
|
|
19
|
+
const buffer = await resizeImageBuffer(await fs.promises.readFile(filePath), size);
|
|
20
|
+
await fs.promises.writeFile(filePath, buffer);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=resize-image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resize-image.js","sourceRoot":"","sources":["../../src/images/resize-image.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;AAOpB;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAAa,EAAE,IAAe;IACpE,OAAO,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;AACvE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,IAAe;IACrE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;IACnF,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
interface Rect {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
}
|
|
7
|
+
interface Part {
|
|
8
|
+
rect: Rect;
|
|
9
|
+
outputFilePath: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* This function opens the input file, and splits its into parts, extracting parts of the input image, and saving to outputFilePaths
|
|
13
|
+
*
|
|
14
|
+
* @param {string} inputFilePath
|
|
15
|
+
* @param {Part[]} parts
|
|
16
|
+
*/
|
|
17
|
+
export declare function splitImage(inputFilePath: string, parts: Part[]): Promise<void>;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import sharp from 'sharp';
|
|
2
|
+
/**
|
|
3
|
+
* This function opens the input file, and splits its into parts, extracting parts of the input image, and saving to outputFilePaths
|
|
4
|
+
*
|
|
5
|
+
* @param {string} inputFilePath
|
|
6
|
+
* @param {Part[]} parts
|
|
7
|
+
*/
|
|
8
|
+
export async function splitImage(inputFilePath, parts) {
|
|
9
|
+
try {
|
|
10
|
+
// Process each part
|
|
11
|
+
for (const part of parts) {
|
|
12
|
+
const { rect, outputFilePath } = part;
|
|
13
|
+
const { x, y, width, height } = rect;
|
|
14
|
+
// Extract the specified rectangle from the input image
|
|
15
|
+
console.log('Extracting', rect, outputFilePath);
|
|
16
|
+
await sharp(inputFilePath).extract({ left: x, top: y, width, height }).toFile(outputFilePath);
|
|
17
|
+
}
|
|
18
|
+
console.log('Image splitting completed successfully.');
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
console.error('Error splitting image:', error);
|
|
22
|
+
throw error;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=split-image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"split-image.js","sourceRoot":"","sources":["../../src/images/split-image.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,aAAqB,EAAE,KAAa;IACnE,IAAI,CAAC;QACH,oBAAoB;QACpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;YACtC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;YAErC,uDAAuD;YACvD,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;YAChD,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAChG,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC/C,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { exec } from 'child_process';
|
|
2
|
+
import util from 'util';
|
|
3
|
+
import { dryRun, chatGpt, anthropic, vertexAi, vertexAiClaude, disableInitialLint, helpRequested, imagen, aiStudio, } from '../cli/cli-params.js';
|
|
4
|
+
import { validateCliParams } from '../cli/validate-cli-params.js';
|
|
5
|
+
import { generateContent as generateContentVertexAi } from '../ai-service/vertex-ai.js';
|
|
6
|
+
import { generateContent as generateContentGPT } from '../ai-service/chat-gpt.js';
|
|
7
|
+
import { generateContent as generateContentAnthropic } from '../ai-service/anthropic.js';
|
|
8
|
+
import { generateContent as generateContentVertexAiClaude } from '../ai-service/vertex-ai-claude.js';
|
|
9
|
+
import { generateContent as generateContentAiStudio } from '../ai-service/ai-studio.js';
|
|
10
|
+
import { generateImage as generateImageDallE } from '../ai-service/dall-e.js';
|
|
11
|
+
import { generateImage as generateImageVertexAi } from '../ai-service/vertex-ai-imagen.js';
|
|
12
|
+
import { promptService } from '../prompt/prompt-service.js';
|
|
13
|
+
import { updateFiles } from '../files/update-files.js';
|
|
14
|
+
import { rcConfig } from '../main/config.js';
|
|
15
|
+
import { getLintFixPrompt } from '../prompt/prompt-codegen.js';
|
|
16
|
+
import { printHelpMessage } from '../cli/cli-options.js';
|
|
17
|
+
const execPromise = util.promisify(exec);
|
|
18
|
+
/** Executes codegen */
|
|
19
|
+
export async function runCodegen() {
|
|
20
|
+
// Print to console the received parameters
|
|
21
|
+
console.log(`Received parameters: ${process.argv.slice(2).join(' ')}`);
|
|
22
|
+
validateCliParams();
|
|
23
|
+
// Handle --help option
|
|
24
|
+
if (helpRequested) {
|
|
25
|
+
printHelpMessage();
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (rcConfig.lintCommand && !disableInitialLint) {
|
|
29
|
+
try {
|
|
30
|
+
console.log(`Executing lint command: ${rcConfig.lintCommand}`);
|
|
31
|
+
await execPromise(rcConfig.lintCommand);
|
|
32
|
+
console.log('Lint command executed successfully');
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
const { stderr, stdout } = error;
|
|
36
|
+
console.log('Lint command failed. Aborting codegen, please fix lint issues before running codegen, or use --disable-initial-lint');
|
|
37
|
+
console.log('Lint errors:', stdout, stderr);
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else if (rcConfig.lintCommand && disableInitialLint) {
|
|
42
|
+
console.log('Initial lint was skipped.');
|
|
43
|
+
}
|
|
44
|
+
const generateContent = vertexAiClaude
|
|
45
|
+
? generateContentVertexAiClaude
|
|
46
|
+
: vertexAi
|
|
47
|
+
? generateContentVertexAi
|
|
48
|
+
: anthropic
|
|
49
|
+
? generateContentAnthropic
|
|
50
|
+
: chatGpt
|
|
51
|
+
? generateContentGPT
|
|
52
|
+
: aiStudio
|
|
53
|
+
? generateContentAiStudio
|
|
54
|
+
: (() => {
|
|
55
|
+
throw new Error('Please specify which AI service should be used');
|
|
56
|
+
})();
|
|
57
|
+
const generateImage = imagen === 'vertex-ai' ? generateImageVertexAi : imagen === 'dall-e' ? generateImageDallE : undefined;
|
|
58
|
+
console.log('Generating response');
|
|
59
|
+
const functionCalls = (await promptService(generateContent, generateImage));
|
|
60
|
+
console.log('Received function calls:', functionCalls);
|
|
61
|
+
if (dryRun) {
|
|
62
|
+
console.log('Dry run mode, not updating files');
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
console.log('Update files');
|
|
66
|
+
await updateFiles(functionCalls.filter((call) => call.name !== 'explanation' && call.name !== 'getSourceCode'));
|
|
67
|
+
console.log('Initial updates applied');
|
|
68
|
+
// Check if lintCommand is specified in .genaicoderc
|
|
69
|
+
if (rcConfig.lintCommand) {
|
|
70
|
+
try {
|
|
71
|
+
console.log(`Executing lint command: ${rcConfig.lintCommand}`);
|
|
72
|
+
await execPromise(rcConfig.lintCommand);
|
|
73
|
+
console.log('Lint command executed successfully');
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
console.log('Lint command failed. Attempting to fix issues...');
|
|
77
|
+
// Prepare the lint error output for the second pass
|
|
78
|
+
const firstLintError = error;
|
|
79
|
+
const lintErrorPrompt = getLintFixPrompt(rcConfig.lintCommand, firstLintError.stdout, firstLintError.stderr);
|
|
80
|
+
console.log('Generating response for lint fixes');
|
|
81
|
+
const lintFixFunctionCalls = (await promptService(generateContent, generateImage, lintErrorPrompt));
|
|
82
|
+
console.log('Received function calls for lint fixes:', lintFixFunctionCalls);
|
|
83
|
+
console.log('Applying lint fixes');
|
|
84
|
+
updateFiles(lintFixFunctionCalls.filter((call) => call.name !== 'explanation' && call.name !== 'getSourceCode'));
|
|
85
|
+
// Run lint command again to verify fixes
|
|
86
|
+
try {
|
|
87
|
+
console.log(`Re-running lint command: ${rcConfig.lintCommand}`);
|
|
88
|
+
await execPromise(rcConfig.lintCommand);
|
|
89
|
+
console.log('Lint command executed successfully after fixes');
|
|
90
|
+
}
|
|
91
|
+
catch (secondLintError) {
|
|
92
|
+
const error = secondLintError;
|
|
93
|
+
console.log('Lint command still failing after fixes. Manual intervention may be required.');
|
|
94
|
+
console.log('Lint errors:', error.stdout, error.stderr);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
console.log('Done!');
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=codegen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/main/codegen.ts"],"names":[],"mappings":"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"}
|