@codebolt/agent 1.2.1 → 2.2.3
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/README.md +157 -66
- package/dist/{agent.js → builderpattern/agent.js} +2 -2
- package/dist/{followupquestionbuilder.d.ts → builderpattern/followupquestionbuilder.d.ts} +1 -1
- package/dist/{followupquestionbuilder.js → builderpattern/followupquestionbuilder.js} +1 -1
- package/dist/{index.d.ts → builderpattern/index.d.ts} +3 -3
- package/dist/{llmoutputhandler.d.ts → builderpattern/llmoutputhandler.d.ts} +1 -1
- package/dist/{llmoutputhandler.js → builderpattern/llmoutputhandler.js} +7 -7
- package/dist/{promptbuilder.d.ts → builderpattern/promptbuilder.d.ts} +3 -3
- package/dist/{taskInstruction.d.ts → builderpattern/taskInstruction.d.ts} +2 -2
- package/dist/{usermessage.d.ts → builderpattern/usermessage.d.ts} +9 -4
- package/dist/composablepattern/agent.d.ts +169 -0
- package/dist/composablepattern/agent.js +598 -0
- package/dist/composablepattern/codebolt-storage.d.ts +67 -0
- package/dist/composablepattern/codebolt-storage.js +320 -0
- package/dist/composablepattern/document.d.ts +149 -0
- package/dist/composablepattern/document.js +372 -0
- package/dist/composablepattern/examples/codebolt-integration-example.d.ts +12 -0
- package/dist/composablepattern/examples/codebolt-integration-example.js +218 -0
- package/dist/composablepattern/examples/codebolt-storage-example.d.ts +40 -0
- package/dist/composablepattern/examples/codebolt-storage-example.js +223 -0
- package/dist/composablepattern/examples/custom-steps-example.d.ts +20 -0
- package/dist/composablepattern/examples/custom-steps-example.js +455 -0
- package/dist/composablepattern/examples/document-agent.d.ts +17 -0
- package/dist/composablepattern/examples/document-agent.js +107 -0
- package/dist/composablepattern/examples/simple-codebolt-integration.d.ts +8 -0
- package/dist/composablepattern/examples/simple-codebolt-integration.js +164 -0
- package/dist/composablepattern/examples/weather-agent.d.ts +18 -0
- package/dist/composablepattern/examples/weather-agent.js +86 -0
- package/dist/composablepattern/examples/workflow-example.d.ts +12 -0
- package/dist/composablepattern/examples/workflow-example.js +463 -0
- package/dist/composablepattern/index.d.ts +63 -0
- package/dist/composablepattern/index.js +115 -0
- package/dist/composablepattern/memory.d.ts +89 -0
- package/dist/composablepattern/memory.js +141 -0
- package/dist/composablepattern/tool.d.ts +84 -0
- package/dist/composablepattern/tool.js +260 -0
- package/dist/composablepattern/types.d.ts +194 -0
- package/dist/composablepattern/types.js +6 -0
- package/dist/composablepattern/user-context.d.ts +214 -0
- package/dist/composablepattern/user-context.js +275 -0
- package/dist/composablepattern/workflow.d.ts +388 -0
- package/dist/composablepattern/workflow.js +562 -0
- package/dist/local-tools/fileTools.d.ts +26 -0
- package/dist/local-tools/fileTools.js +162 -0
- package/dist/processor/agent/agentStep.d.ts +49 -0
- package/dist/processor/agent/agentStep.js +241 -0
- package/dist/processor/agent/toolExecutor.d.ts +19 -0
- package/dist/processor/agent/toolExecutor.js +90 -0
- package/dist/processor/index.d.ts +7 -0
- package/dist/processor/index.js +36 -0
- package/dist/processor/messageModifiers/baseMessageModifier.d.ts +20 -0
- package/dist/processor/messageModifiers/baseMessageModifier.js +55 -0
- package/dist/processor/processors/baseProcessor.d.ts +14 -0
- package/dist/processor/processors/baseProcessor.js +29 -0
- package/dist/processor/tools/baseTool.d.ts +10 -0
- package/dist/processor/tools/baseTool.js +20 -0
- package/dist/processor/tools/toolList.d.ts +9 -0
- package/dist/processor/tools/toolList.js +22 -0
- package/dist/processor/types/interfaces.d.ts +117 -0
- package/dist/processor/types/interfaces.js +2 -0
- package/dist/processor-pieces/additionalModifiers/argumentProcessorModifier.d.ts +13 -0
- package/dist/processor-pieces/additionalModifiers/argumentProcessorModifier.js +68 -0
- package/dist/processor-pieces/additionalModifiers/atFileProcessorModifier.d.ts +15 -0
- package/dist/processor-pieces/additionalModifiers/atFileProcessorModifier.js +212 -0
- package/dist/processor-pieces/additionalModifiers/chatCompressionModifier.d.ts +19 -0
- package/dist/processor-pieces/additionalModifiers/chatCompressionModifier.js +110 -0
- package/dist/processor-pieces/additionalModifiers/chatRecordingModifier.d.ts +23 -0
- package/dist/processor-pieces/additionalModifiers/chatRecordingModifier.js +173 -0
- package/dist/processor-pieces/additionalModifiers/coreSystemPromptModifier.d.ts +14 -0
- package/dist/processor-pieces/additionalModifiers/coreSystemPromptModifier.js +93 -0
- package/dist/processor-pieces/additionalModifiers/directoryContextModifier.d.ts +30 -0
- package/dist/processor-pieces/additionalModifiers/directoryContextModifier.js +330 -0
- package/dist/processor-pieces/additionalModifiers/environmentContextModifier.d.ts +26 -0
- package/dist/processor-pieces/additionalModifiers/environmentContextModifier.js +269 -0
- package/dist/processor-pieces/additionalModifiers/fallbackHandlerModifier.d.ts +38 -0
- package/dist/processor-pieces/additionalModifiers/fallbackHandlerModifier.js +217 -0
- package/dist/processor-pieces/additionalModifiers/ideContextModifier.d.ts +34 -0
- package/dist/processor-pieces/additionalModifiers/ideContextModifier.js +147 -0
- package/dist/processor-pieces/additionalModifiers/index.d.ts +12 -0
- package/dist/processor-pieces/additionalModifiers/index.js +28 -0
- package/dist/processor-pieces/additionalModifiers/loopDetectionModifier.d.ts +29 -0
- package/dist/processor-pieces/additionalModifiers/loopDetectionModifier.js +155 -0
- package/dist/processor-pieces/additionalModifiers/memoryImportModifier.d.ts +15 -0
- package/dist/processor-pieces/additionalModifiers/memoryImportModifier.js +129 -0
- package/dist/processor-pieces/additionalModifiers/shellProcessorModifier.d.ts +25 -0
- package/dist/processor-pieces/additionalModifiers/shellProcessorModifier.js +169 -0
- package/dist/processor-pieces/additionalModifiers/toolInjectionModifier.d.ts +20 -0
- package/dist/processor-pieces/additionalModifiers/toolInjectionModifier.js +152 -0
- package/dist/processor-pieces/base/baseMessageModifier.d.ts +12 -0
- package/dist/processor-pieces/base/baseMessageModifier.js +15 -0
- package/dist/processor-pieces/base/basePostInferenceProcessor.d.ts +13 -0
- package/dist/processor-pieces/base/basePostInferenceProcessor.js +18 -0
- package/dist/processor-pieces/base/basePostToolCallProcessor.d.ts +15 -0
- package/dist/processor-pieces/base/basePostToolCallProcessor.js +25 -0
- package/dist/processor-pieces/base/basePreInferenceProcessor.d.ts +12 -0
- package/dist/processor-pieces/base/basePreInferenceProcessor.js +17 -0
- package/dist/processor-pieces/base/basePreToolCallProcessor.d.ts +18 -0
- package/dist/processor-pieces/base/basePreToolCallProcessor.js +66 -0
- package/dist/processor-pieces/base/index.d.ts +9 -0
- package/dist/processor-pieces/base/index.js +18 -0
- package/dist/processor-pieces/index.d.ts +1 -0
- package/dist/processor-pieces/index.js +59 -0
- package/dist/processor-pieces/messageModifiers/addCurrentDirectoryRootFilesModifier.d.ts +7 -0
- package/dist/processor-pieces/messageModifiers/addCurrentDirectoryRootFilesModifier.js +93 -0
- package/dist/processor-pieces/messageModifiers/addToolsListMessageModifier.d.ts +31 -0
- package/dist/processor-pieces/messageModifiers/addToolsListMessageModifier.js +145 -0
- package/dist/processor-pieces/messageModifiers/advancedSystemInstructionMessageModifier.d.ts +9 -0
- package/dist/processor-pieces/messageModifiers/advancedSystemInstructionMessageModifier.js +77 -0
- package/dist/processor-pieces/messageModifiers/argumentProcessorModifier.d.ts +13 -0
- package/dist/processor-pieces/messageModifiers/argumentProcessorModifier.js +68 -0
- package/dist/processor-pieces/messageModifiers/atFileProcessorModifier.d.ts +25 -0
- package/dist/processor-pieces/messageModifiers/atFileProcessorModifier.js +453 -0
- package/dist/processor-pieces/messageModifiers/baseContextMessageModifier.d.ts +7 -0
- package/dist/processor-pieces/messageModifiers/baseContextMessageModifier.js +67 -0
- package/dist/processor-pieces/messageModifiers/baseSystemInstructionMessageModifier.d.ts +9 -0
- package/dist/processor-pieces/messageModifiers/baseSystemInstructionMessageModifier.js +90 -0
- package/dist/processor-pieces/messageModifiers/chatCompressionModifier.d.ts +19 -0
- package/dist/processor-pieces/messageModifiers/chatCompressionModifier.js +110 -0
- package/dist/processor-pieces/messageModifiers/chatHistoryMessageModifier.d.ts +18 -0
- package/dist/processor-pieces/messageModifiers/chatHistoryMessageModifier.example.d.ts +20 -0
- package/dist/processor-pieces/messageModifiers/chatHistoryMessageModifier.example.js +124 -0
- package/dist/processor-pieces/messageModifiers/chatHistoryMessageModifier.js +104 -0
- package/dist/processor-pieces/messageModifiers/chatRecordingModifier.d.ts +23 -0
- package/dist/processor-pieces/messageModifiers/chatRecordingModifier.js +173 -0
- package/dist/processor-pieces/messageModifiers/coreSystemPromptModifier.d.ts +14 -0
- package/dist/processor-pieces/messageModifiers/coreSystemPromptModifier.js +130 -0
- package/dist/processor-pieces/messageModifiers/directoryContextModifier.d.ts +36 -0
- package/dist/processor-pieces/messageModifiers/directoryContextModifier.js +418 -0
- package/dist/processor-pieces/messageModifiers/environmentContext.d.ts +41 -0
- package/dist/processor-pieces/messageModifiers/environmentContext.js +355 -0
- package/dist/processor-pieces/messageModifiers/environmentContextModifier.d.ts +26 -0
- package/dist/processor-pieces/messageModifiers/environmentContextModifier.js +260 -0
- package/dist/processor-pieces/messageModifiers/handleUrlMessageModifier.d.ts +13 -0
- package/dist/processor-pieces/messageModifiers/handleUrlMessageModifier.js +59 -0
- package/dist/processor-pieces/messageModifiers/ideContextModifier.d.ts +34 -0
- package/dist/processor-pieces/messageModifiers/ideContextModifier.js +157 -0
- package/dist/processor-pieces/messageModifiers/imageAttachmentMessageModifier.d.ts +19 -0
- package/dist/processor-pieces/messageModifiers/imageAttachmentMessageModifier.js +221 -0
- package/dist/processor-pieces/messageModifiers/index.d.ts +11 -0
- package/dist/processor-pieces/messageModifiers/index.js +26 -0
- package/dist/processor-pieces/messageModifiers/memoryImportModifier.d.ts +15 -0
- package/dist/processor-pieces/messageModifiers/memoryImportModifier.js +129 -0
- package/dist/processor-pieces/messageModifiers/mentionedFilesModifier.d.ts +23 -0
- package/dist/processor-pieces/messageModifiers/mentionedFilesModifier.js +207 -0
- package/dist/processor-pieces/messageModifiers/simpleMessageModifier.d.ts +7 -0
- package/dist/processor-pieces/messageModifiers/simpleMessageModifier.js +26 -0
- package/dist/processor-pieces/messageModifiers/toolInjectionModifier.d.ts +20 -0
- package/dist/processor-pieces/messageModifiers/toolInjectionModifier.js +152 -0
- package/dist/processor-pieces/messageModifiers/workingDirectoryMessageModifier.d.ts +38 -0
- package/dist/processor-pieces/messageModifiers/workingDirectoryMessageModifier.js +392 -0
- package/dist/processor-pieces/postInference/llmOutputValidityProcessor.d.ts +1 -0
- package/dist/processor-pieces/postInference/llmOutputValidityProcessor.js +2 -0
- package/dist/processor-pieces/postInferenceProcessors/checkForNoToolCall.d.ts +7 -0
- package/dist/processor-pieces/postInferenceProcessors/checkForNoToolCall.js +24 -0
- package/dist/processor-pieces/postInferenceProcessors/loopDetectionModifier.d.ts +29 -0
- package/dist/processor-pieces/postInferenceProcessors/loopDetectionModifier.js +174 -0
- package/dist/processor-pieces/postToolCall/advancedLoopDetectionProcessor.d.ts +41 -0
- package/dist/processor-pieces/postToolCall/advancedLoopDetectionProcessor.js +197 -0
- package/dist/processor-pieces/postToolCall/chatCompressionProcessor.d.ts +26 -0
- package/dist/processor-pieces/postToolCall/chatCompressionProcessor.js +90 -0
- package/dist/processor-pieces/postToolCall/chatRecordingProcessor.d.ts +81 -0
- package/dist/processor-pieces/postToolCall/chatRecordingProcessor.js +329 -0
- package/dist/processor-pieces/postToolCall/contextManagementProcessor.d.ts +40 -0
- package/dist/processor-pieces/postToolCall/contextManagementProcessor.js +272 -0
- package/dist/processor-pieces/postToolCall/conversationCompactorProcessor.d.ts +49 -0
- package/dist/processor-pieces/postToolCall/conversationCompactorProcessor.js +291 -0
- package/dist/processor-pieces/postToolCall/conversationContinuityProcessor.d.ts +49 -0
- package/dist/processor-pieces/postToolCall/conversationContinuityProcessor.js +293 -0
- package/dist/processor-pieces/postToolCall/followUpConversationProcessor.d.ts +47 -0
- package/dist/processor-pieces/postToolCall/followUpConversationProcessor.js +249 -0
- package/dist/processor-pieces/postToolCall/loopDetectionProcessor.d.ts +30 -0
- package/dist/processor-pieces/postToolCall/loopDetectionProcessor.js +137 -0
- package/dist/processor-pieces/postToolCall/responseValidationProcessor.d.ts +30 -0
- package/dist/processor-pieces/postToolCall/responseValidationProcessor.js +228 -0
- package/dist/processor-pieces/postToolCall/telemetryProcessor.d.ts +99 -0
- package/dist/processor-pieces/postToolCall/telemetryProcessor.js +278 -0
- package/dist/processor-pieces/postToolCall/tokenManagementProcessor.d.ts +37 -0
- package/dist/processor-pieces/postToolCall/tokenManagementProcessor.js +178 -0
- package/dist/processor-pieces/postToolCall/toolExecutionProcessor.d.ts +43 -0
- package/dist/processor-pieces/postToolCall/toolExecutionProcessor.js +207 -0
- package/dist/processor-pieces/postToolCallProcessors/index.d.ts +1 -0
- package/dist/processor-pieces/postToolCallProcessors/index.js +2 -0
- package/dist/processor-pieces/postToolCallProcessors/shellProcessorModifier.d.ts +25 -0
- package/dist/processor-pieces/postToolCallProcessors/shellProcessorModifier.js +225 -0
- package/dist/processor-pieces/preInference/conversationCompactorProcessor.d.ts +52 -0
- package/dist/processor-pieces/preInference/conversationCompactorProcessor.js +264 -0
- package/dist/processor-pieces/preInference/conversationContinuityProcessor.d.ts +49 -0
- package/dist/processor-pieces/preInference/conversationContinuityProcessor.js +293 -0
- package/dist/processor-pieces/preInferenceProcessors/chatCompressionModifier.d.ts +35 -0
- package/dist/processor-pieces/preInferenceProcessors/chatCompressionModifier.js +255 -0
- package/dist/processor-pieces/preInferenceProcessors/conversationCompaction.d.ts +7 -0
- package/dist/processor-pieces/preInferenceProcessors/conversationCompaction.js +31 -0
- package/dist/processor-pieces/preInferenceProcessors/index.d.ts +1 -0
- package/dist/processor-pieces/preInferenceProcessors/index.js +2 -0
- package/dist/processor-pieces/preToolCall/index.d.ts +9 -0
- package/dist/processor-pieces/preToolCall/index.js +18 -0
- package/dist/processor-pieces/preToolCall/localToolInterceptorProcessor.d.ts +58 -0
- package/dist/processor-pieces/preToolCall/localToolInterceptorProcessor.js +444 -0
- package/dist/processor-pieces/preToolCall/toolParameterModifierProcessor.d.ts +44 -0
- package/dist/processor-pieces/preToolCall/toolParameterModifierProcessor.js +367 -0
- package/dist/processor-pieces/preToolCall/toolValidationProcessor.d.ts +58 -0
- package/dist/processor-pieces/preToolCall/toolValidationProcessor.js +391 -0
- package/dist/processor-pieces/pretoolCallProcessors/index.d.ts +1 -0
- package/dist/processor-pieces/pretoolCallProcessors/index.js +2 -0
- package/dist/processor-pieces/processors/advancedLoopDetectionProcessor.d.ts +41 -0
- package/dist/processor-pieces/processors/advancedLoopDetectionProcessor.js +197 -0
- package/dist/processor-pieces/processors/chatCompressionProcessor.d.ts +26 -0
- package/dist/processor-pieces/processors/chatCompressionProcessor.js +90 -0
- package/dist/processor-pieces/processors/chatRecordingProcessor.d.ts +81 -0
- package/dist/processor-pieces/processors/chatRecordingProcessor.js +329 -0
- package/dist/processor-pieces/processors/contextManagementProcessor.d.ts +40 -0
- package/dist/processor-pieces/processors/contextManagementProcessor.js +305 -0
- package/dist/processor-pieces/processors/loopDetectionProcessor.d.ts +30 -0
- package/dist/processor-pieces/processors/loopDetectionProcessor.js +137 -0
- package/dist/processor-pieces/processors/responseValidationProcessor.d.ts +30 -0
- package/dist/processor-pieces/processors/responseValidationProcessor.js +228 -0
- package/dist/processor-pieces/processors/telemetryProcessor.d.ts +99 -0
- package/dist/processor-pieces/processors/telemetryProcessor.js +311 -0
- package/dist/processor-pieces/processors/tokenManagementProcessor.d.ts +37 -0
- package/dist/processor-pieces/processors/tokenManagementProcessor.js +178 -0
- package/dist/processor-pieces/processors/toolExecutionProcessor.d.ts +43 -0
- package/dist/processor-pieces/processors/toolExecutionProcessor.js +207 -0
- package/dist/processor-pieces/tools/fileTools.d.ts +26 -0
- package/dist/processor-pieces/tools/fileTools.js +162 -0
- package/dist/processor-pieces/utils/messageModifierHelper.d.ts +4 -0
- package/dist/processor-pieces/utils/messageModifierHelper.js +58 -0
- package/dist/types/commonTypes.d.ts +4 -0
- package/dist/types/processorTypes.d.ts +67 -0
- package/dist/types/processorTypes.js +58 -0
- package/dist/unified/agent/agent.d.ts +17 -0
- package/dist/unified/agent/agent.js +79 -0
- package/dist/unified/agent/team.d.ts +2 -0
- package/dist/unified/agent/team.js +6 -0
- package/dist/unified/agent/tool.d.ts +99 -0
- package/dist/unified/agent/tool.js +440 -0
- package/dist/unified/agent/tools.d.ts +44 -0
- package/dist/unified/agent/tools.js +487 -0
- package/dist/unified/agent/workflow.d.ts +24 -0
- package/dist/unified/agent/workflow.js +275 -0
- package/dist/unified/agent/workflowControls.d.ts +11 -0
- package/dist/unified/agent/workflowControls.js +20 -0
- package/dist/unified/agent/workflowSteps.d.ts +63 -0
- package/dist/unified/agent/workflowSteps.js +284 -0
- package/dist/unified/base/agentStep.d.ts +32 -0
- package/dist/unified/base/agentStep.js +96 -0
- package/dist/unified/base/create/createInitialPromptGenerators.d.ts +5 -0
- package/dist/unified/base/create/createInitialPromptGenerators.js +17 -0
- package/dist/unified/base/index.d.ts +5 -0
- package/dist/unified/base/index.js +13 -0
- package/dist/unified/base/initialPromptGenerator.d.ts +48 -0
- package/dist/unified/base/initialPromptGenerator.js +118 -0
- package/dist/unified/base/responseExecutor.d.ts +36 -0
- package/dist/unified/base/responseExecutor.js +283 -0
- package/dist/unified/examples/agentExample.d.ts +46 -0
- package/dist/unified/examples/agentExample.js +464 -0
- package/dist/unified/examples/documentationPatternExample.d.ts +10 -0
- package/dist/unified/examples/documentationPatternExample.js +385 -0
- package/dist/unified/examples/followUpProcessorsExample.d.ts +45 -0
- package/dist/unified/examples/followUpProcessorsExample.js +311 -0
- package/dist/unified/examples/orchestratorExample.d.ts +16 -0
- package/dist/unified/examples/orchestratorExample.js +415 -0
- package/dist/unified/examples/preToolCallProcessorsExample.d.ts +36 -0
- package/dist/unified/examples/preToolCallProcessorsExample.js +458 -0
- package/dist/unified/examples/workflowExample.d.ts +12 -0
- package/dist/unified/examples/workflowExample.js +497 -0
- package/dist/unified/index.d.ts +18 -0
- package/dist/unified/index.js +42 -0
- package/dist/unified/orchestrator/orchestrator.d.ts +260 -0
- package/dist/unified/orchestrator/orchestrator.js +519 -0
- package/dist/unified/team/team.d.ts +1 -0
- package/dist/unified/team/team.js +2 -0
- package/dist/unified/types/libTypes.d.ts +378 -0
- package/dist/unified/types/libTypes.js +6 -0
- package/dist/unified/types/types.d.ts +212 -0
- package/dist/unified/types/types.js +43 -0
- package/dist/unified/utils/utils.d.ts +40 -0
- package/dist/unified/utils/utils.js +219 -0
- package/package.json +35 -13
- /package/dist/{agent.d.ts → builderpattern/agent.d.ts} +0 -0
- /package/dist/{index.js → builderpattern/index.js} +0 -0
- /package/dist/{promptbuilder.js → builderpattern/promptbuilder.js} +0 -0
- /package/dist/{systemprompt.d.ts → builderpattern/systemprompt.d.ts} +0 -0
- /package/dist/{systemprompt.js → builderpattern/systemprompt.js} +0 -0
- /package/dist/{taskInstruction.js → builderpattern/taskInstruction.js} +0 -0
- /package/dist/{usermessage.js → builderpattern/usermessage.js} +0 -0
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChatCompressionModifier = exports.CompressionStatus = void 0;
|
|
4
|
+
const base_1 = require("../base");
|
|
5
|
+
/**
|
|
6
|
+
* Threshold for compression token count as a fraction of the model's token limit.
|
|
7
|
+
* If the chat history exceeds this threshold, it will be compressed.
|
|
8
|
+
*/
|
|
9
|
+
const COMPRESSION_TOKEN_THRESHOLD = 0.7;
|
|
10
|
+
/**
|
|
11
|
+
* The fraction of the latest chat history to keep. A value of 0.3
|
|
12
|
+
* means that only the last 30% of the chat history will be kept after compression.
|
|
13
|
+
*/
|
|
14
|
+
const COMPRESSION_PRESERVE_THRESHOLD = 0.3;
|
|
15
|
+
var CompressionStatus;
|
|
16
|
+
(function (CompressionStatus) {
|
|
17
|
+
/** The compression was successful */
|
|
18
|
+
CompressionStatus[CompressionStatus["COMPRESSED"] = 1] = "COMPRESSED";
|
|
19
|
+
/** The compression failed due to the compression inflating the token count */
|
|
20
|
+
CompressionStatus[CompressionStatus["COMPRESSION_FAILED_INFLATED_TOKEN_COUNT"] = 2] = "COMPRESSION_FAILED_INFLATED_TOKEN_COUNT";
|
|
21
|
+
/** The compression failed due to an error counting tokens */
|
|
22
|
+
CompressionStatus[CompressionStatus["COMPRESSION_FAILED_TOKEN_COUNT_ERROR"] = 3] = "COMPRESSION_FAILED_TOKEN_COUNT_ERROR";
|
|
23
|
+
/** The compression was not necessary and no action was taken */
|
|
24
|
+
CompressionStatus[CompressionStatus["NOOP"] = 4] = "NOOP";
|
|
25
|
+
})(CompressionStatus || (exports.CompressionStatus = CompressionStatus = {}));
|
|
26
|
+
/**
|
|
27
|
+
* Returns the index of the content after the fraction of the total characters in the history.
|
|
28
|
+
*/
|
|
29
|
+
function findIndexAfterFraction(history, fraction) {
|
|
30
|
+
if (fraction <= 0 || fraction >= 1) {
|
|
31
|
+
throw new Error('Fraction must be between 0 and 1');
|
|
32
|
+
}
|
|
33
|
+
const contentLengths = history.map((content) => JSON.stringify(content).length);
|
|
34
|
+
const totalCharacters = contentLengths.reduce((sum, length) => sum + length, 0);
|
|
35
|
+
const targetCharacters = totalCharacters * fraction;
|
|
36
|
+
let charactersSoFar = 0;
|
|
37
|
+
for (let i = 0; i < contentLengths.length; i++) {
|
|
38
|
+
charactersSoFar += contentLengths[i];
|
|
39
|
+
if (charactersSoFar >= targetCharacters) {
|
|
40
|
+
return i;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return contentLengths.length;
|
|
44
|
+
}
|
|
45
|
+
function isFunctionResponse(message) {
|
|
46
|
+
// Check if message has function response content
|
|
47
|
+
if (typeof message.content === 'object' && message.content !== null) {
|
|
48
|
+
return 'functionResponse' in message.content;
|
|
49
|
+
}
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
// Mock token limit for different models (should be replaced with actual implementation)
|
|
53
|
+
function tokenLimit(model) {
|
|
54
|
+
// Default token limits for common models
|
|
55
|
+
if (model.includes('gemini-pro'))
|
|
56
|
+
return 30720;
|
|
57
|
+
if (model.includes('gemini-flash'))
|
|
58
|
+
return 1048576;
|
|
59
|
+
if (model.includes('gpt-4'))
|
|
60
|
+
return 8192;
|
|
61
|
+
if (model.includes('gpt-3.5'))
|
|
62
|
+
return 4096;
|
|
63
|
+
return 8192; // Default fallback
|
|
64
|
+
}
|
|
65
|
+
class ChatCompressionModifier extends base_1.BasePreInferenceProcessor {
|
|
66
|
+
constructor(options = {}) {
|
|
67
|
+
super();
|
|
68
|
+
this.hasFailedCompressionAttempt = false;
|
|
69
|
+
this.options = {
|
|
70
|
+
contextPercentageThreshold: options.contextPercentageThreshold || COMPRESSION_TOKEN_THRESHOLD,
|
|
71
|
+
enableCompression: options.enableCompression !== false,
|
|
72
|
+
force: options.force || false
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
async modify(originalRequest, createdMessage) {
|
|
76
|
+
try {
|
|
77
|
+
const compressionResult = await this.tryCompressChat(createdMessage.message.messages, this.options.force || false);
|
|
78
|
+
if (compressionResult.compressionStatus === CompressionStatus.COMPRESSED) {
|
|
79
|
+
return {
|
|
80
|
+
message: {
|
|
81
|
+
...createdMessage.message,
|
|
82
|
+
messages: compressionResult.compressedMessages || createdMessage.message.messages
|
|
83
|
+
},
|
|
84
|
+
metadata: {
|
|
85
|
+
...createdMessage.metadata,
|
|
86
|
+
chatCompressed: true,
|
|
87
|
+
originalTokenCount: compressionResult.originalTokenCount,
|
|
88
|
+
newTokenCount: compressionResult.newTokenCount,
|
|
89
|
+
compressionStatus: compressionResult.compressionStatus
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
94
|
+
...createdMessage,
|
|
95
|
+
metadata: {
|
|
96
|
+
...createdMessage.metadata,
|
|
97
|
+
compressionStatus: compressionResult.compressionStatus,
|
|
98
|
+
originalTokenCount: compressionResult.originalTokenCount,
|
|
99
|
+
newTokenCount: compressionResult.newTokenCount
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
console.error('Error in ChatCompressionModifier:', error);
|
|
105
|
+
this.hasFailedCompressionAttempt = true;
|
|
106
|
+
return createdMessage;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
async tryCompressChat(messages, force = false) {
|
|
110
|
+
var _a;
|
|
111
|
+
const curatedHistory = messages;
|
|
112
|
+
// Regardless of `force`, don't do anything if the history is empty.
|
|
113
|
+
if (curatedHistory.length === 0 ||
|
|
114
|
+
(this.hasFailedCompressionAttempt && !force)) {
|
|
115
|
+
return {
|
|
116
|
+
originalTokenCount: 0,
|
|
117
|
+
newTokenCount: 0,
|
|
118
|
+
compressionStatus: CompressionStatus.NOOP,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
// Mock model - should be replaced with actual model detection
|
|
122
|
+
const model = "gemini-pro";
|
|
123
|
+
const originalTokenCount = await this.countTokens(model, curatedHistory);
|
|
124
|
+
if (originalTokenCount === undefined) {
|
|
125
|
+
console.warn(`Could not determine token count for model ${model}.`);
|
|
126
|
+
this.hasFailedCompressionAttempt = !force && true;
|
|
127
|
+
return {
|
|
128
|
+
originalTokenCount: 0,
|
|
129
|
+
newTokenCount: 0,
|
|
130
|
+
compressionStatus: CompressionStatus.COMPRESSION_FAILED_TOKEN_COUNT_ERROR,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
const contextPercentageThreshold = this.options.contextPercentageThreshold;
|
|
134
|
+
// Don't compress if not forced and we are under the limit.
|
|
135
|
+
if (!force) {
|
|
136
|
+
const threshold = contextPercentageThreshold !== null && contextPercentageThreshold !== void 0 ? contextPercentageThreshold : COMPRESSION_TOKEN_THRESHOLD;
|
|
137
|
+
if (originalTokenCount < threshold * tokenLimit(model)) {
|
|
138
|
+
return {
|
|
139
|
+
originalTokenCount,
|
|
140
|
+
newTokenCount: originalTokenCount,
|
|
141
|
+
compressionStatus: CompressionStatus.NOOP,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
let compressBeforeIndex = findIndexAfterFraction(curatedHistory, 1 - COMPRESSION_PRESERVE_THRESHOLD);
|
|
146
|
+
// Find the first user message after the index. This is the start of the next turn.
|
|
147
|
+
while (compressBeforeIndex < curatedHistory.length &&
|
|
148
|
+
(((_a = curatedHistory[compressBeforeIndex]) === null || _a === void 0 ? void 0 : _a.role) === 'assistant' ||
|
|
149
|
+
isFunctionResponse(curatedHistory[compressBeforeIndex]))) {
|
|
150
|
+
compressBeforeIndex++;
|
|
151
|
+
}
|
|
152
|
+
const historyToCompress = curatedHistory.slice(0, compressBeforeIndex);
|
|
153
|
+
const historyToKeep = curatedHistory.slice(compressBeforeIndex);
|
|
154
|
+
// Generate AI summary using the compression prompt
|
|
155
|
+
const summary = await this.generateCompressionSummary(historyToCompress);
|
|
156
|
+
const compressedMessages = [
|
|
157
|
+
{
|
|
158
|
+
role: 'user',
|
|
159
|
+
content: summary
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
role: 'assistant',
|
|
163
|
+
content: 'Got it. Thanks for the additional context!'
|
|
164
|
+
},
|
|
165
|
+
...historyToKeep,
|
|
166
|
+
];
|
|
167
|
+
const newTokenCount = await this.countTokens(model, compressedMessages);
|
|
168
|
+
if (newTokenCount === undefined) {
|
|
169
|
+
console.warn('Could not determine compressed history token count.');
|
|
170
|
+
this.hasFailedCompressionAttempt = !force && true;
|
|
171
|
+
return {
|
|
172
|
+
originalTokenCount,
|
|
173
|
+
newTokenCount: originalTokenCount,
|
|
174
|
+
compressionStatus: CompressionStatus.COMPRESSION_FAILED_TOKEN_COUNT_ERROR,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
if (newTokenCount > originalTokenCount) {
|
|
178
|
+
this.hasFailedCompressionAttempt = !force && true;
|
|
179
|
+
return {
|
|
180
|
+
originalTokenCount,
|
|
181
|
+
newTokenCount,
|
|
182
|
+
compressionStatus: CompressionStatus.COMPRESSION_FAILED_INFLATED_TOKEN_COUNT,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
return {
|
|
186
|
+
originalTokenCount,
|
|
187
|
+
newTokenCount,
|
|
188
|
+
compressionStatus: CompressionStatus.COMPRESSED,
|
|
189
|
+
compressedMessages,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
async countTokens(model, messages) {
|
|
193
|
+
// Mock token counting - should be replaced with actual API call
|
|
194
|
+
// Rough approximation: 4 characters per token
|
|
195
|
+
const totalCharacters = messages.reduce((sum, msg) => {
|
|
196
|
+
return sum + (typeof msg.content === 'string' ? msg.content.length : JSON.stringify(msg.content).length);
|
|
197
|
+
}, 0);
|
|
198
|
+
return Math.ceil(totalCharacters / 4);
|
|
199
|
+
}
|
|
200
|
+
async generateCompressionSummary(messages) {
|
|
201
|
+
// This should use the actual compression prompt and LLM call
|
|
202
|
+
// For now, using a simplified version similar to the original
|
|
203
|
+
const compressionPrompt = `You are tasked with creating a concise summary of a conversation history to preserve context while reducing token usage.
|
|
204
|
+
|
|
205
|
+
Please analyze the conversation and create a state snapshot that captures:
|
|
206
|
+
1. Key topics discussed
|
|
207
|
+
2. Important decisions made
|
|
208
|
+
3. Current context and progress
|
|
209
|
+
4. Any ongoing tasks or issues
|
|
210
|
+
|
|
211
|
+
Format your response as a clear, structured summary that maintains the essential information needed to continue the conversation effectively.`;
|
|
212
|
+
// Mock LLM call - should be replaced with actual LLM integration
|
|
213
|
+
const summaryParts = [];
|
|
214
|
+
let userQuestions = [];
|
|
215
|
+
let assistantResponses = [];
|
|
216
|
+
for (const message of messages) {
|
|
217
|
+
const content = typeof message.content === 'string' ? message.content : JSON.stringify(message.content);
|
|
218
|
+
if (message.role === 'user') {
|
|
219
|
+
if (content.length > 20) {
|
|
220
|
+
userQuestions.push(content.substring(0, 150) + (content.length > 150 ? '...' : ''));
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
else if (message.role === 'assistant') {
|
|
224
|
+
if (content.length > 20) {
|
|
225
|
+
assistantResponses.push(content.substring(0, 150) + (content.length > 150 ? '...' : ''));
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
summaryParts.push('<state_snapshot>');
|
|
230
|
+
summaryParts.push('This is a compressed summary of the previous conversation:');
|
|
231
|
+
summaryParts.push('');
|
|
232
|
+
if (userQuestions.length > 0) {
|
|
233
|
+
summaryParts.push('Key user requests and questions:');
|
|
234
|
+
userQuestions.slice(0, 5).forEach((q, i) => {
|
|
235
|
+
summaryParts.push(`${i + 1}. ${q}`);
|
|
236
|
+
});
|
|
237
|
+
summaryParts.push('');
|
|
238
|
+
}
|
|
239
|
+
if (assistantResponses.length > 0) {
|
|
240
|
+
summaryParts.push('Key assistant responses and actions:');
|
|
241
|
+
assistantResponses.slice(0, 5).forEach((r, i) => {
|
|
242
|
+
summaryParts.push(`${i + 1}. ${r}`);
|
|
243
|
+
});
|
|
244
|
+
summaryParts.push('');
|
|
245
|
+
}
|
|
246
|
+
summaryParts.push(`Total messages compressed: ${messages.length}`);
|
|
247
|
+
summaryParts.push('</state_snapshot>');
|
|
248
|
+
return summaryParts.join('\n');
|
|
249
|
+
}
|
|
250
|
+
resetCompressionState() {
|
|
251
|
+
this.hasFailedCompressionAttempt = false;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
exports.ChatCompressionModifier = ChatCompressionModifier;
|
|
255
|
+
////
|
|
@@ -0,0 +1,7 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
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;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
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';
|
|
@@ -0,0 +1,18 @@
|
|
|
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; } });
|
|
@@ -0,0 +1,58 @@
|
|
|
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
|
+
}
|