@codebolt/agent 2.2.2 → 2.2.5

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 (141) hide show
  1. package/dist/builderpattern/agent.js +2 -2
  2. package/dist/builderpattern/followupquestionbuilder.js +1 -1
  3. package/dist/builderpattern/llmoutputhandler.js +7 -7
  4. package/dist/builderpattern/usermessage.d.ts +6 -1
  5. package/dist/composablepattern/document.js +2 -35
  6. package/dist/local-tools/fileTools.d.ts +26 -0
  7. package/dist/local-tools/fileTools.js +162 -0
  8. package/dist/processor/types/interfaces.d.ts +44 -21
  9. package/dist/processor-pieces/additionalModifiers/argumentProcessorModifier.d.ts +13 -0
  10. package/dist/processor-pieces/additionalModifiers/argumentProcessorModifier.js +68 -0
  11. package/dist/processor-pieces/additionalModifiers/atFileProcessorModifier.d.ts +15 -0
  12. package/dist/processor-pieces/additionalModifiers/atFileProcessorModifier.js +212 -0
  13. package/dist/processor-pieces/additionalModifiers/chatCompressionModifier.d.ts +19 -0
  14. package/dist/processor-pieces/additionalModifiers/chatCompressionModifier.js +110 -0
  15. package/dist/processor-pieces/additionalModifiers/chatRecordingModifier.d.ts +23 -0
  16. package/dist/processor-pieces/additionalModifiers/chatRecordingModifier.js +173 -0
  17. package/dist/processor-pieces/additionalModifiers/coreSystemPromptModifier.d.ts +14 -0
  18. package/dist/processor-pieces/additionalModifiers/coreSystemPromptModifier.js +93 -0
  19. package/dist/processor-pieces/additionalModifiers/directoryContextModifier.d.ts +30 -0
  20. package/dist/processor-pieces/additionalModifiers/directoryContextModifier.js +330 -0
  21. package/dist/processor-pieces/additionalModifiers/environmentContextModifier.d.ts +26 -0
  22. package/dist/processor-pieces/additionalModifiers/environmentContextModifier.js +269 -0
  23. package/dist/processor-pieces/additionalModifiers/fallbackHandlerModifier.d.ts +38 -0
  24. package/dist/processor-pieces/additionalModifiers/fallbackHandlerModifier.js +217 -0
  25. package/dist/processor-pieces/additionalModifiers/ideContextModifier.d.ts +34 -0
  26. package/dist/processor-pieces/additionalModifiers/ideContextModifier.js +147 -0
  27. package/dist/processor-pieces/additionalModifiers/index.d.ts +12 -0
  28. package/dist/processor-pieces/additionalModifiers/index.js +28 -0
  29. package/dist/processor-pieces/additionalModifiers/loopDetectionModifier.d.ts +29 -0
  30. package/dist/processor-pieces/additionalModifiers/loopDetectionModifier.js +155 -0
  31. package/dist/processor-pieces/additionalModifiers/memoryImportModifier.d.ts +15 -0
  32. package/dist/processor-pieces/additionalModifiers/memoryImportModifier.js +129 -0
  33. package/dist/processor-pieces/additionalModifiers/shellProcessorModifier.d.ts +25 -0
  34. package/dist/processor-pieces/additionalModifiers/shellProcessorModifier.js +169 -0
  35. package/dist/processor-pieces/additionalModifiers/toolInjectionModifier.d.ts +20 -0
  36. package/dist/processor-pieces/additionalModifiers/toolInjectionModifier.js +152 -0
  37. package/dist/processor-pieces/messageModifiers/addCurrentDirectoryRootFilesModifier.d.ts +7 -0
  38. package/dist/processor-pieces/messageModifiers/addCurrentDirectoryRootFilesModifier.js +93 -0
  39. package/dist/processor-pieces/messageModifiers/addToolsListMessageModifier.d.ts +14 -5
  40. package/dist/processor-pieces/messageModifiers/addToolsListMessageModifier.js +41 -40
  41. package/dist/processor-pieces/messageModifiers/advancedSystemInstructionMessageModifier.d.ts +9 -0
  42. package/dist/processor-pieces/messageModifiers/advancedSystemInstructionMessageModifier.js +77 -0
  43. package/dist/processor-pieces/messageModifiers/atFileProcessorModifier.js +5 -5
  44. package/dist/processor-pieces/messageModifiers/baseContextMessageModifier.d.ts +5 -13
  45. package/dist/processor-pieces/messageModifiers/baseContextMessageModifier.js +50 -58
  46. package/dist/processor-pieces/messageModifiers/baseSystemInstructionMessageModifier.d.ts +6 -8
  47. package/dist/processor-pieces/messageModifiers/baseSystemInstructionMessageModifier.js +66 -22
  48. package/dist/processor-pieces/messageModifiers/chatCompressionModifier.d.ts +19 -0
  49. package/dist/processor-pieces/messageModifiers/chatCompressionModifier.js +110 -0
  50. package/dist/processor-pieces/messageModifiers/chatHistoryMessageModifier.example.d.ts +20 -0
  51. package/dist/processor-pieces/messageModifiers/chatHistoryMessageModifier.example.js +124 -0
  52. package/dist/processor-pieces/messageModifiers/environmentContext.d.ts +41 -0
  53. package/dist/processor-pieces/messageModifiers/environmentContext.js +355 -0
  54. package/dist/processor-pieces/messageModifiers/handleUrlMessageModifier.d.ts +3 -2
  55. package/dist/processor-pieces/messageModifiers/handleUrlMessageModifier.js +1 -2
  56. package/dist/processor-pieces/messageModifiers/imageAttachmentMessageModifier.d.ts +3 -2
  57. package/dist/processor-pieces/messageModifiers/imageAttachmentMessageModifier.js +1 -2
  58. package/dist/processor-pieces/messageModifiers/mentionedFilesModifier.d.ts +23 -0
  59. package/dist/processor-pieces/messageModifiers/mentionedFilesModifier.js +207 -0
  60. package/dist/processor-pieces/messageModifiers/simpleMessageModifier.d.ts +7 -0
  61. package/dist/processor-pieces/messageModifiers/simpleMessageModifier.js +26 -0
  62. package/dist/processor-pieces/messageModifiers/workingDirectoryMessageModifier.d.ts +18 -2
  63. package/dist/processor-pieces/messageModifiers/workingDirectoryMessageModifier.js +291 -93
  64. package/dist/processor-pieces/postInference/llmOutputValidityProcessor.d.ts +1 -0
  65. package/dist/processor-pieces/postInference/llmOutputValidityProcessor.js +2 -0
  66. package/dist/processor-pieces/postInferenceProcessors/checkForNoToolCall.d.ts +7 -0
  67. package/dist/processor-pieces/postInferenceProcessors/checkForNoToolCall.js +24 -0
  68. package/dist/processor-pieces/postToolCall/advancedLoopDetectionProcessor.d.ts +41 -0
  69. package/dist/processor-pieces/postToolCall/advancedLoopDetectionProcessor.js +197 -0
  70. package/dist/processor-pieces/postToolCall/chatCompressionProcessor.d.ts +26 -0
  71. package/dist/processor-pieces/postToolCall/chatCompressionProcessor.js +90 -0
  72. package/dist/processor-pieces/postToolCall/chatRecordingProcessor.d.ts +81 -0
  73. package/dist/processor-pieces/postToolCall/chatRecordingProcessor.js +329 -0
  74. package/dist/processor-pieces/postToolCall/contextManagementProcessor.d.ts +40 -0
  75. package/dist/processor-pieces/postToolCall/contextManagementProcessor.js +272 -0
  76. package/dist/processor-pieces/postToolCall/conversationCompactorProcessor.d.ts +49 -0
  77. package/dist/processor-pieces/postToolCall/conversationCompactorProcessor.js +291 -0
  78. package/dist/processor-pieces/postToolCall/conversationContinuityProcessor.d.ts +49 -0
  79. package/dist/processor-pieces/postToolCall/conversationContinuityProcessor.js +293 -0
  80. package/dist/processor-pieces/postToolCall/followUpConversationProcessor.d.ts +47 -0
  81. package/dist/processor-pieces/postToolCall/followUpConversationProcessor.js +249 -0
  82. package/dist/processor-pieces/postToolCall/loopDetectionProcessor.d.ts +30 -0
  83. package/dist/processor-pieces/postToolCall/loopDetectionProcessor.js +137 -0
  84. package/dist/processor-pieces/postToolCall/responseValidationProcessor.d.ts +30 -0
  85. package/dist/processor-pieces/postToolCall/responseValidationProcessor.js +228 -0
  86. package/dist/processor-pieces/postToolCall/telemetryProcessor.d.ts +99 -0
  87. package/dist/processor-pieces/postToolCall/telemetryProcessor.js +278 -0
  88. package/dist/processor-pieces/postToolCall/tokenManagementProcessor.d.ts +37 -0
  89. package/dist/processor-pieces/postToolCall/tokenManagementProcessor.js +178 -0
  90. package/dist/processor-pieces/postToolCall/toolExecutionProcessor.d.ts +43 -0
  91. package/dist/processor-pieces/postToolCall/toolExecutionProcessor.js +207 -0
  92. package/dist/processor-pieces/preInference/conversationCompactorProcessor.d.ts +52 -0
  93. package/dist/processor-pieces/preInference/conversationCompactorProcessor.js +264 -0
  94. package/dist/processor-pieces/preInference/conversationContinuityProcessor.d.ts +49 -0
  95. package/dist/processor-pieces/preInference/conversationContinuityProcessor.js +293 -0
  96. package/dist/processor-pieces/preInferenceProcessors/conversationCompaction.d.ts +7 -0
  97. package/dist/processor-pieces/preInferenceProcessors/conversationCompaction.js +31 -0
  98. package/dist/processor-pieces/preToolCall/index.d.ts +9 -0
  99. package/dist/processor-pieces/preToolCall/index.js +18 -0
  100. package/dist/processor-pieces/preToolCall/localToolInterceptorProcessor.d.ts +58 -0
  101. package/dist/processor-pieces/preToolCall/localToolInterceptorProcessor.js +444 -0
  102. package/dist/processor-pieces/preToolCall/toolParameterModifierProcessor.d.ts +44 -0
  103. package/dist/processor-pieces/preToolCall/toolParameterModifierProcessor.js +367 -0
  104. package/dist/processor-pieces/preToolCall/toolValidationProcessor.d.ts +58 -0
  105. package/dist/processor-pieces/preToolCall/toolValidationProcessor.js +391 -0
  106. package/dist/unified/agent/agent.js +2 -2
  107. package/dist/unified/agent/tool.d.ts +99 -0
  108. package/dist/unified/agent/tool.js +440 -0
  109. package/dist/unified/base/initialPromptGenerator.js +5 -5
  110. package/dist/unified/base/responseExecutor.js +6 -6
  111. package/dist/unified/examples/agentExample.d.ts +46 -0
  112. package/dist/unified/examples/agentExample.js +464 -0
  113. package/dist/unified/examples/documentationPatternExample.d.ts +10 -0
  114. package/dist/unified/examples/documentationPatternExample.js +385 -0
  115. package/dist/unified/examples/followUpProcessorsExample.d.ts +45 -0
  116. package/dist/unified/examples/followUpProcessorsExample.js +311 -0
  117. package/dist/unified/examples/orchestratorExample.d.ts +16 -0
  118. package/dist/unified/examples/orchestratorExample.js +415 -0
  119. package/dist/unified/examples/preToolCallProcessorsExample.d.ts +36 -0
  120. package/dist/unified/examples/preToolCallProcessorsExample.js +458 -0
  121. package/dist/unified/examples/workflowExample.d.ts +12 -0
  122. package/dist/unified/examples/workflowExample.js +497 -0
  123. package/dist/unified/orchestrator/orchestrator.d.ts +260 -0
  124. package/dist/unified/orchestrator/orchestrator.js +519 -0
  125. package/package.json +5 -5
  126. package/dist/agent.d.ts +0 -86
  127. package/dist/agent.js +0 -324
  128. package/dist/followupquestionbuilder.d.ts +0 -75
  129. package/dist/followupquestionbuilder.js +0 -197
  130. package/dist/index.d.ts +0 -14
  131. package/dist/index.js +0 -23
  132. package/dist/llmoutputhandler.d.ts +0 -102
  133. package/dist/llmoutputhandler.js +0 -452
  134. package/dist/promptbuilder.d.ts +0 -382
  135. package/dist/promptbuilder.js +0 -805
  136. package/dist/systemprompt.d.ts +0 -20
  137. package/dist/systemprompt.js +0 -48
  138. package/dist/taskInstruction.d.ts +0 -37
  139. package/dist/taskInstruction.js +0 -57
  140. package/dist/usermessage.d.ts +0 -70
  141. package/dist/usermessage.js +0 -123
