genaicode 0.14.2 → 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 (253) hide show
  1. package/dist/ai-service/ai-studio.d.ts +2 -18
  2. package/dist/ai-service/ai-studio.js +87 -31
  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/index.d.ts +1 -1
  30. package/dist/index.js +1 -1
  31. package/dist/index.js.map +1 -1
  32. package/dist/main/codegen-types.d.ts +2 -2
  33. package/dist/main/common/content-bus-types.d.ts +14 -0
  34. package/dist/main/common/content-bus.d.ts +1 -1
  35. package/dist/main/common/content-bus.js +21 -3
  36. package/dist/main/common/content-bus.js.map +1 -1
  37. package/dist/main/common/user-actions.d.ts +1 -1
  38. package/dist/main/config-types.d.ts +0 -3
  39. package/dist/main/config-types.js.map +1 -1
  40. package/dist/main/config.js +1 -1
  41. package/dist/main/config.js.map +1 -1
  42. package/dist/main/plugin-loader.d.ts +1 -1
  43. package/dist/main/ui/backend/endpoints/config-endpoint.js +1 -1
  44. package/dist/main/ui/backend/endpoints/config-endpoint.js.map +1 -1
  45. package/dist/main/ui/backend/endpoints/edit-message-endpoint.js +9 -6
  46. package/dist/main/ui/backend/endpoints/edit-message-endpoint.js.map +1 -1
  47. package/dist/main/ui/backend/endpoints/interrupt-execution-endpoint.js +1 -1
  48. package/dist/main/ui/backend/endpoints/interrupt-execution-endpoint.js.map +1 -1
  49. package/dist/main/ui/backend/service.d.ts +4 -4
  50. package/dist/main/ui/backend/service.js +49 -27
  51. package/dist/main/ui/backend/service.js.map +1 -1
  52. package/dist/main/ui/common/api-types.d.ts +1 -2
  53. package/dist/main/ui/common/api-types.js.map +1 -1
  54. package/dist/main/ui/frontend/assets/index-DAM_kJhM.js +3445 -0
  55. package/dist/main/ui/frontend/index.html +1 -1
  56. package/dist/prompt/function-calling.js +4 -5
  57. package/dist/prompt/function-calling.js.map +1 -1
  58. package/dist/prompt/function-defs/code-execution.d.ts +7 -0
  59. package/dist/prompt/function-defs/code-execution.js +27 -0
  60. package/dist/prompt/function-defs/code-execution.js.map +1 -0
  61. package/dist/prompt/function-defs/conversation-graph.d.ts +1 -1
  62. package/dist/prompt/function-defs/conversation-graph.js +1 -1
  63. package/dist/prompt/function-defs/conversation-graph.js.map +1 -1
  64. package/dist/prompt/function-defs/iterate.d.ts +20 -0
  65. package/dist/prompt/function-defs/iterate.js +373 -0
  66. package/dist/prompt/function-defs/iterate.js.map +1 -0
  67. package/dist/prompt/prompt-service.js +6 -6
  68. package/dist/prompt/prompt-service.js.map +1 -1
  69. package/dist/prompt/steps/step-codegen-planning.js +6 -2
  70. package/dist/prompt/steps/step-codegen-planning.js.map +1 -1
  71. package/dist/prompt/steps/step-iterate/handlers/container-task/command-execution-loop.d.ts +7 -0
  72. package/dist/prompt/steps/step-iterate/handlers/container-task/command-execution-loop.js +301 -0
  73. package/dist/prompt/steps/step-iterate/handlers/container-task/command-execution-loop.js.map +1 -0
  74. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/complete-task.d.ts +4 -0
  75. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/complete-task.js +49 -0
  76. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/complete-task.js.map +1 -0
  77. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/copy-from-container.d.ts +4 -0
  78. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/copy-from-container.js +190 -0
  79. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/copy-from-container.js.map +1 -0
  80. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/copy-to-container.d.ts +4 -0
  81. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/copy-to-container.js +139 -0
  82. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/copy-to-container.js.map +1 -0
  83. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/edit-file.d.ts +10 -0
  84. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/edit-file.js +93 -0
  85. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/edit-file.js.map +1 -0
  86. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/fail-task.d.ts +4 -0
  87. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/fail-task.js +72 -0
  88. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/fail-task.js.map +1 -0
  89. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/gain-knowledge.d.ts +10 -0
  90. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/gain-knowledge.js +125 -0
  91. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/gain-knowledge.js.map +1 -0
  92. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/interrupt-controller.d.ts +19 -0
  93. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/interrupt-controller.js +33 -0
  94. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/interrupt-controller.js.map +1 -0
  95. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/query-knowledge.d.ts +8 -0
  96. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/query-knowledge.js +85 -0
  97. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/query-knowledge.js.map +1 -0
  98. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/request-secret.d.ts +6 -0
  99. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/request-secret.js +122 -0
  100. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/request-secret.js.map +1 -0
  101. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/run-command.d.ts +7 -0
  102. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/run-command.js +146 -0
  103. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/run-command.js.map +1 -0
  104. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/send-message.d.ts +4 -0
  105. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/send-message.js +56 -0
  106. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/send-message.js.map +1 -0
  107. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/set-execution-plan.d.ts +4 -0
  108. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/set-execution-plan.js +56 -0
  109. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/set-execution-plan.js.map +1 -0
  110. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/update-execution-plan.d.ts +4 -0
  111. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/update-execution-plan.js +39 -0
  112. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/update-execution-plan.js.map +1 -0
  113. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/view-file.d.ts +10 -0
  114. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/view-file.js +95 -0
  115. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/view-file.js.map +1 -0
  116. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/web-search.d.ts +2 -0
  117. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/web-search.js +96 -0
  118. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/web-search.js.map +1 -0
  119. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/wrap-context.d.ts +4 -0
  120. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/wrap-context.js +123 -0
  121. package/dist/prompt/steps/step-iterate/handlers/container-task/commands/wrap-context.js.map +1 -0
  122. package/dist/prompt/steps/step-iterate/handlers/container-task/container-commands-registry.d.ts +11 -0
  123. package/dist/prompt/steps/step-iterate/handlers/container-task/container-commands-registry.js +50 -0
  124. package/dist/prompt/steps/step-iterate/handlers/container-task/container-commands-registry.js.map +1 -0
  125. package/dist/prompt/steps/step-iterate/handlers/container-task/container-commands-types.d.ts +28 -0
  126. package/dist/prompt/steps/step-iterate/handlers/container-task/container-commands-types.js +2 -0
  127. package/dist/prompt/steps/step-iterate/handlers/container-task/container-commands-types.js.map +1 -0
  128. package/dist/prompt/steps/step-iterate/handlers/container-task/container-task-orchestrator.d.ts +2 -0
  129. package/dist/prompt/steps/step-iterate/handlers/container-task/container-task-orchestrator.js +202 -0
  130. package/dist/prompt/steps/step-iterate/handlers/container-task/container-task-orchestrator.js.map +1 -0
  131. package/dist/prompt/steps/step-iterate/handlers/container-task/utils/docker-check.d.ts +4 -0
  132. package/dist/prompt/steps/step-iterate/handlers/container-task/utils/docker-check.js +15 -0
  133. package/dist/prompt/steps/step-iterate/handlers/container-task/utils/docker-check.js.map +1 -0
  134. package/dist/prompt/steps/step-iterate/handlers/container-task/utils/docker-utils.d.ts +50 -0
  135. package/dist/prompt/steps/step-iterate/handlers/container-task/utils/docker-utils.js +358 -0
  136. package/dist/prompt/steps/step-iterate/handlers/container-task/utils/docker-utils.js.map +1 -0
  137. package/dist/prompt/steps/step-iterate/handlers/file-request-utils.d.ts +47 -0
  138. package/dist/prompt/steps/step-iterate/handlers/file-request-utils.js +114 -0
  139. package/dist/prompt/steps/step-iterate/handlers/file-request-utils.js.map +1 -0
  140. package/dist/prompt/steps/step-iterate/handlers/handle-code-execution.d.ts +1 -0
  141. package/dist/prompt/steps/step-iterate/handlers/handle-code-execution.js +133 -0
  142. package/dist/prompt/steps/step-iterate/handlers/handle-code-execution.js.map +1 -0
  143. package/dist/prompt/steps/step-iterate/handlers/handle-code-generation.d.ts +4 -0
  144. package/dist/prompt/steps/step-iterate/handlers/handle-code-generation.js +177 -0
  145. package/dist/prompt/steps/step-iterate/handlers/handle-code-generation.js.map +1 -0
  146. package/dist/prompt/steps/step-iterate/handlers/handle-compound-action.d.ts +20 -0
  147. package/dist/prompt/steps/step-iterate/handlers/handle-compound-action.js +305 -0
  148. package/dist/prompt/steps/step-iterate/handlers/handle-compound-action.js.map +1 -0
  149. package/dist/prompt/steps/step-iterate/handlers/handle-confirm-code-generation.d.ts +2 -0
  150. package/dist/prompt/steps/step-iterate/handlers/handle-confirm-code-generation.js +40 -0
  151. package/dist/prompt/steps/step-iterate/handlers/handle-confirm-code-generation.js.map +1 -0
  152. package/dist/prompt/steps/step-iterate/handlers/handle-context-compression.d.ts +2 -0
  153. package/dist/prompt/steps/step-iterate/handlers/handle-context-compression.js +35 -0
  154. package/dist/prompt/steps/step-iterate/handlers/handle-context-compression.js.map +1 -0
  155. package/dist/prompt/steps/step-iterate/handlers/handle-context-optimization.d.ts +2 -0
  156. package/dist/prompt/steps/step-iterate/handlers/handle-context-optimization.js +34 -0
  157. package/dist/prompt/steps/step-iterate/handlers/handle-context-optimization.js.map +1 -0
  158. package/dist/prompt/steps/step-iterate/handlers/handle-conversation-graph.d.ts +11 -0
  159. package/dist/prompt/steps/step-iterate/handlers/handle-conversation-graph.js +503 -0
  160. package/dist/prompt/steps/step-iterate/handlers/handle-conversation-graph.js.map +1 -0
  161. package/dist/prompt/steps/step-iterate/handlers/handle-create-file.d.ts +2 -0
  162. package/dist/prompt/steps/step-iterate/handlers/handle-create-file.js +159 -0
  163. package/dist/prompt/steps/step-iterate/handlers/handle-create-file.js.map +1 -0
  164. package/dist/prompt/steps/step-iterate/handlers/handle-end-conversation.d.ts +2 -0
  165. package/dist/prompt/steps/step-iterate/handlers/handle-end-conversation.js +30 -0
  166. package/dist/prompt/steps/step-iterate/handlers/handle-end-conversation.js.map +1 -0
  167. package/dist/prompt/steps/step-iterate/handlers/handle-explore-external-directories.d.ts +2 -0
  168. package/dist/prompt/steps/step-iterate/handlers/handle-explore-external-directories.js +280 -0
  169. package/dist/prompt/steps/step-iterate/handlers/handle-explore-external-directories.js.map +1 -0
  170. package/dist/prompt/steps/step-iterate/handlers/handle-genaicode-help.d.ts +8 -0
  171. package/dist/prompt/steps/step-iterate/handlers/handle-genaicode-help.js +105 -0
  172. package/dist/prompt/steps/step-iterate/handlers/handle-genaicode-help.js.map +1 -0
  173. package/dist/prompt/steps/step-iterate/handlers/handle-generate-image.d.ts +2 -0
  174. package/dist/prompt/steps/step-iterate/handlers/handle-generate-image.js +110 -0
  175. package/dist/prompt/steps/step-iterate/handlers/handle-generate-image.js.map +1 -0
  176. package/dist/prompt/steps/step-iterate/handlers/handle-perform-analysis.d.ts +6 -0
  177. package/dist/prompt/steps/step-iterate/handlers/handle-perform-analysis.js +110 -0
  178. package/dist/prompt/steps/step-iterate/handlers/handle-perform-analysis.js.map +1 -0
  179. package/dist/prompt/steps/step-iterate/handlers/handle-project-command.d.ts +2 -0
  180. package/dist/prompt/steps/step-iterate/handlers/handle-project-command.js +280 -0
  181. package/dist/prompt/steps/step-iterate/handlers/handle-project-command.js.map +1 -0
  182. package/dist/prompt/steps/step-iterate/handlers/handle-pull-app-context.d.ts +9 -0
  183. package/dist/prompt/steps/step-iterate/handlers/handle-pull-app-context.js +94 -0
  184. package/dist/prompt/steps/step-iterate/handlers/handle-pull-app-context.js.map +1 -0
  185. package/dist/prompt/steps/step-iterate/handlers/handle-pull-console-logs.d.ts +2 -0
  186. package/dist/prompt/steps/step-iterate/handlers/handle-pull-console-logs.js +174 -0
  187. package/dist/prompt/steps/step-iterate/handlers/handle-pull-console-logs.js.map +1 -0
  188. package/dist/prompt/steps/step-iterate/handlers/handle-push-app-context.d.ts +9 -0
  189. package/dist/prompt/steps/step-iterate/handlers/handle-push-app-context.js +104 -0
  190. package/dist/prompt/steps/step-iterate/handlers/handle-push-app-context.js.map +1 -0
  191. package/dist/prompt/steps/step-iterate/handlers/handle-read-external-files.d.ts +2 -0
  192. package/dist/prompt/steps/step-iterate/handlers/handle-read-external-files.js +149 -0
  193. package/dist/prompt/steps/step-iterate/handlers/handle-read-external-files.js.map +1 -0
  194. package/dist/prompt/steps/step-iterate/handlers/handle-reasoning-inference.d.ts +7 -0
  195. package/dist/prompt/steps/step-iterate/handlers/handle-reasoning-inference.js +119 -0
  196. package/dist/prompt/steps/step-iterate/handlers/handle-reasoning-inference.js.map +1 -0
  197. package/dist/prompt/steps/step-iterate/handlers/handle-remove-files-from-context.d.ts +2 -0
  198. package/dist/prompt/steps/step-iterate/handlers/handle-remove-files-from-context.js +100 -0
  199. package/dist/prompt/steps/step-iterate/handlers/handle-remove-files-from-context.js.map +1 -0
  200. package/dist/prompt/steps/step-iterate/handlers/handle-request-files-content.d.ts +8 -0
  201. package/dist/prompt/steps/step-iterate/handlers/handle-request-files-content.js +146 -0
  202. package/dist/prompt/steps/step-iterate/handlers/handle-request-files-content.js.map +1 -0
  203. package/dist/prompt/steps/step-iterate/handlers/handle-request-files-fragments.d.ts +8 -0
  204. package/dist/prompt/steps/step-iterate/handlers/handle-request-files-fragments.js +197 -0
  205. package/dist/prompt/steps/step-iterate/handlers/handle-request-files-fragments.js.map +1 -0
  206. package/dist/prompt/steps/step-iterate/handlers/handle-request-git-context.d.ts +3 -0
  207. package/dist/prompt/steps/step-iterate/handlers/handle-request-git-context.js +251 -0
  208. package/dist/prompt/steps/step-iterate/handlers/handle-request-git-context.js.map +1 -0
  209. package/dist/prompt/steps/step-iterate/handlers/handle-request-permissions.d.ts +2 -0
  210. package/dist/prompt/steps/step-iterate/handlers/handle-request-permissions.js +83 -0
  211. package/dist/prompt/steps/step-iterate/handlers/handle-request-permissions.js.map +1 -0
  212. package/dist/prompt/steps/step-iterate/handlers/handle-run-bash-command.d.ts +2 -0
  213. package/dist/prompt/steps/step-iterate/handlers/handle-run-bash-command.js +185 -0
  214. package/dist/prompt/steps/step-iterate/handlers/handle-run-bash-command.js.map +1 -0
  215. package/dist/prompt/steps/step-iterate/handlers/handle-run-container-task.d.ts +2 -0
  216. package/dist/prompt/steps/step-iterate/handlers/handle-run-container-task.js +7 -0
  217. package/dist/prompt/steps/step-iterate/handlers/handle-run-container-task.js.map +1 -0
  218. package/dist/prompt/steps/step-iterate/handlers/handle-search-code.d.ts +2 -0
  219. package/dist/prompt/steps/step-iterate/handlers/handle-search-code.js +96 -0
  220. package/dist/prompt/steps/step-iterate/handlers/handle-search-code.js.map +1 -0
  221. package/dist/prompt/steps/step-iterate/handlers/handle-send-message.d.ts +2 -0
  222. package/dist/prompt/steps/step-iterate/handlers/handle-send-message.js +21 -0
  223. package/dist/prompt/steps/step-iterate/handlers/handle-send-message.js.map +1 -0
  224. package/dist/prompt/steps/step-iterate/handlers/handle-structured-question.d.ts +1 -0
  225. package/dist/prompt/steps/step-iterate/handlers/handle-structured-question.js +72 -0
  226. package/dist/prompt/steps/step-iterate/handlers/handle-structured-question.js.map +1 -0
  227. package/dist/prompt/steps/step-iterate/handlers/handle-update-file.d.ts +2 -0
  228. package/dist/prompt/steps/step-iterate/handlers/handle-update-file.js +161 -0
  229. package/dist/prompt/steps/step-iterate/handlers/handle-update-file.js.map +1 -0
  230. package/dist/prompt/steps/step-iterate/handlers/handle-web-search.d.ts +1 -0
  231. package/dist/prompt/steps/step-iterate/handlers/handle-web-search.js +85 -0
  232. package/dist/prompt/steps/step-iterate/handlers/handle-web-search.js.map +1 -0
  233. package/dist/prompt/steps/step-iterate/iterate-handler.d.ts +4 -0
  234. package/dist/prompt/steps/step-iterate/iterate-handler.js +14 -0
  235. package/dist/prompt/steps/step-iterate/iterate-handler.js.map +1 -0
  236. package/dist/prompt/steps/step-iterate/step-iterate-handlers.d.ts +3 -0
  237. package/dist/prompt/steps/step-iterate/step-iterate-handlers.js +5 -0
  238. package/dist/prompt/steps/step-iterate/step-iterate-handlers.js.map +1 -0
  239. package/dist/prompt/steps/step-iterate/step-iterate-types.d.ts +255 -0
  240. package/dist/prompt/steps/step-iterate/step-iterate-types.js +2 -0
  241. package/dist/prompt/steps/step-iterate/step-iterate-types.js.map +1 -0
  242. package/dist/prompt/steps/step-iterate/step-iterate.d.ts +37 -0
  243. package/dist/prompt/steps/step-iterate/step-iterate.js +132 -0
  244. package/dist/prompt/steps/step-iterate/step-iterate.js.map +1 -0
  245. package/dist/prompt/systemprompt.js +6 -6
  246. package/dist/prompt/systemprompt.js.map +1 -1
  247. package/dist/vite-genaicode/console-interceptor.d.ts +19 -6
  248. package/dist/vite-genaicode/console-interceptor.js +45 -13
  249. package/dist/vite-genaicode/console-interceptor.js.map +1 -1
  250. package/dist/vite-genaicode/vite-genaicode-frontend.js +1 -1
  251. package/dist/vite-genaicode/vite-genaicode-frontend.js.map +1 -1
  252. package/package.json +7 -6
  253. package/dist/main/ui/frontend/assets/index-We_MLSaC.js +0 -3405
