@codebolt/agent 5.0.2 → 5.0.7

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 (164) hide show
  1. package/dist/agent.d.ts +86 -0
  2. package/dist/agent.js +324 -0
  3. package/dist/builderpattern/agent.js +2 -2
  4. package/dist/builderpattern/followupquestionbuilder.js +1 -1
  5. package/dist/builderpattern/llmoutputhandler.js +7 -7
  6. package/dist/builderpattern/usermessage.d.ts +1 -6
  7. package/dist/composablepattern/document.js +35 -2
  8. package/dist/followupquestionbuilder.d.ts +75 -0
  9. package/dist/followupquestionbuilder.js +197 -0
  10. package/dist/index.d.ts +14 -0
  11. package/dist/index.js +23 -0
  12. package/dist/llmoutputhandler.d.ts +102 -0
  13. package/dist/llmoutputhandler.js +452 -0
  14. package/dist/processor/types/interfaces.d.ts +21 -44
  15. package/dist/processor-pieces/index.d.ts +3 -0
  16. package/dist/processor-pieces/index.js +3 -0
  17. package/dist/processor-pieces/messageModifiers/addToolsListMessageModifier.d.ts +5 -14
  18. package/dist/processor-pieces/messageModifiers/addToolsListMessageModifier.js +40 -41
  19. package/dist/processor-pieces/messageModifiers/baseContextMessageModifier.d.ts +13 -5
  20. package/dist/processor-pieces/messageModifiers/baseContextMessageModifier.js +58 -50
  21. package/dist/processor-pieces/messageModifiers/baseSystemInstructionMessageModifier.d.ts +8 -6
  22. package/dist/processor-pieces/messageModifiers/baseSystemInstructionMessageModifier.js +22 -66
  23. package/dist/processor-pieces/messageModifiers/handleUrlMessageModifier.d.ts +2 -3
  24. package/dist/processor-pieces/messageModifiers/handleUrlMessageModifier.js +2 -1
  25. package/dist/processor-pieces/messageModifiers/imageAttachmentMessageModifier.d.ts +2 -3
  26. package/dist/processor-pieces/messageModifiers/imageAttachmentMessageModifier.js +2 -1
  27. package/dist/processor-pieces/messageModifiers/toolInjectionModifier.js +4 -1
  28. package/dist/processor-pieces/messageModifiers/workingDirectoryMessageModifier.d.ts +2 -18
  29. package/dist/processor-pieces/messageModifiers/workingDirectoryMessageModifier.js +93 -291
  30. package/dist/processor-pieces/postToolCallProcessors/conversationCompactorModifier.d.ts +18 -0
  31. package/dist/processor-pieces/postToolCallProcessors/conversationCompactorModifier.js +41 -0
  32. package/dist/processor-pieces/postToolCallProcessors/index.d.ts +2 -1
  33. package/dist/processor-pieces/postToolCallProcessors/index.js +5 -0
  34. package/dist/processor-pieces/preInferenceProcessors/index.d.ts +1 -1
  35. package/dist/processor-pieces/preInferenceProcessors/index.js +3 -0
  36. package/dist/processor-pieces/pretoolCallProcessors/index.d.ts +2 -1
  37. package/dist/processor-pieces/pretoolCallProcessors/index.js +5 -0
  38. package/dist/processor-pieces/pretoolCallProcessors/toolParameterModifier.d.ts +21 -0
  39. package/dist/processor-pieces/pretoolCallProcessors/toolParameterModifier.js +32 -0
  40. package/dist/processor-pieces/pretoolCallProcessors/toolValidationModifier.d.ts +16 -0
  41. package/dist/processor-pieces/pretoolCallProcessors/toolValidationModifier.js +37 -0
  42. package/dist/promptbuilder.d.ts +382 -0
  43. package/dist/promptbuilder.js +805 -0
  44. package/dist/systemprompt.d.ts +20 -0
  45. package/dist/systemprompt.js +48 -0
  46. package/dist/taskInstruction.d.ts +37 -0
  47. package/dist/taskInstruction.js +57 -0
  48. package/dist/types/libFunctionTypes.d.ts +13 -19
  49. package/dist/types/libFunctionTypes.js +3 -0
  50. package/dist/types/processorTypes.d.ts +8 -8
  51. package/dist/types/processorTypes.js +6 -23
  52. package/dist/unified/agent/agent.js +2 -2
  53. package/dist/unified/agent/codeboltAgent.d.ts +122 -0
  54. package/dist/unified/agent/codeboltAgent.js +210 -0
  55. package/dist/unified/base/initialPromptGenerator.js +18 -4
  56. package/dist/unified/base/responseExecutor.d.ts +3 -2
  57. package/dist/unified/base/responseExecutor.js +109 -56
  58. package/dist/unified/index.d.ts +4 -0
  59. package/dist/unified/index.js +12 -1
  60. package/dist/usermessage.d.ts +70 -0
  61. package/dist/usermessage.js +123 -0
  62. package/package.json +11 -6
  63. package/dist/local-tools/fileTools.d.ts +0 -26
  64. package/dist/local-tools/fileTools.js +0 -162
  65. package/dist/processor-pieces/additionalModifiers/argumentProcessorModifier.d.ts +0 -13
  66. package/dist/processor-pieces/additionalModifiers/argumentProcessorModifier.js +0 -68
  67. package/dist/processor-pieces/additionalModifiers/atFileProcessorModifier.d.ts +0 -15
  68. package/dist/processor-pieces/additionalModifiers/atFileProcessorModifier.js +0 -212
  69. package/dist/processor-pieces/additionalModifiers/chatCompressionModifier.d.ts +0 -19
  70. package/dist/processor-pieces/additionalModifiers/chatCompressionModifier.js +0 -110
  71. package/dist/processor-pieces/additionalModifiers/chatRecordingModifier.d.ts +0 -23
  72. package/dist/processor-pieces/additionalModifiers/chatRecordingModifier.js +0 -173
  73. package/dist/processor-pieces/additionalModifiers/coreSystemPromptModifier.d.ts +0 -14
  74. package/dist/processor-pieces/additionalModifiers/coreSystemPromptModifier.js +0 -93
  75. package/dist/processor-pieces/additionalModifiers/directoryContextModifier.d.ts +0 -30
  76. package/dist/processor-pieces/additionalModifiers/directoryContextModifier.js +0 -330
  77. package/dist/processor-pieces/additionalModifiers/environmentContextModifier.d.ts +0 -26
  78. package/dist/processor-pieces/additionalModifiers/environmentContextModifier.js +0 -269
  79. package/dist/processor-pieces/additionalModifiers/fallbackHandlerModifier.d.ts +0 -38
  80. package/dist/processor-pieces/additionalModifiers/fallbackHandlerModifier.js +0 -217
  81. package/dist/processor-pieces/additionalModifiers/ideContextModifier.d.ts +0 -34
  82. package/dist/processor-pieces/additionalModifiers/ideContextModifier.js +0 -147
  83. package/dist/processor-pieces/additionalModifiers/index.d.ts +0 -12
  84. package/dist/processor-pieces/additionalModifiers/index.js +0 -28
  85. package/dist/processor-pieces/additionalModifiers/loopDetectionModifier.d.ts +0 -29
  86. package/dist/processor-pieces/additionalModifiers/loopDetectionModifier.js +0 -155
  87. package/dist/processor-pieces/additionalModifiers/memoryImportModifier.d.ts +0 -15
  88. package/dist/processor-pieces/additionalModifiers/memoryImportModifier.js +0 -129
  89. package/dist/processor-pieces/additionalModifiers/shellProcessorModifier.d.ts +0 -25
  90. package/dist/processor-pieces/additionalModifiers/shellProcessorModifier.js +0 -169
  91. package/dist/processor-pieces/additionalModifiers/toolInjectionModifier.d.ts +0 -20
  92. package/dist/processor-pieces/additionalModifiers/toolInjectionModifier.js +0 -152
  93. package/dist/processor-pieces/messageModifiers/addCurrentDirectoryRootFilesModifier.d.ts +0 -7
  94. package/dist/processor-pieces/messageModifiers/addCurrentDirectoryRootFilesModifier.js +0 -93
  95. package/dist/processor-pieces/messageModifiers/advancedSystemInstructionMessageModifier.d.ts +0 -9
  96. package/dist/processor-pieces/messageModifiers/advancedSystemInstructionMessageModifier.js +0 -77
  97. package/dist/processor-pieces/messageModifiers/chatCompressionModifier.d.ts +0 -19
  98. package/dist/processor-pieces/messageModifiers/chatCompressionModifier.js +0 -110
  99. package/dist/processor-pieces/messageModifiers/chatHistoryMessageModifier.example.d.ts +0 -20
  100. package/dist/processor-pieces/messageModifiers/chatHistoryMessageModifier.example.js +0 -124
  101. package/dist/processor-pieces/messageModifiers/environmentContext.d.ts +0 -41
  102. package/dist/processor-pieces/messageModifiers/environmentContext.js +0 -355
  103. package/dist/processor-pieces/messageModifiers/mentionedFilesModifier.d.ts +0 -23
  104. package/dist/processor-pieces/messageModifiers/mentionedFilesModifier.js +0 -207
  105. package/dist/processor-pieces/messageModifiers/simpleMessageModifier.d.ts +0 -7
  106. package/dist/processor-pieces/messageModifiers/simpleMessageModifier.js +0 -26
  107. package/dist/processor-pieces/postInference/llmOutputValidityProcessor.d.ts +0 -1
  108. package/dist/processor-pieces/postInference/llmOutputValidityProcessor.js +0 -2
  109. package/dist/processor-pieces/postInferenceProcessors/checkForNoToolCall.d.ts +0 -7
  110. package/dist/processor-pieces/postInferenceProcessors/checkForNoToolCall.js +0 -24
  111. package/dist/processor-pieces/postToolCall/advancedLoopDetectionProcessor.d.ts +0 -41
  112. package/dist/processor-pieces/postToolCall/advancedLoopDetectionProcessor.js +0 -197
  113. package/dist/processor-pieces/postToolCall/chatCompressionProcessor.d.ts +0 -26
  114. package/dist/processor-pieces/postToolCall/chatCompressionProcessor.js +0 -90
  115. package/dist/processor-pieces/postToolCall/chatRecordingProcessor.d.ts +0 -81
  116. package/dist/processor-pieces/postToolCall/chatRecordingProcessor.js +0 -329
  117. package/dist/processor-pieces/postToolCall/contextManagementProcessor.d.ts +0 -40
  118. package/dist/processor-pieces/postToolCall/contextManagementProcessor.js +0 -272
  119. package/dist/processor-pieces/postToolCall/conversationCompactorProcessor.d.ts +0 -49
  120. package/dist/processor-pieces/postToolCall/conversationCompactorProcessor.js +0 -291
  121. package/dist/processor-pieces/postToolCall/conversationContinuityProcessor.d.ts +0 -49
  122. package/dist/processor-pieces/postToolCall/conversationContinuityProcessor.js +0 -293
  123. package/dist/processor-pieces/postToolCall/followUpConversationProcessor.d.ts +0 -47
  124. package/dist/processor-pieces/postToolCall/followUpConversationProcessor.js +0 -249
  125. package/dist/processor-pieces/postToolCall/loopDetectionProcessor.d.ts +0 -30
  126. package/dist/processor-pieces/postToolCall/loopDetectionProcessor.js +0 -137
  127. package/dist/processor-pieces/postToolCall/responseValidationProcessor.d.ts +0 -30
  128. package/dist/processor-pieces/postToolCall/responseValidationProcessor.js +0 -228
  129. package/dist/processor-pieces/postToolCall/telemetryProcessor.d.ts +0 -99
  130. package/dist/processor-pieces/postToolCall/telemetryProcessor.js +0 -278
  131. package/dist/processor-pieces/postToolCall/tokenManagementProcessor.d.ts +0 -37
  132. package/dist/processor-pieces/postToolCall/tokenManagementProcessor.js +0 -178
  133. package/dist/processor-pieces/postToolCall/toolExecutionProcessor.d.ts +0 -43
  134. package/dist/processor-pieces/postToolCall/toolExecutionProcessor.js +0 -207
  135. package/dist/processor-pieces/preInference/conversationCompactorProcessor.d.ts +0 -52
  136. package/dist/processor-pieces/preInference/conversationCompactorProcessor.js +0 -264
  137. package/dist/processor-pieces/preInference/conversationContinuityProcessor.d.ts +0 -49
  138. package/dist/processor-pieces/preInference/conversationContinuityProcessor.js +0 -293
  139. package/dist/processor-pieces/preInferenceProcessors/conversationCompaction.d.ts +0 -7
  140. package/dist/processor-pieces/preInferenceProcessors/conversationCompaction.js +0 -31
  141. package/dist/processor-pieces/preToolCall/index.d.ts +0 -9
  142. package/dist/processor-pieces/preToolCall/index.js +0 -18
  143. package/dist/processor-pieces/preToolCall/localToolInterceptorProcessor.d.ts +0 -58
  144. package/dist/processor-pieces/preToolCall/localToolInterceptorProcessor.js +0 -444
  145. package/dist/processor-pieces/preToolCall/toolParameterModifierProcessor.d.ts +0 -44
  146. package/dist/processor-pieces/preToolCall/toolParameterModifierProcessor.js +0 -367
  147. package/dist/processor-pieces/preToolCall/toolValidationProcessor.d.ts +0 -58
  148. package/dist/processor-pieces/preToolCall/toolValidationProcessor.js +0 -391
  149. package/dist/unified/agent/tool.d.ts +0 -99
  150. package/dist/unified/agent/tool.js +0 -440
  151. package/dist/unified/examples/agentExample.d.ts +0 -46
  152. package/dist/unified/examples/agentExample.js +0 -464
  153. package/dist/unified/examples/documentationPatternExample.d.ts +0 -10
  154. package/dist/unified/examples/documentationPatternExample.js +0 -385
  155. package/dist/unified/examples/followUpProcessorsExample.d.ts +0 -45
  156. package/dist/unified/examples/followUpProcessorsExample.js +0 -311
  157. package/dist/unified/examples/orchestratorExample.d.ts +0 -16
  158. package/dist/unified/examples/orchestratorExample.js +0 -415
  159. package/dist/unified/examples/preToolCallProcessorsExample.d.ts +0 -36
  160. package/dist/unified/examples/preToolCallProcessorsExample.js +0 -458
  161. package/dist/unified/examples/workflowExample.d.ts +0 -12
  162. package/dist/unified/examples/workflowExample.js +0 -497
  163. package/dist/unified/orchestrator/orchestrator.d.ts +0 -260
  164. package/dist/unified/orchestrator/orchestrator.js +0 -519
