@codebolt/agent 6.1.20 → 6.1.21

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 (41) hide show
  1. package/dist/processor-pieces/messageModifiers/argumentProcessorModifier.js +11 -15
  2. package/dist/processor-pieces/messageModifiers/atFileProcessorModifier.d.ts +0 -1
  3. package/dist/processor-pieces/messageModifiers/atFileProcessorModifier.js +16 -33
  4. package/dist/processor-pieces/messageModifiers/capabilityContextModifier.js +3 -2
  5. package/dist/processor-pieces/messageModifiers/chatHistoryMessageModifier.d.ts +7 -0
  6. package/dist/processor-pieces/messageModifiers/chatHistoryMessageModifier.js +135 -27
  7. package/dist/processor-pieces/messageModifiers/chatRecordingModifier.js +3 -3
  8. package/dist/processor-pieces/messageModifiers/contextAssemblyModifier.js +18 -12
  9. package/dist/processor-pieces/messageModifiers/directoryContextModifier.d.ts +1 -0
  10. package/dist/processor-pieces/messageModifiers/directoryContextModifier.js +15 -15
  11. package/dist/processor-pieces/messageModifiers/environmentContextModifier.d.ts +1 -0
  12. package/dist/processor-pieces/messageModifiers/environmentContextModifier.js +48 -2
  13. package/dist/processor-pieces/messageModifiers/ideContextModifier.js +3 -2
  14. package/dist/processor-pieces/messageModifiers/memoryImportModifier.js +9 -15
  15. package/dist/processor-pieces/messageModifiers/toolInjectionModifier.js +17 -20
  16. package/dist/processor-pieces/postInferenceProcessors/loopDetectionModifier.js +8 -19
  17. package/dist/processor-pieces/postToolCallProcessors/conversationCompactorModifier.d.ts +1 -1
  18. package/dist/processor-pieces/postToolCallProcessors/conversationCompactorModifier.js +15 -15
  19. package/dist/processor-pieces/postToolCallProcessors/shellProcessorModifier.js +3 -3
  20. package/dist/processor-pieces/preInferenceProcessors/chatCompressionModifier.js +2 -2
  21. package/dist/processor-pieces/utils/messageModifierHelper.js +3 -3
  22. package/dist/types/libFunctionTypes.d.ts +5 -0
  23. package/dist/unified/agent/agent.d.ts +10 -0
  24. package/dist/unified/agent/agent.js +166 -15
  25. package/dist/unified/agent/tools.d.ts +14 -0
  26. package/dist/unified/agent/tools.js +82 -51
  27. package/dist/unified/base/agentStep.d.ts +1 -0
  28. package/dist/unified/base/agentStep.js +39 -11
  29. package/dist/unified/base/initialPromptGenerator.d.ts +2 -0
  30. package/dist/unified/base/initialPromptGenerator.js +42 -19
  31. package/dist/unified/base/promptContext.d.ts +3 -0
  32. package/dist/unified/base/promptContext.js +193 -15
  33. package/dist/unified/base/responseExecutor.d.ts +6 -0
  34. package/dist/unified/base/responseExecutor.js +222 -58
  35. package/dist/unified/services/CompressionCoordinator.js +9 -9
  36. package/dist/unified/services/compaction/autoCompact.js +5 -5
  37. package/dist/unified/services/compaction/contextCollapse.js +2 -2
  38. package/dist/unified/services/compaction/reactiveCompact.js +5 -5
  39. package/dist/unified/types/libTypes.d.ts +6 -0
  40. package/dist/unified/utils/agentToolLoader.js +29 -24
  41. package/package.json +5 -1
@@ -18,14 +18,22 @@ const mergeFlagLists = (existing, mentioned) => {
18
18
  };