@@ -0,0 +1,251 @@
1
+ import simpleGit from 'simple-git';
2
+ import { rcConfig } from '../../../../main/config.js';
3
+ import path from 'node:path';
4
+ import { getFunctionDefs } from '../../../function-calling.js';
5
+ import { ModelType } from '../../../../ai-service/common-types.js'; // Import PromptItem
6
+ import { putSystemMessage } from '../../../../main/common/content-bus.js';
7
+ import { registerActionHandler } from '../step-iterate-handlers.js';
8
+ // Helper function to format log output
9
+ function formatLog(log) {
10
+ return log.all
11
+ .map((commit) => `- ${commit.hash.substring(0, 7)} by ${commit.author_name} on ${commit.date}: ${commit.message}`)
12
+ .join('\n');
13
+ }
14
+ // Helper function to format blame output
15
+ function formatBlame(blame) {
16
+ // Basic formatting, could be enhanced
17
+ return `\nBlame Output:\n${blame}`;
18
+ }
19
+ // Helper function to format diff output
20
+ function formatDiff(diff) {
21
+ const DIFF_TRUNCATE_LENGTH = 2000;
22
+ if (diff.length > DIFF_TRUNCATE_LENGTH) {
23
+ const truncatedDiff = diff.substring(0, DIFF_TRUNCATE_LENGTH);
24
+ return `\nDiff Output (truncated):\n${truncatedDiff}\n\n[Truncated ${DIFF_TRUNCATE_LENGTH} of ${diff.length} chars. Ask for the full diff if needed.]`;
25
+ }
26
+ return `\nDiff Output:\n${diff}`;
27
+ }
28
+ // Define the detailed instruction prompt for the LLM
29
+ export const GIT_CONTEXT_INSTRUCTION_PROMPT = `
30
+ You need to call the 'requestGitContext' function. Please determine the appropriate arguments based on the user's request.
31
+ Parameters:
32
+ - requestType (required): Choose one of 'commits', 'fileChanges', 'blame', 'fileDiff', 'workingChanges', or 'workingDiff'.
33
+ - 'commits': Get recent commit history for the entire repository.
34
+ - 'fileChanges': Get commit history specifically for the given 'filePath'.
35
+ - 'blame': Get line-by-line authorship information (git blame) for the given 'filePath'.
36
+ - 'fileDiff': Get the changes made to a specific 'filePath' in a given 'commitHash'.
37
+ - 'workingChanges': List changed files in the current working copy (staged, unstaged, untracked).
38
+ - 'workingDiff': Show the diff for a specific file in the working copy.
39
+ - filePath (absolute, required for 'fileChanges', 'blame', 'fileDiff', and 'workingDiff'): The absolute path to the file within the project. IMPORTANT: Ensure the provided filePath is absolute and is inside of the project root and exists within the project directory structure.
40
+ - commitHash (required for 'blame' and 'fileDiff'): A specific commit hash to focus the request.
41
+ - count (required for 'commits' and 'fileChanges'): The maximum number of commits to retrieve.
42
+ - includeUntracked (optional, for 'workingChanges'): Set to false to exclude untracked files. Defaults to true.
43
+ - stagedOnly (optional, for 'workingChanges'): Set to true to only show staged changes. Mutually exclusive with unstagedOnly.
44
+ - unstagedOnly (optional, for 'workingChanges'): Set to true to only show unstaged changes. Mutually exclusive with stagedOnly.
45
+ - staged (optional, for 'workingDiff'): Set to true to show the diff for staged changes (--cached) instead of unstaged changes.
46
+
47
+ Analyze the user's request and provide the arguments accurately.
48
+ `;
49
+ export const handleRequestGitContext = async ({ iterateCall, options, generateContentFn, prompt, }) => {
50
+ putSystemMessage('Handling git context action.');
51
+ // Create a temporary prompt array including the instruction
52
+ const inferencePrompt = [
53
+ ...prompt,
54
+ { type: 'user', text: GIT_CONTEXT_INSTRUCTION_PROMPT }, // Add instruction as a user message
55
+ ];
56
+ const [requestGitContextCall] = // Use the temporary prompt with instructions for this specific call
57
+ (await generateContentFn(inferencePrompt, // Use the temporary prompt with the instruction
58
+ {
59
+ functionDefs: getFunctionDefs(),
60
+ requiredFunctionName: 'requestGitContext',
61
+ temperature: 0.7,
62
+ modelType: ModelType.CHEAP,
63
+ expectedResponseType: { text: false, functionCall: true, media: false },
64
+ }, options))
65
+ .filter((item) => item.type === 'functionCall')
66
+ .map((item) => item.functionCall);
67
+ if (!requestGitContextCall?.args) {
68
+ putSystemMessage('No valid git context call found after inference.');
69
+ // Add the original assistant message back, but indicate failure
70
+ prompt.push({
71
+ type: 'assistant',
72
+ text: iterateCall.args?.message ?? '',
73
+ }, {
74
+ type: 'user',
75
+ text: 'Could not determine the correct parameters for the Git request based on your message.',
76
+ });
77
+ return {
78
+ breakLoop: false,
79
+ items: [],
80
+ };
81
+ }
82
+ putSystemMessage('Obtained git context parameters', requestGitContextCall);
83
+ // Add the original assistant message and the inferred function call to the main prompt
84
+ prompt.push({
85
+ type: 'assistant',
86
+ text: iterateCall.args?.message ?? '',
87
+ functionCalls: [requestGitContextCall],
88
+ });
89
+ const args = requestGitContextCall.args;
90
+ const git = simpleGit(rcConfig.rootDir);
91
+ let responseContent = '';
92
+ let errorMessage = '';
93
+ try {
94
+ const isRepo = await git.checkIsRepo();
95
+ if (!isRepo) {
96
+ throw new Error('The project directory is not a Git repository.');
97
+ }
98
+ // Common validation for file path
99
+ const validateFilePath = (requiredFor) => {
100
+ if (!args.filePath) {
101
+ throw new Error(`filePath is required for ${requiredFor} request.`);
102
+ }
103
+ if (!path.isAbsolute(args.filePath)) {
104
+ throw new Error(`filePath must be an absolute path for ${requiredFor} request.`);
105
+ }
106
+ const absoluteFilePath = args.filePath;
107
+ if (!absoluteFilePath.startsWith(rcConfig.rootDir)) {
108
+ throw new Error(`Access denied: filePath is outside the project root for ${requiredFor} request.`);
109
+ }
110
+ return absoluteFilePath;
111
+ };
112
+ // Common validation for commit hash
113
+ const validateCommitHash = (requiredFor) => {
114
+ if (!args.commitHash) {
115
+ throw new Error(`commitHash is required for ${requiredFor} request.`);
116
+ }
117
+ return args.commitHash;
118
+ };
119
+ switch (args.requestType) {
120
+ case 'commits': {
121
+ const logOptions = {};
122
+ if (args.count && args.count > 0) {
123
+ logOptions['--max-count'] = args.count;
124
+ }
125
+ const log = await git.log(logOptions);
126
+ responseContent = `Recent commits:\n${formatLog(log)}`;
127
+ break;
128
+ }
129
+ case 'fileChanges': {
130
+ const absoluteFilePath = validateFilePath('fileChanges');
131
+ const logOptions = { file: absoluteFilePath };
132
+ if (args.count && args.count > 0) {
133
+ logOptions['--max-count'] = args.count;
134
+ }
135
+ const log = await git.log(logOptions);
136
+ responseContent = `Changes for ${args.filePath}:\n${formatLog(log)}`;
137
+ break;
138
+ }
139
+ case 'blame': {
140
+ const absoluteFilePath = validateFilePath('blame');
141
+ const blameCommandArgs = ['blame'];
142
+ if (args.commitHash) {
143
+ // Include the commit hash in the command arguments before the file path
144
+ blameCommandArgs.push(args.commitHash);
145
+ }
146
+ // Use '--' to clearly separate the commit/options from the file path
147
+ blameCommandArgs.push('--', absoluteFilePath);
148
+ const blame = await git.raw(...blameCommandArgs);
149
+ responseContent = `Blame for ${args.filePath}${args.commitHash ? ` at commit ${args.commitHash.substring(0, 7)}` : ''}:\n${formatBlame(blame)}`;
150
+ break;
151
+ }
152
+ case 'fileDiff': {
153
+ const absoluteFilePath = validateFilePath('fileDiff');
154
+ const commitHash = validateCommitHash('fileDiff');
155
+ // Use commitHash~1...commitHash to get the diff for that specific commit
156
+ const diff = await git.diff([`${commitHash}~1..${commitHash}`, '--', absoluteFilePath]);
157
+ responseContent = `Diff for ${args.filePath} at commit ${commitHash.substring(0, 7)}:\n${formatDiff(diff)}`;
158
+ break;
159
+ }
160
+ case 'workingChanges': {
161
+ if (args.stagedOnly && args.unstagedOnly) {
162
+ throw new Error('stagedOnly and unstagedOnly are mutually exclusive.');
163
+ }
164
+ const status = await git.status();
165
+ const getAbsPath = (p) => path.resolve(rcConfig.rootDir, p);
166
+ let stagedFiles = status.staged.map(getAbsPath);
167
+ let unstagedFiles = [
168
+ ...status.modified.map((p) => `${getAbsPath(p)} (Modified)`),
169
+ ...status.deleted.map((p) => `${getAbsPath(p)} (Deleted)`),
170
+ ...status.created.map((p) => `${getAbsPath(p)} (Created)`),
171
+ ...status.renamed.map((r) => `${getAbsPath(r.from)} -> ${getAbsPath(r.to)} (Renamed)`),
172
+ ];
173
+ let untrackedFiles = args.includeUntracked !== false ? status.not_added.map(getAbsPath) : [];
174
+ if (args.stagedOnly) {
175
+ unstagedFiles = [];
176
+ untrackedFiles = [];
177
+ }
178
+ if (args.unstagedOnly) {
179
+ stagedFiles = [];
180
+ }
181
+ if (stagedFiles.length === 0 && unstagedFiles.length === 0 && untrackedFiles.length === 0) {
182
+ responseContent = 'Working tree is clean (according to the specified filters).';
183
+ }
184
+ else {
185
+ let output = 'Working copy changes:';
186
+ if (stagedFiles.length > 0 && !args.unstagedOnly) {
187
+ output += `\n\nStaged:\n - ${stagedFiles.join('\n - ')}`;
188
+ }
189
+ if (unstagedFiles.length > 0 && !args.stagedOnly) {
190
+ output += `\n\nUnstaged:\n - ${unstagedFiles.join('\n - ')}`;
191
+ }
192
+ if (untrackedFiles.length > 0 && !args.stagedOnly && !args.unstagedOnly) {
193
+ output += `\n\nUntracked:\n - ${untrackedFiles.join('\n - ')}`;
194
+ }
195
+ responseContent = output.trim();
196
+ }
197
+ break;
198
+ }
199
+ case 'workingDiff': {
200
+ const absoluteFilePath = validateFilePath('workingDiff');
201
+ const status = await git.status();
202
+ const relativeFilePath = path.relative(rcConfig.rootDir, absoluteFilePath);
203
+ const isUntracked = status.not_added.includes(relativeFilePath);
204
+ const isStaged = status.staged.includes(relativeFilePath);
205
+ if (isUntracked && !isStaged && !args.staged) {
206
+ responseContent = `File '${args.filePath}' is untracked and not staged. 'git diff' will not show any output for unstaged changes. Stage the file to see its initial content diff.`;
207
+ }
208
+ else {
209
+ const diffArgs = args.staged ? ['--cached', '--', absoluteFilePath] : ['--', absoluteFilePath];
210
+ const diff = await git.diff(diffArgs);
211
+ const diffContent = diff || 'No changes found.';
212
+ responseContent = `Diff for ${args.filePath}${args.staged ? ' (staged)' : ''}:${formatDiff(diffContent)}`;
213
+ }
214
+ break;
215
+ }
216
+ default: {
217
+ // Should be caught by function call validation, but handle defensively
218
+ throw new Error(`Invalid requestType received: ${args.requestType}`);
219
+ }
220
+ }
221
+ }
222
+ catch (error) {
223
+ console.error('Error fetching Git context:', error);
224
+ errorMessage =
225
+ error instanceof Error
226
+ ? `Error fetching Git context: ${error.message}`
227
+ : 'An unknown error occurred while fetching Git context.';
228
+ }
229
+ putSystemMessage('Git context response', {
230
+ responseContent,
231
+ errorMessage,
232
+ });
233
+ // Add the function response (result or error) to the main prompt
234
+ prompt.push({
235
+ type: 'user',
236
+ functionResponses: [
237
+ {
238
+ name: 'requestGitContext', // Use the actual function name
239
+ call_id: requestGitContextCall.id,
240
+ content: errorMessage || responseContent,
241
+ isError: !!errorMessage,
242
+ },
243
+ ],
244
+ });
245
+ return {
246
+ breakLoop: false,
247
+ items: [],
248
+ };
249
+ };
250
+ registerActionHandler('requestGitContext', handleRequestGitContext);
251
+ //# sourceMappingURL=handle-request-git-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle-request-git-context.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-iterate/handlers/handle-request-git-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { ActionHandlerProps, ActionResult } from '../step-iterate-types.js';
2
+ export declare function handleRequestPermissions({ iterateCall, options, prompt, generateContentFn, }: ActionHandlerProps): Promise<ActionResult>;
@@ -0,0 +1,83 @@
1
+ import { ModelType } from '../../../../ai-service/common-types.js';
2
+ import { askUserForConfirmation } from '../../../../main/common/user-actions.js';
3
+ import { getFunctionDefs } from '../../../function-calling.js';
4
+ import { registerActionHandler } from '../step-iterate-handlers.js';
5
+ registerActionHandler('requestPermissions', handleRequestPermissions);
6
+ export async function handleRequestPermissions({ iterateCall, options, prompt, generateContentFn, }) {
7
+ const [requestPermissionsCall] = (await generateContentFn([
8
+ ...prompt,
9
+ {
10
+ type: 'assistant',
11
+ text: iterateCall.args?.message ?? '',
12
+ },
13
+ {
14
+ type: 'user',
15
+ text: 'Yes, you can request the permissions.',
16
+ },
17
+ ], {
18
+ functionDefs: getFunctionDefs(),
19
+ requiredFunctionName: 'requestPermissions',
20
+ temperature: 0.7,
21
+ modelType: ModelType.CHEAP,
22
+ expectedResponseType: {
23
+ text: false,
24
+ functionCall: true,
25
+ media: false,
26
+ },
27
+ }, options))
28
+ .filter((item) => item.type === 'functionCall')
29
+ .map((item) => item.functionCall);
30
+ if (!requestPermissionsCall) {
31
+ return {
32
+ breakLoop: false,
33
+ items: [],
34
+ };
35
+ }
36
+ const userConfirmation = await askUserForConfirmation('The assistant is requesting additional permissions. Do you want to grant them?', false, options);
37
+ const user = {
38
+ type: 'user',
39
+ text: userConfirmation ? 'Permissions granted.' : 'Permission request denied.',
40
+ functionResponses: [
41
+ {
42
+ name: 'requestPermissions',
43
+ call_id: requestPermissionsCall.id,
44
+ content: JSON.stringify({ confirmed: userConfirmation.confirmed }),
45
+ },
46
+ ],
47
+ };
48
+ if (userConfirmation.confirmed) {
49
+ updatePermissions(requestPermissionsCall, options);
50
+ }
51
+ return {
52
+ breakLoop: false,
53
+ items: [
54
+ {
55
+ assistant: {
56
+ type: 'assistant',
57
+ text: iterateCall.args?.message ?? '',
58
+ functionCalls: [requestPermissionsCall],
59
+ },
60
+ user,
61
+ },
62
+ ],
63
+ };
64
+ }
65
+ function updatePermissions(requestPermissionsCall, options) {
66
+ const permissions = requestPermissionsCall.args;
67
+ if (permissions) {
68
+ if ('enableImagen' in permissions && permissions.enableImagen) {
69
+ options.imagen = options.aiService === 'openai' ? 'dall-e' : 'vertex-ai';
70
+ }
71
+ if ('enableVision' in permissions && permissions.enableVision)
72
+ options.vision = true;
73
+ if ('allowDirectoryCreate' in permissions && permissions.allowDirectoryCreate)
74
+ options.allowDirectoryCreate = true;
75
+ if ('allowFileCreate' in permissions && permissions.allowFileCreate)
76
+ options.allowFileCreate = true;
77
+ if ('allowFileDelete' in permissions && permissions.allowFileDelete)
78
+ options.allowFileDelete = true;
79
+ if ('allowFileMove' in permissions && permissions.allowFileMove)
80
+ options.allowFileMove = true;
81
+ }
82
+ }
83
+ //# sourceMappingURL=handle-request-permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle-request-permissions.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-iterate/handlers/handle-request-permissions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { ActionHandlerProps, ActionResult } from '../step-iterate-types.js';
2
+ export declare function handleRunBashCommand({ generateContentFn, iterateCall, prompt, options, }: ActionHandlerProps): Promise<ActionResult>;
@@ -0,0 +1,185 @@
1
+ import { exec } from 'child_process';
2
+ import { promisify } from 'util';
3
+ import { putSystemMessage, putUserMessage } from '../../../../main/common/content-bus.js';
4
+ import { rcConfig } from '../../../../main/config.js';
5
+ import { registerActionHandler } from '../step-iterate-handlers.js';
6
+ import { ModelType } from '../../../../ai-service/common-types.js';
7
+ import { getFunctionDefs } from '../../../function-calling.js';
8
+ import { askUserForConfirmationWithAnswer } from '../../../../main/common/user-actions.js';
9
+ const execPromise = promisify(exec);
10
+ export async function handleRunBashCommand({ generateContentFn, iterateCall, prompt, options, }) {
11
+ const runBashCommandRequest = [
12
+ [
13
+ ...prompt,
14
+ {
15
+ type: 'assistant',
16
+ text: iterateCall.args?.message ?? '',
17
+ },
18
+ ],
19
+ {
20
+ functionDefs: getFunctionDefs(),
21
+ requiredFunctionName: 'runBashCommand',
22
+ modelType: ModelType.CHEAP,
23
+ temperature: 0.7,
24
+ expectedResponseType: { text: false, functionCall: true, media: false },
25
+ },
26
+ options,
27
+ ];
28
+ const runBashCommandResult = await generateContentFn(...runBashCommandRequest);
29
+ const runBashCommandCall = runBashCommandResult
30
+ .filter((item) => item.type === 'functionCall')
31
+ .map((item) => item.functionCall)
32
+ .find((call) => call.name === 'runBashCommand');
33
+ if (!runBashCommandCall?.args) {
34
+ putSystemMessage('No runBashCommand call found in the assistant response.');
35
+ prompt.push({
36
+ type: 'assistant',
37
+ text: iterateCall.args.message,
38
+ }, {
39
+ type: 'user',
40
+ text: 'No runBashCommand call found in the assistant response.',
41
+ });
42
+ return { breakLoop: false, items: [] };
43
+ }
44
+ const { command, env: envOverride, workingDirOverride, truncMode = 'summarize' } = runBashCommandCall.args;
45
+ const confirmation = await askUserForConfirmationWithAnswer(`Do you want to run the bash command "${command}"?`, 'Run command', 'Reject', true, options);
46
+ if (confirmation.answer) {
47
+ putUserMessage(confirmation.answer);
48
+ }
49
+ if (!confirmation.confirmed) {
50
+ putSystemMessage(`Bash command "${command}" cancelled by user.`);
51
+ prompt.push({
52
+ type: 'assistant',
53
+ text: iterateCall.args.message,
54
+ functionCalls: [{ name: 'runBashCommand', id: iterateCall.id + '_runBashCommand', args: { command } }],
55
+ }, {
56
+ type: 'user',
57
+ text: `I reject running the bash command "${command}".` + (confirmation.answer ? ` ${confirmation.answer}` : ''),
58
+ functionResponses: [
59
+ {
60
+ name: 'runBashCommand',
61
+ call_id: iterateCall.id + '_runBashCommand',
62
+ content: JSON.stringify({ error: 'User rejected command execution.' }),
63
+ isError: true,
64
+ },
65
+ ],
66
+ });
67
+ return { breakLoop: false, items: [] };
68
+ }
69
+ const cwd = workingDirOverride || rcConfig.rootDir;
70
+ const env = { ...process.env, ...envOverride };
71
+ putSystemMessage(`Executing bash command: ${command}`, {
72
+ cwd,
73
+ envOverride,
74
+ truncMode,
75
+ workingDirOverride,
76
+ });
77
+ let result;
78
+ try {
79
+ const { stdout, stderr } = await execPromise(command, { cwd, env });
80
+ result = { success: true, exitCode: 0, stdout, stderr };
81
+ putSystemMessage(`Bash command executed successfully.`, { stdout, stderr });
82
+ }
83
+ catch (error) {
84
+ const { code, stdout, stderr } = error;
85
+ result = {
86
+ success: false,
87
+ exitCode: code ?? 1,
88
+ stdout,
89
+ stderr,
90
+ };
91
+ putSystemMessage(`Bash command failed with exit code ${result.exitCode}.`, {
92
+ stdout: result.stdout,
93
+ stderr: result.stderr,
94
+ });
95
+ }
96
+ // Handle output truncation
97
+ if (truncMode === 'first') {
98
+ result.stdout = truncateOutput(result.stdout, 'first');
99
+ result.stderr = truncateOutput(result.stderr, 'first');
100
+ }
101
+ else if (truncMode === 'last') {
102
+ result.stdout = truncateOutput(result.stdout, 'last');
103
+ result.stderr = truncateOutput(result.stderr, 'last');
104
+ }
105
+ else if (truncMode === 'summarize') {
106
+ if (result.stdout.length > 0) {
107
+ result.stdout = await summarizeOutput(result.stdout, generateContentFn, options);
108
+ }
109
+ if (result.stderr.length > 0) {
110
+ result.stderr = await summarizeOutput(result.stderr, generateContentFn, options);
111
+ }
112
+ }
113
+ putSystemMessage(`Command output sent to AI`, {
114
+ truncMode,
115
+ stdout: result.stdout,
116
+ stderr: result.stderr,
117
+ });
118
+ prompt.push({
119
+ type: 'assistant',
120
+ functionCalls: [{ name: 'runBashCommand', id: iterateCall.id + '_runBashCommand', args: { command } }],
121
+ }, {
122
+ type: 'user',
123
+ text: `Command "${command}" finished with exit code ${result.exitCode}. Please analyze the output.`,
124
+ functionResponses: [
125
+ {
126
+ name: 'runBashCommand',
127
+ call_id: iterateCall.id + '_runBashCommand',
128
+ content: JSON.stringify(result),
129
+ },
130
+ ],
131
+ });
132
+ return {
133
+ breakLoop: false,
134
+ items: [],
135
+ };
136
+ }
137
+ const MAX_OUTPUT_LENGTH = 2000;
138
+ const TRUNCATE_LINES = 200;
139
+ const TRUNCATE_CHARS = 1000;
140
+ function truncateOutput(output, mode) {
141
+ if (output.length <= MAX_OUTPUT_LENGTH) {
142
+ return output;
143
+ }
144
+ const lines = output.split('\\n');
145
+ if (mode === 'first') {
146
+ const truncatedLines = lines.slice(0, TRUNCATE_LINES).join('\\n');
147
+ return truncatedLines.length > TRUNCATE_CHARS ? truncatedLines.substring(0, TRUNCATE_CHARS) : truncatedLines;
148
+ }
149
+ else {
150
+ // mode === 'last'
151
+ const truncatedLines = lines.slice(-TRUNCATE_LINES).join('\\n');
152
+ return truncatedLines.length > TRUNCATE_CHARS
153
+ ? truncatedLines.substring(truncatedLines.length - TRUNCATE_CHARS)
154
+ : truncatedLines;
155
+ }
156
+ }
157
+ async function summarizeOutput(output, generateContentFn, options) {
158
+ if (output.length <= MAX_OUTPUT_LENGTH) {
159
+ return output;
160
+ }
161
+ putSystemMessage('Summarizing command output...');
162
+ const summaryPrompt = [
163
+ {
164
+ type: 'user',
165
+ text: `Please summarize the following command output:\\n\\n---\\n\\n${output}`,
166
+ },
167
+ ];
168
+ const summaryRequest = [
169
+ summaryPrompt,
170
+ {
171
+ modelType: ModelType.LITE,
172
+ expectedResponseType: { text: true, functionCall: false, media: false },
173
+ },
174
+ options,
175
+ ];
176
+ const summaryResult = await generateContentFn(...summaryRequest);
177
+ const summaryText = summaryResult.find((part) => part.type === 'text')?.text;
178
+ if (!summaryText) {
179
+ putSystemMessage('Failed to summarize output, returning truncated version.');
180
+ return truncateOutput(output, 'first');
181
+ }
182
+ return summaryText;
183
+ }
184
+ registerActionHandler('runBashCommand', handleRunBashCommand);
185
+ //# sourceMappingURL=handle-run-bash-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle-run-bash-command.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-iterate/handlers/handle-run-bash-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC1F,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAqC,SAAS,EAAc,MAAM,wCAAwC,CAAC;AAClH,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,gCAAgC,EAAE,MAAM,yCAAyC,CAAC;AAE3F,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,EACzC,iBAAiB,EACjB,WAAW,EACX,MAAM,EACN,OAAO,GACY;IACnB,MAAM,qBAAqB,GAAwB;QACjD;YACE,GAAG,MAAM;YACT;gBACE,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE;aACtC;SACF;QACD;YACE,YAAY,EAAE,eAAe,EAAE;YAC/B,oBAAoB,EAAE,gBAAgB;YACtC,SAAS,EAAE,SAAS,CAAC,KAAK;YAC1B,WAAW,EAAE,GAAG;YAChB,oBAAoB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;SACxE;QACD,OAAO;KACR,CAAC;IACF,MAAM,oBAAoB,GAAG,MAAM,iBAAiB,CAAC,GAAG,qBAAqB,CAAC,CAAC;IAC/E,MAAM,kBAAkB,GAAG,oBAAoB;SAC5C,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC;SAC9C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC;SAChC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAiD,CAAC;IAElG,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC;QAC9B,gBAAgB,CAAC,yDAAyD,CAAC,CAAC;QAC5E,MAAM,CAAC,IAAI,CACT;YACE,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,WAAW,CAAC,IAAK,CAAC,OAAO;SAChC,EACD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,yDAAyD;SAChE,CACF,CAAC;QACF,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACzC,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,kBAAkB,EAAE,SAAS,GAAG,WAAW,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC;IAE3G,MAAM,YAAY,GAAG,MAAM,gCAAgC,CACzD,wCAAwC,OAAO,IAAI,EACnD,aAAa,EACb,QAAQ,EACR,IAAI,EACJ,OAAO,CACR,CAAC;IAEF,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QACxB,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;QAC5B,gBAAgB,CAAC,iBAAiB,OAAO,sBAAsB,CAAC,CAAC;QACjE,MAAM,CAAC,IAAI,CACT;YACE,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,WAAW,CAAC,IAAK,CAAC,OAAO;YAC/B,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,GAAG,iBAAiB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;SACvG,EACD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EACF,sCAAsC,OAAO,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5G,iBAAiB,EAAE;gBACjB;oBACE,IAAI,EAAE,gBAAgB;oBACtB,OAAO,EAAE,WAAW,CAAC,EAAE,GAAG,iBAAiB;oBAC3C,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC;oBACtE,OAAO,EAAE,IAAI;iBACd;aACF;SACF,CACF,CAAC;QACF,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACzC,CAAC;IAED,MAAM,GAAG,GAAG,kBAAkB,IAAI,QAAQ,CAAC,OAAO,CAAC;IACnD,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC;IAE/C,gBAAgB,CAAC,2BAA2B,OAAO,EAAE,EAAE;QACrD,GAAG;QACH,WAAW;QACX,SAAS;QACT,kBAAkB;KACnB,CAAC,CAAC;IAEH,IAAI,MAA4B,CAAC;IAEjC,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QACpE,MAAM,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACxD,gBAAgB,CAAC,qCAAqC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAyD,CAAC;QAC3F,MAAM,GAAG;YACP,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,IAAI,IAAI,CAAC;YACnB,MAAM;YACN,MAAM;SACP,CAAC;QACF,gBAAgB,CAAC,sCAAsC,MAAM,CAAC,QAAQ,GAAG,EAAE;YACzE,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;IACL,CAAC;IAED,2BAA2B;IAC3B,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QAC1B,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;SAAM,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QAChC,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;SAAM,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;QACrC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IACD,gBAAgB,CAAC,2BAA2B,EAAE;QAC5C,SAAS;QACT,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CACT;QACE,IAAI,EAAE,WAAW;QACjB,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,GAAG,iBAAiB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;KACvG,EACD;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,YAAY,OAAO,6BAA6B,MAAM,CAAC,QAAQ,8BAA8B;QACnG,iBAAiB,EAAE;YACjB;gBACE,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,WAAW,CAAC,EAAE,GAAG,iBAAiB;gBAC3C,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;aAChC;SACF;KACF,CACF,CAAC;IAEF,OAAO;QACL,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,EAAE;KACV,CAAC;AACJ,CAAC;AAED,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B,MAAM,cAAc,GAAG,GAAG,CAAC;AAC3B,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B,SAAS,cAAc,CAAC,MAAc,EAAE,IAAsB;IAC5D,IAAI,MAAM,CAAC,MAAM,IAAI,iBAAiB,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClE,OAAO,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;IAC/G,CAAC;SAAM,CAAC;QACN,kBAAkB;QAClB,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChE,OAAO,cAAc,CAAC,MAAM,GAAG,cAAc;YAC3C,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,GAAG,cAAc,CAAC;YAClE,CAAC,CAAC,cAAc,CAAC;IACrB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,MAAc,EACd,iBAA0D,EAC1D,OAAsC;IAEtC,IAAI,MAAM,CAAC,MAAM,IAAI,iBAAiB,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,gBAAgB,CAAC,+BAA+B,CAAC,CAAC;IAClD,MAAM,aAAa,GAAiB;QAClC;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,gEAAgE,MAAM,EAAE;SAC/E;KACF,CAAC;IACF,MAAM,cAAc,GAAwB;QAC1C,aAAa;QACb;YACE,SAAS,EAAE,SAAS,CAAC,IAAI;YACzB,oBAAoB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;SACxE;QACD,OAAO;KACR,CAAC;IACF,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,GAAG,cAAc,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC;IAC7E,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,gBAAgB,CAAC,0DAA0D,CAAC,CAAC;QAC7E,OAAO,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,qBAAqB,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ActionHandlerProps, ActionResult } from '../step-iterate-types.js';
2
+ export declare function handleRunContainerTask(props: ActionHandlerProps): Promise<ActionResult>;
@@ -0,0 +1,7 @@
1
+ import { registerActionHandler } from '../step-iterate-handlers.js';
2
+ import { runContainerTaskOrchestrator } from './container-task/container-task-orchestrator.js';
3
+ export async function handleRunContainerTask(props) {
4
+ return runContainerTaskOrchestrator(props);
5
+ }
6
+ registerActionHandler('runContainerTask', handleRunContainerTask);
7
+ //# sourceMappingURL=handle-run-container-task.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle-run-container-task.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-iterate/handlers/handle-run-container-task.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAE/F,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,KAAyB;IACpE,OAAO,4BAA4B,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC;AAED,qBAAqB,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ActionHandlerProps, ActionResult } from '../step-iterate-types.js';
2
+ export declare function handleSearchCode({ iterateCall, generateContentFn, prompt, options, }: ActionHandlerProps): Promise<ActionResult>;