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.
Files changed (210) hide show
  1. package/README.md +3 -9
  2. package/dist/ai-service/ai-studio.d.ts +18 -1
  3. package/dist/ai-service/ai-studio.js +92 -21
  4. package/dist/ai-service/ai-studio.js.map +1 -1
  5. package/dist/ai-service/anthropic.js +59 -25
  6. package/dist/ai-service/anthropic.js.map +1 -1
  7. package/dist/ai-service/common-types.d.ts +8 -3
  8. package/dist/ai-service/common.d.ts +5 -1
  9. package/dist/ai-service/common.js +9 -0
  10. package/dist/ai-service/common.js.map +1 -1
  11. package/dist/ai-service/dall-e.js +1 -0
  12. package/dist/ai-service/dall-e.js.map +1 -1
  13. package/dist/ai-service/github-models.d.ts +13 -0
  14. package/dist/ai-service/github-models.js +51 -0
  15. package/dist/ai-service/github-models.js.map +1 -0
  16. package/dist/ai-service/local-llm.js +2 -1
  17. package/dist/ai-service/local-llm.js.map +1 -1
  18. package/dist/ai-service/openai-responses.d.ts +9 -0
  19. package/dist/ai-service/openai-responses.js +286 -0
  20. package/dist/ai-service/openai-responses.js.map +1 -0
  21. package/dist/ai-service/openai.js +22 -10
  22. package/dist/ai-service/openai.js.map +1 -1
  23. package/dist/ai-service/service-configurations-types.d.ts +7 -7
  24. package/dist/ai-service/service-configurations.d.ts +1 -0
  25. package/dist/ai-service/service-configurations.js +41 -36
  26. package/dist/ai-service/service-configurations.js.map +1 -1
  27. package/dist/ai-service/vertex-ai-claude.js +2 -2
  28. package/dist/ai-service/vertex-ai-claude.js.map +1 -1
  29. package/dist/ai-service/vertex-ai.d.ts +1 -0
  30. package/dist/ai-service/vertex-ai.js +4 -332
  31. package/dist/ai-service/vertex-ai.js.map +1 -1
  32. package/dist/cli/cli-options.js +1 -1
  33. package/dist/cli/cli-options.js.map +1 -1
  34. package/dist/cli/validate-cli-params.js +1 -1
  35. package/dist/cli/validate-cli-params.js.map +1 -1
  36. package/dist/files/cache-file.d.ts +4 -0
  37. package/dist/files/cache-file.js +21 -0
  38. package/dist/files/cache-file.js.map +1 -1
  39. package/dist/files/find-files.d.ts +1 -0
  40. package/dist/files/find-files.js +4 -1
  41. package/dist/files/find-files.js.map +1 -1
  42. package/dist/files/source-code-utils.js +1 -1
  43. package/dist/files/summary-cache.d.ts +1 -1
  44. package/dist/files/summary-cache.js +1 -1
  45. package/dist/files/summary-cache.js.map +1 -1
  46. package/dist/main/codegen-utils.d.ts +6 -1
  47. package/dist/main/codegen-utils.js +21 -2
  48. package/dist/main/codegen-utils.js.map +1 -1
  49. package/dist/main/codegen.js +2 -2
  50. package/dist/main/codegen.js.map +1 -1
  51. package/dist/main/common/content-bus-types.d.ts +17 -1
  52. package/dist/main/common/content-bus.d.ts +3 -1
  53. package/dist/main/common/content-bus.js +23 -1
  54. package/dist/main/common/content-bus.js.map +1 -1
  55. package/dist/main/common/user-actions.d.ts +3 -0
  56. package/dist/main/common/user-actions.js +10 -0
  57. package/dist/main/common/user-actions.js.map +1 -1
  58. package/dist/main/config-lib.js +3 -2
  59. package/dist/main/config-lib.js.map +1 -1
  60. package/dist/main/config-types.d.ts +4 -0
  61. package/dist/main/config.js +4 -0
  62. package/dist/main/config.js.map +1 -1
  63. package/dist/main/interactive/select-ai-service.js +0 -1
  64. package/dist/main/interactive/select-ai-service.js.map +1 -1
  65. package/dist/main/interactive/user-action-handlers.js +7 -2
  66. package/dist/main/interactive/user-action-handlers.js.map +1 -1
  67. package/dist/main/knowledge/knowledge-store.d.ts +6 -0
  68. package/dist/main/knowledge/knowledge-store.js +128 -0
  69. package/dist/main/knowledge/knowledge-store.js.map +1 -0
  70. package/dist/main/knowledge/types.d.ts +20 -0
  71. package/dist/main/knowledge/types.js +2 -0
  72. package/dist/main/knowledge/types.js.map +1 -0
  73. package/dist/main/ui/backend/endpoints/interrupt-execution-endpoint.js +17 -3
  74. package/dist/main/ui/backend/endpoints/interrupt-execution-endpoint.js.map +1 -1
  75. package/dist/main/ui/common/api-types.d.ts +67 -4
  76. package/dist/main/ui/common/api-types.js +12 -1
  77. package/dist/main/ui/common/api-types.js.map +1 -1
  78. package/dist/main/ui/frontend/assets/index-BbIYZZub.js +2635 -0
  79. package/dist/main/ui/frontend/index.html +1 -1
  80. package/dist/main/ui/user-action-handlers.js +7 -1
  81. package/dist/main/ui/user-action-handlers.js.map +1 -1
  82. package/dist/project-profiles/types.d.ts +4 -4
  83. package/dist/project-profiles/types.js +4 -4
  84. package/dist/project-profiles/types.js.map +1 -1
  85. package/dist/prompt/function-calling-validate.js +2 -1
  86. package/dist/prompt/function-calling-validate.js.map +1 -1
  87. package/dist/prompt/function-calling.js +4 -0
  88. package/dist/prompt/function-calling.js.map +1 -1
  89. package/dist/prompt/function-defs/ask-question.js +4 -0
  90. package/dist/prompt/function-defs/ask-question.js.map +1 -1
  91. package/dist/prompt/function-defs/container-task-commands.d.ts +10 -0
  92. package/dist/prompt/function-defs/container-task-commands.js +185 -0
  93. package/dist/prompt/function-defs/container-task-commands.js.map +1 -0
  94. package/dist/prompt/function-defs/run-container-task.d.ts +11 -0
  95. package/dist/prompt/function-defs/run-container-task.js +41 -0
  96. package/dist/prompt/function-defs/run-container-task.js.map +1 -0
  97. package/dist/prompt/function-defs/web-search.d.ts +9 -0
  98. package/dist/prompt/function-defs/web-search.js +16 -0
  99. package/dist/prompt/function-defs/web-search.js.map +1 -0
  100. package/dist/prompt/limits.js +1 -1
  101. package/dist/prompt/steps/step-ask-question/handlers/container-task/command-execution-loop.d.ts +7 -0
  102. package/dist/prompt/steps/step-ask-question/handlers/container-task/command-execution-loop.js +301 -0
  103. package/dist/prompt/steps/step-ask-question/handlers/container-task/command-execution-loop.js.map +1 -0
  104. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/check-context.d.ts +12 -0
  105. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/check-context.js +41 -0
  106. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/check-context.js.map +1 -0
  107. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/complete-task.d.ts +4 -0
  108. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/complete-task.js +49 -0
  109. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/complete-task.js.map +1 -0
  110. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/copy-from-container.d.ts +4 -0
  111. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/copy-from-container.js +190 -0
  112. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/copy-from-container.js.map +1 -0
  113. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/copy-to-container.d.ts +4 -0
  114. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/copy-to-container.js +139 -0
  115. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/copy-to-container.js.map +1 -0
  116. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/edit-file.d.ts +10 -0
  117. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/edit-file.js +93 -0
  118. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/edit-file.js.map +1 -0
  119. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/fail-task.d.ts +4 -0
  120. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/fail-task.js +72 -0
  121. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/fail-task.js.map +1 -0
  122. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/gain-knowledge.d.ts +10 -0
  123. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/gain-knowledge.js +125 -0
  124. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/gain-knowledge.js.map +1 -0
  125. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/interrupt-controller.d.ts +19 -0
  126. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/interrupt-controller.js +33 -0
  127. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/interrupt-controller.js.map +1 -0
  128. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/query-knowledge.d.ts +8 -0
  129. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/query-knowledge.js +85 -0
  130. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/query-knowledge.js.map +1 -0
  131. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/request-secret.d.ts +6 -0
  132. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/request-secret.js +122 -0
  133. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/request-secret.js.map +1 -0
  134. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/run-command.d.ts +7 -0
  135. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/run-command.js +146 -0
  136. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/run-command.js.map +1 -0
  137. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/send-message.d.ts +4 -0
  138. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/send-message.js +56 -0
  139. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/send-message.js.map +1 -0
  140. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/set-execution-plan.d.ts +4 -0
  141. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/set-execution-plan.js +56 -0
  142. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/set-execution-plan.js.map +1 -0
  143. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/update-execution-plan.d.ts +4 -0
  144. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/update-execution-plan.js +39 -0
  145. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/update-execution-plan.js.map +1 -0
  146. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/view-file.d.ts +10 -0
  147. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/view-file.js +95 -0
  148. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/view-file.js.map +1 -0
  149. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/web-search.d.ts +2 -0
  150. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/web-search.js +96 -0
  151. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/web-search.js.map +1 -0
  152. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/wrap-context.d.ts +4 -0
  153. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/wrap-context.js +123 -0
  154. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/wrap-context.js.map +1 -0
  155. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-command-handlers.d.ts +34 -0
  156. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-command-handlers.js +332 -0
  157. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-command-handlers.js.map +1 -0
  158. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-commands-registry.d.ts +11 -0
  159. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-commands-registry.js +50 -0
  160. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-commands-registry.js.map +1 -0
  161. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-commands-types.d.ts +28 -0
  162. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-commands-types.js +2 -0
  163. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-commands-types.js.map +1 -0
  164. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-task-orchestrator.d.ts +2 -0
  165. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-task-orchestrator.js +202 -0
  166. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-task-orchestrator.js.map +1 -0
  167. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-task-types.d.ts +52 -0
  168. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-task-types.js +2 -0
  169. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-task-types.js.map +1 -0
  170. package/dist/prompt/steps/step-ask-question/handlers/container-task/utils/docker-check.d.ts +4 -0
  171. package/dist/prompt/steps/step-ask-question/handlers/container-task/utils/docker-check.js +15 -0
  172. package/dist/prompt/steps/step-ask-question/handlers/container-task/utils/docker-check.js.map +1 -0
  173. package/dist/prompt/steps/step-ask-question/handlers/container-task/utils/docker-utils.d.ts +50 -0
  174. package/dist/prompt/steps/step-ask-question/handlers/container-task/utils/docker-utils.js +358 -0
  175. package/dist/prompt/steps/step-ask-question/handlers/container-task/utils/docker-utils.js.map +1 -0
  176. package/dist/prompt/steps/step-ask-question/handlers/handle-compound-action.js +2 -2
  177. package/dist/prompt/steps/step-ask-question/handlers/handle-compound-action.js.map +1 -1
  178. package/dist/prompt/steps/step-ask-question/handlers/handle-explore-external-directories.js +1 -1
  179. package/dist/prompt/steps/step-ask-question/handlers/handle-explore-external-directories.js.map +1 -1
  180. package/dist/prompt/steps/step-ask-question/handlers/handle-genaicode-help.js +1 -1
  181. package/dist/prompt/steps/step-ask-question/handlers/handle-genaicode-help.js.map +1 -1
  182. package/dist/prompt/steps/step-ask-question/handlers/handle-generate-image.js +2 -2
  183. package/dist/prompt/steps/step-ask-question/handlers/handle-generate-image.js.map +1 -1
  184. package/dist/prompt/steps/step-ask-question/handlers/handle-perform-analysis.js +1 -1
  185. package/dist/prompt/steps/step-ask-question/handlers/handle-perform-analysis.js.map +1 -1
  186. package/dist/prompt/steps/step-ask-question/handlers/handle-run-container-task.d.ts +2 -0
  187. package/dist/prompt/steps/step-ask-question/handlers/handle-run-container-task.js +7 -0
  188. package/dist/prompt/steps/step-ask-question/handlers/handle-run-container-task.js.map +1 -0
  189. package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.js +1 -1
  190. package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.js.map +1 -1
  191. package/dist/prompt/steps/step-ask-question/handlers/handle-web-search.d.ts +1 -0
  192. package/dist/prompt/steps/step-ask-question/handlers/handle-web-search.js +85 -0
  193. package/dist/prompt/steps/step-ask-question/handlers/handle-web-search.js.map +1 -0
  194. package/dist/prompt/steps/step-ask-question/step-ask-question-types.d.ts +1 -1
  195. package/dist/prompt/steps/step-ask-question/step-ask-question.d.ts +2 -0
  196. package/dist/prompt/steps/step-ask-question/step-ask-question.js +11 -1
  197. package/dist/prompt/steps/step-ask-question/step-ask-question.js.map +1 -1
  198. package/dist/prompt/steps/step-codegen-planning.js +1 -1
  199. package/dist/prompt/steps/step-codegen-planning.js.map +1 -1
  200. package/dist/prompt/steps/step-summarization.js +17 -10
  201. package/dist/prompt/steps/step-summarization.js.map +1 -1
  202. package/dist/prompt/systemprompt.js +3 -0
  203. package/dist/prompt/systemprompt.js.map +1 -1
  204. package/dist/utils/docker-utils.d.ts +37 -0
  205. package/dist/utils/docker-utils.js +258 -0
  206. package/dist/utils/docker-utils.js.map +1 -0
  207. package/dist/vite-genaicode/vite-genaicode-plugin.js +9 -2
  208. package/dist/vite-genaicode/vite-genaicode-plugin.js.map +1 -1
  209. package/package.json +12 -4
  210. 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
- appContextEnabled = (await codegenService.getRcConfig()).featuresEnabled?.appContext;
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":"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"}
1
+ {"version":3,"file":"vite-genaicode-plugin.js","sourceRoot":"","sources":["../../src/vite-genaicode/vite-genaicode-plugin.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "genaicode",
3
- "version": "0.11.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": "^5.3.8",
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": "^4.77.0",
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": {