@@ -0,0 +1,458 @@
1
+ "use strict";
2
+ /**
3
+ * Example demonstrating how to use pre-tool call processors
4
+ * with the Unified Agent Framework
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.CustomToolMonitoringProcessor = void 0;
8
+ exports.basicLocalToolInterceptionExample = basicLocalToolInterceptionExample;
9
+ exports.toolValidationAndModificationExample = toolValidationAndModificationExample;
10
+ exports.advancedLocalToolHandlingExample = advancedLocalToolHandlingExample;
11
+ exports.dynamicProcessorManagementExample = dynamicProcessorManagementExample;
12
+ exports.customMonitoringProcessorExample = customMonitoringProcessorExample;
13
+ const index_1 = require("../index");
14
+ const processors_1 = require("../processors");
15
+ /**
16
+ * Example 1: Basic Local Tool Interception
17
+ */
18
+ async function basicLocalToolInterceptionExample(codebolt, tools) {
19
+ // Define custom local tools
20
+ const customCalculator = {
21
+ name: 'local--calculator',
22
+ description: 'Performs basic mathematical calculations locally',
23
+ execute: async (params) => {
24
+ const { expression } = params;
25
+ try {
26
+ // Simple expression evaluator (for demo purposes)
27
+ const result = eval(expression.replace(/[^0-9+\-*/().\s]/g, ''));
28
+ return `Calculation result: ${expression} = ${result}`;
29
+ }
30
+ catch (error) {
31
+ return `Calculation error: ${error}`;
32
+ }
33
+ },
34
+ validate: (params) => params && typeof params.expression === 'string',
35
+ timeout: 5000
36
+ };
37
+ const dataFormatter = {
38
+ name: 'local--format_data',
39
+ description: 'Formats data in various formats locally',
40
+ execute: async (params) => {
41
+ const { data, format } = params;
42
+ switch (format.toLowerCase()) {
43
+ case 'json':
44
+ return JSON.stringify(data, null, 2);
45
+ case 'csv':
46
+ if (Array.isArray(data)) {
47
+ const headers = Object.keys(data[0] || {});
48
+ const csvData = [
49
+ headers.join(','),
50
+ ...data.map(row => headers.map(h => row[h] || '').join(','))
51
+ ];
52
+ return csvData.join('\n');
53
+ }
54
+ return JSON.stringify(data);
55
+ default:
56
+ return String(data);
57
+ }
58
+ }
59
+ };
60
+ // Create local tool interceptor
61
+ const localToolInterceptor = new processors_1.LocalToolInterceptorProcessor({
62
+ localTools: new Map([
63
+ [customCalculator.name, customCalculator],
64
+ [dataFormatter.name, dataFormatter]
65
+ ]),
66
+ enableCustomToolHandling: true,
67
+ enableLogging: true
68
+ });
69
+ // Create response executor with pre-tool processors
70
+ const responseExecutor = (0, index_1.createUnifiedResponseExecutor)({
71
+ codebolt,
72
+ preToolCallProcessors: [localToolInterceptor]
73
+ });
74
+ // Create unified agent
75
+ const agent = (0, index_1.createUnifiedAgent)({
76
+ codebolt,
77
+ maxIterations: 5,
78
+ enableLogging: true
79
+ });
80
+ agent.setResponseExecutor(responseExecutor);
81
+ // Execute agent with local tool calls
82
+ const result = await agent.execute({
83
+ userMessage: "Calculate 15 * 8 + 32 and format the result as JSON",
84
+ tools: [...tools, {
85
+ type: 'function',
86
+ function: {
87
+ name: 'local--calculator',
88
+ description: 'Performs mathematical calculations',
89
+ parameters: {
90
+ type: 'object',
91
+ properties: {
92
+ expression: { type: 'string', description: 'Mathematical expression to evaluate' }
93
+ },
94
+ required: ['expression']
95
+ }
96
+ }
97
+ }]
98
+ });
99
+ console.log('Local tool interception result:', result.response);
100
+ return result;
101
+ }
102
+ /**
103
+ * Example 2: Tool Validation and Parameter Modification
104
+ */
105
+ async function toolValidationAndModificationExample(codebolt, tools) {
106
+ // Create tool validation processor
107
+ const toolValidator = new processors_1.ToolValidationProcessor({
108
+ enableParameterValidation: true,
109
+ enableSecurityValidation: true,
110
+ enableTypeValidation: true,
111
+ strictMode: false,
112
+ allowedTools: ['file_read', 'file_write', 'http_request', 'local--calculator'],
113
+ blockedTools: ['rm', 'delete', 'format'],
114
+ maxParameterSize: 1024 * 100, // 100KB
115
+ enableLogging: true
116
+ });
117
+ // Create custom parameter transformations
118
+ const customTransformations = [
119
+ {
120
+ name: 'add-project-context',
121
+ condition: (toolName) => toolName.includes('file'),
122
+ transform: (params, context) => {
123
+ const result = { ...params };
124
+ if (result.filePath && !result.filePath.startsWith('/')) {
125
+ result.filePath = `./project/${result.filePath}`;
126
+ }
127
+ result.projectContext = {
128
+ sessionId: (context === null || context === void 0 ? void 0 : context.sessionId) || 'unknown',
129
+ timestamp: new Date().toISOString()
130
+ };
131
+ return result;
132
+ },
133
+ description: 'Add project context to file operations'
134
+ },
135
+ {
136
+ name: 'enhance-http-requests',
137
+ condition: (toolName) => toolName.includes('http'),
138
+ transform: (params) => {
139
+ const result = { ...params };
140
+ if (!result.headers) {
141
+ result.headers = {};
142
+ }
143
+ result.headers['X-Agent-Version'] = '1.0';
144
+ result.headers['X-Request-ID'] = Math.random().toString(36).substr(2, 9);
145
+ if (!result.timeout) {
146
+ result.timeout = 30000;
147
+ }
148
+ return result;
149
+ },
150
+ description: 'Enhance HTTP requests with additional headers and timeout'
151
+ }
152
+ ];
153
+ // Create parameter modifier processor
154
+ const parameterModifier = new processors_1.ToolParameterModifierProcessor({
155
+ enableParameterTransformation: true,
156
+ enableParameterEnrichment: true,
157
+ enableParameterSanitization: true,
158
+ transformations: customTransformations,
159
+ defaultTransformations: true,
160
+ enableLogging: true
161
+ });
162
+ // Create response executor with multiple pre-tool processors
163
+ const responseExecutor = (0, index_1.createUnifiedResponseExecutor)({
164
+ codebolt,
165
+ preToolCallProcessors: [
166
+ toolValidator, // Validate first
167
+ parameterModifier // Then modify parameters
168
+ ],
169
+ enableLogging: true
170
+ });
171
+ const agent = (0, index_1.createUnifiedAgent)({ codebolt });
172
+ agent.setResponseExecutor(responseExecutor);
173
+ // Execute with validation and modification
174
+ const result = await agent.execute({
175
+ userMessage: "Read the config.json file and make an HTTP request to the API endpoint specified in it",
176
+ tools
177
+ });
178
+ return result;
179
+ }
180
+ /**
181
+ * Example 3: Advanced Local Tool Handling with Custom Business Logic
182
+ */
183
+ async function advancedLocalToolHandlingExample(codebolt, tools) {
184
+ // Create business logic tools
185
+ const businessLogicTools = new Map([
186
+ ['custom--validate_user', {
187
+ name: 'custom--validate_user',
188
+ description: 'Validates user data according to business rules',
189
+ execute: async (params) => {
190
+ const { userData } = params;
191
+ const errors = [];
192
+ if (!userData.email || !userData.email.includes('@')) {
193
+ errors.push('Invalid email format');
194
+ }
195
+ if (!userData.age || userData.age < 18) {
196
+ errors.push('User must be at least 18 years old');
197
+ }
198
+ if (!userData.name || userData.name.length < 2) {
199
+ errors.push('Name must be at least 2 characters long');
200
+ }
201
+ return errors.length === 0
202
+ ? 'User validation passed'
203
+ : `User validation failed: ${errors.join(', ')}`;
204
+ }
205
+ }],
206
+ ['custom--process_order', {
207
+ name: 'custom--process_order',
208
+ description: 'Processes order with business logic',
209
+ execute: async (params) => {
210
+ var _a;
211
+ const { order } = params;
212
+ // Simulate order processing
213
+ const total = ((_a = order.items) === null || _a === void 0 ? void 0 : _a.reduce((sum, item) => sum + (item.price * item.quantity), 0)) || 0;
214
+ const tax = total * 0.08; // 8% tax
215
+ const finalTotal = total + tax;
216
+ return `Order processed successfully:
217
+ Subtotal: $${total.toFixed(2)}
218
+ Tax: $${tax.toFixed(2)}
219
+ Total: $${finalTotal.toFixed(2)}
220
+ Order ID: ORD-${Date.now()}`;
221
+ }
222
+ }],
223
+ ['internal--get_system_info', {
224
+ name: 'internal--get_system_info',
225
+ description: 'Gets internal system information',
226
+ execute: async () => {
227
+ return `System Information:
228
+ Node Version: ${process.version}
229
+ Platform: ${process.platform}
230
+ Architecture: ${process.arch}
231
+ Memory Usage: ${JSON.stringify(process.memoryUsage(), null, 2)}
232
+ Uptime: ${process.uptime()} seconds`;
233
+ }
234
+ }]
235
+ ]);
236
+ // Create advanced local tool interceptor
237
+ const advancedInterceptor = new processors_1.LocalToolInterceptorProcessor({
238
+ localTools: businessLogicTools,
239
+ enableCustomToolHandling: true,
240
+ enableToolDelegation: true,
241
+ defaultExecutionTimeout: 10000,
242
+ enableLogging: true
243
+ });
244
+ // Create comprehensive validation
245
+ const comprehensiveValidator = new processors_1.ToolValidationProcessor({
246
+ enableParameterValidation: true,
247
+ enableSecurityValidation: true,
248
+ strictMode: true,
249
+ allowedTools: Array.from(businessLogicTools.keys()).concat(['file_read', 'http_request']),
250
+ enableLogging: true
251
+ });
252
+ // Create response executor
253
+ const responseExecutor = (0, index_1.createUnifiedResponseExecutor)({
254
+ codebolt,
255
+ preToolCallProcessors: [
256
+ comprehensiveValidator,
257
+ advancedInterceptor
258
+ ]
259
+ });
260
+ const agent = (0, index_1.createUnifiedAgent)({
261
+ codebolt,
262
+ maxIterations: 8,
263
+ enableLogging: true
264
+ });
265
+ agent.setResponseExecutor(responseExecutor);
266
+ // Execute complex business logic
267
+ const result = await agent.execute({
268
+ userMessage: "Validate this user data: {email: 'john@example.com', age: 25, name: 'John Doe'} and then process an order with items: [{name: 'Widget', price: 10.99, quantity: 2}, {name: 'Gadget', price: 15.50, quantity: 1}]",
269
+ tools: [...tools, ...Array.from(businessLogicTools.keys()).map(toolName => {
270
+ var _a;
271
+ return ({
272
+ type: 'function',
273
+ function: {
274
+ name: toolName,
275
+ description: ((_a = businessLogicTools.get(toolName)) === null || _a === void 0 ? void 0 : _a.description) || '',
276
+ parameters: {
277
+ type: 'object',
278
+ properties: {},
279
+ required: []
280
+ }
281
+ }
282
+ });
283
+ })]
284
+ });
285
+ return result;
286
+ }
287
+ /**
288
+ * Example 4: Dynamic Processor Management
289
+ */
290
+ async function dynamicProcessorManagementExample(codebolt, tools) {
291
+ // Create response executor without initial processors
292
+ const responseExecutor = (0, index_1.createUnifiedResponseExecutor)({
293
+ codebolt,
294
+ enableLogging: true
295
+ });
296
+ const agent = (0, index_1.createUnifiedAgent)({ codebolt });
297
+ agent.setResponseExecutor(responseExecutor);
298
+ console.log('Starting without pre-tool processors...');
299
+ // Execute without processors
300
+ let result = await agent.step({
301
+ userMessage: "Calculate 10 + 5",
302
+ tools
303
+ });
304
+ // Add local tool interceptor dynamically
305
+ console.log('Adding local tool interceptor...');
306
+ const localInterceptor = new processors_1.LocalToolInterceptorProcessor({
307
+ enableCustomToolHandling: true,
308
+ enableLogging: true
309
+ });
310
+ // Add a simple calculator tool
311
+ localInterceptor.addLocalTool({
312
+ name: 'local--simple_calc',
313
+ execute: (params) => {
314
+ const { a, b, operation } = params;
315
+ switch (operation) {
316
+ case 'add': return `${a} + ${b} = ${a + b}`;
317
+ case 'subtract': return `${a} - ${b} = ${a - b}`;
318
+ case 'multiply': return `${a} * ${b} = ${a * b}`;
319
+ case 'divide': return `${a} / ${b} = ${a / b}`;
320
+ default: return 'Unknown operation';
321
+ }
322
+ }
323
+ });
324
+ responseExecutor.addPreToolCallProcessor(localInterceptor);
325
+ result = await agent.step({
326
+ userMessage: "Use the local calculator to add 15 and 25",
327
+ tools: [...tools, {
328
+ type: 'function',
329
+ function: {
330
+ name: 'local--simple_calc',
331
+ description: 'Simple calculator',
332
+ parameters: {
333
+ type: 'object',
334
+ properties: {
335
+ a: { type: 'number' },
336
+ b: { type: 'number' },
337
+ operation: { type: 'string', enum: ['add', 'subtract', 'multiply', 'divide'] }
338
+ },
339
+ required: ['a', 'b', 'operation']
340
+ }
341
+ }
342
+ }],
343
+ conversationHistory: result.conversationHistory
344
+ });
345
+ // Add validation processor
346
+ console.log('Adding validation processor...');
347
+ const validator = new processors_1.ToolValidationProcessor({
348
+ strictMode: true,
349
+ allowedTools: ['local--simple_calc'],
350
+ enableLogging: true
351
+ });
352
+ responseExecutor.addPreToolCallProcessor(validator);
353
+ // Check active processors
354
+ const activeProcessors = responseExecutor.getPreToolCallProcessors();
355
+ console.log(`Active pre-tool processors: ${activeProcessors.length}`);
356
+ // Remove interceptor
357
+ console.log('Removing local interceptor...');
358
+ responseExecutor.removePreToolCallProcessor(localInterceptor);
359
+ const remainingProcessors = responseExecutor.getPreToolCallProcessors();
360
+ console.log(`Remaining processors: ${remainingProcessors.length}`);
361
+ return result;
362
+ }
363
+ /**
364
+ * Example 5: Custom Processor with Monitoring
365
+ */
366
+ class CustomToolMonitoringProcessor extends processors_1.LocalToolInterceptorProcessor {
367
+ constructor() {
368
+ super(...arguments);
369
+ this.toolExecutionMetrics = new Map();
370
+ }
371
+ async processInput(input) {
372
+ var _a;
373
+ const toolName = (_a = input.context) === null || _a === void 0 ? void 0 : _a.toolName;
374
+ const startTime = Date.now();
375
+ try {
376
+ const results = await super.processInput(input);
377
+ // Update metrics on success
378
+ this.updateMetrics(toolName, Date.now() - startTime, false);
379
+ // Add monitoring event
380
+ results.push(this.createEvent('ToolExecutionMonitored', {
381
+ toolName,
382
+ executionTime: Date.now() - startTime,
383
+ status: 'success',
384
+ metrics: this.getToolMetrics(toolName)
385
+ }));
386
+ return results;
387
+ }
388
+ catch (error) {
389
+ // Update metrics on error
390
+ this.updateMetrics(toolName, Date.now() - startTime, true);
391
+ return [this.createEvent('ToolExecutionMonitoringError', {
392
+ toolName,
393
+ error: String(error),
394
+ metrics: this.getToolMetrics(toolName)
395
+ })];
396
+ }
397
+ }
398
+ updateMetrics(toolName, executionTime, isError) {
399
+ if (!this.toolExecutionMetrics.has(toolName)) {
400
+ this.toolExecutionMetrics.set(toolName, {
401
+ count: 0,
402
+ totalTime: 0,
403
+ errors: 0,
404
+ lastExecution: new Date().toISOString()
405
+ });
406
+ }
407
+ const metrics = this.toolExecutionMetrics.get(toolName);
408
+ metrics.count++;
409
+ metrics.totalTime += executionTime;
410
+ metrics.lastExecution = new Date().toISOString();
411
+ if (isError) {
412
+ metrics.errors++;
413
+ }
414
+ }
415
+ getToolMetrics(toolName) {
416
+ const metrics = this.toolExecutionMetrics.get(toolName);
417
+ if (!metrics)
418
+ return null;
419
+ return {
420
+ ...metrics,
421
+ averageTime: metrics.totalTime / metrics.count,
422
+ errorRate: metrics.errors / metrics.count
423
+ };
424
+ }
425
+ getAllMetrics() {
426
+ const result = {};
427
+ for (const [toolName, metrics] of this.toolExecutionMetrics) {
428
+ result[toolName] = {
429
+ ...metrics,
430
+ averageTime: metrics.totalTime / metrics.count,
431
+ errorRate: metrics.errors / metrics.count
432
+ };
433
+ }
434
+ return result;
435
+ }
436
+ }
437
+ exports.CustomToolMonitoringProcessor = CustomToolMonitoringProcessor;
438
+ async function customMonitoringProcessorExample(codebolt, tools) {
439
+ const monitoringProcessor = new CustomToolMonitoringProcessor({
440
+ enableCustomToolHandling: true,
441
+ enableLogging: true
442
+ });
443
+ const responseExecutor = (0, index_1.createUnifiedResponseExecutor)({
444
+ codebolt,
445
+ preToolCallProcessors: [monitoringProcessor]
446
+ });
447
+ const agent = (0, index_1.createUnifiedAgent)({ codebolt });
448
+ agent.setResponseExecutor(responseExecutor);
449
+ const result = await agent.loop({
450
+ userMessage: "Perform several file operations and calculations to test monitoring",
451
+ tools,
452
+ maxIterations: 10
453
+ });
454
+ // Get monitoring metrics
455
+ const metrics = monitoringProcessor.getAllMetrics();
456
+ console.log('Tool execution metrics:', metrics);
457
+ return { result, metrics };
458
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Comprehensive Workflow Example for Unified Agent Framework
3
+ *
4
+ * This example demonstrates how to create and execute complex workflows
5
+ * that integrate agents, tools, and control flow steps.
6
+ */
7
+ declare function contentCreationWorkflowExample(): Promise<import("../index").WorkflowResult>;
8
+ declare function multiAgentCollaborationExample(): Promise<import("../index").WorkflowResult>;
9
+ declare function iterativeImprovementExample(): Promise<import("../index").WorkflowResult>;
10
+ declare function agentWithWorkflowExample(): Promise<any>;
11
+ export declare function runWorkflowExamples(): Promise<void>;
12
+ export { contentCreationWorkflowExample, multiAgentCollaborationExample, iterativeImprovementExample, agentWithWorkflowExample };