@@ -1,269 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.EnvironmentContextModifier = void 0;
40
- const base_1 = require("../base");
41
- const path = __importStar(require("path"));
42
- const fs = __importStar(require("fs"));
43
- const codeboltjs_1 = __importDefault(require("@codebolt/codeboltjs"));
44
- class EnvironmentContextModifier extends base_1.BaseMessageModifier {
45
- constructor(options = {}) {
46
- super();
47
- this.defaultExcludePatterns = [
48
- 'node_modules/**',
49
- '.git/**',
50
- 'dist/**',
51
- 'build/**',
52
- '*.log',
53
- '*.tmp',
54
- '.DS_Store',
55
- 'coverage/**',
56
- '.next/**',
57
- '.nuxt/**'
58
- ];
59
- this.options = {
60
- enableFullContext: options.enableFullContext || false,
61
- maxFiles: options.maxFiles || 100,
62
- maxFileSize: options.maxFileSize || 100 * 1024, // 100KB per file
63
- includePatterns: options.includePatterns || ['**/*.ts', '**/*.js', '**/*.json', '**/*.md', '**/*.txt', '**/*.yml', '**/*.yaml'],
64
- excludePatterns: [...this.defaultExcludePatterns, ...(options.excludePatterns || [])]
65
- };
66
- }
67
- async modify(originalRequest, createdMessage) {
68
- try {
69
- // Get current date formatted to user's locale
70
- const today = new Date().toLocaleDateString(undefined, {
71
- weekday: 'long',
72
- year: 'numeric',
73
- month: 'long',
74
- day: 'numeric',
75
- });
76
- const platform = process.platform;
77
- const { projectPath } = await codeboltjs_1.default.project.getProjectPath();
78
- if (!projectPath) {
79
- return createdMessage;
80
- }
81
- const currentDir = projectPath;
82
- // Get basic directory listing
83
- let directoryListing = '';
84
- try {
85
- const files = await fs.promises.readdir(currentDir);
86
- const fileList = files.slice(0, 20).join(', '); // Limit to first 20 files
87
- const moreFiles = files.length > 20 ? ` ... and ${files.length - 20} more files` : '';
88
- directoryListing = `Files in current directory: ${fileList}${moreFiles}`;
89
- }
90
- catch (error) {
91
- directoryListing = 'Unable to read current directory';
92
- }
93
- const environmentContext = `
94
- This is the CodeBolt AI Agent. Setting up context for our chat.
95
- Today's date is ${today} (formatted according to the user's locale).
96
- Operating system: ${platform}
97
- Current working directory: ${currentDir}
98
- ${directoryListing}
99
- `.trim();
100
- // Prepare context parts (same as gemini-cli)
101
- const contextParts = [environmentContext];
102
- // Add full file context if enabled (just like gemini-cli does)
103
- if (this.options.enableFullContext) {
104
- try {
105
- const fullContextContent = await this.generateFullContext(currentDir);
106
- if (fullContextContent) {
107
- contextParts.push(`\n--- Full File Context ---\n${fullContextContent}`);
108
- }
109
- }
110
- catch (error) {
111
- console.error('Error reading full file context:', error);
112
- contextParts.push('\n--- Error reading full file context ---');
113
- }
114
- }
115
- const finalContent = contextParts.join('\n\n');
116
- const contextMessage = {
117
- role: 'system',
118
- content: finalContent
119
- };
120
- // Find existing system message or add new one
121
- const messages = [...createdMessage.message.messages];
122
- const systemMessageIndex = messages.findIndex(msg => msg.role === 'system');
123
- if (systemMessageIndex !== -1) {
124
- // Append to existing system message
125
- messages[systemMessageIndex] = {
126
- ...messages[systemMessageIndex],
127
- content: `${messages[systemMessageIndex].content}\n\n${finalContent}`
128
- };
129
- }
130
- else {
131
- // Add new system message at the beginning
132
- messages.unshift(contextMessage);
133
- }
134
- return Promise.resolve({
135
- message: {
136
- ...createdMessage.message,
137
- messages
138
- },
139
- metadata: {
140
- ...createdMessage.metadata,
141
- environmentContextAdded: true,
142
- fullContextAdded: this.options.enableFullContext,
143
- contextFilesCount: this.options.enableFullContext ? await this.countContextFiles(currentDir) : 0,
144
- environmentInfo: {
145
- date: today,
146
- platform,
147
- currentDir
148
- }
149
- }
150
- });
151
- }
152
- catch (error) {
153
- console.error('Error in EnvironmentContextModifier:', error);
154
- return createdMessage;
155
- }
156
- }
157
- // Full context methods (integrated like gemini-cli)
158
- async generateFullContext(basePath) {
159
- try {
160
- const files = await this.findRelevantFiles(basePath);
161
- const contextParts = [];
162
- let processedFiles = 0;
163
- for (const filePath of files) {
164
- if (processedFiles >= this.options.maxFiles) {
165
- contextParts.push(`\n... (${files.length - processedFiles} more files not shown due to limit)\n`);
166
- break;
167
- }
168
- try {
169
- const relativePath = path.relative(basePath, filePath);
170
- const stats = await fs.promises.stat(filePath);
171
- // Skip files that are too large
172
- if (stats.size > this.options.maxFileSize) {
173
- contextParts.push(`--- ${relativePath} ---\n[File too large: ${stats.size} bytes]\n`);
174
- processedFiles++;
175
- continue;
176
- }
177
- const content = await fs.promises.readFile(filePath, 'utf-8');
178
- contextParts.push(`--- ${relativePath} ---\n${content}\n`);
179
- processedFiles++;
180
- }
181
- catch (error) {
182
- const relativePath = path.relative(basePath, filePath);
183
- contextParts.push(`--- ${relativePath} ---\n[Error reading file: ${error instanceof Error ? error.message : 'Unknown error'}]\n`);
184
- processedFiles++;
185
- }
186
- }
187
- return contextParts.join('\n');
188
- }
189
- catch (error) {
190
- console.error('Error generating full context:', error);
191
- return '';
192
- }
193
- }
194
- async findRelevantFiles(basePath) {
195
- const files = [];
196
- try {
197
- await this.walkDirectory(basePath, files, basePath);
198
- return files.sort();
199
- }
200
- catch (error) {
201
- console.error('Error finding relevant files:', error);
202
- return [];
203
- }
204
- }
205
- async walkDirectory(dir, files, basePath) {
206
- try {
207
- const entries = await fs.promises.readdir(dir, { withFileTypes: true });
208
- for (const entry of entries) {
209
- const fullPath = path.join(dir, entry.name);
210
- const relativePath = path.relative(basePath, fullPath);
211
- // Check exclusion patterns
212
- if (this.isExcluded(relativePath)) {
213
- continue;
214
- }
215
- if (entry.isDirectory()) {
216
- await this.walkDirectory(fullPath, files, basePath);
217
- }
218
- else if (entry.isFile()) {
219
- // Check inclusion patterns
220
- if (this.isIncluded(relativePath)) {
221
- files.push(fullPath);
222
- }
223
- }
224
- }
225
- }
226
- catch (error) {
227
- // Skip directories we can't read
228
- }
229
- }
230
- isExcluded(relativePath) {
231
- return this.options.excludePatterns.some(pattern => {
232
- return this.matchesPattern(relativePath, pattern);
233
- });
234
- }
235
- isIncluded(relativePath) {
236
- return this.options.includePatterns.some(pattern => {
237
- return this.matchesPattern(relativePath, pattern);
238
- });
239
- }
240
- matchesPattern(filePath, pattern) {
241
- // Simple glob pattern matching - in production, use a proper glob library
242
- const regexPattern = pattern
243
- .replace(/\*\*/g, '.*')
244
- .replace(/\*/g, '[^/]*')
245
- .replace(/\?/g, '.');
246
- const regex = new RegExp(`^${regexPattern}$`);
247
- return regex.test(filePath);
248
- }
249
- async countContextFiles(basePath) {
250
- try {
251
- const files = await this.findRelevantFiles(basePath);
252
- return Math.min(files.length, this.options.maxFiles);
253
- }
254
- catch (error) {
255
- return 0;
256
- }
257
- }
258
- // Public methods to control full context
259
- enableFullContext() {
260
- this.options.enableFullContext = true;
261
- }
262
- disableFullContext() {
263
- this.options.enableFullContext = false;
264
- }
265
- isFullContextEnabled() {
266
- return this.options.enableFullContext || false;
267
- }
268
- }
269
- exports.EnvironmentContextModifier = EnvironmentContextModifier;
@@ -1,38 +0,0 @@
1
- import { ProcessedMessage } from "@codebolt/types/agent";
2
- import { BaseMessageModifier } from "../base";
3
- import { FlatUserMessage } from "@codebolt/types/sdk";
4
- export interface FallbackHandlerOptions {
5
- enableFallback?: boolean;
6
- maxRetries?: number;
7
- fallbackStrategies?: FallbackStrategy[];
8
- timeoutMs?: number;
9
- }
10
- export declare enum FallbackStrategy {
11
- RETRY_WITH_SIMPLIFIED_CONTEXT = "retry_simplified",
12
- RETRY_WITHOUT_TOOLS = "retry_no_tools",
13
- RETRY_WITH_SHORTER_HISTORY = "retry_short_history",
14
- USE_FALLBACK_MODEL = "fallback_model",
15
- PROVIDE_ERROR_CONTEXT = "error_context"
16
- }
17
- export declare class FallbackHandlerModifier extends BaseMessageModifier {
18
- private readonly options;
19
- private fallbackContexts;
20
- constructor(options?: FallbackHandlerOptions);
21
- modify(originalRequest: FlatUserMessage, createdMessage: ProcessedMessage): Promise<ProcessedMessage>;
22
- private generateMessageId;
23
- private shouldApplyFallback;
24
- private initializeFallbackContext;
25
- private applyFallbackStrategy;
26
- private getNextFallbackStrategy;
27
- private simplifyContext;
28
- private removeTools;
29
- private shortenHistory;
30
- private setFallbackModel;
31
- private addErrorContextMessage;
32
- private updateFallbackContext;
33
- clearFallbackContext(messageId: string): void;
34
- getFallbackStats(): {
35
- totalContexts: number;
36
- averageAttempts: number;
37
- };
38
- }
@@ -1,217 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FallbackHandlerModifier = exports.FallbackStrategy = void 0;
4
- const base_1 = require("../base");
5
- var FallbackStrategy;
6
- (function (FallbackStrategy) {
7
- FallbackStrategy["RETRY_WITH_SIMPLIFIED_CONTEXT"] = "retry_simplified";
8
- FallbackStrategy["RETRY_WITHOUT_TOOLS"] = "retry_no_tools";
9
- FallbackStrategy["RETRY_WITH_SHORTER_HISTORY"] = "retry_short_history";
10
- FallbackStrategy["USE_FALLBACK_MODEL"] = "fallback_model";
11
- FallbackStrategy["PROVIDE_ERROR_CONTEXT"] = "error_context";
12
- })(FallbackStrategy || (exports.FallbackStrategy = FallbackStrategy = {}));
13
- class FallbackHandlerModifier extends base_1.BaseMessageModifier {
14
- constructor(options = {}) {
15
- super();
16
- this.fallbackContexts = new Map();
17
- this.options = {
18
- enableFallback: options.enableFallback !== false,
19
- maxRetries: options.maxRetries || 3,
20
- fallbackStrategies: options.fallbackStrategies || [
21
- FallbackStrategy.RETRY_WITH_SIMPLIFIED_CONTEXT,
22
- FallbackStrategy.RETRY_WITHOUT_TOOLS,
23
- FallbackStrategy.RETRY_WITH_SHORTER_HISTORY
24
- ],
25
- timeoutMs: options.timeoutMs || 30000
26
- };
27
- }
28
- async modify(originalRequest, createdMessage) {
29
- try {
30
- if (!this.options.enableFallback) {
31
- return createdMessage;
32
- }
33
- // Check if this is a retry attempt
34
- const messageId = this.generateMessageId(originalRequest);
35
- const fallbackContext = this.fallbackContexts.get(messageId);
36
- if (fallbackContext && fallbackContext.attemptCount >= this.options.maxRetries) {
37
- // Max retries reached, add error context and return
38
- return this.addErrorContextMessage(createdMessage, fallbackContext);
39
- }
40
- // Check if we need to apply fallback strategies
41
- const shouldApplyFallback = this.shouldApplyFallback(createdMessage, fallbackContext);
42
- if (!shouldApplyFallback) {
43
- return createdMessage;
44
- }
45
- // Apply the next fallback strategy
46
- const modifiedMessage = await this.applyFallbackStrategy(createdMessage, fallbackContext || this.initializeFallbackContext(originalRequest));
47
- // Update fallback context
48
- this.updateFallbackContext(messageId, modifiedMessage);
49
- return modifiedMessage;
50
- }
51
- catch (error) {
52
- console.error('Error in FallbackHandlerModifier:', error);
53
- return createdMessage;
54
- }
55
- }
56
- generateMessageId(request) {
57
- // Generate a unique ID for this message request
58
- const content = request.userMessage || '';
59
- return Buffer.from(content).toString('base64').substring(0, 16);
60
- }
61
- shouldApplyFallback(message, context) {
62
- var _a, _b, _c;
63
- // Check metadata for error indicators
64
- const hasError = !!(((_a = message.metadata) === null || _a === void 0 ? void 0 : _a.hasError) || ((_b = message.metadata) === null || _b === void 0 ? void 0 : _b.lastError));
65
- const isRetry = !!((_c = message.metadata) === null || _c === void 0 ? void 0 : _c.isRetry) || ((context === null || context === void 0 ? void 0 : context.attemptCount) || 0) > 0;
66
- return hasError || isRetry;
67
- }
68
- initializeFallbackContext(originalRequest) {
69
- const content = originalRequest.userMessage || '';
70
- return {
71
- attemptCount: 0,
72
- originalMessageLength: content.length,
73
- fallbacksAttempted: []
74
- };
75
- }
76
- async applyFallbackStrategy(message, context) {
77
- const nextStrategy = this.getNextFallbackStrategy(context);
78
- if (!nextStrategy) {
79
- return message;
80
- }
81
- context.fallbacksAttempted.push(nextStrategy);
82
- switch (nextStrategy) {
83
- case FallbackStrategy.RETRY_WITH_SIMPLIFIED_CONTEXT:
84
- return this.simplifyContext(message);
85
- case FallbackStrategy.RETRY_WITHOUT_TOOLS:
86
- return this.removeTools(message);
87
- case FallbackStrategy.RETRY_WITH_SHORTER_HISTORY:
88
- return this.shortenHistory(message);
89
- case FallbackStrategy.USE_FALLBACK_MODEL:
90
- return this.setFallbackModel(message);
91
- case FallbackStrategy.PROVIDE_ERROR_CONTEXT:
92
- return this.addErrorContextMessage(message, context);
93
- default:
94
- return message;
95
- }
96
- }
97
- getNextFallbackStrategy(context) {
98
- const availableStrategies = this.options.fallbackStrategies.filter(strategy => !context.fallbacksAttempted.includes(strategy));
99
- return availableStrategies.length > 0 ? availableStrategies[0] : null;
100
- }
101
- simplifyContext(message) {
102
- // Remove or simplify complex context messages
103
- const simplifiedMessages = message.message.messages.map(msg => {
104
- if (msg.role === 'system' && typeof msg.content === 'string' && msg.content.length > 500) {
105
- return {
106
- ...msg,
107
- content: msg.content.substring(0, 500) + '...[context simplified for fallback]'
108
- };
109
- }
110
- return msg;
111
- });
112
- return {
113
- ...message,
114
- message: {
115
- ...message.message,
116
- messages: simplifiedMessages
117
- },
118
- metadata: {
119
- ...message.metadata,
120
- fallbackApplied: 'simplified_context',
121
- isRetry: true
122
- }
123
- };
124
- }
125
- removeTools(message) {
126
- return {
127
- ...message,
128
- metadata: {
129
- ...message.metadata,
130
- fallbackApplied: 'no_tools',
131
- toolsDisabled: true,
132
- isRetry: true
133
- }
134
- };
135
- }
136
- shortenHistory(message) {
137
- // Keep only the last few messages
138
- const messages = message.message.messages;
139
- const systemMessages = messages.filter(msg => msg.role === 'system');
140
- const otherMessages = messages.filter(msg => msg.role !== 'system');
141
- const recentMessages = otherMessages.slice(-3); // Keep last 3 non-system messages
142
- return {
143
- ...message,
144
- message: {
145
- ...message.message,
146
- messages: [...systemMessages, ...recentMessages]
147
- },
148
- metadata: {
149
- ...message.metadata,
150
- fallbackApplied: 'shortened_history',
151
- originalMessageCount: messages.length,
152
- isRetry: true
153
- }
154
- };
155
- }
156
- setFallbackModel(message) {
157
- return {
158
- ...message,
159
- metadata: {
160
- ...message.metadata,
161
- fallbackApplied: 'fallback_model',
162
- useFallbackModel: true,
163
- isRetry: true
164
- }
165
- };
166
- }
167
- addErrorContextMessage(message, context) {
168
- const errorMessage = {
169
- role: 'system',
170
- content: `Note: This request has been attempted ${context.attemptCount} times with fallback strategies: ${context.fallbacksAttempted.join(', ')}. Please provide a simpler response if the request seems too complex.`
171
- };
172
- return {
173
- ...message,
174
- message: {
175
- ...message.message,
176
- messages: [errorMessage, ...message.message.messages]
177
- },
178
- metadata: {
179
- ...message.metadata,
180
- fallbackApplied: 'error_context',
181
- fallbackExhausted: true,
182
- isRetry: true
183
- }
184
- };
185
- }
186
- updateFallbackContext(messageId, message) {
187
- const existingContext = this.fallbackContexts.get(messageId);
188
- if (existingContext) {
189
- existingContext.attemptCount++;
190
- }
191
- else {
192
- this.fallbackContexts.set(messageId, {
193
- attemptCount: 1,
194
- originalMessageLength: JSON.stringify(message.message).length,
195
- fallbacksAttempted: []
196
- });
197
- }
198
- // Clean up old contexts (prevent memory leaks)
199
- if (this.fallbackContexts.size > 100) {
200
- const entries = Array.from(this.fallbackContexts.entries());
201
- const oldestKey = entries[0][0];
202
- this.fallbackContexts.delete(oldestKey);
203
- }
204
- }
205
- clearFallbackContext(messageId) {
206
- this.fallbackContexts.delete(messageId);
207
- }
208
- getFallbackStats() {
209
- const contexts = Array.from(this.fallbackContexts.values());
210
- const totalAttempts = contexts.reduce((sum, ctx) => sum + ctx.attemptCount, 0);
211
- return {
212
- totalContexts: contexts.length,
213
- averageAttempts: contexts.length > 0 ? totalAttempts / contexts.length : 0
214
- };
215
- }
216
- }
217
- exports.FallbackHandlerModifier = FallbackHandlerModifier;
@@ -1,34 +0,0 @@
1
- import { ProcessedMessage } from "@codebolt/types/agent";
2
- import { BaseMessageModifier } from "../base";
3
- import { FlatUserMessage } from "@codebolt/types/sdk";
4
- export interface IdeContextOptions {
5
- includeOpenFiles?: boolean;
6
- includeActiveFile?: boolean;
7
- includeCursorPosition?: boolean;
8
- includeSelectedText?: boolean;
9
- maxOpenFiles?: number;
10
- }
11
- export interface FileInfo {
12
- path: string;
13
- isActive?: boolean;
14
- cursor?: {
15
- line: number;
16
- character: number;
17
- };
18
- selectedText?: string;
19
- }
20
- export interface IdeContext {
21
- workspaceState?: {
22
- openFiles: FileInfo[];
23
- };
24
- }
25
- export declare class IdeContextModifier extends BaseMessageModifier {
26
- private readonly options;
27
- private lastSentIdeContext?;
28
- private forceFullContext;
29
- constructor(options?: IdeContextOptions);
30
- modify(originalRequest: FlatUserMessage, createdMessage: ProcessedMessage): Promise<ProcessedMessage>;
31
- private getIdeContext;
32
- private getIdeContextParts;
33
- setForceFullContext(force: boolean): void;
34
- }