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,96 @@
1
+ import { searchSourceCode } from '../../../../files/search-files.js';
2
+ import { ModelType } from '../../../../ai-service/common-types.js';
3
+ import { getFunctionDefs } from '../../../function-calling.js';
4
+ import { putSystemMessage } from '../../../../main/common/content-bus.js';
5
+ import { registerActionHandler } from '../step-iterate-handlers.js';
6
+ registerActionHandler('searchCode', handleSearchCode);
7
+ export async function handleSearchCode({ iterateCall, generateContentFn, prompt, options, }) {
8
+ try {
9
+ const searchCodeCall = await generateSearchCodeCall(generateContentFn, prompt, iterateCall, options);
10
+ // Extract search parameters from the call arguments
11
+ const args = searchCodeCall?.args;
12
+ if (!searchCodeCall || !args?.query) {
13
+ throw new Error('Missing search query in searchCode call');
14
+ }
15
+ // Set default values for optional parameters
16
+ const searchParams = {
17
+ searchInContent: true,
18
+ searchInFilenames: true,
19
+ caseSensitive: false,
20
+ maxResults: 50,
21
+ contextLines: 2,
22
+ ...args,
23
+ };
24
+ putSystemMessage('Searching code', searchParams);
25
+ // Execute the search
26
+ const searchResults = searchSourceCode(searchParams);
27
+ putSystemMessage('Search completed', searchResults);
28
+ // Return results in ActionResult format
29
+ return {
30
+ breakLoop: false,
31
+ items: [
32
+ {
33
+ assistant: {
34
+ type: 'assistant',
35
+ text: iterateCall.args?.message ?? '',
36
+ functionCalls: [searchCodeCall],
37
+ },
38
+ user: {
39
+ type: 'user',
40
+ functionResponses: [
41
+ {
42
+ name: 'searchCode',
43
+ call_id: searchCodeCall.id,
44
+ content: JSON.stringify(searchResults),
45
+ },
46
+ ],
47
+ },
48
+ },
49
+ ],
50
+ };
51
+ }
52
+ catch (error) {
53
+ // Handle errors and return appropriate message
54
+ const errorMessage = error instanceof Error ? error.message : 'An unknown error occurred during search';
55
+ putSystemMessage(`Error during searchCode: ${errorMessage}`);
56
+ prompt.push({
57
+ type: 'assistant',
58
+ text: `Error performing search: ${errorMessage}\nPlease try again with valid search parameters.`,
59
+ });
60
+ prompt.push({
61
+ type: 'user',
62
+ text: 'Let me try again with different search parameters.',
63
+ });
64
+ return {
65
+ breakLoop: false,
66
+ items: [],
67
+ };
68
+ }
69
+ }
70
+ async function generateSearchCodeCall(generateContentFn, prompt, iterateCall, options) {
71
+ const [searchCodeCall] = (await generateContentFn([
72
+ ...prompt,
73
+ {
74
+ type: 'assistant',
75
+ text: iterateCall.args?.message ?? '',
76
+ },
77
+ {
78
+ type: 'user',
79
+ text: 'Yes, you can search the code.',
80
+ },
81
+ ], {
82
+ functionDefs: getFunctionDefs(),
83
+ requiredFunctionName: 'searchCode',
84
+ temperature: 0.7,
85
+ modelType: ModelType.CHEAP,
86
+ expectedResponseType: {
87
+ text: false,
88
+ functionCall: true,
89
+ media: false,
90
+ },
91
+ }, options))
92
+ .filter((item) => item.type === 'functionCall')
93
+ .map((item) => item.functionCall);
94
+ return searchCodeCall;
95
+ }
96
+ //# sourceMappingURL=handle-search-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle-search-code.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-iterate/handlers/handle-search-code.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { ActionHandlerProps, ActionResult } from '../step-iterate-types.js';
2
+ export declare function handleSendMessage({ iterateCall, options }: ActionHandlerProps): Promise<ActionResult>;
@@ -0,0 +1,21 @@
1
+ import { askUserForInput } from '../../../../main/common/user-actions.js';
2
+ import { registerActionHandler } from '../step-iterate-handlers.js';
3
+ registerActionHandler('sendMessage', handleSendMessage);
4
+ export async function handleSendMessage({ iterateCall, options }) {
5
+ const response = await askUserForInput('Your answer', '', options, true);
6
+ return {
7
+ breakLoop: false,
8
+ forceActionType: response.selectedActionType,
9
+ items: [
10
+ {
11
+ assistant: { type: 'assistant', text: iterateCall.args?.message ?? '' },
12
+ user: {
13
+ type: 'user',
14
+ text: response.answer,
15
+ images: response.images,
16
+ },
17
+ },
18
+ ],
19
+ };
20
+ }
21
+ //# sourceMappingURL=handle-send-message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle-send-message.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-iterate/handlers/handle-send-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAGpE,qBAAqB,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EAAE,WAAW,EAAE,OAAO,EAAsB;IAClF,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,aAAa,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACzE,OAAO;QACL,SAAS,EAAE,KAAK;QAChB,eAAe,EAAE,QAAQ,CAAC,kBAAkB;QAC5C,KAAK,EAAE;YACL;gBACE,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,EAAE;gBACvE,IAAI,EAAE;oBACJ,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,QAAQ,CAAC,MAAM;oBACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;iBACxB;aACF;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,72 @@
1
+ import { registerActionHandler } from '../step-iterate-handlers.js';
2
+ import { askUserForStructuredQuestion } from '../../../../main/common/user-actions.js';
3
+ import { ModelType, } from '../../../../ai-service/common-types.js';
4
+ import { getFunctionDefs } from '../../../function-calling.js';
5
+ import { putSystemMessage } from '../../../../main/common/content-bus.js';
6
+ async function handleStructuredQuestion({ iterateCall, generateContentFn, prompt, options, }) {
7
+ const structuredQuestionCall = await generateStructuredQuestionCall(generateContentFn, prompt, iterateCall, options, ModelType.CHEAP);
8
+ putSystemMessage('Presenting structured question', { ...structuredQuestionCall?.args });
9
+ if (!structuredQuestionCall?.args) {
10
+ return {
11
+ breakLoop: false,
12
+ items: [],
13
+ };
14
+ }
15
+ const userResponse = await askUserForStructuredQuestion(structuredQuestionCall.args.form, options);
16
+ putSystemMessage('Received structured question response', { ...userResponse });
17
+ return {
18
+ breakLoop: false,
19
+ items: [
20
+ {
21
+ assistant: {
22
+ type: 'assistant',
23
+ text: structuredQuestionCall.args?.message ?? 'Please complete the form.',
24
+ functionCalls: [structuredQuestionCall],
25
+ },
26
+ user: {
27
+ type: 'user',
28
+ functionResponses: [
29
+ {
30
+ name: 'structuredQuestion',
31
+ call_id: structuredQuestionCall.id,
32
+ content: JSON.stringify(userResponse),
33
+ },
34
+ ],
35
+ },
36
+ },
37
+ ],
38
+ };
39
+ }
40
+ async function generateStructuredQuestionCall(generateContentFn, prompt, iterateCall, options, modelType) {
41
+ const req = [
42
+ [
43
+ ...prompt,
44
+ {
45
+ type: 'assistant',
46
+ text: iterateCall.args?.message ?? 'I need to ask a structured question.',
47
+ },
48
+ {
49
+ type: 'user',
50
+ text: 'Yes, you can ask the structured question.',
51
+ },
52
+ ],
53
+ {
54
+ functionDefs: getFunctionDefs(),
55
+ requiredFunctionName: 'structuredQuestion',
56
+ temperature: 0.7,
57
+ modelType,
58
+ expectedResponseType: {
59
+ text: false,
60
+ functionCall: true,
61
+ media: false,
62
+ },
63
+ },
64
+ options,
65
+ ];
66
+ const [structuredQuestionCall] = (await generateContentFn(...req))
67
+ .filter((item) => item.type === 'functionCall')
68
+ .map((item) => item.functionCall);
69
+ return structuredQuestionCall;
70
+ }
71
+ registerActionHandler('structuredQuestion', handleStructuredQuestion);
72
+ //# sourceMappingURL=handle-structured-question.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle-structured-question.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-iterate/handlers/handle-structured-question.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAC;AACvF,OAAO,EAIL,SAAS,GAEV,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAE1E,KAAK,UAAU,wBAAwB,CAAC,EACtC,WAAW,EACX,iBAAiB,EACjB,MAAM,EACN,OAAO,GACY;IACnB,MAAM,sBAAsB,GAAG,MAAM,8BAA8B,CACjE,iBAAiB,EACjB,MAAM,EACN,WAAW,EACX,OAAO,EACP,SAAS,CAAC,KAAK,CAChB,CAAC;IAEF,gBAAgB,CAAC,gCAAgC,EAAE,EAAE,GAAG,sBAAsB,EAAE,IAAI,EAAE,CAAC,CAAC;IAExF,IAAI,CAAC,sBAAsB,EAAE,IAAI,EAAE,CAAC;QAClC,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,EAAE;SACV,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,4BAA4B,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAEnG,gBAAgB,CAAC,uCAAuC,EAAE,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC;IAE/E,OAAO;QACL,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE;YACL;gBACE,SAAS,EAAE;oBACT,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,sBAAsB,CAAC,IAAI,EAAE,OAAO,IAAI,2BAA2B;oBACzE,aAAa,EAAE,CAAC,sBAAsB,CAAC;iBACxC;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,MAAM;oBACZ,iBAAiB,EAAE;wBACjB;4BACE,IAAI,EAAE,oBAAoB;4BAC1B,OAAO,EAAE,sBAAsB,CAAC,EAAE;4BAClC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;yBACtC;qBACF;iBACF;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,8BAA8B,CAC3C,iBAA0C,EAC1C,MAAoB,EACpB,WAAwB,EACxB,OAAuB,EACvB,SAAoB;IAEpB,MAAM,GAAG,GAAwB;QAC/B;YACE,GAAG,MAAM;YACT;gBACE,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,IAAI,sCAAsC;aAC1E;YACD;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,2CAA2C;aAClD;SACF;QACD;YACE,YAAY,EAAE,eAAe,EAAE;YAC/B,oBAAoB,EAAE,oBAAoB;YAC1C,WAAW,EAAE,GAAG;YAChB,SAAS;YACT,oBAAoB,EAAE;gBACpB,IAAI,EAAE,KAAK;gBACX,YAAY,EAAE,IAAI;gBAClB,KAAK,EAAE,KAAK;aACb;SACF;QACD,OAAO;KACR,CAAC;IACF,MAAM,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,iBAAiB,CAAC,GAAG,GAAG,CAAC,CAAC;SAC/D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC;SAC9C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAuD,CAAC;IAE1F,OAAO,sBAAsB,CAAC;AAChC,CAAC;AAED,qBAAqB,CAAC,oBAAoB,EAAE,wBAAyC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ActionHandlerProps, ActionResult } from '../step-iterate-types.js';
2
+ export declare function handleUpdateFile({ iterateCall, options, prompt, generateContentFn, }: ActionHandlerProps): Promise<ActionResult>;
@@ -0,0 +1,161 @@
1
+ import { executor as executeUpdateFile } from '../../../../operations/update-file/update-file-executor.js';
2
+ import { getSourceCode } from '../../../../files/read-files.js';
3
+ import { getFunctionDefs } from '../../../function-calling.js';
4
+ import { ModelType } from '../../../../ai-service/common-types.js';
5
+ import { askUserForConfirmationWithAnswer } from '../../../../main/common/user-actions.js';
6
+ import { putSystemMessage, putUserMessage } from '../../../../main/common/content-bus.js';
7
+ import { refreshFiles } from '../../../../files/find-files.js';
8
+ import { generateRequestFilesContentCall } from './handle-request-files-content.js';
9
+ import { executeStepEnsureContext } from '../../step-ensure-context.js';
10
+ import { registerActionHandler } from '../step-iterate-handlers.js';
11
+ registerActionHandler('updateFile', handleUpdateFile);
12
+ export async function handleUpdateFile({ iterateCall, options, prompt, generateContentFn, }) {
13
+ putSystemMessage('File update requested.', iterateCall);
14
+ // First confirmation: Ask user if they want to proceed with content generation
15
+ const generateConfirmation = await askUserForConfirmationWithAnswer('The assistant suggests generating new content for the file update. Do you want to proceed with content generation?', 'Generate content', 'Cancel content generation', false, options);
16
+ if (generateConfirmation.answer) {
17
+ putUserMessage(generateConfirmation.answer);
18
+ }
19
+ if (!generateConfirmation.confirmed) {
20
+ putSystemMessage('Content generation canceled.');
21
+ prompt.push({
22
+ type: 'assistant',
23
+ text: iterateCall.args?.message ?? '',
24
+ }, {
25
+ type: 'user',
26
+ text: 'Canceling file update.' + (generateConfirmation.answer ? ` ${generateConfirmation.answer}` : ''),
27
+ });
28
+ return {
29
+ breakLoop: false,
30
+ items: [],
31
+ };
32
+ }
33
+ putSystemMessage('Content generation started.');
34
+ // Ensure file content is available in the context
35
+ const requestedFilesCall = await generateRequestFilesContentCall(generateContentFn, prompt, iterateCall, options, ModelType.CHEAP);
36
+ if (requestedFilesCall) {
37
+ await executeStepEnsureContext(prompt, requestedFilesCall, options);
38
+ }
39
+ const [updateFileCall] = (await generateContentFn([
40
+ ...prompt,
41
+ {
42
+ type: 'assistant',
43
+ text: iterateCall.args?.message ?? '',
44
+ },
45
+ {
46
+ type: 'user',
47
+ text: 'Ok, please provide the update using `updateFile` function. Please remember to use absolute file path.' +
48
+ (generateConfirmation.answer ? ` ${generateConfirmation.answer}` : ''),
49
+ },
50
+ ], {
51
+ functionDefs: getFunctionDefs(),
52
+ requiredFunctionName: 'updateFile',
53
+ temperature: options.temperature ?? 0.7,
54
+ modelType: ModelType.DEFAULT,
55
+ expectedResponseType: {
56
+ text: false,
57
+ functionCall: true,
58
+ media: false,
59
+ },
60
+ }, options))
61
+ .filter((item) => item.type === 'functionCall')
62
+ .map((item) => item.functionCall);
63
+ if (!updateFileCall || !updateFileCall.args) {
64
+ return {
65
+ breakLoop: false,
66
+ items: [],
67
+ };
68
+ }
69
+ const { filePath } = updateFileCall.args;
70
+ const file = getSourceCode({ filterPaths: [filePath], forceAll: true }, options)[filePath];
71
+ if (!file || !('content' in file) || !file.content) {
72
+ // TODO: In this corner case we should probably retry the operation but prefix it with getSourceCode
73
+ prompt.push({
74
+ type: 'assistant',
75
+ text: iterateCall.args?.message ?? '',
76
+ }, {
77
+ type: 'user',
78
+ text: 'The file does not exist or is empty or its content is not present in the context.',
79
+ });
80
+ return {
81
+ breakLoop: false,
82
+ items: [],
83
+ };
84
+ }
85
+ putSystemMessage(`The assistant has generated new content for file ${filePath}.`, {
86
+ name: updateFileCall.name,
87
+ args: {
88
+ ...updateFileCall.args,
89
+ oldContent: file.content,
90
+ },
91
+ });
92
+ // Second confirmation: Ask user if they want to proceed with file update
93
+ const applyConfirmation = await askUserForConfirmationWithAnswer('The assistant has generated the new file content. Do you want to update the file?', 'Update file', 'Cancel update', false, options);
94
+ prompt.push({
95
+ type: 'assistant',
96
+ text: iterateCall.args.message,
97
+ functionCalls: [updateFileCall],
98
+ });
99
+ if (applyConfirmation.answer) {
100
+ putUserMessage(applyConfirmation.answer);
101
+ }
102
+ if (!applyConfirmation.confirmed) {
103
+ putSystemMessage('File update rejected.');
104
+ prompt.push({
105
+ type: 'user',
106
+ text: 'Rejecting file update.' + (applyConfirmation.answer ? ` ${applyConfirmation.answer}` : ''),
107
+ functionResponses: [
108
+ {
109
+ name: 'updateFile',
110
+ call_id: updateFileCall.id,
111
+ content: '',
112
+ },
113
+ ],
114
+ });
115
+ return {
116
+ breakLoop: false,
117
+ items: [],
118
+ };
119
+ }
120
+ try {
121
+ putSystemMessage('Applying file update');
122
+ await executeUpdateFile(updateFileCall.args);
123
+ refreshFiles();
124
+ prompt.push({
125
+ type: 'user',
126
+ text: 'Accepting file update.' + (applyConfirmation.answer ? ` ${applyConfirmation.answer}` : ''),
127
+ functionResponses: [
128
+ {
129
+ name: 'updateFile',
130
+ call_id: updateFileCall.id,
131
+ content: '',
132
+ },
133
+ ],
134
+ });
135
+ return {
136
+ breakLoop: false,
137
+ items: [],
138
+ };
139
+ }
140
+ catch {
141
+ putSystemMessage('File update failed.');
142
+ prompt.push({
143
+ type: 'user',
144
+ text: 'Accepting file update.' +
145
+ (applyConfirmation.answer ? ` ${applyConfirmation.answer}` : '') +
146
+ ' Unfortunately, the file update failed, the new content was not saved.',
147
+ functionResponses: [
148
+ {
149
+ name: 'updateFile',
150
+ call_id: updateFileCall.id,
151
+ content: '',
152
+ },
153
+ ],
154
+ });
155
+ return {
156
+ breakLoop: false,
157
+ items: [],
158
+ };
159
+ }
160
+ }
161
+ //# sourceMappingURL=handle-update-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle-update-file.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-iterate/handlers/handle-update-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ import { ModelType } from '../../../../ai-service/common-types.js';
2
+ import { putSystemMessage } from '../../../../main/common/content-bus.js';
3
+ import { getFunctionDefs } from '../../../function-calling.js';
4
+ import { registerActionHandler } from '../step-iterate-handlers.js';
5
+ const handleWebSearch = async ({ prompt, iterateCall, generateContentFn, options }) => {
6
+ const request = [
7
+ [
8
+ ...prompt,
9
+ {
10
+ type: 'assistant',
11
+ text: iterateCall.args.message,
12
+ },
13
+ {
14
+ type: 'user',
15
+ text: 'Please provide an exhaustie search query',
16
+ },
17
+ ],
18
+ {
19
+ functionDefs: getFunctionDefs(),
20
+ requiredFunctionName: 'webSearch',
21
+ temperature: 0.7,
22
+ modelType: ModelType.CHEAP,
23
+ expectedResponseType: {
24
+ text: false,
25
+ functionCall: true,
26
+ media: false,
27
+ },
28
+ },
29
+ options,
30
+ ];
31
+ putSystemMessage('Inferring web search query...');
32
+ const response = await generateContentFn(...request);
33
+ const webSearchCall = response
34
+ .filter((item) => item.type === 'functionCall')
35
+ .map((item) => item.functionCall).find((call) => call.name === 'webSearch');
36
+ if (!webSearchCall) {
37
+ putSystemMessage('No web search call received, skipping web search.');
38
+ prompt.push({
39
+ type: 'assistant',
40
+ text: iterateCall.args.message,
41
+ }, {
42
+ type: 'user',
43
+ text: 'Web search failed: No query provided',
44
+ });
45
+ return {
46
+ items: [],
47
+ breakLoop: false,
48
+ };
49
+ }
50
+ putSystemMessage(`Performing web search for query: "${webSearchCall.args?.query}"`, webSearchCall.args);
51
+ const searchResponse = await generateContentFn([
52
+ {
53
+ type: 'user',
54
+ text: webSearchCall?.args?.query,
55
+ },
56
+ ], {
57
+ temperature: 0.7,
58
+ modelType: ModelType.CHEAP,
59
+ expectedResponseType: {
60
+ webSearch: true,
61
+ },
62
+ }, options);
63
+ const webSearchResult = searchResponse.find((item) => item.type === 'webSearch');
64
+ putSystemMessage('Web search completed, adding results to the conversation.', webSearchResult);
65
+ prompt.push({
66
+ type: 'assistant',
67
+ text: iterateCall.args.message,
68
+ functionCalls: [webSearchCall],
69
+ }, {
70
+ type: 'user',
71
+ functionResponses: [
72
+ {
73
+ name: 'webSearch',
74
+ content: JSON.stringify(webSearchResult),
75
+ call_id: webSearchCall?.id,
76
+ },
77
+ ],
78
+ });
79
+ return {
80
+ items: [],
81
+ breakLoop: false,
82
+ };
83
+ };
84
+ registerActionHandler('webSearch', handleWebSearch);
85
+ //# sourceMappingURL=handle-web-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle-web-search.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-iterate/handlers/handle-web-search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { ActionHandler, ActionType } from './step-iterate-types.js';
2
+ import './handlers/handle-structured-question.js';
3
+ import './handlers/handle-code-execution.js';
4
+ export declare function getActionHandler(actionType: ActionType): ActionHandler;
@@ -0,0 +1,14 @@
1
+ import { getRegisteredActionHandlers } from '../../../main/plugin-loader.js';
2
+ import { handlers } from './step-iterate-handlers.js';
3
+ import './handlers/handle-structured-question.js';
4
+ import './handlers/handle-code-execution.js';
5
+ export function getActionHandler(actionType) {
6
+ // First, check if there's a plugin-provided handler for this action type
7
+ const pluginHandler = getRegisteredActionHandlers().get(actionType);
8
+ if (pluginHandler) {
9
+ return pluginHandler;
10
+ }
11
+ // If no plugin handler is found, use the built-in handlers
12
+ return handlers[actionType] ?? handlers['sendMessage'];
13
+ }
14
+ //# sourceMappingURL=iterate-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iterate-handler.js","sourceRoot":"","sources":["../../../../src/prompt/steps/step-iterate/iterate-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,OAAO,0CAA0C,CAAC;AAClD,OAAO,qCAAqC,CAAC;AAE7C,MAAM,UAAU,gBAAgB,CAAC,UAAsB;IACrD,yEAAyE;IACzE,MAAM,aAAa,GAAG,2BAA2B,EAAE,CAAC,GAAG,CAAC,UAAgC,CAAC,CAAC;IAC1F,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,2DAA2D;IAC3D,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,aAAa,CAAE,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { ActionType, ActionHandler } from './step-iterate-types.js';
2
+ export declare const handlers: Partial<Record<ActionType, ActionHandler>>;
3
+ export declare function registerActionHandler(type: ActionType, handler: ActionHandler): void;
@@ -0,0 +1,5 @@
1
+ export const handlers = {};
2
+ export function registerActionHandler(type, handler) {
3
+ handlers[type] = handler;
4
+ }
5
+ //# sourceMappingURL=step-iterate-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-iterate-handlers.js","sourceRoot":"","sources":["../../../../src/prompt/steps/step-iterate/step-iterate-handlers.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAA+C,EAAE,CAAC;AAEvE,MAAM,UAAU,qBAAqB,CAAC,IAAgB,EAAE,OAAsB;IAC5E,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;AAC3B,CAAC"}