@codebolt/agent 1.2.1 → 2.2.2

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 (183) hide show
  1. package/README.md +157 -66
  2. package/dist/builderpattern/agent.d.ts +86 -0
  3. package/dist/builderpattern/agent.js +324 -0
  4. package/dist/builderpattern/followupquestionbuilder.d.ts +75 -0
  5. package/dist/builderpattern/followupquestionbuilder.js +197 -0
  6. package/dist/builderpattern/index.d.ts +14 -0
  7. package/dist/builderpattern/index.js +23 -0
  8. package/dist/builderpattern/llmoutputhandler.d.ts +102 -0
  9. package/dist/builderpattern/llmoutputhandler.js +452 -0
  10. package/dist/builderpattern/promptbuilder.d.ts +382 -0
  11. package/dist/builderpattern/promptbuilder.js +805 -0
  12. package/dist/builderpattern/systemprompt.d.ts +20 -0
  13. package/dist/builderpattern/systemprompt.js +48 -0
  14. package/dist/builderpattern/taskInstruction.d.ts +37 -0
  15. package/dist/builderpattern/taskInstruction.js +57 -0
  16. package/dist/builderpattern/usermessage.d.ts +70 -0
  17. package/dist/builderpattern/usermessage.js +123 -0
  18. package/dist/composablepattern/agent.d.ts +169 -0
  19. package/dist/composablepattern/agent.js +598 -0
  20. package/dist/composablepattern/codebolt-storage.d.ts +67 -0
  21. package/dist/composablepattern/codebolt-storage.js +320 -0
  22. package/dist/composablepattern/document.d.ts +149 -0
  23. package/dist/composablepattern/document.js +405 -0
  24. package/dist/composablepattern/examples/codebolt-integration-example.d.ts +12 -0
  25. package/dist/composablepattern/examples/codebolt-integration-example.js +218 -0
  26. package/dist/composablepattern/examples/codebolt-storage-example.d.ts +40 -0
  27. package/dist/composablepattern/examples/codebolt-storage-example.js +223 -0
  28. package/dist/composablepattern/examples/custom-steps-example.d.ts +20 -0
  29. package/dist/composablepattern/examples/custom-steps-example.js +455 -0
  30. package/dist/composablepattern/examples/document-agent.d.ts +17 -0
  31. package/dist/composablepattern/examples/document-agent.js +107 -0
  32. package/dist/composablepattern/examples/simple-codebolt-integration.d.ts +8 -0
  33. package/dist/composablepattern/examples/simple-codebolt-integration.js +164 -0
  34. package/dist/composablepattern/examples/weather-agent.d.ts +18 -0
  35. package/dist/composablepattern/examples/weather-agent.js +86 -0
  36. package/dist/composablepattern/examples/workflow-example.d.ts +12 -0
  37. package/dist/composablepattern/examples/workflow-example.js +463 -0
  38. package/dist/composablepattern/index.d.ts +63 -0
  39. package/dist/composablepattern/index.js +115 -0
  40. package/dist/composablepattern/memory.d.ts +89 -0
  41. package/dist/composablepattern/memory.js +141 -0
  42. package/dist/composablepattern/tool.d.ts +84 -0
  43. package/dist/composablepattern/tool.js +260 -0
  44. package/dist/composablepattern/types.d.ts +194 -0
  45. package/dist/composablepattern/types.js +6 -0
  46. package/dist/composablepattern/user-context.d.ts +214 -0
  47. package/dist/composablepattern/user-context.js +275 -0
  48. package/dist/composablepattern/workflow.d.ts +388 -0
  49. package/dist/composablepattern/workflow.js +562 -0
  50. package/dist/processor/agent/agentStep.d.ts +49 -0
  51. package/dist/processor/agent/agentStep.js +241 -0
  52. package/dist/processor/agent/toolExecutor.d.ts +19 -0
  53. package/dist/processor/agent/toolExecutor.js +90 -0
  54. package/dist/processor/index.d.ts +7 -0
  55. package/dist/processor/index.js +36 -0
  56. package/dist/processor/messageModifiers/baseMessageModifier.d.ts +20 -0
  57. package/dist/processor/messageModifiers/baseMessageModifier.js +55 -0
  58. package/dist/processor/processors/baseProcessor.d.ts +14 -0
  59. package/dist/processor/processors/baseProcessor.js +29 -0
  60. package/dist/processor/tools/baseTool.d.ts +10 -0
  61. package/dist/processor/tools/baseTool.js +20 -0
  62. package/dist/processor/tools/toolList.d.ts +9 -0
  63. package/dist/processor/tools/toolList.js +22 -0
  64. package/dist/processor/types/interfaces.d.ts +94 -0
  65. package/dist/processor/types/interfaces.js +2 -0
  66. package/dist/processor-pieces/base/baseMessageModifier.d.ts +12 -0
  67. package/dist/processor-pieces/base/baseMessageModifier.js +15 -0
  68. package/dist/processor-pieces/base/basePostInferenceProcessor.d.ts +13 -0
  69. package/dist/processor-pieces/base/basePostInferenceProcessor.js +18 -0
  70. package/dist/processor-pieces/base/basePostToolCallProcessor.d.ts +15 -0
  71. package/dist/processor-pieces/base/basePostToolCallProcessor.js +25 -0
  72. package/dist/processor-pieces/base/basePreInferenceProcessor.d.ts +12 -0
  73. package/dist/processor-pieces/base/basePreInferenceProcessor.js +17 -0
  74. package/dist/processor-pieces/base/basePreToolCallProcessor.d.ts +18 -0
  75. package/dist/processor-pieces/base/basePreToolCallProcessor.js +66 -0
  76. package/dist/processor-pieces/base/index.d.ts +9 -0
  77. package/dist/processor-pieces/base/index.js +18 -0
  78. package/dist/processor-pieces/index.d.ts +1 -0
  79. package/dist/processor-pieces/index.js +59 -0
  80. package/dist/processor-pieces/messageModifiers/addToolsListMessageModifier.d.ts +22 -0
  81. package/dist/processor-pieces/messageModifiers/addToolsListMessageModifier.js +144 -0
  82. package/dist/processor-pieces/messageModifiers/argumentProcessorModifier.d.ts +13 -0
  83. package/dist/processor-pieces/messageModifiers/argumentProcessorModifier.js +68 -0
  84. package/dist/processor-pieces/messageModifiers/atFileProcessorModifier.d.ts +25 -0
  85. package/dist/processor-pieces/messageModifiers/atFileProcessorModifier.js +453 -0
  86. package/dist/processor-pieces/messageModifiers/baseContextMessageModifier.d.ts +15 -0
  87. package/dist/processor-pieces/messageModifiers/baseContextMessageModifier.js +75 -0
  88. package/dist/processor-pieces/messageModifiers/baseSystemInstructionMessageModifier.d.ts +11 -0
  89. package/dist/processor-pieces/messageModifiers/baseSystemInstructionMessageModifier.js +46 -0
  90. package/dist/processor-pieces/messageModifiers/chatHistoryMessageModifier.d.ts +18 -0
  91. package/dist/processor-pieces/messageModifiers/chatHistoryMessageModifier.js +104 -0
  92. package/dist/processor-pieces/messageModifiers/chatRecordingModifier.d.ts +23 -0
  93. package/dist/processor-pieces/messageModifiers/chatRecordingModifier.js +173 -0
  94. package/dist/processor-pieces/messageModifiers/coreSystemPromptModifier.d.ts +14 -0
  95. package/dist/processor-pieces/messageModifiers/coreSystemPromptModifier.js +130 -0
  96. package/dist/processor-pieces/messageModifiers/directoryContextModifier.d.ts +36 -0
  97. package/dist/processor-pieces/messageModifiers/directoryContextModifier.js +418 -0
  98. package/dist/processor-pieces/messageModifiers/environmentContextModifier.d.ts +26 -0
  99. package/dist/processor-pieces/messageModifiers/environmentContextModifier.js +260 -0
  100. package/dist/processor-pieces/messageModifiers/handleUrlMessageModifier.d.ts +12 -0
  101. package/dist/processor-pieces/messageModifiers/handleUrlMessageModifier.js +60 -0
  102. package/dist/processor-pieces/messageModifiers/ideContextModifier.d.ts +34 -0
  103. package/dist/processor-pieces/messageModifiers/ideContextModifier.js +157 -0
  104. package/dist/processor-pieces/messageModifiers/imageAttachmentMessageModifier.d.ts +18 -0
  105. package/dist/processor-pieces/messageModifiers/imageAttachmentMessageModifier.js +222 -0
  106. package/dist/processor-pieces/messageModifiers/index.d.ts +11 -0
  107. package/dist/processor-pieces/messageModifiers/index.js +26 -0
  108. package/dist/processor-pieces/messageModifiers/memoryImportModifier.d.ts +15 -0
  109. package/dist/processor-pieces/messageModifiers/memoryImportModifier.js +129 -0
  110. package/dist/processor-pieces/messageModifiers/toolInjectionModifier.d.ts +20 -0
  111. package/dist/processor-pieces/messageModifiers/toolInjectionModifier.js +152 -0
  112. package/dist/processor-pieces/messageModifiers/workingDirectoryMessageModifier.d.ts +22 -0
  113. package/dist/processor-pieces/messageModifiers/workingDirectoryMessageModifier.js +194 -0
  114. package/dist/processor-pieces/postInferenceProcessors/loopDetectionModifier.d.ts +29 -0
  115. package/dist/processor-pieces/postInferenceProcessors/loopDetectionModifier.js +174 -0
  116. package/dist/processor-pieces/postToolCallProcessors/index.d.ts +1 -0
  117. package/dist/processor-pieces/postToolCallProcessors/index.js +2 -0
  118. package/dist/processor-pieces/postToolCallProcessors/shellProcessorModifier.d.ts +25 -0
  119. package/dist/processor-pieces/postToolCallProcessors/shellProcessorModifier.js +225 -0
  120. package/dist/processor-pieces/preInferenceProcessors/chatCompressionModifier.d.ts +35 -0
  121. package/dist/processor-pieces/preInferenceProcessors/chatCompressionModifier.js +255 -0
  122. package/dist/processor-pieces/preInferenceProcessors/index.d.ts +1 -0
  123. package/dist/processor-pieces/preInferenceProcessors/index.js +2 -0
  124. package/dist/processor-pieces/pretoolCallProcessors/index.d.ts +1 -0
  125. package/dist/processor-pieces/pretoolCallProcessors/index.js +2 -0
  126. package/dist/processor-pieces/processors/advancedLoopDetectionProcessor.d.ts +41 -0
  127. package/dist/processor-pieces/processors/advancedLoopDetectionProcessor.js +197 -0
  128. package/dist/processor-pieces/processors/chatCompressionProcessor.d.ts +26 -0
  129. package/dist/processor-pieces/processors/chatCompressionProcessor.js +90 -0
  130. package/dist/processor-pieces/processors/chatRecordingProcessor.d.ts +81 -0
  131. package/dist/processor-pieces/processors/chatRecordingProcessor.js +329 -0
  132. package/dist/processor-pieces/processors/contextManagementProcessor.d.ts +40 -0
  133. package/dist/processor-pieces/processors/contextManagementProcessor.js +305 -0
  134. package/dist/processor-pieces/processors/loopDetectionProcessor.d.ts +30 -0
  135. package/dist/processor-pieces/processors/loopDetectionProcessor.js +137 -0
  136. package/dist/processor-pieces/processors/responseValidationProcessor.d.ts +30 -0
  137. package/dist/processor-pieces/processors/responseValidationProcessor.js +228 -0
  138. package/dist/processor-pieces/processors/telemetryProcessor.d.ts +99 -0
  139. package/dist/processor-pieces/processors/telemetryProcessor.js +311 -0
  140. package/dist/processor-pieces/processors/tokenManagementProcessor.d.ts +37 -0
  141. package/dist/processor-pieces/processors/tokenManagementProcessor.js +178 -0
  142. package/dist/processor-pieces/processors/toolExecutionProcessor.d.ts +43 -0
  143. package/dist/processor-pieces/processors/toolExecutionProcessor.js +207 -0
  144. package/dist/processor-pieces/tools/fileTools.d.ts +26 -0
  145. package/dist/processor-pieces/tools/fileTools.js +162 -0
  146. package/dist/processor-pieces/utils/messageModifierHelper.d.ts +4 -0
  147. package/dist/processor-pieces/utils/messageModifierHelper.js +58 -0
  148. package/dist/types/commonTypes.d.ts +4 -0
  149. package/dist/types/processorTypes.d.ts +67 -0
  150. package/dist/types/processorTypes.js +58 -0
  151. package/dist/unified/agent/agent.d.ts +17 -0
  152. package/dist/unified/agent/agent.js +79 -0
  153. package/dist/unified/agent/team.d.ts +2 -0
  154. package/dist/unified/agent/team.js +6 -0
  155. package/dist/unified/agent/tools.d.ts +44 -0
  156. package/dist/unified/agent/tools.js +487 -0
  157. package/dist/unified/agent/workflow.d.ts +24 -0
  158. package/dist/unified/agent/workflow.js +275 -0
  159. package/dist/unified/agent/workflowControls.d.ts +11 -0
  160. package/dist/unified/agent/workflowControls.js +20 -0
  161. package/dist/unified/agent/workflowSteps.d.ts +63 -0
  162. package/dist/unified/agent/workflowSteps.js +284 -0
  163. package/dist/unified/base/agentStep.d.ts +32 -0
  164. package/dist/unified/base/agentStep.js +96 -0
  165. package/dist/unified/base/create/createInitialPromptGenerators.d.ts +5 -0
  166. package/dist/unified/base/create/createInitialPromptGenerators.js +17 -0
  167. package/dist/unified/base/index.d.ts +5 -0
  168. package/dist/unified/base/index.js +13 -0
  169. package/dist/unified/base/initialPromptGenerator.d.ts +48 -0
  170. package/dist/unified/base/initialPromptGenerator.js +118 -0
  171. package/dist/unified/base/responseExecutor.d.ts +36 -0
  172. package/dist/unified/base/responseExecutor.js +283 -0
  173. package/dist/unified/index.d.ts +18 -0
  174. package/dist/unified/index.js +42 -0
  175. package/dist/unified/team/team.d.ts +1 -0
  176. package/dist/unified/team/team.js +2 -0
  177. package/dist/unified/types/libTypes.d.ts +378 -0
  178. package/dist/unified/types/libTypes.js +6 -0
  179. package/dist/unified/types/types.d.ts +212 -0
  180. package/dist/unified/types/types.js +43 -0
  181. package/dist/unified/utils/utils.d.ts +40 -0
  182. package/dist/unified/utils/utils.js +219 -0
  183. package/package.json +29 -7
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AgentStep = void 0;
7
+ const codeboltjs_1 = __importDefault(require("@codebolt/codeboltjs"));
8
+ /**
9
+ * Unified agent step that handles LLM interaction and tool call analysis
10
+ */
11
+ class AgentStep {
12
+ constructor(options = {}) {
13
+ this.preInferenceProcessors = options.preInferenceProcessors || [];
14
+ this.postInferenceProcessors = options.postInferenceProcessors || [];
15
+ this.llmRole = options.llmRole || 'default';
16
+ }
17
+ /**
18
+ * Execute a single agent step
19
+ */
20
+ async executeStep(originalRequest, createdMessage) {
21
+ var _a;
22
+ try {
23
+ for (const preInferenceProcessor of this.preInferenceProcessors) {
24
+ try {
25
+ // Each modifier returns a new ProcessedMessage
26
+ createdMessage = await preInferenceProcessor.modify(originalRequest, createdMessage);
27
+ }
28
+ catch (error) {
29
+ console.error(`[InitialPromptGenerator] Error in message modifier:`, error);
30
+ // Continue with other modifiers
31
+ }
32
+ }
33
+ // Generate LLM response
34
+ const rawLLMResponse = await this.generateResponse(createdMessage.message);
35
+ // add llm reslponse to created message
36
+ let modifiedMessage = createdMessage;
37
+ (_a = rawLLMResponse.choices) === null || _a === void 0 ? void 0 : _a.forEach(contentBlock => {
38
+ modifiedMessage.message.messages.push({
39
+ ...contentBlock.message,
40
+ role: contentBlock.message.role
41
+ });
42
+ });
43
+ for (const postInferenceProcessor of this.postInferenceProcessors) {
44
+ try {
45
+ // Each modifier returns a new ProcessedMessage
46
+ modifiedMessage = await postInferenceProcessor.modify(createdMessage, rawLLMResponse, modifiedMessage);
47
+ }
48
+ catch (error) {
49
+ console.error(`[InitialPromptGenerator] Error in message modifier:`, error);
50
+ // Continue with other modifiers
51
+ }
52
+ }
53
+ const output = {
54
+ rawLLMResponse: rawLLMResponse,
55
+ nextMessage: modifiedMessage,
56
+ actualMessageSentToLLM: createdMessage
57
+ };
58
+ return output;
59
+ }
60
+ catch (error) {
61
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
62
+ throw new Error(`Failed to execute agent step: ${errorMessage}`);
63
+ }
64
+ }
65
+ async generateResponse(messageForLLM) {
66
+ const response = await codeboltjs_1.default.llm.inference(messageForLLM);
67
+ return response.completion;
68
+ }
69
+ /**
70
+ * Update LLM configuration
71
+ */
72
+ setLLMConfig(config) {
73
+ this.llmRole = config;
74
+ }
75
+ /**
76
+ * Get current LLM configuration
77
+ */
78
+ getLLMConfig() {
79
+ return this.llmRole;
80
+ }
81
+ updatePreInferenceProcessors(processors) {
82
+ this.preInferenceProcessors = processors;
83
+ }
84
+ ;
85
+ getPreInferenceProcessors() {
86
+ return this.preInferenceProcessors;
87
+ }
88
+ updatePostInferenceProcessors(processors) {
89
+ this.postInferenceProcessors = processors;
90
+ }
91
+ ;
92
+ getPostInferenceProcessors() {
93
+ return this.postInferenceProcessors;
94
+ }
95
+ }
96
+ exports.AgentStep = AgentStep;
@@ -0,0 +1,5 @@
1
+ import { InitialPromptGeneratorInterface } from "@codebolt/types/agent";
2
+ /**
3
+ * Utility function to create a basic message processor with default settings
4
+ */
5
+ export declare function createDefaultMessageProcessor(): InitialPromptGeneratorInterface;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createDefaultMessageProcessor = createDefaultMessageProcessor;
4
+ const initialPromptGenerator_1 = require("../initialPromptGenerator");
5
+ /**
6
+ * Utility function to create a basic message processor with default settings
7
+ */
8
+ function createDefaultMessageProcessor() {
9
+ return new initialPromptGenerator_1.InitialPromptGenerator({
10
+ enableLogging: true,
11
+ processors: [], //TODO add some default processors here
12
+ metaData: {
13
+ timestamp: new Date().toISOString(),
14
+ version: '1.0.0'
15
+ }
16
+ });
17
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Unified Base Classes Index
3
+ * Exports core unified framework classes
4
+ */
5
+ export { InitialPromptGenerator } from './initialPromptGenerator';
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ /**
3
+ * Unified Base Classes Index
4
+ * Exports core unified framework classes
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.InitialPromptGenerator = void 0;
8
+ // Core unified framework classes
9
+ var initialPromptGenerator_1 = require("./initialPromptGenerator");
10
+ Object.defineProperty(exports, "InitialPromptGenerator", { enumerable: true, get: function () { return initialPromptGenerator_1.InitialPromptGenerator; } });
11
+ // export { default as AgentStep } from './agentStep';
12
+ // Response executor functions
13
+ // export { createUnifiedResponseExecutor, createBasicResponseExecutor } from './responseExecutor';
@@ -0,0 +1,48 @@
1
+ import type { FlatUserMessage } from '@codebolt/types/sdk';
2
+ import type { InitialPromptGeneratorInterface, MessageModifier, ProcessedMessage } from '@codebolt/types/agent';
3
+ /**
4
+ * Initial prompt generator that combines message modifiers with unified processing
5
+ */
6
+ export declare class InitialPromptGenerator implements InitialPromptGeneratorInterface {
7
+ private processors;
8
+ private metaData;
9
+ private enableLogging;
10
+ private baseSystemPrompt?;
11
+ constructor(options?: {
12
+ processors?: MessageModifier[];
13
+ baseSystemPrompt?: string;
14
+ metaData?: Record<string, unknown>;
15
+ enableLogging?: boolean;
16
+ templating?: boolean;
17
+ });
18
+ /**
19
+ * Process and modify input messages using the message modifier pattern
20
+ */
21
+ processMessage(input: FlatUserMessage): Promise<ProcessedMessage>;
22
+ /**
23
+ * Set context value
24
+ */
25
+ setMetaData(key: string, value: unknown): void;
26
+ /**
27
+ * Get context value
28
+ */
29
+ getMetaData(key: string): unknown;
30
+ /**
31
+ * Clear all context
32
+ */
33
+ clearMetaData(): void;
34
+ /**
35
+ * Get all message modifiers
36
+ */
37
+ updateProcessors(processors: MessageModifier[]): void;
38
+ getProcessors(): MessageModifier[];
39
+ }
40
+ /**
41
+ * Factory function to create a unified message processor with message modifiers
42
+ */
43
+ export declare function createUnifiedMessageProcessor(options?: {
44
+ processors?: MessageModifier[];
45
+ baseSystemPrompt?: string;
46
+ metaData?: Record<string, unknown>;
47
+ enableLogging?: boolean;
48
+ }): InitialPromptGeneratorInterface;
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InitialPromptGenerator = void 0;
4
+ exports.createUnifiedMessageProcessor = createUnifiedMessageProcessor;
5
+ const types_1 = require("../types/types");
6
+ /**
7
+ * Initial prompt generator that combines message modifiers with unified processing
8
+ */
9
+ class InitialPromptGenerator {
10
+ constructor(options = {}) {
11
+ this.processors = [];
12
+ this.metaData = {};
13
+ this.processors = options.processors || [];
14
+ this.metaData = options.metaData || {};
15
+ this.enableLogging = options.enableLogging !== false;
16
+ this.baseSystemPrompt = options.baseSystemPrompt;
17
+ }
18
+ /**
19
+ * Process and modify input messages using the message modifier pattern
20
+ */
21
+ async processMessage(input) {
22
+ try {
23
+ if (this.enableLogging) {
24
+ console.log('[InitialPromptGenerator] Processing message:', input);
25
+ }
26
+ // Create initial ProcessedMessage from FlatUserMessage
27
+ const content = input.userMessage;
28
+ // Create messages array, starting with system message if baseSystemPrompt is defined
29
+ const messages = [];
30
+ let createdMessage = {
31
+ message: {
32
+ messages: messages,
33
+ tools: []
34
+ },
35
+ metadata: {
36
+ timestamp: new Date().toISOString(),
37
+ messageId: input.messageId,
38
+ threadId: input.threadId
39
+ }
40
+ };
41
+ // Apply all message modifiers in sequence
42
+ // Each modifier receives the original request (FlatUserMessage) and the current processed message
43
+ for (const messageModifier of this.processors) {
44
+ try {
45
+ // Each modifier returns a new ProcessedMessage
46
+ createdMessage = await messageModifier.modify(input, createdMessage);
47
+ }
48
+ catch (error) {
49
+ console.error(`[InitialPromptGenerator] Error in message modifier:`, error);
50
+ // Continue with other modifiers
51
+ }
52
+ }
53
+ createdMessage.message.messages.push({
54
+ role: 'assistant',
55
+ content: "Got it. Thanks for the context!"
56
+ });
57
+ createdMessage.message.messages.push({
58
+ role: 'user',
59
+ content: content.trim()
60
+ });
61
+ if (this.enableLogging) {
62
+ console.log('[InitialPromptGenerator] Processing completed:', {
63
+ messageCount: createdMessage.message.messages.length,
64
+ metadata: createdMessage.metadata
65
+ });
66
+ }
67
+ if (this.baseSystemPrompt !== undefined) {
68
+ const hasSystem = createdMessage.message.messages.some(msg => msg.role === 'system');
69
+ if (!hasSystem) {
70
+ createdMessage.message.messages.unshift({
71
+ role: 'system',
72
+ content: this.baseSystemPrompt
73
+ });
74
+ }
75
+ }
76
+ return createdMessage;
77
+ }
78
+ catch (error) {
79
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
80
+ throw new types_1.UnifiedMessageProcessingError(`Failed to process message: ${errorMessage}`);
81
+ }
82
+ }
83
+ /**
84
+ * Set context value
85
+ */
86
+ setMetaData(key, value) {
87
+ this.metaData[key] = value;
88
+ }
89
+ /**
90
+ * Get context value
91
+ */
92
+ getMetaData(key) {
93
+ return this.metaData[key];
94
+ }
95
+ /**
96
+ * Clear all context
97
+ */
98
+ clearMetaData() {
99
+ this.metaData = {};
100
+ }
101
+ /**
102
+ * Get all message modifiers
103
+ */
104
+ updateProcessors(processors) {
105
+ this.processors = processors;
106
+ }
107
+ ;
108
+ getProcessors() {
109
+ return this.processors;
110
+ }
111
+ }
112
+ exports.InitialPromptGenerator = InitialPromptGenerator;
113
+ /**
114
+ * Factory function to create a unified message processor with message modifiers
115
+ */
116
+ function createUnifiedMessageProcessor(options = {}) {
117
+ return new InitialPromptGenerator(options);
118
+ }
@@ -0,0 +1,36 @@
1
+ import { AgentResponseExecutor, PostToolCallProcessor, PreToolCallProcessor, ResponseInput, ResponseOutput } from '@codebolt/types/agent';
2
+ export declare class ResponseExecutor implements AgentResponseExecutor {
3
+ private preToolCalProcessors;
4
+ private postToolCallProcessors;
5
+ private completed;
6
+ constructor(options: {
7
+ preToolCalProcessors: PreToolCallProcessor[];
8
+ postToolCallProcessors: PostToolCallProcessor[];
9
+ });
10
+ executeResponse(input: ResponseInput): Promise<ResponseOutput>;
11
+ /**
12
+ * Extract tool details from tool call
13
+ */
14
+ private getToolDetail;
15
+ private executeTools;
16
+ /**
17
+ * Executes a tool with given name and input.
18
+ *
19
+ * @param toolName - The name of the tool to execute
20
+ * @param toolInput - The input parameters for the tool
21
+ * @returns Promise with tuple [userRejected, result]
22
+ */
23
+ private executeTool;
24
+ /**
25
+ * Creates a tool result object from the tool execution response.
26
+ *
27
+ * @param tool_call_id - The ID of the tool call
28
+ * @param content - The content returned by the tool
29
+ * @returns ToolResult object
30
+ */
31
+ private parseToolResult;
32
+ setPreToolCallProcessors(processors: PreToolCallProcessor[]): void;
33
+ setPostToolCallProcessors(processors: PostToolCallProcessor[]): void;
34
+ getPreToolCallProcessors(): PreToolCallProcessor[];
35
+ getPostToolCallProcessors(): PostToolCallProcessor[];
36
+ }
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ResponseExecutor = void 0;
7
+ const codeboltjs_1 = __importDefault(require("@codebolt/codeboltjs"));
8
+ class ResponseExecutor {
9
+ constructor(options) {
10
+ this.preToolCalProcessors = [];
11
+ this.postToolCallProcessors = [];
12
+ this.completed = false;
13
+ this.preToolCalProcessors = options.preToolCalProcessors;
14
+ this.postToolCallProcessors = options.postToolCallProcessors;
15
+ }
16
+ async executeResponse(input) {
17
+ let nextMessage = input.nextMessage;
18
+ for (const preToolCallProcessor of this.preToolCalProcessors) {
19
+ try {
20
+ // TODO: Extract required properties from input for PreToolCallProcessorInput
21
+ let { nextPrompt, shouldExit } = await preToolCallProcessor.modify({ llmMessageSent: input.actualMessageSentToLLM, rawLLMResponseMessage: input.rawLLMOutput, nextPrompt: input.nextMessage });
22
+ nextMessage = nextPrompt;
23
+ if (shouldExit) {
24
+ this.completed = true;
25
+ Promise.resolve({
26
+ nextPrompt,
27
+ completed: this.completed
28
+ });
29
+ }
30
+ }
31
+ catch (error) {
32
+ console.error(`[InitialPromptGenerator] Error in message modifier:`, error);
33
+ // Continue with other modifiers
34
+ }
35
+ }
36
+ //ToolCall here
37
+ let toolResults = await this.executeTools(input.rawLLMOutput);
38
+ // INSERT_YOUR_CODE
39
+ if (nextMessage && toolResults && toolResults.length > 0 && nextMessage && nextMessage.message && Array.isArray(nextMessage.message.messages)) {
40
+ for (const toolResult of toolResults) {
41
+ const messageObject = {
42
+ role: toolResult.role,
43
+ content: typeof toolResult.content === 'string' ? toolResult.content : JSON.stringify(toolResult.content),
44
+ tool_call_id: toolResult.tool_call_id
45
+ };
46
+ nextMessage.message.messages.push(messageObject);
47
+ }
48
+ }
49
+ else {
50
+ // this.completed=true;
51
+ nextMessage.message.messages.push({
52
+ role: "user",
53
+ content: [{
54
+ type: "text",
55
+ text: "If you have completed the user's task, use the attempt_completion tool. if you have not completed the task and do not need additional information, then proceed with the next step of the task. (This is an automated message, so do not respond to it conversationally.)"
56
+ }]
57
+ });
58
+ }
59
+ for (const postToolCallProcessor of this.postToolCallProcessors) {
60
+ try {
61
+ // TODO: Extract required properties from input for PreToolCallProcessorInput
62
+ let { nextPrompt, shouldExit } = await postToolCallProcessor.modify({
63
+ llmMessageSent: input.actualMessageSentToLLM,
64
+ rawLLMResponseMessage: input.rawLLMOutput,
65
+ nextPrompt: input.nextMessage,
66
+ toolResults: []
67
+ });
68
+ if (shouldExit) {
69
+ this.completed = true;
70
+ Promise.resolve({
71
+ nextPrompt,
72
+ completed: this.completed
73
+ });
74
+ }
75
+ }
76
+ catch (error) {
77
+ console.error(`[InitialPromptGenerator] Error in message modifier:`, error);
78
+ // Continue with other modifiers
79
+ }
80
+ }
81
+ return {
82
+ completed: this.completed,
83
+ nextMessage: nextMessage,
84
+ toolResults: toolResults
85
+ };
86
+ }
87
+ /**
88
+ * Extract tool details from tool call
89
+ */
90
+ getToolDetail(tool) {
91
+ let toolInput = {};
92
+ if (tool.function.arguments) {
93
+ try {
94
+ toolInput = JSON.parse(tool.function.arguments);
95
+ }
96
+ catch (parseError) {
97
+ throw new Error(`Failed to parse tool arguments: ${parseError}`);
98
+ }
99
+ }
100
+ return {
101
+ toolName: tool.function.name,
102
+ toolInput: toolInput,
103
+ toolUseId: tool.id
104
+ };
105
+ }
106
+ async executeTools(llmResponse) {
107
+ var _a, _b;
108
+ try {
109
+ let fallBackMessages = [];
110
+ for (const contentBlock of llmResponse.choices || []) {
111
+ if (contentBlock.message) {
112
+ if (contentBlock.message.content != null) {
113
+ await codeboltjs_1.default.chat.sendMessage(contentBlock.message.content, {});
114
+ }
115
+ }
116
+ }
117
+ try {
118
+ let toolResults = [];
119
+ let taskCompletedBlock;
120
+ let userRejectedToolUse = false;
121
+ const contentBlock = (_a = llmResponse.choices) === null || _a === void 0 ? void 0 : _a[0];
122
+ if (contentBlock && ((_b = contentBlock.message) === null || _b === void 0 ? void 0 : _b.tool_calls)) {
123
+ for (const tool of contentBlock.message.tool_calls) {
124
+ try {
125
+ const { toolInput, toolName, toolUseId } = this.getToolDetail(tool);
126
+ if (!userRejectedToolUse) {
127
+ if (toolName.includes("attempt_completion")) {
128
+ taskCompletedBlock = tool;
129
+ this.completed = true;
130
+ }
131
+ else {
132
+ let [serverName] = toolName.replace('--', ':').split(':');
133
+ if (serverName == 'subagent') {
134
+ const agentResponse = await codeboltjs_1.default.agent.startAgent(toolName.replace("subagent--", ''), toolInput.task);
135
+ const [didUserReject, result] = [false, "tool result is successful"];
136
+ let toolResult = this.parseToolResult(toolUseId, result);
137
+ toolResults.push({
138
+ role: "tool",
139
+ tool_call_id: toolResult.tool_call_id,
140
+ content: toolResult.content,
141
+ });
142
+ if (toolResult.userMessage) {
143
+ fallBackMessages.push({
144
+ role: "user",
145
+ content: toolResult.userMessage.toString()
146
+ });
147
+ }
148
+ if (didUserReject) {
149
+ userRejectedToolUse = true;
150
+ }
151
+ }
152
+ else {
153
+ console.log("Executing tool: ", toolName, toolInput);
154
+ const [didUserReject, result] = await this.executeTool(toolName, toolInput);
155
+ console.log("Tool result: ", result);
156
+ // toolResults.push(this.parseToolResult(toolUseId, result));
157
+ let toolResult = this.parseToolResult(toolUseId, result);
158
+ toolResults.push({
159
+ role: "tool",
160
+ tool_call_id: toolResult.tool_call_id,
161
+ content: toolResult.content,
162
+ });
163
+ if (toolResult.userMessage) {
164
+ fallBackMessages.push({
165
+ role: "user",
166
+ content: toolResult.userMessage.toString()
167
+ });
168
+ }
169
+ if (didUserReject) {
170
+ userRejectedToolUse = true;
171
+ }
172
+ }
173
+ }
174
+ }
175
+ else {
176
+ let toolResult = this.parseToolResult(toolUseId, "Skipping tool execution due to previous tool user rejection.");
177
+ toolResults.push({
178
+ role: "tool",
179
+ tool_call_id: toolResult.tool_call_id,
180
+ content: toolResult.content,
181
+ });
182
+ if (toolResult.userMessage) {
183
+ fallBackMessages.push({
184
+ role: "user",
185
+ content: toolResult.userMessage.toString()
186
+ });
187
+ }
188
+ }
189
+ }
190
+ catch (error) {
191
+ toolResults.push({
192
+ role: "tool",
193
+ tool_call_id: tool.id,
194
+ content: String(error),
195
+ });
196
+ }
197
+ }
198
+ }
199
+ if (taskCompletedBlock) {
200
+ let [_, result] = await this.executeTool(taskCompletedBlock.function.name, JSON.parse(taskCompletedBlock.function.arguments || "{}"));
201
+ if (result === "") {
202
+ // this.completed = true;
203
+ result = "The user is satisfied with the result.";
204
+ }
205
+ let toolResult = this.parseToolResult(taskCompletedBlock.id, result);
206
+ toolResults.push({
207
+ role: "tool",
208
+ tool_call_id: toolResult.tool_call_id,
209
+ content: toolResult.content,
210
+ });
211
+ if (toolResult.userMessage) {
212
+ fallBackMessages.push({
213
+ role: "user",
214
+ content: toolResult.userMessage.toString()
215
+ });
216
+ }
217
+ }
218
+ return toolResults;
219
+ }
220
+ catch (error) {
221
+ }
222
+ }
223
+ catch (error) {
224
+ }
225
+ return [];
226
+ }
227
+ /**
228
+ * Executes a tool with given name and input.
229
+ *
230
+ * @param toolName - The name of the tool to execute
231
+ * @param toolInput - The input parameters for the tool
232
+ * @returns Promise with tuple [userRejected, result]
233
+ */
234
+ async executeTool(toolName, toolInput) {
235
+ //codebolttools--readfile
236
+ console.log("Executing tool: ", toolName, toolInput);
237
+ const [toolboxName, actualToolName] = toolName.split('--');
238
+ console.log("Toolbox name: ", toolboxName, "Actual tool name: ", actualToolName);
239
+ const { data } = await codeboltjs_1.default.mcp.executeTool(toolboxName, actualToolName, toolInput);
240
+ console.log("Tool result: ", data);
241
+ return [false, data];
242
+ }
243
+ /**
244
+ * Creates a tool result object from the tool execution response.
245
+ *
246
+ * @param tool_call_id - The ID of the tool call
247
+ * @param content - The content returned by the tool
248
+ * @returns ToolResult object
249
+ */
250
+ parseToolResult(tool_call_id, content) {
251
+ let userMessage = undefined;
252
+ try {
253
+ let parsed = JSON.parse(content);
254
+ console.log("Parsed Content: ", parsed);
255
+ if (parsed.payload && parsed.payload.content) {
256
+ content = `The browser action has been executed. The screenshot have been captured for your analysis. The tool response is provided in the next user message`;
257
+ // this.apiConversationHistory.push()
258
+ userMessage = parsed.payload.content;
259
+ }
260
+ }
261
+ catch (error) {
262
+ }
263
+ return {
264
+ role: "tool",
265
+ tool_call_id,
266
+ content,
267
+ userMessage
268
+ };
269
+ }
270
+ setPreToolCallProcessors(processors) {
271
+ this.preToolCalProcessors = processors;
272
+ }
273
+ setPostToolCallProcessors(processors) {
274
+ this.postToolCallProcessors = processors;
275
+ }
276
+ getPreToolCallProcessors() {
277
+ return this.preToolCalProcessors;
278
+ }
279
+ getPostToolCallProcessors() {
280
+ return this.postToolCallProcessors;
281
+ }
282
+ }
283
+ exports.ResponseExecutor = ResponseExecutor;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Unified Agent Framework
3
+ *
4
+ * This module provides a unified approach to agent development that combines:
5
+ * - Message modification using the processor pattern
6
+ * - Agent step execution with LLM integration
7
+ * - Response execution with tool handling and conversation management
8
+ *
9
+ * The framework is designed to be modular, extensible, and easy to use.
10
+ */
11
+ export type { UnifiedAgentConfig, UnifiedMessageOutput, UnifiedStepInput, UnifiedStepOutput, UnifiedResponseInput, UnifiedResponseOutput, UnifiedAgentInput, UnifiedAgentOutput, UnifiedMessageModifier, UnifiedResponseExecutor, UnifiedAgentEvent, UnifiedAgentEventHandler, UnifiedAgentEventType } from './types/types';
12
+ export { UnifiedAgentError, UnifiedMessageProcessingError, UnifiedStepExecutionError, UnifiedResponseExecutionError, UnifiedToolExecutionError } from './types/types';
13
+ export { createDefaultMessageProcessor } from './base/create/createInitialPromptGenerators';
14
+ export { InitialPromptGenerator } from './base/initialPromptGenerator';
15
+ export { AgentStep } from './base/agentStep';
16
+ export { ResponseExecutor } from './base/responseExecutor';
17
+ export { type OpenAIMessage, type OpenAITool, type ToolResult, type CodeboltAPI, type AgentExecutionResult, type StreamChunk, type StreamCallback } from './types/libTypes';
18
+ export { type LLMConfig } from './types/libTypes';