genaicode 0.11.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/README.md +3 -9
  2. package/dist/ai-service/ai-studio.d.ts +18 -1
  3. package/dist/ai-service/ai-studio.js +92 -21
  4. package/dist/ai-service/ai-studio.js.map +1 -1
  5. package/dist/ai-service/anthropic.js +59 -25
  6. package/dist/ai-service/anthropic.js.map +1 -1
  7. package/dist/ai-service/common-types.d.ts +8 -3
  8. package/dist/ai-service/common.d.ts +5 -1
  9. package/dist/ai-service/common.js +9 -0
  10. package/dist/ai-service/common.js.map +1 -1
  11. package/dist/ai-service/dall-e.js +1 -0
  12. package/dist/ai-service/dall-e.js.map +1 -1
  13. package/dist/ai-service/github-models.d.ts +13 -0
  14. package/dist/ai-service/github-models.js +51 -0
  15. package/dist/ai-service/github-models.js.map +1 -0
  16. package/dist/ai-service/local-llm.js +2 -1
  17. package/dist/ai-service/local-llm.js.map +1 -1
  18. package/dist/ai-service/openai-responses.d.ts +9 -0
  19. package/dist/ai-service/openai-responses.js +286 -0
  20. package/dist/ai-service/openai-responses.js.map +1 -0
  21. package/dist/ai-service/openai.js +22 -10
  22. package/dist/ai-service/openai.js.map +1 -1
  23. package/dist/ai-service/service-configurations-types.d.ts +7 -7
  24. package/dist/ai-service/service-configurations.d.ts +1 -0
  25. package/dist/ai-service/service-configurations.js +41 -36
  26. package/dist/ai-service/service-configurations.js.map +1 -1
  27. package/dist/ai-service/vertex-ai-claude.js +2 -2
  28. package/dist/ai-service/vertex-ai-claude.js.map +1 -1
  29. package/dist/ai-service/vertex-ai.d.ts +1 -0
  30. package/dist/ai-service/vertex-ai.js +4 -332
  31. package/dist/ai-service/vertex-ai.js.map +1 -1
  32. package/dist/cli/cli-options.js +1 -1
  33. package/dist/cli/cli-options.js.map +1 -1
  34. package/dist/cli/validate-cli-params.js +1 -1
  35. package/dist/cli/validate-cli-params.js.map +1 -1
  36. package/dist/files/cache-file.d.ts +4 -0
  37. package/dist/files/cache-file.js +21 -0
  38. package/dist/files/cache-file.js.map +1 -1
  39. package/dist/files/find-files.d.ts +1 -0
  40. package/dist/files/find-files.js +4 -1
  41. package/dist/files/find-files.js.map +1 -1
  42. package/dist/files/source-code-utils.js +1 -1
  43. package/dist/files/summary-cache.d.ts +1 -1
  44. package/dist/files/summary-cache.js +1 -1
  45. package/dist/files/summary-cache.js.map +1 -1
  46. package/dist/main/codegen-utils.d.ts +6 -1
  47. package/dist/main/codegen-utils.js +21 -2
  48. package/dist/main/codegen-utils.js.map +1 -1
  49. package/dist/main/codegen.js +2 -2
  50. package/dist/main/codegen.js.map +1 -1
  51. package/dist/main/common/content-bus-types.d.ts +17 -1
  52. package/dist/main/common/content-bus.d.ts +3 -1
  53. package/dist/main/common/content-bus.js +23 -1
  54. package/dist/main/common/content-bus.js.map +1 -1
  55. package/dist/main/common/user-actions.d.ts +3 -0
  56. package/dist/main/common/user-actions.js +10 -0
  57. package/dist/main/common/user-actions.js.map +1 -1
  58. package/dist/main/config-lib.js +3 -2
  59. package/dist/main/config-lib.js.map +1 -1
  60. package/dist/main/config-types.d.ts +4 -0
  61. package/dist/main/config.js +4 -0
  62. package/dist/main/config.js.map +1 -1
  63. package/dist/main/interactive/select-ai-service.js +0 -1
  64. package/dist/main/interactive/select-ai-service.js.map +1 -1
  65. package/dist/main/interactive/user-action-handlers.js +7 -2
  66. package/dist/main/interactive/user-action-handlers.js.map +1 -1
  67. package/dist/main/knowledge/knowledge-store.d.ts +6 -0
  68. package/dist/main/knowledge/knowledge-store.js +128 -0
  69. package/dist/main/knowledge/knowledge-store.js.map +1 -0
  70. package/dist/main/knowledge/types.d.ts +20 -0
  71. package/dist/main/knowledge/types.js +2 -0
  72. package/dist/main/knowledge/types.js.map +1 -0
  73. package/dist/main/ui/backend/endpoints/interrupt-execution-endpoint.js +17 -3
  74. package/dist/main/ui/backend/endpoints/interrupt-execution-endpoint.js.map +1 -1
  75. package/dist/main/ui/common/api-types.d.ts +67 -4
  76. package/dist/main/ui/common/api-types.js +12 -1
  77. package/dist/main/ui/common/api-types.js.map +1 -1
  78. package/dist/main/ui/frontend/assets/index-BbIYZZub.js +2635 -0
  79. package/dist/main/ui/frontend/index.html +1 -1
  80. package/dist/main/ui/user-action-handlers.js +7 -1
  81. package/dist/main/ui/user-action-handlers.js.map +1 -1
  82. package/dist/project-profiles/types.d.ts +4 -4
  83. package/dist/project-profiles/types.js +4 -4
  84. package/dist/project-profiles/types.js.map +1 -1
  85. package/dist/prompt/function-calling-validate.js +2 -1
  86. package/dist/prompt/function-calling-validate.js.map +1 -1
  87. package/dist/prompt/function-calling.js +4 -0
  88. package/dist/prompt/function-calling.js.map +1 -1
  89. package/dist/prompt/function-defs/ask-question.js +4 -0
  90. package/dist/prompt/function-defs/ask-question.js.map +1 -1
  91. package/dist/prompt/function-defs/container-task-commands.d.ts +10 -0
  92. package/dist/prompt/function-defs/container-task-commands.js +185 -0
  93. package/dist/prompt/function-defs/container-task-commands.js.map +1 -0
  94. package/dist/prompt/function-defs/run-container-task.d.ts +11 -0
  95. package/dist/prompt/function-defs/run-container-task.js +41 -0
  96. package/dist/prompt/function-defs/run-container-task.js.map +1 -0
  97. package/dist/prompt/function-defs/web-search.d.ts +9 -0
  98. package/dist/prompt/function-defs/web-search.js +16 -0
  99. package/dist/prompt/function-defs/web-search.js.map +1 -0
  100. package/dist/prompt/limits.js +1 -1
  101. package/dist/prompt/steps/step-ask-question/handlers/container-task/command-execution-loop.d.ts +7 -0
  102. package/dist/prompt/steps/step-ask-question/handlers/container-task/command-execution-loop.js +301 -0
  103. package/dist/prompt/steps/step-ask-question/handlers/container-task/command-execution-loop.js.map +1 -0
  104. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/check-context.d.ts +12 -0
  105. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/check-context.js +41 -0
  106. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/check-context.js.map +1 -0
  107. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/complete-task.d.ts +4 -0
  108. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/complete-task.js +49 -0
  109. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/complete-task.js.map +1 -0
  110. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/copy-from-container.d.ts +4 -0
  111. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/copy-from-container.js +190 -0
  112. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/copy-from-container.js.map +1 -0
  113. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/copy-to-container.d.ts +4 -0
  114. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/copy-to-container.js +139 -0
  115. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/copy-to-container.js.map +1 -0
  116. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/edit-file.d.ts +10 -0
  117. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/edit-file.js +93 -0
  118. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/edit-file.js.map +1 -0
  119. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/fail-task.d.ts +4 -0
  120. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/fail-task.js +72 -0
  121. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/fail-task.js.map +1 -0
  122. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/gain-knowledge.d.ts +10 -0
  123. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/gain-knowledge.js +125 -0
  124. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/gain-knowledge.js.map +1 -0
  125. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/interrupt-controller.d.ts +19 -0
  126. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/interrupt-controller.js +33 -0
  127. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/interrupt-controller.js.map +1 -0
  128. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/query-knowledge.d.ts +8 -0
  129. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/query-knowledge.js +85 -0
  130. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/query-knowledge.js.map +1 -0
  131. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/request-secret.d.ts +6 -0
  132. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/request-secret.js +122 -0
  133. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/request-secret.js.map +1 -0
  134. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/run-command.d.ts +7 -0
  135. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/run-command.js +146 -0
  136. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/run-command.js.map +1 -0
  137. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/send-message.d.ts +4 -0
  138. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/send-message.js +56 -0
  139. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/send-message.js.map +1 -0
  140. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/set-execution-plan.d.ts +4 -0
  141. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/set-execution-plan.js +56 -0
  142. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/set-execution-plan.js.map +1 -0
  143. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/update-execution-plan.d.ts +4 -0
  144. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/update-execution-plan.js +39 -0
  145. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/update-execution-plan.js.map +1 -0
  146. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/view-file.d.ts +10 -0
  147. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/view-file.js +95 -0
  148. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/view-file.js.map +1 -0
  149. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/web-search.d.ts +2 -0
  150. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/web-search.js +96 -0
  151. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/web-search.js.map +1 -0
  152. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/wrap-context.d.ts +4 -0
  153. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/wrap-context.js +123 -0
  154. package/dist/prompt/steps/step-ask-question/handlers/container-task/commands/wrap-context.js.map +1 -0
  155. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-command-handlers.d.ts +34 -0
  156. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-command-handlers.js +332 -0
  157. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-command-handlers.js.map +1 -0
  158. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-commands-registry.d.ts +11 -0
  159. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-commands-registry.js +50 -0
  160. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-commands-registry.js.map +1 -0
  161. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-commands-types.d.ts +28 -0
  162. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-commands-types.js +2 -0
  163. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-commands-types.js.map +1 -0
  164. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-task-orchestrator.d.ts +2 -0
  165. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-task-orchestrator.js +202 -0
  166. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-task-orchestrator.js.map +1 -0
  167. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-task-types.d.ts +52 -0
  168. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-task-types.js +2 -0
  169. package/dist/prompt/steps/step-ask-question/handlers/container-task/container-task-types.js.map +1 -0
  170. package/dist/prompt/steps/step-ask-question/handlers/container-task/utils/docker-check.d.ts +4 -0
  171. package/dist/prompt/steps/step-ask-question/handlers/container-task/utils/docker-check.js +15 -0
  172. package/dist/prompt/steps/step-ask-question/handlers/container-task/utils/docker-check.js.map +1 -0
  173. package/dist/prompt/steps/step-ask-question/handlers/container-task/utils/docker-utils.d.ts +50 -0
  174. package/dist/prompt/steps/step-ask-question/handlers/container-task/utils/docker-utils.js +358 -0
  175. package/dist/prompt/steps/step-ask-question/handlers/container-task/utils/docker-utils.js.map +1 -0
  176. package/dist/prompt/steps/step-ask-question/handlers/handle-compound-action.js +2 -2
  177. package/dist/prompt/steps/step-ask-question/handlers/handle-compound-action.js.map +1 -1
  178. package/dist/prompt/steps/step-ask-question/handlers/handle-explore-external-directories.js +1 -1
  179. package/dist/prompt/steps/step-ask-question/handlers/handle-explore-external-directories.js.map +1 -1
  180. package/dist/prompt/steps/step-ask-question/handlers/handle-genaicode-help.js +1 -1
  181. package/dist/prompt/steps/step-ask-question/handlers/handle-genaicode-help.js.map +1 -1
  182. package/dist/prompt/steps/step-ask-question/handlers/handle-generate-image.js +2 -2
  183. package/dist/prompt/steps/step-ask-question/handlers/handle-generate-image.js.map +1 -1
  184. package/dist/prompt/steps/step-ask-question/handlers/handle-perform-analysis.js +1 -1
  185. package/dist/prompt/steps/step-ask-question/handlers/handle-perform-analysis.js.map +1 -1
  186. package/dist/prompt/steps/step-ask-question/handlers/handle-run-container-task.d.ts +2 -0
  187. package/dist/prompt/steps/step-ask-question/handlers/handle-run-container-task.js +7 -0
  188. package/dist/prompt/steps/step-ask-question/handlers/handle-run-container-task.js.map +1 -0
  189. package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.js +1 -1
  190. package/dist/prompt/steps/step-ask-question/handlers/handle-send-message.js.map +1 -1
  191. package/dist/prompt/steps/step-ask-question/handlers/handle-web-search.d.ts +1 -0
  192. package/dist/prompt/steps/step-ask-question/handlers/handle-web-search.js +85 -0
  193. package/dist/prompt/steps/step-ask-question/handlers/handle-web-search.js.map +1 -0
  194. package/dist/prompt/steps/step-ask-question/step-ask-question-types.d.ts +1 -1
  195. package/dist/prompt/steps/step-ask-question/step-ask-question.d.ts +2 -0
  196. package/dist/prompt/steps/step-ask-question/step-ask-question.js +11 -1
  197. package/dist/prompt/steps/step-ask-question/step-ask-question.js.map +1 -1
  198. package/dist/prompt/steps/step-codegen-planning.js +1 -1
  199. package/dist/prompt/steps/step-codegen-planning.js.map +1 -1
  200. package/dist/prompt/steps/step-summarization.js +17 -10
  201. package/dist/prompt/steps/step-summarization.js.map +1 -1
  202. package/dist/prompt/systemprompt.js +3 -0
  203. package/dist/prompt/systemprompt.js.map +1 -1
  204. package/dist/utils/docker-utils.d.ts +37 -0
  205. package/dist/utils/docker-utils.js +258 -0
  206. package/dist/utils/docker-utils.js.map +1 -0
  207. package/dist/vite-genaicode/vite-genaicode-plugin.js +9 -2
  208. package/dist/vite-genaicode/vite-genaicode-plugin.js.map +1 -1
  209. package/package.json +12 -4
  210. package/dist/main/ui/frontend/assets/index-C1H0vVGm.js +0 -2256
