genaicode 0.11.0 → 0.12.0
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 -9
- package/dist/ai-service/ai-studio.d.ts +18 -1
- package/dist/ai-service/ai-studio.js +92 -21
- package/dist/ai-service/ai-studio.js.map +1 -1
- package/dist/ai-service/anthropic.js +59 -25
- package/dist/ai-service/anthropic.js.map +1 -1
- package/dist/ai-service/common-types.d.ts +8 -3
- package/dist/ai-service/common.d.ts +5 -1
- package/dist/ai-service/common.js +9 -0
- package/dist/ai-service/common.js.map +1 -1
- package/dist/ai-service/dall-e.js +1 -0
- package/dist/ai-service/dall-e.js.map +1 -1
- package/dist/ai-service/github-models.d.ts +13 -0
- package/dist/ai-service/github-models.js +51 -0
- package/dist/ai-service/github-models.js.map +1 -0
- package/dist/ai-service/local-llm.js +2 -1
- package/dist/ai-service/local-llm.js.map +1 -1
- package/dist/ai-service/openai-responses.d.ts +9 -0
- package/dist/ai-service/openai-responses.js +286 -0
- package/dist/ai-service/openai-responses.js.map +1 -0
- package/dist/ai-service/openai.js +22 -10
- package/dist/ai-service/openai.js.map +1 -1
- package/dist/ai-service/service-configurations-types.d.ts +7 -7
- package/dist/ai-service/service-configurations.d.ts +1 -0
- package/dist/ai-service/service-configurations.js +41 -36
- package/dist/ai-service/service-configurations.js.map +1 -1
- package/dist/ai-service/vertex-ai-claude.js +2 -2
- package/dist/ai-service/vertex-ai-claude.js.map +1 -1
- package/dist/ai-service/vertex-ai.d.ts +1 -0
- package/dist/ai-service/vertex-ai.js +4 -332
- package/dist/ai-service/vertex-ai.js.map +1 -1
- package/dist/cli/cli-options.js +1 -1
- package/dist/cli/cli-options.js.map +1 -1
- package/dist/cli/validate-cli-params.js +1 -1
- package/dist/cli/validate-cli-params.js.map +1 -1
- package/dist/files/cache-file.d.ts +4 -0
- package/dist/files/cache-file.js +21 -0
- package/dist/files/cache-file.js.map +1 -1
- package/dist/files/find-files.d.ts +1 -0
- package/dist/files/find-files.js +4 -1
- package/dist/files/find-files.js.map +1 -1
- package/dist/files/source-code-utils.js +1 -1
- package/dist/files/summary-cache.d.ts +1 -1
- package/dist/files/summary-cache.js +1 -1
- package/dist/files/summary-cache.js.map +1 -1
- package/dist/main/codegen-utils.d.ts +6 -1
- package/dist/main/codegen-utils.js +21 -2
- package/dist/main/codegen-utils.js.map +1 -1
- package/dist/main/codegen.js +2 -2
- package/dist/main/codegen.js.map +1 -1
- package/dist/main/common/content-bus-types.d.ts +17 -1
- package/dist/main/common/content-bus.d.ts +3 -1
- package/dist/main/common/content-bus.js +23 -1
- package/dist/main/common/content-bus.js.map +1 -1
- package/dist/main/common/user-actions.d.ts +3 -0
- package/dist/main/common/user-actions.js +10 -0
- package/dist/main/common/user-actions.js.map +1 -1
- package/dist/main/config-lib.js +3 -2
- package/dist/main/config-lib.js.map +1 -1
- package/dist/main/config-types.d.ts +4 -0
- package/dist/main/config.js +4 -0
- package/dist/main/config.js.map +1 -1
- package/dist/main/interactive/select-ai-service.js +0 -1
- package/dist/main/interactive/select-ai-service.js.map +1 -1
- package/dist/main/interactive/user-action-handlers.js +7 -2
- package/dist/main/interactive/user-action-handlers.js.map +1 -1
- package/dist/main/knowledge/knowledge-store.d.ts +6 -0
- package/dist/main/knowledge/knowledge-store.js +128 -0
- package/dist/main/knowledge/knowledge-store.js.map +1 -0
- package/dist/main/knowledge/types.d.ts +20 -0
- package/dist/main/knowledge/types.js +2 -0
- package/dist/main/knowledge/types.js.map +1 -0
- package/dist/main/ui/backend/endpoints/interrupt-execution-endpoint.js +17 -3
- package/dist/main/ui/backend/endpoints/interrupt-execution-endpoint.js.map +1 -1
- package/dist/main/ui/common/api-types.d.ts +67 -4
- package/dist/main/ui/common/api-types.js +12 -1
- package/dist/main/ui/common/api-types.js.map +1 -1
- package/dist/main/ui/frontend/assets/index-BbIYZZub.js +2635 -0
- package/dist/main/ui/frontend/index.html +1 -1
- package/dist/main/ui/user-action-handlers.js +7 -1
- package/dist/main/ui/user-action-handlers.js.map +1 -1
- package/dist/project-profiles/types.d.ts +4 -4
- package/dist/project-profiles/types.js +4 -4
- package/dist/project-profiles/types.js.map +1 -1
- package/dist/prompt/function-calling-validate.js +2 -1
- package/dist/prompt/function-calling-validate.js.map +1 -1
- package/dist/prompt/function-calling.js +4 -0
- package/dist/prompt/function-calling.js.map +1 -1
- package/dist/prompt/function-defs/ask-question.js +4 -0
- package/dist/prompt/function-defs/ask-question.js.map +1 -1
- package/dist/prompt/function-defs/container-task-commands.d.ts +10 -0
- package/dist/prompt/function-defs/container-task-commands.js +185 -0
- package/dist/prompt/function-defs/container-task-commands.js.map +1 -0
- package/dist/prompt/function-defs/run-container-task.d.ts +11 -0
- package/dist/prompt/function-defs/run-container-task.js +41 -0
- package/dist/prompt/function-defs/run-container-task.js.map +1 -0
- package/dist/prompt/function-defs/web-search.d.ts +9 -0
- package/dist/prompt/function-defs/web-search.js +16 -0
- package/dist/prompt/function-defs/web-search.js.map +1 -0
- package/dist/prompt/limits.js +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/container-task/command-execution-loop.d.ts +7 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/command-execution-loop.js +301 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/command-execution-loop.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/check-context.d.ts +12 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/check-context.js +41 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/check-context.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/complete-task.d.ts +4 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/complete-task.js +49 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/complete-task.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/copy-from-container.d.ts +4 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/copy-from-container.js +190 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/copy-from-container.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/copy-to-container.d.ts +4 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/copy-to-container.js +139 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/copy-to-container.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/edit-file.d.ts +10 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/edit-file.js +93 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/edit-file.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/fail-task.d.ts +4 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/fail-task.js +72 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/fail-task.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/gain-knowledge.d.ts +10 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/gain-knowledge.js +125 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/gain-knowledge.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/interrupt-controller.d.ts +19 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/interrupt-controller.js +33 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/interrupt-controller.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/query-knowledge.d.ts +8 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/query-knowledge.js +85 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/query-knowledge.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/request-secret.d.ts +6 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/request-secret.js +122 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/request-secret.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/run-command.d.ts +7 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/run-command.js +146 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/run-command.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/send-message.d.ts +4 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/send-message.js +56 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/send-message.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/set-execution-plan.d.ts +4 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/set-execution-plan.js +56 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/set-execution-plan.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/update-execution-plan.d.ts +4 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/update-execution-plan.js +39 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/update-execution-plan.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/view-file.d.ts +10 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/view-file.js +95 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/view-file.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/web-search.d.ts +2 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/web-search.js +96 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/web-search.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/wrap-context.d.ts +4 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/wrap-context.js +123 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/wrap-context.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/container-command-handlers.d.ts +34 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/container-command-handlers.js +332 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/container-command-handlers.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/container-commands-registry.d.ts +11 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/container-commands-registry.js +50 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/container-commands-registry.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/container-commands-types.d.ts +28 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/container-commands-types.js +2 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/container-commands-types.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/container-task-orchestrator.d.ts +2 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/container-task-orchestrator.js +202 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/container-task-orchestrator.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/container-task-types.d.ts +52 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/container-task-types.js +2 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/container-task-types.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/utils/docker-check.d.ts +4 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/utils/docker-check.js +15 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/utils/docker-check.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/utils/docker-utils.d.ts +50 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/utils/docker-utils.js +358 -0
- package/dist/prompt/steps/step-ask-question/handlers/container-task/utils/docker-utils.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-compound-action.js +2 -2
- package/dist/prompt/steps/step-ask-question/handlers/handle-compound-action.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-explore-external-directories.js +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-explore-external-directories.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-genaicode-help.js +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-genaicode-help.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-generate-image.js +2 -2
- package/dist/prompt/steps/step-ask-question/handlers/handle-generate-image.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-perform-analysis.js +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-perform-analysis.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-run-container-task.d.ts +2 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-run-container-task.js +7 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-run-container-task.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.js +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.js.map +1 -1
- package/dist/prompt/steps/step-ask-question/handlers/handle-web-search.d.ts +1 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-web-search.js +85 -0
- package/dist/prompt/steps/step-ask-question/handlers/handle-web-search.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/step-ask-question-types.d.ts +1 -1
- package/dist/prompt/steps/step-ask-question/step-ask-question.d.ts +2 -0
- package/dist/prompt/steps/step-ask-question/step-ask-question.js +11 -1
- package/dist/prompt/steps/step-ask-question/step-ask-question.js.map +1 -1
- package/dist/prompt/steps/step-codegen-planning.js +1 -1
- package/dist/prompt/steps/step-codegen-planning.js.map +1 -1
- package/dist/prompt/steps/step-summarization.js +17 -10
- package/dist/prompt/steps/step-summarization.js.map +1 -1
- package/dist/prompt/systemprompt.js +3 -0
- package/dist/prompt/systemprompt.js.map +1 -1
- package/dist/utils/docker-utils.d.ts +37 -0
- package/dist/utils/docker-utils.js +258 -0
- package/dist/utils/docker-utils.js.map +1 -0
- package/dist/vite-genaicode/vite-genaicode-plugin.js +9 -2
- package/dist/vite-genaicode/vite-genaicode-plugin.js.map +1 -1
- package/package.json +12 -4
- package/dist/main/ui/frontend/assets/index-C1H0vVGm.js +0 -2256
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import tar from 'tar-stream';
|
|
4
|
+
import { putSystemMessage } from '../main/common/content-bus.js';
|
|
5
|
+
import { rcConfig } from '../main/config.js';
|
|
6
|
+
import { cacheContainerId, clearCachedContainerIds, getCachedContainerIds, removeCachedContainerId, } from '../files/cache-file.js';
|
|
7
|
+
/**
|
|
8
|
+
* Pull a Docker image
|
|
9
|
+
*/
|
|
10
|
+
export async function pullImage(docker, image) {
|
|
11
|
+
putSystemMessage(`🐳 Pulling Docker image: ${image}`);
|
|
12
|
+
return new Promise((resolve, reject) => {
|
|
13
|
+
docker
|
|
14
|
+
.pull(image)
|
|
15
|
+
.then((stream) => {
|
|
16
|
+
docker.modem.followProgress(stream, (err) => {
|
|
17
|
+
if (err) {
|
|
18
|
+
reject(err);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
putSystemMessage(`✅ Successfully pulled Docker image: ${image}`);
|
|
22
|
+
resolve();
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
})
|
|
26
|
+
.catch((error) => {
|
|
27
|
+
putSystemMessage(`❌ Failed to pull Docker image: ${error.message}`);
|
|
28
|
+
reject(error);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Create and start a Docker container
|
|
34
|
+
*/
|
|
35
|
+
export async function createAndStartContainer(docker, image) {
|
|
36
|
+
const container = await docker.createContainer({
|
|
37
|
+
Image: image,
|
|
38
|
+
Tty: true,
|
|
39
|
+
Cmd: ['/bin/sh'],
|
|
40
|
+
HostConfig: {
|
|
41
|
+
AutoRemove: true,
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
await container.start();
|
|
45
|
+
cacheContainerId(container.id);
|
|
46
|
+
putSystemMessage(`✅ Container started successfully (ID: ${container.id.substring(0, 12)})`);
|
|
47
|
+
return container;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Execute a command in a Docker container
|
|
51
|
+
*/
|
|
52
|
+
export async function executeCommand(container, command, stdin, workingDir) {
|
|
53
|
+
const exec = await container.exec({
|
|
54
|
+
Cmd: ['/bin/sh', '-c', command],
|
|
55
|
+
WorkingDir: workingDir,
|
|
56
|
+
AttachStdin: true,
|
|
57
|
+
Tty: false,
|
|
58
|
+
AttachStdout: true,
|
|
59
|
+
AttachStderr: true,
|
|
60
|
+
});
|
|
61
|
+
const stream = await exec.start({ hijack: true, stdin: true });
|
|
62
|
+
if (stdin) {
|
|
63
|
+
stream.write(stdin);
|
|
64
|
+
}
|
|
65
|
+
stream.end();
|
|
66
|
+
let output = '';
|
|
67
|
+
// Collect output from the stream
|
|
68
|
+
await new Promise((resolve) => {
|
|
69
|
+
stream.on('data', (chunk) => {
|
|
70
|
+
// Docker stream format: first 8 bytes are header, rest is data
|
|
71
|
+
const data = chunk.slice(8).toString();
|
|
72
|
+
output += data;
|
|
73
|
+
});
|
|
74
|
+
stream.on('end', () => {
|
|
75
|
+
resolve();
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
const inspect = await exec.inspect();
|
|
79
|
+
return { output: output.trim(), exitCode: inspect.ExitCode || 0 };
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Stop and clean up a Docker container
|
|
83
|
+
*/
|
|
84
|
+
export async function stopContainer(container) {
|
|
85
|
+
try {
|
|
86
|
+
await container.stop();
|
|
87
|
+
putSystemMessage('🛑 Container stopped successfully');
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
// Container might already be stopped, which is fine
|
|
91
|
+
putSystemMessage('🛑 Container cleanup completed');
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
removeCachedContainerId(container.id);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Clean up orphaned containers left over from previous runs.
|
|
99
|
+
*/
|
|
100
|
+
export async function cleanupOrphanedContainers(docker) {
|
|
101
|
+
const containerIds = getCachedContainerIds();
|
|
102
|
+
if (containerIds.length === 0) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
putSystemMessage(`🧹 Found ${containerIds.length} potentially orphaned containers. Cleaning up...`);
|
|
106
|
+
const cleanupPromises = containerIds.map(async (id) => {
|
|
107
|
+
try {
|
|
108
|
+
const container = docker.getContainer(id);
|
|
109
|
+
const inspectInfo = await container.inspect();
|
|
110
|
+
if (inspectInfo.State.Running) {
|
|
111
|
+
await container.stop();
|
|
112
|
+
putSystemMessage(`🛑 Stopped orphaned container ${id.substring(0, 12)}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
// Ignore errors (e.g., container not found)
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
await Promise.all(cleanupPromises);
|
|
120
|
+
clearCachedContainerIds();
|
|
121
|
+
putSystemMessage('✅ Orphaned container cleanup complete.');
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Validates that the host path is within the project root directory.
|
|
125
|
+
* @param hostPath The path on the host machine. Can be absolute or relative to the project root.
|
|
126
|
+
* @returns The absolute, validated path.
|
|
127
|
+
*/
|
|
128
|
+
function validateHostPath(hostPath) {
|
|
129
|
+
const absoluteHostPath = path.resolve(rcConfig.rootDir, hostPath);
|
|
130
|
+
if (!absoluteHostPath.startsWith(rcConfig.rootDir)) {
|
|
131
|
+
throw new Error(`Invalid host path: ${hostPath} is outside the project root directory.`);
|
|
132
|
+
}
|
|
133
|
+
return absoluteHostPath;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Recursively adds files and directories to a tar pack stream.
|
|
137
|
+
* @param pack The tar-stream pack instance.
|
|
138
|
+
* @param directoryPath The absolute path of the directory to add.
|
|
139
|
+
* @param relativeTo The base path for entries in the tar archive.
|
|
140
|
+
*/
|
|
141
|
+
function addDirectoryToPack(pack, directoryPath, relativeTo) {
|
|
142
|
+
const items = fs.readdirSync(directoryPath);
|
|
143
|
+
for (const item of items) {
|
|
144
|
+
const fullPath = path.join(directoryPath, item);
|
|
145
|
+
const tarPath = path.join(relativeTo, item);
|
|
146
|
+
const stats = fs.statSync(fullPath);
|
|
147
|
+
if (stats.isDirectory()) {
|
|
148
|
+
addDirectoryToPack(pack, fullPath, tarPath);
|
|
149
|
+
}
|
|
150
|
+
else if (stats.isFile()) {
|
|
151
|
+
pack.entry({ name: tarPath }, fs.readFileSync(fullPath));
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Copy a file or directory from the host to the container.
|
|
157
|
+
*/
|
|
158
|
+
export async function copyToContainer(container, hostPath, containerPath) {
|
|
159
|
+
try {
|
|
160
|
+
const absoluteHostPath = validateHostPath(hostPath);
|
|
161
|
+
putSystemMessage(`📦 Copying from host:${absoluteHostPath} to container:${containerPath}`);
|
|
162
|
+
const pack = tar.pack();
|
|
163
|
+
const stats = fs.statSync(absoluteHostPath);
|
|
164
|
+
if (stats.isDirectory()) {
|
|
165
|
+
addDirectoryToPack(pack, absoluteHostPath, '');
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
pack.entry({ name: path.basename(hostPath) }, fs.readFileSync(absoluteHostPath));
|
|
169
|
+
}
|
|
170
|
+
pack.finalize();
|
|
171
|
+
await container.putArchive(pack, { path: containerPath });
|
|
172
|
+
putSystemMessage(`✅ Successfully copied to container.`);
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
176
|
+
putSystemMessage(`❌ Failed to copy to container: ${errorMessage}`);
|
|
177
|
+
throw error;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Lists the files within a container archive without extracting them.
|
|
182
|
+
*/
|
|
183
|
+
export async function listFilesInContainerArchive(container, containerPath) {
|
|
184
|
+
const files = [];
|
|
185
|
+
try {
|
|
186
|
+
const stream = await container.getArchive({ path: containerPath });
|
|
187
|
+
const extract = tar.extract();
|
|
188
|
+
extract.on('entry', (header, stream, next) => {
|
|
189
|
+
// We only care about files, not directories
|
|
190
|
+
if (header.type === 'file') {
|
|
191
|
+
files.push(header.name);
|
|
192
|
+
}
|
|
193
|
+
stream.on('end', () => next());
|
|
194
|
+
stream.resume(); // Discard the stream's data
|
|
195
|
+
});
|
|
196
|
+
await new Promise((resolve, reject) => {
|
|
197
|
+
extract.on('finish', resolve);
|
|
198
|
+
extract.on('error', reject);
|
|
199
|
+
stream.pipe(extract);
|
|
200
|
+
});
|
|
201
|
+
return files;
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
// If the path doesn't exist, getArchive throws an error. Return an empty list.
|
|
205
|
+
return [];
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Copy a file or directory from the container to the host.
|
|
210
|
+
*/
|
|
211
|
+
export async function copyFromContainer(container, containerPath, hostPath) {
|
|
212
|
+
try {
|
|
213
|
+
const absoluteHostPath = validateHostPath(hostPath);
|
|
214
|
+
putSystemMessage(`📦 Copying from container:${containerPath} to host:${absoluteHostPath}`);
|
|
215
|
+
const stream = await container.getArchive({ path: containerPath });
|
|
216
|
+
const extract = tar.extract();
|
|
217
|
+
extract.on('entry', (header, stream, next) => {
|
|
218
|
+
const filePath = path.join(absoluteHostPath, header.name);
|
|
219
|
+
const dir = path.dirname(filePath);
|
|
220
|
+
if (header.type === 'directory') {
|
|
221
|
+
if (!fs.existsSync(filePath)) {
|
|
222
|
+
fs.mkdirSync(filePath, { recursive: true });
|
|
223
|
+
}
|
|
224
|
+
stream.on('end', () => next());
|
|
225
|
+
stream.resume();
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
// Ensure directory exists for the file
|
|
229
|
+
if (!fs.existsSync(dir)) {
|
|
230
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
231
|
+
}
|
|
232
|
+
const writeStream = fs.createWriteStream(filePath);
|
|
233
|
+
stream.pipe(writeStream);
|
|
234
|
+
// Only call next() after the file has been fully written
|
|
235
|
+
writeStream.on('finish', () => next());
|
|
236
|
+
writeStream.on('error', (err) => {
|
|
237
|
+
console.error(`Error writing file ${filePath}:`, err);
|
|
238
|
+
next(err); // Pass error to tar-stream
|
|
239
|
+
});
|
|
240
|
+
stream.on('error', (err) => {
|
|
241
|
+
console.error(`Error in tar stream for ${filePath}:`, err);
|
|
242
|
+
next(err); // Pass error to tar-stream
|
|
243
|
+
});
|
|
244
|
+
});
|
|
245
|
+
await new Promise((resolve, reject) => {
|
|
246
|
+
extract.on('finish', resolve);
|
|
247
|
+
extract.on('error', reject);
|
|
248
|
+
stream.pipe(extract);
|
|
249
|
+
});
|
|
250
|
+
putSystemMessage(`✅ Successfully copied from container.`);
|
|
251
|
+
}
|
|
252
|
+
catch (error) {
|
|
253
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
254
|
+
putSystemMessage(`❌ Failed to copy from container: ${errorMessage}`);
|
|
255
|
+
throw error;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=docker-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker-utils.js","sourceRoot":"","sources":["../../src/utils/docker-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,7 +23,7 @@ export default function viteGenaicode(options, config) {
|
|
|
23
23
|
ui: true,
|
|
24
24
|
uiPort: genaicodePort,
|
|
25
25
|
uiFrameAncestors: ['http://localhost:' + port],
|
|
26
|
-
aiService: stringToAiServiceType(serviceAutoDetect()),
|
|
26
|
+
aiService: options?.aiService ?? stringToAiServiceType(serviceAutoDetect()),
|
|
27
27
|
isDev: false,
|
|
28
28
|
allowFileCreate: true,
|
|
29
29
|
allowFileDelete: true,
|
|
@@ -39,7 +39,14 @@ export default function viteGenaicode(options, config) {
|
|
|
39
39
|
});
|
|
40
40
|
codegenService = codegen.service;
|
|
41
41
|
codegenServer = codegen.server;
|
|
42
|
-
|
|
42
|
+
const genaicodeConfig = await codegenService.getRcConfig();
|
|
43
|
+
if (typeof genaicodeConfig?.featuresEnabled?.appContext === 'undefined') {
|
|
44
|
+
genaicodeConfig.featuresEnabled = {
|
|
45
|
+
...genaicodeConfig.featuresEnabled,
|
|
46
|
+
appContext: true,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
appContextEnabled = genaicodeConfig.featuresEnabled?.appContext;
|
|
43
50
|
}
|
|
44
51
|
catch (error) {
|
|
45
52
|
console.error('Failed to start GenAIcode UI:', error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite-genaicode-plugin.js","sourceRoot":"","sources":["../../src/vite-genaicode/vite-genaicode-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAI/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI1D,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B,MAAM,CAAC,OAAO,UAAU,aAAa,CACnC,OAAiC,EACjC,MAAsD;IAEtD,IAAI,cAAuB,CAAC;IAC5B,IAAI,aAAqB,CAAC;IAC1B,MAAM,aAAa,GAAG,MAAM,EAAE,aAAa,IAAI,cAAc,CAAC;IAC9D,IAAI,iBAAsC,CAAC;IAE3C,KAAK,UAAU,KAAK,CAAC,IAAY;QAC/B,IAAI,CAAC;YACH,sCAAsC;YACtC,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC;gBAC3C,MAAM,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAC3C,CAAC;YAED,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;YAElE,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YAEhD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC;gBACjC,EAAE,EAAE,IAAI;gBACR,MAAM,EAAE,aAAa;gBACrB,gBAAgB,EAAE,CAAC,mBAAmB,GAAG,IAAI,CAAC;gBAC9C,SAAS,EAAE,qBAAqB,CAAC,iBAAiB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"vite-genaicode-plugin.js","sourceRoot":"","sources":["../../src/vite-genaicode/vite-genaicode-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAI/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI1D,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B,MAAM,CAAC,OAAO,UAAU,aAAa,CACnC,OAAiC,EACjC,MAAsD;IAEtD,IAAI,cAAuB,CAAC;IAC5B,IAAI,aAAqB,CAAC;IAC1B,MAAM,aAAa,GAAG,MAAM,EAAE,aAAa,IAAI,cAAc,CAAC;IAC9D,IAAI,iBAAsC,CAAC;IAE3C,KAAK,UAAU,KAAK,CAAC,IAAY;QAC/B,IAAI,CAAC;YACH,sCAAsC;YACtC,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC;gBAC3C,MAAM,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAC3C,CAAC;YAED,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;YAElE,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YAEhD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC;gBACjC,EAAE,EAAE,IAAI;gBACR,MAAM,EAAE,aAAa;gBACrB,gBAAgB,EAAE,CAAC,mBAAmB,GAAG,IAAI,CAAC;gBAC9C,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,qBAAqB,CAAC,iBAAiB,EAAE,CAAC;gBAC3E,KAAK,EAAE,KAAK;gBAEZ,eAAe,EAAE,IAAI;gBACrB,eAAe,EAAE,IAAI;gBACrB,oBAAoB,EAAE,IAAI;gBAC1B,aAAa,EAAE,IAAI;gBACnB,MAAM,EAAE,IAAI;gBAEZ,WAAW,EAAE,GAAG;gBAChB,mBAAmB,EAAE,IAAI;gBACzB,WAAW,EAAE,IAAI;gBACjB,cAAc,EAAE,IAAI;gBAEpB,0BAA0B,EAAE,IAAI;gBAEhC,GAAG,OAAO;aACX,CAAC,CAAC;YAEH,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;YACjC,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;YAE/B,MAAM,eAAe,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE,CAAC;YAE3D,IAAI,OAAO,eAAe,EAAE,eAAe,EAAE,UAAU,KAAK,WAAW,EAAE,CAAC;gBACxE,eAAe,CAAC,eAAe,GAAG;oBAChC,GAAG,eAAe,CAAC,eAAe;oBAClC,UAAU,EAAE,IAAI;iBACjB,CAAC;YACJ,CAAC;YAED,iBAAiB,GAAG,eAAe,CAAC,eAAe,EAAE,UAAU,CAAC;QAClE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;YACtD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,eAAe,GAAG,oBAAoB,CAAC;IAE7C,OAAO;QACL,IAAI,EAAE,gBAAgB;QAEtB,eAAe,CAAC,MAAqB;YACnC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;gBACxC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAW,CAAC,OAAO,EAAiB,CAAC;gBAC5D,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBAClC,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;oBAC1D,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBAClC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;gBACrC,aAAa,CAAC,KAAK,EAAE,CAAC;YACxB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,kBAAkB,CAAC,IAAY;YAC7B,OAAO,IAAI,CAAC,OAAO,CACjB,SAAS,EACT;;yBAEiB,aAAa;IAElC,iBAAiB;gBACf,CAAC,CAAC,yBAAyB,cAAc,CAAC,QAAQ,EAAE;8CACZ;gBACxC,CAAC,CAAC,EACN;;UAEQ,CACH,CAAC;QACJ,CAAC;QAED,SAAS,CAAC,EAAU;YAClB,IAAI,EAAE,KAAK,eAAe,EAAE,CAAC;gBAC3B,OAAO,SAAS,GAAG,6BAA6B,CAAC;YACnD,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "genaicode",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"author": "Grzegorz Tańczyk",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -45,7 +45,8 @@
|
|
|
45
45
|
"interactive-cli": "node ./bin/genaicode.cjs --interactive",
|
|
46
46
|
"ui": "node ./bin/genaicode.cjs --ui",
|
|
47
47
|
"lint": "eslint . --ext js,ts,tsx --report-unused-disable-directives --max-warnings 0",
|
|
48
|
-
"test": "vitest --config vitest.unit.config.ts",
|
|
48
|
+
"test:watch": "vitest --config vitest.unit.config.ts",
|
|
49
|
+
"test": "vitest --config vitest.unit.config.ts --run",
|
|
49
50
|
"test:ci": "vitest run --config vitest.unit.config.ts --reporter=json",
|
|
50
51
|
"test:e2e": "vitest --config vitest.e2e.config.ts",
|
|
51
52
|
"test:eval": "vitest --config vitest.eval.config.ts",
|
|
@@ -57,12 +58,16 @@
|
|
|
57
58
|
"prepublishOnly": "npm run build"
|
|
58
59
|
},
|
|
59
60
|
"devDependencies": {
|
|
61
|
+
"@inquirer/type": "^1.5.5",
|
|
60
62
|
"@types/cors": "^2.8.13",
|
|
63
|
+
"@types/dockerode": "^3.3.42",
|
|
61
64
|
"@types/express": "^4.17.21",
|
|
62
65
|
"@types/helmet": "^4.0.0",
|
|
66
|
+
"@types/mock-fs": "^4.13.4",
|
|
63
67
|
"@types/multer": "^1.4.12",
|
|
64
68
|
"@types/react": "^18.3.5",
|
|
65
69
|
"@types/react-dom": "^18.3.0",
|
|
70
|
+
"@types/tar-stream": "^3.1.4",
|
|
66
71
|
"@types/xml2js": "^0.4.14",
|
|
67
72
|
"@typescript-eslint/eslint-plugin": "^7.17.0",
|
|
68
73
|
"@uiw/react-json-view": "^2.0.0-alpha.30",
|
|
@@ -76,6 +81,7 @@
|
|
|
76
81
|
"husky": "^9.1.1",
|
|
77
82
|
"lint-staged": "^15.2.7",
|
|
78
83
|
"madge": "^8.0.0",
|
|
84
|
+
"mock-fs": "^5.5.0",
|
|
79
85
|
"prettier": "^3.1.0",
|
|
80
86
|
"puppeteer": "^22.15.0",
|
|
81
87
|
"react": "^18.3.1",
|
|
@@ -97,13 +103,14 @@
|
|
|
97
103
|
"@google-cloud/vertexai": "^1.9.2",
|
|
98
104
|
"@google/genai": "^0.10.0",
|
|
99
105
|
"@imgly/background-removal-node": "^1.4.5",
|
|
100
|
-
"@inquirer/prompts": "^
|
|
106
|
+
"@inquirer/prompts": "^7.8.4",
|
|
101
107
|
"@types/diff": "^5.2.1",
|
|
102
108
|
"@types/mime-types": "^2.1.4",
|
|
103
109
|
"@types/node": "^18.0.0",
|
|
104
110
|
"@types/styled-components": "^5.1.34",
|
|
105
111
|
"cors": "^2.8.5",
|
|
106
112
|
"diff": "^5.2.0",
|
|
113
|
+
"dockerode": "^4.0.7",
|
|
107
114
|
"express": "^4.21.2",
|
|
108
115
|
"find-cache-dir": "^5.0.0",
|
|
109
116
|
"glob-regex": "^0.3.2",
|
|
@@ -113,10 +120,11 @@
|
|
|
113
120
|
"jsonschema": "^1.4.1",
|
|
114
121
|
"mime-types": "^2.1.35",
|
|
115
122
|
"multer": "^2.0.2",
|
|
116
|
-
"openai": "^
|
|
123
|
+
"openai": "^5.16.0",
|
|
117
124
|
"please-upgrade-node": "^3.2.0",
|
|
118
125
|
"sharp": "^0.33.4",
|
|
119
126
|
"simple-git": "^3.27.0",
|
|
127
|
+
"tar-stream": "^3.1.7",
|
|
120
128
|
"xml2js": "^0.6.2"
|
|
121
129
|
},
|
|
122
130
|
"lint-staged": {
|