@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,147 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IdeContextModifier = void 0;
4
- const base_1 = require("../base");
5
- class IdeContextModifier extends base_1.BaseMessageModifier {
6
- constructor(options = {}) {
7
- super();
8
- this.forceFullContext = true;
9
- this.options = {
10
- includeOpenFiles: options.includeOpenFiles !== false,
11
- includeActiveFile: options.includeActiveFile !== false,
12
- includeCursorPosition: options.includeCursorPosition !== false,
13
- includeSelectedText: options.includeSelectedText !== false,
14
- maxOpenFiles: options.maxOpenFiles || 10
15
- };
16
- }
17
- modify(originalRequest, createdMessage) {
18
- try {
19
- // In a real implementation, this would get IDE context from a service
20
- // For now, we'll create a mock context or try to get it from metadata
21
- const ideContext = this.getIdeContext(createdMessage.metadata);
22
- if (!ideContext) {
23
- return Promise.resolve(createdMessage);
24
- }
25
- const { contextParts, newIdeContext } = this.getIdeContextParts(this.forceFullContext, ideContext);
26
- if (contextParts.length === 0) {
27
- return Promise.resolve(createdMessage);
28
- }
29
- const ideContextMessage = {
30
- role: 'system',
31
- content: contextParts.join('\n')
32
- };
33
- // Find existing system message or add new one
34
- const messages = [...createdMessage.message.messages];
35
- const systemMessageIndex = messages.findIndex(msg => msg.role === 'system');
36
- if (systemMessageIndex !== -1) {
37
- // Append to existing system message
38
- messages[systemMessageIndex] = {
39
- ...messages[systemMessageIndex],
40
- content: `${messages[systemMessageIndex].content}\n\n${ideContextMessage.content}`
41
- };
42
- }
43
- else {
44
- // Add new system message
45
- messages.unshift(ideContextMessage);
46
- }
47
- this.lastSentIdeContext = newIdeContext;
48
- this.forceFullContext = false;
49
- return Promise.resolve({
50
- message: {
51
- ...createdMessage.message,
52
- messages
53
- },
54
- metadata: {
55
- ...createdMessage.metadata,
56
- ideContextAdded: true,
57
- ideContextType: this.forceFullContext ? 'full' : 'incremental'
58
- }
59
- });
60
- }
61
- catch (error) {
62
- console.error('Error in IdeContextModifier:', error);
63
- return Promise.resolve(createdMessage);
64
- }
65
- }
66
- getIdeContext(metadata) {
67
- // Try to get IDE context from the metadata parameter
68
- if (metadata === null || metadata === void 0 ? void 0 : metadata.ideContext) {
69
- return metadata.ideContext;
70
- }
71
- // Mock IDE context for demonstration
72
- // In a real implementation, this would come from an IDE service
73
- return {
74
- workspaceState: {
75
- openFiles: [
76
- {
77
- path: '/current/project/src/main.ts',
78
- isActive: true,
79
- cursor: { line: 42, character: 15 },
80
- selectedText: 'const result = '
81
- },
82
- {
83
- path: '/current/project/src/utils.ts',
84
- isActive: false
85
- },
86
- {
87
- path: '/current/project/README.md',
88
- isActive: false
89
- }
90
- ]
91
- }
92
- };
93
- }
94
- getIdeContextParts(forceFullContext, currentIdeContext) {
95
- var _a;
96
- if (!((_a = currentIdeContext === null || currentIdeContext === void 0 ? void 0 : currentIdeContext.workspaceState) === null || _a === void 0 ? void 0 : _a.openFiles)) {
97
- return { contextParts: [], newIdeContext: undefined };
98
- }
99
- if (forceFullContext || !this.lastSentIdeContext) {
100
- // Send full context as JSON
101
- const openFiles = currentIdeContext.workspaceState.openFiles;
102
- const activeFile = openFiles.find((f) => f.isActive);
103
- const otherOpenFiles = openFiles
104
- .filter((f) => !f.isActive)
105
- .map((f) => f.path)
106
- .slice(0, this.options.maxOpenFiles - 1); // Reserve space for active file
107
- const contextData = {};
108
- if (activeFile && this.options.includeActiveFile) {
109
- const activeFileData = {
110
- path: activeFile.path
111
- };
112
- if (this.options.includeCursorPosition && activeFile.cursor) {
113
- activeFileData.cursor = {
114
- line: activeFile.cursor.line,
115
- character: activeFile.cursor.character,
116
- };
117
- }
118
- if (this.options.includeSelectedText && activeFile.selectedText) {
119
- activeFileData.selectedText = activeFile.selectedText;
120
- }
121
- contextData['activeFile'] = activeFileData;
122
- }
123
- if (this.options.includeOpenFiles && otherOpenFiles.length > 0) {
124
- contextData['otherOpenFiles'] = otherOpenFiles;
125
- }
126
- if (Object.keys(contextData).length === 0) {
127
- return { contextParts: [], newIdeContext: currentIdeContext };
128
- }
129
- const jsonString = JSON.stringify(contextData, null, 2);
130
- const contextParts = [
131
- "Here is the user's editor context as a JSON object. This is for your information only.",
132
- '```json',
133
- jsonString,
134
- '```',
135
- "Don't acknowledge this context in your response unless specifically asked about it."
136
- ];
137
- return { contextParts, newIdeContext: currentIdeContext };
138
- }
139
- // For incremental updates, we would compare with lastSentIdeContext
140
- // and only send changes. For now, we'll skip incremental updates.
141
- return { contextParts: [], newIdeContext: currentIdeContext };
142
- }
143
- setForceFullContext(force) {
144
- this.forceFullContext = force;
145
- }
146
- }
147
- exports.IdeContextModifier = IdeContextModifier;
@@ -1,12 +0,0 @@
1
- export { EnvironmentContextModifier, type EnvironmentContextOptions } from './environmentContextModifier';
2
- export { CoreSystemPromptModifier, type CoreSystemPromptOptions } from './coreSystemPromptModifier';
3
- export { DirectoryContextModifier, type DirectoryContextOptions } from './directoryContextModifier';
4
- export { IdeContextModifier, type IdeContextOptions, type FileInfo, type IdeContext } from './ideContextModifier';
5
- export { ChatCompressionModifier, type ChatCompressionOptions } from './chatCompressionModifier';
6
- export { AtFileProcessorModifier, type AtFileProcessorOptions } from './atFileProcessorModifier';
7
- export { ShellProcessorModifier, type ShellProcessorOptions } from './shellProcessorModifier';
8
- export { ArgumentProcessorModifier, type ArgumentProcessorOptions } from './argumentProcessorModifier';
9
- export { MemoryImportModifier, type MemoryImportOptions } from './memoryImportModifier';
10
- export { LoopDetectionModifier, type LoopDetectionOptions } from './loopDetectionModifier';
11
- export { ToolInjectionModifier, type ToolInjectionOptions } from './toolInjectionModifier';
12
- export { ChatRecordingModifier, type ChatRecordingOptions } from './chatRecordingModifier';
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ChatRecordingModifier = exports.ToolInjectionModifier = exports.LoopDetectionModifier = exports.MemoryImportModifier = exports.ArgumentProcessorModifier = exports.ShellProcessorModifier = exports.AtFileProcessorModifier = exports.ChatCompressionModifier = exports.IdeContextModifier = exports.DirectoryContextModifier = exports.CoreSystemPromptModifier = exports.EnvironmentContextModifier = void 0;
4
- // Gemini-CLI equivalent modifiers
5
- var environmentContextModifier_1 = require("./environmentContextModifier");
6
- Object.defineProperty(exports, "EnvironmentContextModifier", { enumerable: true, get: function () { return environmentContextModifier_1.EnvironmentContextModifier; } });
7
- var coreSystemPromptModifier_1 = require("./coreSystemPromptModifier");
8
- Object.defineProperty(exports, "CoreSystemPromptModifier", { enumerable: true, get: function () { return coreSystemPromptModifier_1.CoreSystemPromptModifier; } });
9
- var directoryContextModifier_1 = require("./directoryContextModifier");
10
- Object.defineProperty(exports, "DirectoryContextModifier", { enumerable: true, get: function () { return directoryContextModifier_1.DirectoryContextModifier; } });
11
- var ideContextModifier_1 = require("./ideContextModifier");
12
- Object.defineProperty(exports, "IdeContextModifier", { enumerable: true, get: function () { return ideContextModifier_1.IdeContextModifier; } });
13
- var chatCompressionModifier_1 = require("./chatCompressionModifier");
14
- Object.defineProperty(exports, "ChatCompressionModifier", { enumerable: true, get: function () { return chatCompressionModifier_1.ChatCompressionModifier; } });
15
- var atFileProcessorModifier_1 = require("./atFileProcessorModifier");
16
- Object.defineProperty(exports, "AtFileProcessorModifier", { enumerable: true, get: function () { return atFileProcessorModifier_1.AtFileProcessorModifier; } });
17
- var shellProcessorModifier_1 = require("./shellProcessorModifier");
18
- Object.defineProperty(exports, "ShellProcessorModifier", { enumerable: true, get: function () { return shellProcessorModifier_1.ShellProcessorModifier; } });
19
- var argumentProcessorModifier_1 = require("./argumentProcessorModifier");
20
- Object.defineProperty(exports, "ArgumentProcessorModifier", { enumerable: true, get: function () { return argumentProcessorModifier_1.ArgumentProcessorModifier; } });
21
- var memoryImportModifier_1 = require("./memoryImportModifier");
22
- Object.defineProperty(exports, "MemoryImportModifier", { enumerable: true, get: function () { return memoryImportModifier_1.MemoryImportModifier; } });
23
- var loopDetectionModifier_1 = require("./loopDetectionModifier");
24
- Object.defineProperty(exports, "LoopDetectionModifier", { enumerable: true, get: function () { return loopDetectionModifier_1.LoopDetectionModifier; } });
25
- var toolInjectionModifier_1 = require("./toolInjectionModifier");
26
- Object.defineProperty(exports, "ToolInjectionModifier", { enumerable: true, get: function () { return toolInjectionModifier_1.ToolInjectionModifier; } });
27
- var chatRecordingModifier_1 = require("./chatRecordingModifier");
28
- Object.defineProperty(exports, "ChatRecordingModifier", { enumerable: true, get: function () { return chatRecordingModifier_1.ChatRecordingModifier; } });
@@ -1,29 +0,0 @@
1
- import { ProcessedMessage } from "@codebolt/types/agent";
2
- import { BaseMessageModifier } from "../base";
3
- import { FlatUserMessage } from "@codebolt/types/sdk";
4
- export interface LoopDetectionOptions {
5
- maxSimilarMessages?: number;
6
- similarityThreshold?: number;
7
- timeWindowMs?: number;
8
- enableLoopPrevention?: boolean;
9
- }
10
- interface MessageHistory {
11
- content: string;
12
- timestamp: number;
13
- role: string;
14
- }
15
- export declare class LoopDetectionModifier extends BaseMessageModifier {
16
- private readonly options;
17
- private messageHistory;
18
- private loopDetected;
19
- constructor(options?: LoopDetectionOptions);
20
- modify(originalRequest: FlatUserMessage, createdMessage: ProcessedMessage): Promise<ProcessedMessage>;
21
- private detectLoop;
22
- private checkSimilarMessages;
23
- private calculateSimilarity;
24
- private levenshteinDistance;
25
- private cleanOldMessages;
26
- resetLoopDetection(): void;
27
- getMessageHistory(): MessageHistory[];
28
- }
29
- export {};
@@ -1,155 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LoopDetectionModifier = void 0;
4
- const base_1 = require("../base");
5
- class LoopDetectionModifier extends base_1.BaseMessageModifier {
6
- constructor(options = {}) {
7
- super();
8
- this.messageHistory = [];
9
- this.loopDetected = false;
10
- this.options = {
11
- maxSimilarMessages: options.maxSimilarMessages || 3,
12
- similarityThreshold: options.similarityThreshold || 0.8,
13
- timeWindowMs: options.timeWindowMs || 60000, // 1 minute
14
- enableLoopPrevention: options.enableLoopPrevention !== false
15
- };
16
- }
17
- modify(originalRequest, createdMessage) {
18
- try {
19
- if (!this.options.enableLoopPrevention) {
20
- return Promise.resolve(createdMessage);
21
- }
22
- const currentTime = Date.now();
23
- const messages = createdMessage.message.messages;
24
- // Add current messages to history
25
- for (const message of messages) {
26
- if (typeof message.content === 'string') {
27
- this.messageHistory.push({
28
- content: message.content,
29
- timestamp: currentTime,
30
- role: message.role
31
- });
32
- }
33
- }
34
- // Clean old messages from history
35
- this.cleanOldMessages(currentTime);
36
- // Check for loops
37
- const loopDetected = this.detectLoop();
38
- if (loopDetected && !this.loopDetected) {
39
- this.loopDetected = true;
40
- // Add loop detection warning
41
- const warningMessage = {
42
- role: 'system',
43
- content: `[Loop Detection Warning] Similar messages detected in recent conversation. This may indicate a conversational loop. Consider rephrasing your request or providing more specific information.`
44
- };
45
- const updatedMessages = [...messages, warningMessage];
46
- return Promise.resolve({
47
- message: {
48
- ...createdMessage.message,
49
- messages: updatedMessages
50
- },
51
- metadata: {
52
- ...createdMessage.metadata,
53
- loopDetected: true,
54
- loopDetectionWarningAdded: true
55
- }
56
- });
57
- }
58
- // Reset loop detection if we haven't detected a loop recently
59
- if (!loopDetected && this.loopDetected) {
60
- this.loopDetected = false;
61
- }
62
- return Promise.resolve({
63
- message: createdMessage.message,
64
- metadata: {
65
- ...createdMessage.metadata,
66
- loopDetectionChecked: true,
67
- loopDetected: false
68
- }
69
- });
70
- }
71
- catch (error) {
72
- console.error('Error in LoopDetectionModifier:', error);
73
- return Promise.resolve(createdMessage);
74
- }
75
- }
76
- detectLoop() {
77
- if (this.messageHistory.length < this.options.maxSimilarMessages) {
78
- return false;
79
- }
80
- // Get recent messages grouped by role
81
- const recentUserMessages = this.messageHistory
82
- .filter(msg => msg.role === 'user')
83
- .slice(-this.options.maxSimilarMessages);
84
- const recentAssistantMessages = this.messageHistory
85
- .filter(msg => msg.role === 'assistant')
86
- .slice(-this.options.maxSimilarMessages);
87
- // Check for similar user messages
88
- if (recentUserMessages.length >= this.options.maxSimilarMessages) {
89
- const userLoop = this.checkSimilarMessages(recentUserMessages);
90
- if (userLoop)
91
- return true;
92
- }
93
- // Check for similar assistant messages
94
- if (recentAssistantMessages.length >= this.options.maxSimilarMessages) {
95
- const assistantLoop = this.checkSimilarMessages(recentAssistantMessages);
96
- if (assistantLoop)
97
- return true;
98
- }
99
- return false;
100
- }
101
- checkSimilarMessages(messages) {
102
- if (messages.length < 2)
103
- return false;
104
- // Compare each message with every other message
105
- for (let i = 0; i < messages.length - 1; i++) {
106
- for (let j = i + 1; j < messages.length; j++) {
107
- const similarity = this.calculateSimilarity(messages[i].content, messages[j].content);
108
- if (similarity >= this.options.similarityThreshold) {
109
- return true;
110
- }
111
- }
112
- }
113
- return false;
114
- }
115
- calculateSimilarity(text1, text2) {
116
- // Simple similarity calculation using Levenshtein distance
117
- const distance = this.levenshteinDistance(text1.toLowerCase(), text2.toLowerCase());
118
- const maxLength = Math.max(text1.length, text2.length);
119
- if (maxLength === 0)
120
- return 1;
121
- return 1 - (distance / maxLength);
122
- }
123
- levenshteinDistance(str1, str2) {
124
- const matrix = [];
125
- for (let i = 0; i <= str2.length; i++) {
126
- matrix[i] = [i];
127
- }
128
- for (let j = 0; j <= str1.length; j++) {
129
- matrix[0][j] = j;
130
- }
131
- for (let i = 1; i <= str2.length; i++) {
132
- for (let j = 1; j <= str1.length; j++) {
133
- if (str2.charAt(i - 1) === str1.charAt(j - 1)) {
134
- matrix[i][j] = matrix[i - 1][j - 1];
135
- }
136
- else {
137
- matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j] + 1);
138
- }
139
- }
140
- }
141
- return matrix[str2.length][str1.length];
142
- }
143
- cleanOldMessages(currentTime) {
144
- const cutoffTime = currentTime - this.options.timeWindowMs;
145
- this.messageHistory = this.messageHistory.filter(msg => msg.timestamp >= cutoffTime);
146
- }
147
- resetLoopDetection() {
148
- this.messageHistory = [];
149
- this.loopDetected = false;
150
- }
151
- getMessageHistory() {
152
- return [...this.messageHistory];
153
- }
154
- }
155
- exports.LoopDetectionModifier = LoopDetectionModifier;
@@ -1,15 +0,0 @@
1
- import { ProcessedMessage } from "@codebolt/types/agent";
2
- import { BaseMessageModifier } from "../base";
3
- import { FlatUserMessage } from "@codebolt/types/sdk";
4
- export interface MemoryImportOptions {
5
- enableMemoryImport?: boolean;
6
- maxFileSize?: number;
7
- allowedExtensions?: string[];
8
- basePath?: string;
9
- maxImports?: number;
10
- }
11
- export declare class MemoryImportModifier extends BaseMessageModifier {
12
- private readonly options;
13
- constructor(options?: MemoryImportOptions);
14
- modify(originalRequest: FlatUserMessage, createdMessage: ProcessedMessage): Promise<ProcessedMessage>;
15
- }
@@ -1,129 +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
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.MemoryImportModifier = void 0;
37
- const base_1 = require("../base");
38
- const fs = __importStar(require("fs"));
39
- const path = __importStar(require("path"));
40
- class MemoryImportModifier extends base_1.BaseMessageModifier {
41
- constructor(options = {}) {
42
- super();
43
- this.options = {
44
- enableMemoryImport: options.enableMemoryImport !== false,
45
- maxFileSize: options.maxFileSize || 1024 * 1024, // 1MB
46
- allowedExtensions: options.allowedExtensions || ['.md', '.txt', '.json', '.yml', '.yaml', '.xml'],
47
- basePath: options.basePath || process.cwd(),
48
- maxImports: options.maxImports || 10
49
- };
50
- }
51
- async modify(originalRequest, createdMessage) {
52
- try {
53
- if (!this.options.enableMemoryImport) {
54
- return createdMessage;
55
- }
56
- // Get the user message content to process
57
- const userMessage = createdMessage.message.messages.find(msg => msg.role === 'user');
58
- if (!userMessage || typeof userMessage.content !== 'string') {
59
- return createdMessage;
60
- }
61
- // Look for @path/to/file patterns (memory import syntax)
62
- const memoryImportPattern = /@([^\s@]+(?:\.[a-zA-Z0-9]+)?)/g;
63
- let content = userMessage.content;
64
- const processedImports = [];
65
- let match;
66
- let importCount = 0;
67
- while ((match = memoryImportPattern.exec(userMessage.content)) !== null && importCount < this.options.maxImports) {
68
- const filePath = match[1];
69
- const fullPath = path.isAbsolute(filePath) ? filePath : path.join(this.options.basePath, filePath);
70
- try {
71
- // Check if file exists and is allowed
72
- const stats = await fs.promises.stat(fullPath);
73
- if (!stats.isFile()) {
74
- continue;
75
- }
76
- if (stats.size > this.options.maxFileSize) {
77
- content = content.replace(match[0], `[File too large: ${filePath}]`);
78
- continue;
79
- }
80
- const ext = path.extname(filePath);
81
- if (!this.options.allowedExtensions.includes(ext)) {
82
- content = content.replace(match[0], `[Unsupported file type: ${filePath}]`);
83
- continue;
84
- }
85
- // Read and import the file content
86
- const fileContent = await fs.promises.readFile(fullPath, 'utf-8');
87
- const importedContent = `--- Content from ${filePath} ---\n${fileContent}\n--- End of ${filePath} ---`;
88
- content = content.replace(match[0], importedContent);
89
- processedImports.push(filePath);
90
- importCount++;
91
- }
92
- catch (error) {
93
- // Replace with error message if file can't be read
94
- content = content.replace(match[0], `[Error reading ${filePath}: ${error instanceof Error ? error.message : 'unknown error'}]`);
95
- }
96
- }
97
- if (processedImports.length === 0) {
98
- return createdMessage;
99
- }
100
- // Update the user message with processed content
101
- const messages = createdMessage.message.messages.map(msg => {
102
- if (msg.role === 'user' && msg === userMessage) {
103
- return {
104
- ...msg,
105
- content
106
- };
107
- }
108
- return msg;
109
- });
110
- return Promise.resolve({
111
- message: {
112
- ...createdMessage.message,
113
- messages
114
- },
115
- metadata: {
116
- ...createdMessage.metadata,
117
- memoryImportsProcessed: true,
118
- importedFiles: processedImports,
119
- totalImports: processedImports.length
120
- }
121
- });
122
- }
123
- catch (error) {
124
- console.error('Error in MemoryImportModifier:', error);
125
- return createdMessage;
126
- }
127
- }
128
- }
129
- exports.MemoryImportModifier = MemoryImportModifier;
@@ -1,25 +0,0 @@
1
- import { ProcessedMessage } from "@codebolt/types/agent";
2
- import { BaseMessageModifier } from "../base";
3
- import { FlatUserMessage } from "@codebolt/types/sdk";
4
- export interface ShellProcessorOptions {
5
- enableShellExecution?: boolean;
6
- maxExecutionTime?: number;
7
- allowedCommands?: string[];
8
- blockedCommands?: string[];
9
- workingDirectory?: string;
10
- }
11
- export declare class ShellProcessorModifier extends BaseMessageModifier {
12
- private readonly options;
13
- private readonly execAsync;
14
- private readonly SHELL_TRIGGER;
15
- private readonly SHELL_CLOSE;
16
- private readonly ARGS_PLACEHOLDER;
17
- constructor(options?: ShellProcessorOptions);
18
- modify(originalRequest: FlatUserMessage, createdMessage: ProcessedMessage): Promise<ProcessedMessage>;
19
- private processShellInjections;
20
- private extractShellInjections;
21
- private validateCommand;
22
- private executeCommand;
23
- private escapeShellArg;
24
- private escapeRegex;
25
- }