@@ -0,0 +1,95 @@
1
+ import { putContainerLog } from '../../../../../../main/common/content-bus.js';
2
+ import { getFileContentFromContainer, executeCommand } from '../utils/docker-utils.js';
3
+ export const viewFileDef = {
4
+ name: 'viewFile',
5
+ description: 'View a text file or list directory contents inside the container. You can view the full file or a specific range of lines.',
6
+ parameters: {
7
+ type: 'object',
8
+ properties: {
9
+ reasoning: {
10
+ type: 'string',
11
+ description: 'Explanation of why this path needs to be viewed.',
12
+ },
13
+ filePath: {
14
+ type: 'string',
15
+ description: 'The absolute path to the file or directory inside the container.',
16
+ },
17
+ startLine: {
18
+ type: 'number',
19
+ description: 'The starting line number to view (1-indexed). Only applicable for files.',
20
+ },
21
+ endLine: {
22
+ type: 'number',
23
+ description: 'The ending line number to view (1-indexed). Only applicable for files.',
24
+ },
25
+ },
26
+ required: ['reasoning', 'filePath'],
27
+ },
28
+ };
29
+ export async function handleViewFile(props) {
30
+ const { actionResult, taskExecutionPrompt, container } = props;
31
+ const args = actionResult.args;
32
+ const { reasoning, filePath, startLine, endLine } = args;
33
+ putContainerLog('info', `Viewing path: ${reasoning}`, args, 'command');
34
+ try {
35
+ const dirCheck = await executeCommand(container, '/bin/sh', `test -d "${filePath}"`, '', '/');
36
+ let finalContent;
37
+ if (dirCheck.exitCode === 0) {
38
+ if (startLine || endLine) {
39
+ throw new Error('startLine and endLine parameters are not applicable for directories.');
40
+ }
41
+ const { output, exitCode } = await executeCommand(container, '/bin/sh', `ls -la "${filePath}"`, '', '/');
42
+ if (exitCode !== 0) {
43
+ throw new Error(`Failed to list directory contents for ${filePath}: ${output}`);
44
+ }
45
+ finalContent = `Directory listing for ${filePath}:\n\n${output}`;
46
+ putContainerLog('info', `Successfully listed directory ${filePath}`, { filePath }, 'command');
47
+ }
48
+ else {
49
+ let content = await getFileContentFromContainer(container, filePath);
50
+ const lines = content.split('\n');
51
+ let resultMessage = `File content of ${filePath}:\n\n`;
52
+ if (startLine || endLine) {
53
+ const start = startLine ? startLine - 1 : 0;
54
+ const end = endLine ? endLine : lines.length;
55
+ const slicedLines = lines.slice(start, end);
56
+ content = slicedLines.join('\n');
57
+ resultMessage = `File content of ${filePath} from line ${startLine || 1} to ${endLine || lines.length}:\n\n`;
58
+ }
59
+ finalContent = resultMessage + content;
60
+ putContainerLog('info', `Successfully viewed file ${filePath}`, { filePath }, 'command');
61
+ }
62
+ taskExecutionPrompt.push({
63
+ type: 'assistant',
64
+ functionCalls: [actionResult],
65
+ }, {
66
+ type: 'user',
67
+ functionResponses: [
68
+ {
69
+ name: actionResult.name,
70
+ call_id: actionResult.id,
71
+ content: finalContent,
72
+ },
73
+ ],
74
+ });
75
+ }
76
+ catch (e) {
77
+ const errMessage = e instanceof Error ? e.message : String(e);
78
+ putContainerLog('error', 'An error occurred while viewing the path', { error: errMessage });
79
+ taskExecutionPrompt.push({
80
+ type: 'assistant',
81
+ functionCalls: [actionResult],
82
+ }, {
83
+ type: 'user',
84
+ functionResponses: [
85
+ {
86
+ name: actionResult.name,
87
+ call_id: actionResult.id,
88
+ content: `View path failed: ${errMessage}`,
89
+ },
90
+ ],
91
+ });
92
+ }
93
+ return { commandsExecutedIncrement: 1 };
94
+ }
95
+ //# sourceMappingURL=view-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-file.js","sourceRoot":"","sources":["../../../../../../../src/prompt/steps/step-ask-question/handlers/container-task/commands/view-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { CommandHandlerBaseProps, CommandHandlerResult } from '../container-commands-types.js';
2
+ export declare function handleWebSearch(props: CommandHandlerBaseProps): Promise<CommandHandlerResult>;
@@ -0,0 +1,96 @@
1
+ import { ModelType } from '../../../../../../ai-service/common-types.js';
2
+ import { putContainerLog } from '../../../../../../main/common/content-bus.js';
3
+ export async function handleWebSearch(props) {
4
+ const { actionResult, generateContentFn, options, taskExecutionPrompt } = props;
5
+ const { query } = actionResult.args;
6
+ taskExecutionPrompt.push({
7
+ type: 'assistant',
8
+ functionCalls: [actionResult],
9
+ });
10
+ if (!query) {
11
+ putContainerLog('warn', 'Web search command called without a query.');
12
+ taskExecutionPrompt.push({
13
+ type: 'user',
14
+ functionResponses: [
15
+ {
16
+ name: actionResult.name,
17
+ call_id: actionResult.id || undefined,
18
+ content: 'Web search failed: Missing query',
19
+ },
20
+ ],
21
+ });
22
+ return {
23
+ shouldBreakOuter: false,
24
+ commandsExecutedIncrement: 1,
25
+ };
26
+ }
27
+ putContainerLog('info', `Performing web search for: "${query}"`);
28
+ try {
29
+ const searchResponse = await generateContentFn([
30
+ {
31
+ type: 'user',
32
+ text: query,
33
+ },
34
+ ], {
35
+ temperature: 0.7,
36
+ modelType: ModelType.LITE,
37
+ expectedResponseType: {
38
+ webSearch: true,
39
+ },
40
+ }, options);
41
+ const webSearchResult = searchResponse.find((item) => item.type === 'webSearch');
42
+ if (webSearchResult) {
43
+ putContainerLog('info', 'Web search completed successfully.', webSearchResult);
44
+ taskExecutionPrompt.push({
45
+ type: 'user',
46
+ functionResponses: [
47
+ {
48
+ name: actionResult.name,
49
+ call_id: actionResult.id || undefined,
50
+ content: JSON.stringify(webSearchResult),
51
+ },
52
+ ],
53
+ });
54
+ return {
55
+ shouldBreakOuter: false,
56
+ commandsExecutedIncrement: 1,
57
+ };
58
+ }
59
+ else {
60
+ putContainerLog('warn', 'Web search did not return any results.');
61
+ taskExecutionPrompt.push({
62
+ type: 'user',
63
+ functionResponses: [
64
+ {
65
+ name: actionResult.name,
66
+ call_id: actionResult.id || undefined,
67
+ content: 'Web search failed: No results found',
68
+ },
69
+ ],
70
+ });
71
+ return {
72
+ shouldBreakOuter: false,
73
+ commandsExecutedIncrement: 1,
74
+ };
75
+ }
76
+ }
77
+ catch (error) {
78
+ const errorMessage = error instanceof Error ? error.message : 'An unknown error occurred';
79
+ putContainerLog('error', `Web search failed: ${errorMessage}`, { error });
80
+ taskExecutionPrompt.push({
81
+ type: 'user',
82
+ functionResponses: [
83
+ {
84
+ name: actionResult.name,
85
+ call_id: actionResult.id || undefined,
86
+ content: `Web search failed: ${errorMessage}`,
87
+ },
88
+ ],
89
+ });
90
+ return {
91
+ shouldBreakOuter: false,
92
+ commandsExecutedIncrement: 1,
93
+ };
94
+ }
95
+ }
96
+ //# sourceMappingURL=web-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../../../../../../src/prompt/steps/step-ask-question/handlers/container-task/commands/web-search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { GenerateContentFunction, PromptItem } from '../../../../../../ai-service/common-types.js';
2
+ import { ActionHandlerProps } from '../../../step-ask-question-types.js';
3
+ import Docker from 'dockerode';
4
+ export declare function maybeWrapContext(systemPrompt: PromptItem, taskPrompt: PromptItem, taskExecutionPrompt: PromptItem[], generateContentFn: GenerateContentFunction, container: Docker.Container, options: ActionHandlerProps['options']): Promise<void>;
@@ -0,0 +1,123 @@
1
+ import { ModelType, } from '../../../../../../ai-service/common-types.js';
2
+ import { putContainerLog } from '../../../../../../main/common/content-bus.js';
3
+ import { setExecutionPlanDef } from './set-execution-plan.js';
4
+ const MAX_CONTEXT_ITEMS = 24;
5
+ const WRAP_RATIO = 2 / 3;
6
+ export async function maybeWrapContext(systemPrompt, taskPrompt, taskExecutionPrompt, generateContentFn, container, options) {
7
+ if (taskExecutionPrompt.length < MAX_CONTEXT_ITEMS) {
8
+ return;
9
+ }
10
+ putContainerLog('info', 'Context is getting long, wrapping it up.');
11
+ await handleWrapContext({
12
+ actionResult: {
13
+ name: 'wrapContext',
14
+ args: {}, // This will be populated by the LLM inside handleWrapContext
15
+ },
16
+ systemPrompt,
17
+ taskPrompt,
18
+ taskExecutionPrompt,
19
+ container,
20
+ options,
21
+ generateContentFn,
22
+ maxContextItems: MAX_CONTEXT_ITEMS,
23
+ maxContextSize: 0, // not used
24
+ maxOutputLength: 0, // not used
25
+ });
26
+ }
27
+ const wrapContextInternalDef = {
28
+ name: 'wrapContextInternal',
29
+ description: 'Internal tool to summarize the conversation history.',
30
+ parameters: {
31
+ type: 'object',
32
+ properties: {
33
+ summary: {
34
+ type: 'string',
35
+ description: 'A summary of prior steps and important findings to keep for next actions.',
36
+ },
37
+ plan: setExecutionPlanDef.parameters.properties.plan,
38
+ progress: {
39
+ type: 'string',
40
+ description: 'What was achieved so far? What are the outcomes?',
41
+ },
42
+ importantFiles: {
43
+ type: 'array',
44
+ items: {
45
+ type: 'string',
46
+ description: `Paths to important files or directories to keep in mind for next actions.
47
+ It is critically IMPORTANT to keep track of files which are essential for the task. For example the files that were modified or created during the task so far.`,
48
+ },
49
+ },
50
+ nextStep: {
51
+ type: 'string',
52
+ description: 'The next step to take in the process.',
53
+ },
54
+ },
55
+ required: ['summary', 'plan', 'progress', 'importantFiles', 'nextStep'],
56
+ },
57
+ };
58
+ async function handleWrapContext(props) {
59
+ const { taskExecutionPrompt, generateContentFn, options, systemPrompt, taskPrompt } = props;
60
+ let splitPoint = Math.floor(taskExecutionPrompt.length * WRAP_RATIO);
61
+ // Adjust split point to not separate a function call from its response.
62
+ // Iterate backwards from the middle to find a safe point that is not right after an assistant's function call.
63
+ while (splitPoint > 0) {
64
+ const precedingItem = taskExecutionPrompt[splitPoint - 1];
65
+ if (precedingItem.type === 'assistant' && precedingItem.functionCalls?.length) {
66
+ // This is an assistant message with a function call. It's unsafe to split right after it.
67
+ // Move the split point before this message to keep the call and its subsequent response together.
68
+ splitPoint--;
69
+ }
70
+ else {
71
+ // This is a safe split point (e.g., after a user message or an assistant message without a call).
72
+ break;
73
+ }
74
+ }
75
+ const partToWrap = taskExecutionPrompt.slice(0, splitPoint);
76
+ const partToKeep = taskExecutionPrompt.slice(splitPoint);
77
+ if (partToWrap.length === 0) {
78
+ // Nothing to wrap, probably because the first half was all function calls.
79
+ return { shouldBreakOuter: false, commandsExecutedIncrement: 0 };
80
+ }
81
+ const summarizationPrompt = [
82
+ systemPrompt,
83
+ taskPrompt,
84
+ ...partToWrap,
85
+ {
86
+ type: 'user',
87
+ text: 'Please summarize the conversation so far. Include the current plan, progress, important files, and what the next immediate step should be, based on the last message.',
88
+ },
89
+ ];
90
+ const response = await generateContentFn(summarizationPrompt, {
91
+ functionDefs: [wrapContextInternalDef],
92
+ requiredFunctionName: wrapContextInternalDef.name,
93
+ modelType: ModelType.LITE,
94
+ }, options);
95
+ const wrapContextCall = response
96
+ .filter((item) => item.type === 'functionCall')
97
+ .filter((item) => item.functionCall.name === wrapContextInternalDef.name)
98
+ .map((item) => item.functionCall)[0];
99
+ if (!wrapContextCall || !wrapContextCall.args) {
100
+ putContainerLog('warn', 'Failed to generate a valid context summary.');
101
+ // If summarization fails, we just keep the context as is to avoid breaking the flow.
102
+ return { shouldBreakOuter: false, commandsExecutedIncrement: 0 };
103
+ }
104
+ putContainerLog('info', '🗂️ Context wrapped by internal operator.', wrapContextCall.args);
105
+ const assistantMsg = {
106
+ type: 'assistant',
107
+ text: 'Wrapping context for continued processing. This summary will help maintain continuity, it contains the current plan, list of important files, and progress made so far, as well as the next step to take.',
108
+ functionCalls: [wrapContextCall],
109
+ };
110
+ const userResp = {
111
+ type: 'user',
112
+ text: `Please continue with the next step: ${wrapContextCall.args.nextStep}`,
113
+ functionResponses: [
114
+ {
115
+ name: wrapContextCall.name,
116
+ call_id: wrapContextCall.id || undefined,
117
+ },
118
+ ],
119
+ };
120
+ taskExecutionPrompt.splice(0, taskExecutionPrompt.length, assistantMsg, userResp, ...partToKeep);
121
+ return { shouldBreakOuter: false, commandsExecutedIncrement: 0 };
122
+ }
123
+ //# sourceMappingURL=wrap-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrap-context.js","sourceRoot":"","sources":["../../../../../../../src/prompt/steps/step-ask-question/handlers/container-task/commands/wrap-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import Docker from 'dockerode';
2
+ import { FunctionCall, PromptItem } from '../../../../../ai-service/common-types.js';
3
+ import { ActionHandlerProps } from '../../step-ask-question-types.js';
4
+ export interface CommandHandlerResult {
5
+ shouldBreakOuter: boolean;
6
+ success?: boolean;
7
+ summary?: string;
8
+ commandsExecutedIncrement: number;
9
+ }
10
+ interface CommandHandlerBaseProps {
11
+ actionResult: FunctionCall;
12
+ taskExecutionPrompt: PromptItem[];
13
+ options: ActionHandlerProps['options'];
14
+ container: Docker.Container;
15
+ }
16
+ export declare function handleCompleteTask(props: Pick<CommandHandlerBaseProps, 'actionResult' | 'taskExecutionPrompt'>): Promise<CommandHandlerResult>;
17
+ export declare function handleFailTask(props: Pick<CommandHandlerBaseProps, 'actionResult' | 'taskExecutionPrompt'>): Promise<CommandHandlerResult>;
18
+ export declare function handleWrapContext(props: Pick<CommandHandlerBaseProps, 'actionResult' | 'taskExecutionPrompt'> & {
19
+ computeContextMetrics: () => {
20
+ messageCount: number;
21
+ estimatedTokens: number;
22
+ };
23
+ maxContextItems: number;
24
+ maxContextSize: number;
25
+ }): Promise<CommandHandlerResult>;
26
+ export declare function handleSetExecutionPlan(props: Pick<CommandHandlerBaseProps, 'actionResult' | 'taskExecutionPrompt'>): Promise<CommandHandlerResult>;
27
+ export declare function handleUpdateExecutionPlan(props: Pick<CommandHandlerBaseProps, 'actionResult' | 'taskExecutionPrompt'>): Promise<CommandHandlerResult>;
28
+ export declare function handleSendMessage(props: Pick<CommandHandlerBaseProps, 'actionResult' | 'taskExecutionPrompt' | 'options'>): Promise<CommandHandlerResult>;
29
+ export declare function handleRunCommand(props: Pick<CommandHandlerBaseProps, 'actionResult' | 'taskExecutionPrompt' | 'container'> & {
30
+ maxOutputLength: number;
31
+ }): Promise<CommandHandlerResult>;
32
+ export declare function handleCopyToContainer(props: Pick<CommandHandlerBaseProps, 'actionResult' | 'taskExecutionPrompt' | 'container' | 'options'>): Promise<CommandHandlerResult>;
33
+ export declare function handleCopyFromContainer(props: Pick<CommandHandlerBaseProps, 'actionResult' | 'taskExecutionPrompt' | 'container' | 'options'>): Promise<CommandHandlerResult>;
34
+ export {};