genaicode 0.14.1 → 0.15.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 (294) hide show
  1. package/dist/ai-service/ai-studio.d.ts +2 -18
  2. package/dist/ai-service/ai-studio.js +88 -32
  3. package/dist/ai-service/ai-studio.js.map +1 -1
  4. package/dist/ai-service/anthropic.js +87 -45
  5. package/dist/ai-service/anthropic.js.map +1 -1
  6. package/dist/ai-service/common-types.d.ts +36 -3
  7. package/dist/ai-service/common-types.js +0 -2
  8. package/dist/ai-service/common-types.js.map +1 -1
  9. package/dist/ai-service/common.js +0 -2
  10. package/dist/ai-service/common.js.map +1 -1
  11. package/dist/ai-service/files-api.d.ts +33 -0
  12. package/dist/ai-service/files-api.js +239 -0
  13. package/dist/ai-service/files-api.js.map +1 -0
  14. package/dist/ai-service/github-models.js +0 -2
  15. package/dist/ai-service/github-models.js.map +1 -1
  16. package/dist/ai-service/local-llm.js +0 -4
  17. package/dist/ai-service/local-llm.js.map +1 -1
  18. package/dist/ai-service/openai-responses.js +62 -16
  19. package/dist/ai-service/openai-responses.js.map +1 -1
  20. package/dist/ai-service/openai.js +157 -54
  21. package/dist/ai-service/openai.js.map +1 -1
  22. package/dist/ai-service/service-configurations-types.d.ts +0 -1
  23. package/dist/ai-service/service-configurations.js +19 -20
  24. package/dist/ai-service/service-configurations.js.map +1 -1
  25. package/dist/ai-service/vertex-ai.js +2 -1
  26. package/dist/ai-service/vertex-ai.js.map +1 -1
  27. package/dist/cli/cli-params.js +2 -2
  28. package/dist/cli/cli-params.js.map +1 -1
  29. package/dist/files/file-id-utils.js +1 -1
  30. package/dist/files/file-id-utils.js.map +1 -1
  31. package/dist/files/read-files.js +10 -6
  32. package/dist/files/read-files.js.map +1 -1
  33. package/dist/files/source-code-types.d.ts +9 -5
  34. package/dist/files/source-code-utils.d.ts +2 -1
  35. package/dist/files/source-code-utils.js +30 -12
  36. package/dist/files/source-code-utils.js.map +1 -1
  37. package/dist/files/summary-cache.d.ts +6 -4
  38. package/dist/files/summary-cache.js +3 -2
  39. package/dist/files/summary-cache.js.map +1 -1
  40. package/dist/index.d.ts +1 -1
  41. package/dist/index.js +1 -1
  42. package/dist/index.js.map +1 -1
  43. package/dist/main/codegen-types.d.ts +2 -2
  44. package/dist/main/common/content-bus-types.d.ts +14 -0
  45. package/dist/main/common/content-bus.d.ts +3 -1
  46. package/dist/main/common/content-bus.js +28 -3
  47. package/dist/main/common/content-bus.js.map +1 -1
  48. package/dist/main/common/user-actions.d.ts +1 -1
  49. package/dist/main/config-types.d.ts +0 -3
  50. package/dist/main/config-types.js.map +1 -1
  51. package/dist/main/config.js +1 -1
  52. package/dist/main/config.js.map +1 -1
  53. package/dist/main/plugin-loader.d.ts +1 -1
  54. package/dist/main/ui/backend/endpoints/compress-context-endpoint.d.ts +1 -0
  55. package/dist/main/ui/backend/endpoints/compress-context-endpoint.js +18 -0
  56. package/dist/main/ui/backend/endpoints/compress-context-endpoint.js.map +1 -0
  57. package/dist/main/ui/backend/endpoints/config-endpoint.js +1 -1
  58. package/dist/main/ui/backend/endpoints/config-endpoint.js.map +1 -1
  59. package/dist/main/ui/backend/endpoints/context-endpoint.js +102 -0
  60. package/dist/main/ui/backend/endpoints/context-endpoint.js.map +1 -1
  61. package/dist/main/ui/backend/endpoints/edit-message-endpoint.js +9 -6
  62. package/dist/main/ui/backend/endpoints/edit-message-endpoint.js.map +1 -1
  63. package/dist/main/ui/backend/endpoints/index.d.ts +1 -0
  64. package/dist/main/ui/backend/endpoints/index.js +1 -0
  65. package/dist/main/ui/backend/endpoints/index.js.map +1 -1
  66. package/dist/main/ui/backend/endpoints/interrupt-execution-endpoint.js +1 -1
  67. package/dist/main/ui/backend/endpoints/interrupt-execution-endpoint.js.map +1 -1
  68. package/dist/main/ui/backend/service.d.ts +68 -7
  69. package/dist/main/ui/backend/service.js +301 -28
  70. package/dist/main/ui/backend/service.js.map +1 -1
  71. package/dist/main/ui/codegen-ui.js +2 -2
  72. package/dist/main/ui/codegen-ui.js.map +1 -1
  73. package/dist/main/ui/common/api-types.d.ts +6 -2
  74. package/dist/main/ui/common/api-types.js.map +1 -1
  75. package/dist/main/ui/frontend/assets/index-DAM_kJhM.js +3445 -0
  76. package/dist/main/ui/frontend/index.html +1 -1
  77. package/dist/prompt/context-utils.d.ts +7 -0
  78. package/dist/prompt/context-utils.js +33 -0
  79. package/dist/prompt/context-utils.js.map +1 -0
  80. package/dist/prompt/function-calling.js +4 -5
  81. package/dist/prompt/function-calling.js.map +1 -1
  82. package/dist/prompt/function-defs/code-execution.d.ts +7 -0
  83. package/dist/prompt/function-defs/code-execution.js +27 -0
  84. package/dist/prompt/function-defs/code-execution.js.map +1 -0
  85. package/dist/prompt/function-defs/conversation-graph.d.ts +1 -1
  86. package/dist/prompt/function-defs/conversation-graph.js +1 -1
  87. package/dist/prompt/function-defs/conversation-graph.js.map +1 -1
  88. package/dist/prompt/function-defs/get-source-code.js +3 -3
  89. package/dist/prompt/function-defs/iterate.d.ts +20 -0
  90. package/dist/prompt/function-defs/iterate.js +373 -0
  91. package/dist/prompt/function-defs/iterate.js.map +1 -0
  92. package/dist/prompt/function-defs/set-summaries.js +6 -2
  93. package/dist/prompt/function-defs/set-summaries.js.map +1 -1
  94. package/dist/prompt/limits.js +1 -1
  95. package/dist/prompt/prompt-service.js +13 -10
  96. package/dist/prompt/prompt-service.js.map +1 -1
  97. package/dist/prompt/source-code-optimize.d.ts +2 -0
  98. package/dist/prompt/source-code-optimize.js +27 -0
  99. package/dist/prompt/source-code-optimize.js.map +1 -0
  100. package/dist/prompt/steps/step-ask-question/step-ask-question.js +7 -1
  101. package/dist/prompt/steps/step-ask-question/step-ask-question.js.map +1 -1
  102. package/dist/prompt/steps/step-codegen-planning.js +6 -2
  103. package/dist/prompt/steps/step-codegen-planning.js.map +1 -1
  104. package/dist/prompt/steps/step-context-compression.js +5 -0
  105. package/dist/prompt/steps/step-context-compression.js.map +1 -1
  106. package/dist/prompt/steps/step-context-optimization.js +6 -3
  107. package/dist/prompt/steps/step-context-optimization.js.map +1 -1
  108. package/dist/prompt/steps/step-iterate/handlers/container-task/command-execution-loop.d.ts +7 -0
  109. package/dist/prompt/steps/step-iterate/handlers/container-task/command-execution-loop.js +301 -0
  110. package/dist/prompt/steps/step-iterate/handlers/container-task/command-execution-loop.js.map +1 -0
  111. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/complete-task.d.ts +4 -0
  112. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/complete-task.js +49 -0
  113. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/complete-task.js.map +1 -0
  114. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/copy-from-container.d.ts +4 -0
  115. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/copy-from-container.js +190 -0
  116. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/copy-from-container.js.map +1 -0
  117. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/copy-to-container.d.ts +4 -0
  118. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/copy-to-container.js +139 -0
  119. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/copy-to-container.js.map +1 -0
  120. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/edit-file.d.ts +10 -0
  121. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/edit-file.js +93 -0
  122. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/edit-file.js.map +1 -0
  123. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/fail-task.d.ts +4 -0
  124. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/fail-task.js +72 -0
  125. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/fail-task.js.map +1 -0
  126. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/gain-knowledge.d.ts +10 -0
  127. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/gain-knowledge.js +125 -0
  128. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/gain-knowledge.js.map +1 -0
  129. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/interrupt-controller.d.ts +19 -0
  130. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/interrupt-controller.js +33 -0
  131. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/interrupt-controller.js.map +1 -0
  132. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/query-knowledge.d.ts +8 -0
  133. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/query-knowledge.js +85 -0
  134. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/query-knowledge.js.map +1 -0
  135. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/request-secret.d.ts +6 -0
  136. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/request-secret.js +122 -0
  137. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/request-secret.js.map +1 -0
  138. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/run-command.d.ts +7 -0
  139. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/run-command.js +146 -0
  140. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/run-command.js.map +1 -0
  141. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/send-message.d.ts +4 -0
  142. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/send-message.js +56 -0
  143. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/send-message.js.map +1 -0
  144. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/set-execution-plan.d.ts +4 -0
  145. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/set-execution-plan.js +56 -0
  146. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/set-execution-plan.js.map +1 -0
  147. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/update-execution-plan.d.ts +4 -0
  148. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/update-execution-plan.js +39 -0
  149. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/update-execution-plan.js.map +1 -0
  150. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/view-file.d.ts +10 -0
  151. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/view-file.js +95 -0
  152. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/view-file.js.map +1 -0
  153. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/web-search.d.ts +2 -0
  154. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/web-search.js +96 -0
  155. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/web-search.js.map +1 -0
  156. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/wrap-context.d.ts +4 -0
  157. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/wrap-context.js +123 -0
  158. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/wrap-context.js.map +1 -0
  159. package/dist/prompt/steps/step-iterate/handlers/container-task/container-commands-registry.d.ts +11 -0
  160. package/dist/prompt/steps/step-iterate/handlers/container-task/container-commands-registry.js +50 -0
  161. package/dist/prompt/steps/step-iterate/handlers/container-task/container-commands-registry.js.map +1 -0
  162. package/dist/prompt/steps/step-iterate/handlers/container-task/container-commands-types.d.ts +28 -0
  163. package/dist/prompt/steps/step-iterate/handlers/container-task/container-commands-types.js +2 -0
  164. package/dist/prompt/steps/step-iterate/handlers/container-task/container-commands-types.js.map +1 -0
  165. package/dist/prompt/steps/step-iterate/handlers/container-task/container-task-orchestrator.d.ts +2 -0
  166. package/dist/prompt/steps/step-iterate/handlers/container-task/container-task-orchestrator.js +202 -0
  167. package/dist/prompt/steps/step-iterate/handlers/container-task/container-task-orchestrator.js.map +1 -0
  168. package/dist/prompt/steps/step-iterate/handlers/container-task/utils/docker-check.d.ts +4 -0
  169. package/dist/prompt/steps/step-iterate/handlers/container-task/utils/docker-check.js +15 -0
  170. package/dist/prompt/steps/step-iterate/handlers/container-task/utils/docker-check.js.map +1 -0
  171. package/dist/prompt/steps/step-iterate/handlers/container-task/utils/docker-utils.d.ts +50 -0
  172. package/dist/prompt/steps/step-iterate/handlers/container-task/utils/docker-utils.js +358 -0
  173. package/dist/prompt/steps/step-iterate/handlers/container-task/utils/docker-utils.js.map +1 -0
  174. package/dist/prompt/steps/step-iterate/handlers/file-request-utils.d.ts +47 -0
  175. package/dist/prompt/steps/step-iterate/handlers/file-request-utils.js +114 -0
  176. package/dist/prompt/steps/step-iterate/handlers/file-request-utils.js.map +1 -0
  177. package/dist/prompt/steps/step-iterate/handlers/handle-code-execution.d.ts +1 -0
  178. package/dist/prompt/steps/step-iterate/handlers/handle-code-execution.js +133 -0
  179. package/dist/prompt/steps/step-iterate/handlers/handle-code-execution.js.map +1 -0
  180. package/dist/prompt/steps/step-iterate/handlers/handle-code-generation.d.ts +4 -0
  181. package/dist/prompt/steps/step-iterate/handlers/handle-code-generation.js +177 -0
  182. package/dist/prompt/steps/step-iterate/handlers/handle-code-generation.js.map +1 -0
  183. package/dist/prompt/steps/step-iterate/handlers/handle-compound-action.d.ts +20 -0
  184. package/dist/prompt/steps/step-iterate/handlers/handle-compound-action.js +305 -0
  185. package/dist/prompt/steps/step-iterate/handlers/handle-compound-action.js.map +1 -0
  186. package/dist/prompt/steps/step-iterate/handlers/handle-confirm-code-generation.d.ts +2 -0
  187. package/dist/prompt/steps/step-iterate/handlers/handle-confirm-code-generation.js +40 -0
  188. package/dist/prompt/steps/step-iterate/handlers/handle-confirm-code-generation.js.map +1 -0
  189. package/dist/prompt/steps/step-iterate/handlers/handle-context-compression.d.ts +2 -0
  190. package/dist/prompt/steps/step-iterate/handlers/handle-context-compression.js +35 -0
  191. package/dist/prompt/steps/step-iterate/handlers/handle-context-compression.js.map +1 -0
  192. package/dist/prompt/steps/step-iterate/handlers/handle-context-optimization.d.ts +2 -0
  193. package/dist/prompt/steps/step-iterate/handlers/handle-context-optimization.js +34 -0
  194. package/dist/prompt/steps/step-iterate/handlers/handle-context-optimization.js.map +1 -0
  195. package/dist/prompt/steps/step-iterate/handlers/handle-conversation-graph.d.ts +11 -0
  196. package/dist/prompt/steps/step-iterate/handlers/handle-conversation-graph.js +503 -0
  197. package/dist/prompt/steps/step-iterate/handlers/handle-conversation-graph.js.map +1 -0
  198. package/dist/prompt/steps/step-iterate/handlers/handle-create-file.d.ts +2 -0
  199. package/dist/prompt/steps/step-iterate/handlers/handle-create-file.js +159 -0
  200. package/dist/prompt/steps/step-iterate/handlers/handle-create-file.js.map +1 -0
  201. package/dist/prompt/steps/step-iterate/handlers/handle-end-conversation.d.ts +2 -0
  202. package/dist/prompt/steps/step-iterate/handlers/handle-end-conversation.js +30 -0
  203. package/dist/prompt/steps/step-iterate/handlers/handle-end-conversation.js.map +1 -0
  204. package/dist/prompt/steps/step-iterate/handlers/handle-explore-external-directories.d.ts +2 -0
  205. package/dist/prompt/steps/step-iterate/handlers/handle-explore-external-directories.js +280 -0
  206. package/dist/prompt/steps/step-iterate/handlers/handle-explore-external-directories.js.map +1 -0
  207. package/dist/prompt/steps/step-iterate/handlers/handle-genaicode-help.d.ts +8 -0
  208. package/dist/prompt/steps/step-iterate/handlers/handle-genaicode-help.js +105 -0
  209. package/dist/prompt/steps/step-iterate/handlers/handle-genaicode-help.js.map +1 -0
  210. package/dist/prompt/steps/step-iterate/handlers/handle-generate-image.d.ts +2 -0
  211. package/dist/prompt/steps/step-iterate/handlers/handle-generate-image.js +110 -0
  212. package/dist/prompt/steps/step-iterate/handlers/handle-generate-image.js.map +1 -0
  213. package/dist/prompt/steps/step-iterate/handlers/handle-perform-analysis.d.ts +6 -0
  214. package/dist/prompt/steps/step-iterate/handlers/handle-perform-analysis.js +110 -0
  215. package/dist/prompt/steps/step-iterate/handlers/handle-perform-analysis.js.map +1 -0
  216. package/dist/prompt/steps/step-iterate/handlers/handle-project-command.d.ts +2 -0
  217. package/dist/prompt/steps/step-iterate/handlers/handle-project-command.js +280 -0
  218. package/dist/prompt/steps/step-iterate/handlers/handle-project-command.js.map +1 -0
  219. package/dist/prompt/steps/step-iterate/handlers/handle-pull-app-context.d.ts +9 -0
  220. package/dist/prompt/steps/step-iterate/handlers/handle-pull-app-context.js +94 -0
  221. package/dist/prompt/steps/step-iterate/handlers/handle-pull-app-context.js.map +1 -0
  222. package/dist/prompt/steps/step-iterate/handlers/handle-pull-console-logs.d.ts +2 -0
  223. package/dist/prompt/steps/step-iterate/handlers/handle-pull-console-logs.js +174 -0
  224. package/dist/prompt/steps/step-iterate/handlers/handle-pull-console-logs.js.map +1 -0
  225. package/dist/prompt/steps/step-iterate/handlers/handle-push-app-context.d.ts +9 -0
  226. package/dist/prompt/steps/step-iterate/handlers/handle-push-app-context.js +104 -0
  227. package/dist/prompt/steps/step-iterate/handlers/handle-push-app-context.js.map +1 -0
  228. package/dist/prompt/steps/step-iterate/handlers/handle-read-external-files.d.ts +2 -0
  229. package/dist/prompt/steps/step-iterate/handlers/handle-read-external-files.js +149 -0
  230. package/dist/prompt/steps/step-iterate/handlers/handle-read-external-files.js.map +1 -0
  231. package/dist/prompt/steps/step-iterate/handlers/handle-reasoning-inference.d.ts +7 -0
  232. package/dist/prompt/steps/step-iterate/handlers/handle-reasoning-inference.js +119 -0
  233. package/dist/prompt/steps/step-iterate/handlers/handle-reasoning-inference.js.map +1 -0
  234. package/dist/prompt/steps/step-iterate/handlers/handle-remove-files-from-context.d.ts +2 -0
  235. package/dist/prompt/steps/step-iterate/handlers/handle-remove-files-from-context.js +100 -0
  236. package/dist/prompt/steps/step-iterate/handlers/handle-remove-files-from-context.js.map +1 -0
  237. package/dist/prompt/steps/step-iterate/handlers/handle-request-files-content.d.ts +8 -0
  238. package/dist/prompt/steps/step-iterate/handlers/handle-request-files-content.js +146 -0
  239. package/dist/prompt/steps/step-iterate/handlers/handle-request-files-content.js.map +1 -0
  240. package/dist/prompt/steps/step-iterate/handlers/handle-request-files-fragments.d.ts +8 -0
  241. package/dist/prompt/steps/step-iterate/handlers/handle-request-files-fragments.js +197 -0
  242. package/dist/prompt/steps/step-iterate/handlers/handle-request-files-fragments.js.map +1 -0
  243. package/dist/prompt/steps/step-iterate/handlers/handle-request-git-context.d.ts +3 -0
  244. package/dist/prompt/steps/step-iterate/handlers/handle-request-git-context.js +251 -0
  245. package/dist/prompt/steps/step-iterate/handlers/handle-request-git-context.js.map +1 -0
  246. package/dist/prompt/steps/step-iterate/handlers/handle-request-permissions.d.ts +2 -0
  247. package/dist/prompt/steps/step-iterate/handlers/handle-request-permissions.js +83 -0
  248. package/dist/prompt/steps/step-iterate/handlers/handle-request-permissions.js.map +1 -0
  249. package/dist/prompt/steps/step-iterate/handlers/handle-run-bash-command.d.ts +2 -0
  250. package/dist/prompt/steps/step-iterate/handlers/handle-run-bash-command.js +185 -0
  251. package/dist/prompt/steps/step-iterate/handlers/handle-run-bash-command.js.map +1 -0
  252. package/dist/prompt/steps/step-iterate/handlers/handle-run-container-task.d.ts +2 -0
  253. package/dist/prompt/steps/step-iterate/handlers/handle-run-container-task.js +7 -0
  254. package/dist/prompt/steps/step-iterate/handlers/handle-run-container-task.js.map +1 -0
  255. package/dist/prompt/steps/step-iterate/handlers/handle-search-code.d.ts +2 -0
  256. package/dist/prompt/steps/step-iterate/handlers/handle-search-code.js +96 -0
  257. package/dist/prompt/steps/step-iterate/handlers/handle-search-code.js.map +1 -0
  258. package/dist/prompt/steps/step-iterate/handlers/handle-send-message.d.ts +2 -0
  259. package/dist/prompt/steps/step-iterate/handlers/handle-send-message.js +21 -0
  260. package/dist/prompt/steps/step-iterate/handlers/handle-send-message.js.map +1 -0
  261. package/dist/prompt/steps/step-iterate/handlers/handle-structured-question.d.ts +1 -0
  262. package/dist/prompt/steps/step-iterate/handlers/handle-structured-question.js +72 -0
  263. package/dist/prompt/steps/step-iterate/handlers/handle-structured-question.js.map +1 -0
  264. package/dist/prompt/steps/step-iterate/handlers/handle-update-file.d.ts +2 -0
  265. package/dist/prompt/steps/step-iterate/handlers/handle-update-file.js +161 -0
  266. package/dist/prompt/steps/step-iterate/handlers/handle-update-file.js.map +1 -0
  267. package/dist/prompt/steps/step-iterate/handlers/handle-web-search.d.ts +1 -0
  268. package/dist/prompt/steps/step-iterate/handlers/handle-web-search.js +85 -0
  269. package/dist/prompt/steps/step-iterate/handlers/handle-web-search.js.map +1 -0
  270. package/dist/prompt/steps/step-iterate/iterate-handler.d.ts +4 -0
  271. package/dist/prompt/steps/step-iterate/iterate-handler.js +14 -0
  272. package/dist/prompt/steps/step-iterate/iterate-handler.js.map +1 -0
  273. package/dist/prompt/steps/step-iterate/step-iterate-handlers.d.ts +3 -0
  274. package/dist/prompt/steps/step-iterate/step-iterate-handlers.js +5 -0
  275. package/dist/prompt/steps/step-iterate/step-iterate-handlers.js.map +1 -0
  276. package/dist/prompt/steps/step-iterate/step-iterate-types.d.ts +255 -0
  277. package/dist/prompt/steps/step-iterate/step-iterate-types.js +2 -0
  278. package/dist/prompt/steps/step-iterate/step-iterate-types.js.map +1 -0
  279. package/dist/prompt/steps/step-iterate/step-iterate.d.ts +37 -0
  280. package/dist/prompt/steps/step-iterate/step-iterate.js +132 -0
  281. package/dist/prompt/steps/step-iterate/step-iterate.js.map +1 -0
  282. package/dist/prompt/steps/step-summarization.js +9 -19
  283. package/dist/prompt/steps/step-summarization.js.map +1 -1
  284. package/dist/prompt/systemprompt.js +93 -168
  285. package/dist/prompt/systemprompt.js.map +1 -1
  286. package/dist/prompt/token-estimator.js +1 -1
  287. package/dist/prompt/token-estimator.js.map +1 -1
  288. package/dist/vite-genaicode/console-interceptor.d.ts +19 -6
  289. package/dist/vite-genaicode/console-interceptor.js +45 -13
  290. package/dist/vite-genaicode/console-interceptor.js.map +1 -1
  291. package/dist/vite-genaicode/vite-genaicode-frontend.js +1 -1
  292. package/dist/vite-genaicode/vite-genaicode-frontend.js.map +1 -1
  293. package/package.json +7 -6
  294. package/dist/main/ui/frontend/assets/index-5-emJmrg.js +0 -2881