19
19
  const formatFlagContext = (flags, mentionedFlags) => {
20
20
  const normalizedMentionedFlags = normalizeFlagList(mentionedFlags);
21
- if (!flags && normalizedMentionedFlags.length === 0)
21
+ const userFlags = (flags === null || flags === void 0 ? void 0 : flags.user) || [];
22
+ const projectFlags = (flags === null || flags === void 0 ? void 0 : flags.project) || [];
23
+ const threadFlags = mergeFlagLists(flags === null || flags === void 0 ? void 0 : flags.thread, normalizedMentionedFlags);
24
+ const effectiveFlags = mergeFlagLists(flags === null || flags === void 0 ? void 0 : flags.effective, normalizedMentionedFlags);
25
+ if (userFlags.length === 0 &&
26
+ projectFlags.length === 0 &&
27
+ threadFlags.length === 0 &&
28
+ effectiveFlags.length === 0) {
22
29
  return null;
30
+ }
23
31
  return [
24
32
  '<flags>',
25
- `user: ${formatFlagList(flags === null || flags === void 0 ? void 0 : flags.user)}`,
26
- `project: ${formatFlagList(flags === null || flags === void 0 ? void 0 : flags.project)}`,
27
- `thread: ${formatFlagList(mergeFlagLists(flags === null || flags === void 0 ? void 0 : flags.thread, normalizedMentionedFlags))}`,
28
- `effective: ${formatFlagList(mergeFlagLists(flags === null || flags === void 0 ? void 0 : flags.effective, normalizedMentionedFlags))}`,
33
+ `user: ${formatFlagList(userFlags)}`,
34
+ `project: ${formatFlagList(projectFlags)}`,
35
+ `thread: ${formatFlagList(threadFlags)}`,
36
+ `effective: ${formatFlagList(effectiveFlags)}`,
29
37
  '</flags>',
30
38
  ].join('\n');
31
39
  };
@@ -97,6 +105,9 @@ class InitialPromptGenerator {
97
105
  if (options.baseSystemPrompt !== undefined) {
98
106
  this.baseSystemPrompt = options.baseSystemPrompt;
99
107
  }
108
+ if (options.initialPrompt !== undefined) {
109
+ this.initialPrompt = options.initialPrompt;
110
+ }
100
111
  }
