@codebolt/agent 5.0.2 → 5.0.6
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.
- package/dist/agent.d.ts +86 -0
- package/dist/agent.js +324 -0
- package/dist/builderpattern/agent.js +2 -2
- package/dist/builderpattern/followupquestionbuilder.js +1 -1
- package/dist/builderpattern/llmoutputhandler.js +7 -7
- package/dist/builderpattern/usermessage.d.ts +1 -6
- package/dist/composablepattern/document.js +35 -2
- package/dist/followupquestionbuilder.d.ts +75 -0
- package/dist/followupquestionbuilder.js +197 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +23 -0
- package/dist/llmoutputhandler.d.ts +102 -0
- package/dist/llmoutputhandler.js +452 -0
- package/dist/processor/types/interfaces.d.ts +21 -44
- package/dist/processor-pieces/index.d.ts +3 -0
- package/dist/processor-pieces/index.js +3 -0
- package/dist/processor-pieces/messageModifiers/addToolsListMessageModifier.d.ts +5 -14
- package/dist/processor-pieces/messageModifiers/addToolsListMessageModifier.js +40 -41
- package/dist/processor-pieces/messageModifiers/baseContextMessageModifier.d.ts +13 -5
- package/dist/processor-pieces/messageModifiers/baseContextMessageModifier.js +58 -50
- package/dist/processor-pieces/messageModifiers/baseSystemInstructionMessageModifier.d.ts +8 -6
- package/dist/processor-pieces/messageModifiers/baseSystemInstructionMessageModifier.js +22 -66
- package/dist/processor-pieces/messageModifiers/handleUrlMessageModifier.d.ts +2 -3
- package/dist/processor-pieces/messageModifiers/handleUrlMessageModifier.js +2 -1
- package/dist/processor-pieces/messageModifiers/imageAttachmentMessageModifier.d.ts +2 -3
- package/dist/processor-pieces/messageModifiers/imageAttachmentMessageModifier.js +2 -1
- package/dist/processor-pieces/messageModifiers/toolInjectionModifier.js +4 -1
- package/dist/processor-pieces/messageModifiers/workingDirectoryMessageModifier.d.ts +2 -18
- package/dist/processor-pieces/messageModifiers/workingDirectoryMessageModifier.js +93 -291
- package/dist/processor-pieces/postToolCallProcessors/conversationCompactorModifier.d.ts +18 -0
- package/dist/processor-pieces/postToolCallProcessors/conversationCompactorModifier.js +41 -0
- package/dist/processor-pieces/postToolCallProcessors/index.d.ts +2 -1
- package/dist/processor-pieces/postToolCallProcessors/index.js +5 -0
- package/dist/processor-pieces/preInferenceProcessors/index.d.ts +1 -1
- package/dist/processor-pieces/preInferenceProcessors/index.js +3 -0
- package/dist/processor-pieces/pretoolCallProcessors/index.d.ts +2 -1
- package/dist/processor-pieces/pretoolCallProcessors/index.js +5 -0
- package/dist/processor-pieces/pretoolCallProcessors/toolParameterModifier.d.ts +21 -0
- package/dist/processor-pieces/pretoolCallProcessors/toolParameterModifier.js +32 -0
- package/dist/processor-pieces/pretoolCallProcessors/toolValidationModifier.d.ts +16 -0
- package/dist/processor-pieces/pretoolCallProcessors/toolValidationModifier.js +37 -0
- package/dist/promptbuilder.d.ts +382 -0
- package/dist/promptbuilder.js +805 -0
- package/dist/systemprompt.d.ts +20 -0
- package/dist/systemprompt.js +48 -0
- package/dist/taskInstruction.d.ts +37 -0
- package/dist/taskInstruction.js +57 -0
- package/dist/unified/agent/agent.js +2 -2
- package/dist/unified/agent/codeboltAgent.d.ts +122 -0
- package/dist/unified/agent/codeboltAgent.js +210 -0
- package/dist/unified/base/initialPromptGenerator.js +18 -4
- package/dist/unified/base/responseExecutor.d.ts +3 -2
- package/dist/unified/base/responseExecutor.js +100 -56
- package/dist/unified/index.d.ts +4 -0
- package/dist/unified/index.js +12 -1
- package/dist/usermessage.d.ts +70 -0
- package/dist/usermessage.js +123 -0
- package/package.json +5 -5
- package/dist/local-tools/fileTools.d.ts +0 -26
- package/dist/local-tools/fileTools.js +0 -162
- package/dist/processor-pieces/additionalModifiers/argumentProcessorModifier.d.ts +0 -13
- package/dist/processor-pieces/additionalModifiers/argumentProcessorModifier.js +0 -68
- package/dist/processor-pieces/additionalModifiers/atFileProcessorModifier.d.ts +0 -15
- package/dist/processor-pieces/additionalModifiers/atFileProcessorModifier.js +0 -212
- package/dist/processor-pieces/additionalModifiers/chatCompressionModifier.d.ts +0 -19
- package/dist/processor-pieces/additionalModifiers/chatCompressionModifier.js +0 -110
- package/dist/processor-pieces/additionalModifiers/chatRecordingModifier.d.ts +0 -23
- package/dist/processor-pieces/additionalModifiers/chatRecordingModifier.js +0 -173
- package/dist/processor-pieces/additionalModifiers/coreSystemPromptModifier.d.ts +0 -14
- package/dist/processor-pieces/additionalModifiers/coreSystemPromptModifier.js +0 -93
- package/dist/processor-pieces/additionalModifiers/directoryContextModifier.d.ts +0 -30
- package/dist/processor-pieces/additionalModifiers/directoryContextModifier.js +0 -330
- package/dist/processor-pieces/additionalModifiers/environmentContextModifier.d.ts +0 -26
- package/dist/processor-pieces/additionalModifiers/environmentContextModifier.js +0 -269
- package/dist/processor-pieces/additionalModifiers/fallbackHandlerModifier.d.ts +0 -38
- package/dist/processor-pieces/additionalModifiers/fallbackHandlerModifier.js +0 -217
- package/dist/processor-pieces/additionalModifiers/ideContextModifier.d.ts +0 -34
- package/dist/processor-pieces/additionalModifiers/ideContextModifier.js +0 -147
- package/dist/processor-pieces/additionalModifiers/index.d.ts +0 -12
- package/dist/processor-pieces/additionalModifiers/index.js +0 -28
- package/dist/processor-pieces/additionalModifiers/loopDetectionModifier.d.ts +0 -29
- package/dist/processor-pieces/additionalModifiers/loopDetectionModifier.js +0 -155
- package/dist/processor-pieces/additionalModifiers/memoryImportModifier.d.ts +0 -15
- package/dist/processor-pieces/additionalModifiers/memoryImportModifier.js +0 -129
- package/dist/processor-pieces/additionalModifiers/shellProcessorModifier.d.ts +0 -25
- package/dist/processor-pieces/additionalModifiers/shellProcessorModifier.js +0 -169
- package/dist/processor-pieces/additionalModifiers/toolInjectionModifier.d.ts +0 -20
- package/dist/processor-pieces/additionalModifiers/toolInjectionModifier.js +0 -152
- package/dist/processor-pieces/messageModifiers/addCurrentDirectoryRootFilesModifier.d.ts +0 -7
- package/dist/processor-pieces/messageModifiers/addCurrentDirectoryRootFilesModifier.js +0 -93
- package/dist/processor-pieces/messageModifiers/advancedSystemInstructionMessageModifier.d.ts +0 -9
- package/dist/processor-pieces/messageModifiers/advancedSystemInstructionMessageModifier.js +0 -77
- package/dist/processor-pieces/messageModifiers/chatCompressionModifier.d.ts +0 -19
- package/dist/processor-pieces/messageModifiers/chatCompressionModifier.js +0 -110
- package/dist/processor-pieces/messageModifiers/chatHistoryMessageModifier.example.d.ts +0 -20
- package/dist/processor-pieces/messageModifiers/chatHistoryMessageModifier.example.js +0 -124
- package/dist/processor-pieces/messageModifiers/environmentContext.d.ts +0 -41
- package/dist/processor-pieces/messageModifiers/environmentContext.js +0 -355
- package/dist/processor-pieces/messageModifiers/mentionedFilesModifier.d.ts +0 -23
- package/dist/processor-pieces/messageModifiers/mentionedFilesModifier.js +0 -207
- package/dist/processor-pieces/messageModifiers/simpleMessageModifier.d.ts +0 -7
- package/dist/processor-pieces/messageModifiers/simpleMessageModifier.js +0 -26
- package/dist/processor-pieces/postInference/llmOutputValidityProcessor.d.ts +0 -1
- package/dist/processor-pieces/postInference/llmOutputValidityProcessor.js +0 -2
- package/dist/processor-pieces/postInferenceProcessors/checkForNoToolCall.d.ts +0 -7
- package/dist/processor-pieces/postInferenceProcessors/checkForNoToolCall.js +0 -24
- package/dist/processor-pieces/postToolCall/advancedLoopDetectionProcessor.d.ts +0 -41
- package/dist/processor-pieces/postToolCall/advancedLoopDetectionProcessor.js +0 -197
- package/dist/processor-pieces/postToolCall/chatCompressionProcessor.d.ts +0 -26
- package/dist/processor-pieces/postToolCall/chatCompressionProcessor.js +0 -90
- package/dist/processor-pieces/postToolCall/chatRecordingProcessor.d.ts +0 -81
- package/dist/processor-pieces/postToolCall/chatRecordingProcessor.js +0 -329
- package/dist/processor-pieces/postToolCall/contextManagementProcessor.d.ts +0 -40
- package/dist/processor-pieces/postToolCall/contextManagementProcessor.js +0 -272
- package/dist/processor-pieces/postToolCall/conversationCompactorProcessor.d.ts +0 -49
- package/dist/processor-pieces/postToolCall/conversationCompactorProcessor.js +0 -291
- package/dist/processor-pieces/postToolCall/conversationContinuityProcessor.d.ts +0 -49
- package/dist/processor-pieces/postToolCall/conversationContinuityProcessor.js +0 -293
- package/dist/processor-pieces/postToolCall/followUpConversationProcessor.d.ts +0 -47
- package/dist/processor-pieces/postToolCall/followUpConversationProcessor.js +0 -249
- package/dist/processor-pieces/postToolCall/loopDetectionProcessor.d.ts +0 -30
- package/dist/processor-pieces/postToolCall/loopDetectionProcessor.js +0 -137
- package/dist/processor-pieces/postToolCall/responseValidationProcessor.d.ts +0 -30
- package/dist/processor-pieces/postToolCall/responseValidationProcessor.js +0 -228
- package/dist/processor-pieces/postToolCall/telemetryProcessor.d.ts +0 -99
- package/dist/processor-pieces/postToolCall/telemetryProcessor.js +0 -278
- package/dist/processor-pieces/postToolCall/tokenManagementProcessor.d.ts +0 -37
- package/dist/processor-pieces/postToolCall/tokenManagementProcessor.js +0 -178
- package/dist/processor-pieces/postToolCall/toolExecutionProcessor.d.ts +0 -43
- package/dist/processor-pieces/postToolCall/toolExecutionProcessor.js +0 -207
- package/dist/processor-pieces/preInference/conversationCompactorProcessor.d.ts +0 -52
- package/dist/processor-pieces/preInference/conversationCompactorProcessor.js +0 -264
- package/dist/processor-pieces/preInference/conversationContinuityProcessor.d.ts +0 -49
- package/dist/processor-pieces/preInference/conversationContinuityProcessor.js +0 -293
- package/dist/processor-pieces/preInferenceProcessors/conversationCompaction.d.ts +0 -7
- package/dist/processor-pieces/preInferenceProcessors/conversationCompaction.js +0 -31
- package/dist/processor-pieces/preToolCall/index.d.ts +0 -9
- package/dist/processor-pieces/preToolCall/index.js +0 -18
- package/dist/processor-pieces/preToolCall/localToolInterceptorProcessor.d.ts +0 -58
- package/dist/processor-pieces/preToolCall/localToolInterceptorProcessor.js +0 -444
- package/dist/processor-pieces/preToolCall/toolParameterModifierProcessor.d.ts +0 -44
- package/dist/processor-pieces/preToolCall/toolParameterModifierProcessor.js +0 -367
- package/dist/processor-pieces/preToolCall/toolValidationProcessor.d.ts +0 -58
- package/dist/processor-pieces/preToolCall/toolValidationProcessor.js +0 -391
- package/dist/unified/agent/tool.d.ts +0 -99
- package/dist/unified/agent/tool.js +0 -440
- package/dist/unified/examples/agentExample.d.ts +0 -46
- package/dist/unified/examples/agentExample.js +0 -464
- package/dist/unified/examples/documentationPatternExample.d.ts +0 -10
- package/dist/unified/examples/documentationPatternExample.js +0 -385
- package/dist/unified/examples/followUpProcessorsExample.d.ts +0 -45
- package/dist/unified/examples/followUpProcessorsExample.js +0 -311
- package/dist/unified/examples/orchestratorExample.d.ts +0 -16
- package/dist/unified/examples/orchestratorExample.js +0 -415
- package/dist/unified/examples/preToolCallProcessorsExample.d.ts +0 -36
- package/dist/unified/examples/preToolCallProcessorsExample.js +0 -458
- package/dist/unified/examples/workflowExample.d.ts +0 -12
- package/dist/unified/examples/workflowExample.js +0 -497
- package/dist/unified/orchestrator/orchestrator.d.ts +0 -260
- package/dist/unified/orchestrator/orchestrator.js +0 -519
|
@@ -1,293 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ConversationContinuityProcessor = void 0;
|
|
4
|
-
const processorTypes_1 = require("../types/processorTypes");
|
|
5
|
-
/**
|
|
6
|
-
* Processor that maintains conversation continuity by linking related messages,
|
|
7
|
-
* resolving references, and detecting context gaps in follow-up conversations.
|
|
8
|
-
*/
|
|
9
|
-
class ConversationContinuityProcessor extends processorTypes_1.BaseProcessor {
|
|
10
|
-
constructor(options = {}) {
|
|
11
|
-
super(options);
|
|
12
|
-
this.enableContextLinking = options.enableContextLinking !== false;
|
|
13
|
-
this.enableReferenceResolution = options.enableReferenceResolution !== false;
|
|
14
|
-
this.enableGapDetection = options.enableGapDetection !== false;
|
|
15
|
-
this.maxContextLinks = options.maxContextLinks || 5;
|
|
16
|
-
this.contextLookbackWindow = options.contextLookbackWindow || 20;
|
|
17
|
-
this.enableProactiveContext = options.enableProactiveContext !== false;
|
|
18
|
-
}
|
|
19
|
-
async processInput(input) {
|
|
20
|
-
try {
|
|
21
|
-
const { message, context } = input;
|
|
22
|
-
// Only process follow-up conversations
|
|
23
|
-
if (!(context === null || context === void 0 ? void 0 : context.followUpProcessing)) {
|
|
24
|
-
return [this.createEvent('ContinuityProcessingSkipped', {
|
|
25
|
-
reason: 'Not a follow-up conversation processing context'
|
|
26
|
-
})];
|
|
27
|
-
}
|
|
28
|
-
const enhancedMessage = await this.enhanceConversationContinuity(message, context);
|
|
29
|
-
const continuityInfo = this.calculateContinuityInfo(message, enhancedMessage, context);
|
|
30
|
-
return [
|
|
31
|
-
this.createEvent('ConversationContinuityProcessed', continuityInfo),
|
|
32
|
-
this.createEvent('ConversationProcessed', enhancedMessage)
|
|
33
|
-
];
|
|
34
|
-
}
|
|
35
|
-
catch (error) {
|
|
36
|
-
console.error('Error in ConversationContinuityProcessor:', error);
|
|
37
|
-
return [this.createEvent('ConversationContinuityError', {
|
|
38
|
-
error: error instanceof Error ? error.message : String(error),
|
|
39
|
-
originalLength: input.message.messages.length
|
|
40
|
-
})];
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
async enhanceConversationContinuity(message, context) {
|
|
44
|
-
let enhancedMessages = [...message.messages];
|
|
45
|
-
let enhancementsAdded = 0;
|
|
46
|
-
// Add context links if enabled
|
|
47
|
-
if (this.enableContextLinking) {
|
|
48
|
-
const contextLinks = this.addContextLinks(enhancedMessages, context);
|
|
49
|
-
enhancedMessages.push(...contextLinks);
|
|
50
|
-
enhancementsAdded += contextLinks.length;
|
|
51
|
-
}
|
|
52
|
-
// Resolve references if enabled
|
|
53
|
-
if (this.enableReferenceResolution) {
|
|
54
|
-
enhancedMessages = this.resolveReferences(enhancedMessages, context);
|
|
55
|
-
}
|
|
56
|
-
// Detect and fill conversation gaps if enabled
|
|
57
|
-
if (this.enableGapDetection) {
|
|
58
|
-
const gapFillers = this.detectAndFillGaps(enhancedMessages, context);
|
|
59
|
-
enhancedMessages.push(...gapFillers);
|
|
60
|
-
enhancementsAdded += gapFillers.length;
|
|
61
|
-
}
|
|
62
|
-
// Add proactive context if enabled
|
|
63
|
-
if (this.enableProactiveContext) {
|
|
64
|
-
const proactiveContext = this.addProactiveContext(enhancedMessages, context);
|
|
65
|
-
enhancedMessages.push(...proactiveContext);
|
|
66
|
-
enhancementsAdded += proactiveContext.length;
|
|
67
|
-
}
|
|
68
|
-
return {
|
|
69
|
-
...message,
|
|
70
|
-
messages: enhancedMessages,
|
|
71
|
-
metadata: {
|
|
72
|
-
...message.metadata,
|
|
73
|
-
continuityEnhanced: true,
|
|
74
|
-
enhancementsAdded,
|
|
75
|
-
timestamp: new Date().toISOString()
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
addContextLinks(messages, context) {
|
|
80
|
-
const contextLinks = [];
|
|
81
|
-
const recentMessages = messages.slice(-this.contextLookbackWindow);
|
|
82
|
-
// Find messages that reference previous interactions
|
|
83
|
-
const referencingMessages = this.findReferencingMessages(recentMessages);
|
|
84
|
-
if (referencingMessages.length > 0) {
|
|
85
|
-
const linkMessage = {
|
|
86
|
-
role: 'system',
|
|
87
|
-
content: this.generateContextLinkMessage(referencingMessages, context),
|
|
88
|
-
name: 'context-link'
|
|
89
|
-
};
|
|
90
|
-
contextLinks.push(linkMessage);
|
|
91
|
-
}
|
|
92
|
-
return contextLinks.slice(0, this.maxContextLinks);
|
|
93
|
-
}
|
|
94
|
-
findReferencingMessages(messages) {
|
|
95
|
-
const referencePatterns = [
|
|
96
|
-
/\b(this|that|it|they|them)\b/i,
|
|
97
|
-
/\b(the (above|previous|last|earlier))\b/i,
|
|
98
|
-
/\b(as (mentioned|discussed|shown))\b/i,
|
|
99
|
-
/\b(from (before|earlier))\b/i,
|
|
100
|
-
/\b(the (file|code|result|output))\b/i
|
|
101
|
-
];
|
|
102
|
-
return messages.filter(message => {
|
|
103
|
-
const content = typeof message.content === 'string'
|
|
104
|
-
? message.content
|
|
105
|
-
: JSON.stringify(message.content);
|
|
106
|
-
return referencePatterns.some(pattern => pattern.test(content));
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
generateContextLinkMessage(referencingMessages, context) {
|
|
110
|
-
const messageCount = referencingMessages.length;
|
|
111
|
-
const toolResults = context.toolResults || [];
|
|
112
|
-
let linkMessage = `**Context Links:** Found ${messageCount} message${messageCount > 1 ? 's' : ''} with references to previous interactions.`;
|
|
113
|
-
if (toolResults.length > 0) {
|
|
114
|
-
linkMessage += ` Recent tool executions: ${toolResults.length} tool${toolResults.length > 1 ? 's' : ''} executed.`;
|
|
115
|
-
}
|
|
116
|
-
if (context.originalHistory && context.originalHistory.length > 0) {
|
|
117
|
-
linkMessage += ` Conversation history: ${context.originalHistory.length} previous messages available for reference.`;
|
|
118
|
-
}
|
|
119
|
-
return linkMessage;
|
|
120
|
-
}
|
|
121
|
-
resolveReferences(messages, context) {
|
|
122
|
-
return messages.map(message => {
|
|
123
|
-
if (message.role === 'system' || message.name === 'reference-resolution') {
|
|
124
|
-
return message;
|
|
125
|
-
}
|
|
126
|
-
const resolvedContent = this.resolveMessageReferences(message.content, context);
|
|
127
|
-
if (resolvedContent !== message.content) {
|
|
128
|
-
return {
|
|
129
|
-
...message,
|
|
130
|
-
content: resolvedContent,
|
|
131
|
-
name: message.name || 'reference-resolved'
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
return message;
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
resolveMessageReferences(content, context) {
|
|
138
|
-
if (typeof content !== 'string') {
|
|
139
|
-
return content;
|
|
140
|
-
}
|
|
141
|
-
let resolvedContent = content;
|
|
142
|
-
const toolResults = context.toolResults || [];
|
|
143
|
-
// Resolve "the file" references
|
|
144
|
-
if (/\bthe file\b/i.test(resolvedContent) && toolResults.length > 0) {
|
|
145
|
-
const fileOperations = toolResults.filter((result) => result.tool_call_id && result.tool_call_id.includes('file'));
|
|
146
|
-
if (fileOperations.length === 1) {
|
|
147
|
-
resolvedContent = resolvedContent.replace(/\bthe file\b/gi, `the file (from recent tool execution)`);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
// Resolve "the result" references
|
|
151
|
-
if (/\bthe result\b/i.test(resolvedContent) && toolResults.length > 0) {
|
|
152
|
-
resolvedContent = resolvedContent.replace(/\bthe result\b/gi, `the result (from ${toolResults.length} recent tool execution${toolResults.length > 1 ? 's' : ''})`);
|
|
153
|
-
}
|
|
154
|
-
// Resolve "it" references in context of tool operations
|
|
155
|
-
if (/\bit\b/i.test(resolvedContent) && toolResults.length === 1) {
|
|
156
|
-
const toolResult = toolResults[0];
|
|
157
|
-
if (toolResult.tool_call_id) {
|
|
158
|
-
resolvedContent = resolvedContent.replace(/\bit\b/gi, `it (referring to the tool execution result)`);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
return resolvedContent;
|
|
162
|
-
}
|
|
163
|
-
detectAndFillGaps(messages, context) {
|
|
164
|
-
const gapFillers = [];
|
|
165
|
-
const gaps = this.detectConversationGaps(messages, context);
|
|
166
|
-
gaps.forEach(gap => {
|
|
167
|
-
const fillerMessage = {
|
|
168
|
-
role: 'system',
|
|
169
|
-
content: this.generateGapFillerMessage(gap, context),
|
|
170
|
-
name: 'gap-filler'
|
|
171
|
-
};
|
|
172
|
-
gapFillers.push(fillerMessage);
|
|
173
|
-
});
|
|
174
|
-
return gapFillers;
|
|
175
|
-
}
|
|
176
|
-
detectConversationGaps(messages, context) {
|
|
177
|
-
const gaps = [];
|
|
178
|
-
const toolResults = context.toolResults || [];
|
|
179
|
-
// Gap: Tool results without explanation
|
|
180
|
-
const unexplainedToolResults = toolResults.filter((result) => {
|
|
181
|
-
const hasExplanation = messages.some(msg => msg.role === 'assistant' &&
|
|
182
|
-
typeof msg.content === 'string' &&
|
|
183
|
-
msg.content.includes('result'));
|
|
184
|
-
return !hasExplanation;
|
|
185
|
-
});
|
|
186
|
-
if (unexplainedToolResults.length > 0) {
|
|
187
|
-
gaps.push({
|
|
188
|
-
type: 'unexplained-tool-results',
|
|
189
|
-
description: `${unexplainedToolResults.length} tool result(s) without explanation`,
|
|
190
|
-
severity: 'medium'
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
// Gap: Missing context for references
|
|
194
|
-
const unresolvedReferences = messages.filter(msg => {
|
|
195
|
-
const content = typeof msg.content === 'string' ? msg.content : JSON.stringify(msg.content);
|
|
196
|
-
return /\b(this|that|it)\b/i.test(content) && msg.role === 'user';
|
|
197
|
-
});
|
|
198
|
-
if (unresolvedReferences.length > 2) {
|
|
199
|
-
gaps.push({
|
|
200
|
-
type: 'unresolved-references',
|
|
201
|
-
description: `${unresolvedReferences.length} messages with unclear references`,
|
|
202
|
-
severity: 'low'
|
|
203
|
-
});
|
|
204
|
-
}
|
|
205
|
-
// Gap: Long silence after tool execution
|
|
206
|
-
const lastToolIndex = messages.findLastIndex(msg => msg.role === 'tool');
|
|
207
|
-
const lastAssistantIndex = messages.findLastIndex(msg => msg.role === 'assistant');
|
|
208
|
-
if (lastToolIndex > lastAssistantIndex && lastToolIndex < messages.length - 1) {
|
|
209
|
-
gaps.push({
|
|
210
|
-
type: 'missing-tool-response',
|
|
211
|
-
description: 'Tool execution without assistant response',
|
|
212
|
-
severity: 'high'
|
|
213
|
-
});
|
|
214
|
-
}
|
|
215
|
-
return gaps;
|
|
216
|
-
}
|
|
217
|
-
generateGapFillerMessage(gap, context) {
|
|
218
|
-
switch (gap.type) {
|
|
219
|
-
case 'unexplained-tool-results':
|
|
220
|
-
return `**Context Note:** There are tool execution results that may need explanation or analysis. Consider reviewing the tool outputs and their implications.`;
|
|
221
|
-
case 'unresolved-references':
|
|
222
|
-
return `**Context Note:** Some messages contain references that might be unclear. Consider providing more specific context when referring to previous interactions.`;
|
|
223
|
-
case 'missing-tool-response':
|
|
224
|
-
return `**Context Note:** Recent tool execution completed but may need assistant analysis or response to continue the conversation effectively.`;
|
|
225
|
-
default:
|
|
226
|
-
return `**Context Note:** Potential conversation gap detected: ${gap.description}`;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
addProactiveContext(messages, context) {
|
|
230
|
-
const proactiveMessages = [];
|
|
231
|
-
const toolResults = context.toolResults || [];
|
|
232
|
-
const conversationLength = messages.length;
|
|
233
|
-
// Add proactive context for complex tool interactions
|
|
234
|
-
if (toolResults.length > 3) {
|
|
235
|
-
proactiveMessages.push({
|
|
236
|
-
role: 'system',
|
|
237
|
-
content: `**Proactive Context:** Multiple tools have been executed (${toolResults.length} total). This suggests a complex task that may benefit from step-by-step progress tracking.`,
|
|
238
|
-
name: 'proactive-context'
|
|
239
|
-
});
|
|
240
|
-
}
|
|
241
|
-
// Add proactive context for long conversations
|
|
242
|
-
if (conversationLength > 25) {
|
|
243
|
-
proactiveMessages.push({
|
|
244
|
-
role: 'system',
|
|
245
|
-
content: `**Proactive Context:** This is an extended conversation (${conversationLength} messages). Consider summarizing progress or breaking down remaining objectives.`,
|
|
246
|
-
name: 'proactive-context'
|
|
247
|
-
});
|
|
248
|
-
}
|
|
249
|
-
return proactiveMessages.slice(0, 2); // Limit proactive messages
|
|
250
|
-
}
|
|
251
|
-
calculateContinuityInfo(original, enhanced, context) {
|
|
252
|
-
const originalCount = original.messages.length;
|
|
253
|
-
const enhancedCount = enhanced.messages.length;
|
|
254
|
-
const addedMessages = enhancedCount - originalCount;
|
|
255
|
-
// Count different types of enhancements
|
|
256
|
-
const contextLinks = enhanced.messages.filter(m => m.name === 'context-link').length;
|
|
257
|
-
const referenceResolutions = enhanced.messages.filter(m => m.name === 'reference-resolved').length;
|
|
258
|
-
const gapFillers = enhanced.messages.filter(m => m.name === 'gap-filler').length;
|
|
259
|
-
return {
|
|
260
|
-
contextLinksAdded: contextLinks,
|
|
261
|
-
referenceResolutionsAdded: referenceResolutions,
|
|
262
|
-
continuityEnhanced: addedMessages > 0,
|
|
263
|
-
missingContextDetected: gapFillers > 0,
|
|
264
|
-
conversationGapsFound: gapFillers
|
|
265
|
-
};
|
|
266
|
-
}
|
|
267
|
-
// Public methods for configuration
|
|
268
|
-
setContextLookbackWindow(window) {
|
|
269
|
-
this.contextLookbackWindow = Math.max(5, Math.min(50, window));
|
|
270
|
-
}
|
|
271
|
-
setMaxContextLinks(max) {
|
|
272
|
-
this.maxContextLinks = Math.max(1, Math.min(10, max));
|
|
273
|
-
}
|
|
274
|
-
enableContextLinkingForSession() {
|
|
275
|
-
this.enableContextLinking = true;
|
|
276
|
-
}
|
|
277
|
-
disableContextLinkingForSession() {
|
|
278
|
-
this.enableContextLinking = false;
|
|
279
|
-
}
|
|
280
|
-
enableReferenceResolutionForSession() {
|
|
281
|
-
this.enableReferenceResolution = true;
|
|
282
|
-
}
|
|
283
|
-
disableReferenceResolutionForSession() {
|
|
284
|
-
this.enableReferenceResolution = false;
|
|
285
|
-
}
|
|
286
|
-
enableGapDetectionForSession() {
|
|
287
|
-
this.enableGapDetection = true;
|
|
288
|
-
}
|
|
289
|
-
disableGapDetectionForSession() {
|
|
290
|
-
this.enableGapDetection = false;
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
exports.ConversationContinuityProcessor = ConversationContinuityProcessor;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { ProcessedMessage } from "@codebolt/types/agent";
|
|
2
|
-
import { BasePreInferenceProcessor } from "../base";
|
|
3
|
-
import { FlatUserMessage } from "@codebolt/types/sdk";
|
|
4
|
-
export declare class ConversationCompection extends BasePreInferenceProcessor {
|
|
5
|
-
constructor();
|
|
6
|
-
modify(originalRequest: FlatUserMessage, createdMessage: ProcessedMessage): Promise<ProcessedMessage>;
|
|
7
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ConversationCompection = void 0;
|
|
4
|
-
const base_1 = require("../base");
|
|
5
|
-
class ConversationCompection extends base_1.BasePreInferenceProcessor {
|
|
6
|
-
constructor() {
|
|
7
|
-
super();
|
|
8
|
-
}
|
|
9
|
-
modify(originalRequest, createdMessage) {
|
|
10
|
-
const updatedMessages = createdMessage.message.messages.map(message => {
|
|
11
|
-
if (message.role === 'user') {
|
|
12
|
-
return {
|
|
13
|
-
...message,
|
|
14
|
-
content: `${message.content} user message compected`
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
return message;
|
|
18
|
-
});
|
|
19
|
-
return Promise.resolve({
|
|
20
|
-
message: {
|
|
21
|
-
...createdMessage.message,
|
|
22
|
-
messages: updatedMessages
|
|
23
|
-
},
|
|
24
|
-
metadata: {
|
|
25
|
-
...createdMessage.metadata,
|
|
26
|
-
chatsummerized: true
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
exports.ConversationCompection = ConversationCompection;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pre-Tool Call Processors
|
|
3
|
-
*
|
|
4
|
-
* These processors run before tool execution and can intercept, validate,
|
|
5
|
-
* or modify tool calls before they are sent to the actual tool execution engine.
|
|
6
|
-
*/
|
|
7
|
-
export { LocalToolInterceptorProcessor, type LocalToolInterceptorInfo, type LocalToolInterceptorProcessorOptions, type LocalToolHandler } from './localToolInterceptorProcessor';
|
|
8
|
-
export { ToolValidationProcessor, type ToolValidationInfo, type ToolValidationProcessorOptions } from './toolValidationProcessor';
|
|
9
|
-
export { ToolParameterModifierProcessor, type ToolParameterModificationInfo, type ParameterTransformation, type ToolParameterModifierProcessorOptions } from './toolParameterModifierProcessor';
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Pre-Tool Call Processors
|
|
4
|
-
*
|
|
5
|
-
* These processors run before tool execution and can intercept, validate,
|
|
6
|
-
* or modify tool calls before they are sent to the actual tool execution engine.
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.ToolParameterModifierProcessor = exports.ToolValidationProcessor = exports.LocalToolInterceptorProcessor = void 0;
|
|
10
|
-
// Local tool interceptor
|
|
11
|
-
var localToolInterceptorProcessor_1 = require("./localToolInterceptorProcessor");
|
|
12
|
-
Object.defineProperty(exports, "LocalToolInterceptorProcessor", { enumerable: true, get: function () { return localToolInterceptorProcessor_1.LocalToolInterceptorProcessor; } });
|
|
13
|
-
// Tool validation processor
|
|
14
|
-
var toolValidationProcessor_1 = require("./toolValidationProcessor");
|
|
15
|
-
Object.defineProperty(exports, "ToolValidationProcessor", { enumerable: true, get: function () { return toolValidationProcessor_1.ToolValidationProcessor; } });
|
|
16
|
-
// Tool parameter modifier processor
|
|
17
|
-
var toolParameterModifierProcessor_1 = require("./toolParameterModifierProcessor");
|
|
18
|
-
Object.defineProperty(exports, "ToolParameterModifierProcessor", { enumerable: true, get: function () { return toolParameterModifierProcessor_1.ToolParameterModifierProcessor; } });
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { BaseProcessor, ProcessorInput, ProcessorOutput } from '../../processor';
|
|
2
|
-
export interface LocalToolInterceptorInfo {
|
|
3
|
-
toolName: string;
|
|
4
|
-
intercepted: boolean;
|
|
5
|
-
executionMethod: 'local' | 'custom' | 'delegated';
|
|
6
|
-
executionTime: number;
|
|
7
|
-
result: string;
|
|
8
|
-
}
|
|
9
|
-
export interface LocalToolInterceptorProcessorOptions {
|
|
10
|
-
localTools?: Map<string, LocalToolHandler>;
|
|
11
|
-
enableCustomToolHandling?: boolean;
|
|
12
|
-
enableToolDelegation?: boolean;
|
|
13
|
-
defaultExecutionTimeout?: number;
|
|
14
|
-
enableLogging?: boolean;
|
|
15
|
-
}
|
|
16
|
-
export interface LocalToolHandler {
|
|
17
|
-
name: string;
|
|
18
|
-
description?: string;
|
|
19
|
-
execute: (params: any, context?: Record<string, any>) => Promise<string> | string;
|
|
20
|
-
validate?: (params: any) => boolean;
|
|
21
|
-
timeout?: number;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Processor that intercepts specific tool calls and handles them locally
|
|
25
|
-
* instead of sending them to external tool execution services.
|
|
26
|
-
*/
|
|
27
|
-
export declare class LocalToolInterceptorProcessor extends BaseProcessor {
|
|
28
|
-
private readonly localTools;
|
|
29
|
-
private readonly enableCustomToolHandling;
|
|
30
|
-
private readonly enableToolDelegation;
|
|
31
|
-
private readonly defaultExecutionTimeout;
|
|
32
|
-
private readonly enableLogging;
|
|
33
|
-
constructor(options?: LocalToolInterceptorProcessorOptions);
|
|
34
|
-
processInput(input: ProcessorInput): Promise<ProcessorOutput[]>;
|
|
35
|
-
private shouldInterceptTool;
|
|
36
|
-
private executeLocalTool;
|
|
37
|
-
private executeToolHandler;
|
|
38
|
-
private handleLocalPrefixTool;
|
|
39
|
-
private handleCustomPrefixTool;
|
|
40
|
-
private handleInternalPrefixTool;
|
|
41
|
-
private handleLocalFileRead;
|
|
42
|
-
private handleLocalFileWrite;
|
|
43
|
-
private handleLocalScriptExecution;
|
|
44
|
-
private handleDataValidation;
|
|
45
|
-
private handleDataTransformation;
|
|
46
|
-
private handleCalculation;
|
|
47
|
-
private handleOutputFormatting;
|
|
48
|
-
private getExecutionMethod;
|
|
49
|
-
private generateUUID;
|
|
50
|
-
private simpleHash;
|
|
51
|
-
private toYamlLike;
|
|
52
|
-
private toCsv;
|
|
53
|
-
private toTable;
|
|
54
|
-
addLocalTool(handler: LocalToolHandler): void;
|
|
55
|
-
removeLocalTool(toolName: string): boolean;
|
|
56
|
-
getLocalTools(): string[];
|
|
57
|
-
hasLocalTool(toolName: string): boolean;
|
|
58
|
-
}
|