@@ -0,0 +1,96 @@
1
+ import { ModelType } from '../../../../../../ai-service/common-types.js';
2
+ import { putContainerLog } from '../../../../../../main/common/content-bus.js';
3
+ export async function handleWebSearch(props) {
4
+ const { actionResult, generateContentFn, options, taskExecutionPrompt } = props;
5
+ const { query } = actionResult.args;
6
+ taskExecutionPrompt.push({
7
+ type: 'assistant',
8
+ functionCalls: [actionResult],
9
+ });
10
+ if (!query) {
11
+ putContainerLog('warn', 'Web search command called without a query.');
12
+ taskExecutionPrompt.push({
13
+ type: 'user',
14
+ functionResponses: [
15
+ {
16
+ name: actionResult.name,
17
+ call_id: actionResult.id || undefined,
18
+ content: 'Web search failed: Missing query',
19
+ },
20
+ ],
21
+ });
22
+ return {
23
+ shouldBreakOuter: false,
24
+ commandsExecutedIncrement: 1,
25
+ };
26
+ }
27
+ putContainerLog('info', `Performing web search for: "${query}"`);
28
+ try {
29
+ const searchResponse = await generateContentFn([
30
+ {
31
+ type: 'user',
32
+ text: query,
33
+ },
34
+ ], {
35
+ temperature: 0.7,
36
+ modelType: ModelType.LITE,
37
+ expectedResponseType: {
38
+ webSearch: true,
39
+ },
40
+ }, options);
41
+ const webSearchResult = searchResponse.find((item) => item.type === 'webSearch');
42
+ if (webSearchResult) {
43
+ putContainerLog('info', 'Web search completed successfully.', webSearchResult);
44
+ taskExecutionPrompt.push({
45
+ type: 'user',
46
+ functionResponses: [
47
+ {
48
+ name: actionResult.name,
49
+ call_id: actionResult.id || undefined,
50
+ content: JSON.stringify(webSearchResult),
51
+ },
52
+ ],
53
+ });
54
+ return {
55
+ shouldBreakOuter: false,
56
+ commandsExecutedIncrement: 1,
57
+ };
58
+ }
59
+ else {
60
+ putContainerLog('warn', 'Web search did not return any results.');
61
+ taskExecutionPrompt.push({
62
+ type: 'user',
63
+ functionResponses: [
64
+ {
65
+ name: actionResult.name,
66
+ call_id: actionResult.id || undefined,
67
+ content: 'Web search failed: No results found',
68
+ },
69
+ ],
70
+ });
71
+ return {
72
+ shouldBreakOuter: false,
73
+ commandsExecutedIncrement: 1,
74
+ };
75
+ }
76
+ }
77
+ catch (error) {
78
+ const errorMessage = error instanceof Error ? error.message : 'An unknown error occurred';
79
+ putContainerLog('error', `Web search failed: ${errorMessage}`, { error });
80
+ taskExecutionPrompt.push({
81
+ type: 'user',
82
+ functionResponses: [
83
+ {
84
+ name: actionResult.name,
85
+ call_id: actionResult.id || undefined,
86
+ content: `Web search failed: ${errorMessage}`,
87
+ },
88
+ ],
89
+ });
90
+ return {
91
+ shouldBreakOuter: false,
92
+ commandsExecutedIncrement: 1,
93
+ };
94
+ }
95
+ }
96
+ //# sourceMappingURL=web-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../../../../../../src/prompt/steps/step-iterate/handlers/container-task/commands/web-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,8CAA8C,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAI/E,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAA8B;IAClE,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,OAAO,EAAE,mBAAmB,EAAE,GAAG,KAAK,CAAC;IAChF,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,IAAqB,CAAC;IAErD,mBAAmB,CAAC,IAAI,CAAC;QACvB,IAAI,EAAE,WAAW;QACjB,aAAa,EAAE,CAAC,YAAY,CAAC;KAC9B,CAAC,CAAC;IAEH,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,eAAe,CAAC,MAAM,EAAE,4CAA4C,CAAC,CAAC;QACtE,mBAAmB,CAAC,IAAI,CAAC;YACvB,IAAI,EAAE,MAAM;YACZ,iBAAiB,EAAE;gBACjB;oBACE,IAAI,EAAE,YAAY,CAAC,IAAI;oBACvB,OAAO,EAAE,YAAY,CAAC,EAAE,IAAI,SAAS;oBACrC,OAAO,EAAE,kCAAkC;iBAC5C;aACF;SACF,CAAC,CAAC;QACH,OAAO;YACL,gBAAgB,EAAE,KAAK;YACvB,yBAAyB,EAAE,CAAC;SAC7B,CAAC;IACJ,CAAC;IAED,eAAe,CAAC,MAAM,EAAE,+BAA+B,KAAK,GAAG,CAAC,CAAC;IAEjE,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAC5C;YACE;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,KAAK;aACZ;SACF,EACD;YACE,WAAW,EAAE,GAAG;YAChB,SAAS,EAAE,SAAS,CAAC,IAAI;YACzB,oBAAoB,EAAE;gBACpB,SAAS,EAAE,IAAI;aAChB;SACF,EACD,OAAO,CACR,CAAC;QAEF,MAAM,eAAe,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QAEjF,IAAI,eAAe,EAAE,CAAC;YACpB,eAAe,CAAC,MAAM,EAAE,oCAAoC,EAAE,eAAe,CAAC,CAAC;YAC/E,mBAAmB,CAAC,IAAI,CAAC;gBACvB,IAAI,EAAE,MAAM;gBACZ,iBAAiB,EAAE;oBACjB;wBACE,IAAI,EAAE,YAAY,CAAC,IAAI;wBACvB,OAAO,EAAE,YAAY,CAAC,EAAE,IAAI,SAAS;wBACrC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;qBACzC;iBACF;aACF,CAAC,CAAC;YACH,OAAO;gBACL,gBAAgB,EAAE,KAAK;gBACvB,yBAAyB,EAAE,CAAC;aAC7B,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,eAAe,CAAC,MAAM,EAAE,wCAAwC,CAAC,CAAC;YAClE,mBAAmB,CAAC,IAAI,CAAC;gBACvB,IAAI,EAAE,MAAM;gBACZ,iBAAiB,EAAE;oBACjB;wBACE,IAAI,EAAE,YAAY,CAAC,IAAI;wBACvB,OAAO,EAAE,YAAY,CAAC,EAAE,IAAI,SAAS;wBACrC,OAAO,EAAE,qCAAqC;qBAC/C;iBACF;aACF,CAAC,CAAC;YACH,OAAO;gBACL,gBAAgB,EAAE,KAAK;gBACvB,yBAAyB,EAAE,CAAC;aAC7B,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B,CAAC;QAC1F,eAAe,CAAC,OAAO,EAAE,sBAAsB,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1E,mBAAmB,CAAC,IAAI,CAAC;YACvB,IAAI,EAAE,MAAM;YACZ,iBAAiB,EAAE;gBACjB;oBACE,IAAI,EAAE,YAAY,CAAC,IAAI;oBACvB,OAAO,EAAE,YAAY,CAAC,EAAE,IAAI,SAAS;oBACrC,OAAO,EAAE,sBAAsB,YAAY,EAAE;iBAC9C;aACF;SACF,CAAC,CAAC;QACH,OAAO;YACL,gBAAgB,EAAE,KAAK;YACvB,yBAAyB,EAAE,CAAC;SAC7B,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { GenerateContentFunction, PromptItem } from '../../../../../../ai-service/common-types.js';
2
+ import { ActionHandlerProps } from '../../../step-iterate-types.js';
3
+ import Docker from 'dockerode';
4
+ export declare function maybeWrapContext(systemPrompt: PromptItem, taskPrompt: PromptItem, taskExecutionPrompt: PromptItem[], generateContentFn: GenerateContentFunction, container: Docker.Container, options: ActionHandlerProps['options']): Promise<void>;
@@ -0,0 +1,123 @@
1
+ import { ModelType, } from '../../../../../../ai-service/common-types.js';
2
+ import { putContainerLog } from '../../../../../../main/common/content-bus.js';
3
+ import { setExecutionPlanDef } from './set-execution-plan.js';
4
+ const MAX_CONTEXT_ITEMS = 24;
5
+ const WRAP_RATIO = 2 / 3;
6
+ export async function maybeWrapContext(systemPrompt, taskPrompt, taskExecutionPrompt, generateContentFn, container, options) {
7
+ if (taskExecutionPrompt.length < MAX_CONTEXT_ITEMS) {
8
+ return;
9
+ }
10
+ putContainerLog('info', 'Context is getting long, wrapping it up.');
11
+ await handleWrapContext({
12
+ actionResult: {
13
+ name: 'wrapContext',
14
+ args: {}, // This will be populated by the LLM inside handleWrapContext
15
+ },
16
+ systemPrompt,
17
+ taskPrompt,
18
+ taskExecutionPrompt,
19
+ container,
20
+ options,
21
+ generateContentFn,
22
+ maxContextItems: MAX_CONTEXT_ITEMS,
23
+ maxContextSize: 0, // not used
24
+ maxOutputLength: 0, // not used
25
+ });
26
+ }
27
+ const wrapContextInternalDef = {
28
+ name: 'wrapContextInternal',
29
+ description: 'Internal tool to summarize the conversation history.',
30
+ parameters: {
31
+ type: 'object',
32
+ properties: {
33
+ summary: {
34
+ type: 'string',
35
+ description: 'A summary of prior steps and important findings to keep for next actions.',
36
+ },
37
+ plan: setExecutionPlanDef.parameters.properties.plan,
38
+ progress: {
39
+ type: 'string',
40
+ description: 'What was achieved so far? What are the outcomes?',
41
+ },
42
+ importantFiles: {
43
+ type: 'array',
44
+ items: {
45
+ type: 'string',
46
+ description: `Paths to important files or directories to keep in mind for next actions.
47
+ It is critically IMPORTANT to keep track of files which are essential for the task. For example the files that were modified or created during the task so far.`,
48
+ },
49
+ },
50
+ nextStep: {
51
+ type: 'string',
52
+ description: 'The next step to take in the process.',
53
+ },
54
+ },
55
+ required: ['summary', 'plan', 'progress', 'importantFiles', 'nextStep'],
56
+ },
57
+ };
58
+ async function handleWrapContext(props) {
59
+ const { taskExecutionPrompt, generateContentFn, options, systemPrompt, taskPrompt } = props;
60
+ let splitPoint = Math.floor(taskExecutionPrompt.length * WRAP_RATIO);
61
+ // Adjust split point to not separate a function call from its response.
62
+ // Iterate backwards from the middle to find a safe point that is not right after an assistant's function call.
63
+ while (splitPoint > 0) {
64
+ const precedingItem = taskExecutionPrompt[splitPoint - 1];
65
+ if (precedingItem.type === 'assistant' && precedingItem.functionCalls?.length) {
66
+ // This is an assistant message with a function call. It's unsafe to split right after it.
67
+ // Move the split point before this message to keep the call and its subsequent response together.
68
+ splitPoint--;
69
+ }
70
+ else {
71
+ // This is a safe split point (e.g., after a user message or an assistant message without a call).
72
+ break;
73
+ }
74
+ }
75
+ const partToWrap = taskExecutionPrompt.slice(0, splitPoint);
76
+ const partToKeep = taskExecutionPrompt.slice(splitPoint);
77
+ if (partToWrap.length === 0) {
78
+ // Nothing to wrap, probably because the first half was all function calls.
79
+ return { shouldBreakOuter: false, commandsExecutedIncrement: 0 };
80
+ }
81
+ const summarizationPrompt = [
82
+ systemPrompt,
83
+ taskPrompt,
84
+ ...partToWrap,
85
+ {
86
+ type: 'user',
87
+ text: 'Please summarize the conversation so far. Include the current plan, progress, important files, and what the next immediate step should be, based on the last message.',
88
+ },
89
+ ];
90
+ const response = await generateContentFn(summarizationPrompt, {
91
+ functionDefs: [wrapContextInternalDef],
92
+ requiredFunctionName: wrapContextInternalDef.name,
93
+ modelType: ModelType.LITE,
94
+ }, options);
95
+ const wrapContextCall = response
96
+ .filter((item) => item.type === 'functionCall')
97
+ .filter((item) => item.functionCall.name === wrapContextInternalDef.name)
98
+ .map((item) => item.functionCall)[0];
99
+ if (!wrapContextCall || !wrapContextCall.args) {
100
+ putContainerLog('warn', 'Failed to generate a valid context summary.');
101
+ // If summarization fails, we just keep the context as is to avoid breaking the flow.
102
+ return { shouldBreakOuter: false, commandsExecutedIncrement: 0 };
103
+ }
104
+ putContainerLog('info', '🗂️ Context wrapped by internal operator.', wrapContextCall.args);
105
+ const assistantMsg = {
106
+ type: 'assistant',
107
+ text: 'Wrapping context for continued processing. This summary will help maintain continuity, it contains the current plan, list of important files, and progress made so far, as well as the next step to take.',
108
+ functionCalls: [wrapContextCall],
109
+ };
110
+ const userResp = {
111
+ type: 'user',
112
+ text: `Please continue with the next step: ${wrapContextCall.args.nextStep}`,
113
+ functionResponses: [
114
+ {
115
+ name: wrapContextCall.name,
116
+ call_id: wrapContextCall.id || undefined,
117
+ },
118
+ ],
119
+ };
120
+ taskExecutionPrompt.splice(0, taskExecutionPrompt.length, assistantMsg, userResp, ...partToKeep);
121
+ return { shouldBreakOuter: false, commandsExecutedIncrement: 0 };
122
+ }
123
+ //# sourceMappingURL=wrap-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrap-context.js","sourceRoot":"","sources":["../../../../../../../src/prompt/steps/step-iterate/handlers/container-task/commands/wrap-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { FunctionDef } from '../../../../../ai-service/common-types.js';
2
+ import { CommandHandler } from './container-commands-types.js';
3
+ /**
4
+ * Gets all function definitions for the container commands.
5
+ * It resolves any definition functions into concrete FunctionDef objects.
6
+ */
7
+ export declare function getContainerCommandDefs(): FunctionDef[];
8
+ /**
9
+ * Gets the handler for a specific command by name.
10
+ */
11
+ export declare function getContainerCommandHandler(name: string): CommandHandler | undefined;
@@ -0,0 +1,50 @@
1
+ import { completeTaskDef, handleCompleteTask } from './commands/complete-task.js';
2
+ import { failTaskDef, handleFailTask } from './commands/fail-task.js';
3
+ import { setExecutionPlanDef, handleSetExecutionPlan } from './commands/set-execution-plan.js';
4
+ import { updateExecutionPlanDef, handleUpdateExecutionPlan } from './commands/update-execution-plan.js';
5
+ import { sendMessageDef, handleSendMessage } from './commands/send-message.js';
6
+ import { runCommandDef, handleRunCommand } from './commands/run-command.js';
7
+ import { getCopyToContainerDef, handleCopyToContainer } from './commands/copy-to-container.js';
8
+ import { getCopyFromContainerDef, handleCopyFromContainer } from './commands/copy-from-container.js';
9
+ import { handleWebSearch } from './commands/web-search.js';
10
+ import { webSearchDef } from '../../../../function-defs/web-search.js';
11
+ import { requestSecretDef, handleRequestSecret } from './commands/request-secret.js';
12
+ import { gainKnowledgeDef, handleGainKnowledge } from './commands/gain-knowledge.js';
13
+ import { queryKnowledgeDef, handleQueryKnowledge } from './commands/query-knowledge.js';
14
+ import { viewFileDef, handleViewFile } from './commands/view-file.js';
15
+ import { editFileDef, handleEditFile } from './commands/edit-file.js';
16
+ const commandRegistry = new Map();
17
+ function registerCommand(name, def, handler) {
18
+ commandRegistry.set(name, { def, handler: handler });
19
+ }
20
+ // Register all available commands
21
+ registerCommand('completeTask', completeTaskDef, handleCompleteTask);
22
+ registerCommand('failTask', failTaskDef, handleFailTask);
23
+ registerCommand('setExecutionPlan', setExecutionPlanDef, handleSetExecutionPlan);
24
+ registerCommand('updateExecutionPlan', updateExecutionPlanDef, handleUpdateExecutionPlan);
25
+ registerCommand('sendMessage', sendMessageDef, handleSendMessage);
26
+ registerCommand('runCommand', runCommandDef, handleRunCommand);
27
+ registerCommand('copyToContainer', getCopyToContainerDef, handleCopyToContainer);
28
+ registerCommand('copyFromContainer', getCopyFromContainerDef, handleCopyFromContainer);
29
+ registerCommand('webSearch', webSearchDef, handleWebSearch);
30
+ registerCommand('requestSecret', requestSecretDef, handleRequestSecret);
31
+ registerCommand('gainKnowledge', gainKnowledgeDef, handleGainKnowledge);
32
+ registerCommand('queryKnowledge', queryKnowledgeDef, handleQueryKnowledge);
33
+ registerCommand('viewFile', viewFileDef, handleViewFile);
34
+ registerCommand('editFile', editFileDef, handleEditFile);
35
+ /**
36
+ * Gets all function definitions for the container commands.
37
+ * It resolves any definition functions into concrete FunctionDef objects.
38
+ */
39
+ export function getContainerCommandDefs() {
40
+ return Array.from(commandRegistry.values()).map((command) => {
41
+ return typeof command.def === 'function' ? command.def() : command.def;
42
+ });
43
+ }
44
+ /**
45
+ * Gets the handler for a specific command by name.
46
+ */
47
+ export function getContainerCommandHandler(name) {
48
+ return commandRegistry.get(name)?.handler;
49
+ }
50
+ //# sourceMappingURL=container-commands-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container-commands-registry.js","sourceRoot":"","sources":["../../../../../../src/prompt/steps/step-iterate/handlers/container-task/container-commands-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import Docker from 'dockerode';
2
+ import { FunctionCall, GenerateContentFunction, PromptItem, FunctionDef } from '../../../../../ai-service/common-types.js';
3
+ import { CodegenOptions } from '../../../../../main/codegen-types.js';
4
+ export interface CommandHandlerBaseProps {
5
+ actionResult: FunctionCall;
6
+ systemPrompt: PromptItem;
7
+ taskPrompt: PromptItem;
8
+ taskExecutionPrompt: PromptItem[];
9
+ generateContentFn: GenerateContentFunction;
10
+ container: Docker.Container;
11
+ options: CodegenOptions;
12
+ maxContextItems: number;
13
+ maxContextSize: number;
14
+ maxOutputLength: number;
15
+ }
16
+ export type CommandHandlerResult = void | {
17
+ success?: boolean;
18
+ summary?: string;
19
+ commandsExecutedIncrement?: number;
20
+ shouldBreakOuter?: boolean;
21
+ };
22
+ export interface CommandHandler<T extends CommandHandlerBaseProps = CommandHandlerBaseProps> {
23
+ (props: T): Promise<CommandHandlerResult>;
24
+ }
25
+ export interface Command<T extends CommandHandlerBaseProps = CommandHandlerBaseProps> {
26
+ def: FunctionDef | (() => FunctionDef);
27
+ handler: CommandHandler<T>;
28
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=container-commands-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container-commands-types.js","sourceRoot":"","sources":["../../../../../../src/prompt/steps/step-iterate/handlers/container-task/container-commands-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import { ActionHandlerProps, ActionResult } from '../../step-iterate-types.js';
2
+ export declare function runContainerTaskOrchestrator({ iterateCall, prompt, generateContentFn, options, waitIfPaused, }: ActionHandlerProps): Promise<ActionResult>;
@@ -0,0 +1,202 @@
1
+ import Docker from 'dockerode';
2
+ import { ModelType } from '../../../../../ai-service/common-types.js';
3
+ import { putAssistantMessage, putContainerLog, putSystemMessage, putUserMessage, } from '../../../../../main/common/content-bus.js';
4
+ import { askUserForConfirmationWithAnswer } from '../../../../../main/common/user-actions.js';
5
+ import { abortController } from '../../../../../main/common/abort-controller.js';
6
+ import { runContainerTaskDef } from '../../../../function-defs/run-container-task.js';
7
+ import { cleanupOrphanedContainers, createAndStartContainer, executeCommand, pullImage, stopContainer, } from './utils/docker-utils.js';
8
+ import { commandExecutionLoop } from './command-execution-loop.js';
9
+ import { getFunctionDefs } from '../../../../function-calling.js';
10
+ export async function runContainerTaskOrchestrator({ iterateCall, prompt, generateContentFn, options, waitIfPaused, }) {
11
+ const docker = new Docker({ socketPath: '/var/run/docker.sock' });
12
+ await cleanupOrphanedContainers(docker);
13
+ if (abortController?.signal.aborted) {
14
+ putContainerLog('warn', 'Container task aborted before start.');
15
+ putSystemMessage('Container task aborted before start.');
16
+ return { breakLoop: false, items: [] };
17
+ }
18
+ try {
19
+ putContainerLog('info', 'Container task: generating proper task request');
20
+ const request = [
21
+ [
22
+ ...prompt,
23
+ {
24
+ type: 'assistant',
25
+ text: iterateCall.args.message,
26
+ },
27
+ {
28
+ type: 'user',
29
+ text: 'I understand that you want to run a container task. Please provide the Docker image and task description.',
30
+ },
31
+ ],
32
+ {
33
+ functionDefs: getFunctionDefs(),
34
+ requiredFunctionName: runContainerTaskDef.name,
35
+ temperature: 0.7,
36
+ modelType: ModelType.CHEAP,
37
+ expectedResponseType: {
38
+ text: false,
39
+ functionCall: true,
40
+ media: false,
41
+ },
42
+ },
43
+ options,
44
+ ];
45
+ const response = await generateContentFn(...request);
46
+ const runContainerTaskCall = response
47
+ .filter((item) => item.type === 'functionCall')
48
+ .map((item) => item.functionCall).find((call) => call.name === 'runContainerTask');
49
+ if (!runContainerTaskCall?.args?.image || !runContainerTaskCall.args.taskDescription) {
50
+ putContainerLog('error', 'Failed to get valid runContainerTask request');
51
+ putSystemMessage('❌ Failed to get valid runContainerTask request');
52
+ prompt.push({
53
+ type: 'assistant',
54
+ text: iterateCall.args.message,
55
+ }, {
56
+ type: 'user',
57
+ text: 'Failed to get valid runContainerTask request',
58
+ });
59
+ return { breakLoop: false, items: [] };
60
+ }
61
+ putAssistantMessage(`I would like to run a container task with image: ${runContainerTaskCall.args.image}`, runContainerTaskCall.args);
62
+ const confirmation = await askUserForConfirmationWithAnswer(`Do you want to run the task?`, 'Run task', 'Reject', true, options);
63
+ if (!confirmation.confirmed) {
64
+ putContainerLog('warn', 'Container task cancelled by user.');
65
+ putSystemMessage('Container task cancelled by user.');
66
+ if (confirmation.answer) {
67
+ putUserMessage(confirmation.answer);
68
+ }
69
+ prompt.push({
70
+ type: 'assistant',
71
+ text: iterateCall.args.message,
72
+ }, {
73
+ type: 'user',
74
+ text: 'I reject running the container task.' + (confirmation.answer ? ` ${confirmation.answer}` : ''),
75
+ });
76
+ return { breakLoop: false, items: [] };
77
+ }
78
+ prompt.push({
79
+ type: 'assistant',
80
+ text: iterateCall.args.message,
81
+ }, {
82
+ type: 'user',
83
+ text: 'I accept running the container task.' + (confirmation.answer ? ` ${confirmation.answer}` : ''),
84
+ });
85
+ const { image, taskDescription, workingDir } = runContainerTaskCall.args;
86
+ putContainerLog('info', `Starting container task with image: ${image}`);
87
+ putSystemMessage(`🐳 Starting container task with image: ${image}`);
88
+ if (confirmation.answer) {
89
+ putUserMessage(confirmation.answer);
90
+ }
91
+ if (abortController?.signal.aborted) {
92
+ putContainerLog('warn', 'Container task aborted before pulling image.');
93
+ putSystemMessage('Container task aborted by user.');
94
+ return { breakLoop: false, items: [] };
95
+ }
96
+ try {
97
+ await pullImage(docker, image);
98
+ }
99
+ catch (error) {
100
+ const errorMessage = error instanceof Error ? error.message : String(error);
101
+ putSystemMessage('❌ Failed to pull Docker image', { error: errorMessage });
102
+ // The pullImage function already logs the detailed error to the terminal.
103
+ prompt.push({
104
+ type: 'assistant',
105
+ text: iterateCall.args.message,
106
+ functionCalls: [runContainerTaskCall],
107
+ }, {
108
+ type: 'user',
109
+ functionResponses: [
110
+ {
111
+ name: 'runContainerTask',
112
+ call_id: runContainerTaskCall.id || undefined,
113
+ content: `Failed to pull Docker image: ${errorMessage}`,
114
+ },
115
+ ],
116
+ });
117
+ return { breakLoop: false, items: [] };
118
+ }
119
+ let container;
120
+ let onAbort;
121
+ try {
122
+ container = await createAndStartContainer(docker, image);
123
+ onAbort = () => {
124
+ putContainerLog('warn', 'Execution interrupted by user. Stopping container...', undefined, 'docker');
125
+ // Best-effort stop; stopContainer is idempotent/safe via try/catch
126
+ if (container) {
127
+ stopContainer(container).catch(() => { });
128
+ }
129
+ };
130
+ abortController?.signal.addEventListener('abort', onAbort);
131
+ putContainerLog('info', 'Ensuring working directory exists.');
132
+ await executeCommand(container, '/bin/sh', `mkdir -p ${workingDir}`, '', '/');
133
+ putContainerLog('info', 'Entering command execution loop.');
134
+ const { success, summary } = await commandExecutionLoop(runContainerTaskCall.args, container, taskDescription, generateContentFn, options, waitIfPaused);
135
+ const finalMessage = `✅ Task finished with status: ${success ? 'Success' : 'Failed'}.
136
+
137
+ **Summary:**
138
+ ${summary}`;
139
+ putContainerLog(success ? 'success' : 'error', `Task finished. Summary: ${summary}`);
140
+ putSystemMessage(finalMessage);
141
+ prompt.push({
142
+ type: 'assistant',
143
+ text: iterateCall.args.message,
144
+ functionCalls: [runContainerTaskCall],
145
+ }, {
146
+ type: 'user',
147
+ functionResponses: [
148
+ {
149
+ name: 'runContainerTask',
150
+ call_id: runContainerTaskCall.id || undefined,
151
+ content: finalMessage,
152
+ },
153
+ ],
154
+ });
155
+ return { breakLoop: false, items: [] };
156
+ }
157
+ catch (error) {
158
+ const errorMessage = error instanceof Error ? error.message : String(error);
159
+ putContainerLog('error', 'An error occurred during the container task', { error: errorMessage });
160
+ putSystemMessage('❌ An error occurred during the container task', {
161
+ error: errorMessage,
162
+ });
163
+ prompt.push({
164
+ type: 'assistant',
165
+ text: iterateCall.args.message,
166
+ functionCalls: [runContainerTaskCall],
167
+ }, {
168
+ type: 'user',
169
+ functionResponses: [
170
+ {
171
+ name: 'runContainerTask',
172
+ call_id: runContainerTaskCall.id || undefined,
173
+ content: `An error occurred during the container task: ${errorMessage}`,
174
+ },
175
+ ],
176
+ });
177
+ return { breakLoop: false, items: [] };
178
+ }
179
+ finally {
180
+ if (container) {
181
+ await stopContainer(container);
182
+ if (onAbort) {
183
+ abortController?.signal.removeEventListener('abort', onAbort);
184
+ }
185
+ }
186
+ }
187
+ }
188
+ catch (error) {
189
+ const errorMessage = error instanceof Error ? error.message : String(error);
190
+ putContainerLog('error', 'Error during container task initialization', { error: errorMessage });
191
+ putSystemMessage('Error during container task initialization', { error: errorMessage });
192
+ prompt.push({
193
+ type: 'assistant',
194
+ text: iterateCall.args.message,
195
+ }, {
196
+ type: 'user',
197
+ text: `Error during container task initialization: ${errorMessage}`,
198
+ });
199
+ return { breakLoop: false, items: [] };
200
+ }
201
+ }
202
+ //# sourceMappingURL=container-task-orchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container-task-orchestrator.js","sourceRoot":"","sources":["../../../../../../src/prompt/steps/step-iterate/handlers/container-task/container-task-orchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Check if Docker is available
3
+ */
4
+ export declare function checkDockerAvailability(): Promise<boolean>;
@@ -0,0 +1,15 @@
1
+ import Docker from 'dockerode';
2
+ /**
3
+ * Check if Docker is available
4
+ */
5
+ export async function checkDockerAvailability() {
6
+ try {
7
+ const docker = new Docker({ socketPath: '/var/run/docker.sock' });
8
+ await docker.ping();
9
+ return true;
10
+ }
11
+ catch (error) {
12
+ return false;
13
+ }
14
+ }
15
+ //# sourceMappingURL=docker-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker-check.js","sourceRoot":"","sources":["../../../../../../../src/prompt/steps/step-iterate/handlers/container-task/utils/docker-check.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,WAAW,CAAC;AAE/B;;GAEG;AAEH,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,UAAU,EAAE,sBAAsB,EAAE,CAAC,CAAC;QAClE,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,50 @@
1
+ import Docker from 'dockerode';
2
+ import { AllowedDockerImage } from '../../../../../function-defs/run-container-task.js';
3
+ /**
4
+ * Pull a Docker image
5
+ */
6
+ export declare function pullImage(docker: Docker, image: AllowedDockerImage): Promise<void>;
7
+ /**
8
+ * Create and start a Docker container
9
+ */
10
+ export declare function createAndStartContainer(docker: Docker, image: AllowedDockerImage): Promise<Docker.Container>;
11
+ /**
12
+ * Execute a command in a Docker container
13
+ */
14
+ export declare function executeCommand(container: Docker.Container, shell: '/bin/sh' | '/bin/bash', command: string, stdin: string | undefined, workingDir: string, abortSignal?: AbortSignal): Promise<{
15
+ output: string;
16
+ exitCode: number;
17
+ }>;
18
+ /**
19
+ * Stop and clean up a Docker container
20
+ */
21
+ export declare function stopContainer(container: Docker.Container): Promise<void>;
22
+ /**
23
+ * Clean up orphaned containers left over from previous runs.
24
+ */
25
+ export declare function cleanupOrphanedContainers(docker: Docker): Promise<void>;
26
+ /**
27
+ * Copy a file or directory from the host to the container.
28
+ */
29
+ export declare function copyToContainer(container: Docker.Container, hostPath: string, containerPath: string): Promise<void>;
30
+ export interface ArchiveEntry {
31
+ name: string;
32
+ type: 'file' | 'directory';
33
+ }
34
+ /**
35
+ * Lists the files within a container archive without extracting them.
36
+ */
37
+ export declare function listFilesInContainerArchive(container: Docker.Container, containerPath: string): Promise<ArchiveEntry[]>;
38
+ /**
39
+ * Extracts a tar stream to a specified directory, with path validation.
40
+ * @param tarStream The readable tar stream.
41
+ * @param destinationHostPath The absolute path on the host to extract files to.
42
+ * @param pathValidator A function to validate each file path before writing.
43
+ */
44
+ export declare function extractTarStreamToDirectory(tarStream: NodeJS.ReadableStream, destinationHostPath: string, pathValidator: (filePath: string) => boolean): Promise<void>;
45
+ /**
46
+ * Copy a file or directory from the container to the host.
47
+ */
48
+ export declare function copyFromContainer(container: Docker.Container, containerPath: string, hostPath: string): Promise<void>;
49
+ export declare function checkPathExistsInContainer(container: Docker.Container, containerPath: string): Promise<boolean>;
50
+ export declare function getFileContentFromContainer(container: Docker.Container, filePath: string): Promise<string>;