101
112
  /**
102
113
  * Process and modify input messages using the message modifier pattern
@@ -106,19 +117,32 @@ class InitialPromptGenerator {
106
117
  if (this.enableLogging) {
107
118
  // console.log('[InitialPromptGenerator] Processing message:', input);
108
119
  }
109
- let createdMessage = {
110
- message: {
111
- messages: [],
112
- tools: []
113
- },
114
- metadata: {
115
- timestamp: new Date().toISOString(),
116
- messageId: input.messageId,
117
- threadId: input.threadId
120
+ const isResumedPrompt = this.initialPrompt !== undefined;
121
+ let createdMessage = isResumedPrompt
122
+ ? {
123
+ ...this.initialPrompt,
124
+ metadata: {
125
+ ...this.initialPrompt.metadata,
126
+ timestamp: new Date().toISOString(),
127
+ messageId: input.messageId,
128
+ threadId: input.threadId,
129
+ resumedPrompt: true,
130
+ },
118
131
  }
119
- };
132
+ : {
133
+ message: {
134
+ formatVersion: 'codebolt.llm.v2',
135
+ input: [],
136
+ tools: []
137
+ },
138
+ metadata: {
139
+ timestamp: new Date().toISOString(),
140
+ messageId: input.messageId,
141
+ threadId: input.threadId
142
+ }
143
+ };
120
144
  createdMessage = (0, promptContext_1.syncProcessedMessageWithRuntimeContext)(createdMessage);
121
- if (this.baseSystemPrompt !== undefined) {
145
+ if (!isResumedPrompt && this.baseSystemPrompt !== undefined) {
122
146
  createdMessage = (0, promptContext_1.setSystemPrompt)(createdMessage, this.baseSystemPrompt);
123
147
  }
124
148
  createdMessage = (0, promptContext_1.appendTranscriptMessage)(createdMessage, {
@@ -141,7 +165,7 @@ class InitialPromptGenerator {
141
165
  console.error(`[InitialPromptGenerator] Error in message modifier:`, error);
142
166
  }
143
167
  }
144
- let { todos } = await codeboltjs_1.default.todo.getAllIncompleteTodos();
168
+ const { todos } = await codeboltjs_1.default.todo.getAllIncompleteTodos();
145
169
  if (todos && todos.length == 0) {
146
170
  createdMessage = (0, promptContext_1.appendUserContextMessage)(createdMessage, {
147
171
  role: 'user',
@@ -150,7 +174,7 @@ class InitialPromptGenerator {
150
174
  }
151
175
  if (this.enableLogging) {
152
176
  // console.log('[InitialPromptGenerator] Processing completed:', {
153
- // messageCount: createdMessage.message.messages.length,
177
+ // messageCount: createdMessage.message.input.length,
154
178
  // metadata: createdMessage.metadata
155
179
  // });
156
180
  }
@@ -185,7 +209,6 @@ class InitialPromptGenerator {
185
209
  updateProcessors(processors) {
186
210
  this.processors = processors;
187
211
  }
188
- ;
189
212
  getProcessors() {
190
213
  return this.processors;
191
214
  }
@@ -1,5 +1,6 @@
1
1
  import type { ProcessedMessage } from '@codebolt/types/agent';
2
2
  import type { LLMInferenceParams, MessageObject } from '@codebolt/types/sdk';
3
+ export declare function isGeneratedUserContextMessage(message: MessageObject): boolean;
3
4
  export declare function syncProcessedMessageWithRuntimeContext(prompt: ProcessedMessage): ProcessedMessage;
4
5
  export declare function reconcileRuntimePromptContext(prompt: ProcessedMessage): ProcessedMessage;
5
6
  export declare function setSystemPrompt(prompt: ProcessedMessage, systemPrompt: string): ProcessedMessage;
@@ -10,4 +11,6 @@ export declare function appendTranscriptMessages(prompt: ProcessedMessage, messa
10
11
  export declare function prependTranscriptMessages(prompt: ProcessedMessage, messages: MessageObject[]): ProcessedMessage;
11
12
  export declare function replaceTranscriptMessages(prompt: ProcessedMessage, messages: MessageObject[]): ProcessedMessage;
12
13
  export declare function getTranscriptMessages(prompt: ProcessedMessage): MessageObject[];
14
+ export declare function getCurrentUserMessage(prompt: ProcessedMessage): MessageObject | undefined;
15
+ export declare function updateCurrentUserMessage(prompt: ProcessedMessage, update: (message: MessageObject) => MessageObject): ProcessedMessage;
13
16
  export declare function buildInferenceParams(prompt: ProcessedMessage): LLMInferenceParams;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isGeneratedUserContextMessage = isGeneratedUserContextMessage;
3
4
  exports.syncProcessedMessageWithRuntimeContext = syncProcessedMessageWithRuntimeContext;
4
5
  exports.reconcileRuntimePromptContext = reconcileRuntimePromptContext;
5
6
  exports.setSystemPrompt = setSystemPrompt;
@@ -10,6 +11,8 @@ exports.appendTranscriptMessages = appendTranscriptMessages;
10
11
  exports.prependTranscriptMessages = prependTranscriptMessages;
11
12
  exports.replaceTranscriptMessages = replaceTranscriptMessages;
12
13
  exports.getTranscriptMessages = getTranscriptMessages;
14
+ exports.getCurrentUserMessage = getCurrentUserMessage;
15
+ exports.updateCurrentUserMessage = updateCurrentUserMessage;
13
16
  exports.buildInferenceParams = buildInferenceParams;
14
17
  const RUNTIME_CONTEXT_METADATA_KEY = '__codeboltRuntimePromptContext';
15
18
  function cloneContent(content) {
@@ -31,6 +34,90 @@ function cloneMessage(message) {
31
34
  function cloneMessages(messages) {
32
35
  return messages.map((message) => cloneMessage(message));
33
36
  }
37
+ function textFromContent(content) {
38
+ if (typeof content === 'string') {
39
+ return content;
40
+ }
41
+ try {
42
+ return JSON.stringify(content);
43
+ }
44
+ catch {
45
+ return String(content);
46
+ }
47
+ }
48
+ function normalizeTextPart(content) {
49
+ return {
50
+ type: 'text',
51
+ text: textFromContent(content),
52
+ };
53
+ }
54
+ function appendContent(existingContent, additionalContent) {
55
+ if (typeof existingContent === 'string' && typeof additionalContent === 'string') {
56
+ return `${existingContent}\n\n${additionalContent}`;
57
+ }
58
+ const existingParts = Array.isArray(existingContent)
59
+ ? [...existingContent]
60
+ : [normalizeTextPart(existingContent)];
61
+ const additionalParts = Array.isArray(additionalContent)
62
+ ? [...additionalContent]
63
+ : [normalizeTextPart(additionalContent)];
64
+ return [...existingParts, ...additionalParts];
65
+ }
66
+ function messagesHaveSameContent(firstMessage, secondMessage) {
67
+ return firstMessage.role === secondMessage.role &&
68
+ textFromContent(firstMessage.content) === textFromContent(secondMessage.content);
69
+ }
70
+ function getTextContent(message) {
71
+ if (typeof message.content === 'string') {
72
+ return message.content.trim();
73
+ }
74
+ if (!Array.isArray(message.content)) {
75
+ return '';
76
+ }
77
+ return message.content
78
+ .map((contentPart) => {
79
+ if (contentPart &&
80
+ typeof contentPart === 'object' &&
81
+ !Array.isArray(contentPart) &&
82
+ contentPart.type === 'text' &&
83
+ typeof contentPart.text === 'string') {
84
+ return contentPart.text;
85
+ }
86
+ return '';
87
+ })
88
+ .join('\n')
89
+ .trim();
90
+ }
91
+ function isGeneratedUserContextMessage(message) {
92
+ if (message.role !== 'user') {
93
+ return false;
94
+ }
95
+ const content = getTextContent(message);
96
+ if (!content) {
97
+ return false;
98
+ }
99
+ return content.startsWith('<flags>') ||
100
+ content.startsWith('<system-reminder>') ||
101
+ content.startsWith('This is the CodeBolt AI Agent. Setting up context for our chat.') ||
102
+ content.startsWith("I'm currently working in the effective project directory:") ||
103
+ content.startsWith('The user selected the following capabilities for this turn:') ||
104
+ content.startsWith('## Assembled Context') ||
105
+ content.startsWith('## Rule-Based Context');
106
+ }
107
+ function resolveCurrentUserMessageIndex(runtimeContext) {
108
+ var _a, _b;
109
+ const currentIndex = runtimeContext.currentUserMessageIndex;
110
+ if (currentIndex !== undefined &&
111
+ ((_a = runtimeContext.transcriptMessages[currentIndex]) === null || _a === void 0 ? void 0 : _a.role) === 'user') {
112
+ return currentIndex;
113
+ }
114
+ for (let i = runtimeContext.transcriptMessages.length - 1; i >= 0; i--) {
115
+ if (((_b = runtimeContext.transcriptMessages[i]) === null || _b === void 0 ? void 0 : _b.role) === 'user') {
116
+ return i;
117
+ }
118
+ }
119
+ return -1;
120
+ }
34
121
  function buildSystemMessages(runtimeContext) {
35
122
  const stringSections = [];
36
123
  const nonStringSystemMessages = [];
@@ -55,17 +142,22 @@ function buildSystemMessages(runtimeContext) {
55
142
  return flattenedSystemMessages;
56
143
  }
57
144
  function flattenRuntimeMessages(runtimeContext) {
145
+ const transcriptMessages = cloneMessages(runtimeContext.transcriptMessages);
146
+ const currentUserMessageIndex = resolveCurrentUserMessageIndex(runtimeContext);
147
+ if (runtimeContext.currentUserContextMessage && currentUserMessageIndex !== -1) {
148
+ transcriptMessages.splice(currentUserMessageIndex, 0, cloneMessage(runtimeContext.currentUserContextMessage));
149
+ }
58
150
  return [
59
151
  ...buildSystemMessages(runtimeContext),
60
152
  ...cloneMessages(runtimeContext.userContextMessages),
61
- ...cloneMessages(runtimeContext.transcriptMessages),
153
+ ...transcriptMessages,
62
154
  ];
63
155
  }
64
156
  function inferRuntimeContext(prompt) {
65
157
  var _a;
66
- const messages = (_a = prompt.message.messages) !== null && _a !== void 0 ? _a : [];
158
+ const messages = (_a = prompt.message.input) !== null && _a !== void 0 ? _a : [];
67
159
  const systemMessages = messages.filter((message) => message.role === 'system');
68
- const transcriptMessages = messages.filter((message) => message.role !== 'system');
160
+ const transcriptMessages = messages.filter((message) => message.role !== 'system' && !isGeneratedUserContextMessage(message));
69
161
  let systemPrompt;
70
162
  const systemContextMessages = [];
71
163
  if (systemMessages.length > 0) {
@@ -83,6 +175,8 @@ function inferRuntimeContext(prompt) {
83
175
  systemContextMessages,
84
176
  userContextMessages: [],
85
177
  transcriptMessages: cloneMessages(transcriptMessages),
178
+ currentUserContextMessage: undefined,
179
+ currentUserMessageIndex: undefined,
86
180
  };
87
181
  }
88
182
  function getRuntimePromptContext(prompt) {
@@ -97,6 +191,12 @@ function getRuntimePromptContext(prompt) {
97
191
  systemContextMessages: cloneMessages(runtimeContext.systemContextMessages),
98
192
  userContextMessages: cloneMessages(runtimeContext.userContextMessages),
99
193
  transcriptMessages: cloneMessages(runtimeContext.transcriptMessages),
194
+ currentUserContextMessage: runtimeContext.currentUserContextMessage
195
+ ? cloneMessage(runtimeContext.currentUserContextMessage)
196
+ : undefined,
197
+ currentUserMessageIndex: typeof runtimeContext.currentUserMessageIndex === 'number'
198
+ ? runtimeContext.currentUserMessageIndex
199
+ : undefined,
100
200
  };
101
201
  }
102
202
  function ensureRuntimePromptContext(prompt) {
@@ -108,7 +208,8 @@ function withRuntimePromptContext(prompt, runtimeContext) {
108
208
  ...prompt,
109
209
  message: {
110
210
  ...prompt.message,
111
- messages: flattenRuntimeMessages(runtimeContext),
211
+ formatVersion: 'codebolt.llm.v2',
212
+ input: flattenRuntimeMessages(runtimeContext),
112
213
  },
113
214
  metadata: {
114
215
  ...prompt.metadata,
@@ -117,6 +218,10 @@ function withRuntimePromptContext(prompt, runtimeContext) {
117
218
  systemContextMessages: cloneMessages(runtimeContext.systemContextMessages),
118
219
  userContextMessages: cloneMessages(runtimeContext.userContextMessages),
119
220
  transcriptMessages: cloneMessages(runtimeContext.transcriptMessages),
221
+ currentUserContextMessage: runtimeContext.currentUserContextMessage
222
+ ? cloneMessage(runtimeContext.currentUserContextMessage)
223
+ : undefined,
224
+ currentUserMessageIndex: runtimeContext.currentUserMessageIndex,
120
225
  },
121
226
  },
122
227
  };
@@ -130,14 +235,26 @@ function reconcileRuntimePromptContext(prompt) {
130
235
  if (!runtimeContext) {
131
236
  return syncProcessedMessageWithRuntimeContext(prompt);
132
237
  }
133
- const flattenedMessages = (_a = prompt.message.messages) !== null && _a !== void 0 ? _a : [];
134
- const transcriptStartIndex = (runtimeContext.systemPrompt ? 1 : 0) +
135
- runtimeContext.systemContextMessages.length +
238
+ const flattenedMessages = (_a = prompt.message.input) !== null && _a !== void 0 ? _a : [];
239
+ const transcriptStartIndex = buildSystemMessages(runtimeContext).length +
136
240
  runtimeContext.userContextMessages.length;
137
241
  const normalizedTranscriptStartIndex = Math.min(transcriptStartIndex, flattenedMessages.length);
242
+ const candidateTranscriptMessages = cloneMessages(flattenedMessages.slice(normalizedTranscriptStartIndex));
243
+ const possibleCurrentUserContextMessageIndex = runtimeContext.currentUserMessageIndex;
244
+ const possibleCurrentUserContextMessage = possibleCurrentUserContextMessageIndex === undefined
245
+ ? undefined
246
+ : candidateTranscriptMessages[possibleCurrentUserContextMessageIndex];
247
+ if (runtimeContext.currentUserContextMessage &&
248
+ possibleCurrentUserContextMessageIndex !== undefined &&
249
+ possibleCurrentUserContextMessage &&
250
+ messagesHaveSameContent(possibleCurrentUserContextMessage, runtimeContext.currentUserContextMessage)) {
251
+ candidateTranscriptMessages.splice(possibleCurrentUserContextMessageIndex, 1);
252
+ }
138
253
  return withRuntimePromptContext(prompt, {
139
254
  ...runtimeContext,
140
- transcriptMessages: cloneMessages(flattenedMessages.slice(normalizedTranscriptStartIndex)),
255
+ transcriptMessages: candidateTranscriptMessages,
256
+ currentUserContextMessage: runtimeContext.currentUserContextMessage,
257
+ currentUserMessageIndex: runtimeContext.currentUserMessageIndex,
141
258
  });
142
259
  }
143
260
  function setSystemPrompt(prompt, systemPrompt) {
@@ -159,19 +276,44 @@ function appendSystemContextMessage(prompt, message) {
159
276
  }
160
277
  function appendUserContextMessage(prompt, message) {
161
278
  const runtimeContext = ensureRuntimePromptContext(prompt);
279
+ const currentUserMessageIndex = resolveCurrentUserMessageIndex(runtimeContext);
280
+ if (currentUserMessageIndex === -1) {
281
+ return withRuntimePromptContext(prompt, {
282
+ ...runtimeContext,
283
+ userContextMessages: [
284
+ ...runtimeContext.userContextMessages,
285
+ cloneMessage(message),
286
+ ],
287
+ });
288
+ }
289
+ if (runtimeContext.currentUserContextMessage) {
290
+ return withRuntimePromptContext(prompt, {
291
+ ...runtimeContext,
292
+ currentUserContextMessage: {
293
+ ...runtimeContext.currentUserContextMessage,
294
+ content: appendContent(runtimeContext.currentUserContextMessage.content, message.content),
295
+ },
296
+ currentUserMessageIndex,
297
+ });
298
+ }
162
299
  return withRuntimePromptContext(prompt, {
163
300
  ...runtimeContext,
164
- userContextMessages: [
165
- ...runtimeContext.userContextMessages,
166
- cloneMessage(message),
167
- ],
301
+ currentUserContextMessage: cloneMessage(message),
302
+ currentUserMessageIndex,
168
303
  });
169
304
  }
170
305
  function appendTranscriptMessage(prompt, message) {
171
306
  const runtimeContext = ensureRuntimePromptContext(prompt);
307
+ const transcriptMessages = [...runtimeContext.transcriptMessages, cloneMessage(message)];
172
308
  return withRuntimePromptContext(prompt, {
173
309
  ...runtimeContext,
174
- transcriptMessages: [...runtimeContext.transcriptMessages, cloneMessage(message)],
310
+ transcriptMessages,
311
+ currentUserMessageIndex: message.role === 'user'
312
+ ? transcriptMessages.length - 1
313
+ : runtimeContext.currentUserMessageIndex,
314
+ currentUserContextMessage: message.role === 'user'
315
+ ? undefined
316
+ : runtimeContext.currentUserContextMessage,
175
317
  });
176
318
  }
177
319
  function appendTranscriptMessages(prompt, messages) {
@@ -186,12 +328,17 @@ function appendTranscriptMessages(prompt, messages) {
186
328
  }
187
329
  function prependTranscriptMessages(prompt, messages) {
188
330
  const runtimeContext = ensureRuntimePromptContext(prompt);
331
+ const prependedMessages = cloneMessages(messages);
189
332
  return withRuntimePromptContext(prompt, {
190
333
  ...runtimeContext,
191
334
  transcriptMessages: [
192
- ...cloneMessages(messages),
335
+ ...prependedMessages,
193
336
  ...runtimeContext.transcriptMessages,
194
337
  ],
338
+ currentUserContextMessage: runtimeContext.currentUserContextMessage,
339
+ currentUserMessageIndex: runtimeContext.currentUserMessageIndex === undefined
340
+ ? undefined
341
+ : runtimeContext.currentUserMessageIndex + prependedMessages.length,
195
342
  });
196
343
  }
197
344
  function replaceTranscriptMessages(prompt, messages) {
@@ -199,15 +346,46 @@ function replaceTranscriptMessages(prompt, messages) {
199
346
  return withRuntimePromptContext(prompt, {
200
347
  ...runtimeContext,
201
348
  transcriptMessages: cloneMessages(messages),
349
+ currentUserContextMessage: undefined,
350
+ currentUserMessageIndex: undefined,
202
351
  });
203
352
  }
204
353
  function getTranscriptMessages(prompt) {
205
354
  return cloneMessages(ensureRuntimePromptContext(prompt).transcriptMessages);
206
355
  }
356
+ function getCurrentUserMessage(prompt) {
357
+ const runtimeContext = ensureRuntimePromptContext(prompt);
358
+ const currentUserMessageIndex = resolveCurrentUserMessageIndex(runtimeContext);
359
+ if (currentUserMessageIndex === -1) {
360
+ return undefined;
361
+ }
362
+ const message = runtimeContext.transcriptMessages[currentUserMessageIndex];
363
+ return message ? cloneMessage(message) : undefined;
364
+ }
365
+ function updateCurrentUserMessage(prompt, update) {
366
+ const runtimeContext = ensureRuntimePromptContext(prompt);
367
+ const currentUserMessageIndex = resolveCurrentUserMessageIndex(runtimeContext);
368
+ if (currentUserMessageIndex === -1) {
369
+ return prompt;
370
+ }
371
+ const currentUserMessage = runtimeContext.transcriptMessages[currentUserMessageIndex];
372
+ if (!currentUserMessage) {
373
+ return prompt;
374
+ }
375
+ const transcriptMessages = cloneMessages(runtimeContext.transcriptMessages);
376
+ transcriptMessages[currentUserMessageIndex] = update(cloneMessage(currentUserMessage));
377
+ return withRuntimePromptContext(prompt, {
378
+ ...runtimeContext,
379
+ transcriptMessages,
380
+ currentUserContextMessage: runtimeContext.currentUserContextMessage,
381
+ currentUserMessageIndex,
382
+ });
383
+ }
207
384
  function buildInferenceParams(prompt) {
208
385
  const runtimeContext = ensureRuntimePromptContext(prompt);
209
386
  return {
210
387
  ...prompt.message,
211
- messages: flattenRuntimeMessages(runtimeContext),
388
+ formatVersion: 'codebolt.llm.v2',
389
+ input: flattenRuntimeMessages(runtimeContext),
212
390
  };
213
391
  }
@@ -19,8 +19,14 @@ export declare class ResponseExecutor implements AgentResponseExecutor {
19
19
  private getToolCalls;
20
20
  private hasExecutableToolCalls;
21
21
  private runRequiredCompaction;
22
+ private buildToolResultMessages;
23
+ private refreshNextMessageFromCompactedContext;
24
+ private extractCompactedContextMessages;
25
+ private isMessageObject;
26
+ private getMessagesAddedAfterInference;
22
27
  private executeTools;
23
28
  private sendFinalMessageToChat;
29
+ private getPendingAsyncTasks;
24
30
  private extractCompletionMessage;
25
31
  private formatCompletionValue;
26
32
  private executeSingleToolCall;